@sectile/vue 0.2.1
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/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/accordion.d.ts +250 -0
- package/dist/accordion.d.ts.map +1 -0
- package/dist/accordion.js +242 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert-dialog.d.ts +16 -0
- package/dist/alert-dialog.d.ts.map +1 -0
- package/dist/alert-dialog.js +18 -0
- package/dist/alert-dialog.js.map +1 -0
- package/dist/calendar.d.ts +232 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +109 -0
- package/dist/calendar.js.map +1 -0
- package/dist/carousel.d.ts +365 -0
- package/dist/carousel.d.ts.map +1 -0
- package/dist/carousel.js +140 -0
- package/dist/carousel.js.map +1 -0
- package/dist/cascade-select.d.ts +442 -0
- package/dist/cascade-select.d.ts.map +1 -0
- package/dist/cascade-select.js +111 -0
- package/dist/cascade-select.js.map +1 -0
- package/dist/checkbox-group.d.ts +206 -0
- package/dist/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox-group.js +98 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.d.ts +152 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +164 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/color-picker.d.ts +602 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +129 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/combobox.d.ts +320 -0
- package/dist/combobox.d.ts.map +1 -0
- package/dist/combobox.js +176 -0
- package/dist/combobox.js.map +1 -0
- package/dist/date-field.d.ts +15 -0
- package/dist/date-field.d.ts.map +1 -0
- package/dist/date-field.js +19 -0
- package/dist/date-field.js.map +1 -0
- package/dist/date-picker.d.ts +554 -0
- package/dist/date-picker.d.ts.map +1 -0
- package/dist/date-picker.js +18 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/date-range-field.d.ts +129 -0
- package/dist/date-range-field.d.ts.map +1 -0
- package/dist/date-range-field.js +134 -0
- package/dist/date-range-field.js.map +1 -0
- package/dist/date-range-picker.d.ts +594 -0
- package/dist/date-range-picker.d.ts.map +1 -0
- package/dist/date-range-picker.js +19 -0
- package/dist/date-range-picker.js.map +1 -0
- package/dist/date-time-field.d.ts +15 -0
- package/dist/date-time-field.d.ts.map +1 -0
- package/dist/date-time-field.js +19 -0
- package/dist/date-time-field.js.map +1 -0
- package/dist/date-time-picker.d.ts +635 -0
- package/dist/date-time-picker.d.ts.map +1 -0
- package/dist/date-time-picker.js +20 -0
- package/dist/date-time-picker.js.map +1 -0
- package/dist/date-time-range-picker.d.ts +755 -0
- package/dist/date-time-range-picker.d.ts.map +1 -0
- package/dist/date-time-range-picker.js +23 -0
- package/dist/date-time-range-picker.js.map +1 -0
- package/dist/dialog.d.ts +16 -0
- package/dist/dialog.d.ts.map +1 -0
- package/dist/dialog.js +15 -0
- package/dist/dialog.js.map +1 -0
- package/dist/disclosure.d.ts +147 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +129 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/editable.d.ts +300 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +181 -0
- package/dist/editable.js.map +1 -0
- package/dist/feed.d.ts +216 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +85 -0
- package/dist/feed.js.map +1 -0
- package/dist/form.d.ts +356 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +752 -0
- package/dist/form.js.map +1 -0
- package/dist/grid.d.ts +254 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/grid.js +95 -0
- package/dist/grid.js.map +1 -0
- package/dist/host-provider.d.ts +46 -0
- package/dist/host-provider.d.ts.map +1 -0
- package/dist/host-provider.js +39 -0
- package/dist/host-provider.js.map +1 -0
- package/dist/index.d.ts +124 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/date-picker.d.ts +539 -0
- package/dist/internal/date-picker.d.ts.map +1 -0
- package/dist/internal/date-picker.js +522 -0
- package/dist/internal/date-picker.js.map +1 -0
- package/dist/internal/form-control-inventory.d.ts +154 -0
- package/dist/internal/form-control-inventory.d.ts.map +1 -0
- package/dist/internal/form-control-inventory.js +43 -0
- package/dist/internal/form-control-inventory.js.map +1 -0
- package/dist/internal/form-control.d.ts +41 -0
- package/dist/internal/form-control.d.ts.map +1 -0
- package/dist/internal/form-control.js +52 -0
- package/dist/internal/form-control.js.map +1 -0
- package/dist/internal/native-field.d.ts +49 -0
- package/dist/internal/native-field.d.ts.map +1 -0
- package/dist/internal/native-field.js +81 -0
- package/dist/internal/native-field.js.map +1 -0
- package/dist/internal/native-input.d.ts +9 -0
- package/dist/internal/native-input.d.ts.map +1 -0
- package/dist/internal/native-input.js +9 -0
- package/dist/internal/native-input.js.map +1 -0
- package/dist/internal/part-contract.d.ts +9 -0
- package/dist/internal/part-contract.d.ts.map +1 -0
- package/dist/internal/part-contract.js +12 -0
- package/dist/internal/part-contract.js.map +1 -0
- package/dist/internal/popup.d.ts +99 -0
- package/dist/internal/popup.d.ts.map +1 -0
- package/dist/internal/popup.js +238 -0
- package/dist/internal/popup.js.map +1 -0
- package/dist/internal/tabs-context.d.ts +25 -0
- package/dist/internal/tabs-context.d.ts.map +1 -0
- package/dist/internal/tabs-context.js +9 -0
- package/dist/internal/tabs-context.js.map +1 -0
- package/dist/listbox.d.ts +275 -0
- package/dist/listbox.d.ts.map +1 -0
- package/dist/listbox.js +258 -0
- package/dist/listbox.js.map +1 -0
- package/dist/menu-button.d.ts +2 -0
- package/dist/menu-button.d.ts.map +1 -0
- package/dist/menu-button.js +2 -0
- package/dist/menu-button.js.map +1 -0
- package/dist/menu.d.ts +638 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +167 -0
- package/dist/menu.js.map +1 -0
- package/dist/menubar.d.ts +2 -0
- package/dist/menubar.d.ts.map +1 -0
- package/dist/menubar.js +2 -0
- package/dist/menubar.js.map +1 -0
- package/dist/month-picker.d.ts +353 -0
- package/dist/month-picker.d.ts.map +1 -0
- package/dist/month-picker.js +10 -0
- package/dist/month-picker.js.map +1 -0
- package/dist/month-range-picker.d.ts +393 -0
- package/dist/month-range-picker.d.ts.map +1 -0
- package/dist/month-range-picker.js +11 -0
- package/dist/month-range-picker.js.map +1 -0
- package/dist/multi-thumb-slider.d.ts +299 -0
- package/dist/multi-thumb-slider.d.ts.map +1 -0
- package/dist/multi-thumb-slider.js +204 -0
- package/dist/multi-thumb-slider.js.map +1 -0
- package/dist/navigation-menu.d.ts +114 -0
- package/dist/navigation-menu.d.ts.map +1 -0
- package/dist/navigation-menu.js +36 -0
- package/dist/navigation-menu.js.map +1 -0
- package/dist/number-field.d.ts +12 -0
- package/dist/number-field.d.ts.map +1 -0
- package/dist/number-field.js +21 -0
- package/dist/number-field.js.map +1 -0
- package/dist/pagination.d.ts +294 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +145 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pin-input.d.ts +207 -0
- package/dist/pin-input.d.ts.map +1 -0
- package/dist/pin-input.js +129 -0
- package/dist/pin-input.js.map +1 -0
- package/dist/popover.d.ts +17 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +16 -0
- package/dist/popover.js.map +1 -0
- package/dist/primitive.d.ts +41 -0
- package/dist/primitive.d.ts.map +1 -0
- package/dist/primitive.js +27 -0
- package/dist/primitive.js.map +1 -0
- package/dist/quantity-field.d.ts +249 -0
- package/dist/quantity-field.d.ts.map +1 -0
- package/dist/quantity-field.js +131 -0
- package/dist/quantity-field.js.map +1 -0
- package/dist/radio-group.d.ts +225 -0
- package/dist/radio-group.d.ts.map +1 -0
- package/dist/radio-group.js +198 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/range-calendar.d.ts +336 -0
- package/dist/range-calendar.d.ts.map +1 -0
- package/dist/range-calendar.js +15 -0
- package/dist/range-calendar.js.map +1 -0
- package/dist/rating.d.ts +228 -0
- package/dist/rating.d.ts.map +1 -0
- package/dist/rating.js +118 -0
- package/dist/rating.js.map +1 -0
- package/dist/reorder.d.ts +209 -0
- package/dist/reorder.d.ts.map +1 -0
- package/dist/reorder.js +186 -0
- package/dist/reorder.js.map +1 -0
- package/dist/select.d.ts +352 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +191 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.d.ts +269 -0
- package/dist/slider.d.ts.map +1 -0
- package/dist/slider.js +197 -0
- package/dist/slider.js.map +1 -0
- package/dist/spin-button.d.ts +272 -0
- package/dist/spin-button.d.ts.map +1 -0
- package/dist/spin-button.js +190 -0
- package/dist/spin-button.js.map +1 -0
- package/dist/stepper.d.ts +310 -0
- package/dist/stepper.d.ts.map +1 -0
- package/dist/stepper.js +87 -0
- package/dist/stepper.js.map +1 -0
- package/dist/switch.d.ts +149 -0
- package/dist/switch.d.ts.map +1 -0
- package/dist/switch.js +140 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.d.ts +290 -0
- package/dist/tabs.d.ts.map +1 -0
- package/dist/tabs.js +258 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tags-input.d.ts +297 -0
- package/dist/tags-input.d.ts.map +1 -0
- package/dist/tags-input.js +196 -0
- package/dist/tags-input.js.map +1 -0
- package/dist/text.d.ts +138 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +125 -0
- package/dist/text.js.map +1 -0
- package/dist/time-field.d.ts +15 -0
- package/dist/time-field.d.ts.map +1 -0
- package/dist/time-field.js +19 -0
- package/dist/time-field.js.map +1 -0
- package/dist/time-range-field.d.ts +128 -0
- package/dist/time-range-field.d.ts.map +1 -0
- package/dist/time-range-field.js +44 -0
- package/dist/time-range-field.js.map +1 -0
- package/dist/timer.d.ts +232 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js +51 -0
- package/dist/timer.js.map +1 -0
- package/dist/toast.d.ts +189 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +78 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle-button.d.ts +81 -0
- package/dist/toggle-button.d.ts.map +1 -0
- package/dist/toggle-button.js +75 -0
- package/dist/toggle-button.js.map +1 -0
- package/dist/toggle-group.d.ts +228 -0
- package/dist/toggle-group.d.ts.map +1 -0
- package/dist/toggle-group.js +143 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/toolbar.d.ts +202 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +82 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +13 -0
- package/dist/tooltip.d.ts.map +1 -0
- package/dist/tooltip.js +15 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree-grid.d.ts +359 -0
- package/dist/tree-grid.d.ts.map +1 -0
- package/dist/tree-grid.js +125 -0
- package/dist/tree-grid.js.map +1 -0
- package/dist/tree-view.d.ts +304 -0
- package/dist/tree-view.d.ts.map +1 -0
- package/dist/tree-view.js +131 -0
- package/dist/tree-view.js.map +1 -0
- package/dist/window-splitter.d.ts +204 -0
- package/dist/window-splitter.d.ts.map +1 -0
- package/dist/window-splitter.js +82 -0
- package/dist/window-splitter.js.map +1 -0
- package/dist/year-picker.d.ts +353 -0
- package/dist/year-picker.d.ts.map +1 -0
- package/dist/year-picker.js +10 -0
- package/dist/year-picker.js.map +1 -0
- package/dist/year-range-picker.d.ts +393 -0
- package/dist/year-range-picker.d.ts.map +1 -0
- package/dist/year-range-picker.js +11 -0
- package/dist/year-range-picker.js.map +1 -0
- package/package.json +356 -0
package/dist/toolbar.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onMounted, provide, shallowRef, watch, } from 'vue';
|
|
2
|
+
import { createToolbar } from '@sectile/dom/toolbar';
|
|
3
|
+
import { Primitive } from './primitive.js';
|
|
4
|
+
import { useHostDirection } from './host-provider.js';
|
|
5
|
+
const key = Symbol('SectileToolbarRoot');
|
|
6
|
+
const partProps = { as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false } };
|
|
7
|
+
export const ToolbarRoot = defineComponent({
|
|
8
|
+
name: 'SectileToolbarRoot', inheritAttrs: false,
|
|
9
|
+
props: {
|
|
10
|
+
items: { type: Array, required: true }, modelValue: { type: String, default: undefined },
|
|
11
|
+
defaultValue: { type: String, default: null }, disabledItems: { type: Array, default: () => [] },
|
|
12
|
+
disabled: { type: Boolean, default: false }, orientation: { type: String, default: 'horizontal' },
|
|
13
|
+
label: { type: String, default: undefined }, policies: { type: Object, default: undefined },
|
|
14
|
+
as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false },
|
|
15
|
+
},
|
|
16
|
+
emits: { 'update:modelValue': (_value) => true, invoke: (_value) => true },
|
|
17
|
+
slots: Object,
|
|
18
|
+
setup(props, { attrs, emit, slots }) {
|
|
19
|
+
const direction = useHostDirection();
|
|
20
|
+
const root = shallowRef();
|
|
21
|
+
const connection = shallowRef();
|
|
22
|
+
const current = shallowRef(props.modelValue !== undefined ? props.modelValue : props.defaultValue);
|
|
23
|
+
const controlled = props.modelValue !== undefined;
|
|
24
|
+
const state = computed(() => ({ highlightedValue: props.modelValue !== undefined ? props.modelValue : current.value, disabled: props.disabled, orientation: props.orientation }));
|
|
25
|
+
const refresh = () => { if (connection.value !== undefined)
|
|
26
|
+
current.value = connection.value.getSnapshot().state.cursor.current; refreshItems(); };
|
|
27
|
+
const refreshItems = () => { if (root.value === undefined || connection.value === undefined)
|
|
28
|
+
return; root.value.querySelectorAll('[data-sectile-toolbar-id]').forEach((element) => { const id = element.dataset['sectileToolbarId']; if (id !== undefined)
|
|
29
|
+
connection.value?.setItemAttributes(element, id, props.disabledItems.includes(id)); }); };
|
|
30
|
+
const connect = () => {
|
|
31
|
+
connection.value?.disconnect();
|
|
32
|
+
if (root.value === undefined)
|
|
33
|
+
return;
|
|
34
|
+
connection.value = createToolbar({
|
|
35
|
+
root: root.value, items: props.items, disabledItems: props.disabledItems,
|
|
36
|
+
...(props.policies === undefined ? {} : { policies: props.policies }),
|
|
37
|
+
...(controlled ? { highlightedValue: props.modelValue } : { defaultHighlightedValue: current.value }),
|
|
38
|
+
disabled: props.disabled, orientation: props.orientation, direction: direction.value, ...(props.label === undefined ? {} : { label: props.label }),
|
|
39
|
+
onHighlightedValueChange: (value) => { current.value = value; emit('update:modelValue', value); },
|
|
40
|
+
onInvoke: (value) => emit('invoke', value), onUpdate: refresh,
|
|
41
|
+
});
|
|
42
|
+
refreshItems();
|
|
43
|
+
refresh();
|
|
44
|
+
};
|
|
45
|
+
provide(key, { state, disabledItems: computed(() => new Set(props.disabledItems)), register: (element, id, disabled) => connection.value?.setItemAttributes(element, id, disabled) });
|
|
46
|
+
onMounted(connect);
|
|
47
|
+
onBeforeUnmount(() => connection.value?.disconnect());
|
|
48
|
+
watch([() => props.items, () => props.disabledItems, () => props.disabled, () => props.orientation, () => props.label, () => props.policies, direction], connect);
|
|
49
|
+
watch(() => props.modelValue, (value) => { if (!controlled || value === undefined || connection.value === undefined)
|
|
50
|
+
return; const result = connection.value.syncControlledValue(value); if (!result.ok)
|
|
51
|
+
throw new TypeError(result.error.message); refresh(); });
|
|
52
|
+
return () => h(Primitive, mergeProps(attrs, {
|
|
53
|
+
as: props.as, asChild: props.asChild, elementRef: (node) => { root.value = node instanceof HTMLElement ? node : undefined; },
|
|
54
|
+
role: 'toolbar', 'aria-label': props.label, 'aria-orientation': props.orientation, 'aria-disabled': props.disabled ? 'true' : undefined,
|
|
55
|
+
dir: direction.value,
|
|
56
|
+
'data-scope': 'toolbar', 'data-part': 'root', 'data-orientation': props.orientation,
|
|
57
|
+
}), { default: () => slots['default']?.(state.value) });
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
export const ToolbarItem = defineComponent({
|
|
61
|
+
name: 'SectileToolbarItem', inheritAttrs: false,
|
|
62
|
+
props: { value: { type: String, required: true }, disabled: { type: Boolean, default: false }, as: { type: [String, Object, Function], default: 'button' }, asChild: { type: Boolean, default: false } },
|
|
63
|
+
slots: Object,
|
|
64
|
+
setup(props, { attrs, slots }) {
|
|
65
|
+
const root = useRoot();
|
|
66
|
+
const state = computed(() => ({ value: props.value, highlighted: root.state.value.highlightedValue === props.value, disabled: root.state.value.disabled || props.disabled || root.disabledItems.value.has(props.value) }));
|
|
67
|
+
return () => h(Primitive, mergeProps(attrs, {
|
|
68
|
+
as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined,
|
|
69
|
+
elementRef: (node) => { if (node instanceof HTMLElement)
|
|
70
|
+
root.register(node, props.value, state.value.disabled); },
|
|
71
|
+
disabled: state.value.disabled && props.as === 'button' ? true : undefined, 'aria-disabled': state.value.disabled ? 'true' : undefined,
|
|
72
|
+
'data-sectile-toolbar-id': props.value, 'data-scope': 'toolbar', 'data-part': 'item', 'data-highlighted': state.value.highlighted ? '' : undefined,
|
|
73
|
+
}), { default: () => slots['default']?.(state.value) });
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
export const ToolbarSeparator = defineComponent({
|
|
77
|
+
name: 'SectileToolbarSeparator', inheritAttrs: false, props: partProps,
|
|
78
|
+
setup(props, { attrs }) { const root = useRoot(); return () => h(Primitive, mergeProps(attrs, { as: props.as, asChild: props.asChild, role: 'separator', 'aria-orientation': root.state.value.orientation, 'data-scope': 'toolbar', 'data-part': 'separator' })); },
|
|
79
|
+
});
|
|
80
|
+
function useRoot() { const root = inject(key); if (root === undefined)
|
|
81
|
+
throw new TypeError('Toolbar parts must be used inside ToolbarRoot.'); return root; }
|
|
82
|
+
//# sourceMappingURL=toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../src/toolbar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type PopupFactoryOptions, type PopupPartProps, type PopupPortalProps, type PopupRootProps, type PopupRootSlotProps } from './internal/popup.js';
|
|
2
|
+
export declare const TooltipRoot: import("vue").Component;
|
|
3
|
+
export type TooltipOpenChangeHandler = PopupFactoryOptions['onOpenChange'];
|
|
4
|
+
export type TooltipPositionChangeHandler = NonNullable<PopupFactoryOptions['onPositionChange']>;
|
|
5
|
+
export declare const TooltipTrigger: import("vue").Component;
|
|
6
|
+
export declare const TooltipPortal: import("vue").Component;
|
|
7
|
+
export declare const TooltipContent: import("vue").Component;
|
|
8
|
+
export declare const TooltipArrow: import("vue").Component;
|
|
9
|
+
export type TooltipRootProps = Pick<PopupRootProps, 'open' | 'defaultOpen' | 'disabled' | 'side' | 'align' | 'sideOffset' | 'collisionPadding' | 'collisionBoundary' | 'avoidCollisions' | 'arrowPadding' | 'hideWhenDetached' | 'strategy' | 'middleware' | 'autoUpdate'>;
|
|
10
|
+
export type TooltipRootSlotProps = PopupRootSlotProps;
|
|
11
|
+
export type TooltipPartProps = PopupPartProps;
|
|
12
|
+
export type TooltipPortalProps = PopupPortalProps;
|
|
13
|
+
//# sourceMappingURL=tooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAmB7B,eAAO,MAAM,WAAW,yBAAa,CAAC;AACtC,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC3E,MAAM,MAAM,4BAA4B,GAAG,WAAW,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAChG,eAAO,MAAM,cAAc,yBAAgB,CAAC;AAC5C,eAAO,MAAM,aAAa,yBAAe,CAAC;AAC1C,eAAO,MAAM,cAAc,yBAAgB,CAAC;AAC5C,eAAO,MAAM,YAAY,yBAAc,CAAC;AACxC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAC9C,MAAM,GAAG,aAAa,GAAG,UAAU,GACnC,MAAM,GAAG,OAAO,GAAG,YAAY,GAC/B,kBAAkB,GAAG,mBAAmB,GAAG,iBAAiB,GAC5D,cAAc,GAAG,kBAAkB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CACjF,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC"}
|
package/dist/tooltip.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createTooltip } from '@sectile/dom/tooltip';
|
|
2
|
+
import { createPopupComponents, } from './internal/popup.js';
|
|
3
|
+
const parts = createPopupComponents({
|
|
4
|
+
scope: 'tooltip', role: 'tooltip', modal: false, triggerMode: 'focus-hover',
|
|
5
|
+
create: (options) => {
|
|
6
|
+
const { modal: _modal, label: _label, labelledBy: _labelledBy, describedBy: _describedBy, autoFocus: _autoFocus, restoreFocus: _restoreFocus, trapFocus: _trapFocus, ...tooltipOptions } = options;
|
|
7
|
+
return createTooltip({ ...tooltipOptions, id: options.root.id });
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
export const TooltipRoot = parts.Root;
|
|
11
|
+
export const TooltipTrigger = parts.Trigger;
|
|
12
|
+
export const TooltipPortal = parts.Portal;
|
|
13
|
+
export const TooltipContent = parts.Content;
|
|
14
|
+
export const TooltipArrow = parts.Arrow;
|
|
15
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+C,MAAM,sBAAsB,CAAC;AAClG,OAAO,EACL,qBAAqB,GAMtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,KAAK,GAAG,qBAAqB,CAAC;IAClC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa;IAC3E,MAAM,EAAE,CAAC,OAA4B,EAAqB,EAAE;QAC1D,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EACvB,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,aAAa,EAC3B,SAAS,EAAE,UAAU,EACrB,GAAG,cAAc,EAClB,GAAG,OAAO,CAAC;QACZ,OAAO,aAAa,CAAC,EAAE,GAAG,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAoB,CAAC,CAAC;IACrF,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;AAGtC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
|
+
import { type TreeGridEditMode, type TreeGridPolicies, type TreeGridRowInput } from '@sectile/dom/tree-grid';
|
|
3
|
+
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
+
export interface TreeGridRootProps {
|
|
5
|
+
readonly rows: readonly TreeGridRowInput<string, string>[];
|
|
6
|
+
readonly getCellValue: (id: string) => string;
|
|
7
|
+
readonly setCellValue: (id: string, value: string) => void;
|
|
8
|
+
readonly modelValue?: string | null;
|
|
9
|
+
readonly defaultValue?: string | null;
|
|
10
|
+
readonly expandedValue?: readonly string[];
|
|
11
|
+
readonly defaultExpandedValue?: readonly string[];
|
|
12
|
+
readonly highlightedValue?: string | null;
|
|
13
|
+
readonly defaultHighlightedValue?: string | null;
|
|
14
|
+
readonly editMode?: TreeGridEditMode;
|
|
15
|
+
readonly defaultEditMode?: TreeGridEditMode;
|
|
16
|
+
readonly disabled?: boolean;
|
|
17
|
+
readonly?: boolean;
|
|
18
|
+
readonly policies?: TreeGridPolicies<string>;
|
|
19
|
+
readonly as?: PrimitiveAs;
|
|
20
|
+
readonly asChild?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export type TreeGridCellValueResolver = NonNullable<TreeGridRootProps['getCellValue']>;
|
|
23
|
+
export type TreeGridCellValueSetter = NonNullable<TreeGridRootProps['setCellValue']>;
|
|
24
|
+
export interface TreeGridRootSlotProps {
|
|
25
|
+
readonly value: string | null;
|
|
26
|
+
readonly expandedValue: readonly string[];
|
|
27
|
+
readonly highlightedValue: string | null;
|
|
28
|
+
readonly editMode: TreeGridEditMode;
|
|
29
|
+
readonly disabled: boolean;
|
|
30
|
+
readonly: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface TreeGridRowSlotProps extends TreeGridRootSlotProps {
|
|
33
|
+
readonly value: string;
|
|
34
|
+
readonly expanded: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface TreeGridCellSlotProps extends TreeGridRootSlotProps {
|
|
37
|
+
readonly value: string;
|
|
38
|
+
readonly selected: boolean;
|
|
39
|
+
readonly highlighted: boolean;
|
|
40
|
+
readonly editing: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface TreeGridPartProps {
|
|
43
|
+
readonly as?: PrimitiveAs;
|
|
44
|
+
readonly asChild?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare const TreeGridRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
47
|
+
rows: {
|
|
48
|
+
type: PropType<readonly TreeGridRowInput<string, string>[]>;
|
|
49
|
+
required: true;
|
|
50
|
+
};
|
|
51
|
+
getCellValue: {
|
|
52
|
+
type: PropType<TreeGridCellValueResolver>;
|
|
53
|
+
required: true;
|
|
54
|
+
};
|
|
55
|
+
setCellValue: {
|
|
56
|
+
type: PropType<TreeGridCellValueSetter>;
|
|
57
|
+
required: true;
|
|
58
|
+
};
|
|
59
|
+
modelValue: {
|
|
60
|
+
type: PropType<string | null>;
|
|
61
|
+
default: undefined;
|
|
62
|
+
};
|
|
63
|
+
defaultValue: {
|
|
64
|
+
type: PropType<string | null>;
|
|
65
|
+
default: null;
|
|
66
|
+
};
|
|
67
|
+
expandedValue: {
|
|
68
|
+
type: PropType<readonly string[]>;
|
|
69
|
+
default: undefined;
|
|
70
|
+
};
|
|
71
|
+
defaultExpandedValue: {
|
|
72
|
+
type: PropType<readonly string[]>;
|
|
73
|
+
default: () => never[];
|
|
74
|
+
};
|
|
75
|
+
highlightedValue: {
|
|
76
|
+
type: PropType<string | null>;
|
|
77
|
+
default: undefined;
|
|
78
|
+
};
|
|
79
|
+
defaultHighlightedValue: {
|
|
80
|
+
type: PropType<string | null>;
|
|
81
|
+
default: null;
|
|
82
|
+
};
|
|
83
|
+
editMode: {
|
|
84
|
+
type: PropType<TreeGridEditMode>;
|
|
85
|
+
default: undefined;
|
|
86
|
+
};
|
|
87
|
+
defaultEditMode: {
|
|
88
|
+
type: PropType<TreeGridEditMode>;
|
|
89
|
+
default: string;
|
|
90
|
+
};
|
|
91
|
+
disabled: {
|
|
92
|
+
type: BooleanConstructor;
|
|
93
|
+
default: boolean;
|
|
94
|
+
};
|
|
95
|
+
readonly: {
|
|
96
|
+
type: BooleanConstructor;
|
|
97
|
+
default: boolean;
|
|
98
|
+
};
|
|
99
|
+
policies: {
|
|
100
|
+
type: PropType<TreeGridPolicies<string>>;
|
|
101
|
+
default: undefined;
|
|
102
|
+
};
|
|
103
|
+
as: {
|
|
104
|
+
type: PropType<PrimitiveAs>;
|
|
105
|
+
default: string;
|
|
106
|
+
};
|
|
107
|
+
asChild: {
|
|
108
|
+
type: BooleanConstructor;
|
|
109
|
+
default: boolean;
|
|
110
|
+
};
|
|
111
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
112
|
+
'update:modelValue': (_value: string | null) => boolean;
|
|
113
|
+
'update:expandedValue': (_value: readonly string[]) => boolean;
|
|
114
|
+
'update:highlightedValue': (_value: string | null) => boolean;
|
|
115
|
+
'update:editMode': (_value: TreeGridEditMode) => boolean;
|
|
116
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
117
|
+
rows: {
|
|
118
|
+
type: PropType<readonly TreeGridRowInput<string, string>[]>;
|
|
119
|
+
required: true;
|
|
120
|
+
};
|
|
121
|
+
getCellValue: {
|
|
122
|
+
type: PropType<TreeGridCellValueResolver>;
|
|
123
|
+
required: true;
|
|
124
|
+
};
|
|
125
|
+
setCellValue: {
|
|
126
|
+
type: PropType<TreeGridCellValueSetter>;
|
|
127
|
+
required: true;
|
|
128
|
+
};
|
|
129
|
+
modelValue: {
|
|
130
|
+
type: PropType<string | null>;
|
|
131
|
+
default: undefined;
|
|
132
|
+
};
|
|
133
|
+
defaultValue: {
|
|
134
|
+
type: PropType<string | null>;
|
|
135
|
+
default: null;
|
|
136
|
+
};
|
|
137
|
+
expandedValue: {
|
|
138
|
+
type: PropType<readonly string[]>;
|
|
139
|
+
default: undefined;
|
|
140
|
+
};
|
|
141
|
+
defaultExpandedValue: {
|
|
142
|
+
type: PropType<readonly string[]>;
|
|
143
|
+
default: () => never[];
|
|
144
|
+
};
|
|
145
|
+
highlightedValue: {
|
|
146
|
+
type: PropType<string | null>;
|
|
147
|
+
default: undefined;
|
|
148
|
+
};
|
|
149
|
+
defaultHighlightedValue: {
|
|
150
|
+
type: PropType<string | null>;
|
|
151
|
+
default: null;
|
|
152
|
+
};
|
|
153
|
+
editMode: {
|
|
154
|
+
type: PropType<TreeGridEditMode>;
|
|
155
|
+
default: undefined;
|
|
156
|
+
};
|
|
157
|
+
defaultEditMode: {
|
|
158
|
+
type: PropType<TreeGridEditMode>;
|
|
159
|
+
default: string;
|
|
160
|
+
};
|
|
161
|
+
disabled: {
|
|
162
|
+
type: BooleanConstructor;
|
|
163
|
+
default: boolean;
|
|
164
|
+
};
|
|
165
|
+
readonly: {
|
|
166
|
+
type: BooleanConstructor;
|
|
167
|
+
default: boolean;
|
|
168
|
+
};
|
|
169
|
+
policies: {
|
|
170
|
+
type: PropType<TreeGridPolicies<string>>;
|
|
171
|
+
default: undefined;
|
|
172
|
+
};
|
|
173
|
+
as: {
|
|
174
|
+
type: PropType<PrimitiveAs>;
|
|
175
|
+
default: string;
|
|
176
|
+
};
|
|
177
|
+
asChild: {
|
|
178
|
+
type: BooleanConstructor;
|
|
179
|
+
default: boolean;
|
|
180
|
+
};
|
|
181
|
+
}>> & Readonly<{
|
|
182
|
+
"onUpdate:editMode"?: (_value: TreeGridEditMode) => any;
|
|
183
|
+
"onUpdate:expandedValue"?: (_value: readonly string[]) => any;
|
|
184
|
+
"onUpdate:highlightedValue"?: (_value: string | null) => any;
|
|
185
|
+
"onUpdate:modelValue"?: (_value: string | null) => any;
|
|
186
|
+
}>, {
|
|
187
|
+
modelValue: string | null;
|
|
188
|
+
defaultValue: string | null;
|
|
189
|
+
expandedValue: readonly string[];
|
|
190
|
+
defaultExpandedValue: readonly string[];
|
|
191
|
+
highlightedValue: string | null;
|
|
192
|
+
defaultHighlightedValue: string | null;
|
|
193
|
+
editMode: TreeGridEditMode;
|
|
194
|
+
defaultEditMode: TreeGridEditMode;
|
|
195
|
+
disabled: boolean;
|
|
196
|
+
readonly: boolean;
|
|
197
|
+
policies: TreeGridPolicies<string>;
|
|
198
|
+
as: PrimitiveAs;
|
|
199
|
+
asChild: boolean;
|
|
200
|
+
}, SlotsType<{
|
|
201
|
+
default: (props: TreeGridRootSlotProps) => VNodeChild;
|
|
202
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
203
|
+
export type TreeGridValueChangeHandler = (value: string | null) => void;
|
|
204
|
+
export type TreeGridExpandedValueChangeHandler = (value: readonly string[]) => void;
|
|
205
|
+
export type TreeGridHighlightedValueChangeHandler = (value: string | null) => void;
|
|
206
|
+
export type TreeGridEditModeChangeHandler = (value: TreeGridEditMode) => void;
|
|
207
|
+
export declare const TreeGridRow: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
208
|
+
as: {
|
|
209
|
+
type: PropType<PrimitiveAs>;
|
|
210
|
+
default: string;
|
|
211
|
+
};
|
|
212
|
+
asChild: {
|
|
213
|
+
type: BooleanConstructor;
|
|
214
|
+
default: boolean;
|
|
215
|
+
};
|
|
216
|
+
value: {
|
|
217
|
+
type: StringConstructor;
|
|
218
|
+
required: true;
|
|
219
|
+
};
|
|
220
|
+
rowIndex: {
|
|
221
|
+
type: NumberConstructor;
|
|
222
|
+
required: true;
|
|
223
|
+
};
|
|
224
|
+
level: {
|
|
225
|
+
type: NumberConstructor;
|
|
226
|
+
default: number;
|
|
227
|
+
};
|
|
228
|
+
expandable: {
|
|
229
|
+
type: BooleanConstructor;
|
|
230
|
+
default: boolean;
|
|
231
|
+
};
|
|
232
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
233
|
+
as: {
|
|
234
|
+
type: PropType<PrimitiveAs>;
|
|
235
|
+
default: string;
|
|
236
|
+
};
|
|
237
|
+
asChild: {
|
|
238
|
+
type: BooleanConstructor;
|
|
239
|
+
default: boolean;
|
|
240
|
+
};
|
|
241
|
+
value: {
|
|
242
|
+
type: StringConstructor;
|
|
243
|
+
required: true;
|
|
244
|
+
};
|
|
245
|
+
rowIndex: {
|
|
246
|
+
type: NumberConstructor;
|
|
247
|
+
required: true;
|
|
248
|
+
};
|
|
249
|
+
level: {
|
|
250
|
+
type: NumberConstructor;
|
|
251
|
+
default: number;
|
|
252
|
+
};
|
|
253
|
+
expandable: {
|
|
254
|
+
type: BooleanConstructor;
|
|
255
|
+
default: boolean;
|
|
256
|
+
};
|
|
257
|
+
}>> & Readonly<{}>, {
|
|
258
|
+
as: PrimitiveAs;
|
|
259
|
+
asChild: boolean;
|
|
260
|
+
level: number;
|
|
261
|
+
expandable: boolean;
|
|
262
|
+
}, SlotsType<{
|
|
263
|
+
default: (props: TreeGridRowSlotProps) => VNodeChild;
|
|
264
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
265
|
+
export declare const TreeGridCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
266
|
+
as: {
|
|
267
|
+
type: PropType<PrimitiveAs>;
|
|
268
|
+
default: string;
|
|
269
|
+
};
|
|
270
|
+
asChild: {
|
|
271
|
+
type: BooleanConstructor;
|
|
272
|
+
default: boolean;
|
|
273
|
+
};
|
|
274
|
+
value: {
|
|
275
|
+
type: StringConstructor;
|
|
276
|
+
required: true;
|
|
277
|
+
};
|
|
278
|
+
columnIndex: {
|
|
279
|
+
type: NumberConstructor;
|
|
280
|
+
required: true;
|
|
281
|
+
};
|
|
282
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
283
|
+
as: {
|
|
284
|
+
type: PropType<PrimitiveAs>;
|
|
285
|
+
default: string;
|
|
286
|
+
};
|
|
287
|
+
asChild: {
|
|
288
|
+
type: BooleanConstructor;
|
|
289
|
+
default: boolean;
|
|
290
|
+
};
|
|
291
|
+
value: {
|
|
292
|
+
type: StringConstructor;
|
|
293
|
+
required: true;
|
|
294
|
+
};
|
|
295
|
+
columnIndex: {
|
|
296
|
+
type: NumberConstructor;
|
|
297
|
+
required: true;
|
|
298
|
+
};
|
|
299
|
+
}>> & Readonly<{}>, {
|
|
300
|
+
as: PrimitiveAs;
|
|
301
|
+
asChild: boolean;
|
|
302
|
+
}, SlotsType<{
|
|
303
|
+
default: (props: TreeGridCellSlotProps) => VNodeChild;
|
|
304
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
305
|
+
export declare const TreeGridDisclosure: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
306
|
+
for: {
|
|
307
|
+
type: StringConstructor;
|
|
308
|
+
required: true;
|
|
309
|
+
};
|
|
310
|
+
as: {
|
|
311
|
+
type: PropType<PrimitiveAs>;
|
|
312
|
+
default: string;
|
|
313
|
+
};
|
|
314
|
+
asChild: {
|
|
315
|
+
type: BooleanConstructor;
|
|
316
|
+
default: boolean;
|
|
317
|
+
};
|
|
318
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
319
|
+
for: {
|
|
320
|
+
type: StringConstructor;
|
|
321
|
+
required: true;
|
|
322
|
+
};
|
|
323
|
+
as: {
|
|
324
|
+
type: PropType<PrimitiveAs>;
|
|
325
|
+
default: string;
|
|
326
|
+
};
|
|
327
|
+
asChild: {
|
|
328
|
+
type: BooleanConstructor;
|
|
329
|
+
default: boolean;
|
|
330
|
+
};
|
|
331
|
+
}>> & Readonly<{}>, {
|
|
332
|
+
as: PrimitiveAs;
|
|
333
|
+
asChild: boolean;
|
|
334
|
+
}, SlotsType<{
|
|
335
|
+
default: (props: TreeGridRowSlotProps) => VNodeChild;
|
|
336
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
337
|
+
export declare const TreeGridEditor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
338
|
+
for: {
|
|
339
|
+
type: StringConstructor;
|
|
340
|
+
required: true;
|
|
341
|
+
};
|
|
342
|
+
label: {
|
|
343
|
+
type: StringConstructor;
|
|
344
|
+
default: undefined;
|
|
345
|
+
};
|
|
346
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
347
|
+
for: {
|
|
348
|
+
type: StringConstructor;
|
|
349
|
+
required: true;
|
|
350
|
+
};
|
|
351
|
+
label: {
|
|
352
|
+
type: StringConstructor;
|
|
353
|
+
default: undefined;
|
|
354
|
+
};
|
|
355
|
+
}>> & Readonly<{}>, {
|
|
356
|
+
label: string;
|
|
357
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
358
|
+
export type { TreeGridEditMode, TreeGridPolicies, TreeGridRowInput };
|
|
359
|
+
//# sourceMappingURL=tree-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-grid.d.ts","sourceRoot":"","sources":["../src/tree-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAEgC,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EACpF,MAAM,KAAK,CAAC;AACb,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC3D,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AACvF,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AACrF,MAAM,WAAW,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AACjP,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAC1H,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AACrL,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;AAY5F,eAAO,MAAM,YAAY;;cAGE,QAAQ,CAAC,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;;;;cAC1C,QAAQ,CAAC,yBAAyB,CAAC;;;;cAAsD,QAAQ,CAAC,uBAAuB,CAAC;;;;QAC9I,IAAI,EAAY,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAAE,OAAO;;;QAA+B,IAAI,EAAY,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAAE,OAAO;;;QAC5H,IAAI,EAAW,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC;QAAE,OAAO;;;QAAuC,IAAI,EAAW,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC;QAAE,OAAO;;;QAC1I,IAAI,EAAY,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAAE,OAAO;;;QAA0C,IAAI,EAAY,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAAE,OAAO;;;QAClJ,IAAI,EAAY,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO;;;QAAkC,IAAI,EAAY,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO;;;QACxI,IAAI;QAAW,OAAO;;;QAAuB,IAAI;QAAW,OAAO;;;QAAuB,IAAI,EAAY,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO;;;QAC3J,IAAI,EAAgC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO;;;QAAsB,IAAI;QAAW,OAAO;;UAoDzG,UAAU;kCAlDgB,MAAM,GAAG,IAAI,KAAG,OAAO;qCAA2C,SAAS,MAAM,EAAE,KAAG,OAAO;wCAA8C,MAAM,GAAG,IAAI,KAAG,OAAO;gCAAsC,gBAAgB,KAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACnO,CAAC,KAAK,EAAE,qBAAqB,KAAK,UAAU;yEAmDlF,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACxE,MAAM,MAAM,kCAAkC,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;AACpF,MAAM,MAAM,qCAAqC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACnF,MAAM,MAAM,6BAA6B,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE9E,eAAO,MAAM,WAAW;;QAzEE,IAAI,EAAgC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO;;;QAAsB,IAAI;QAAW,OAAO;;;;;;;;;;;QA2E/B,IAAI;QAAU,OAAO;;;QAAqB,IAAI;QAAW,OAAO;;UAE6E,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aADxN,CAAC,KAAK,EAAE,oBAAoB,KAAK,UAAU;yEAMjF,CAAC;AAEH,eAAO,MAAM,YAAY;;QApFC,IAAI,EAAgC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO;;;QAAsB,IAAI;QAAW,OAAO;;;;;;;;;;UAwFyQ,UAAU;;;;;;;;;;;;;;;;;;;;;aADnX,CAAC,KAAK,EAAE,qBAAqB,KAAK,UAAU;yEAMlF,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;QAAmI,IAAI,EAAgC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO;;;QAAuB,IAAI;QAAW,OAAO;;UAA0V,UAAU;;;;;;;;;;;;;;;;;aAAjT,CAAC,KAAK,EAAE,oBAAoB,KAAK,UAAU;yEAAuxB,CAAC;AAEvoC,eAAO,MAAM,cAAc;;;;;;QAEgC,IAAI;QAAU,OAAO;;UAC2H,UAAU;;;;;;;;;;;4EACnN,CAAC;AAIH,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onMounted, provide, shallowRef, watch, } from 'vue';
|
|
2
|
+
import { createTreeGrid, } from '@sectile/dom/tree-grid';
|
|
3
|
+
import { Primitive } from './primitive.js';
|
|
4
|
+
const key = Symbol('SectileTreeGridRoot');
|
|
5
|
+
const partProps = { as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false } };
|
|
6
|
+
export const TreeGridRoot = defineComponent({
|
|
7
|
+
name: 'SectileTreeGridRoot', inheritAttrs: false,
|
|
8
|
+
props: {
|
|
9
|
+
rows: { type: Array, required: true },
|
|
10
|
+
getCellValue: { type: Function, required: true }, setCellValue: { type: Function, required: true },
|
|
11
|
+
modelValue: { type: String, default: undefined }, defaultValue: { type: String, default: null },
|
|
12
|
+
expandedValue: { type: Array, default: undefined }, defaultExpandedValue: { type: Array, default: () => [] },
|
|
13
|
+
highlightedValue: { type: String, default: undefined }, defaultHighlightedValue: { type: String, default: null },
|
|
14
|
+
editMode: { type: String, default: undefined }, defaultEditMode: { type: String, default: 'navigation' },
|
|
15
|
+
disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, policies: { type: Object, default: undefined },
|
|
16
|
+
as: { type: [String, Object, Function], default: 'div' }, asChild: { type: Boolean, default: false },
|
|
17
|
+
},
|
|
18
|
+
emits: { 'update:modelValue': (_value) => true, 'update:expandedValue': (_value) => true, 'update:highlightedValue': (_value) => true, 'update:editMode': (_value) => true },
|
|
19
|
+
slots: Object,
|
|
20
|
+
setup(props, { attrs, emit, slots }) {
|
|
21
|
+
const element = shallowRef();
|
|
22
|
+
const connection = shallowRef();
|
|
23
|
+
const localValue = shallowRef(props.modelValue !== undefined ? props.modelValue : props.defaultValue);
|
|
24
|
+
const localExpanded = shallowRef(props.expandedValue !== undefined ? props.expandedValue : props.defaultExpandedValue);
|
|
25
|
+
const localHighlight = shallowRef(props.highlightedValue !== undefined ? props.highlightedValue : props.defaultHighlightedValue);
|
|
26
|
+
const localEditMode = shallowRef(props.editMode ?? props.defaultEditMode);
|
|
27
|
+
const controlled = { value: props.modelValue !== undefined, expanded: props.expandedValue !== undefined, highlighted: props.highlightedValue !== undefined, editMode: props.editMode !== undefined };
|
|
28
|
+
const state = computed(() => Object.freeze({
|
|
29
|
+
value: props.modelValue !== undefined ? props.modelValue : localValue.value,
|
|
30
|
+
expandedValue: props.expandedValue !== undefined ? props.expandedValue : localExpanded.value,
|
|
31
|
+
highlightedValue: props.highlightedValue !== undefined ? props.highlightedValue : localHighlight.value,
|
|
32
|
+
editMode: props.editMode ?? localEditMode.value, disabled: props.disabled, readonly: props.readonly,
|
|
33
|
+
}));
|
|
34
|
+
const refreshParts = () => {
|
|
35
|
+
if (element.value === undefined || connection.value === undefined)
|
|
36
|
+
return;
|
|
37
|
+
connection.value.setGridAttributes(props.rows.length, Math.max(0, ...props.rows.map((row) => row.cells.length)));
|
|
38
|
+
element.value.querySelectorAll('[data-sectile-tree-grid-row]').forEach((node) => connection.value?.setRowAttributes(node, { rowIndex: numberData(node.dataset['rowIndex'], 1), level: numberData(node.dataset['level'], 1), ...(node.dataset['expandable'] === undefined ? {} : { expanded: node.dataset['expanded'] !== undefined }) }));
|
|
39
|
+
element.value.querySelectorAll('[data-sectile-tree-grid-cell]').forEach((node) => { const id = node.dataset['sectileTreeGridCell']; if (id !== undefined)
|
|
40
|
+
connection.value?.setCellAttributes(node, { id, columnIndex: numberData(node.dataset['columnIndex'], 1) }); });
|
|
41
|
+
element.value.querySelectorAll('[data-sectile-tree-grid-disclosure]').forEach((node) => { const id = node.dataset['sectileTreeGridDisclosure']; if (id !== undefined)
|
|
42
|
+
connection.value?.setDisclosureAttributes(node, id); });
|
|
43
|
+
element.value.querySelectorAll('[data-sectile-tree-grid-editor]').forEach((node) => { const id = node.dataset['sectileTreeGridEditor']; if (id !== undefined)
|
|
44
|
+
connection.value?.bindEditor(node, { id, ...(node.getAttribute('aria-label') === null ? {} : { label: node.getAttribute('aria-label') }) }); });
|
|
45
|
+
};
|
|
46
|
+
const refresh = () => { const snapshot = connection.value?.getSnapshot().state; if (snapshot === undefined)
|
|
47
|
+
return; localValue.value = snapshot.selection.selected[0] ?? null; localExpanded.value = snapshot.expansion.ids; localHighlight.value = snapshot.cursor.current; localEditMode.value = snapshot.editMode; refreshParts(); };
|
|
48
|
+
const connect = () => {
|
|
49
|
+
connection.value?.disconnect();
|
|
50
|
+
if (element.value === undefined)
|
|
51
|
+
return;
|
|
52
|
+
connection.value = createTreeGrid({
|
|
53
|
+
root: element.value, rows: props.rows, getCellValue: props.getCellValue, setCellValue: props.setCellValue,
|
|
54
|
+
...(controlled.value ? { value: props.modelValue } : { defaultValue: localValue.value }),
|
|
55
|
+
...(controlled.expanded ? { expandedValue: props.expandedValue } : { defaultExpandedValue: localExpanded.value }),
|
|
56
|
+
...(controlled.highlighted ? { highlightedValue: props.highlightedValue } : { defaultHighlightedValue: localHighlight.value }),
|
|
57
|
+
...(controlled.editMode ? { editMode: props.editMode } : { defaultEditMode: localEditMode.value }),
|
|
58
|
+
disabled: props.disabled, readOnly: props.readonly, ...(props.policies === undefined ? {} : { policies: props.policies }),
|
|
59
|
+
onValueChange: ({ value }) => { localValue.value = value; emit('update:modelValue', value); }, onExpandedValueChange: ({ value }) => { localExpanded.value = value; emit('update:expandedValue', value); },
|
|
60
|
+
onHighlightedValueChange: ({ value }) => { localHighlight.value = value; emit('update:highlightedValue', value); }, onEditModeChange: ({ value }) => { localEditMode.value = value; emit('update:editMode', value); }, onUpdate: refresh,
|
|
61
|
+
});
|
|
62
|
+
refreshParts();
|
|
63
|
+
refresh();
|
|
64
|
+
};
|
|
65
|
+
provide(key, {
|
|
66
|
+
state, registerRow: (node, rowIndex, level, expanded) => connection.value?.setRowAttributes(node, { rowIndex, level, ...(expanded === undefined ? {} : { expanded }) }),
|
|
67
|
+
registerCell: (node, id, columnIndex) => connection.value?.setCellAttributes(node, { id, columnIndex }), registerDisclosure: (node, id) => connection.value?.setDisclosureAttributes(node, id),
|
|
68
|
+
registerEditor: (node, id, label) => connection.value?.bindEditor(node, { id, ...(label === undefined ? {} : { label }) }),
|
|
69
|
+
});
|
|
70
|
+
onMounted(connect);
|
|
71
|
+
onBeforeUnmount(() => connection.value?.disconnect());
|
|
72
|
+
watch([() => props.rows, () => props.getCellValue, () => props.setCellValue, () => props.disabled, () => props.readonly, () => props.policies], connect);
|
|
73
|
+
watch([() => props.modelValue, () => props.expandedValue, () => props.highlightedValue, () => props.editMode], () => {
|
|
74
|
+
if (connection.value === undefined)
|
|
75
|
+
return;
|
|
76
|
+
const result = connection.value.syncControlledValues({ ...(controlled.value ? { value: props.modelValue } : {}), ...(controlled.expanded ? { expandedValue: props.expandedValue } : {}), ...(controlled.highlighted ? { highlightedValue: props.highlightedValue } : {}), ...(controlled.editMode ? { editMode: props.editMode } : {}) });
|
|
77
|
+
if (!result.ok)
|
|
78
|
+
throw new TypeError(result.error.message);
|
|
79
|
+
refresh();
|
|
80
|
+
});
|
|
81
|
+
return () => h(Primitive, mergeProps(attrs, { as: props.as, asChild: props.asChild, elementRef: (node) => { element.value = node instanceof HTMLElement ? node : undefined; }, 'data-scope': 'tree-grid', 'data-part': 'root', 'data-edit-mode': state.value.editMode }), { default: () => slots['default']?.(state.value) });
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
export const TreeGridRow = defineComponent({
|
|
85
|
+
name: 'SectileTreeGridRow', inheritAttrs: false,
|
|
86
|
+
props: { value: { type: String, required: true }, rowIndex: { type: Number, required: true }, level: { type: Number, default: 1 }, expandable: { type: Boolean, default: false }, ...partProps },
|
|
87
|
+
slots: Object,
|
|
88
|
+
setup(props, { attrs, slots }) {
|
|
89
|
+
const root = useRoot('TreeGridRow');
|
|
90
|
+
const state = computed(() => ({ ...root.state.value, value: props.value, expanded: root.state.value.expandedValue.includes(props.value) }));
|
|
91
|
+
return () => h(Primitive, mergeProps(attrs, {
|
|
92
|
+
as: props.as, asChild: props.asChild, elementRef: (node) => { if (node instanceof HTMLElement)
|
|
93
|
+
root.registerRow(node, props.rowIndex, props.level, props.expandable ? state.value.expanded : undefined); },
|
|
94
|
+
'data-sectile-tree-grid-row': props.value, 'data-row-index': props.rowIndex, 'data-level': props.level, 'data-expandable': props.expandable ? '' : undefined,
|
|
95
|
+
'data-expanded': props.expandable && state.value.expanded ? '' : undefined, 'data-scope': 'tree-grid', 'data-part': 'row',
|
|
96
|
+
}), { default: () => slots['default']?.(state.value) });
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
export const TreeGridCell = defineComponent({
|
|
100
|
+
name: 'SectileTreeGridCell', inheritAttrs: false,
|
|
101
|
+
props: { value: { type: String, required: true }, columnIndex: { type: Number, required: true }, ...partProps },
|
|
102
|
+
slots: Object,
|
|
103
|
+
setup(props, { attrs, slots }) {
|
|
104
|
+
const root = useRoot('TreeGridCell');
|
|
105
|
+
const state = computed(() => ({ ...root.state.value, value: props.value, selected: root.state.value.value === props.value, highlighted: root.state.value.highlightedValue === props.value, editing: root.state.value.highlightedValue === props.value && root.state.value.editMode === 'editing' }));
|
|
106
|
+
return () => h(Primitive, mergeProps(attrs, {
|
|
107
|
+
as: props.as, asChild: props.asChild, elementRef: (node) => { if (node instanceof HTMLElement)
|
|
108
|
+
root.registerCell(node, props.value, props.columnIndex); },
|
|
109
|
+
'data-sectile-tree-grid-cell': props.value, 'data-column-index': props.columnIndex, 'data-scope': 'tree-grid', 'data-part': 'cell',
|
|
110
|
+
'data-selected': state.value.selected ? '' : undefined, 'data-highlighted': state.value.highlighted ? '' : undefined, 'data-editing': state.value.editing ? '' : undefined,
|
|
111
|
+
}), { default: () => slots['default']?.(state.value) });
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
export const TreeGridDisclosure = defineComponent({ name: 'SectileTreeGridDisclosure', inheritAttrs: false, props: { for: { type: String, required: true }, as: { type: [String, Object, Function], default: 'span' }, asChild: { type: Boolean, default: false } }, slots: Object, setup(props, { attrs, slots }) { const root = useRoot('TreeGridDisclosure'); const state = computed(() => ({ ...root.state.value, value: props.for, expanded: root.state.value.expandedValue.includes(props.for) })); return () => h(Primitive, mergeProps(attrs, { as: props.as, asChild: props.asChild, type: props.as === 'button' ? 'button' : undefined, disabled: props.as === 'button' ? root.state.value.disabled : undefined, elementRef: (node) => { if (node instanceof HTMLElement)
|
|
115
|
+
root.registerDisclosure(node, props.for); }, 'data-sectile-tree-grid-disclosure': props.for, 'data-scope': 'tree-grid', 'data-part': 'disclosure', 'data-state': state.value.expanded ? 'open' : 'closed' }), { default: () => slots['default']?.(state.value) }); } });
|
|
116
|
+
export const TreeGridEditor = defineComponent({
|
|
117
|
+
name: 'SectileTreeGridEditor', inheritAttrs: false,
|
|
118
|
+
props: { for: { type: String, required: true }, label: { type: String, default: undefined } },
|
|
119
|
+
setup(props, { attrs }) { const root = useRoot('TreeGridEditor'); const editing = computed(() => root.state.value.highlightedValue === props.for && root.state.value.editMode === 'editing'); return () => h('input', mergeProps(attrs, { ref: (node) => { if (node instanceof HTMLInputElement)
|
|
120
|
+
root.registerEditor(node, props.for, props.label); }, hidden: !editing.value, disabled: root.state.value.disabled, readonly: root.state.value.readonly, 'aria-label': props.label, 'data-sectile-tree-grid-editor': props.for, 'data-scope': 'tree-grid', 'data-part': 'editor' })); },
|
|
121
|
+
});
|
|
122
|
+
function numberData(value, fallback) { const parsed = Number(value); return Number.isFinite(parsed) ? parsed : fallback; }
|
|
123
|
+
function useRoot(part) { const root = inject(key); if (root === undefined)
|
|
124
|
+
throw new TypeError(`${part} must be used inside TreeGridRoot.`); return root; }
|
|
125
|
+
//# sourceMappingURL=tree-grid.js.map
|