@xihan-ui/vue 1.0.0-alpha.3 → 1.1.0
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/CHANGELOG.md +2316 -0
- package/README.md +1 -1
- package/dist/backgrounds.d.ts.map +1 -1
- package/dist/backgrounds.js +1 -5
- package/dist/backgrounds.js.map +1 -1
- package/dist/behavior.d.ts +38 -0
- package/dist/behavior.d.ts.map +1 -0
- package/dist/behavior.js +74 -0
- package/dist/behavior.js.map +1 -0
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/accordion/context.js +2 -2
- package/dist/components/accordion/context.js.map +1 -1
- package/dist/components/affix/context.js +1 -1
- package/dist/components/affix/context.js.map +1 -1
- package/dist/components/alert/context.js +1 -1
- package/dist/components/alert/context.js.map +1 -1
- package/dist/components/anchor/anchor.d.ts +1 -1
- package/dist/components/anchor/context.js +1 -1
- package/dist/components/anchor/context.js.map +1 -1
- package/dist/components/avatar/context.js +1 -1
- package/dist/components/avatar/context.js.map +1 -1
- package/dist/components/avatar-group/context.js +1 -1
- package/dist/components/avatar-group/context.js.map +1 -1
- package/dist/components/back-top/back-top.d.ts +2 -2
- package/dist/components/back-top/context.js +1 -1
- package/dist/components/back-top/context.js.map +1 -1
- package/dist/components/badge/badge.d.ts +142 -50
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/badge.js +67 -37
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/badge/context.js +15 -0
- package/dist/components/badge/context.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
- package/dist/components/breadcrumb/context.js +1 -1
- package/dist/components/breadcrumb/context.js.map +1 -1
- package/dist/components/button-group/button-group.d.ts +1 -1
- package/dist/components/calendar/calendar.d.ts +1 -1
- package/dist/components/calendar/context.js +2 -2
- package/dist/components/calendar/context.js.map +1 -1
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/card/context.js +1 -1
- package/dist/components/card/context.js.map +1 -1
- package/dist/components/carousel/carousel.d.ts +1 -1
- package/dist/components/carousel/context.js +1 -1
- package/dist/components/carousel/context.js.map +1 -1
- package/dist/components/cascader/cascader.d.ts +5 -5
- package/dist/components/cascader/cascader.d.ts.map +1 -1
- package/dist/components/cascader/cascader.js +14 -4
- package/dist/components/cascader/cascader.js.map +1 -1
- package/dist/components/cascader/context.js +2 -2
- package/dist/components/cascader/context.js.map +1 -1
- package/dist/components/cascader/use-cascader.js +1 -1
- package/dist/components/cascader/use-cascader.js.map +1 -1
- package/dist/components/checkbox-group/context.js +2 -2
- package/dist/components/checkbox-group/context.js.map +1 -1
- package/dist/components/clipboard/context.js +1 -1
- package/dist/components/clipboard/context.js.map +1 -1
- package/dist/components/collapsible/context.js +1 -1
- package/dist/components/collapsible/context.js.map +1 -1
- package/dist/components/color-picker/color-picker.d.ts +10 -1
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.js +7 -1
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-picker/context.js +2 -2
- package/dist/components/color-picker/context.js.map +1 -1
- package/dist/components/color-picker/use-color-picker.js +1 -1
- package/dist/components/color-picker/use-color-picker.js.map +1 -1
- package/dist/components/combobox/combobox.d.ts +4 -4
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.js +12 -5
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/combobox/context.js +3 -3
- package/dist/components/combobox/context.js.map +1 -1
- package/dist/components/combobox/use-combobox.js +1 -1
- package/dist/components/combobox/use-combobox.js.map +1 -1
- package/dist/components/composer/context.js +1 -1
- package/dist/components/composer/context.js.map +1 -1
- package/dist/components/context-menu/context-menu.d.ts +2 -2
- package/dist/components/context-menu/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu/context-menu.js +3 -1
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/context.js +5 -5
- package/dist/components/context-menu/context.js.map +1 -1
- package/dist/components/context-menu/use-context-menu.js +1 -1
- package/dist/components/context-menu/use-context-menu.js.map +1 -1
- package/dist/components/date-field/context.js +1 -1
- package/dist/components/date-field/context.js.map +1 -1
- package/dist/components/date-field/date-field.d.ts +4 -4
- package/dist/components/date-picker/context.js +13 -4
- package/dist/components/date-picker/context.js.map +1 -1
- package/dist/components/date-picker/date-picker.d.ts +79 -43
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.js +68 -26
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-picker/use-date-picker.js +1 -1
- package/dist/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/components/descriptions/context.js +1 -1
- package/dist/components/descriptions/context.js.map +1 -1
- package/dist/components/descriptions/descriptions.d.ts +1 -1
- package/dist/components/dialog/context.js +1 -1
- package/dist/components/dialog/context.js.map +1 -1
- package/dist/components/drawer/context.js +1 -1
- package/dist/components/drawer/context.js.map +1 -1
- package/dist/components/dynamic-input/context.js +2 -2
- package/dist/components/dynamic-input/context.js.map +1 -1
- package/dist/components/editable/context.js +1 -1
- package/dist/components/editable/context.js.map +1 -1
- package/dist/components/empty-state/context.js +1 -1
- package/dist/components/empty-state/context.js.map +1 -1
- package/dist/components/field/context.d.ts +9 -0
- package/dist/components/field/context.d.ts.map +1 -0
- package/dist/components/field/context.js +6 -2
- package/dist/components/field/context.js.map +1 -1
- package/dist/components/field/field.d.ts +26 -2
- package/dist/components/field/field.d.ts.map +1 -1
- package/dist/components/field/field.js +15 -4
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/field/use-field-control.d.ts +41 -0
- package/dist/components/field/use-field-control.d.ts.map +1 -0
- package/dist/components/field/use-field-control.js +77 -0
- package/dist/components/field/use-field-control.js.map +1 -0
- package/dist/components/fieldset/context.js +1 -1
- package/dist/components/fieldset/context.js.map +1 -1
- package/dist/components/file-upload/context.js +2 -2
- package/dist/components/file-upload/context.js.map +1 -1
- package/dist/components/flex/flex.d.ts +9 -0
- package/dist/components/flex/flex.d.ts.map +1 -1
- package/dist/components/flex/flex.js +4 -0
- package/dist/components/flex/flex.js.map +1 -1
- package/dist/components/float-button/context.js +1 -1
- package/dist/components/float-button/context.js.map +1 -1
- package/dist/components/float-button/float-button.d.ts +1 -1
- package/dist/components/floating-panel/context.js +1 -1
- package/dist/components/floating-panel/context.js.map +1 -1
- package/dist/components/floating-panel/floating-panel.d.ts +1 -1
- package/dist/components/form/context.js +2 -2
- package/dist/components/form/context.js.map +1 -1
- package/dist/components/form/form.d.ts +1 -1
- package/dist/components/grid/context.js +1 -1
- package/dist/components/grid/context.js.map +1 -1
- package/dist/components/heatmap/context.js +3 -3
- package/dist/components/heatmap/context.js.map +1 -1
- package/dist/components/heatmap/heatmap.d.ts +1 -1
- package/dist/components/hotkeys/hotkeys.d.ts +3 -1
- package/dist/components/hotkeys/hotkeys.d.ts.map +1 -1
- package/dist/components/hotkeys/hotkeys.js +7 -25
- package/dist/components/hotkeys/hotkeys.js.map +1 -1
- package/dist/components/hotkeys/use-hotkeys.d.ts +31 -0
- package/dist/components/hotkeys/use-hotkeys.d.ts.map +1 -0
- package/dist/components/hotkeys/use-hotkeys.js +60 -0
- package/dist/components/hotkeys/use-hotkeys.js.map +1 -0
- package/dist/components/hover-card/context.js +1 -1
- package/dist/components/hover-card/context.js.map +1 -1
- package/dist/components/hover-card/hover-card.d.ts +1 -1
- package/dist/components/hover-card/hover-card.d.ts.map +1 -1
- package/dist/components/hover-card/hover-card.js +3 -1
- package/dist/components/hover-card/hover-card.js.map +1 -1
- package/dist/components/hover-card/use-hover-card.js +1 -1
- package/dist/components/hover-card/use-hover-card.js.map +1 -1
- package/dist/components/icon/icon.d.ts +1 -1
- package/dist/components/icon-wrapper/icon-wrapper.d.ts +1 -1
- package/dist/components/image/context.js +1 -1
- package/dist/components/image/context.js.map +1 -1
- package/dist/components/image-cropper/context.js +1 -1
- package/dist/components/image-cropper/context.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.d.ts +1 -1
- package/dist/components/image-viewer/context.js +1 -1
- package/dist/components/image-viewer/context.js.map +1 -1
- package/dist/components/image-viewer/image-viewer.d.ts +1 -1
- package/dist/components/infinite-scroll/context.js +1 -1
- package/dist/components/infinite-scroll/context.js.map +1 -1
- package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
- package/dist/components/json-viewer/json-viewer.d.ts +12 -3
- package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
- package/dist/components/json-viewer/json-viewer.js +23 -2
- package/dist/components/json-viewer/json-viewer.js.map +1 -1
- package/dist/components/layout/context.js +1 -1
- package/dist/components/layout/context.js.map +1 -1
- package/dist/components/list/context.js +1 -1
- package/dist/components/list/context.js.map +1 -1
- package/dist/components/list/list.d.ts +1 -1
- package/dist/components/listbox/context.js +3 -3
- package/dist/components/listbox/context.js.map +1 -1
- package/dist/components/listbox/listbox.d.ts +1 -1
- package/dist/components/loading-bar/context.js +1 -1
- package/dist/components/loading-bar/context.js.map +1 -1
- package/dist/components/log/context.js +1 -1
- package/dist/components/log/context.js.map +1 -1
- package/dist/components/marquee/context.js +1 -1
- package/dist/components/marquee/context.js.map +1 -1
- package/dist/components/mention/context.js +2 -2
- package/dist/components/mention/context.js.map +1 -1
- package/dist/components/mention/mention.d.ts +4 -4
- package/dist/components/mention/mention.d.ts.map +1 -1
- package/dist/components/mention/mention.js +10 -4
- package/dist/components/mention/mention.js.map +1 -1
- package/dist/components/mention/use-mention.js +1 -1
- package/dist/components/mention/use-mention.js.map +1 -1
- package/dist/components/menu/context.js +4 -4
- package/dist/components/menu/context.js.map +1 -1
- package/dist/components/menu/menu.d.ts +3 -3
- package/dist/components/menu/menu.d.ts.map +1 -1
- package/dist/components/menu/menu.js +3 -1
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/use-menu.js +1 -1
- package/dist/components/menu/use-menu.js.map +1 -1
- package/dist/components/menubar/context.js +6 -6
- package/dist/components/menubar/context.js.map +1 -1
- package/dist/components/menubar/menubar.d.ts +2 -2
- package/dist/components/menubar/menubar.js.map +1 -1
- package/dist/components/navigation-menu/context.js +1 -1
- package/dist/components/navigation-menu/context.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
- package/dist/components/notification/context.d.ts +23 -0
- package/dist/components/notification/context.d.ts.map +1 -0
- package/dist/components/notification/context.js +28 -0
- package/dist/components/notification/context.js.map +1 -0
- package/dist/components/notification/notification.d.ts +249 -0
- package/dist/components/notification/notification.d.ts.map +1 -0
- package/dist/components/notification/notification.js +179 -0
- package/dist/components/notification/notification.js.map +1 -0
- package/dist/components/notification/use-notification.d.ts +14 -0
- package/dist/components/notification/use-notification.d.ts.map +1 -0
- package/dist/components/notification/use-notification.js +42 -0
- package/dist/components/notification/use-notification.js.map +1 -0
- package/dist/components/number-animation/number-animation.d.ts +2 -2
- package/dist/components/number-field/context.js +1 -1
- package/dist/components/number-field/context.js.map +1 -1
- package/dist/components/number-field/number-field.d.ts +3 -3
- package/dist/components/number-field/number-field.d.ts.map +1 -1
- package/dist/components/number-field/number-field.js +7 -1
- package/dist/components/number-field/number-field.js.map +1 -1
- package/dist/components/page-header/context.js +1 -1
- package/dist/components/page-header/context.js.map +1 -1
- package/dist/components/pagination/context.js +1 -1
- package/dist/components/pagination/context.js.map +1 -1
- package/dist/components/pagination/pagination.d.ts +59 -5
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +85 -5
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/pagination/use-pagination.d.ts +12 -2
- package/dist/components/pagination/use-pagination.d.ts.map +1 -1
- package/dist/components/pagination/use-pagination.js +50 -5
- package/dist/components/pagination/use-pagination.js.map +1 -1
- package/dist/components/password-input/context.js +1 -1
- package/dist/components/password-input/context.js.map +1 -1
- package/dist/components/password-input/password-input.d.ts +3 -3
- package/dist/components/password-input/password-input.d.ts.map +1 -1
- package/dist/components/password-input/password-input.js +7 -1
- package/dist/components/password-input/password-input.js.map +1 -1
- package/dist/components/pin-input/context.js +1 -1
- package/dist/components/pin-input/context.js.map +1 -1
- package/dist/components/pin-input/pin-input.d.ts +2 -2
- package/dist/components/popconfirm/context.js +1 -1
- package/dist/components/popconfirm/context.js.map +1 -1
- package/dist/components/popover/context.js +1 -1
- package/dist/components/popover/context.js.map +1 -1
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/popover/popover.js +3 -1
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/popover/use-popover.js +1 -1
- package/dist/components/popover/use-popover.js.map +1 -1
- package/dist/components/popselect/context.js +2 -2
- package/dist/components/popselect/context.js.map +1 -1
- package/dist/components/popselect/popselect.d.ts +2 -2
- package/dist/components/popselect/popselect.d.ts.map +1 -1
- package/dist/components/popselect/popselect.js +5 -2
- package/dist/components/popselect/popselect.js.map +1 -1
- package/dist/components/popselect/use-popselect.js +1 -1
- package/dist/components/popselect/use-popselect.js.map +1 -1
- package/dist/components/progress/progress.d.ts +1 -1
- package/dist/components/qr-code/context.js +1 -1
- package/dist/components/qr-code/context.js.map +1 -1
- package/dist/components/radio-group/context.js +2 -2
- package/dist/components/radio-group/context.js.map +1 -1
- package/dist/components/radio-group/radio-group.d.ts +1 -1
- package/dist/components/rating/context.js +1 -1
- package/dist/components/rating/context.js.map +1 -1
- package/dist/components/rating/rating.d.ts +2 -2
- package/dist/components/resizable/context.d.ts +7 -0
- package/dist/components/resizable/context.d.ts.map +1 -0
- package/dist/components/resizable/context.js +15 -0
- package/dist/components/resizable/context.js.map +1 -0
- package/dist/components/resizable/resizable.d.ts +174 -0
- package/dist/components/resizable/resizable.d.ts.map +1 -0
- package/dist/components/resizable/resizable.js +108 -0
- package/dist/components/resizable/resizable.js.map +1 -0
- package/dist/components/resizable/use-resizable.d.ts +14 -0
- package/dist/components/resizable/use-resizable.d.ts.map +1 -0
- package/dist/components/resizable/use-resizable.js +25 -0
- package/dist/components/resizable/use-resizable.js.map +1 -0
- package/dist/components/result/context.js +1 -1
- package/dist/components/result/context.js.map +1 -1
- package/dist/components/scroll-area/context.js +2 -2
- package/dist/components/scroll-area/context.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.d.ts +1 -1
- package/dist/components/scrollbar/context.js +1 -1
- package/dist/components/scrollbar/context.js.map +1 -1
- package/dist/components/scrollbar/scrollbar.d.ts +1 -1
- package/dist/components/segmented/context.js +2 -2
- package/dist/components/segmented/context.js.map +1 -1
- package/dist/components/segmented/segmented.d.ts +1 -1
- package/dist/components/select/context.js +3 -3
- package/dist/components/select/context.js.map +1 -1
- package/dist/components/select/select.d.ts +3 -3
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +7 -3
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/side-nav/context.js +2 -2
- package/dist/components/side-nav/context.js.map +1 -1
- package/dist/components/side-nav/side-nav.d.ts +1 -1
- package/dist/components/signature-pad/context.js +1 -1
- package/dist/components/signature-pad/context.js.map +1 -1
- package/dist/components/skeleton/context.js +1 -1
- package/dist/components/skeleton/context.js.map +1 -1
- package/dist/components/slider/context.js +2 -2
- package/dist/components/slider/context.js.map +1 -1
- package/dist/components/slider/slider.d.ts +2 -2
- package/dist/components/sortable/context.d.ts +7 -0
- package/dist/components/sortable/context.d.ts.map +1 -0
- package/dist/components/sortable/context.js +15 -0
- package/dist/components/sortable/context.js.map +1 -0
- package/dist/components/sortable/sortable.d.ts +166 -0
- package/dist/components/sortable/sortable.d.ts.map +1 -0
- package/dist/components/sortable/sortable.js +128 -0
- package/dist/components/sortable/sortable.js.map +1 -0
- package/dist/components/sortable/use-sortable.d.ts +14 -0
- package/dist/components/sortable/use-sortable.d.ts.map +1 -0
- package/dist/components/sortable/use-sortable.js +26 -0
- package/dist/components/sortable/use-sortable.js.map +1 -0
- package/dist/components/space/context.js +1 -1
- package/dist/components/space/context.js.map +1 -1
- package/dist/components/space/space.d.ts +9 -0
- package/dist/components/space/space.d.ts.map +1 -1
- package/dist/components/space/space.js +4 -0
- package/dist/components/space/space.js.map +1 -1
- package/dist/components/spinner/context.js +1 -1
- package/dist/components/spinner/context.js.map +1 -1
- package/dist/components/spinner/spinner.d.ts +1 -1
- package/dist/components/splitter/context.js +1 -1
- package/dist/components/splitter/context.js.map +1 -1
- package/dist/components/statistic/context.js +1 -1
- package/dist/components/statistic/context.js.map +1 -1
- package/dist/components/statistic/statistic.d.ts +1 -1
- package/dist/components/steps/context.js +2 -2
- package/dist/components/steps/context.js.map +1 -1
- package/dist/components/steps/steps.d.ts +1 -1
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/table/context.js +4 -4
- package/dist/components/table/context.js.map +1 -1
- package/dist/components/table/table.d.ts +108 -5
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/table/table.js +94 -8
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/use-table.d.ts +1 -1
- package/dist/components/table/use-table.d.ts.map +1 -1
- package/dist/components/table/use-table.js +4 -2
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/tabs/context.js +1 -1
- package/dist/components/tabs/context.js.map +1 -1
- package/dist/components/tabs/tabs.d.ts +48 -3
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +45 -3
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/use-tabs.d.ts +1 -1
- package/dist/components/tabs/use-tabs.d.ts.map +1 -1
- package/dist/components/tabs/use-tabs.js +3 -2
- package/dist/components/tabs/use-tabs.js.map +1 -1
- package/dist/components/tag/context.js +1 -1
- package/dist/components/tag/context.js.map +1 -1
- package/dist/components/tag/use-tag.js +14 -2
- package/dist/components/tag/use-tag.js.map +1 -1
- package/dist/components/tags-input/context.js +2 -2
- package/dist/components/tags-input/context.js.map +1 -1
- package/dist/components/tags-input/tags-input.d.ts +4 -4
- package/dist/components/tags-input/tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/tags-input.js +7 -1
- package/dist/components/tags-input/tags-input.js.map +1 -1
- package/dist/components/text-field/context.js +1 -1
- package/dist/components/text-field/context.js.map +1 -1
- package/dist/components/text-field/text-field.d.ts +2 -2
- package/dist/components/text-field/text-field.d.ts.map +1 -1
- package/dist/components/text-field/text-field.js +9 -4
- package/dist/components/text-field/text-field.js.map +1 -1
- package/dist/components/thread/context.d.ts +7 -0
- package/dist/components/thread/context.d.ts.map +1 -0
- package/dist/components/thread/context.js +1 -1
- package/dist/components/thread/context.js.map +1 -1
- package/dist/components/time-field/context.js +1 -1
- package/dist/components/time-field/context.js.map +1 -1
- package/dist/components/time-field/time-field.d.ts +4 -4
- package/dist/components/time-picker/context.js +2 -2
- package/dist/components/time-picker/context.js.map +1 -1
- package/dist/components/time-picker/time-picker.d.ts +4 -4
- package/dist/components/time-picker/time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/time-picker.js +10 -1
- package/dist/components/time-picker/time-picker.js.map +1 -1
- package/dist/components/time-picker/use-time-picker.d.ts +1 -0
- package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/use-time-picker.js +3 -0
- package/dist/components/time-picker/use-time-picker.js.map +1 -1
- package/dist/components/timeline/context.js +2 -2
- package/dist/components/timeline/context.js.map +1 -1
- package/dist/components/timeline/timeline.d.ts +1 -1
- package/dist/components/timer/context.js +1 -1
- package/dist/components/timer/context.js.map +1 -1
- package/dist/components/toast/context.js +1 -1
- package/dist/components/toast/context.js.map +1 -1
- package/dist/components/toast/toast.d.ts +2 -14
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/toast/toast.js +1 -12
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/use-toast.d.ts.map +1 -1
- package/dist/components/toast/use-toast.js +1 -7
- package/dist/components/toast/use-toast.js.map +1 -1
- package/dist/components/toggle-group/context.js +1 -1
- package/dist/components/toggle-group/context.js.map +1 -1
- package/dist/components/toggle-group/toggle-group.d.ts +10 -1
- package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
- package/dist/components/toggle-group/toggle-group.js +4 -0
- package/dist/components/toggle-group/toggle-group.js.map +1 -1
- package/dist/components/toolbar/context.js +1 -1
- package/dist/components/toolbar/context.js.map +1 -1
- package/dist/components/toolbar/toolbar.d.ts +1 -1
- package/dist/components/tooltip/context.js +1 -1
- package/dist/components/tooltip/context.js.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts +1 -1
- package/dist/components/tour/context.js +1 -1
- package/dist/components/tour/context.js.map +1 -1
- package/dist/components/tour/tour.d.ts +2 -2
- package/dist/components/transfer/context.js +3 -3
- package/dist/components/transfer/context.js.map +1 -1
- package/dist/components/tree/context.js +2 -2
- package/dist/components/tree/context.js.map +1 -1
- package/dist/components/tree/tree.d.ts +66 -2
- package/dist/components/tree/tree.d.ts.map +1 -1
- package/dist/components/tree/tree.js +54 -3
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree/use-tree.d.ts +1 -1
- package/dist/components/tree/use-tree.d.ts.map +1 -1
- package/dist/components/tree/use-tree.js +3 -2
- package/dist/components/tree/use-tree.js.map +1 -1
- package/dist/components/tree-select/context.js +2 -2
- package/dist/components/tree-select/context.js.map +1 -1
- package/dist/components/tree-select/tree-select.d.ts +4 -4
- package/dist/components/tree-select/tree-select.d.ts.map +1 -1
- package/dist/components/tree-select/tree-select.js +14 -4
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/use-tree-select.js +1 -1
- package/dist/components/tree-select/use-tree-select.js.map +1 -1
- package/dist/components/typography/context.js +1 -1
- package/dist/components/typography/context.js.map +1 -1
- package/dist/components/virtualizer/context.js +1 -1
- package/dist/components/virtualizer/context.js.map +1 -1
- package/dist/components/watermark/context.js +1 -1
- package/dist/components/watermark/context.js.map +1 -1
- package/dist/config/config.js +1 -1
- package/dist/config/config.js.map +1 -1
- package/dist/index.d.ts +25 -12
- package/dist/index.js +24 -11
- package/dist/package.js +1 -1
- package/dist/runtime/use-scrollbars.js +66 -0
- package/dist/runtime/use-scrollbars.js.map +1 -0
- package/dist/services/dialog-service.d.ts +33 -8
- package/dist/services/dialog-service.d.ts.map +1 -1
- package/dist/services/dialog-service.js +44 -20
- package/dist/services/dialog-service.js.map +1 -1
- package/dist/services/glyph.js +41 -1
- package/dist/services/glyph.js.map +1 -1
- package/dist/services/loading-bar-service.d.ts +46 -0
- package/dist/services/loading-bar-service.d.ts.map +1 -0
- package/dist/services/loading-bar-service.js +70 -0
- package/dist/services/loading-bar-service.js.map +1 -0
- package/dist/services/mount-host.js +35 -0
- package/dist/services/mount-host.js.map +1 -0
- package/dist/services/notification-service.d.ts +46 -0
- package/dist/services/notification-service.d.ts.map +1 -0
- package/dist/services/notification-service.js +91 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/services/service-config.js +16 -0
- package/dist/services/service-config.js.map +1 -0
- package/dist/services/toast-service.d.ts +20 -12
- package/dist/services/toast-service.d.ts.map +1 -1
- package/dist/services/toast-service.js +103 -50
- package/dist/services/toast-service.js.map +1 -1
- package/package.json +19 -14
- package/dist/components/toaster/context.js +0 -19
- package/dist/components/toaster/context.js.map +0 -1
- package/dist/components/toaster/toaster.d.ts +0 -135
- package/dist/components/toaster/toaster.d.ts.map +0 -1
- package/dist/components/toaster/toaster.js +0 -91
- package/dist/components/toaster/toaster.js.map +0 -1
- package/dist/components/toaster/use-toaster.d.ts +0 -15
- package/dist/components/toaster/use-toaster.d.ts.map +0 -1
- package/dist/components/toaster/use-toaster.js +0 -23
- package/dist/components/toaster/use-toaster.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/thread/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ThreadContext } from './use-thread'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ThreadContext> = Symbol('xh-thread')\n\nexport function provideThread(ctx: ThreadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useThreadContext(): ThreadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Thread 部件必须用在 XhThreadRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/thread/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ThreadContext } from './use-thread'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ThreadContext> = Symbol.for('xh-thread')\n\nexport function provideThread(ctx: ThreadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useThreadContext(): ThreadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Thread 部件必须用在 XhThreadRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-field/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimeFieldContext } from './use-time-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimeFieldContext> = Symbol('xh-time-field')\n\nexport function provideTimeField(ctx: TimeFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimeFieldContext(): TimeFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimeField 部件必须用在 XhTimeFieldRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAsC,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-field/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimeFieldContext } from './use-time-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimeFieldContext> = Symbol.for('xh-time-field')\n\nexport function provideTimeField(ctx: TimeFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimeFieldContext(): TimeFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimeField 部件必须用在 XhTimeFieldRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAsC,OAAO,IAAI,eAAe;AAEtE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT"}
|
|
@@ -132,18 +132,18 @@ declare const XhTimeFieldRoot: import("vue").DefineComponent<import("vue").Extra
|
|
|
132
132
|
required: boolean;
|
|
133
133
|
name: string;
|
|
134
134
|
invalid: boolean;
|
|
135
|
-
size: Size;
|
|
136
135
|
value: string;
|
|
137
136
|
defaultValue: string;
|
|
138
137
|
tone: Tone;
|
|
138
|
+
size: Size;
|
|
139
139
|
disabled: boolean;
|
|
140
140
|
translations: Partial<import("@xihan-ui/headless").TimeFieldTranslations> | undefined;
|
|
141
|
-
max: string;
|
|
142
|
-
variant: ControlVariant;
|
|
143
141
|
readOnly: boolean;
|
|
142
|
+
placeholder: string;
|
|
143
|
+
variant: ControlVariant;
|
|
144
|
+
max: string;
|
|
144
145
|
min: string;
|
|
145
146
|
locale: string;
|
|
146
|
-
placeholder: string;
|
|
147
147
|
granularity: TimeGranularity;
|
|
148
148
|
hourCycle: TimeHourCycle;
|
|
149
149
|
}, SlotsType<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inject, provide } from "vue";
|
|
2
2
|
//#region src/components/time-picker/context.ts
|
|
3
|
-
const KEY = Symbol("xh-time-picker");
|
|
4
|
-
const COLUMN_KEY = Symbol("xh-time-picker-column");
|
|
3
|
+
const KEY = Symbol.for("xh-time-picker");
|
|
4
|
+
const COLUMN_KEY = Symbol.for("xh-time-picker-column");
|
|
5
5
|
function provideTimePicker(ctx) {
|
|
6
6
|
provide(KEY, ctx);
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-picker/context.ts"],"sourcesContent":["import type { TimePickerColumnUnit } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TimePickerContext } from './use-time-picker'\nimport { inject, provide } from 'vue'\n\n/** 列自报的单位,供列内选项取到自己归哪一列。 */\nexport interface TimePickerColumnContext {\n unit: ComputedRef<TimePickerColumnUnit>\n}\n\nconst KEY: InjectionKey<TimePickerContext> = Symbol('xh-time-picker')\nconst COLUMN_KEY: InjectionKey<TimePickerColumnContext> = Symbol('xh-time-picker-column')\n\nexport function provideTimePicker(ctx: TimePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimePickerContext(): TimePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 部件必须用在 XhTimePickerRoot 内')\n return ctx\n}\n\nexport function provideTimePickerColumn(ctx: TimePickerColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTimePickerColumnContext(): TimePickerColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 选项必须用在 XhTimePickerColumn 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-picker/context.ts"],"sourcesContent":["import type { TimePickerColumnUnit } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TimePickerContext } from './use-time-picker'\nimport { inject, provide } from 'vue'\n\n/** 列自报的单位,供列内选项取到自己归哪一列。 */\nexport interface TimePickerColumnContext {\n unit: ComputedRef<TimePickerColumnUnit>\n}\n\nconst KEY: InjectionKey<TimePickerContext> = Symbol.for('xh-time-picker')\nconst COLUMN_KEY: InjectionKey<TimePickerColumnContext> = Symbol.for('xh-time-picker-column')\n\nexport function provideTimePicker(ctx: TimePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimePickerContext(): TimePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 部件必须用在 XhTimePickerRoot 内')\n return ctx\n}\n\nexport function provideTimePickerColumn(ctx: TimePickerColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTimePickerColumnContext(): TimePickerColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 选项必须用在 XhTimePickerColumn 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,IAAI,gBAAgB;AACxE,MAAM,aAAoD,OAAO,IAAI,uBAAuB;AAE5F,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
|
|
@@ -188,21 +188,21 @@ declare const XhTimePickerRoot: import("vue").DefineComponent<import("vue").Extr
|
|
|
188
188
|
required: boolean;
|
|
189
189
|
name: string;
|
|
190
190
|
invalid: boolean;
|
|
191
|
-
size: Size;
|
|
192
191
|
value: string;
|
|
193
192
|
defaultValue: string;
|
|
194
193
|
tone: Tone;
|
|
194
|
+
size: Size;
|
|
195
195
|
disabled: boolean;
|
|
196
196
|
open: boolean;
|
|
197
197
|
defaultOpen: boolean;
|
|
198
198
|
translations: Partial<import("@xihan-ui/headless").TimePickerTranslations> | undefined;
|
|
199
199
|
offset: number;
|
|
200
|
-
max: string;
|
|
201
|
-
variant: ControlVariant;
|
|
202
200
|
readOnly: boolean;
|
|
201
|
+
placement: Placement;
|
|
202
|
+
variant: ControlVariant;
|
|
203
|
+
max: string;
|
|
203
204
|
min: string;
|
|
204
205
|
locale: string;
|
|
205
|
-
placement: Placement;
|
|
206
206
|
granularity: TimeGranularity;
|
|
207
207
|
presets: TimePickerPreset[];
|
|
208
208
|
step: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":";;;;;KA0BK,kBAAkB;;KAGX,0BAA0B,KACpC;;UAce;EACf,SAAS;;;UAIM;EACf,kBAAkB;;cAGP,gCAAgB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWI,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;EAKX,iBAAA,UAAA,UAAU;EACX,gBAAA,UAAA,UAAU;EACX,iBAAA,QAAA,UAAU;EACZ,gBAAA,OAAA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAvBJ,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EARkB,oBAAA,eAAM,MAAQ;;EAmB5D,WAAC,OAAO,4BAA4B;kCA8BhD;cAEW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAO5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAS9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,8BAAA;;IAIC,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;MAWtC,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAe9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAcjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAY9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;;;EAIlB,WAAC,OAAO,+BAA+B;kCAoBnD;cAEW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;EAQjB,gBAAM;kCAclB;cAEW,kCAAkB,8BAAA;;IAGH,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;;EAGvB,WAAC,OAAO,8BAA8B;kCAalD;cAEW,gCAAgB,8BAAA;;;;;;;;;;;;;;MAgB3B,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { withXhConfig } from "../../config/config.js";
|
|
2
|
+
import { useFieldLabelWiring, useFieldStateWiring } from "../field/use-field-control.js";
|
|
2
3
|
import { slotPaints } from "../../runtime/slot-content.js";
|
|
3
4
|
import { provideTimePicker, provideTimePickerColumn, useTimePickerColumnContext, useTimePickerContext } from "./context.js";
|
|
4
5
|
import { useTimePicker } from "./use-time-picker.js";
|
|
@@ -161,8 +162,16 @@ const XhTimePickerInput = defineComponent({
|
|
|
161
162
|
const XhTimePickerTrigger = defineComponent({
|
|
162
163
|
name: "XhTimePickerTrigger",
|
|
163
164
|
setup(_, { slots }) {
|
|
165
|
+
const fieldWiring = useFieldStateWiring();
|
|
166
|
+
const fieldLabel = useFieldLabelWiring();
|
|
164
167
|
const ctx = useTimePickerContext();
|
|
165
|
-
return () => h("button",
|
|
168
|
+
return () => h("button", fieldLabel.value({
|
|
169
|
+
...ctx.api.value.getTriggerProps(),
|
|
170
|
+
ref: (el) => {
|
|
171
|
+
ctx.triggerRef.value = el;
|
|
172
|
+
},
|
|
173
|
+
...fieldWiring.value
|
|
174
|
+
}), slots.default?.());
|
|
166
175
|
}
|
|
167
176
|
});
|
|
168
177
|
const XhTimePickerClearTrigger = defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-picker.js","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"sourcesContent":["import type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerApi,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimePickerPreset,\n TimePickerPresetState,\n TimePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, Teleport } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { slotPaints } from '../../runtime/slot-content'\nimport {\n provideTimePicker,\n provideTimePickerColumn,\n useTimePickerColumnContext,\n useTimePickerContext,\n} from './context'\nimport { useTimePicker } from './use-time-picker'\n\ntype TimePickerProps = TimePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与当前值、值状态标志、此刻的段与列,以及开合、写值、清空的动作。 */\nexport type TimePickerRootSlotProps = Pick<\n TimePickerApi,\n | 'open'\n | 'value'\n | 'empty'\n | 'outOfRange'\n | 'segments'\n | 'columns'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 默认插槽的载荷:这一列此刻的可选值。 */\nexport interface TimePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自己铺条目。 */\nexport interface TimePickerPresetsSlotProps {\n presets: readonly TimePickerPresetState[]\n}\n\nexport const XhTimePickerRoot = defineComponent({\n name: 'XhTimePickerRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n step: { type: Number, default: undefined },\n /** 快捷选项;给了就在浮层里多出一列,时刻要在自己的 computed 里算好再传。 */\n presets: { type: Array as PropType<TimePickerPreset[]>, default: undefined },\n disabled: Boolean,\n translations: { type: Object as PropType<TimePickerProps['translations']>, default: undefined },\n isTimeUnavailable: { type: Function as PropType<(value: string, unit: TimePickerColumnUnit) => boolean>, default: undefined },\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TimePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimePicker(withXhConfig('time-picker', props) as TimePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n columns: ctx.api.value.columns,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimePickerLabel = defineComponent({\n name: 'XhTimePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerControl = defineComponent({\n name: 'XhTimePickerControl',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerSegmentGroup = defineComponent({\n name: 'XhTimePickerSegmentGroup',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', ctx.api.value.getSegmentGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerInput = defineComponent({\n name: 'XhTimePickerInput',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getInputProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimePickerTrigger = defineComponent({\n name: 'XhTimePickerTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerClearTrigger = defineComponent({\n name: 'XhTimePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerPositioner = defineComponent({\n name: 'XhTimePickerPositioner',\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimePickerContext()\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(Teleport, { to: ctx.portalTarget.value }, [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.()),\n ])\n },\n})\n\nexport const XhTimePickerContent = defineComponent({\n name: 'XhTimePickerContent',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerPresets = defineComponent({\n name: 'XhTimePickerPresets',\n slots: Object as SlotsType<{\n /** 自己铺条目;不写就按 presets 数据自动铺,两者产出的 DOM 一致。 */\n default?: (props: TimePickerPresetsSlotProps) => VNode[]\n }>,\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return h(\n 'div',\n api.getPresetsProps() as Record<string, unknown>,\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n )\n }\n },\n})\n\nexport const XhTimePickerPreset = defineComponent({\n name: 'XhTimePickerPreset',\n props: {\n /** 这一条的身份,与 presets 数据里的 value 逐字对上。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;不写就用数据里的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimePickerColumn = defineComponent({\n name: 'XhTimePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerColumnSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimePickerColumn({ unit })\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ unit: props.unit }) as Record<string, unknown>,\n slots.default?.({ options: ctx.api.value.columns.find(c => c.unit === props.unit)?.options ?? [] }),\n )\n },\n})\n\nexport const XhTimePickerItem = defineComponent({\n name: 'XhTimePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const { unit } = useTimePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimePickerHiddenInput = defineComponent({\n name: 'XhTimePickerHiddenInput',\n setup() {\n const ctx = useTimePickerContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"time-picker.js","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"sourcesContent":["import type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerApi,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimePickerPreset,\n TimePickerPresetState,\n TimePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, Teleport } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport {\n provideTimePicker,\n provideTimePickerColumn,\n useTimePickerColumnContext,\n useTimePickerContext,\n} from './context'\nimport { useTimePicker } from './use-time-picker'\n\ntype TimePickerProps = TimePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与当前值、值状态标志、此刻的段与列,以及开合、写值、清空的动作。 */\nexport type TimePickerRootSlotProps = Pick<\n TimePickerApi,\n | 'open'\n | 'value'\n | 'empty'\n | 'outOfRange'\n | 'segments'\n | 'columns'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 默认插槽的载荷:这一列此刻的可选值。 */\nexport interface TimePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自己铺条目。 */\nexport interface TimePickerPresetsSlotProps {\n presets: readonly TimePickerPresetState[]\n}\n\nexport const XhTimePickerRoot = defineComponent({\n name: 'XhTimePickerRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n step: { type: Number, default: undefined },\n /** 快捷选项;给了就在浮层里多出一列,时刻要在自己的 computed 里算好再传。 */\n presets: { type: Array as PropType<TimePickerPreset[]>, default: undefined },\n disabled: Boolean,\n translations: { type: Object as PropType<TimePickerProps['translations']>, default: undefined },\n isTimeUnavailable: { type: Function as PropType<(value: string, unit: TimePickerColumnUnit) => boolean>, default: undefined },\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TimePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimePicker(withXhConfig('time-picker', props) as TimePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n columns: ctx.api.value.columns,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimePickerLabel = defineComponent({\n name: 'XhTimePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerControl = defineComponent({\n name: 'XhTimePickerControl',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerSegmentGroup = defineComponent({\n name: 'XhTimePickerSegmentGroup',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', ctx.api.value.getSegmentGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerInput = defineComponent({\n name: 'XhTimePickerInput',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getInputProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimePickerTrigger = defineComponent({\n name: 'XhTimePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useTimePickerContext()\n return () => h('button', fieldLabel.value({\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n // 归还焦点要落到它身上:锚点取的是整个输入行,那一层不可聚焦\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n ...fieldWiring.value,\n }), slots.default?.())\n },\n})\n\nexport const XhTimePickerClearTrigger = defineComponent({\n name: 'XhTimePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerPositioner = defineComponent({\n name: 'XhTimePickerPositioner',\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimePickerContext()\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(Teleport, { to: ctx.portalTarget.value }, [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.()),\n ])\n },\n})\n\nexport const XhTimePickerContent = defineComponent({\n name: 'XhTimePickerContent',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerPresets = defineComponent({\n name: 'XhTimePickerPresets',\n slots: Object as SlotsType<{\n /** 自己铺条目;不写就按 presets 数据自动铺,两者产出的 DOM 一致。 */\n default?: (props: TimePickerPresetsSlotProps) => VNode[]\n }>,\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return h(\n 'div',\n api.getPresetsProps() as Record<string, unknown>,\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n )\n }\n },\n})\n\nexport const XhTimePickerPreset = defineComponent({\n name: 'XhTimePickerPreset',\n props: {\n /** 这一条的身份,与 presets 数据里的 value 逐字对上。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;不写就用数据里的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimePickerColumn = defineComponent({\n name: 'XhTimePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerColumnSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimePickerColumn({ unit })\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ unit: props.unit }) as Record<string, unknown>,\n slots.default?.({ options: ctx.api.value.columns.find(c => c.unit === props.unit)?.options ?? [] }),\n )\n },\n})\n\nexport const XhTimePickerItem = defineComponent({\n name: 'XhTimePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const { unit } = useTimePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimePickerHiddenInput = defineComponent({\n name: 'XhTimePickerHiddenInput',\n setup() {\n const ctx = useTimePickerContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { TimePickerApi, TimePickerSchema } from "@xihan-ui/headless";
|
|
|
4
4
|
interface TimePickerContext {
|
|
5
5
|
api: ComputedRef<TimePickerApi>;
|
|
6
6
|
controlRef: Ref<HTMLElement | null>;
|
|
7
|
+
triggerRef: Ref<HTMLElement | null>;
|
|
7
8
|
positionerRef: Ref<HTMLElement | null>;
|
|
8
9
|
contentRef: Ref<HTMLElement | null>;
|
|
9
10
|
/** 此刻该不该渲染:退场动画播完之前仍为真。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"mappings":";;;UAaiB;EACf,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,cACd,OAAO,2BACP,WAAU,KAAK,+DACd"}
|
|
1
|
+
{"version":3,"file":"use-time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"mappings":";;;UAaiB;EACf,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,cACd,OAAO,2BACP,WAAU,KAAK,+DACd"}
|
|
@@ -11,6 +11,7 @@ import { createPositionEngine } from "@xihan-ui/position";
|
|
|
11
11
|
function useTimePicker(props, handlers = {}) {
|
|
12
12
|
const xhConfig = useXhConfig();
|
|
13
13
|
const controlRef = ref(null);
|
|
14
|
+
const triggerRef = ref(null);
|
|
14
15
|
const positionerRef = ref(null);
|
|
15
16
|
const contentRef = ref(null);
|
|
16
17
|
const idGen = createVueIdGenerator();
|
|
@@ -37,6 +38,7 @@ function useTimePicker(props, handlers = {}) {
|
|
|
37
38
|
service.refs.set("registerLayer", registerLayer);
|
|
38
39
|
service.refs.set("position", createPositionEngine());
|
|
39
40
|
service.refs.set("getAnchorEl", () => controlRef.value);
|
|
41
|
+
service.refs.set("getTriggerEl", () => triggerRef.value);
|
|
40
42
|
service.refs.set("getFloatingEl", () => positionerRef.value);
|
|
41
43
|
service.refs.set("getContentEl", () => contentRef.value);
|
|
42
44
|
}
|
|
@@ -49,6 +51,7 @@ function useTimePicker(props, handlers = {}) {
|
|
|
49
51
|
}),
|
|
50
52
|
api,
|
|
51
53
|
controlRef,
|
|
54
|
+
triggerRef,
|
|
52
55
|
positionerRef,
|
|
53
56
|
contentRef,
|
|
54
57
|
portalTarget: computed(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? "body")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-time-picker.js","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"sourcesContent":["import type { TimePickerApi, TimePickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTimePicker, timePickerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimePickerContext {\n api: ComputedRef<TimePickerApi>\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 此刻该不该渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层搬到哪儿:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useTimePicker(\n props: TimePickerSchema['props'],\n handlers: Pick<TimePickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): TimePickerContext {\n const xhConfig = useXhConfig()\n const controlRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timePickerMachine, () => ({ ...props, ...handlers }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点触发器算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTimePicker(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({ config, isOpen: () => api.value.open, contentRef })\n // 全局配置写了容器就用它,否则落到运行时那个单一浮层落点;没有 DOM 时才回到 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, api, controlRef, positionerRef, contentRef, portalTarget }\n}\n"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-time-picker.js","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"sourcesContent":["import type { TimePickerApi, TimePickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTimePicker, timePickerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimePickerContext {\n api: ComputedRef<TimePickerApi>\n controlRef: Ref<HTMLElement | null>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 此刻该不该渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层搬到哪儿:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useTimePicker(\n props: TimePickerSchema['props'],\n handlers: Pick<TimePickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): TimePickerContext {\n const xhConfig = useXhConfig()\n const controlRef = ref<HTMLElement | null>(null)\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timePickerMachine, () => ({ ...props, ...handlers }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点触发器算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getTriggerEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTimePicker(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({ config, isOpen: () => api.value.open, contentRef })\n // 全局配置写了容器就用它,否则落到运行时那个单一浮层落点;没有 DOM 时才回到 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, api, controlRef, triggerRef, positionerRef, contentRef, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAyBA,SAAgB,cACd,OACA,WAA8E,CAAC,GAC5D;CACnB,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAG/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAGtF,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAO;EAClC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAEA,MAAM,MAAM,eAAe,kBAAkB,SAAS,YAAY,CAAC;CAMnE,OAAO;EAAE,SAJO,eAAe;GAAE;GAAQ,cAAc,IAAI,MAAM;GAAM;EAAW,CAInE;EAAG;EAAK;EAAY;EAAY;EAAe;EAAY,cAFrD,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAEpC;CAAE;AACzF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { inject, provide } from "vue";
|
|
2
2
|
//#region src/components/timeline/context.ts
|
|
3
|
-
const KEY = Symbol("xh-timeline");
|
|
3
|
+
const KEY = Symbol.for("xh-timeline");
|
|
4
4
|
/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */
|
|
5
|
-
const ITEM_KEY = Symbol("xh-timeline-item");
|
|
5
|
+
const ITEM_KEY = Symbol.for("xh-timeline-item");
|
|
6
6
|
function provideTimeline(ctx) {
|
|
7
7
|
provide(KEY, ctx);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timeline/context.ts"],"sourcesContent":["import type { TimelineApi, TimelineItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TimelineContext {\n api: ComputedRef<TimelineApi>\n}\n\nconst KEY: InjectionKey<TimelineContext> = Symbol('xh-timeline')\n/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */\nconst ITEM_KEY: InjectionKey<() => TimelineItemProps> = Symbol('xh-timeline-item')\n\nexport function provideTimeline(ctx: TimelineContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimelineContext(): TimelineContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timeline 部件必须用在 XhTimelineRoot 内')\n return ctx\n}\n\nexport function provideTimelineItem(item: () => TimelineItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useTimelineItem(): () => TimelineItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Timeline 圆点必须用在 XhTimelineItem 内')\n return item\n}\n"],"mappings":";;AAQA,MAAM,MAAqC,OAAO,aAAa;;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timeline/context.ts"],"sourcesContent":["import type { TimelineApi, TimelineItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TimelineContext {\n api: ComputedRef<TimelineApi>\n}\n\nconst KEY: InjectionKey<TimelineContext> = Symbol.for('xh-timeline')\n/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */\nconst ITEM_KEY: InjectionKey<() => TimelineItemProps> = Symbol.for('xh-timeline-item')\n\nexport function provideTimeline(ctx: TimelineContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimelineContext(): TimelineContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timeline 部件必须用在 XhTimelineRoot 内')\n return ctx\n}\n\nexport function provideTimelineItem(item: () => TimelineItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useTimelineItem(): () => TimelineItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Timeline 圆点必须用在 XhTimelineItem 内')\n return item\n}\n"],"mappings":";;AAQA,MAAM,MAAqC,OAAO,IAAI,aAAa;;AAEnE,MAAM,WAAkD,OAAO,IAAI,kBAAkB;AAErF,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,oBAAoB,MAAqC;CACvE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,kBAA2C;CACzD,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
|
|
@@ -32,8 +32,8 @@ declare const XhTimelineRoot: import("vue").DefineComponent<import("vue").Extrac
|
|
|
32
32
|
default: undefined;
|
|
33
33
|
};
|
|
34
34
|
}>> & Readonly<{}>, {
|
|
35
|
-
size: Size;
|
|
36
35
|
orientation: Orientation;
|
|
36
|
+
size: Size;
|
|
37
37
|
placement: TimelinePlacement;
|
|
38
38
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
39
39
|
/** 一条事件。tone 只在这一条内生效,下传给它自己的圆点。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timer/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimerContext } from './use-timer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimerContext> = Symbol('xh-timer')\n\nexport function provideTimer(ctx: TimerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimerContext(): TimerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timer 部件必须用在 XhTimerRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timer/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimerContext } from './use-timer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimerContext> = Symbol.for('xh-timer')\n\nexport function provideTimer(ctx: TimerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimerContext(): TimerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timer 部件必须用在 XhTimerRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toast/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToastContext } from './use-toast'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToastContext> = Symbol('xh-toast')\n\nexport function provideToast(ctx: ToastContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToastContext(): ToastContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toast 部件必须用在 XhToastRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toast/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToastContext } from './use-toast'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToastContext> = Symbol.for('xh-toast')\n\nexport function provideToast(ctx: ToastContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToastContext(): ToastContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toast 部件必须用在 XhToastRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
|
|
@@ -14,10 +14,6 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
|
|
|
14
14
|
type: StringConstructor;
|
|
15
15
|
default: undefined;
|
|
16
16
|
};
|
|
17
|
-
description: {
|
|
18
|
-
type: StringConstructor;
|
|
19
|
-
default: undefined;
|
|
20
|
-
};
|
|
21
17
|
type: {
|
|
22
18
|
type: PropType<ToastType>;
|
|
23
19
|
default: undefined;
|
|
@@ -56,10 +52,6 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
|
|
|
56
52
|
type: StringConstructor;
|
|
57
53
|
default: undefined;
|
|
58
54
|
};
|
|
59
|
-
description: {
|
|
60
|
-
type: StringConstructor;
|
|
61
|
-
default: undefined;
|
|
62
|
-
};
|
|
63
55
|
type: {
|
|
64
56
|
type: PropType<ToastType>;
|
|
65
57
|
default: undefined;
|
|
@@ -93,19 +85,15 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
|
|
|
93
85
|
closable: boolean;
|
|
94
86
|
translations: Partial<ToastTranslations>;
|
|
95
87
|
duration: number;
|
|
96
|
-
id: string;
|
|
97
|
-
description: string;
|
|
98
88
|
removeDelay: number;
|
|
99
89
|
pauseOnPageIdle: boolean;
|
|
90
|
+
id: string;
|
|
100
91
|
}, SlotsType<{
|
|
101
92
|
default?: (props: ToastRootSlotProps) => VNode[];
|
|
102
93
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
103
94
|
declare const XhToastTitle: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
104
95
|
[key: string]: any;
|
|
105
96
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
106
|
-
declare const XhToastDescription: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
107
|
-
[key: string]: any;
|
|
108
|
-
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
109
97
|
declare const XhToastActionTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
110
98
|
[key: string]: any;
|
|
111
99
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -113,5 +101,5 @@ declare const XhToastCloseTrigger: import("vue").DefineComponent<{}, () => VNode
|
|
|
113
101
|
[key: string]: any;
|
|
114
102
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
115
103
|
//#endregion
|
|
116
|
-
export { ToastRootSlotProps, XhToastActionTrigger, XhToastCloseTrigger,
|
|
104
|
+
export { ToastRootSlotProps, XhToastActionTrigger, XhToastCloseTrigger, XhToastRoot, XhToastTitle };
|
|
117
105
|
//# sourceMappingURL=toast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","names":[],"sources":["../../../src/components/toast/toast.ts"],"mappings":";;;;KAQK,aAAa;;KAGN,qBAAqB,KAC/B;cAIW,2BAAW,8BAAA
|
|
1
|
+
{"version":3,"file":"toast.d.ts","names":[],"sources":["../../../src/components/toast/toast.ts"],"mappings":";;;;KAQK,aAAa;;KAGN,qBAAqB,KAC/B;cAIW,2BAAW,8BAAA;;;;;;;;;;IAOI,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;EAIrB,kBAAA,UAAA,UAAU;EACjB,SAAA,UAAA,UAAU;;;;;;;;;;;IAVP,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;;;;;;;;;;;EAQvC,WAAC,OAAO,uBAAuB;kCAsB3C;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAWvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
|
|
@@ -14,10 +14,6 @@ const XhToastRoot = defineComponent({
|
|
|
14
14
|
type: String,
|
|
15
15
|
default: void 0
|
|
16
16
|
},
|
|
17
|
-
description: {
|
|
18
|
-
type: String,
|
|
19
|
-
default: void 0
|
|
20
|
-
},
|
|
21
17
|
type: {
|
|
22
18
|
type: String,
|
|
23
19
|
default: void 0
|
|
@@ -76,13 +72,6 @@ const XhToastTitle = defineComponent({
|
|
|
76
72
|
return () => h("div", ctx.api.value.getTitleProps(), slots.default ? slots.default() : ctx.api.value.title);
|
|
77
73
|
}
|
|
78
74
|
});
|
|
79
|
-
const XhToastDescription = defineComponent({
|
|
80
|
-
name: "XhToastDescription",
|
|
81
|
-
setup(_, { slots }) {
|
|
82
|
-
const ctx = useToastContext();
|
|
83
|
-
return () => h("div", ctx.api.value.getDescriptionProps(), slots.default ? slots.default() : ctx.api.value.description);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
75
|
const XhToastActionTrigger = defineComponent({
|
|
87
76
|
name: "XhToastActionTrigger",
|
|
88
77
|
setup(_, { slots }) {
|
|
@@ -98,6 +87,6 @@ const XhToastCloseTrigger = defineComponent({
|
|
|
98
87
|
}
|
|
99
88
|
});
|
|
100
89
|
//#endregion
|
|
101
|
-
export { XhToastActionTrigger, XhToastCloseTrigger,
|
|
90
|
+
export { XhToastActionTrigger, XhToastCloseTrigger, XhToastRoot, XhToastTitle };
|
|
102
91
|
|
|
103
92
|
//# sourceMappingURL=toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","names":[],"sources":["../../../src/components/toast/toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema, ToastTranslations, ToastType } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideToast, useToastContext } from './context'\nimport { useToast } from './use-toast'\n\ntype ToastProps = ToastSchema['props']\n\n/** 默认插槽的载荷:这一条的身份、状态、计时剩余与生命周期方法。 */\nexport type ToastRootSlotProps = Pick<\n ToastApi,\n 'id' | 'status' | 'type' | 'paused' | 'remaining' | 'dismiss' | 'pause' | 'resume'\n>\n\nexport const XhToastRoot = defineComponent({\n name: 'XhToastRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n // 队列身份,不是 DOM id;不给则回落到实例的 scope id\n id: { type: String, default: undefined },\n title: { type: String, default: undefined },\n
|
|
1
|
+
{"version":3,"file":"toast.js","names":[],"sources":["../../../src/components/toast/toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema, ToastTranslations, ToastType } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideToast, useToastContext } from './context'\nimport { useToast } from './use-toast'\n\ntype ToastProps = ToastSchema['props']\n\n/** 默认插槽的载荷:这一条的身份、状态、计时剩余与生命周期方法。 */\nexport type ToastRootSlotProps = Pick<\n ToastApi,\n 'id' | 'status' | 'type' | 'paused' | 'remaining' | 'dismiss' | 'pause' | 'resume'\n>\n\nexport const XhToastRoot = defineComponent({\n name: 'XhToastRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n // 队列身份,不是 DOM id;不给则回落到实例的 scope id\n id: { type: String, default: undefined },\n title: { type: String, default: undefined },\n type: { type: String as PropType<ToastType>, default: undefined },\n duration: { type: Number, default: undefined },\n removeDelay: { type: Number, default: undefined },\n closable: { type: Boolean, default: undefined },\n pauseOnPageIdle: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ToastTranslations>>, default: undefined },\n },\n // status-change 携带 { id, status },action 携带 { id }\n emits: {\n 'status-change': (_details: PayloadOf<ToastProps, 'onStatusChange'>) => true,\n 'action': (_details: PayloadOf<ToastProps, 'onAction'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: ToastRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyStatus: ToastProps['onStatusChange'] = (details) => {\n emit('status-change', details)\n }\n const notifyAction: ToastProps['onAction'] = (details) => {\n emit('action', details)\n }\n const ctx = useToast(withXhConfig('toast', props) as ToastProps, notifyStatus, notifyAction)\n provideToast(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n id: ctx.api.value.id,\n status: ctx.api.value.status,\n type: ctx.api.value.type,\n paused: ctx.api.value.paused,\n remaining: ctx.api.value.remaining,\n dismiss: ctx.api.value.dismiss,\n pause: ctx.api.value.pause,\n resume: ctx.api.value.resume,\n }))\n },\n})\n\nexport const XhToastTitle = defineComponent({\n name: 'XhToastTitle',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 渲染为 div 而非标题标签;无插槽内容时用 title prop 兜底\n return () => h(\n 'div',\n ctx.api.value.getTitleProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.title,\n )\n },\n})\n\nexport const XhToastActionTrigger = defineComponent({\n name: 'XhToastActionTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 原生 <button>,激活行为交给平台\n return () => h('button', ctx.api.value.getActionTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToastCloseTrigger = defineComponent({\n name: 'XhToastCloseTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAgBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,MAAM;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAChE,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,iBAAiB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAAgD,SAAS,KAAA;EAAU;CAC3F;CAEA,OAAO;EACL,kBAAkB,aAAsD;EACxE,WAAW,aAAgD;CAC7D;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,gBAA8C,YAAY;GAC9D,KAAK,iBAAiB,OAAO;EAC/B;EACA,MAAM,gBAAwC,YAAY;GACxD,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,MAAM,SAAS,aAAa,SAAS,KAAK,GAAiB,cAAc,YAAY;EAC3F,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,IAAI,IAAI,IAAI,MAAM;GAClB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,WAAW,IAAI,IAAI,MAAM;GACzB,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,KAClD;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-toast.d.ts","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"use-toast.d.ts","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"mappings":";;;UAOiB;EACf,KAAK,YAAY;;iBAGH,SACd,OAAO,sBACP,iBAAiB,wCACjB,WAAW,mCACV"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { vueNormalize } from "../../runtime/normalize-props.js";
|
|
2
2
|
import { useMachine } from "../../runtime/use-machine.js";
|
|
3
|
-
import { useToasterContextOptional } from "../toaster/context.js";
|
|
4
3
|
import { computed } from "vue";
|
|
5
4
|
import { connectToast, toastMachine } from "@xihan-ui/headless";
|
|
6
5
|
//#region src/components/toast/use-toast.ts
|
|
7
6
|
function useToast(props, onStatusChange, onAction) {
|
|
8
|
-
const toaster = useToasterContextOptional();
|
|
9
|
-
const notifyStatus = (details) => {
|
|
10
|
-
onStatusChange?.(details);
|
|
11
|
-
if (details.status === "unmounted") toaster?.dismiss(details.id);
|
|
12
|
-
};
|
|
13
7
|
const service = useMachine(toastMachine, () => ({
|
|
14
8
|
...props,
|
|
15
|
-
onStatusChange
|
|
9
|
+
onStatusChange,
|
|
16
10
|
onAction
|
|
17
11
|
}));
|
|
18
12
|
return { api: computed(() => connectToast(service, vueNormalize)) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-toast.js","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToast, toastMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\
|
|
1
|
+
{"version":3,"file":"use-toast.js","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToast, toastMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToastContext {\n api: ComputedRef<ToastApi>\n}\n\nexport function useToast(\n props: ToastSchema['props'],\n onStatusChange?: ToastSchema['props']['onStatusChange'],\n onAction?: ToastSchema['props']['onAction'],\n): ToastContext {\n const service = useMachine(toastMachine, () => ({ ...props, onStatusChange, onAction }))\n const api = computed(() => connectToast(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;AAWA,SAAgB,SACd,OACA,gBACA,UACc;CACd,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;EAAgB;CAAS,EAAE;CAEvF,OAAO,EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD,EAAE;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toggle-group/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToggleGroupContext } from './use-toggle-group'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToggleGroupContext> = Symbol('xh-toggle-group')\n\nexport function provideToggleGroup(ctx: ToggleGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToggleGroupContext(): ToggleGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ToggleGroup 部件必须用在 XhToggleGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAwC,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toggle-group/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToggleGroupContext } from './use-toggle-group'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToggleGroupContext> = Symbol.for('xh-toggle-group')\n\nexport function provideToggleGroup(ctx: ToggleGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToggleGroupContext(): ToggleGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ToggleGroup 部件必须用在 XhToggleGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAE1E,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PayloadOf } from "../../runtime/payload.js";
|
|
2
2
|
import { PropType, VNode } from "vue";
|
|
3
3
|
import { ToggleGroupNode, ToggleGroupSchema, ToggleGroupValue } from "@xihan-ui/headless";
|
|
4
|
-
import { Direction, Orientation } from "@xihan-ui/kernel";
|
|
4
|
+
import { Direction, Orientation, Size } from "@xihan-ui/kernel";
|
|
5
5
|
//#region src/components/toggle-group/toggle-group.d.ts
|
|
6
6
|
type ToggleGroupProps = ToggleGroupSchema['props'];
|
|
7
7
|
declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
@@ -29,6 +29,10 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
|
|
|
29
29
|
type: BooleanConstructor;
|
|
30
30
|
default: undefined;
|
|
31
31
|
};
|
|
32
|
+
size: {
|
|
33
|
+
type: PropType<Size>;
|
|
34
|
+
default: undefined;
|
|
35
|
+
};
|
|
32
36
|
orientation: {
|
|
33
37
|
type: PropType<Orientation>;
|
|
34
38
|
default: undefined;
|
|
@@ -75,6 +79,10 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
|
|
|
75
79
|
type: BooleanConstructor;
|
|
76
80
|
default: undefined;
|
|
77
81
|
};
|
|
82
|
+
size: {
|
|
83
|
+
type: PropType<Size>;
|
|
84
|
+
default: undefined;
|
|
85
|
+
};
|
|
78
86
|
orientation: {
|
|
79
87
|
type: PropType<Orientation>;
|
|
80
88
|
default: undefined;
|
|
@@ -101,6 +109,7 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
|
|
|
101
109
|
defaultValue: ToggleGroupValue;
|
|
102
110
|
orientation: Orientation;
|
|
103
111
|
dir: Direction;
|
|
112
|
+
size: Size;
|
|
104
113
|
disabled: boolean;
|
|
105
114
|
loop: boolean;
|
|
106
115
|
disallowEmpty: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"mappings":";;;;;KAQK,mBAAmB;cAEX,iCAAiB,8BAAA;;IAIG,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"mappings":";;;;;KAQK,mBAAmB;cAEX,iCAAiB,8BAAA;;IAIG,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAI1B,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;EAML,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAfN,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAI1B,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;qCA0BlC;cAEW,iCAAiB,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAmC5B"}
|