From be5be9b775fd81adfd28ff1feae72c5ebefbee3b Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Mon, 29 Oct 2018 20:48:58 +0800 Subject: [PATCH] feat: update cascader from 0.14.0 to 0.16.0 --- components/vc-cascader/Cascader.jsx | 8 +++++++- components/vc-cascader/Menus.jsx | 18 +++++++++++++++++- components/vc-cascader/index.js | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/components/vc-cascader/Cascader.jsx b/components/vc-cascader/Cascader.jsx index 87a70b1ef..d260ed856 100644 --- a/components/vc-cascader/Cascader.jsx +++ b/components/vc-cascader/Cascader.jsx @@ -1,4 +1,4 @@ - +import { getComponentFromProp } from '../_util/props-util' import PropTypes from '../_util/vue-types' import Trigger from '../trigger' import Menus from './Menus' @@ -65,6 +65,8 @@ export default { // onKeyDown: PropTypes.func, expandTrigger: PropTypes.string.def('click'), fieldNames: PropTypes.object.def({ label: 'label', value: 'value', children: 'children' }), + expandIcon: PropTypes.any, + loadingIcon: PropTypes.any, }, mixins: [BaseMixin], model: { @@ -285,6 +287,8 @@ export default { let menus = <div /> let emptyMenuClassName = '' if (options && options.length > 0) { + const loadingIcon = getComponentFromProp(this, 'loadingIcon') + const expandIcon = getComponentFromProp(this, 'expandIcon') || '>' const menusProps = { props: { ...$props, @@ -292,6 +296,8 @@ export default { defaultFieldNames: this.defaultFieldNames, activeValue: sActiveValue, visible: sPopupVisible, + loadingIcon, + expandIcon, }, on: { ...$listeners, diff --git a/components/vc-cascader/Menus.jsx b/components/vc-cascader/Menus.jsx index 136537e26..629c30f43 100644 --- a/components/vc-cascader/Menus.jsx +++ b/components/vc-cascader/Menus.jsx @@ -1,4 +1,4 @@ - +import { getComponentFromProp } from '../_util/props-util' import PropTypes from '../_util/vue-types' import arrayTreeFilter from 'array-tree-filter' import BaseMixin from '../_util/BaseMixin' @@ -17,6 +17,8 @@ export default { dropdownMenuColumnStyle: PropTypes.object, defaultFieldNames: PropTypes.object, fieldNames: PropTypes.object, + expandIcon: PropTypes.any, + loadingIcon: PropTypes.any, }, data () { this.menuItems = {} @@ -44,6 +46,8 @@ export default { }, getOption (option, menuIndex) { const { prefixCls, expandTrigger } = this + const loadingIcon = getComponentFromProp(this, 'loadingIcon') + const expandIcon = getComponentFromProp(this, 'expandIcon') const onSelect = (e) => { this.__emit('select', option, menuIndex, e) } @@ -57,10 +61,18 @@ export default { key: Array.isArray(key) ? key.join('__ant__') : key, } let menuItemCls = `${prefixCls}-menu-item` + let expandIconNode = null const hasChildren = option[this.getFieldName('children')] && option[this.getFieldName('children')].length > 0 if (hasChildren || option.isLeaf === false) { menuItemCls += ` ${prefixCls}-menu-item-expand` + if (!option.loading) { + expandIconNode = ( + <span class={`${prefixCls}-menu-item-expand-icon`}> + {expandIcon} + </span> + ) + } } if (expandTrigger === 'hover' && hasChildren) { expandProps.on = { @@ -76,8 +88,10 @@ export default { if (option.disabled) { menuItemCls += ` ${prefixCls}-menu-item-disabled` } + let loadingIconNode = null if (option.loading) { menuItemCls += ` ${prefixCls}-menu-item-loading` + loadingIconNode = loadingIcon || null } let title = '' if (option.title) { @@ -90,6 +104,8 @@ export default { return ( <li {...expandProps}> {option[this.getFieldName('label')]} + {expandIconNode} + {loadingIconNode} </li> ) }, diff --git a/components/vc-cascader/index.js b/components/vc-cascader/index.js index 161922216..5493ec1b2 100644 --- a/components/vc-cascader/index.js +++ b/components/vc-cascader/index.js @@ -1,3 +1,3 @@ -// based on rc-cascader 0.14.0 +// based on rc-cascader 0.16.0 import Cascader from './Cascader' export default Cascader