add cascader demo
parent
6e8b5b9a20
commit
5cef22dbaa
|
@ -26,5 +26,6 @@
|
||||||
"vetur.format.js.InsertSpaceBeforeFunctionParenthesis": true,
|
"vetur.format.js.InsertSpaceBeforeFunctionParenthesis": true,
|
||||||
"stylefmt.config": {
|
"stylefmt.config": {
|
||||||
"fix": true
|
"fix": true
|
||||||
}
|
},
|
||||||
|
"editor.tabSize": 2
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 选择即改变
|
||||||
|
这种交互允许只选中父级选项。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Change on select
|
||||||
|
Allow only select parent options.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" @change="onChange" changeOnSelect />
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 自定义已选项
|
||||||
|
例如给最后一项加上邮编链接。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Custom render
|
||||||
|
For instance, add an external link after the selected value.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" :defaultValue="['zhejiang', 'hangzhou', 'xihu']" style="width: 100%">
|
||||||
|
<template slot="displayRender" slot-scope="props">
|
||||||
|
<span v-for="(label, index) in props.labels" :key="props.selectedOptions[index].value">
|
||||||
|
<span v-if="index === props.labels.length - 1">
|
||||||
|
{{label}} (<a @click="e => handleAreaClick(e, label, props.selectedOptions[index])">{{props.selectedOptions[index].code}}</a>)
|
||||||
|
</span>
|
||||||
|
<span v-else @click="onChange">
|
||||||
|
{{label}} /
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</a-cascader>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
code: 752100,
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
code: 453400,
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
},
|
||||||
|
handleAreaClick(e, label, option) {
|
||||||
|
e.stopPropagation();
|
||||||
|
console.log('clicked', label, option);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 可以自定义显示
|
||||||
|
切换按钮和结果分开。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Custom trigger
|
||||||
|
Separate trigger button and result.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<span>
|
||||||
|
{{text}}
|
||||||
|
|
||||||
|
<a-cascader :options="options" @change="onChange">
|
||||||
|
<a href="#">Change city</a>
|
||||||
|
</a-cascader>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
text: 'Unselect',
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
onChange(value, selectedOptions) {
|
||||||
|
this.text = selectedOptions.map(o => o.label).join(', ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 默认值
|
||||||
|
默认值通过数组的方式指定。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Default value
|
||||||
|
Specifies default value by an array.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" @change="onChange" :defaultValue="['zhejiang', 'hangzhou', 'xihu']" />
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 禁用选项
|
||||||
|
通过指定 options 里的 `disabled` 字段。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Disabled option
|
||||||
|
Disable option by specifying the `disabled` property in `options`.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" @change="onChange"/>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
disabled: true,
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 移入展开
|
||||||
|
通过移入展开下级菜单,点击完成选择。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Hover
|
||||||
|
Hover to expand sub menu, click to select option.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" :displayRender="displayRender" expandTrigger="hover" @change="onChange" placeholder="Please select" />
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
},
|
||||||
|
displayRender({ labels }) {
|
||||||
|
return labels[labels.length - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 动态加载选项
|
||||||
|
使用 `loadData` 实现动态加载选项。
|
||||||
|
> 注意:`loadData` 与 `showSearch` 无法一起使用。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Load Options Lazily
|
||||||
|
Load options lazily with `loadData`.
|
||||||
|
> Note: `loadData` cannot work with `showSearch`.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" @change="onChange" :loadData="loadData" placeholder="Please select" changeOnSelect/>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
isLeaf: false,
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
isLeaf: false,
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
},
|
||||||
|
loadData(selectedOptions) {
|
||||||
|
const targetOption = selectedOptions[selectedOptions.length - 1];
|
||||||
|
targetOption.loading = true;
|
||||||
|
|
||||||
|
// load options lazily
|
||||||
|
setTimeout(() => {
|
||||||
|
targetOption.loading = false;
|
||||||
|
targetOption.children = [{
|
||||||
|
label: `${targetOption.label} Dynamic 1`,
|
||||||
|
value: 'dynamic1',
|
||||||
|
}, {
|
||||||
|
label: `${targetOption.label} Dynamic 2`,
|
||||||
|
value: 'dynamic2',
|
||||||
|
}];
|
||||||
|
this.options = [...this.options]
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 搜索
|
||||||
|
可以直接搜索选项并选择。
|
||||||
|
> `Cascader[showSearch]` 暂不支持服务端搜索,更多信息见 [#5547](https://github.com/ant-design/ant-design/issues/5547)
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Search
|
||||||
|
Search and select options directly.
|
||||||
|
> Now, `Cascader[showSearch]` doesn't support search on server, more info [#5547](https://github.com/ant-design/ant-design/issues/5547)
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<a-cascader :options="options" :showSearch="true" @change="onChange" placeholder="Please select" />
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}, {
|
||||||
|
value: 'xiasha',
|
||||||
|
label: 'Xia Sha',
|
||||||
|
disabled: true,
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value, selectedOptions) {
|
||||||
|
console.log(value, selectedOptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
<cn>
|
||||||
|
#### 大小
|
||||||
|
不同大小的级联选择器。
|
||||||
|
</cn>
|
||||||
|
|
||||||
|
<us>
|
||||||
|
#### Size
|
||||||
|
Cascade selection box of different sizes.
|
||||||
|
</us>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-cascader size="large" :options="options" @change="onChange" /><br /><br />
|
||||||
|
<a-cascader :options="options" @change="onChange" /><br /><br />
|
||||||
|
<a-cascader size="small" :options="options" @change="onChange" /><br /><br />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: [{
|
||||||
|
value: 'zhejiang',
|
||||||
|
label: 'Zhejiang',
|
||||||
|
children: [{
|
||||||
|
value: 'hangzhou',
|
||||||
|
label: 'Hangzhou',
|
||||||
|
children: [{
|
||||||
|
value: 'xihu',
|
||||||
|
label: 'West Lake',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}, {
|
||||||
|
value: 'jiangsu',
|
||||||
|
label: 'Jiangsu',
|
||||||
|
children: [{
|
||||||
|
value: 'nanjing',
|
||||||
|
label: 'Nanjing',
|
||||||
|
children: [{
|
||||||
|
value: 'zhonghuamen',
|
||||||
|
label: 'Zhong Hua Men',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(value) {
|
||||||
|
console.log(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
|
@ -80,11 +80,15 @@ function defaultSortFilteredOption (a, b, inputValue) {
|
||||||
return a.findIndex(callback) - b.findIndex(callback)
|
return a.findIndex(callback) - b.findIndex(callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultDisplayRender = (label) => label.join(' / ')
|
const defaultDisplayRender = ({ labels }) => labels.join(' / ')
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [BaseMixin],
|
mixins: [BaseMixin],
|
||||||
props: CascaderProps,
|
props: CascaderProps,
|
||||||
|
model: {
|
||||||
|
prop: 'value',
|
||||||
|
event: 'change',
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
this.cachedOptions = []
|
this.cachedOptions = []
|
||||||
const { value, defaultValue, popupVisible, showSearch, options, changeOnSelect, flattenTree } = this
|
const { value, defaultValue, popupVisible, showSearch, options, changeOnSelect, flattenTree } = this
|
||||||
|
@ -181,14 +185,15 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
getLabel () {
|
getLabel () {
|
||||||
const { options, displayRender = defaultDisplayRender } = this
|
const { options, $scopedSlots } = this
|
||||||
|
const displayRender = this.displayRender || $scopedSlots.displayRender || defaultDisplayRender
|
||||||
const value = this.sValue
|
const value = this.sValue
|
||||||
const unwrappedValue = Array.isArray(value[0]) ? value[0] : value
|
const unwrappedValue = Array.isArray(value[0]) ? value[0] : value
|
||||||
const selectedOptions = arrayTreeFilter(options,
|
const selectedOptions = arrayTreeFilter(options,
|
||||||
(o, level) => o.value === unwrappedValue[level],
|
(o, level) => o.value === unwrappedValue[level],
|
||||||
)
|
)
|
||||||
const label = selectedOptions.map(o => o.label)
|
const labels = selectedOptions.map(o => o.label)
|
||||||
return displayRender(label, selectedOptions)
|
return displayRender({ labels, selectedOptions })
|
||||||
},
|
},
|
||||||
|
|
||||||
clearSelection (e) {
|
clearSelection (e) {
|
||||||
|
@ -295,6 +300,7 @@ export default {
|
||||||
'renderFilteredOption',
|
'renderFilteredOption',
|
||||||
'sortFilteredOption',
|
'sortFilteredOption',
|
||||||
'notFoundContent',
|
'notFoundContent',
|
||||||
|
'defaultValue',
|
||||||
])
|
])
|
||||||
|
|
||||||
let options = this.options
|
let options = this.options
|
||||||
|
@ -342,10 +348,13 @@ export default {
|
||||||
<span
|
<span
|
||||||
class={pickerCls}
|
class={pickerCls}
|
||||||
>
|
>
|
||||||
<span class={`${prefixCls}-picker-label`}>
|
{ showSearch ? <span class={`${prefixCls}-picker-label`}>
|
||||||
{this.getLabel()}
|
{this.getLabel()}
|
||||||
</span>
|
</span> : null}
|
||||||
<Input {...inputProps}/>
|
<Input {...inputProps}/>
|
||||||
|
{ !showSearch ? <span class={`${prefixCls}-picker-label`}>
|
||||||
|
{this.getLabel()}
|
||||||
|
</span> : null}
|
||||||
{clearIcon}
|
{clearIcon}
|
||||||
<Icon type='down' class={arrowCls} />
|
<Icon type='down' class={arrowCls} />
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -66,6 +66,10 @@ export default {
|
||||||
expandTrigger: PropTypes.string.def('click'),
|
expandTrigger: PropTypes.string.def('click'),
|
||||||
},
|
},
|
||||||
mixins: [BaseMixin],
|
mixins: [BaseMixin],
|
||||||
|
model: {
|
||||||
|
prop: 'value',
|
||||||
|
event: 'change',
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
let initialValue = []
|
let initialValue = []
|
||||||
const { value, defaultValue, popupVisible } = this
|
const { value, defaultValue, popupVisible } = this
|
||||||
|
|
|
@ -45,7 +45,7 @@ export default {
|
||||||
on: {
|
on: {
|
||||||
click: onSelect,
|
click: onSelect,
|
||||||
},
|
},
|
||||||
key: option.value,
|
key: option.value.toString(),
|
||||||
}
|
}
|
||||||
let menuItemCls = `${prefixCls}-menu-item`
|
let menuItemCls = `${prefixCls}-menu-item`
|
||||||
const hasChildren = option.children && option.children.length > 0
|
const hasChildren = option.children && option.children.length > 0
|
||||||
|
|
Loading…
Reference in New Issue