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 67 export default {
68 68 name: 'CollapseTransition',
69 69 functional: true,
70   - render(h, { children }) {
  70 + props: {
  71 + appear: Boolean
  72 + },
  73 + render(h, { children, props }) {
71 74 const data = {
72   - on: Transition
  75 + on: Transition,
  76 + props: {
  77 + appear: props.appear
  78 + }
73 79 };
74 80  
75 81 return h('transition', data, children);
... ...
src/components/tree/node.vue
1 1 <template>
2   - <collapse-transition>
  2 + <collapse-transition :appear="appear">
3 3 <ul :class="classes">
4 4 <li>
5 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 8 </span>
9 9 <Checkbox
10 10 v-if="showCheckbox"
... ... @@ -17,6 +17,7 @@
17 17 <span v-else :class="titleClasses" @click="handleSelect">{{ data.title }}</span>
18 18 <Tree-node
19 19 v-if="data.expand"
  20 + :appear="appearByClickArrow"
20 21 v-for="(item, i) in children"
21 22 :key="i"
22 23 :data="item"
... ... @@ -61,11 +62,16 @@
61 62 showCheckbox: {
62 63 type: Boolean,
63 64 default: false
  65 + },
  66 + appear: {
  67 + type: Boolean,
  68 + default: false
64 69 }
65 70 },
66 71 data () {
67 72 return {
68   - prefixCls: prefixCls
  73 + prefixCls: prefixCls,
  74 + appearByClickArrow: false
69 75 };
70 76 },
71 77 computed: {
... ... @@ -127,6 +133,41 @@
127 133 },
128 134 children () {
129 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 173 methods: {
... ... @@ -134,6 +175,9 @@
134 175 const item = this.data;
135 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 181 // async loading
138 182 if (item[this.childrenKey].length === 0) {
139 183 const tree = findComponentUpward(this, 'Tree');
... ...
src/index.js
... ... @@ -183,6 +183,11 @@ const install = function(Vue, opts = {}) {
183 183 arrow: opts.menu ? opts.menu.arrow ? opts.menu.arrow : '' : '',
184 184 customArrow: opts.menu ? opts.menu.customArrow ? opts.menu.customArrow : '' : '',
185 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  
... ...