@foldkit/ui 0.162.0 → 0.163.0-canary.085c0174a32b
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/anchor/anchor.d.ts +33 -7
- package/dist/anchor/anchor.d.ts.map +1 -1
- package/dist/anchor/anchor.js +102 -15
- package/dist/anchor/public.d.ts +1 -1
- package/dist/anchor/public.d.ts.map +1 -1
- package/dist/anchor/public.js +1 -1
- package/dist/animation/index.d.ts +3 -0
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/schema.d.ts +13 -4
- package/dist/animation/schema.d.ts.map +1 -1
- package/dist/animation/schema.js +8 -4
- package/dist/animation/update.d.ts +15 -5
- package/dist/animation/update.d.ts.map +1 -1
- package/dist/animation/update.js +59 -27
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +27 -19
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/combobox/multi.d.ts +5 -0
- package/dist/combobox/multi.d.ts.map +1 -1
- package/dist/combobox/multi.js +2 -2
- package/dist/combobox/shared.d.ts +19 -7
- package/dist/combobox/shared.d.ts.map +1 -1
- package/dist/combobox/shared.js +28 -28
- package/dist/combobox/single.d.ts +5 -0
- package/dist/combobox/single.d.ts.map +1 -1
- package/dist/combobox/single.js +4 -4
- package/dist/datePicker/index.d.ts +13 -2
- package/dist/datePicker/index.d.ts.map +1 -1
- package/dist/datePicker/index.js +10 -10
- package/dist/dialog/index.d.ts +13 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +28 -14
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/disclosure/index.js +1 -1
- package/dist/dragAndDrop/index.js +14 -14
- package/dist/fileDrop/index.d.ts.map +1 -1
- package/dist/fileDrop/index.js +7 -5
- package/dist/hoverIntent/hoverIntent.d.ts.map +1 -1
- package/dist/hoverIntent/hoverIntent.js +16 -16
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/internal/accessibleName.d.ts +9 -0
- package/dist/internal/accessibleName.d.ts.map +1 -0
- package/dist/internal/accessibleName.js +12 -0
- package/dist/internal/range.d.ts +7 -0
- package/dist/internal/range.d.ts.map +1 -0
- package/dist/internal/range.js +12 -0
- package/dist/listbox/multi.d.ts +5 -0
- package/dist/listbox/multi.d.ts.map +1 -1
- package/dist/listbox/shared.d.ts +15 -4
- package/dist/listbox/shared.d.ts.map +1 -1
- package/dist/listbox/shared.js +32 -29
- package/dist/listbox/single.d.ts +5 -0
- package/dist/listbox/single.d.ts.map +1 -1
- package/dist/menu/index.d.ts +16 -4
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +35 -28
- package/dist/meter/index.d.ts +26 -0
- package/dist/meter/index.d.ts.map +1 -0
- package/dist/meter/index.js +67 -0
- package/dist/meter/public.d.ts +3 -0
- package/dist/meter/public.d.ts.map +1 -0
- package/dist/meter/public.js +1 -0
- package/dist/popover/index.d.ts +20 -4
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +20 -18
- package/dist/progress/index.d.ts +24 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +85 -0
- package/dist/progress/public.d.ts +3 -0
- package/dist/progress/public.d.ts.map +1 -0
- package/dist/progress/public.js +1 -0
- package/dist/radioGroup/index.d.ts.map +1 -1
- package/dist/radioGroup/index.js +5 -3
- package/dist/slider/index.d.ts +61 -28
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +163 -87
- package/dist/slider/public.d.ts +1 -1
- package/dist/slider/public.d.ts.map +1 -1
- package/dist/slider/public.js +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +5 -3
- package/dist/test/apps/disabledButton.d.ts +12 -4
- package/dist/test/apps/disabledButton.d.ts.map +1 -1
- package/dist/test/apps/disabledButton.js +3 -3
- package/dist/toast/index.d.ts +869 -45
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +77 -17
- package/dist/toast/public.d.ts +2 -2
- package/dist/toast/public.d.ts.map +1 -1
- package/dist/toast/public.js +1 -1
- package/dist/toast/schema.d.ts +160 -6
- package/dist/toast/schema.d.ts.map +1 -1
- package/dist/toast/schema.js +69 -2
- package/dist/toast/swipeTarget.d.ts +5 -0
- package/dist/toast/swipeTarget.d.ts.map +1 -0
- package/dist/toast/swipeTarget.js +18 -0
- package/dist/toast/test.d.ts +7 -1
- package/dist/toast/test.d.ts.map +1 -1
- package/dist/toast/test.js +37 -3
- package/dist/toast/update.d.ts +768 -7
- package/dist/toast/update.d.ts.map +1 -1
- package/dist/toast/update.js +283 -68
- package/dist/tooltip/tooltip.d.ts +7 -7
- package/dist/tooltip/tooltip.d.ts.map +1 -1
- package/dist/tooltip/tooltip.js +14 -12
- package/dist/virtualList/index.d.ts.map +1 -1
- package/dist/virtualList/index.js +8 -6
- package/package.json +9 -9
package/dist/menu/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare const Model: Schema.Struct<{
|
|
|
20
20
|
readonly id: Schema.String;
|
|
21
21
|
readonly isShowing: Schema.Boolean;
|
|
22
22
|
readonly transitionState: Schema.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
23
|
+
readonly transitionGeneration: Schema.Number;
|
|
23
24
|
}>;
|
|
24
25
|
readonly maybeActiveItemIndex: Schema.Option<Schema.Number>;
|
|
25
26
|
readonly activationTrigger: Schema.Literals<readonly ["Pointer", "Keyboard"]>;
|
|
@@ -84,8 +85,12 @@ export declare const Message: import("foldkit/message").MessageUnion<{
|
|
|
84
85
|
message: import("foldkit/message").MessageUnion<{
|
|
85
86
|
readonly Showed: {};
|
|
86
87
|
readonly Hid: {};
|
|
87
|
-
readonly CompletedWaitForPaint: {
|
|
88
|
-
|
|
88
|
+
readonly CompletedWaitForPaint: {
|
|
89
|
+
generation: Schema.Number;
|
|
90
|
+
};
|
|
91
|
+
readonly EndedAnimation: {
|
|
92
|
+
generation: Schema.Number;
|
|
93
|
+
};
|
|
89
94
|
}>;
|
|
90
95
|
};
|
|
91
96
|
readonly PressedPointerOnButton: {
|
|
@@ -203,12 +208,15 @@ export declare const DelayClearSearch: Command.CommandDefinitionWithArgs<"DelayC
|
|
|
203
208
|
/** Detects whether the menu button moved or the leave animation ended. Whichever comes first; both outcomes signal the Animation submodel that leave is complete. */
|
|
204
209
|
export declare const DetectMovementOrAnimationEnd: Command.CommandDefinitionWithArgs<"DetectMovementOrAnimationEnd", {
|
|
205
210
|
id: Schema.String;
|
|
211
|
+
generation: Schema.Number;
|
|
206
212
|
}, Effect.Effect<{
|
|
207
213
|
readonly _tag: "GotAnimationMessage";
|
|
208
214
|
readonly message: {
|
|
209
215
|
readonly _tag: "CompletedWaitForPaint";
|
|
216
|
+
readonly generation: number;
|
|
210
217
|
} | {
|
|
211
218
|
readonly _tag: "EndedAnimation";
|
|
219
|
+
readonly generation: number;
|
|
212
220
|
} | {
|
|
213
221
|
readonly _tag: "Hid";
|
|
214
222
|
} | {
|
|
@@ -227,6 +235,7 @@ export declare const update: (model: Model, message: Message) => Readonly<{
|
|
|
227
235
|
readonly id: string;
|
|
228
236
|
readonly isShowing: boolean;
|
|
229
237
|
readonly transitionState: "EnterAnimating" | "EnterStart" | "Idle" | "LeaveAnimating" | "LeaveStart";
|
|
238
|
+
readonly transitionGeneration: number;
|
|
230
239
|
};
|
|
231
240
|
readonly maybeActiveItemIndex: Option.Option<number>;
|
|
232
241
|
readonly activationTrigger: "Keyboard" | "Pointer";
|
|
@@ -284,8 +293,10 @@ export declare const update: (model: Model, message: Message) => Readonly<{
|
|
|
284
293
|
readonly _tag: "GotAnimationMessage";
|
|
285
294
|
readonly message: {
|
|
286
295
|
readonly _tag: "CompletedWaitForPaint";
|
|
296
|
+
readonly generation: number;
|
|
287
297
|
} | {
|
|
288
298
|
readonly _tag: "EndedAnimation";
|
|
299
|
+
readonly generation: number;
|
|
289
300
|
} | {
|
|
290
301
|
readonly _tag: "Hid";
|
|
291
302
|
} | {
|
|
@@ -331,8 +342,9 @@ export declare const update: (model: Model, message: Message) => Readonly<{
|
|
|
331
342
|
}>;
|
|
332
343
|
/** The anchor-positioning Mount this Menu renders on its panel. The panel is
|
|
333
344
|
* always anchored to the button via Floating UI and portaled to the document
|
|
334
|
-
* body
|
|
335
|
-
*
|
|
345
|
+
* body, or into the enclosing `<dialog>` when there is one (opt out of
|
|
346
|
+
* portaling with `anchor.portal: false`), so it escapes ancestor stacking
|
|
347
|
+
* contexts and overflow clipping.
|
|
336
348
|
*
|
|
337
349
|
* It also carries the open-focus for the anchored panel. An anchored panel
|
|
338
350
|
* renders `visibility: hidden` until Floating UI resolves its first position,
|
package/dist/menu/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAGN,MAAM,EAEN,MAAM,EAGP,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAExD,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAE,KAAK,IAAI,IAAI,YAAY,EAAc,MAAM,kBAAkB,CAAA;AACxE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"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"}
|
package/dist/menu/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import * as Command from 'foldkit/command';
|
|
|
4
4
|
import * as Dom from 'foldkit/dom';
|
|
5
5
|
import { defineMessageUnion } from 'foldkit/message';
|
|
6
6
|
import * as Mount from 'foldkit/mount';
|
|
7
|
-
import {
|
|
7
|
+
import { modifyFields } from 'foldkit/struct';
|
|
8
8
|
import { defineView } from 'foldkit/submodel';
|
|
9
9
|
import * as Update from 'foldkit/update';
|
|
10
|
-
import { AnchorConfig, anchorSetup,
|
|
10
|
+
import { AnchorConfig, anchorSetup, portalBackdrop } from '../anchor/index.js';
|
|
11
11
|
// NOTE: Animation imports are split across schema + update to avoid a circular
|
|
12
12
|
// dependency: animation → html → runtime → devtools → menu → animation.
|
|
13
13
|
// The barrel (../animation) imports from html, which starts the cycle.
|
|
@@ -114,7 +114,7 @@ export const init = (config) => (__foldkitBrandViewResult(({
|
|
|
114
114
|
maybePointerOrigin: Option.none(),
|
|
115
115
|
}), "@foldkit/ui/menu/index.js#init"));
|
|
116
116
|
// UPDATE
|
|
117
|
-
const closedModel = (model) => __foldkitBrandViewResult((
|
|
117
|
+
const closedModel = (model) => __foldkitBrandViewResult((modifyFields(model, {
|
|
118
118
|
isOpen: () => __foldkitBrandViewResult((false), "@foldkit/ui/menu/index.js#isOpen"),
|
|
119
119
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/menu/index.js#maybeActiveItemIndex"),
|
|
120
120
|
searchQuery: () => __foldkitBrandViewResult((''), "@foldkit/ui/menu/index.js#searchQuery"),
|
|
@@ -185,38 +185,38 @@ export const DelayClearSearch = Command.define('DelayClearSearch', {
|
|
|
185
185
|
});
|
|
186
186
|
/** Detects whether the menu button moved or the leave animation ended. Whichever comes first; both outcomes signal the Animation submodel that leave is complete. */
|
|
187
187
|
export const DetectMovementOrAnimationEnd = Command.define('DetectMovementOrAnimationEnd', {
|
|
188
|
-
args: { id: Schema.String },
|
|
188
|
+
args: { id: Schema.String, generation: Schema.Number },
|
|
189
189
|
messages: [Message.GotAnimationMessage],
|
|
190
|
-
execute: ({ id }) => __foldkitBrandViewResult((Effect.raceFirst(Dom.detectElementMovement(buttonSelector(id)).pipe(Effect.as(Message.GotAnimationMessage({
|
|
191
|
-
message: Animation.Message.EndedAnimation(),
|
|
190
|
+
execute: ({ id, generation }) => __foldkitBrandViewResult((Effect.raceFirst(Dom.detectElementMovement(buttonSelector(id)).pipe(Effect.as(Message.GotAnimationMessage({
|
|
191
|
+
message: Animation.Message.EndedAnimation({ generation }),
|
|
192
192
|
}))), Dom.waitForAnimationSettled(itemsSelector(id)).pipe(Effect.as(Message.GotAnimationMessage({
|
|
193
|
-
message: Animation.Message.EndedAnimation(),
|
|
193
|
+
message: Animation.Message.EndedAnimation({ generation }),
|
|
194
194
|
}))))), "@foldkit/ui/menu/index.js#execute~8"),
|
|
195
195
|
});
|
|
196
196
|
const foldAnimationOutMessage = Animation.OutMessage.match({
|
|
197
|
-
StartedLeaveAnimating: () => __foldkitBrandViewResult((model => (__foldkitBrandViewResult(({
|
|
197
|
+
StartedLeaveAnimating: ({ generation }) => __foldkitBrandViewResult((model => (__foldkitBrandViewResult(({
|
|
198
198
|
model,
|
|
199
|
-
commands: [DetectMovementOrAnimationEnd({ id: model.id })],
|
|
199
|
+
commands: [DetectMovementOrAnimationEnd({ id: model.id, generation })],
|
|
200
200
|
}), "@foldkit/ui/menu/index.js#anonymous"))), "@foldkit/ui/menu/index.js#StartedLeaveAnimating"),
|
|
201
201
|
TransitionedOut: () => __foldkitBrandViewResult((model => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#anonymous~2"))), "@foldkit/ui/menu/index.js#TransitionedOut"),
|
|
202
202
|
});
|
|
203
203
|
const foldAnimation = Update.foldChild({
|
|
204
204
|
update: animationUpdate,
|
|
205
205
|
read: (model) => __foldkitBrandViewResult((Option.some(model.animation)), "@foldkit/ui/menu/index.js#read"),
|
|
206
|
-
write: (model, nextAnimation) => __foldkitBrandViewResult((
|
|
206
|
+
write: (model, nextAnimation) => __foldkitBrandViewResult((modifyFields(model, { animation: () => __foldkitBrandViewResult((nextAnimation), "@foldkit/ui/menu/index.js#animation") })), "@foldkit/ui/menu/index.js#write"),
|
|
207
207
|
toParentMessage: message => __foldkitBrandViewResult((Message.GotAnimationMessage({ message })), "@foldkit/ui/menu/index.js#toParentMessage"),
|
|
208
208
|
foldOutMessage: foldAnimationOutMessage,
|
|
209
209
|
});
|
|
210
210
|
const foldAnimationShow = Update.foldChildStep({
|
|
211
211
|
update: animationShow,
|
|
212
212
|
read: (model) => __foldkitBrandViewResult((Option.some(model.animation)), "@foldkit/ui/menu/index.js#read~2"),
|
|
213
|
-
write: (model, nextAnimation) => __foldkitBrandViewResult((
|
|
213
|
+
write: (model, nextAnimation) => __foldkitBrandViewResult((modifyFields(model, { animation: () => __foldkitBrandViewResult((nextAnimation), "@foldkit/ui/menu/index.js#animation~2") })), "@foldkit/ui/menu/index.js#write~2"),
|
|
214
214
|
toParentMessage: message => __foldkitBrandViewResult((Message.GotAnimationMessage({ message })), "@foldkit/ui/menu/index.js#toParentMessage~2"),
|
|
215
215
|
});
|
|
216
216
|
const foldAnimationHide = Update.foldChildStep({
|
|
217
217
|
update: animationHide,
|
|
218
218
|
read: (model) => __foldkitBrandViewResult((Option.some(model.animation)), "@foldkit/ui/menu/index.js#read~3"),
|
|
219
|
-
write: (model, nextAnimation) => __foldkitBrandViewResult((
|
|
219
|
+
write: (model, nextAnimation) => __foldkitBrandViewResult((modifyFields(model, { animation: () => __foldkitBrandViewResult((nextAnimation), "@foldkit/ui/menu/index.js#animation~3") })), "@foldkit/ui/menu/index.js#write~3"),
|
|
220
220
|
toParentMessage: message => __foldkitBrandViewResult((Message.GotAnimationMessage({ message })), "@foldkit/ui/menu/index.js#toParentMessage~3"),
|
|
221
221
|
});
|
|
222
222
|
/** Processes a Menu Message and returns the next Model, optional Commands, and
|
|
@@ -241,12 +241,12 @@ export const update = (model, message) => {
|
|
|
241
241
|
stepModel => (__foldkitBrandViewResult(({ model: stepModel, commands: openCommands }), "@foldkit/ui/menu/index.js#anonymous~3")),
|
|
242
242
|
foldAnimationShow,
|
|
243
243
|
stepModel => (__foldkitBrandViewResult(({
|
|
244
|
-
model:
|
|
244
|
+
model: modifyFields(stepModel, { isOpen: () => __foldkitBrandViewResult((true), "@foldkit/ui/menu/index.js#isOpen~2") }),
|
|
245
245
|
}), "@foldkit/ui/menu/index.js#anonymous~4")),
|
|
246
246
|
])), "@foldkit/ui/menu/index.js#openMenu");
|
|
247
247
|
}
|
|
248
248
|
return __foldkitBrandViewResult(({
|
|
249
|
-
model:
|
|
249
|
+
model: modifyFields(baseModel, { isOpen: () => __foldkitBrandViewResult((true), "@foldkit/ui/menu/index.js#isOpen~3") }),
|
|
250
250
|
commands: openCommands,
|
|
251
251
|
}), "@foldkit/ui/menu/index.js#openMenu");
|
|
252
252
|
};
|
|
@@ -275,7 +275,7 @@ export const update = (model, message) => {
|
|
|
275
275
|
SuppressedSpaceScroll: () => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#SuppressedSpaceScroll")),
|
|
276
276
|
CompletedAnchorMenu: () => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#CompletedAnchorMenu")),
|
|
277
277
|
CompletedPortalMenuBackdrop: () => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#CompletedPortalMenuBackdrop")),
|
|
278
|
-
Opened: ({ maybeActiveItemIndex }) => __foldkitBrandViewResult((openMenu(
|
|
278
|
+
Opened: ({ maybeActiveItemIndex }) => __foldkitBrandViewResult((openMenu(modifyFields(model, {
|
|
279
279
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((maybeActiveItemIndex), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~2"),
|
|
280
280
|
activationTrigger: () => __foldkitBrandViewResult((Option.match(maybeActiveItemIndex, {
|
|
281
281
|
onNone: () => __foldkitBrandViewResult(('Pointer'), "@foldkit/ui/menu/index.js#onNone"),
|
|
@@ -293,7 +293,7 @@ export const update = (model, message) => {
|
|
|
293
293
|
return __foldkitBrandViewResult((closeMenu(model, closeWithoutFocusCommands)), "@foldkit/ui/menu/index.js#BlurredItems");
|
|
294
294
|
},
|
|
295
295
|
ActivatedItem: ({ index, activationTrigger }) => (__foldkitBrandViewResult(({
|
|
296
|
-
model:
|
|
296
|
+
model: modifyFields(model, {
|
|
297
297
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.some(index)), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~3"),
|
|
298
298
|
activationTrigger: () => __foldkitBrandViewResult((activationTrigger), "@foldkit/ui/menu/index.js#activationTrigger~2"),
|
|
299
299
|
}),
|
|
@@ -307,7 +307,7 @@ export const update = (model, message) => {
|
|
|
307
307
|
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#MovedPointerOverItem");
|
|
308
308
|
}
|
|
309
309
|
return __foldkitBrandViewResult(({
|
|
310
|
-
model:
|
|
310
|
+
model: modifyFields(model, {
|
|
311
311
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.some(index)), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~4"),
|
|
312
312
|
activationTrigger: () => __foldkitBrandViewResult(('Pointer'), "@foldkit/ui/menu/index.js#activationTrigger~3"),
|
|
313
313
|
maybeLastPointerPosition: () => __foldkitBrandViewResult((Option.some({ screenX, screenY })), "@foldkit/ui/menu/index.js#maybeLastPointerPosition~3"),
|
|
@@ -315,7 +315,11 @@ export const update = (model, message) => {
|
|
|
315
315
|
}), "@foldkit/ui/menu/index.js#MovedPointerOverItem");
|
|
316
316
|
},
|
|
317
317
|
DeactivatedItem: () => __foldkitBrandViewResult((model.activationTrigger === 'Pointer'
|
|
318
|
-
? {
|
|
318
|
+
? {
|
|
319
|
+
model: modifyFields(model, {
|
|
320
|
+
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~5"),
|
|
321
|
+
}),
|
|
322
|
+
}
|
|
319
323
|
: { model }), "@foldkit/ui/menu/index.js#DeactivatedItem"),
|
|
320
324
|
SelectedItem: ({ index, item }) => __foldkitBrandViewResult((pipe(closeMenu(model, closeWithFocusCommands), Update.withOutMessage(OutMessage.Selected({ value: item, index })))), "@foldkit/ui/menu/index.js#SelectedItem"),
|
|
321
325
|
RequestedItemClick: ({ index }) => (__foldkitBrandViewResult(({
|
|
@@ -326,7 +330,7 @@ export const update = (model, message) => {
|
|
|
326
330
|
const nextSearchQuery = model.searchQuery + key;
|
|
327
331
|
const nextSearchVersion = model.searchVersion + 1;
|
|
328
332
|
return __foldkitBrandViewResult(({
|
|
329
|
-
model:
|
|
333
|
+
model: modifyFields(model, {
|
|
330
334
|
searchQuery: () => __foldkitBrandViewResult((nextSearchQuery), "@foldkit/ui/menu/index.js#searchQuery~3"),
|
|
331
335
|
searchVersion: () => __foldkitBrandViewResult((nextSearchVersion), "@foldkit/ui/menu/index.js#searchVersion~3"),
|
|
332
336
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.orElse(maybeTargetIndex, () => __foldkitBrandViewResult((model.maybeActiveItemIndex), "@foldkit/ui/menu/index.js#anonymous~7"))), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~6"),
|
|
@@ -338,11 +342,11 @@ export const update = (model, message) => {
|
|
|
338
342
|
if (version !== model.searchVersion) {
|
|
339
343
|
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/menu/index.js#CompletedDelayClearSearch");
|
|
340
344
|
}
|
|
341
|
-
return __foldkitBrandViewResult(({ model:
|
|
345
|
+
return __foldkitBrandViewResult(({ model: modifyFields(model, { searchQuery: () => __foldkitBrandViewResult((''), "@foldkit/ui/menu/index.js#searchQuery~4") }) }), "@foldkit/ui/menu/index.js#CompletedDelayClearSearch");
|
|
342
346
|
},
|
|
343
347
|
GotAnimationMessage: ({ message: animationMessage }) => __foldkitBrandViewResult((foldAnimation(model, animationMessage)), "@foldkit/ui/menu/index.js#GotAnimationMessage"),
|
|
344
348
|
PressedPointerOnButton: ({ pointerType, button, screenX, screenY, timeStamp, }) => {
|
|
345
|
-
const withPointerType =
|
|
349
|
+
const withPointerType = modifyFields(model, {
|
|
346
350
|
maybeLastButtonPointerType: () => __foldkitBrandViewResult((Option.some(pointerType)), "@foldkit/ui/menu/index.js#maybeLastButtonPointerType~2"),
|
|
347
351
|
});
|
|
348
352
|
if (pointerType !== 'mouse' || button !== LEFT_MOUSE_BUTTON) {
|
|
@@ -352,13 +356,13 @@ export const update = (model, message) => {
|
|
|
352
356
|
return __foldkitBrandViewResult((Update.combine(withPointerType, [
|
|
353
357
|
stepModel => __foldkitBrandViewResult((closeMenu(stepModel, closeWithFocusCommands)), "@foldkit/ui/menu/index.js#anonymous~8"),
|
|
354
358
|
stepModel => (__foldkitBrandViewResult(({
|
|
355
|
-
model:
|
|
359
|
+
model: modifyFields(stepModel, {
|
|
356
360
|
maybeLastButtonPointerType: () => __foldkitBrandViewResult((Option.some(pointerType)), "@foldkit/ui/menu/index.js#maybeLastButtonPointerType~3"),
|
|
357
361
|
}),
|
|
358
362
|
}), "@foldkit/ui/menu/index.js#anonymous~9")),
|
|
359
363
|
])), "@foldkit/ui/menu/index.js#PressedPointerOnButton");
|
|
360
364
|
}
|
|
361
|
-
return __foldkitBrandViewResult((openMenu(
|
|
365
|
+
return __foldkitBrandViewResult((openMenu(modifyFields(withPointerType, {
|
|
362
366
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/menu/index.js#maybeActiveItemIndex~7"),
|
|
363
367
|
activationTrigger: () => __foldkitBrandViewResult(('Pointer'), "@foldkit/ui/menu/index.js#activationTrigger~4"),
|
|
364
368
|
searchQuery: () => __foldkitBrandViewResult((''), "@foldkit/ui/menu/index.js#searchQuery~5"),
|
|
@@ -392,14 +396,17 @@ export const update = (model, message) => {
|
|
|
392
396
|
}), "@foldkit/ui/menu/index.js#ReleasedPointerOnItems");
|
|
393
397
|
},
|
|
394
398
|
IgnoredMouseClick: () => (__foldkitBrandViewResult(({
|
|
395
|
-
model:
|
|
399
|
+
model: modifyFields(model, {
|
|
400
|
+
maybeLastButtonPointerType: () => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/menu/index.js#maybeLastButtonPointerType~4"),
|
|
401
|
+
}),
|
|
396
402
|
}), "@foldkit/ui/menu/index.js#IgnoredMouseClick")),
|
|
397
403
|
})), "@foldkit/ui/menu/index.js#update");
|
|
398
404
|
};
|
|
399
405
|
/** The anchor-positioning Mount this Menu renders on its panel. The panel is
|
|
400
406
|
* always anchored to the button via Floating UI and portaled to the document
|
|
401
|
-
* body
|
|
402
|
-
*
|
|
407
|
+
* body, or into the enclosing `<dialog>` when there is one (opt out of
|
|
408
|
+
* portaling with `anchor.portal: false`), so it escapes ancestor stacking
|
|
409
|
+
* contexts and overflow clipping.
|
|
403
410
|
*
|
|
404
411
|
* It also carries the open-focus for the anchored panel. An anchored panel
|
|
405
412
|
* renders `visibility: hidden` until Floating UI resolves its first position,
|
|
@@ -428,7 +435,7 @@ export const AnchorMenu = Mount.define('AnchorMenu', {
|
|
|
428
435
|
export const PortalMenuBackdrop = Mount.define('PortalMenuBackdrop', {
|
|
429
436
|
messages: [Message.CompletedPortalMenuBackdrop],
|
|
430
437
|
execute: ({ element }) => __foldkitBrandViewResult((Effect.gen(function* () {
|
|
431
|
-
yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((
|
|
438
|
+
yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((portalBackdrop(element)), "@foldkit/ui/menu/index.js#anonymous~16")), cleanup => __foldkitBrandViewResult((Effect.sync(cleanup)), "@foldkit/ui/menu/index.js#anonymous~17"));
|
|
432
439
|
return __foldkitBrandViewResult((Message.CompletedPortalMenuBackdrop()), "@foldkit/ui/menu/index.js#anonymous~15");
|
|
433
440
|
})), "@foldkit/ui/menu/index.js#execute~10"),
|
|
434
441
|
});
|
|
@@ -565,7 +572,7 @@ const menuViewImpl = defineView((model, viewInputs, h) => {
|
|
|
565
572
|
h.Role('menu'),
|
|
566
573
|
h.AriaLabelledBy(`${id}-button`),
|
|
567
574
|
...maybeActiveDescendant,
|
|
568
|
-
h.Tabindex(
|
|
575
|
+
h.Tabindex(-1),
|
|
569
576
|
...anchorAttributes,
|
|
570
577
|
...animationAttributes,
|
|
571
578
|
...(isLeaving
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Attribute, Html, HtmlBuilder } from 'foldkit/html';
|
|
2
|
+
/** Attribute groups provided to a Meter view. */
|
|
3
|
+
export type MeterAttributes<Message> = Readonly<{
|
|
4
|
+
meter: ReadonlyArray<Attribute<Message>>;
|
|
5
|
+
label: ReadonlyArray<Attribute<Message>>;
|
|
6
|
+
fill: ReadonlyArray<Attribute<Message>>;
|
|
7
|
+
}>;
|
|
8
|
+
/** Configuration for rendering a Meter with {@link view}. */
|
|
9
|
+
export type ViewConfig<Message> = Readonly<{
|
|
10
|
+
id: string;
|
|
11
|
+
value: number;
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
low?: number;
|
|
15
|
+
high?: number;
|
|
16
|
+
optimum?: number;
|
|
17
|
+
valueText?: string | ((value: number, max: number) => string);
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
ariaLabelledBy?: string;
|
|
20
|
+
toView: (attributes: MeterAttributes<Message>) => Html;
|
|
21
|
+
}>;
|
|
22
|
+
/** Returns the label element id, derived from the meter's base id. */
|
|
23
|
+
export declare const labelId: (id: string) => string;
|
|
24
|
+
/** Renders an accessible meter as a stateless controlled view. */
|
|
25
|
+
export declare const view: <Message>(config: ViewConfig<Message>, h: HtmlBuilder<Message>) => Html;
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/meter/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAYhE,iDAAiD;AACjD,MAAM,MAAM,eAAe,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC9C,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CACxC,CAAC,CAAA;AAEF,6DAA6D;AAC7D,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;CACvD,CAAC,CAAA;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,OAAQ,MAAM,KAAG,MAAuB,CAAA;AAE5D,kEAAkE;AAClE,eAAO,MAAM,IAAI,GAAI,OAAO,UAClB,UAAU,CAAC,OAAO,CAAC,KACxB,WAAW,CAAC,OAAO,CAAC,KACtB,IAkEF,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
|
+
import { Predicate } from 'effect';
|
|
3
|
+
import { accessibleNameAttributes } from '../internal/accessibleName.js';
|
|
4
|
+
import { clamp, fractionOfValue, normalizeRangeMax, percentageFromFraction, } from '../internal/range.js';
|
|
5
|
+
/** Returns the label element id, derived from the meter's base id. */
|
|
6
|
+
export const labelId = (id) => __foldkitBrandViewResult((`${id}-label`), "@foldkit/ui/meter/index.js#labelId");
|
|
7
|
+
/** Renders an accessible meter as a stateless controlled view. */
|
|
8
|
+
export const view = (config, h) => {
|
|
9
|
+
const min = config.min ?? 0;
|
|
10
|
+
const max = normalizeRangeMax(min, config.max ?? 100);
|
|
11
|
+
const clampedValue = clamp(config.value, min, max);
|
|
12
|
+
const fraction = fractionOfValue(clampedValue, min, max);
|
|
13
|
+
const accessibleName = accessibleNameAttributes({
|
|
14
|
+
ariaLabel: config.ariaLabel,
|
|
15
|
+
ariaLabelledBy: config.ariaLabelledBy,
|
|
16
|
+
fallbackLabelId: labelId(config.id),
|
|
17
|
+
}, h);
|
|
18
|
+
const resolveValueTextAttributes = () => {
|
|
19
|
+
if (config.valueText === undefined) {
|
|
20
|
+
return __foldkitBrandViewResult(([]), "@foldkit/ui/meter/index.js#resolveValueTextAttributes");
|
|
21
|
+
}
|
|
22
|
+
else if (Predicate.isString(config.valueText)) {
|
|
23
|
+
return __foldkitBrandViewResult(([h.AriaValuetext(config.valueText)]), "@foldkit/ui/meter/index.js#resolveValueTextAttributes");
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return __foldkitBrandViewResult(([h.AriaValuetext(config.valueText(clampedValue, max))]), "@foldkit/ui/meter/index.js#resolveValueTextAttributes");
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const thresholdAttributes = [
|
|
30
|
+
...(config.low !== undefined
|
|
31
|
+
? [h.DataAttribute('low', String(config.low))]
|
|
32
|
+
: []),
|
|
33
|
+
...(config.high !== undefined
|
|
34
|
+
? [h.DataAttribute('high', String(config.high))]
|
|
35
|
+
: []),
|
|
36
|
+
...(config.optimum !== undefined
|
|
37
|
+
? [h.DataAttribute('optimum', String(config.optimum))]
|
|
38
|
+
: []),
|
|
39
|
+
];
|
|
40
|
+
const meterAttributes = [
|
|
41
|
+
h.Id(config.id),
|
|
42
|
+
h.Role('meter'),
|
|
43
|
+
h.AriaValuemin(min),
|
|
44
|
+
h.AriaValuemax(max),
|
|
45
|
+
h.AriaValuenow(clampedValue),
|
|
46
|
+
...resolveValueTextAttributes(),
|
|
47
|
+
...accessibleName,
|
|
48
|
+
h.DataAttribute('value', String(clampedValue)),
|
|
49
|
+
h.DataAttribute('min', String(min)),
|
|
50
|
+
h.DataAttribute('max', String(max)),
|
|
51
|
+
...thresholdAttributes,
|
|
52
|
+
];
|
|
53
|
+
const fillAttributes = [
|
|
54
|
+
h.Style({ width: percentageFromFraction(fraction) }),
|
|
55
|
+
h.DataAttribute('value', String(clampedValue)),
|
|
56
|
+
h.DataAttribute('min', String(min)),
|
|
57
|
+
h.DataAttribute('max', String(max)),
|
|
58
|
+
];
|
|
59
|
+
const visibleLabelAttributes = [
|
|
60
|
+
h.Id(labelId(config.id)),
|
|
61
|
+
];
|
|
62
|
+
return __foldkitBrandViewResult((config.toView({
|
|
63
|
+
meter: meterAttributes,
|
|
64
|
+
label: visibleLabelAttributes,
|
|
65
|
+
fill: fillAttributes,
|
|
66
|
+
})), "@foldkit/ui/meter/index.js#view");
|
|
67
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/meter/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1C,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { view, labelId } from './index.js';
|
package/dist/popover/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare const Model: Schema.Struct<{
|
|
|
15
15
|
readonly id: Schema.String;
|
|
16
16
|
readonly isShowing: Schema.Boolean;
|
|
17
17
|
readonly transitionState: Schema.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
18
|
+
readonly transitionGeneration: Schema.Number;
|
|
18
19
|
}>;
|
|
19
20
|
readonly maybeLastButtonPointerType: Schema.Option<Schema.String>;
|
|
20
21
|
}>;
|
|
@@ -42,8 +43,12 @@ export declare const Message: import("foldkit/message").MessageUnion<{
|
|
|
42
43
|
message: import("foldkit/message").MessageUnion<{
|
|
43
44
|
readonly Showed: {};
|
|
44
45
|
readonly Hid: {};
|
|
45
|
-
readonly CompletedWaitForPaint: {
|
|
46
|
-
|
|
46
|
+
readonly CompletedWaitForPaint: {
|
|
47
|
+
generation: Schema.Number;
|
|
48
|
+
};
|
|
49
|
+
readonly EndedAnimation: {
|
|
50
|
+
generation: Schema.Number;
|
|
51
|
+
};
|
|
47
52
|
}>;
|
|
48
53
|
};
|
|
49
54
|
}>;
|
|
@@ -119,12 +124,15 @@ export declare const FocusButton: Command.CommandDefinitionWithArgs<"FocusButton
|
|
|
119
124
|
/** Detects whether the popover button moved or the leave animation ended. Whichever comes first; both outcomes signal the Animation submodel that leave is complete. */
|
|
120
125
|
export declare const DetectMovementOrAnimationEnd: Command.CommandDefinitionWithArgs<"DetectMovementOrAnimationEnd", {
|
|
121
126
|
id: Schema.String;
|
|
127
|
+
generation: Schema.Number;
|
|
122
128
|
}, Effect.Effect<{
|
|
123
129
|
readonly _tag: "GotAnimationMessage";
|
|
124
130
|
readonly message: {
|
|
125
131
|
readonly _tag: "CompletedWaitForPaint";
|
|
132
|
+
readonly generation: number;
|
|
126
133
|
} | {
|
|
127
134
|
readonly _tag: "EndedAnimation";
|
|
135
|
+
readonly generation: number;
|
|
128
136
|
} | {
|
|
129
137
|
readonly _tag: "Hid";
|
|
130
138
|
} | {
|
|
@@ -144,6 +152,7 @@ export declare const update: (model: Model, message: Message) => Readonly<{
|
|
|
144
152
|
readonly id: string;
|
|
145
153
|
readonly isShowing: boolean;
|
|
146
154
|
readonly transitionState: "EnterAnimating" | "EnterStart" | "Idle" | "LeaveAnimating" | "LeaveStart";
|
|
155
|
+
readonly transitionGeneration: number;
|
|
147
156
|
};
|
|
148
157
|
readonly maybeLastButtonPointerType: Option.Option<string>;
|
|
149
158
|
};
|
|
@@ -181,8 +190,10 @@ export declare const update: (model: Model, message: Message) => Readonly<{
|
|
|
181
190
|
readonly _tag: "GotAnimationMessage";
|
|
182
191
|
readonly message: {
|
|
183
192
|
readonly _tag: "CompletedWaitForPaint";
|
|
193
|
+
readonly generation: number;
|
|
184
194
|
} | {
|
|
185
195
|
readonly _tag: "EndedAnimation";
|
|
196
|
+
readonly generation: number;
|
|
186
197
|
} | {
|
|
187
198
|
readonly _tag: "Hid";
|
|
188
199
|
} | {
|
|
@@ -239,8 +250,10 @@ export declare const close: (model: Model) => UpdateReturn;
|
|
|
239
250
|
* anchor Mount that positions the panel via Floating UI, ARIA
|
|
240
251
|
* linkage to the button, and panel keydown/blur handlers.
|
|
241
252
|
* - `backdrop`: attribute bundle for the modal backdrop. Includes the
|
|
242
|
-
* portal Mount that moves the backdrop to document.body.
|
|
243
|
-
* backdrop
|
|
253
|
+
* portal Mount that moves the backdrop to document.body. Inside a
|
|
254
|
+
* `<dialog>`, it moves the backdrop to directly before the element it
|
|
255
|
+
* is rendered in, so render it inside the positioned wrapper that holds
|
|
256
|
+
* the button. The backdrop's OnClick closes the popover.
|
|
244
257
|
* - `arrow`: attribute bundle for an arrow element inside the panel.
|
|
245
258
|
* Carries the id the anchor Mount resolves and hides the element from
|
|
246
259
|
* assistive technology. Spread it onto your own element and place it
|
|
@@ -277,6 +290,7 @@ export declare const view: import("foldkit/submodel").View<{
|
|
|
277
290
|
readonly id: string;
|
|
278
291
|
readonly isShowing: boolean;
|
|
279
292
|
readonly transitionState: "EnterAnimating" | "EnterStart" | "Idle" | "LeaveAnimating" | "LeaveStart";
|
|
293
|
+
readonly transitionGeneration: number;
|
|
280
294
|
};
|
|
281
295
|
readonly maybeLastButtonPointerType: Option.Option<string>;
|
|
282
296
|
}, {
|
|
@@ -313,8 +327,10 @@ export declare const view: import("foldkit/submodel").View<{
|
|
|
313
327
|
readonly _tag: "GotAnimationMessage";
|
|
314
328
|
readonly message: {
|
|
315
329
|
readonly _tag: "CompletedWaitForPaint";
|
|
330
|
+
readonly generation: number;
|
|
316
331
|
} | {
|
|
317
332
|
readonly _tag: "EndedAnimation";
|
|
333
|
+
readonly generation: number;
|
|
318
334
|
} | {
|
|
319
335
|
readonly _tag: "Hid";
|
|
320
336
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAGN,MAAM,EAEN,MAAM,EAEP,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,IAAI,EAAmB,MAAM,cAAc,CAAA;AAE9E,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA;AAGtC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/popover/index.ts"],"names":[],"mappings":"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"}
|