@element-plus/nightly 0.0.20260720 → 0.0.20260722
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/affix/src/affix.vue.d.ts +4 -4
- package/es/components/alert/src/alert.d.ts +1 -1
- package/es/components/alert/src/alert.vue.d.ts +1 -1
- package/es/components/anchor/src/anchor.vue.d.ts +2 -2
- package/es/components/autocomplete/src/autocomplete.d.ts +6 -107
- package/es/components/autocomplete/src/autocomplete.mjs.map +1 -1
- package/es/components/autocomplete/src/autocomplete.vue.d.ts +5 -5
- package/es/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/autocomplete/src/autocomplete2.mjs.map +1 -1
- package/es/components/avatar/src/avatar-group-props.d.ts +8 -105
- package/es/components/avatar/src/avatar-group-props.mjs +9 -1
- package/es/components/avatar/src/avatar-group-props.mjs.map +1 -1
- package/es/components/avatar/src/avatar-group.d.ts +17 -210
- package/es/components/avatar/src/avatar.d.ts +2 -2
- package/es/components/backtop/src/backtop.vue.d.ts +1 -1
- package/es/components/badge/src/badge.d.ts +3 -7
- package/es/components/badge/src/badge.mjs +9 -1
- package/es/components/badge/src/badge.mjs.map +1 -1
- package/es/components/badge/src/badge.vue.d.ts +2 -0
- package/es/components/badge/src/badge.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/badge/src/badge2.mjs.map +1 -1
- package/es/components/button/src/button-group.d.ts +1 -1
- package/es/components/button/src/button-group.vue.d.ts +1 -1
- package/es/components/button/src/button.d.ts +1 -1
- package/es/components/button/src/button.vue.d.ts +3 -3
- package/es/components/button/src/use-button.d.ts +1 -1
- package/es/components/calendar/src/calendar.mjs.map +1 -1
- package/es/components/calendar/src/calendar.vue.d.ts +1 -1
- package/es/components/calendar/style/css.mjs +1 -1
- package/es/components/calendar/style/index.mjs +1 -1
- package/es/components/card/src/card.d.ts +8 -7
- package/es/components/card/src/card.mjs +27 -3
- package/es/components/card/src/card.mjs.map +1 -1
- package/es/components/card/src/card.vue.d.ts +5 -1
- package/es/components/card/src/card.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/card/src/card2.mjs.map +1 -1
- package/es/components/carousel/src/carousel.d.ts +2 -2
- package/es/components/carousel/src/carousel.vue.d.ts +4 -4
- package/es/components/cascader/src/cascader.d.ts +6 -107
- package/es/components/cascader/src/cascader.mjs.map +1 -1
- package/es/components/cascader/src/cascader.vue.d.ts +20 -18
- package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/cascader/src/cascader2.mjs.map +1 -1
- package/es/components/cascader-panel/src/index.vue.d.ts +3 -3
- package/es/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +4 -4
- package/es/components/checkbox/src/checkbox.d.ts +8 -8
- package/es/components/checkbox/src/checkbox.vue.d.ts +5 -5
- package/es/components/col/src/col.vue.d.ts +1 -1
- package/es/components/collapse/src/collapse.d.ts +1 -1
- package/es/components/collapse/src/collapse.vue.d.ts +1 -1
- package/es/components/color-picker/src/color-picker.d.ts +3 -102
- package/es/components/color-picker/src/color-picker.mjs +1 -0
- package/es/components/color-picker/src/color-picker.mjs.map +1 -1
- package/es/components/color-picker/src/color-picker.vue.d.ts +13 -11
- package/es/components/color-picker-panel/src/color-picker-panel.d.ts +3 -9
- package/es/components/color-picker-panel/src/color-picker-panel.mjs +9 -5
- package/es/components/color-picker-panel/src/color-picker-panel.mjs.map +1 -1
- package/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts +4 -1
- package/es/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/color-picker-panel/src/color-picker-panel2.mjs.map +1 -1
- package/es/components/config-provider/src/config-provider.d.ts +1 -1
- package/es/components/date-picker/src/date-picker.d.ts +16 -216
- package/es/components/date-picker/src/props.d.ts +4 -104
- package/es/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
- package/es/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +1 -1
- package/es/components/date-picker-panel/src/date-picker-panel.d.ts +4 -4
- package/es/components/date-picker-panel/src/panel-utils.d.ts +9 -9
- package/es/components/date-picker-panel/src/props/basic-date-table.mjs.map +1 -1
- package/es/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
- package/es/components/descriptions/src/description-item.d.ts +18 -18
- package/es/components/descriptions/src/description.vue.d.ts +1 -1
- package/es/components/dialog/src/dialog-content.d.ts +10 -6
- package/es/components/dialog/src/dialog-content.mjs +32 -5
- package/es/components/dialog/src/dialog-content.mjs.map +1 -1
- package/es/components/dialog/src/dialog-content.vue.d.ts +4 -0
- package/es/components/dialog/src/dialog.d.ts +10 -5
- package/es/components/dialog/src/dialog.mjs +11 -14
- package/es/components/dialog/src/dialog.mjs.map +1 -1
- package/es/components/dialog/src/dialog.vue.d.ts +8 -3
- package/es/components/divider/src/divider.d.ts +1 -1
- package/es/components/divider/src/divider.vue.d.ts +1 -1
- package/es/components/drawer/src/drawer.d.ts +5 -4
- package/es/components/drawer/src/drawer.vue.d.ts +8 -3
- package/es/components/dropdown/src/dropdown-item-impl.vue.d.ts +1 -1
- package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
- package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/es/components/dropdown/src/dropdown.d.ts +6 -107
- package/es/components/dropdown/src/dropdown.vue.d.ts +97 -295
- package/es/components/dropdown/style/css.mjs +1 -1
- package/es/components/dropdown/style/index.mjs +1 -1
- package/es/components/form/src/form-item.d.ts +2 -2
- package/es/components/form/src/form-item.vue.d.ts +1 -1
- package/es/components/form/src/form.d.ts +2 -2
- package/es/components/image/src/image.mjs.map +1 -1
- package/es/components/image/src/image.vue.d.ts +3 -3
- package/es/components/image-viewer/src/image-viewer.mjs.map +1 -1
- package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
- package/es/components/input/src/input.d.ts +3 -3
- package/es/components/input/src/input.vue.d.ts +16 -16
- package/es/components/input-number/src/input-number.d.ts +2 -2
- package/es/components/input-number/src/input-number.vue.d.ts +7 -7
- package/es/components/input-otp/src/input-otp.vue.d.ts +4 -4
- package/es/components/input-tag/src/input-tag.d.ts +1 -1
- package/es/components/input-tag/src/input-tag.vue.d.ts +10 -10
- package/es/components/link/src/link.d.ts +1 -1
- package/es/components/link/src/link.mjs.map +1 -1
- package/es/components/link/src/link.vue.d.ts +1 -1
- package/es/components/mention/src/mention.d.ts +5 -106
- package/es/components/mention/src/mention.vue.d.ts +5 -5
- package/es/components/mention/src/mention.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/mention/src/mention2.mjs.map +1 -1
- package/es/components/menu/src/menu.d.ts +17 -29
- package/es/components/menu/src/menu.mjs +18 -2
- package/es/components/menu/src/menu.mjs.map +1 -1
- package/es/components/menu/src/sub-menu.d.ts +10 -22
- package/es/components/menu/src/sub-menu.mjs +18 -2
- package/es/components/menu/src/sub-menu.mjs.map +1 -1
- package/es/components/message/src/message.d.ts +4 -4
- package/es/components/message/src/message.mjs +6 -1
- package/es/components/message/src/message.mjs.map +1 -1
- package/es/components/message/src/message.vue.d.ts +6 -5
- package/es/components/message/src/method.mjs.map +1 -1
- package/es/components/message-box/src/index.vue.d.ts +59 -67
- package/es/components/notification/src/notification.d.ts +4 -3
- package/es/components/notification/src/notification.mjs +6 -1
- package/es/components/notification/src/notification.mjs.map +1 -1
- package/es/components/notification/src/notification.vue.d.ts +5 -4
- package/es/components/overlay/index.d.ts +4 -12
- package/es/components/overlay/src/overlay.d.ts +5 -18
- package/es/components/overlay/src/overlay.mjs +9 -5
- package/es/components/overlay/src/overlay.mjs.map +1 -1
- package/es/components/pagination/src/components/sizes.d.ts +4 -13
- package/es/components/pagination/src/components/sizes.mjs +18 -2
- package/es/components/pagination/src/components/sizes.mjs.map +1 -1
- package/es/components/pagination/src/components/sizes.vue.d.ts +7 -24
- package/es/components/pagination/src/pagination.d.ts +12 -25
- package/es/components/pagination/src/pagination.mjs +15 -2
- package/es/components/pagination/src/pagination.mjs.map +1 -1
- package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
- package/es/components/popconfirm/src/popconfirm.vue.d.ts +5 -5
- package/es/components/popover/src/popover.d.ts +5 -105
- package/es/components/popover/src/popover.mjs +1 -0
- package/es/components/popover/src/popover.mjs.map +1 -1
- package/es/components/popover/src/popover.vue.d.ts +13 -12
- package/es/components/popper/src/composables/use-content-dom.d.ts +2 -25
- package/es/components/popper/src/composables/use-content.d.ts +4 -4
- package/es/components/popper/src/content.d.ts +8 -18
- package/es/components/popper/src/content.mjs +13 -7
- package/es/components/popper/src/content.mjs.map +1 -1
- package/es/components/popper/src/content.vue.d.ts +17 -15
- package/es/components/popper/src/popper.d.ts +2 -2
- package/es/components/popper/src/popper.mjs.map +1 -1
- package/es/components/progress/src/progress.d.ts +1 -1
- package/es/components/progress/src/progress.vue.d.ts +1 -1
- package/es/components/radio/src/radio-button.d.ts +3 -3
- package/es/components/radio/src/radio-button.vue.d.ts +2 -2
- package/es/components/radio/src/radio-group.vue.d.ts +5 -5
- package/es/components/radio/src/radio.d.ts +6 -6
- package/es/components/radio/src/radio.vue.d.ts +3 -3
- package/es/components/rate/src/rate.vue.d.ts +1 -1
- package/es/components/rate/src/rate.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/rate/src/rate2.mjs.map +1 -1
- package/es/components/result/src/result.d.ts +1 -1
- package/es/components/row/src/row.d.ts +1 -1
- package/es/components/scrollbar/src/scrollbar.d.ts +5 -4
- package/es/components/scrollbar/src/scrollbar.mjs +12 -2
- package/es/components/scrollbar/src/scrollbar.mjs.map +1 -1
- package/es/components/scrollbar/src/scrollbar.vue.d.ts +4 -3
- package/es/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/scrollbar/src/thumb2.mjs.map +1 -1
- package/es/components/segmented/index.d.ts +3 -3
- package/es/components/segmented/src/segmented.d.ts +1 -1
- package/es/components/segmented/src/segmented.vue.d.ts +1 -1
- package/es/components/select/src/option.d.ts +2 -2
- package/es/components/select/src/option.vue.d.ts +5 -5
- package/es/components/select/src/select-dropdown.vue.d.ts +2 -1
- package/es/components/select/src/select.d.ts +9 -13
- package/es/components/select/src/select.mjs +15 -2
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/select/src/select.vue.d.ts +113 -119
- package/es/components/select/src/select.vue_vue_type_script_lang.mjs.map +1 -1
- package/es/components/select/src/select2.mjs.map +1 -1
- package/es/components/select/src/useOption.d.ts +2 -2
- package/es/components/select/src/useSelect.d.ts +5 -5
- package/es/components/select/src/useSelect.mjs.map +1 -1
- package/es/components/select-v2/src/defaults.d.ts +3 -103
- package/es/components/select-v2/src/option-item.vue.d.ts +1 -1
- package/es/components/select-v2/src/select.vue.d.ts +89 -287
- package/es/components/select-v2/src/useSelect.d.ts +1 -1
- package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/es/components/slider/src/button.d.ts +2 -1
- package/es/components/slider/src/button.mjs +10 -2
- package/es/components/slider/src/button.mjs.map +1 -1
- package/es/components/slider/src/button.vue.d.ts +5 -3
- package/es/components/slider/src/composables/use-marks.mjs.map +1 -1
- package/es/components/slider/src/slider.d.ts +2 -2
- package/es/components/slider/src/slider.mjs +6 -1
- package/es/components/slider/src/slider.mjs.map +1 -1
- package/es/components/slider/src/slider.vue.d.ts +8 -8
- package/es/components/space/src/space.d.ts +7 -7
- package/es/components/space/src/space.mjs +2 -1
- package/es/components/space/src/space.mjs.map +1 -1
- package/es/components/space/src/use-space.d.ts +2 -3
- package/es/components/splitter/src/split-bar.vue.d.ts +1 -1
- package/es/components/steps/src/item.d.ts +1 -1
- package/es/components/steps/src/item.vue.d.ts +1 -1
- package/es/components/steps/src/steps.d.ts +2 -2
- package/es/components/steps/src/steps.vue.d.ts +1 -1
- package/es/components/switch/src/switch.vue.d.ts +3 -3
- package/es/components/table/src/filter-panel.vue.d.ts +89 -86
- package/es/components/table/src/table/defaults.d.ts +5 -5
- package/es/components/table/src/table/defaults.mjs.map +1 -1
- package/es/components/table/src/table/style-helper.d.ts +1 -1
- package/es/components/table/src/table-body/events-helper.mjs.map +1 -1
- package/es/components/table/src/table-column/defaults.d.ts +4 -4
- package/es/components/table/src/table-header/index.d.ts +14 -14
- package/es/components/table/src/table.vue.d.ts +4 -4
- package/es/components/tabs/src/tab-nav.d.ts +1 -1
- package/es/components/tabs/src/tab-pane.vue.d.ts +1 -1
- package/es/components/tabs/src/tabs.d.ts +5 -5
- package/es/components/tag/src/tag.vue.d.ts +2 -2
- package/es/components/text/src/text.vue.d.ts +1 -1
- package/es/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
- package/es/components/time-picker/src/common/picker.vue.d.ts +22 -222
- package/es/components/time-picker/src/common/props.d.ts +4 -104
- package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
- package/es/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
- package/es/components/time-picker/src/time-picker.d.ts +16 -216
- package/es/components/time-select/src/time-select.d.ts +6 -10
- package/es/components/time-select/src/time-select.mjs +15 -2
- package/es/components/time-select/src/time-select.mjs.map +1 -1
- package/es/components/time-select/src/time-select.vue.d.ts +11 -10
- package/es/components/timeline/src/timeline-item.vue.d.ts +2 -2
- package/es/components/tooltip/src/content.d.ts +4 -199
- package/es/components/tooltip/src/content.vue.d.ts +18 -16
- package/es/components/tooltip/src/tooltip.d.ts +5 -202
- package/es/components/tooltip/src/tooltip.vue.d.ts +19 -18
- package/es/components/tooltip/src/trigger.d.ts +1 -1
- package/es/components/tour/src/content.d.ts +1 -1
- package/es/components/tour/src/content.vue.d.ts +1 -1
- package/es/components/tour/src/step.d.ts +1 -1
- package/es/components/tour/src/tour.d.ts +1 -1
- package/es/components/tour/src/tour.vue.d.ts +3 -3
- package/es/components/transfer/src/transfer.vue.d.ts +1 -1
- package/es/components/tree/src/tree-node.vue.d.ts +14 -14
- package/es/components/tree/src/tree.vue.d.ts +16 -16
- package/es/components/tree-select/src/select.mjs +1 -5
- package/es/components/tree-select/src/select.mjs.map +1 -1
- package/es/components/tree-select/src/tree-select-option.d.ts +5 -5
- package/es/components/tree-select/src/tree-select.vue.d.ts +33 -41
- package/es/components/tree-v2/src/composables/useTree.d.ts +9 -8
- package/es/components/tree-v2/src/tree.vue.d.ts +2 -2
- package/es/components/upload/src/upload-content.d.ts +1 -1
- package/es/components/upload/src/upload-content.vue.d.ts +2 -2
- package/es/components/upload/src/upload-list.d.ts +1 -1
- package/es/components/upload/src/upload.d.ts +2 -2
- package/es/components/upload/src/upload.mjs.map +1 -1
- package/es/components/upload/src/upload.vue.d.ts +3 -3
- package/es/components/virtual-list/src/builders/build-grid.d.ts +4 -3
- package/es/components/virtual-list/src/builders/build-list.d.ts +5 -4
- package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -3
- package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +5 -4
- package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -3
- package/es/components/virtual-list/src/components/fixed-size-list.d.ts +5 -4
- package/es/components/virtual-list/src/components/scrollbar.d.ts +5 -3
- package/es/components/virtual-list/src/props.d.ts +5 -4
- package/es/components/virtual-list/src/props.mjs +15 -2
- package/es/components/virtual-list/src/props.mjs.map +1 -1
- package/es/components/watermark/src/watermark.mjs.map +1 -1
- package/es/hooks/use-floating/index.d.ts +8 -8
- package/es/hooks/use-popper/index.d.ts +4 -4
- package/es/hooks/use-throttle-render/index.mjs.map +1 -1
- package/es/utils/index.d.ts +2 -2
- package/es/utils/typescript.d.ts +2 -1
- package/es/utils/typescript.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/affix/src/affix.vue.d.ts +4 -4
- package/lib/components/alert/src/alert.d.ts +1 -1
- package/lib/components/alert/src/alert.vue.d.ts +1 -1
- package/lib/components/anchor/src/anchor.vue.d.ts +2 -2
- package/lib/components/autocomplete/src/autocomplete.d.ts +6 -107
- package/lib/components/autocomplete/src/autocomplete.js.map +1 -1
- package/lib/components/autocomplete/src/autocomplete.vue.d.ts +5 -5
- package/lib/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/autocomplete/src/autocomplete2.js.map +1 -1
- package/lib/components/avatar/src/avatar-group-props.d.ts +8 -105
- package/lib/components/avatar/src/avatar-group-props.js +9 -1
- package/lib/components/avatar/src/avatar-group-props.js.map +1 -1
- package/lib/components/avatar/src/avatar-group.d.ts +17 -210
- package/lib/components/avatar/src/avatar.d.ts +2 -2
- package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
- package/lib/components/badge/src/badge.d.ts +3 -7
- package/lib/components/badge/src/badge.js +9 -1
- package/lib/components/badge/src/badge.js.map +1 -1
- package/lib/components/badge/src/badge.vue.d.ts +2 -0
- package/lib/components/badge/src/badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/badge/src/badge2.js.map +1 -1
- package/lib/components/button/src/button-group.d.ts +1 -1
- package/lib/components/button/src/button-group.vue.d.ts +1 -1
- package/lib/components/button/src/button.d.ts +1 -1
- package/lib/components/button/src/button.vue.d.ts +3 -3
- package/lib/components/button/src/use-button.d.ts +1 -1
- package/lib/components/calendar/src/calendar.js.map +1 -1
- package/lib/components/calendar/src/calendar.vue.d.ts +1 -1
- package/lib/components/calendar/style/css.js +1 -1
- package/lib/components/calendar/style/index.js +1 -1
- package/lib/components/card/src/card.d.ts +8 -7
- package/lib/components/card/src/card.js +27 -3
- package/lib/components/card/src/card.js.map +1 -1
- package/lib/components/card/src/card.vue.d.ts +5 -1
- package/lib/components/card/src/card.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/card/src/card2.js.map +1 -1
- package/lib/components/carousel/src/carousel.d.ts +2 -2
- package/lib/components/carousel/src/carousel.vue.d.ts +4 -4
- package/lib/components/cascader/src/cascader.d.ts +6 -107
- package/lib/components/cascader/src/cascader.js.map +1 -1
- package/lib/components/cascader/src/cascader.vue.d.ts +20 -18
- package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/cascader/src/cascader2.js.map +1 -1
- package/lib/components/cascader-panel/src/index.vue.d.ts +3 -3
- package/lib/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +4 -4
- package/lib/components/checkbox/src/checkbox.d.ts +8 -8
- package/lib/components/checkbox/src/checkbox.vue.d.ts +5 -5
- package/lib/components/col/src/col.vue.d.ts +1 -1
- package/lib/components/collapse/src/collapse.d.ts +1 -1
- package/lib/components/collapse/src/collapse.vue.d.ts +1 -1
- package/lib/components/color-picker/src/color-picker.d.ts +3 -102
- package/lib/components/color-picker/src/color-picker.js +1 -0
- package/lib/components/color-picker/src/color-picker.js.map +1 -1
- package/lib/components/color-picker/src/color-picker.vue.d.ts +13 -11
- package/lib/components/color-picker-panel/src/color-picker-panel.d.ts +3 -9
- package/lib/components/color-picker-panel/src/color-picker-panel.js +9 -5
- package/lib/components/color-picker-panel/src/color-picker-panel.js.map +1 -1
- package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +4 -1
- package/lib/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/color-picker-panel/src/color-picker-panel2.js.map +1 -1
- package/lib/components/config-provider/src/config-provider.d.ts +1 -1
- package/lib/components/date-picker/src/date-picker.d.ts +16 -216
- package/lib/components/date-picker/src/props.d.ts +4 -104
- package/lib/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
- package/lib/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +1 -1
- package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +4 -4
- package/lib/components/date-picker-panel/src/panel-utils.d.ts +9 -9
- package/lib/components/date-picker-panel/src/props/basic-date-table.js.map +1 -1
- package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
- package/lib/components/descriptions/src/description-item.d.ts +18 -18
- package/lib/components/descriptions/src/description.vue.d.ts +1 -1
- package/lib/components/dialog/src/dialog-content.d.ts +10 -6
- package/lib/components/dialog/src/dialog-content.js +31 -4
- package/lib/components/dialog/src/dialog-content.js.map +1 -1
- package/lib/components/dialog/src/dialog-content.vue.d.ts +4 -0
- package/lib/components/dialog/src/dialog.d.ts +10 -5
- package/lib/components/dialog/src/dialog.js +11 -14
- package/lib/components/dialog/src/dialog.js.map +1 -1
- package/lib/components/dialog/src/dialog.vue.d.ts +8 -3
- package/lib/components/divider/src/divider.d.ts +1 -1
- package/lib/components/divider/src/divider.vue.d.ts +1 -1
- package/lib/components/drawer/src/drawer.d.ts +5 -4
- package/lib/components/drawer/src/drawer.vue.d.ts +8 -3
- package/lib/components/dropdown/src/dropdown-item-impl.vue.d.ts +1 -1
- package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
- package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/lib/components/dropdown/src/dropdown.d.ts +6 -107
- package/lib/components/dropdown/src/dropdown.vue.d.ts +97 -295
- package/lib/components/dropdown/style/css.js +1 -1
- package/lib/components/dropdown/style/index.js +1 -1
- package/lib/components/form/src/form-item.d.ts +2 -2
- package/lib/components/form/src/form-item.vue.d.ts +1 -1
- package/lib/components/form/src/form.d.ts +2 -2
- package/lib/components/image/src/image.js.map +1 -1
- package/lib/components/image/src/image.vue.d.ts +3 -3
- package/lib/components/image-viewer/src/image-viewer.js.map +1 -1
- package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
- package/lib/components/input/src/input.d.ts +3 -3
- package/lib/components/input/src/input.vue.d.ts +16 -16
- package/lib/components/input-number/src/input-number.d.ts +2 -2
- package/lib/components/input-number/src/input-number.vue.d.ts +7 -7
- package/lib/components/input-otp/src/input-otp.vue.d.ts +4 -4
- package/lib/components/input-tag/src/input-tag.d.ts +1 -1
- package/lib/components/input-tag/src/input-tag.vue.d.ts +10 -10
- package/lib/components/link/src/link.d.ts +1 -1
- package/lib/components/link/src/link.js.map +1 -1
- package/lib/components/link/src/link.vue.d.ts +1 -1
- package/lib/components/mention/src/mention.d.ts +5 -106
- package/lib/components/mention/src/mention.vue.d.ts +5 -5
- package/lib/components/mention/src/mention.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/mention/src/mention2.js.map +1 -1
- package/lib/components/menu/src/menu.d.ts +17 -29
- package/lib/components/menu/src/menu.js +18 -2
- package/lib/components/menu/src/menu.js.map +1 -1
- package/lib/components/menu/src/sub-menu.d.ts +10 -22
- package/lib/components/menu/src/sub-menu.js +18 -2
- package/lib/components/menu/src/sub-menu.js.map +1 -1
- package/lib/components/message/src/message.d.ts +4 -4
- package/lib/components/message/src/message.js +6 -1
- package/lib/components/message/src/message.js.map +1 -1
- package/lib/components/message/src/message.vue.d.ts +6 -5
- package/lib/components/message/src/method.js.map +1 -1
- package/lib/components/message-box/src/index.vue.d.ts +59 -67
- package/lib/components/notification/src/notification.d.ts +4 -3
- package/lib/components/notification/src/notification.js +6 -1
- package/lib/components/notification/src/notification.js.map +1 -1
- package/lib/components/notification/src/notification.vue.d.ts +5 -4
- package/lib/components/overlay/index.d.ts +4 -12
- package/lib/components/overlay/src/overlay.d.ts +5 -18
- package/lib/components/overlay/src/overlay.js +9 -5
- package/lib/components/overlay/src/overlay.js.map +1 -1
- package/lib/components/pagination/src/components/sizes.d.ts +4 -13
- package/lib/components/pagination/src/components/sizes.js +18 -2
- package/lib/components/pagination/src/components/sizes.js.map +1 -1
- package/lib/components/pagination/src/components/sizes.vue.d.ts +7 -24
- package/lib/components/pagination/src/pagination.d.ts +12 -25
- package/lib/components/pagination/src/pagination.js +15 -2
- package/lib/components/pagination/src/pagination.js.map +1 -1
- package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
- package/lib/components/popconfirm/src/popconfirm.vue.d.ts +5 -5
- package/lib/components/popover/src/popover.d.ts +5 -105
- package/lib/components/popover/src/popover.js +1 -0
- package/lib/components/popover/src/popover.js.map +1 -1
- package/lib/components/popover/src/popover.vue.d.ts +13 -12
- package/lib/components/popper/src/composables/use-content-dom.d.ts +2 -25
- package/lib/components/popper/src/composables/use-content.d.ts +4 -4
- package/lib/components/popper/src/content.d.ts +8 -18
- package/lib/components/popper/src/content.js +13 -7
- package/lib/components/popper/src/content.js.map +1 -1
- package/lib/components/popper/src/content.vue.d.ts +17 -15
- package/lib/components/popper/src/popper.d.ts +2 -2
- package/lib/components/popper/src/popper.js.map +1 -1
- package/lib/components/progress/src/progress.d.ts +1 -1
- package/lib/components/progress/src/progress.vue.d.ts +1 -1
- package/lib/components/radio/src/radio-button.d.ts +3 -3
- package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
- package/lib/components/radio/src/radio-group.vue.d.ts +5 -5
- package/lib/components/radio/src/radio.d.ts +6 -6
- package/lib/components/radio/src/radio.vue.d.ts +3 -3
- package/lib/components/rate/src/rate.vue.d.ts +1 -1
- package/lib/components/rate/src/rate.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/rate/src/rate2.js.map +1 -1
- package/lib/components/result/src/result.d.ts +1 -1
- package/lib/components/row/src/row.d.ts +1 -1
- package/lib/components/scrollbar/src/scrollbar.d.ts +5 -4
- package/lib/components/scrollbar/src/scrollbar.js +12 -2
- package/lib/components/scrollbar/src/scrollbar.js.map +1 -1
- package/lib/components/scrollbar/src/scrollbar.vue.d.ts +4 -3
- package/lib/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/scrollbar/src/thumb2.js.map +1 -1
- package/lib/components/segmented/index.d.ts +3 -3
- package/lib/components/segmented/src/segmented.d.ts +1 -1
- package/lib/components/segmented/src/segmented.vue.d.ts +1 -1
- package/lib/components/select/src/option.d.ts +2 -2
- package/lib/components/select/src/option.vue.d.ts +5 -5
- package/lib/components/select/src/select-dropdown.vue.d.ts +2 -1
- package/lib/components/select/src/select.d.ts +9 -13
- package/lib/components/select/src/select.js +15 -2
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/select/src/select.vue.d.ts +113 -119
- package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
- package/lib/components/select/src/select2.js.map +1 -1
- package/lib/components/select/src/useOption.d.ts +2 -2
- package/lib/components/select/src/useSelect.d.ts +5 -5
- package/lib/components/select/src/useSelect.js.map +1 -1
- package/lib/components/select-v2/src/defaults.d.ts +3 -103
- package/lib/components/select-v2/src/option-item.vue.d.ts +1 -1
- package/lib/components/select-v2/src/select.vue.d.ts +89 -287
- package/lib/components/select-v2/src/useSelect.d.ts +1 -1
- package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/lib/components/slider/src/button.d.ts +2 -1
- package/lib/components/slider/src/button.js +9 -1
- package/lib/components/slider/src/button.js.map +1 -1
- package/lib/components/slider/src/button.vue.d.ts +5 -3
- package/lib/components/slider/src/composables/use-marks.js.map +1 -1
- package/lib/components/slider/src/slider.d.ts +2 -2
- package/lib/components/slider/src/slider.js +6 -1
- package/lib/components/slider/src/slider.js.map +1 -1
- package/lib/components/slider/src/slider.vue.d.ts +8 -8
- package/lib/components/space/src/space.d.ts +7 -7
- package/lib/components/space/src/space.js +2 -1
- package/lib/components/space/src/space.js.map +1 -1
- package/lib/components/space/src/use-space.d.ts +2 -3
- package/lib/components/splitter/src/split-bar.vue.d.ts +1 -1
- package/lib/components/steps/src/item.d.ts +1 -1
- package/lib/components/steps/src/item.vue.d.ts +1 -1
- package/lib/components/steps/src/steps.d.ts +2 -2
- package/lib/components/steps/src/steps.vue.d.ts +1 -1
- package/lib/components/switch/src/switch.vue.d.ts +3 -3
- package/lib/components/table/src/filter-panel.vue.d.ts +89 -86
- package/lib/components/table/src/table/defaults.d.ts +5 -5
- package/lib/components/table/src/table/defaults.js.map +1 -1
- package/lib/components/table/src/table/style-helper.d.ts +1 -1
- package/lib/components/table/src/table-body/events-helper.js.map +1 -1
- package/lib/components/table/src/table-column/defaults.d.ts +4 -4
- package/lib/components/table/src/table-header/index.d.ts +14 -14
- package/lib/components/table/src/table.vue.d.ts +4 -4
- package/lib/components/tabs/src/tab-nav.d.ts +1 -1
- package/lib/components/tabs/src/tab-pane.vue.d.ts +1 -1
- package/lib/components/tabs/src/tabs.d.ts +5 -5
- package/lib/components/tag/src/tag.vue.d.ts +2 -2
- package/lib/components/text/src/text.vue.d.ts +1 -1
- package/lib/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
- package/lib/components/time-picker/src/common/picker.vue.d.ts +22 -222
- package/lib/components/time-picker/src/common/props.d.ts +4 -104
- package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
- package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
- package/lib/components/time-picker/src/time-picker.d.ts +16 -216
- package/lib/components/time-select/src/time-select.d.ts +6 -10
- package/lib/components/time-select/src/time-select.js +15 -2
- package/lib/components/time-select/src/time-select.js.map +1 -1
- package/lib/components/time-select/src/time-select.vue.d.ts +11 -10
- package/lib/components/timeline/src/timeline-item.vue.d.ts +2 -2
- package/lib/components/tooltip/src/content.d.ts +4 -199
- package/lib/components/tooltip/src/content.vue.d.ts +18 -16
- package/lib/components/tooltip/src/tooltip.d.ts +5 -202
- package/lib/components/tooltip/src/tooltip.vue.d.ts +19 -18
- package/lib/components/tooltip/src/trigger.d.ts +1 -1
- package/lib/components/tour/src/content.d.ts +1 -1
- package/lib/components/tour/src/content.vue.d.ts +1 -1
- package/lib/components/tour/src/step.d.ts +1 -1
- package/lib/components/tour/src/tour.d.ts +1 -1
- package/lib/components/tour/src/tour.vue.d.ts +3 -3
- package/lib/components/transfer/src/transfer.vue.d.ts +1 -1
- package/lib/components/tree/src/tree-node.vue.d.ts +14 -14
- package/lib/components/tree/src/tree.vue.d.ts +16 -16
- package/lib/components/tree-select/src/select.js +1 -5
- package/lib/components/tree-select/src/select.js.map +1 -1
- package/lib/components/tree-select/src/tree-select-option.d.ts +5 -5
- package/lib/components/tree-select/src/tree-select.vue.d.ts +33 -41
- package/lib/components/tree-v2/src/composables/useTree.d.ts +9 -8
- package/lib/components/tree-v2/src/tree.vue.d.ts +2 -2
- package/lib/components/upload/src/upload-content.d.ts +1 -1
- package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
- package/lib/components/upload/src/upload-list.d.ts +1 -1
- package/lib/components/upload/src/upload.d.ts +2 -2
- package/lib/components/upload/src/upload.js.map +1 -1
- package/lib/components/upload/src/upload.vue.d.ts +3 -3
- package/lib/components/virtual-list/src/builders/build-grid.d.ts +4 -3
- package/lib/components/virtual-list/src/builders/build-list.d.ts +5 -4
- package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -3
- package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +5 -4
- package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -3
- package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +5 -4
- package/lib/components/virtual-list/src/components/scrollbar.d.ts +5 -3
- package/lib/components/virtual-list/src/props.d.ts +5 -4
- package/lib/components/virtual-list/src/props.js +15 -2
- package/lib/components/virtual-list/src/props.js.map +1 -1
- package/lib/components/watermark/src/watermark.js.map +1 -1
- package/lib/hooks/use-floating/index.d.ts +8 -8
- package/lib/hooks/use-popper/index.d.ts +4 -4
- package/lib/hooks/use-throttle-render/index.js.map +1 -1
- package/lib/utils/index.d.ts +2 -2
- package/lib/utils/typescript.d.ts +2 -1
- package/lib/utils/typescript.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascader2.mjs","names":[],"sources":["../../../../../../packages/components/cascader/src/cascader.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"popperVisible\"\n :teleported=\"teleported\"\n :popper-class=\"[nsCascader.e('dropdown'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :placement=\"placement\"\n :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n :effect=\"effect\"\n pure\n :persistent=\"persistent\"\n @hide=\"hideSuggestionPanel\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n v-clickoutside:[contentRef]=\"handleClickOutside\"\n :class=\"cascaderKls\"\n :style=\"cascaderStyle\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :placeholder=\"currentPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"inputClass\"\n :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @input=\"handleInput\"\n >\n <template v-if=\"$slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n @click.stop=\"handleClear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"cascaderIconKls\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div\n v-if=\"multiple\"\n ref=\"tagWrapper\"\n :class=\"[\n nsCascader.e('tags'),\n nsCascader.is('validate', Boolean(validateState)),\n ]\"\n >\n <slot name=\"tag\" :data=\"tags\" :delete-tag=\"deleteTag\">\n <el-tag\n v-for=\"tag in showTagList\"\n :key=\"tag.key\"\n :type=\"tagType\"\n :size=\"tagSize\"\n :effect=\"tagEffect\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n </slot>\n <el-tooltip\n v-if=\"collapseTags && tags.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"popperVisible || !collapseTagsTooltip\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n placement=\"bottom\"\n :popper-class=\"popperClass\"\n :popper-style=\"popperStyle\"\n :effect=\"effect\"\n :persistent=\"persistent\"\n >\n <template #default>\n <el-tag\n :closable=\"false\"\n :size=\"tagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n >\n <span :class=\"nsCascader.e('tags-text')\">\n + {{ tags.length - maxCollapseTags }}\n </span>\n </el-tag>\n </template>\n <template #content>\n <el-scrollbar :max-height=\"maxCollapseTagsTooltipHeight\">\n <div :class=\"nsCascader.e('collapse-tags')\">\n <div\n v-for=\"(tag, idx) in collapseTagList\"\n :key=\"idx\"\n :class=\"nsCascader.e('collapse-tag')\"\n >\n <el-tag\n :key=\"tag.key\"\n class=\"in-tooltip\"\n :type=\"tagType\"\n :size=\"tagSize\"\n :effect=\"tagEffect\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n </div>\n </div>\n </el-scrollbar>\n </template>\n </el-tooltip>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model=\"searchInputValue\"\n type=\"text\"\n :class=\"nsCascader.e('search-input')\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e as InputEvent)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #content>\n <div v-if=\"$slots.header\" :class=\"nsCascader.e('header')\" @click.stop>\n <slot name=\"header\" />\n </div>\n <el-cascader-panel\n v-show=\"!filtering\"\n ref=\"cascaderPanelRef\"\n v-model=\"checkedValue\"\n :options=\"options\"\n :props=\"props.props\"\n :border=\"false\"\n :render-label=\"$slots.default\"\n :virtual-scroll=\"virtualScroll\"\n :item-size=\"itemSize\"\n :height=\"height\"\n @expand-change=\"handleExpandChange\"\n @close=\"$nextTick(() => togglePopperVisible(false))\"\n >\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </el-cascader-panel>\n <template v-if=\"filterable\">\n <el-scrollbar\n v-if=\"!virtualScroll\"\n v-show=\"filtering\"\n :ref=\"(ref) => (suggestionPanel = (ref as ScrollbarInstance)?.$el)\"\n tag=\"ul\"\n :class=\"nsCascader.e('suggestion-panel')\"\n :wrap-class=\"nsCascader.e('suggestion-wrap')\"\n :view-class=\"nsCascader.e('suggestion-list')\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <template v-if=\"suggestions.length\">\n <li\n v-for=\"item in suggestions\"\n :key=\"item.uid\"\n :class=\"[\n nsCascader.e('suggestion-item'),\n nsCascader.is('checked', item.checked),\n ]\"\n :tabindex=\"-1\"\n @click=\"handleSuggestionClick(item)\"\n >\n <slot name=\"suggestion-item\" :item=\"item\">\n <span>{{ item.text }}</span>\n <el-icon v-if=\"item.checked\">\n <check />\n </el-icon>\n </slot>\n </li>\n </template>\n <slot v-else name=\"empty\">\n <li :class=\"nsCascader.e('empty-text')\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </slot>\n </el-scrollbar>\n <div\n v-else\n v-show=\"filtering\"\n ref=\"suggestionPanel\"\n :class=\"nsCascader.e('suggestion-panel')\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <el-fixed-size-list\n v-show=\"suggestions.length\"\n ref=\"suggestionVirtualListRef\"\n :height=\"clampedSuggestionListHeight\"\n :item-size=\"itemSize\"\n :data=\"suggestions\"\n :total=\"suggestions.length\"\n :class-name=\"nsCascader.e('suggestion-list')\"\n inner-element=\"ul\"\n :inner-width=\"suggestionListWidth\"\n >\n <template #default=\"{ data, index, style }\">\n <li\n :id=\"`suggestion-${data[index].uid}`\"\n :key=\"data[index].uid\"\n :data-suggestion-index=\"index\"\n :class=\"[\n nsCascader.e('suggestion-item'),\n nsCascader.is('checked', data[index].checked),\n ]\"\n :tabindex=\"-1\"\n :style=\"style\"\n @click=\"handleSuggestionClick(data[index])\"\n >\n <slot name=\"suggestion-item\" :item=\"data[index]\">\n <span>{{ data[index].text }}</span>\n <el-icon v-if=\"data[index].checked\">\n <check />\n </el-icon>\n </slot>\n </li>\n </template>\n </el-fixed-size-list>\n <slot v-if=\"!suggestions.length\" name=\"empty\">\n <ul :class=\"nsCascader.e('suggestion-list')\">\n <li :class=\"nsCascader.e('empty-text')\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </ul>\n </slot>\n </div>\n </template>\n <div v-if=\"$slots.footer\" :class=\"nsCascader.e('footer')\" @click.stop>\n <slot name=\"footer\" />\n </div>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n markRaw,\n nextTick,\n onMounted,\n ref,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { clamp, cloneDeep } from 'lodash-unified'\nimport { useCssVar, useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n NOOP,\n focusNode,\n getEventCode,\n getSibling,\n isClient,\n isNumber,\n isPromise,\n} from '@element-plus/utils'\nimport ElCascaderPanel, {\n CASCADER_PANEL_HEIGHT,\n CASCADER_PANEL_ITEM_SIZE,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { FixedSizeList as ElFixedSizeList } from '@element-plus/components/virtual-list'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport {\n useFormDisabled,\n useFormItem,\n useFormSize,\n} from '@element-plus/components/form'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { ArrowDown, Check, CircleClose } from '@element-plus/icons-vue'\nimport { cascaderEmits } from './cascader'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { ScrollbarInstance } from '@element-plus/components/scrollbar'\nimport type { FixedSizeListInstance } from '@element-plus/components/virtual-list'\nimport type {\n CascaderNode,\n CascaderPanelInstance,\n CascaderValue,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { CascaderComponentProps } from './cascader'\n\nconst SUGGESTION_ITEM_EXTRA_WIDTH = 34 // span margin-right (10px) + check icon width (24px)\n\nconst popperOptions: Partial<Options> = {\n modifiers: [\n {\n name: 'arrowPosition',\n enabled: true,\n phase: 'main',\n fn: ({ state }) => {\n const { modifiersData, placement } = state\n if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n if (modifiersData.arrow) {\n modifiersData.arrow.x = 35\n }\n },\n requires: ['arrow'],\n },\n ],\n}\n\ndefineOptions({\n name: 'ElCascader',\n})\n\nconst props = withDefaults(defineProps<CascaderComponentProps>(), {\n options: () => [],\n props: () => ({}),\n disabled: undefined,\n clearIcon: markRaw(CircleClose),\n filterMethod: (node, keyword) => node.text.includes(keyword),\n separator: ' / ',\n showAllLevels: true,\n maxCollapseTags: 1,\n debounce: 300,\n beforeFilter: () => true,\n placement: 'bottom-start',\n fallbackPlacements: () => [\n 'bottom-start',\n 'bottom',\n 'top-start',\n 'top',\n 'right',\n 'left',\n ],\n teleported: true,\n effect: 'light',\n tagType: 'info',\n tagEffect: 'light',\n validateEvent: true,\n persistent: true,\n showCheckedStrategy: 'child',\n showPrefix: true,\n popperStyle: undefined,\n valueOnClear: undefined,\n itemSize: CASCADER_PANEL_ITEM_SIZE,\n height: CASCADER_PANEL_HEIGHT,\n})\nconst emit = defineEmits(cascaderEmits)\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('cascader')\nconst nsInput = useNamespace('input')\nconst sizeMapPadding = {\n small: 7,\n default: 11,\n large: 15,\n}\n\nconst { t } = useLocale()\nconst { formItem } = useFormItem()\nconst isDisabled = useFormDisabled()\nconst { valueOnClear } = useEmptyValues(props)\nconst { isComposing, handleComposition } = useComposition({\n afterComposition(event) {\n const text = (event.target as HTMLInputElement)?.value\n handleInput(text)\n },\n})\n\nconst tooltipRef = ref<TooltipInstance>()\nconst tagTooltipRef = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst tagWrapper = ref<HTMLDivElement>()\nconst cascaderPanelRef = ref<CascaderPanelInstance>()\nconst suggestionPanel = ref<HTMLElement>()\nconst suggestionVirtualListRef = ref<FixedSizeListInstance>()\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst tags = ref<Tag[]>([])\nconst suggestions = ref<CascaderNode[]>([])\nconst suggestionListWidth = ref<string | number>('100%')\nconst hasCustomSuggestionItemSlot = computed(() => !!slots['suggestion-item'])\nconst clampedSuggestionListHeight = computed(() =>\n clamp(suggestions.value.length * props.itemSize, props.itemSize, props.height)\n)\n\nconst showTagList = computed(() => {\n if (!props.props.multiple) {\n return []\n }\n return props.collapseTags\n ? tags.value.slice(0, props.maxCollapseTags)\n : tags.value\n})\n\nconst collapseTagList = computed(() => {\n if (!props.props.multiple) {\n return []\n }\n return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []\n})\n\nconst cascaderStyle = computed(() => {\n return attrs.style as StyleValue\n})\n\nconst inputPlaceholder = computed(\n () => props.placeholder ?? t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n searchInputValue.value || tags.value.length > 0 || isComposing.value\n ? ''\n : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n realSize.value === 'small' ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<CascaderNode[]> = computed(\n () => cascaderPanelRef.value?.checkedNodes || []\n)\n\nconst { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: isDisabled,\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch(NOOP)\n }\n },\n})\n\nconst clearBtnVisible = computed(() => {\n if (\n !props.clearable ||\n isDisabled.value ||\n filtering.value ||\n (!inputHover.value && !isFocused.value)\n )\n return false\n\n return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n const { showAllLevels, separator } = props\n const nodes = checkedNodes.value\n return nodes.length\n ? multiple.value\n ? ''\n : nodes[0].calcText(showAllLevels, separator)\n : ''\n})\n\nconst validateState = computed(() => formItem?.validateState || '')\n\nconst checkedValue = computed<CascaderValue>({\n get() {\n return cloneDeep(props.modelValue) as CascaderValue\n },\n set(val) {\n // https://github.com/element-plus/element-plus/issues/17647\n const value = val ?? valueOnClear.value\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n if (props.validateEvent) {\n formItem?.validate('change').catch(NOOP)\n }\n },\n})\n\nconst cascaderKls = computed(() => {\n return [\n nsCascader.b(),\n nsCascader.m(realSize.value),\n nsCascader.is('disabled', isDisabled.value),\n attrs.class,\n ]\n})\n\nconst cascaderIconKls = computed(() => {\n return [\n nsInput.e('icon'),\n 'icon-arrow-down',\n nsCascader.is('reverse', popperVisible.value),\n ]\n})\n\nconst inputClass = computed(() => nsCascader.is('focus', isFocused.value))\n\nconst contentRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst handleClickOutside = (event: Event) => {\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n togglePopperVisible(false)\n}\n\nconst togglePopperVisible = (visible?: boolean) => {\n if (isDisabled.value) return\n\n visible = visible ?? !popperVisible.value\n\n if (visible !== popperVisible.value) {\n popperVisible.value = visible\n inputRef.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n if (visible) {\n updatePopperPosition()\n cascaderPanelRef.value &&\n nextTick(cascaderPanelRef.value.scrollToExpandingNode)\n } else if (props.filterable) {\n syncPresentTextValue()\n }\n\n emit('visibleChange', visible)\n }\n}\n\nconst updatePopperPosition = () => {\n nextTick(() => {\n tooltipRef.value?.updatePopper()\n })\n}\nconst hideSuggestionPanel = () => {\n filtering.value = false\n}\n\nconst genTag = (node: CascaderNode): Tag => {\n const { showAllLevels, separator } = props\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n }\n}\n\nconst deleteTag = (tag: Tag) => {\n const node = tag.node as CascaderNode\n node.doCheck(false)\n cascaderPanelRef.value?.calculateCheckedValue()\n emit('removeTag', node.valueByOption)\n}\n\nconst getStrategyCheckedNodes = (): CascaderNode[] => {\n switch (props.showCheckedStrategy) {\n case 'child':\n return checkedNodes.value\n case 'parent': {\n const clickedNodes = getCheckedNodes(false)\n const clickedNodesValue = clickedNodes!.map((o) => o.value)\n const parentNodes = clickedNodes!.filter(\n (o) => !o.parent || !clickedNodesValue.includes(o.parent.value)\n )\n return parentNodes\n }\n default:\n return []\n }\n}\n\nconst calculatePresentTags = () => {\n if (!multiple.value) return\n\n const nodes = getStrategyCheckedNodes()\n\n const allTags: Tag[] = []\n nodes.forEach((node) => allTags.push(genTag(node)))\n tags.value = allTags\n}\n\nconst calculateSuggestions = () => {\n const { filterMethod, showAllLevels, separator } = props\n const res = cascaderPanelRef.value\n ?.getFlattedNodes(!props.props.checkStrictly)\n ?.filter((node) => {\n if (node.isDisabled) return false\n node.calcText(showAllLevels, separator)\n return filterMethod(node, searchKeyword.value)\n })\n\n if (multiple.value) {\n tags.value.forEach((tag) => {\n tag.hitState = false\n })\n }\n\n filtering.value = true\n suggestions.value = res!\n nextTick(() => {\n if (props.virtualScroll && suggestions.value.length > 0) {\n suggestionVirtualListRef.value?.scrollToItem(0)\n }\n updateStyle()\n })\n updatePopperPosition()\n}\n\nconst getSuggestionPanelEl = (selector?: string): HTMLElement | undefined => {\n const el = suggestionPanel.value\n return selector ? (el?.querySelector(selector) ?? undefined) : el\n}\n\nconst focusFirstNode = () => {\n let firstNode: HTMLElement | undefined\n\n if (filtering.value && suggestionPanel.value) {\n firstNode = getSuggestionPanelEl(`.${nsCascader.e('suggestion-item')}`)\n } else {\n firstNode = cascaderPanelRef.value?.$el.querySelector(\n `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n )\n }\n\n if (firstNode) {\n firstNode.focus()\n if (\n !filtering.value &&\n firstNode.getAttribute('aria-haspopup') === 'true'\n ) {\n firstNode.click()\n }\n }\n}\n\nconst updateSuggestionPanelWidth = (inputWidth: number) => {\n const suggestionPanelEl = getSuggestionPanelEl()\n if (!suggestionPanelEl) return\n\n const panelWidth = isNumber(props.fitInputWidth)\n ? `${props.fitInputWidth}px`\n : `${inputWidth}px`\n\n const setPanelStyle = (el: HTMLElement) => {\n if (props.fitInputWidth !== false) {\n el.style.width = panelWidth\n el.style.minWidth = ''\n } else {\n el.style.width = ''\n el.style.minWidth = panelWidth\n }\n }\n\n setPanelStyle(suggestionPanelEl)\n\n if (props.virtualScroll) {\n suggestionListWidth.value =\n props.fitInputWidth !== false\n ? panelWidth\n : hasCustomSuggestionItemSlot.value\n ? `${inputWidth}px`\n : `${Math.max(inputWidth, calculateSuggestionMaxWidth())}px`\n return\n }\n\n const suggestionList = getSuggestionPanelEl(\n `.${nsCascader.e('suggestion-list')}`\n )\n if (suggestionList) {\n setPanelStyle(suggestionList)\n }\n}\n\nconst getTagWrapperLeft = () => {\n if (!slots.prefix) return 0\n\n const prefix = inputRef.value?.$el.querySelector(\n `.${nsInput.e('prefix')}`\n ) as HTMLElement | null\n if (!prefix) return 0\n\n const prefixWidth = prefix.getBoundingClientRect().width\n if (prefixWidth <= 0) return 0\n return prefixWidth + sizeMapPadding[realSize.value || 'default']\n}\n\nconst updateStyle = () => {\n const inputInner = inputRef.value?.input\n const inputWrapper = inputRef.value?.$el\n if (!isClient || !inputInner || !inputWrapper) return\n\n if (suggestionPanel.value) {\n updateSuggestionPanelWidth(inputWrapper.getBoundingClientRect().width)\n }\n\n const tagWrapperEl = tagWrapper.value\n if (tagWrapperEl) {\n const height =\n tags.value.length > 0\n ? `${Math.max(tagWrapperEl.offsetHeight, inputInitialHeight) - 2}px`\n : `${inputInitialHeight}px`\n inputInner.style.height = height\n tagWrapperEl.style.left = `${getTagWrapperLeft()}px`\n updatePopperPosition()\n }\n}\n\nconst calculateSuggestionMaxWidth = () => {\n if (hasCustomSuggestionItemSlot.value) return 0\n if (!suggestions.value.length) return 0\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n if (!ctx) return 0\n\n const renderedSuggestion = getSuggestionPanelEl(\n `.${nsCascader.e('suggestion-item')}`\n )\n if (!renderedSuggestion || !isClient) return 0\n\n const style = getComputedStyle(renderedSuggestion)\n const padding =\n Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight)\n // Use bold font for all items to ensure width is sufficient\n ctx.font = `bold ${style.fontSize} ${style.fontFamily}`\n\n let maxWidth = 0\n let hasChecked = false\n\n for (const suggestion of suggestions.value) {\n const text = suggestion.text || ''\n const metrics = ctx.measureText(text)\n maxWidth = Math.max(maxWidth, metrics.width)\n if (suggestion.checked && !hasChecked) hasChecked = true\n }\n\n return maxWidth + padding + (hasChecked ? SUGGESTION_ITEM_EXTRA_WIDTH : 0)\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: CascaderValue) => {\n updatePopperPosition()\n emit('expandChange', value)\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (isComposing.value) return\n const code = getEventCode(e)\n\n switch (code) {\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n togglePopperVisible()\n break\n case EVENT_CODE.down:\n togglePopperVisible(true)\n nextTick(focusFirstNode)\n e.preventDefault()\n break\n case EVENT_CODE.esc:\n if (popperVisible.value === true) {\n e.preventDefault()\n e.stopPropagation()\n togglePopperVisible(false)\n }\n break\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n}\n\nconst handleClear = () => {\n cascaderPanelRef.value?.clearCheckedNodes()\n if (!popperVisible.value && props.filterable) {\n syncPresentTextValue()\n }\n togglePopperVisible(false)\n emit('clear')\n}\n\nconst syncPresentTextValue = () => {\n const { value } = presentText\n inputValue.value = value\n searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: CascaderNode) => {\n const { checked } = node\n\n if (multiple.value) {\n cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n } else {\n !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n togglePopperVisible(false)\n }\n}\n\nconst getSuggestionIndexFromTarget = (target: HTMLElement) => {\n const suggestionItem = target.closest<HTMLElement>('[data-suggestion-index]')\n const indexStr = suggestionItem?.dataset.suggestionIndex\n\n if (!indexStr) return -1\n\n const index = Number.parseInt(indexStr, 10)\n if (Number.isNaN(index) || index < 0 || index >= suggestions.value.length) {\n return -1\n }\n\n return index\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const code = getEventCode(e)\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault()\n const distance = code === EVENT_CODE.up ? -1 : 1\n\n if (props.virtualScroll && suggestionVirtualListRef.value) {\n const currentIndex = getSuggestionIndexFromTarget(target)\n if (currentIndex >= 0) {\n const length = suggestions.value.length\n const targetIndex = (currentIndex + distance + length) % length\n\n suggestionVirtualListRef.value.scrollToItem(targetIndex)\n\n nextTick(() => {\n const targetItem = getSuggestionPanelEl(\n `#suggestion-${suggestions.value[targetIndex].uid}`\n )\n targetItem && focusNode(targetItem)\n })\n return\n }\n }\n\n // use DOM-based navigation\n focusNode(\n getSibling(\n target,\n distance,\n `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n ) as HTMLElement\n )\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n target.click()\n break\n }\n}\n\nconst handleDelete = () => {\n const lastTag = tags.value[tags.value.length - 1]\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n if (\n !lastTag ||\n !pressDeleteCount ||\n (props.collapseTags && tags.value.length > 1)\n )\n return\n\n if (lastTag.hitState) {\n deleteTag(lastTag)\n } else {\n lastTag.hitState = true\n }\n}\n\nconst debounce = computed(() => props.debounce)\nconst handleFilter = useDebounceFn(() => {\n const { value } = searchKeyword\n\n if (!value) return\n\n const passed = props.beforeFilter(value)\n\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n /* prevent log error */\n })\n } else if (passed !== false) {\n calculateSuggestions()\n } else {\n hideSuggestionPanel()\n }\n}, debounce)\n\nconst handleInput = (val: string, e?: InputEvent) => {\n !popperVisible.value && togglePopperVisible(true)\n\n if (e?.isComposing) return\n\n if (val) {\n handleFilter()\n } else {\n const passed = props.beforeFilter('')\n if (isPromise(passed)) {\n passed.catch(() => {\n /* prevent log error */\n })\n }\n hideSuggestionPanel()\n }\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n Number.parseFloat(\n useCssVar(nsInput.cssVarName('input-height'), inputInner).value!\n ) - 2\n\nconst focus = () => {\n inputRef.value?.focus()\n}\n\nconst blur = () => {\n inputRef.value?.blur()\n}\n\nwatch(filtering, updatePopperPosition)\n\nwatch(\n [\n checkedNodes,\n isDisabled,\n () => props.collapseTags,\n () => props.maxCollapseTags,\n ],\n calculatePresentTags\n)\n\nwatch(tags, () => {\n nextTick(() => updateStyle())\n})\n\nwatch(realSize, async () => {\n await nextTick()\n const inputInner = inputRef.value!.input!\n inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nwatch(\n () => popperVisible.value,\n (val) => {\n if (val && props.props.lazy && props.props.lazyLoad) {\n cascaderPanelRef.value?.loadLazyRootNodes()\n }\n }\n)\n\nonMounted(() => {\n const inputInner = inputRef.value!.input!\n const inputWrapper = inputRef.value!.$el!\n\n const inputInnerHeight = getInputInnerHeight(inputInner)\n\n inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n useResizeObserver(inputWrapper, updateStyle)\n})\n\ndefineExpose({\n /**\n * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n */\n getCheckedNodes,\n /**\n * @description cascader panel ref\n */\n cascaderPanelRef,\n /**\n * @description toggle the visible of popper\n */\n togglePopperVisible,\n /**\n * @description cascader content ref\n */\n contentRef,\n /**\n * @description selected content text\n */\n presentText,\n /** @description focus the input element */\n focus,\n /** @description blur the input element */\n blur,\n})\n</script>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cascader2.mjs","names":[],"sources":["../../../../../../packages/components/cascader/src/cascader.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"popperVisible\"\n :teleported=\"teleported\"\n :popper-class=\"[nsCascader.e('dropdown'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :placement=\"placement\"\n :transition=\"`${nsCascader.namespace.value}-zoom-in-top`\"\n :effect=\"effect\"\n pure\n :persistent=\"persistent\"\n @hide=\"hideSuggestionPanel\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n v-clickoutside:[contentRef]=\"handleClickOutside\"\n :class=\"cascaderKls\"\n :style=\"cascaderStyle\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :placeholder=\"currentPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"inputClass\"\n :tabindex=\"multiple && filterable && !isDisabled ? -1 : undefined\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @input=\"handleInput\"\n >\n <template v-if=\"$slots.prefix\" #prefix>\n <slot name=\"prefix\" />\n </template>\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n :class=\"[nsInput.e('icon'), 'icon-circle-close']\"\n @click.stop=\"handleClear\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"cascaderIconKls\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div\n v-if=\"multiple\"\n ref=\"tagWrapper\"\n :class=\"[\n nsCascader.e('tags'),\n nsCascader.is('validate', Boolean(validateState)),\n ]\"\n >\n <slot name=\"tag\" :data=\"tags\" :delete-tag=\"deleteTag\">\n <el-tag\n v-for=\"tag in showTagList\"\n :key=\"tag.key\"\n :type=\"tagType\"\n :size=\"tagSize\"\n :effect=\"tagEffect\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n </slot>\n <el-tooltip\n v-if=\"collapseTags && tags.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"popperVisible || !collapseTagsTooltip\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n placement=\"bottom\"\n :popper-class=\"popperClass\"\n :popper-style=\"popperStyle\"\n :effect=\"effect\"\n :persistent=\"persistent\"\n >\n <template #default>\n <el-tag\n :closable=\"false\"\n :size=\"tagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n >\n <span :class=\"nsCascader.e('tags-text')\">\n + {{ tags.length - maxCollapseTags }}\n </span>\n </el-tag>\n </template>\n <template #content>\n <el-scrollbar :max-height=\"maxCollapseTagsTooltipHeight\">\n <div :class=\"nsCascader.e('collapse-tags')\">\n <div\n v-for=\"(tag, idx) in collapseTagList\"\n :key=\"idx\"\n :class=\"nsCascader.e('collapse-tag')\"\n >\n <el-tag\n :key=\"tag.key\"\n class=\"in-tooltip\"\n :type=\"tagType\"\n :size=\"tagSize\"\n :effect=\"tagEffect\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n </div>\n </div>\n </el-scrollbar>\n </template>\n </el-tooltip>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model=\"searchInputValue\"\n type=\"text\"\n :class=\"nsCascader.e('search-input')\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e as InputEvent)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #content>\n <div v-if=\"$slots.header\" :class=\"nsCascader.e('header')\" @click.stop>\n <slot name=\"header\" />\n </div>\n <el-cascader-panel\n v-show=\"!filtering\"\n ref=\"cascaderPanelRef\"\n v-model=\"checkedValue\"\n :options=\"options\"\n :props=\"props.props\"\n :border=\"false\"\n :render-label=\"$slots.default\"\n :virtual-scroll=\"virtualScroll\"\n :item-size=\"itemSize\"\n :height=\"height\"\n @expand-change=\"handleExpandChange\"\n @close=\"$nextTick(() => togglePopperVisible(false))\"\n >\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </el-cascader-panel>\n <template v-if=\"filterable\">\n <el-scrollbar\n v-if=\"!virtualScroll\"\n v-show=\"filtering\"\n :ref=\"(ref) => (suggestionPanel = (ref as ScrollbarInstance)?.$el)\"\n tag=\"ul\"\n :class=\"nsCascader.e('suggestion-panel')\"\n :wrap-class=\"nsCascader.e('suggestion-wrap')\"\n :view-class=\"nsCascader.e('suggestion-list')\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <template v-if=\"suggestions.length\">\n <li\n v-for=\"item in suggestions\"\n :key=\"item.uid\"\n :class=\"[\n nsCascader.e('suggestion-item'),\n nsCascader.is('checked', item.checked),\n ]\"\n :tabindex=\"-1\"\n @click=\"handleSuggestionClick(item)\"\n >\n <slot name=\"suggestion-item\" :item=\"item\">\n <span>{{ item.text }}</span>\n <el-icon v-if=\"item.checked\">\n <check />\n </el-icon>\n </slot>\n </li>\n </template>\n <slot v-else name=\"empty\">\n <li :class=\"nsCascader.e('empty-text')\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </slot>\n </el-scrollbar>\n <div\n v-else\n v-show=\"filtering\"\n ref=\"suggestionPanel\"\n :class=\"nsCascader.e('suggestion-panel')\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <el-fixed-size-list\n v-show=\"suggestions.length\"\n ref=\"suggestionVirtualListRef\"\n :height=\"clampedSuggestionListHeight\"\n :item-size=\"itemSize\"\n :data=\"suggestions\"\n :total=\"suggestions.length\"\n :class-name=\"nsCascader.e('suggestion-list')\"\n inner-element=\"ul\"\n :inner-width=\"suggestionListWidth\"\n >\n <template #default=\"{ data, index, style }\">\n <li\n :id=\"`suggestion-${data[index].uid}`\"\n :key=\"data[index].uid\"\n :data-suggestion-index=\"index\"\n :class=\"[\n nsCascader.e('suggestion-item'),\n nsCascader.is('checked', data[index].checked),\n ]\"\n :tabindex=\"-1\"\n :style=\"style\"\n @click=\"handleSuggestionClick(data[index])\"\n >\n <slot name=\"suggestion-item\" :item=\"data[index]\">\n <span>{{ data[index].text }}</span>\n <el-icon v-if=\"data[index].checked\">\n <check />\n </el-icon>\n </slot>\n </li>\n </template>\n </el-fixed-size-list>\n <slot v-if=\"!suggestions.length\" name=\"empty\">\n <ul :class=\"nsCascader.e('suggestion-list')\">\n <li :class=\"nsCascader.e('empty-text')\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </ul>\n </slot>\n </div>\n </template>\n <div v-if=\"$slots.footer\" :class=\"nsCascader.e('footer')\" @click.stop>\n <slot name=\"footer\" />\n </div>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n markRaw,\n nextTick,\n onMounted,\n ref,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { clamp, cloneDeep } from 'lodash-unified'\nimport { useCssVar, useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n NOOP,\n focusNode,\n getEventCode,\n getSibling,\n isClient,\n isNumber,\n isPromise,\n} from '@element-plus/utils'\nimport ElCascaderPanel, {\n CASCADER_PANEL_HEIGHT,\n CASCADER_PANEL_ITEM_SIZE,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { FixedSizeList as ElFixedSizeList } from '@element-plus/components/virtual-list'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport {\n useFormDisabled,\n useFormItem,\n useFormSize,\n} from '@element-plus/components/form'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { ArrowDown, Check, CircleClose } from '@element-plus/icons-vue'\nimport { cascaderEmits } from './cascader'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, StyleValue } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { ScrollbarInstance } from '@element-plus/components/scrollbar'\nimport type { FixedSizeListInstance } from '@element-plus/components/virtual-list'\nimport type {\n CascaderNode,\n CascaderPanelInstance,\n CascaderValue,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { CascaderComponentProps } from './cascader'\n\nconst SUGGESTION_ITEM_EXTRA_WIDTH = 34 // span margin-right (10px) + check icon width (24px)\n\nconst popperOptions: Partial<Options> = {\n modifiers: [\n {\n name: 'arrowPosition',\n enabled: true,\n phase: 'main',\n fn: ({ state }) => {\n const { modifiersData, placement } = state\n if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n if (modifiersData.arrow) {\n modifiersData.arrow.x = 35\n }\n },\n requires: ['arrow'],\n },\n ],\n}\n\ndefineOptions({\n name: 'ElCascader',\n})\n\nconst props = withDefaults(defineProps<CascaderComponentProps>(), {\n options: () => [],\n props: () => ({}),\n disabled: undefined,\n clearIcon: markRaw(CircleClose),\n filterMethod: (node, keyword) => node.text.includes(keyword),\n separator: ' / ',\n showAllLevels: true,\n maxCollapseTags: 1,\n debounce: 300,\n beforeFilter: () => true,\n placement: 'bottom-start',\n fallbackPlacements: () => [\n 'bottom-start',\n 'bottom',\n 'top-start',\n 'top',\n 'right',\n 'left',\n ],\n teleported: true,\n effect: 'light',\n tagType: 'info',\n tagEffect: 'light',\n validateEvent: true,\n persistent: true,\n showCheckedStrategy: 'child',\n showPrefix: true,\n popperClass: undefined,\n popperStyle: undefined,\n valueOnClear: undefined,\n itemSize: CASCADER_PANEL_ITEM_SIZE,\n height: CASCADER_PANEL_HEIGHT,\n})\nconst emit = defineEmits(cascaderEmits)\nconst attrs = useAttrs()\nconst slots = useSlots()\n\nlet inputInitialHeight = 0\nlet pressDeleteCount = 0\n\nconst nsCascader = useNamespace('cascader')\nconst nsInput = useNamespace('input')\nconst sizeMapPadding = {\n small: 7,\n default: 11,\n large: 15,\n}\n\nconst { t } = useLocale()\nconst { formItem } = useFormItem()\nconst isDisabled = useFormDisabled()\nconst { valueOnClear } = useEmptyValues(props)\nconst { isComposing, handleComposition } = useComposition({\n afterComposition(event) {\n const text = (event.target as HTMLInputElement)?.value\n handleInput(text)\n },\n})\n\nconst tooltipRef = ref<TooltipInstance>()\nconst tagTooltipRef = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst tagWrapper = ref<HTMLDivElement>()\nconst cascaderPanelRef = ref<CascaderPanelInstance>()\nconst suggestionPanel = ref<HTMLElement>()\nconst suggestionVirtualListRef = ref<FixedSizeListInstance>()\nconst popperVisible = ref(false)\nconst inputHover = ref(false)\nconst filtering = ref(false)\nconst inputValue = ref('')\nconst searchInputValue = ref('')\nconst tags = ref<Tag[]>([])\nconst suggestions = ref<CascaderNode[]>([])\nconst suggestionListWidth = ref<string | number>('100%')\nconst hasCustomSuggestionItemSlot = computed(() => !!slots['suggestion-item'])\nconst clampedSuggestionListHeight = computed(() =>\n clamp(suggestions.value.length * props.itemSize, props.itemSize, props.height)\n)\n\nconst showTagList = computed(() => {\n if (!props.props.multiple) {\n return []\n }\n return props.collapseTags\n ? tags.value.slice(0, props.maxCollapseTags)\n : tags.value\n})\n\nconst collapseTagList = computed(() => {\n if (!props.props.multiple) {\n return []\n }\n return props.collapseTags ? tags.value.slice(props.maxCollapseTags) : []\n})\n\nconst cascaderStyle = computed(() => {\n return attrs.style as StyleValue\n})\n\nconst inputPlaceholder = computed(\n () => props.placeholder ?? t('el.cascader.placeholder')\n)\nconst currentPlaceholder = computed(() =>\n searchInputValue.value || tags.value.length > 0 || isComposing.value\n ? ''\n : inputPlaceholder.value\n)\nconst realSize = useFormSize()\nconst tagSize = computed(() =>\n realSize.value === 'small' ? 'small' : 'default'\n)\nconst multiple = computed(() => !!props.props.multiple)\nconst readonly = computed(() => !props.filterable || multiple.value)\nconst searchKeyword = computed(() =>\n multiple.value ? searchInputValue.value : inputValue.value\n)\nconst checkedNodes: ComputedRef<CascaderNode[]> = computed(\n () => cascaderPanelRef.value?.checkedNodes || []\n)\n\nconst { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: isDisabled,\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch(NOOP)\n }\n },\n})\n\nconst clearBtnVisible = computed(() => {\n if (\n !props.clearable ||\n isDisabled.value ||\n filtering.value ||\n (!inputHover.value && !isFocused.value)\n )\n return false\n\n return !!checkedNodes.value.length\n})\nconst presentText = computed(() => {\n const { showAllLevels, separator } = props\n const nodes = checkedNodes.value\n return nodes.length\n ? multiple.value\n ? ''\n : nodes[0].calcText(showAllLevels, separator)\n : ''\n})\n\nconst validateState = computed(() => formItem?.validateState || '')\n\nconst checkedValue = computed<CascaderValue>({\n get() {\n return cloneDeep(props.modelValue) as CascaderValue\n },\n set(val) {\n // https://github.com/element-plus/element-plus/issues/17647\n const value = val ?? valueOnClear.value\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n if (props.validateEvent) {\n formItem?.validate('change').catch(NOOP)\n }\n },\n})\n\nconst cascaderKls = computed(() => {\n return [\n nsCascader.b(),\n nsCascader.m(realSize.value),\n nsCascader.is('disabled', isDisabled.value),\n attrs.class,\n ]\n})\n\nconst cascaderIconKls = computed(() => {\n return [\n nsInput.e('icon'),\n 'icon-arrow-down',\n nsCascader.is('reverse', popperVisible.value),\n ]\n})\n\nconst inputClass = computed(() => nsCascader.is('focus', isFocused.value))\n\nconst contentRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n})\n\nconst handleClickOutside = (event: Event) => {\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n togglePopperVisible(false)\n}\n\nconst togglePopperVisible = (visible?: boolean) => {\n if (isDisabled.value) return\n\n visible = visible ?? !popperVisible.value\n\n if (visible !== popperVisible.value) {\n popperVisible.value = visible\n inputRef.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n if (visible) {\n updatePopperPosition()\n cascaderPanelRef.value &&\n nextTick(cascaderPanelRef.value.scrollToExpandingNode)\n } else if (props.filterable) {\n syncPresentTextValue()\n }\n\n emit('visibleChange', visible)\n }\n}\n\nconst updatePopperPosition = () => {\n nextTick(() => {\n tooltipRef.value?.updatePopper()\n })\n}\nconst hideSuggestionPanel = () => {\n filtering.value = false\n}\n\nconst genTag = (node: CascaderNode): Tag => {\n const { showAllLevels, separator } = props\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n }\n}\n\nconst deleteTag = (tag: Tag) => {\n const node = tag.node as CascaderNode\n node.doCheck(false)\n cascaderPanelRef.value?.calculateCheckedValue()\n emit('removeTag', node.valueByOption)\n}\n\nconst getStrategyCheckedNodes = (): CascaderNode[] => {\n switch (props.showCheckedStrategy) {\n case 'child':\n return checkedNodes.value\n case 'parent': {\n const clickedNodes = getCheckedNodes(false)\n const clickedNodesValue = clickedNodes!.map((o) => o.value)\n const parentNodes = clickedNodes!.filter(\n (o) => !o.parent || !clickedNodesValue.includes(o.parent.value)\n )\n return parentNodes\n }\n default:\n return []\n }\n}\n\nconst calculatePresentTags = () => {\n if (!multiple.value) return\n\n const nodes = getStrategyCheckedNodes()\n\n const allTags: Tag[] = []\n nodes.forEach((node) => allTags.push(genTag(node)))\n tags.value = allTags\n}\n\nconst calculateSuggestions = () => {\n const { filterMethod, showAllLevels, separator } = props\n const res = cascaderPanelRef.value\n ?.getFlattedNodes(!props.props.checkStrictly)\n ?.filter((node) => {\n if (node.isDisabled) return false\n node.calcText(showAllLevels, separator)\n return filterMethod(node, searchKeyword.value)\n })\n\n if (multiple.value) {\n tags.value.forEach((tag) => {\n tag.hitState = false\n })\n }\n\n filtering.value = true\n suggestions.value = res!\n nextTick(() => {\n if (props.virtualScroll && suggestions.value.length > 0) {\n suggestionVirtualListRef.value?.scrollToItem(0)\n }\n updateStyle()\n })\n updatePopperPosition()\n}\n\nconst getSuggestionPanelEl = (selector?: string): HTMLElement | undefined => {\n const el = suggestionPanel.value\n return selector ? (el?.querySelector(selector) ?? undefined) : el\n}\n\nconst focusFirstNode = () => {\n let firstNode: HTMLElement | undefined\n\n if (filtering.value && suggestionPanel.value) {\n firstNode = getSuggestionPanelEl(`.${nsCascader.e('suggestion-item')}`)\n } else {\n firstNode = cascaderPanelRef.value?.$el.querySelector(\n `.${nsCascader.b('node')}[tabindex=\"-1\"]`\n )\n }\n\n if (firstNode) {\n firstNode.focus()\n if (\n !filtering.value &&\n firstNode.getAttribute('aria-haspopup') === 'true'\n ) {\n firstNode.click()\n }\n }\n}\n\nconst updateSuggestionPanelWidth = (inputWidth: number) => {\n const suggestionPanelEl = getSuggestionPanelEl()\n if (!suggestionPanelEl) return\n\n const panelWidth = isNumber(props.fitInputWidth)\n ? `${props.fitInputWidth}px`\n : `${inputWidth}px`\n\n const setPanelStyle = (el: HTMLElement) => {\n if (props.fitInputWidth !== false) {\n el.style.width = panelWidth\n el.style.minWidth = ''\n } else {\n el.style.width = ''\n el.style.minWidth = panelWidth\n }\n }\n\n setPanelStyle(suggestionPanelEl)\n\n if (props.virtualScroll) {\n suggestionListWidth.value =\n props.fitInputWidth !== false\n ? panelWidth\n : hasCustomSuggestionItemSlot.value\n ? `${inputWidth}px`\n : `${Math.max(inputWidth, calculateSuggestionMaxWidth())}px`\n return\n }\n\n const suggestionList = getSuggestionPanelEl(\n `.${nsCascader.e('suggestion-list')}`\n )\n if (suggestionList) {\n setPanelStyle(suggestionList)\n }\n}\n\nconst getTagWrapperLeft = () => {\n if (!slots.prefix) return 0\n\n const prefix = inputRef.value?.$el.querySelector(\n `.${nsInput.e('prefix')}`\n ) as HTMLElement | null\n if (!prefix) return 0\n\n const prefixWidth = prefix.getBoundingClientRect().width\n if (prefixWidth <= 0) return 0\n return prefixWidth + sizeMapPadding[realSize.value || 'default']\n}\n\nconst updateStyle = () => {\n const inputInner = inputRef.value?.input\n const inputWrapper = inputRef.value?.$el\n if (!isClient || !inputInner || !inputWrapper) return\n\n if (suggestionPanel.value) {\n updateSuggestionPanelWidth(inputWrapper.getBoundingClientRect().width)\n }\n\n const tagWrapperEl = tagWrapper.value\n if (tagWrapperEl) {\n const height =\n tags.value.length > 0\n ? `${Math.max(tagWrapperEl.offsetHeight, inputInitialHeight) - 2}px`\n : `${inputInitialHeight}px`\n inputInner.style.height = height\n tagWrapperEl.style.left = `${getTagWrapperLeft()}px`\n updatePopperPosition()\n }\n}\n\nconst calculateSuggestionMaxWidth = () => {\n if (hasCustomSuggestionItemSlot.value) return 0\n if (!suggestions.value.length) return 0\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n if (!ctx) return 0\n\n const renderedSuggestion = getSuggestionPanelEl(\n `.${nsCascader.e('suggestion-item')}`\n )\n if (!renderedSuggestion || !isClient) return 0\n\n const style = getComputedStyle(renderedSuggestion)\n const padding =\n Number.parseFloat(style.paddingLeft) + Number.parseFloat(style.paddingRight)\n // Use bold font for all items to ensure width is sufficient\n ctx.font = `bold ${style.fontSize} ${style.fontFamily}`\n\n let maxWidth = 0\n let hasChecked = false\n\n for (const suggestion of suggestions.value) {\n const text = suggestion.text || ''\n const metrics = ctx.measureText(text)\n maxWidth = Math.max(maxWidth, metrics.width)\n if (suggestion.checked && !hasChecked) hasChecked = true\n }\n\n return maxWidth + padding + (hasChecked ? SUGGESTION_ITEM_EXTRA_WIDTH : 0)\n}\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n return cascaderPanelRef.value?.getCheckedNodes(leafOnly)\n}\n\nconst handleExpandChange = (value: CascaderValue) => {\n updatePopperPosition()\n emit('expandChange', value)\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (isComposing.value) return\n const code = getEventCode(e)\n\n switch (code) {\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n togglePopperVisible()\n break\n case EVENT_CODE.down:\n togglePopperVisible(true)\n nextTick(focusFirstNode)\n e.preventDefault()\n break\n case EVENT_CODE.esc:\n if (popperVisible.value === true) {\n e.preventDefault()\n e.stopPropagation()\n togglePopperVisible(false)\n }\n break\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n}\n\nconst handleClear = () => {\n cascaderPanelRef.value?.clearCheckedNodes()\n if (!popperVisible.value && props.filterable) {\n syncPresentTextValue()\n }\n togglePopperVisible(false)\n emit('clear')\n}\n\nconst syncPresentTextValue = () => {\n const { value } = presentText\n inputValue.value = value\n searchInputValue.value = value\n}\n\nconst handleSuggestionClick = (node: CascaderNode) => {\n const { checked } = node\n\n if (multiple.value) {\n cascaderPanelRef.value?.handleCheckChange(node, !checked, false)\n } else {\n !checked && cascaderPanelRef.value?.handleCheckChange(node, true, false)\n togglePopperVisible(false)\n }\n}\n\nconst getSuggestionIndexFromTarget = (target: HTMLElement) => {\n const suggestionItem = target.closest<HTMLElement>('[data-suggestion-index]')\n const indexStr = suggestionItem?.dataset.suggestionIndex\n\n if (!indexStr) return -1\n\n const index = Number.parseInt(indexStr, 10)\n if (Number.isNaN(index) || index < 0 || index >= suggestions.value.length) {\n return -1\n }\n\n return index\n}\n\nconst handleSuggestionKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const code = getEventCode(e)\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault()\n const distance = code === EVENT_CODE.up ? -1 : 1\n\n if (props.virtualScroll && suggestionVirtualListRef.value) {\n const currentIndex = getSuggestionIndexFromTarget(target)\n if (currentIndex >= 0) {\n const length = suggestions.value.length\n const targetIndex = (currentIndex + distance + length) % length\n\n suggestionVirtualListRef.value.scrollToItem(targetIndex)\n\n nextTick(() => {\n const targetItem = getSuggestionPanelEl(\n `#suggestion-${suggestions.value[targetIndex].uid}`\n )\n targetItem && focusNode(targetItem)\n })\n return\n }\n }\n\n // use DOM-based navigation\n focusNode(\n getSibling(\n target,\n distance,\n `.${nsCascader.e('suggestion-item')}[tabindex=\"-1\"]`\n ) as HTMLElement\n )\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n target.click()\n break\n }\n}\n\nconst handleDelete = () => {\n const lastTag = tags.value[tags.value.length - 1]\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n if (\n !lastTag ||\n !pressDeleteCount ||\n (props.collapseTags && tags.value.length > 1)\n )\n return\n\n if (lastTag.hitState) {\n deleteTag(lastTag)\n } else {\n lastTag.hitState = true\n }\n}\n\nconst debounce = computed(() => props.debounce)\nconst handleFilter = useDebounceFn(() => {\n const { value } = searchKeyword\n\n if (!value) return\n\n const passed = props.beforeFilter(value)\n\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n /* prevent log error */\n })\n } else if (passed !== false) {\n calculateSuggestions()\n } else {\n hideSuggestionPanel()\n }\n}, debounce)\n\nconst handleInput = (val: string, e?: InputEvent) => {\n !popperVisible.value && togglePopperVisible(true)\n\n if (e?.isComposing) return\n\n if (val) {\n handleFilter()\n } else {\n const passed = props.beforeFilter('')\n if (isPromise(passed)) {\n passed.catch(() => {\n /* prevent log error */\n })\n }\n hideSuggestionPanel()\n }\n}\n\nconst getInputInnerHeight = (inputInner: HTMLElement): number =>\n Number.parseFloat(\n useCssVar(nsInput.cssVarName('input-height'), inputInner).value!\n ) - 2\n\nconst focus = () => {\n inputRef.value?.focus()\n}\n\nconst blur = () => {\n inputRef.value?.blur()\n}\n\nwatch(filtering, updatePopperPosition)\n\nwatch(\n [\n checkedNodes,\n isDisabled,\n () => props.collapseTags,\n () => props.maxCollapseTags,\n ],\n calculatePresentTags\n)\n\nwatch(tags, () => {\n nextTick(() => updateStyle())\n})\n\nwatch(realSize, async () => {\n await nextTick()\n const inputInner = inputRef.value!.input!\n inputInitialHeight = getInputInnerHeight(inputInner) || inputInitialHeight\n updateStyle()\n})\n\nwatch(presentText, syncPresentTextValue, { immediate: true })\n\nwatch(\n () => popperVisible.value,\n (val) => {\n if (val && props.props.lazy && props.props.lazyLoad) {\n cascaderPanelRef.value?.loadLazyRootNodes()\n }\n }\n)\n\nonMounted(() => {\n const inputInner = inputRef.value!.input!\n const inputWrapper = inputRef.value!.$el!\n\n const inputInnerHeight = getInputInnerHeight(inputInner)\n\n inputInitialHeight = inputInner.offsetHeight || inputInnerHeight\n useResizeObserver(inputWrapper, updateStyle)\n})\n\ndefineExpose({\n /**\n * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n */\n getCheckedNodes,\n /**\n * @description cascader panel ref\n */\n cascaderPanelRef,\n /**\n * @description toggle the visible of popper\n */\n togglePopperVisible,\n /**\n * @description cascader content ref\n */\n contentRef,\n /**\n * @description selected content text\n */\n presentText,\n /** @description focus the input element */\n focus,\n /** @description blur the input element */\n blur,\n})\n</script>\n"],"mappings":""}
|
|
@@ -268,21 +268,21 @@ declare const __VLS_base: _$vue.DefineComponent<CascaderPanelProps, {
|
|
|
268
268
|
scrollToExpandingNode: () => void;
|
|
269
269
|
loadLazyRootNodes: () => void;
|
|
270
270
|
}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
|
|
271
|
-
close: () => void;
|
|
272
271
|
"update:modelValue": (value: CascaderValue | null | undefined) => void;
|
|
273
272
|
change: (value: CascaderValue | null | undefined) => void;
|
|
273
|
+
close: () => void;
|
|
274
274
|
"expand-change": (value: CascaderNodePathValue) => void;
|
|
275
275
|
}, string, _$vue.PublicProps, Readonly<CascaderPanelProps> & Readonly<{
|
|
276
|
+
"onUpdate:modelValue"?: ((value: CascaderValue | null | undefined) => any) | undefined;
|
|
276
277
|
onChange?: ((value: CascaderValue | null | undefined) => any) | undefined;
|
|
277
278
|
onClose?: (() => any) | undefined;
|
|
278
|
-
"onUpdate:modelValue"?: ((value: CascaderValue | null | undefined) => any) | undefined;
|
|
279
279
|
"onExpand-change"?: ((value: CascaderNodePathValue) => any) | undefined;
|
|
280
280
|
}>, {
|
|
281
281
|
props: CascaderProps;
|
|
282
282
|
height: number;
|
|
283
|
+
border: boolean;
|
|
283
284
|
options: CascaderOption[];
|
|
284
285
|
itemSize: number;
|
|
285
|
-
border: boolean;
|
|
286
286
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
287
287
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
288
288
|
declare const _default: typeof __VLS_export;
|
|
@@ -7,19 +7,19 @@ type __VLS_Slots = {} & {
|
|
|
7
7
|
default?: (props: typeof __VLS_1) => any;
|
|
8
8
|
};
|
|
9
9
|
declare const __VLS_base: _$vue.DefineComponent<CheckboxProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
|
|
10
|
-
change: (val: CheckboxValueType) => void;
|
|
11
10
|
"update:modelValue": (val: CheckboxValueType) => void;
|
|
11
|
+
change: (val: CheckboxValueType) => void;
|
|
12
12
|
}, string, _$vue.PublicProps, Readonly<CheckboxProps> & Readonly<{
|
|
13
|
-
onChange?: ((val: CheckboxValueType) => any) | undefined;
|
|
14
13
|
"onUpdate:modelValue"?: ((val: CheckboxValueType) => any) | undefined;
|
|
14
|
+
onChange?: ((val: CheckboxValueType) => any) | undefined;
|
|
15
15
|
}>, {
|
|
16
16
|
id: string;
|
|
17
17
|
disabled: boolean;
|
|
18
|
+
modelValue: number | string | boolean;
|
|
19
|
+
validateEvent: boolean;
|
|
18
20
|
name: string;
|
|
19
|
-
label: string | boolean | number | object;
|
|
20
21
|
value: string | boolean | number | object;
|
|
21
|
-
|
|
22
|
-
modelValue: number | string | boolean;
|
|
22
|
+
label: string | boolean | number | object;
|
|
23
23
|
trueValue: string | number;
|
|
24
24
|
falseValue: string | number;
|
|
25
25
|
trueLabel: string | number;
|
|
@@ -8,21 +8,21 @@ type __VLS_Slots = {} & {
|
|
|
8
8
|
default?: (props: typeof __VLS_8) => any;
|
|
9
9
|
};
|
|
10
10
|
declare const __VLS_base: _$vue.DefineComponent<CheckboxGroupProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
|
|
11
|
-
change: (val: CheckboxValueType[]) => void;
|
|
12
11
|
"update:modelValue": (val: CheckboxGroupValueType) => void;
|
|
12
|
+
change: (val: CheckboxValueType[]) => void;
|
|
13
13
|
}, string, _$vue.PublicProps, Readonly<CheckboxGroupProps> & Readonly<{
|
|
14
|
-
onChange?: ((val: CheckboxValueType[]) => any) | undefined;
|
|
15
14
|
"onUpdate:modelValue"?: ((val: CheckboxGroupValueType) => any) | undefined;
|
|
15
|
+
onChange?: ((val: CheckboxValueType[]) => any) | undefined;
|
|
16
16
|
}>, {
|
|
17
17
|
type: "checkbox" | "button";
|
|
18
|
-
disabled: boolean;
|
|
19
18
|
props: {
|
|
20
19
|
value?: string;
|
|
21
20
|
label?: string;
|
|
22
21
|
disabled?: string;
|
|
23
22
|
};
|
|
24
|
-
|
|
23
|
+
disabled: boolean;
|
|
25
24
|
modelValue: CheckboxGroupValueType;
|
|
25
|
+
validateEvent: boolean;
|
|
26
26
|
tag: string;
|
|
27
27
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
28
28
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -84,21 +84,21 @@ declare const checkboxProps: {
|
|
|
84
84
|
* @description binding value
|
|
85
85
|
*/
|
|
86
86
|
modelValue: {
|
|
87
|
-
type: (
|
|
87
|
+
type: (BooleanConstructor | StringConstructor | NumberConstructor)[];
|
|
88
88
|
default: undefined;
|
|
89
89
|
};
|
|
90
90
|
/**
|
|
91
91
|
* @description label of the Checkbox when used inside a `checkbox-group`
|
|
92
92
|
*/
|
|
93
93
|
label: {
|
|
94
|
-
type: (
|
|
94
|
+
type: (BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[];
|
|
95
95
|
default: undefined;
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
98
98
|
* @description value of the Checkbox when used inside a `checkbox-group`
|
|
99
99
|
*/
|
|
100
100
|
value: {
|
|
101
|
-
type: (
|
|
101
|
+
type: (BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[];
|
|
102
102
|
default: undefined;
|
|
103
103
|
};
|
|
104
104
|
/**
|
|
@@ -127,14 +127,14 @@ declare const checkboxProps: {
|
|
|
127
127
|
* @description value of the Checkbox if it's checked
|
|
128
128
|
*/
|
|
129
129
|
trueValue: {
|
|
130
|
-
type: (
|
|
130
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
131
131
|
default: undefined;
|
|
132
132
|
};
|
|
133
133
|
/**
|
|
134
134
|
* @description value of the Checkbox if it's not checked
|
|
135
135
|
*/
|
|
136
136
|
falseValue: {
|
|
137
|
-
type: (
|
|
137
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
138
138
|
default: undefined;
|
|
139
139
|
};
|
|
140
140
|
/**
|
|
@@ -142,7 +142,7 @@ declare const checkboxProps: {
|
|
|
142
142
|
* @description value of the Checkbox if it's checked
|
|
143
143
|
*/
|
|
144
144
|
trueLabel: {
|
|
145
|
-
type: (
|
|
145
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
146
146
|
default: undefined;
|
|
147
147
|
};
|
|
148
148
|
/**
|
|
@@ -150,7 +150,7 @@ declare const checkboxProps: {
|
|
|
150
150
|
* @description value of the Checkbox if it's not checked
|
|
151
151
|
*/
|
|
152
152
|
falseLabel: {
|
|
153
|
-
type: (
|
|
153
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
154
154
|
default: undefined;
|
|
155
155
|
};
|
|
156
156
|
/**
|
|
@@ -176,7 +176,7 @@ declare const checkboxProps: {
|
|
|
176
176
|
/**
|
|
177
177
|
* @description input tabindex
|
|
178
178
|
*/
|
|
179
|
-
tabindex: (
|
|
179
|
+
tabindex: (StringConstructor | NumberConstructor)[];
|
|
180
180
|
/**
|
|
181
181
|
* @description whether to trigger form validation
|
|
182
182
|
*/
|
|
@@ -7,19 +7,19 @@ type __VLS_Slots = {} & {
|
|
|
7
7
|
default?: (props: typeof __VLS_10) => any;
|
|
8
8
|
};
|
|
9
9
|
declare const __VLS_base: _$vue.DefineComponent<CheckboxProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
|
|
10
|
-
change: (val: CheckboxValueType) => void;
|
|
11
10
|
"update:modelValue": (val: CheckboxValueType) => void;
|
|
11
|
+
change: (val: CheckboxValueType) => void;
|
|
12
12
|
}, string, _$vue.PublicProps, Readonly<CheckboxProps> & Readonly<{
|
|
13
|
-
onChange?: ((val: CheckboxValueType) => any) | undefined;
|
|
14
13
|
"onUpdate:modelValue"?: ((val: CheckboxValueType) => any) | undefined;
|
|
14
|
+
onChange?: ((val: CheckboxValueType) => any) | undefined;
|
|
15
15
|
}>, {
|
|
16
16
|
id: string;
|
|
17
17
|
disabled: boolean;
|
|
18
|
+
modelValue: number | string | boolean;
|
|
19
|
+
validateEvent: boolean;
|
|
18
20
|
name: string;
|
|
19
|
-
label: string | boolean | number | object;
|
|
20
21
|
value: string | boolean | number | object;
|
|
21
|
-
|
|
22
|
-
modelValue: number | string | boolean;
|
|
22
|
+
label: string | boolean | number | object;
|
|
23
23
|
trueValue: string | number;
|
|
24
24
|
falseValue: string | number;
|
|
25
25
|
trueLabel: string | number;
|
|
@@ -9,8 +9,8 @@ type __VLS_Slots = {} & {
|
|
|
9
9
|
declare const __VLS_base: _$vue.DefineComponent<ColProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<ColProps> & Readonly<{}>, {
|
|
10
10
|
offset: number;
|
|
11
11
|
push: number;
|
|
12
|
-
span: number;
|
|
13
12
|
tag: string;
|
|
13
|
+
span: number;
|
|
14
14
|
pull: number;
|
|
15
15
|
xs: ColSize;
|
|
16
16
|
sm: ColSize;
|
|
@@ -32,7 +32,7 @@ interface CollapseProps {
|
|
|
32
32
|
declare const collapseProps: {
|
|
33
33
|
readonly accordion: BooleanConstructor;
|
|
34
34
|
readonly modelValue: EpPropFinalized<(new (...args: any[]) => string | number | CollapseActiveName[]) | (() => CollapseModelValue) | (((new (...args: any[]) => string | number | CollapseActiveName[]) | (() => CollapseModelValue)) | null)[], unknown, unknown, () => [], boolean>;
|
|
35
|
-
readonly expandIconPosition: EpPropFinalized<(new (...args: any[]) => "
|
|
35
|
+
readonly expandIconPosition: EpPropFinalized<(new (...args: any[]) => "left" | "right") | (() => CollapseIconPositionType) | (((new (...args: any[]) => "left" | "right") | (() => CollapseIconPositionType)) | null)[], unknown, unknown, "right", boolean>;
|
|
36
36
|
readonly beforeCollapse: {
|
|
37
37
|
readonly type: _$vue.PropType<(name: CollapseActiveName) => Awaitable<boolean>>;
|
|
38
38
|
readonly required: false;
|
|
@@ -13,8 +13,8 @@ declare const __VLS_base: _$vue.DefineComponent<CollapseProps, {
|
|
|
13
13
|
"update:modelValue": (value: CollapseModelValue) => void;
|
|
14
14
|
change: (value: CollapseModelValue) => void;
|
|
15
15
|
}, string, _$vue.PublicProps, Readonly<CollapseProps> & Readonly<{
|
|
16
|
-
onChange?: ((value: CollapseModelValue) => any) | undefined;
|
|
17
16
|
"onUpdate:modelValue"?: ((value: CollapseModelValue) => any) | undefined;
|
|
17
|
+
onChange?: ((value: CollapseModelValue) => any) | undefined;
|
|
18
18
|
}>, {
|
|
19
19
|
modelValue: CollapseModelValue;
|
|
20
20
|
expandIconPosition: CollapseIconPositionType;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
|
|
2
2
|
import { ComponentSize } from "../../../constants/size.js";
|
|
3
|
+
import { ClassValue } from "../../../utils/typescript.js";
|
|
3
4
|
import { ElTooltipContentProps } from "../../tooltip/src/content.js";
|
|
4
5
|
import _default from "./color-picker.vue.js";
|
|
5
6
|
import { UseEmptyValuesProps } from "../../../hooks/use-empty-values/index.js";
|
|
@@ -96,108 +97,7 @@ declare const colorPickerProps: {
|
|
|
96
97
|
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
97
98
|
__epPropKey: true;
|
|
98
99
|
};
|
|
99
|
-
readonly popperClass:
|
|
100
|
-
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | {
|
|
101
|
-
[x: string]: boolean;
|
|
102
|
-
} | (string | {
|
|
103
|
-
[x: string]: boolean;
|
|
104
|
-
} | (string | {
|
|
105
|
-
[x: string]: boolean;
|
|
106
|
-
} | (string | {
|
|
107
|
-
[x: string]: boolean;
|
|
108
|
-
} | (string | {
|
|
109
|
-
[x: string]: boolean;
|
|
110
|
-
} | (string | {
|
|
111
|
-
[x: string]: boolean;
|
|
112
|
-
} | (string | {
|
|
113
|
-
[x: string]: boolean;
|
|
114
|
-
} | (string | {
|
|
115
|
-
[x: string]: boolean;
|
|
116
|
-
} | (string | {
|
|
117
|
-
[x: string]: boolean;
|
|
118
|
-
} | (string | {
|
|
119
|
-
[x: string]: boolean;
|
|
120
|
-
} | (string | {
|
|
121
|
-
[x: string]: boolean;
|
|
122
|
-
} | (string | {
|
|
123
|
-
[x: string]: boolean;
|
|
124
|
-
} | /*elided*/any)[])[])[])[])[])[])[])[])[])[])[]) | (() => string | {
|
|
125
|
-
[x: string]: boolean;
|
|
126
|
-
} | (string | {
|
|
127
|
-
[x: string]: boolean;
|
|
128
|
-
} | (string | {
|
|
129
|
-
[x: string]: boolean;
|
|
130
|
-
} | (string | {
|
|
131
|
-
[x: string]: boolean;
|
|
132
|
-
} | (string | {
|
|
133
|
-
[x: string]: boolean;
|
|
134
|
-
} | (string | {
|
|
135
|
-
[x: string]: boolean;
|
|
136
|
-
} | (string | {
|
|
137
|
-
[x: string]: boolean;
|
|
138
|
-
} | (string | {
|
|
139
|
-
[x: string]: boolean;
|
|
140
|
-
} | (string | {
|
|
141
|
-
[x: string]: boolean;
|
|
142
|
-
} | (string | {
|
|
143
|
-
[x: string]: boolean;
|
|
144
|
-
} | (string | {
|
|
145
|
-
[x: string]: boolean;
|
|
146
|
-
} | (string | {
|
|
147
|
-
[x: string]: boolean;
|
|
148
|
-
} | /*elided*/any)[])[])[])[])[])[])[])[])[])[])[]) | (((new (...args: any[]) => string | {
|
|
149
|
-
[x: string]: boolean;
|
|
150
|
-
} | (string | {
|
|
151
|
-
[x: string]: boolean;
|
|
152
|
-
} | (string | {
|
|
153
|
-
[x: string]: boolean;
|
|
154
|
-
} | (string | {
|
|
155
|
-
[x: string]: boolean;
|
|
156
|
-
} | (string | {
|
|
157
|
-
[x: string]: boolean;
|
|
158
|
-
} | (string | {
|
|
159
|
-
[x: string]: boolean;
|
|
160
|
-
} | (string | {
|
|
161
|
-
[x: string]: boolean;
|
|
162
|
-
} | (string | {
|
|
163
|
-
[x: string]: boolean;
|
|
164
|
-
} | (string | {
|
|
165
|
-
[x: string]: boolean;
|
|
166
|
-
} | (string | {
|
|
167
|
-
[x: string]: boolean;
|
|
168
|
-
} | (string | {
|
|
169
|
-
[x: string]: boolean;
|
|
170
|
-
} | (string | {
|
|
171
|
-
[x: string]: boolean;
|
|
172
|
-
} | /*elided*/any)[])[])[])[])[])[])[])[])[])[])[]) | (() => string | {
|
|
173
|
-
[x: string]: boolean;
|
|
174
|
-
} | (string | {
|
|
175
|
-
[x: string]: boolean;
|
|
176
|
-
} | (string | {
|
|
177
|
-
[x: string]: boolean;
|
|
178
|
-
} | (string | {
|
|
179
|
-
[x: string]: boolean;
|
|
180
|
-
} | (string | {
|
|
181
|
-
[x: string]: boolean;
|
|
182
|
-
} | (string | {
|
|
183
|
-
[x: string]: boolean;
|
|
184
|
-
} | (string | {
|
|
185
|
-
[x: string]: boolean;
|
|
186
|
-
} | (string | {
|
|
187
|
-
[x: string]: boolean;
|
|
188
|
-
} | (string | {
|
|
189
|
-
[x: string]: boolean;
|
|
190
|
-
} | (string | {
|
|
191
|
-
[x: string]: boolean;
|
|
192
|
-
} | (string | {
|
|
193
|
-
[x: string]: boolean;
|
|
194
|
-
} | (string | {
|
|
195
|
-
[x: string]: boolean;
|
|
196
|
-
} | /*elided*/any)[])[])[])[])[])[])[])[])[])[])[])) | null)[], unknown, unknown>>;
|
|
197
|
-
readonly required: false;
|
|
198
|
-
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
199
|
-
__epPropKey: true;
|
|
200
|
-
};
|
|
100
|
+
readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
201
101
|
readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | _$vue.StyleValue[]) | (() => _$vue.StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | _$vue.StyleValue[]) | (() => _$vue.StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
202
102
|
readonly tabindex: EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, 0, boolean>;
|
|
203
103
|
readonly teleported: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
@@ -237,6 +137,7 @@ declare const colorPickerPropsDefaults: {
|
|
|
237
137
|
readonly modelValue: undefined;
|
|
238
138
|
readonly disabled: undefined;
|
|
239
139
|
readonly clearable: true;
|
|
140
|
+
readonly popperClass: undefined;
|
|
240
141
|
readonly popperStyle: undefined;
|
|
241
142
|
readonly tabindex: 0;
|
|
242
143
|
readonly teleported: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-picker.mjs","names":[],"sources":["../../../../../../packages/components/color-picker/src/color-picker.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport {\n useAriaProps,\n useEmptyValuesProps,\n useSizeProp,\n} from '@element-plus/hooks'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPicker from './color-picker.vue'\nimport type { AriaProps, UseEmptyValuesProps } from '@element-plus/hooks'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { ElTooltipContentProps } from '@element-plus/components/tooltip'\n\nexport interface ColorPickerProps\n extends UseEmptyValuesProps, Pick<AriaProps, 'ariaLabel'> {\n /**\n * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n */\n persistent?: boolean\n /**\n * @description binding value\n */\n modelValue?: string | null\n /**\n * @description ColorPicker id\n */\n id?: string\n /**\n * @description whether to display the alpha slider\n */\n showAlpha?: boolean\n /**\n * @description color format of v-model\n */\n colorFormat?: ColorFormats\n /**\n * @description whether to disable the ColorPicker\n */\n disabled?: boolean\n /**\n * @description whether to show clear button\n */\n clearable?: boolean\n /**\n * @description size of ColorPicker\n */\n size?: ComponentSize\n /**\n * @description custom class name for ColorPicker's dropdown\n */\n popperClass?: ElTooltipContentProps['popperClass']\n /**\n * @description custom style for ColorPicker's dropdown\n */\n popperStyle?: ElTooltipContentProps['popperStyle']\n /**\n * @description ColorPicker tabindex\n */\n tabindex?: string | number\n /**\n * @description whether color-picker popper is teleported to the body\n */\n teleported?: ElTooltipContentProps['teleported']\n /**\n * @description which color-picker panel appends to\n */\n appendTo?: ElTooltipContentProps['appendTo']\n /**\n * @description predefined color options\n */\n predefine?: string[]\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport const colorPickerProps = buildProps({\n /**\n * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType<string | null>(String),\n default: undefined,\n },\n /**\n * @description ColorPicker id\n */\n id: String,\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: {\n type: definePropType<ColorFormats>(String),\n },\n /**\n * @description whether to disable the ColorPicker\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether to show clear button\n */\n clearable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description size of ColorPicker\n */\n size: useSizeProp,\n /**\n * @description custom class name for ColorPicker's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for ColorPicker's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description ColorPicker tabindex\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description whether color-picker popper is teleported to the body\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description which color-picker panel appends to\n */\n appendTo: useTooltipContentProps.appendTo,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType<string[]>(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n ...useEmptyValuesProps,\n ...useAriaProps(['ariaLabel']),\n} as const)\nexport const colorPickerEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n [CHANGE_EVENT]: (val: string | null) => isString(val) || isNil(val),\n activeChange: (val: string | null) => isString(val) || isNil(val),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n clear: () => true,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport type ColorPickerPropsPublic = ExtractPublicPropTypes<\n typeof colorPickerProps\n>\nexport type ColorPickerEmits = typeof colorPickerEmits\nexport type ColorPickerInstance = InstanceType<typeof ColorPicker> & unknown\n\n/**\n * @description default values for ColorPickerProps, used in components that extend ColorPickerProps\n */\nexport const colorPickerPropsDefaults = {\n persistent: true,\n modelValue: undefined,\n disabled: undefined,\n clearable: true,\n popperStyle: undefined,\n tabindex: 0,\n teleported: true,\n validateEvent: true,\n valueOnClear: undefined,\n} as const\n"],"mappings":";;;;;;;;;;;;AAoFA,MAAa,mBAAmB,WAAW;;;;CAIzC,YAAY;EACV,MAAM;EACN,SAAS;EACV;;;;CAID,YAAY;EACV,MAAM,eAA8B,OAAO;EAC3C,SAAS,KAAA;EACV;;;;CAID,IAAI;;;;CAIJ,WAAW;;;;CAIX,aAAa,EACX,MAAM,eAA6B,OAAO,EAC3C;;;;CAID,UAAU;EACR,MAAM;EACN,SAAS,KAAA;EACV;;;;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;;;;CAID,MAAM;;;;CAIN,aAAa,uBAAuB;;;;CAIpC,aAAa,uBAAuB;;;;CAIpC,UAAU;EACR,MAAM,CAAC,QAAQ,OAAO;EACtB,SAAS;EACV;;;;CAID,YAAY,uBAAuB;;;;CAInC,UAAU,uBAAuB;;;;CAIjC,WAAW,EACT,MAAM,eAAyB,MAAM,EACtC;;;;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CACD,GAAG;CACH,GAAG,aAAa,CAAC,YAAY,CAAC;CAC/B,CAAU;AACX,MAAa,mBAAmB;EAC7B,sBAAsB,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;EACxE,gBAAgB,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;CACnE,eAAe,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;CACjE,QAAQ,QAAoB,eAAe;CAC3C,OAAO,QAAoB,eAAe;CAC1C,aAAa;CACd;;;;AAcD,MAAa,2BAA2B;CACtC,YAAY;CACZ,YAAY,KAAA;CACZ,UAAU,KAAA;CACV,WAAW;CACX,aAAa,KAAA;CACb,UAAU;CACV,YAAY;CACZ,eAAe;CACf,cAAc,KAAA;CACf"}
|
|
1
|
+
{"version":3,"file":"color-picker.mjs","names":[],"sources":["../../../../../../packages/components/color-picker/src/color-picker.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport { buildProps, definePropType, isString } from '@element-plus/utils'\nimport {\n useAriaProps,\n useEmptyValuesProps,\n useSizeProp,\n} from '@element-plus/hooks'\nimport { useTooltipContentProps } from '@element-plus/components/tooltip'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ColorFormats } from '@ctrl/tinycolor'\nimport type ColorPicker from './color-picker.vue'\nimport type { AriaProps, UseEmptyValuesProps } from '@element-plus/hooks'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { ElTooltipContentProps } from '@element-plus/components/tooltip'\n\nexport interface ColorPickerProps\n extends UseEmptyValuesProps, Pick<AriaProps, 'ariaLabel'> {\n /**\n * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n */\n persistent?: boolean\n /**\n * @description binding value\n */\n modelValue?: string | null\n /**\n * @description ColorPicker id\n */\n id?: string\n /**\n * @description whether to display the alpha slider\n */\n showAlpha?: boolean\n /**\n * @description color format of v-model\n */\n colorFormat?: ColorFormats\n /**\n * @description whether to disable the ColorPicker\n */\n disabled?: boolean\n /**\n * @description whether to show clear button\n */\n clearable?: boolean\n /**\n * @description size of ColorPicker\n */\n size?: ComponentSize\n /**\n * @description custom class name for ColorPicker's dropdown\n */\n popperClass?: ElTooltipContentProps['popperClass']\n /**\n * @description custom style for ColorPicker's dropdown\n */\n popperStyle?: ElTooltipContentProps['popperStyle']\n /**\n * @description ColorPicker tabindex\n */\n tabindex?: string | number\n /**\n * @description whether color-picker popper is teleported to the body\n */\n teleported?: ElTooltipContentProps['teleported']\n /**\n * @description which color-picker panel appends to\n */\n appendTo?: ElTooltipContentProps['appendTo']\n /**\n * @description predefined color options\n */\n predefine?: string[]\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport const colorPickerProps = buildProps({\n /**\n * @description when color-picker inactive and persistent is false, the color panel will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType<string | null>(String),\n default: undefined,\n },\n /**\n * @description ColorPicker id\n */\n id: String,\n /**\n * @description whether to display the alpha slider\n */\n showAlpha: Boolean,\n /**\n * @description color format of v-model\n */\n colorFormat: {\n type: definePropType<ColorFormats>(String),\n },\n /**\n * @description whether to disable the ColorPicker\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether to show clear button\n */\n clearable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description size of ColorPicker\n */\n size: useSizeProp,\n /**\n * @description custom class name for ColorPicker's dropdown\n */\n popperClass: useTooltipContentProps.popperClass,\n /**\n * @description custom style for ColorPicker's dropdown\n */\n popperStyle: useTooltipContentProps.popperStyle,\n /**\n * @description ColorPicker tabindex\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description whether color-picker popper is teleported to the body\n */\n teleported: useTooltipContentProps.teleported,\n /**\n * @description which color-picker panel appends to\n */\n appendTo: useTooltipContentProps.appendTo,\n /**\n * @description predefined color options\n */\n predefine: {\n type: definePropType<string[]>(Array),\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n ...useEmptyValuesProps,\n ...useAriaProps(['ariaLabel']),\n} as const)\nexport const colorPickerEmits = {\n [UPDATE_MODEL_EVENT]: (val: string | null) => isString(val) || isNil(val),\n [CHANGE_EVENT]: (val: string | null) => isString(val) || isNil(val),\n activeChange: (val: string | null) => isString(val) || isNil(val),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n clear: () => true,\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `ColorPickerProps` instead.\n */\nexport type ColorPickerPropsPublic = ExtractPublicPropTypes<\n typeof colorPickerProps\n>\nexport type ColorPickerEmits = typeof colorPickerEmits\nexport type ColorPickerInstance = InstanceType<typeof ColorPicker> & unknown\n\n/**\n * @description default values for ColorPickerProps, used in components that extend ColorPickerProps\n */\nexport const colorPickerPropsDefaults = {\n persistent: true,\n modelValue: undefined,\n disabled: undefined,\n clearable: true,\n popperClass: undefined,\n popperStyle: undefined,\n tabindex: 0,\n teleported: true,\n validateEvent: true,\n valueOnClear: undefined,\n} as const\n"],"mappings":";;;;;;;;;;;;AAoFA,MAAa,mBAAmB,WAAW;;;;CAIzC,YAAY;EACV,MAAM;EACN,SAAS;EACV;;;;CAID,YAAY;EACV,MAAM,eAA8B,OAAO;EAC3C,SAAS,KAAA;EACV;;;;CAID,IAAI;;;;CAIJ,WAAW;;;;CAIX,aAAa,EACX,MAAM,eAA6B,OAAO,EAC3C;;;;CAID,UAAU;EACR,MAAM;EACN,SAAS,KAAA;EACV;;;;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;;;;CAID,MAAM;;;;CAIN,aAAa,uBAAuB;;;;CAIpC,aAAa,uBAAuB;;;;CAIpC,UAAU;EACR,MAAM,CAAC,QAAQ,OAAO;EACtB,SAAS;EACV;;;;CAID,YAAY,uBAAuB;;;;CAInC,UAAU,uBAAuB;;;;CAIjC,WAAW,EACT,MAAM,eAAyB,MAAM,EACtC;;;;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CACD,GAAG;CACH,GAAG,aAAa,CAAC,YAAY,CAAC;CAC/B,CAAU;AACX,MAAa,mBAAmB;EAC7B,sBAAsB,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;EACxE,gBAAgB,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;CACnE,eAAe,QAAuB,SAAS,IAAI,IAAI,MAAM,IAAI;CACjE,QAAQ,QAAoB,eAAe;CAC3C,OAAO,QAAoB,eAAe;CAC1C,aAAa;CACd;;;;AAcD,MAAa,2BAA2B;CACtC,YAAY;CACZ,YAAY,KAAA;CACZ,UAAU,KAAA;CACV,WAAW;CACX,aAAa,KAAA;CACb,aAAa,KAAA;CACb,UAAU;CACV,YAAY;CACZ,eAAe;CACf,cAAc,KAAA;CACf"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ClassValue } from "../../../utils/typescript.js";
|
|
1
2
|
import Color from "../../color-picker-panel/src/utils/color.js";
|
|
2
3
|
import { ColorPickerProps } from "./color-picker.js";
|
|
3
4
|
import * as _$vue from "vue";
|
|
@@ -29,29 +30,30 @@ declare const __VLS_export: _$vue.DefineComponent<ColorPickerProps, {
|
|
|
29
30
|
*/
|
|
30
31
|
blur: typeof blur;
|
|
31
32
|
}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
|
|
32
|
-
blur: (evt: FocusEvent) => void;
|
|
33
|
-
focus: (evt: FocusEvent) => void;
|
|
34
|
-
clear: () => void;
|
|
35
33
|
"update:modelValue": (val: string | null) => void;
|
|
36
34
|
change: (val: string | null) => void;
|
|
35
|
+
clear: () => void;
|
|
36
|
+
focus: (evt: FocusEvent) => void;
|
|
37
|
+
blur: (evt: FocusEvent) => void;
|
|
37
38
|
activeChange: (val: string | null) => void;
|
|
38
39
|
}, string, _$vue.PublicProps, Readonly<ColorPickerProps> & Readonly<{
|
|
40
|
+
"onUpdate:modelValue"?: ((val: string | null) => any) | undefined;
|
|
39
41
|
onChange?: ((val: string | null) => any) | undefined;
|
|
40
|
-
onBlur?: ((evt: FocusEvent) => any) | undefined;
|
|
41
|
-
onFocus?: ((evt: FocusEvent) => any) | undefined;
|
|
42
42
|
onClear?: (() => any) | undefined;
|
|
43
|
-
|
|
43
|
+
onFocus?: ((evt: FocusEvent) => any) | undefined;
|
|
44
|
+
onBlur?: ((evt: FocusEvent) => any) | undefined;
|
|
44
45
|
onActiveChange?: ((val: string | null) => any) | undefined;
|
|
45
46
|
}>, {
|
|
46
|
-
|
|
47
|
+
valueOnClear: string | number | boolean | Function | null;
|
|
47
48
|
teleported: boolean;
|
|
48
|
-
persistent: boolean;
|
|
49
49
|
disabled: boolean;
|
|
50
|
-
clearable: boolean;
|
|
51
|
-
validateEvent: boolean;
|
|
52
50
|
modelValue: string | null;
|
|
53
|
-
|
|
51
|
+
clearable: boolean;
|
|
54
52
|
tabindex: string | number;
|
|
53
|
+
validateEvent: boolean;
|
|
54
|
+
popperClass: string | false | Record<string, any> | ClassValue[] | null;
|
|
55
|
+
popperStyle: string | false | _$vue.CSSProperties | _$vue.StyleValue[] | null;
|
|
56
|
+
persistent: boolean;
|
|
55
57
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
56
58
|
declare const _default: typeof __VLS_export;
|
|
57
59
|
//#endregion
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
|
|
2
|
+
import { ClassValue } from "../../../utils/typescript.js";
|
|
2
3
|
import Color from "./utils/color.js";
|
|
3
4
|
import _default from "./color-picker-panel.vue.js";
|
|
4
5
|
import * as _$vue from "vue";
|
|
@@ -6,8 +7,6 @@ import { ComputedRef, ExtractPublicPropTypes, InjectionKey, StyleValue } from "v
|
|
|
6
7
|
import { ColorFormats } from "@ctrl/tinycolor";
|
|
7
8
|
|
|
8
9
|
//#region ../../packages/components/color-picker-panel/src/color-picker-panel.d.ts
|
|
9
|
-
type ClassObjectType = Record<string, boolean>;
|
|
10
|
-
type ClassType = string | ClassObjectType | ClassType[];
|
|
11
10
|
interface ColorPickerPanelProps {
|
|
12
11
|
/**
|
|
13
12
|
* @description binding value
|
|
@@ -40,7 +39,7 @@ interface ColorPickerPanelProps {
|
|
|
40
39
|
/**
|
|
41
40
|
* @description class names will be passed to hue-slider
|
|
42
41
|
*/
|
|
43
|
-
hueSliderClass?:
|
|
42
|
+
hueSliderClass?: ClassValue;
|
|
44
43
|
/**
|
|
45
44
|
* @description styles will be passed to hue-slider
|
|
46
45
|
*/
|
|
@@ -67,12 +66,7 @@ declare const colorPickerPanelProps: {
|
|
|
67
66
|
__epPropKey: true;
|
|
68
67
|
};
|
|
69
68
|
readonly validateEvent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
|
|
70
|
-
readonly hueSliderClass:
|
|
71
|
-
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | ClassObjectType | ClassType[]) | (() => ClassType) | (((new (...args: any[]) => string | ClassObjectType | ClassType[]) | (() => ClassType)) | null)[], unknown, unknown>>;
|
|
72
|
-
readonly required: false;
|
|
73
|
-
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
74
|
-
__epPropKey: true;
|
|
75
|
-
};
|
|
69
|
+
readonly hueSliderClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
76
70
|
readonly hueSliderStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
|
|
77
71
|
};
|
|
78
72
|
declare const colorPickerPanelEmits: {
|