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,28 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import { useSidebarContext } from "./sidebar.context.js";
|
|
4
|
+
import { createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, template, unref } from "vue";
|
|
5
|
+
//#region src/components/sidebar/sidebar-item-label.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
6
|
+
var t0 = template("<span data-slot=sidebar-item-label>", 1);
|
|
7
|
+
var sidebar_item_label_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
8
|
+
__name: "sidebar-item-label",
|
|
9
|
+
props: { class: {} },
|
|
10
|
+
setup(__props) {
|
|
11
|
+
const props = __props;
|
|
12
|
+
const { slots, state } = useSidebarContext();
|
|
13
|
+
const n1 = t0();
|
|
14
|
+
renderEffect(() => {
|
|
15
|
+
setClass(n1, unref(composeSlotClassName)(unref(slots).itemLabel, props.class));
|
|
16
|
+
setAttr(n1, "data-collapsed", unref(dataAttr)(unref(state).isCollapsed.value));
|
|
17
|
+
});
|
|
18
|
+
setInsertionState(n1);
|
|
19
|
+
createSlot("default", {
|
|
20
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
21
|
+
isMobile: () => unref(state).isMobile.value,
|
|
22
|
+
isOpen: () => unref(state).isOpen.value
|
|
23
|
+
});
|
|
24
|
+
return n1;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { sidebar_item_label_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SidebarItemTooltipProps } from "./sidebar.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<SidebarItemTooltipProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {
|
|
9
|
+
default?: () => 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,38 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { useSidebarContext } from "./sidebar.context.js";
|
|
3
|
+
import tooltip_content_default from "../tooltip/tooltip-content.js";
|
|
4
|
+
import tooltip_root_default from "../tooltip/tooltip-root.js";
|
|
5
|
+
import tooltip_trigger_default from "../tooltip/tooltip-trigger.js";
|
|
6
|
+
import { computed, createComponent, createSlot, defineVaporComponent, extend, renderEffect, setText, template, toDisplayString, unref } from "vue";
|
|
7
|
+
//#region src/components/sidebar/sidebar-item-tooltip.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
8
|
+
var t0 = template(" ");
|
|
9
|
+
var sidebar_item_tooltip_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
10
|
+
__name: "sidebar-item-tooltip",
|
|
11
|
+
props: {
|
|
12
|
+
class: {},
|
|
13
|
+
label: {},
|
|
14
|
+
delay: {},
|
|
15
|
+
closeDelay: {}
|
|
16
|
+
},
|
|
17
|
+
setup(__props) {
|
|
18
|
+
const props = __props;
|
|
19
|
+
const { side, slots, state } = useSidebarContext();
|
|
20
|
+
const isDisabled = computed(() => !state.isCollapsed.value);
|
|
21
|
+
const placement = computed(() => side.value === "left" ? "end" : "start");
|
|
22
|
+
return createComponent(tooltip_root_default, {
|
|
23
|
+
"close-delay": () => props.closeDelay,
|
|
24
|
+
delay: () => props.delay,
|
|
25
|
+
"is-disabled": () => isDisabled.value
|
|
26
|
+
}, () => {
|
|
27
|
+
return [createComponent(tooltip_trigger_default, { class: () => unref(composeSlotClassName)(unref(slots).itemTooltip, props.class) }, extend(() => {
|
|
28
|
+
return createSlot("default", null, null, 36);
|
|
29
|
+
}, { _: 8 })), createComponent(tooltip_content_default, { placement: () => placement.value }, () => {
|
|
30
|
+
const n2 = t0();
|
|
31
|
+
renderEffect(() => setText(n2, toDisplayString(props.label)));
|
|
32
|
+
return n2;
|
|
33
|
+
})];
|
|
34
|
+
}, true);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { sidebar_item_tooltip_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SidebarItemTrailingProps, SidebarPartSlotProps } from "./sidebar.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<SidebarItemTrailingProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {
|
|
9
|
+
default?: (props: SidebarPartSlotProps) => 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,28 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import { useSidebarContext } from "./sidebar.context.js";
|
|
4
|
+
import { createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, template, unref } from "vue";
|
|
5
|
+
//#region src/components/sidebar/sidebar-item-trailing.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
6
|
+
var t0 = template("<span data-slot=sidebar-item-trailing>", 1);
|
|
7
|
+
var sidebar_item_trailing_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
8
|
+
__name: "sidebar-item-trailing",
|
|
9
|
+
props: { class: {} },
|
|
10
|
+
setup(__props) {
|
|
11
|
+
const props = __props;
|
|
12
|
+
const { slots, state } = useSidebarContext();
|
|
13
|
+
const n1 = t0();
|
|
14
|
+
renderEffect(() => {
|
|
15
|
+
setClass(n1, unref(composeSlotClassName)(unref(slots).itemTrailing, props.class));
|
|
16
|
+
setAttr(n1, "data-collapsed", unref(dataAttr)(unref(state).isCollapsed.value));
|
|
17
|
+
});
|
|
18
|
+
setInsertionState(n1);
|
|
19
|
+
createSlot("default", {
|
|
20
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
21
|
+
isMobile: () => unref(state).isMobile.value,
|
|
22
|
+
isOpen: () => unref(state).isOpen.value
|
|
23
|
+
});
|
|
24
|
+
return n1;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { sidebar_item_trailing_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SidebarItemProps, SidebarItemSlotProps } from "./sidebar.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<SidebarItemProps & {
|
|
4
|
+
onPress?: ((event: import("../../index.js").PressEvent) => any) | undefined;
|
|
5
|
+
}> & (typeof globalThis extends {
|
|
6
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
7
|
+
} ? P : {});
|
|
8
|
+
expose: (exposed: {}) => void;
|
|
9
|
+
attrs: any;
|
|
10
|
+
slots: {
|
|
11
|
+
default?: (props: SidebarItemSlotProps) => unknown;
|
|
12
|
+
};
|
|
13
|
+
emit: (evt: "press", event: import("../../index.js").PressEvent) => void;
|
|
14
|
+
}>) => import('vue').VNode & {
|
|
15
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
16
|
+
};
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
20
|
+
[K in keyof T]: T[K];
|
|
21
|
+
} : {
|
|
22
|
+
[K in keyof T as K]: T[K];
|
|
23
|
+
}) & {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import { useInteractionStates } from "../../composables/use-interaction-states.js";
|
|
4
|
+
import { usePress } from "../../composables/use-press.js";
|
|
5
|
+
import { openLink } from "../../utils/open-link.js";
|
|
6
|
+
import { useRouterContext } from "../router-provider/router-provider.context.js";
|
|
7
|
+
import { useSidebarContext, useSidebarSubMenuContext } from "./sidebar.context.js";
|
|
8
|
+
import { computed, createIf, createSlot, defineVaporComponent, on, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
|
|
9
|
+
//#region src/components/sidebar/sidebar-item.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
10
|
+
var t0 = template("<a data-slot=sidebar-item>", 1);
|
|
11
|
+
var t1 = template("<button data-slot=sidebar-item type=button>", 1);
|
|
12
|
+
var sidebar_item_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
13
|
+
__name: "sidebar-item",
|
|
14
|
+
props: {
|
|
15
|
+
class: {},
|
|
16
|
+
href: {},
|
|
17
|
+
target: {},
|
|
18
|
+
rel: {},
|
|
19
|
+
ariaCurrent: {
|
|
20
|
+
type: [Boolean, String],
|
|
21
|
+
default: void 0
|
|
22
|
+
},
|
|
23
|
+
routerOptions: {},
|
|
24
|
+
isDisabled: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: void 0
|
|
27
|
+
},
|
|
28
|
+
ariaLabel: {},
|
|
29
|
+
ariaLabelledby: {},
|
|
30
|
+
ariaDescribedby: {}
|
|
31
|
+
},
|
|
32
|
+
emits: ["press"],
|
|
33
|
+
setup(__props, { emit: __emit }) {
|
|
34
|
+
const props = __props;
|
|
35
|
+
const emit = __emit;
|
|
36
|
+
const { slots, state } = useSidebarContext();
|
|
37
|
+
const router = useRouterContext();
|
|
38
|
+
const isSub = useSidebarSubMenuContext();
|
|
39
|
+
const className = computed(() => composeSlotClassName(slots.value.item, props.class, { isSub }));
|
|
40
|
+
const isDisabled = computed(() => Boolean(props.isDisabled));
|
|
41
|
+
const press = usePress({
|
|
42
|
+
isDisabled,
|
|
43
|
+
onPress: (event) => emit("press", event)
|
|
44
|
+
});
|
|
45
|
+
const interaction = useInteractionStates({ isDisabled });
|
|
46
|
+
const isAnchor = computed(() => Boolean(props.href) && !isDisabled.value);
|
|
47
|
+
const ariaCurrent = computed(() => {
|
|
48
|
+
if (props.ariaCurrent !== "auto") return props.ariaCurrent;
|
|
49
|
+
return props.href && router?.isCurrent(props.href) ? "page" : void 0;
|
|
50
|
+
});
|
|
51
|
+
const isCurrent = computed(() => Boolean(ariaCurrent.value));
|
|
52
|
+
const resolvedHref = computed(() => props.href === void 0 ? void 0 : router?.resolveHref(props.href) ?? props.href);
|
|
53
|
+
const tabindex = computed(() => isDisabled.value ? void 0 : 0);
|
|
54
|
+
const onPointerenter = (event) => {
|
|
55
|
+
interaction.onPointerenter(event);
|
|
56
|
+
press.handlers.onPointerenter(event);
|
|
57
|
+
};
|
|
58
|
+
const onPointerleave = (event) => {
|
|
59
|
+
interaction.onPointerleave();
|
|
60
|
+
press.handlers.onPointerleave(event);
|
|
61
|
+
};
|
|
62
|
+
const onClick = (event) => {
|
|
63
|
+
press.handlers.onClick(event);
|
|
64
|
+
openLink(event, {
|
|
65
|
+
href: props.href,
|
|
66
|
+
router,
|
|
67
|
+
routerOptions: props.routerOptions
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
return createIf(() => isAnchor.value, () => {
|
|
71
|
+
const n3 = t0();
|
|
72
|
+
renderEffect(() => {
|
|
73
|
+
const _props = props;
|
|
74
|
+
const _dataAttr = unref(dataAttr);
|
|
75
|
+
const _interaction = unref(interaction);
|
|
76
|
+
setAttr(n3, "aria-current", ariaCurrent.value);
|
|
77
|
+
setAttr(n3, "aria-describedby", _props.ariaDescribedby);
|
|
78
|
+
setAttr(n3, "aria-label", _props.ariaLabel);
|
|
79
|
+
setAttr(n3, "aria-labelledby", _props.ariaLabelledby);
|
|
80
|
+
setClass(n3, className.value);
|
|
81
|
+
setAttr(n3, "data-collapsed", _dataAttr(unref(state).isCollapsed.value));
|
|
82
|
+
setAttr(n3, "data-current", _dataAttr(isCurrent.value));
|
|
83
|
+
setAttr(n3, "data-focus-visible", _dataAttr(_interaction.isFocusVisible.value));
|
|
84
|
+
setAttr(n3, "data-focused", _dataAttr(_interaction.isFocused.value));
|
|
85
|
+
setAttr(n3, "data-hovered", _dataAttr(_interaction.isHovered.value));
|
|
86
|
+
setAttr(n3, "data-pressed", _dataAttr(unref(press).isPressed.value));
|
|
87
|
+
setProp(n3, "href", resolvedHref.value);
|
|
88
|
+
setProp(n3, "rel", _props.rel);
|
|
89
|
+
setProp(n3, "tabindex", tabindex.value);
|
|
90
|
+
setProp(n3, "target", _props.target);
|
|
91
|
+
});
|
|
92
|
+
setInsertionState(n3);
|
|
93
|
+
createSlot("default", {
|
|
94
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
95
|
+
isCurrent: () => isCurrent.value,
|
|
96
|
+
isDisabled: () => isDisabled.value,
|
|
97
|
+
isFocusVisible: () => unref(interaction).isFocusVisible.value,
|
|
98
|
+
isFocused: () => unref(interaction).isFocused.value,
|
|
99
|
+
isHovered: () => unref(interaction).isHovered.value,
|
|
100
|
+
isPressed: () => unref(press).isPressed.value
|
|
101
|
+
});
|
|
102
|
+
on(n3, "blur", (e) => unref(interaction).onBlur(e));
|
|
103
|
+
on(n3, "click", onClick);
|
|
104
|
+
on(n3, "dragstart", (e) => unref(press).handlers.onDragstart(e));
|
|
105
|
+
on(n3, "focus", (e) => unref(interaction).onFocus(e));
|
|
106
|
+
on(n3, "keydown", (e) => unref(press).handlers.onKeydown(e));
|
|
107
|
+
on(n3, "mousedown", (e) => unref(press).handlers.onMousedown(e));
|
|
108
|
+
on(n3, "pointerdown", (e) => unref(press).handlers.onPointerdown(e));
|
|
109
|
+
on(n3, "pointerenter", onPointerenter);
|
|
110
|
+
on(n3, "pointerleave", onPointerleave);
|
|
111
|
+
on(n3, "pointerup", (e) => unref(press).handlers.onPointerup(e));
|
|
112
|
+
return n3;
|
|
113
|
+
}, () => {
|
|
114
|
+
const n6 = t1();
|
|
115
|
+
renderEffect(() => {
|
|
116
|
+
const _props = props;
|
|
117
|
+
const _dataAttr = unref(dataAttr);
|
|
118
|
+
const _isDisabled = isDisabled.value;
|
|
119
|
+
const _interaction = unref(interaction);
|
|
120
|
+
setAttr(n6, "aria-current", ariaCurrent.value);
|
|
121
|
+
setAttr(n6, "aria-describedby", _props.ariaDescribedby);
|
|
122
|
+
setAttr(n6, "aria-label", _props.ariaLabel);
|
|
123
|
+
setAttr(n6, "aria-labelledby", _props.ariaLabelledby);
|
|
124
|
+
setClass(n6, className.value);
|
|
125
|
+
setAttr(n6, "data-collapsed", _dataAttr(unref(state).isCollapsed.value));
|
|
126
|
+
setAttr(n6, "data-current", _dataAttr(isCurrent.value));
|
|
127
|
+
setAttr(n6, "data-disabled", _dataAttr(_isDisabled));
|
|
128
|
+
setAttr(n6, "data-focus-visible", _dataAttr(_interaction.isFocusVisible.value));
|
|
129
|
+
setAttr(n6, "data-focused", _dataAttr(_interaction.isFocused.value));
|
|
130
|
+
setAttr(n6, "data-hovered", _dataAttr(_interaction.isHovered.value));
|
|
131
|
+
setAttr(n6, "data-pressed", _dataAttr(unref(press).isPressed.value));
|
|
132
|
+
setProp(n6, "disabled", _isDisabled || void 0);
|
|
133
|
+
setProp(n6, "tabindex", tabindex.value);
|
|
134
|
+
});
|
|
135
|
+
setInsertionState(n6);
|
|
136
|
+
createSlot("default", {
|
|
137
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
138
|
+
isCurrent: () => isCurrent.value,
|
|
139
|
+
isDisabled: () => isDisabled.value,
|
|
140
|
+
isFocusVisible: () => unref(interaction).isFocusVisible.value,
|
|
141
|
+
isFocused: () => unref(interaction).isFocused.value,
|
|
142
|
+
isHovered: () => unref(interaction).isHovered.value,
|
|
143
|
+
isPressed: () => unref(press).isPressed.value
|
|
144
|
+
});
|
|
145
|
+
on(n6, "blur", (e) => unref(interaction).onBlur(e));
|
|
146
|
+
on(n6, "click", (e) => unref(press).handlers.onClick(e));
|
|
147
|
+
on(n6, "dragstart", (e) => unref(press).handlers.onDragstart(e));
|
|
148
|
+
on(n6, "focus", (e) => unref(interaction).onFocus(e));
|
|
149
|
+
on(n6, "keydown", (e) => unref(press).handlers.onKeydown(e));
|
|
150
|
+
on(n6, "mousedown", (e) => unref(press).handlers.onMousedown(e));
|
|
151
|
+
on(n6, "pointerdown", (e) => unref(press).handlers.onPointerdown(e));
|
|
152
|
+
on(n6, "pointerenter", onPointerenter);
|
|
153
|
+
on(n6, "pointerleave", onPointerleave);
|
|
154
|
+
on(n6, "pointerup", (e) => unref(press).handlers.onPointerup(e));
|
|
155
|
+
return n6;
|
|
156
|
+
}, 261);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
//#endregion
|
|
160
|
+
export { sidebar_item_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SidebarPanelProps, SidebarPartSlotProps } from "./sidebar.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<SidebarPanelProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {
|
|
9
|
+
default?: (props: SidebarPartSlotProps) => 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,88 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import drawer_backdrop_default from "../drawer/drawer-backdrop.js";
|
|
4
|
+
import drawer_content_default from "../drawer/drawer-content.js";
|
|
5
|
+
import drawer_dialog_default from "../drawer/drawer-dialog.js";
|
|
6
|
+
import drawer_heading_default from "../drawer/drawer-heading.js";
|
|
7
|
+
import drawer_root_default from "../drawer/drawer-root.js";
|
|
8
|
+
import { useSidebarContext } from "./sidebar.context.js";
|
|
9
|
+
import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setProp, setTemplateRefBinding, setText, template, toDisplayString, unref } from "vue";
|
|
10
|
+
//#region src/components/sidebar/sidebar-panel.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
11
|
+
var t0 = template(" ");
|
|
12
|
+
var t1 = template("<nav data-slot=sidebar-panel>");
|
|
13
|
+
var t2 = template("<nav data-slot=sidebar-panel>", 1);
|
|
14
|
+
var sidebar_panel_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
15
|
+
__name: "sidebar-panel",
|
|
16
|
+
props: {
|
|
17
|
+
class: {},
|
|
18
|
+
ariaLabel: {},
|
|
19
|
+
ariaLabelledby: {}
|
|
20
|
+
},
|
|
21
|
+
setup(__props) {
|
|
22
|
+
const props = __props;
|
|
23
|
+
const { panelId, setPanelEl, side, slots, state } = useSidebarContext();
|
|
24
|
+
const setElement = (next) => setPanelEl(next ?? null);
|
|
25
|
+
const isHidden = computed(() => state.collapsible.value === "offcanvas" && state.isCollapsed.value);
|
|
26
|
+
const label = computed(() => props.ariaLabel ?? "Sidebar");
|
|
27
|
+
const ariaLabel = computed(() => props.ariaLabelledby ? void 0 : label.value);
|
|
28
|
+
const panelClass = computed(() => composeSlotClassName(slots.value.panel, props.class, { inDrawer: state.isMobile.value }));
|
|
29
|
+
return createIf(() => unref(state).isMobile.value, () => {
|
|
30
|
+
return createComponent(drawer_root_default, {
|
|
31
|
+
"is-open": () => unref(state).isMobileOpen.value,
|
|
32
|
+
onOpenChange: () => unref(state).setOpen
|
|
33
|
+
}, () => {
|
|
34
|
+
return createComponent(drawer_backdrop_default, null, () => {
|
|
35
|
+
return createComponent(drawer_content_default, { placement: () => unref(side) }, () => {
|
|
36
|
+
return createComponent(drawer_dialog_default, { class: "p-0" }, () => {
|
|
37
|
+
const n3 = createComponent(drawer_heading_default, { class: "sr-only" }, () => {
|
|
38
|
+
const n2 = t0();
|
|
39
|
+
renderEffect(() => setText(n2, toDisplayString(label.value)));
|
|
40
|
+
return n2;
|
|
41
|
+
});
|
|
42
|
+
const n5 = t1();
|
|
43
|
+
renderEffect(() => {
|
|
44
|
+
setProp(n5, "id", unref(panelId));
|
|
45
|
+
setAttr(n5, "aria-label", ariaLabel.value);
|
|
46
|
+
setAttr(n5, "aria-labelledby", props.ariaLabelledby);
|
|
47
|
+
setClass(n5, panelClass.value);
|
|
48
|
+
setAttr(n5, "data-side", unref(side));
|
|
49
|
+
});
|
|
50
|
+
setInsertionState(n5);
|
|
51
|
+
createSlot("default", {
|
|
52
|
+
isCollapsed: false,
|
|
53
|
+
isMobile: true,
|
|
54
|
+
isOpen: () => unref(state).isOpen.value
|
|
55
|
+
});
|
|
56
|
+
setTemplateRefBinding(n5, () => setElement);
|
|
57
|
+
return [n3, n5];
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}, true);
|
|
62
|
+
}, () => {
|
|
63
|
+
const n12 = t2();
|
|
64
|
+
renderEffect(() => {
|
|
65
|
+
const _dataAttr = unref(dataAttr);
|
|
66
|
+
const _state = unref(state);
|
|
67
|
+
setProp(n12, "id", unref(panelId));
|
|
68
|
+
setAttr(n12, "aria-label", ariaLabel.value);
|
|
69
|
+
setAttr(n12, "aria-labelledby", props.ariaLabelledby);
|
|
70
|
+
setClass(n12, panelClass.value);
|
|
71
|
+
setAttr(n12, "data-collapsed", _dataAttr(_state.isCollapsed.value));
|
|
72
|
+
setAttr(n12, "data-resizing", _dataAttr(_state.isResizing.value));
|
|
73
|
+
setAttr(n12, "data-side", unref(side));
|
|
74
|
+
setProp(n12, "inert", isHidden.value || void 0);
|
|
75
|
+
});
|
|
76
|
+
setInsertionState(n12);
|
|
77
|
+
createSlot("default", {
|
|
78
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
79
|
+
isMobile: false,
|
|
80
|
+
isOpen: () => unref(state).isOpen.value
|
|
81
|
+
});
|
|
82
|
+
setTemplateRefBinding(n12, () => setElement);
|
|
83
|
+
return n12;
|
|
84
|
+
}, 261);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
//#endregion
|
|
88
|
+
export { sidebar_panel_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SidebarRailProps, SidebarRailSlotProps } from "./sidebar.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<SidebarRailProps> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
6
|
+
expose: (exposed: {}) => void;
|
|
7
|
+
attrs: any;
|
|
8
|
+
slots: {
|
|
9
|
+
default?: (props: SidebarRailSlotProps) => 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,210 @@
|
|
|
1
|
+
import { composeSlotClassName } from "../../utils/compose.js";
|
|
2
|
+
import { dataAttr } from "../../utils/assertion.js";
|
|
3
|
+
import { useInteractionStates } from "../../composables/use-interaction-states.js";
|
|
4
|
+
import { useMove } from "../../composables/use-move.js";
|
|
5
|
+
import { useSidebarContext } from "./sidebar.context.js";
|
|
6
|
+
import { child, computed, createIf, createSlot, defineVaporComponent, on, onMounted, renderEffect, setAttr, setClass, setInsertionState, setProp, shallowRef, template, unref, watch } from "vue";
|
|
7
|
+
//#region src/components/sidebar/sidebar-rail.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
8
|
+
var t0 = template("<div data-slot=sidebar-rail><span aria-hidden=true data-slot=sidebar-rail-target></span>", 1);
|
|
9
|
+
var sidebar_rail_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
|
|
10
|
+
__name: "sidebar-rail",
|
|
11
|
+
props: {
|
|
12
|
+
class: {},
|
|
13
|
+
isResizable: {
|
|
14
|
+
type: Boolean,
|
|
15
|
+
default: void 0
|
|
16
|
+
},
|
|
17
|
+
isDisabled: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: void 0
|
|
20
|
+
},
|
|
21
|
+
minWidth: {},
|
|
22
|
+
maxWidth: {},
|
|
23
|
+
keyboardStep: {},
|
|
24
|
+
keyboardLargeStep: {},
|
|
25
|
+
ariaLabel: {},
|
|
26
|
+
ariaLabelledby: {}
|
|
27
|
+
},
|
|
28
|
+
setup(__props) {
|
|
29
|
+
const props = __props;
|
|
30
|
+
const { panelEl, panelId, side, slots, state } = useSidebarContext();
|
|
31
|
+
const isResizable = computed(() => Boolean(props.isResizable));
|
|
32
|
+
const isDisabled = computed(() => Boolean(props.isDisabled));
|
|
33
|
+
const minWidth = computed(() => props.minWidth ?? 180);
|
|
34
|
+
const maxWidth = computed(() => props.maxWidth ?? 480);
|
|
35
|
+
const states = useInteractionStates({ isDisabled });
|
|
36
|
+
const isDragging = shallowRef(false);
|
|
37
|
+
/**
|
|
38
|
+
* The declared width, when it is the plain pixel length the rail itself writes.
|
|
39
|
+
*
|
|
40
|
+
* Preferred over measuring, and not as an optimisation: the panel eases towards a new width, so
|
|
41
|
+
* `offsetWidth` read any time after a change reports a frame of the animation rather than the
|
|
42
|
+
* width that was asked for. This is the number the user moved the edge to.
|
|
43
|
+
*/
|
|
44
|
+
const declaredWidth = computed(() => {
|
|
45
|
+
const value = state.width.value;
|
|
46
|
+
const pixels = value?.endsWith("px") ? Number.parseFloat(value) : NaN;
|
|
47
|
+
return Number.isFinite(pixels) ? Math.round(pixels) : null;
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* The starting point, for a sidebar sized by the stylesheet with no declared width to read.
|
|
51
|
+
*
|
|
52
|
+
* Read on mount and never during setup, which is not a detail: a watcher's immediate run happens
|
|
53
|
+
* synchronously while the tree is still being built, and an element that is not in the document
|
|
54
|
+
* yet measures zero. Nothing would correct it either — the panel is registered by then, so the
|
|
55
|
+
* element never changes and the watcher never fires again. A rail left holding that zero starts
|
|
56
|
+
* every first drag from nothing and snaps the panel straight to its minimum, where it stays until
|
|
57
|
+
* the pointer has travelled the whole width back.
|
|
58
|
+
*
|
|
59
|
+
* The watcher stays for the panel actually changing — the drawer handing it back on the way out of
|
|
60
|
+
* a narrow viewport — where post-flush is the right moment and there is a new element to measure.
|
|
61
|
+
*/
|
|
62
|
+
const measuredWidth = shallowRef(0);
|
|
63
|
+
const measure = () => {
|
|
64
|
+
measuredWidth.value = panelEl.value?.offsetWidth ?? 0;
|
|
65
|
+
};
|
|
66
|
+
onMounted(measure);
|
|
67
|
+
watch(panelEl, measure, { flush: "post" });
|
|
68
|
+
const width = computed(() => declaredWidth.value ?? measuredWidth.value);
|
|
69
|
+
/** The width the gesture opened at; every delta is measured against it. */
|
|
70
|
+
let startWidth = 0;
|
|
71
|
+
/** The width to go back to if the gesture is abandoned. */
|
|
72
|
+
let startDeclared;
|
|
73
|
+
let total = 0;
|
|
74
|
+
/** Resolved once per gesture — reading it per `pointermove` would force a style recalc a frame. */
|
|
75
|
+
let isReversed = false;
|
|
76
|
+
/** Whether the pointer actually travelled, which is what separates a drag from a click. */
|
|
77
|
+
let hasMoved = false;
|
|
78
|
+
const readDirection = () => {
|
|
79
|
+
const panel = panelEl.value;
|
|
80
|
+
isReversed = !!panel && getComputedStyle(panel).direction === "rtl";
|
|
81
|
+
};
|
|
82
|
+
const apply = (width) => {
|
|
83
|
+
state.setWidth(`${Math.round(Math.min(Math.max(width, minWidth.value), maxWidth.value))}px`);
|
|
84
|
+
};
|
|
85
|
+
const openGesture = () => {
|
|
86
|
+
startWidth = width.value;
|
|
87
|
+
startDeclared = state.width.value;
|
|
88
|
+
total = 0;
|
|
89
|
+
isDragging.value = true;
|
|
90
|
+
state.setResizing(true);
|
|
91
|
+
readDirection();
|
|
92
|
+
};
|
|
93
|
+
const { handlers: moveHandlers } = useMove({
|
|
94
|
+
onMove: ({ deltaX, pointerType, shiftKey }) => {
|
|
95
|
+
let delta = deltaX;
|
|
96
|
+
if (pointerType === "keyboard") delta *= shiftKey ? props.keyboardLargeStep ?? 50 : props.keyboardStep ?? 10;
|
|
97
|
+
if (isReversed) delta = -delta;
|
|
98
|
+
if (side.value === "right") delta = -delta;
|
|
99
|
+
if (delta === 0) return;
|
|
100
|
+
hasMoved = true;
|
|
101
|
+
total += delta;
|
|
102
|
+
apply(startWidth + total);
|
|
103
|
+
},
|
|
104
|
+
onMoveEnd: () => {
|
|
105
|
+
isDragging.value = false;
|
|
106
|
+
state.setResizing(false);
|
|
107
|
+
total = 0;
|
|
108
|
+
},
|
|
109
|
+
onMoveStart: () => {
|
|
110
|
+
openGesture();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
const jump = (target) => {
|
|
114
|
+
startWidth = width.value;
|
|
115
|
+
apply(target);
|
|
116
|
+
};
|
|
117
|
+
const onKeydown = (event) => {
|
|
118
|
+
if (isDisabled.value) return;
|
|
119
|
+
if (event.key === "Enter" || event.key === " " || event.key === "Spacebar") {
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
state.toggle();
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (!isResizable.value) return;
|
|
125
|
+
if (event.key === "Home" || event.key === "End") {
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
jump(event.key === "Home" ? minWidth.value : maxWidth.value);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (event.key === "Escape" && isDragging.value) {
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
isDragging.value = false;
|
|
133
|
+
state.setResizing(false);
|
|
134
|
+
if (startDeclared === void 0) state.resetWidth();
|
|
135
|
+
else state.setWidth(startDeclared);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
|
|
139
|
+
readDirection();
|
|
140
|
+
moveHandlers.onKeydown(event);
|
|
141
|
+
};
|
|
142
|
+
const onPointerdown = (event) => {
|
|
143
|
+
if (isDisabled.value) return;
|
|
144
|
+
hasMoved = false;
|
|
145
|
+
states.onPointerdown(event);
|
|
146
|
+
if (isResizable.value) moveHandlers.onPointerdown(event);
|
|
147
|
+
};
|
|
148
|
+
const onClick = () => {
|
|
149
|
+
if (isDisabled.value || hasMoved) return;
|
|
150
|
+
state.toggle();
|
|
151
|
+
};
|
|
152
|
+
const onDblclick = () => {
|
|
153
|
+
if (isDisabled.value || !isResizable.value) return;
|
|
154
|
+
state.resetWidth();
|
|
155
|
+
};
|
|
156
|
+
const railClass = computed(() => composeSlotClassName(slots.value.rail, props.class, { isResizable: isResizable.value }));
|
|
157
|
+
return createIf(() => !unref(state).isMobile.value, () => {
|
|
158
|
+
const n4 = t0();
|
|
159
|
+
const n2 = child(n4);
|
|
160
|
+
renderEffect(() => {
|
|
161
|
+
const _isDisabled = isDisabled.value;
|
|
162
|
+
const _isResizable = isResizable.value;
|
|
163
|
+
const _state = unref(state);
|
|
164
|
+
const _props = props;
|
|
165
|
+
const _dataAttr = unref(dataAttr);
|
|
166
|
+
const _states = unref(states);
|
|
167
|
+
setAttr(n4, "aria-controls", unref(panelId));
|
|
168
|
+
setAttr(n4, "aria-disabled", _isDisabled || void 0);
|
|
169
|
+
setAttr(n4, "aria-expanded", _isResizable ? void 0 : _state.isOpen.value);
|
|
170
|
+
setAttr(n4, "aria-label", _props.ariaLabel ?? (_isResizable ? "Resize sidebar" : "Toggle sidebar"));
|
|
171
|
+
setAttr(n4, "aria-labelledby", _props.ariaLabelledby);
|
|
172
|
+
setAttr(n4, "aria-orientation", _isResizable ? "vertical" : void 0);
|
|
173
|
+
setAttr(n4, "aria-valuemax", _isResizable ? maxWidth.value : void 0);
|
|
174
|
+
setAttr(n4, "aria-valuemin", _isResizable ? minWidth.value : void 0);
|
|
175
|
+
setAttr(n4, "aria-valuenow", _isResizable ? width.value : void 0);
|
|
176
|
+
setClass(n4, railClass.value);
|
|
177
|
+
setAttr(n4, "data-collapsed", _dataAttr(_state.isCollapsed.value));
|
|
178
|
+
setAttr(n4, "data-disabled", _dataAttr(_isDisabled));
|
|
179
|
+
setAttr(n4, "data-dragging", _dataAttr(isDragging.value));
|
|
180
|
+
setAttr(n4, "data-focus-visible", _dataAttr(_states.isFocusVisible.value));
|
|
181
|
+
setAttr(n4, "data-focused", _dataAttr(_states.isFocused.value));
|
|
182
|
+
setAttr(n4, "data-hovered", _dataAttr(_states.isHovered.value));
|
|
183
|
+
setProp(n4, "role", _isResizable ? "separator" : "button");
|
|
184
|
+
setProp(n4, "tabindex", _isDisabled ? -1 : 0);
|
|
185
|
+
setClass(n2, unref(composeSlotClassName)(unref(slots).railTarget));
|
|
186
|
+
});
|
|
187
|
+
setInsertionState(n4, 1);
|
|
188
|
+
createSlot("default", {
|
|
189
|
+
isCollapsed: () => unref(state).isCollapsed.value,
|
|
190
|
+
isDisabled: () => isDisabled.value,
|
|
191
|
+
isDragging: () => isDragging.value,
|
|
192
|
+
isFocusVisible: () => unref(states).isFocusVisible.value,
|
|
193
|
+
isFocused: () => unref(states).isFocused.value,
|
|
194
|
+
isHovered: () => unref(states).isHovered.value,
|
|
195
|
+
isResizable: () => isResizable.value
|
|
196
|
+
});
|
|
197
|
+
on(n4, "blur", (e) => unref(states).onBlur(e));
|
|
198
|
+
on(n4, "click", onClick);
|
|
199
|
+
on(n4, "dblclick", onDblclick);
|
|
200
|
+
on(n4, "focus", (e) => unref(states).onFocus(e));
|
|
201
|
+
on(n4, "keydown", onKeydown);
|
|
202
|
+
on(n4, "pointerdown", onPointerdown);
|
|
203
|
+
on(n4, "pointerenter", (e) => unref(states).onPointerenter(e));
|
|
204
|
+
on(n4, "pointerleave", (e) => unref(states).onPointerleave(e));
|
|
205
|
+
return n4;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
//#endregion
|
|
210
|
+
export { sidebar_rail_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
|