foldkit 0.41.0 → 0.42.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.
Files changed (71) hide show
  1. package/dist/devtools/overlay.js +1 -1
  2. package/dist/runtime/runtime.d.ts +2 -0
  3. package/dist/runtime/runtime.d.ts.map +1 -1
  4. package/dist/runtime/runtime.js +5 -1
  5. package/dist/ui/checkbox/index.d.ts +3 -3
  6. package/dist/ui/checkbox/index.d.ts.map +1 -1
  7. package/dist/ui/checkbox/index.js +11 -8
  8. package/dist/ui/combobox/multi.d.ts +4 -3
  9. package/dist/ui/combobox/multi.d.ts.map +1 -1
  10. package/dist/ui/combobox/multi.js +4 -4
  11. package/dist/ui/combobox/public.d.ts +2 -2
  12. package/dist/ui/combobox/public.d.ts.map +1 -1
  13. package/dist/ui/combobox/public.js +1 -1
  14. package/dist/ui/combobox/shared.d.ts +12 -1
  15. package/dist/ui/combobox/shared.d.ts.map +1 -1
  16. package/dist/ui/combobox/shared.js +32 -19
  17. package/dist/ui/combobox/single.d.ts +4 -3
  18. package/dist/ui/combobox/single.d.ts.map +1 -1
  19. package/dist/ui/combobox/single.js +4 -4
  20. package/dist/ui/dialog/index.d.ts +11 -3
  21. package/dist/ui/dialog/index.d.ts.map +1 -1
  22. package/dist/ui/dialog/index.js +15 -7
  23. package/dist/ui/dialog/public.d.ts +1 -1
  24. package/dist/ui/dialog/public.d.ts.map +1 -1
  25. package/dist/ui/dialog/public.js +1 -1
  26. package/dist/ui/disclosure/index.d.ts +8 -3
  27. package/dist/ui/disclosure/index.d.ts.map +1 -1
  28. package/dist/ui/disclosure/index.js +12 -7
  29. package/dist/ui/disclosure/public.d.ts +2 -2
  30. package/dist/ui/disclosure/public.d.ts.map +1 -1
  31. package/dist/ui/disclosure/public.js +1 -1
  32. package/dist/ui/listbox/multi.d.ts +4 -3
  33. package/dist/ui/listbox/multi.d.ts.map +1 -1
  34. package/dist/ui/listbox/multi.js +4 -4
  35. package/dist/ui/listbox/public.d.ts +3 -3
  36. package/dist/ui/listbox/public.d.ts.map +1 -1
  37. package/dist/ui/listbox/public.js +2 -2
  38. package/dist/ui/listbox/shared.d.ts +14 -1
  39. package/dist/ui/listbox/shared.d.ts.map +1 -1
  40. package/dist/ui/listbox/shared.js +31 -16
  41. package/dist/ui/listbox/single.d.ts +10 -5
  42. package/dist/ui/listbox/single.d.ts.map +1 -1
  43. package/dist/ui/listbox/single.js +8 -5
  44. package/dist/ui/menu/index.d.ts +19 -3
  45. package/dist/ui/menu/index.d.ts.map +1 -1
  46. package/dist/ui/menu/index.js +39 -21
  47. package/dist/ui/menu/public.d.ts +2 -2
  48. package/dist/ui/menu/public.d.ts.map +1 -1
  49. package/dist/ui/menu/public.js +1 -1
  50. package/dist/ui/popover/index.d.ts +20 -3
  51. package/dist/ui/popover/index.d.ts.map +1 -1
  52. package/dist/ui/popover/index.js +31 -14
  53. package/dist/ui/popover/public.d.ts +2 -2
  54. package/dist/ui/popover/public.d.ts.map +1 -1
  55. package/dist/ui/popover/public.js +1 -1
  56. package/dist/ui/radioGroup/index.d.ts +10 -5
  57. package/dist/ui/radioGroup/index.d.ts.map +1 -1
  58. package/dist/ui/radioGroup/index.js +18 -20
  59. package/dist/ui/radioGroup/public.d.ts +2 -2
  60. package/dist/ui/radioGroup/public.d.ts.map +1 -1
  61. package/dist/ui/radioGroup/public.js +1 -1
  62. package/dist/ui/switch/index.d.ts +3 -3
  63. package/dist/ui/switch/index.d.ts.map +1 -1
  64. package/dist/ui/switch/index.js +11 -8
  65. package/dist/ui/tabs/index.d.ts +8 -3
  66. package/dist/ui/tabs/index.d.ts.map +1 -1
  67. package/dist/ui/tabs/index.js +15 -8
  68. package/dist/ui/tabs/public.d.ts +2 -2
  69. package/dist/ui/tabs/public.d.ts.map +1 -1
  70. package/dist/ui/tabs/public.js +1 -1
  71. package/package.json +1 -1
@@ -166,40 +166,52 @@ export type InitConfig = Readonly<{
166
166
  /** Creates an initial menu model from a config. Defaults to closed with no active item. */
167
167
  export declare const init: (config: InitConfig) => Model;
168
168
  type UpdateReturn = readonly [Model, ReadonlyArray<Command.Command<Message>>];
169
+ /** Advances the menu's enter/leave transition by waiting a double-rAF. */
169
170
  export declare const RequestFrame: Command.CommandDefinition<"RequestFrame", {
170
171
  readonly _tag: "AdvancedTransitionFrame";
171
172
  }>;
173
+ /** Prevents page scrolling while the menu is open. */
172
174
  export declare const LockScroll: Command.CommandDefinition<"LockScroll", {
173
175
  readonly _tag: "CompletedLockScroll";
174
176
  }>;
177
+ /** Re-enables page scrolling after the menu closes. */
175
178
  export declare const UnlockScroll: Command.CommandDefinition<"UnlockScroll", {
176
179
  readonly _tag: "CompletedUnlockScroll";
177
180
  }>;
181
+ /** Marks all elements outside the menu as inert for modal behavior. */
178
182
  export declare const InertOthers: Command.CommandDefinition<"InertOthers", {
179
183
  readonly _tag: "CompletedSetupInert";
180
184
  }>;
185
+ /** Removes the inert attribute from elements outside the menu. */
181
186
  export declare const RestoreInert: Command.CommandDefinition<"RestoreInert", {
182
187
  readonly _tag: "CompletedTeardownInert";
183
188
  }>;
189
+ /** Moves focus to the menu items container after opening. */
184
190
  export declare const FocusItems: Command.CommandDefinition<"FocusItems", {
185
191
  readonly _tag: "CompletedFocusItems";
186
192
  }>;
193
+ /** Moves focus back to the menu button after closing. */
187
194
  export declare const FocusButton: Command.CommandDefinition<"FocusButton", {
188
195
  readonly _tag: "CompletedFocusButton";
189
196
  }>;
197
+ /** Scrolls the active menu item into view after keyboard navigation. */
190
198
  export declare const ScrollIntoView: Command.CommandDefinition<"ScrollIntoView", {
191
199
  readonly _tag: "CompletedScrollIntoView";
192
200
  }>;
201
+ /** Programmatically clicks the active menu item's DOM element. */
193
202
  export declare const ClickItem: Command.CommandDefinition<"ClickItem", {
194
203
  readonly _tag: "CompletedClickItem";
195
204
  }>;
205
+ /** Waits for the typeahead search debounce period before clearing the query. */
196
206
  export declare const DelayClearSearch: Command.CommandDefinition<"DelayClearSearch", {
197
207
  readonly _tag: "ClearedSearch";
198
208
  readonly version: number;
199
209
  }>;
210
+ /** Waits for all CSS transitions on the menu items container to complete. */
200
211
  export declare const WaitForTransitions: Command.CommandDefinition<"WaitForTransitions", {
201
212
  readonly _tag: "EndedTransition";
202
213
  }>;
214
+ /** Detects whether the menu button moved or the leave transition ended — whichever comes first. */
203
215
  export declare const DetectMovementOrTransitionEnd: Command.CommandDefinition<"DetectMovementOrTransitionEnd", {
204
216
  readonly _tag: "EndedTransition";
205
217
  } | {
@@ -207,6 +219,9 @@ export declare const DetectMovementOrTransitionEnd: Command.CommandDefinition<"D
207
219
  }>;
208
220
  /** Processes a menu message and returns the next model and commands. */
209
221
  export declare const update: (model: Model, message: Message) => UpdateReturn;
222
+ /** Programmatically selects a menu item at the given index, closing the menu and returning
223
+ * focus commands. Use this in domain-event handlers when the menu uses `onSelectedItem`. */
224
+ export declare const selectItem: (model: Model, index: number) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
210
225
  /** Configuration for an individual menu item's appearance. */
211
226
  export type ItemConfig = Readonly<{
212
227
  className?: string;
@@ -220,7 +235,8 @@ export type GroupHeading = Readonly<{
220
235
  /** Configuration for rendering a menu with `view`. */
221
236
  export type ViewConfig<Message, Item extends string> = Readonly<{
222
237
  model: Model;
223
- toMessage: (message: Opened | Closed | ClosedByTab | ActivatedItem | DeactivatedItem | SelectedItem | MovedPointerOverItem | RequestedItemClick | Searched | PressedPointerOnButton | ReleasedPointerOnItems | IgnoredMouseClick | SuppressedSpaceScroll) => Message;
238
+ toParentMessage: (message: Opened | Closed | ClosedByTab | ActivatedItem | DeactivatedItem | SelectedItem | MovedPointerOverItem | RequestedItemClick | Searched | PressedPointerOnButton | ReleasedPointerOnItems | IgnoredMouseClick | SuppressedSpaceScroll) => Message;
239
+ onSelectedItem?: (index: number) => Message;
224
240
  items: ReadonlyArray<Item>;
225
241
  itemToConfig: (item: Item, context: Readonly<{
226
242
  isActive: boolean;
@@ -252,6 +268,6 @@ export { groupContiguous, resolveTypeaheadMatch };
252
268
  /** Renders a headless menu with typeahead search, keyboard navigation, and aria-activedescendant focus management. */
253
269
  export declare const view: <Message, Item extends string>(config: ViewConfig<Message, Item>) => Html;
254
270
  /** Creates a memoized menu view. Static config is captured in a closure;
255
- * only `model` and `toMessage` are compared per render via `createLazy`. */
256
- export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "toMessage">) => ((model: Model, toMessage: ViewConfig<Message, Item>["toMessage"]) => Html);
271
+ * only `model` and `toParentMessage` are compared per render via `createLazy`. */
272
+ export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "toParentMessage" | "onSelectedItem">) => ((model: Model, toParentMessage: ViewConfig<Message, Item>["toParentMessage"]) => Html);
257
273
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/menu/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/menu/index.ts"],"names":[],"mappings":"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"}
@@ -148,17 +148,29 @@ const buttonSelector = (id) => `#${id}-button`;
148
148
  const itemsSelector = (id) => `#${id}-items`;
149
149
  const itemSelector = (id, index) => `#${id}-item-${index}`;
150
150
  const withUpdateReturn = M.withReturnType();
151
+ /** Advances the menu's enter/leave transition by waiting a double-rAF. */
151
152
  export const RequestFrame = Command.define('RequestFrame', AdvancedTransitionFrame);
153
+ /** Prevents page scrolling while the menu is open. */
152
154
  export const LockScroll = Command.define('LockScroll', CompletedLockScroll);
155
+ /** Re-enables page scrolling after the menu closes. */
153
156
  export const UnlockScroll = Command.define('UnlockScroll', CompletedUnlockScroll);
157
+ /** Marks all elements outside the menu as inert for modal behavior. */
154
158
  export const InertOthers = Command.define('InertOthers', CompletedSetupInert);
159
+ /** Removes the inert attribute from elements outside the menu. */
155
160
  export const RestoreInert = Command.define('RestoreInert', CompletedTeardownInert);
161
+ /** Moves focus to the menu items container after opening. */
156
162
  export const FocusItems = Command.define('FocusItems', CompletedFocusItems);
163
+ /** Moves focus back to the menu button after closing. */
157
164
  export const FocusButton = Command.define('FocusButton', CompletedFocusButton);
165
+ /** Scrolls the active menu item into view after keyboard navigation. */
158
166
  export const ScrollIntoView = Command.define('ScrollIntoView', CompletedScrollIntoView);
167
+ /** Programmatically clicks the active menu item's DOM element. */
159
168
  export const ClickItem = Command.define('ClickItem', CompletedClickItem);
169
+ /** Waits for the typeahead search debounce period before clearing the query. */
160
170
  export const DelayClearSearch = Command.define('DelayClearSearch', ClearedSearch);
171
+ /** Waits for all CSS transitions on the menu items container to complete. */
161
172
  export const WaitForTransitions = Command.define('WaitForTransitions', EndedTransition);
173
+ /** Detects whether the menu button moved or the leave transition ended — whichever comes first. */
162
174
  export const DetectMovementOrTransitionEnd = Command.define('DetectMovementOrTransitionEnd', DetectedButtonMovement, EndedTransition);
163
175
  /** Processes a menu message and returns the next model and commands. */
164
176
  export const update = (model, message) => {
@@ -348,12 +360,18 @@ export const update = (model, message) => {
348
360
  SuppressedSpaceScroll: () => [model, []],
349
361
  }));
350
362
  };
363
+ /** Programmatically selects a menu item at the given index, closing the menu and returning
364
+ * focus commands. Use this in domain-event handlers when the menu uses `onSelectedItem`. */
365
+ export const selectItem = (model, index) => update(model, SelectedItem({ index }));
351
366
  export { groupContiguous, resolveTypeaheadMatch };
352
367
  const itemId = (id, index) => `${id}-item-${index}`;
353
368
  /** Renders a headless menu with typeahead search, keyboard navigation, and aria-activedescendant focus management. */
354
369
  export const view = (config) => {
355
370
  const { div, AriaActiveDescendant, AriaControls, AriaDisabled, AriaExpanded, AriaHasPopup, AriaLabelledBy, Class, DataAttribute, Id, OnBlur, OnClick, OnDestroy, OnInsert, OnKeyDownPreventDefault, OnKeyUpPreventDefault, OnPointerDown, OnPointerLeave, OnPointerMove, OnPointerUp, Role, Style, Tabindex, Type, keyed, } = html();
356
- const { model: { id, isOpen, transitionState, maybeActiveItemIndex, searchQuery, maybeLastButtonPointerType, }, toMessage, items, itemToConfig, isItemDisabled, itemToSearchText = (item) => item, isButtonDisabled, buttonContent, buttonClassName, buttonAttributes = [], itemsClassName, itemsAttributes = [], itemsScrollClassName, itemsScrollAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], itemGroupKey, groupToHeading, groupClassName, groupAttributes = [], separatorClassName, separatorAttributes = [], anchor, } = config;
371
+ const { model: { id, isOpen, transitionState, maybeActiveItemIndex, searchQuery, maybeLastButtonPointerType, }, toParentMessage, onSelectedItem, items, itemToConfig, isItemDisabled, itemToSearchText = (item) => item, isButtonDisabled, buttonContent, buttonClassName, buttonAttributes = [], itemsClassName, itemsAttributes = [], itemsScrollClassName, itemsScrollAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], itemGroupKey, groupToHeading, groupClassName, groupAttributes = [], separatorClassName, separatorAttributes = [], anchor, } = config;
372
+ const dispatchSelectedItem = (index) => onSelectedItem
373
+ ? onSelectedItem(index)
374
+ : toParentMessage(SelectedItem({ index }));
357
375
  const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
358
376
  const isVisible = isOpen || isLeaving;
359
377
  const transitionAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
@@ -375,12 +393,12 @@ export const view = (config) => {
375
393
  pipe(items, Array.get(index), Option.exists(item => isItemDisabled(item, index)));
376
394
  const firstEnabledIndex = findFirstEnabledIndex(items.length, 0, isDisabled)(0, 1);
377
395
  const lastEnabledIndex = findFirstEnabledIndex(items.length, 0, isDisabled)(items.length - 1, -1);
378
- const handleButtonKeyDown = (key) => M.value(key).pipe(M.whenOr('Enter', ' ', 'ArrowDown', () => Option.some(toMessage(Opened({
396
+ const handleButtonKeyDown = (key) => M.value(key).pipe(M.whenOr('Enter', ' ', 'ArrowDown', () => Option.some(toParentMessage(Opened({
379
397
  maybeActiveItemIndex: Option.some(firstEnabledIndex),
380
- })))), M.when('ArrowUp', () => Option.some(toMessage(Opened({
398
+ })))), M.when('ArrowUp', () => Option.some(toParentMessage(Opened({
381
399
  maybeActiveItemIndex: Option.some(lastEnabledIndex),
382
400
  })))), M.orElse(() => Option.none()));
383
- const handleButtonPointerDown = (pointerType, button, screenX, screenY, timeStamp) => Option.some(toMessage(PressedPointerOnButton({
401
+ const handleButtonPointerDown = (pointerType, button, screenX, screenY, timeStamp) => Option.some(toParentMessage(PressedPointerOnButton({
384
402
  pointerType,
385
403
  button,
386
404
  screenX,
@@ -390,29 +408,29 @@ export const view = (config) => {
390
408
  const handleButtonClick = () => {
391
409
  const isMouse = Option.exists(maybeLastButtonPointerType, type => type === 'mouse');
392
410
  if (isMouse) {
393
- return toMessage(IgnoredMouseClick());
411
+ return toParentMessage(IgnoredMouseClick());
394
412
  }
395
413
  else if (isOpen) {
396
- return toMessage(Closed());
414
+ return toParentMessage(Closed());
397
415
  }
398
416
  else {
399
- return toMessage(Opened({ maybeActiveItemIndex: Option.none() }));
417
+ return toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }));
400
418
  }
401
419
  };
402
- const handleSpaceKeyUp = (key) => OptionExt.when(key === ' ', toMessage(SuppressedSpaceScroll()));
420
+ const handleSpaceKeyUp = (key) => OptionExt.when(key === ' ', toParentMessage(SuppressedSpaceScroll()));
403
421
  const resolveActiveIndex = keyToIndex('ArrowDown', 'ArrowUp', items.length, Option.getOrElse(maybeActiveItemIndex, () => 0), isDisabled);
404
422
  const searchForKey = (key) => {
405
423
  const nextQuery = searchQuery + key;
406
424
  const maybeTargetIndex = resolveTypeaheadMatch(items, nextQuery, maybeActiveItemIndex, isDisabled, itemToSearchText, Str.isNonEmpty(searchQuery));
407
- return Option.some(toMessage(Searched({ key, maybeTargetIndex })));
425
+ return Option.some(toParentMessage(Searched({ key, maybeTargetIndex })));
408
426
  };
409
- const handleItemsKeyDown = (key) => M.value(key).pipe(M.when('Escape', () => Option.some(toMessage(Closed()))), M.when('Enter', () => Option.map(maybeActiveItemIndex, index => toMessage(RequestedItemClick({ index })))), M.when(' ', () => Str.isNonEmpty(searchQuery)
427
+ const handleItemsKeyDown = (key) => M.value(key).pipe(M.when('Escape', () => Option.some(toParentMessage(Closed()))), M.when('Enter', () => Option.map(maybeActiveItemIndex, index => toParentMessage(RequestedItemClick({ index })))), M.when(' ', () => Str.isNonEmpty(searchQuery)
410
428
  ? searchForKey(' ')
411
- : Option.map(maybeActiveItemIndex, index => toMessage(RequestedItemClick({ index })))), M.whenOr('ArrowDown', 'ArrowUp', 'Home', 'End', 'PageUp', 'PageDown', () => Option.some(toMessage(ActivatedItem({
429
+ : Option.map(maybeActiveItemIndex, index => toParentMessage(RequestedItemClick({ index })))), M.whenOr('ArrowDown', 'ArrowUp', 'Home', 'End', 'PageUp', 'PageDown', () => Option.some(toParentMessage(ActivatedItem({
412
430
  index: resolveActiveIndex(key),
413
431
  activationTrigger: 'Keyboard',
414
432
  })))), M.when(isPrintableKey, () => searchForKey(key)), M.orElse(() => Option.none()));
415
- const handleItemsPointerUp = (screenX, screenY, pointerType, timeStamp) => OptionExt.when(pointerType === 'mouse', toMessage(ReleasedPointerOnItems({ screenX, screenY, timeStamp })));
433
+ const handleItemsPointerUp = (screenX, screenY, pointerType, timeStamp) => OptionExt.when(pointerType === 'mouse', toParentMessage(ReleasedPointerOnItems({ screenX, screenY, timeStamp })));
416
434
  const resolvedButtonAttributes = [
417
435
  Id(`${id}-button`),
418
436
  Type('button'),
@@ -459,7 +477,7 @@ export const view = (config) => {
459
477
  OnKeyDownPreventDefault(handleItemsKeyDown),
460
478
  OnKeyUpPreventDefault(handleSpaceKeyUp),
461
479
  OnPointerUp(handleItemsPointerUp),
462
- OnBlur(toMessage(ClosedByTab())),
480
+ OnBlur(toParentMessage(ClosedByTab())),
463
481
  ]),
464
482
  ...(itemsClassName ? [Class(itemsClassName)] : []),
465
483
  ...itemsAttributes,
@@ -481,13 +499,13 @@ export const view = (config) => {
481
499
  : []),
482
500
  ...(isInteractive
483
501
  ? [
484
- OnClick(toMessage(SelectedItem({ index }))),
502
+ OnClick(dispatchSelectedItem(index)),
485
503
  ...(isActiveItem
486
504
  ? []
487
505
  : [
488
- OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toMessage(MovedPointerOverItem({ index, screenX, screenY })))),
506
+ OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
489
507
  ]),
490
- OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toMessage(DeactivatedItem()))),
508
+ OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
491
509
  ]
492
510
  : []),
493
511
  ...(itemConfig.className ? [Class(itemConfig.className)] : []),
@@ -536,7 +554,7 @@ export const view = (config) => {
536
554
  });
537
555
  };
538
556
  const backdrop = keyed('div')(`${id}-backdrop`, [
539
- ...(isLeaving ? [] : [OnClick(toMessage(Closed()))]),
557
+ ...(isLeaving ? [] : [OnClick(toParentMessage(Closed()))]),
540
558
  ...(backdropClassName ? [Class(backdropClassName)] : []),
541
559
  ...backdropAttributes,
542
560
  ], []);
@@ -564,12 +582,12 @@ export const view = (config) => {
564
582
  ]);
565
583
  };
566
584
  /** Creates a memoized menu view. Static config is captured in a closure;
567
- * only `model` and `toMessage` are compared per render via `createLazy`. */
585
+ * only `model` and `toParentMessage` are compared per render via `createLazy`. */
568
586
  export const lazy = (staticConfig) => {
569
587
  const lazyView = createLazy();
570
- return (model, toMessage) => lazyView((currentModel, currentToMessage) => view({
588
+ return (model, toParentMessage) => lazyView((currentModel, currentToMessage) => view({
571
589
  ...staticConfig,
572
590
  model: currentModel,
573
- toMessage: currentToMessage,
574
- }), [model, toMessage]);
591
+ toParentMessage: currentToMessage,
592
+ }), [model, toParentMessage]);
575
593
  };
@@ -1,5 +1,5 @@
1
- export { init, update, view, lazy, Model, Message } from './index';
1
+ export { init, update, selectItem, view, lazy, Model, Message, SelectedItem, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, CompletedFocusItems, CompletedFocusButton, CompletedScrollIntoView, CompletedClickItem, ClearedSearch, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusItems, FocusButton, ScrollIntoView, ClickItem, DelayClearSearch, WaitForTransitions, DetectMovementOrTransitionEnd, } from './index';
2
2
  export { TransitionState } from '../transition';
3
- export type { ActivationTrigger, Opened, Closed, ClosedByTab, ActivatedItem, DeactivatedItem, SelectedItem, MovedPointerOverItem, RequestedItemClick, Searched, ClearedSearch, PressedPointerOnButton, ReleasedPointerOnItems, IgnoredMouseClick, SuppressedSpaceScroll, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement, InitConfig, ViewConfig, ItemConfig, GroupHeading, } from './index';
3
+ export type { ActivationTrigger, Opened, Closed, ClosedByTab, ActivatedItem, DeactivatedItem, MovedPointerOverItem, RequestedItemClick, Searched, PressedPointerOnButton, ReleasedPointerOnItems, IgnoredMouseClick, SuppressedSpaceScroll, InitConfig, ViewConfig, ItemConfig, GroupHeading, } from './index';
4
4
  export type { AnchorConfig } from '../anchor';
5
5
  //# sourceMappingURL=public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/menu/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/menu/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
@@ -1,2 +1,2 @@
1
- export { init, update, view, lazy, Model, Message } from './index';
1
+ export { init, update, selectItem, view, lazy, Model, Message, SelectedItem, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, CompletedFocusItems, CompletedFocusButton, CompletedScrollIntoView, CompletedClickItem, ClearedSearch, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusItems, FocusButton, ScrollIntoView, ClickItem, DelayClearSearch, WaitForTransitions, DetectMovementOrTransitionEnd, } from './index';
2
2
  export { TransitionState } from '../transition';
@@ -79,30 +79,39 @@ export type InitConfig = Readonly<{
79
79
  /** Creates an initial popover model from a config. Defaults to closed. */
80
80
  export declare const init: (config: InitConfig) => Model;
81
81
  type UpdateReturn = readonly [Model, ReadonlyArray<Command.Command<Message>>];
82
+ /** Advances the popover's enter/leave transition by waiting a double-rAF. */
82
83
  export declare const RequestFrame: Command.CommandDefinition<"RequestFrame", {
83
84
  readonly _tag: "AdvancedTransitionFrame";
84
85
  }>;
86
+ /** Prevents page scrolling while the popover is open in modal mode. */
85
87
  export declare const LockScroll: Command.CommandDefinition<"LockScroll", {
86
88
  readonly _tag: "CompletedLockScroll";
87
89
  }>;
90
+ /** Re-enables page scrolling after the popover closes. */
88
91
  export declare const UnlockScroll: Command.CommandDefinition<"UnlockScroll", {
89
92
  readonly _tag: "CompletedUnlockScroll";
90
93
  }>;
94
+ /** Marks all elements outside the popover as inert for modal behavior. */
91
95
  export declare const InertOthers: Command.CommandDefinition<"InertOthers", {
92
96
  readonly _tag: "CompletedSetupInert";
93
97
  }>;
98
+ /** Removes the inert attribute from elements outside the popover. */
94
99
  export declare const RestoreInert: Command.CommandDefinition<"RestoreInert", {
95
100
  readonly _tag: "CompletedTeardownInert";
96
101
  }>;
102
+ /** Moves focus to the popover panel after opening. */
97
103
  export declare const FocusPanel: Command.CommandDefinition<"FocusPanel", {
98
104
  readonly _tag: "CompletedFocusPanel";
99
105
  }>;
106
+ /** Moves focus back to the popover button after closing. */
100
107
  export declare const FocusButton: Command.CommandDefinition<"FocusButton", {
101
108
  readonly _tag: "CompletedFocusButton";
102
109
  }>;
110
+ /** Waits for all CSS transitions on the popover panel to complete. */
103
111
  export declare const WaitForTransitions: Command.CommandDefinition<"WaitForTransitions", {
104
112
  readonly _tag: "EndedTransition";
105
113
  }>;
114
+ /** Detects whether the popover button moved or the leave transition ended — whichever comes first. */
106
115
  export declare const DetectMovementOrTransitionEnd: Command.CommandDefinition<"DetectMovementOrTransitionEnd", {
107
116
  readonly _tag: "EndedTransition";
108
117
  } | {
@@ -110,10 +119,18 @@ export declare const DetectMovementOrTransitionEnd: Command.CommandDefinition<"D
110
119
  }>;
111
120
  /** Processes a popover message and returns the next model and commands. */
112
121
  export declare const update: (model: Model, message: Message) => UpdateReturn;
122
+ /** Programmatically opens the popover, updating the model and returning
123
+ * focus and modal commands. Use this in domain-event handlers when the popover uses `onOpened`. */
124
+ export declare const open: (model: Model) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
125
+ /** Programmatically closes the popover, updating the model and returning
126
+ * focus and modal commands. Use this in domain-event handlers when the popover uses `onClosed`. */
127
+ export declare const close: (model: Model) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
113
128
  /** Configuration for rendering a popover with `view`. */
114
129
  export type ViewConfig<Message> = Readonly<{
115
130
  model: Model;
116
- toMessage: (message: Opened | Closed | ClosedByTab | PressedPointerOnButton | IgnoredMouseClick | SuppressedSpaceScroll) => Message;
131
+ toParentMessage: (message: Opened | Closed | ClosedByTab | PressedPointerOnButton | IgnoredMouseClick | SuppressedSpaceScroll) => Message;
132
+ onOpened?: () => Message;
133
+ onClosed?: () => Message;
117
134
  anchor: AnchorConfig;
118
135
  buttonContent: Html;
119
136
  buttonClassName?: string;
@@ -130,7 +147,7 @@ export type ViewConfig<Message> = Readonly<{
130
147
  /** Renders a headless popover with a trigger button and a floating panel. Uses the disclosure ARIA pattern (aria-expanded + aria-controls) with no role on the panel. */
131
148
  export declare const view: <Message>(config: ViewConfig<Message>) => Html;
132
149
  /** Creates a memoized popover view. Static config is captured in a closure;
133
- * only `model` and `toMessage` are compared per render via `createLazy`. */
134
- export declare const lazy: <Message>(staticConfig: Omit<ViewConfig<Message>, "model" | "toMessage">) => ((model: Model, toMessage: ViewConfig<Message>["toMessage"]) => Html);
150
+ * only `model` and `toParentMessage` are compared per render via `createLazy`. */
151
+ export declare const lazy: <Message>(staticConfig: Omit<ViewConfig<Message>, "model" | "toParentMessage" | "onOpened" | "onClosed">) => ((model: Model, toParentMessage: ViewConfig<Message>["toParentMessage"]) => Html);
135
152
  export {};
136
153
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,MAAM,IAAI,CAAC,EAAQ,MAAM,QAAQ,CAAA;AAE7E,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAA;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAK7C,sGAAsG;AACtG,eAAO,MAAM,KAAK;;;;;;;EAOhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,2EAA2E;AAC3E,eAAO,MAAM,MAAM,2DAAc,CAAA;AACjC,kGAAkG;AAClG,eAAO,MAAM,MAAM,2DAAc,CAAA;AACjC,iGAAiG;AACjG,eAAO,MAAM,WAAW,gEAAmB,CAAA;AAC3C,qHAAqH;AACrH,eAAO,MAAM,sBAAsB;;;EAGjC,CAAA;AACF,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,wEAA2B,CAAA;AAC3D,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,yEAA4B,CAAA;AAC7D,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,wEAA2B,CAAA;AAC3D,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,0EAA6B,CAAA;AAC/D,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,wEAA2B,CAAA;AAC3D,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,2EAA8B,CAAA;AACjE,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,sEAAyB,CAAA;AACvD,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,0EAA6B,CAAA;AAC/D,oGAAoG;AACpG,eAAO,MAAM,uBAAuB,4EAA+B,CAAA;AACnE,oFAAoF;AACpF,eAAO,MAAM,eAAe,oEAAuB,CAAA;AACnD,yHAAyH;AACzH,eAAO,MAAM,sBAAsB,2EAA8B,CAAA;AAEjE,+DAA+D;AAC/D,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,WAAW;IAClB,OAAO,sBAAsB;IAC7B,OAAO,mBAAmB;IAC1B,OAAO,oBAAoB;IAC3B,OAAO,mBAAmB;IAC1B,OAAO,qBAAqB;IAC5B,OAAO,mBAAmB;IAC1B,OAAO,sBAAsB;IAC7B,OAAO,iBAAiB;IACxB,OAAO,qBAAqB;IAC5B,OAAO,uBAAuB;IAC9B,OAAO,eAAe;IACtB,OAAO,sBAAsB;CAC9B,CAiBF,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AACjD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AACvE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAC7D,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AAErE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAMzC,qNAAqN;AACrN,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAOxC,CAAA;AAcF,KAAK,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAG7E,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,eAAO,MAAM,UAAU;;EAAoD,CAAA;AAC3E,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,eAAO,MAAM,WAAW;;EAAqD,CAAA;AAC7E,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,eAAO,MAAM,UAAU;;EAAoD,CAAA;AAC3E,eAAO,MAAM,WAAW;;EAAsD,CAAA;AAC9E,eAAO,MAAM,kBAAkB;;EAG9B,CAAA;AACD,eAAO,MAAM,6BAA6B;;;;EAIzC,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YAkMvD,CAAA;AAID,yDAAyD;AACzD,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,CACT,OAAO,EACH,MAAM,GACN,MAAM,GACN,WAAW,GACX,sBAAsB,GACtB,iBAAiB,GACjB,qBAAqB,KACtB,OAAO,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,aAAa,EAAE,IAAI,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACpD,YAAY,EAAE,IAAI,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,yKAAyK;AACzK,eAAO,MAAM,IAAI,GAAI,OAAO,EAAE,QAAQ,UAAU,CAAC,OAAO,CAAC,KAAG,IAuL3D,CAAA;AAED;6EAC6E;AAC7E,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,KAC7D,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,CAgBtE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/index.ts"],"names":[],"mappings":"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"}
@@ -73,14 +73,23 @@ const closedModel = (model) => evo(model, {
73
73
  const buttonSelector = (id) => `#${id}-button`;
74
74
  const panelSelector = (id) => `#${id}-panel`;
75
75
  const withUpdateReturn = M.withReturnType();
76
+ /** Advances the popover's enter/leave transition by waiting a double-rAF. */
76
77
  export const RequestFrame = Command.define('RequestFrame', AdvancedTransitionFrame);
78
+ /** Prevents page scrolling while the popover is open in modal mode. */
77
79
  export const LockScroll = Command.define('LockScroll', CompletedLockScroll);
80
+ /** Re-enables page scrolling after the popover closes. */
78
81
  export const UnlockScroll = Command.define('UnlockScroll', CompletedUnlockScroll);
82
+ /** Marks all elements outside the popover as inert for modal behavior. */
79
83
  export const InertOthers = Command.define('InertOthers', CompletedSetupInert);
84
+ /** Removes the inert attribute from elements outside the popover. */
80
85
  export const RestoreInert = Command.define('RestoreInert', CompletedTeardownInert);
86
+ /** Moves focus to the popover panel after opening. */
81
87
  export const FocusPanel = Command.define('FocusPanel', CompletedFocusPanel);
88
+ /** Moves focus back to the popover button after closing. */
82
89
  export const FocusButton = Command.define('FocusButton', CompletedFocusButton);
90
+ /** Waits for all CSS transitions on the popover panel to complete. */
83
91
  export const WaitForTransitions = Command.define('WaitForTransitions', EndedTransition);
92
+ /** Detects whether the popover button moved or the leave transition ended — whichever comes first. */
84
93
  export const DetectMovementOrTransitionEnd = Command.define('DetectMovementOrTransitionEnd', DetectedButtonMovement, EndedTransition);
85
94
  /** Processes a popover message and returns the next model and commands. */
86
95
  export const update = (model, message) => {
@@ -170,10 +179,18 @@ export const update = (model, message) => {
170
179
  SuppressedSpaceScroll: () => [model, []],
171
180
  }));
172
181
  };
182
+ /** Programmatically opens the popover, updating the model and returning
183
+ * focus and modal commands. Use this in domain-event handlers when the popover uses `onOpened`. */
184
+ export const open = (model) => update(model, Opened());
185
+ /** Programmatically closes the popover, updating the model and returning
186
+ * focus and modal commands. Use this in domain-event handlers when the popover uses `onClosed`. */
187
+ export const close = (model) => update(model, Closed());
173
188
  /** Renders a headless popover with a trigger button and a floating panel. Uses the disclosure ARIA pattern (aria-expanded + aria-controls) with no role on the panel. */
174
189
  export const view = (config) => {
175
190
  const { div, AriaControls, AriaDisabled, AriaExpanded, Class, DataAttribute, Id, OnBlur, OnClick, OnDestroy, OnInsert, OnKeyDownPreventDefault, OnKeyUpPreventDefault, OnPointerDown, Style, Tabindex, Type, keyed, } = html();
176
- const { model: { id, isOpen, transitionState, maybeLastButtonPointerType }, toMessage, anchor, buttonContent, buttonClassName, buttonAttributes = [], panelContent, panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], isDisabled, className, attributes = [], } = config;
191
+ const { model: { id, isOpen, transitionState, maybeLastButtonPointerType }, toParentMessage, onOpened, onClosed, anchor, buttonContent, buttonClassName, buttonAttributes = [], panelContent, panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], isDisabled, className, attributes = [], } = config;
192
+ const dispatchOpened = () => onOpened ? onOpened() : toParentMessage(Opened());
193
+ const dispatchClosed = () => onClosed ? onClosed() : toParentMessage(Closed());
177
194
  const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
178
195
  const isVisible = isOpen || isLeaving;
179
196
  const transitionAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
@@ -191,25 +208,25 @@ export const view = (config) => {
191
208
  DataAttribute('leave', ''),
192
209
  DataAttribute('transition', ''),
193
210
  ]), M.orElse(() => []));
194
- const handleButtonKeyDown = (key) => M.value(key).pipe(M.whenOr('Enter', ' ', 'ArrowDown', () => Option.some(toMessage(isOpen ? Closed() : Opened()))), M.orElse(() => Option.none()));
195
- const handleButtonPointerDown = (pointerType, button) => Option.some(toMessage(PressedPointerOnButton({
211
+ const handleButtonKeyDown = (key) => M.value(key).pipe(M.whenOr('Enter', ' ', 'ArrowDown', () => Option.some(isOpen ? dispatchClosed() : dispatchOpened())), M.orElse(() => Option.none()));
212
+ const handleButtonPointerDown = (pointerType, button) => Option.some(toParentMessage(PressedPointerOnButton({
196
213
  pointerType,
197
214
  button,
198
215
  })));
199
216
  const handleButtonClick = () => {
200
217
  const isMouse = Option.exists(maybeLastButtonPointerType, type => type === 'mouse');
201
218
  if (isMouse) {
202
- return toMessage(IgnoredMouseClick());
219
+ return toParentMessage(IgnoredMouseClick());
203
220
  }
204
221
  else if (isOpen) {
205
- return toMessage(Closed());
222
+ return dispatchClosed();
206
223
  }
207
224
  else {
208
- return toMessage(Opened());
225
+ return dispatchOpened();
209
226
  }
210
227
  };
211
- const handleSpaceKeyUp = (key) => OptionExt.when(key === ' ', toMessage(SuppressedSpaceScroll()));
212
- const handlePanelKeyDown = (key) => M.value(key).pipe(M.when('Escape', () => Option.some(toMessage(Closed()))), M.orElse(() => Option.none()));
228
+ const handleSpaceKeyUp = (key) => OptionExt.when(key === ' ', toParentMessage(SuppressedSpaceScroll()));
229
+ const handlePanelKeyDown = (key) => M.value(key).pipe(M.when('Escape', () => Option.some(dispatchClosed())), M.orElse(() => Option.none()));
213
230
  const resolvedButtonAttributes = [
214
231
  Id(`${id}-button`),
215
232
  Type('button'),
@@ -246,13 +263,13 @@ export const view = (config) => {
246
263
  ? []
247
264
  : [
248
265
  OnKeyDownPreventDefault(handlePanelKeyDown),
249
- OnBlur(toMessage(ClosedByTab())),
266
+ OnBlur(toParentMessage(ClosedByTab())),
250
267
  ]),
251
268
  ...(panelClassName ? [Class(panelClassName)] : []),
252
269
  ...panelAttributes,
253
270
  ];
254
271
  const backdrop = keyed('div')(`${id}-backdrop`, [
255
- ...(isLeaving ? [] : [OnClick(toMessage(Closed()))]),
272
+ ...(isLeaving ? [] : [OnClick(dispatchClosed())]),
256
273
  ...(backdropClassName ? [Class(backdropClassName)] : []),
257
274
  ...backdropAttributes,
258
275
  ], []);
@@ -273,12 +290,12 @@ export const view = (config) => {
273
290
  ]);
274
291
  };
275
292
  /** Creates a memoized popover view. Static config is captured in a closure;
276
- * only `model` and `toMessage` are compared per render via `createLazy`. */
293
+ * only `model` and `toParentMessage` are compared per render via `createLazy`. */
277
294
  export const lazy = (staticConfig) => {
278
295
  const lazyView = createLazy();
279
- return (model, toMessage) => lazyView((currentModel, currentToMessage) => view({
296
+ return (model, toParentMessage) => lazyView((currentModel, currentToMessage) => view({
280
297
  ...staticConfig,
281
298
  model: currentModel,
282
- toMessage: currentToMessage,
283
- }), [model, toMessage]);
299
+ toParentMessage: currentToMessage,
300
+ }), [model, toParentMessage]);
284
301
  };
@@ -1,5 +1,5 @@
1
- export { init, update, view, lazy, Model, Message } from './index';
1
+ export { init, update, open, close, view, lazy, Model, Message, Opened, Closed, CompletedFocusPanel, CompletedFocusButton, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusPanel, FocusButton, WaitForTransitions, DetectMovementOrTransitionEnd, } from './index';
2
2
  export { TransitionState } from '../transition';
3
- export type { Opened, Closed, ClosedByTab, PressedPointerOnButton, IgnoredMouseClick, SuppressedSpaceScroll, InitConfig, ViewConfig, } from './index';
3
+ export type { ClosedByTab, PressedPointerOnButton, IgnoredMouseClick, SuppressedSpaceScroll, InitConfig, ViewConfig, } from './index';
4
4
  export type { AnchorConfig } from '../anchor';
5
5
  //# sourceMappingURL=public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
@@ -1,2 +1,2 @@
1
- export { init, update, view, lazy, Model, Message } from './index';
1
+ export { init, update, open, close, view, lazy, Model, Message, Opened, Closed, CompletedFocusPanel, CompletedFocusButton, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusPanel, FocusButton, WaitForTransitions, DetectMovementOrTransitionEnd, } from './index';
2
2
  export { TransitionState } from '../transition';
@@ -34,11 +34,15 @@ export type InitConfig = Readonly<{
34
34
  }>;
35
35
  /** Creates an initial radio group model from a config. Defaults to no selection and vertical orientation. */
36
36
  export declare const init: (config: InitConfig) => Model;
37
+ /** Moves focus to the radio option at the given index. */
37
38
  export declare const FocusOption: Command.CommandDefinition<"FocusOption", {
38
39
  readonly _tag: "CompletedFocusOption";
39
40
  }>;
40
41
  /** Processes a radio group message and returns the next model and commands. */
41
42
  export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
43
+ /** Programmatically selects a value in the radio group, updating the model and returning
44
+ * focus commands. Use this in domain-event handlers when the radio group uses `onSelected`. */
45
+ export declare const select: (model: Model, value: string, options: ReadonlyArray<string>) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
42
46
  /** Attribute groups the radio group component provides for each option's `content` callback. */
43
47
  export type OptionAttributes<Message> = Readonly<{
44
48
  option: ReadonlyArray<Attribute<Message>>;
@@ -46,12 +50,12 @@ export type OptionAttributes<Message> = Readonly<{
46
50
  description: ReadonlyArray<Attribute<Message>>;
47
51
  }>;
48
52
  /** Configuration for an individual radio option. The `value` field carries the generic `RadioOption` type
49
- * so it flows through to `toMessage` callbacks without widening to `string`. */
53
+ * so it flows through to `toParentMessage` callbacks without widening to `string`. */
50
54
  export type OptionConfig<Message, RadioOption extends string = string> = Readonly<{
51
55
  value: RadioOption;
52
56
  content: (attributes: OptionAttributes<Message>) => Html;
53
57
  }>;
54
- /** The `SelectedOption` message as seen by `toMessage` callbacks, with `value` narrowed
58
+ /** The `SelectedOption` message as seen by `toParentMessage` callbacks, with `value` narrowed
55
59
  * to the generic `RadioOption` type instead of `string`. */
56
60
  export type NarrowedSelectedOption<RadioOption extends string> = Readonly<{
57
61
  readonly _tag: 'SelectedOption';
@@ -61,7 +65,8 @@ export type NarrowedSelectedOption<RadioOption extends string> = Readonly<{
61
65
  /** Configuration for rendering a radio group with `view`. */
62
66
  export type ViewConfig<Message, RadioOption extends string> = Readonly<{
63
67
  model: Model;
64
- toMessage: (message: NarrowedSelectedOption<RadioOption> | CompletedFocusOption) => Message;
68
+ toParentMessage: (message: NarrowedSelectedOption<RadioOption> | CompletedFocusOption) => Message;
69
+ onSelected?: (value: RadioOption, index: number) => Message;
65
70
  options: ReadonlyArray<RadioOption>;
66
71
  optionToConfig: (option: RadioOption, context: Readonly<{
67
72
  isSelected: boolean;
@@ -79,6 +84,6 @@ export type ViewConfig<Message, RadioOption extends string> = Readonly<{
79
84
  /** Renders an accessible radio group by building ARIA attribute groups and delegating layout to the consumer's `optionToConfig` callback. */
80
85
  export declare const view: <Message, RadioOption extends string>(config: ViewConfig<Message, RadioOption>) => Html;
81
86
  /** Creates a memoized radio group view. Static config is captured in a closure;
82
- * only `model` and `toMessage` are compared per render via `createLazy`. */
83
- export declare const lazy: <Message, RadioOption extends string>(staticConfig: Omit<ViewConfig<Message, RadioOption>, "model" | "toMessage">) => ((model: Model, toMessage: ViewConfig<Message, RadioOption>["toMessage"]) => Html);
87
+ * only `model` and `toParentMessage` are compared per render via `createLazy`. */
88
+ export declare const lazy: <Message, RadioOption extends string>(staticConfig: Omit<ViewConfig<Message, RadioOption>, "model" | "toParentMessage" | "onSelected">) => ((model: Model, toParentMessage: ViewConfig<Message, RadioOption>["toParentMessage"]) => Html);
84
89
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/radioGroup/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/radioGroup/index.ts"],"names":[],"mappings":"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"}