ropav 0.3.1 → 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/dist/components/autocomplete/autocomplete-root.js +3 -1
- package/dist/components/autocomplete/index.d.ts +3 -0
- package/dist/components/avatar/avatar-image.js +13 -2
- package/dist/components/avatar/avatar.types.d.ts +7 -1
- package/dist/components/breadcrumbs/breadcrumbs-item.js +1 -0
- package/dist/components/breadcrumbs/index.d.ts +1 -0
- package/dist/components/calendar/calendar-header.js +1 -1
- package/dist/components/calendar/index.d.ts +5 -3
- package/dist/components/calendar-year-picker/index.d.ts +4 -2
- package/dist/components/checkbox/checkbox-content.js +1 -1
- package/dist/components/color-field/index.d.ts +3 -2
- package/dist/components/color-input-group/color-input-group-root.js +2 -0
- package/dist/components/color-input-group/color-input-group.types.d.ts +2 -0
- package/dist/components/color-input-group/index.d.ts +2 -0
- package/dist/components/combo-box/combo-box-root.js +9 -2
- package/dist/components/combo-box/combo-box.types.d.ts +3 -0
- package/dist/components/combo-box/index.d.ts +3 -0
- package/dist/components/date-field/index.d.ts +1 -0
- package/dist/components/date-input-group/date-input-group-root.js +2 -0
- package/dist/components/date-input-group/date-input-group-segment.js +1 -1
- package/dist/components/date-input-group/date-input-group.types.d.ts +2 -0
- package/dist/{composables → components/date-input-group}/use-date-segment.d.ts +2 -2
- package/dist/{composables → components/date-input-group}/use-date-segment.js +9 -9
- package/dist/components/date-picker/index.d.ts +3 -2
- package/dist/components/date-picker/index.js +2 -2
- package/dist/components/date-range-picker/date-range-picker-root.js +1 -1
- package/dist/components/date-range-picker/index.d.ts +18 -16
- package/dist/components/date-range-picker/index.js +2 -2
- package/dist/{composables → components/date-range-picker}/use-date-range-picker.d.ts +7 -7
- package/dist/{composables → components/date-range-picker}/use-date-range-picker.js +10 -10
- package/dist/components/drawer/drawer-dialog.js +1 -1
- package/dist/{composables → components/drawer}/use-drawer-drag.d.ts +1 -1
- package/dist/{composables → components/drawer}/use-drawer-drag.js +1 -1
- package/dist/components/dropdown/dropdown-menu.js +3 -1
- package/dist/components/dropdown/dropdown-submenu-trigger.js +1 -1
- package/dist/components/dropdown/dropdown.types.d.ts +3 -3
- package/dist/components/dropdown/index.d.ts +4 -2
- package/dist/{composables → components/dropdown}/use-safely-mouse-to-submenu.js +1 -1
- package/dist/components/icons/icon-overlay-arrow.js +1 -1
- package/dist/components/index.d.ts +5 -0
- package/dist/components/input/index.d.ts +12 -4
- package/dist/components/input/input-root.d.ts +5 -2
- package/dist/components/input/input-root.js +46 -5
- package/dist/components/input/input.types.d.ts +11 -0
- package/dist/components/input-group/index.d.ts +2 -0
- package/dist/components/input-group/input-group-root.js +3 -0
- package/dist/components/input-group/input-group.types.d.ts +5 -0
- package/dist/components/input-otp/index.d.ts +6 -4
- package/dist/components/link/index.d.ts +2 -0
- package/dist/components/link/link-root.js +22 -5
- package/dist/components/link/link.types.d.ts +14 -3
- package/dist/{composables → components/list-box}/drag-collection.d.ts +2 -2
- package/dist/{composables → components/list-box}/drag-collection.js +1 -1
- package/dist/components/list-box/index.d.ts +4 -0
- package/dist/components/list-box/list-box-root.js +60 -35
- package/dist/components/list-box/list-box.types.d.ts +2 -0
- package/dist/components/menu/index.d.ts +4 -0
- package/dist/components/menu/menu-root.js +9 -2
- package/dist/components/menu/menu.types.d.ts +5 -0
- package/dist/components/number-field/index.d.ts +3 -0
- package/dist/components/number-field/number-field-root.js +2 -0
- package/dist/components/number-field/number-field.types.d.ts +2 -0
- package/dist/components/overlay/overlay-arrow.js +64 -11
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/pagination-root.js +8 -3
- package/dist/components/pagination/pagination.types.d.ts +8 -0
- package/dist/components/popover/popover-trigger.js +14 -7
- package/dist/components/radio/radio-content.js +1 -1
- package/dist/components/range-calendar/index.d.ts +18 -15
- package/dist/components/range-calendar/range-calendar-header.js +1 -1
- package/dist/components/router-provider/index.d.ts +5 -0
- package/dist/components/router-provider/index.js +3 -0
- package/dist/components/router-provider/router-provider.context.d.ts +40 -0
- package/dist/components/router-provider/router-provider.context.js +16 -0
- package/dist/components/router-provider/router-provider.d.ts +21 -0
- package/dist/components/router-provider/router-provider.js +22 -0
- package/dist/components/router-provider/router-provider.types.d.ts +23 -0
- package/dist/components/scroll-shadow/scroll-shadow-root.js +7 -1
- package/dist/components/scroll-shadow/use-scroll-shadow.js +25 -1
- package/dist/components/search-field/index.d.ts +2 -0
- package/dist/components/search-field/search-field-root.js +3 -1
- package/dist/components/search-field/search-field.types.d.ts +2 -0
- package/dist/{composables → components/search-field}/use-search-field.d.ts +2 -2
- package/dist/{composables → components/search-field}/use-search-field.js +3 -3
- package/dist/components/segmented-control/index.d.ts +134 -0
- package/dist/components/segmented-control/index.js +15 -0
- package/dist/components/segmented-control/segmented-control-indicator.d.ts +19 -0
- package/dist/components/segmented-control/segmented-control-indicator.js +36 -0
- package/dist/components/segmented-control/segmented-control-item.d.ts +21 -0
- package/dist/components/segmented-control/segmented-control-item.js +96 -0
- package/dist/components/segmented-control/segmented-control-root.d.ts +25 -0
- package/dist/components/segmented-control/segmented-control-root.js +112 -0
- package/dist/components/segmented-control/segmented-control-separator.d.ts +19 -0
- package/dist/components/segmented-control/segmented-control-separator.js +18 -0
- package/dist/components/segmented-control/segmented-control.context.d.ts +17 -0
- package/dist/components/segmented-control/segmented-control.context.js +12 -0
- package/dist/components/segmented-control/segmented-control.types.d.ts +67 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/select-hidden-select.js +1 -1
- package/dist/components/select/select-root.js +2 -0
- package/dist/components/select/select.types.d.ts +2 -0
- package/dist/components/separator/separator-root.js +11 -5
- package/dist/components/separator/separator.context.d.ts +7 -0
- package/dist/components/sidebar/index.d.ts +544 -0
- package/dist/components/sidebar/index.js +47 -0
- package/dist/components/sidebar/sidebar-collapsible-trigger.d.ts +21 -0
- package/dist/components/sidebar/sidebar-collapsible-trigger.js +70 -0
- package/dist/components/sidebar/sidebar-collapsible.d.ts +24 -0
- package/dist/components/sidebar/sidebar-collapsible.js +78 -0
- package/dist/components/sidebar/sidebar-content.d.ts +21 -0
- package/dist/components/sidebar/sidebar-content.js +37 -0
- package/dist/components/sidebar/sidebar-footer.d.ts +21 -0
- package/dist/components/sidebar/sidebar-footer.js +24 -0
- package/dist/components/sidebar/sidebar-group-label.d.ts +21 -0
- package/dist/components/sidebar/sidebar-group-label.js +32 -0
- package/dist/components/sidebar/sidebar-group.d.ts +21 -0
- package/dist/components/sidebar/sidebar-group.js +48 -0
- package/dist/components/sidebar/sidebar-header.d.ts +21 -0
- package/dist/components/sidebar/sidebar-header.js +24 -0
- package/dist/components/sidebar/sidebar-inset.d.ts +21 -0
- package/dist/components/sidebar/sidebar-inset.js +24 -0
- package/dist/components/sidebar/sidebar-item-icon.d.ts +21 -0
- package/dist/components/sidebar/sidebar-item-icon.js +20 -0
- package/dist/components/sidebar/sidebar-item-indicator.d.ts +21 -0
- package/dist/components/sidebar/sidebar-item-indicator.js +48 -0
- package/dist/components/sidebar/sidebar-item-label.d.ts +21 -0
- package/dist/components/sidebar/sidebar-item-label.js +28 -0
- package/dist/components/sidebar/sidebar-item-tooltip.d.ts +21 -0
- package/dist/components/sidebar/sidebar-item-tooltip.js +38 -0
- package/dist/components/sidebar/sidebar-item-trailing.d.ts +21 -0
- package/dist/components/sidebar/sidebar-item-trailing.js +28 -0
- package/dist/components/sidebar/sidebar-item.d.ts +23 -0
- package/dist/components/sidebar/sidebar-item.js +160 -0
- package/dist/components/sidebar/sidebar-panel.d.ts +21 -0
- package/dist/components/sidebar/sidebar-panel.js +88 -0
- package/dist/components/sidebar/sidebar-rail.d.ts +21 -0
- package/dist/components/sidebar/sidebar-rail.js +210 -0
- package/dist/components/sidebar/sidebar-root.d.ts +31 -0
- package/dist/components/sidebar/sidebar-root.js +138 -0
- package/dist/components/sidebar/sidebar-separator.d.ts +19 -0
- package/dist/components/sidebar/sidebar-separator.js +16 -0
- package/dist/components/sidebar/sidebar-sub-menu.d.ts +23 -0
- package/dist/components/sidebar/sidebar-sub-menu.js +40 -0
- package/dist/components/sidebar/sidebar-trigger.d.ts +21 -0
- package/dist/components/sidebar/sidebar-trigger.js +69 -0
- package/dist/components/sidebar/sidebar.context.d.ts +75 -0
- package/dist/components/sidebar/sidebar.context.js +30 -0
- package/dist/components/sidebar/sidebar.state.d.ts +73 -0
- package/dist/components/sidebar/sidebar.state.js +76 -0
- package/dist/components/sidebar/sidebar.storage.d.ts +8 -0
- package/dist/components/sidebar/sidebar.storage.js +45 -0
- package/dist/components/sidebar/sidebar.types.d.ts +259 -0
- package/dist/components/splitter/index.d.ts +143 -0
- package/dist/components/splitter/index.js +13 -0
- package/dist/components/splitter/splitter-handle.d.ts +21 -0
- package/dist/components/splitter/splitter-handle.js +209 -0
- package/dist/components/splitter/splitter-panel.d.ts +21 -0
- package/dist/components/splitter/splitter-panel.js +70 -0
- package/dist/components/splitter/splitter-root.d.ts +31 -0
- package/dist/components/splitter/splitter-root.js +152 -0
- package/dist/components/splitter/splitter.context.d.ts +15 -0
- package/dist/components/splitter/splitter.context.js +5 -0
- package/dist/components/splitter/splitter.state.d.ts +87 -0
- package/dist/components/splitter/splitter.state.js +322 -0
- package/dist/components/splitter/splitter.storage.d.ts +15 -0
- package/dist/components/splitter/splitter.storage.js +56 -0
- package/dist/components/splitter/splitter.types.d.ts +98 -0
- package/dist/components/switch/switch-content.js +1 -1
- package/dist/components/table/index.d.ts +10 -9
- package/dist/components/table/table-body.js +13 -13
- package/dist/components/table/table-cell.js +49 -46
- package/dist/components/table/table-column-resizer.js +1 -1
- package/dist/components/table/table-column.js +1 -1
- package/dist/components/table/table-content.js +37 -18
- package/dist/{composables → components/table}/table-drag-collection.d.ts +1 -1
- package/dist/{composables → components/table}/table-drag-collection.js +1 -1
- package/dist/components/table/table-drop-indicator.js +3 -1
- package/dist/components/table/table-resizable-container.d.ts +4 -5
- package/dist/components/table/table-row.js +45 -14
- package/dist/components/table/table-virtualizer-item.d.ts +2 -7
- package/dist/components/table/table-virtualizer-item.js +20 -9
- package/dist/components/table/table.context.d.ts +11 -3
- package/dist/components/table/table.types.d.ts +1 -1
- package/dist/{composables → components/table}/use-grid-keyboard.d.ts +3 -3
- package/dist/{composables → components/table}/use-grid-keyboard.js +57 -55
- package/dist/{composables → components/table}/use-grid-selection-announcement.d.ts +2 -2
- package/dist/{composables → components/table}/use-grid-selection-announcement.js +2 -2
- package/dist/{composables → components/table}/use-table-collection.d.ts +2 -2
- package/dist/{composables → components/table}/use-table-collection.js +4 -4
- package/dist/{composables → components/table}/use-table-column-layout.d.ts +13 -20
- package/dist/components/table/use-table-column-layout.js +115 -0
- package/dist/components/tabs/tabs-panel.js +5 -1
- package/dist/components/tabs/tabs-tab.js +1 -1
- package/dist/components/textarea/index.d.ts +12 -4
- package/dist/components/textarea/textarea-root.d.ts +5 -2
- package/dist/components/textarea/textarea-root.js +40 -5
- package/dist/components/textarea/textarea.types.d.ts +11 -0
- package/dist/components/textfield/index.d.ts +2 -0
- package/dist/components/textfield/textfield-root.js +5 -1
- package/dist/components/textfield/textfield.context.d.ts +2 -0
- package/dist/components/textfield/textfield.types.d.ts +5 -0
- package/dist/components/time-field/index.d.ts +1 -0
- package/dist/components/toast/index.d.ts +1 -0
- package/dist/components/toast/toast-default-content.js +1 -1
- package/dist/components/toggle-button-group/toggle-button-group-root.js +3 -3
- package/dist/components/toolbar/index.d.ts +3 -2
- package/dist/components/toolbar/toolbar-root.js +3 -3
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooltip/tooltip-root.js +1 -1
- package/dist/components/tooltip/tooltip-trigger.js +13 -5
- package/dist/components/virtualizer/index.d.ts +3 -1
- package/dist/components/virtualizer/index.js +2 -1
- package/dist/components/virtualizer/use-virtualizer-item.d.ts +23 -0
- package/dist/components/virtualizer/use-virtualizer-item.js +45 -0
- package/dist/components/virtualizer/virtualizer-item.js +7 -41
- package/dist/components/virtualizer/virtualizer-scrollbar-track.d.ts +20 -0
- package/dist/components/virtualizer/virtualizer-scrollbar-track.js +141 -0
- package/dist/components/virtualizer/virtualizer-scrollbar.d.ts +18 -0
- package/dist/components/virtualizer/virtualizer-scrollbar.js +55 -0
- package/dist/components/virtualizer/virtualizer.context.d.ts +17 -1
- package/dist/composables/drag-manager.js +1 -13
- package/dist/composables/index.d.ts +3 -71
- package/dist/composables/use-collection.d.ts +22 -3
- package/dist/composables/use-collection.js +67 -14
- package/dist/composables/use-color-area.js +2 -2
- package/dist/composables/use-color-field.js +1 -1
- package/dist/composables/use-combo-box.js +1 -1
- package/dist/composables/use-date-field.js +1 -1
- package/dist/composables/use-drag-and-drop.js +1 -1
- package/dist/composables/use-drag.d.ts +6 -5
- package/dist/composables/use-draggable-item.d.ts +2 -2
- package/dist/composables/use-droppable-collection.js +2 -2
- package/dist/composables/use-droppable-item.js +1 -1
- package/dist/composables/use-form-reset.d.ts +6 -2
- package/dist/composables/use-form-reset.js +9 -5
- package/dist/composables/use-list-keyboard.js +64 -62
- package/dist/composables/use-menu.d.ts +10 -0
- package/dist/composables/use-menu.js +22 -0
- package/dist/composables/use-number-field.js +1 -1
- package/dist/composables/use-select.js +2 -3
- package/dist/composables/use-selection-manager.js +4 -4
- package/dist/composables/use-single-select-list-state.d.ts +37 -0
- package/dist/composables/use-single-select-list-state.js +110 -0
- package/dist/composables/use-slider-thumb.js +2 -2
- package/dist/composables/use-slider.js +1 -1
- package/dist/composables/use-tab-list-state.d.ts +20 -29
- package/dist/composables/use-tab-list-state.js +20 -99
- package/dist/composables/use-text-field.js +1 -1
- package/dist/composables/use-virtualizer-scroll.d.ts +52 -2
- package/dist/composables/use-virtualizer-scroll.js +79 -13
- package/dist/composables/use-virtualizer.d.ts +24 -4
- package/dist/composables/use-virtualizer.js +40 -6
- package/dist/index.js +58 -80
- package/dist/utils/document-order.d.ts +14 -0
- package/dist/utils/document-order.js +17 -0
- package/dist/utils/flex-sizing.d.ts +41 -0
- package/dist/utils/flex-sizing.js +140 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/open-link.d.ts +31 -0
- package/dist/utils/open-link.js +32 -0
- package/dist/utils/story-truncation.d.ts +20 -0
- package/dist/utils/story-users.d.ts +11 -0
- package/dist/utils/virtualizer-collection.d.ts +14 -4
- package/dist/utils/virtualizer-collection.js +9 -14
- package/dist/utils/virtualizer-layout-info.js +3 -2
- package/dist/utils/virtualizer-list-layout.d.ts +75 -29
- package/dist/utils/virtualizer-list-layout.js +182 -99
- package/dist/utils/virtualizer-offsets.d.ts +111 -0
- package/dist/utils/virtualizer-offsets.js +159 -0
- package/dist/utils/virtualizer-overscan.d.ts +9 -15
- package/dist/utils/virtualizer-overscan.js +14 -33
- package/dist/utils/virtualizer-table-layout.d.ts +50 -21
- package/dist/utils/virtualizer-table-layout.js +130 -89
- package/dist/version.js +1 -1
- package/package.json +19 -3
- package/dist/composables/use-table-column-layout.js +0 -214
- /package/dist/{composables → components/dropdown}/use-safely-mouse-to-submenu.d.ts +0 -0
|
@@ -22,6 +22,7 @@ export declare const ListBox: (<T>(__VLS_props: NonNullable<Awaited<typeof __VLS
|
|
|
22
22
|
disabledBehavior?: import("../../index.js").DisabledBehavior;
|
|
23
23
|
disallowEmptySelection?: boolean;
|
|
24
24
|
variant?: import("@ropav/styles").ListBoxVariants["variant"];
|
|
25
|
+
size?: import("@ropav/styles").ListBoxVariants["size"];
|
|
25
26
|
dragAndDropHooks?: import("../../index.js").DragAndDropHooks;
|
|
26
27
|
onAction?: ((key: import("../../index.js").CollectionKey) => any) | undefined;
|
|
27
28
|
onSelectionChange?: ((keys: import("../../index.js").CollectionSelection) => any) | undefined;
|
|
@@ -148,6 +149,7 @@ export declare const ListBox: (<T>(__VLS_props: NonNullable<Awaited<typeof __VLS
|
|
|
148
149
|
disabledBehavior?: import("../../index.js").DisabledBehavior;
|
|
149
150
|
disallowEmptySelection?: boolean;
|
|
150
151
|
variant?: import("@ropav/styles").ListBoxVariants["variant"];
|
|
152
|
+
size?: import("@ropav/styles").ListBoxVariants["size"];
|
|
151
153
|
dragAndDropHooks?: import("../../index.js").DragAndDropHooks;
|
|
152
154
|
onAction?: ((key: import("../../index.js").CollectionKey) => any) | undefined;
|
|
153
155
|
onSelectionChange?: ((keys: import("../../index.js").CollectionSelection) => any) | undefined;
|
|
@@ -192,5 +194,7 @@ export { ListBoxDropIndicator, ListBoxLoadMoreItem, ListBoxRoot };
|
|
|
192
194
|
export type { ListBoxDropIndicatorProps, ListBoxLoadMoreItemProps, ListBoxRootProps, ListBoxRootProps as ListBoxProps, } from "./list-box.types.js";
|
|
193
195
|
export { provideListBoxStateContext, useListBoxContext, useListBoxStateContext, } from "./list-box.context.js";
|
|
194
196
|
export type { ListBoxContext, ListBoxStateContext } from "./list-box.context.js";
|
|
197
|
+
export type { UseDraggableCollectionStateReturn } from "../../composables/use-draggable-collection-state.js";
|
|
198
|
+
export type { UseDroppableCollectionStateReturn } from "../../composables/use-droppable-collection-state.js";
|
|
195
199
|
export { listboxVariants } from "@ropav/styles";
|
|
196
200
|
export type { ListBoxVariants } from "@ropav/styles";
|
|
@@ -6,8 +6,8 @@ import { useSelectionManager } from "../../composables/use-selection-manager.js"
|
|
|
6
6
|
import { provideListBoxContext, useListBoxStateContext } from "./list-box.context.js";
|
|
7
7
|
import { provideVirtualizerStateContext, useVirtualizerConfigContext } from "../virtualizer/virtualizer.context.js";
|
|
8
8
|
import virtualizer_item_default from "../virtualizer/virtualizer-item.js";
|
|
9
|
+
import virtualizer_scrollbar_default from "../virtualizer/virtualizer-scrollbar.js";
|
|
9
10
|
import list_box_drop_indicator_default from "./list-box-drop-indicator.js";
|
|
10
|
-
import { toDragCollection } from "../../composables/drag-collection.js";
|
|
11
11
|
import { useCollectionAutoFocus } from "../../composables/use-collection-auto-focus.js";
|
|
12
12
|
import { useDndPersistedKeys } from "../../composables/use-dnd-persisted-keys.js";
|
|
13
13
|
import { useListKeyboard } from "../../composables/use-list-keyboard.js";
|
|
@@ -15,11 +15,13 @@ import { useTypeahead } from "../../composables/use-typeahead.js";
|
|
|
15
15
|
import { useVirtualizer } from "../../composables/use-virtualizer.js";
|
|
16
16
|
import { useVirtualizerScroll } from "../../composables/use-virtualizer-scroll.js";
|
|
17
17
|
import { provideSeparatorContext } from "../separator/separator.context.js";
|
|
18
|
+
import { toDragCollection } from "./drag-collection.js";
|
|
18
19
|
import { computed, createComponent, createFor, createIf, createSlot, defineVaporComponent, extend, on, onScopeDispose, renderEffect, setAttr, setClass, setInsertionState, setProp, setStaticTemplateRef, setStyle, shallowRef, template, toValue, unref, useSlots } from "vue";
|
|
19
20
|
import { listboxVariants } from "@ropav/styles";
|
|
20
21
|
//#region src/components/list-box/list-box-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
21
|
-
var t0 = template("<div role=
|
|
22
|
-
var t1 = template("<div
|
|
22
|
+
var t0 = template("<div aria-disabled=true role=option>");
|
|
23
|
+
var t1 = template("<div role=presentation>");
|
|
24
|
+
var t2 = template("<div aria-orientation=vertical data-layout=stack data-orientation=vertical data-slot=list-box role=listbox>", 1);
|
|
23
25
|
/** Stands in while a virtualized listbox has no data yet, so the layout has something to read. */
|
|
24
26
|
var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
25
27
|
__name: "list-box-root",
|
|
@@ -36,6 +38,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
36
38
|
disabledBehavior: {},
|
|
37
39
|
disallowEmptySelection: { type: Boolean },
|
|
38
40
|
variant: {},
|
|
41
|
+
size: {},
|
|
39
42
|
dragAndDropHooks: {}
|
|
40
43
|
},
|
|
41
44
|
emits: [
|
|
@@ -58,6 +61,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
58
61
|
const itemOf = (node) => node?.content;
|
|
59
62
|
const styles = computed(() => listboxVariants({
|
|
60
63
|
class: props.class,
|
|
64
|
+
size: props.size,
|
|
61
65
|
variant: props.variant
|
|
62
66
|
}));
|
|
63
67
|
/**
|
|
@@ -162,7 +166,9 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
162
166
|
onScrollEnd: virtualizer.endScrolling,
|
|
163
167
|
onScrollStart: virtualizer.startScrolling,
|
|
164
168
|
onSizeChange: virtualizer.setSize,
|
|
165
|
-
onVisibleRectChange: virtualizer.setVisibleRect
|
|
169
|
+
onVisibleRectChange: virtualizer.setVisibleRect,
|
|
170
|
+
scrollAdjustment: () => virtualizer.scrollAdjustment.value,
|
|
171
|
+
takeScrollAdjustment: virtualizer.takeScrollAdjustment
|
|
166
172
|
});
|
|
167
173
|
/**
|
|
168
174
|
* Paging asks the layout where the rows are, not the DOM.
|
|
@@ -243,7 +249,10 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
243
249
|
const rendersDropIndicators = computed(() => isVirtualized.value && dropState != null);
|
|
244
250
|
/** The gap after the last item, which no item's own "before" indicator covers. */
|
|
245
251
|
const lastItemKey = computed(() => collection.getLastKey());
|
|
246
|
-
provideSeparatorContext({
|
|
252
|
+
provideSeparatorContext({
|
|
253
|
+
elementType: "div",
|
|
254
|
+
role: "presentation"
|
|
255
|
+
});
|
|
247
256
|
const typeahead = useTypeahead({
|
|
248
257
|
focusedKey: () => selection.focusedKey.value,
|
|
249
258
|
getKeyForSearch: keyboard.getKeyForSearch,
|
|
@@ -275,11 +284,18 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
275
284
|
keyboard,
|
|
276
285
|
selection
|
|
277
286
|
});
|
|
278
|
-
if (virtualizer && virtualizerConfig) provideVirtualizerStateContext({
|
|
287
|
+
if (virtualizer && virtualizerConfig && scroll) provideVirtualizerStateContext({
|
|
279
288
|
getIndex: (key) => collection.getIndex(key),
|
|
280
289
|
getDropTargetLayoutInfo: virtualizerConfig.layout.value.getDropTargetLayoutInfo?.bind(virtualizerConfig.layout.value),
|
|
281
290
|
getLayoutInfo: virtualizer.getLayoutInfo,
|
|
282
291
|
itemCount: computed(() => source.value?.itemCount ?? 0),
|
|
292
|
+
scroll: {
|
|
293
|
+
box: scroll.scrollBox,
|
|
294
|
+
offset: scroll.scrollOffset,
|
|
295
|
+
scrollSize: scroll.scrollSize,
|
|
296
|
+
scrollTo: scroll.scrollTo,
|
|
297
|
+
size: virtualizer.size
|
|
298
|
+
},
|
|
283
299
|
shouldObserveItemSize: virtualizerConfig.shouldObserveItemSize,
|
|
284
300
|
updateItemSize: virtualizer.updateItemSize
|
|
285
301
|
});
|
|
@@ -289,33 +305,42 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
289
305
|
};
|
|
290
306
|
const isEmpty = computed(() => collection.size.value === 0);
|
|
291
307
|
const hasEmptySlot = computed(() => Boolean(callerSlots["empty"]));
|
|
292
|
-
|
|
308
|
+
/**
|
|
309
|
+
* A windowed listbox hides the native scrollbar and draws its own in the content wrapper below: a
|
|
310
|
+
* native thumb is moved by the compositor, a frame ahead of the options, and across a long
|
|
311
|
+
* collection that frame shows an empty list. Wheel, trackpad and keyboard scrolling stay native.
|
|
312
|
+
*/
|
|
313
|
+
const rootStyle = computed(() => isVirtualized.value ? { scrollbarWidth: "none" } : void 0);
|
|
314
|
+
const n20 = t2();
|
|
293
315
|
renderEffect(() => {
|
|
294
316
|
const _selection = unref(selection);
|
|
295
317
|
const _dataAttr = unref(dataAttr);
|
|
296
|
-
setProp(
|
|
297
|
-
setAttr(
|
|
298
|
-
setAttr(
|
|
299
|
-
setAttr(
|
|
300
|
-
setClass(
|
|
301
|
-
setAttr(
|
|
302
|
-
setAttr(
|
|
303
|
-
setAttr(
|
|
304
|
-
setAttr(
|
|
305
|
-
|
|
318
|
+
setProp(n20, "id", listId.value);
|
|
319
|
+
setAttr(n20, "aria-label", ownerAriaLabel.value);
|
|
320
|
+
setAttr(n20, "aria-labelledby", labelledBy.value);
|
|
321
|
+
setAttr(n20, "aria-multiselectable", _selection.selectionMode.value === "multiple" ? true : void 0);
|
|
322
|
+
setClass(n20, styles.value);
|
|
323
|
+
setAttr(n20, "data-collection", unref(collectionId));
|
|
324
|
+
setAttr(n20, "data-drop-target", _dataAttr(isRootDropTarget.value));
|
|
325
|
+
setAttr(n20, "data-empty", _dataAttr(isEmpty.value));
|
|
326
|
+
setAttr(n20, "data-focus-visible", _dataAttr(_selection.isFocused.value));
|
|
327
|
+
setStyle(n20, rootStyle.value);
|
|
328
|
+
setProp(n20, "tabindex", unref(keyboard).collectionTabIndex.value);
|
|
306
329
|
});
|
|
307
|
-
setInsertionState(
|
|
330
|
+
setInsertionState(n20);
|
|
308
331
|
createIf(() => hasEmptySlot.value && isEmpty.value, () => {
|
|
309
332
|
const n3 = t0();
|
|
310
333
|
setInsertionState(n3);
|
|
311
334
|
createSlot("empty");
|
|
312
335
|
return n3;
|
|
313
336
|
});
|
|
314
|
-
setInsertionState(
|
|
337
|
+
setInsertionState(n20, 1);
|
|
315
338
|
createIf(() => isVirtualized.value, () => {
|
|
316
|
-
const
|
|
317
|
-
renderEffect(() => setStyle(
|
|
318
|
-
setInsertionState(
|
|
339
|
+
const n17 = t1();
|
|
340
|
+
renderEffect(() => setStyle(n17, unref(scroll)?.contentStyle.value));
|
|
341
|
+
setInsertionState(n17);
|
|
342
|
+
createComponent(unref(virtualizer_scrollbar_default));
|
|
343
|
+
setInsertionState(n17, 1);
|
|
319
344
|
createFor(() => unref(virtualizer)?.visibleViews.value, (_for_item0) => {
|
|
320
345
|
return [createIf(() => rendersDropIndicators.value, () => {
|
|
321
346
|
return createComponent(list_box_drop_indicator_default, { target: () => ({
|
|
@@ -330,7 +355,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
330
355
|
}, null, 36);
|
|
331
356
|
}, { _: 8 }))];
|
|
332
357
|
}, (view) => view.key);
|
|
333
|
-
setInsertionState(
|
|
358
|
+
setInsertionState(n17, 2);
|
|
334
359
|
createIf(() => rendersDropIndicators.value && lastItemKey.value != null, () => {
|
|
335
360
|
return createComponent(list_box_drop_indicator_default, { target: () => ({
|
|
336
361
|
dropPosition: "after",
|
|
@@ -338,21 +363,21 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
338
363
|
type: "item"
|
|
339
364
|
}) });
|
|
340
365
|
});
|
|
341
|
-
return
|
|
366
|
+
return n17;
|
|
342
367
|
}, () => {
|
|
343
368
|
return createSlot();
|
|
344
369
|
}, 1029);
|
|
345
|
-
on(
|
|
346
|
-
on(
|
|
347
|
-
on(
|
|
348
|
-
on(
|
|
349
|
-
on(
|
|
350
|
-
on(
|
|
351
|
-
on(
|
|
352
|
-
on(
|
|
353
|
-
on(
|
|
354
|
-
setStaticTemplateRef(
|
|
355
|
-
return
|
|
370
|
+
on(n20, "dragenter", ($event) => unref(droppable)?.handlers.onDragenter($event));
|
|
371
|
+
on(n20, "dragleave", ($event) => unref(droppable)?.handlers.onDragleave($event));
|
|
372
|
+
on(n20, "dragover", ($event) => unref(droppable)?.handlers.onDragover($event));
|
|
373
|
+
on(n20, "drop", ($event) => unref(droppable)?.handlers.onDrop($event));
|
|
374
|
+
on(n20, "focusin", (e) => unref(keyboard).onFocusin(e));
|
|
375
|
+
on(n20, "focusout", (e) => unref(keyboard).onFocusout(e));
|
|
376
|
+
on(n20, "keydown", onKeydown);
|
|
377
|
+
on(n20, "keydown", (e) => unref(typeahead).onKeydownCapture(e), { capture: true });
|
|
378
|
+
on(n20, "mousedown", onMousedown);
|
|
379
|
+
setStaticTemplateRef(n20, element, null, "element");
|
|
380
|
+
return n20;
|
|
356
381
|
}
|
|
357
382
|
});
|
|
358
383
|
//#endregion
|
|
@@ -44,6 +44,8 @@ export interface ListBoxRootProps<T = unknown> {
|
|
|
44
44
|
disallowEmptySelection?: boolean;
|
|
45
45
|
/** Visual variant. */
|
|
46
46
|
variant?: ListBoxVariants["variant"];
|
|
47
|
+
/** How tall a row stands, matching a field of the same size. @default "md" */
|
|
48
|
+
size?: ListBoxVariants["size"];
|
|
47
49
|
/** Drag and drop behaviour, from `useDragAndDrop`. */
|
|
48
50
|
dragAndDropHooks?: DragAndDropHooks;
|
|
49
51
|
}
|
|
@@ -9,8 +9,10 @@ export declare const Menu: ((__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
9
9
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
10
10
|
props: import('vue').PublicProps & {
|
|
11
11
|
class?: string;
|
|
12
|
+
size?: import("@ropav/styles").MenuVariants["size"];
|
|
12
13
|
id?: string;
|
|
13
14
|
ariaLabelledby?: string;
|
|
15
|
+
ariaLabel?: string;
|
|
14
16
|
selectionMode?: import("../../index.js").SelectionMode;
|
|
15
17
|
selectionBehavior?: import("../../index.js").SelectionBehavior;
|
|
16
18
|
selectedKeys?: "all" | Iterable<import("../../index.js").CollectionKey>;
|
|
@@ -47,8 +49,10 @@ export declare const Menu: ((__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
47
49
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
48
50
|
props: import('vue').PublicProps & {
|
|
49
51
|
class?: string;
|
|
52
|
+
size?: import("@ropav/styles").MenuVariants["size"];
|
|
50
53
|
id?: string;
|
|
51
54
|
ariaLabelledby?: string;
|
|
55
|
+
ariaLabel?: string;
|
|
52
56
|
selectionMode?: import("../../index.js").SelectionMode;
|
|
53
57
|
selectionBehavior?: import("../../index.js").SelectionBehavior;
|
|
54
58
|
selectedKeys?: "all" | Iterable<import("../../index.js").CollectionKey>;
|
|
@@ -3,14 +3,16 @@ import { useMenu } from "../../composables/use-menu.js";
|
|
|
3
3
|
import { computed, createIf, createSlot, defineVaporComponent, on, renderEffect, setDynamicProps, setInsertionState, setTemplateRefBinding, template, unref, useSlots } from "vue";
|
|
4
4
|
import { menuVariants } from "@ropav/styles";
|
|
5
5
|
//#region src/components/menu/menu-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
6
|
-
var t0 = template("<div
|
|
6
|
+
var t0 = template("<div>");
|
|
7
7
|
var t1 = template("<div>", 1);
|
|
8
8
|
var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
9
9
|
__name: "menu-root",
|
|
10
10
|
props: {
|
|
11
11
|
class: {},
|
|
12
|
+
size: {},
|
|
12
13
|
id: {},
|
|
13
14
|
ariaLabelledby: {},
|
|
15
|
+
ariaLabel: {},
|
|
14
16
|
selectionMode: {},
|
|
15
17
|
selectionBehavior: {},
|
|
16
18
|
selectedKeys: {},
|
|
@@ -37,7 +39,10 @@ var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
37
39
|
const props = __props;
|
|
38
40
|
const emit = __emit;
|
|
39
41
|
const callerSlots = useSlots();
|
|
40
|
-
const styles = computed(() => menuVariants({
|
|
42
|
+
const styles = computed(() => menuVariants({
|
|
43
|
+
class: props.class,
|
|
44
|
+
size: props.size
|
|
45
|
+
}));
|
|
41
46
|
provideSeparatorContext({ elementType: "div" });
|
|
42
47
|
const menu = useMenu({
|
|
43
48
|
autoFocus: () => props.autoFocus,
|
|
@@ -46,6 +51,7 @@ var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
46
51
|
disabledKeys: () => props.disabledKeys,
|
|
47
52
|
disallowEmptySelection: () => props.disallowEmptySelection,
|
|
48
53
|
id: () => props.id,
|
|
54
|
+
label: () => props.ariaLabel,
|
|
49
55
|
labelledBy: () => props.ariaLabelledby,
|
|
50
56
|
onAction: (key) => emit("action", key),
|
|
51
57
|
onClose: () => emit("close"),
|
|
@@ -70,6 +76,7 @@ var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
70
76
|
setInsertionState(n5);
|
|
71
77
|
createIf(() => hasEmptySlot.value && unref(menu).isEmpty.value, () => {
|
|
72
78
|
const n3 = t0();
|
|
79
|
+
renderEffect(() => setDynamicProps(n3, [unref(menu).emptyAttributes.value]));
|
|
73
80
|
setInsertionState(n3);
|
|
74
81
|
createSlot("empty");
|
|
75
82
|
return n3;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { CollectionKey } from "../../composables/use-collection.js";
|
|
2
2
|
import type { FocusStrategy } from "../../composables/use-overlay-trigger-state.js";
|
|
3
3
|
import type { CollectionSelection, DisabledBehavior, SelectionBehavior, SelectionMode } from "../../composables/use-selection-manager.js";
|
|
4
|
+
import type { MenuVariants } from "@ropav/styles";
|
|
4
5
|
export interface MenuRootProps {
|
|
5
6
|
class?: string;
|
|
7
|
+
/** How tall a row stands, matching a field of the same size. @default "md" */
|
|
8
|
+
size?: MenuVariants["size"];
|
|
6
9
|
/** Overrides the menu's id, which a trigger's `aria-controls` points at. */
|
|
7
10
|
id?: string;
|
|
8
11
|
/** The id of the element naming the menu, normally its trigger. */
|
|
9
12
|
ariaLabelledby?: string;
|
|
13
|
+
/** Names the menu when it has no trigger to point `ariaLabelledby` at. */
|
|
14
|
+
ariaLabel?: string;
|
|
10
15
|
/** @default "none" */
|
|
11
16
|
selectionMode?: SelectionMode;
|
|
12
17
|
/** @default "toggle" */
|
|
@@ -13,6 +13,7 @@ export declare const NumberField: ((__VLS_props: NonNullable<Awaited<typeof __VL
|
|
|
13
13
|
props: import('vue').PublicProps & {
|
|
14
14
|
class?: string;
|
|
15
15
|
variant?: import("@ropav/styles").NumberFieldVariants["variant"];
|
|
16
|
+
size?: import("@ropav/styles").NumberFieldVariants["size"];
|
|
16
17
|
fullWidth?: boolean;
|
|
17
18
|
value?: number | null;
|
|
18
19
|
defaultValue?: number;
|
|
@@ -144,6 +145,7 @@ export declare const NumberField: ((__VLS_props: NonNullable<Awaited<typeof __VL
|
|
|
144
145
|
props: import('vue').PublicProps & {
|
|
145
146
|
class?: string;
|
|
146
147
|
variant?: import("@ropav/styles").NumberFieldVariants["variant"];
|
|
148
|
+
size?: import("@ropav/styles").NumberFieldVariants["size"];
|
|
147
149
|
fullWidth?: boolean;
|
|
148
150
|
value?: number | null;
|
|
149
151
|
defaultValue?: number;
|
|
@@ -189,5 +191,6 @@ export { NumberFieldDecrementButton, NumberFieldGroup, NumberFieldIncrementButto
|
|
|
189
191
|
export type { NumberFieldRootProps, NumberFieldRootProps as NumberFieldProps, NumberFieldRootSlotProps, NumberFieldGroupProps, NumberFieldGroupSlotProps, NumberFieldInputProps, NumberFieldStepperButtonProps, } from "./number-field.types.js";
|
|
190
192
|
export { provideNumberFieldContext, useNumberFieldContext } from "./number-field.context.js";
|
|
191
193
|
export type { NumberFieldContext } from "./number-field.context.js";
|
|
194
|
+
export type { NumberFieldStepper, UseNumberFieldReturn } from "../../composables/use-number-field.js";
|
|
192
195
|
export { numberFieldVariants } from "@ropav/styles";
|
|
193
196
|
export type { NumberFieldVariants } from "@ropav/styles";
|
|
@@ -13,6 +13,7 @@ var number_field_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /
|
|
|
13
13
|
props: {
|
|
14
14
|
class: {},
|
|
15
15
|
variant: { default: void 0 },
|
|
16
|
+
size: {},
|
|
16
17
|
fullWidth: {
|
|
17
18
|
type: Boolean,
|
|
18
19
|
default: void 0
|
|
@@ -98,6 +99,7 @@ var number_field_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /
|
|
|
98
99
|
});
|
|
99
100
|
const slots = computed(() => numberFieldVariants({
|
|
100
101
|
fullWidth: props.fullWidth,
|
|
102
|
+
size: props.size,
|
|
101
103
|
variant: props.variant
|
|
102
104
|
}));
|
|
103
105
|
provideFieldIdsContext(field.fieldIds);
|
|
@@ -5,6 +5,8 @@ export interface NumberFieldRootProps {
|
|
|
5
5
|
class?: string;
|
|
6
6
|
/** Visual variant. @default "primary" */
|
|
7
7
|
variant?: NumberFieldVariants["variant"];
|
|
8
|
+
/** How tall the field stands, matching a button of the same size. @default "md" */
|
|
9
|
+
size?: NumberFieldVariants["size"];
|
|
8
10
|
/** Whether the field stretches to fill its container. */
|
|
9
11
|
fullWidth?: boolean;
|
|
10
12
|
/** The number in the field. Makes it controlled. `null` means no number at all. */
|
|
@@ -1,21 +1,73 @@
|
|
|
1
1
|
import { useOverlayArrowContext } from "./overlay.context.js";
|
|
2
|
-
import { computed, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setStyle, setTemplateRefBinding, template } from "vue";
|
|
2
|
+
import { child, computed, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setStyle, setTemplateRefBinding, shallowRef, template, watch } from "vue";
|
|
3
3
|
//#region src/components/overlay/overlay-arrow.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
4
|
-
var t0 = template("<div>", 1);
|
|
4
|
+
var t0 = template("<div><!><svg aria-hidden=true focusable=false height=0 style=\"position: absolute\" width=0><filter id=ropav-overlay-edge color-interpolation-filters=sRGB height=200% width=200% x=-50% y=-50%><feFlood result=line style=\"flood-color: var(--overlay-edge-line, transparent)\"></feFlood><feComposite in=line in2=SourceAlpha operator=out result=outside></feComposite><feGaussianBlur in=outside result=soft stdDeviation=0.5></feGaussianBlur><feComposite in=soft in2=SourceAlpha operator=in result=glow></feComposite><feMerge><feMergeNode in=SourceGraphic></feMergeNode><feMergeNode in=glow>", 1);
|
|
5
|
+
var SKIRT = 2;
|
|
6
|
+
/** Half the mouth's width: the shape's mouth spans the middle 10 of its 12 unit box. */
|
|
7
|
+
var HALF_MOUTH = 5;
|
|
8
|
+
/**
|
|
9
|
+
* How much deeper than the skirt the arrow sits, where the overlay's edge is curved.
|
|
10
|
+
*
|
|
11
|
+
* The mouth is straight, and it normally lies exactly on the overlay's edge, whose flat run its
|
|
12
|
+
* ends meet tangentially. Near a corner the edge has curved away from that line — entirely, when
|
|
13
|
+
* a large radius has clamped a short overlay toward a pill — and the mouth's ends would hang past
|
|
14
|
+
* the curve as two bare horns. The recession under each end follows from the radius the overlay
|
|
15
|
+
* actually renders, and the whole arrow is pulled in that far, plus a little for antialiasing.
|
|
16
|
+
*/
|
|
5
17
|
var overlay_arrow_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
6
18
|
__name: "overlay-arrow",
|
|
7
19
|
props: { class: {} },
|
|
8
20
|
setup(__props) {
|
|
9
21
|
const props = __props;
|
|
10
22
|
const arrow = useOverlayArrowContext();
|
|
23
|
+
const element = shallowRef(null);
|
|
11
24
|
const setElement = (next) => {
|
|
12
|
-
|
|
25
|
+
element.value = next ?? null;
|
|
26
|
+
arrow?.registerElement(element.value);
|
|
13
27
|
};
|
|
14
28
|
const placement = computed(() => arrow?.placement.value ?? null);
|
|
29
|
+
/** The straight run the shape carries above its mouth, buried inside the overlay. */
|
|
30
|
+
const burial = shallowRef(0);
|
|
31
|
+
const measureBurial = () => {
|
|
32
|
+
const own = element.value;
|
|
33
|
+
const side = placement.value;
|
|
34
|
+
const isHorizontal = side === "top" || side === "bottom";
|
|
35
|
+
const centre = Number.parseFloat(arrow?.style.value[isHorizontal ? "left" : "top"] ?? "");
|
|
36
|
+
const overlay = own?.offsetParent;
|
|
37
|
+
if (!own || !side || !Number.isFinite(centre) || !(overlay instanceof HTMLElement)) return 0;
|
|
38
|
+
const width = overlay.offsetWidth;
|
|
39
|
+
const height = overlay.offsetHeight;
|
|
40
|
+
const edge = isHorizontal ? width : height;
|
|
41
|
+
const declared = getComputedStyle(overlay).borderTopLeftRadius;
|
|
42
|
+
const radius = Math.min(declared.includes("%") ? Math.min(width, height) : Number.parseFloat(declared) || 0, width / 2, height / 2);
|
|
43
|
+
if (radius <= 0) return 0;
|
|
44
|
+
const recessionAt = (position) => {
|
|
45
|
+
const intoCorner = Math.max(radius - position, position - (edge - radius), 0);
|
|
46
|
+
if (intoCorner <= 0) return 0;
|
|
47
|
+
const reach = Math.min(intoCorner, radius);
|
|
48
|
+
return radius - Math.sqrt(radius * radius - reach * reach);
|
|
49
|
+
};
|
|
50
|
+
const deepest = Math.max(recessionAt(centre - HALF_MOUTH), recessionAt(centre + HALF_MOUTH));
|
|
51
|
+
return deepest > 0 ? Math.min(deepest + .5, 4) : 0;
|
|
52
|
+
};
|
|
53
|
+
watch([
|
|
54
|
+
element,
|
|
55
|
+
placement,
|
|
56
|
+
() => arrow?.style.value
|
|
57
|
+
], () => {
|
|
58
|
+
burial.value = measureBurial();
|
|
59
|
+
}, {
|
|
60
|
+
flush: "post",
|
|
61
|
+
immediate: true
|
|
62
|
+
});
|
|
15
63
|
/**
|
|
16
64
|
* Pinned to the edge the overlay is placed against, and centred on the offset the positioner
|
|
17
65
|
* worked out.
|
|
18
66
|
*
|
|
67
|
+
* Pulled back into the overlay by the skirt, so the shape overlaps the body it grows out of
|
|
68
|
+
* rather than touching it: shapes that merely touch each antialias the shared row at fractional
|
|
69
|
+
* device pixel ratios, and the page bleeds through the seam.
|
|
70
|
+
*
|
|
19
71
|
* The offset names the arrow's centre, so it is pulled back by half its own size on the cross
|
|
20
72
|
* axis — done with a transform rather than arithmetic because only the stylesheet knows how big
|
|
21
73
|
* the arrow is.
|
|
@@ -25,20 +77,21 @@ var overlay_arrow_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
25
77
|
return {
|
|
26
78
|
position: "absolute",
|
|
27
79
|
transform: side === "top" || side === "bottom" ? "translateX(-50%)" : "translateY(-50%)",
|
|
28
|
-
...side ? { [side]:
|
|
80
|
+
...side ? { [side]: `calc(100% - ${SKIRT + burial.value}px)` } : {},
|
|
29
81
|
...arrow?.style.value ?? {}
|
|
30
82
|
};
|
|
31
83
|
});
|
|
32
|
-
const
|
|
84
|
+
const n2 = t0();
|
|
85
|
+
const n1 = child(n2);
|
|
33
86
|
renderEffect(() => {
|
|
34
|
-
setClass(
|
|
35
|
-
setAttr(
|
|
36
|
-
setStyle(
|
|
87
|
+
setClass(n2, props.class);
|
|
88
|
+
setAttr(n2, "data-placement", placement.value ?? void 0);
|
|
89
|
+
setStyle(n2, style.value);
|
|
37
90
|
});
|
|
38
|
-
setInsertionState(n1);
|
|
91
|
+
setInsertionState(n2, n1);
|
|
39
92
|
createSlot();
|
|
40
|
-
setTemplateRefBinding(
|
|
41
|
-
return
|
|
93
|
+
setTemplateRefBinding(n2, () => setElement);
|
|
94
|
+
return n2;
|
|
42
95
|
}
|
|
43
96
|
});
|
|
44
97
|
//#endregion
|
|
@@ -16,6 +16,7 @@ export declare const Pagination: ((__VLS_props: NonNullable<Awaited<typeof __VLS
|
|
|
16
16
|
emit: {};
|
|
17
17
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
18
18
|
props: import('vue').PublicProps & {
|
|
19
|
+
ariaLabel?: string;
|
|
19
20
|
class?: string;
|
|
20
21
|
size?: import("@ropav/styles").PaginationVariants["size"];
|
|
21
22
|
} & (typeof globalThis extends {
|
|
@@ -212,6 +213,7 @@ export declare const Pagination: ((__VLS_props: NonNullable<Awaited<typeof __VLS
|
|
|
212
213
|
emit: {};
|
|
213
214
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
214
215
|
props: import('vue').PublicProps & {
|
|
216
|
+
ariaLabel?: string;
|
|
215
217
|
class?: string;
|
|
216
218
|
size?: import("@ropav/styles").PaginationVariants["size"];
|
|
217
219
|
} & (typeof globalThis extends {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { providePaginationContext } from "./pagination.context.js";
|
|
2
|
-
import { computed, createSlot, defineVaporComponent, renderEffect, setClass, setInsertionState, template } from "vue";
|
|
2
|
+
import { computed, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, template } from "vue";
|
|
3
3
|
import { paginationVariants } from "@ropav/styles";
|
|
4
4
|
//#region src/components/pagination/pagination-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
5
|
-
var t0 = template("<nav
|
|
5
|
+
var t0 = template("<nav data-slot=pagination role=navigation>", 1);
|
|
6
6
|
var pagination_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
7
7
|
__name: "pagination-root",
|
|
8
8
|
props: {
|
|
9
|
+
ariaLabel: {},
|
|
9
10
|
class: {},
|
|
10
11
|
size: {}
|
|
11
12
|
},
|
|
@@ -14,7 +15,11 @@ var pagination_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@
|
|
|
14
15
|
const slots = computed(() => paginationVariants({ size: props.size }));
|
|
15
16
|
providePaginationContext({ slots });
|
|
16
17
|
const n1 = t0();
|
|
17
|
-
renderEffect(() =>
|
|
18
|
+
renderEffect(() => {
|
|
19
|
+
const _props = props;
|
|
20
|
+
setAttr(n1, "aria-label", _props.ariaLabel ?? "pagination");
|
|
21
|
+
setClass(n1, slots.value.base({ class: _props.class }));
|
|
22
|
+
});
|
|
18
23
|
setInsertionState(n1);
|
|
19
24
|
createSlot();
|
|
20
25
|
return n1;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { PaginationVariants } from "@ropav/styles";
|
|
2
2
|
export interface PaginationRootProps {
|
|
3
|
+
/**
|
|
4
|
+
* Name for the navigation landmark.
|
|
5
|
+
*
|
|
6
|
+
* Overridable because the name is what tells two paginations apart: a list with one set of
|
|
7
|
+
* controls above it and another below reports the same landmark twice otherwise.
|
|
8
|
+
* @default "pagination"
|
|
9
|
+
*/
|
|
10
|
+
ariaLabel?: string;
|
|
3
11
|
class?: string;
|
|
4
12
|
/** Pagination size. @default "md" */
|
|
5
13
|
size?: PaginationVariants["size"];
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { dataAttr } from "../../utils/assertion.js";
|
|
2
2
|
import { useInteractionStates } from "../../composables/use-interaction-states.js";
|
|
3
3
|
import { composePressResponder, usePressResponder } from "../../composables/press-responder.js";
|
|
4
|
+
import { FOCUSABLE_SELECTOR } from "../../utils/focus.js";
|
|
4
5
|
import { usePopoverContext } from "./popover.context.js";
|
|
5
|
-
import { computed, createSlot, defineVaporComponent, on, renderEffect, setDynamicProps, setInsertionState, setTemplateRefBinding, template, unref } from "vue";
|
|
6
|
+
import { computed, createSlot, defineVaporComponent, on, renderEffect, setDynamicProps, setInsertionState, setTemplateRefBinding, shallowRef, template, unref, watch } from "vue";
|
|
6
7
|
//#region src/components/popover/popover-trigger.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
7
8
|
var t0 = template("<div>", 1);
|
|
8
9
|
var popover_trigger_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
@@ -13,23 +14,29 @@ var popover_trigger_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@
|
|
|
13
14
|
const { slots } = usePopoverContext();
|
|
14
15
|
const responder = usePressResponder();
|
|
15
16
|
const styles = computed(() => slots.value.trigger({ class: props.class }));
|
|
17
|
+
const host = shallowRef(null);
|
|
18
|
+
const hasFocusableContent = shallowRef(false);
|
|
16
19
|
const setElement = (element) => {
|
|
17
|
-
|
|
20
|
+
host.value = element ?? null;
|
|
21
|
+
responder?.registerElement(host.value);
|
|
18
22
|
};
|
|
23
|
+
watch(host, (element) => {
|
|
24
|
+
hasFocusableContent.value = Boolean(element?.querySelector(FOCUSABLE_SELECTOR));
|
|
25
|
+
}, { flush: "post" });
|
|
19
26
|
const { isFocusVisible, onBlur, onFocus } = useInteractionStates();
|
|
20
27
|
const press = composePressResponder(responder);
|
|
28
|
+
const wrapperAttrs = computed(() => hasFocusableContent.value ? void 0 : responder?.attrs.value);
|
|
21
29
|
const n1 = t0();
|
|
22
30
|
renderEffect(() => {
|
|
23
31
|
const _dataAttr = unref(dataAttr);
|
|
24
|
-
const _responder = unref(responder);
|
|
25
32
|
setDynamicProps(n1, [{
|
|
26
33
|
class: styles.value,
|
|
27
34
|
"data-focus-visible": _dataAttr(unref(isFocusVisible)),
|
|
28
|
-
"data-pressed": _dataAttr(
|
|
35
|
+
"data-pressed": _dataAttr(unref(responder)?.isPressed.value),
|
|
29
36
|
"data-slot": "popover-trigger",
|
|
30
|
-
role: "button",
|
|
31
|
-
tabindex:
|
|
32
|
-
},
|
|
37
|
+
role: hasFocusableContent.value ? void 0 : "button",
|
|
38
|
+
tabindex: hasFocusableContent.value ? void 0 : 0
|
|
39
|
+
}, wrapperAttrs.value]);
|
|
33
40
|
});
|
|
34
41
|
setInsertionState(n1);
|
|
35
42
|
createSlot();
|
|
@@ -21,7 +21,7 @@ var radio_content_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
21
21
|
const setInputEl = (element) => {
|
|
22
22
|
inputEl.value = element instanceof HTMLInputElement ? element : null;
|
|
23
23
|
};
|
|
24
|
-
useFormReset(inputEl, state.defaultSelectedValue, state.setSelectedValue);
|
|
24
|
+
useFormReset(inputEl, state.defaultSelectedValue, state.setSelectedValue, form);
|
|
25
25
|
watch([inputEl, isSelected], ([input, selected]) => setFormChecked(input, selected), {
|
|
26
26
|
flush: "post",
|
|
27
27
|
immediate: true
|