ropav 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/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 +4 -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/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 +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/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 -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-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 +52 -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
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useSegmentedControlContext, useSegmentedControlItemContext } from "./segmented-control.context.js";
|
|
2
|
+
import segmented_control_indicator_default from "./segmented-control-indicator.js";
|
|
3
|
+
import segmented_control_item_default from "./segmented-control-item.js";
|
|
4
|
+
import segmented_control_root_default from "./segmented-control-root.js";
|
|
5
|
+
import segmented_control_separator_default from "./segmented-control-separator.js";
|
|
6
|
+
import { segmentedControlVariants } from "@ropav/styles";
|
|
7
|
+
//#region src/components/segmented-control/index.ts
|
|
8
|
+
var SegmentedControl = Object.assign(segmented_control_root_default, {
|
|
9
|
+
Indicator: segmented_control_indicator_default,
|
|
10
|
+
Item: segmented_control_item_default,
|
|
11
|
+
Root: segmented_control_root_default,
|
|
12
|
+
Separator: segmented_control_separator_default
|
|
13
|
+
});
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SegmentedControl, segmented_control_indicator_default as SegmentedControlIndicator, segmented_control_item_default as SegmentedControlItem, segmented_control_root_default as SegmentedControlRoot, segmented_control_separator_default as SegmentedControlSeparator, segmentedControlVariants, useSegmentedControlContext, useSegmentedControlItemContext };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SegmentedControlIndicatorProps } from "./segmented-control.types.js";
|
|
2
|
+
declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
3
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<SegmentedControlIndicatorProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {};
|
|
9
|
+
emit: {};
|
|
10
|
+
}>) => import('vue').VNode & {
|
|
11
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
16
|
+
[K in keyof T]: T[K];
|
|
17
|
+
} : {
|
|
18
|
+
[K in keyof T as K]: T[K];
|
|
19
|
+
}) & {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import { useSharedElement, useSharedElementScope } from "../../composables/use-shared-element.js";
|
|
4
|
+
import { useSegmentedControlContext, useSegmentedControlItemContext } from "./segmented-control.context.js";
|
|
5
|
+
import { createIf, defineVaporComponent, renderEffect, setAttr, setClass, setStaticTemplateRef, shallowRef, template, unref } from "vue";
|
|
6
|
+
//#region src/components/segmented-control/segmented-control-indicator.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
7
|
+
var t0 = template("<span aria-hidden=true data-slot=segmented-control-indicator>", 1);
|
|
8
|
+
var segmented_control_indicator_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
9
|
+
__name: "segmented-control-indicator",
|
|
10
|
+
props: { class: {} },
|
|
11
|
+
setup(__props) {
|
|
12
|
+
const props = __props;
|
|
13
|
+
const { slots } = useSegmentedControlContext();
|
|
14
|
+
const { isSelected } = useSegmentedControlItemContext();
|
|
15
|
+
const element = shallowRef(null);
|
|
16
|
+
const { isEntering, isExiting, isPresent } = useSharedElement({
|
|
17
|
+
elementRef: element,
|
|
18
|
+
isVisible: () => isSelected.value,
|
|
19
|
+
name: "SelectionIndicator",
|
|
20
|
+
scope: useSharedElementScope()
|
|
21
|
+
});
|
|
22
|
+
return createIf(() => unref(isPresent), () => {
|
|
23
|
+
const n2 = t0();
|
|
24
|
+
setStaticTemplateRef(n2, element, null, "element");
|
|
25
|
+
renderEffect(() => {
|
|
26
|
+
const _dataAttr = unref(dataAttr);
|
|
27
|
+
setClass(n2, unref(composeSlotClassName)(unref(slots).indicator, props.class));
|
|
28
|
+
setAttr(n2, "data-entering", _dataAttr(unref(isEntering)));
|
|
29
|
+
setAttr(n2, "data-exiting", _dataAttr(unref(isExiting)));
|
|
30
|
+
});
|
|
31
|
+
return n2;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { segmented_control_indicator_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SegmentedControlItemProps, SegmentedControlItemSlotProps } from "./segmented-control.types.js";
|
|
2
|
+
declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
3
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<SegmentedControlItemProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {
|
|
9
|
+
default?: (props: SegmentedControlItemSlotProps) => unknown;
|
|
10
|
+
};
|
|
11
|
+
emit: {};
|
|
12
|
+
}>) => import('vue').VNode & {
|
|
13
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
14
|
+
};
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
18
|
+
[K in keyof T]: T[K];
|
|
19
|
+
} : {
|
|
20
|
+
[K in keyof T as K]: T[K];
|
|
21
|
+
}) & {};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
2
|
+
import { useInteractionStates } from "../../composables/use-interaction-states.js";
|
|
3
|
+
import { getCollectionTextValue } from "../../utils/text-value.js";
|
|
4
|
+
import { provideSegmentedControlItemContext, useSegmentedControlContext } from "./segmented-control.context.js";
|
|
5
|
+
import { computed, createSlot, defineVaporComponent, on, renderEffect, setAttr, setClass, setInsertionState, setProp, setStaticTemplateRef, shallowRef, template, unref, watch } from "vue";
|
|
6
|
+
//#region src/components/segmented-control/segmented-control-item.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
7
|
+
var t0 = template("<button data-slot=segmented-control-item role=radio type=button>", 1);
|
|
8
|
+
var segmented_control_item_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
9
|
+
__name: "segmented-control-item",
|
|
10
|
+
props: {
|
|
11
|
+
class: {},
|
|
12
|
+
id: {},
|
|
13
|
+
isDisabled: {
|
|
14
|
+
type: Boolean,
|
|
15
|
+
default: void 0
|
|
16
|
+
},
|
|
17
|
+
textValue: {},
|
|
18
|
+
ariaLabel: {}
|
|
19
|
+
},
|
|
20
|
+
setup(__props) {
|
|
21
|
+
const props = __props;
|
|
22
|
+
const { isDisabled: isControlDisabled, keyboard, slots, state } = useSegmentedControlContext();
|
|
23
|
+
const itemKey = computed(() => props.id);
|
|
24
|
+
const element = shallowRef(null);
|
|
25
|
+
watch(element, (current, _previous, onCleanup) => {
|
|
26
|
+
if (!current) return;
|
|
27
|
+
onCleanup(state.collection.register(itemKey.value, {
|
|
28
|
+
element: () => element.value,
|
|
29
|
+
isDisabled: () => Boolean(props.isDisabled),
|
|
30
|
+
textValue: () => props.textValue ?? getCollectionTextValue(element.value)
|
|
31
|
+
}));
|
|
32
|
+
}, {
|
|
33
|
+
flush: "post",
|
|
34
|
+
immediate: true
|
|
35
|
+
});
|
|
36
|
+
const isSelected = computed(() => state.selectedKey.value === itemKey.value);
|
|
37
|
+
const isDisabled = computed(() => isControlDisabled.value || state.selection.isDisabled(itemKey.value));
|
|
38
|
+
const { isFocusVisible, isFocused, isHovered, isPressed, onBlur, onFocus, onPointerdown: onPointerdownState, onPointerenter, onPointerleave } = useInteractionStates({ isDisabled: () => isDisabled.value });
|
|
39
|
+
provideSegmentedControlItemContext({ isSelected });
|
|
40
|
+
const choose = () => {
|
|
41
|
+
if (isDisabled.value) return;
|
|
42
|
+
keyboard.focusKey(itemKey.value);
|
|
43
|
+
state.selection.replaceSelection(itemKey.value);
|
|
44
|
+
};
|
|
45
|
+
const onPointerdown = (event) => {
|
|
46
|
+
onPointerdownState(event);
|
|
47
|
+
if (event.button !== 0) return;
|
|
48
|
+
choose();
|
|
49
|
+
};
|
|
50
|
+
const onKeydown = (event) => {
|
|
51
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
event.stopPropagation();
|
|
54
|
+
choose();
|
|
55
|
+
};
|
|
56
|
+
const n1 = t0();
|
|
57
|
+
renderEffect(() => {
|
|
58
|
+
const _isSelected = isSelected.value;
|
|
59
|
+
const _props = props;
|
|
60
|
+
const _dataAttr = unref(dataAttr);
|
|
61
|
+
const _isDisabled = isDisabled.value;
|
|
62
|
+
const _itemKey = itemKey.value;
|
|
63
|
+
setAttr(n1, "aria-checked", _isSelected);
|
|
64
|
+
setAttr(n1, "aria-label", _props.ariaLabel);
|
|
65
|
+
setClass(n1, unref(slots).item({ class: _props.class }));
|
|
66
|
+
setAttr(n1, "data-disabled", _dataAttr(_isDisabled));
|
|
67
|
+
setAttr(n1, "data-focus-visible", _dataAttr(unref(isFocusVisible)));
|
|
68
|
+
setAttr(n1, "data-focused", _dataAttr(unref(isFocused)));
|
|
69
|
+
setAttr(n1, "data-hovered", _dataAttr(unref(isHovered)));
|
|
70
|
+
setAttr(n1, "data-key", _itemKey);
|
|
71
|
+
setAttr(n1, "data-pressed", _dataAttr(unref(isPressed)));
|
|
72
|
+
setAttr(n1, "data-selected", _dataAttr(_isSelected));
|
|
73
|
+
setProp(n1, "disabled", _isDisabled || void 0);
|
|
74
|
+
setProp(n1, "tabindex", _isDisabled ? void 0 : unref(keyboard).itemTabIndex(_itemKey));
|
|
75
|
+
});
|
|
76
|
+
setInsertionState(n1);
|
|
77
|
+
createSlot("default", {
|
|
78
|
+
isDisabled: () => isDisabled.value,
|
|
79
|
+
isFocusVisible: () => unref(isFocusVisible),
|
|
80
|
+
isFocused: () => unref(isFocused),
|
|
81
|
+
isHovered: () => unref(isHovered),
|
|
82
|
+
isPressed: () => unref(isPressed),
|
|
83
|
+
isSelected: () => isSelected.value
|
|
84
|
+
});
|
|
85
|
+
on(n1, "blur", (e) => unref(onBlur)(e));
|
|
86
|
+
on(n1, "focus", (e) => unref(onFocus)(e));
|
|
87
|
+
on(n1, "keydown", onKeydown);
|
|
88
|
+
on(n1, "pointerdown", onPointerdown);
|
|
89
|
+
on(n1, "pointerenter", (e) => unref(onPointerenter)(e));
|
|
90
|
+
on(n1, "pointerleave", (e) => unref(onPointerleave)(e));
|
|
91
|
+
setStaticTemplateRef(n1, element, null, "element");
|
|
92
|
+
return n1;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
//#endregion
|
|
96
|
+
export { segmented_control_item_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CollectionKey } from "../../composables/use-collection.js";
|
|
2
|
+
import type { SegmentedControlRootProps, SegmentedControlRootSlotProps } from "./segmented-control.types.js";
|
|
3
|
+
declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
4
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<SegmentedControlRootProps & {
|
|
5
|
+
onSelectionChange?: ((key: CollectionKey) => any) | undefined;
|
|
6
|
+
"onUpdate:selectedKey"?: ((key: CollectionKey) => any) | undefined;
|
|
7
|
+
}> & (typeof globalThis extends {
|
|
8
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
9
|
+
} ? P : {});
|
|
10
|
+
expose: (exposed: {}) => void;
|
|
11
|
+
attrs: any;
|
|
12
|
+
slots: {
|
|
13
|
+
default?: (props: SegmentedControlRootSlotProps) => unknown;
|
|
14
|
+
};
|
|
15
|
+
emit: ((evt: "selectionChange", key: CollectionKey) => void) & ((evt: "update:selectedKey", key: CollectionKey) => void);
|
|
16
|
+
}>) => import('vue').VNode & {
|
|
17
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
18
|
+
};
|
|
19
|
+
declare const _default: typeof __VLS_export;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
22
|
+
[K in keyof T]: T[K];
|
|
23
|
+
} : {
|
|
24
|
+
[K in keyof T as K]: T[K];
|
|
25
|
+
}) & {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
2
|
+
import { useListKeyboard } from "../../composables/use-list-keyboard.js";
|
|
3
|
+
import { createSharedElementScope, provideSharedElementScope } from "../../composables/use-shared-element.js";
|
|
4
|
+
import { provideSegmentedControlContext } from "./segmented-control.context.js";
|
|
5
|
+
import { useSingleSelectListState } from "../../composables/use-single-select-list-state.js";
|
|
6
|
+
import { computed, createSlot, defineVaporComponent, on, renderEffect, setAttr, setClass, setInsertionState, setStaticTemplateRef, shallowRef, template, unref } from "vue";
|
|
7
|
+
import { segmentedControlVariants } from "@ropav/styles";
|
|
8
|
+
//#region src/components/segmented-control/segmented-control-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
9
|
+
var t0 = template("<div data-slot=segmented-control role=radiogroup>", 1);
|
|
10
|
+
var segmented_control_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
11
|
+
__name: "segmented-control-root",
|
|
12
|
+
props: {
|
|
13
|
+
class: {},
|
|
14
|
+
size: { default: void 0 },
|
|
15
|
+
fullWidth: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
default: void 0
|
|
18
|
+
},
|
|
19
|
+
selectedKey: {},
|
|
20
|
+
defaultSelectedKey: {},
|
|
21
|
+
disabledKeys: {},
|
|
22
|
+
isDisabled: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: void 0
|
|
25
|
+
},
|
|
26
|
+
ariaLabel: {},
|
|
27
|
+
ariaLabelledby: {},
|
|
28
|
+
ariaDescribedby: {},
|
|
29
|
+
onSelectionChange: {}
|
|
30
|
+
},
|
|
31
|
+
emits: ["selectionChange", "update:selectedKey"],
|
|
32
|
+
setup(__props, { emit: __emit }) {
|
|
33
|
+
const props = __props;
|
|
34
|
+
const emit = __emit;
|
|
35
|
+
const orientation = computed(() => "horizontal");
|
|
36
|
+
const isDisabled = computed(() => Boolean(props.isDisabled));
|
|
37
|
+
const slots = computed(() => segmentedControlVariants({
|
|
38
|
+
fullWidth: props.fullWidth,
|
|
39
|
+
size: props.size
|
|
40
|
+
}));
|
|
41
|
+
const state = useSingleSelectListState({
|
|
42
|
+
defaultSelectedKey: props.defaultSelectedKey,
|
|
43
|
+
disabledKeys: () => props.disabledKeys,
|
|
44
|
+
isDisabled: () => props.isDisabled,
|
|
45
|
+
onSelectionChange: (key) => {
|
|
46
|
+
props.onSelectionChange?.(key);
|
|
47
|
+
emit("selectionChange", key);
|
|
48
|
+
emit("update:selectedKey", key);
|
|
49
|
+
},
|
|
50
|
+
selectedKey: () => props.selectedKey
|
|
51
|
+
});
|
|
52
|
+
const element = shallowRef(null);
|
|
53
|
+
const keyboard = useListKeyboard({
|
|
54
|
+
collection: state.collection,
|
|
55
|
+
disallowActivation: true,
|
|
56
|
+
element,
|
|
57
|
+
escapeKeyBehavior: "none",
|
|
58
|
+
layout: "stack",
|
|
59
|
+
orientation: () => orientation.value,
|
|
60
|
+
selection: state.selection,
|
|
61
|
+
selectOnFocus: true,
|
|
62
|
+
shouldFocusWrap: true
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* The keys a segmented control has no answer for.
|
|
66
|
+
*
|
|
67
|
+
* It has no notion of a page, and the delegate would answer PageUp and PageDown by jumping to an
|
|
68
|
+
* end — surprising, and a scroll the page should have had.
|
|
69
|
+
*
|
|
70
|
+
* The block arrows are deliberately not filtered, which is the one place this parts company with
|
|
71
|
+
* `tabs-list.vue`. A radio group answers all four arrows whatever its axis, and a horizontal
|
|
72
|
+
* stack already routes ArrowDown to the next key and ArrowUp to the previous.
|
|
73
|
+
*/
|
|
74
|
+
const onKeydown = (event) => {
|
|
75
|
+
if (event.key === "PageUp" || event.key === "PageDown") return;
|
|
76
|
+
keyboard.onKeydown(event);
|
|
77
|
+
};
|
|
78
|
+
provideSharedElementScope(createSharedElementScope());
|
|
79
|
+
provideSegmentedControlContext({
|
|
80
|
+
isDisabled,
|
|
81
|
+
keyboard,
|
|
82
|
+
slots,
|
|
83
|
+
state
|
|
84
|
+
});
|
|
85
|
+
const n1 = t0();
|
|
86
|
+
renderEffect(() => {
|
|
87
|
+
const _props = props;
|
|
88
|
+
const _isDisabled = isDisabled.value;
|
|
89
|
+
const _orientation = orientation.value;
|
|
90
|
+
setAttr(n1, "aria-describedby", _props.ariaDescribedby);
|
|
91
|
+
setAttr(n1, "aria-disabled", _isDisabled || void 0);
|
|
92
|
+
setAttr(n1, "aria-label", _props.ariaLabel);
|
|
93
|
+
setAttr(n1, "aria-labelledby", _props.ariaLabelledby);
|
|
94
|
+
setAttr(n1, "aria-orientation", _orientation);
|
|
95
|
+
setClass(n1, slots.value.base({ class: _props.class }));
|
|
96
|
+
setAttr(n1, "data-disabled", unref(dataAttr)(_isDisabled));
|
|
97
|
+
setAttr(n1, "data-orientation", _orientation);
|
|
98
|
+
});
|
|
99
|
+
setInsertionState(n1);
|
|
100
|
+
createSlot("default", {
|
|
101
|
+
isDisabled: () => isDisabled.value,
|
|
102
|
+
selectedKey: () => unref(state).selectedKey.value
|
|
103
|
+
});
|
|
104
|
+
on(n1, "focusin", (e) => unref(keyboard).onFocusin(e));
|
|
105
|
+
on(n1, "focusout", (e) => unref(keyboard).onFocusout(e));
|
|
106
|
+
on(n1, "keydown", onKeydown);
|
|
107
|
+
setStaticTemplateRef(n1, element, null, "element");
|
|
108
|
+
return n1;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//#endregion
|
|
112
|
+
export { segmented_control_root_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SegmentedControlSeparatorProps } from "./segmented-control.types.js";
|
|
2
|
+
declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
|
|
3
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<SegmentedControlSeparatorProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {};
|
|
9
|
+
emit: {};
|
|
10
|
+
}>) => import('vue').VNode & {
|
|
11
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
16
|
+
[K in keyof T]: T[K];
|
|
17
|
+
} : {
|
|
18
|
+
[K in keyof T as K]: T[K];
|
|
19
|
+
}) & {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { useSegmentedControlContext } from "./segmented-control.context.js";
|
|
3
|
+
import { defineVaporComponent, renderEffect, setClass, template, unref } from "vue";
|
|
4
|
+
//#region src/components/segmented-control/segmented-control-separator.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
5
|
+
var t0 = template("<span aria-hidden=true data-slot=segmented-control-separator>", 1);
|
|
6
|
+
var segmented_control_separator_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
7
|
+
__name: "segmented-control-separator",
|
|
8
|
+
props: { class: {} },
|
|
9
|
+
setup(__props) {
|
|
10
|
+
const props = __props;
|
|
11
|
+
const { slots } = useSegmentedControlContext();
|
|
12
|
+
const n0 = t0();
|
|
13
|
+
renderEffect(() => setClass(n0, unref(composeSlotClassName)(unref(slots).separator, props.class)));
|
|
14
|
+
return n0;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
//#endregion
|
|
18
|
+
export { segmented_control_separator_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { UseListKeyboardReturn } from "../../composables/use-list-keyboard.js";
|
|
2
|
+
import type { UseSingleSelectListStateReturn } from "../../composables/use-single-select-list-state.js";
|
|
3
|
+
import type { segmentedControlVariants } from "@ropav/styles";
|
|
4
|
+
import type { ComputedRef } from "vue";
|
|
5
|
+
export interface SegmentedControlContext {
|
|
6
|
+
slots: ComputedRef<ReturnType<typeof segmentedControlVariants>>;
|
|
7
|
+
isDisabled: ComputedRef<boolean>;
|
|
8
|
+
/** Which segment is selected, and the collection it is selected from. */
|
|
9
|
+
state: UseSingleSelectListStateReturn;
|
|
10
|
+
keyboard: UseListKeyboardReturn;
|
|
11
|
+
}
|
|
12
|
+
export declare const useSegmentedControlContext: () => SegmentedControlContext, provideSegmentedControlContext: (value: SegmentedControlContext) => SegmentedControlContext;
|
|
13
|
+
export interface SegmentedControlItemContext {
|
|
14
|
+
/** Read by the indicator, which is rendered inside the segment it belongs to. */
|
|
15
|
+
isSelected: ComputedRef<boolean>;
|
|
16
|
+
}
|
|
17
|
+
export declare const useSegmentedControlItemContext: () => SegmentedControlItemContext, provideSegmentedControlItemContext: (value: SegmentedControlItemContext) => SegmentedControlItemContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext } from "../../utils/create-context.js";
|
|
2
|
+
//#region src/components/segmented-control/segmented-control.context.ts
|
|
3
|
+
var [useSegmentedControlContext, provideSegmentedControlContext] = createContext({
|
|
4
|
+
errorMessage: "A segment has to be rendered inside a SegmentedControl: it takes its selection and its place in the keyboard order from the control.",
|
|
5
|
+
name: "SegmentedControlContext"
|
|
6
|
+
});
|
|
7
|
+
var [useSegmentedControlItemContext, provideSegmentedControlItemContext] = createContext({
|
|
8
|
+
errorMessage: "A segmented control's indicator has to be rendered inside a segment.",
|
|
9
|
+
name: "SegmentedControlItemContext"
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { provideSegmentedControlContext, provideSegmentedControlItemContext, useSegmentedControlContext, useSegmentedControlItemContext };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { CollectionKey } from "../../composables/use-collection.js";
|
|
2
|
+
import type { SegmentedControlVariants } from "@ropav/styles";
|
|
3
|
+
export type SegmentedControlOrientation = "horizontal";
|
|
4
|
+
export interface SegmentedControlRootProps {
|
|
5
|
+
class?: string;
|
|
6
|
+
/**
|
|
7
|
+
* The control's scale.
|
|
8
|
+
*
|
|
9
|
+
* The track lands on 32/36/40px, the three heights a button and a field stand at, so a
|
|
10
|
+
* segmented control lines up with either.
|
|
11
|
+
*
|
|
12
|
+
* @default "md"
|
|
13
|
+
*/
|
|
14
|
+
size?: SegmentedControlVariants["size"];
|
|
15
|
+
/** Stretches the track across its container and shares the width between the segments. */
|
|
16
|
+
fullWidth?: boolean;
|
|
17
|
+
/** The selected segment, when the caller drives it. */
|
|
18
|
+
selectedKey?: CollectionKey;
|
|
19
|
+
/** The initially selected segment. Falls back to the first segment that is not disabled. */
|
|
20
|
+
defaultSelectedKey?: CollectionKey;
|
|
21
|
+
disabledKeys?: CollectionKey[];
|
|
22
|
+
/** Disables every segment: a selection that stays visible but cannot be moved. */
|
|
23
|
+
isDisabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Names the control, which has no visible label of its own.
|
|
26
|
+
*
|
|
27
|
+
* Declared under this name because Vue normalises prop names, so a hyphenated one never
|
|
28
|
+
* resolves — it is mapped back to `aria-label` at the binding.
|
|
29
|
+
*/
|
|
30
|
+
ariaLabel?: string;
|
|
31
|
+
ariaLabelledby?: string;
|
|
32
|
+
ariaDescribedby?: string;
|
|
33
|
+
onSelectionChange?: (key: CollectionKey) => void;
|
|
34
|
+
}
|
|
35
|
+
export interface SegmentedControlRootSlotProps {
|
|
36
|
+
selectedKey: CollectionKey | null;
|
|
37
|
+
isDisabled: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface SegmentedControlItemProps {
|
|
40
|
+
class?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Identifies the segment, and is what the selection reports.
|
|
43
|
+
*
|
|
44
|
+
* Deliberately does not reach the DOM as an `id`, so two controls that both hold a `"weekly"`
|
|
45
|
+
* segment cannot collide. It surfaces as `data-key` instead.
|
|
46
|
+
*/
|
|
47
|
+
id: CollectionKey;
|
|
48
|
+
isDisabled?: boolean;
|
|
49
|
+
/** What typeahead and assistive technology read, when the rendered text will not do. */
|
|
50
|
+
textValue?: string;
|
|
51
|
+
/** Names the segment, for one drawn as an icon with no text beside it. */
|
|
52
|
+
ariaLabel?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface SegmentedControlItemSlotProps {
|
|
55
|
+
isSelected: boolean;
|
|
56
|
+
isDisabled: boolean;
|
|
57
|
+
isFocused: boolean;
|
|
58
|
+
isFocusVisible: boolean;
|
|
59
|
+
isHovered: boolean;
|
|
60
|
+
isPressed: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface SegmentedControlIndicatorProps {
|
|
63
|
+
class?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface SegmentedControlSeparatorProps {
|
|
66
|
+
class?: string;
|
|
67
|
+
}
|
|
@@ -38,6 +38,7 @@ export declare const Select: (<T>(__VLS_props: NonNullable<Awaited<typeof __VLS_
|
|
|
38
38
|
ariaLabelledby?: string;
|
|
39
39
|
ariaDescribedby?: string;
|
|
40
40
|
variant?: import("@ropav/styles").SelectVariants["variant"];
|
|
41
|
+
size?: import("@ropav/styles").SelectVariants["size"];
|
|
41
42
|
fullWidth?: boolean;
|
|
42
43
|
onChange?: ((value: import("../../index.js").SelectedValue) => any) | undefined;
|
|
43
44
|
onFocusChange?: ((isFocused: boolean) => any) | undefined;
|
|
@@ -140,6 +141,7 @@ export declare const Select: (<T>(__VLS_props: NonNullable<Awaited<typeof __VLS_
|
|
|
140
141
|
ariaLabelledby?: string;
|
|
141
142
|
ariaDescribedby?: string;
|
|
142
143
|
variant?: import("@ropav/styles").SelectVariants["variant"];
|
|
144
|
+
size?: import("@ropav/styles").SelectVariants["size"];
|
|
143
145
|
fullWidth?: boolean;
|
|
144
146
|
onChange?: ((value: import("../../index.js").SelectedValue) => any) | undefined;
|
|
145
147
|
onFocusChange?: ((isFocused: boolean) => any) | undefined;
|
|
@@ -205,5 +207,6 @@ export { SelectIndicator, SelectPopover, SelectRoot, SelectTrigger, SelectValue
|
|
|
205
207
|
export type { SelectIndicatorProps, SelectPopoverProps, SelectRootProps, SelectRootProps as SelectProps, SelectRootSlotProps, SelectTriggerProps, SelectValueProps, SelectValueSlotProps, } from "./select.types.js";
|
|
206
208
|
export { useSelectContext } from "./select.context.js";
|
|
207
209
|
export type { SelectContext } from "./select.context.js";
|
|
210
|
+
export type { UseSelectReturn } from "../../composables/use-select.js";
|
|
208
211
|
export { selectVariants } from "@ropav/styles";
|
|
209
212
|
export type { SelectVariants } from "@ropav/styles";
|
|
@@ -51,7 +51,7 @@ var select_hidden_select_vue_vue_type_script_setup_true_vapor_true_lang_default
|
|
|
51
51
|
return (Array.isArray(current) ? current : [current]).map(String);
|
|
52
52
|
});
|
|
53
53
|
const value = computed(() => isMultiple.value ? values.value : values.value[0] ?? "");
|
|
54
|
-
useFormReset(element, state.defaultValue, state.setValue);
|
|
54
|
+
useFormReset(element, state.defaultValue, state.setValue, () => props.form);
|
|
55
55
|
useFormValidation(element, state, { focus: () => select.triggerElement.value?.focus() });
|
|
56
56
|
const defaultValues = computed(() => {
|
|
57
57
|
const initial = state.defaultValue.value;
|
|
@@ -63,6 +63,7 @@ var select_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PU
|
|
|
63
63
|
ariaLabelledby: {},
|
|
64
64
|
ariaDescribedby: {},
|
|
65
65
|
variant: {},
|
|
66
|
+
size: {},
|
|
66
67
|
fullWidth: {
|
|
67
68
|
type: Boolean,
|
|
68
69
|
default: void 0
|
|
@@ -129,6 +130,7 @@ var select_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PU
|
|
|
129
130
|
});
|
|
130
131
|
const styles = computed(() => selectVariants({
|
|
131
132
|
fullWidth: props.fullWidth,
|
|
133
|
+
size: props.size,
|
|
132
134
|
variant: props.variant
|
|
133
135
|
}));
|
|
134
136
|
provideFieldIdsContext(select.fieldIds.context);
|
|
@@ -60,6 +60,8 @@ export interface SelectRootProps<T = unknown> {
|
|
|
60
60
|
ariaLabelledby?: string;
|
|
61
61
|
ariaDescribedby?: string;
|
|
62
62
|
variant?: SelectVariants["variant"];
|
|
63
|
+
/** How tall the trigger stands, matching a button of the same size. @default "md" */
|
|
64
|
+
size?: SelectVariants["size"];
|
|
63
65
|
fullWidth?: boolean;
|
|
64
66
|
}
|
|
65
67
|
export interface SelectRootSlotProps {
|