@foldkit/ui 0.150.0 → 0.151.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/dist/animation/update.d.ts +10 -9
- package/dist/animation/update.d.ts.map +1 -1
- package/dist/animation/update.js +27 -35
- package/dist/calendar/index.d.ts +100 -11
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +66 -80
- package/dist/checkbox/index.d.ts +3 -4
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +3 -4
- package/dist/combobox/multi.d.ts +40 -51
- package/dist/combobox/multi.d.ts.map +1 -1
- package/dist/combobox/multi.js +19 -16
- package/dist/combobox/shared.d.ts +20 -20
- package/dist/combobox/shared.d.ts.map +1 -1
- package/dist/combobox/shared.js +134 -128
- package/dist/combobox/single.d.ts +38 -51
- package/dist/combobox/single.d.ts.map +1 -1
- package/dist/combobox/single.js +21 -17
- package/dist/datePicker/index.d.ts +182 -15
- package/dist/datePicker/index.d.ts.map +1 -1
- package/dist/datePicker/index.js +37 -54
- package/dist/dialog/index.d.ts +45 -7
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +54 -49
- package/dist/disclosure/index.d.ts +3 -4
- package/dist/disclosure/index.d.ts.map +1 -1
- package/dist/disclosure/index.js +3 -4
- package/dist/dragAndDrop/index.d.ts +96 -7
- package/dist/dragAndDrop/index.d.ts.map +1 -1
- package/dist/dragAndDrop/index.js +49 -61
- package/dist/fileDrop/index.d.ts +26 -11
- package/dist/fileDrop/index.d.ts.map +1 -1
- package/dist/fileDrop/index.js +16 -23
- package/dist/listbox/multi.d.ts +39 -52
- package/dist/listbox/multi.d.ts.map +1 -1
- package/dist/listbox/multi.js +9 -7
- package/dist/listbox/shared.d.ts +14 -22
- package/dist/listbox/shared.d.ts.map +1 -1
- package/dist/listbox/shared.js +113 -114
- package/dist/listbox/single.d.ts +40 -55
- package/dist/listbox/single.d.ts.map +1 -1
- package/dist/listbox/single.js +8 -7
- package/dist/menu/index.d.ts +131 -37
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +111 -120
- package/dist/popover/index.d.ts +71 -10
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +80 -73
- package/dist/radioGroup/index.d.ts +31 -19
- package/dist/radioGroup/index.d.ts.map +1 -1
- package/dist/radioGroup/index.js +18 -18
- package/dist/slider/index.d.ts +44 -13
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +33 -38
- package/dist/switch/index.d.ts +3 -4
- package/dist/switch/index.d.ts.map +1 -1
- package/dist/switch/index.js +3 -4
- package/dist/tabs/index.d.ts +31 -17
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +17 -17
- package/dist/test/apps/disabledButton.d.ts +17 -17
- package/dist/test/apps/disabledButton.d.ts.map +1 -1
- package/dist/test/apps/disabledButton.js +6 -4
- package/dist/toast/index.d.ts +96 -100
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/update.d.ts +97 -100
- package/dist/toast/update.d.ts.map +1 -1
- package/dist/toast/update.js +60 -58
- package/dist/tooltip/index.d.ts +2 -1
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +1 -1
- package/dist/tooltip/tooltip.d.ts +5 -10
- package/dist/tooltip/tooltip.d.ts.map +1 -1
- package/dist/tooltip/tooltip.js +45 -48
- package/dist/virtualList/index.d.ts +30 -29
- package/dist/virtualList/index.d.ts.map +1 -1
- package/dist/virtualList/index.js +21 -21
- package/package.json +3 -3
package/dist/fileDrop/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import { type Update } from 'foldkit';
|
|
3
3
|
import { type ChildAttribute, type Html } from 'foldkit/html';
|
|
4
4
|
/** Schema for the file-drop component's state.
|
|
5
5
|
*
|
|
@@ -37,14 +37,30 @@ export type InitConfig = Readonly<{
|
|
|
37
37
|
}>;
|
|
38
38
|
/** Creates an initial file-drop model. Drag state starts cleared. */
|
|
39
39
|
export declare const init: (config: InitConfig) => Model;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
/** Processes a file-drop Message and returns the next Model, optional Commands,
|
|
41
|
+
* and an optional OutMessage. */
|
|
42
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
43
|
+
model: {
|
|
44
|
+
readonly id: string;
|
|
45
|
+
readonly isDragOver: boolean;
|
|
46
|
+
};
|
|
47
|
+
commands?: Update.Commands<{
|
|
48
|
+
readonly _tag: "EnteredDragZone";
|
|
49
|
+
} | {
|
|
50
|
+
readonly _tag: "LeftDragZone";
|
|
51
|
+
} | {
|
|
52
|
+
readonly _tag: "DroppedFiles";
|
|
53
|
+
readonly files: readonly [File, ...File[]];
|
|
54
|
+
} | {
|
|
55
|
+
readonly _tag: "DroppedNonFiles";
|
|
56
|
+
}, never>;
|
|
57
|
+
outMessage?: {
|
|
58
|
+
readonly _tag: "ReceivedFiles";
|
|
59
|
+
readonly files: readonly [File, ...File[]];
|
|
60
|
+
} | {
|
|
61
|
+
readonly _tag: "RejectedNonFiles";
|
|
62
|
+
};
|
|
63
|
+
}>;
|
|
48
64
|
/** Attribute groups the file-drop component provides to the consumer's
|
|
49
65
|
* `toView` callback. */
|
|
50
66
|
export type FileDropAttributes = Readonly<{
|
|
@@ -84,5 +100,4 @@ export declare const view: import("foldkit/submodel").View<{
|
|
|
84
100
|
multiple?: boolean;
|
|
85
101
|
isDisabled?: boolean;
|
|
86
102
|
}>>;
|
|
87
|
-
export {};
|
|
88
103
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fileDrop/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fileDrop/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,IAAI,EAAmB,MAAM,cAAc,CAAA;AAO9E;;;;;iEAKiE;AACjE,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,iEAAiE;AACjE,eAAO,MAAM,OAAO;;;;;;;EAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC;wEACwE;AACxE,eAAO,MAAM,UAAU;;;;;EAGrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,qEAAqE;AACrE,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAIF;kCACkC;AAClC,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;EAiBlD,CAAA;AAIH;yBACyB;AACzB,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC;;yCAEqC;IACrC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACnC;;2BAEuB;IACvB,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;CACrC,CAAC,CAAA;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC,CAAA;AASF;iDACiD;AACjD,eAAO,MAAM,IAAI;;;;;;;;;;;;;YAfP,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI;aACvC,aAAa,CAAC,MAAM,CAAC;eACnB,OAAO;iBACL,OAAO;GAkDrB,CAAA"}
|
package/dist/fileDrop/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
|
-
import { Array,
|
|
2
|
+
import { Array, Schema as S } from 'effect';
|
|
3
3
|
import * as File from 'foldkit/file';
|
|
4
4
|
import { childAttributes } from 'foldkit/html';
|
|
5
5
|
import { defineMessageUnion } from 'foldkit/message';
|
|
@@ -36,29 +36,22 @@ export const init = (config) => (__foldkitBrandViewResult(({
|
|
|
36
36
|
id: config.id,
|
|
37
37
|
isDragOver: false,
|
|
38
38
|
}), "@foldkit/ui/fileDrop/index.js#init"));
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
// UPDATE
|
|
40
|
+
/** Processes a file-drop Message and returns the next Model, optional Commands,
|
|
41
|
+
* and an optional OutMessage. */
|
|
41
42
|
export const update = (model, message) => __foldkitBrandViewResult((Message.match(message, {
|
|
42
|
-
EnteredDragZone: () => __foldkitBrandViewResult((
|
|
43
|
-
evo(model, { isDragOver: () => __foldkitBrandViewResult((true), "@foldkit/ui/fileDrop/index.js#isDragOver") }),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
[],
|
|
55
|
-
Option.some(OutMessage.ReceivedFiles({ files })),
|
|
56
|
-
]), "@foldkit/ui/fileDrop/index.js#DroppedFiles"),
|
|
57
|
-
DroppedNonFiles: () => __foldkitBrandViewResult(([
|
|
58
|
-
evo(model, { isDragOver: () => __foldkitBrandViewResult((false), "@foldkit/ui/fileDrop/index.js#isDragOver~4") }),
|
|
59
|
-
[],
|
|
60
|
-
Option.some(OutMessage.RejectedNonFiles()),
|
|
61
|
-
]), "@foldkit/ui/fileDrop/index.js#DroppedNonFiles"),
|
|
43
|
+
EnteredDragZone: () => (__foldkitBrandViewResult(({
|
|
44
|
+
model: evo(model, { isDragOver: () => __foldkitBrandViewResult((true), "@foldkit/ui/fileDrop/index.js#isDragOver") }),
|
|
45
|
+
}), "@foldkit/ui/fileDrop/index.js#EnteredDragZone")),
|
|
46
|
+
LeftDragZone: () => (__foldkitBrandViewResult(({ model: evo(model, { isDragOver: () => __foldkitBrandViewResult((false), "@foldkit/ui/fileDrop/index.js#isDragOver~2") }) }), "@foldkit/ui/fileDrop/index.js#LeftDragZone")),
|
|
47
|
+
DroppedFiles: ({ files }) => (__foldkitBrandViewResult(({
|
|
48
|
+
model: evo(model, { isDragOver: () => __foldkitBrandViewResult((false), "@foldkit/ui/fileDrop/index.js#isDragOver~3") }),
|
|
49
|
+
outMessage: OutMessage.ReceivedFiles({ files }),
|
|
50
|
+
}), "@foldkit/ui/fileDrop/index.js#DroppedFiles")),
|
|
51
|
+
DroppedNonFiles: () => (__foldkitBrandViewResult(({
|
|
52
|
+
model: evo(model, { isDragOver: () => __foldkitBrandViewResult((false), "@foldkit/ui/fileDrop/index.js#isDragOver~4") }),
|
|
53
|
+
outMessage: OutMessage.RejectedNonFiles(),
|
|
54
|
+
}), "@foldkit/ui/fileDrop/index.js#DroppedNonFiles")),
|
|
62
55
|
})), "@foldkit/ui/fileDrop/index.js#update");
|
|
63
56
|
const dispatchDroppedFiles = (files) => __foldkitBrandViewResult((Array.match(files, {
|
|
64
57
|
onEmpty: () => __foldkitBrandViewResult((Message.DroppedNonFiles()), "@foldkit/ui/fileDrop/index.js#onEmpty"),
|
package/dist/listbox/multi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Option, Schema as S } from 'effect';
|
|
2
|
-
import type
|
|
2
|
+
import { type Update } from 'foldkit';
|
|
3
3
|
import type { View as SubmodelView } from 'foldkit/submodel';
|
|
4
4
|
import { type BaseInitConfig, type BaseViewInputs, Message, OutMessage } from './shared.js';
|
|
5
5
|
/** Schema for the multi-select listbox's private interaction state (open/closed status, active item, activation trigger, typeahead search). The selection is owned by the parent and passed in via `ViewInputs.selectedValues`. */
|
|
@@ -29,7 +29,10 @@ export type Model = typeof Model.Type;
|
|
|
29
29
|
export type InitConfig = BaseInitConfig;
|
|
30
30
|
/** Creates an initial multi-select listbox model from a config. Defaults to closed with no active item. */
|
|
31
31
|
export declare const init: (config: InitConfig) => Model;
|
|
32
|
-
/** Processes a
|
|
32
|
+
/** Processes a Listbox Message and returns the next Model, optional Commands,
|
|
33
|
+
* and an optional OutMessage. Selection leaves the multi-select Listbox open
|
|
34
|
+
* and emits `Selected({ value })` for the parent to fold by toggling
|
|
35
|
+
* membership. */
|
|
33
36
|
export declare const update: (model: {
|
|
34
37
|
readonly id: string;
|
|
35
38
|
readonly isOpen: boolean;
|
|
@@ -50,31 +53,29 @@ export declare const update: (model: {
|
|
|
50
53
|
readonly screenY: number;
|
|
51
54
|
}>;
|
|
52
55
|
readonly maybeLastButtonPointerType: Option.Option<string>;
|
|
53
|
-
}, message: Message) =>
|
|
54
|
-
|
|
55
|
-
readonly isOpen: boolean;
|
|
56
|
-
readonly isAnimated: boolean;
|
|
57
|
-
readonly isModal: boolean;
|
|
58
|
-
readonly orientation: "Horizontal" | "Vertical";
|
|
59
|
-
readonly animation: {
|
|
56
|
+
}, message: Message) => Readonly<{
|
|
57
|
+
model: {
|
|
60
58
|
readonly id: string;
|
|
61
|
-
readonly
|
|
62
|
-
readonly
|
|
59
|
+
readonly isOpen: boolean;
|
|
60
|
+
readonly isAnimated: boolean;
|
|
61
|
+
readonly isModal: boolean;
|
|
62
|
+
readonly orientation: "Horizontal" | "Vertical";
|
|
63
|
+
readonly animation: {
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly isShowing: boolean;
|
|
66
|
+
readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
|
|
67
|
+
};
|
|
68
|
+
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
69
|
+
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
70
|
+
readonly searchQuery: string;
|
|
71
|
+
readonly searchVersion: number;
|
|
72
|
+
readonly maybeLastPointerPosition: Option.Option<{
|
|
73
|
+
readonly screenX: number;
|
|
74
|
+
readonly screenY: number;
|
|
75
|
+
}>;
|
|
76
|
+
readonly maybeLastButtonPointerType: Option.Option<string>;
|
|
63
77
|
};
|
|
64
|
-
|
|
65
|
-
readonly activationTrigger: "Pointer" | "Keyboard";
|
|
66
|
-
readonly searchQuery: string;
|
|
67
|
-
readonly searchVersion: number;
|
|
68
|
-
readonly maybeLastPointerPosition: Option.Option<{
|
|
69
|
-
readonly screenX: number;
|
|
70
|
-
readonly screenY: number;
|
|
71
|
-
}>;
|
|
72
|
-
readonly maybeLastButtonPointerType: Option.Option<string>;
|
|
73
|
-
}, readonly Readonly<{
|
|
74
|
-
name: string;
|
|
75
|
-
args?: Record<string, unknown>;
|
|
76
|
-
key?: string;
|
|
77
|
-
effect: import("effect/Effect").Effect<{
|
|
78
|
+
commands?: Update.Commands<{
|
|
78
79
|
readonly _tag: "IgnoredMouseClick";
|
|
79
80
|
} | {
|
|
80
81
|
readonly _tag: "SuppressedSpaceScroll";
|
|
@@ -146,14 +147,15 @@ export declare const update: (model: {
|
|
|
146
147
|
readonly _tag: "CompletedAnchorListbox";
|
|
147
148
|
} | {
|
|
148
149
|
readonly _tag: "CompletedPortalListboxBackdrop";
|
|
149
|
-
}, never
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
150
|
+
}, never>;
|
|
151
|
+
outMessage?: Readonly<{
|
|
152
|
+
readonly _tag: "Selected";
|
|
153
|
+
readonly value: string;
|
|
154
|
+
}>;
|
|
155
|
+
}>;
|
|
154
156
|
type UpdateReturn = ReturnType<typeof update>;
|
|
155
|
-
/** Programmatically opens the
|
|
156
|
-
*
|
|
157
|
+
/** Programmatically opens the Listbox, updating the Model and returning focus
|
|
158
|
+
* and modal Commands. Use this in domain-event handlers. */
|
|
157
159
|
export declare const open: (model: Model) => UpdateReturn;
|
|
158
160
|
/** Programmatically closes the listbox. If it is open, returns the closed Model
|
|
159
161
|
* with focus and modal Commands. If it is already closed, returns the Model
|
|
@@ -164,6 +166,7 @@ export declare const close: (model: Model) => UpdateReturn;
|
|
|
164
166
|
export declare const selectItem: (model: Model, item: string) => UpdateReturn;
|
|
165
167
|
/** Per-render view inputs passed to the view via `h.submodel`'s `viewInputs` field. */
|
|
166
168
|
export type ViewInputs<Item, Value extends string = string> = BaseViewInputs<Item, Value>;
|
|
169
|
+
type BundleUpdateReturn<Value extends string> = Update.ReturnWithOutMessage<Model, Message, OutMessage<Value>>;
|
|
167
170
|
/** The `view`, `update`, and programmatic helpers that
|
|
168
171
|
* `Listbox.Multi.create` returns, bound to one `Item` and `Value` pair.
|
|
169
172
|
* Name it to annotate a value that holds a created bundle, such as a
|
|
@@ -171,26 +174,10 @@ export type ViewInputs<Item, Value extends string = string> = BaseViewInputs<Ite
|
|
|
171
174
|
* rather than calling `create` itself. */
|
|
172
175
|
export type Bundle<Item = string, Value extends string = Item extends string ? Item : string> = Readonly<{
|
|
173
176
|
view: SubmodelView<Model, Message, ViewInputs<Item, Value>>;
|
|
174
|
-
update: (model: Model, message: Message) =>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
];
|
|
179
|
-
selectItem: (model: Model, item: Value) => readonly [
|
|
180
|
-
Model,
|
|
181
|
-
ReadonlyArray<Command.Command<Message>>,
|
|
182
|
-
Option.Option<OutMessage<Value>>
|
|
183
|
-
];
|
|
184
|
-
open: (model: Model) => readonly [
|
|
185
|
-
Model,
|
|
186
|
-
ReadonlyArray<Command.Command<Message>>,
|
|
187
|
-
Option.Option<OutMessage<Value>>
|
|
188
|
-
];
|
|
189
|
-
close: (model: Model) => readonly [
|
|
190
|
-
Model,
|
|
191
|
-
ReadonlyArray<Command.Command<Message>>,
|
|
192
|
-
Option.Option<OutMessage<Value>>
|
|
193
|
-
];
|
|
177
|
+
update: (model: Model, message: Message) => BundleUpdateReturn<Value>;
|
|
178
|
+
selectItem: (model: Model, item: Value) => BundleUpdateReturn<Value>;
|
|
179
|
+
open: (model: Model) => BundleUpdateReturn<Value>;
|
|
180
|
+
close: (model: Model) => BundleUpdateReturn<Value>;
|
|
194
181
|
}>;
|
|
195
182
|
/** Pairs the multi-select listbox's `view` and `update` (and programmatic
|
|
196
183
|
* helpers) behind a single Item-typed entry point. Same shape as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../src/listbox/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../src/listbox/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,OAAO,EACP,UAAU,EAIX,MAAM,aAAa,CAAA;AAIpB,mOAAmO;AACnO,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;EAEhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,kOAAkO;AAClO,MAAM,MAAM,UAAU,GAAG,cAAc,CAAA;AAEvC,2GAA2G;AAC3G,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAAyB,CAAA;AAInE;;;kBAGkB;AAClB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGhB,CAAA;AAEH,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;AAE7C;6DAC6D;AAC7D,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,YACoC,CAAA;AAExE;;;eAGe;AACf,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,KAAG,YACJ,CAAA;AAEjC,8IAA8I;AAC9I,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,EAAE,MAAM,MAAM,KAAG,YACT,CAAA;AAI/C,uFAAuF;AACvF,MAAM,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,cAAc,CAC1E,IAAI,EACJ,KAAK,CACN,CAAA;AAID,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,CAAC,oBAAoB,CACzE,KAAK,EACL,OAAO,EACP,UAAU,CAAC,KAAK,CAAC,CAClB,CAAA;AAED;;;;2CAI2C;AAC3C,MAAM,MAAM,MAAM,CAChB,IAAI,GAAG,MAAM,EACb,KAAK,SAAS,MAAM,GAAG,IAAI,SAAS,MAAM,GAAG,IAAI,GAAG,MAAM,IACxD,QAAQ,CAAC;IACX,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3D,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACrE,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACpE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjD,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAA;CACnD,CAAC,CAAA;AAEF;;;;qBAIqB;AACrB,eAAO,MAAM,MAAM,GACjB,IAAI,GAAG,MAAM,EACb,KAAK,SAAS,MAAM,GAAG,IAAI,SAAS,MAAM,GAAG,IAAI,GAAG,MAAM,OACvD,MAAM,CAAC,IAAI,EAAE,KAAK,CAoBtB,CAAA"}
|
package/dist/listbox/multi.js
CHANGED
|
@@ -9,14 +9,16 @@ export const Model = S.Struct({
|
|
|
9
9
|
/** Creates an initial multi-select listbox model from a config. Defaults to closed with no active item. */
|
|
10
10
|
export const init = (config) => __foldkitBrandViewResult((baseInit(config)), "@foldkit/ui/listbox/multi.js#init");
|
|
11
11
|
// UPDATE
|
|
12
|
-
/** Processes a
|
|
13
|
-
|
|
12
|
+
/** Processes a Listbox Message and returns the next Model, optional Commands,
|
|
13
|
+
* and an optional OutMessage. Selection leaves the multi-select Listbox open
|
|
14
|
+
* and emits `Selected({ value })` for the parent to fold by toggling
|
|
15
|
+
* membership. */
|
|
16
|
+
export const update = makeUpdate((model, item) => (__foldkitBrandViewResult(({
|
|
14
17
|
model,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* focus and modal commands. Use this in domain-event handlers to open the listbox. */
|
|
18
|
+
outMessage: OutMessage.Selected({ value: item }),
|
|
19
|
+
}), "@foldkit/ui/listbox/multi.js#anonymous")));
|
|
20
|
+
/** Programmatically opens the Listbox, updating the Model and returning focus
|
|
21
|
+
* and modal Commands. Use this in domain-event handlers. */
|
|
20
22
|
export const open = (model) => __foldkitBrandViewResult((update(model, Message.Opened({ maybeActiveItemIndex: Option.none() }))), "@foldkit/ui/listbox/multi.js#open");
|
|
21
23
|
/** Programmatically closes the listbox. If it is open, returns the closed Model
|
|
22
24
|
* with focus and modal Commands. If it is already closed, returns the Model
|
package/dist/listbox/shared.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import * as Command from 'foldkit/command';
|
|
|
3
3
|
import type { ChildAttribute, Html } from 'foldkit/html';
|
|
4
4
|
import * as Mount from 'foldkit/mount';
|
|
5
5
|
import { type View as SubmodelView } from 'foldkit/submodel';
|
|
6
|
+
import * as Update from 'foldkit/update';
|
|
6
7
|
import { AnchorConfig } from '../anchor/index.js';
|
|
7
8
|
import { resolveTypeaheadMatch } from '../typeahead.js';
|
|
8
9
|
export { resolveTypeaheadMatch };
|
|
@@ -144,16 +145,8 @@ export declare const itemSelector: (id: string, index: number) => string;
|
|
|
144
145
|
export declare const itemId: (id: string, index: number) => string;
|
|
145
146
|
export declare const closedModel: <Model extends BaseModel>(model: Model) => Model;
|
|
146
147
|
type SelectedItemContext<Model extends BaseModel> = Readonly<{
|
|
147
|
-
closeWithFocus: (model: Model,
|
|
148
|
-
|
|
149
|
-
ReadonlyArray<Command.Command<Message>>,
|
|
150
|
-
Option.Option<OutMessage>
|
|
151
|
-
];
|
|
152
|
-
closeWithoutFocus: (model: Model, maybeOutMessage?: Option.Option<OutMessage>) => readonly [
|
|
153
|
-
Model,
|
|
154
|
-
ReadonlyArray<Command.Command<Message>>,
|
|
155
|
-
Option.Option<OutMessage>
|
|
156
|
-
];
|
|
148
|
+
closeWithFocus: (model: Model, outMessage?: OutMessage) => Update.ReturnWithOutMessage<Model, Message, OutMessage>;
|
|
149
|
+
closeWithoutFocus: (model: Model, outMessage?: OutMessage) => Update.ReturnWithOutMessage<Model, Message, OutMessage>;
|
|
157
150
|
}>;
|
|
158
151
|
/** Prevents page scrolling while the listbox is open in modal mode. */
|
|
159
152
|
export declare const LockScroll: Command.CommandDefinitionNoArgs<"LockScroll", Effect.Effect<{
|
|
@@ -223,11 +216,9 @@ export declare const DetectMovementOrAnimationEnd: Command.CommandDefinitionWith
|
|
|
223
216
|
readonly _tag: "EndedAnimation";
|
|
224
217
|
};
|
|
225
218
|
}, never, never>>;
|
|
226
|
-
export declare const makeUpdate: <Model extends BaseModel>(handleSelectedItem: (model: Model, item: string, context: SelectedItemContext<Model>) =>
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
key?: string;
|
|
230
|
-
effect: Effect.Effect<{
|
|
219
|
+
export declare const makeUpdate: <Model extends BaseModel>(handleSelectedItem: (model: Model, item: string, context: SelectedItemContext<Model>) => Update.ReturnWithOutMessage<Model, Message, OutMessage>) => (model: Model, message: Message) => Readonly<{
|
|
220
|
+
model: Model;
|
|
221
|
+
commands?: Update.Commands<{
|
|
231
222
|
readonly _tag: "IgnoredMouseClick";
|
|
232
223
|
} | {
|
|
233
224
|
readonly _tag: "SuppressedSpaceScroll";
|
|
@@ -299,11 +290,12 @@ export declare const makeUpdate: <Model extends BaseModel>(handleSelectedItem: (
|
|
|
299
290
|
readonly _tag: "CompletedAnchorListbox";
|
|
300
291
|
} | {
|
|
301
292
|
readonly _tag: "CompletedPortalListboxBackdrop";
|
|
302
|
-
}, never
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
}
|
|
293
|
+
}, never>;
|
|
294
|
+
outMessage?: Readonly<{
|
|
295
|
+
readonly _tag: "Selected";
|
|
296
|
+
readonly value: string;
|
|
297
|
+
}>;
|
|
298
|
+
}>;
|
|
307
299
|
/** The anchor-positioning Mount this Listbox renders on its items panel.
|
|
308
300
|
* The panel is always anchored to the button via Floating UI and portaled
|
|
309
301
|
* to the document body (opt out of portaling with `anchor.portal: false`),
|
|
@@ -355,8 +347,8 @@ export type GroupHeading = Readonly<{
|
|
|
355
347
|
/** Per-render view inputs passed to `view` via `h.submodel`'s `viewInputs` field.
|
|
356
348
|
*
|
|
357
349
|
* The Listbox emits a `Selected({ value })` OutMessage on commit.
|
|
358
|
-
*
|
|
359
|
-
*
|
|
350
|
+
* Fold it in the Listbox's `Update.foldChild` config: single-select stores
|
|
351
|
+
* the value, while multi-select toggles its membership. */
|
|
360
352
|
export type BaseViewInputsCommon<Item> = Readonly<{
|
|
361
353
|
items: ReadonlyArray<Item>;
|
|
362
354
|
itemToConfig: (item: Item, context: Readonly<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/listbox/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/listbox/shared.ts"],"names":[],"mappings":"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"}
|