foldkit 0.81.0 → 0.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/calendar/calendarDate.d.ts +11 -11
- package/dist/calendar/calendarDate.d.ts.map +1 -1
- package/dist/calendar/calendarDate.js +14 -13
- package/dist/calendar/comparison.d.ts +3 -3
- package/dist/calendar/comparison.d.ts.map +1 -1
- package/dist/calendar/comparison.js +5 -5
- package/dist/calendar/info.d.ts +1 -1
- package/dist/calendar/info.d.ts.map +1 -1
- package/dist/calendar/info.js +9 -1
- package/dist/calendar/locale.d.ts +5 -5
- package/dist/calendar/locale.js +23 -2
- package/dist/command/index.d.ts +2 -2
- package/dist/command/index.d.ts.map +1 -1
- package/dist/devTools/overlay.d.ts.map +1 -1
- package/dist/devTools/overlay.js +49 -27
- package/dist/devTools/protocol.d.ts +192 -192
- package/dist/devTools/protocol.d.ts.map +1 -1
- package/dist/devTools/protocol.js +36 -12
- package/dist/devTools/serialize.d.ts.map +1 -1
- package/dist/devTools/serialize.js +4 -4
- package/dist/devTools/store.d.ts.map +1 -1
- package/dist/devTools/store.js +1 -2
- package/dist/devTools/submodelPath.d.ts +1 -1
- package/dist/devTools/summarize.d.ts +6 -6
- package/dist/devTools/summarize.d.ts.map +1 -1
- package/dist/devTools/summarize.js +6 -6
- package/dist/devTools/webSocketBridge.d.ts +1 -1
- package/dist/devTools/webSocketBridge.d.ts.map +1 -1
- package/dist/devTools/webSocketBridge.js +19 -18
- package/dist/fieldValidation/index.d.ts +11 -11
- package/dist/fieldValidation/index.d.ts.map +1 -1
- package/dist/fieldValidation/index.js +8 -7
- package/dist/file/error.d.ts +1 -1
- package/dist/file/file.d.ts +1 -1
- package/dist/file/file.js +1 -1
- package/dist/file/reader.d.ts +4 -4
- package/dist/file/reader.js +5 -5
- package/dist/file/select.js +1 -1
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +4 -3
- package/dist/html/lazy.d.ts.map +1 -1
- package/dist/html/lazy.js +6 -7
- package/dist/managedResource/index.d.ts +2 -2
- package/dist/managedResource/index.d.ts.map +1 -1
- package/dist/managedResource/index.js +2 -2
- package/dist/mount/index.d.ts +1 -1
- package/dist/mount/index.d.ts.map +1 -1
- package/dist/route/parser.d.ts +2 -2
- package/dist/route/parser.d.ts.map +1 -1
- package/dist/route/parser.js +5 -5
- package/dist/runtime/browserListeners.d.ts.map +1 -1
- package/dist/runtime/browserListeners.js +6 -7
- package/dist/runtime/deepFreeze.d.ts +1 -1
- package/dist/runtime/deepFreeze.js +2 -2
- package/dist/runtime/hmrProtocol.d.ts +22 -0
- package/dist/runtime/hmrProtocol.d.ts.map +1 -0
- package/dist/runtime/hmrProtocol.js +15 -0
- package/dist/runtime/hmrProtocolPublic.d.ts +2 -0
- package/dist/runtime/hmrProtocolPublic.d.ts.map +1 -0
- package/dist/runtime/hmrProtocolPublic.js +1 -0
- package/dist/runtime/runtime.d.ts +10 -7
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +116 -114
- package/dist/runtime/subscription.d.ts +5 -5
- package/dist/runtime/subscription.d.ts.map +1 -1
- package/dist/runtime/urlRequest.d.ts +15 -15
- package/dist/runtime/urlRequest.d.ts.map +1 -1
- package/dist/runtime/urlRequest.js +1 -1
- package/dist/schema/index.d.ts +3 -3
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -4
- package/dist/task/dom.js +1 -1
- package/dist/task/elementMovement.js +1 -1
- package/dist/task/error.d.ts +2 -2
- package/dist/task/inert.d.ts.map +1 -1
- package/dist/task/inert.js +4 -7
- package/dist/task/time.d.ts +1 -1
- package/dist/task/time.js +1 -1
- package/dist/task/timing.d.ts +1 -1
- package/dist/task/timing.d.ts.map +1 -1
- package/dist/task/timing.js +2 -2
- package/dist/test/apps/bubbling.d.ts +3 -3
- package/dist/test/apps/bubbling.d.ts.map +1 -1
- package/dist/test/apps/bubbling.js +1 -1
- package/dist/test/apps/counter.d.ts +6 -6
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +7 -1
- package/dist/test/apps/disabledButton.d.ts +11 -11
- package/dist/test/apps/disabledButton.d.ts.map +1 -1
- package/dist/test/apps/disabledButton.js +1 -1
- package/dist/test/apps/fileUpload.d.ts +4 -4
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +1 -1
- package/dist/test/apps/formChild.d.ts +16 -16
- package/dist/test/apps/formChild.d.ts.map +1 -1
- package/dist/test/apps/formChild.js +9 -4
- package/dist/test/apps/interactions.d.ts +8 -8
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +8 -1
- package/dist/test/apps/keypress.d.ts +7 -7
- package/dist/test/apps/keypress.d.ts.map +1 -1
- package/dist/test/apps/keypress.js +1 -1
- package/dist/test/apps/login.d.ts +14 -14
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +9 -2
- package/dist/test/apps/logoutButton.d.ts +3 -3
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +2 -2
- package/dist/test/apps/multiRole.d.ts +2 -2
- package/dist/test/apps/multiRole.d.ts.map +1 -1
- package/dist/test/apps/multiRole.js +1 -1
- package/dist/test/apps/pointer.d.ts +6 -6
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +1 -1
- package/dist/test/apps/resumeUpload.d.ts +8 -8
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +12 -5
- package/dist/test/internal.js +10 -10
- package/dist/test/matchers.js +1 -1
- package/dist/test/query.d.ts.map +1 -1
- package/dist/test/query.js +13 -13
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +3 -3
- package/dist/test/story.js +1 -1
- package/dist/ui/animation/schema.d.ts +5 -5
- package/dist/ui/animation/schema.d.ts.map +1 -1
- package/dist/ui/animation/schema.js +9 -3
- package/dist/ui/calendar/index.d.ts +77 -77
- package/dist/ui/calendar/index.d.ts.map +1 -1
- package/dist/ui/calendar/index.js +26 -11
- package/dist/ui/checkbox/index.d.ts +2 -2
- package/dist/ui/combobox/multi.d.ts +38 -42
- package/dist/ui/combobox/multi.d.ts.map +1 -1
- package/dist/ui/combobox/multi.js +4 -1
- package/dist/ui/combobox/shared.d.ts +31 -31
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +34 -12
- package/dist/ui/combobox/single.d.ts +39 -43
- package/dist/ui/combobox/single.d.ts.map +1 -1
- package/dist/ui/combobox/single.js +7 -6
- package/dist/ui/datePicker/index.d.ts +86 -86
- package/dist/ui/datePicker/index.d.ts.map +1 -1
- package/dist/ui/datePicker/index.js +10 -3
- package/dist/ui/dialog/index.d.ts +8 -8
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +9 -3
- package/dist/ui/disclosure/index.d.ts +2 -2
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +1 -1
- package/dist/ui/dragAndDrop/index.d.ts +76 -76
- package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
- package/dist/ui/dragAndDrop/index.js +47 -29
- package/dist/ui/fileDrop/index.d.ts +8 -8
- package/dist/ui/fileDrop/index.d.ts.map +1 -1
- package/dist/ui/fileDrop/index.js +7 -2
- package/dist/ui/listbox/multi.d.ts +36 -40
- package/dist/ui/listbox/multi.d.ts.map +1 -1
- package/dist/ui/listbox/multi.js +4 -1
- package/dist/ui/listbox/shared.d.ts +32 -32
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +36 -11
- package/dist/ui/listbox/single.d.ts +36 -40
- package/dist/ui/listbox/single.d.ts.map +1 -1
- package/dist/ui/listbox/single.js +5 -2
- package/dist/ui/menu/index.d.ts +40 -40
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +38 -11
- package/dist/ui/popover/index.d.ts +12 -12
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +17 -2
- package/dist/ui/radioGroup/index.d.ts +6 -6
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +5 -5
- package/dist/ui/slider/index.d.ts +26 -26
- package/dist/ui/slider/index.d.ts.map +1 -1
- package/dist/ui/slider/index.js +30 -16
- package/dist/ui/switch/index.d.ts +2 -2
- package/dist/ui/tabs/index.d.ts +8 -8
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +3 -3
- package/dist/ui/toast/index.d.ts +75 -75
- package/dist/ui/toast/index.d.ts.map +1 -1
- package/dist/ui/toast/index.js +1 -1
- package/dist/ui/toast/schema.d.ts +63 -63
- package/dist/ui/toast/schema.d.ts.map +1 -1
- package/dist/ui/toast/schema.js +19 -4
- package/dist/ui/toast/update.d.ts +67 -67
- package/dist/ui/toast/update.d.ts.map +1 -1
- package/dist/ui/toast/update.js +2 -2
- package/dist/ui/tooltip/index.d.ts +15 -15
- package/dist/ui/tooltip/index.d.ts.map +1 -1
- package/dist/ui/tooltip/index.js +14 -4
- package/dist/ui/virtualList/index.d.ts +16 -16
- package/dist/ui/virtualList/index.d.ts.map +1 -1
- package/dist/ui/virtualList/index.js +46 -42
- package/dist/url/index.d.ts +8 -8
- package/dist/url/index.d.ts.map +1 -1
- package/dist/url/index.js +14 -14
- package/package.json +11 -7
|
@@ -5,28 +5,28 @@ import type { AnchorConfig } from '../anchor.js';
|
|
|
5
5
|
import { groupContiguous } from '../group.js';
|
|
6
6
|
export { groupContiguous };
|
|
7
7
|
/** Schema for the activation trigger — whether the user interacted via mouse or keyboard. */
|
|
8
|
-
export declare const ActivationTrigger: S.
|
|
8
|
+
export declare const ActivationTrigger: S.Literals<readonly ["Pointer", "Keyboard"]>;
|
|
9
9
|
export type ActivationTrigger = typeof ActivationTrigger.Type;
|
|
10
10
|
/** Schema fields shared by all combobox variants (single-select and multi-select). Spread into each variant's `S.Struct` to avoid duplicating field definitions. */
|
|
11
11
|
export declare const BaseModel: S.Struct<{
|
|
12
|
-
id:
|
|
13
|
-
isOpen:
|
|
14
|
-
isAnimated:
|
|
15
|
-
isModal:
|
|
16
|
-
nullable:
|
|
17
|
-
immediate:
|
|
18
|
-
selectInputOnFocus:
|
|
19
|
-
animation: S.Struct<{
|
|
20
|
-
id:
|
|
21
|
-
isShowing:
|
|
22
|
-
transitionState: S.
|
|
12
|
+
readonly id: S.String;
|
|
13
|
+
readonly isOpen: S.Boolean;
|
|
14
|
+
readonly isAnimated: S.Boolean;
|
|
15
|
+
readonly isModal: S.Boolean;
|
|
16
|
+
readonly nullable: S.Boolean;
|
|
17
|
+
readonly immediate: S.Boolean;
|
|
18
|
+
readonly selectInputOnFocus: S.Boolean;
|
|
19
|
+
readonly animation: S.Struct<{
|
|
20
|
+
readonly id: S.String;
|
|
21
|
+
readonly isShowing: S.Boolean;
|
|
22
|
+
readonly transitionState: S.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
23
23
|
}>;
|
|
24
|
-
maybeActiveItemIndex: S.
|
|
25
|
-
activationTrigger: S.
|
|
26
|
-
inputValue:
|
|
27
|
-
maybeLastPointerPosition: S.
|
|
28
|
-
screenX:
|
|
29
|
-
screenY:
|
|
24
|
+
readonly maybeActiveItemIndex: S.Option<S.Number>;
|
|
25
|
+
readonly activationTrigger: S.Literals<readonly ["Pointer", "Keyboard"]>;
|
|
26
|
+
readonly inputValue: S.String;
|
|
27
|
+
readonly maybeLastPointerPosition: S.Option<S.Struct<{
|
|
28
|
+
readonly screenX: S.Number;
|
|
29
|
+
readonly screenY: S.Number;
|
|
30
30
|
}>>;
|
|
31
31
|
}>;
|
|
32
32
|
export type BaseModel = typeof BaseModel.Type;
|
|
@@ -43,7 +43,7 @@ export type BaseInitConfig = Readonly<{
|
|
|
43
43
|
export declare const baseInit: (config: BaseInitConfig) => BaseModel;
|
|
44
44
|
/** Sent when the combobox popup opens. Contains an optional initial active item index. */
|
|
45
45
|
export declare const Opened: import("../../schema/index.js").CallableTaggedStruct<"Opened", {
|
|
46
|
-
maybeActiveItemIndex: S.
|
|
46
|
+
maybeActiveItemIndex: S.Option<S.Number>;
|
|
47
47
|
}>;
|
|
48
48
|
/** Sent when the combobox closes via Escape key or backdrop click. */
|
|
49
49
|
export declare const Closed: import("../../schema/index.js").CallableTaggedStruct<"Closed", {}>;
|
|
@@ -51,29 +51,29 @@ export declare const Closed: import("../../schema/index.js").CallableTaggedStruc
|
|
|
51
51
|
export declare const BlurredInput: import("../../schema/index.js").CallableTaggedStruct<"BlurredInput", {}>;
|
|
52
52
|
/** Sent when an item is highlighted via arrow keys or mouse hover. Includes activation trigger and optional immediate selection info. */
|
|
53
53
|
export declare const ActivatedItem: import("../../schema/index.js").CallableTaggedStruct<"ActivatedItem", {
|
|
54
|
-
index:
|
|
55
|
-
activationTrigger: S.
|
|
56
|
-
maybeImmediateSelection: S.
|
|
57
|
-
item:
|
|
58
|
-
displayText:
|
|
54
|
+
index: S.Number;
|
|
55
|
+
activationTrigger: S.Literals<readonly ["Pointer", "Keyboard"]>;
|
|
56
|
+
maybeImmediateSelection: S.Option<S.Struct<{
|
|
57
|
+
readonly item: S.String;
|
|
58
|
+
readonly displayText: S.String;
|
|
59
59
|
}>>;
|
|
60
60
|
}>;
|
|
61
61
|
/** Sent when the mouse leaves an enabled item. */
|
|
62
62
|
export declare const DeactivatedItem: import("../../schema/index.js").CallableTaggedStruct<"DeactivatedItem", {}>;
|
|
63
63
|
/** Sent when an item is selected via Enter or click. Includes display text for restoring input value on close. */
|
|
64
64
|
export declare const SelectedItem: import("../../schema/index.js").CallableTaggedStruct<"SelectedItem", {
|
|
65
|
-
item:
|
|
66
|
-
displayText:
|
|
65
|
+
item: S.String;
|
|
66
|
+
displayText: S.String;
|
|
67
67
|
}>;
|
|
68
68
|
/** Sent when the pointer moves over a combobox item. */
|
|
69
69
|
export declare const MovedPointerOverItem: import("../../schema/index.js").CallableTaggedStruct<"MovedPointerOverItem", {
|
|
70
|
-
index:
|
|
71
|
-
screenX:
|
|
72
|
-
screenY:
|
|
70
|
+
index: S.Number;
|
|
71
|
+
screenX: S.Number;
|
|
72
|
+
screenY: S.Number;
|
|
73
73
|
}>;
|
|
74
74
|
/** Sent when Enter or Space is pressed on the active item, triggering a programmatic click. */
|
|
75
75
|
export declare const RequestedItemClick: import("../../schema/index.js").CallableTaggedStruct<"RequestedItemClick", {
|
|
76
|
-
index:
|
|
76
|
+
index: S.Number;
|
|
77
77
|
}>;
|
|
78
78
|
/** Sent when the scroll lock command completes. */
|
|
79
79
|
export declare const CompletedLockScroll: import("../../schema/index.js").CallableTaggedStruct<"CompletedLockScroll", {}>;
|
|
@@ -101,7 +101,7 @@ export declare const GotAnimationMessage: import("../../schema/index.js").Callab
|
|
|
101
101
|
}>;
|
|
102
102
|
/** Sent when the user types in the input. */
|
|
103
103
|
export declare const UpdatedInputValue: import("../../schema/index.js").CallableTaggedStruct<"UpdatedInputValue", {
|
|
104
|
-
value:
|
|
104
|
+
value: S.String;
|
|
105
105
|
}>;
|
|
106
106
|
/** Sent when the optional toggle button is clicked. */
|
|
107
107
|
export declare const PressedToggleButton: import("../../schema/index.js").CallableTaggedStruct<"PressedToggleButton", {}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,MAAM,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,MAAM,EAGN,MAAM,IAAI,CAAC,EAEZ,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EAGV,MAAM,qBAAqB,CAAA;AAM5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAchD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,CAAA;AAI1B,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,8CAAsC,CAAA;AACpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D,oKAAoK;AACpK,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;EAepB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAC,CAAA;AAEF,kIAAkI;AAClI,eAAO,MAAM,QAAQ,GAAI,QAAQ,cAAc,KAAG,SAahD,CAAA;AAIF,0FAA0F;AAC1F,eAAO,MAAM,MAAM;;EAEjB,CAAA;AACF,sEAAsE;AACtE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,gDAAgD;AAChD,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,yIAAyI;AACzI,eAAO,MAAM,aAAa;;;;;;;EAMxB,CAAA;AACF,kDAAkD;AAClD,eAAO,MAAM,eAAe,6EAAuB,CAAA;AACnD,kHAAkH;AAClH,eAAO,MAAM,YAAY;;;EAGvB,CAAA;AACF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;;;EAI/B,CAAA;AACF,+FAA+F;AAC/F,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AACF,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,oFAA8B,CAAA;AACjE,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,qFAA+B,CAAA;AACnE,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,gFAA0B,CAAA;AACzD,4IAA4I;AAC5I,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAC7D,8LAA8L;AAC9L,eAAO,MAAM,0BAA0B,wFAAkC,CAAA;AACzE,sKAAsK;AACtK,eAAO,MAAM,4BAA4B,0FAAoC,CAAA;AAC7E,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB;;EAE9B,CAAA;AACF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB;;EAE5B,CAAA;AACF,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAE3D,gEAAgE;AAChE,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,OAAO,eAAe;IACtB,OAAO,YAAY;IACnB,OAAO,oBAAoB;IAC3B,OAAO,kBAAkB;IACzB,OAAO,mBAAmB;IAC1B,OAAO,qBAAqB;IAC5B,OAAO,mBAAmB;IAC1B,OAAO,sBAAsB;IAC7B,OAAO,mBAAmB;IAC1B,OAAO,uBAAuB;IAC9B,OAAO,kBAAkB;IACzB,OAAO,oBAAoB;IAC3B,OAAO,0BAA0B;IACjC,OAAO,4BAA4B;IACnC,OAAO,mBAAmB;IAC1B,OAAO,iBAAiB;IACxB,OAAO,mBAAmB;CAC3B,CAuBD,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AACrD,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AACnD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAC/D,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AACjE,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;AACrE,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AACjE,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAA;AACvE,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AACjE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AACzE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAC7D,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAA;AAEjE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAAwB,CAAA;AACnE,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,KAAG,MAC1B,CAAA;AACxB,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAAwB,CAAA;AACnE,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,EAAE,OAAO,MAAM,KAAG,MACjC,CAAA;AACxB,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,EAAE,OAAO,MAAM,KAAG,MAC5B,CAAA;AAMvB,iIAAiI;AACjI,eAAO,MAAM,eAAe,GAAI,KAAK,SAAS,SAAS,EAAE,OAAO,KAAK,KAAG,KAMpE,CAAA;AAIJ,+GAA+G;AAC/G,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;CAC3D,CAAC,CAAA;AAEF,8EAA8E;AAC9E,eAAO,MAAM,UAAU;;EAAoD,CAAA;AAC3E,iEAAiE;AACjE,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,2EAA2E;AAC3E,eAAO,MAAM,WAAW;;EAAqD,CAAA;AAC7E,sEAAsE;AACtE,eAAO,MAAM,YAAY;;EAGxB,CAAA;AACD,kEAAkE;AAClE,eAAO,MAAM,UAAU;;EAAoD,CAAA;AAC3E,4EAA4E;AAC5E,eAAO,MAAM,cAAc;;EAG1B,CAAA;AACD,sEAAsE;AACtE,eAAO,MAAM,SAAS;;EAAkD,CAAA;AACxE,iLAAiL;AACjL,eAAO,MAAM,4BAA4B;;;;;;;;;;;EAGxC,CAAA;AAkDD,6NAA6N;AAC7N,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,SAAS,EAChD,UAAU,QAAQ,CAAC;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAA;IACpC,kBAAkB,EAAE,CAClB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,KACzB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACrD,yBAAyB,EAAE,CACzB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,KAChB,KAAK,CAAA;CACX,CAAC,MAKM,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwPvC,CAAA;AAmDD,kEAAkE;AAClE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,IAAI,CAAA;CACd,CAAC,CAAA;AAEF,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,OAAO,EAAE,IAAI,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,cAAc,CACxB,OAAO,EACP,IAAI,SAAS,MAAM,EACnB,KAAK,SAAS,SAAS,IACrB,QAAQ,CAAC;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,eAAe,EAAE,CACf,OAAO,EACH,MAAM,GACN,MAAM,GACN,YAAY,GACZ,aAAa,GACb,eAAe,GACf,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,OAAO,oBAAoB,CAAC,IAAI,GAChC,OAAO,0BAA0B,CAAC,IAAI,GACtC,OAAO,4BAA4B,CAAC,IAAI,KACzC,OAAO,CAAA;IACZ,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3C,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1B,YAAY,EAAE,CACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,QAAQ,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAA;QACjB,UAAU,EAAE,OAAO,CAAA;QACnB,UAAU,EAAE,OAAO,CAAA;KACpB,CAAC,KACC,UAAU,CAAA;IACf,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACxD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACvD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,sBAAsB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACnD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qBAAqB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,aAAa,CAAC,EAAE,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,CAAC,CAAA;AAIF,qFAAqF;AACrF,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,SAAS,IAAI,QAAQ,CAAC;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAC5D,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAC,CAAA;AAEF,gNAAgN;AAChN,eAAO,MAAM,QAAQ,GAClB,KAAK,SAAS,SAAS,EAAE,UAAU,YAAY,CAAC,KAAK,CAAC,MACtD,OAAO,EAAE,IAAI,SAAS,MAAM,EAC3B,QAAQ,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAC3C,IA0jBF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Array, Effect, Match as M, Option, Predicate, Schema as S, pipe, } from 'effect';
|
|
1
|
+
import { Array, Effect, Match as M, Option, Predicate, Result, Schema as S, pipe, } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import { OptionExt } from '../../effectExtensions/index.js';
|
|
4
4
|
import { html, } from '../../html/index.js';
|
|
@@ -17,7 +17,7 @@ import { findFirstEnabledIndex, keyToIndex } from '../keyboard.js';
|
|
|
17
17
|
export { groupContiguous };
|
|
18
18
|
// MODEL
|
|
19
19
|
/** Schema for the activation trigger — whether the user interacted via mouse or keyboard. */
|
|
20
|
-
export const ActivationTrigger = S.
|
|
20
|
+
export const ActivationTrigger = S.Literals(['Pointer', 'Keyboard']);
|
|
21
21
|
/** Schema fields shared by all combobox variants (single-select and multi-select). Spread into each variant's `S.Struct` to avoid duplicating field definitions. */
|
|
22
22
|
export const BaseModel = S.Struct({
|
|
23
23
|
id: S.String,
|
|
@@ -28,10 +28,10 @@ export const BaseModel = S.Struct({
|
|
|
28
28
|
immediate: S.Boolean,
|
|
29
29
|
selectInputOnFocus: S.Boolean,
|
|
30
30
|
animation: AnimationModel,
|
|
31
|
-
maybeActiveItemIndex: S.
|
|
31
|
+
maybeActiveItemIndex: S.Option(S.Number),
|
|
32
32
|
activationTrigger: ActivationTrigger,
|
|
33
33
|
inputValue: S.String,
|
|
34
|
-
maybeLastPointerPosition: S.
|
|
34
|
+
maybeLastPointerPosition: S.Option(S.Struct({ screenX: S.Number, screenY: S.Number })),
|
|
35
35
|
});
|
|
36
36
|
/** Creates the shared base fields for a combobox model from a config. Each variant spreads this and adds its selection fields. */
|
|
37
37
|
export const baseInit = (config) => ({
|
|
@@ -51,7 +51,7 @@ export const baseInit = (config) => ({
|
|
|
51
51
|
// MESSAGE
|
|
52
52
|
/** Sent when the combobox popup opens. Contains an optional initial active item index. */
|
|
53
53
|
export const Opened = m('Opened', {
|
|
54
|
-
maybeActiveItemIndex: S.
|
|
54
|
+
maybeActiveItemIndex: S.Option(S.Number),
|
|
55
55
|
});
|
|
56
56
|
/** Sent when the combobox closes via Escape key or backdrop click. */
|
|
57
57
|
export const Closed = m('Closed');
|
|
@@ -61,7 +61,7 @@ export const BlurredInput = m('BlurredInput');
|
|
|
61
61
|
export const ActivatedItem = m('ActivatedItem', {
|
|
62
62
|
index: S.Number,
|
|
63
63
|
activationTrigger: ActivationTrigger,
|
|
64
|
-
maybeImmediateSelection: S.
|
|
64
|
+
maybeImmediateSelection: S.Option(S.Struct({ item: S.String, displayText: S.String })),
|
|
65
65
|
});
|
|
66
66
|
/** Sent when the mouse leaves an enabled item. */
|
|
67
67
|
export const DeactivatedItem = m('DeactivatedItem');
|
|
@@ -111,7 +111,29 @@ export const UpdatedInputValue = m('UpdatedInputValue', {
|
|
|
111
111
|
/** Sent when the optional toggle button is clicked. */
|
|
112
112
|
export const PressedToggleButton = m('PressedToggleButton');
|
|
113
113
|
/** Union of all messages the combobox component can produce. */
|
|
114
|
-
export const Message = S.Union(
|
|
114
|
+
export const Message = S.Union([
|
|
115
|
+
Opened,
|
|
116
|
+
Closed,
|
|
117
|
+
BlurredInput,
|
|
118
|
+
ActivatedItem,
|
|
119
|
+
DeactivatedItem,
|
|
120
|
+
SelectedItem,
|
|
121
|
+
MovedPointerOverItem,
|
|
122
|
+
RequestedItemClick,
|
|
123
|
+
CompletedLockScroll,
|
|
124
|
+
CompletedUnlockScroll,
|
|
125
|
+
CompletedSetupInert,
|
|
126
|
+
CompletedTeardownInert,
|
|
127
|
+
CompletedFocusInput,
|
|
128
|
+
CompletedScrollIntoView,
|
|
129
|
+
CompletedClickItem,
|
|
130
|
+
CompletedAnchorMount,
|
|
131
|
+
CompletedAttachPreventBlur,
|
|
132
|
+
CompletedAttachSelectOnFocus,
|
|
133
|
+
GotAnimationMessage,
|
|
134
|
+
UpdatedInputValue,
|
|
135
|
+
PressedToggleButton,
|
|
136
|
+
]);
|
|
115
137
|
// SELECTORS
|
|
116
138
|
export const inputSelector = (id) => `#${id}-input`;
|
|
117
139
|
export const inputWrapperSelector = (id) => `#${id}-input-wrapper`;
|
|
@@ -540,7 +562,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
540
562
|
onSome: item => itemGroupKey(item, index),
|
|
541
563
|
})));
|
|
542
564
|
return Array.flatMap(segments, (segment, segmentIndex) => {
|
|
543
|
-
const maybeHeading = Option.
|
|
565
|
+
const maybeHeading = Option.fromNullishOr(groupToHeading && groupToHeading(segment.key));
|
|
544
566
|
const headingId = `${id}-heading-${segment.key}`;
|
|
545
567
|
const headingElement = Option.match(maybeHeading, {
|
|
546
568
|
onNone: () => [],
|
|
@@ -561,7 +583,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
561
583
|
], groupContent);
|
|
562
584
|
const separator = segmentIndex > 0 &&
|
|
563
585
|
(separatorClassName ||
|
|
564
|
-
Array.
|
|
586
|
+
Array.isReadonlyArrayNonEmpty(separatorAttributes))
|
|
565
587
|
? [
|
|
566
588
|
keyed('div')(`${id}-separator-${segmentIndex}`, [
|
|
567
589
|
Role('separator'),
|
|
@@ -580,7 +602,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
580
602
|
], []);
|
|
581
603
|
const renderedItems = renderGroupedItems();
|
|
582
604
|
const scrollableItems = itemsScrollClassName ||
|
|
583
|
-
Array.
|
|
605
|
+
Array.isReadonlyArrayNonEmpty(itemsScrollAttributes)
|
|
584
606
|
? [
|
|
585
607
|
div([
|
|
586
608
|
...(itemsScrollClassName ? [Class(itemsScrollClassName)] : []),
|
|
@@ -617,7 +639,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
617
639
|
: [];
|
|
618
640
|
const selectedValues = pipe(items, Array.filterMap((item, index) => {
|
|
619
641
|
const value = itemToValue(item, index);
|
|
620
|
-
return OptionExt.when(behavior.isItemSelected(config.model, value), value);
|
|
642
|
+
return Result.fromOption(OptionExt.when(behavior.isItemSelected(config.model, value), value), () => undefined);
|
|
621
643
|
}));
|
|
622
644
|
const hiddenInputs = formName
|
|
623
645
|
? Array.match(selectedValues, {
|
|
@@ -637,7 +659,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
637
659
|
input(resolvedInputAttributes),
|
|
638
660
|
...toggleButton,
|
|
639
661
|
]),
|
|
640
|
-
...(isVisible && Array.
|
|
662
|
+
...(isVisible && Array.isReadonlyArrayNonEmpty(items)
|
|
641
663
|
? visibleContent
|
|
642
664
|
: []),
|
|
643
665
|
...hiddenInputs,
|
|
@@ -3,30 +3,29 @@ import type * as Command from '../../command/index.js';
|
|
|
3
3
|
import { type Html } from '../../html/index.js';
|
|
4
4
|
import { type BaseInitConfig, type BaseViewConfig, Closed, type Message, Opened, SelectedItem } from './shared.js';
|
|
5
5
|
/** Schema for the single-select combobox component's state, tracking open/closed status, active item, input value, selected item, and display text. */
|
|
6
|
-
export declare const Model: S.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
export declare const Model: S.Struct<{
|
|
7
|
+
readonly maybeSelectedItem: S.Option<S.String>;
|
|
8
|
+
readonly maybeSelectedDisplayText: S.Option<S.String>;
|
|
9
|
+
readonly id: S.String;
|
|
10
|
+
readonly isOpen: S.Boolean;
|
|
11
|
+
readonly isAnimated: S.Boolean;
|
|
12
|
+
readonly isModal: S.Boolean;
|
|
13
|
+
readonly nullable: S.Boolean;
|
|
14
|
+
readonly immediate: S.Boolean;
|
|
15
|
+
readonly selectInputOnFocus: S.Boolean;
|
|
16
|
+
readonly animation: S.Struct<{
|
|
17
|
+
readonly id: S.String;
|
|
18
|
+
readonly isShowing: S.Boolean;
|
|
19
|
+
readonly transitionState: S.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
18
20
|
}>;
|
|
19
|
-
maybeActiveItemIndex: S.
|
|
20
|
-
activationTrigger: S.
|
|
21
|
-
inputValue:
|
|
22
|
-
maybeLastPointerPosition: S.
|
|
23
|
-
screenX:
|
|
24
|
-
screenY:
|
|
21
|
+
readonly maybeActiveItemIndex: S.Option<S.Number>;
|
|
22
|
+
readonly activationTrigger: S.Literals<readonly ["Pointer", "Keyboard"]>;
|
|
23
|
+
readonly inputValue: S.String;
|
|
24
|
+
readonly maybeLastPointerPosition: S.Option<S.Struct<{
|
|
25
|
+
readonly screenX: S.Number;
|
|
26
|
+
readonly screenY: S.Number;
|
|
25
27
|
}>>;
|
|
26
|
-
}
|
|
27
|
-
maybeSelectedItem: S.OptionFromSelf<typeof S.String>;
|
|
28
|
-
maybeSelectedDisplayText: S.OptionFromSelf<typeof S.String>;
|
|
29
|
-
}>>;
|
|
28
|
+
}>;
|
|
30
29
|
export type Model = typeof Model.Type;
|
|
31
30
|
/** Configuration for creating a single-select combobox model with `init`. `isAnimated` enables CSS transition coordination (default `false`). `isModal` locks page scroll and inerts other elements when open (default `false`). `selectedItem` sets the initial selection (default none). */
|
|
32
31
|
export type InitConfig = BaseInitConfig & Readonly<{
|
|
@@ -38,6 +37,11 @@ export declare const init: (config: InitConfig) => Model;
|
|
|
38
37
|
/** Processes a combobox message and returns the next model and commands. Closes the combobox on selection (single-select behavior). */
|
|
39
38
|
export declare const update: (model: {
|
|
40
39
|
readonly id: string;
|
|
40
|
+
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
41
|
+
readonly maybeLastPointerPosition: Option.Option<{
|
|
42
|
+
readonly screenX: number;
|
|
43
|
+
readonly screenY: number;
|
|
44
|
+
}>;
|
|
41
45
|
readonly isOpen: boolean;
|
|
42
46
|
readonly isAnimated: boolean;
|
|
43
47
|
readonly isModal: boolean;
|
|
@@ -46,21 +50,20 @@ export declare const update: (model: {
|
|
|
46
50
|
readonly isShowing: boolean;
|
|
47
51
|
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
48
52
|
};
|
|
49
|
-
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
50
53
|
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
51
|
-
readonly
|
|
52
|
-
readonly screenX: number;
|
|
53
|
-
readonly screenY: number;
|
|
54
|
-
}>;
|
|
54
|
+
readonly maybeSelectedItem: Option.Option<string>;
|
|
55
55
|
readonly nullable: boolean;
|
|
56
56
|
readonly immediate: boolean;
|
|
57
57
|
readonly selectInputOnFocus: boolean;
|
|
58
58
|
readonly inputValue: string;
|
|
59
|
-
} & {
|
|
60
|
-
readonly maybeSelectedItem: Option.Option<string>;
|
|
61
59
|
readonly maybeSelectedDisplayText: Option.Option<string>;
|
|
62
60
|
}, message: Message) => readonly [{
|
|
63
61
|
readonly id: string;
|
|
62
|
+
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
63
|
+
readonly maybeLastPointerPosition: Option.Option<{
|
|
64
|
+
readonly screenX: number;
|
|
65
|
+
readonly screenY: number;
|
|
66
|
+
}>;
|
|
64
67
|
readonly isOpen: boolean;
|
|
65
68
|
readonly isAnimated: boolean;
|
|
66
69
|
readonly isModal: boolean;
|
|
@@ -69,18 +72,12 @@ export declare const update: (model: {
|
|
|
69
72
|
readonly isShowing: boolean;
|
|
70
73
|
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
71
74
|
};
|
|
72
|
-
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
73
75
|
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
74
|
-
readonly
|
|
75
|
-
readonly screenX: number;
|
|
76
|
-
readonly screenY: number;
|
|
77
|
-
}>;
|
|
76
|
+
readonly maybeSelectedItem: Option.Option<string>;
|
|
78
77
|
readonly nullable: boolean;
|
|
79
78
|
readonly immediate: boolean;
|
|
80
79
|
readonly selectInputOnFocus: boolean;
|
|
81
80
|
readonly inputValue: string;
|
|
82
|
-
} & {
|
|
83
|
-
readonly maybeSelectedItem: Option.Option<string>;
|
|
84
81
|
readonly maybeSelectedDisplayText: Option.Option<string>;
|
|
85
82
|
}, readonly Readonly<{
|
|
86
83
|
name: string;
|
|
@@ -166,6 +163,11 @@ export type ViewConfig<Message, Item extends string> = BaseViewConfig<Message, I
|
|
|
166
163
|
export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
167
164
|
model: {
|
|
168
165
|
readonly id: string;
|
|
166
|
+
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
167
|
+
readonly maybeLastPointerPosition: Option.Option<{
|
|
168
|
+
readonly screenX: number;
|
|
169
|
+
readonly screenY: number;
|
|
170
|
+
}>;
|
|
169
171
|
readonly isOpen: boolean;
|
|
170
172
|
readonly isAnimated: boolean;
|
|
171
173
|
readonly isModal: boolean;
|
|
@@ -174,18 +176,12 @@ export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
|
174
176
|
readonly isShowing: boolean;
|
|
175
177
|
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
176
178
|
};
|
|
177
|
-
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
178
179
|
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
179
|
-
readonly
|
|
180
|
-
readonly screenX: number;
|
|
181
|
-
readonly screenY: number;
|
|
182
|
-
}>;
|
|
180
|
+
readonly maybeSelectedItem: Option.Option<string>;
|
|
183
181
|
readonly nullable: boolean;
|
|
184
182
|
readonly immediate: boolean;
|
|
185
183
|
readonly selectInputOnFocus: boolean;
|
|
186
184
|
readonly inputValue: string;
|
|
187
|
-
} & {
|
|
188
|
-
readonly maybeSelectedItem: Option.Option<string>;
|
|
189
185
|
readonly maybeSelectedDisplayText: Option.Option<string>;
|
|
190
186
|
};
|
|
191
187
|
toParentMessage: (message: Opened | Closed | import("./shared.js").BlurredInput | import("./shared.js").ActivatedItem | import("./shared.js").DeactivatedItem | SelectedItem | import("./shared.js").MovedPointerOverItem | import("./shared.js").RequestedItemClick | import("./shared.js").UpdatedInputValue | import("./shared.js").PressedToggleButton | {
|
|
@@ -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
|
|
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,OAAO,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACnE,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAA;AAED,0IAA0I;AAC1I,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOf,CAAA;AAEF;mFACmF;AACnF,eAAO,MAAM,IAAI,GAAI,OAAO,EAAE,IAAI,SAAS,MAAM,EAC/C,cAAc,IAAI,CAChB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EACzB,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAC/C,KACA,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,iBAAiB,CAAC,KACrE,IAAI,CAoBR,CAAA"}
|
|
@@ -4,15 +4,16 @@ import { evo } from '../../struct/index.js';
|
|
|
4
4
|
import { BaseModel, Closed, Opened, SelectedItem, baseInit, closedBaseModel, makeUpdate, makeView, } from './shared.js';
|
|
5
5
|
// MODEL
|
|
6
6
|
/** Schema for the single-select combobox component's state, tracking open/closed status, active item, input value, selected item, and display text. */
|
|
7
|
-
export const Model =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export const Model = S.Struct({
|
|
8
|
+
...BaseModel.fields,
|
|
9
|
+
maybeSelectedItem: S.Option(S.String),
|
|
10
|
+
maybeSelectedDisplayText: S.Option(S.String),
|
|
11
|
+
});
|
|
11
12
|
/** Creates an initial single-select combobox model from a config. Defaults to closed with no active item, empty input, and no selection. */
|
|
12
13
|
export const init = (config) => ({
|
|
13
14
|
...baseInit(config),
|
|
14
|
-
maybeSelectedItem: Option.
|
|
15
|
-
maybeSelectedDisplayText: Option.
|
|
15
|
+
maybeSelectedItem: Option.fromNullishOr(config.selectedItem),
|
|
16
|
+
maybeSelectedDisplayText: Option.fromNullishOr(config.selectedDisplayText ?? config.selectedItem),
|
|
16
17
|
});
|
|
17
18
|
// UPDATE
|
|
18
19
|
/** Processes a combobox message and returns the next model and commands. Closes the combobox on selection (single-select behavior). */
|