@foldkit/ui 0.153.0 → 0.154.0-canary.2d85d5ae9536

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.
@@ -45,13 +45,26 @@ export declare const portalToContainingRoot: (element: Element) => (() => void);
45
45
  * - `focusAfterPosition`: focuses the element once the first position
46
46
  * resolves. Defaults to `false`.
47
47
  * - `focusSelector`: focuses this descendant instead of the element itself.
48
- * Read only when `focusAfterPosition` is true. */
48
+ * Read only when `focusAfterPosition` is true.
49
+ * - `arrowId`: id of an arrow element inside the panel, resolved through the
50
+ * element's own root. An id that resolves to an element outside the panel is
51
+ * ignored, and any element type is accepted, so an `<svg>` arrow works. When
52
+ * it resolves, the arrow's offset along the panel edge is published as
53
+ * `--arrow-x` and `--arrow-y`, with the axis the placement does not use
54
+ * reset to `initial`, and the panel is no longer made a scroll container,
55
+ * since scrolling clips on both axes and an arrow sits half outside the
56
+ * panel's box.
57
+ * - `arrowPadding`: distance in pixels the arrow keeps from the panel's
58
+ * corners. Defaults to `0`. Separate from `anchor.padding`, which is the
59
+ * viewport padding. */
49
60
  export type SetupConfig = Readonly<{
50
61
  buttonId: string;
51
62
  anchor: AnchorConfig;
52
63
  interceptTab?: boolean;
53
64
  focusAfterPosition?: boolean;
54
65
  focusSelector?: string;
66
+ arrowId?: string;
67
+ arrowPadding?: number;
55
68
  }>;
56
69
  /** Positions a floating element relative to its button using Floating UI, then
57
70
  * returns a cleanup function. Designed to be called inside an `OnMount`
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/anchor/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,IAAI,CAAC,EAAgB,MAAM,QAAQ,CAAA;AAYnE;mFACmF;AACnF,eAAO,MAAM,SAAS,qKAapB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C;+DAC+D;AAC/D,eAAO,MAAM,OAAO;;;;;IAQlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,oGAAoG;AACpG,eAAO,MAAM,YAAY;;;;;;;;;;;;EAOvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAkCnD;;;;;;0DAM0D;AAC1D,eAAO,MAAM,sBAAsB,GAAI,SAAS,OAAO,KAAG,CAAC,MAAM,IAAI,CAWpE,CAAA;AAKD;;;;;;;;;;qDAUqD;AACrD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;gFAegF;AAChF,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,EAChB,QAAQ,WAAW,KAClB,CAAC,MAAM,IAAI,CA4Lb,CAAA"}
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/anchor/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,MAAM,IAAI,CAAC,EAAgB,MAAM,QAAQ,CAAA;AAa3E;mFACmF;AACnF,eAAO,MAAM,SAAS,qKAapB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C;+DAC+D;AAC/D,eAAO,MAAM,OAAO;;;;;IAQlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,oGAAoG;AACpG,eAAO,MAAM,YAAY;;;;;;;;;;;;EAOvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAkCnD;;;;;;0DAM0D;AAC1D,eAAO,MAAM,sBAAsB,GAAI,SAAS,OAAO,KAAG,CAAC,MAAM,IAAI,CAWpE,CAAA;AAKD;;;;;;;;;;;;;;;;;;;;;0BAqB0B;AAC1B,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAAA;AAsBF;;;;;;;;;;;;;;;gFAegF;AAChF,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,EAChB,QAAQ,WAAW,KAClB,CAAC,MAAM,IAAI,CAyOb,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
2
- import { Array, Function, Schema as S, String, pipe } from 'effect';
3
- import { autoUpdate, computePosition, flip, offset as floatingOffset, shift, size, } from '@floating-ui/dom';
2
+ import { Array, Function, Option, Schema as S, String, pipe } from 'effect';
3
+ import { arrow, autoUpdate, computePosition, flip, offset as floatingOffset, shift, size, } from '@floating-ui/dom';
4
4
  /** Schema mirroring `@floating-ui/dom`'s `Placement` literal union: a side
5
5
  * (`top`/`right`/`bottom`/`left`) optionally suffixed with `-start` or `-end`. */
6
6
  export const Placement = S.Literals([
@@ -84,6 +84,22 @@ export const portalToContainingRoot = (element) => {
84
84
  }), "@foldkit/ui/anchor/anchor.js#portalToContainingRoot");
85
85
  };
86
86
  const toSide = (placement) => __foldkitBrandViewResult((pipe(placement, String.split('-'), Array.headNonEmpty)), "@foldkit/ui/anchor/anchor.js#toSide");
87
+ // NOTE: the unused axis is reset to `initial` rather than removed. Custom
88
+ // properties inherit, so removing it lets an ancestor's `--arrow-x` reach the
89
+ // arrow, and a `left` that resolves beats the side rule's `right` under
90
+ // over-constrained absolute positioning. An ancestor is not far-fetched: a
91
+ // `portal: false` popover nested inside another popover's panel sits under one.
92
+ // `initial` gives the property its guaranteed-invalid initial value, so
93
+ // `var(--arrow-x)` is invalid at computed-value time and `left` falls back to
94
+ // `auto`.
95
+ const setOrResetLength = (element, property, value) => {
96
+ if (value === undefined) {
97
+ element.style.setProperty(property, 'initial');
98
+ }
99
+ else {
100
+ element.style.setProperty(property, `${value}px`);
101
+ }
102
+ };
87
103
  /** Positions a floating element relative to its button using Floating UI, then
88
104
  * returns a cleanup function. Designed to be called inside an `OnMount`
89
105
  * action: the consumer wraps the call in `Effect.sync` and stashes the
@@ -123,6 +139,19 @@ export const anchorSetup = (element, config) => {
123
139
  if (inShadow) {
124
140
  element.style.position = 'fixed';
125
141
  }
142
+ // NOTE: an id lookup searches the whole root, so an unrelated element that
143
+ // happens to carry the arrow id would be positioned as the arrow. The
144
+ // containment check holds the lookup to what `arrowId` documents, an arrow
145
+ // inside the panel. The candidate is not narrowed to `HTMLElement`, since
146
+ // Floating UI's `arrow` takes any `Element` and a triangle arrow is usually
147
+ // an `<svg>`.
148
+ const maybeArrowElement = pipe(Option.fromNullishOr(config.arrowId), Option.flatMapNullishOr(arrowId => __foldkitBrandViewResult((owner.getElementById(arrowId)), "@foldkit/ui/anchor/anchor.js#anonymous~2")), Option.filter(candidate => __foldkitBrandViewResult((element.contains(candidate)), "@foldkit/ui/anchor/anchor.js#anonymous~3")));
149
+ const arrowMiddleware = Option.match(maybeArrowElement, {
150
+ onNone: () => __foldkitBrandViewResult(([]), "@foldkit/ui/anchor/anchor.js#onNone"),
151
+ onSome: arrowElement => __foldkitBrandViewResult(([
152
+ arrow({ element: arrowElement, padding: config.arrowPadding ?? 0 }),
153
+ ]), "@foldkit/ui/anchor/anchor.js#onSome"),
154
+ });
126
155
  const { placement, gap, offset: crossAxis, padding, isPlacementLocked, } = config.anchor;
127
156
  const shouldInterceptTab = config.interceptTab ?? true;
128
157
  const isPlacementLockEnabled = isPlacementLocked ?? false;
@@ -168,15 +197,30 @@ export const anchorSetup = (element, config) => {
168
197
  }
169
198
  element.style.setProperty('--button-width', `${rects.reference.width}px`);
170
199
  element.style.maxHeight = `${Math.max(0, availableHeight)}px`;
171
- element.style.overflowY = 'auto';
172
- element.style.overscrollBehavior = 'none';
200
+ // NOTE: `overflow-y: auto` makes `overflow-x` compute to `auto`
201
+ // too, so a scrolling panel clips on every side. An arrow sits
202
+ // half outside the panel's padding box, so it would be clipped
203
+ // away entirely. A panel with an arrow keeps its scroll container
204
+ // inside itself instead.
205
+ if (Option.isNone(maybeArrowElement)) {
206
+ element.style.overflowY = 'auto';
207
+ element.style.overscrollBehavior = 'none';
208
+ }
173
209
  },
174
210
  }),
211
+ // NOTE: `arrow` runs last. Sitting after `shift` is the constraint: an
212
+ // offset computed before `shift` would ignore the displacement `shift`
213
+ // applied, which is the case this hook exists to handle. Running after
214
+ // `size` is safe for a different reason: when `size.apply` changes the
215
+ // panel's dimensions, `size` returns `reset: { rects: true }` and
216
+ // Floating UI reruns the whole chain, so `arrow` always resolves
217
+ // against the final rects rather than the ones `size` invalidated.
218
+ ...arrowMiddleware,
175
219
  ],
176
220
  });
177
221
  isPositioning = true;
178
222
  tick
179
- .then(({ x, y, placement: resolvedPlacement }) => {
223
+ .then(({ x, y, placement: resolvedPlacement, middlewareData }) => {
180
224
  hasWarnedFailure = false;
181
225
  if (!isActive) {
182
226
  return;
@@ -187,6 +231,11 @@ export const anchorSetup = (element, config) => {
187
231
  lockedPlacement = lockedPlacement ?? resolvedPlacement;
188
232
  }
189
233
  element.setAttribute('data-placement', toSide(lockedPlacement ?? resolvedPlacement));
234
+ if (Option.isSome(maybeArrowElement)) {
235
+ const { x: arrowX, y: arrowY } = middlewareData.arrow ?? {};
236
+ setOrResetLength(element, '--arrow-x', arrowX);
237
+ setOrResetLength(element, '--arrow-y', arrowY);
238
+ }
190
239
  if (isFirstUpdate) {
191
240
  isFirstUpdate = false;
192
241
  element.style.visibility = '';
@@ -242,6 +291,10 @@ export const anchorSetup = (element, config) => {
242
291
  element.removeEventListener('keydown', handleTabKey);
243
292
  }
244
293
  element.removeAttribute('data-placement');
294
+ element.style.removeProperty('overflow-y');
295
+ element.style.removeProperty('overscroll-behavior');
296
+ element.style.removeProperty('--arrow-x');
297
+ element.style.removeProperty('--arrow-y');
245
298
  portalCleanup?.();
246
299
  }), "@foldkit/ui/anchor/anchor.js#anchorSetup");
247
300
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/combobox/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/combobox/shared.ts"],"names":[],"mappings":"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"}
@@ -368,66 +368,79 @@ export const makeUpdate = (handlers) => {
368
368
  * capture listener that prevents input blur on item presses. Exposed so
369
369
  * Scene tests can call
370
370
  * `Scene.Mount.resolve(AnchorCombobox, CompletedAnchorCombobox())`. */
371
- export const AnchorCombobox = Mount.define('AnchorCombobox', { buttonId: S.String, anchor: AnchorConfig }, Message.CompletedAnchorCombobox)(({ buttonId, anchor }) => __foldkitBrandViewResult((element => __foldkitBrandViewResult((Effect.gen(function* () {
372
- yield* Effect.acquireRelease(Effect.sync(() => {
373
- const preventBlur = (event) => {
374
- event.preventDefault();
375
- };
376
- element.addEventListener('pointerdown', preventBlur, {
377
- capture: true,
378
- });
379
- const teardownAnchor = anchorSetup(element, {
380
- buttonId,
381
- anchor,
382
- interceptTab: false,
383
- });
384
- return __foldkitBrandViewResult((() => {
385
- element.removeEventListener('pointerdown', preventBlur, {
371
+ export const AnchorCombobox = Mount.define('AnchorCombobox', {
372
+ args: { buttonId: S.String, anchor: AnchorConfig },
373
+ messages: [Message.CompletedAnchorCombobox],
374
+ execute: ({ element, buttonId, anchor }) => __foldkitBrandViewResult((Effect.gen(function* () {
375
+ yield* Effect.acquireRelease(Effect.sync(() => {
376
+ const preventBlur = (event) => {
377
+ event.preventDefault();
378
+ };
379
+ element.addEventListener('pointerdown', preventBlur, {
386
380
  capture: true,
387
381
  });
388
- teardownAnchor();
389
- }), "@foldkit/ui/combobox/shared.js#anonymous~12");
390
- }), cleanup => __foldkitBrandViewResult((Effect.sync(cleanup)), "@foldkit/ui/combobox/shared.js#anonymous~14"));
391
- return __foldkitBrandViewResult((Message.CompletedAnchorCombobox()), "@foldkit/ui/combobox/shared.js#anonymous~11");
392
- })), "@foldkit/ui/combobox/shared.js#anonymous~10")), "@foldkit/ui/combobox/shared.js#anonymous~9"));
382
+ const teardownAnchor = anchorSetup(element, {
383
+ buttonId,
384
+ anchor,
385
+ interceptTab: false,
386
+ });
387
+ return __foldkitBrandViewResult((() => {
388
+ element.removeEventListener('pointerdown', preventBlur, {
389
+ capture: true,
390
+ });
391
+ teardownAnchor();
392
+ }), "@foldkit/ui/combobox/shared.js#anonymous~10");
393
+ }), cleanup => __foldkitBrandViewResult((Effect.sync(cleanup)), "@foldkit/ui/combobox/shared.js#anonymous~12"));
394
+ return __foldkitBrandViewResult((Message.CompletedAnchorCombobox()), "@foldkit/ui/combobox/shared.js#anonymous~9");
395
+ })), "@foldkit/ui/combobox/shared.js#execute~7"),
396
+ });
393
397
  /** The Mount this Combobox renders to install a `pointerdown`-cancelling
394
398
  * capture listener that prevents blur on item presses. Exposed so Scene
395
399
  * tests can call
396
400
  * `Scene.Mount.resolve(AttachComboboxPreventBlur, CompletedAttachComboboxPreventBlur())`. */
397
- export const AttachComboboxPreventBlur = Mount.define('AttachComboboxPreventBlur', Message.CompletedAttachComboboxPreventBlur)(element => __foldkitBrandViewResult((Effect.gen(function* () {
398
- yield* Effect.acquireRelease(Effect.sync(() => {
399
- const handler = (event) => {
400
- event.preventDefault();
401
- };
402
- element.addEventListener('pointerdown', handler, { capture: true });
403
- return __foldkitBrandViewResult((handler), "@foldkit/ui/combobox/shared.js#anonymous~17");
404
- }), handler => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((element.removeEventListener('pointerdown', handler, {
405
- capture: true,
406
- })), "@foldkit/ui/combobox/shared.js#anonymous~19"))), "@foldkit/ui/combobox/shared.js#anonymous~18"));
407
- return __foldkitBrandViewResult((Message.CompletedAttachComboboxPreventBlur()), "@foldkit/ui/combobox/shared.js#anonymous~16");
408
- })), "@foldkit/ui/combobox/shared.js#anonymous~15"));
401
+ export const AttachComboboxPreventBlur = Mount.define('AttachComboboxPreventBlur', {
402
+ messages: [Message.CompletedAttachComboboxPreventBlur],
403
+ execute: ({ element }) => __foldkitBrandViewResult((Effect.gen(function* () {
404
+ yield* Effect.acquireRelease(Effect.sync(() => {
405
+ const handler = (event) => {
406
+ event.preventDefault();
407
+ };
408
+ element.addEventListener('pointerdown', handler, { capture: true });
409
+ return __foldkitBrandViewResult((handler), "@foldkit/ui/combobox/shared.js#anonymous~14");
410
+ }), handler => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((element.removeEventListener('pointerdown', handler, {
411
+ capture: true,
412
+ })), "@foldkit/ui/combobox/shared.js#anonymous~16"))), "@foldkit/ui/combobox/shared.js#anonymous~15"));
413
+ return __foldkitBrandViewResult((Message.CompletedAttachComboboxPreventBlur()), "@foldkit/ui/combobox/shared.js#anonymous~13");
414
+ })), "@foldkit/ui/combobox/shared.js#execute~8"),
415
+ });
409
416
  /** The Mount this Combobox renders to install the input's select-on-focus
410
417
  * behavior. Exposed so Scene tests can call
411
418
  * `Scene.Mount.resolve(AttachComboboxSelectOnFocus, CompletedAttachComboboxSelectOnFocus())`. */
412
- export const AttachComboboxSelectOnFocus = Mount.define('AttachComboboxSelectOnFocus', Message.CompletedAttachComboboxSelectOnFocus)(element => __foldkitBrandViewResult((Effect.gen(function* () {
413
- yield* Effect.acquireRelease(Effect.sync(() => {
414
- const handler = () => {
415
- if (element instanceof HTMLInputElement) {
416
- element.select();
417
- }
418
- };
419
- element.addEventListener('focus', handler);
420
- return __foldkitBrandViewResult((handler), "@foldkit/ui/combobox/shared.js#anonymous~22");
421
- }), handler => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((element.removeEventListener('focus', handler)), "@foldkit/ui/combobox/shared.js#anonymous~24"))), "@foldkit/ui/combobox/shared.js#anonymous~23"));
422
- return __foldkitBrandViewResult((Message.CompletedAttachComboboxSelectOnFocus()), "@foldkit/ui/combobox/shared.js#anonymous~21");
423
- })), "@foldkit/ui/combobox/shared.js#anonymous~20"));
419
+ export const AttachComboboxSelectOnFocus = Mount.define('AttachComboboxSelectOnFocus', {
420
+ messages: [Message.CompletedAttachComboboxSelectOnFocus],
421
+ execute: ({ element }) => __foldkitBrandViewResult((Effect.gen(function* () {
422
+ yield* Effect.acquireRelease(Effect.sync(() => {
423
+ const handler = () => {
424
+ if (element instanceof HTMLInputElement) {
425
+ element.select();
426
+ }
427
+ };
428
+ element.addEventListener('focus', handler);
429
+ return __foldkitBrandViewResult((handler), "@foldkit/ui/combobox/shared.js#anonymous~18");
430
+ }), handler => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((element.removeEventListener('focus', handler)), "@foldkit/ui/combobox/shared.js#anonymous~20"))), "@foldkit/ui/combobox/shared.js#anonymous~19"));
431
+ return __foldkitBrandViewResult((Message.CompletedAttachComboboxSelectOnFocus()), "@foldkit/ui/combobox/shared.js#anonymous~17");
432
+ })), "@foldkit/ui/combobox/shared.js#execute~9"),
433
+ });
424
434
  /** The backdrop-portaling Mount this Combobox renders. Exposed so Scene tests can
425
435
  * call `Scene.Mount.resolve(PortalComboboxBackdrop, CompletedPortalComboboxBackdrop())` to
426
436
  * acknowledge the mount produced by the rendered backdrop. */
427
- export const PortalComboboxBackdrop = Mount.define('PortalComboboxBackdrop', Message.CompletedPortalComboboxBackdrop)(element => __foldkitBrandViewResult((Effect.gen(function* () {
428
- yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((portalToContainingRoot(element)), "@foldkit/ui/combobox/shared.js#anonymous~27")), cleanup => __foldkitBrandViewResult((Effect.sync(cleanup)), "@foldkit/ui/combobox/shared.js#anonymous~28"));
429
- return __foldkitBrandViewResult((Message.CompletedPortalComboboxBackdrop()), "@foldkit/ui/combobox/shared.js#anonymous~26");
430
- })), "@foldkit/ui/combobox/shared.js#anonymous~25"));
437
+ export const PortalComboboxBackdrop = Mount.define('PortalComboboxBackdrop', {
438
+ messages: [Message.CompletedPortalComboboxBackdrop],
439
+ execute: ({ element }) => __foldkitBrandViewResult((Effect.gen(function* () {
440
+ yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((portalToContainingRoot(element)), "@foldkit/ui/combobox/shared.js#anonymous~22")), cleanup => __foldkitBrandViewResult((Effect.sync(cleanup)), "@foldkit/ui/combobox/shared.js#anonymous~23"));
441
+ return __foldkitBrandViewResult((Message.CompletedPortalComboboxBackdrop()), "@foldkit/ui/combobox/shared.js#anonymous~21");
442
+ })), "@foldkit/ui/combobox/shared.js#execute~10"),
443
+ });
431
444
  /** Creates a combobox view function from variant-specific behavior. Shared rendering logic (input, items, transitions, keyboard navigation) is handled internally; only listbox multi-select semantics vary by variant. */
432
445
  export const makeView = (behavior) => {
433
446
  const impl = defineView((model, viewInputs, h) => {
@@ -452,30 +465,30 @@ export const makeView = (behavior) => {
452
465
  h.DataAttribute('closed', ''),
453
466
  h.DataAttribute('enter', ''),
454
467
  h.DataAttribute('transition', ''),
455
- ]), "@foldkit/ui/combobox/shared.js#anonymous~30")), M.when('EnterAnimating', () => __foldkitBrandViewResult(([
468
+ ]), "@foldkit/ui/combobox/shared.js#anonymous~25")), M.when('EnterAnimating', () => __foldkitBrandViewResult(([
456
469
  h.DataAttribute('enter', ''),
457
470
  h.DataAttribute('transition', ''),
458
- ]), "@foldkit/ui/combobox/shared.js#anonymous~31")), M.when('LeaveStart', () => __foldkitBrandViewResult(([
471
+ ]), "@foldkit/ui/combobox/shared.js#anonymous~26")), M.when('LeaveStart', () => __foldkitBrandViewResult(([
459
472
  h.DataAttribute('leave', ''),
460
473
  h.DataAttribute('transition', ''),
461
- ]), "@foldkit/ui/combobox/shared.js#anonymous~32")), M.when('LeaveAnimating', () => __foldkitBrandViewResult(([
474
+ ]), "@foldkit/ui/combobox/shared.js#anonymous~27")), M.when('LeaveAnimating', () => __foldkitBrandViewResult(([
462
475
  h.DataAttribute('closed', ''),
463
476
  h.DataAttribute('leave', ''),
464
477
  h.DataAttribute('transition', ''),
465
- ]), "@foldkit/ui/combobox/shared.js#anonymous~33")), M.orElse(() => __foldkitBrandViewResult(([]), "@foldkit/ui/combobox/shared.js#anonymous~34")));
478
+ ]), "@foldkit/ui/combobox/shared.js#anonymous~28")), M.orElse(() => __foldkitBrandViewResult(([]), "@foldkit/ui/combobox/shared.js#anonymous~29")));
466
479
  const isDisabledAtIndex = (index) => __foldkitBrandViewResult((Predicate.isNotUndefined(isItemDisabled) &&
467
- pipe(items, Array.get(index), Option.exists(item => __foldkitBrandViewResult((isItemDisabled(item, index)), "@foldkit/ui/combobox/shared.js#anonymous~35")))), "@foldkit/ui/combobox/shared.js#isDisabledAtIndex");
480
+ pipe(items, Array.get(index), Option.exists(item => __foldkitBrandViewResult((isItemDisabled(item, index)), "@foldkit/ui/combobox/shared.js#anonymous~30")))), "@foldkit/ui/combobox/shared.js#isDisabledAtIndex");
468
481
  const firstEnabledIndex = findFirstEnabledIndex(items.length, 0, isDisabledAtIndex)(0, 1);
469
482
  const lastEnabledIndex = findFirstEnabledIndex(items.length, 0, isDisabledAtIndex)(items.length - 1, -1);
470
- const resolveActiveIndex = keyToIndex('ArrowDown', 'ArrowUp', items.length, Option.getOrElse(maybeActiveItemIndex, () => __foldkitBrandViewResult((-1), "@foldkit/ui/combobox/shared.js#anonymous~36")), isDisabledAtIndex);
483
+ const resolveActiveIndex = keyToIndex('ArrowDown', 'ArrowUp', items.length, Option.getOrElse(maybeActiveItemIndex, () => __foldkitBrandViewResult((-1), "@foldkit/ui/combobox/shared.js#anonymous~31")), isDisabledAtIndex);
471
484
  const resolveImmediateSelection = (targetIndex) => {
472
485
  if (isReadOnly) {
473
486
  return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#resolveImmediateSelection");
474
487
  }
475
488
  else {
476
- return __foldkitBrandViewResult((pipe(OptionExt.when(immediate, targetIndex), Option.flatMap(index => __foldkitBrandViewResult((Array.get(items, index)), "@foldkit/ui/combobox/shared.js#anonymous~37")), Option.map(targetItem => (__foldkitBrandViewResult(({
489
+ return __foldkitBrandViewResult((pipe(OptionExt.when(immediate, targetIndex), Option.flatMap(index => __foldkitBrandViewResult((Array.get(items, index)), "@foldkit/ui/combobox/shared.js#anonymous~32")), Option.map(targetItem => (__foldkitBrandViewResult(({
477
490
  item: itemToValue(targetItem, targetIndex),
478
- }), "@foldkit/ui/combobox/shared.js#anonymous~38"))))), "@foldkit/ui/combobox/shared.js#resolveImmediateSelection");
491
+ }), "@foldkit/ui/combobox/shared.js#anonymous~33"))))), "@foldkit/ui/combobox/shared.js#resolveImmediateSelection");
479
492
  }
480
493
  };
481
494
  const resolveCommitMessage = () => {
@@ -483,61 +496,61 @@ export const makeView = (behavior) => {
483
496
  return __foldkitBrandViewResult((Option.as(maybeActiveItemIndex, Message.SuppressedItemCommit())), "@foldkit/ui/combobox/shared.js#resolveCommitMessage");
484
497
  }
485
498
  else {
486
- return __foldkitBrandViewResult((Option.map(maybeActiveItemIndex, index => __foldkitBrandViewResult((Message.RequestedItemClick({ index })), "@foldkit/ui/combobox/shared.js#anonymous~39"))), "@foldkit/ui/combobox/shared.js#resolveCommitMessage");
499
+ return __foldkitBrandViewResult((Option.map(maybeActiveItemIndex, index => __foldkitBrandViewResult((Message.RequestedItemClick({ index })), "@foldkit/ui/combobox/shared.js#anonymous~34"))), "@foldkit/ui/combobox/shared.js#resolveCommitMessage");
487
500
  }
488
501
  };
489
502
  const handleInputKeyDown = (key) => __foldkitBrandViewResult((M.value(key).pipe(M.when('ArrowDown', () => {
490
503
  if (!isOpen) {
491
504
  return __foldkitBrandViewResult((Option.some(Message.Opened({
492
505
  maybeActiveItemIndex: Option.some(firstEnabledIndex),
493
- }))), "@foldkit/ui/combobox/shared.js#anonymous~40");
506
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~35");
494
507
  }
495
508
  const targetIndex = resolveActiveIndex('ArrowDown');
496
509
  return __foldkitBrandViewResult((Option.some(Message.ActivatedItem({
497
510
  index: targetIndex,
498
511
  activationTrigger: 'Keyboard',
499
512
  maybeImmediateSelection: resolveImmediateSelection(targetIndex),
500
- }))), "@foldkit/ui/combobox/shared.js#anonymous~40");
513
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~35");
501
514
  }), M.when('ArrowUp', () => {
502
515
  if (!isOpen) {
503
516
  return __foldkitBrandViewResult((Option.some(Message.Opened({
504
517
  maybeActiveItemIndex: Option.some(lastEnabledIndex),
505
- }))), "@foldkit/ui/combobox/shared.js#anonymous~41");
518
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~36");
506
519
  }
507
520
  const targetIndex = resolveActiveIndex('ArrowUp');
508
521
  return __foldkitBrandViewResult((Option.some(Message.ActivatedItem({
509
522
  index: targetIndex,
510
523
  activationTrigger: 'Keyboard',
511
524
  maybeImmediateSelection: resolveImmediateSelection(targetIndex),
512
- }))), "@foldkit/ui/combobox/shared.js#anonymous~41");
525
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~36");
513
526
  }), M.when('Enter', () => {
514
527
  if (!isOpen) {
515
- return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~42");
528
+ return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~37");
516
529
  }
517
- return __foldkitBrandViewResult((resolveCommitMessage()), "@foldkit/ui/combobox/shared.js#anonymous~42");
530
+ return __foldkitBrandViewResult((resolveCommitMessage()), "@foldkit/ui/combobox/shared.js#anonymous~37");
518
531
  }), M.when('Escape', () => {
519
532
  if (!isOpen) {
520
- return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~43");
533
+ return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~38");
521
534
  }
522
- return __foldkitBrandViewResult((Option.some(Message.Closed({ restingInputValue, isClearable: !isReadOnly }))), "@foldkit/ui/combobox/shared.js#anonymous~43");
535
+ return __foldkitBrandViewResult((Option.some(Message.Closed({ restingInputValue, isClearable: !isReadOnly }))), "@foldkit/ui/combobox/shared.js#anonymous~38");
523
536
  }), M.whenOr('Home', 'End', () => {
524
537
  if (!isOpen) {
525
- return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~44");
538
+ return __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~39");
526
539
  }
527
540
  const targetIndex = resolveActiveIndex(key);
528
541
  return __foldkitBrandViewResult((Option.some(Message.ActivatedItem({
529
542
  index: targetIndex,
530
543
  activationTrigger: 'Keyboard',
531
544
  maybeImmediateSelection: resolveImmediateSelection(targetIndex),
532
- }))), "@foldkit/ui/combobox/shared.js#anonymous~44");
533
- }), M.orElse(() => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~45")))), "@foldkit/ui/combobox/shared.js#handleInputKeyDown");
545
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~39");
546
+ }), M.orElse(() => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#anonymous~40")))), "@foldkit/ui/combobox/shared.js#handleInputKeyDown");
534
547
  const maybeActiveDescendant = Option.match(maybeActiveItemIndex, {
535
548
  onNone: () => __foldkitBrandViewResult(([]), "@foldkit/ui/combobox/shared.js#onNone~3"),
536
549
  onSome: index => __foldkitBrandViewResult(([h.AriaActiveDescendant(itemId(id, index))]), "@foldkit/ui/combobox/shared.js#onSome~3"),
537
550
  });
538
551
  const onInputAttributes = isReadOnly
539
552
  ? []
540
- : [h.OnInput(value => __foldkitBrandViewResult((Message.UpdatedInputValue({ value })), "@foldkit/ui/combobox/shared.js#anonymous~46"))];
553
+ : [h.OnInput(value => __foldkitBrandViewResult((Message.UpdatedInputValue({ value })), "@foldkit/ui/combobox/shared.js#anonymous~41"))];
541
554
  const resolvedInputAttributes = [
542
555
  h.Id(`${id}-input`),
543
556
  h.Role('combobox'),
@@ -608,7 +621,7 @@ export const makeView = (behavior) => {
608
621
  ...itemsAttributes,
609
622
  ];
610
623
  const comboboxItems = Array.map(items, (item, index) => {
611
- const isActiveItem = Option.exists(maybeActiveItemIndex, activeIndex => __foldkitBrandViewResult((activeIndex === index), "@foldkit/ui/combobox/shared.js#anonymous~48"));
624
+ const isActiveItem = Option.exists(maybeActiveItemIndex, activeIndex => __foldkitBrandViewResult((activeIndex === index), "@foldkit/ui/combobox/shared.js#anonymous~43"));
612
625
  const isDisabledItem = isDisabledAtIndex(index);
613
626
  const isSelectedItem = isValueSelected(itemToValue(item, index));
614
627
  const itemConfig = itemToConfig(item, {
@@ -647,13 +660,13 @@ export const makeView = (behavior) => {
647
660
  index,
648
661
  screenX,
649
662
  screenY,
650
- }))), "@foldkit/ui/combobox/shared.js#anonymous~49")),
663
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~44")),
651
664
  ]),
652
- h.OnPointerLeave(pointerType => __foldkitBrandViewResult((OptionExt.when(pointerType !== 'touch', Message.DeactivatedItem())), "@foldkit/ui/combobox/shared.js#anonymous~50")),
665
+ h.OnPointerLeave(pointerType => __foldkitBrandViewResult((OptionExt.when(pointerType !== 'touch', Message.DeactivatedItem())), "@foldkit/ui/combobox/shared.js#anonymous~45")),
653
666
  ]
654
667
  : []),
655
668
  ...(itemConfig.className ? [h.Class(itemConfig.className)] : []),
656
- ], [itemConfig.content])), "@foldkit/ui/combobox/shared.js#anonymous~47");
669
+ ], [itemConfig.content])), "@foldkit/ui/combobox/shared.js#anonymous~42");
657
670
  });
658
671
  const renderGroupedItems = () => {
659
672
  if (!itemGroupKey) {
@@ -662,7 +675,7 @@ export const makeView = (behavior) => {
662
675
  const segments = groupContiguous(comboboxItems, (_, index) => __foldkitBrandViewResult((Array.get(items, index).pipe(Option.match({
663
676
  onNone: () => __foldkitBrandViewResult((''), "@foldkit/ui/combobox/shared.js#onNone~4"),
664
677
  onSome: item => __foldkitBrandViewResult((itemGroupKey(item, index)), "@foldkit/ui/combobox/shared.js#onSome~4"),
665
- }))), "@foldkit/ui/combobox/shared.js#anonymous~51"));
678
+ }))), "@foldkit/ui/combobox/shared.js#anonymous~46"));
666
679
  return __foldkitBrandViewResult((Array.flatMap(segments, (segment, segmentIndex) => {
667
680
  const maybeHeading = Option.fromNullishOr(groupToHeading && groupToHeading(segment.key));
668
681
  const headingId = `${id}-heading-${segment.key}`;
@@ -698,7 +711,7 @@ export const makeView = (behavior) => {
698
711
  ]),
699
712
  ]
700
713
  : [];
701
- return __foldkitBrandViewResult(([...separator, groupElement]), "@foldkit/ui/combobox/shared.js#anonymous~52");
714
+ return __foldkitBrandViewResult(([...separator, groupElement]), "@foldkit/ui/combobox/shared.js#anonymous~47");
702
715
  })), "@foldkit/ui/combobox/shared.js#renderGroupedItems");
703
716
  };
704
717
  const backdrop = h.keyed('div')(`${id}-backdrop`, [
@@ -763,7 +776,7 @@ export const makeView = (behavior) => {
763
776
  h.Type('hidden'),
764
777
  h.Name(formName),
765
778
  h.Value(selectedValue),
766
- ])), "@foldkit/ui/combobox/shared.js#anonymous~53")),
779
+ ])), "@foldkit/ui/combobox/shared.js#anonymous~48")),
767
780
  })
768
781
  : [];
769
782
  const wrapperAttributes = [
@@ -783,9 +796,9 @@ export const makeView = (behavior) => {
783
796
  ? visibleContent
784
797
  : []),
785
798
  ...hiddenInputs,
786
- ])), "@foldkit/ui/combobox/shared.js#anonymous~29");
799
+ ])), "@foldkit/ui/combobox/shared.js#anonymous~24");
787
800
  });
788
801
  return __foldkitBrandViewResult((() =>
789
802
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
790
- __foldkitBrandViewResult((impl), "@foldkit/ui/combobox/shared.js#anonymous~54")), "@foldkit/ui/combobox/shared.js#makeView");
803
+ __foldkitBrandViewResult((impl), "@foldkit/ui/combobox/shared.js#anonymous~49")), "@foldkit/ui/combobox/shared.js#makeView");
791
804
  };
@@ -19,7 +19,8 @@ export type Model = typeof Model.Type;
19
19
  export declare const Message: import("foldkit/message").MessageUnion<{
20
20
  readonly RequestedOpen: {};
21
21
  readonly RequestedClose: {};
22
- readonly CompletedShowDialog: {};
22
+ readonly SucceededShowDialog: {};
23
+ readonly FailedShowDialog: {};
23
24
  readonly CompletedCloseDialog: {};
24
25
  readonly Unmounted: {};
25
26
  readonly CompletedReleaseDialogResources: {};
@@ -34,7 +35,8 @@ export declare const Message: import("foldkit/message").MessageUnion<{
34
35
  }>;
35
36
  export type RequestedOpen = typeof Message.RequestedOpen.Type;
36
37
  export type RequestedClose = typeof Message.RequestedClose.Type;
37
- export type CompletedShowDialog = typeof Message.CompletedShowDialog.Type;
38
+ export type SucceededShowDialog = typeof Message.SucceededShowDialog.Type;
39
+ export type FailedShowDialog = typeof Message.FailedShowDialog.Type;
38
40
  export type CompletedCloseDialog = typeof Message.CompletedCloseDialog.Type;
39
41
  export type Unmounted = typeof Message.Unmounted.Type;
40
42
  export type CompletedReleaseDialogResources = typeof Message.CompletedReleaseDialogResources.Type;
@@ -80,14 +82,28 @@ type UpdateReturn = Update.ReturnWithOutMessage<Model, Message, OutMessage>;
80
82
  * `Dom.showDialog`, which calls `show()` (not native `showModal()`) so other
81
83
  * high-z-index overlays stay interactive. It layers the dialog with a high
82
84
  * z-index, traps focus, and dispatches a `cancel` event on Esc. The Dialog
83
- * component supplies its own backdrop. */
85
+ * component supplies its own backdrop. If the dialog element is gone by the
86
+ * time the show runs, the lock is released and the Command reports
87
+ * `FailedShowDialog`. A closed dialog has no `OnUnmount`, so nothing else
88
+ * would release the lock. The update function then closes the Model. Without
89
+ * this close, the dialog would render open with no lock and no focus trap.
90
+ * The lock is also released if the Command is interrupted while it waits. */
84
91
  export declare const ShowDialog: Command.CommandDefinitionWithArgs<"ShowDialog", {
85
92
  id: S.String;
86
93
  focusSelector: S.String;
87
94
  }, Effect.Effect<{
88
- readonly _tag: "CompletedShowDialog";
95
+ readonly _tag: "SucceededShowDialog";
96
+ } | {
97
+ readonly _tag: "FailedShowDialog";
89
98
  }, never, never>>;
90
- /** Calls `close()` on the native dialog element and unlocks page scroll. */
99
+ /** Calls `close()` on the native dialog element and unlocks page scroll when
100
+ * the close released the resources `ShowDialog` installed. A close that runs
101
+ * before the show has installed them leaves the lock alone. When the show
102
+ * then fails, it releases the lock itself. When the show succeeds, update
103
+ * closes the dialog again. If the dialog element is gone by the time the
104
+ * close runs, the Command calls `Dom.releaseDialogResources` instead. That
105
+ * releases the scroll lock, focus trap, return focus, and stack entry if the
106
+ * dialog still holds them. */
91
107
  export declare const CloseDialog: Command.CommandDefinitionWithArgs<"CloseDialog", {
92
108
  id: S.String;
93
109
  }, Effect.Effect<{
@@ -120,7 +136,9 @@ export declare const update: (model: Model, message: Message) => Readonly<{
120
136
  } | {
121
137
  readonly _tag: "RequestedClose";
122
138
  } | {
123
- readonly _tag: "CompletedShowDialog";
139
+ readonly _tag: "SucceededShowDialog";
140
+ } | {
141
+ readonly _tag: "FailedShowDialog";
124
142
  } | {
125
143
  readonly _tag: "CompletedCloseDialog";
126
144
  } | {
@@ -237,7 +255,9 @@ export declare const view: import("foldkit/submodel").View<{
237
255
  } | {
238
256
  readonly _tag: "RequestedClose";
239
257
  } | {
240
- readonly _tag: "CompletedShowDialog";
258
+ readonly _tag: "SucceededShowDialog";
259
+ } | {
260
+ readonly _tag: "FailedShowDialog";
241
261
  } | {
242
262
  readonly _tag: "CompletedCloseDialog";
243
263
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialog/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialog/index.ts"],"names":[],"mappings":"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"}