@xihan-ui/vue 2.1.0 → 3.0.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 +1335 -0
- package/README.md +1 -1
- package/dist/components/accordion/accordion.d.ts +6 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.js +4 -2
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert/alert.d.ts +9 -0
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/alert.js +4 -0
- package/dist/components/alert/alert.js.map +1 -1
- package/dist/components/anchor/anchor.d.ts +2 -2
- package/dist/components/anchor/anchor.d.ts.map +1 -1
- package/dist/components/anchor/anchor.js +2 -2
- package/dist/components/anchor/anchor.js.map +1 -1
- package/dist/components/anchor/use-anchor.d.ts +2 -2
- package/dist/components/anchor/use-anchor.js +3 -3
- package/dist/components/anchor/use-anchor.js.map +1 -1
- package/dist/components/approval/approval.d.ts +8 -1
- package/dist/components/approval/approval.d.ts.map +1 -1
- package/dist/components/approval/approval.js +10 -1
- package/dist/components/approval/approval.js.map +1 -1
- package/dist/components/avatar/avatar.d.ts +8 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/avatar.js +3 -1
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/avatar/use-avatar.d.ts.map +1 -1
- package/dist/components/avatar/use-avatar.js +3 -1
- package/dist/components/avatar/use-avatar.js.map +1 -1
- package/dist/components/back-top/use-back-top.d.ts.map +1 -1
- package/dist/components/back-top/use-back-top.js +3 -1
- package/dist/components/back-top/use-back-top.js.map +1 -1
- package/dist/components/badge/badge.d.ts +22 -0
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/badge.js +11 -2
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts +11 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +28 -9
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/calendar-picker/calendar-picker.d.ts +16 -0
- package/dist/components/calendar-picker/calendar-picker.d.ts.map +1 -1
- package/dist/components/calendar-picker/calendar-picker.js +4 -0
- package/dist/components/calendar-picker/calendar-picker.js.map +1 -1
- package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +16 -0
- package/dist/components/calendar-range-picker/calendar-range-picker.d.ts.map +1 -1
- package/dist/components/calendar-range-picker/calendar-range-picker.js +4 -0
- package/dist/components/calendar-range-picker/calendar-range-picker.js.map +1 -1
- package/dist/components/card/card.d.ts +37 -2
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/card.js +40 -2
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/carousel/carousel.d.ts +7 -1
- package/dist/components/carousel/carousel.d.ts.map +1 -1
- package/dist/components/carousel/carousel.js +1 -0
- package/dist/components/carousel/carousel.js.map +1 -1
- package/dist/components/carousel/use-carousel.d.ts.map +1 -1
- package/dist/components/carousel/use-carousel.js +3 -1
- package/dist/components/carousel/use-carousel.js.map +1 -1
- package/dist/components/cartesian-chart/cartesian-chart.d.ts +262 -0
- package/dist/components/cartesian-chart/cartesian-chart.d.ts.map +1 -0
- package/dist/components/cartesian-chart/cartesian-chart.js +293 -0
- package/dist/components/cartesian-chart/cartesian-chart.js.map +1 -0
- package/dist/components/cartesian-chart/context.js +15 -0
- package/dist/components/cartesian-chart/context.js.map +1 -0
- package/dist/components/cartesian-chart/use-cartesian-chart.d.ts +21 -0
- package/dist/components/cartesian-chart/use-cartesian-chart.d.ts.map +1 -0
- package/dist/components/cartesian-chart/use-cartesian-chart.js +29 -0
- package/dist/components/cartesian-chart/use-cartesian-chart.js.map +1 -0
- package/dist/components/cascader/cascader.d.ts +64 -3
- package/dist/components/cascader/cascader.d.ts.map +1 -1
- package/dist/components/cascader/cascader.js +107 -7
- package/dist/components/cascader/cascader.js.map +1 -1
- package/dist/components/cascader/context.js +10 -1
- package/dist/components/cascader/context.js.map +1 -1
- package/dist/components/cascader/use-cascader.d.ts +2 -1
- package/dist/components/cascader/use-cascader.d.ts.map +1 -1
- package/dist/components/cascader/use-cascader.js +4 -1
- package/dist/components/cascader/use-cascader.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +1 -1
- package/dist/components/checkbox-group/checkbox-group.d.ts +24 -3
- package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.js +20 -3
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/citation/citation.d.ts +211 -0
- package/dist/components/citation/citation.d.ts.map +1 -0
- package/dist/components/citation/citation.js +222 -0
- package/dist/components/citation/citation.js.map +1 -0
- package/dist/components/citation/context.d.ts +11 -0
- package/dist/components/citation/context.d.ts.map +1 -0
- package/dist/components/citation/context.js +24 -0
- package/dist/components/citation/context.js.map +1 -0
- package/dist/components/citation/use-citation.d.ts +19 -0
- package/dist/components/citation/use-citation.d.ts.map +1 -0
- package/dist/components/citation/use-citation.js +51 -0
- package/dist/components/citation/use-citation.js.map +1 -0
- package/dist/components/code-view/code-view.d.ts +21 -0
- package/dist/components/code-view/code-view.d.ts.map +1 -1
- package/dist/components/code-view/code-view.js +23 -4
- package/dist/components/code-view/code-view.js.map +1 -1
- package/dist/components/collapsible/collapsible.d.ts +6 -0
- package/dist/components/collapsible/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/collapsible.js +4 -2
- package/dist/components/collapsible/collapsible.js.map +1 -1
- package/dist/components/color-field/color-field.d.ts +2 -2
- package/dist/components/color-field/color-field.js +1 -1
- package/dist/components/color-field/color-field.js.map +1 -1
- package/dist/components/color-picker/color-picker.d.ts +41 -3
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.js +33 -4
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-picker/use-color-picker.d.ts +3 -1
- package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/use-color-picker.js +8 -2
- package/dist/components/color-picker/use-color-picker.js.map +1 -1
- package/dist/components/color-slider/color-slider.d.ts +2 -2
- package/dist/components/color-slider/color-slider.js +1 -1
- package/dist/components/color-slider/color-slider.js.map +1 -1
- package/dist/components/combobox/combobox.d.ts +49 -4
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.js +73 -5
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/combobox/context.js +10 -1
- package/dist/components/combobox/context.js.map +1 -1
- package/dist/components/command/command.js +2 -2
- package/dist/components/command/use-command.d.ts.map +1 -1
- package/dist/components/command/use-command.js +9 -30
- package/dist/components/command/use-command.js.map +1 -1
- package/dist/components/context-menu/context-menu.d.ts +50 -18
- package/dist/components/context-menu/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu/context-menu.js +101 -47
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/context.js +1 -1
- package/dist/components/context-menu/context.js.map +1 -1
- package/dist/components/context-menu/use-context-menu.d.ts +1 -1
- package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
- package/dist/components/context-menu/use-context-menu.js +4 -2
- package/dist/components/context-menu/use-context-menu.js.map +1 -1
- package/dist/components/date-field/date-field.d.ts +9 -1
- package/dist/components/date-field/date-field.d.ts.map +1 -1
- package/dist/components/date-field/date-field.js +2 -0
- package/dist/components/date-field/date-field.js.map +1 -1
- package/dist/components/date-picker/date-picker.d.ts +41 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.js +16 -3
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts +77 -2
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +102 -5
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/use-date-range-picker.d.ts +1 -1
- package/dist/components/date-range-picker/use-date-range-picker.js.map +1 -1
- package/dist/components/descriptions/descriptions.d.ts +38 -7
- package/dist/components/descriptions/descriptions.d.ts.map +1 -1
- package/dist/components/descriptions/descriptions.js +38 -4
- package/dist/components/descriptions/descriptions.js.map +1 -1
- package/dist/components/dialog/dialog.d.ts +16 -1
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/dialog.js +15 -2
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/use-dialog.d.ts.map +1 -1
- package/dist/components/dialog/use-dialog.js +9 -27
- package/dist/components/dialog/use-dialog.js.map +1 -1
- package/dist/components/diff-view/diff-view.d.ts +22 -2
- package/dist/components/diff-view/diff-view.d.ts.map +1 -1
- package/dist/components/diff-view/diff-view.js +37 -14
- package/dist/components/diff-view/diff-view.js.map +1 -1
- package/dist/components/diff-view/use-diff-view.d.ts +7 -2
- package/dist/components/diff-view/use-diff-view.d.ts.map +1 -1
- package/dist/components/diff-view/use-diff-view.js +12 -5
- package/dist/components/diff-view/use-diff-view.js.map +1 -1
- package/dist/components/drawer/drawer.d.ts +46 -1
- package/dist/components/drawer/drawer.d.ts.map +1 -1
- package/dist/components/drawer/drawer.js +28 -4
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/use-drawer.d.ts +1 -1
- package/dist/components/drawer/use-drawer.d.ts.map +1 -1
- package/dist/components/drawer/use-drawer.js +12 -29
- package/dist/components/drawer/use-drawer.js.map +1 -1
- package/dist/components/empty-state/empty-state.js +4 -1
- package/dist/components/empty-state/empty-state.js.map +1 -1
- package/dist/components/empty-state/use-empty-state.js +12 -3
- package/dist/components/empty-state/use-empty-state.js.map +1 -1
- package/dist/components/field/field.js +1 -1
- package/dist/components/field-array/field-array.d.ts +1 -1
- package/dist/components/field-array/field-array.d.ts.map +1 -1
- package/dist/components/field-array/field-array.js +5 -1
- package/dist/components/field-array/field-array.js.map +1 -1
- package/dist/components/field-array/use-field-array.d.ts +3 -1
- package/dist/components/field-array/use-field-array.d.ts.map +1 -1
- package/dist/components/field-array/use-field-array.js +5 -2
- package/dist/components/field-array/use-field-array.js.map +1 -1
- package/dist/components/file-upload/file-upload.d.ts +24 -1
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/file-upload.js +12 -2
- package/dist/components/file-upload/file-upload.js.map +1 -1
- package/dist/components/file-upload/use-file-upload.d.ts +1 -1
- package/dist/components/file-upload/use-file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/use-file-upload.js.map +1 -1
- package/dist/components/flex/flex.d.ts +1 -1
- package/dist/components/flex/flex.d.ts.map +1 -1
- package/dist/components/flex/flex.js +4 -4
- package/dist/components/flex/flex.js.map +1 -1
- package/dist/components/form/form.d.ts +18 -4
- package/dist/components/form/form.d.ts.map +1 -1
- package/dist/components/form/form.js +21 -7
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/use-form.d.ts +6 -0
- package/dist/components/form/use-form.d.ts.map +1 -1
- package/dist/components/form/use-form.js +4 -0
- package/dist/components/form/use-form.js.map +1 -1
- package/dist/components/funnel-chart/context.js +15 -0
- package/dist/components/funnel-chart/context.js.map +1 -0
- package/dist/components/funnel-chart/funnel-chart.d.ts +175 -0
- package/dist/components/funnel-chart/funnel-chart.d.ts.map +1 -0
- package/dist/components/funnel-chart/funnel-chart.js +188 -0
- package/dist/components/funnel-chart/funnel-chart.js.map +1 -0
- package/dist/components/funnel-chart/use-funnel-chart.d.ts +19 -0
- package/dist/components/funnel-chart/use-funnel-chart.d.ts.map +1 -0
- package/dist/components/funnel-chart/use-funnel-chart.js +26 -0
- package/dist/components/funnel-chart/use-funnel-chart.js.map +1 -0
- package/dist/components/graph-chart/context.js +15 -0
- package/dist/components/graph-chart/context.js.map +1 -0
- package/dist/components/graph-chart/graph-chart.d.ts +194 -0
- package/dist/components/graph-chart/graph-chart.d.ts.map +1 -0
- package/dist/components/graph-chart/graph-chart.js +219 -0
- package/dist/components/graph-chart/graph-chart.js.map +1 -0
- package/dist/components/graph-chart/use-graph-chart.d.ts +19 -0
- package/dist/components/graph-chart/use-graph-chart.d.ts.map +1 -0
- package/dist/components/graph-chart/use-graph-chart.js +26 -0
- package/dist/components/graph-chart/use-graph-chart.js.map +1 -0
- package/dist/components/grid/grid.d.ts +7 -0
- package/dist/components/grid/grid.d.ts.map +1 -1
- package/dist/components/grid/grid.js +7 -1
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid-list/context.d.ts +9 -0
- package/dist/components/grid-list/context.d.ts.map +1 -0
- package/dist/components/grid-list/context.js +24 -0
- package/dist/components/grid-list/context.js.map +1 -0
- package/dist/components/grid-list/grid-list.d.ts +149 -0
- package/dist/components/grid-list/grid-list.d.ts.map +1 -0
- package/dist/components/grid-list/grid-list.js +118 -0
- package/dist/components/grid-list/grid-list.js.map +1 -0
- package/dist/components/grid-list/use-grid-list.d.ts +12 -0
- package/dist/components/grid-list/use-grid-list.d.ts.map +1 -0
- package/dist/components/grid-list/use-grid-list.js +20 -0
- package/dist/components/grid-list/use-grid-list.js.map +1 -0
- package/dist/components/heatmap/heatmap.d.ts +45 -4
- package/dist/components/heatmap/heatmap.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.js +40 -14
- package/dist/components/heatmap/heatmap.js.map +1 -1
- package/dist/components/heatmap/use-heatmap.d.ts +4 -2
- package/dist/components/heatmap/use-heatmap.d.ts.map +1 -1
- package/dist/components/heatmap/use-heatmap.js +8 -4
- package/dist/components/heatmap/use-heatmap.js.map +1 -1
- package/dist/components/hierarchy-chart/context.js +15 -0
- package/dist/components/hierarchy-chart/context.js.map +1 -0
- package/dist/components/hierarchy-chart/hierarchy-chart.d.ts +201 -0
- package/dist/components/hierarchy-chart/hierarchy-chart.d.ts.map +1 -0
- package/dist/components/hierarchy-chart/hierarchy-chart.js +228 -0
- package/dist/components/hierarchy-chart/hierarchy-chart.js.map +1 -0
- package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts +19 -0
- package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts.map +1 -0
- package/dist/components/hierarchy-chart/use-hierarchy-chart.js +26 -0
- package/dist/components/hierarchy-chart/use-hierarchy-chart.js.map +1 -0
- package/dist/components/hover-card/hover-card.js +2 -2
- package/dist/components/icon/icon.d.ts +7 -1
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +1 -0
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/image/use-image.d.ts.map +1 -1
- package/dist/components/image/use-image.js +3 -1
- package/dist/components/image/use-image.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.d.ts +35 -4
- package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
- package/dist/components/image-cropper/image-cropper.js +34 -5
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/image-cropper/use-image-cropper.d.ts +3 -1
- package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -1
- package/dist/components/image-cropper/use-image-cropper.js +4 -1
- package/dist/components/image-cropper/use-image-cropper.js.map +1 -1
- package/dist/components/image-viewer/image-viewer.js +1 -1
- package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
- package/dist/components/image-viewer/use-image-viewer.js +9 -27
- package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
- package/dist/components/infinite-scroll/infinite-scroll.d.ts +9 -1
- package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -1
- package/dist/components/infinite-scroll/infinite-scroll.js +2 -0
- package/dist/components/infinite-scroll/infinite-scroll.js.map +1 -1
- package/dist/components/json-viewer/json-viewer.d.ts +17 -2
- package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
- package/dist/components/json-viewer/json-viewer.js +26 -8
- package/dist/components/json-viewer/json-viewer.js.map +1 -1
- package/dist/components/listbox/listbox.d.ts +7 -1
- package/dist/components/listbox/listbox.d.ts.map +1 -1
- package/dist/components/listbox/listbox.js +2 -0
- package/dist/components/listbox/listbox.js.map +1 -1
- package/dist/components/loading-bar/use-loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar/use-loading-bar.js +3 -1
- package/dist/components/loading-bar/use-loading-bar.js.map +1 -1
- package/dist/components/log/log.d.ts +41 -2
- package/dist/components/log/log.d.ts.map +1 -1
- package/dist/components/log/log.js +25 -3
- package/dist/components/log/log.js.map +1 -1
- package/dist/components/log/use-log.d.ts +1 -1
- package/dist/components/log/use-log.d.ts.map +1 -1
- package/dist/components/log/use-log.js +4 -1
- package/dist/components/log/use-log.js.map +1 -1
- package/dist/components/markdown-stream/markdown-stream.d.ts +22 -2
- package/dist/components/markdown-stream/markdown-stream.d.ts.map +1 -1
- package/dist/components/markdown-stream/markdown-stream.js +43 -4
- package/dist/components/markdown-stream/markdown-stream.js.map +1 -1
- package/dist/components/marquee/marquee.d.ts +68 -12
- package/dist/components/marquee/marquee.d.ts.map +1 -1
- package/dist/components/marquee/marquee.js +52 -7
- package/dist/components/marquee/marquee.js.map +1 -1
- package/dist/components/mention/mention.d.ts +26 -6
- package/dist/components/mention/mention.d.ts.map +1 -1
- package/dist/components/mention/mention.js +14 -4
- package/dist/components/mention/mention.js.map +1 -1
- package/dist/components/menu/context.js +1 -1
- package/dist/components/menu/context.js.map +1 -1
- package/dist/components/menu/menu.d.ts +79 -28
- package/dist/components/menu/menu.d.ts.map +1 -1
- package/dist/components/menu/menu.js +104 -51
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/use-menu.d.ts +1 -1
- package/dist/components/menu/use-menu.d.ts.map +1 -1
- package/dist/components/menu/use-menu.js +8 -6
- package/dist/components/menu/use-menu.js.map +1 -1
- package/dist/components/menubar/context.js +1 -1
- package/dist/components/menubar/context.js.map +1 -1
- package/dist/components/menubar/menubar.d.ts +39 -18
- package/dist/components/menubar/menubar.d.ts.map +1 -1
- package/dist/components/menubar/menubar.js +96 -47
- package/dist/components/menubar/menubar.js.map +1 -1
- package/dist/components/menubar/use-menubar.d.ts +1 -1
- package/dist/components/menubar/use-menubar.d.ts.map +1 -1
- package/dist/components/menubar/use-menubar.js +4 -2
- package/dist/components/menubar/use-menubar.js.map +1 -1
- package/dist/components/message-feed/message-feed.d.ts +13 -1
- package/dist/components/message-feed/message-feed.d.ts.map +1 -1
- package/dist/components/message-feed/message-feed.js +25 -1
- package/dist/components/message-feed/message-feed.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts +58 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.js +82 -10
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
- package/dist/components/notification/context.d.ts +5 -1
- package/dist/components/notification/context.d.ts.map +1 -1
- package/dist/components/notification/context.js.map +1 -1
- package/dist/components/notification/notification.d.ts +39 -23
- package/dist/components/notification/notification.d.ts.map +1 -1
- package/dist/components/notification/notification.js +27 -9
- package/dist/components/notification/notification.js.map +1 -1
- package/dist/components/notification/use-item-exit.js +22 -0
- package/dist/components/notification/use-item-exit.js.map +1 -0
- package/dist/components/notification/use-notification.d.ts +3 -3
- package/dist/components/notification/use-notification.d.ts.map +1 -1
- package/dist/components/notification/use-notification.js +20 -5
- package/dist/components/notification/use-notification.js.map +1 -1
- package/dist/components/number-animation/number-animation.d.ts +14 -2
- package/dist/components/number-animation/number-animation.d.ts.map +1 -1
- package/dist/components/number-animation/number-animation.js +5 -1
- package/dist/components/number-animation/number-animation.js.map +1 -1
- package/dist/components/number-field/number-field.d.ts +16 -1
- package/dist/components/number-field/number-field.d.ts.map +1 -1
- package/dist/components/number-field/number-field.js +6 -0
- package/dist/components/number-field/number-field.js.map +1 -1
- package/dist/components/pagination/pagination.d.ts +22 -2
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +22 -1
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/pagination/use-pagination.js +1 -0
- package/dist/components/pagination/use-pagination.js.map +1 -1
- package/dist/components/pie-chart/context.js +15 -0
- package/dist/components/pie-chart/context.js.map +1 -0
- package/dist/components/pie-chart/pie-chart.d.ts +203 -0
- package/dist/components/pie-chart/pie-chart.d.ts.map +1 -0
- package/dist/components/pie-chart/pie-chart.js +236 -0
- package/dist/components/pie-chart/pie-chart.js.map +1 -0
- package/dist/components/pie-chart/use-pie-chart.d.ts +19 -0
- package/dist/components/pie-chart/use-pie-chart.d.ts.map +1 -0
- package/dist/components/pie-chart/use-pie-chart.js +26 -0
- package/dist/components/pie-chart/use-pie-chart.js.map +1 -0
- package/dist/components/popconfirm/popconfirm.js +2 -2
- package/dist/components/popover/popover.d.ts +11 -0
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/popover/popover.js +7 -2
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/progress/progress.d.ts +63 -3
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress/progress.js +55 -3
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/question-flow/question-flow.d.ts +40 -1
- package/dist/components/question-flow/question-flow.d.ts.map +1 -1
- package/dist/components/question-flow/question-flow.js +37 -1
- package/dist/components/question-flow/question-flow.js.map +1 -1
- package/dist/components/radar-chart/context.js +15 -0
- package/dist/components/radar-chart/context.js.map +1 -0
- package/dist/components/radar-chart/radar-chart.d.ts +189 -0
- package/dist/components/radar-chart/radar-chart.d.ts.map +1 -0
- package/dist/components/radar-chart/radar-chart.js +220 -0
- package/dist/components/radar-chart/radar-chart.js.map +1 -0
- package/dist/components/radar-chart/use-radar-chart.d.ts +19 -0
- package/dist/components/radar-chart/use-radar-chart.d.ts.map +1 -0
- package/dist/components/radar-chart/use-radar-chart.js +26 -0
- package/dist/components/radar-chart/use-radar-chart.js.map +1 -0
- package/dist/components/radio-group/radio-group.d.ts +37 -2
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.js +54 -8
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/radio-group/use-radio-group.d.ts +3 -1
- package/dist/components/radio-group/use-radio-group.d.ts.map +1 -1
- package/dist/components/radio-group/use-radio-group.js +7 -3
- package/dist/components/radio-group/use-radio-group.js.map +1 -1
- package/dist/components/reasoning/reasoning.d.ts +1 -1
- package/dist/components/reasoning/reasoning.d.ts.map +1 -1
- package/dist/components/reasoning/reasoning.js +1 -0
- package/dist/components/reasoning/reasoning.js.map +1 -1
- package/dist/components/sankey-chart/context.js +15 -0
- package/dist/components/sankey-chart/context.js.map +1 -0
- package/dist/components/sankey-chart/sankey-chart.d.ts +161 -0
- package/dist/components/sankey-chart/sankey-chart.d.ts.map +1 -0
- package/dist/components/sankey-chart/sankey-chart.js +208 -0
- package/dist/components/sankey-chart/sankey-chart.js.map +1 -0
- package/dist/components/sankey-chart/use-sankey-chart.d.ts +19 -0
- package/dist/components/sankey-chart/use-sankey-chart.d.ts.map +1 -0
- package/dist/components/sankey-chart/use-sankey-chart.js +26 -0
- package/dist/components/sankey-chart/use-sankey-chart.js.map +1 -0
- package/dist/components/scroll-area/scroll-area.d.ts +13 -5
- package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +17 -3
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/select/select.d.ts +7 -1
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +13 -4
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/use-select.js +2 -1
- package/dist/components/select/use-select.js.map +1 -1
- package/dist/components/side-nav/context.js +17 -1
- package/dist/components/side-nav/context.js.map +1 -1
- package/dist/components/side-nav/side-nav.d.ts +51 -7
- package/dist/components/side-nav/side-nav.d.ts.map +1 -1
- package/dist/components/side-nav/side-nav.js +152 -13
- package/dist/components/side-nav/side-nav.js.map +1 -1
- package/dist/components/side-nav/use-side-nav.d.ts +4 -2
- package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
- package/dist/components/side-nav/use-side-nav.js +5 -3
- package/dist/components/side-nav/use-side-nav.js.map +1 -1
- package/dist/components/signature-pad/signature-pad.d.ts +26 -4
- package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
- package/dist/components/signature-pad/signature-pad.js +32 -4
- package/dist/components/signature-pad/signature-pad.js.map +1 -1
- package/dist/components/signature-pad/use-signature-pad.d.ts +1 -1
- package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -1
- package/dist/components/signature-pad/use-signature-pad.js.map +1 -1
- package/dist/components/skeleton/use-skeleton.js +6 -2
- package/dist/components/skeleton/use-skeleton.js.map +1 -1
- package/dist/components/slider/slider.d.ts +27 -0
- package/dist/components/slider/slider.d.ts.map +1 -1
- package/dist/components/slider/slider.js +12 -0
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/sortable/sortable.d.ts +19 -1
- package/dist/components/sortable/sortable.d.ts.map +1 -1
- package/dist/components/sortable/sortable.js +7 -2
- package/dist/components/sortable/sortable.js.map +1 -1
- package/dist/components/sortable/use-sortable.d.ts +1 -1
- package/dist/components/sortable/use-sortable.d.ts.map +1 -1
- package/dist/components/sortable/use-sortable.js +2 -1
- package/dist/components/sortable/use-sortable.js.map +1 -1
- package/dist/components/sparkline/sparkline.d.ts +101 -0
- package/dist/components/sparkline/sparkline.d.ts.map +1 -0
- package/dist/components/sparkline/sparkline.js +54 -0
- package/dist/components/sparkline/sparkline.js.map +1 -0
- package/dist/components/sparkline/use-sparkline.d.ts +15 -0
- package/dist/components/sparkline/use-sparkline.d.ts.map +1 -0
- package/dist/components/sparkline/use-sparkline.js +21 -0
- package/dist/components/sparkline/use-sparkline.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +8 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -1
- package/dist/components/spinner/spinner.js +2 -0
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/spinner/use-spinner.js +4 -2
- package/dist/components/spinner/use-spinner.js.map +1 -1
- package/dist/components/steps/steps.d.ts +28 -1
- package/dist/components/steps/steps.d.ts.map +1 -1
- package/dist/components/steps/steps.js +11 -2
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/switch/switch.js +1 -1
- package/dist/components/table/context.js +9 -1
- package/dist/components/table/context.js.map +1 -1
- package/dist/components/table/table.d.ts +54 -5
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/table/table.js +40 -11
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/use-table.d.ts +3 -1
- package/dist/components/table/use-table.d.ts.map +1 -1
- package/dist/components/table/use-table.js +5 -2
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/tabs/tabs.d.ts +51 -3
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +60 -8
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tag/use-tag.d.ts.map +1 -1
- package/dist/components/tag/use-tag.js +3 -1
- package/dist/components/tag/use-tag.js.map +1 -1
- package/dist/components/tags-input/tags-input.d.ts +10 -2
- package/dist/components/tags-input/tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/tags-input.js +11 -4
- package/dist/components/tags-input/tags-input.js.map +1 -1
- package/dist/components/tags-input/use-tags-input.d.ts +4 -2
- package/dist/components/tags-input/use-tags-input.d.ts.map +1 -1
- package/dist/components/tags-input/use-tags-input.js +5 -2
- package/dist/components/tags-input/use-tags-input.js.map +1 -1
- package/dist/components/time-picker/time-picker.d.ts +11 -7
- package/dist/components/time-picker/time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/time-picker.js +4 -2
- package/dist/components/time-picker/time-picker.js.map +1 -1
- package/dist/components/time-range-picker/time-range-picker.d.ts +11 -7
- package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
- package/dist/components/time-range-picker/time-range-picker.js +4 -2
- package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
- package/dist/components/timer/timer.d.ts +1 -1
- package/dist/components/timestamp/timestamp.d.ts +20 -1
- package/dist/components/timestamp/timestamp.d.ts.map +1 -1
- package/dist/components/timestamp/timestamp.js +16 -5
- package/dist/components/timestamp/timestamp.js.map +1 -1
- package/dist/components/toolbar/toolbar.d.ts +17 -2
- package/dist/components/toolbar/toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/toolbar.js +31 -4
- package/dist/components/toolbar/toolbar.js.map +1 -1
- package/dist/components/toolbar/use-toolbar.d.ts +4 -2
- package/dist/components/toolbar/use-toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/use-toolbar.js +5 -2
- package/dist/components/toolbar/use-toolbar.js.map +1 -1
- package/dist/components/tooltip/context.d.ts +21 -0
- package/dist/components/tooltip/context.d.ts.map +1 -0
- package/dist/components/tooltip/context.js +10 -1
- package/dist/components/tooltip/context.js.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts +53 -1
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +34 -3
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/use-tooltip.d.ts +3 -18
- package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/use-tooltip.js +2 -0
- package/dist/components/tooltip/use-tooltip.js.map +1 -1
- package/dist/components/tour/tour.d.ts +9 -1
- package/dist/components/tour/tour.d.ts.map +1 -1
- package/dist/components/tour/tour.js +2 -0
- package/dist/components/tour/tour.js.map +1 -1
- package/dist/components/transfer/transfer.d.ts +21 -1
- package/dist/components/transfer/transfer.d.ts.map +1 -1
- package/dist/components/transfer/transfer.js +10 -2
- package/dist/components/transfer/transfer.js.map +1 -1
- package/dist/components/tree/tree.d.ts +34 -1
- package/dist/components/tree/tree.d.ts.map +1 -1
- package/dist/components/tree/tree.js +11 -0
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree-select/context.js +10 -1
- package/dist/components/tree-select/context.js.map +1 -1
- package/dist/components/tree-select/tree-select.d.ts +70 -6
- package/dist/components/tree-select/tree-select.d.ts.map +1 -1
- package/dist/components/tree-select/tree-select.js +109 -12
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/use-tree-select.d.ts +3 -0
- package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
- package/dist/components/tree-select/use-tree-select.js +6 -1
- package/dist/components/tree-select/use-tree-select.js.map +1 -1
- package/dist/components/truncate/truncate.d.ts +25 -4
- package/dist/components/truncate/truncate.d.ts.map +1 -1
- package/dist/components/truncate/truncate.js +29 -14
- package/dist/components/truncate/truncate.js.map +1 -1
- package/dist/components/truncate/use-truncate.d.ts.map +1 -1
- package/dist/components/truncate/use-truncate.js +3 -1
- package/dist/components/truncate/use-truncate.js.map +1 -1
- package/dist/components/typography/typography.d.ts +35 -2
- package/dist/components/typography/typography.d.ts.map +1 -1
- package/dist/components/typography/typography.js +21 -3
- package/dist/components/typography/typography.js.map +1 -1
- package/dist/components/virtualizer/virtualizer.d.ts +26 -2
- package/dist/components/virtualizer/virtualizer.d.ts.map +1 -1
- package/dist/components/virtualizer/virtualizer.js +20 -3
- package/dist/components/virtualizer/virtualizer.js.map +1 -1
- package/dist/components/watermark/watermark.d.ts +14 -1
- package/dist/components/watermark/watermark.d.ts.map +1 -1
- package/dist/components/watermark/watermark.js +20 -5
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/config/config.d.ts +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -1
- package/dist/config/config.js.map +1 -1
- package/dist/index.d.ts +59 -44
- package/dist/index.js +53 -38
- package/dist/package.js +1 -1
- package/dist/runtime/as-child.js +3 -2
- package/dist/runtime/as-child.js.map +1 -1
- package/dist/runtime/hydration.js +14 -0
- package/dist/runtime/hydration.js.map +1 -0
- package/dist/runtime/use-overlay-exit.js +0 -1
- package/dist/runtime/use-overlay-exit.js.map +1 -1
- package/dist/services/notification-service.d.ts +26 -7
- package/dist/services/notification-service.d.ts.map +1 -1
- package/dist/services/notification-service.js +35 -8
- package/dist/services/notification-service.js.map +1 -1
- package/dist/sound.d.ts +6 -7
- package/dist/sound.d.ts.map +1 -1
- package/dist/sound.js +6 -6
- package/dist/sound.js.map +1 -1
- package/package.json +15 -14
- package/dist/components/gradient-text/gradient-text.d.ts +0 -36
- package/dist/components/gradient-text/gradient-text.d.ts.map +0 -1
- package/dist/components/gradient-text/gradient-text.js +0 -20
- package/dist/components/gradient-text/gradient-text.js.map +0 -1
- package/dist/components/icon-wrapper/icon-wrapper.d.ts +0 -29
- package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +0 -1
- package/dist/components/icon-wrapper/icon-wrapper.js +0 -20
- package/dist/components/icon-wrapper/icon-wrapper.js.map +0 -1
- package/dist/components/segmented/context.d.ts +0 -13
- package/dist/components/segmented/context.d.ts.map +0 -1
- package/dist/components/segmented/context.js +0 -24
- package/dist/components/segmented/context.js.map +0 -1
- package/dist/components/segmented/segmented.d.ts +0 -161
- package/dist/components/segmented/segmented.d.ts.map +0 -1
- package/dist/components/segmented/segmented.js +0 -142
- package/dist/components/segmented/segmented.js.map +0 -1
- package/dist/components/segmented/use-segmented.d.ts +0 -15
- package/dist/components/segmented/use-segmented.d.ts.map +0 -1
- package/dist/components/segmented/use-segmented.js +0 -22
- package/dist/components/segmented/use-segmented.js.map +0 -1
- package/dist/components/toast/context.js +0 -15
- package/dist/components/toast/context.js.map +0 -1
- package/dist/components/toast/toast.d.ts +0 -123
- package/dist/components/toast/toast.d.ts.map +0 -1
- package/dist/components/toast/toast.js +0 -112
- package/dist/components/toast/toast.js.map +0 -1
- package/dist/components/toast/use-toast.d.ts +0 -10
- package/dist/components/toast/use-toast.d.ts.map +0 -1
- package/dist/components/toast/use-toast.js +0 -17
- package/dist/components/toast/use-toast.js.map +0 -1
- package/dist/services/toast-service.d.ts +0 -69
- package/dist/services/toast-service.d.ts.map +0 -1
- package/dist/services/toast-service.js +0 -161
- package/dist/services/toast-service.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PayloadOf } from "../../runtime/payload.js";
|
|
2
2
|
import { PropType, SlotsType, VNode } from "vue";
|
|
3
3
|
import { ControlVariant, Direction, Placement, Size, Tone } from "@xihan-ui/core";
|
|
4
|
-
import { CalendarGranularity, CalendarRangePickerApi, CalendarView, DateFieldSegmentState, DateRangePickerApi, DateRangePickerPreset, DateRangePickerPresetState, DateRangePickerSchema, DateSegmentSet, DateSegmentType } from "@xihan-ui/headless";
|
|
4
|
+
import { CalendarGranularity, CalendarRangePickerApi, CalendarView, DateFieldSegmentState, DateRangePickerApi, DateRangePickerEndIndex, DateRangePickerPreset, DateRangePickerPresetState, DateRangePickerSchema, DateSegmentSet, DateSegmentType, TimeHourCycle, TimeStep, TimeUnavailablePredicate } from "@xihan-ui/headless";
|
|
5
5
|
//#region src/components/date-range-picker/date-range-picker.d.ts
|
|
6
6
|
type DateRangePickerProps = DateRangePickerSchema['props'];
|
|
7
7
|
/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */
|
|
@@ -41,6 +41,10 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
41
41
|
locale: {
|
|
42
42
|
type: StringConstructor;
|
|
43
43
|
};
|
|
44
|
+
/** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */
|
|
45
|
+
firstDayOfWeek: {
|
|
46
|
+
type: NumberConstructor;
|
|
47
|
+
};
|
|
44
48
|
timeZone: {
|
|
45
49
|
type: StringConstructor;
|
|
46
50
|
};
|
|
@@ -129,6 +133,34 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
129
133
|
type: BooleanConstructor;
|
|
130
134
|
default: undefined;
|
|
131
135
|
};
|
|
136
|
+
/** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */
|
|
137
|
+
showTime: {
|
|
138
|
+
type: BooleanConstructor;
|
|
139
|
+
default: undefined;
|
|
140
|
+
};
|
|
141
|
+
timeGranularity: {
|
|
142
|
+
type: PropType<DateRangePickerProps["timeGranularity"]>;
|
|
143
|
+
};
|
|
144
|
+
/** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */
|
|
145
|
+
hourCycle: {
|
|
146
|
+
type: PropType<TimeHourCycle>;
|
|
147
|
+
};
|
|
148
|
+
/** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */
|
|
149
|
+
timeStep: {
|
|
150
|
+
type: PropType<TimeStep>;
|
|
151
|
+
};
|
|
152
|
+
/** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */
|
|
153
|
+
isTimeUnavailable: {
|
|
154
|
+
type: PropType<TimeUnavailablePredicate>;
|
|
155
|
+
};
|
|
156
|
+
/** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */
|
|
157
|
+
defaultTime: {
|
|
158
|
+
type: PropType<[string, string]>;
|
|
159
|
+
};
|
|
160
|
+
/** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */
|
|
161
|
+
activeIndex: {
|
|
162
|
+
type: PropType<DateRangePickerEndIndex>;
|
|
163
|
+
};
|
|
132
164
|
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
133
165
|
[key: string]: any;
|
|
134
166
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
@@ -139,6 +171,8 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
139
171
|
'update:value': (_value: PayloadOf<DateRangePickerProps, "onValueChange">["value"]) => true;
|
|
140
172
|
'update:open': (_open: PayloadOf<DateRangePickerProps, "onOpenChange">["open"]) => true;
|
|
141
173
|
'update:activeView': (_view: PayloadOf<DateRangePickerProps, "onActiveViewChange">["activeView"]) => true;
|
|
174
|
+
'active-index-change': (_details: PayloadOf<DateRangePickerProps, "onActiveIndexChange">) => true;
|
|
175
|
+
'update:activeIndex': (_index: PayloadOf<DateRangePickerProps, "onActiveIndexChange">["activeIndex"]) => true;
|
|
142
176
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
143
177
|
/** 区间两端 [start, end];空缺的一端用空串占位。 */
|
|
144
178
|
value: {
|
|
@@ -161,6 +195,10 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
161
195
|
locale: {
|
|
162
196
|
type: StringConstructor;
|
|
163
197
|
};
|
|
198
|
+
/** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */
|
|
199
|
+
firstDayOfWeek: {
|
|
200
|
+
type: NumberConstructor;
|
|
201
|
+
};
|
|
164
202
|
timeZone: {
|
|
165
203
|
type: StringConstructor;
|
|
166
204
|
};
|
|
@@ -249,6 +287,34 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
249
287
|
type: BooleanConstructor;
|
|
250
288
|
default: undefined;
|
|
251
289
|
};
|
|
290
|
+
/** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */
|
|
291
|
+
showTime: {
|
|
292
|
+
type: BooleanConstructor;
|
|
293
|
+
default: undefined;
|
|
294
|
+
};
|
|
295
|
+
timeGranularity: {
|
|
296
|
+
type: PropType<DateRangePickerProps["timeGranularity"]>;
|
|
297
|
+
};
|
|
298
|
+
/** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */
|
|
299
|
+
hourCycle: {
|
|
300
|
+
type: PropType<TimeHourCycle>;
|
|
301
|
+
};
|
|
302
|
+
/** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */
|
|
303
|
+
timeStep: {
|
|
304
|
+
type: PropType<TimeStep>;
|
|
305
|
+
};
|
|
306
|
+
/** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */
|
|
307
|
+
isTimeUnavailable: {
|
|
308
|
+
type: PropType<TimeUnavailablePredicate>;
|
|
309
|
+
};
|
|
310
|
+
/** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */
|
|
311
|
+
defaultTime: {
|
|
312
|
+
type: PropType<[string, string]>;
|
|
313
|
+
};
|
|
314
|
+
/** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */
|
|
315
|
+
activeIndex: {
|
|
316
|
+
type: PropType<DateRangePickerEndIndex>;
|
|
317
|
+
};
|
|
252
318
|
}>> & Readonly<{
|
|
253
319
|
"onValue-change"?: ((_details: import("@xihan-ui/headless").DateRangePickerValueChangeDetails) => any) | undefined;
|
|
254
320
|
"onUpdate:value"?: ((_value: string[]) => any) | undefined;
|
|
@@ -257,6 +323,8 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
257
323
|
"onFocused-value-change"?: ((_details: import("@xihan-ui/headless").DateRangePickerFocusChangeDetails) => any) | undefined;
|
|
258
324
|
"onActive-view-change"?: ((_details: import("@xihan-ui/headless").CalendarViewChangeDetails) => any) | undefined;
|
|
259
325
|
"onUpdate:activeView"?: ((_view: CalendarGranularity) => any) | undefined;
|
|
326
|
+
"onActive-index-change"?: ((_details: import("@xihan-ui/headless").DateRangePickerActiveIndexChangeDetails) => any) | undefined;
|
|
327
|
+
"onUpdate:activeIndex"?: ((_index: DateRangePickerEndIndex) => any) | undefined;
|
|
260
328
|
}>, {
|
|
261
329
|
required: boolean;
|
|
262
330
|
invalid: boolean;
|
|
@@ -267,6 +335,7 @@ declare const XhDateRangePickerRoot: import("vue").DefineComponent<import("vue")
|
|
|
267
335
|
fixedWeeks: boolean;
|
|
268
336
|
allowsNonContiguousRanges: boolean;
|
|
269
337
|
closeOnSelect: boolean;
|
|
338
|
+
showTime: boolean;
|
|
270
339
|
}, SlotsType<{
|
|
271
340
|
default?: (props: DateRangePickerRootSlotProps) => VNode[];
|
|
272
341
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -378,6 +447,12 @@ declare const XhDateRangePickerPreset: import("vue").DefineComponent<import("vue
|
|
|
378
447
|
/** 条目内容;未写时使用数据中的 label。 */
|
|
379
448
|
default?: () => VNode[];
|
|
380
449
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
450
|
+
declare const XhDateRangePickerTimePanel: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
451
|
+
[key: string]: any;
|
|
452
|
+
}>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
453
|
+
declare const XhDateRangePickerConfirmTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
454
|
+
[key: string]: any;
|
|
455
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
381
456
|
declare const XhDateRangePickerHeader: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
382
457
|
[key: string]: any;
|
|
383
458
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -526,5 +601,5 @@ declare const XhDateRangePickerHiddenInput: import("vue").DefineComponent<import
|
|
|
526
601
|
};
|
|
527
602
|
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
528
603
|
//#endregion
|
|
529
|
-
export { DateRangePickerPresetsSlotProps, DateRangePickerRootSlotProps, DateRangePickerSegmentSlotProps, XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow };
|
|
604
|
+
export { DateRangePickerPresetsSlotProps, DateRangePickerRootSlotProps, DateRangePickerSegmentSlotProps, XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerConfirmTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTimePanel, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow };
|
|
530
605
|
//# sourceMappingURL=date-range-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.d.ts","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"date-range-picker.d.ts","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"mappings":";;;;;KAgDK,uBAAuB;;KAYhB,+BACN,KACF,2IAYA,KACA;;EAYA,UAAU;;EAEV,aAAa;;;UAIA;EACf,SAAS;;;UAIM;EACf,kBAAkB;;cAGP,qCAAqB,8BAAA;;;IAKN,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;IAUA,MAAA,SAAS;;;;IAEV,MAAA,SAAS;;;;IAEZ,MAAA,SAAS;;;;;;;;;;;;;;;;;IAQV,MAAA,SAAS;;;IACI,MAAA,UAAU,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWhC,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACJ,MAAA,SAAS;;;;;;;IAGf,MAAA,SAAS;;;;;;;;;;;;IAIG,MAAA,SAAS;;;;IAEf,MAAA,SAAS;;;;IAEV,MAAA,SAAS;;;;IAEE,MAAA,SAAS;;;;IAEP,MAAA;;;;IAEV,MAAA,SAAS;;;;;EAIb,iBAAA,UAAA,UAAU;EACX,gBAAA,UAAA,UAAU;EACD,yBAAA,UAAA,UAAU;EACZ,uBAAA,UAAA,UAAU;EAClB,iBAAA,QAAA,UAAU;EACZ,gBAAA,OAAA,UAAU;EACJ,sBAAA,OAAA,UAAU;EACL,wBAAA,UAAA,UAAU;EACb,uBAAA,QAAA,UAAU;;;;IApEjB,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;IAUA,MAAA,SAAS;;;;IAEV,MAAA,SAAS;;;;IAEZ,MAAA,SAAS;;;;;;;;;;;;;;;;;IAQV,MAAA,SAAS;;;IACI,MAAA,UAAU,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWhC,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACJ,MAAA,SAAS;;;;;;;IAGf,MAAA,SAAS;;;;;;;;;;;;IAIG,MAAA,SAAS;;;;IAEf,MAAA,SAAS;;;;IAEV,MAAA,SAAS;;;;IAEE,MAAA,SAAS;;;;IAEP,MAAA;;;;IAEV,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;EAe9B,WAAC,OAAO,iCAAiC;kCAsDrD;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAOjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BASnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6CAA6B,8BAAA;;IAIH,MAAA;;;;;;;IAAA,MAAA;;;;;qCAcrC;cAEW,wCAAwB,8BAAA;;IAIE,MAAA;;;;IAER,MAAA,SAAS;;;;;;IAFD,MAAA;;;;IAER,MAAA,SAAS;;;EAG1B,WAAC,OAAO,oCAAoC;kCAoBxD;cAEW,+CAA+B,0BAAA,oBAAA,4BAAA;;8BAU1C,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6CAA6B,0BAAA,oBAAA,4BAAA;;8BAMxC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAUnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2CAA2B,8BAAA;;;IAIP,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;MA8BxC,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAYnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAIW,yCAAyB,8BAAA;;;;;;;;;;;;;;;;qCAYpC;cAEW,4CAA4B,0BAAA,oBAAA,4BAAA;;;;EAI3B,WAAC,OAAO,oCAAoC;kCAqCxD;cAEW,uCAAuB,8BAAA;;;;;;;;;;;;;;;;EAQtB,gBAAM;kCAclB;cA6CW,0CAA0B,0BAAA,oBAAA,4BAAA;;gCAcrC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+CAA+B,0BAAA,oBAAA,4BAAA;;8BAM1C,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gDAAgC,0BAAA,oBAAA,4BAAA;;8BAM3C,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4CAA4B,0BAAA,oBAAA,4BAAA;;8BAMvC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4CAA4B,0BAAA,oBAAA,4BAAA;;8BAMvC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gDAAgC,0BAAA,oBAAA,4BAAA;;8BAM3C,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,8BAAA;;;;;;;;;;;;MAgBnC,oDAAA;cAEW,mDAAmC,8BAAA;;;;;;;;;;;;MAgB9C,oDAAA;cAEW,oDAAoC,8BAAA;;;;;;;;;;;;MAe/C,oDAAA;cAEW,qCAAqB,8BAAA;;;;;;;;;;;;MAmBhC,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAMpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,yCAAyB,0BAAA,oBAAA,4BAAA;;8BAMpC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAGW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2CAA2B,8BAAA;;;;;;;;;;;;;;MAetC,oDAAA;cAEW,wCAAwB,8BAAA;;IAIE,MAAA;;;;;;;IAAA,MAAA;;;MAWrC,oDAAA;cAEW,qCAAqB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmBhC,oDAAA;cAEW,4CAA4B,0BAAA,oBAAA,4BAAA;;8BAWvC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4CAA4B,8BAAA;;IAIF,MAAA;;;;;;IAAA,MAAA;;MAUrC,oDAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { withXhConfig } from "../../config/config.js";
|
|
2
2
|
import { XhPortal } from "../../runtime/portal.js";
|
|
3
|
+
import { slotPaints } from "../../runtime/slot-content.js";
|
|
3
4
|
import { useScrollbars } from "../../runtime/use-scrollbars.js";
|
|
4
5
|
import { useFormControlProps } from "../form/use-form-control.js";
|
|
5
6
|
import { useFieldLabelWiring, useFieldStateWiring } from "../field/use-field-control.js";
|
|
6
|
-
import { slotPaints } from "../../runtime/slot-content.js";
|
|
7
7
|
import { provideDateRangePicker, provideDateRangePickerCell, provideDateRangePickerPanel, provideDateRangePickerSegmentGroup, useDateRangePickerCellContext, useDateRangePickerContext, useDateRangePickerPanelContext, useDateRangePickerSegmentGroupContext } from "./context.js";
|
|
8
8
|
import { useDateRangePickerWithRoot } from "./use-date-range-picker.js";
|
|
9
9
|
import { computed, defineComponent, h, mergeProps, onUpdated, ref } from "vue";
|
|
@@ -31,6 +31,8 @@ const XhDateRangePickerRoot = defineComponent({
|
|
|
31
31
|
min: { type: String },
|
|
32
32
|
max: { type: String },
|
|
33
33
|
locale: { type: String },
|
|
34
|
+
/** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */
|
|
35
|
+
firstDayOfWeek: { type: Number },
|
|
34
36
|
timeZone: { type: String },
|
|
35
37
|
/** 选择粒度;两组输入行铺设哪几段也跟随它。 */
|
|
36
38
|
granularity: { type: String },
|
|
@@ -84,7 +86,23 @@ const XhDateRangePickerRoot = defineComponent({
|
|
|
84
86
|
closeOnSelect: {
|
|
85
87
|
type: Boolean,
|
|
86
88
|
default: void 0
|
|
87
|
-
}
|
|
89
|
+
},
|
|
90
|
+
/** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */
|
|
91
|
+
showTime: {
|
|
92
|
+
type: Boolean,
|
|
93
|
+
default: void 0
|
|
94
|
+
},
|
|
95
|
+
timeGranularity: { type: String },
|
|
96
|
+
/** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */
|
|
97
|
+
hourCycle: { type: Number },
|
|
98
|
+
/** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */
|
|
99
|
+
timeStep: { type: Object },
|
|
100
|
+
/** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */
|
|
101
|
+
isTimeUnavailable: { type: Function },
|
|
102
|
+
/** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */
|
|
103
|
+
defaultTime: { type: Array },
|
|
104
|
+
/** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */
|
|
105
|
+
activeIndex: { type: Number }
|
|
88
106
|
},
|
|
89
107
|
emits: {
|
|
90
108
|
"value-change": (_details) => true,
|
|
@@ -93,7 +111,9 @@ const XhDateRangePickerRoot = defineComponent({
|
|
|
93
111
|
"active-view-change": (_details) => true,
|
|
94
112
|
"update:value": (_value) => true,
|
|
95
113
|
"update:open": (_open) => true,
|
|
96
|
-
"update:activeView": (_view) => true
|
|
114
|
+
"update:activeView": (_view) => true,
|
|
115
|
+
"active-index-change": (_details) => true,
|
|
116
|
+
"update:activeIndex": (_index) => true
|
|
97
117
|
},
|
|
98
118
|
slots: Object,
|
|
99
119
|
setup(props, { slots, emit }) {
|
|
@@ -111,11 +131,16 @@ const XhDateRangePickerRoot = defineComponent({
|
|
|
111
131
|
emit("active-view-change", details);
|
|
112
132
|
emit("update:activeView", details.activeView);
|
|
113
133
|
};
|
|
134
|
+
const notifyActiveIndex = (details) => {
|
|
135
|
+
emit("active-index-change", details);
|
|
136
|
+
emit("update:activeIndex", details.activeIndex);
|
|
137
|
+
};
|
|
114
138
|
const ctx = useDateRangePickerWithRoot(withXhConfig("date-range-picker", useFormControlProps(props)), {
|
|
115
139
|
onValueChange: notifyValue,
|
|
116
140
|
onOpenChange: notifyOpen,
|
|
117
141
|
onFocusedValueChange: notifyFocus,
|
|
118
|
-
onActiveViewChange: notifyActiveView
|
|
142
|
+
onActiveViewChange: notifyActiveView,
|
|
143
|
+
onActiveIndexChange: notifyActiveIndex
|
|
119
144
|
}, rootRef);
|
|
120
145
|
provideDateRangePicker(ctx);
|
|
121
146
|
return () => h("div", {
|
|
@@ -331,6 +356,78 @@ value: {
|
|
|
331
356
|
};
|
|
332
357
|
}
|
|
333
358
|
});
|
|
359
|
+
/** 一列时间选项连同贴在它盒子上的竖条:每列一台滚动条机器,列数随精度与小时制变时组件实例跟着增减。 */
|
|
360
|
+
const XhDateRangePickerTimeColumnHost = defineComponent({
|
|
361
|
+
name: "XhDateRangePickerTimeColumnHost",
|
|
362
|
+
props: {
|
|
363
|
+
index: {
|
|
364
|
+
type: Number,
|
|
365
|
+
required: true
|
|
366
|
+
},
|
|
367
|
+
unit: {
|
|
368
|
+
type: String,
|
|
369
|
+
required: true
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
setup(props) {
|
|
373
|
+
const ctx = useDateRangePickerContext();
|
|
374
|
+
const timeColumnRef = ref(null);
|
|
375
|
+
const bars = useScrollbars({
|
|
376
|
+
scrollable: () => timeColumnRef.value,
|
|
377
|
+
anchor: "layer",
|
|
378
|
+
props: () => ({
|
|
379
|
+
dir: ctx.api.value.getPositionerProps().dir,
|
|
380
|
+
size: "sm"
|
|
381
|
+
})
|
|
382
|
+
});
|
|
383
|
+
onUpdated(() => bars.measure());
|
|
384
|
+
return () => {
|
|
385
|
+
const api = ctx.api.value;
|
|
386
|
+
const column = api.timeColumnGroups[props.index].columns.find((item) => item.unit === props.unit);
|
|
387
|
+
if (!column) return null;
|
|
388
|
+
return [h("div", {
|
|
389
|
+
...api.getTimeColumnProps({
|
|
390
|
+
index: props.index,
|
|
391
|
+
unit: column.unit
|
|
392
|
+
}),
|
|
393
|
+
ref: (el) => {
|
|
394
|
+
timeColumnRef.value = el;
|
|
395
|
+
}
|
|
396
|
+
}, column.options.map((option) => h("div", {
|
|
397
|
+
...api.getTimeItemProps({
|
|
398
|
+
index: props.index,
|
|
399
|
+
unit: column.unit,
|
|
400
|
+
value: option
|
|
401
|
+
}),
|
|
402
|
+
key: option
|
|
403
|
+
}, api.getTimeItemText({
|
|
404
|
+
unit: column.unit,
|
|
405
|
+
value: option
|
|
406
|
+
})))), ...bars.render()];
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
const XhDateRangePickerTimePanel = defineComponent({
|
|
411
|
+
name: "XhDateRangePickerTimePanel",
|
|
412
|
+
setup() {
|
|
413
|
+
const ctx = useDateRangePickerContext();
|
|
414
|
+
return () => ctx.api.value.timeColumnGroups.map((group) => h("div", {
|
|
415
|
+
...ctx.api.value.getColumnGroupProps({ index: group.index }),
|
|
416
|
+
key: group.index
|
|
417
|
+
}, [h("div", ctx.api.value.getColumnGroupLabelProps({ index: group.index }), group.label), ...group.columns.map((column) => h(XhDateRangePickerTimeColumnHost, {
|
|
418
|
+
index: group.index,
|
|
419
|
+
unit: column.unit,
|
|
420
|
+
key: column.unit
|
|
421
|
+
}))]));
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
const XhDateRangePickerConfirmTrigger = defineComponent({
|
|
425
|
+
name: "XhDateRangePickerConfirmTrigger",
|
|
426
|
+
setup(_, { slots }) {
|
|
427
|
+
const ctx = useDateRangePickerContext();
|
|
428
|
+
return () => h("button", ctx.api.value.getConfirmTriggerProps(), slots.default?.());
|
|
429
|
+
}
|
|
430
|
+
});
|
|
334
431
|
const XhDateRangePickerHeader = defineComponent({
|
|
335
432
|
name: "XhDateRangePickerHeader",
|
|
336
433
|
setup(_, { slots }) {
|
|
@@ -505,6 +602,6 @@ const XhDateRangePickerHiddenInput = defineComponent({
|
|
|
505
602
|
}
|
|
506
603
|
});
|
|
507
604
|
//#endregion
|
|
508
|
-
export { XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow };
|
|
605
|
+
export { XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerConfirmTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTimePanel, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow };
|
|
509
606
|
|
|
510
607
|
//# sourceMappingURL=date-range-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DateRangePickerApi,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentSet,\n DateSegmentType,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const ctx = useDateRangePickerWithRoot(withXhConfig('date-range-picker', useFormControlProps(props)) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\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 XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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 XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\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?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\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 ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\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 = useDateRangePickerContext()\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 XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DatePickerTimeUnit,\n DateRangePickerApi,\n DateRangePickerEndIndex,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentSet,\n DateSegmentType,\n TimeHourCycle,\n TimeStep,\n TimeUnavailablePredicate,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n /** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */\n firstDayOfWeek: { type: Number },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n /** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */\n showTime: { type: Boolean, default: undefined },\n timeGranularity: { type: String as PropType<DateRangePickerProps['timeGranularity']> },\n /** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n /** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */\n timeStep: { type: Object as PropType<TimeStep> },\n /** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */\n isTimeUnavailable: { type: Function as PropType<TimeUnavailablePredicate> },\n /** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */\n defaultTime: { type: Array as unknown as PropType<[string, string]> },\n /** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */\n activeIndex: { type: Number as PropType<DateRangePickerEndIndex> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n 'active-index-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>) => true,\n 'update:activeIndex': (_index: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>['activeIndex']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const notifyActiveIndex: DateRangePickerProps['onActiveIndexChange'] = (details) => {\n emit('active-index-change', details)\n emit('update:activeIndex', details.activeIndex)\n }\n const ctx = useDateRangePickerWithRoot(withXhConfig('date-range-picker', useFormControlProps(props)) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n onActiveIndexChange: notifyActiveIndex,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\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 XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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 XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\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?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\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 ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\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 = useDateRangePickerContext()\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\n/** 一列时间选项连同贴在它盒子上的竖条:每列一台滚动条机器,列数随精度与小时制变时组件实例跟着增减。 */\nconst XhDateRangePickerTimeColumnHost = defineComponent({\n name: 'XhDateRangePickerTimeColumnHost',\n props: {\n index: { type: Number as PropType<DateRangePickerEndIndex>, required: true },\n unit: { type: String as PropType<DatePickerTimeUnit>, required: true },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const timeColumnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => timeColumnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const column = api.timeColumnGroups[props.index].columns.find(item => item.unit === props.unit)\n if (!column)\n return null\n return [\n h(\n 'div',\n {\n ...api.getTimeColumnProps({ index: props.index, unit: column.unit }) as Record<string, unknown>,\n ref: (el: unknown) => { timeColumnRef.value = el as HTMLElement },\n },\n column.options.map(option =>\n h(\n 'div',\n { ...api.getTimeItemProps({ index: props.index, unit: column.unit, value: option }) as Record<string, unknown>, key: option },\n api.getTimeItemText({ unit: column.unit, value: option }),\n ),\n ),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerTimePanel = defineComponent({\n name: 'XhDateRangePickerTimePanel',\n setup() {\n const ctx = useDateRangePickerContext()\n // 起止两组时间列整组自动铺:每组一个外壳、一行小标题与时/分[/秒][/上下午]各一列;没开 showTime 时整组带 hidden\n return () => ctx.api.value.timeColumnGroups.map(group =>\n h('div', { ...ctx.api.value.getColumnGroupProps({ index: group.index }) as Record<string, unknown>, key: group.index }, [\n h('div', ctx.api.value.getColumnGroupLabelProps({ index: group.index }) as Record<string, unknown>, group.label),\n ...group.columns.map(column =>\n h(XhDateRangePickerTimeColumnHost, { index: group.index, unit: column.unit, key: column.unit }),\n ),\n ]),\n )\n },\n})\n\nexport const XhDateRangePickerConfirmTrigger = defineComponent({\n name: 'XhDateRangePickerConfirmTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getConfirmTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ interface DateRangePickerContext {
|
|
|
15
15
|
/** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */
|
|
16
16
|
portalTarget: ComputedRef<string | Element>;
|
|
17
17
|
}
|
|
18
|
-
type DateRangePickerHandlers = Pick<DateRangePickerSchema['props'], 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange'>;
|
|
18
|
+
type DateRangePickerHandlers = Pick<DateRangePickerSchema['props'], 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange' | 'onActiveIndexChange'>;
|
|
19
19
|
/** 公开 composable 保留 ambient Scope 合同。 */
|
|
20
20
|
declare function useDateRangePicker(props: DateRangePickerSchema['props'], handlers?: DateRangePickerHandlers): DateRangePickerContext;
|
|
21
21
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/use-date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use date range picker 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/core'\nimport type { CalendarRangePickerSchema, DateFieldSchema, DateRangePickerApi, DateRangePickerSchema, DateRangePickerServices } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope, isElement } from '@xihan-ui/core'\nimport {\n calendarRangePickerMachine,\n connectDateRangePicker,\n dateFieldMachine,\n dateRangePickerCalendarProps,\n dateRangePickerFieldEndProps,\n dateRangePickerFieldProps,\n dateRangePickerMachine,\n} from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref, shallowRef, watch } 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 DateRangePickerContext {\n api: ComputedRef<DateRangePickerApi>\n /** 四台状态机的句柄,供部件上报 DOM 侧的事实。 */\n services: DateRangePickerServices\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n gridRef: Ref<HTMLElement | null>\n /** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */\n portalTarget: ComputedRef<string | Element>\n}\n\ntype DateRangePickerHandlers = Pick<\n DateRangePickerSchema['props'],\n 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange'\n>\n\n/** 已创建的 RuntimeConfig 永久归属首次根节点的 Document;动态 Scope 后续不能改写这份事实。 */\nexport function assertDateRangePickerRootDocument(expected: Document, node: Element): void {\n if (node.ownerDocument !== expected)\n throw new Error('[xh] DateRangePicker 根节点不能在运行期切换 Document')\n}\n\n/** 显式 Portal 是同 realm 目标,不是 Scope 来源;字段存在时 null 与伪节点都属于配置错误。 */\nexport function resolveDateRangePickerPortalTarget(\n runtime: RuntimeConfig,\n resolver: (() => unknown) | undefined,\n): Element | undefined {\n if (!resolver)\n return undefined\n const target = resolver()\n if (!isElement(target))\n throw new TypeError('[xh] DateRangePicker 的 portalContainer 必须返回 Element')\n if (target.ownerDocument !== runtime.layerRegistry.ownerDocument)\n throw new Error('[xh] DateRangePicker 的 portalContainer 必须与组件根属于同一 Document')\n return target\n}\n\nfunction createDateRangePickerContext(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef?: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\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 const gridRef = ref<HTMLElement | null>(null)\n\n // 四台机器共用一份 scope,part id 里带组件名区分;两组段位不产出 id,同 scope 不会撞\n const idGen = createVueIdGenerator()\n const scope = rootRef ? createScope(() => rootRef.value, idGen) : createScope(null, idGen)\n\n // 三台内嵌机器的 props 都从编排机现读,编排机须先建立\n const root = useMachine(dateRangePickerMachine, () => ({ ...props, ...handlers }), scope)\n const calendar = useMachine<CalendarRangePickerSchema>(calendarRangePickerMachine, () => dateRangePickerCalendarProps(root), scope)\n const field = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldProps(root), scope)\n // 终点那组段位:与起点那组同一台分段输入机器,各管区间的一端\n const fieldEnd = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldEndProps(root), scope)\n const services: DateRangePickerServices = { root, calendar, field, fieldEnd }\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n const config = shallowRef<RuntimeConfig | null>(null)\n let runtimeDocument: Document | null = null\n\n if (typeof document !== 'undefined') {\n const installConfig = (node?: HTMLElement): void => {\n const current = config.value\n if (current) {\n // scope 读取的是动态 rootRef;这里必须与创建配置时冻结的 Document 比,不能拿新根和自己比。\n if (node)\n assertDateRangePickerRootDocument(runtimeDocument!, node)\n return\n }\n\n const next = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => next.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点 trigger 或段位算层内交互;\n // 浮层壳一并记上:content 之外还浮着自绘滚动条,按住它拖动不该把浮层消解掉\n branches: () => [controlRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n root.refs.set('config', next)\n root.refs.set('registerLayer', registerLayer)\n runtimeDocument = next.layerRegistry.ownerDocument\n config.value = next\n }\n\n if (rootRef) {\n // 元素 ref 在 mounted hooks 之前同步提交:先绑定真实 realm、再让四台 service 启动。\n watch(rootRef, (node) => {\n if (node)\n installConfig(node)\n }, { flush: 'sync', immediate: true })\n }\n else {\n // 直接调用公开 composable 的既有合同仍代表 ambient Document。\n installConfig()\n }\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n root.refs.set('position', createPositionEngine())\n root.refs.set('getAnchorEl', () => controlRef.value)\n root.refs.set('getFloatingEl', () => positionerRef.value)\n }\n\n // 跨月后的焦点落点要等重渲,日历机器推迟一拍再从这里取网格现查\n calendar.refs.set('getGridEl', () => gridRef.value)\n // 挑到一半时,指针在浮层与输入行之外松开就地收口\n calendar.refs.set('getBoundaryEls', () => [contentRef.value, controlRef.value])\n\n const api = computed(() => connectDateRangePicker(services, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => root.refs.set('presence', presence),\n })\n // 显式配置只选择同一 Document 内的落点,不能反过来决定 Scope,也不能跨 realm 搬运。\n const portalTarget = computed<string | Element>(() => {\n const runtime = config.value\n // 首次 render 时 rootRef 还没提交;不读取显式 getter,Portal 在来源位置正常挂载。\n if (!runtime)\n return 'body'\n const explicitTarget = resolveDateRangePickerPortalTarget(runtime, xhConfig.value.portalContainer)\n if (explicitTarget)\n return explicitTarget\n const defaultTarget = runtime.portalContainer()\n if (!isElement(defaultTarget))\n throw new TypeError('[xh] DateRangePicker 的运行时 portalContainer 必须返回 Element')\n return defaultTarget\n })\n\n if (typeof document !== 'undefined') {\n root.refs.set('getContentEl', () => {\n const content = contentRef.value\n if (!content || !rootRef)\n return content\n // 首次 mounted 时正文仍可能原地挂载,随后 Teleport 搬运会丢失刚取得的焦点。\n // 以真正进入目标容器为就绪事实,焦点域沿既有挂载流程等待,不提前聚焦临时位置。\n const runtime = config.value\n if (!runtime)\n return null\n // 焦点域在框架错误通道之外(flush / rAF)调这里,所以只回答 DOM 事实、不复核配置:\n // 配置错误由渲染读 portalTarget 时抛出并交给框架上报。若这里也读那个 computed,\n // 先到的一路会把异常截走,渲染只剩缓存的旧值,错误就成了未捕获 rejection。\n // 跨 Document 或非 Element 的落点不包含正文,正文自然还没进落点。\n const explicit = xhConfig.value.portalContainer\n const host = explicit ? explicit() : runtime.portalContainer()\n return isElement(host) && host.contains(content) ? content : null\n })\n }\n\n return { visible, api, services, controlRef, positionerRef, contentRef, gridRef, portalTarget }\n}\n\n/** 公开 composable 保留 ambient Scope 合同。 */\nexport function useDateRangePicker(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers = {},\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers)\n}\n\n/** 组合组件内部从真实根节点绑定 Scope;不经包入口导出。 */\nexport function useDateRangePickerWithRoot(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers, rootRef)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/use-date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use date range picker 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/core'\nimport type { CalendarRangePickerSchema, DateFieldSchema, DateRangePickerApi, DateRangePickerSchema, DateRangePickerServices } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope, isElement } from '@xihan-ui/core'\nimport {\n calendarRangePickerMachine,\n connectDateRangePicker,\n dateFieldMachine,\n dateRangePickerCalendarProps,\n dateRangePickerFieldEndProps,\n dateRangePickerFieldProps,\n dateRangePickerMachine,\n} from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref, shallowRef, watch } 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 DateRangePickerContext {\n api: ComputedRef<DateRangePickerApi>\n /** 四台状态机的句柄,供部件上报 DOM 侧的事实。 */\n services: DateRangePickerServices\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n gridRef: Ref<HTMLElement | null>\n /** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */\n portalTarget: ComputedRef<string | Element>\n}\n\ntype DateRangePickerHandlers = Pick<\n DateRangePickerSchema['props'],\n 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange' | 'onActiveIndexChange'\n>\n\n/** 已创建的 RuntimeConfig 永久归属首次根节点的 Document;动态 Scope 后续不能改写这份事实。 */\nexport function assertDateRangePickerRootDocument(expected: Document, node: Element): void {\n if (node.ownerDocument !== expected)\n throw new Error('[xh] DateRangePicker 根节点不能在运行期切换 Document')\n}\n\n/** 显式 Portal 是同 realm 目标,不是 Scope 来源;字段存在时 null 与伪节点都属于配置错误。 */\nexport function resolveDateRangePickerPortalTarget(\n runtime: RuntimeConfig,\n resolver: (() => unknown) | undefined,\n): Element | undefined {\n if (!resolver)\n return undefined\n const target = resolver()\n if (!isElement(target))\n throw new TypeError('[xh] DateRangePicker 的 portalContainer 必须返回 Element')\n if (target.ownerDocument !== runtime.layerRegistry.ownerDocument)\n throw new Error('[xh] DateRangePicker 的 portalContainer 必须与组件根属于同一 Document')\n return target\n}\n\nfunction createDateRangePickerContext(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef?: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\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 const gridRef = ref<HTMLElement | null>(null)\n\n // 四台机器共用一份 scope,part id 里带组件名区分;两组段位不产出 id,同 scope 不会撞\n const idGen = createVueIdGenerator()\n const scope = rootRef ? createScope(() => rootRef.value, idGen) : createScope(null, idGen)\n\n // 三台内嵌机器的 props 都从编排机现读,编排机须先建立\n const root = useMachine(dateRangePickerMachine, () => ({ ...props, ...handlers }), scope)\n const calendar = useMachine<CalendarRangePickerSchema>(calendarRangePickerMachine, () => dateRangePickerCalendarProps(root), scope)\n const field = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldProps(root), scope)\n // 终点那组段位:与起点那组同一台分段输入机器,各管区间的一端\n const fieldEnd = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldEndProps(root), scope)\n const services: DateRangePickerServices = { root, calendar, field, fieldEnd }\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n const config = shallowRef<RuntimeConfig | null>(null)\n let runtimeDocument: Document | null = null\n\n if (typeof document !== 'undefined') {\n const installConfig = (node?: HTMLElement): void => {\n const current = config.value\n if (current) {\n // scope 读取的是动态 rootRef;这里必须与创建配置时冻结的 Document 比,不能拿新根和自己比。\n if (node)\n assertDateRangePickerRootDocument(runtimeDocument!, node)\n return\n }\n\n const next = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => next.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点 trigger 或段位算层内交互;\n // 浮层壳一并记上:content 之外还浮着自绘滚动条,按住它拖动不该把浮层消解掉\n branches: () => [controlRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n root.refs.set('config', next)\n root.refs.set('registerLayer', registerLayer)\n runtimeDocument = next.layerRegistry.ownerDocument\n config.value = next\n }\n\n if (rootRef) {\n // 元素 ref 在 mounted hooks 之前同步提交:先绑定真实 realm、再让四台 service 启动。\n watch(rootRef, (node) => {\n if (node)\n installConfig(node)\n }, { flush: 'sync', immediate: true })\n }\n else {\n // 直接调用公开 composable 的既有合同仍代表 ambient Document。\n installConfig()\n }\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n root.refs.set('position', createPositionEngine())\n root.refs.set('getAnchorEl', () => controlRef.value)\n root.refs.set('getFloatingEl', () => positionerRef.value)\n }\n\n // 跨月后的焦点落点要等重渲,日历机器推迟一拍再从这里取网格现查\n calendar.refs.set('getGridEl', () => gridRef.value)\n // 挑到一半时,指针在浮层与输入行之外松开就地收口\n calendar.refs.set('getBoundaryEls', () => [contentRef.value, controlRef.value])\n\n const api = computed(() => connectDateRangePicker(services, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => root.refs.set('presence', presence),\n })\n // 显式配置只选择同一 Document 内的落点,不能反过来决定 Scope,也不能跨 realm 搬运。\n const portalTarget = computed<string | Element>(() => {\n const runtime = config.value\n // 首次 render 时 rootRef 还没提交;不读取显式 getter,Portal 在来源位置正常挂载。\n if (!runtime)\n return 'body'\n const explicitTarget = resolveDateRangePickerPortalTarget(runtime, xhConfig.value.portalContainer)\n if (explicitTarget)\n return explicitTarget\n const defaultTarget = runtime.portalContainer()\n if (!isElement(defaultTarget))\n throw new TypeError('[xh] DateRangePicker 的运行时 portalContainer 必须返回 Element')\n return defaultTarget\n })\n\n if (typeof document !== 'undefined') {\n root.refs.set('getContentEl', () => {\n const content = contentRef.value\n if (!content || !rootRef)\n return content\n // 首次 mounted 时正文仍可能原地挂载,随后 Teleport 搬运会丢失刚取得的焦点。\n // 以真正进入目标容器为就绪事实,焦点域沿既有挂载流程等待,不提前聚焦临时位置。\n const runtime = config.value\n if (!runtime)\n return null\n // 焦点域在框架错误通道之外(flush / rAF)调这里,所以只回答 DOM 事实、不复核配置:\n // 配置错误由渲染读 portalTarget 时抛出并交给框架上报。若这里也读那个 computed,\n // 先到的一路会把异常截走,渲染只剩缓存的旧值,错误就成了未捕获 rejection。\n // 跨 Document 或非 Element 的落点不包含正文,正文自然还没进落点。\n const explicit = xhConfig.value.portalContainer\n const host = explicit ? explicit() : runtime.portalContainer()\n return isElement(host) && host.contains(content) ? content : null\n })\n }\n\n return { visible, api, services, controlRef, positionerRef, contentRef, gridRef, portalTarget }\n}\n\n/** 公开 composable 保留 ambient Scope 合同。 */\nexport function useDateRangePicker(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers = {},\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers)\n}\n\n/** 组合组件内部从真实根节点绑定 Scope;不经包入口导出。 */\nexport function useDateRangePickerWithRoot(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers, rootRef)\n}\n"],"mappings":"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"}
|