foldkit 0.89.0 → 0.90.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.
- package/README.md +19 -10
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +3 -11
- package/dist/devTools/overlay.d.ts +3 -3
- package/dist/devTools/overlay.d.ts.map +1 -1
- package/dist/devTools/overlay.js +209 -171
- package/dist/devTools/protocol.d.ts +77 -19
- package/dist/devTools/protocol.d.ts.map +1 -1
- package/dist/devTools/protocol.js +10 -5
- package/dist/devTools/serialize.d.ts +8 -2
- package/dist/devTools/serialize.d.ts.map +1 -1
- package/dist/devTools/serialize.js +11 -2
- package/dist/devTools/store.d.ts +9 -5
- package/dist/devTools/store.d.ts.map +1 -1
- package/dist/devTools/store.js +13 -13
- package/dist/devTools/webSocketBridge.d.ts.map +1 -1
- package/dist/devTools/webSocketBridge.js +2 -2
- package/dist/html/index.d.ts +12 -0
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +20 -4
- package/dist/mount/index.d.ts +64 -21
- package/dist/mount/index.d.ts.map +1 -1
- package/dist/mount/index.js +43 -32
- package/dist/mount/public.d.ts +1 -1
- package/dist/mount/public.d.ts.map +1 -1
- package/dist/runtime/crashUI.js +30 -30
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +4 -4
- package/dist/test/apps/bubbling.js +4 -4
- package/dist/test/apps/disabledButton.js +10 -10
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +13 -13
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +15 -15
- package/dist/test/apps/keypress.js +8 -8
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +32 -24
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +2 -2
- package/dist/test/apps/mountPanel.d.ts +19 -3
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +41 -20
- package/dist/test/apps/multiRole.js +3 -3
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +11 -11
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +8 -8
- package/dist/test/internal.d.ts +50 -20
- package/dist/test/internal.d.ts.map +1 -1
- package/dist/test/internal.js +65 -74
- package/dist/test/scene.d.ts +7 -7
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +42 -37
- package/dist/test/story.d.ts.map +1 -1
- package/dist/test/story.js +2 -2
- package/dist/ui/anchor.d.ts +12 -8
- package/dist/ui/anchor.d.ts.map +1 -1
- package/dist/ui/anchor.js +41 -16
- package/dist/ui/animation/index.js +24 -24
- package/dist/ui/button/index.d.ts.map +1 -1
- package/dist/ui/button/index.js +6 -6
- package/dist/ui/calendar/index.d.ts.map +1 -1
- package/dist/ui/calendar/index.js +101 -99
- package/dist/ui/checkbox/index.d.ts.map +1 -1
- package/dist/ui/checkbox/index.js +15 -15
- package/dist/ui/combobox/multi.d.ts +1 -7
- package/dist/ui/combobox/multi.d.ts.map +1 -1
- package/dist/ui/combobox/shared.d.ts +14 -5
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +137 -125
- package/dist/ui/combobox/single.d.ts +1 -7
- package/dist/ui/combobox/single.d.ts.map +1 -1
- package/dist/ui/datePicker/index.js +4 -4
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +27 -27
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +24 -22
- package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
- package/dist/ui/dragAndDrop/index.js +15 -15
- package/dist/ui/fieldset/index.js +6 -6
- package/dist/ui/fileDrop/index.d.ts +2 -2
- package/dist/ui/fileDrop/index.d.ts.map +1 -1
- package/dist/ui/fileDrop/index.js +16 -16
- package/dist/ui/input/index.d.ts.map +1 -1
- package/dist/ui/input/index.js +15 -13
- package/dist/ui/listbox/multi.d.ts +1 -7
- package/dist/ui/listbox/multi.d.ts.map +1 -1
- package/dist/ui/listbox/shared.d.ts +12 -3
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +91 -89
- package/dist/ui/listbox/single.d.ts +1 -7
- package/dist/ui/listbox/single.d.ts.map +1 -1
- package/dist/ui/menu/index.d.ts +12 -3
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +75 -77
- package/dist/ui/popover/index.d.ts +13 -3
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +62 -53
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +20 -20
- package/dist/ui/select/index.d.ts.map +1 -1
- package/dist/ui/select/index.js +13 -11
- package/dist/ui/slider/index.d.ts.map +1 -1
- package/dist/ui/slider/index.js +26 -26
- package/dist/ui/switch/index.d.ts.map +1 -1
- package/dist/ui/switch/index.js +14 -14
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +40 -36
- package/dist/ui/textarea/index.d.ts.map +1 -1
- package/dist/ui/textarea/index.js +15 -13
- package/dist/ui/toast/index.d.ts.map +1 -1
- package/dist/ui/toast/index.js +27 -27
- package/dist/ui/tooltip/index.d.ts +11 -2
- package/dist/ui/tooltip/index.d.ts.map +1 -1
- package/dist/ui/tooltip/index.js +33 -33
- package/dist/ui/virtualList/index.d.ts.map +1 -1
- package/dist/ui/virtualList/index.js +18 -15
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ import { html, } from '../../html/index.js';
|
|
|
6
6
|
import { m } from '../../message/index.js';
|
|
7
7
|
import * as Mount from '../../mount/index.js';
|
|
8
8
|
import { makeConstrainedEvo } from '../../struct/index.js';
|
|
9
|
-
import { anchorSetup, portalToBody } from '../anchor.js';
|
|
9
|
+
import { AnchorConfig, anchorSetup, portalToBody } from '../anchor.js';
|
|
10
10
|
// NOTE: Animation imports are split across schema + update to avoid a circular
|
|
11
11
|
// dependency: animation → html → runtime → devtools → combobox → animation.
|
|
12
12
|
// The barrel (../animation) imports from html, which starts the cycle.
|
|
@@ -330,21 +330,31 @@ export const makeUpdate = (handlers) => {
|
|
|
330
330
|
/** The anchor-positioning Mount this Combobox renders when an anchor is
|
|
331
331
|
* configured. Exposed so Scene tests can call
|
|
332
332
|
* `Scene.Mount.resolve(AnchorCombobox, CompletedAnchorCombobox())`. */
|
|
333
|
-
export const AnchorCombobox = Mount.define('AnchorCombobox', CompletedAnchorCombobox)
|
|
333
|
+
export const AnchorCombobox = Mount.define('AnchorCombobox', { buttonId: S.String, anchor: AnchorConfig }, CompletedAnchorCombobox)(({ buttonId, anchor }) => (element) => Effect.sync(() => {
|
|
334
|
+
const preventBlur = (event) => {
|
|
335
|
+
event.preventDefault();
|
|
336
|
+
};
|
|
337
|
+
element.addEventListener('pointerdown', preventBlur, { capture: true });
|
|
338
|
+
const teardownAnchor = anchorSetup({
|
|
339
|
+
buttonId,
|
|
340
|
+
anchor,
|
|
341
|
+
interceptTab: false,
|
|
342
|
+
})(element);
|
|
343
|
+
return {
|
|
344
|
+
message: CompletedAnchorCombobox(),
|
|
345
|
+
cleanup: () => {
|
|
346
|
+
element.removeEventListener('pointerdown', preventBlur, {
|
|
347
|
+
capture: true,
|
|
348
|
+
});
|
|
349
|
+
teardownAnchor();
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
}));
|
|
334
353
|
/** The Mount this Combobox renders to install a `pointerdown`-cancelling
|
|
335
354
|
* capture listener that prevents blur on item presses. Exposed so Scene
|
|
336
355
|
* tests can call
|
|
337
356
|
* `Scene.Mount.resolve(AttachComboboxPreventBlur, CompletedAttachComboboxPreventBlur())`. */
|
|
338
|
-
export const AttachComboboxPreventBlur = Mount.define('AttachComboboxPreventBlur', CompletedAttachComboboxPreventBlur)
|
|
339
|
-
/** The Mount this Combobox renders to install the input's select-on-focus
|
|
340
|
-
* behavior. Exposed so Scene tests can call
|
|
341
|
-
* `Scene.Mount.resolve(AttachComboboxSelectOnFocus, CompletedAttachComboboxSelectOnFocus())`. */
|
|
342
|
-
export const AttachComboboxSelectOnFocus = Mount.define('AttachComboboxSelectOnFocus', CompletedAttachComboboxSelectOnFocus);
|
|
343
|
-
/** The backdrop-portaling Mount this Combobox renders. Exposed so Scene tests can
|
|
344
|
-
* call `Scene.Mount.resolve(PortalComboboxBackdrop, CompletedPortalComboboxBackdrop())` to
|
|
345
|
-
* acknowledge the mount produced by the rendered backdrop. */
|
|
346
|
-
export const PortalComboboxBackdrop = Mount.define('PortalComboboxBackdrop', CompletedPortalComboboxBackdrop);
|
|
347
|
-
const attachComboboxPreventBlur = AttachComboboxPreventBlur((element) => Effect.sync(() => {
|
|
357
|
+
export const AttachComboboxPreventBlur = Mount.define('AttachComboboxPreventBlur', CompletedAttachComboboxPreventBlur)((element) => Effect.sync(() => {
|
|
348
358
|
const handler = (event) => {
|
|
349
359
|
event.preventDefault();
|
|
350
360
|
};
|
|
@@ -356,7 +366,10 @@ const attachComboboxPreventBlur = AttachComboboxPreventBlur((element) => Effect.
|
|
|
356
366
|
}),
|
|
357
367
|
};
|
|
358
368
|
}));
|
|
359
|
-
|
|
369
|
+
/** The Mount this Combobox renders to install the input's select-on-focus
|
|
370
|
+
* behavior. Exposed so Scene tests can call
|
|
371
|
+
* `Scene.Mount.resolve(AttachComboboxSelectOnFocus, CompletedAttachComboboxSelectOnFocus())`. */
|
|
372
|
+
export const AttachComboboxSelectOnFocus = Mount.define('AttachComboboxSelectOnFocus', CompletedAttachComboboxSelectOnFocus)((element) => Effect.sync(() => {
|
|
360
373
|
const handler = () => {
|
|
361
374
|
if (element instanceof HTMLInputElement) {
|
|
362
375
|
element.select();
|
|
@@ -368,13 +381,16 @@ const attachComboboxSelectOnFocus = AttachComboboxSelectOnFocus((element) => Eff
|
|
|
368
381
|
cleanup: () => element.removeEventListener('focus', handler),
|
|
369
382
|
};
|
|
370
383
|
}));
|
|
371
|
-
|
|
384
|
+
/** The backdrop-portaling Mount this Combobox renders. Exposed so Scene tests can
|
|
385
|
+
* call `Scene.Mount.resolve(PortalComboboxBackdrop, CompletedPortalComboboxBackdrop())` to
|
|
386
|
+
* acknowledge the mount produced by the rendered backdrop. */
|
|
387
|
+
export const PortalComboboxBackdrop = Mount.define('PortalComboboxBackdrop', CompletedPortalComboboxBackdrop)((element) => Effect.sync(() => {
|
|
372
388
|
const cleanup = portalToBody(element);
|
|
373
389
|
return { message: CompletedPortalComboboxBackdrop(), cleanup };
|
|
374
390
|
}));
|
|
375
391
|
/** Creates a combobox view function from variant-specific behavior. Shared rendering logic (input, items, transitions, keyboard navigation) is handled internally; only selection display varies by variant. */
|
|
376
392
|
export const makeView = (behavior) => (config) => {
|
|
377
|
-
const
|
|
393
|
+
const h = html();
|
|
378
394
|
const { model: { id, isOpen, immediate, animation: { transitionState }, maybeActiveItemIndex, }, toParentMessage, onSelectedItem, items, itemToConfig, itemToValue, itemToDisplayText, isItemDisabled, inputClassName, inputAttributes = [], inputPlaceholder, inputWrapperClassName, inputWrapperAttributes = [], itemsClassName, itemsAttributes = [], itemsScrollClassName, itemsScrollAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], buttonContent, buttonClassName, buttonAttributes = [], formName, isDisabled, isInvalid, openOnFocus, itemGroupKey, groupToHeading, groupClassName, groupAttributes = [], separatorClassName, separatorAttributes = [], anchor, } = config;
|
|
379
395
|
const dispatchSelectedItem = (item, index) => onSelectedItem
|
|
380
396
|
? onSelectedItem(itemToValue(item, index))
|
|
@@ -385,19 +401,19 @@ export const makeView = (behavior) => (config) => {
|
|
|
385
401
|
const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
|
|
386
402
|
const isVisible = isOpen || isLeaving;
|
|
387
403
|
const animationAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
|
|
388
|
-
DataAttribute('closed', ''),
|
|
389
|
-
DataAttribute('enter', ''),
|
|
390
|
-
DataAttribute('transition', ''),
|
|
404
|
+
h.DataAttribute('closed', ''),
|
|
405
|
+
h.DataAttribute('enter', ''),
|
|
406
|
+
h.DataAttribute('transition', ''),
|
|
391
407
|
]), M.when('EnterAnimating', () => [
|
|
392
|
-
DataAttribute('enter', ''),
|
|
393
|
-
DataAttribute('transition', ''),
|
|
408
|
+
h.DataAttribute('enter', ''),
|
|
409
|
+
h.DataAttribute('transition', ''),
|
|
394
410
|
]), M.when('LeaveStart', () => [
|
|
395
|
-
DataAttribute('leave', ''),
|
|
396
|
-
DataAttribute('transition', ''),
|
|
411
|
+
h.DataAttribute('leave', ''),
|
|
412
|
+
h.DataAttribute('transition', ''),
|
|
397
413
|
]), M.when('LeaveAnimating', () => [
|
|
398
|
-
DataAttribute('closed', ''),
|
|
399
|
-
DataAttribute('leave', ''),
|
|
400
|
-
DataAttribute('transition', ''),
|
|
414
|
+
h.DataAttribute('closed', ''),
|
|
415
|
+
h.DataAttribute('leave', ''),
|
|
416
|
+
h.DataAttribute('transition', ''),
|
|
401
417
|
]), M.orElse(() => []));
|
|
402
418
|
const isDisabledAtIndex = (index) => Predicate.isNotUndefined(isItemDisabled) &&
|
|
403
419
|
pipe(items, Array.get(index), Option.exists(item => isItemDisabled(item, index)));
|
|
@@ -458,77 +474,63 @@ export const makeView = (behavior) => (config) => {
|
|
|
458
474
|
}), M.orElse(() => Option.none()));
|
|
459
475
|
const maybeActiveDescendant = Option.match(maybeActiveItemIndex, {
|
|
460
476
|
onNone: () => [],
|
|
461
|
-
onSome: index => [AriaActiveDescendant(itemId(id, index))],
|
|
477
|
+
onSome: index => [h.AriaActiveDescendant(itemId(id, index))],
|
|
462
478
|
});
|
|
463
479
|
const resolvedInputAttributes = [
|
|
464
|
-
Id(`${id}-input`),
|
|
465
|
-
Role('combobox'),
|
|
466
|
-
AriaExpanded(isVisible),
|
|
467
|
-
AriaControls(`${id}-items`),
|
|
468
|
-
Attribute('aria-autocomplete', 'list'),
|
|
469
|
-
Attribute('aria-haspopup', 'listbox'),
|
|
470
|
-
Autocomplete('off'),
|
|
471
|
-
Value(config.model.inputValue),
|
|
480
|
+
h.Id(`${id}-input`),
|
|
481
|
+
h.Role('combobox'),
|
|
482
|
+
h.AriaExpanded(isVisible),
|
|
483
|
+
h.AriaControls(`${id}-items`),
|
|
484
|
+
h.Attribute('aria-autocomplete', 'list'),
|
|
485
|
+
h.Attribute('aria-haspopup', 'listbox'),
|
|
486
|
+
h.Autocomplete('off'),
|
|
487
|
+
h.Value(config.model.inputValue),
|
|
472
488
|
...maybeActiveDescendant,
|
|
473
|
-
...(inputPlaceholder ? [Placeholder(inputPlaceholder)] : []),
|
|
489
|
+
...(inputPlaceholder ? [h.Placeholder(inputPlaceholder)] : []),
|
|
474
490
|
...(isDisabled
|
|
475
|
-
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
491
|
+
? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
|
|
476
492
|
: [
|
|
477
|
-
OnInput(value => toParentMessage(UpdatedInputValue({ value }))),
|
|
478
|
-
OnKeyDownPreventDefault(handleInputKeyDown),
|
|
479
|
-
OnBlur(toParentMessage(BlurredInput())),
|
|
493
|
+
h.OnInput(value => toParentMessage(UpdatedInputValue({ value }))),
|
|
494
|
+
h.OnKeyDownPreventDefault(handleInputKeyDown),
|
|
495
|
+
h.OnBlur(toParentMessage(BlurredInput())),
|
|
480
496
|
...(openOnFocus
|
|
481
497
|
? [
|
|
482
|
-
OnFocus(toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }))),
|
|
498
|
+
h.OnFocus(toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }))),
|
|
483
499
|
]
|
|
484
500
|
: []),
|
|
485
501
|
]),
|
|
486
|
-
...(isInvalid
|
|
487
|
-
|
|
502
|
+
...(isInvalid
|
|
503
|
+
? [h.AriaInvalid(true), h.DataAttribute('invalid', '')]
|
|
504
|
+
: []),
|
|
505
|
+
...(isVisible ? [h.DataAttribute('open', '')] : []),
|
|
488
506
|
...(config.model.selectInputOnFocus
|
|
489
507
|
? [
|
|
490
|
-
OnMount(Mount.mapMessage(
|
|
508
|
+
h.OnMount(Mount.mapMessage(AttachComboboxSelectOnFocus(), toParentMessage)),
|
|
491
509
|
]
|
|
492
510
|
: []),
|
|
493
|
-
...(inputClassName ? [Class(inputClassName)] : []),
|
|
511
|
+
...(inputClassName ? [h.Class(inputClassName)] : []),
|
|
494
512
|
...inputAttributes,
|
|
495
513
|
];
|
|
496
514
|
const anchorAttributes = anchor
|
|
497
515
|
? [
|
|
498
|
-
Style({ position: 'absolute', margin: '0', visibility: 'hidden' }),
|
|
499
|
-
OnMount(Mount.mapMessage(AnchorCombobox(
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
items.addEventListener('pointerdown', preventBlur, {
|
|
504
|
-
capture: true,
|
|
505
|
-
});
|
|
506
|
-
const teardownAnchor = anchorSetup({
|
|
507
|
-
buttonId: `${id}-input-wrapper`,
|
|
508
|
-
anchor,
|
|
509
|
-
interceptTab: false,
|
|
510
|
-
})(items);
|
|
511
|
-
return {
|
|
512
|
-
message: CompletedAnchorCombobox(),
|
|
513
|
-
cleanup: () => {
|
|
514
|
-
items.removeEventListener('pointerdown', preventBlur, {
|
|
515
|
-
capture: true,
|
|
516
|
-
});
|
|
517
|
-
teardownAnchor();
|
|
518
|
-
},
|
|
519
|
-
};
|
|
520
|
-
})), toParentMessage)),
|
|
516
|
+
h.Style({ position: 'absolute', margin: '0', visibility: 'hidden' }),
|
|
517
|
+
h.OnMount(Mount.mapMessage(AnchorCombobox({
|
|
518
|
+
buttonId: `${id}-input-wrapper`,
|
|
519
|
+
anchor,
|
|
520
|
+
}), toParentMessage)),
|
|
521
521
|
]
|
|
522
|
-
: [
|
|
522
|
+
: [
|
|
523
|
+
h.OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
|
|
524
|
+
];
|
|
523
525
|
const itemsContainerAttributes = [
|
|
524
|
-
Id(`${id}-items`),
|
|
525
|
-
Role('listbox'),
|
|
526
|
-
...(behavior.ariaMultiSelectable ? [AriaMultiSelectable(true)] : []),
|
|
527
|
-
AriaLabelledBy(`${id}-input`),
|
|
528
|
-
Tabindex(-1),
|
|
526
|
+
h.Id(`${id}-items`),
|
|
527
|
+
h.Role('listbox'),
|
|
528
|
+
...(behavior.ariaMultiSelectable ? [h.AriaMultiSelectable(true)] : []),
|
|
529
|
+
h.AriaLabelledBy(`${id}-input`),
|
|
530
|
+
h.Tabindex(-1),
|
|
529
531
|
...anchorAttributes,
|
|
530
532
|
...animationAttributes,
|
|
531
|
-
...(itemsClassName ? [Class(itemsClassName)] : []),
|
|
533
|
+
...(itemsClassName ? [h.Class(itemsClassName)] : []),
|
|
532
534
|
...itemsAttributes,
|
|
533
535
|
];
|
|
534
536
|
const comboboxItems = Array.map(items, (item, index) => {
|
|
@@ -541,27 +543,27 @@ export const makeView = (behavior) => (config) => {
|
|
|
541
543
|
isSelected: isSelectedItem,
|
|
542
544
|
});
|
|
543
545
|
const isInteractive = !isDisabledItem && !isLeaving;
|
|
544
|
-
return keyed('div')(itemId(id, index), [
|
|
545
|
-
Id(itemId(id, index)),
|
|
546
|
-
Role('option'),
|
|
547
|
-
AriaSelected(isSelectedItem),
|
|
548
|
-
...(isActiveItem ? [DataAttribute('active', '')] : []),
|
|
549
|
-
...(isSelectedItem ? [DataAttribute('selected', '')] : []),
|
|
546
|
+
return h.keyed('div')(itemId(id, index), [
|
|
547
|
+
h.Id(itemId(id, index)),
|
|
548
|
+
h.Role('option'),
|
|
549
|
+
h.AriaSelected(isSelectedItem),
|
|
550
|
+
...(isActiveItem ? [h.DataAttribute('active', '')] : []),
|
|
551
|
+
...(isSelectedItem ? [h.DataAttribute('selected', '')] : []),
|
|
550
552
|
...(isDisabledItem
|
|
551
|
-
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
553
|
+
? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
|
|
552
554
|
: []),
|
|
553
555
|
...(isInteractive
|
|
554
556
|
? [
|
|
555
|
-
OnClick(dispatchSelectedItem(item, index)),
|
|
557
|
+
h.OnClick(dispatchSelectedItem(item, index)),
|
|
556
558
|
...(isActiveItem
|
|
557
559
|
? []
|
|
558
560
|
: [
|
|
559
|
-
OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
|
|
561
|
+
h.OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
|
|
560
562
|
]),
|
|
561
|
-
OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
|
|
563
|
+
h.OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
|
|
562
564
|
]
|
|
563
565
|
: []),
|
|
564
|
-
...(itemConfig.className ? [Class(itemConfig.className)] : []),
|
|
566
|
+
...(itemConfig.className ? [h.Class(itemConfig.className)] : []),
|
|
565
567
|
], [itemConfig.content]);
|
|
566
568
|
});
|
|
567
569
|
const renderGroupedItems = () => {
|
|
@@ -578,27 +580,31 @@ export const makeView = (behavior) => (config) => {
|
|
|
578
580
|
const headingElement = Option.match(maybeHeading, {
|
|
579
581
|
onNone: () => [],
|
|
580
582
|
onSome: heading => [
|
|
581
|
-
keyed('div')(headingId, [
|
|
582
|
-
Id(headingId),
|
|
583
|
-
Role('presentation'),
|
|
584
|
-
...(heading.className ? [Class(heading.className)] : []),
|
|
583
|
+
h.keyed('div')(headingId, [
|
|
584
|
+
h.Id(headingId),
|
|
585
|
+
h.Role('presentation'),
|
|
586
|
+
...(heading.className ? [h.Class(heading.className)] : []),
|
|
585
587
|
], [heading.content]),
|
|
586
588
|
],
|
|
587
589
|
});
|
|
588
590
|
const groupContent = [...headingElement, ...segment.items];
|
|
589
|
-
const groupElement = keyed('div')(`${id}-group-${segment.key}`, [
|
|
590
|
-
Role('group'),
|
|
591
|
-
...(Option.isSome(maybeHeading)
|
|
592
|
-
|
|
591
|
+
const groupElement = h.keyed('div')(`${id}-group-${segment.key}`, [
|
|
592
|
+
h.Role('group'),
|
|
593
|
+
...(Option.isSome(maybeHeading)
|
|
594
|
+
? [h.AriaLabelledBy(headingId)]
|
|
595
|
+
: []),
|
|
596
|
+
...(groupClassName ? [h.Class(groupClassName)] : []),
|
|
593
597
|
...groupAttributes,
|
|
594
598
|
], groupContent);
|
|
595
599
|
const separator = segmentIndex > 0 &&
|
|
596
600
|
(separatorClassName ||
|
|
597
601
|
Array.isReadonlyArrayNonEmpty(separatorAttributes))
|
|
598
602
|
? [
|
|
599
|
-
keyed('div')(`${id}-separator-${segmentIndex}`, [
|
|
600
|
-
Role('separator'),
|
|
601
|
-
...(separatorClassName
|
|
603
|
+
h.keyed('div')(`${id}-separator-${segmentIndex}`, [
|
|
604
|
+
h.Role('separator'),
|
|
605
|
+
...(separatorClassName
|
|
606
|
+
? [h.Class(separatorClassName)]
|
|
607
|
+
: []),
|
|
602
608
|
...separatorAttributes,
|
|
603
609
|
], []),
|
|
604
610
|
]
|
|
@@ -606,45 +612,47 @@ export const makeView = (behavior) => (config) => {
|
|
|
606
612
|
return [...separator, groupElement];
|
|
607
613
|
});
|
|
608
614
|
};
|
|
609
|
-
const backdrop = keyed('div')(`${id}-backdrop`, [
|
|
610
|
-
OnMount(Mount.mapMessage(
|
|
611
|
-
...(isLeaving ? [] : [OnClick(toParentMessage(Closed()))]),
|
|
612
|
-
...(backdropClassName ? [Class(backdropClassName)] : []),
|
|
615
|
+
const backdrop = h.keyed('div')(`${id}-backdrop`, [
|
|
616
|
+
h.OnMount(Mount.mapMessage(PortalComboboxBackdrop(), toParentMessage)),
|
|
617
|
+
...(isLeaving ? [] : [h.OnClick(toParentMessage(Closed()))]),
|
|
618
|
+
...(backdropClassName ? [h.Class(backdropClassName)] : []),
|
|
613
619
|
...backdropAttributes,
|
|
614
620
|
], []);
|
|
615
621
|
const renderedItems = renderGroupedItems();
|
|
616
622
|
const scrollableItems = itemsScrollClassName ||
|
|
617
623
|
Array.isReadonlyArrayNonEmpty(itemsScrollAttributes)
|
|
618
624
|
? [
|
|
619
|
-
div([
|
|
620
|
-
...(itemsScrollClassName
|
|
625
|
+
h.div([
|
|
626
|
+
...(itemsScrollClassName
|
|
627
|
+
? [h.Class(itemsScrollClassName)]
|
|
628
|
+
: []),
|
|
621
629
|
...itemsScrollAttributes,
|
|
622
630
|
], renderedItems),
|
|
623
631
|
]
|
|
624
632
|
: renderedItems;
|
|
625
633
|
const visibleContent = [
|
|
626
634
|
backdrop,
|
|
627
|
-
keyed('div')(`${id}-items-container`, itemsContainerAttributes, scrollableItems),
|
|
635
|
+
h.keyed('div')(`${id}-items-container`, itemsContainerAttributes, scrollableItems),
|
|
628
636
|
];
|
|
629
637
|
const resolvedInputWrapperAttributes = [
|
|
630
|
-
Id(`${id}-input-wrapper`),
|
|
631
|
-
...(inputWrapperClassName ? [Class(inputWrapperClassName)] : []),
|
|
638
|
+
h.Id(`${id}-input-wrapper`),
|
|
639
|
+
...(inputWrapperClassName ? [h.Class(inputWrapperClassName)] : []),
|
|
632
640
|
...inputWrapperAttributes,
|
|
633
641
|
];
|
|
634
642
|
const toggleButton = buttonContent
|
|
635
643
|
? [
|
|
636
|
-
keyed('button')(`${id}-button`, [
|
|
637
|
-
Id(`${id}-button`),
|
|
638
|
-
Type('button'),
|
|
639
|
-
Tabindex(-1),
|
|
640
|
-
AriaControls(`${id}-items`),
|
|
641
|
-
AriaExpanded(isVisible),
|
|
642
|
-
Attribute('aria-haspopup', 'listbox'),
|
|
644
|
+
h.keyed('button')(`${id}-button`, [
|
|
645
|
+
h.Id(`${id}-button`),
|
|
646
|
+
h.Type('button'),
|
|
647
|
+
h.Tabindex(-1),
|
|
648
|
+
h.AriaControls(`${id}-items`),
|
|
649
|
+
h.AriaExpanded(isVisible),
|
|
650
|
+
h.Attribute('aria-haspopup', 'listbox'),
|
|
643
651
|
...(isDisabled
|
|
644
|
-
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
645
|
-
: [OnClick(toParentMessage(PressedToggleButton()))]),
|
|
646
|
-
OnMount(Mount.mapMessage(
|
|
647
|
-
...(buttonClassName ? [Class(buttonClassName)] : []),
|
|
652
|
+
? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
|
|
653
|
+
: [h.OnClick(toParentMessage(PressedToggleButton()))]),
|
|
654
|
+
h.OnMount(Mount.mapMessage(AttachComboboxPreventBlur(), toParentMessage)),
|
|
655
|
+
...(buttonClassName ? [h.Class(buttonClassName)] : []),
|
|
648
656
|
...buttonAttributes,
|
|
649
657
|
], [buttonContent]),
|
|
650
658
|
]
|
|
@@ -655,20 +663,24 @@ export const makeView = (behavior) => (config) => {
|
|
|
655
663
|
}));
|
|
656
664
|
const hiddenInputs = formName
|
|
657
665
|
? Array.match(selectedValues, {
|
|
658
|
-
onEmpty: () => [input([Type('hidden'), Name(formName)])],
|
|
659
|
-
onNonEmpty: Array.map(selectedValue => input([
|
|
666
|
+
onEmpty: () => [h.input([h.Type('hidden'), h.Name(formName)])],
|
|
667
|
+
onNonEmpty: Array.map(selectedValue => h.input([
|
|
668
|
+
h.Type('hidden'),
|
|
669
|
+
h.Name(formName),
|
|
670
|
+
h.Value(selectedValue),
|
|
671
|
+
])),
|
|
660
672
|
})
|
|
661
673
|
: [];
|
|
662
674
|
const wrapperAttributes = [
|
|
663
|
-
...(className ? [Class(className)] : []),
|
|
675
|
+
...(className ? [h.Class(className)] : []),
|
|
664
676
|
...attributes,
|
|
665
|
-
...(isVisible ? [DataAttribute('open', '')] : []),
|
|
666
|
-
...(isDisabled ? [DataAttribute('disabled', '')] : []),
|
|
667
|
-
...(isInvalid ? [DataAttribute('invalid', '')] : []),
|
|
677
|
+
...(isVisible ? [h.DataAttribute('open', '')] : []),
|
|
678
|
+
...(isDisabled ? [h.DataAttribute('disabled', '')] : []),
|
|
679
|
+
...(isInvalid ? [h.DataAttribute('invalid', '')] : []),
|
|
668
680
|
];
|
|
669
|
-
return div(wrapperAttributes, [
|
|
670
|
-
div(resolvedInputWrapperAttributes, [
|
|
671
|
-
input(resolvedInputAttributes),
|
|
681
|
+
return h.div(wrapperAttributes, [
|
|
682
|
+
h.div(resolvedInputWrapperAttributes, [
|
|
683
|
+
h.input(resolvedInputAttributes),
|
|
672
684
|
...toggleButton,
|
|
673
685
|
]),
|
|
674
686
|
...(isVisible && Array.isReadonlyArrayNonEmpty(items)
|
|
@@ -238,13 +238,7 @@ export declare const view: <ParentMessage, Item extends string>(config: Readonly
|
|
|
238
238
|
groupAttributes?: readonly import("../../html/index.js").Attribute<ParentMessage>[];
|
|
239
239
|
separatorClassName?: string;
|
|
240
240
|
separatorAttributes?: readonly import("../../html/index.js").Attribute<ParentMessage>[];
|
|
241
|
-
anchor?:
|
|
242
|
-
placement?: import("@floating-ui/dom").Placement;
|
|
243
|
-
gap?: number;
|
|
244
|
-
offset?: number;
|
|
245
|
-
padding?: number;
|
|
246
|
-
portal?: boolean;
|
|
247
|
-
}>;
|
|
241
|
+
anchor?: import("./public.js").AnchorConfig;
|
|
248
242
|
}>) => Html;
|
|
249
243
|
/** Creates a memoized single-select combobox view. Static config is captured in a closure;
|
|
250
244
|
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/single.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,IAAI,CAAC,EAAQ,MAAM,QAAQ,CAAA;AAEzD,OAAO,KAAK,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,MAAM,EACN,KAAK,OAAO,EACZ,MAAM,EACN,YAAY,EAKb,MAAM,aAAa,CAAA;AAIpB,uJAAuJ;AACvJ,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,8RAA8R;AAC9R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAC,CAAA;AAEJ,4IAA4I;AAC5I,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAMxC,CAAA;AAIF,uIAAuI;AACvI,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiDjB,CAAA;AAEF;wFACwF;AACxF,eAAO,MAAM,IAAI,GACf,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACK,CAAA;AAEhE;yFACyF;AACzF,eAAO,MAAM,KAAK,GAChB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB;iGACiG;AACjG,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,MAAM,MAAM,EACZ,aAAa,MAAM,KAClB,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACP,CAAA;AAIpD,wEAAwE;AACxE,MAAM,MAAM,UAAU,CAAC,aAAa,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACzE,aAAa,EACb,IAAI,EACJ,KAAK,CACN,CAAA;AAED,0IAA0I;AAC1I,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/single.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,IAAI,CAAC,EAAQ,MAAM,QAAQ,CAAA;AAEzD,OAAO,KAAK,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,MAAM,EACN,KAAK,OAAO,EACZ,MAAM,EACN,YAAY,EAKb,MAAM,aAAa,CAAA;AAIpB,uJAAuJ;AACvJ,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,8RAA8R;AAC9R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAC,CAAA;AAEJ,4IAA4I;AAC5I,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAMxC,CAAA;AAIF,uIAAuI;AACvI,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiDjB,CAAA;AAEF;wFACwF;AACxF,eAAO,MAAM,IAAI,GACf,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACK,CAAA;AAEhE;yFACyF;AACzF,eAAO,MAAM,KAAK,GAChB,OAAO,KAAK,KACX,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClC,CAAA;AAEzB;iGACiG;AACjG,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,MAAM,MAAM,EACZ,aAAa,MAAM,KAClB,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACP,CAAA;AAIpD,wEAAwE;AACxE,MAAM,MAAM,UAAU,CAAC,aAAa,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACzE,aAAa,EACb,IAAI,EACJ,KAAK,CACN,CAAA;AAED,0IAA0I;AAC1I,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOf,CAAA;AAEF;mFACmF;AACnF,eAAO,MAAM,IAAI,GAAI,aAAa,EAAE,IAAI,SAAS,MAAM,EACrD,cAAc,IAAI,CAChB,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,EAC/B,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAC/C,KACA,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,cAAc,CAC7B,aAAa,EACb,IAAI,EACJ,KAAK,CACN,CAAC,iBAAiB,CAAC,KACjB,IAAI,CAoBR,CAAA"}
|
|
@@ -217,7 +217,7 @@ const encodeIsoDate = S.encodeSync(Calendar.CalendarDateFromIsoString);
|
|
|
217
217
|
* provide the trigger face and the calendar grid layout, DatePicker handles
|
|
218
218
|
* focus choreography, open/close state, and form submission. */
|
|
219
219
|
export const view = (config) => {
|
|
220
|
-
const
|
|
220
|
+
const h = html();
|
|
221
221
|
const { model, toParentMessage, onSelectedDate, anchor, triggerContent, toCalendarView, isDisabled, name, className, attributes = [], triggerClassName, triggerAttributes = [], panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], } = config;
|
|
222
222
|
const dispatchSelectedDate = (date) => onSelectedDate !== undefined
|
|
223
223
|
? onSelectedDate(date)
|
|
@@ -252,13 +252,13 @@ export const view = (config) => {
|
|
|
252
252
|
onSome: encodeIsoDate,
|
|
253
253
|
});
|
|
254
254
|
const maybeHiddenInput = name !== undefined
|
|
255
|
-
? [input([Type('hidden'), Name(name), Value(hiddenInputValue)])]
|
|
255
|
+
? [h.input([h.Type('hidden'), h.Name(name), h.Value(hiddenInputValue)])]
|
|
256
256
|
: [];
|
|
257
257
|
const wrapperAttributes = [
|
|
258
|
-
...(className !== undefined ? [Class(className)] : []),
|
|
258
|
+
...(className !== undefined ? [h.Class(className)] : []),
|
|
259
259
|
...attributes,
|
|
260
260
|
];
|
|
261
|
-
return div(wrapperAttributes, [popoverVNode, ...maybeHiddenInput]);
|
|
261
|
+
return h.div(wrapperAttributes, [popoverVNode, ...maybeHiddenInput]);
|
|
262
262
|
};
|
|
263
263
|
/** Creates a memoized date picker view. Static config is captured in a closure;
|
|
264
264
|
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/dialog/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/dialog/index.js
CHANGED
|
@@ -125,33 +125,33 @@ export const open = (model) => update(model, Opened());
|
|
|
125
125
|
export const close = (model) => update(model, Closed());
|
|
126
126
|
/** Renders a headless dialog component backed by the native `<dialog>` element with `showModal()`. */
|
|
127
127
|
export const view = (config) => {
|
|
128
|
-
const
|
|
128
|
+
const h = html();
|
|
129
129
|
const { model: { id, isOpen, animation: { transitionState }, }, toParentMessage, onClosed, panelContent, panelClassName, panelAttributes = [], backdropClassName, backdropAttributes = [], className, attributes = [], } = config;
|
|
130
130
|
const dispatchClosed = () => onClosed ? onClosed() : toParentMessage(Closed());
|
|
131
131
|
const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
|
|
132
132
|
const isVisible = isOpen || isLeaving;
|
|
133
133
|
const animationAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
|
|
134
|
-
DataAttribute('closed', ''),
|
|
135
|
-
DataAttribute('enter', ''),
|
|
136
|
-
DataAttribute('transition', ''),
|
|
134
|
+
h.DataAttribute('closed', ''),
|
|
135
|
+
h.DataAttribute('enter', ''),
|
|
136
|
+
h.DataAttribute('transition', ''),
|
|
137
137
|
]), M.when('EnterAnimating', () => [
|
|
138
|
-
DataAttribute('enter', ''),
|
|
139
|
-
DataAttribute('transition', ''),
|
|
138
|
+
h.DataAttribute('enter', ''),
|
|
139
|
+
h.DataAttribute('transition', ''),
|
|
140
140
|
]), M.when('LeaveStart', () => [
|
|
141
|
-
DataAttribute('leave', ''),
|
|
142
|
-
DataAttribute('transition', ''),
|
|
141
|
+
h.DataAttribute('leave', ''),
|
|
142
|
+
h.DataAttribute('transition', ''),
|
|
143
143
|
]), M.when('LeaveAnimating', () => [
|
|
144
|
-
DataAttribute('closed', ''),
|
|
145
|
-
DataAttribute('leave', ''),
|
|
146
|
-
DataAttribute('transition', ''),
|
|
144
|
+
h.DataAttribute('closed', ''),
|
|
145
|
+
h.DataAttribute('leave', ''),
|
|
146
|
+
h.DataAttribute('transition', ''),
|
|
147
147
|
]), M.orElse(() => []));
|
|
148
148
|
const dialogAttributes = [
|
|
149
|
-
Id(id),
|
|
150
|
-
AriaLabelledBy(`${id}-title`),
|
|
151
|
-
AriaDescribedBy(`${id}-description`),
|
|
152
|
-
OnCancel(dispatchClosed()),
|
|
153
|
-
Open(isVisible),
|
|
154
|
-
Style({
|
|
149
|
+
h.Id(id),
|
|
150
|
+
h.AriaLabelledBy(`${id}-title`),
|
|
151
|
+
h.AriaDescribedBy(`${id}-description`),
|
|
152
|
+
h.OnCancel(dispatchClosed()),
|
|
153
|
+
h.Open(isVisible),
|
|
154
|
+
h.Style({
|
|
155
155
|
width: '100%',
|
|
156
156
|
height: '100%',
|
|
157
157
|
maxWidth: '100%',
|
|
@@ -163,25 +163,25 @@ export const view = (config) => {
|
|
|
163
163
|
? { position: 'fixed', inset: '0', zIndex: '2147483600' }
|
|
164
164
|
: {}),
|
|
165
165
|
}),
|
|
166
|
-
...(isVisible ? [DataAttribute('open', '')] : []),
|
|
167
|
-
...(className ? [Class(className)] : []),
|
|
166
|
+
...(isVisible ? [h.DataAttribute('open', '')] : []),
|
|
167
|
+
...(className ? [h.Class(className)] : []),
|
|
168
168
|
...attributes,
|
|
169
169
|
];
|
|
170
|
-
const backdrop = keyed('div')(`${id}-backdrop`, [
|
|
171
|
-
Style({ minHeight: '100vh' }),
|
|
170
|
+
const backdrop = h.keyed('div')(`${id}-backdrop`, [
|
|
171
|
+
h.Style({ minHeight: '100vh' }),
|
|
172
172
|
...animationAttributes,
|
|
173
|
-
...(isLeaving ? [] : [OnClick(dispatchClosed())]),
|
|
174
|
-
...(backdropClassName ? [Class(backdropClassName)] : []),
|
|
173
|
+
...(isLeaving ? [] : [h.OnClick(dispatchClosed())]),
|
|
174
|
+
...(backdropClassName ? [h.Class(backdropClassName)] : []),
|
|
175
175
|
...backdropAttributes,
|
|
176
176
|
], []);
|
|
177
|
-
const panel = keyed('div')(`${id}-panel`, [
|
|
178
|
-
Id(`${id}-panel`),
|
|
177
|
+
const panel = h.keyed('div')(`${id}-panel`, [
|
|
178
|
+
h.Id(`${id}-panel`),
|
|
179
179
|
...animationAttributes,
|
|
180
|
-
...(panelClassName ? [Class(panelClassName)] : []),
|
|
180
|
+
...(panelClassName ? [h.Class(panelClassName)] : []),
|
|
181
181
|
...panelAttributes,
|
|
182
182
|
], [panelContent]);
|
|
183
183
|
const content = isVisible ? [backdrop, panel] : [];
|
|
184
|
-
return keyed('dialog')(id, dialogAttributes, content);
|
|
184
|
+
return h.keyed('dialog')(id, dialogAttributes, content);
|
|
185
185
|
};
|
|
186
186
|
/** Creates a memoized dialog view. Static config (className, panelClassName,
|
|
187
187
|
* etc.) is captured in a closure. Dynamic fields — `model`, `toParentMessage`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/disclosure/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/disclosure/index.ts"],"names":[],"mappings":"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"}
|