@sectile/dom 0.2.0 → 0.3.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/accordion.d.ts +91 -0
- package/dist/accordion.d.ts.map +1 -0
- package/dist/accordion.js +289 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert-dialog.d.ts +40 -0
- package/dist/alert-dialog.d.ts.map +1 -0
- package/dist/alert-dialog.js +14 -0
- package/dist/alert-dialog.js.map +1 -0
- package/dist/calendar.d.ts +98 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +296 -0
- package/dist/calendar.js.map +1 -0
- package/dist/carousel.d.ts +64 -0
- package/dist/carousel.d.ts.map +1 -0
- package/dist/carousel.js +290 -0
- package/dist/carousel.js.map +1 -0
- package/dist/cascade-select.d.ts +61 -0
- package/dist/cascade-select.d.ts.map +1 -0
- package/dist/cascade-select.js +175 -0
- package/dist/cascade-select.js.map +1 -0
- package/dist/checkbox-group.d.ts +22 -0
- package/dist/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox-group.js +32 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.d.ts +64 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +63 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/color-picker.d.ts +54 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +316 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/combobox.d.ts +129 -0
- package/dist/combobox.d.ts.map +1 -0
- package/dist/combobox.js +397 -0
- package/dist/combobox.js.map +1 -0
- package/dist/date-field.d.ts +42 -0
- package/dist/date-field.d.ts.map +1 -0
- package/dist/date-field.js +91 -0
- package/dist/date-field.js.map +1 -0
- package/dist/date-picker.d.ts +52 -0
- package/dist/date-picker.d.ts.map +1 -0
- package/dist/date-picker.js +127 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/date-range-field.d.ts +48 -0
- package/dist/date-range-field.d.ts.map +1 -0
- package/dist/date-range-field.js +114 -0
- package/dist/date-range-field.js.map +1 -0
- package/dist/date-range-picker.d.ts +52 -0
- package/dist/date-range-picker.d.ts.map +1 -0
- package/dist/date-range-picker.js +69 -0
- package/dist/date-range-picker.js.map +1 -0
- package/dist/date-time-field.d.ts +42 -0
- package/dist/date-time-field.d.ts.map +1 -0
- package/dist/date-time-field.js +166 -0
- package/dist/date-time-field.js.map +1 -0
- package/dist/date-time-picker.d.ts +54 -0
- package/dist/date-time-picker.d.ts.map +1 -0
- package/dist/date-time-picker.js +295 -0
- package/dist/date-time-picker.js.map +1 -0
- package/dist/date-time-range-picker.d.ts +57 -0
- package/dist/date-time-range-picker.d.ts.map +1 -0
- package/dist/date-time-range-picker.js +322 -0
- package/dist/date-time-range-picker.js.map +1 -0
- package/dist/dialog.d.ts +39 -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 +70 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +142 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/drawer.d.ts +45 -0
- package/dist/drawer.d.ts.map +1 -0
- package/dist/drawer.js +252 -0
- package/dist/drawer.js.map +1 -0
- package/dist/editable.d.ts +37 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +83 -0
- package/dist/editable.js.map +1 -0
- package/dist/feed.d.ts +43 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +151 -0
- package/dist/feed.js.map +1 -0
- package/dist/form.d.ts +82 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +473 -0
- package/dist/form.js.map +1 -0
- package/dist/grid.d.ts +54 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/grid.js +172 -0
- package/dist/grid.js.map +1 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/interact-outside.d.ts +12 -0
- package/dist/interact-outside.d.ts.map +1 -0
- package/dist/interact-outside.js +28 -0
- package/dist/interact-outside.js.map +1 -0
- package/dist/internal/checked-control.d.ts +67 -0
- package/dist/internal/checked-control.d.ts.map +1 -0
- package/dist/internal/checked-control.js +137 -0
- package/dist/internal/checked-control.js.map +1 -0
- package/dist/internal/controller.d.ts +6 -0
- package/dist/internal/controller.d.ts.map +1 -0
- package/dist/internal/controller.js +35 -0
- package/dist/internal/controller.js.map +1 -0
- package/dist/internal/date-picker-cell.d.ts +2 -0
- package/dist/internal/date-picker-cell.d.ts.map +1 -0
- package/dist/internal/date-picker-cell.js +10 -0
- package/dist/internal/date-picker-cell.js.map +1 -0
- package/dist/internal/delegated-event.d.ts +2 -0
- package/dist/internal/delegated-event.d.ts.map +1 -0
- package/dist/internal/delegated-event.js +11 -0
- package/dist/internal/delegated-event.js.map +1 -0
- package/dist/internal/direction.d.ts +3 -0
- package/dist/internal/direction.d.ts.map +1 -0
- package/dist/internal/direction.js +8 -0
- package/dist/internal/direction.js.map +1 -0
- package/dist/internal/disabled-items.d.ts +6 -0
- package/dist/internal/disabled-items.d.ts.map +1 -0
- package/dist/internal/disabled-items.js +15 -0
- package/dist/internal/disabled-items.js.map +1 -0
- package/dist/internal/facade.d.ts +45 -0
- package/dist/internal/facade.d.ts.map +1 -0
- package/dist/internal/facade.js +58 -0
- package/dist/internal/facade.js.map +1 -0
- package/dist/internal/floating-position.d.ts +26 -0
- package/dist/internal/floating-position.d.ts.map +1 -0
- package/dist/internal/floating-position.js +103 -0
- package/dist/internal/floating-position.js.map +1 -0
- package/dist/internal/interaction.d.ts +14 -0
- package/dist/internal/interaction.d.ts.map +1 -0
- package/dist/internal/interaction.js +25 -0
- package/dist/internal/interaction.js.map +1 -0
- package/dist/internal/layer-binding.d.ts +16 -0
- package/dist/internal/layer-binding.d.ts.map +1 -0
- package/dist/internal/layer-binding.js +99 -0
- package/dist/internal/layer-binding.js.map +1 -0
- package/dist/internal/layer-manager.d.ts +19 -0
- package/dist/internal/layer-manager.d.ts.map +1 -0
- package/dist/internal/layer-manager.js +81 -0
- package/dist/internal/layer-manager.js.map +1 -0
- package/dist/internal/menu-control.d.ts +41 -0
- package/dist/internal/menu-control.d.ts.map +1 -0
- package/dist/internal/menu-control.js +279 -0
- package/dist/internal/menu-control.js.map +1 -0
- package/dist/internal/modal-effects.d.ts +5 -0
- package/dist/internal/modal-effects.d.ts.map +1 -0
- package/dist/internal/modal-effects.js +125 -0
- package/dist/internal/modal-effects.js.map +1 -0
- package/dist/internal/popup-control.d.ts +45 -0
- package/dist/internal/popup-control.d.ts.map +1 -0
- package/dist/internal/popup-control.js +223 -0
- package/dist/internal/popup-control.js.map +1 -0
- package/dist/internal/semantic-controller.d.ts +20 -0
- package/dist/internal/semantic-controller.d.ts.map +1 -0
- package/dist/internal/semantic-controller.js +42 -0
- package/dist/internal/semantic-controller.js.map +1 -0
- package/dist/internal/text-element.d.ts +16 -0
- package/dist/internal/text-element.d.ts.map +1 -0
- package/dist/internal/text-element.js +217 -0
- package/dist/internal/text-element.js.map +1 -0
- package/dist/listbox.d.ts +142 -0
- package/dist/listbox.d.ts.map +1 -0
- package/dist/listbox.js +463 -0
- package/dist/listbox.js.map +1 -0
- package/dist/menu-button.d.ts +10 -0
- package/dist/menu-button.d.ts.map +1 -0
- package/dist/menu-button.js +11 -0
- package/dist/menu-button.js.map +1 -0
- package/dist/menu.d.ts +10 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +11 -0
- package/dist/menu.js.map +1 -0
- package/dist/menubar.d.ts +8 -0
- package/dist/menubar.d.ts.map +1 -0
- package/dist/menubar.js +11 -0
- package/dist/menubar.js.map +1 -0
- package/dist/month-picker.d.ts +5 -0
- package/dist/month-picker.d.ts.map +1 -0
- package/dist/month-picker.js +3 -0
- package/dist/month-picker.js.map +1 -0
- package/dist/month-range-picker.d.ts +4 -0
- package/dist/month-range-picker.d.ts.map +1 -0
- package/dist/month-range-picker.js +3 -0
- package/dist/month-range-picker.js.map +1 -0
- package/dist/multi-thumb-slider.d.ts +43 -0
- package/dist/multi-thumb-slider.d.ts.map +1 -0
- package/dist/multi-thumb-slider.js +190 -0
- package/dist/multi-thumb-slider.js.map +1 -0
- package/dist/navigation-menu.d.ts +8 -0
- package/dist/navigation-menu.d.ts.map +1 -0
- package/dist/navigation-menu.js +10 -0
- package/dist/navigation-menu.js.map +1 -0
- package/dist/number-field.d.ts +48 -0
- package/dist/number-field.d.ts.map +1 -0
- package/dist/number-field.js +138 -0
- package/dist/number-field.js.map +1 -0
- package/dist/pagination.d.ts +52 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +199 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pin-input.d.ts +31 -0
- package/dist/pin-input.d.ts.map +1 -0
- package/dist/pin-input.js +84 -0
- package/dist/pin-input.js.map +1 -0
- package/dist/popover.d.ts +60 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +82 -0
- package/dist/popover.js.map +1 -0
- package/dist/quantity-field.d.ts +53 -0
- package/dist/quantity-field.d.ts.map +1 -0
- package/dist/quantity-field.js +190 -0
- package/dist/quantity-field.js.map +1 -0
- package/dist/radio-group.d.ts +69 -0
- package/dist/radio-group.d.ts.map +1 -0
- package/dist/radio-group.js +225 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/range-calendar.d.ts +3 -0
- package/dist/range-calendar.d.ts.map +1 -0
- package/dist/range-calendar.js +2 -0
- package/dist/range-calendar.js.map +1 -0
- package/dist/rating.d.ts +23 -0
- package/dist/rating.d.ts.map +1 -0
- package/dist/rating.js +38 -0
- package/dist/rating.js.map +1 -0
- package/dist/reorder.d.ts +39 -0
- package/dist/reorder.d.ts.map +1 -0
- package/dist/reorder.js +308 -0
- package/dist/reorder.js.map +1 -0
- package/dist/select.d.ts +68 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +114 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.d.ts +108 -0
- package/dist/slider.d.ts.map +1 -0
- package/dist/slider.js +342 -0
- package/dist/slider.js.map +1 -0
- package/dist/spin-button.d.ts +44 -0
- package/dist/spin-button.d.ts.map +1 -0
- package/dist/spin-button.js +130 -0
- package/dist/spin-button.js.map +1 -0
- package/dist/stepper.d.ts +24 -0
- package/dist/stepper.d.ts.map +1 -0
- package/dist/stepper.js +32 -0
- package/dist/stepper.js.map +1 -0
- package/dist/switch.d.ts +45 -0
- package/dist/switch.d.ts.map +1 -0
- package/dist/switch.js +44 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.d.ts +86 -0
- package/dist/tabs.d.ts.map +1 -0
- package/dist/tabs.js +259 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tags-input.d.ts +38 -0
- package/dist/tags-input.d.ts.map +1 -0
- package/dist/tags-input.js +93 -0
- package/dist/tags-input.js.map +1 -0
- package/dist/text.d.ts +85 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +225 -0
- package/dist/text.js.map +1 -0
- package/dist/time-field.d.ts +42 -0
- package/dist/time-field.d.ts.map +1 -0
- package/dist/time-field.js +59 -0
- package/dist/time-field.js.map +1 -0
- package/dist/time-range-field.d.ts +48 -0
- package/dist/time-range-field.d.ts.map +1 -0
- package/dist/time-range-field.js +98 -0
- package/dist/time-range-field.js.map +1 -0
- package/dist/timer.d.ts +32 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js +46 -0
- package/dist/timer.js.map +1 -0
- package/dist/toast.d.ts +44 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +263 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle-button.d.ts +39 -0
- package/dist/toggle-button.d.ts.map +1 -0
- package/dist/toggle-button.js +37 -0
- package/dist/toggle-button.js.map +1 -0
- package/dist/toggle-group.d.ts +42 -0
- package/dist/toggle-group.d.ts.map +1 -0
- package/dist/toggle-group.js +91 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/toolbar.d.ts +43 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +151 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +45 -0
- package/dist/tooltip.d.ts.map +1 -0
- package/dist/tooltip.js +68 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree-grid.d.ts +131 -0
- package/dist/tree-grid.d.ts.map +1 -0
- package/dist/tree-grid.js +466 -0
- package/dist/tree-grid.js.map +1 -0
- package/dist/tree-view.d.ts +104 -0
- package/dist/tree-view.d.ts.map +1 -0
- package/dist/tree-view.js +332 -0
- package/dist/tree-view.js.map +1 -0
- package/dist/window-splitter.d.ts +8 -0
- package/dist/window-splitter.d.ts.map +1 -0
- package/dist/window-splitter.js +13 -0
- package/dist/window-splitter.js.map +1 -0
- package/dist/year-picker.d.ts +3 -0
- package/dist/year-picker.d.ts.map +1 -0
- package/dist/year-picker.js +2 -0
- package/dist/year-picker.js.map +1 -0
- package/dist/year-range-picker.d.ts +3 -0
- package/dist/year-range-picker.d.ts.map +1 -0
- package/dist/year-range-picker.js +2 -0
- package/dist/year-range-picker.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { tryCreateListbox } from './listbox.js';
|
|
4
|
+
export function getToggleGroupRootAttributes(options = {}) {
|
|
5
|
+
return Object.freeze({
|
|
6
|
+
role: 'group',
|
|
7
|
+
'aria-orientation': options.orientation ?? 'horizontal',
|
|
8
|
+
dir: options.direction,
|
|
9
|
+
'aria-label': options.label,
|
|
10
|
+
'aria-disabled': options.disabled === true ? 'true' : undefined,
|
|
11
|
+
'aria-readonly': options.readOnly === true ? 'true' : undefined,
|
|
12
|
+
'data-scope': 'toggle-group',
|
|
13
|
+
'data-part': 'root',
|
|
14
|
+
'data-disabled': options.disabled === true ? '' : undefined,
|
|
15
|
+
'data-readonly': options.readOnly === true ? '' : undefined,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function getToggleGroupItemAttributes(options) {
|
|
19
|
+
return Object.freeze({
|
|
20
|
+
role: 'button', type: 'button',
|
|
21
|
+
tabindex: options.disabled === true ? -1 : options.highlighted ? 0 : -1,
|
|
22
|
+
'aria-pressed': String(options.pressed),
|
|
23
|
+
'aria-disabled': options.disabled === true ? 'true' : undefined,
|
|
24
|
+
disabled: options.disabled === true ? true : undefined,
|
|
25
|
+
'data-toggle-group-id': String(options.id),
|
|
26
|
+
'data-scope': 'toggle-group', 'data-part': 'item',
|
|
27
|
+
'data-state': options.pressed ? 'on' : 'off',
|
|
28
|
+
'data-highlighted': options.highlighted ? '' : undefined,
|
|
29
|
+
'data-disabled': options.disabled === true ? '' : undefined,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function createToggleGroup(options) {
|
|
33
|
+
return unwrap(tryCreateToggleGroup(options));
|
|
34
|
+
}
|
|
35
|
+
export function tryCreateToggleGroup(options) {
|
|
36
|
+
return createFacadeConnection(options, (options) => tryCreateToggleGroupConnection(options));
|
|
37
|
+
}
|
|
38
|
+
function tryCreateToggleGroupConnection(options) {
|
|
39
|
+
const result = tryCreateListbox({
|
|
40
|
+
...options,
|
|
41
|
+
activationMode: 'toggle', clearOnEscape: false,
|
|
42
|
+
orientation: options.orientation ?? 'horizontal',
|
|
43
|
+
selectionMode: options.multiple === true ? 'multiple' : 'single',
|
|
44
|
+
policies: { ...options.policies, deselectable: options.deselectable ?? options.policies?.deselectable ?? true },
|
|
45
|
+
});
|
|
46
|
+
if (!result.ok)
|
|
47
|
+
return result;
|
|
48
|
+
setRootAttributes(options.root, options);
|
|
49
|
+
return { ok: true, value: wrap(result.value, options.root) };
|
|
50
|
+
}
|
|
51
|
+
function wrap(connection, root) {
|
|
52
|
+
return Object.freeze({
|
|
53
|
+
getSnapshot: () => connection.getSnapshot(),
|
|
54
|
+
syncControlledValues: (values) => connection.syncControlledValues(values),
|
|
55
|
+
setItemAttributes: (element, attributes) => {
|
|
56
|
+
connection.setItemAttributes(element, attributes);
|
|
57
|
+
const pressed = element.getAttribute('aria-selected') ?? 'false';
|
|
58
|
+
element.setAttribute('role', 'button');
|
|
59
|
+
if (element.tagName === 'BUTTON')
|
|
60
|
+
element.setAttribute('type', 'button');
|
|
61
|
+
element.setAttribute('aria-pressed', pressed);
|
|
62
|
+
element.setAttribute('data-scope', 'toggle-group');
|
|
63
|
+
element.setAttribute('data-part', 'item');
|
|
64
|
+
element.setAttribute('data-state', pressed === 'true' ? 'on' : 'off');
|
|
65
|
+
element.setAttribute('data-toggle-group-id', String(attributes.id));
|
|
66
|
+
element.removeAttribute('aria-selected');
|
|
67
|
+
},
|
|
68
|
+
handleEvent: (event) => connection.handleEvent(mapEvent(event)),
|
|
69
|
+
handleKeyboardEvent: (event) => connection.handleKeyboardEvent(event),
|
|
70
|
+
disconnect: () => { connection.disconnect(); clearRootAttributes(root); },
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function mapEvent(event) {
|
|
74
|
+
return typeof event === 'object'
|
|
75
|
+
? event.type === 'press' ? { type: 'toggle', id: event.id } : event
|
|
76
|
+
: event === 'press' ? 'toggle' : event;
|
|
77
|
+
}
|
|
78
|
+
function setRootAttributes(root, options) {
|
|
79
|
+
for (const [name, value] of Object.entries(getToggleGroupRootAttributes(options))) {
|
|
80
|
+
if (value === undefined)
|
|
81
|
+
root.removeAttribute(name);
|
|
82
|
+
else
|
|
83
|
+
root.setAttribute(name, value);
|
|
84
|
+
}
|
|
85
|
+
root.removeAttribute('aria-multiselectable');
|
|
86
|
+
}
|
|
87
|
+
function clearRootAttributes(root) {
|
|
88
|
+
for (const name of ['role', 'aria-orientation', 'aria-label', 'data-scope', 'data-part'])
|
|
89
|
+
root.removeAttribute(name);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=toggle-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../src/toggle-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result, StableID } from '@sectile/core';
|
|
3
|
+
import type { RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
import { type ToolbarEvent, type ToolbarPolicies, type ToolbarState } from '@sectile/core/toolbar';
|
|
5
|
+
export type { ToolbarPolicies } from '@sectile/core/toolbar';
|
|
6
|
+
import type { KeyboardInput } from './tabs.js';
|
|
7
|
+
import { type ReadingDirection } from './internal/direction.js';
|
|
8
|
+
export type ToolbarEffect<ID extends StableID = StableID> = {
|
|
9
|
+
readonly type: 'focus-control';
|
|
10
|
+
readonly id: ID;
|
|
11
|
+
} | {
|
|
12
|
+
readonly type: 'invoke-control';
|
|
13
|
+
readonly id: ID;
|
|
14
|
+
};
|
|
15
|
+
export interface ToolbarOptions<ID extends StableID = StableID> {
|
|
16
|
+
readonly root: HTMLElement;
|
|
17
|
+
readonly disabled?: boolean;
|
|
18
|
+
readonly items: readonly ID[];
|
|
19
|
+
readonly policies?: ToolbarPolicies<ID>;
|
|
20
|
+
readonly disabledItems?: readonly ID[];
|
|
21
|
+
readonly highlightedValue?: ID | null;
|
|
22
|
+
readonly defaultHighlightedValue?: ID | null;
|
|
23
|
+
readonly orientation?: 'horizontal' | 'vertical';
|
|
24
|
+
readonly direction?: ReadingDirection;
|
|
25
|
+
readonly label?: string;
|
|
26
|
+
readonly onHighlightedValueChange?: (value: ID | null) => void;
|
|
27
|
+
readonly onInvoke?: (id: ID) => void;
|
|
28
|
+
readonly onUpdate?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export type ToolbarHighlightedValueChangeHandler<ID extends StableID = StableID> = NonNullable<ToolbarOptions<ID>['onHighlightedValueChange']>;
|
|
31
|
+
export type ToolbarInvokeHandler<ID extends StableID = StableID> = NonNullable<ToolbarOptions<ID>['onInvoke']>;
|
|
32
|
+
export type ToolbarUpdateHandler<ID extends StableID = StableID> = NonNullable<ToolbarOptions<ID>['onUpdate']>;
|
|
33
|
+
export interface ToolbarConnection<ID extends StableID = StableID> {
|
|
34
|
+
getSnapshot(): RevisionSnapshot<ToolbarState<ID>>;
|
|
35
|
+
syncControlledValue(value: ID | null): Result<RevisionSnapshot<ToolbarState<ID>>>;
|
|
36
|
+
setItemAttributes(element: HTMLElement, id: ID, disabled?: boolean): void;
|
|
37
|
+
handleEvent(event: ToolbarEvent<ID>): boolean;
|
|
38
|
+
disconnect(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare function createToolbar<ID extends StableID>(options: ToolbarOptions<ID>): FacadeConnection<ToolbarConnection<ID>>;
|
|
41
|
+
export declare function tryCreateToolbar<ID extends StableID>(options: ToolbarOptions<ID>): Result<FacadeConnection<ToolbarConnection<ID>>>;
|
|
42
|
+
export declare function toToolbarEvent<ID extends StableID = StableID>(input: KeyboardInput, orientation?: 'horizontal' | 'vertical', direction?: ReadingDirection): ToolbarEvent<ID> | null;
|
|
43
|
+
//# sourceMappingURL=toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../src/toolbar.ts"],"names":[],"mappings":"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"}
|
package/dist/toolbar.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { tryCreateSequence } from '@sectile/core/sequence';
|
|
4
|
+
import { applyToolbarEvent, tryCreateToolbarState, } from '@sectile/core/toolbar';
|
|
5
|
+
import { findDelegatedID } from './internal/delegated-event.js';
|
|
6
|
+
import { createDisabledItems } from './internal/disabled-items.js';
|
|
7
|
+
import { createSemanticController } from './internal/semantic-controller.js';
|
|
8
|
+
import { setInteractionAttributes } from './internal/interaction.js';
|
|
9
|
+
import { horizontalArrow } from './internal/direction.js';
|
|
10
|
+
export function createToolbar(options) {
|
|
11
|
+
return unwrap(tryCreateToolbar(options));
|
|
12
|
+
}
|
|
13
|
+
export function tryCreateToolbar(options) {
|
|
14
|
+
return createFacadeConnection(options, (options) => tryCreateToolbarConnection(options));
|
|
15
|
+
}
|
|
16
|
+
function tryCreateToolbarConnection(options) {
|
|
17
|
+
const domain = tryCreateSequence(options.items);
|
|
18
|
+
if (!domain.ok)
|
|
19
|
+
return domain;
|
|
20
|
+
const disabled = createDisabledItems(domain.value, options.disabledItems);
|
|
21
|
+
if (!disabled.ok)
|
|
22
|
+
return disabled;
|
|
23
|
+
const suppliedEligibility = options.policies?.eligible;
|
|
24
|
+
const policies = Object.freeze({
|
|
25
|
+
...options.policies,
|
|
26
|
+
eligible: (id) => !disabled.value.has(id) && (suppliedEligibility?.(id) ?? true),
|
|
27
|
+
});
|
|
28
|
+
const controlled = options.highlightedValue !== undefined;
|
|
29
|
+
const runtime = createSemanticController({
|
|
30
|
+
interaction: options,
|
|
31
|
+
initial: tryCreateToolbarState(domain.value, {
|
|
32
|
+
current: options.highlightedValue !== undefined
|
|
33
|
+
? options.highlightedValue
|
|
34
|
+
: options.defaultHighlightedValue ?? null,
|
|
35
|
+
}),
|
|
36
|
+
reducer: (state, event) => applyToolbarEvent(domain.value, state, event, policies),
|
|
37
|
+
reconcile: (previous, proposed) => tryCreateToolbarState(domain.value, {
|
|
38
|
+
current: controlled ? previous.cursor.current : proposed.cursor.current,
|
|
39
|
+
}),
|
|
40
|
+
notify: (previous, proposed) => {
|
|
41
|
+
if (previous.cursor.current !== proposed.cursor.current) {
|
|
42
|
+
options.onHighlightedValueChange?.(proposed.cursor.current);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
toEffect: (command) => command.type === 'focus'
|
|
46
|
+
? Object.freeze({ type: 'focus-control', id: command.id })
|
|
47
|
+
: Object.freeze({ type: 'invoke-control', id: command.id }),
|
|
48
|
+
});
|
|
49
|
+
if (!runtime.ok)
|
|
50
|
+
return runtime;
|
|
51
|
+
return { ok: true, value: new DOMToolbarConnection(options, domain.value, runtime.value, controlled, disabled.value) };
|
|
52
|
+
}
|
|
53
|
+
export function toToolbarEvent(input, orientation = 'horizontal', direction = 'ltr') {
|
|
54
|
+
if (input.altKey || input.ctrlKey || input.metaKey)
|
|
55
|
+
return null;
|
|
56
|
+
if (input.key === 'Home')
|
|
57
|
+
return 'first';
|
|
58
|
+
if (input.key === 'End')
|
|
59
|
+
return 'last';
|
|
60
|
+
if (input.key === 'Enter' || input.key === ' ')
|
|
61
|
+
return 'invoke';
|
|
62
|
+
if (orientation === 'horizontal') {
|
|
63
|
+
const horizontal = horizontalArrow(input.key, direction);
|
|
64
|
+
if (horizontal !== null)
|
|
65
|
+
return horizontal;
|
|
66
|
+
}
|
|
67
|
+
if (orientation === 'vertical' && input.key === 'ArrowDown')
|
|
68
|
+
return 'next';
|
|
69
|
+
if (orientation === 'vertical' && input.key === 'ArrowUp')
|
|
70
|
+
return 'previous';
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
class DOMToolbarConnection {
|
|
74
|
+
#options;
|
|
75
|
+
#domain;
|
|
76
|
+
#runtime;
|
|
77
|
+
#controlled;
|
|
78
|
+
#disabledItems;
|
|
79
|
+
#keydown;
|
|
80
|
+
#click;
|
|
81
|
+
constructor(options, domain, runtime, controlled, disabledItems) {
|
|
82
|
+
this.#options = options;
|
|
83
|
+
this.#domain = domain;
|
|
84
|
+
this.#runtime = runtime;
|
|
85
|
+
this.#controlled = controlled;
|
|
86
|
+
this.#disabledItems = disabledItems;
|
|
87
|
+
options.root.setAttribute('role', 'toolbar');
|
|
88
|
+
setInteractionAttributes(options.root, options);
|
|
89
|
+
options.root.setAttribute('aria-orientation', options.orientation ?? 'horizontal');
|
|
90
|
+
options.root.setAttribute('dir', options.direction ?? 'ltr');
|
|
91
|
+
if (options.label !== undefined)
|
|
92
|
+
options.root.setAttribute('aria-label', options.label);
|
|
93
|
+
this.#keydown = (event) => {
|
|
94
|
+
const semantic = toToolbarEvent(event, options.orientation, options.direction);
|
|
95
|
+
if (semantic === null)
|
|
96
|
+
return;
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
this.handleEvent(semantic);
|
|
99
|
+
};
|
|
100
|
+
this.#click = (event) => {
|
|
101
|
+
const id = findDelegatedID(event.target, options.root, 'toolbarId');
|
|
102
|
+
if (id !== null)
|
|
103
|
+
this.handleEvent({ type: 'invoke', id: id });
|
|
104
|
+
};
|
|
105
|
+
options.root.addEventListener('keydown', this.#keydown);
|
|
106
|
+
options.root.addEventListener('click', this.#click);
|
|
107
|
+
}
|
|
108
|
+
getSnapshot() { return this.#runtime.getSnapshot(); }
|
|
109
|
+
syncControlledValue(value) {
|
|
110
|
+
if (!this.#controlled)
|
|
111
|
+
return { ok: false, error: {
|
|
112
|
+
class: 'construction', code: 'uncontrolled-controller-sync',
|
|
113
|
+
message: 'An uncontrolled toolbar cannot be synchronized externally.',
|
|
114
|
+
} };
|
|
115
|
+
const result = this.#runtime.replace(tryCreateToolbarState(this.#domain, { current: value }));
|
|
116
|
+
if (result.ok)
|
|
117
|
+
this.#options.onUpdate?.();
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
setItemAttributes(element, id, disabled = false) {
|
|
121
|
+
element.dataset['toolbarId'] = id;
|
|
122
|
+
element.tabIndex = this.#runtime.getSnapshot().state.cursor.current === id ? 0 : -1;
|
|
123
|
+
if (disabled || this.#disabledItems.has(id))
|
|
124
|
+
element.setAttribute('aria-disabled', 'true');
|
|
125
|
+
else
|
|
126
|
+
element.removeAttribute('aria-disabled');
|
|
127
|
+
}
|
|
128
|
+
handleEvent(event) {
|
|
129
|
+
const result = this.#runtime.handle(event);
|
|
130
|
+
if (result.ok) {
|
|
131
|
+
for (const effect of result.commands) {
|
|
132
|
+
if (effect.type === 'invoke-control')
|
|
133
|
+
this.#options.onInvoke?.(effect.id);
|
|
134
|
+
}
|
|
135
|
+
queueMicrotask(() => {
|
|
136
|
+
for (const element of this.#options.root.querySelectorAll('[data-toolbar-id]')) {
|
|
137
|
+
if (element.dataset['toolbarId'] === result.snapshot.state.cursor.current)
|
|
138
|
+
element.focus();
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (result.ok)
|
|
143
|
+
this.#options.onUpdate?.();
|
|
144
|
+
return result.ok;
|
|
145
|
+
}
|
|
146
|
+
disconnect() {
|
|
147
|
+
this.#options.root.removeEventListener('keydown', this.#keydown);
|
|
148
|
+
this.#options.root.removeEventListener('click', this.#click);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# 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,45 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result } from '@sectile/core';
|
|
3
|
+
import { type TooltipEvent, type TooltipState } from '@sectile/core/tooltip';
|
|
4
|
+
import type { AutoUpdateOptions, Boundary, ComputePositionConfig, ComputePositionReturn, Padding, ReferenceElement, Strategy } from '@floating-ui/dom';
|
|
5
|
+
import { type FloatingSide, type FloatingAlign } from './internal/floating-position.js';
|
|
6
|
+
import { type DOMPopupConnection } from './internal/popup-control.js';
|
|
7
|
+
export { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, type ArrowOptions, type AutoPlacementOptions, type FlipOptions, type HideOptions, type InlineOptions, type Middleware, type OffsetOptions, type ShiftOptions, type SizeOptions, } from '@floating-ui/dom';
|
|
8
|
+
export type TooltipSide = FloatingSide;
|
|
9
|
+
export type TooltipAlign = FloatingAlign;
|
|
10
|
+
export interface TooltipOptions {
|
|
11
|
+
readonly root: HTMLElement;
|
|
12
|
+
readonly trigger?: HTMLElement;
|
|
13
|
+
readonly anchor?: ReferenceElement;
|
|
14
|
+
readonly arrow?: HTMLElement;
|
|
15
|
+
readonly id?: string;
|
|
16
|
+
readonly open?: boolean;
|
|
17
|
+
readonly defaultOpen?: boolean;
|
|
18
|
+
readonly disabled?: boolean;
|
|
19
|
+
readonly side?: TooltipSide;
|
|
20
|
+
readonly align?: TooltipAlign;
|
|
21
|
+
readonly sideOffset?: number;
|
|
22
|
+
readonly collisionPadding?: Padding;
|
|
23
|
+
readonly collisionBoundary?: Boundary;
|
|
24
|
+
readonly avoidCollisions?: boolean;
|
|
25
|
+
readonly arrowPadding?: Padding;
|
|
26
|
+
readonly hideWhenDetached?: boolean;
|
|
27
|
+
readonly strategy?: Strategy;
|
|
28
|
+
/** Replaces the built-in offset, flip, shift, size, arrow, and hide middleware. */
|
|
29
|
+
readonly middleware?: ComputePositionConfig['middleware'];
|
|
30
|
+
/** Set to false to position only when updatePosition is called. */
|
|
31
|
+
readonly autoUpdate?: boolean | AutoUpdateOptions;
|
|
32
|
+
readonly onOpenChange?: (open: boolean) => void;
|
|
33
|
+
readonly onPositionChange?: (position: ComputePositionReturn) => void;
|
|
34
|
+
readonly onUpdate?: () => void;
|
|
35
|
+
readonly manageVisibility?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export type TooltipOpenChangeHandler = NonNullable<TooltipOptions['onOpenChange']>;
|
|
38
|
+
export type TooltipPositionChangeHandler = NonNullable<TooltipOptions['onPositionChange']>;
|
|
39
|
+
export type TooltipUpdateHandler = NonNullable<TooltipOptions['onUpdate']>;
|
|
40
|
+
export interface TooltipConnection extends DOMPopupConnection<TooltipState, TooltipEvent> {
|
|
41
|
+
updatePosition(): void;
|
|
42
|
+
}
|
|
43
|
+
export declare function createTooltip(o: TooltipOptions): FacadeConnection<TooltipConnection>;
|
|
44
|
+
export declare function tryCreateTooltip(o: TooltipOptions): Result<FacadeConnection<TooltipConnection>>;
|
|
45
|
+
//# sourceMappingURL=tooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"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"}
|
package/dist/tooltip.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { applyTooltipEvent, tryCreateTooltipState } from '@sectile/core/tooltip';
|
|
4
|
+
import { createFloatingPosition } from './internal/floating-position.js';
|
|
5
|
+
import { createDOMPopup } from './internal/popup-control.js';
|
|
6
|
+
export { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, } from '@floating-ui/dom';
|
|
7
|
+
export function createTooltip(o) {
|
|
8
|
+
return unwrap(tryCreateTooltip(o));
|
|
9
|
+
}
|
|
10
|
+
export function tryCreateTooltip(o) {
|
|
11
|
+
return createFacadeConnection(o, (o) => tryCreateTooltipConnection(o));
|
|
12
|
+
}
|
|
13
|
+
function tryCreateTooltipConnection(o) {
|
|
14
|
+
let connection;
|
|
15
|
+
const popup = createDOMPopup({
|
|
16
|
+
root: o.root,
|
|
17
|
+
...(o.trigger === undefined ? {} : { trigger: o.trigger }),
|
|
18
|
+
role: 'tooltip',
|
|
19
|
+
controlled: o.open !== undefined,
|
|
20
|
+
initial: tryCreateTooltipState(o.open ?? o.defaultOpen ?? false),
|
|
21
|
+
open: 'open', toggle: 'toggle', close: 'close',
|
|
22
|
+
reducer: applyTooltipEvent,
|
|
23
|
+
create: tryCreateTooltipState,
|
|
24
|
+
read: (state) => state.open,
|
|
25
|
+
interaction: o,
|
|
26
|
+
triggerMode: 'focus-hover',
|
|
27
|
+
...(o.manageVisibility === undefined ? {} : { manageVisibility: o.manageVisibility }),
|
|
28
|
+
...(o.id === undefined ? {} : { tooltipID: o.id }),
|
|
29
|
+
onOpenChange: o.onOpenChange,
|
|
30
|
+
onUpdate: () => { connection?.updatePosition(); o.onUpdate?.(); },
|
|
31
|
+
});
|
|
32
|
+
if (!popup.ok)
|
|
33
|
+
return popup;
|
|
34
|
+
connection = new PositionedTooltip(popup.value, o);
|
|
35
|
+
connection.updatePosition();
|
|
36
|
+
return { ok: true, value: connection };
|
|
37
|
+
}
|
|
38
|
+
class PositionedTooltip {
|
|
39
|
+
#popup;
|
|
40
|
+
#position;
|
|
41
|
+
constructor(popup, options) {
|
|
42
|
+
this.#popup = popup;
|
|
43
|
+
this.#position = createFloatingPosition({
|
|
44
|
+
root: options.root,
|
|
45
|
+
reference: options.anchor ?? options.trigger,
|
|
46
|
+
...(options.arrow === undefined ? {} : { arrow: options.arrow }),
|
|
47
|
+
side: options.side,
|
|
48
|
+
align: options.align,
|
|
49
|
+
sideOffset: options.sideOffset,
|
|
50
|
+
collisionPadding: options.collisionPadding,
|
|
51
|
+
collisionBoundary: options.collisionBoundary,
|
|
52
|
+
avoidCollisions: options.avoidCollisions,
|
|
53
|
+
arrowPadding: options.arrowPadding,
|
|
54
|
+
hideWhenDetached: options.hideWhenDetached,
|
|
55
|
+
strategy: options.strategy,
|
|
56
|
+
middleware: options.middleware,
|
|
57
|
+
autoUpdate: options.autoUpdate,
|
|
58
|
+
onPositionChange: options.onPositionChange,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getSnapshot() { return this.#popup.getSnapshot(); }
|
|
62
|
+
syncControlledValue(open) { return this.#popup.syncControlledValue(open); }
|
|
63
|
+
handleEvent(event) { return this.#popup.handleEvent(event); }
|
|
64
|
+
refresh() { this.#popup.refresh(); this.updatePosition(); }
|
|
65
|
+
disconnect() { this.#popup.disconnect(); this.#position.disconnect(); }
|
|
66
|
+
updatePosition() { this.#position.update(); }
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result, StableID } from '@sectile/core';
|
|
3
|
+
import { type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
import { type TreeGridCommand, type TreeGridEditMode, type TreeGridEvent, type TreeGridModel, type TreeGridPolicies, type TreeGridRowInput, type TreeGridState } from '@sectile/core/tree-grid';
|
|
5
|
+
export type { TreeGridEditMode, TreeGridPolicies, TreeGridRowInput, } from '@sectile/core/tree-grid';
|
|
6
|
+
export interface KeyboardInput {
|
|
7
|
+
readonly key: string;
|
|
8
|
+
readonly altKey?: boolean;
|
|
9
|
+
readonly ctrlKey?: boolean;
|
|
10
|
+
readonly metaKey?: boolean;
|
|
11
|
+
readonly isComposing?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export type TreeGridEffect<CellID extends StableID = StableID> = {
|
|
14
|
+
readonly type: 'focus-element';
|
|
15
|
+
readonly id: CellID;
|
|
16
|
+
} | {
|
|
17
|
+
readonly type: 'begin-cell-edit';
|
|
18
|
+
readonly id: CellID;
|
|
19
|
+
} | {
|
|
20
|
+
readonly type: 'commit-cell-edit';
|
|
21
|
+
readonly id: CellID;
|
|
22
|
+
} | {
|
|
23
|
+
readonly type: 'cancel-cell-edit';
|
|
24
|
+
readonly id: CellID;
|
|
25
|
+
};
|
|
26
|
+
export interface TreeGridValueChangeDetails<CellID extends StableID = StableID> {
|
|
27
|
+
readonly value: CellID | null;
|
|
28
|
+
readonly previousValue: CellID | null;
|
|
29
|
+
}
|
|
30
|
+
export interface TreeGridExpandedChangeDetails<RowID extends StableID = StableID> {
|
|
31
|
+
readonly value: readonly RowID[];
|
|
32
|
+
readonly previousValue: readonly RowID[];
|
|
33
|
+
}
|
|
34
|
+
export interface TreeGridHighlightChangeDetails<CellID extends StableID = StableID> {
|
|
35
|
+
readonly value: CellID | null;
|
|
36
|
+
readonly previousValue: CellID | null;
|
|
37
|
+
}
|
|
38
|
+
export interface TreeGridEditModeChangeDetails {
|
|
39
|
+
readonly value: TreeGridEditMode;
|
|
40
|
+
readonly previousValue: TreeGridEditMode;
|
|
41
|
+
}
|
|
42
|
+
export interface TreeGridControllerOptions<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
43
|
+
readonly model: TreeGridModel<RowID, CellID>;
|
|
44
|
+
readonly disabled?: boolean;
|
|
45
|
+
readonly readOnly?: boolean;
|
|
46
|
+
readonly policies?: TreeGridPolicies<CellID>;
|
|
47
|
+
readonly value?: CellID | null;
|
|
48
|
+
readonly defaultValue?: CellID | null;
|
|
49
|
+
readonly expandedValue?: readonly RowID[];
|
|
50
|
+
readonly defaultExpandedValue?: readonly RowID[];
|
|
51
|
+
readonly highlightedValue?: CellID | null;
|
|
52
|
+
readonly defaultHighlightedValue?: CellID | null;
|
|
53
|
+
readonly editMode?: TreeGridEditMode;
|
|
54
|
+
readonly defaultEditMode?: TreeGridEditMode;
|
|
55
|
+
readonly onValueChange?: (change: TreeGridValueChangeDetails<CellID>) => void;
|
|
56
|
+
readonly onExpandedValueChange?: (change: TreeGridExpandedChangeDetails<RowID>) => void;
|
|
57
|
+
readonly onHighlightedValueChange?: (change: TreeGridHighlightChangeDetails<CellID>) => void;
|
|
58
|
+
readonly onEditModeChange?: (change: TreeGridEditModeChangeDetails) => void;
|
|
59
|
+
}
|
|
60
|
+
export type TreeGridControllerValueChangeHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridControllerOptions<RowID, CellID>['onValueChange']>;
|
|
61
|
+
export type TreeGridControllerExpandedValueChangeHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridControllerOptions<RowID, CellID>['onExpandedValueChange']>;
|
|
62
|
+
export type TreeGridControllerHighlightedValueChangeHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridControllerOptions<RowID, CellID>['onHighlightedValueChange']>;
|
|
63
|
+
export type TreeGridControllerEditModeChangeHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridControllerOptions<RowID, CellID>['onEditModeChange']>;
|
|
64
|
+
export interface TreeGridControlledValues<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
65
|
+
readonly value?: CellID | null;
|
|
66
|
+
readonly expandedValue?: readonly RowID[];
|
|
67
|
+
readonly highlightedValue?: CellID | null;
|
|
68
|
+
readonly editMode?: TreeGridEditMode;
|
|
69
|
+
}
|
|
70
|
+
export interface TreeGridController<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
71
|
+
readonly model: TreeGridModel<RowID, CellID>;
|
|
72
|
+
getSnapshot(): RevisionSnapshot<TreeGridState<RowID, CellID>>;
|
|
73
|
+
syncControlledValues(values: TreeGridControlledValues<RowID, CellID>): Result<RevisionSnapshot<TreeGridState<RowID, CellID>>>;
|
|
74
|
+
handleKeyboardInput(input: KeyboardInput, expectedRevision?: number): RevisionResult<TreeGridState<RowID, CellID>, TreeGridEffect<CellID>>;
|
|
75
|
+
handleEvent(event: TreeGridEvent<RowID, CellID>, expectedRevision?: number): RevisionResult<TreeGridState<RowID, CellID>, TreeGridEffect<CellID>>;
|
|
76
|
+
}
|
|
77
|
+
export interface TreeGridTransitionDetails<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
78
|
+
readonly event: TreeGridEvent<RowID, CellID>;
|
|
79
|
+
readonly result: RevisionResult<TreeGridState<RowID, CellID>, TreeGridEffect<CellID>>;
|
|
80
|
+
}
|
|
81
|
+
export interface TreeGridConnectionOptions<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
82
|
+
readonly controller: TreeGridController<RowID, CellID>;
|
|
83
|
+
readonly root: HTMLElement;
|
|
84
|
+
readonly disabled?: boolean;
|
|
85
|
+
readonly readOnly?: boolean;
|
|
86
|
+
readonly getCellValue: (id: CellID) => string;
|
|
87
|
+
readonly setCellValue: (id: CellID, value: string) => void;
|
|
88
|
+
readonly onTransition?: (details: TreeGridTransitionDetails<RowID, CellID>) => void;
|
|
89
|
+
readonly onUpdate?: () => void;
|
|
90
|
+
}
|
|
91
|
+
export type TreeGridConnectionCellValueResolver<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridConnectionOptions<RowID, CellID>['getCellValue']>;
|
|
92
|
+
export type TreeGridConnectionCellValueSetter<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridConnectionOptions<RowID, CellID>['setCellValue']>;
|
|
93
|
+
export type TreeGridConnectionTransitionHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridConnectionOptions<RowID, CellID>['onTransition']>;
|
|
94
|
+
export type TreeGridConnectionUpdateHandler<RowID extends StableID = StableID, CellID extends StableID = StableID> = NonNullable<TreeGridConnectionOptions<RowID, CellID>['onUpdate']>;
|
|
95
|
+
export interface TreeGridRowAttributes {
|
|
96
|
+
readonly rowIndex: number;
|
|
97
|
+
readonly level: number;
|
|
98
|
+
readonly expanded?: boolean;
|
|
99
|
+
}
|
|
100
|
+
export interface TreeGridCellAttributes<CellID extends StableID = StableID> {
|
|
101
|
+
readonly id: CellID;
|
|
102
|
+
readonly columnIndex: number;
|
|
103
|
+
}
|
|
104
|
+
export interface TreeGridEditorOptions<CellID extends StableID = StableID> {
|
|
105
|
+
readonly id: CellID;
|
|
106
|
+
readonly label?: string;
|
|
107
|
+
}
|
|
108
|
+
export interface TreeGridConnection<RowID extends StableID = StableID, CellID extends StableID = StableID> {
|
|
109
|
+
readonly model: TreeGridModel<RowID, CellID>;
|
|
110
|
+
getSnapshot(): RevisionSnapshot<TreeGridState<RowID, CellID>>;
|
|
111
|
+
syncControlledValues(values: TreeGridControlledValues<RowID, CellID>): Result<RevisionSnapshot<TreeGridState<RowID, CellID>>>;
|
|
112
|
+
setGridAttributes(rowCount: number, columnCount: number): void;
|
|
113
|
+
setRowAttributes(element: HTMLElement, attributes: TreeGridRowAttributes): void;
|
|
114
|
+
setCellAttributes(element: HTMLElement, attributes: TreeGridCellAttributes<CellID>): void;
|
|
115
|
+
setDisclosureAttributes(element: HTMLElement, id: RowID): void;
|
|
116
|
+
bindEditor(element: HTMLInputElement, options: TreeGridEditorOptions<CellID>): void;
|
|
117
|
+
handleEvent(event: TreeGridEvent<RowID, CellID>): boolean;
|
|
118
|
+
handleKeyboardEvent(event: KeyboardEvent): boolean;
|
|
119
|
+
focusCurrent(): void;
|
|
120
|
+
disconnect(): void;
|
|
121
|
+
}
|
|
122
|
+
export type TreeGridOptions<RowID extends StableID = StableID, CellID extends StableID = StableID> = Omit<TreeGridControllerOptions<RowID, CellID>, 'model'> & Omit<TreeGridConnectionOptions<RowID, CellID>, 'controller'> & {
|
|
123
|
+
readonly rows: readonly TreeGridRowInput<RowID, CellID>[];
|
|
124
|
+
};
|
|
125
|
+
export declare function createTreeGridController<RowID extends StableID, CellID extends StableID>(options: TreeGridControllerOptions<RowID, CellID>): Result<TreeGridController<RowID, CellID>>;
|
|
126
|
+
export declare function createTreeGrid<RowID extends StableID, CellID extends StableID>(options: TreeGridOptions<RowID, CellID>): FacadeConnection<TreeGridConnection<RowID, CellID>>;
|
|
127
|
+
export declare function tryCreateTreeGrid<RowID extends StableID, CellID extends StableID>(options: TreeGridOptions<RowID, CellID>): Result<FacadeConnection<TreeGridConnection<RowID, CellID>>>;
|
|
128
|
+
export declare function connectTreeGrid<RowID extends StableID, CellID extends StableID>(options: TreeGridConnectionOptions<RowID, CellID>): TreeGridConnection<RowID, CellID>;
|
|
129
|
+
export declare function toTreeGridEvent<RowID extends StableID = StableID, CellID extends StableID = StableID>(input: KeyboardInput, editMode?: TreeGridEditMode): TreeGridEvent<RowID, CellID> | null;
|
|
130
|
+
export declare function toTreeGridEffect<CellID extends StableID>(command: TreeGridCommand<CellID>): TreeGridEffect<CellID>;
|
|
131
|
+
//# 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":"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"}
|