feat: update rc-cascader to 0.17.1
parent
f2fba47e4d
commit
9e9339c3b3
|
@ -1,4 +1,4 @@
|
||||||
// based on rc-calendar 9.8.2
|
// based on rc-calendar 9.10.8
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import ref from 'vue-ref';
|
import ref from 'vue-ref';
|
||||||
import Calendar from './src/';
|
import Calendar from './src/';
|
||||||
|
|
|
@ -5,7 +5,7 @@ import Menus from './Menus';
|
||||||
import KeyCode from '../_util/KeyCode';
|
import KeyCode from '../_util/KeyCode';
|
||||||
import arrayTreeFilter from 'array-tree-filter';
|
import arrayTreeFilter from 'array-tree-filter';
|
||||||
import shallowEqualArrays from 'shallow-equal/arrays';
|
import shallowEqualArrays from 'shallow-equal/arrays';
|
||||||
import { hasProp, getEvents } from '../_util/props-util';
|
import { hasProp, getEvents, getSlot } from '../_util/props-util';
|
||||||
import BaseMixin from '../_util/BaseMixin';
|
import BaseMixin from '../_util/BaseMixin';
|
||||||
import { cloneElement } from '../_util/vnode';
|
import { cloneElement } from '../_util/vnode';
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ export default {
|
||||||
props: {
|
props: {
|
||||||
value: PropTypes.array,
|
value: PropTypes.array,
|
||||||
defaultValue: PropTypes.array,
|
defaultValue: PropTypes.array,
|
||||||
options: PropTypes.array.def([]).isRequired,
|
options: PropTypes.array,
|
||||||
// onChange: PropTypes.func,
|
// onChange: PropTypes.func,
|
||||||
// onPopupVisibleChange: PropTypes.func,
|
// onPopupVisibleChange: PropTypes.func,
|
||||||
popupVisible: PropTypes.bool,
|
popupVisible: PropTypes.bool,
|
||||||
|
@ -96,12 +96,11 @@ export default {
|
||||||
if (!shallowEqualArrays(val, oldValue)) {
|
if (!shallowEqualArrays(val, oldValue)) {
|
||||||
const newValues = {
|
const newValues = {
|
||||||
sValue: val || [],
|
sValue: val || [],
|
||||||
sActiveValue: val || [],
|
|
||||||
};
|
};
|
||||||
// allow activeValue diff from value
|
// allow activeValue diff from value
|
||||||
// https://github.com/ant-design/ant-design/issues/2767
|
// https://github.com/ant-design/ant-design/issues/2767
|
||||||
if (hasProp(this, 'loadData')) {
|
if (!hasProp(this, 'loadData')) {
|
||||||
delete newValues.sActiveValue;
|
newValues.sActiveValue = val || [];
|
||||||
}
|
}
|
||||||
this.setState(newValues);
|
this.setState(newValues);
|
||||||
}
|
}
|
||||||
|
@ -124,7 +123,7 @@ export default {
|
||||||
return this.fieldNames;
|
return this.fieldNames;
|
||||||
},
|
},
|
||||||
getCurrentLevelOptions() {
|
getCurrentLevelOptions() {
|
||||||
const { options, sActiveValue = [] } = this;
|
const { options = [], sActiveValue = [] } = this;
|
||||||
const result = arrayTreeFilter(
|
const result = arrayTreeFilter(
|
||||||
options,
|
options,
|
||||||
(o, level) => o[this.getFieldName('value')] === sActiveValue[level],
|
(o, level) => o[this.getFieldName('value')] === sActiveValue[level],
|
||||||
|
@ -137,7 +136,7 @@ export default {
|
||||||
},
|
},
|
||||||
getActiveOptions(activeValue) {
|
getActiveOptions(activeValue) {
|
||||||
return arrayTreeFilter(
|
return arrayTreeFilter(
|
||||||
this.options,
|
this.options || [],
|
||||||
(o, level) => o[this.getFieldName('value')] === activeValue[level],
|
(o, level) => o[this.getFieldName('value')] === activeValue[level],
|
||||||
{ childrenKeyName: this.getFieldName('children') },
|
{ childrenKeyName: this.getFieldName('children') },
|
||||||
);
|
);
|
||||||
|
@ -214,6 +213,12 @@ export default {
|
||||||
}
|
}
|
||||||
this.setState(newState);
|
this.setState(newState);
|
||||||
},
|
},
|
||||||
|
handleItemDoubleClick () {
|
||||||
|
const { changeOnSelect } = this.$props;
|
||||||
|
if (changeOnSelect) {
|
||||||
|
this.setPopupVisible(false);
|
||||||
|
}
|
||||||
|
},
|
||||||
handleKeyDown(e) {
|
handleKeyDown(e) {
|
||||||
const { $slots } = this;
|
const { $slots } = this;
|
||||||
const children = $slots.default && $slots.default[0];
|
const children = $slots.default && $slots.default[0];
|
||||||
|
@ -313,7 +318,7 @@ export default {
|
||||||
prefixCls,
|
prefixCls,
|
||||||
transitionName,
|
transitionName,
|
||||||
popupClassName,
|
popupClassName,
|
||||||
options,
|
options = [],
|
||||||
disabled,
|
disabled,
|
||||||
builtinPlacements,
|
builtinPlacements,
|
||||||
popupPlacement,
|
popupPlacement,
|
||||||
|
@ -338,6 +343,7 @@ export default {
|
||||||
on: {
|
on: {
|
||||||
...$listeners,
|
...$listeners,
|
||||||
select: handleMenuSelect,
|
select: handleMenuSelect,
|
||||||
|
itemDoubleClick: this.handleItemDoubleClick
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
menus = <Menus {...menusProps} />;
|
menus = <Menus {...menusProps} />;
|
||||||
|
@ -362,10 +368,11 @@ export default {
|
||||||
},
|
},
|
||||||
ref: 'trigger',
|
ref: 'trigger',
|
||||||
};
|
};
|
||||||
|
const children = getSlot(this, 'default')[0]
|
||||||
return (
|
return (
|
||||||
<Trigger {...triggerProps}>
|
<Trigger {...triggerProps}>
|
||||||
{$slots.default &&
|
{children &&
|
||||||
cloneElement($slots.default[0], {
|
cloneElement(children[0], {
|
||||||
on: {
|
on: {
|
||||||
keydown: handleKeyDown,
|
keydown: handleKeyDown,
|
||||||
},
|
},
|
||||||
|
|
|
@ -9,7 +9,7 @@ export default {
|
||||||
props: {
|
props: {
|
||||||
value: PropTypes.array.def([]),
|
value: PropTypes.array.def([]),
|
||||||
activeValue: PropTypes.array.def([]),
|
activeValue: PropTypes.array.def([]),
|
||||||
options: PropTypes.array.isRequired,
|
options: PropTypes.array,
|
||||||
prefixCls: PropTypes.string.def('rc-cascader-menus'),
|
prefixCls: PropTypes.string.def('rc-cascader-menus'),
|
||||||
expandTrigger: PropTypes.string.def('click'),
|
expandTrigger: PropTypes.string.def('click'),
|
||||||
// onSelect: PropTypes.func,
|
// onSelect: PropTypes.func,
|
||||||
|
@ -51,11 +51,15 @@ export default {
|
||||||
const onSelect = e => {
|
const onSelect = e => {
|
||||||
this.__emit('select', option, menuIndex, e);
|
this.__emit('select', option, menuIndex, e);
|
||||||
};
|
};
|
||||||
|
const onItemDoubleClick = e => {
|
||||||
|
this.__emit('itemDoubleClick', option, menuIndex, e);
|
||||||
|
};
|
||||||
const key = option[this.getFieldName('value')];
|
const key = option[this.getFieldName('value')];
|
||||||
const expandProps = {
|
const expandProps = {
|
||||||
attrs: {},
|
attrs: {},
|
||||||
on: {
|
on: {
|
||||||
click: onSelect,
|
click: onSelect,
|
||||||
|
doubleclick: onItemDoubleClick,
|
||||||
},
|
},
|
||||||
key: Array.isArray(key) ? key.join('__ant__') : key,
|
key: Array.isArray(key) ? key.join('__ant__') : key,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
// based on rc-cascader 0.16.2
|
// based on rc-cascader 0.17.1
|
||||||
import Cascader from './Cascader';
|
import Cascader from './Cascader';
|
||||||
export default Cascader;
|
export default Cascader;
|
||||||
|
|
Loading…
Reference in New Issue