@sectile/dom 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +6 -0
  2. package/dist/accordion.d.ts +68 -13
  3. package/dist/accordion.d.ts.map +1 -1
  4. package/dist/accordion.js +224 -78
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/alert-dialog.d.ts +5 -0
  7. package/dist/alert-dialog.d.ts.map +1 -1
  8. package/dist/alert-dialog.js +2 -2
  9. package/dist/alert-dialog.js.map +1 -1
  10. package/dist/calendar.d.ts +6 -0
  11. package/dist/calendar.d.ts.map +1 -1
  12. package/dist/calendar.js +10 -10
  13. package/dist/calendar.js.map +1 -1
  14. package/dist/carousel.d.ts +11 -1
  15. package/dist/carousel.d.ts.map +1 -1
  16. package/dist/carousel.js +13 -8
  17. package/dist/carousel.js.map +1 -1
  18. package/dist/cascade-select.d.ts +61 -0
  19. package/dist/cascade-select.d.ts.map +1 -0
  20. package/dist/cascade-select.js +175 -0
  21. package/dist/cascade-select.js.map +1 -0
  22. package/dist/checkbox.d.ts +47 -1
  23. package/dist/checkbox.d.ts.map +1 -1
  24. package/dist/checkbox.js +54 -3
  25. package/dist/checkbox.js.map +1 -1
  26. package/dist/color-picker.d.ts +54 -0
  27. package/dist/color-picker.d.ts.map +1 -0
  28. package/dist/color-picker.js +316 -0
  29. package/dist/color-picker.js.map +1 -0
  30. package/dist/combobox.d.ts +9 -0
  31. package/dist/combobox.d.ts.map +1 -1
  32. package/dist/combobox.js +23 -12
  33. package/dist/combobox.js.map +1 -1
  34. package/dist/date-field.d.ts +6 -0
  35. package/dist/date-field.d.ts.map +1 -1
  36. package/dist/date-field.js +8 -5
  37. package/dist/date-field.js.map +1 -1
  38. package/dist/date-picker.d.ts +10 -1
  39. package/dist/date-picker.d.ts.map +1 -1
  40. package/dist/date-picker.js +15 -6
  41. package/dist/date-picker.js.map +1 -1
  42. package/dist/date-range-field.d.ts +48 -0
  43. package/dist/date-range-field.d.ts.map +1 -0
  44. package/dist/date-range-field.js +114 -0
  45. package/dist/date-range-field.js.map +1 -0
  46. package/dist/date-range-picker.d.ts +8 -1
  47. package/dist/date-range-picker.d.ts.map +1 -1
  48. package/dist/date-range-picker.js +14 -9
  49. package/dist/date-range-picker.js.map +1 -1
  50. package/dist/date-time-field.d.ts +6 -0
  51. package/dist/date-time-field.d.ts.map +1 -1
  52. package/dist/date-time-field.js +10 -7
  53. package/dist/date-time-field.js.map +1 -1
  54. package/dist/date-time-picker.d.ts +10 -1
  55. package/dist/date-time-picker.d.ts.map +1 -1
  56. package/dist/date-time-picker.js +49 -13
  57. package/dist/date-time-picker.js.map +1 -1
  58. package/dist/date-time-range-picker.d.ts +12 -2
  59. package/dist/date-time-range-picker.d.ts.map +1 -1
  60. package/dist/date-time-range-picker.js +62 -9
  61. package/dist/date-time-range-picker.js.map +1 -1
  62. package/dist/dialog.d.ts +4 -0
  63. package/dist/dialog.d.ts.map +1 -1
  64. package/dist/dialog.js +2 -2
  65. package/dist/dialog.js.map +1 -1
  66. package/dist/disclosure.d.ts +46 -0
  67. package/dist/disclosure.d.ts.map +1 -1
  68. package/dist/disclosure.js +99 -31
  69. package/dist/disclosure.js.map +1 -1
  70. package/dist/editable.d.ts +37 -0
  71. package/dist/editable.d.ts.map +1 -0
  72. package/dist/editable.js +83 -0
  73. package/dist/editable.js.map +1 -0
  74. package/dist/feed.d.ts +12 -2
  75. package/dist/feed.d.ts.map +1 -1
  76. package/dist/feed.js +128 -45
  77. package/dist/feed.js.map +1 -1
  78. package/dist/form.d.ts +82 -0
  79. package/dist/form.d.ts.map +1 -0
  80. package/dist/form.js +473 -0
  81. package/dist/form.js.map +1 -0
  82. package/dist/grid.d.ts +12 -1
  83. package/dist/grid.d.ts.map +1 -1
  84. package/dist/grid.js +18 -11
  85. package/dist/grid.js.map +1 -1
  86. package/dist/index.d.ts +76 -12
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +27 -10
  89. package/dist/index.js.map +1 -1
  90. package/dist/internal/checked-control.d.ts +39 -0
  91. package/dist/internal/checked-control.d.ts.map +1 -1
  92. package/dist/internal/checked-control.js +111 -19
  93. package/dist/internal/checked-control.js.map +1 -1
  94. package/dist/internal/controller.js +2 -2
  95. package/dist/internal/controller.js.map +1 -1
  96. package/dist/internal/date-picker-cell.d.ts +2 -0
  97. package/dist/internal/date-picker-cell.d.ts.map +1 -0
  98. package/dist/internal/date-picker-cell.js +10 -0
  99. package/dist/internal/date-picker-cell.js.map +1 -0
  100. package/dist/internal/direction.d.ts +3 -0
  101. package/dist/internal/direction.d.ts.map +1 -0
  102. package/dist/internal/direction.js +8 -0
  103. package/dist/internal/direction.js.map +1 -0
  104. package/dist/internal/facade.d.ts +2 -1
  105. package/dist/internal/facade.d.ts.map +1 -1
  106. package/dist/internal/facade.js.map +1 -1
  107. package/dist/internal/floating-position.d.ts +26 -0
  108. package/dist/internal/floating-position.d.ts.map +1 -0
  109. package/dist/internal/floating-position.js +93 -0
  110. package/dist/internal/floating-position.js.map +1 -0
  111. package/dist/internal/layer-binding.d.ts +16 -0
  112. package/dist/internal/layer-binding.d.ts.map +1 -0
  113. package/dist/internal/layer-binding.js +99 -0
  114. package/dist/internal/layer-binding.js.map +1 -0
  115. package/dist/internal/layer-manager.d.ts +19 -0
  116. package/dist/internal/layer-manager.d.ts.map +1 -0
  117. package/dist/internal/layer-manager.js +81 -0
  118. package/dist/internal/layer-manager.js.map +1 -0
  119. package/dist/internal/menu-control.d.ts +4 -1
  120. package/dist/internal/menu-control.d.ts.map +1 -1
  121. package/dist/internal/menu-control.js +53 -25
  122. package/dist/internal/menu-control.js.map +1 -1
  123. package/dist/internal/popup-control.d.ts +1 -0
  124. package/dist/internal/popup-control.d.ts.map +1 -1
  125. package/dist/internal/popup-control.js +51 -2
  126. package/dist/internal/popup-control.js.map +1 -1
  127. package/dist/internal/semantic-controller.js +4 -4
  128. package/dist/internal/semantic-controller.js.map +1 -1
  129. package/dist/internal/text-element.d.ts.map +1 -1
  130. package/dist/internal/text-element.js +3 -1
  131. package/dist/internal/text-element.js.map +1 -1
  132. package/dist/listbox.d.ts +40 -1
  133. package/dist/listbox.d.ts.map +1 -1
  134. package/dist/listbox.js +85 -38
  135. package/dist/listbox.js.map +1 -1
  136. package/dist/menu.d.ts +2 -0
  137. package/dist/menu.d.ts.map +1 -1
  138. package/dist/menu.js.map +1 -1
  139. package/dist/month-picker.d.ts +5 -0
  140. package/dist/month-picker.d.ts.map +1 -0
  141. package/dist/month-picker.js +3 -0
  142. package/dist/month-picker.js.map +1 -0
  143. package/dist/month-range-picker.d.ts +4 -0
  144. package/dist/month-range-picker.d.ts.map +1 -0
  145. package/dist/month-range-picker.js +3 -0
  146. package/dist/month-range-picker.js.map +1 -0
  147. package/dist/multi-thumb-slider.d.ts +5 -0
  148. package/dist/multi-thumb-slider.d.ts.map +1 -1
  149. package/dist/multi-thumb-slider.js +8 -8
  150. package/dist/multi-thumb-slider.js.map +1 -1
  151. package/dist/navigation-menu.d.ts +8 -0
  152. package/dist/navigation-menu.d.ts.map +1 -0
  153. package/dist/navigation-menu.js +10 -0
  154. package/dist/navigation-menu.js.map +1 -0
  155. package/dist/number-field.d.ts +3 -0
  156. package/dist/number-field.d.ts.map +1 -1
  157. package/dist/number-field.js +8 -6
  158. package/dist/number-field.js.map +1 -1
  159. package/dist/pagination.d.ts +13 -0
  160. package/dist/pagination.d.ts.map +1 -1
  161. package/dist/pagination.js +35 -5
  162. package/dist/pagination.js.map +1 -1
  163. package/dist/pin-input.d.ts +4 -0
  164. package/dist/pin-input.d.ts.map +1 -1
  165. package/dist/pin-input.js +12 -4
  166. package/dist/pin-input.js.map +1 -1
  167. package/dist/popover.d.ts +54 -0
  168. package/dist/popover.d.ts.map +1 -0
  169. package/dist/popover.js +79 -0
  170. package/dist/popover.js.map +1 -0
  171. package/dist/quantity-field.d.ts +7 -0
  172. package/dist/quantity-field.d.ts.map +1 -1
  173. package/dist/quantity-field.js +24 -6
  174. package/dist/quantity-field.js.map +1 -1
  175. package/dist/radio-group.d.ts +30 -1
  176. package/dist/radio-group.d.ts.map +1 -1
  177. package/dist/radio-group.js +81 -28
  178. package/dist/radio-group.js.map +1 -1
  179. package/dist/range-calendar.d.ts +3 -0
  180. package/dist/range-calendar.d.ts.map +1 -0
  181. package/dist/range-calendar.js +2 -0
  182. package/dist/range-calendar.js.map +1 -0
  183. package/dist/rating.d.ts +1 -0
  184. package/dist/rating.d.ts.map +1 -1
  185. package/dist/rating.js.map +1 -1
  186. package/dist/reorder.d.ts +39 -0
  187. package/dist/reorder.d.ts.map +1 -0
  188. package/dist/reorder.js +308 -0
  189. package/dist/reorder.js.map +1 -0
  190. package/dist/select.d.ts +5 -0
  191. package/dist/select.d.ts.map +1 -1
  192. package/dist/select.js +11 -9
  193. package/dist/select.js.map +1 -1
  194. package/dist/slider.d.ts +35 -0
  195. package/dist/slider.d.ts.map +1 -1
  196. package/dist/slider.js +111 -34
  197. package/dist/slider.js.map +1 -1
  198. package/dist/spin-button.d.ts +3 -0
  199. package/dist/spin-button.d.ts.map +1 -1
  200. package/dist/spin-button.js +10 -7
  201. package/dist/spin-button.js.map +1 -1
  202. package/dist/switch.d.ts +30 -1
  203. package/dist/switch.d.ts.map +1 -1
  204. package/dist/switch.js +35 -3
  205. package/dist/switch.js.map +1 -1
  206. package/dist/tabs.d.ts +32 -1
  207. package/dist/tabs.d.ts.map +1 -1
  208. package/dist/tabs.js +98 -32
  209. package/dist/tabs.js.map +1 -1
  210. package/dist/tags-input.d.ts +6 -0
  211. package/dist/tags-input.d.ts.map +1 -1
  212. package/dist/tags-input.js +7 -8
  213. package/dist/tags-input.js.map +1 -1
  214. package/dist/text.d.ts +5 -0
  215. package/dist/text.d.ts.map +1 -1
  216. package/dist/text.js +32 -10
  217. package/dist/text.js.map +1 -1
  218. package/dist/time-field.d.ts +6 -0
  219. package/dist/time-field.d.ts.map +1 -1
  220. package/dist/time-field.js +6 -4
  221. package/dist/time-field.js.map +1 -1
  222. package/dist/time-range-field.d.ts +48 -0
  223. package/dist/time-range-field.d.ts.map +1 -0
  224. package/dist/time-range-field.js +98 -0
  225. package/dist/time-range-field.js.map +1 -0
  226. package/dist/timer.d.ts +32 -0
  227. package/dist/timer.d.ts.map +1 -0
  228. package/dist/timer.js +46 -0
  229. package/dist/timer.js.map +1 -0
  230. package/dist/toast.d.ts +34 -0
  231. package/dist/toast.d.ts.map +1 -0
  232. package/dist/toast.js +116 -0
  233. package/dist/toast.js.map +1 -0
  234. package/dist/toggle-button.d.ts +24 -1
  235. package/dist/toggle-button.d.ts.map +1 -1
  236. package/dist/toggle-button.js +28 -3
  237. package/dist/toggle-button.js.map +1 -1
  238. package/dist/toggle-group.d.ts +42 -0
  239. package/dist/toggle-group.d.ts.map +1 -0
  240. package/dist/toggle-group.js +91 -0
  241. package/dist/toggle-group.js.map +1 -0
  242. package/dist/toolbar.d.ts +7 -1
  243. package/dist/toolbar.d.ts.map +1 -1
  244. package/dist/toolbar.js +15 -12
  245. package/dist/toolbar.js.map +1 -1
  246. package/dist/tooltip.d.ts +27 -1
  247. package/dist/tooltip.d.ts.map +1 -1
  248. package/dist/tooltip.js +55 -2
  249. package/dist/tooltip.js.map +1 -1
  250. package/dist/tree-grid.d.ts +9 -0
  251. package/dist/tree-grid.d.ts.map +1 -1
  252. package/dist/tree-grid.js +33 -16
  253. package/dist/tree-grid.js.map +1 -1
  254. package/dist/tree-view.d.ts +19 -7
  255. package/dist/tree-view.d.ts.map +1 -1
  256. package/dist/tree-view.js +51 -28
  257. package/dist/tree-view.js.map +1 -1
  258. package/dist/year-picker.d.ts +3 -0
  259. package/dist/year-picker.d.ts.map +1 -0
  260. package/dist/year-picker.js +2 -0
  261. package/dist/year-picker.js.map +1 -0
  262. package/dist/year-range-picker.d.ts +3 -0
  263. package/dist/year-range-picker.d.ts.map +1 -0
  264. package/dist/year-range-picker.js +2 -0
  265. package/dist/year-range-picker.js.map +1 -0
  266. package/package.json +91 -3
package/README.md CHANGED
@@ -8,9 +8,15 @@ DOM bindings for Sectile interaction semantics.
8
8
  - Project ARIA state, focus requests, visibility, and element attributes
9
9
  - Own controlled or uncontrolled runtime synchronization
10
10
  - Preserve native text editing and IME behavior
11
+ - Delegate form, focus, and keyboard behavior to native elements where HTML already
12
+ defines it, while projecting the state those elements need
11
13
 
12
14
  The package does not provide markup, components, styles, themes, or application data. Consumers choose the rendered structure and bind it to a Sectile connection.
13
15
 
16
+ ## Floating surface positioning
17
+
18
+ Popover and tooltip placement use Floating UI. Offset, collision flip and shift, available-size data, arrow positioning, detached-anchor hiding, and open-only automatic updates are enabled by default. Boundaries, padding, strategy, update observers, and the middleware queue remain configurable. Floating UI middleware is re-exported from both component entry points for custom positioning.
19
+
14
20
  ## API shape
15
21
 
16
22
  Direct `createX` factories return ready connections. Matching `tryCreateX` factories expose recoverable construction failure. Every facade provides `state`, `send`, `update`, `subscribe`, and `destroy` alongside component-specific binding methods. Lower-level controller and connection factories remain available for separate ownership.
@@ -1,36 +1,91 @@
1
1
  import { type FacadeConnection } from './internal/facade.js';
2
2
  import type { Result, StableID } from '@sectile/core';
3
- import type { RevisionSnapshot } from '@sectile/core/revision';
4
- import { type AccordionCommand, type AccordionEvent, type AccordionPolicies, type AccordionState } from '@sectile/core/accordion';
3
+ import type { RevisionResult, RevisionSnapshot } from '@sectile/core/revision';
4
+ import { type AccordionCommand, type AccordionEvent, type AccordionState } from '@sectile/core/accordion';
5
5
  import type { KeyboardInput } from './tabs.js';
6
6
  export type AccordionEffect<ID extends StableID = StableID> = AccordionCommand<ID>;
7
- export interface AccordionOptions<ID extends StableID = StableID> {
8
- readonly root: HTMLElement;
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> {
9
16
  readonly items: readonly ID[];
10
- readonly policies?: AccordionPolicies<ID>;
17
+ readonly expansion?: 'single' | 'multiple';
18
+ readonly collapsible?: boolean;
11
19
  readonly disabledItems?: readonly ID[];
12
20
  readonly disabled?: boolean;
13
- readonly openIDs?: readonly ID[];
14
- readonly defaultOpenIDs?: readonly ID[];
21
+ readonly readOnly?: boolean;
22
+ readonly value?: readonly ID[];
23
+ readonly defaultValue?: readonly ID[];
15
24
  readonly highlightedValue?: ID | null;
16
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[];
17
45
  readonly label?: string;
18
46
  readonly onOpenChange?: (openIDs: readonly ID[]) => void;
19
- readonly onHighlightedValueChange?: (value: ID | null) => void;
20
47
  readonly onUpdate?: () => void;
21
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
+ }
22
71
  export interface AccordionConnection<ID extends StableID = StableID> {
23
72
  getSnapshot(): RevisionSnapshot<AccordionState<ID>>;
24
- syncControlledValues(values: {
25
- readonly openIDs?: readonly ID[];
26
- readonly highlightedValue?: ID | null;
27
- }): Result<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;
28
76
  setHeaderAttributes(element: HTMLElement, id: ID, panelID?: string, disabled?: boolean): void;
29
- setPanelAttributes(element: HTMLElement, id: ID, headerID?: string): void;
77
+ setPanelAttributes(element: HTMLElement, id: ID, attributes?: AccordionPanelAttributesOptions | string): void;
30
78
  handleEvent(event: AccordionEvent<ID>): boolean;
31
79
  disconnect(): void;
32
80
  }
81
+ export declare function createAccordionController<ID extends StableID>(options: AccordionControllerOptions<ID>): Result<AccordionController<ID>>;
33
82
  export declare function createAccordion<ID extends StableID>(options: AccordionOptions<ID>): FacadeConnection<AccordionConnection<ID>>;
34
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>>;
35
90
  export declare function toAccordionEvent<ID extends StableID = StableID>(input: KeyboardInput): AccordionEvent<ID> | null;
36
91
  //# sourceMappingURL=accordion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
package/dist/accordion.js CHANGED
@@ -1,52 +1,122 @@
1
1
  import { createFacadeConnection } from './internal/facade.js';
2
2
  import { unwrap } from '@sectile/core/result';
3
- import { createSequence } from '@sectile/core/sequence';
4
- import { applyAccordionEvent, createAccordionState, } from '@sectile/core/accordion';
3
+ import { tryCreateSequence } from '@sectile/core/sequence';
4
+ import { applyAccordionEvent, tryCreateAccordionState, } from '@sectile/core/accordion';
5
5
  import { findDelegatedID } from './internal/delegated-event.js';
6
6
  import { createDisabledItems } from './internal/disabled-items.js';
7
7
  import { createSemanticController } from './internal/semantic-controller.js';
8
8
  import { setInteractionAttributes } from './internal/interaction.js';
9
- export function createAccordion(options) {
10
- return unwrap(tryCreateAccordion(options));
11
- }
12
- export function tryCreateAccordion(options) {
13
- return createFacadeConnection(options, (options) => tryCreateAccordionConnection(options));
14
- }
15
- function tryCreateAccordionConnection(options) {
16
- const domain = createSequence(options.items);
9
+ export function createAccordionController(options) {
10
+ const domain = tryCreateSequence(options.items);
17
11
  if (!domain.ok)
18
12
  return domain;
19
13
  const disabled = createDisabledItems(domain.value, options.disabledItems);
20
14
  if (!disabled.ok)
21
15
  return disabled;
22
- const suppliedEligibility = options.policies?.eligible;
23
- const policies = Object.freeze({ ...options.policies, eligible: (id) => !disabled.value.has(id) && (suppliedEligibility?.(id) ?? true) });
24
- const openControlled = options.openIDs !== undefined;
16
+ const policies = accordionPolicies(options, disabled.value);
17
+ const valueControlled = options.value !== undefined;
25
18
  const highlightControlled = options.highlightedValue !== undefined;
26
- const initialOpen = options.openIDs ?? options.defaultOpenIDs
27
- ?? (options.policies?.collapsible === false && options.items[0] !== undefined ? [options.items[0]] : []);
19
+ const initialValue = options.value ?? options.defaultValue
20
+ ?? (policies.collapsible === false && options.items[0] !== undefined ? [options.items[0]] : []);
28
21
  const runtime = createSemanticController({
29
- initial: createAccordionState(domain.value, {
30
- openIDs: initialOpen,
31
- current: options.highlightedValue !== undefined ? options.highlightedValue : options.defaultHighlightedValue ?? null,
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,
32
29
  }, policies),
33
30
  reducer: (state, event) => applyAccordionEvent(domain.value, state, event, policies),
34
- reconcile: (previous, proposed) => createAccordionState(domain.value, {
35
- openIDs: openControlled ? previous.openIDs : proposed.openIDs,
31
+ reconcile: (previous, proposed) => tryCreateAccordionState(domain.value, {
32
+ openIDs: valueControlled || options.readOnly === true ? previous.openIDs : proposed.openIDs,
36
33
  current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
37
34
  }, policies),
38
35
  notify: (previous, proposed) => {
39
- if (!sameIDs(previous.openIDs, proposed.openIDs))
40
- options.onOpenChange?.(proposed.openIDs);
41
- if (previous.cursor.current !== proposed.cursor.current)
42
- options.onHighlightedValueChange?.(proposed.cursor.current);
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
+ }
43
45
  },
44
46
  toEffect: (command) => command,
45
- interaction: options,
46
47
  });
47
48
  if (!runtime.ok)
48
49
  return runtime;
49
- return { ok: true, value: new DOMAccordionConnection(options, domain.value, runtime.value, openControlled, highlightControlled, policies, disabled.value) };
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
+ });
50
120
  }
51
121
  export function toAccordionEvent(input) {
52
122
  if (input.altKey || input.ctrlKey || input.metaKey)
@@ -63,81 +133,157 @@ export function toAccordionEvent(input) {
63
133
  return 'toggle';
64
134
  return null;
65
135
  }
66
- class DOMAccordionConnection {
67
- #options;
136
+ class DOMAccordionController {
68
137
  #domain;
138
+ #policies;
69
139
  #runtime;
70
- #openControlled;
140
+ #valueControlled;
71
141
  #highlightControlled;
72
- #policies;
73
- #disabledItems;
74
- #keydown;
75
- #click;
76
- constructor(options, domain, runtime, openControlled, highlightControlled, policies, disabledItems) {
77
- this.#options = options;
142
+ constructor(domain, policies, runtime, valueControlled, highlightControlled) {
78
143
  this.#domain = domain;
144
+ this.#policies = policies;
79
145
  this.#runtime = runtime;
80
- this.#openControlled = openControlled;
146
+ this.#valueControlled = valueControlled;
81
147
  this.#highlightControlled = highlightControlled;
82
- this.#policies = policies;
83
- this.#disabledItems = disabledItems;
84
- if (options.label !== undefined)
85
- options.root.setAttribute('aria-label', options.label);
86
- setInteractionAttributes(options.root, options);
87
- this.#keydown = (event) => { const semantic = toAccordionEvent(event); if (semantic !== null) {
88
- event.preventDefault();
89
- this.handleEvent(semantic);
90
- } };
91
- this.#click = (event) => { const id = findDelegatedID(event.target, options.root, 'accordionId'); if (id !== null)
92
- this.handleEvent({ type: 'toggle', id: id }); };
93
- options.root.addEventListener('keydown', this.#keydown);
94
- options.root.addEventListener('click', this.#click);
95
148
  }
96
149
  getSnapshot() { return this.#runtime.getSnapshot(); }
97
150
  syncControlledValues(values) {
98
- if (this.#openControlled !== (values.openIDs !== undefined) || this.#highlightControlled !== (values.highlightedValue !== undefined)) {
99
- return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled accordion values must preserve their construction-time shape.' } };
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
+ } };
100
159
  }
101
160
  const state = this.#runtime.getSnapshot().state;
102
- const result = this.#runtime.replace(createAccordionState(this.#domain, {
103
- openIDs: this.#openControlled ? values.openIDs : state.openIDs,
161
+ return this.#runtime.replace(tryCreateAccordionState(this.#domain, {
162
+ openIDs: this.#valueControlled ? value : state.openIDs,
104
163
  current: this.#highlightControlled ? values.highlightedValue : state.cursor.current,
105
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
+ });
106
202
  if (result.ok)
107
203
  this.#options.onUpdate?.();
108
204
  return result;
109
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
+ }
110
222
  setHeaderAttributes(element, id, panelID, disabled = false) {
111
- const state = this.#runtime.getSnapshot().state;
112
- element.dataset['accordionId'] = id;
113
- element.setAttribute('aria-expanded', String(state.has(id)));
114
- element.tabIndex = state.cursor.current === id ? 0 : -1;
115
- if (panelID !== undefined)
116
- element.setAttribute('aria-controls', panelID);
117
- if (disabled || this.#disabledItems.has(id))
118
- element.setAttribute('aria-disabled', 'true');
119
- else
120
- element.removeAttribute('aria-disabled');
223
+ this.setTriggerAttributes(element, {
224
+ id,
225
+ ...(panelID === undefined ? {} : { panelID }),
226
+ disabled,
227
+ });
121
228
  }
122
- setPanelAttributes(element, id, headerID) {
123
- element.setAttribute('role', 'region');
124
- element.hidden = !this.#runtime.getSnapshot().state.has(id);
125
- if (headerID !== undefined)
126
- element.setAttribute('aria-labelledby', headerID);
229
+ setPanelAttributes(element, id, attributes = {}) {
230
+ applyAttributes(element, getAccordionPanelAttributes(this.getSnapshot().state, id, typeof attributes === 'string' ? { triggerID: attributes } : attributes));
127
231
  }
128
232
  handleEvent(event) {
129
- const result = this.#runtime.handle(event);
130
- if (result.ok)
131
- queueMicrotask(() => {
132
- for (const element of this.#options.root.querySelectorAll('[data-accordion-id]'))
133
- if (element.dataset['accordionId'] === result.snapshot.state.cursor.current)
134
- element.focus();
135
- });
136
- if (result.ok)
233
+ const result = this.#options.controller.handleEvent(event);
234
+ if (result.ok) {
235
+ queueMicrotask(() => focusCurrent(this.#options.root, result.snapshot.state.cursor.current));
137
236
  this.#options.onUpdate?.();
237
+ }
138
238
  return result.ok;
139
239
  }
140
- disconnect() { this.#options.root.removeEventListener('keydown', this.#keydown); this.#options.root.removeEventListener('click', this.#click); }
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]);
141
288
  }
142
- function sameIDs(left, right) { return left.length === right.length && left.every((id, index) => id === right[index]); }
143
289
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export interface AlertDialogOptions {
21
21
  readonly onAnnounce?: () => void;
22
22
  readonly onUpdate?: () => void;
23
23
  }
24
+ export type AlertDialogOpenChangeHandler = NonNullable<AlertDialogOptions['onOpenChange']>;
25
+ export type AlertDialogInitialFocusHandler = NonNullable<AlertDialogOptions['onInitialFocus']>;
26
+ export type AlertDialogFocusRestoreHandler = NonNullable<AlertDialogOptions['onFocusRestore']>;
27
+ export type AlertDialogAnnounceHandler = NonNullable<AlertDialogOptions['onAnnounce']>;
28
+ export type AlertDialogUpdateHandler = NonNullable<AlertDialogOptions['onUpdate']>;
24
29
  export type AlertDialogConnection = DOMPopupConnection<AlertDialogState, AlertDialogEvent>;
25
30
  export declare function createAlertDialog(o: AlertDialogOptions): FacadeConnection<AlertDialogConnection>;
26
31
  export declare function tryCreateAlertDialog(o: AlertDialogOptions): Result<FacadeConnection<AlertDialogConnection>>;
@@ -1 +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,EAA0E,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClK,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,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,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrJ,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;CACxG;AACD,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"}
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;AAEtF,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,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrJ,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;CACxG;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,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"}
@@ -1,6 +1,6 @@
1
1
  import { createFacadeConnection } from './internal/facade.js';
2
2
  import { unwrap } from '@sectile/core/result';
3
- import { applyAlertDialogEvent, createAlertDialogState } from '@sectile/core/alert-dialog';
3
+ import { applyAlertDialogEvent, tryCreateAlertDialogState } from '@sectile/core/alert-dialog';
4
4
  import { createDOMPopup } from './internal/popup-control.js';
5
5
  export function createAlertDialog(o) {
6
6
  return unwrap(tryCreateAlertDialog(o));
@@ -9,6 +9,6 @@ export function tryCreateAlertDialog(o) {
9
9
  return createFacadeConnection(o, (o) => tryCreateAlertDialogConnection(o));
10
10
  }
11
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: createAlertDialogState(o.open ?? o.defaultOpen ?? false), open: 'open', toggle: 'toggle', close: 'close', reducer: applyAlertDialogEvent, create: createAlertDialogState, read: (s) => s.open, interaction: o, ...(o.initialFocus === undefined ? {} : { initialFocus: o.initialFocus }), autoFocus: o.autoFocus ?? true, restoreFocus: o.restoreFocus ?? true, trapFocus: o.trapFocus ?? true, onOpenChange: o.onOpenChange, command: (c) => c.type === 'request-initial-focus' ? o.onInitialFocus?.() : c.type === 'request-focus-restore' ? o.onFocusRestore?.() : o.onAnnounce?.(), onUpdate: o.onUpdate });
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, 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
13
  }
14
14
  //# sourceMappingURL=alert-dialog.js.map
@@ -1 +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,sBAAsB,EAAyE,MAAM,4BAA4B,CAAC;AAClK,OAAO,EAAE,cAAc,EAA2B,MAAM,6BAA6B,CAAC;AAStF,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,sBAAsB,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,sBAAsB,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,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;AAC5/B,CAAC"}
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;AAetF,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,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;AAClgC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type FacadeConnection } from './internal/facade.js';
2
2
  import type { Result, StableID } from '@sectile/core';
3
3
  import { type CalendarCommand, type CalendarEvent, type CalendarPolicies, type CalendarState } from '@sectile/core/calendar';
4
+ export type { CalendarPolicies } from '@sectile/core/calendar';
4
5
  import { type Grid } from '@sectile/core/grid';
5
6
  import { type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
6
7
  export interface KeyboardInput {
@@ -36,6 +37,8 @@ export interface CalendarControllerOptions<ID extends StableID = StableID> {
36
37
  readonly onValueChange?: (change: CalendarValueChangeDetails<ID>) => void;
37
38
  readonly onHighlightedValueChange?: (change: CalendarHighlightChangeDetails<ID>) => void;
38
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']>;
39
42
  export interface CalendarControlledValues<ID extends StableID = StableID> {
40
43
  readonly value?: ID | null;
41
44
  readonly highlightedValue?: ID | null;
@@ -63,6 +66,9 @@ export interface CalendarConnectionOptions<ID extends StableID = StableID> {
63
66
  readonly onTransition?: (details: CalendarTransitionDetails<ID>) => void;
64
67
  readonly onUpdate?: () => void;
65
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']>;
66
72
  export interface CalendarCellAttributes<ID extends StableID = StableID> {
67
73
  readonly id: ID;
68
74
  readonly rowIndex: number;