@ecoma-io/loom 0.3.0 → 0.5.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/README.md +11 -9
- package/dist/a11y.js +2 -2
- package/dist/index.js +73 -6
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/CalendarDate.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/CalendarDate.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/conversion.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/conversion.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/manipulation.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/manipulation.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/queries.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/queries.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/string.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/string.js.map +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/utils.js +1 -1
- package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/utils.js.map +1 -1
- package/dist/packages/blocks/app-header/src/AppHeader.js.map +1 -1
- package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts.map +1 -1
- package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts +3 -3
- package/dist/packages/blocks/empty-state/src/EmptyState.js.map +1 -1
- package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts.map +1 -1
- package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +5 -6
- package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/blocks/error-summary/src/ErrorSummary.js +7 -0
- package/dist/packages/blocks/error-summary/src/ErrorSummary.js.map +1 -0
- package/dist/packages/blocks/error-summary/src/ErrorSummary.vue.d.ts +31 -0
- package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/blocks/error-summary/src/index.d.ts +4 -0
- package/dist/packages/blocks/error-summary/src/index.js +3 -0
- package/dist/packages/blocks/metric-card/src/MetricCard.js.map +1 -1
- package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts +22 -4
- package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts.map +1 -1
- package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +38 -15
- package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts +3 -3
- package/dist/packages/blocks/toast-stack/src/ToastStack.vue.d.ts +3 -3
- package/dist/packages/composition/scroll-reel/src/ScrollReel.js +2 -2
- package/dist/packages/composition/scroll-reel/src/ScrollReel.js.map +1 -1
- package/dist/packages/composition/scroll-reel/src/ScrollReel.vue.d.ts +26 -0
- package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js +28 -7
- package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/composition/scroll-reel/src/index.d.ts +2 -1
- package/dist/packages/composition/scroll-reel/src/index.js +2 -1
- package/dist/packages/composition/sidebar/src/Sidebar.js.map +1 -1
- package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts +4 -0
- package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts.map +1 -1
- package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js +13 -4
- package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/composition/split/src/Split.js.map +1 -1
- package/dist/packages/composition/split/src/Split.vue.d.ts +11 -12
- package/dist/packages/composition/split/src/Split.vue.d.ts.map +1 -1
- package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js +15 -5
- package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/core/src/a11y-scope.d.ts +71 -5
- package/dist/packages/core/src/a11y-scope.d.ts.map +1 -1
- package/dist/packages/core/src/a11y-scope.js +126 -6
- package/dist/packages/core/src/a11y-scope.js.map +1 -1
- package/dist/packages/core/src/index.d.ts +2 -2
- package/dist/packages/core/src/index.d.ts.map +1 -1
- package/dist/packages/core/src/index.js +3 -3
- package/dist/packages/core/src/motion.d.ts +13 -0
- package/dist/packages/core/src/motion.d.ts.map +1 -1
- package/dist/packages/core/src/motion.js +20 -13
- package/dist/packages/core/src/motion.js.map +1 -1
- package/dist/packages/core/src/theme.d.ts +9 -0
- package/dist/packages/core/src/theme.d.ts.map +1 -1
- package/dist/packages/core/src/theme.js +36 -10
- package/dist/packages/core/src/theme.js.map +1 -1
- package/dist/packages/labels/src/ancestor-disabled.d.ts +5 -1
- package/dist/packages/labels/src/ancestor-disabled.d.ts.map +1 -1
- package/dist/packages/labels/src/ancestor-disabled.js +5 -1
- package/dist/packages/labels/src/ancestor-disabled.js.map +1 -1
- package/dist/packages/labels/src/component-shapes.d.ts +236 -1
- package/dist/packages/labels/src/component-shapes.d.ts.map +1 -1
- package/dist/packages/labels/src/date-labels.d.ts +86 -7
- package/dist/packages/labels/src/date-labels.d.ts.map +1 -1
- package/dist/packages/labels/src/date-labels.js +58 -9
- package/dist/packages/labels/src/date-labels.js.map +1 -1
- package/dist/packages/labels/src/field-context.d.ts +2 -2
- package/dist/packages/labels/src/field-context.js.map +1 -1
- package/dist/packages/labels/src/index.d.ts +3 -3
- package/dist/packages/labels/src/index.d.ts.map +1 -1
- package/dist/packages/labels/src/index.js +2 -2
- package/dist/packages/labels/src/label-registry.d.ts +15 -1
- package/dist/packages/labels/src/label-registry.d.ts.map +1 -1
- package/dist/packages/layouts/dashboard/src/Dashboard.js.map +1 -1
- package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts +4 -4
- package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts.map +1 -1
- package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/layouts/reading/src/Reading.js.map +1 -1
- package/dist/packages/layouts/reading/src/Reading.vue.d.ts +16 -15
- package/dist/packages/layouts/reading/src/Reading.vue.d.ts.map +1 -1
- package/dist/packages/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/layouts/reading/src/index.d.ts +1 -0
- package/dist/packages/layouts/reading/src/index.d.ts.map +1 -1
- package/dist/packages/layouts/settings/src/Settings.js.map +1 -1
- package/dist/packages/layouts/settings/src/Settings.vue.d.ts +3 -3
- package/dist/packages/layouts/settings/src/Settings.vue.d.ts.map +1 -1
- package/dist/packages/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/layouts/split-layout/src/SplitLayout.js.map +1 -1
- package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts +4 -6
- package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts.map +1 -1
- package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js +20 -5
- package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/layouts/split-layout/src/index.d.ts +1 -1
- package/dist/packages/layouts/split-layout/src/index.d.ts.map +1 -1
- package/dist/packages/loom/src/a11y.d.ts +1 -1
- package/dist/packages/loom/src/index.d.ts +217 -174
- package/dist/packages/loom/src/theme.d.ts +3 -0
- package/dist/packages/primitives/alert/src/Alert.js +7 -0
- package/dist/packages/primitives/alert/src/Alert.js.map +1 -0
- package/dist/packages/primitives/alert/src/Alert.vue.d.ts +91 -0
- package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/alert/src/index.d.ts +4 -0
- package/dist/packages/primitives/alert/src/index.js +3 -0
- package/dist/packages/primitives/alert-dialog/src/AlertDialog.js.map +1 -1
- package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue.d.ts +2 -2
- package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/alert-dialog/src/index.d.ts +1 -1
- package/dist/packages/primitives/avatar/src/Avatar.js.map +1 -1
- package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts +2 -2
- package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts.map +1 -1
- package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue.d.ts +3 -3
- package/dist/packages/primitives/avatar-group/src/index.d.ts +1 -1
- package/dist/packages/primitives/badge/src/Badge.js.map +1 -1
- package/dist/packages/primitives/badge/src/Badge.vue.d.ts.map +1 -1
- package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js +2 -2
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js.map +1 -1
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue.d.ts +28 -0
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js +16 -5
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/breadcrumb/src/index.d.ts +2 -1
- package/dist/packages/primitives/breadcrumb/src/index.js +2 -1
- package/dist/packages/primitives/button/src/Button.js.map +1 -1
- package/dist/packages/primitives/button/src/Button.vue.d.ts.map +1 -1
- package/dist/packages/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/button/src/index.js +2 -2
- package/dist/packages/primitives/calendar/src/Calendar.js +7 -0
- package/dist/packages/primitives/calendar/src/Calendar.js.map +1 -0
- package/dist/packages/primitives/calendar/src/Calendar.vue.d.ts +95 -0
- package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js +204 -0
- package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/calendar/src/index.d.ts +3 -0
- package/dist/packages/primitives/calendar/src/index.js +3 -0
- package/dist/packages/primitives/card/src/Card.js +7 -0
- package/dist/packages/primitives/card/src/Card.js.map +1 -0
- package/dist/packages/primitives/card/src/Card.vue.d.ts +72 -0
- package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/card/src/index.d.ts +3 -0
- package/dist/packages/primitives/card/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/card/src/index.js +2 -0
- package/dist/packages/primitives/carousel/src/Carousel.js +7 -0
- package/dist/packages/primitives/carousel/src/Carousel.js.map +1 -0
- package/dist/packages/primitives/carousel/src/Carousel.vue.d.ts +34 -0
- package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js +175 -0
- package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/carousel/src/index.d.ts +3 -0
- package/dist/packages/primitives/carousel/src/index.js +3 -0
- package/dist/packages/primitives/checkbox/src/Checkbox.js.map +1 -1
- package/dist/packages/primitives/checkbox/src/Checkbox.vue.d.ts +1 -1
- package/dist/packages/primitives/checkbox/src/Checkbox.vue.d.ts.map +1 -1
- package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/chip/src/Chip.js.map +1 -1
- package/dist/packages/primitives/chip/src/Chip.vue.d.ts.map +1 -1
- package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/collapse/src/Collapse.js +7 -0
- package/dist/packages/primitives/collapse/src/Collapse.js.map +1 -0
- package/dist/packages/primitives/collapse/src/Collapse.vue.d.ts +56 -0
- package/dist/packages/primitives/collapse/src/Collapse.vue.d.ts.map +1 -0
- package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/collapse/src/index.d.ts +2 -0
- package/dist/packages/primitives/collapse/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/collapse/src/index.js +2 -0
- package/dist/packages/primitives/color-picker/src/ColorPicker.js.map +1 -1
- package/dist/packages/primitives/color-picker/src/ColorPicker.vue.d.ts +4 -4
- package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/color-picker/src/index.d.ts +1 -1
- package/dist/packages/primitives/combobox/src/Combobox.js.map +1 -1
- package/dist/packages/primitives/combobox/src/Combobox.vue.d.ts +3 -3
- package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/combobox/src/index.d.ts +1 -1
- package/dist/packages/primitives/command/src/Command.js +7 -0
- package/dist/packages/primitives/command/src/Command.js.map +1 -0
- package/dist/packages/primitives/command/src/Command.vue.d.ts +77 -0
- package/dist/packages/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js +333 -0
- package/dist/packages/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/command/src/index.d.ts +4 -0
- package/dist/packages/primitives/command/src/index.js +3 -0
- package/dist/packages/primitives/context-menu/src/ContextMenu.js.map +1 -1
- package/dist/packages/primitives/context-menu/src/ContextMenu.vue.d.ts +12 -0
- package/dist/packages/primitives/context-menu/src/ContextMenu.vue.d.ts.map +1 -1
- package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js +7 -3
- package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/copy-button/src/CopyButton.js +7 -0
- package/dist/packages/primitives/copy-button/src/CopyButton.js.map +1 -0
- package/dist/packages/primitives/copy-button/src/CopyButton.vue.d.ts +64 -0
- package/dist/packages/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js +113 -0
- package/dist/packages/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/copy-button/src/index.d.ts +4 -0
- package/dist/packages/primitives/copy-button/src/index.js +3 -0
- package/dist/packages/primitives/data-grid/src/DataGrid.js +7 -0
- package/dist/packages/primitives/data-grid/src/DataGrid.js.map +1 -0
- package/dist/packages/primitives/data-grid/src/DataGrid.vue.d.ts +128 -0
- package/dist/packages/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js +347 -0
- package/dist/packages/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/data-grid/src/index.d.ts +4 -0
- package/dist/packages/primitives/data-grid/src/index.js +3 -0
- package/dist/packages/primitives/date-picker/src/DatePicker.js.map +1 -1
- package/dist/packages/primitives/date-picker/src/DatePicker.vue.d.ts +2 -2
- package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +14 -14
- package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/date-range-picker/src/DateRangePicker.js.map +1 -1
- package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue.d.ts +3 -3
- package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +22 -19
- package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/date-range-picker/src/index.d.ts +1 -1
- package/dist/packages/primitives/date-time-picker/src/DateTimePicker.js.map +1 -1
- package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue.d.ts +2 -2
- package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +18 -17
- package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +1 -1
- package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue.d.ts +3 -3
- package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +18 -17
- package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/date-time-range-picker/src/index.d.ts +1 -1
- package/dist/packages/primitives/dialog/src/Dialog.js.map +1 -1
- package/dist/packages/primitives/dialog/src/Dialog.vue.d.ts +27 -11
- package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js +6 -4
- package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/dialog/src/index.d.ts +1 -1
- package/dist/packages/primitives/drawer/src/Drawer.js.map +1 -1
- package/dist/packages/primitives/drawer/src/Drawer.vue.d.ts +12 -4
- package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js +13 -5
- package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/drawer/src/index.d.ts +1 -1
- package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.js.map +1 -1
- package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue.d.ts +26 -0
- package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue.d.ts.map +1 -1
- package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js +10 -4
- package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/editable/src/Editable.js.map +1 -1
- package/dist/packages/primitives/editable/src/Editable.vue.d.ts +2 -2
- package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/editable/src/index.d.ts +1 -1
- package/dist/packages/primitives/file-upload/src/FileUpload.js.map +1 -1
- package/dist/packages/primitives/file-upload/src/FileUpload.vue.d.ts +2 -2
- package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/file-upload/src/index.d.ts +1 -1
- package/dist/packages/primitives/hover-card/src/HoverCard.js.map +1 -1
- package/dist/packages/primitives/hover-card/src/HoverCard.vue.d.ts.map +1 -1
- package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/hover-card/src/index.d.ts.map +1 -1
- package/dist/packages/primitives/icon-button/src/IconButton.js.map +1 -1
- package/dist/packages/primitives/icon-button/src/IconButton.vue.d.ts +10 -4
- package/dist/packages/primitives/icon-button/src/IconButton.vue.d.ts.map +1 -1
- package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js +18 -6
- package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/indicator/src/Indicator.vue.d.ts +2 -2
- package/dist/packages/primitives/indicator/src/index.d.ts +1 -1
- package/dist/packages/primitives/kbd/src/Kbd.js +7 -0
- package/dist/packages/primitives/kbd/src/Kbd.js.map +1 -0
- package/dist/packages/primitives/kbd/src/Kbd.vue.d.ts +30 -0
- package/dist/packages/primitives/kbd/src/Kbd.vue.d.ts.map +1 -0
- package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/kbd/src/index.d.ts +3 -0
- package/dist/packages/primitives/kbd/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/kbd/src/index.js +3 -0
- package/dist/packages/primitives/link/src/Link.js.map +1 -1
- package/dist/packages/primitives/link/src/Link.vue.d.ts.map +1 -1
- package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/list/src/List.js +7 -0
- package/dist/packages/primitives/list/src/List.js.map +1 -0
- package/dist/packages/primitives/list/src/List.vue.d.ts +22 -0
- package/dist/packages/primitives/list/src/List.vue.d.ts.map +1 -0
- package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/list/src/ListItem.js +7 -0
- package/dist/packages/primitives/list/src/ListItem.js.map +1 -0
- package/dist/packages/primitives/list/src/ListItem.vue.d.ts +75 -0
- package/dist/packages/primitives/list/src/ListItem.vue.d.ts.map +1 -0
- package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/list/src/index.d.ts +4 -0
- package/dist/packages/primitives/list/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/list/src/index.js +3 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.js +7 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.js.map +1 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts +36 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts.map +1 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/packages/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/live-region/src/context.d.ts +40 -0
- package/dist/packages/primitives/live-region/src/context.d.ts.map +1 -0
- package/dist/packages/primitives/live-region/src/context.js +85 -0
- package/dist/packages/primitives/live-region/src/context.js.map +1 -0
- package/dist/packages/primitives/live-region/src/index.d.ts +4 -0
- package/dist/packages/primitives/live-region/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/live-region/src/index.js +3 -0
- package/dist/packages/primitives/live-region/src/useAnnounce.d.ts +17 -0
- package/dist/packages/primitives/live-region/src/useAnnounce.d.ts.map +1 -0
- package/dist/packages/primitives/live-region/src/useAnnounce.js +25 -0
- package/dist/packages/primitives/live-region/src/useAnnounce.js.map +1 -0
- package/dist/packages/primitives/menubar/src/Menubar.js.map +1 -1
- package/dist/packages/primitives/menubar/src/Menubar.vue.d.ts +20 -6
- package/dist/packages/primitives/menubar/src/Menubar.vue.d.ts.map +1 -1
- package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js +211 -64
- package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/meter/src/Meter.js +7 -0
- package/dist/packages/primitives/meter/src/Meter.js.map +1 -0
- package/dist/packages/primitives/meter/src/Meter.vue.d.ts +87 -0
- package/dist/packages/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js +236 -0
- package/dist/packages/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/meter/src/index.d.ts +4 -0
- package/dist/packages/primitives/meter/src/index.js +3 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.js +7 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.js.map +1 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts +69 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts.map +1 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js +118 -0
- package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/navigation-menu/src/index.d.ts +3 -0
- package/dist/packages/primitives/navigation-menu/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/navigation-menu/src/index.js +2 -0
- package/dist/packages/primitives/number-field/src/NumberField.js.map +1 -1
- package/dist/packages/primitives/number-field/src/NumberField.vue.d.ts +2 -2
- package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/number-field/src/index.d.ts +1 -1
- package/dist/packages/primitives/otp-input/src/OtpInput.vue.d.ts +2 -2
- package/dist/packages/primitives/otp-input/src/index.d.ts +1 -1
- package/dist/packages/primitives/pagination/src/Pagination.js.map +1 -1
- package/dist/packages/primitives/pagination/src/Pagination.vue.d.ts +3 -3
- package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/pagination/src/index.d.ts +1 -1
- package/dist/packages/primitives/popover/src/Popover.js.map +1 -1
- package/dist/packages/primitives/popover/src/Popover.vue.d.ts.map +1 -1
- package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/progress/src/Progress.vue.d.ts +2 -2
- package/dist/packages/primitives/progress/src/index.d.ts +1 -1
- package/dist/packages/primitives/radial-progress/src/RadialProgress.vue.d.ts +2 -2
- package/dist/packages/primitives/radial-progress/src/index.d.ts +1 -1
- package/dist/packages/primitives/radio-group/src/RadioGroup.js.map +1 -1
- package/dist/packages/primitives/radio-group/src/RadioGroup.vue.d.ts.map +1 -1
- package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/rating/src/Rating.vue.d.ts +2 -2
- package/dist/packages/primitives/rating/src/index.d.ts +1 -1
- package/dist/packages/primitives/segmented-control/src/SegmentedControl.js.map +1 -1
- package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue.d.ts.map +1 -1
- package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js +2 -3
- package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/select/src/Select.js.map +1 -1
- package/dist/packages/primitives/select/src/Select.vue.d.ts.map +1 -1
- package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/skip-link/src/SkipLink.js +7 -0
- package/dist/packages/primitives/skip-link/src/SkipLink.js.map +1 -0
- package/dist/packages/primitives/skip-link/src/SkipLink.vue.d.ts +62 -0
- package/dist/packages/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/packages/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/skip-link/src/index.d.ts +3 -0
- package/dist/packages/primitives/skip-link/src/index.js +3 -0
- package/dist/packages/primitives/slider/src/Slider.js.map +1 -1
- package/dist/packages/primitives/slider/src/Slider.vue.d.ts +6 -3
- package/dist/packages/primitives/slider/src/Slider.vue.d.ts.map +1 -1
- package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js +15 -10
- package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/stepper/src/Stepper.js.map +1 -1
- package/dist/packages/primitives/stepper/src/Stepper.vue.d.ts +2 -2
- package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js +7 -5
- package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/stepper/src/index.d.ts +1 -1
- package/dist/packages/primitives/switch/src/Switch.js.map +1 -1
- package/dist/packages/primitives/switch/src/Switch.vue.d.ts +1 -1
- package/dist/packages/primitives/switch/src/Switch.vue.d.ts.map +1 -1
- package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/table/src/Table.js +7 -0
- package/dist/packages/primitives/table/src/Table.js.map +1 -0
- package/dist/packages/primitives/table/src/Table.vue.d.ts +45 -0
- package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/table/src/TableCell.js +7 -0
- package/dist/packages/primitives/table/src/TableCell.js.map +1 -0
- package/dist/packages/primitives/table/src/TableCell.vue.d.ts +19 -0
- package/dist/packages/primitives/table/src/TableCell.vue.d.ts.map +1 -0
- package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/table/src/TableHead.js +7 -0
- package/dist/packages/primitives/table/src/TableHead.js.map +1 -0
- package/dist/packages/primitives/table/src/TableHead.vue.d.ts +56 -0
- package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/table/src/TableRow.js +7 -0
- package/dist/packages/primitives/table/src/TableRow.js.map +1 -0
- package/dist/packages/primitives/table/src/TableRow.vue.d.ts +39 -0
- package/dist/packages/primitives/table/src/TableRow.vue.d.ts.map +1 -0
- package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/table/src/index.d.ts +10 -0
- package/dist/packages/primitives/table/src/index.js +8 -0
- package/dist/packages/primitives/tabs/src/Tabs.js.map +1 -1
- package/dist/packages/primitives/tabs/src/Tabs.vue.d.ts.map +1 -1
- package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/tags-input/src/TagsInput.js.map +1 -1
- package/dist/packages/primitives/tags-input/src/TagsInput.vue.d.ts +2 -2
- package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/tags-input/src/index.d.ts +1 -1
- package/dist/packages/primitives/text-field/src/TextField.js.map +1 -1
- package/dist/packages/primitives/text-field/src/TextField.vue.d.ts +2 -2
- package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/text-field/src/index.d.ts +1 -1
- package/dist/packages/primitives/text-field/src/index.js +2 -2
- package/dist/packages/primitives/textarea/src/Textarea.js.map +1 -1
- package/dist/packages/primitives/textarea/src/Textarea.vue.d.ts +2 -2
- package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/textarea/src/index.d.ts +1 -1
- package/dist/packages/primitives/textarea/src/index.js +2 -2
- package/dist/packages/primitives/time-picker/src/TimePicker.js.map +1 -1
- package/dist/packages/primitives/time-picker/src/TimePicker.vue.d.ts +2 -2
- package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +10 -8
- package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/timeline/src/Timeline.js +7 -0
- package/dist/packages/primitives/timeline/src/Timeline.js.map +1 -0
- package/dist/packages/primitives/timeline/src/Timeline.vue.d.ts +37 -0
- package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/timeline/src/TimelineItem.js +7 -0
- package/dist/packages/primitives/timeline/src/TimelineItem.js.map +1 -0
- package/dist/packages/primitives/timeline/src/TimelineItem.vue.d.ts +50 -0
- package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/timeline/src/index.d.ts +5 -0
- package/dist/packages/primitives/timeline/src/index.js +5 -0
- package/dist/packages/primitives/toast/src/Toast.vue.d.ts +2 -2
- package/dist/packages/primitives/toast/src/ToastItem.js.map +1 -1
- package/dist/packages/primitives/toast/src/ToastItem.vue.d.ts +2 -2
- package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js +5 -3
- package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/toast/src/index.d.ts +1 -1
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.js +7 -0
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.js.map +1 -0
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts +53 -0
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts.map +1 -0
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js +111 -0
- package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/toggle-group/src/index.d.ts +3 -0
- package/dist/packages/primitives/toggle-group/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/toggle-group/src/index.js +2 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.js +7 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.js.map +1 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts +31 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts.map +1 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js +149 -0
- package/dist/packages/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.js +7 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.js.map +1 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts +24 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts.map +1 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/toolbar/src/index.d.ts +4 -0
- package/dist/packages/primitives/toolbar/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/toolbar/src/index.js +3 -0
- package/dist/packages/primitives/tooltip/src/Tooltip.js.map +1 -1
- package/dist/packages/primitives/tooltip/src/Tooltip.vue.d.ts.map +1 -1
- package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/packages/primitives/tree-view/src/TreeView.js +7 -0
- package/dist/packages/primitives/tree-view/src/TreeView.js.map +1 -0
- package/dist/packages/primitives/tree-view/src/TreeView.vue.d.ts +99 -0
- package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js +310 -0
- package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.js +7 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.js.map +1 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts +15 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts.map +1 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/packages/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/tree-view/src/context.d.ts +39 -0
- package/dist/packages/primitives/tree-view/src/context.d.ts.map +1 -0
- package/dist/packages/primitives/tree-view/src/context.js +6 -0
- package/dist/packages/primitives/tree-view/src/context.js.map +1 -0
- package/dist/packages/primitives/tree-view/src/index.d.ts +4 -0
- package/dist/packages/primitives/tree-view/src/index.js +3 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.js +7 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.js.map +1 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts +21 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts.map +1 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/packages/primitives/visually-hidden/src/index.d.ts +3 -0
- package/dist/packages/primitives/visually-hidden/src/index.d.ts.map +1 -0
- package/dist/packages/primitives/visually-hidden/src/index.js +2 -0
- package/dist/packages/primitives/window-controls/src/WindowControls.vue.d.ts +2 -2
- package/dist/packages/primitives/window-controls/src/index.d.ts +1 -1
- package/dist/styles/global.css +59 -0
- package/dist/styles/theme.css +13 -0
- package/dist/theme.js +3 -0
- package/package.json +37 -30
- package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts.map +0 -1
- package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts.map +0 -1
- package/dist/packages/blocks/toast-stack/src/ToastStack.vue.d.ts.map +0 -1
- package/dist/packages/composition/scroll-reel/src/ScrollReel.vue.d.ts.map +0 -1
- package/dist/packages/composition/scroll-reel/src/index.d.ts.map +0 -1
- package/dist/packages/loom/src/a11y.d.ts.map +0 -1
- package/dist/packages/loom/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue.d.ts.map +0 -1
- package/dist/packages/primitives/alert-dialog/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue.d.ts.map +0 -1
- package/dist/packages/primitives/avatar-group/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue.d.ts.map +0 -1
- package/dist/packages/primitives/breadcrumb/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/color-picker/src/ColorPicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/color-picker/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/combobox/src/Combobox.vue.d.ts.map +0 -1
- package/dist/packages/primitives/combobox/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/date-picker/src/DatePicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/date-range-picker/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/date-time-range-picker/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/dialog/src/Dialog.vue.d.ts.map +0 -1
- package/dist/packages/primitives/dialog/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/drawer/src/Drawer.vue.d.ts.map +0 -1
- package/dist/packages/primitives/drawer/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/editable/src/Editable.vue.d.ts.map +0 -1
- package/dist/packages/primitives/editable/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/file-upload/src/FileUpload.vue.d.ts.map +0 -1
- package/dist/packages/primitives/file-upload/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/indicator/src/Indicator.vue.d.ts.map +0 -1
- package/dist/packages/primitives/indicator/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/number-field/src/NumberField.vue.d.ts.map +0 -1
- package/dist/packages/primitives/number-field/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/otp-input/src/OtpInput.vue.d.ts.map +0 -1
- package/dist/packages/primitives/otp-input/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/pagination/src/Pagination.vue.d.ts.map +0 -1
- package/dist/packages/primitives/pagination/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/progress/src/Progress.vue.d.ts.map +0 -1
- package/dist/packages/primitives/progress/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/radial-progress/src/RadialProgress.vue.d.ts.map +0 -1
- package/dist/packages/primitives/radial-progress/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/rating/src/Rating.vue.d.ts.map +0 -1
- package/dist/packages/primitives/rating/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/stepper/src/Stepper.vue.d.ts.map +0 -1
- package/dist/packages/primitives/stepper/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/tags-input/src/TagsInput.vue.d.ts.map +0 -1
- package/dist/packages/primitives/tags-input/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/text-field/src/TextField.vue.d.ts.map +0 -1
- package/dist/packages/primitives/text-field/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/textarea/src/Textarea.vue.d.ts.map +0 -1
- package/dist/packages/primitives/textarea/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/time-picker/src/TimePicker.vue.d.ts.map +0 -1
- package/dist/packages/primitives/toast/src/Toast.vue.d.ts.map +0 -1
- package/dist/packages/primitives/toast/src/ToastItem.vue.d.ts.map +0 -1
- package/dist/packages/primitives/toast/src/index.d.ts.map +0 -1
- package/dist/packages/primitives/window-controls/src/WindowControls.vue.d.ts.map +0 -1
- package/dist/packages/primitives/window-controls/src/index.d.ts.map +0 -1
- package/dist/styles/theme.contrast.test.ts +0 -460
package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TOOLBAR_CONTEXT } from "./Toolbar.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
import "./Toolbar.js";
|
|
3
|
+
import { computed, createElementBlock, defineComponent, inject, normalizeClass, openBlock } from "vue";
|
|
4
|
+
//#region packages/primitives/toolbar/src/ToolbarSeparator.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var _hoisted_1 = ["aria-orientation"];
|
|
6
|
+
/**
|
|
7
|
+
* ToolbarSeparator — the divider between groups of controls inside a
|
|
8
|
+
* Toolbar. It reads the toolbar's own orientation through the context the
|
|
9
|
+
* toolbar provides and draws along the perpendicular axis, so a horizontal
|
|
10
|
+
* toolbar gets vertical hairlines and a vertical one gets horizontal. Its
|
|
11
|
+
* `role="separator"` is the one an APG toolbar wants between its groups —
|
|
12
|
+
* which is why `decorative` is not offered here: inside a toolbar the line
|
|
13
|
+
* is never merely visual, it IS the group boundary.
|
|
14
|
+
*
|
|
15
|
+
* Composing the `Separator` primitive instead of drawing the hairline here
|
|
16
|
+
* was considered and rejected: the primitive binds `h-full w-px` for its
|
|
17
|
+
* vertical axis, and the short, centered divider a toolbar wants would fight
|
|
18
|
+
* that on Tailwind's emitted order — a coin flip, not a decision. Four lines
|
|
19
|
+
* of divider here beat a class-order lottery.
|
|
20
|
+
*/
|
|
21
|
+
var ToolbarSeparator_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
22
|
+
__name: "ToolbarSeparator",
|
|
23
|
+
props: { orientation: {} },
|
|
24
|
+
setup(__props) {
|
|
25
|
+
const props = __props;
|
|
26
|
+
const inherited = inject(TOOLBAR_CONTEXT, null);
|
|
27
|
+
const axis = computed(() => props.orientation ?? (inherited ? inherited.orientation : "horizontal"));
|
|
28
|
+
return (_ctx, _cache) => {
|
|
29
|
+
return openBlock(), createElementBlock("div", {
|
|
30
|
+
role: "separator",
|
|
31
|
+
"aria-orientation": axis.value === "vertical" ? "horizontal" : "vertical",
|
|
32
|
+
class: normalizeClass([axis.value === "vertical" ? "mx-2 h-px w-4 self-center" : "h-4 w-px self-center", "shrink-0 bg-border"])
|
|
33
|
+
}, null, 10, _hoisted_1);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { ToolbarSeparator_vue_vue_type_script_setup_true_lang_default as default };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolbarSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../packages/primitives/toolbar/src/ToolbarSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport type { ToolbarContext, ToolbarOrientation } from \"./Toolbar.vue\";\nimport { TOOLBAR_CONTEXT } from \"./Toolbar.vue\";\n\n/**\n * ToolbarSeparator — the divider between groups of controls inside a\n * Toolbar. It reads the toolbar's own orientation through the context the\n * toolbar provides and draws along the perpendicular axis, so a horizontal\n * toolbar gets vertical hairlines and a vertical one gets horizontal. Its\n * `role=\"separator\"` is the one an APG toolbar wants between its groups —\n * which is why `decorative` is not offered here: inside a toolbar the line\n * is never merely visual, it IS the group boundary.\n *\n * Composing the `Separator` primitive instead of drawing the hairline here\n * was considered and rejected: the primitive binds `h-full w-px` for its\n * vertical axis, and the short, centered divider a toolbar wants would fight\n * that on Tailwind's emitted order — a coin flip, not a decision. Four lines\n * of divider here beat a class-order lottery.\n */\nconst props = defineProps<{\n /** Only for standalone use — inside a Toolbar the axis is inherited. */\n orientation?: ToolbarOrientation;\n}>();\n\nconst inherited = inject<ToolbarContext | null>(TOOLBAR_CONTEXT, null);\nconst axis = computed(\n () => props.orientation ?? (inherited ? inherited.orientation : \"horizontal\"),\n);\n</script>\n\n<template>\n <div\n role=\"separator\"\n :aria-orientation=\"axis === 'vertical' ? 'horizontal' : 'vertical'\"\n :class=\"axis === 'vertical' ? 'mx-2 h-px w-4 self-center' : 'h-4 w-px self-center'\"\n class=\"shrink-0 bg-border\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAoBA,MAAM,QAAQ;EAKd,MAAM,YAAY,OAA8B,iBAAiB,IAAI;EACrE,MAAM,OAAO,eACL,MAAM,gBAAgB,YAAY,UAAU,cAAc,aAClE;;GAIE,OAAA,UAAA,GAAA,mBAKE,OAAA;IAJA,MAAK;IACJ,oBAAkB,KAAA,UAAI,aAAA,eAAA;IACtB,OAAK,eAAA,CAAE,KAAA,UAAI,aAAA,8BAAA,wBACN,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/toolbar/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","names":[],"sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-
|
|
1
|
+
{"version":3,"file":"Tooltip.js","names":[],"sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-overlay max-w-[16rem] rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background shadow-md',\n // Scoped to the open state, never unconditional. Reka's Presence\n // keeps closed content mounted until an animationend arrives, and\n // a mount-only animation never fires a second one — so an\n // unconditional animation class leaves a stray tip in the page.\n // Scoped, the closed element computes `animation-name: none` and\n // Presence unmounts it at once; the paired exit is precisely what\n // Presence is waiting to hold it for.\n //\n // `delayed-open` rather than `open`: the animation belongs to the\n // hover path, which the user waited for. A tip opened by keyboard\n // focus appears instantly, because a keyboard user asked for it\n // deliberately and has nothing to wait through. The exit needs no\n // such split — Reka reports both open flavours as plain `closed`\n // on the way out, so one class answers them both.\n 'data-[state=delayed-open]:animate-scale-in data-[state=closed]:animate-scale-out',\n )\n \"\n style=\"transform-origin: var(--reka-popper-transform-origin)\"\n >\n <!-- @slot The hint, where markup is needed. Takes precedence over\n `content`. Nothing interactive belongs here — a tooltip cannot be\n reached by keyboard or pointer. -->\n <slot>{{ content }}</slot>\n <TooltipArrow class=\"fill-foreground\" :width=\"10\" :height=\"5\" />\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n</template>\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.vue.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tooltip.vue.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"names":[],"mappings":"AAiIA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;wBACzC,OAAO,YAAY;AAAxC,wBAAyC;AACzC,QAAA,MAAM,YAAY;IAuBd,gFAAgF;cACtE,MAAM;IAChB,4EAA4E;WACrE,WAAW;IAClB,qDAAqD;iBACxC,MAAM;IACnB,wFAAwF;YAChF,MAAM;IACd,oHAAoH;WAC7G,OAAO,GAAG,SAAS;;;;IAT1B,gFAAgF;cACtE,MAAM;IAChB,4EAA4E;WACrE,WAAW;IAClB,qDAAqD;iBACxC,MAAM;IACnB,wFAAwF;YAChF,MAAM;IACd,oHAAoH;WAC7G,OAAO,GAAG,SAAS;;;;WAFlB,MAAM;UAJP,WAAW;gBAEL,MAAM;UAIZ,OAAO,GAAG,SAAS;;cA8LhB,CAAC,KAAK,IAAiB,KAAK,GAAG;;cAC/B,CAAC,KAAK,IAAiB,KAAK,GAAG;EAWzC,CAAC;AAWL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -28,7 +28,7 @@ var Tooltip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
28
28
|
default: withCtx(() => [createVNode(unref(TooltipContent), {
|
|
29
29
|
side: __props.side,
|
|
30
30
|
"side-offset": __props.sideOffset,
|
|
31
|
-
class: normalizeClass(unref(cn)("z-
|
|
31
|
+
class: normalizeClass(unref(cn)("z-overlay max-w-[16rem] rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background shadow-md", "data-[state=delayed-open]:animate-scale-in data-[state=closed]:animate-scale-out")),
|
|
32
32
|
style: { "transform-origin": "var(--reka-popper-transform-origin)" }
|
|
33
33
|
}, {
|
|
34
34
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.content), 1)]), createVNode(unref(TooltipArrow), {
|
package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-
|
|
1
|
+
{"version":3,"file":"Tooltip.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-overlay max-w-[16rem] rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background shadow-md',\n // Scoped to the open state, never unconditional. Reka's Presence\n // keeps closed content mounted until an animationend arrives, and\n // a mount-only animation never fires a second one — so an\n // unconditional animation class leaves a stray tip in the page.\n // Scoped, the closed element computes `animation-name: none` and\n // Presence unmounts it at once; the paired exit is precisely what\n // Presence is waiting to hold it for.\n //\n // `delayed-open` rather than `open`: the animation belongs to the\n // hover path, which the user waited for. A tip opened by keyboard\n // focus appears instantly, because a keyboard user asked for it\n // deliberately and has nothing to wait through. The exit needs no\n // such split — Reka reports both open flavours as plain `closed`\n // on the way out, so one class answers them both.\n 'data-[state=delayed-open]:animate-scale-in data-[state=closed]:animate-scale-out',\n )\n \"\n style=\"transform-origin: var(--reka-popper-transform-origin)\"\n >\n <!-- @slot The hint, where markup is needed. Takes precedence over\n `content`. Nothing interactive belongs here — a tooltip cannot be\n reached by keyboard or pointer. -->\n <slot>{{ content }}</slot>\n <TooltipArrow class=\"fill-foreground\" :width=\"10\" :height=\"5\" />\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;GAqEE,OAAA,UAAA,GAAA,YA2CkB,MAAA,eAAA,GAAA,EA3CA,kBAAgB,QAAA,MAAK,GAAA;IACrC,SAAA,cAyCc,CAzCd,YAyCc,MAAA,WAAA,GAzCd,WAAqB,MAyCP,QAAA,CAzCe,CAAA,EAAA,MAAG,QAAA,KAAI,CAAA,GAAA,EAAM,iBAAW,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,eAAgB,MAAM,GAAA,CAAA,GAAA;KAIhF,SAAA,cAEiB,CAFjB,YAEiB,MAAA,cAAA,GAAA,EAFD,YAAA,GAAQ,GAAA;MACtB,SAAA,cAAuB,CAAvB,WAAuB,KAAA,QAAA,SAAA,CAAA,CAAA;;KAGzB,CAAA,GAAA,YAgCgB,MAAA,aAAA,GAAA,MAAA;MA/Bd,SAAA,cA8BiB,CA9BjB,YA8BiB,MAAA,cAAA,GAAA;OA7Bd,MAAM,QAAA;OACN,eAAa,QAAA;OACb,OAAK,eAAe,MAAA,EAAA,CAAE,CAAA,4GAAA,kFAAA,CAAA;OAoBvB,OAAA,EAAA,oBAAA,sCAAA;;OAKA,SAAA,cAA0B,CAA1B,WAA0B,KAAA,QAAA,WAAA,CAAA,SAAA,CAAjB,gBAAA,gBAAA,QAAA,OAAO,GAAA,CAAA,CAAA,CAAA,GAChB,YAAgE,MAAA,YAAA,GAAA;QAAlD,OAAM;QAAmB,OAAO;QAAK,QAAQ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import TreeView_vue_vue_type_script_setup_true_lang_default, { TREE_VIEW_LABELS } from "./TreeView.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/primitives/tree-view/src/TreeView.vue
|
|
3
|
+
var TreeView_default = TreeView_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { TREE_VIEW_LABELS, TreeView_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=TreeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeView.js","names":[],"sources":["../../../../../packages/primitives/tree-view/src/TreeView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { LabelOverrides, TreeViewLabels } from \"@ecoma-io/loom-labels\";\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it.\n * Everything else a tree renders is a node's own label, so the bag is one\n * string — but it is a string a reader waits on.\n */\nexport const TREE_VIEW_LABELS: TreeViewLabels = {\n loading: \"Loading…\",\n};\n\n/**\n * One node of the tree. `children`'s shape is the contract for expansion: an\n * array of any length (including empty — a known leaf) is static data the\n * tree renders directly, while a node *without* one under a `loadChildren`\n * tree is treated as a branch still to fetch.\n */\nexport interface TreeNode {\n /** The value bound to `v-model` when this node is chosen. Unique within the tree. */\n value: string | number;\n /** The text shown on the row and matched by the typeahead. */\n label: string;\n /** This node's children. Their presence is what makes the row expandable. */\n children?: TreeNode[];\n /** Present but unchoosable: visible, arrow-reachable, refuses selection and expansion. */\n disabled?: boolean;\n}\n\n/** Whether one node or several can be chosen at once. */\nexport type TreeViewSelectionMode = \"single\" | \"multiple\";\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onScopeDispose, provide, ref, watch } from \"vue\";\nimport { useAncestorDisabled, useLabels } from \"@ecoma-io/loom-labels\";\nimport { TREE_VIEW_CONTEXT, type TreeViewContext, type TreeViewNodeState } from \"./context\";\nimport TreeViewNode from \"./TreeViewNode.vue\";\n\nconst props = withDefaults(\n defineProps<{\n /** The nodes, in the order they are shown, parents before children. */\n nodes: TreeNode[];\n /**\n * The chosen node's `value` — or every chosen value, when `selectionMode`\n * is \"multiple\". The union, not two generic shapes, for the same reason\n * Combobox is: `v-model` needs one binding whose type does not depend on\n * another prop's value, and a scalar/array mismatch is caught the same\n * place the tree catches it — at the render.\n */\n modelValue?: string | number | Array<string | number> | undefined;\n /** Whether one node or several can be chosen at once. */\n selectionMode?: TreeViewSelectionMode;\n /**\n * Fetch a branch's children the first time it is expanded. A node with no\n * `children` of its own is treated as lazily loadable; one that resolves\n * to an empty array becomes a leaf, and a rejected fetch leaves the node\n * collapsed so the next activation retries rather than caching failure.\n */\n loadChildren?: (node: TreeNode) => Promise<TreeNode[]>;\n /** Node values expanded on mount. After mount the tree owns the state. */\n defaultExpanded?: Array<string | number>;\n /**\n * Unavailable: the rows dim, refuse selection and expansion, and drop out\n * of the tab order. Unset defers to an enclosing `<fieldset disabled>`\n * read straight off the DOM.\n */\n disabled?: boolean | undefined;\n /** Names for the strings this control supplies itself. */\n labels?: LabelOverrides<TreeViewLabels> | undefined;\n }>(),\n {\n modelValue: undefined,\n selectionMode: \"single\",\n defaultExpanded: () => [],\n disabled: undefined,\n labels: undefined,\n },\n);\n\nconst emit = defineEmits<{\n /** The chosen node's `value` — or the whole chosen list, when `selectionMode` is \"multiple\". */\n \"update:modelValue\": [value: string | number | Array<string | number>];\n}>();\n\n/**\n * A row as the keyboard sees it: one step of the depth-first walk of the\n * visible tree, with everything the key map needs resolved once per change\n * instead of per keystroke.\n */\ninterface FlatRow {\n value: string | number;\n node: TreeNode;\n level: number;\n setsize: number;\n posinset: number;\n parentId: string | number | null;\n expandable: boolean;\n expanded: boolean;\n selected: boolean;\n busy: boolean;\n disabled: boolean;\n}\n\nconst rootEl = ref<HTMLUListElement | null>(null);\n\nconst ancestorDisabled = useAncestorDisabled(() => rootEl.value);\nconst controlDisabled = computed(() => (props.disabled ?? false) || ancestorDisabled.value);\n\nconst text = useLabels(\"treeView\", TREE_VIEW_LABELS, () => props.labels);\n\n// Seeded once from `defaultExpanded`, then the tree owns it — a prop the user\n// edits after mount silently losing their edits is worse than a seed.\nconst expandedKeys = ref(new Set<string | number>(props.defaultExpanded));\nconst loadingKeys = ref(new Set<string | number>());\nconst lazyChildren = ref(new Map<string | number, TreeNode[]>());\nconst focusValue = ref<string | number | null>(null);\n\nfunction toKeySet(\n model: string | number | Array<string | number> | undefined,\n): Set<string | number> {\n if (model == null) return new Set();\n return new Set(Array.isArray(model) ? model : [model]);\n}\n\n// A mirror rather than a read-through, so the tree works uncontrolled (`v-model`\n// absent, `modelValue` never supplied) exactly as it does controlled — the same\n// contract Combobox keeps.\nconst selectedKeys = ref(toKeySet(props.modelValue));\nwatch(\n () => props.modelValue,\n (next) => {\n selectedKeys.value = toKeySet(next);\n },\n);\n\nfunction childrenOf(node: TreeNode): TreeNode[] {\n if (Array.isArray(node.children)) return node.children;\n return lazyChildren.value.get(node.value) ?? [];\n}\n\n/**\n * A row can open when it has children to show: a non-empty `children` array,\n * or a fetch already resolved beneath it — an empty resolution *is* the\n * answer, and the row collapses back to a leaf rather than offering a branch\n * that opens onto nothing.\n */\nfunction isExpandable(node: TreeNode): boolean {\n if (Array.isArray(node.children)) return node.children.length > 0;\n const loaded = lazyChildren.value.get(node.value);\n if (loaded) return loaded.length > 0;\n return props.loadChildren != null;\n}\n\nconst flatRows = computed<FlatRow[]>(() => {\n const rows: FlatRow[] = [];\n const walk = (nodes: TreeNode[], level: number, parentId: string | number | null): void => {\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n if (!node) continue;\n const expandable = isExpandable(node);\n const expanded = expandable && expandedKeys.value.has(node.value);\n rows.push({\n value: node.value,\n node,\n level,\n setsize: nodes.length,\n posinset: index + 1,\n parentId,\n expandable,\n expanded,\n selected: selectedKeys.value.has(node.value),\n busy: loadingKeys.value.has(node.value),\n disabled: (node.disabled ?? false) || controlDisabled.value,\n });\n if (expanded) walk(childrenOf(node), level + 1, node.value);\n }\n };\n walk(props.nodes, 1, null);\n return rows;\n});\n\nconst rowByValue = computed(() => new Map(flatRows.value.map((row) => [row.value, row])));\n\n// The roving tab stop: wherever the reader last was, or — before the first\n// arrow key — the first row a Tab is allowed to land on. A disabled row is\n// reachable from inside the tree but never *entered* from outside it.\nconst tabStopValue = computed<string | number | null>(() => {\n // The stop answers \"where Tab would land\", not \"where the reader is\": the\n // arrows deliberately rest on disabled rows, but entering the tree from\n // outside must land on the first enabled one.\n const focused = focusValue.value != null ? rowByValue.value.get(focusValue.value) : undefined;\n if (focused && !focused.disabled) return focusValue.value;\n const firstEnabled = flatRows.value.find((row) => !row.disabled);\n return firstEnabled?.value ?? null;\n});\n\nfunction stateFor(node: TreeNode): TreeViewNodeState {\n const row = rowByValue.value.get(node.value);\n return {\n expandable: row?.expandable ?? false,\n expanded: row?.expanded ?? false,\n selected: row?.selected ?? false,\n busy: row?.busy ?? false,\n disabled: row?.disabled ?? false,\n focusable: !controlDisabled.value && row?.value === tabStopValue.value,\n };\n}\n\nasync function expandRow(row: FlatRow): Promise<void> {\n const value = row.node.value;\n if (\n row.disabled ||\n !row.expandable ||\n expandedKeys.value.has(value) ||\n loadingKeys.value.has(value)\n ) {\n return;\n }\n const isLazy =\n !Array.isArray(row.node.children) &&\n props.loadChildren != null &&\n !lazyChildren.value.has(value);\n if (isLazy && props.loadChildren) {\n loadingKeys.value = new Set(loadingKeys.value).add(value);\n try {\n const children = await props.loadChildren(row.node);\n const next = new Map(lazyChildren.value);\n next.set(value, children);\n lazyChildren.value = next;\n } catch {\n // The fetch failed: leave the row collapsed and still expandable, so\n // the next activation retries rather than caching a broken branch.\n return;\n } finally {\n const settled = new Set(loadingKeys.value);\n settled.delete(value);\n loadingKeys.value = settled;\n }\n }\n expandedKeys.value = new Set(expandedKeys.value).add(value);\n}\n\nfunction collapseRow(value: string | number): void {\n const next = new Set(expandedKeys.value);\n next.delete(value);\n expandedKeys.value = next;\n}\n\nfunction selectRow(node: TreeNode): void {\n if (controlDisabled.value || node.disabled) return;\n if (props.selectionMode === \"multiple\") {\n const next = new Set(selectedKeys.value);\n if (next.has(node.value)) next.delete(node.value);\n else next.add(node.value);\n selectedKeys.value = next;\n emit(\"update:modelValue\", [...next]);\n return;\n }\n selectedKeys.value = new Set([node.value]);\n emit(\"update:modelValue\", node.value);\n}\n\nfunction rowElement(value: string | number): HTMLElement | null {\n const root = rootEl.value;\n if (!root) return null;\n return root.querySelector<HTMLElement>(`[data-tree-value=\"${CSS.escape(String(value))}\"]`);\n}\n\nfunction focusRow(row: FlatRow | undefined): void {\n if (!row) return;\n focusValue.value = row.node.value;\n void nextTick(() => {\n rowElement(row.value)?.focus();\n });\n}\n\nfunction onRowFocus(node: TreeNode): void {\n focusValue.value = node.value;\n}\n\nfunction onRowActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value) return;\n focusRow(row);\n selectRow(node);\n}\n\nfunction onChevronActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value || row.disabled) return;\n focusRow(row);\n if (row.expanded) collapseRow(node.value);\n else void expandRow(row);\n}\n\nfunction currentRowIndex(): number {\n if (focusValue.value == null) return -1;\n return flatRows.value.findIndex((row) => row.value === focusValue.value);\n}\n\n/*\n * The typeahead. APG trees match a prefix of the row's label, starting after\n * the current row and wrapping; the same character typed again cycles to that\n * character's next match rather than extending a prefix to itself. The buffer\n * is 500 ms, and the timer is released with the scope so a tree torn down\n * mid-typeahead leaves nothing pending.\n */\nconst TYPEAHEAD_RESET_MS = 500;\nlet typeaheadBuffer = \"\";\nlet typeaheadTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction handleTypeahead(event: KeyboardEvent): void {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n if (flatRows.value.length === 0) return;\n const char = event.key.toLowerCase();\n // Repeat detection reads the buffer's LAST character: a multi-character\n // prefix must survive a repeated final character so the walk cycles to\n // the next match instead of extending the prefix to a non-match.\n if (typeaheadBuffer.slice(-1) !== char) typeaheadBuffer += char;\n const query = typeaheadBuffer;\n const start = currentRowIndex() + 1;\n for (let step = 0; step < flatRows.value.length; step++) {\n const row = flatRows.value[(start + step) % flatRows.value.length];\n // Typeahead is a jump made from outside the walk, like the entry tab\n // stop: it lands on a row the reader can act on. The arrows remain the\n // way to deliberately rest on a disabled row.\n if (row && !row.disabled && row.node.label.toLowerCase().startsWith(query)) {\n focusRow(row);\n break;\n }\n }\n event.preventDefault();\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n typeaheadTimer = setTimeout(() => {\n typeaheadBuffer = \"\";\n typeaheadTimer = undefined;\n }, TYPEAHEAD_RESET_MS);\n}\n\nonScopeDispose(() => {\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n});\n\n/**\n * One keydown on the root, reached from every row by bubbling: the key map is\n * written once against the flat visible walk instead of duplicated per row.\n * Disabled rows stay in the arrow walk — present and reachable, per the APG —\n * but Enter, Space and the disclosure keys refuse them.\n */\nfunction onKeydown(event: KeyboardEvent): void {\n if (controlDisabled.value) return;\n const rows = flatRows.value;\n if (rows.length === 0) return;\n const index = currentRowIndex();\n const row = index >= 0 ? rows[index] : undefined;\n\n switch (event.key) {\n case \"ArrowDown\": {\n const next = rows[index + 1];\n if (next) focusRow(next);\n break;\n }\n case \"ArrowUp\": {\n const previous = index > 0 ? rows[index - 1] : undefined;\n if (previous) focusRow(previous);\n break;\n }\n case \"Home\":\n focusRow(rows[0]);\n break;\n case \"End\":\n focusRow(rows[rows.length - 1]);\n break;\n case \"ArrowRight\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && !row.expanded) {\n void expandRow(row);\n break;\n }\n if (row.expanded) {\n const child = rows[index + 1];\n if (child && child.level === row.level + 1) focusRow(child);\n }\n break;\n }\n case \"ArrowLeft\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && row.expanded) {\n collapseRow(row.value);\n break;\n }\n if (row.parentId != null) {\n const parent = rowByValue.value.get(row.parentId);\n if (parent) focusRow(parent);\n }\n break;\n }\n case \"Enter\":\n case \" \":\n if (row) selectRow(row.node);\n break;\n default:\n handleTypeahead(event);\n return;\n }\n event.preventDefault();\n}\n\nprovide(TREE_VIEW_CONTEXT, {\n stateFor,\n childrenOf,\n loadingText: computed(() => text.value.loading),\n onRowFocus,\n onRowActivate,\n onChevronActivate,\n} satisfies TreeViewContext);\n</script>\n\n<!--\n The tree is a plain `<ul>`, so the caller's `aria-label`, `aria-labelledby`\n and `id` fall through to it untouched — naming the tree is naming the\n element, exactly as the APG example does. Rows render one tab stop at a\n time (roving tabindex); the keydown above is the only keyboard listener.\n-->\n<template>\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -- the container is deliberately not focusable: focus roves across the rows (APG tree view), so exactly one row holds the tab stop and the `<ul>` itself never takes one. -->\n <ul\n ref=\"rootEl\"\n role=\"tree\"\n :aria-multiselectable=\"selectionMode === 'multiple' ? 'true' : undefined\"\n :aria-disabled=\"controlDisabled ? 'true' : undefined\"\n class=\"m-0 list-none select-none p-0 text-sm text-foreground\"\n @keydown=\"onKeydown\"\n >\n <TreeViewNode\n v-for=\"(node, index) in nodes\"\n :key=\"node.value\"\n :node=\"node\"\n :level=\"1\"\n :setsize=\"nodes.length\"\n :posinset=\"index + 1\"\n />\n </ul>\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { LabelOverrides, TreeViewLabels } from "../../../labels/src/index";
|
|
2
|
+
/**
|
|
3
|
+
* Loom's English, co-located with the component so it tree-shakes with it.
|
|
4
|
+
* Everything else a tree renders is a node's own label, so the bag is one
|
|
5
|
+
* string — but it is a string a reader waits on.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TREE_VIEW_LABELS: TreeViewLabels;
|
|
8
|
+
/**
|
|
9
|
+
* One node of the tree. `children`'s shape is the contract for expansion: an
|
|
10
|
+
* array of any length (including empty — a known leaf) is static data the
|
|
11
|
+
* tree renders directly, while a node *without* one under a `loadChildren`
|
|
12
|
+
* tree is treated as a branch still to fetch.
|
|
13
|
+
*/
|
|
14
|
+
export interface TreeNode {
|
|
15
|
+
/** The value bound to `v-model` when this node is chosen. Unique within the tree. */
|
|
16
|
+
value: string | number;
|
|
17
|
+
/** The text shown on the row and matched by the typeahead. */
|
|
18
|
+
label: string;
|
|
19
|
+
/** This node's children. Their presence is what makes the row expandable. */
|
|
20
|
+
children?: TreeNode[];
|
|
21
|
+
/** Present but unchoosable: visible, arrow-reachable, refuses selection and expansion. */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Whether one node or several can be chosen at once. */
|
|
25
|
+
export type TreeViewSelectionMode = "single" | "multiple";
|
|
26
|
+
declare const _default: typeof __VLS_export;
|
|
27
|
+
export default _default;
|
|
28
|
+
declare const __VLS_export: import("vue").DefineComponent<{
|
|
29
|
+
/** The nodes, in the order they are shown, parents before children. */
|
|
30
|
+
nodes: TreeNode[];
|
|
31
|
+
/**
|
|
32
|
+
* The chosen node's `value` — or every chosen value, when `selectionMode`
|
|
33
|
+
* is "multiple". The union, not two generic shapes, for the same reason
|
|
34
|
+
* Combobox is: `v-model` needs one binding whose type does not depend on
|
|
35
|
+
* another prop's value, and a scalar/array mismatch is caught the same
|
|
36
|
+
* place the tree catches it — at the render.
|
|
37
|
+
*/
|
|
38
|
+
modelValue?: string | number | Array<string | number> | undefined;
|
|
39
|
+
/** Whether one node or several can be chosen at once. */
|
|
40
|
+
selectionMode?: TreeViewSelectionMode;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch a branch's children the first time it is expanded. A node with no
|
|
43
|
+
* `children` of its own is treated as lazily loadable; one that resolves
|
|
44
|
+
* to an empty array becomes a leaf, and a rejected fetch leaves the node
|
|
45
|
+
* collapsed so the next activation retries rather than caching failure.
|
|
46
|
+
*/
|
|
47
|
+
loadChildren?: (node: TreeNode) => Promise<TreeNode[]>;
|
|
48
|
+
/** Node values expanded on mount. After mount the tree owns the state. */
|
|
49
|
+
defaultExpanded?: Array<string | number>;
|
|
50
|
+
/**
|
|
51
|
+
* Unavailable: the rows dim, refuse selection and expansion, and drop out
|
|
52
|
+
* of the tab order. Unset defers to an enclosing `<fieldset disabled>`
|
|
53
|
+
* read straight off the DOM.
|
|
54
|
+
*/
|
|
55
|
+
disabled?: boolean | undefined;
|
|
56
|
+
/** Names for the strings this control supplies itself. */
|
|
57
|
+
labels?: LabelOverrides<TreeViewLabels> | undefined;
|
|
58
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
59
|
+
"update:modelValue": (value: string | number | (string | number)[]) => any;
|
|
60
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
61
|
+
/** The nodes, in the order they are shown, parents before children. */
|
|
62
|
+
nodes: TreeNode[];
|
|
63
|
+
/**
|
|
64
|
+
* The chosen node's `value` — or every chosen value, when `selectionMode`
|
|
65
|
+
* is "multiple". The union, not two generic shapes, for the same reason
|
|
66
|
+
* Combobox is: `v-model` needs one binding whose type does not depend on
|
|
67
|
+
* another prop's value, and a scalar/array mismatch is caught the same
|
|
68
|
+
* place the tree catches it — at the render.
|
|
69
|
+
*/
|
|
70
|
+
modelValue?: string | number | Array<string | number> | undefined;
|
|
71
|
+
/** Whether one node or several can be chosen at once. */
|
|
72
|
+
selectionMode?: TreeViewSelectionMode;
|
|
73
|
+
/**
|
|
74
|
+
* Fetch a branch's children the first time it is expanded. A node with no
|
|
75
|
+
* `children` of its own is treated as lazily loadable; one that resolves
|
|
76
|
+
* to an empty array becomes a leaf, and a rejected fetch leaves the node
|
|
77
|
+
* collapsed so the next activation retries rather than caching failure.
|
|
78
|
+
*/
|
|
79
|
+
loadChildren?: (node: TreeNode) => Promise<TreeNode[]>;
|
|
80
|
+
/** Node values expanded on mount. After mount the tree owns the state. */
|
|
81
|
+
defaultExpanded?: Array<string | number>;
|
|
82
|
+
/**
|
|
83
|
+
* Unavailable: the rows dim, refuse selection and expansion, and drop out
|
|
84
|
+
* of the tab order. Unset defers to an enclosing `<fieldset disabled>`
|
|
85
|
+
* read straight off the DOM.
|
|
86
|
+
*/
|
|
87
|
+
disabled?: boolean | undefined;
|
|
88
|
+
/** Names for the strings this control supplies itself. */
|
|
89
|
+
labels?: LabelOverrides<TreeViewLabels> | undefined;
|
|
90
|
+
}> & Readonly<{
|
|
91
|
+
"onUpdate:modelValue"?: (value: string | number | (string | number)[]) => any;
|
|
92
|
+
}>, {
|
|
93
|
+
disabled: boolean | undefined;
|
|
94
|
+
modelValue: string | number | Array<string | number> | undefined;
|
|
95
|
+
labels: LabelOverrides<TreeViewLabels> | undefined;
|
|
96
|
+
selectionMode: TreeViewSelectionMode;
|
|
97
|
+
defaultExpanded: Array<string | number>;
|
|
98
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
99
|
+
//# sourceMappingURL=TreeView.vue.d.ts.map
|
package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { useLabels } from "../../../labels/src/labels.js";
|
|
2
|
+
import { useAncestorDisabled } from "../../../labels/src/ancestor-disabled.js";
|
|
3
|
+
import "../../../labels/src/index.js";
|
|
4
|
+
import { TREE_VIEW_CONTEXT } from "./context.js";
|
|
5
|
+
import TreeViewNode_default from "./TreeViewNode.js";
|
|
6
|
+
import { Fragment, computed, createBlock, createElementBlock, defineComponent, nextTick, onScopeDispose, openBlock, provide, ref, renderList, watch } from "vue";
|
|
7
|
+
//#region packages/primitives/tree-view/src/TreeView.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var _hoisted_1 = ["aria-multiselectable", "aria-disabled"];
|
|
9
|
+
/**
|
|
10
|
+
* Loom's English, co-located with the component so it tree-shakes with it.
|
|
11
|
+
* Everything else a tree renders is a node's own label, so the bag is one
|
|
12
|
+
* string — but it is a string a reader waits on.
|
|
13
|
+
*/
|
|
14
|
+
var TREE_VIEW_LABELS = { loading: "Loading…" };
|
|
15
|
+
var TreeView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
16
|
+
__name: "TreeView",
|
|
17
|
+
props: {
|
|
18
|
+
nodes: {},
|
|
19
|
+
modelValue: { default: void 0 },
|
|
20
|
+
selectionMode: { default: "single" },
|
|
21
|
+
loadChildren: {},
|
|
22
|
+
defaultExpanded: { default: () => [] },
|
|
23
|
+
disabled: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
default: void 0
|
|
26
|
+
},
|
|
27
|
+
labels: { default: void 0 }
|
|
28
|
+
},
|
|
29
|
+
emits: ["update:modelValue"],
|
|
30
|
+
setup(__props, { emit: __emit }) {
|
|
31
|
+
const props = __props;
|
|
32
|
+
const emit = __emit;
|
|
33
|
+
/**
|
|
34
|
+
* A row as the keyboard sees it: one step of the depth-first walk of the
|
|
35
|
+
* visible tree, with everything the key map needs resolved once per change
|
|
36
|
+
* instead of per keystroke.
|
|
37
|
+
*/
|
|
38
|
+
const rootEl = ref(null);
|
|
39
|
+
const ancestorDisabled = useAncestorDisabled(() => rootEl.value);
|
|
40
|
+
const controlDisabled = computed(() => (props.disabled ?? false) || ancestorDisabled.value);
|
|
41
|
+
const text = useLabels("treeView", TREE_VIEW_LABELS, () => props.labels);
|
|
42
|
+
const expandedKeys = ref(new Set(props.defaultExpanded));
|
|
43
|
+
const loadingKeys = ref(/* @__PURE__ */ new Set());
|
|
44
|
+
const lazyChildren = ref(/* @__PURE__ */ new Map());
|
|
45
|
+
const focusValue = ref(null);
|
|
46
|
+
function toKeySet(model) {
|
|
47
|
+
if (model == null) return /* @__PURE__ */ new Set();
|
|
48
|
+
return new Set(Array.isArray(model) ? model : [model]);
|
|
49
|
+
}
|
|
50
|
+
const selectedKeys = ref(toKeySet(props.modelValue));
|
|
51
|
+
watch(() => props.modelValue, (next) => {
|
|
52
|
+
selectedKeys.value = toKeySet(next);
|
|
53
|
+
});
|
|
54
|
+
function childrenOf(node) {
|
|
55
|
+
if (Array.isArray(node.children)) return node.children;
|
|
56
|
+
return lazyChildren.value.get(node.value) ?? [];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A row can open when it has children to show: a non-empty `children` array,
|
|
60
|
+
* or a fetch already resolved beneath it — an empty resolution *is* the
|
|
61
|
+
* answer, and the row collapses back to a leaf rather than offering a branch
|
|
62
|
+
* that opens onto nothing.
|
|
63
|
+
*/
|
|
64
|
+
function isExpandable(node) {
|
|
65
|
+
if (Array.isArray(node.children)) return node.children.length > 0;
|
|
66
|
+
const loaded = lazyChildren.value.get(node.value);
|
|
67
|
+
if (loaded) return loaded.length > 0;
|
|
68
|
+
return props.loadChildren != null;
|
|
69
|
+
}
|
|
70
|
+
const flatRows = computed(() => {
|
|
71
|
+
const rows = [];
|
|
72
|
+
const walk = (nodes, level, parentId) => {
|
|
73
|
+
for (let index = 0; index < nodes.length; index++) {
|
|
74
|
+
const node = nodes[index];
|
|
75
|
+
if (!node) continue;
|
|
76
|
+
const expandable = isExpandable(node);
|
|
77
|
+
const expanded = expandable && expandedKeys.value.has(node.value);
|
|
78
|
+
rows.push({
|
|
79
|
+
value: node.value,
|
|
80
|
+
node,
|
|
81
|
+
level,
|
|
82
|
+
setsize: nodes.length,
|
|
83
|
+
posinset: index + 1,
|
|
84
|
+
parentId,
|
|
85
|
+
expandable,
|
|
86
|
+
expanded,
|
|
87
|
+
selected: selectedKeys.value.has(node.value),
|
|
88
|
+
busy: loadingKeys.value.has(node.value),
|
|
89
|
+
disabled: (node.disabled ?? false) || controlDisabled.value
|
|
90
|
+
});
|
|
91
|
+
if (expanded) walk(childrenOf(node), level + 1, node.value);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
walk(props.nodes, 1, null);
|
|
95
|
+
return rows;
|
|
96
|
+
});
|
|
97
|
+
const rowByValue = computed(() => new Map(flatRows.value.map((row) => [row.value, row])));
|
|
98
|
+
const tabStopValue = computed(() => {
|
|
99
|
+
const focused = focusValue.value != null ? rowByValue.value.get(focusValue.value) : void 0;
|
|
100
|
+
if (focused && !focused.disabled) return focusValue.value;
|
|
101
|
+
return flatRows.value.find((row) => !row.disabled)?.value ?? null;
|
|
102
|
+
});
|
|
103
|
+
function stateFor(node) {
|
|
104
|
+
const row = rowByValue.value.get(node.value);
|
|
105
|
+
return {
|
|
106
|
+
expandable: row?.expandable ?? false,
|
|
107
|
+
expanded: row?.expanded ?? false,
|
|
108
|
+
selected: row?.selected ?? false,
|
|
109
|
+
busy: row?.busy ?? false,
|
|
110
|
+
disabled: row?.disabled ?? false,
|
|
111
|
+
focusable: !controlDisabled.value && row?.value === tabStopValue.value
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async function expandRow(row) {
|
|
115
|
+
const value = row.node.value;
|
|
116
|
+
if (row.disabled || !row.expandable || expandedKeys.value.has(value) || loadingKeys.value.has(value)) return;
|
|
117
|
+
if (!Array.isArray(row.node.children) && props.loadChildren != null && !lazyChildren.value.has(value) && props.loadChildren) {
|
|
118
|
+
loadingKeys.value = new Set(loadingKeys.value).add(value);
|
|
119
|
+
try {
|
|
120
|
+
const children = await props.loadChildren(row.node);
|
|
121
|
+
const next = new Map(lazyChildren.value);
|
|
122
|
+
next.set(value, children);
|
|
123
|
+
lazyChildren.value = next;
|
|
124
|
+
} catch {
|
|
125
|
+
return;
|
|
126
|
+
} finally {
|
|
127
|
+
const settled = new Set(loadingKeys.value);
|
|
128
|
+
settled.delete(value);
|
|
129
|
+
loadingKeys.value = settled;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
expandedKeys.value = new Set(expandedKeys.value).add(value);
|
|
133
|
+
}
|
|
134
|
+
function collapseRow(value) {
|
|
135
|
+
const next = new Set(expandedKeys.value);
|
|
136
|
+
next.delete(value);
|
|
137
|
+
expandedKeys.value = next;
|
|
138
|
+
}
|
|
139
|
+
function selectRow(node) {
|
|
140
|
+
if (controlDisabled.value || node.disabled) return;
|
|
141
|
+
if (props.selectionMode === "multiple") {
|
|
142
|
+
const next = new Set(selectedKeys.value);
|
|
143
|
+
if (next.has(node.value)) next.delete(node.value);
|
|
144
|
+
else next.add(node.value);
|
|
145
|
+
selectedKeys.value = next;
|
|
146
|
+
emit("update:modelValue", [...next]);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
selectedKeys.value = /* @__PURE__ */ new Set([node.value]);
|
|
150
|
+
emit("update:modelValue", node.value);
|
|
151
|
+
}
|
|
152
|
+
function rowElement(value) {
|
|
153
|
+
const root = rootEl.value;
|
|
154
|
+
if (!root) return null;
|
|
155
|
+
return root.querySelector(`[data-tree-value="${CSS.escape(String(value))}"]`);
|
|
156
|
+
}
|
|
157
|
+
function focusRow(row) {
|
|
158
|
+
if (!row) return;
|
|
159
|
+
focusValue.value = row.node.value;
|
|
160
|
+
nextTick(() => {
|
|
161
|
+
rowElement(row.value)?.focus();
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
function onRowFocus(node) {
|
|
165
|
+
focusValue.value = node.value;
|
|
166
|
+
}
|
|
167
|
+
function onRowActivate(node) {
|
|
168
|
+
const row = rowByValue.value.get(node.value);
|
|
169
|
+
if (!row || controlDisabled.value) return;
|
|
170
|
+
focusRow(row);
|
|
171
|
+
selectRow(node);
|
|
172
|
+
}
|
|
173
|
+
function onChevronActivate(node) {
|
|
174
|
+
const row = rowByValue.value.get(node.value);
|
|
175
|
+
if (!row || controlDisabled.value || row.disabled) return;
|
|
176
|
+
focusRow(row);
|
|
177
|
+
if (row.expanded) collapseRow(node.value);
|
|
178
|
+
else expandRow(row);
|
|
179
|
+
}
|
|
180
|
+
function currentRowIndex() {
|
|
181
|
+
if (focusValue.value == null) return -1;
|
|
182
|
+
return flatRows.value.findIndex((row) => row.value === focusValue.value);
|
|
183
|
+
}
|
|
184
|
+
const TYPEAHEAD_RESET_MS = 500;
|
|
185
|
+
let typeaheadBuffer = "";
|
|
186
|
+
let typeaheadTimer;
|
|
187
|
+
function handleTypeahead(event) {
|
|
188
|
+
if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;
|
|
189
|
+
if (flatRows.value.length === 0) return;
|
|
190
|
+
const char = event.key.toLowerCase();
|
|
191
|
+
if (typeaheadBuffer.slice(-1) !== char) typeaheadBuffer += char;
|
|
192
|
+
const query = typeaheadBuffer;
|
|
193
|
+
const start = currentRowIndex() + 1;
|
|
194
|
+
for (let step = 0; step < flatRows.value.length; step++) {
|
|
195
|
+
const row = flatRows.value[(start + step) % flatRows.value.length];
|
|
196
|
+
if (row && !row.disabled && row.node.label.toLowerCase().startsWith(query)) {
|
|
197
|
+
focusRow(row);
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
event.preventDefault();
|
|
202
|
+
if (typeaheadTimer !== void 0) clearTimeout(typeaheadTimer);
|
|
203
|
+
typeaheadTimer = setTimeout(() => {
|
|
204
|
+
typeaheadBuffer = "";
|
|
205
|
+
typeaheadTimer = void 0;
|
|
206
|
+
}, TYPEAHEAD_RESET_MS);
|
|
207
|
+
}
|
|
208
|
+
onScopeDispose(() => {
|
|
209
|
+
if (typeaheadTimer !== void 0) clearTimeout(typeaheadTimer);
|
|
210
|
+
});
|
|
211
|
+
/**
|
|
212
|
+
* One keydown on the root, reached from every row by bubbling: the key map is
|
|
213
|
+
* written once against the flat visible walk instead of duplicated per row.
|
|
214
|
+
* Disabled rows stay in the arrow walk — present and reachable, per the APG —
|
|
215
|
+
* but Enter, Space and the disclosure keys refuse them.
|
|
216
|
+
*/
|
|
217
|
+
function onKeydown(event) {
|
|
218
|
+
if (controlDisabled.value) return;
|
|
219
|
+
const rows = flatRows.value;
|
|
220
|
+
if (rows.length === 0) return;
|
|
221
|
+
const index = currentRowIndex();
|
|
222
|
+
const row = index >= 0 ? rows[index] : void 0;
|
|
223
|
+
switch (event.key) {
|
|
224
|
+
case "ArrowDown": {
|
|
225
|
+
const next = rows[index + 1];
|
|
226
|
+
if (next) focusRow(next);
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
case "ArrowUp": {
|
|
230
|
+
const previous = index > 0 ? rows[index - 1] : void 0;
|
|
231
|
+
if (previous) focusRow(previous);
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
case "Home":
|
|
235
|
+
focusRow(rows[0]);
|
|
236
|
+
break;
|
|
237
|
+
case "End":
|
|
238
|
+
focusRow(rows[rows.length - 1]);
|
|
239
|
+
break;
|
|
240
|
+
case "ArrowRight":
|
|
241
|
+
if (!row) break;
|
|
242
|
+
if (row.disabled) break;
|
|
243
|
+
if (row.expandable && !row.expanded) {
|
|
244
|
+
expandRow(row);
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
if (row.expanded) {
|
|
248
|
+
const child = rows[index + 1];
|
|
249
|
+
if (child && child.level === row.level + 1) focusRow(child);
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
case "ArrowLeft":
|
|
253
|
+
if (!row) break;
|
|
254
|
+
if (row.disabled) break;
|
|
255
|
+
if (row.expandable && row.expanded) {
|
|
256
|
+
collapseRow(row.value);
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
if (row.parentId != null) {
|
|
260
|
+
const parent = rowByValue.value.get(row.parentId);
|
|
261
|
+
if (parent) focusRow(parent);
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
case "Enter":
|
|
265
|
+
case " ":
|
|
266
|
+
if (row) selectRow(row.node);
|
|
267
|
+
break;
|
|
268
|
+
default:
|
|
269
|
+
handleTypeahead(event);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
event.preventDefault();
|
|
273
|
+
}
|
|
274
|
+
provide(TREE_VIEW_CONTEXT, {
|
|
275
|
+
stateFor,
|
|
276
|
+
childrenOf,
|
|
277
|
+
loadingText: computed(() => text.value.loading),
|
|
278
|
+
onRowFocus,
|
|
279
|
+
onRowActivate,
|
|
280
|
+
onChevronActivate
|
|
281
|
+
});
|
|
282
|
+
return (_ctx, _cache) => {
|
|
283
|
+
return openBlock(), createElementBlock("ul", {
|
|
284
|
+
ref_key: "rootEl",
|
|
285
|
+
ref: rootEl,
|
|
286
|
+
role: "tree",
|
|
287
|
+
"aria-multiselectable": __props.selectionMode === "multiple" ? "true" : void 0,
|
|
288
|
+
"aria-disabled": controlDisabled.value ? "true" : void 0,
|
|
289
|
+
class: "m-0 list-none select-none p-0 text-sm text-foreground",
|
|
290
|
+
onKeydown
|
|
291
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.nodes, (node, index) => {
|
|
292
|
+
return openBlock(), createBlock(TreeViewNode_default, {
|
|
293
|
+
key: node.value,
|
|
294
|
+
node,
|
|
295
|
+
level: 1,
|
|
296
|
+
setsize: __props.nodes.length,
|
|
297
|
+
posinset: index + 1
|
|
298
|
+
}, null, 8, [
|
|
299
|
+
"node",
|
|
300
|
+
"setsize",
|
|
301
|
+
"posinset"
|
|
302
|
+
]);
|
|
303
|
+
}), 128))], 40, _hoisted_1);
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
//#endregion
|
|
308
|
+
export { TREE_VIEW_LABELS, TreeView_vue_vue_type_script_setup_true_lang_default as default };
|
|
309
|
+
|
|
310
|
+
//# sourceMappingURL=TreeView.vue_vue_type_script_setup_true_lang.js.map
|