@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 { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result, StableID } from '@sectile/core';
|
|
3
|
+
import type { RevisionResult, RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
import { type AccordionCommand, type AccordionEvent, type AccordionState } from '@sectile/core/accordion';
|
|
5
|
+
import type { KeyboardInput } from './tabs.js';
|
|
6
|
+
export type AccordionEffect<ID extends StableID = StableID> = AccordionCommand<ID>;
|
|
7
|
+
export interface AccordionValueChangeDetails<ID extends StableID = StableID> {
|
|
8
|
+
readonly value: readonly ID[];
|
|
9
|
+
readonly previousValue: readonly ID[];
|
|
10
|
+
}
|
|
11
|
+
export interface AccordionHighlightChangeDetails<ID extends StableID = StableID> {
|
|
12
|
+
readonly value: ID | null;
|
|
13
|
+
readonly previousValue: ID | null;
|
|
14
|
+
}
|
|
15
|
+
export interface AccordionControllerOptions<ID extends StableID = StableID> {
|
|
16
|
+
readonly items: readonly ID[];
|
|
17
|
+
readonly expansion?: 'single' | 'multiple';
|
|
18
|
+
readonly collapsible?: boolean;
|
|
19
|
+
readonly disabledItems?: readonly ID[];
|
|
20
|
+
readonly disabled?: boolean;
|
|
21
|
+
readonly readOnly?: boolean;
|
|
22
|
+
readonly value?: readonly ID[];
|
|
23
|
+
readonly defaultValue?: readonly ID[];
|
|
24
|
+
readonly highlightedValue?: ID | null;
|
|
25
|
+
readonly defaultHighlightedValue?: ID | null;
|
|
26
|
+
readonly onValueChange?: (change: AccordionValueChangeDetails<ID>) => void;
|
|
27
|
+
readonly onHighlightedValueChange?: (change: AccordionHighlightChangeDetails<ID>) => void;
|
|
28
|
+
}
|
|
29
|
+
export type AccordionControllerValueChangeHandler<ID extends StableID = StableID> = NonNullable<AccordionControllerOptions<ID>['onValueChange']>;
|
|
30
|
+
export type AccordionControllerHighlightedValueChangeHandler<ID extends StableID = StableID> = NonNullable<AccordionControllerOptions<ID>['onHighlightedValueChange']>;
|
|
31
|
+
export interface AccordionControlledValues<ID extends StableID = StableID> {
|
|
32
|
+
readonly value?: readonly ID[];
|
|
33
|
+
readonly openIDs?: readonly ID[];
|
|
34
|
+
readonly highlightedValue?: ID | null;
|
|
35
|
+
}
|
|
36
|
+
export interface AccordionController<ID extends StableID = StableID> {
|
|
37
|
+
getSnapshot(): RevisionSnapshot<AccordionState<ID>>;
|
|
38
|
+
syncControlledValues(values: AccordionControlledValues<ID>): Result<RevisionSnapshot<AccordionState<ID>>>;
|
|
39
|
+
handleEvent(event: AccordionEvent<ID>, expectedRevision?: number): RevisionResult<AccordionState<ID>, AccordionEffect<ID>>;
|
|
40
|
+
}
|
|
41
|
+
export interface AccordionOptions<ID extends StableID = StableID> extends AccordionControllerOptions<ID> {
|
|
42
|
+
readonly root: HTMLElement;
|
|
43
|
+
readonly openIDs?: readonly ID[];
|
|
44
|
+
readonly defaultOpenIDs?: readonly ID[];
|
|
45
|
+
readonly label?: string;
|
|
46
|
+
readonly onOpenChange?: (openIDs: readonly ID[]) => void;
|
|
47
|
+
readonly onUpdate?: () => void;
|
|
48
|
+
}
|
|
49
|
+
export type AccordionOpenChangeHandler<ID extends StableID = StableID> = NonNullable<AccordionOptions<ID>['onOpenChange']>;
|
|
50
|
+
export type AccordionUpdateHandler<ID extends StableID = StableID> = NonNullable<AccordionOptions<ID>['onUpdate']>;
|
|
51
|
+
export interface AccordionRootAttributesOptions {
|
|
52
|
+
readonly disabled?: boolean;
|
|
53
|
+
readonly readOnly?: boolean;
|
|
54
|
+
readonly label?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AccordionTriggerAttributes<ID extends StableID = StableID> {
|
|
57
|
+
readonly id: ID;
|
|
58
|
+
readonly triggerID?: string;
|
|
59
|
+
readonly panelID?: string;
|
|
60
|
+
readonly disabled?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface AccordionTriggerAttributesOptions {
|
|
63
|
+
readonly disabled?: boolean;
|
|
64
|
+
readonly readOnly?: boolean;
|
|
65
|
+
readonly native?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface AccordionPanelAttributesOptions {
|
|
68
|
+
readonly panelID?: string;
|
|
69
|
+
readonly triggerID?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface AccordionConnection<ID extends StableID = StableID> {
|
|
72
|
+
getSnapshot(): RevisionSnapshot<AccordionState<ID>>;
|
|
73
|
+
syncControlledValues(values: AccordionControlledValues<ID>): Result<RevisionSnapshot<AccordionState<ID>>>;
|
|
74
|
+
setRootAttributes(label?: string): void;
|
|
75
|
+
setTriggerAttributes(element: HTMLElement, attributes: AccordionTriggerAttributes<ID>): void;
|
|
76
|
+
setHeaderAttributes(element: HTMLElement, id: ID, panelID?: string, disabled?: boolean): void;
|
|
77
|
+
setPanelAttributes(element: HTMLElement, id: ID, attributes?: AccordionPanelAttributesOptions | string): void;
|
|
78
|
+
handleEvent(event: AccordionEvent<ID>): boolean;
|
|
79
|
+
disconnect(): void;
|
|
80
|
+
}
|
|
81
|
+
export declare function createAccordionController<ID extends StableID>(options: AccordionControllerOptions<ID>): Result<AccordionController<ID>>;
|
|
82
|
+
export declare function createAccordion<ID extends StableID>(options: AccordionOptions<ID>): FacadeConnection<AccordionConnection<ID>>;
|
|
83
|
+
export declare function tryCreateAccordion<ID extends StableID>(options: AccordionOptions<ID>): Result<FacadeConnection<AccordionConnection<ID>>>;
|
|
84
|
+
export declare function connectAccordion<ID extends StableID>(options: AccordionOptions<ID> & {
|
|
85
|
+
readonly controller: AccordionController<ID>;
|
|
86
|
+
}): AccordionConnection<ID>;
|
|
87
|
+
export declare function getAccordionRootAttributes(options?: AccordionRootAttributesOptions): Readonly<Record<string, string | undefined>>;
|
|
88
|
+
export declare function getAccordionTriggerAttributes<ID extends StableID>(state: Pick<AccordionState<ID>, 'has'>, attributes: AccordionTriggerAttributes<ID>, options?: AccordionTriggerAttributesOptions): Readonly<Record<string, string | number | boolean | undefined>>;
|
|
89
|
+
export declare function getAccordionPanelAttributes<ID extends StableID>(state: Pick<AccordionState<ID>, 'has'>, id: ID, options?: AccordionPanelAttributesOptions): Readonly<Record<string, string | boolean | undefined>>;
|
|
90
|
+
export declare function toAccordionEvent<ID extends StableID = StableID>(input: KeyboardInput): AccordionEvent<ID> | null;
|
|
91
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { tryCreateSequence } from '@sectile/core/sequence';
|
|
4
|
+
import { applyAccordionEvent, tryCreateAccordionState, } from '@sectile/core/accordion';
|
|
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
|
+
export function createAccordionController(options) {
|
|
10
|
+
const domain = tryCreateSequence(options.items);
|
|
11
|
+
if (!domain.ok)
|
|
12
|
+
return domain;
|
|
13
|
+
const disabled = createDisabledItems(domain.value, options.disabledItems);
|
|
14
|
+
if (!disabled.ok)
|
|
15
|
+
return disabled;
|
|
16
|
+
const policies = accordionPolicies(options, disabled.value);
|
|
17
|
+
const valueControlled = options.value !== undefined;
|
|
18
|
+
const highlightControlled = options.highlightedValue !== undefined;
|
|
19
|
+
const initialValue = options.value ?? options.defaultValue
|
|
20
|
+
?? (policies.collapsible === false && options.items[0] !== undefined ? [options.items[0]] : []);
|
|
21
|
+
const runtime = createSemanticController({
|
|
22
|
+
interaction: options,
|
|
23
|
+
interactionIntent: accordionIntent,
|
|
24
|
+
initial: tryCreateAccordionState(domain.value, {
|
|
25
|
+
openIDs: initialValue,
|
|
26
|
+
current: options.highlightedValue !== undefined
|
|
27
|
+
? options.highlightedValue
|
|
28
|
+
: options.defaultHighlightedValue ?? null,
|
|
29
|
+
}, policies),
|
|
30
|
+
reducer: (state, event) => applyAccordionEvent(domain.value, state, event, policies),
|
|
31
|
+
reconcile: (previous, proposed) => tryCreateAccordionState(domain.value, {
|
|
32
|
+
openIDs: valueControlled || options.readOnly === true ? previous.openIDs : proposed.openIDs,
|
|
33
|
+
current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
|
|
34
|
+
}, policies),
|
|
35
|
+
notify: (previous, proposed) => {
|
|
36
|
+
if (!sameIDs(previous.openIDs, proposed.openIDs)) {
|
|
37
|
+
options.onValueChange?.({ value: proposed.openIDs, previousValue: previous.openIDs });
|
|
38
|
+
}
|
|
39
|
+
if (previous.cursor.current !== proposed.cursor.current) {
|
|
40
|
+
options.onHighlightedValueChange?.({
|
|
41
|
+
value: proposed.cursor.current,
|
|
42
|
+
previousValue: previous.cursor.current,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
toEffect: (command) => command,
|
|
47
|
+
});
|
|
48
|
+
if (!runtime.ok)
|
|
49
|
+
return runtime;
|
|
50
|
+
return {
|
|
51
|
+
ok: true,
|
|
52
|
+
value: new DOMAccordionController(domain.value, policies, runtime.value, valueControlled, highlightControlled),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function createAccordion(options) {
|
|
56
|
+
return unwrap(tryCreateAccordion(options));
|
|
57
|
+
}
|
|
58
|
+
export function tryCreateAccordion(options) {
|
|
59
|
+
return createFacadeConnection(options, (resolved) => {
|
|
60
|
+
const controller = createAccordionController({
|
|
61
|
+
...resolved,
|
|
62
|
+
...((resolved.value ?? resolved.openIDs) === undefined
|
|
63
|
+
? {}
|
|
64
|
+
: { value: resolved.value ?? resolved.openIDs }),
|
|
65
|
+
...((resolved.defaultValue ?? resolved.defaultOpenIDs) === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: { defaultValue: resolved.defaultValue ?? resolved.defaultOpenIDs }),
|
|
68
|
+
onValueChange: (change) => {
|
|
69
|
+
resolved.onValueChange?.(change);
|
|
70
|
+
resolved.onOpenChange?.(change.value);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
if (!controller.ok)
|
|
74
|
+
return controller;
|
|
75
|
+
return { ok: true, value: connectAccordion({ ...resolved, controller: controller.value }) };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function connectAccordion(options) {
|
|
79
|
+
return new DOMAccordionConnection(options);
|
|
80
|
+
}
|
|
81
|
+
export function getAccordionRootAttributes(options = {}) {
|
|
82
|
+
return Object.freeze({
|
|
83
|
+
'data-scope': 'accordion',
|
|
84
|
+
'data-part': 'root',
|
|
85
|
+
'data-disabled': options.disabled === true ? '' : undefined,
|
|
86
|
+
'data-readonly': options.readOnly === true ? '' : undefined,
|
|
87
|
+
'aria-label': options.label,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
export function getAccordionTriggerAttributes(state, attributes, options = {}) {
|
|
91
|
+
const unavailable = options.disabled === true || attributes.disabled === true;
|
|
92
|
+
const open = state.has(attributes.id);
|
|
93
|
+
return Object.freeze({
|
|
94
|
+
id: attributes.triggerID,
|
|
95
|
+
type: options.native === true ? 'button' : undefined,
|
|
96
|
+
disabled: options.native === true && unavailable ? true : undefined,
|
|
97
|
+
tabindex: unavailable ? -1 : 0,
|
|
98
|
+
'aria-expanded': String(open),
|
|
99
|
+
'aria-controls': attributes.panelID,
|
|
100
|
+
'aria-disabled': unavailable ? 'true' : undefined,
|
|
101
|
+
'data-scope': 'accordion',
|
|
102
|
+
'data-part': 'trigger',
|
|
103
|
+
'data-accordion-id': String(attributes.id),
|
|
104
|
+
'data-state': open ? 'open' : 'closed',
|
|
105
|
+
'data-disabled': unavailable ? '' : undefined,
|
|
106
|
+
'data-readonly': options.readOnly === true ? '' : undefined,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
export function getAccordionPanelAttributes(state, id, options = {}) {
|
|
110
|
+
const open = state.has(id);
|
|
111
|
+
return Object.freeze({
|
|
112
|
+
id: options.panelID,
|
|
113
|
+
role: 'region',
|
|
114
|
+
hidden: !open,
|
|
115
|
+
'aria-labelledby': options.triggerID,
|
|
116
|
+
'data-scope': 'accordion',
|
|
117
|
+
'data-part': 'content',
|
|
118
|
+
'data-state': open ? 'open' : 'closed',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export function toAccordionEvent(input) {
|
|
122
|
+
if (input.altKey || input.ctrlKey || input.metaKey)
|
|
123
|
+
return null;
|
|
124
|
+
if (input.key === 'ArrowDown')
|
|
125
|
+
return 'next';
|
|
126
|
+
if (input.key === 'ArrowUp')
|
|
127
|
+
return 'previous';
|
|
128
|
+
if (input.key === 'Home')
|
|
129
|
+
return 'first';
|
|
130
|
+
if (input.key === 'End')
|
|
131
|
+
return 'last';
|
|
132
|
+
if (input.key === 'Enter' || input.key === ' ')
|
|
133
|
+
return 'toggle';
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
class DOMAccordionController {
|
|
137
|
+
#domain;
|
|
138
|
+
#policies;
|
|
139
|
+
#runtime;
|
|
140
|
+
#valueControlled;
|
|
141
|
+
#highlightControlled;
|
|
142
|
+
constructor(domain, policies, runtime, valueControlled, highlightControlled) {
|
|
143
|
+
this.#domain = domain;
|
|
144
|
+
this.#policies = policies;
|
|
145
|
+
this.#runtime = runtime;
|
|
146
|
+
this.#valueControlled = valueControlled;
|
|
147
|
+
this.#highlightControlled = highlightControlled;
|
|
148
|
+
}
|
|
149
|
+
getSnapshot() { return this.#runtime.getSnapshot(); }
|
|
150
|
+
syncControlledValues(values) {
|
|
151
|
+
const value = values.value ?? values.openIDs;
|
|
152
|
+
if (this.#valueControlled !== (value !== undefined)
|
|
153
|
+
|| this.#highlightControlled !== (values.highlightedValue !== undefined)) {
|
|
154
|
+
return { ok: false, error: {
|
|
155
|
+
class: 'construction',
|
|
156
|
+
code: 'controlled-shape-mismatch',
|
|
157
|
+
message: 'Controlled accordion values must preserve their construction-time shape.',
|
|
158
|
+
} };
|
|
159
|
+
}
|
|
160
|
+
const state = this.#runtime.getSnapshot().state;
|
|
161
|
+
return this.#runtime.replace(tryCreateAccordionState(this.#domain, {
|
|
162
|
+
openIDs: this.#valueControlled ? value : state.openIDs,
|
|
163
|
+
current: this.#highlightControlled ? values.highlightedValue : state.cursor.current,
|
|
164
|
+
}, this.#policies));
|
|
165
|
+
}
|
|
166
|
+
handleEvent(event, expectedRevision) {
|
|
167
|
+
return this.#runtime.handle(event, expectedRevision);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
class DOMAccordionConnection {
|
|
171
|
+
#options;
|
|
172
|
+
#disabledItems;
|
|
173
|
+
#keydown;
|
|
174
|
+
#click;
|
|
175
|
+
constructor(options) {
|
|
176
|
+
this.#options = options;
|
|
177
|
+
this.#disabledItems = new Set(options.disabledItems ?? []);
|
|
178
|
+
this.setRootAttributes(options.label);
|
|
179
|
+
this.#keydown = (event) => {
|
|
180
|
+
const semantic = toAccordionEvent(event);
|
|
181
|
+
if (semantic === null)
|
|
182
|
+
return;
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
this.handleEvent(semantic);
|
|
185
|
+
};
|
|
186
|
+
this.#click = (event) => {
|
|
187
|
+
const id = findDelegatedID(event.target, options.root, 'accordionId');
|
|
188
|
+
if (id !== null)
|
|
189
|
+
this.handleEvent({ type: 'toggle', id: id });
|
|
190
|
+
};
|
|
191
|
+
options.root.addEventListener('keydown', this.#keydown);
|
|
192
|
+
options.root.addEventListener('click', this.#click);
|
|
193
|
+
}
|
|
194
|
+
getSnapshot() { return this.#options.controller.getSnapshot(); }
|
|
195
|
+
syncControlledValues(values) {
|
|
196
|
+
const result = this.#options.controller.syncControlledValues({
|
|
197
|
+
...values,
|
|
198
|
+
...((values.value ?? values.openIDs) === undefined
|
|
199
|
+
? {}
|
|
200
|
+
: { value: values.value ?? values.openIDs }),
|
|
201
|
+
});
|
|
202
|
+
if (result.ok)
|
|
203
|
+
this.#options.onUpdate?.();
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
setRootAttributes(label = this.#options.label) {
|
|
207
|
+
applyAttributes(this.#options.root, getAccordionRootAttributes({
|
|
208
|
+
...(this.#options.disabled === undefined ? {} : { disabled: this.#options.disabled }),
|
|
209
|
+
...(this.#options.readOnly === undefined ? {} : { readOnly: this.#options.readOnly }),
|
|
210
|
+
...(label === undefined ? {} : { label }),
|
|
211
|
+
}));
|
|
212
|
+
setInteractionAttributes(this.#options.root, this.#options);
|
|
213
|
+
}
|
|
214
|
+
setTriggerAttributes(element, attributes) {
|
|
215
|
+
element.dataset['accordionId'] = String(attributes.id);
|
|
216
|
+
applyAttributes(element, getAccordionTriggerAttributes(this.getSnapshot().state, attributes, {
|
|
217
|
+
disabled: this.#options.disabled || this.#disabledItems.has(attributes.id),
|
|
218
|
+
...(this.#options.readOnly === undefined ? {} : { readOnly: this.#options.readOnly }),
|
|
219
|
+
native: element.tagName === 'BUTTON' || 'disabled' in element,
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
setHeaderAttributes(element, id, panelID, disabled = false) {
|
|
223
|
+
this.setTriggerAttributes(element, {
|
|
224
|
+
id,
|
|
225
|
+
...(panelID === undefined ? {} : { panelID }),
|
|
226
|
+
disabled,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
setPanelAttributes(element, id, attributes = {}) {
|
|
230
|
+
applyAttributes(element, getAccordionPanelAttributes(this.getSnapshot().state, id, typeof attributes === 'string' ? { triggerID: attributes } : attributes));
|
|
231
|
+
}
|
|
232
|
+
handleEvent(event) {
|
|
233
|
+
const result = this.#options.controller.handleEvent(event);
|
|
234
|
+
if (result.ok) {
|
|
235
|
+
queueMicrotask(() => focusCurrent(this.#options.root, result.snapshot.state.cursor.current));
|
|
236
|
+
this.#options.onUpdate?.();
|
|
237
|
+
}
|
|
238
|
+
return result.ok;
|
|
239
|
+
}
|
|
240
|
+
disconnect() {
|
|
241
|
+
this.#options.root.removeEventListener('keydown', this.#keydown);
|
|
242
|
+
this.#options.root.removeEventListener('click', this.#click);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function accordionPolicies(options, disabledItems) {
|
|
246
|
+
return Object.freeze({
|
|
247
|
+
expansion: options.expansion ?? 'single',
|
|
248
|
+
collapsible: options.collapsible ?? true,
|
|
249
|
+
eligible: (id) => !disabledItems.has(id),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
function accordionIntent(event) {
|
|
253
|
+
return (typeof event === 'string' && ['next', 'previous', 'first', 'last'].includes(event))
|
|
254
|
+
|| (typeof event === 'object' && event.type === 'focus')
|
|
255
|
+
? 'navigate'
|
|
256
|
+
: 'mutate';
|
|
257
|
+
}
|
|
258
|
+
function focusCurrent(root, id) {
|
|
259
|
+
if (id === null)
|
|
260
|
+
return;
|
|
261
|
+
for (const element of root.querySelectorAll('[data-accordion-id]')) {
|
|
262
|
+
if (element.dataset['accordionId'] === String(id))
|
|
263
|
+
element.focus();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function applyAttributes(element, attributes) {
|
|
267
|
+
for (const [name, value] of Object.entries(attributes)) {
|
|
268
|
+
if (name === 'disabled' && 'disabled' in element) {
|
|
269
|
+
element.disabled = value === true;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
if (name === 'hidden') {
|
|
273
|
+
element.hidden = value === true;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (name === 'tabindex') {
|
|
277
|
+
element.tabIndex = Number(value ?? 0);
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (value === undefined || value === false)
|
|
281
|
+
element.removeAttribute(name);
|
|
282
|
+
else
|
|
283
|
+
element.setAttribute(name, value === true ? '' : String(value));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function sameIDs(left, right) {
|
|
287
|
+
return left.length === right.length && left.every((id, index) => id === right[index]);
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result } from '@sectile/core';
|
|
3
|
+
import { type AlertDialogEvent, type AlertDialogState } from '@sectile/core/alert-dialog';
|
|
4
|
+
import { type DOMPopupConnection } from './internal/popup-control.js';
|
|
5
|
+
import type { InteractOutsideHandler } from './interact-outside.js';
|
|
6
|
+
export type { InteractOutsideEvent, InteractOutsideHandler } from './interact-outside.js';
|
|
7
|
+
export interface AlertDialogOptions {
|
|
8
|
+
readonly root: HTMLElement;
|
|
9
|
+
readonly trigger?: HTMLElement;
|
|
10
|
+
readonly open?: boolean;
|
|
11
|
+
readonly defaultOpen?: boolean;
|
|
12
|
+
readonly disabled?: boolean;
|
|
13
|
+
readonly label?: string;
|
|
14
|
+
readonly labelledBy?: string;
|
|
15
|
+
readonly describedBy?: string;
|
|
16
|
+
readonly initialFocus?: HTMLElement;
|
|
17
|
+
readonly autoFocus?: boolean;
|
|
18
|
+
readonly overlay?: HTMLElement;
|
|
19
|
+
readonly restoreFocus?: boolean;
|
|
20
|
+
readonly trapFocus?: boolean;
|
|
21
|
+
readonly closeOnInteractOutside?: boolean;
|
|
22
|
+
readonly interactOutsideExclusions?: readonly HTMLElement[];
|
|
23
|
+
readonly onInteractOutside?: InteractOutsideHandler;
|
|
24
|
+
readonly onOpenChange?: (open: boolean) => void;
|
|
25
|
+
readonly onInitialFocus?: () => void;
|
|
26
|
+
readonly onFocusRestore?: () => void;
|
|
27
|
+
readonly onAnnounce?: () => void;
|
|
28
|
+
readonly onUpdate?: () => void;
|
|
29
|
+
readonly manageVisibility?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export type AlertDialogOpenChangeHandler = NonNullable<AlertDialogOptions['onOpenChange']>;
|
|
32
|
+
export type AlertDialogInitialFocusHandler = NonNullable<AlertDialogOptions['onInitialFocus']>;
|
|
33
|
+
export type AlertDialogFocusRestoreHandler = NonNullable<AlertDialogOptions['onFocusRestore']>;
|
|
34
|
+
export type AlertDialogAnnounceHandler = NonNullable<AlertDialogOptions['onAnnounce']>;
|
|
35
|
+
export type AlertDialogInteractOutsideHandler = NonNullable<AlertDialogOptions['onInteractOutside']>;
|
|
36
|
+
export type AlertDialogUpdateHandler = NonNullable<AlertDialogOptions['onUpdate']>;
|
|
37
|
+
export type AlertDialogConnection = DOMPopupConnection<AlertDialogState, AlertDialogEvent>;
|
|
38
|
+
export declare function createAlertDialog(o: AlertDialogOptions): FacadeConnection<AlertDialogConnection>;
|
|
39
|
+
export declare function tryCreateAlertDialog(o: AlertDialogOptions): Result<FacadeConnection<AlertDialogConnection>>;
|
|
40
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA6E,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACrK,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACjJ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACxJ,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACzI,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IACjH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC7I;AAED,MAAM,MAAM,4BAA4B,GAAG,WAAW,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3F,MAAM,MAAM,8BAA8B,GAAG,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/F,MAAM,MAAM,8BAA8B,GAAG,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/F,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AACvF,MAAM,MAAM,iCAAiC,GAAG,WAAW,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACrG,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAC3F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,CAEhG;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAE3G"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { applyAlertDialogEvent, tryCreateAlertDialogState } from '@sectile/core/alert-dialog';
|
|
4
|
+
import { createDOMPopup } from './internal/popup-control.js';
|
|
5
|
+
export function createAlertDialog(o) {
|
|
6
|
+
return unwrap(tryCreateAlertDialog(o));
|
|
7
|
+
}
|
|
8
|
+
export function tryCreateAlertDialog(o) {
|
|
9
|
+
return createFacadeConnection(o, (o) => tryCreateAlertDialogConnection(o));
|
|
10
|
+
}
|
|
11
|
+
function tryCreateAlertDialogConnection(o) {
|
|
12
|
+
return createDOMPopup({ root: o.root, ...(o.trigger === undefined ? {} : { trigger: o.trigger }), role: 'alertdialog', modal: true, ...(o.label === undefined ? {} : { label: o.label }), ...(o.labelledBy === undefined ? {} : { labelledBy: o.labelledBy }), ...(o.describedBy === undefined ? {} : { describedBy: o.describedBy }), controlled: o.open !== undefined, initial: tryCreateAlertDialogState(o.open ?? o.defaultOpen ?? false), open: 'open', toggle: 'toggle', close: 'close', reducer: applyAlertDialogEvent, create: tryCreateAlertDialogState, read: (s) => s.open, interaction: o, ...(o.initialFocus === undefined ? {} : { initialFocus: o.initialFocus }), autoFocus: o.autoFocus ?? true, restoreFocus: o.restoreFocus ?? true, trapFocus: o.trapFocus ?? true, closeOnInteractOutside: o.closeOnInteractOutside ?? false, ...(o.interactOutsideExclusions === undefined ? {} : { interactOutsideExclusions: o.interactOutsideExclusions }), ...(o.overlay === undefined ? {} : { modalBranches: [o.overlay] }), ...(o.onInteractOutside === undefined ? {} : { onInteractOutside: o.onInteractOutside }), ...(o.manageVisibility === undefined ? {} : { manageVisibility: o.manageVisibility }), onOpenChange: o.onOpenChange, command: (c) => c.type === 'request-initial-focus' ? o.onInitialFocus?.() : c.type === 'request-focus-restore' ? o.onFocusRestore?.() : o.onAnnounce?.(), onUpdate: o.onUpdate });
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAyE,MAAM,4BAA4B,CAAC;AACrK,OAAO,EAAE,cAAc,EAA2B,MAAM,6BAA6B,CAAC;AAqBtF,MAAM,UAAU,iBAAiB,CAAC,CAAqB;IACrD,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAqB;IACxD,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,8BAA8B,CAAC,CAAqB;IAC3D,OAAO,cAAc,CAAyD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC,yBAAyB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACp6C,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result, StableID } from '@sectile/core';
|
|
3
|
+
import { type CalendarCommand, type CalendarEvent, type CalendarPolicies, type CalendarState } from '@sectile/core/calendar';
|
|
4
|
+
export type { CalendarPolicies } from '@sectile/core/calendar';
|
|
5
|
+
import { type Grid } from '@sectile/core/grid';
|
|
6
|
+
import { type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
|
|
7
|
+
export interface KeyboardInput {
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly altKey?: boolean;
|
|
10
|
+
readonly ctrlKey?: boolean;
|
|
11
|
+
readonly metaKey?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export type CalendarEffect<ID extends StableID = StableID> = {
|
|
14
|
+
readonly type: 'focus-element';
|
|
15
|
+
readonly id: ID;
|
|
16
|
+
} | {
|
|
17
|
+
readonly type: 'request-page';
|
|
18
|
+
readonly direction: -1 | 1;
|
|
19
|
+
readonly from: ID | null;
|
|
20
|
+
};
|
|
21
|
+
export interface CalendarValueChangeDetails<ID extends StableID = StableID> {
|
|
22
|
+
readonly value: ID | null;
|
|
23
|
+
readonly previousValue: ID | null;
|
|
24
|
+
}
|
|
25
|
+
export interface CalendarHighlightChangeDetails<ID extends StableID = StableID> {
|
|
26
|
+
readonly value: ID | null;
|
|
27
|
+
readonly previousValue: ID | null;
|
|
28
|
+
}
|
|
29
|
+
export interface CalendarControllerOptions<ID extends StableID = StableID> {
|
|
30
|
+
readonly grid: Grid<ID>;
|
|
31
|
+
readonly disabled?: boolean;
|
|
32
|
+
readonly policies?: CalendarPolicies<ID>;
|
|
33
|
+
readonly value?: ID | null;
|
|
34
|
+
readonly defaultValue?: ID | null;
|
|
35
|
+
readonly highlightedValue?: ID | null;
|
|
36
|
+
readonly defaultHighlightedValue?: ID | null;
|
|
37
|
+
readonly onValueChange?: (change: CalendarValueChangeDetails<ID>) => void;
|
|
38
|
+
readonly onHighlightedValueChange?: (change: CalendarHighlightChangeDetails<ID>) => void;
|
|
39
|
+
}
|
|
40
|
+
export type CalendarControllerValueChangeHandler<ID extends StableID = StableID> = NonNullable<CalendarControllerOptions<ID>['onValueChange']>;
|
|
41
|
+
export type CalendarControllerHighlightedValueChangeHandler<ID extends StableID = StableID> = NonNullable<CalendarControllerOptions<ID>['onHighlightedValueChange']>;
|
|
42
|
+
export interface CalendarControlledValues<ID extends StableID = StableID> {
|
|
43
|
+
readonly value?: ID | null;
|
|
44
|
+
readonly highlightedValue?: ID | null;
|
|
45
|
+
}
|
|
46
|
+
export interface CalendarController<ID extends StableID = StableID> {
|
|
47
|
+
readonly grid: Grid<ID>;
|
|
48
|
+
getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
|
|
49
|
+
syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
|
|
50
|
+
handleKeyboardInput(input: KeyboardInput, expectedRevision?: number): RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
|
|
51
|
+
handleEvent(event: CalendarEvent<ID>, expectedRevision?: number): RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
|
|
52
|
+
}
|
|
53
|
+
export interface CalendarPageRequestDetails<ID extends StableID = StableID> {
|
|
54
|
+
readonly direction: -1 | 1;
|
|
55
|
+
readonly from: ID | null;
|
|
56
|
+
}
|
|
57
|
+
export interface CalendarTransitionDetails<ID extends StableID = StableID> {
|
|
58
|
+
readonly event: CalendarEvent<ID>;
|
|
59
|
+
readonly result: RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
|
|
60
|
+
}
|
|
61
|
+
export interface CalendarConnectionOptions<ID extends StableID = StableID> {
|
|
62
|
+
readonly controller: CalendarController<ID>;
|
|
63
|
+
readonly root: HTMLElement;
|
|
64
|
+
readonly disabled?: boolean;
|
|
65
|
+
readonly onPageRequest?: (details: CalendarPageRequestDetails<ID>) => void;
|
|
66
|
+
readonly onTransition?: (details: CalendarTransitionDetails<ID>) => void;
|
|
67
|
+
readonly onUpdate?: () => void;
|
|
68
|
+
}
|
|
69
|
+
export type CalendarConnectionPageRequestHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onPageRequest']>;
|
|
70
|
+
export type CalendarConnectionTransitionHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onTransition']>;
|
|
71
|
+
export type CalendarConnectionUpdateHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onUpdate']>;
|
|
72
|
+
export interface CalendarCellAttributes<ID extends StableID = StableID> {
|
|
73
|
+
readonly id: ID;
|
|
74
|
+
readonly rowIndex: number;
|
|
75
|
+
readonly columnIndex: number;
|
|
76
|
+
readonly disabled?: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface CalendarConnection<ID extends StableID = StableID> {
|
|
79
|
+
readonly grid: Grid<ID>;
|
|
80
|
+
getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
|
|
81
|
+
syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
|
|
82
|
+
setCalendarAttributes(label?: string): void;
|
|
83
|
+
setCellAttributes(element: HTMLElement, attributes: CalendarCellAttributes<ID>): void;
|
|
84
|
+
handleEvent(event: CalendarEvent<ID>): boolean;
|
|
85
|
+
handleKeyboardEvent(event: KeyboardEvent): boolean;
|
|
86
|
+
focusCurrent(): void;
|
|
87
|
+
disconnect(): void;
|
|
88
|
+
}
|
|
89
|
+
export type CalendarOptions<ID extends StableID = StableID> = Omit<CalendarControllerOptions<ID>, 'grid'> & Omit<CalendarConnectionOptions<ID>, 'controller'> & {
|
|
90
|
+
readonly rows: readonly (readonly ID[])[];
|
|
91
|
+
};
|
|
92
|
+
export declare function createCalendarController<ID extends StableID>(options: CalendarControllerOptions<ID>): Result<CalendarController<ID>>;
|
|
93
|
+
export declare function createCalendar<ID extends StableID>(options: CalendarOptions<ID>): FacadeConnection<CalendarConnection<ID>>;
|
|
94
|
+
export declare function tryCreateCalendar<ID extends StableID>(options: CalendarOptions<ID>): Result<FacadeConnection<CalendarConnection<ID>>>;
|
|
95
|
+
export declare function connectCalendar<ID extends StableID>(options: CalendarConnectionOptions<ID>): CalendarConnection<ID>;
|
|
96
|
+
export declare function toCalendarEvent<ID extends StableID = StableID>(input: KeyboardInput): CalendarEvent<ID> | null;
|
|
97
|
+
export declare function toCalendarEffect<ID extends StableID>(command: CalendarCommand<ID>): CalendarEffect<ID>;
|
|
98
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
|