ropav 0.4.0 → 0.6.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/breadcrumbs/breadcrumbs-item.js +1 -0
- package/dist/components/breadcrumbs/index.d.ts +1 -0
- 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 +1 -0
- 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-range-picker/date-range-picker-root.js +1 -1
- package/dist/components/date-range-picker/index.d.ts +15 -14
- 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/drop-zone/drop-zone-root.d.ts +23 -0
- package/dist/components/drop-zone/drop-zone-root.js +153 -0
- package/dist/components/drop-zone/drop-zone-trigger.d.ts +21 -0
- package/dist/components/drop-zone/drop-zone-trigger.js +20 -0
- package/dist/components/drop-zone/drop-zone.accept.d.ts +19 -0
- package/dist/components/drop-zone/drop-zone.accept.js +28 -0
- package/dist/components/drop-zone/drop-zone.context.d.ts +6 -0
- package/dist/components/drop-zone/drop-zone.context.js +5 -0
- package/dist/components/drop-zone/drop-zone.types.d.ts +30 -0
- package/dist/components/drop-zone/index.d.ts +86 -0
- package/dist/components/drop-zone/index.js +11 -0
- package/dist/components/dropdown/dropdown-menu.js +1 -0
- package/dist/components/dropdown/dropdown-submenu-trigger.js +1 -1
- 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 +2 -0
- package/dist/components/input/input-root.js +3 -0
- package/dist/components/input/input.types.d.ts +5 -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 +53 -32
- package/dist/components/list-box/list-box.types.d.ts +2 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/menu-root.js +5 -1
- package/dist/components/menu/menu.types.d.ts +3 -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/progress-bar/index.d.ts +4 -0
- package/dist/components/progress-bar/progress-bar-root.js +4 -0
- package/dist/components/progress-bar/progress-bar.types.d.ts +7 -0
- package/dist/components/radio/radio-content.js +1 -1
- package/dist/components/range-calendar/index.d.ts +18 -15
- 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/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/sidebar/index.d.ts +546 -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 +140 -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 +273 -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/textarea/index.d.ts +2 -0
- package/dist/components/textarea/textarea-root.js +3 -0
- package/dist/components/textarea/textarea.types.d.ts +5 -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/toolbar/index.d.ts +3 -2
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooltip/tooltip-root.js +1 -1
- 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 -70
- 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.d.ts +6 -5
- package/dist/composables/use-draggable-item.d.ts +2 -2
- package/dist/composables/use-droppable-collection.js +3 -3
- 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-number-field.js +1 -1
- package/dist/composables/use-select.js +2 -2
- 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 +10 -29
- package/dist/composables/use-tab-list-state.js +10 -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 +60 -83
- 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 +25 -5
- package/dist/composables/use-table-column-layout.js +0 -214
- /package/dist/{composables → components/dropdown}/use-safely-mouse-to-submenu.d.ts +0 -0
|
@@ -2,7 +2,9 @@ import { dataAttr } from "../../utils/assertion.js";
|
|
|
2
2
|
import { useInteractionStates } from "../../composables/use-interaction-states.js";
|
|
3
3
|
import { usePress } from "../../composables/use-press.js";
|
|
4
4
|
import { provideLinkContext } from "./link.context.js";
|
|
5
|
+
import { openLink } from "../../utils/open-link.js";
|
|
5
6
|
import { useFieldsetContext } from "../fieldset/fieldset.context.js";
|
|
7
|
+
import { useRouterContext } from "../router-provider/router-provider.context.js";
|
|
6
8
|
import { computed, createIf, createSlot, defineVaporComponent, on, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
|
|
7
9
|
import { linkVariants } from "@ropav/styles";
|
|
8
10
|
//#region src/components/link/link-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
@@ -30,6 +32,7 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
30
32
|
type: [Boolean, String],
|
|
31
33
|
default: void 0
|
|
32
34
|
},
|
|
35
|
+
routerOptions: { default: void 0 },
|
|
33
36
|
ariaLabel: {},
|
|
34
37
|
ariaLabelledby: {},
|
|
35
38
|
ariaDescribedby: {}
|
|
@@ -39,6 +42,7 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
39
42
|
const props = __props;
|
|
40
43
|
const emit = __emit;
|
|
41
44
|
const fieldset = useFieldsetContext();
|
|
45
|
+
const router = useRouterContext();
|
|
42
46
|
const resolvedIsDisabled = computed(() => Boolean(props.isDisabled ?? fieldset?.isDisabled.value));
|
|
43
47
|
const slots = computed(() => linkVariants());
|
|
44
48
|
provideLinkContext({ slots });
|
|
@@ -51,7 +55,12 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
51
55
|
const isAnchor = computed(() => Boolean(props.href) && !resolvedIsDisabled.value);
|
|
52
56
|
const role = computed(() => isAnchor.value ? void 0 : "link");
|
|
53
57
|
const tabindex = computed(() => resolvedIsDisabled.value ? void 0 : 0);
|
|
54
|
-
const
|
|
58
|
+
const ariaCurrent = computed(() => {
|
|
59
|
+
if (props.ariaCurrent !== "auto") return props.ariaCurrent;
|
|
60
|
+
return props.href && router?.isCurrent(props.href) ? "page" : void 0;
|
|
61
|
+
});
|
|
62
|
+
const isCurrent = computed(() => Boolean(ariaCurrent.value));
|
|
63
|
+
const resolvedHref = computed(() => props.href === void 0 ? void 0 : router?.resolveHref(props.href) ?? props.href);
|
|
55
64
|
const onPointerenter = (event) => {
|
|
56
65
|
interaction.onPointerenter(event);
|
|
57
66
|
press.handlers.onPointerenter(event);
|
|
@@ -60,13 +69,21 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
60
69
|
interaction.onPointerleave();
|
|
61
70
|
press.handlers.onPointerleave(event);
|
|
62
71
|
};
|
|
72
|
+
const onClick = (event) => {
|
|
73
|
+
press.handlers.onClick(event);
|
|
74
|
+
openLink(event, {
|
|
75
|
+
href: props.href,
|
|
76
|
+
router,
|
|
77
|
+
routerOptions: props.routerOptions
|
|
78
|
+
});
|
|
79
|
+
};
|
|
63
80
|
return createIf(() => isAnchor.value, () => {
|
|
64
81
|
const n3 = t0();
|
|
65
82
|
renderEffect(() => {
|
|
66
83
|
const _props = props;
|
|
67
84
|
const _dataAttr = unref(dataAttr);
|
|
68
85
|
const _interaction = unref(interaction);
|
|
69
|
-
setAttr(n3, "aria-current",
|
|
86
|
+
setAttr(n3, "aria-current", ariaCurrent.value);
|
|
70
87
|
setAttr(n3, "aria-describedby", _props.ariaDescribedby);
|
|
71
88
|
setAttr(n3, "aria-label", _props.ariaLabel);
|
|
72
89
|
setAttr(n3, "aria-labelledby", _props.ariaLabelledby);
|
|
@@ -77,7 +94,7 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
77
94
|
setAttr(n3, "data-hovered", _dataAttr(_interaction.isHovered.value));
|
|
78
95
|
setAttr(n3, "data-pressed", _dataAttr(unref(press).isPressed.value));
|
|
79
96
|
setProp(n3, "download", _props.download);
|
|
80
|
-
setProp(n3, "href",
|
|
97
|
+
setProp(n3, "href", resolvedHref.value);
|
|
81
98
|
setProp(n3, "hreflang", _props.hrefLang);
|
|
82
99
|
setProp(n3, "ping", _props.ping);
|
|
83
100
|
setProp(n3, "referrerpolicy", _props.referrerPolicy);
|
|
@@ -95,7 +112,7 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
95
112
|
isPressed: () => unref(press).isPressed.value
|
|
96
113
|
});
|
|
97
114
|
on(n3, "blur", (e) => unref(interaction).onBlur(e));
|
|
98
|
-
on(n3, "click",
|
|
115
|
+
on(n3, "click", onClick);
|
|
99
116
|
on(n3, "dragstart", (e) => unref(press).handlers.onDragstart(e));
|
|
100
117
|
on(n3, "focus", (e) => unref(interaction).onFocus(e));
|
|
101
118
|
on(n3, "keydown", (e) => unref(press).handlers.onKeydown(e));
|
|
@@ -112,7 +129,7 @@ var link_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
112
129
|
const _resolvedIsDisabled = resolvedIsDisabled.value;
|
|
113
130
|
const _dataAttr = unref(dataAttr);
|
|
114
131
|
const _interaction = unref(interaction);
|
|
115
|
-
setAttr(n6, "aria-current",
|
|
132
|
+
setAttr(n6, "aria-current", ariaCurrent.value);
|
|
116
133
|
setAttr(n6, "aria-describedby", _props.ariaDescribedby);
|
|
117
134
|
setAttr(n6, "aria-disabled", _resolvedIsDisabled || void 0);
|
|
118
135
|
setAttr(n6, "aria-label", _props.ariaLabel);
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/** What the browser accepts for `referrerpolicy` on an anchor. */
|
|
2
2
|
export type LinkReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* What assistive technology accepts for `aria-current`, plus `"auto"`.
|
|
5
|
+
*
|
|
6
|
+
* `"auto"` is not an ARIA token and never reaches the DOM. It asks the router supplied by
|
|
7
|
+
* `RouterProvider` whether this link's href addresses the route showing now, resolving to
|
|
8
|
+
* `"page"` when it does and to nothing at all when it does not — or when no router was supplied.
|
|
9
|
+
*/
|
|
10
|
+
export type LinkCurrent = boolean | "auto" | "date" | "false" | "location" | "page" | "step" | "time" | "true";
|
|
5
11
|
export interface LinkRootProps {
|
|
6
12
|
class?: string;
|
|
7
13
|
/** Where the link goes. Without one the link renders as a span with a link role. */
|
|
@@ -17,8 +23,13 @@ export interface LinkRootProps {
|
|
|
17
23
|
* there is no href for the browser to follow, matching React.
|
|
18
24
|
*/
|
|
19
25
|
isDisabled?: boolean;
|
|
20
|
-
/** Marks the link as the one for the current page. */
|
|
26
|
+
/** Marks the link as the one for the current page. `"auto"` asks the router instead. */
|
|
21
27
|
ariaCurrent?: LinkCurrent;
|
|
28
|
+
/**
|
|
29
|
+
* Passed through to the router's `navigate` alongside the href, for whatever options the
|
|
30
|
+
* application's router accepts. Ignored without a `RouterProvider` above.
|
|
31
|
+
*/
|
|
32
|
+
routerOptions?: unknown;
|
|
22
33
|
ariaLabel?: string;
|
|
23
34
|
ariaLabelledby?: string;
|
|
24
35
|
ariaDescribedby?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { UseCollectionReturn } from "../../composables/use-collection.js";
|
|
2
|
+
import type { DragCollection } from "../../utils/dnd-types.js";
|
|
3
3
|
/**
|
|
4
4
|
* A `DragCollection` over an ordinary flat collection.
|
|
5
5
|
*
|
|
@@ -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,6 +15,7 @@ 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
|
|
@@ -37,6 +38,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
37
38
|
disabledBehavior: {},
|
|
38
39
|
disallowEmptySelection: { type: Boolean },
|
|
39
40
|
variant: {},
|
|
41
|
+
size: {},
|
|
40
42
|
dragAndDropHooks: {}
|
|
41
43
|
},
|
|
42
44
|
emits: [
|
|
@@ -59,6 +61,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
59
61
|
const itemOf = (node) => node?.content;
|
|
60
62
|
const styles = computed(() => listboxVariants({
|
|
61
63
|
class: props.class,
|
|
64
|
+
size: props.size,
|
|
62
65
|
variant: props.variant
|
|
63
66
|
}));
|
|
64
67
|
/**
|
|
@@ -163,7 +166,9 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
163
166
|
onScrollEnd: virtualizer.endScrolling,
|
|
164
167
|
onScrollStart: virtualizer.startScrolling,
|
|
165
168
|
onSizeChange: virtualizer.setSize,
|
|
166
|
-
onVisibleRectChange: virtualizer.setVisibleRect
|
|
169
|
+
onVisibleRectChange: virtualizer.setVisibleRect,
|
|
170
|
+
scrollAdjustment: () => virtualizer.scrollAdjustment.value,
|
|
171
|
+
takeScrollAdjustment: virtualizer.takeScrollAdjustment
|
|
167
172
|
});
|
|
168
173
|
/**
|
|
169
174
|
* Paging asks the layout where the rows are, not the DOM.
|
|
@@ -279,11 +284,18 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
279
284
|
keyboard,
|
|
280
285
|
selection
|
|
281
286
|
});
|
|
282
|
-
if (virtualizer && virtualizerConfig) provideVirtualizerStateContext({
|
|
287
|
+
if (virtualizer && virtualizerConfig && scroll) provideVirtualizerStateContext({
|
|
283
288
|
getIndex: (key) => collection.getIndex(key),
|
|
284
289
|
getDropTargetLayoutInfo: virtualizerConfig.layout.value.getDropTargetLayoutInfo?.bind(virtualizerConfig.layout.value),
|
|
285
290
|
getLayoutInfo: virtualizer.getLayoutInfo,
|
|
286
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
|
+
},
|
|
287
299
|
shouldObserveItemSize: virtualizerConfig.shouldObserveItemSize,
|
|
288
300
|
updateItemSize: virtualizer.updateItemSize
|
|
289
301
|
});
|
|
@@ -293,33 +305,42 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
293
305
|
};
|
|
294
306
|
const isEmpty = computed(() => collection.size.value === 0);
|
|
295
307
|
const hasEmptySlot = computed(() => Boolean(callerSlots["empty"]));
|
|
296
|
-
|
|
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();
|
|
297
315
|
renderEffect(() => {
|
|
298
316
|
const _selection = unref(selection);
|
|
299
317
|
const _dataAttr = unref(dataAttr);
|
|
300
|
-
setProp(
|
|
301
|
-
setAttr(
|
|
302
|
-
setAttr(
|
|
303
|
-
setAttr(
|
|
304
|
-
setClass(
|
|
305
|
-
setAttr(
|
|
306
|
-
setAttr(
|
|
307
|
-
setAttr(
|
|
308
|
-
setAttr(
|
|
309
|
-
|
|
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);
|
|
310
329
|
});
|
|
311
|
-
setInsertionState(
|
|
330
|
+
setInsertionState(n20);
|
|
312
331
|
createIf(() => hasEmptySlot.value && isEmpty.value, () => {
|
|
313
332
|
const n3 = t0();
|
|
314
333
|
setInsertionState(n3);
|
|
315
334
|
createSlot("empty");
|
|
316
335
|
return n3;
|
|
317
336
|
});
|
|
318
|
-
setInsertionState(
|
|
337
|
+
setInsertionState(n20, 1);
|
|
319
338
|
createIf(() => isVirtualized.value, () => {
|
|
320
|
-
const
|
|
321
|
-
renderEffect(() => setStyle(
|
|
322
|
-
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);
|
|
323
344
|
createFor(() => unref(virtualizer)?.visibleViews.value, (_for_item0) => {
|
|
324
345
|
return [createIf(() => rendersDropIndicators.value, () => {
|
|
325
346
|
return createComponent(list_box_drop_indicator_default, { target: () => ({
|
|
@@ -334,7 +355,7 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
334
355
|
}, null, 36);
|
|
335
356
|
}, { _: 8 }))];
|
|
336
357
|
}, (view) => view.key);
|
|
337
|
-
setInsertionState(
|
|
358
|
+
setInsertionState(n17, 2);
|
|
338
359
|
createIf(() => rendersDropIndicators.value && lastItemKey.value != null, () => {
|
|
339
360
|
return createComponent(list_box_drop_indicator_default, { target: () => ({
|
|
340
361
|
dropPosition: "after",
|
|
@@ -342,21 +363,21 @@ var list_box_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
|
|
|
342
363
|
type: "item"
|
|
343
364
|
}) });
|
|
344
365
|
});
|
|
345
|
-
return
|
|
366
|
+
return n17;
|
|
346
367
|
}, () => {
|
|
347
368
|
return createSlot();
|
|
348
369
|
}, 1029);
|
|
349
|
-
on(
|
|
350
|
-
on(
|
|
351
|
-
on(
|
|
352
|
-
on(
|
|
353
|
-
on(
|
|
354
|
-
on(
|
|
355
|
-
on(
|
|
356
|
-
on(
|
|
357
|
-
on(
|
|
358
|
-
setStaticTemplateRef(
|
|
359
|
-
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;
|
|
360
381
|
}
|
|
361
382
|
});
|
|
362
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,6 +9,7 @@ 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;
|
|
14
15
|
ariaLabel?: string;
|
|
@@ -48,6 +49,7 @@ export declare const Menu: ((__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
48
49
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
49
50
|
props: import('vue').PublicProps & {
|
|
50
51
|
class?: string;
|
|
52
|
+
size?: import("@ropav/styles").MenuVariants["size"];
|
|
51
53
|
id?: string;
|
|
52
54
|
ariaLabelledby?: string;
|
|
53
55
|
ariaLabel?: string;
|
|
@@ -9,6 +9,7 @@ var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
9
9
|
__name: "menu-root",
|
|
10
10
|
props: {
|
|
11
11
|
class: {},
|
|
12
|
+
size: {},
|
|
12
13
|
id: {},
|
|
13
14
|
ariaLabelledby: {},
|
|
14
15
|
ariaLabel: {},
|
|
@@ -38,7 +39,10 @@ var menu_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
|
|
|
38
39
|
const props = __props;
|
|
39
40
|
const emit = __emit;
|
|
40
41
|
const callerSlots = useSlots();
|
|
41
|
-
const styles = computed(() => menuVariants({
|
|
42
|
+
const styles = computed(() => menuVariants({
|
|
43
|
+
class: props.class,
|
|
44
|
+
size: props.size
|
|
45
|
+
}));
|
|
42
46
|
provideSeparatorContext({ elementType: "div" });
|
|
43
47
|
const menu = useMenu({
|
|
44
48
|
autoFocus: () => props.autoFocus,
|
|
@@ -1,8 +1,11 @@
|
|
|
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. */
|
|
@@ -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
|
|
@@ -13,6 +13,8 @@ export declare const ProgressBar: ((__VLS_props: NonNullable<Awaited<typeof __VL
|
|
|
13
13
|
class?: string;
|
|
14
14
|
color?: import("@ropav/styles").ProgressBarVariants["color"];
|
|
15
15
|
size?: import("@ropav/styles").ProgressBarVariants["size"];
|
|
16
|
+
isStriped?: boolean;
|
|
17
|
+
isAnimated?: boolean;
|
|
16
18
|
value?: number;
|
|
17
19
|
minValue?: number;
|
|
18
20
|
maxValue?: number;
|
|
@@ -85,6 +87,8 @@ export declare const ProgressBar: ((__VLS_props: NonNullable<Awaited<typeof __VL
|
|
|
85
87
|
class?: string;
|
|
86
88
|
color?: import("@ropav/styles").ProgressBarVariants["color"];
|
|
87
89
|
size?: import("@ropav/styles").ProgressBarVariants["size"];
|
|
90
|
+
isStriped?: boolean;
|
|
91
|
+
isAnimated?: boolean;
|
|
88
92
|
value?: number;
|
|
89
93
|
minValue?: number;
|
|
90
94
|
maxValue?: number;
|
|
@@ -12,6 +12,8 @@ var progress_bar_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /
|
|
|
12
12
|
class: {},
|
|
13
13
|
color: {},
|
|
14
14
|
size: {},
|
|
15
|
+
isStriped: { type: Boolean },
|
|
16
|
+
isAnimated: { type: Boolean },
|
|
15
17
|
value: {},
|
|
16
18
|
minValue: {},
|
|
17
19
|
maxValue: {},
|
|
@@ -43,6 +45,8 @@ var progress_bar_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /
|
|
|
43
45
|
});
|
|
44
46
|
const slots = computed(() => progressBarVariants({
|
|
45
47
|
color: props.color,
|
|
48
|
+
isAnimated: props.isAnimated,
|
|
49
|
+
isStriped: props.isStriped,
|
|
46
50
|
size: props.size
|
|
47
51
|
}));
|
|
48
52
|
provideProgressBarContext({
|
|
@@ -4,6 +4,13 @@ export interface ProgressBarRootProps {
|
|
|
4
4
|
class?: string;
|
|
5
5
|
color?: ProgressBarVariants["color"];
|
|
6
6
|
size?: ProgressBarVariants["size"];
|
|
7
|
+
/** Whether a diagonal band is laid over the fill. */
|
|
8
|
+
isStriped?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Whether the band travels. Turns the band on by itself, so `isStriped` is only needed for a
|
|
11
|
+
* still one. Under reduced motion it settles into that still band rather than disappearing.
|
|
12
|
+
*/
|
|
13
|
+
isAnimated?: boolean;
|
|
7
14
|
/** Current progress. @default 0 */
|
|
8
15
|
value?: number;
|
|
9
16
|
/** @default 0 */
|
|
@@ -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
|