Commit 37f4b7a8795d2b4cda4cce746b62cc8dd40b4cb0

Authored by 梁灏
1 parent d082f8cc

Tree add global setting, update transition component, #5592 , close #5596

src/components/base/collapse-transition.js
@@ -67,9 +67,15 @@ const Transition = { @@ -67,9 +67,15 @@ const Transition = {
67 export default { 67 export default {
68 name: 'CollapseTransition', 68 name: 'CollapseTransition',
69 functional: true, 69 functional: true,
70 - render(h, { children }) { 70 + props: {
  71 + appear: Boolean
  72 + },
  73 + render(h, { children, props }) {
71 const data = { 74 const data = {
72 - on: Transition 75 + on: Transition,
  76 + props: {
  77 + appear: props.appear
  78 + }
73 }; 79 };
74 80
75 return h('transition', data, children); 81 return h('transition', data, children);
src/components/tree/node.vue
1 <template> 1 <template>
2 - <collapse-transition> 2 + <collapse-transition :appear="appear">
3 <ul :class="classes"> 3 <ul :class="classes">
4 <li> 4 <li>
5 <span :class="arrowClasses" @click="handleExpand"> 5 <span :class="arrowClasses" @click="handleExpand">
6 - <Icon v-if="showArrow" type="ios-arrow-forward"></Icon>  
7 - <Icon v-if="showLoading" type="ios-loading" class="ivu-load-loop"></Icon> 6 + <Icon v-if="showArrow" :type="arrowType" :custom="customArrowType" :size="arrowSize" />
  7 + <Icon v-if="showLoading" type="ios-loading" class="ivu-load-loop" />
8 </span> 8 </span>
9 <Checkbox 9 <Checkbox
10 v-if="showCheckbox" 10 v-if="showCheckbox"
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
17 <span v-else :class="titleClasses" @click="handleSelect">{{ data.title }}</span> 17 <span v-else :class="titleClasses" @click="handleSelect">{{ data.title }}</span>
18 <Tree-node 18 <Tree-node
19 v-if="data.expand" 19 v-if="data.expand"
  20 + :appear="appearByClickArrow"
20 v-for="(item, i) in children" 21 v-for="(item, i) in children"
21 :key="i" 22 :key="i"
22 :data="item" 23 :data="item"
@@ -61,11 +62,16 @@ @@ -61,11 +62,16 @@
61 showCheckbox: { 62 showCheckbox: {
62 type: Boolean, 63 type: Boolean,
63 default: false 64 default: false
  65 + },
  66 + appear: {
  67 + type: Boolean,
  68 + default: false
64 } 69 }
65 }, 70 },
66 data () { 71 data () {
67 return { 72 return {
68 - prefixCls: prefixCls 73 + prefixCls: prefixCls,
  74 + appearByClickArrow: false
69 }; 75 };
70 }, 76 },
71 computed: { 77 computed: {
@@ -127,6 +133,41 @@ @@ -127,6 +133,41 @@
127 }, 133 },
128 children () { 134 children () {
129 return this.data[this.childrenKey]; 135 return this.data[this.childrenKey];
  136 + },
  137 + // 3.4.0, global setting customArrow 有值时,arrow 赋值空
  138 + arrowType () {
  139 + let type = 'ios-arrow-forward';
  140 +
  141 + if (this.$IVIEW) {
  142 + if (this.$IVIEW.tree.customArrow) {
  143 + type = '';
  144 + } else if (this.$IVIEW.tree.arrow) {
  145 + type = this.$IVIEW.tree.arrow;
  146 + }
  147 + }
  148 + return type;
  149 + },
  150 + // 3.4.0, global setting
  151 + customArrowType () {
  152 + let type = '';
  153 +
  154 + if (this.$IVIEW) {
  155 + if (this.$IVIEW.tree.customArrow) {
  156 + type = this.$IVIEW.tree.customArrow;
  157 + }
  158 + }
  159 + return type;
  160 + },
  161 + // 3.4.0, global setting
  162 + arrowSize () {
  163 + let size = '';
  164 +
  165 + if (this.$IVIEW) {
  166 + if (this.$IVIEW.tree.arrowSize) {
  167 + size = this.$IVIEW.tree.arrowSize;
  168 + }
  169 + }
  170 + return size;
130 } 171 }
131 }, 172 },
132 methods: { 173 methods: {
@@ -134,6 +175,9 @@ @@ -134,6 +175,9 @@
134 const item = this.data; 175 const item = this.data;
135 if (item.disabled) return; 176 if (item.disabled) return;
136 177
  178 + // Vue.js 2.6.9 对 transition 的 appear 进行了调整,导致 iView 初始化时无动画,加此方法来判断通过点击箭头展开时,加 appear,否则初始渲染时 appear 为 false
  179 + this.appearByClickArrow = true;
  180 +
137 // async loading 181 // async loading
138 if (item[this.childrenKey].length === 0) { 182 if (item[this.childrenKey].length === 0) {
139 const tree = findComponentUpward(this, 'Tree'); 183 const tree = findComponentUpward(this, 'Tree');
@@ -183,6 +183,11 @@ const install = function(Vue, opts = {}) { @@ -183,6 +183,11 @@ const install = function(Vue, opts = {}) {
183 arrow: opts.menu ? opts.menu.arrow ? opts.menu.arrow : '' : '', 183 arrow: opts.menu ? opts.menu.arrow ? opts.menu.arrow : '' : '',
184 customArrow: opts.menu ? opts.menu.customArrow ? opts.menu.customArrow : '' : '', 184 customArrow: opts.menu ? opts.menu.customArrow ? opts.menu.customArrow : '' : '',
185 arrowSize: opts.menu ? opts.menu.arrowSize ? opts.menu.arrowSize : '' : '' 185 arrowSize: opts.menu ? opts.menu.arrowSize ? opts.menu.arrowSize : '' : ''
  186 + },
  187 + tree: {
  188 + arrow: opts.tree ? opts.tree.arrow ? opts.tree.arrow : '' : '',
  189 + customArrow: opts.tree ? opts.tree.customArrow ? opts.tree.customArrow : '' : '',
  190 + arrowSize: opts.tree ? opts.tree.arrowSize ? opts.tree.arrowSize : '' : ''
186 } 191 }
187 }; 192 };
188 193