foldkit 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -18
- package/dist/devtools/overlay.d.ts.map +1 -1
- package/dist/devtools/overlay.js +35 -6
- package/dist/devtools/store.d.ts +2 -1
- package/dist/devtools/store.d.ts.map +1 -1
- package/dist/devtools/store.js +4 -1
- package/dist/runtime/browserListeners.d.ts +2 -2
- package/dist/runtime/browserListeners.js +11 -11
- package/dist/runtime/crashUI.d.ts.map +1 -1
- package/dist/runtime/crashUI.js +1 -3
- package/dist/runtime/public.d.ts +2 -2
- package/dist/runtime/public.d.ts.map +1 -1
- package/dist/runtime/public.js +1 -1
- package/dist/runtime/runtime.d.ts +33 -46
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +25 -43
- package/dist/ui/checkbox/index.d.ts +3 -3
- package/dist/ui/checkbox/index.d.ts.map +1 -1
- package/dist/ui/checkbox/index.js +11 -8
- package/dist/ui/combobox/multi.d.ts +4 -3
- package/dist/ui/combobox/multi.d.ts.map +1 -1
- package/dist/ui/combobox/multi.js +4 -4
- package/dist/ui/combobox/public.d.ts +2 -2
- package/dist/ui/combobox/public.d.ts.map +1 -1
- package/dist/ui/combobox/public.js +1 -1
- package/dist/ui/combobox/shared.d.ts +12 -1
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +32 -19
- package/dist/ui/combobox/single.d.ts +4 -3
- package/dist/ui/combobox/single.d.ts.map +1 -1
- package/dist/ui/combobox/single.js +4 -4
- package/dist/ui/dialog/index.d.ts +11 -3
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +15 -7
- package/dist/ui/dialog/public.d.ts +1 -1
- package/dist/ui/dialog/public.d.ts.map +1 -1
- package/dist/ui/dialog/public.js +1 -1
- package/dist/ui/disclosure/index.d.ts +8 -3
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +12 -7
- package/dist/ui/disclosure/public.d.ts +2 -2
- package/dist/ui/disclosure/public.d.ts.map +1 -1
- package/dist/ui/disclosure/public.js +1 -1
- package/dist/ui/listbox/multi.d.ts +4 -3
- package/dist/ui/listbox/multi.d.ts.map +1 -1
- package/dist/ui/listbox/multi.js +4 -4
- package/dist/ui/listbox/public.d.ts +3 -3
- package/dist/ui/listbox/public.d.ts.map +1 -1
- package/dist/ui/listbox/public.js +2 -2
- package/dist/ui/listbox/shared.d.ts +14 -1
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +31 -16
- package/dist/ui/listbox/single.d.ts +10 -5
- package/dist/ui/listbox/single.d.ts.map +1 -1
- package/dist/ui/listbox/single.js +8 -5
- package/dist/ui/menu/index.d.ts +19 -3
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +39 -21
- package/dist/ui/menu/public.d.ts +2 -2
- package/dist/ui/menu/public.d.ts.map +1 -1
- package/dist/ui/menu/public.js +1 -1
- package/dist/ui/popover/index.d.ts +20 -3
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +31 -14
- package/dist/ui/popover/public.d.ts +2 -2
- package/dist/ui/popover/public.d.ts.map +1 -1
- package/dist/ui/popover/public.js +1 -1
- package/dist/ui/radioGroup/index.d.ts +10 -5
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +18 -20
- package/dist/ui/radioGroup/public.d.ts +2 -2
- package/dist/ui/radioGroup/public.d.ts.map +1 -1
- package/dist/ui/radioGroup/public.js +1 -1
- package/dist/ui/switch/index.d.ts +3 -3
- package/dist/ui/switch/index.d.ts.map +1 -1
- package/dist/ui/switch/index.js +11 -8
- package/dist/ui/tabs/index.d.ts +8 -3
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +15 -8
- package/dist/ui/tabs/public.d.ts +2 -2
- package/dist/ui/tabs/public.d.ts.map +1 -1
- package/dist/ui/tabs/public.js +1 -1
- package/package.json +1 -1
package/dist/runtime/runtime.js
CHANGED
|
@@ -27,7 +27,7 @@ const defaultSlowViewCallback = (context) => {
|
|
|
27
27
|
/** Effect service tag that provides message dispatching to the view layer. */
|
|
28
28
|
export class Dispatch extends Context.Tag('@foldkit/Dispatch')() {
|
|
29
29
|
}
|
|
30
|
-
const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscriptions, container,
|
|
30
|
+
const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscriptions, container, routing: routingConfig, crash, slowView, resources, managedResources, title, devtools, }) => {
|
|
31
31
|
const resolvedSlowView = pipe(slowView ?? {}, Option.liftPredicate(config => config !== false), Option.filter(config => Match.value(config.show ?? DEFAULT_SLOW_VIEW_SHOW).pipe(Match.when('Always', () => true), Match.when('Development', () => !!import.meta.hot), Match.exhaustive)), Option.map(config => ({
|
|
32
32
|
thresholdMs: config.thresholdMs ?? DEFAULT_SLOW_VIEW_THRESHOLD_MS,
|
|
33
33
|
onSlowView: config.onSlowView ?? defaultSlowViewCallback,
|
|
@@ -67,7 +67,7 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
67
67
|
const modelEquivalence = Schema.equivalence(Model);
|
|
68
68
|
const messageQueue = yield* Queue.unbounded();
|
|
69
69
|
const enqueueMessage = (message) => Queue.offer(messageQueue, message);
|
|
70
|
-
const currentUrl = Option.fromNullable(
|
|
70
|
+
const currentUrl = Option.fromNullable(routingConfig).pipe(Option.flatMap(() => urlFromString(window.location.href)));
|
|
71
71
|
const [initModel, initCommands] = Predicate.isNotUndefined(hmrModel)
|
|
72
72
|
? pipe(hmrModel, Schema.decodeUnknownEither(Model), Either.match({
|
|
73
73
|
onLeft: () => init(flags, Option.getOrUndefined(currentUrl)),
|
|
@@ -78,8 +78,8 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
78
78
|
yield* Effect.forEach(
|
|
79
79
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
80
80
|
initCommands, command => Effect.forkDaemon(command.effect.pipe(Effect.withSpan(command.name), provideAllResources, Effect.flatMap(enqueueMessage))));
|
|
81
|
-
if (
|
|
82
|
-
addNavigationEventListeners(messageQueue,
|
|
81
|
+
if (routingConfig) {
|
|
82
|
+
addNavigationEventListeners(messageQueue, routingConfig);
|
|
83
83
|
}
|
|
84
84
|
const modelRef = yield* Ref.make(initModel);
|
|
85
85
|
const maybeCurrentVNodeRef = yield* Ref.make(Option.none());
|
|
@@ -165,6 +165,9 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
165
165
|
const maybeCurrentVNode = yield* Ref.get(maybeCurrentVNodeRef);
|
|
166
166
|
const patchedVNode = yield* Effect.sync(() => patchVNode(maybeCurrentVNode, nextVNodeNullish, container));
|
|
167
167
|
yield* Ref.set(maybeCurrentVNodeRef, Option.some(patchedVNode));
|
|
168
|
+
if (title) {
|
|
169
|
+
document.title = title(model);
|
|
170
|
+
}
|
|
168
171
|
}).pipe(Effect.provideService(Dispatch, {
|
|
169
172
|
dispatchAsync,
|
|
170
173
|
dispatchSync,
|
|
@@ -189,7 +192,7 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
189
192
|
getCurrentModel: Ref.get(modelRef),
|
|
190
193
|
});
|
|
191
194
|
yield* Ref.set(maybeDevtoolsStoreRef, Option.some(devtoolsStore));
|
|
192
|
-
yield* devtoolsStore.recordInit(initModel);
|
|
195
|
+
yield* devtoolsStore.recordInit(initModel, Array.map(initCommands, ({ name }) => name));
|
|
193
196
|
yield* createOverlay(devtoolsStore, position, mode, maybeBanner);
|
|
194
197
|
}
|
|
195
198
|
yield* render(initModel, Option.none());
|
|
@@ -284,13 +287,19 @@ const renderCrashView = (context, crash, container, maybeCurrentVNodeRef) => {
|
|
|
284
287
|
patchVNode(maybeCurrentVNode, vnode, container);
|
|
285
288
|
}
|
|
286
289
|
};
|
|
287
|
-
export function
|
|
290
|
+
export function makeProgram(config) {
|
|
291
|
+
const hasRouting = 'routing' in config;
|
|
292
|
+
const hasFlags = 'Flags' in config;
|
|
293
|
+
const currentUrl = hasRouting
|
|
294
|
+
? Option.getOrThrow(urlFromString(window.location.href))
|
|
295
|
+
: undefined;
|
|
288
296
|
const baseConfig = {
|
|
289
297
|
Model: config.Model,
|
|
290
298
|
update: config.update,
|
|
291
299
|
view: config.view,
|
|
292
300
|
...(config.subscriptions && { subscriptions: config.subscriptions }),
|
|
293
301
|
container: config.container,
|
|
302
|
+
...(hasRouting && { routing: config.routing }),
|
|
294
303
|
...(config.crash && { crash: config.crash }),
|
|
295
304
|
...(Predicate.isNotUndefined(config.slowView) && {
|
|
296
305
|
slowView: config.slowView,
|
|
@@ -299,72 +308,45 @@ export function makeElement(config) {
|
|
|
299
308
|
...(config.managedResources && {
|
|
300
309
|
managedResources: config.managedResources,
|
|
301
310
|
}),
|
|
311
|
+
...(config.title && { title: config.title }),
|
|
302
312
|
...(Predicate.isNotUndefined(config.devtools) && {
|
|
303
313
|
devtools: config.devtools,
|
|
304
314
|
}),
|
|
305
315
|
};
|
|
306
|
-
|
|
307
|
-
|
|
316
|
+
/* eslint-disable @typescript-eslint/consistent-type-assertions */
|
|
317
|
+
if (hasFlags && hasRouting) {
|
|
308
318
|
return makeRuntime({
|
|
309
319
|
...baseConfig,
|
|
310
320
|
Flags: config.Flags,
|
|
311
321
|
flags: config.flags,
|
|
312
|
-
init: (flags) =>
|
|
313
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
314
|
-
config.init(flags),
|
|
322
|
+
init: (flags, url) => config.init(flags, url ?? currentUrl),
|
|
315
323
|
});
|
|
316
324
|
}
|
|
317
|
-
else {
|
|
318
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
325
|
+
else if (hasRouting) {
|
|
319
326
|
return makeRuntime({
|
|
320
327
|
...baseConfig,
|
|
321
328
|
Flags: Schema.Void,
|
|
322
329
|
flags: Effect.succeed(undefined),
|
|
323
|
-
init: () => config.init(),
|
|
330
|
+
init: (_flags, url) => config.init(url ?? currentUrl),
|
|
324
331
|
});
|
|
325
332
|
}
|
|
326
|
-
|
|
327
|
-
export function makeApplication(config) {
|
|
328
|
-
const currentUrl = Option.getOrThrow(urlFromString(window.location.href));
|
|
329
|
-
const baseConfig = {
|
|
330
|
-
Model: config.Model,
|
|
331
|
-
update: config.update,
|
|
332
|
-
view: config.view,
|
|
333
|
-
...(config.subscriptions && { subscriptions: config.subscriptions }),
|
|
334
|
-
container: config.container,
|
|
335
|
-
browser: config.browser,
|
|
336
|
-
...(config.crash && { crash: config.crash }),
|
|
337
|
-
...(Predicate.isNotUndefined(config.slowView) && {
|
|
338
|
-
slowView: config.slowView,
|
|
339
|
-
}),
|
|
340
|
-
...(config.resources && { resources: config.resources }),
|
|
341
|
-
...(config.managedResources && {
|
|
342
|
-
managedResources: config.managedResources,
|
|
343
|
-
}),
|
|
344
|
-
...(Predicate.isNotUndefined(config.devtools) && {
|
|
345
|
-
devtools: config.devtools,
|
|
346
|
-
}),
|
|
347
|
-
};
|
|
348
|
-
if ('Flags' in config) {
|
|
349
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
333
|
+
else if (hasFlags) {
|
|
350
334
|
return makeRuntime({
|
|
351
335
|
...baseConfig,
|
|
352
336
|
Flags: config.Flags,
|
|
353
337
|
flags: config.flags,
|
|
354
|
-
init: (flags
|
|
355
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
356
|
-
config.init(flags, url ?? currentUrl),
|
|
338
|
+
init: (flags) => config.init(flags),
|
|
357
339
|
});
|
|
358
340
|
}
|
|
359
341
|
else {
|
|
360
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
361
342
|
return makeRuntime({
|
|
362
343
|
...baseConfig,
|
|
363
344
|
Flags: Schema.Void,
|
|
364
345
|
flags: Effect.succeed(undefined),
|
|
365
|
-
init: (
|
|
346
|
+
init: () => config.init(),
|
|
366
347
|
});
|
|
367
348
|
}
|
|
349
|
+
/* eslint-enable @typescript-eslint/consistent-type-assertions */
|
|
368
350
|
}
|
|
369
351
|
const preserveModel = (model) => {
|
|
370
352
|
if (import.meta.hot) {
|
|
@@ -32,7 +32,7 @@ export type CheckboxAttributes<Message> = Readonly<{
|
|
|
32
32
|
/** Configuration for rendering a checkbox with `view`. */
|
|
33
33
|
export type ViewConfig<Message> = Readonly<{
|
|
34
34
|
model: Model;
|
|
35
|
-
|
|
35
|
+
toParentMessage: (message: Toggled) => Message;
|
|
36
36
|
toView: (attributes: CheckboxAttributes<Message>) => Html;
|
|
37
37
|
isDisabled?: boolean;
|
|
38
38
|
isIndeterminate?: boolean;
|
|
@@ -42,6 +42,6 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
42
42
|
/** Renders an accessible checkbox by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
43
43
|
export declare const view: <Message>(config: ViewConfig<Message>) => Html;
|
|
44
44
|
/** Creates a memoized checkbox view. Static config is captured in a closure;
|
|
45
|
-
* only `model` and `
|
|
46
|
-
export declare const lazy: <Message>(staticConfig: Omit<ViewConfig<Message>, "model" | "
|
|
45
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
46
|
+
export declare const lazy: <Message>(staticConfig: Omit<ViewConfig<Message>, "model" | "toParentMessage">) => ((model: Model, toParentMessage: ViewConfig<Message>["toParentMessage"]) => Html);
|
|
47
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/checkbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAA;AAMxE,8EAA8E;AAC9E,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,sEAAsE;AACtE,eAAO,MAAM,OAAO,4DAAe,CAAA;AAEnC,kEAAkE;AAClE,eAAO,MAAM,OAAO,4DAAU,CAAA;AAE9B,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAC,CAAA;AAEF,8EAA8E;AAC9E,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAIF,4EAA4E;AAC5E,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,UAAU,OAAO,KAChB,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAGlD,CAAA;AAID,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,QAAQ,CAAC;IACjD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,KAAK,EAAE,KAAK,CAAA;IACZ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/checkbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAA;AAMxE,8EAA8E;AAC9E,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,sEAAsE;AACtE,eAAO,MAAM,OAAO,4DAAe,CAAA;AAEnC,kEAAkE;AAClE,eAAO,MAAM,OAAO,4DAAU,CAAA;AAE9B,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAC,CAAA;AAEF,8EAA8E;AAC9E,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAIF,4EAA4E;AAC5E,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,UAAU,OAAO,KAChB,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAGlD,CAAA;AAID,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,QAAQ,CAAC;IACjD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,KAAK,EAAE,KAAK,CAAA;IACZ,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IAC9C,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAKF,kIAAkI;AAClI,eAAO,MAAM,IAAI,GAAI,OAAO,EAAE,QAAQ,UAAU,CAAC,OAAO,CAAC,KAAG,IA2E3D,CAAA;AAED;mFACmF;AACnF,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC,KACnE,CAAC,CACF,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,KACpD,IAAI,CAgBR,CAAA"}
|
|
@@ -29,8 +29,8 @@ const descriptionId = (id) => `${id}-description`;
|
|
|
29
29
|
/** Renders an accessible checkbox by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
30
30
|
export const view = (config) => {
|
|
31
31
|
const { AriaChecked, AriaDescribedBy, AriaDisabled, AriaLabelledBy, DataAttribute, Id, Name, OnClick, OnKeyUpPreventDefault, Role, Tabindex, Type, Value, } = html();
|
|
32
|
-
const { model: { id, isChecked },
|
|
33
|
-
const handleKeyUp = (key) => M.value(key).pipe(M.when(' ', () => Option.some(
|
|
32
|
+
const { model: { id, isChecked }, toParentMessage, isDisabled = false, isIndeterminate = false, name, value: formValue = 'on', } = config;
|
|
33
|
+
const handleKeyUp = (key) => M.value(key).pipe(M.when(' ', () => Option.some(toParentMessage(Toggled()))), M.orElse(() => Option.none()));
|
|
34
34
|
const stateAttributes = isIndeterminate
|
|
35
35
|
? [DataAttribute('indeterminate', '')]
|
|
36
36
|
: isChecked
|
|
@@ -49,11 +49,14 @@ export const view = (config) => {
|
|
|
49
49
|
...disabledAttributes,
|
|
50
50
|
...(isDisabled
|
|
51
51
|
? []
|
|
52
|
-
: [
|
|
52
|
+
: [
|
|
53
|
+
OnClick(toParentMessage(Toggled())),
|
|
54
|
+
OnKeyUpPreventDefault(handleKeyUp),
|
|
55
|
+
]),
|
|
53
56
|
];
|
|
54
57
|
const labelAttributes = [
|
|
55
58
|
Id(labelId(id)),
|
|
56
|
-
...(isDisabled ? [] : [OnClick(
|
|
59
|
+
...(isDisabled ? [] : [OnClick(toParentMessage(Toggled()))]),
|
|
57
60
|
];
|
|
58
61
|
const descriptionAttributes = [Id(descriptionId(id))];
|
|
59
62
|
const hiddenInputAttributes = name
|
|
@@ -67,12 +70,12 @@ export const view = (config) => {
|
|
|
67
70
|
});
|
|
68
71
|
};
|
|
69
72
|
/** Creates a memoized checkbox view. Static config is captured in a closure;
|
|
70
|
-
* only `model` and `
|
|
73
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
71
74
|
export const lazy = (staticConfig) => {
|
|
72
75
|
const lazyView = createLazy();
|
|
73
|
-
return (model,
|
|
76
|
+
return (model, toParentMessage) => lazyView((currentModel, currentToMessage) => view({
|
|
74
77
|
...staticConfig,
|
|
75
78
|
model: currentModel,
|
|
76
|
-
|
|
77
|
-
}), [model,
|
|
79
|
+
toParentMessage: currentToMessage,
|
|
80
|
+
}), [model, toParentMessage]);
|
|
78
81
|
};
|
|
@@ -146,7 +146,8 @@ export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
|
146
146
|
} & {
|
|
147
147
|
readonly selectedItems: readonly string[];
|
|
148
148
|
};
|
|
149
|
-
|
|
149
|
+
toParentMessage: (message: import("./shared").Opened | import("./shared").Closed | import("./shared").ClosedByTab | import("./shared").ActivatedItem | import("./shared").DeactivatedItem | import("./shared").SelectedItem | import("./shared").MovedPointerOverItem | import("./shared").RequestedItemClick | import("./shared").UpdatedInputValue | import("./shared").PressedToggleButton | import("./shared").CompletedLockScroll | import("./shared").CompletedUnlockScroll | import("./shared").CompletedSetupInert | import("./shared").CompletedTeardownInert | import("./shared").CompletedFocusInput | import("./shared").CompletedScrollIntoView | import("./shared").CompletedClickItem) => Message;
|
|
150
|
+
onSelectedItem?: (value: string) => Message;
|
|
150
151
|
items: readonly Item[];
|
|
151
152
|
itemToConfig: (item: Item, context: Readonly<{
|
|
152
153
|
isActive: boolean;
|
|
@@ -197,6 +198,6 @@ export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
|
197
198
|
}>;
|
|
198
199
|
}>) => Html;
|
|
199
200
|
/** Creates a memoized multi-select combobox view. Static config is captured in a closure;
|
|
200
|
-
* only `model` and `
|
|
201
|
-
export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "
|
|
201
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
202
|
+
export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "toParentMessage" | "onSelectedItem">) => ((model: Model, toParentMessage: BaseViewConfig<Message, Item, Model>["toParentMessage"]) => Html);
|
|
202
203
|
//# sourceMappingURL=multi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,yIAAyI;AACzI,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;GAEjB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,8RAA8R;AAC9R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACtC,CAAC,CAAA;AAEJ,2IAA2I;AAC3I,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAcF,yJAAyJ;AACzJ,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwBjB,CAAA;AAIF,uEAAuE;AACvE,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACnE,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAA;AAED,yIAAyI;AACzI,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,yIAAyI;AACzI,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;GAEjB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,8RAA8R;AAC9R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACtC,CAAC,CAAA;AAEJ,2IAA2I;AAC3I,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAcF,yJAAyJ;AACzJ,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwBjB,CAAA;AAIF,uEAAuE;AACvE,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,SAAS,MAAM,IAAI,cAAc,CACnE,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAA;AAED,yIAAyI;AACzI,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAIf,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"}
|
|
@@ -42,12 +42,12 @@ export const view = makeView({
|
|
|
42
42
|
ariaMultiSelectable: true,
|
|
43
43
|
});
|
|
44
44
|
/** Creates a memoized multi-select combobox view. Static config is captured in a closure;
|
|
45
|
-
* only `model` and `
|
|
45
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
46
46
|
export const lazy = (staticConfig) => {
|
|
47
47
|
const lazyView = createLazy();
|
|
48
|
-
return (model,
|
|
48
|
+
return (model, toParentMessage) => lazyView((currentModel, currentToMessage) => view({
|
|
49
49
|
...staticConfig,
|
|
50
50
|
model: currentModel,
|
|
51
|
-
|
|
52
|
-
}), [model,
|
|
51
|
+
toParentMessage: currentToMessage,
|
|
52
|
+
}), [model, toParentMessage]);
|
|
53
53
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { init, update, view, lazy, Model } from './single';
|
|
2
|
-
export { Message } from './shared';
|
|
2
|
+
export { Message, SelectedItem, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, CompletedFocusInput, CompletedScrollIntoView, CompletedClickItem, AdvancedTransitionFrame, EndedTransition, DetectedInputMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusInput, ScrollIntoView, ClickItem, WaitForTransitions, DetectMovementOrTransitionEnd, } from './shared';
|
|
3
3
|
export { TransitionState } from '../transition';
|
|
4
|
-
export type { ActivationTrigger, Opened, Closed, ClosedByTab, ActivatedItem, DeactivatedItem,
|
|
4
|
+
export type { ActivationTrigger, Opened, Closed, ClosedByTab, ActivatedItem, DeactivatedItem, MovedPointerOverItem, RequestedItemClick, UpdatedInputValue, PressedToggleButton, ItemConfig, GroupHeading, } from './shared';
|
|
5
5
|
export type { InitConfig, ViewConfig } from './single';
|
|
6
6
|
export type { AnchorConfig } from '../anchor';
|
|
7
7
|
export * as Multi from './multiPublic';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EACV,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,YAAY,GACb,MAAM,UAAU,CAAA;AAEjB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEtD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { init, update, view, lazy, Model } from './single';
|
|
2
|
-
export { Message } from './shared';
|
|
2
|
+
export { Message, SelectedItem, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, CompletedFocusInput, CompletedScrollIntoView, CompletedClickItem, AdvancedTransitionFrame, EndedTransition, DetectedInputMovement, RequestFrame, LockScroll, UnlockScroll, InertOthers, RestoreInert, FocusInput, ScrollIntoView, ClickItem, WaitForTransitions, DetectMovementOrTransitionEnd, } from './shared';
|
|
3
3
|
export { TransitionState } from '../transition';
|
|
4
4
|
export * as Multi from './multiPublic';
|
|
@@ -156,33 +156,43 @@ export type SelectedItemContext = Readonly<{
|
|
|
156
156
|
maybeRestoreInert: Option.Option<Command.Command<Message>>;
|
|
157
157
|
}>;
|
|
158
158
|
/** Creates a combobox update function from variant-specific handlers. Shared logic (open, close, activate, transition) is handled internally; only close, selection, and immediate-activation behavior varies by variant. */
|
|
159
|
+
/** Advances the combobox's enter/leave transition by waiting a double-rAF. */
|
|
159
160
|
export declare const RequestFrame: Command.CommandDefinition<"RequestFrame", {
|
|
160
161
|
readonly _tag: "AdvancedTransitionFrame";
|
|
161
162
|
}>;
|
|
163
|
+
/** Prevents page scrolling while the combobox popup is open in modal mode. */
|
|
162
164
|
export declare const LockScroll: Command.CommandDefinition<"LockScroll", {
|
|
163
165
|
readonly _tag: "CompletedLockScroll";
|
|
164
166
|
}>;
|
|
167
|
+
/** Re-enables page scrolling after the combobox popup closes. */
|
|
165
168
|
export declare const UnlockScroll: Command.CommandDefinition<"UnlockScroll", {
|
|
166
169
|
readonly _tag: "CompletedUnlockScroll";
|
|
167
170
|
}>;
|
|
171
|
+
/** Marks all elements outside the combobox as inert for modal behavior. */
|
|
168
172
|
export declare const InertOthers: Command.CommandDefinition<"InertOthers", {
|
|
169
173
|
readonly _tag: "CompletedSetupInert";
|
|
170
174
|
}>;
|
|
175
|
+
/** Removes the inert attribute from elements outside the combobox. */
|
|
171
176
|
export declare const RestoreInert: Command.CommandDefinition<"RestoreInert", {
|
|
172
177
|
readonly _tag: "CompletedTeardownInert";
|
|
173
178
|
}>;
|
|
179
|
+
/** Moves focus to the combobox input after selection or close. */
|
|
174
180
|
export declare const FocusInput: Command.CommandDefinition<"FocusInput", {
|
|
175
181
|
readonly _tag: "CompletedFocusInput";
|
|
176
182
|
}>;
|
|
183
|
+
/** Scrolls the active combobox item into view after keyboard navigation. */
|
|
177
184
|
export declare const ScrollIntoView: Command.CommandDefinition<"ScrollIntoView", {
|
|
178
185
|
readonly _tag: "CompletedScrollIntoView";
|
|
179
186
|
}>;
|
|
187
|
+
/** Programmatically clicks the active combobox item's DOM element. */
|
|
180
188
|
export declare const ClickItem: Command.CommandDefinition<"ClickItem", {
|
|
181
189
|
readonly _tag: "CompletedClickItem";
|
|
182
190
|
}>;
|
|
191
|
+
/** Waits for all CSS transitions on the combobox items container to complete. */
|
|
183
192
|
export declare const WaitForTransitions: Command.CommandDefinition<"WaitForTransitions", {
|
|
184
193
|
readonly _tag: "EndedTransition";
|
|
185
194
|
}>;
|
|
195
|
+
/** Detects whether the combobox input moved or the leave transition ended — whichever comes first. */
|
|
186
196
|
export declare const DetectMovementOrTransitionEnd: Command.CommandDefinition<"DetectMovementOrTransitionEnd", {
|
|
187
197
|
readonly _tag: "EndedTransition";
|
|
188
198
|
} | {
|
|
@@ -263,7 +273,8 @@ export type GroupHeading = Readonly<{
|
|
|
263
273
|
/** Configuration for rendering a combobox with `view`. */
|
|
264
274
|
export type BaseViewConfig<Message, Item extends string, Model extends BaseModel> = Readonly<{
|
|
265
275
|
model: Model;
|
|
266
|
-
|
|
276
|
+
toParentMessage: (message: Opened | Closed | ClosedByTab | ActivatedItem | DeactivatedItem | SelectedItem | MovedPointerOverItem | RequestedItemClick | UpdatedInputValue | PressedToggleButton | CompletedLockScroll | CompletedUnlockScroll | CompletedSetupInert | CompletedTeardownInert | CompletedFocusInput | CompletedScrollIntoView | CompletedClickItem) => Message;
|
|
277
|
+
onSelectedItem?: (value: string) => Message;
|
|
267
278
|
items: ReadonlyArray<Item>;
|
|
268
279
|
itemToConfig: (item: Item, context: Readonly<{
|
|
269
280
|
isActive: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/shared.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/combobox/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,15 +120,25 @@ export const closedBaseModel = (model) => constrainedEvo(model, {
|
|
|
120
120
|
maybeLastPointerPosition: () => Option.none(),
|
|
121
121
|
});
|
|
122
122
|
/** Creates a combobox update function from variant-specific handlers. Shared logic (open, close, activate, transition) is handled internally; only close, selection, and immediate-activation behavior varies by variant. */
|
|
123
|
+
/** Advances the combobox's enter/leave transition by waiting a double-rAF. */
|
|
123
124
|
export const RequestFrame = Command.define('RequestFrame', AdvancedTransitionFrame);
|
|
125
|
+
/** Prevents page scrolling while the combobox popup is open in modal mode. */
|
|
124
126
|
export const LockScroll = Command.define('LockScroll', CompletedLockScroll);
|
|
127
|
+
/** Re-enables page scrolling after the combobox popup closes. */
|
|
125
128
|
export const UnlockScroll = Command.define('UnlockScroll', CompletedUnlockScroll);
|
|
129
|
+
/** Marks all elements outside the combobox as inert for modal behavior. */
|
|
126
130
|
export const InertOthers = Command.define('InertOthers', CompletedSetupInert);
|
|
131
|
+
/** Removes the inert attribute from elements outside the combobox. */
|
|
127
132
|
export const RestoreInert = Command.define('RestoreInert', CompletedTeardownInert);
|
|
133
|
+
/** Moves focus to the combobox input after selection or close. */
|
|
128
134
|
export const FocusInput = Command.define('FocusInput', CompletedFocusInput);
|
|
135
|
+
/** Scrolls the active combobox item into view after keyboard navigation. */
|
|
129
136
|
export const ScrollIntoView = Command.define('ScrollIntoView', CompletedScrollIntoView);
|
|
137
|
+
/** Programmatically clicks the active combobox item's DOM element. */
|
|
130
138
|
export const ClickItem = Command.define('ClickItem', CompletedClickItem);
|
|
139
|
+
/** Waits for all CSS transitions on the combobox items container to complete. */
|
|
131
140
|
export const WaitForTransitions = Command.define('WaitForTransitions', EndedTransition);
|
|
141
|
+
/** Detects whether the combobox input moved or the leave transition ended — whichever comes first. */
|
|
132
142
|
export const DetectMovementOrTransitionEnd = Command.define('DetectMovementOrTransitionEnd', DetectedInputMovement, EndedTransition);
|
|
133
143
|
export const makeUpdate = (handlers) => {
|
|
134
144
|
const withUpdateReturn = M.withReturnType();
|
|
@@ -318,7 +328,13 @@ export const makeUpdate = (handlers) => {
|
|
|
318
328
|
/** 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. */
|
|
319
329
|
export const makeView = (behavior) => (config) => {
|
|
320
330
|
const { div, input, AriaActiveDescendant, AriaControls, AriaDisabled, AriaExpanded, AriaInvalid, AriaLabelledBy, AriaMultiSelectable, AriaSelected, Attribute, Autocomplete, Class, DataAttribute, Id, Name, OnBlur, OnClick, OnDestroy, OnFocus, OnInput, OnInsert, OnKeyDownPreventDefault, OnPointerLeave, OnPointerMove, Placeholder, Role, Style, Tabindex, Type, Value, keyed, } = html();
|
|
321
|
-
const { model: { id, isOpen, immediate, transitionState, maybeActiveItemIndex },
|
|
331
|
+
const { model: { id, isOpen, immediate, 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;
|
|
332
|
+
const dispatchSelectedItem = (item, index) => onSelectedItem
|
|
333
|
+
? onSelectedItem(itemToValue(item, index))
|
|
334
|
+
: toParentMessage(SelectedItem({
|
|
335
|
+
item: itemToValue(item, index),
|
|
336
|
+
displayText: itemToDisplayText(item, index),
|
|
337
|
+
}));
|
|
322
338
|
const isLeaving = transitionState === 'LeaveStart' || transitionState === 'LeaveAnimating';
|
|
323
339
|
const isVisible = isOpen || isLeaving;
|
|
324
340
|
const transitionAttributes = M.value(transitionState).pipe(M.when('EnterStart', () => [
|
|
@@ -350,24 +366,24 @@ export const makeView = (behavior) => (config) => {
|
|
|
350
366
|
})));
|
|
351
367
|
const handleInputKeyDown = (key) => M.value(key).pipe(M.when('ArrowDown', () => {
|
|
352
368
|
if (!isOpen) {
|
|
353
|
-
return Option.some(
|
|
369
|
+
return Option.some(toParentMessage(Opened({
|
|
354
370
|
maybeActiveItemIndex: Option.some(firstEnabledIndex),
|
|
355
371
|
})));
|
|
356
372
|
}
|
|
357
373
|
const targetIndex = resolveActiveIndex('ArrowDown');
|
|
358
|
-
return Option.some(
|
|
374
|
+
return Option.some(toParentMessage(ActivatedItem({
|
|
359
375
|
index: targetIndex,
|
|
360
376
|
activationTrigger: 'Keyboard',
|
|
361
377
|
maybeImmediateSelection: resolveImmediateSelection(targetIndex),
|
|
362
378
|
})));
|
|
363
379
|
}), M.when('ArrowUp', () => {
|
|
364
380
|
if (!isOpen) {
|
|
365
|
-
return Option.some(
|
|
381
|
+
return Option.some(toParentMessage(Opened({
|
|
366
382
|
maybeActiveItemIndex: Option.some(lastEnabledIndex),
|
|
367
383
|
})));
|
|
368
384
|
}
|
|
369
385
|
const targetIndex = resolveActiveIndex('ArrowUp');
|
|
370
|
-
return Option.some(
|
|
386
|
+
return Option.some(toParentMessage(ActivatedItem({
|
|
371
387
|
index: targetIndex,
|
|
372
388
|
activationTrigger: 'Keyboard',
|
|
373
389
|
maybeImmediateSelection: resolveImmediateSelection(targetIndex),
|
|
@@ -376,18 +392,18 @@ export const makeView = (behavior) => (config) => {
|
|
|
376
392
|
if (!isOpen) {
|
|
377
393
|
return Option.none();
|
|
378
394
|
}
|
|
379
|
-
return Option.map(maybeActiveItemIndex, index =>
|
|
395
|
+
return Option.map(maybeActiveItemIndex, index => toParentMessage(RequestedItemClick({ index })));
|
|
380
396
|
}), M.when('Escape', () => {
|
|
381
397
|
if (!isOpen) {
|
|
382
398
|
return Option.none();
|
|
383
399
|
}
|
|
384
|
-
return Option.some(
|
|
400
|
+
return Option.some(toParentMessage(Closed()));
|
|
385
401
|
}), M.whenOr('Home', 'End', () => {
|
|
386
402
|
if (!isOpen) {
|
|
387
403
|
return Option.none();
|
|
388
404
|
}
|
|
389
405
|
const targetIndex = resolveActiveIndex(key);
|
|
390
|
-
return Option.some(
|
|
406
|
+
return Option.some(toParentMessage(ActivatedItem({
|
|
391
407
|
index: targetIndex,
|
|
392
408
|
activationTrigger: 'Keyboard',
|
|
393
409
|
maybeImmediateSelection: resolveImmediateSelection(targetIndex),
|
|
@@ -416,12 +432,12 @@ export const makeView = (behavior) => (config) => {
|
|
|
416
432
|
...(isDisabled
|
|
417
433
|
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
418
434
|
: [
|
|
419
|
-
OnInput(value =>
|
|
435
|
+
OnInput(value => toParentMessage(UpdatedInputValue({ value }))),
|
|
420
436
|
OnKeyDownPreventDefault(handleInputKeyDown),
|
|
421
|
-
OnBlur(
|
|
437
|
+
OnBlur(toParentMessage(ClosedByTab())),
|
|
422
438
|
...(openOnFocus
|
|
423
439
|
? [
|
|
424
|
-
OnFocus(
|
|
440
|
+
OnFocus(toParentMessage(Opened({ maybeActiveItemIndex: Option.none() }))),
|
|
425
441
|
]
|
|
426
442
|
: []),
|
|
427
443
|
]),
|
|
@@ -490,16 +506,13 @@ export const makeView = (behavior) => (config) => {
|
|
|
490
506
|
: []),
|
|
491
507
|
...(isInteractive
|
|
492
508
|
? [
|
|
493
|
-
OnClick(
|
|
494
|
-
item: itemToValue(item, index),
|
|
495
|
-
displayText: itemToDisplayText(item, index),
|
|
496
|
-
}))),
|
|
509
|
+
OnClick(dispatchSelectedItem(item, index)),
|
|
497
510
|
...(isActiveItem
|
|
498
511
|
? []
|
|
499
512
|
: [
|
|
500
|
-
OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch',
|
|
513
|
+
OnPointerMove((screenX, screenY, pointerType) => OptionExt.when(pointerType !== 'touch', toParentMessage(MovedPointerOverItem({ index, screenX, screenY })))),
|
|
501
514
|
]),
|
|
502
|
-
OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch',
|
|
515
|
+
OnPointerLeave(pointerType => OptionExt.when(pointerType !== 'touch', toParentMessage(DeactivatedItem()))),
|
|
503
516
|
]
|
|
504
517
|
: []),
|
|
505
518
|
...(itemConfig.className ? [Class(itemConfig.className)] : []),
|
|
@@ -548,7 +561,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
548
561
|
});
|
|
549
562
|
};
|
|
550
563
|
const backdrop = keyed('div')(`${id}-backdrop`, [
|
|
551
|
-
...(isLeaving ? [] : [OnClick(
|
|
564
|
+
...(isLeaving ? [] : [OnClick(toParentMessage(Closed()))]),
|
|
552
565
|
...(backdropClassName ? [Class(backdropClassName)] : []),
|
|
553
566
|
...backdropAttributes,
|
|
554
567
|
], []);
|
|
@@ -582,7 +595,7 @@ export const makeView = (behavior) => (config) => {
|
|
|
582
595
|
Attribute('aria-haspopup', 'listbox'),
|
|
583
596
|
...(isDisabled
|
|
584
597
|
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
585
|
-
: [OnClick(
|
|
598
|
+
: [OnClick(toParentMessage(PressedToggleButton()))]),
|
|
586
599
|
OnInsert(preventBlurOnPointerDown),
|
|
587
600
|
...(buttonClassName ? [Class(buttonClassName)] : []),
|
|
588
601
|
...buttonAttributes,
|
|
@@ -151,7 +151,8 @@ export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
|
151
151
|
readonly maybeSelectedItem: Option.Option<string>;
|
|
152
152
|
readonly maybeSelectedDisplayText: Option.Option<string>;
|
|
153
153
|
};
|
|
154
|
-
|
|
154
|
+
toParentMessage: (message: import("./shared").Opened | import("./shared").Closed | import("./shared").ClosedByTab | import("./shared").ActivatedItem | import("./shared").DeactivatedItem | import("./shared").SelectedItem | import("./shared").MovedPointerOverItem | import("./shared").RequestedItemClick | import("./shared").UpdatedInputValue | import("./shared").PressedToggleButton | import("./shared").CompletedLockScroll | import("./shared").CompletedUnlockScroll | import("./shared").CompletedSetupInert | import("./shared").CompletedTeardownInert | import("./shared").CompletedFocusInput | import("./shared").CompletedScrollIntoView | import("./shared").CompletedClickItem) => Message;
|
|
155
|
+
onSelectedItem?: (value: string) => Message;
|
|
155
156
|
items: readonly Item[];
|
|
156
157
|
itemToConfig: (item: Item, context: Readonly<{
|
|
157
158
|
isActive: boolean;
|
|
@@ -202,6 +203,6 @@ export declare const view: <Message, Item extends string>(config: Readonly<{
|
|
|
202
203
|
}>;
|
|
203
204
|
}>) => Html;
|
|
204
205
|
/** Creates a memoized single-select combobox view. Static config is captured in a closure;
|
|
205
|
-
* only `model` and `
|
|
206
|
-
export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "
|
|
206
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
207
|
+
export declare const lazy: <Message, Item extends string>(staticConfig: Omit<ViewConfig<Message, Item>, "model" | "toParentMessage" | "onSelectedItem">) => ((model: Model, toParentMessage: BaseViewConfig<Message, Item, Model>["toParentMessage"]) => Html);
|
|
207
208
|
//# sourceMappingURL=single.d.ts.map
|
|
@@ -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,EAAE,KAAK,IAAI,EAAc,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,uJAAuJ;AACvJ,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;GAOjB,CAAA;AAED,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDjB,CAAA;AAIF,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
|
|
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,EAAE,KAAK,IAAI,EAAc,MAAM,YAAY,CAAA;AAElD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,uJAAuJ;AACvJ,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;GAOjB,CAAA;AAED,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDjB,CAAA;AAIF,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"}
|
|
@@ -62,12 +62,12 @@ export const view = makeView({
|
|
|
62
62
|
ariaMultiSelectable: false,
|
|
63
63
|
});
|
|
64
64
|
/** Creates a memoized single-select combobox view. Static config is captured in a closure;
|
|
65
|
-
* only `model` and `
|
|
65
|
+
* only `model` and `toParentMessage` are compared per render via `createLazy`. */
|
|
66
66
|
export const lazy = (staticConfig) => {
|
|
67
67
|
const lazyView = createLazy();
|
|
68
|
-
return (model,
|
|
68
|
+
return (model, toParentMessage) => lazyView((currentModel, currentToMessage) => view({
|
|
69
69
|
...staticConfig,
|
|
70
70
|
model: currentModel,
|
|
71
|
-
|
|
72
|
-
}), [model,
|
|
71
|
+
toParentMessage: currentToMessage,
|
|
72
|
+
}), [model, toParentMessage]);
|
|
73
73
|
};
|