-
Notifications
You must be signed in to change notification settings - Fork 149
/
Copy pathRegionColumns.js
51 lines (44 loc) · 1.24 KB
/
RegionColumns.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { ref, h, mergeProps, defineComponent } from 'vue'
import RegionColumnsCore from './components/Columns'
import { useDropdown } from './utils/selector'
import { dropdownProps } from './utils/data'
export default defineComponent({
name: 'RegionColumns',
inheritAttrs: false,
props: {
...dropdownProps
},
emits: ['complete', 'visible-change'],
setup (props, { emit, slots, expose, attrs }) {
const {
generateDropdown,
generateDropdownTriggerButton,
closeDropdown,
adjustDropdown
} = useDropdown(props)
const columns = ref(null)
function clear () {
columns.value && columns.value.reset()
closeDropdown()
}
expose({ reset: clear })
return () => {
const trigger = generateDropdownTriggerButton(
slots, () => columns, clear
)
const columnsOption = {
ref: columns,
onComplete: () => {
closeDropdown()
emit('complete')
},
onAdjust: adjustDropdown
}
const contents = h(RegionColumnsCore, mergeProps(columnsOption, attrs))
const dropdownOption = {
onVisibleChange: val => emit('visible-change', val)
}
return generateDropdown(dropdownOption, trigger, contents)
}
}
})