@foldkit/ui 0.139.0 → 0.140.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checkbox/index.d.ts +9 -3
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +3 -2
- package/dist/combobox/shared.d.ts +7 -6
- package/dist/combobox/shared.d.ts.map +1 -1
- package/dist/combobox/shared.js +27 -19
- package/dist/combobox/single.d.ts.map +1 -1
- package/dist/combobox/single.js +4 -8
- package/dist/dialog/index.d.ts +4 -1
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +4 -1
- package/dist/disclosure/index.d.ts +7 -1
- package/dist/disclosure/index.d.ts.map +1 -1
- package/dist/disclosure/index.js +1 -0
- package/dist/fieldset/index.d.ts +2 -2
- package/dist/fieldset/index.d.ts.map +1 -1
- package/dist/fieldset/index.js +2 -2
- package/dist/input/index.d.ts +2 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +11 -4
- package/dist/radioGroup/index.d.ts +7 -1
- package/dist/radioGroup/index.d.ts.map +1 -1
- package/dist/radioGroup/index.js +1 -0
- package/dist/select/index.d.ts +1 -1
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +2 -2
- package/dist/switch/index.d.ts +17 -2
- package/dist/switch/index.d.ts.map +1 -1
- package/dist/switch/index.js +15 -10
- package/dist/switch/public.d.ts +1 -1
- package/dist/switch/public.d.ts.map +1 -1
- package/dist/switch/public.js +1 -1
- package/dist/textarea/index.d.ts +2 -1
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +11 -4
- package/package.json +6 -6
package/dist/checkbox/index.d.ts
CHANGED
|
@@ -12,7 +12,13 @@ import type { Attribute, Html, HtmlBuilder } from 'foldkit/html';
|
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
14
14
|
* The `checkbox` and `label` bundles carry the click and Space handlers that
|
|
15
|
-
* dispatch the configured `onToggle` Message.
|
|
15
|
+
* dispatch the configured `onToggle` Message.
|
|
16
|
+
*
|
|
17
|
+
* The `checkbox` bundle sets `type="button"` so that rendering the control as a
|
|
18
|
+
* `button` element inside a `form` element toggles without also submitting the
|
|
19
|
+
* form. Setting it is harmless on the other elements a control might use, such
|
|
20
|
+
* as a `div` or a `span`, because the builder assigns a DOM property rather
|
|
21
|
+
* than an HTML attribute. Spread a later `h.Type` to override it. */
|
|
16
22
|
export type CheckboxAttributes<Message> = Readonly<{
|
|
17
23
|
checkbox: ReadonlyArray<Attribute<Message>>;
|
|
18
24
|
label: ReadonlyArray<Attribute<Message>>;
|
|
@@ -44,9 +50,9 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
44
50
|
name?: string;
|
|
45
51
|
value?: string;
|
|
46
52
|
}>;
|
|
47
|
-
/**
|
|
53
|
+
/** Returns the label element id, derived from the checkbox's base id. */
|
|
48
54
|
export declare const labelId: (id: string) => string;
|
|
49
|
-
/**
|
|
55
|
+
/** Returns the description element id, derived from the checkbox's base id. */
|
|
50
56
|
export declare const descriptionId: (id: string) => string;
|
|
51
57
|
/** Renders an accessible checkbox as a stateless controlled component. The
|
|
52
58
|
* parent owns the checked state (`isChecked`) and receives the new state via
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkbox/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkbox/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE;;;;;;;;;;;;;;;;;;;sEAmBsE;AACtE,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;;;;;;;;;;;;;yEAayE;AACzE,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAA;IACzC,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,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;AAEF,yEAAyE;AACzE,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,KAAG,MAAuB,CAAA;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE;;;;;;;;;;;;;;;;;;;;;UAqBU;AACV,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAyEF,CAAA"}
|
package/dist/checkbox/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { Match as M, Option } from 'effect';
|
|
3
|
-
/**
|
|
3
|
+
/** Returns the label element id, derived from the checkbox's base id. */
|
|
4
4
|
export const labelId = (id) => __foldkitBrandViewResult((`${id}-label`), "@foldkit/ui/checkbox/index.js#labelId");
|
|
5
|
-
/**
|
|
5
|
+
/** Returns the description element id, derived from the checkbox's base id. */
|
|
6
6
|
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/checkbox/index.js#descriptionId");
|
|
7
7
|
/** Renders an accessible checkbox as a stateless controlled component. The
|
|
8
8
|
* parent owns the checked state (`isChecked`) and receives the new state via
|
|
@@ -49,6 +49,7 @@ export const view = (config, h) => {
|
|
|
49
49
|
: [];
|
|
50
50
|
const isInteractive = !isDisabled && !isReadOnly;
|
|
51
51
|
const checkboxAttributes = [
|
|
52
|
+
h.Type('button'),
|
|
52
53
|
h.Role('checkbox'),
|
|
53
54
|
h.AriaChecked(isIndeterminate ? 'mixed' : isChecked),
|
|
54
55
|
h.AriaLabelledBy(labelId(id)),
|
|
@@ -196,11 +196,12 @@ export declare const itemSelector: (id: string, index: number) => string;
|
|
|
196
196
|
export declare const itemId: (id: string, index: number) => string;
|
|
197
197
|
/** Resets only shared base fields to their closed state. Does not touch inputValue. That is variant-specific. */
|
|
198
198
|
export declare const closedBaseModel: <Model extends BaseModel>(model: Model) => Model;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
199
|
+
type SelectedItemContext<Model extends BaseModel> = Readonly<{
|
|
200
|
+
closeWithFocus: (model: Model, maybeOutMessage?: Option.Option<OutMessage>) => readonly [
|
|
201
|
+
Model,
|
|
202
|
+
ReadonlyArray<Command.Command<Message>>,
|
|
203
|
+
Option.Option<OutMessage>
|
|
204
|
+
];
|
|
204
205
|
}>;
|
|
205
206
|
/** Prevents page scrolling while the combobox popup is open in modal mode. */
|
|
206
207
|
export declare const LockScroll: Command.CommandDefinitionNoArgs<"LockScroll", Effect.Effect<{
|
|
@@ -260,7 +261,7 @@ export declare const DetectMovementOrAnimationEnd: Command.CommandDefinitionWith
|
|
|
260
261
|
/** 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. */
|
|
261
262
|
export declare const makeUpdate: <Model extends BaseModel>(handlers: Readonly<{
|
|
262
263
|
handleClose: (model: Model, restingInputValue: string) => readonly [Model, Option.Option<OutMessage>];
|
|
263
|
-
handleSelectedItem: (model: Model, item: string, displayText: string, wasSelected: boolean, context: SelectedItemContext) => readonly [Model, ReadonlyArray<Command.Command<Message>>, Option.Option<OutMessage>];
|
|
264
|
+
handleSelectedItem: (model: Model, item: string, displayText: string, wasSelected: boolean, context: SelectedItemContext<Model>) => readonly [Model, ReadonlyArray<Command.Command<Message>>, Option.Option<OutMessage>];
|
|
264
265
|
handleImmediateActivation: (model: Model, item: string) => readonly [Model, Option.Option<OutMessage>];
|
|
265
266
|
}>) => (model: Model, message: Message) => readonly [Model, readonly Readonly<{
|
|
266
267
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/combobox/shared.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/combobox/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/combobox/shared.js
CHANGED
|
@@ -247,6 +247,27 @@ export const makeUpdate = (handlers) => {
|
|
|
247
247
|
const maybeInertOthers = OptionExt.when(model.isModal, InertOthers({ id: model.id }));
|
|
248
248
|
const maybeRestoreInert = OptionExt.when(model.isModal, RestoreInert({ id: model.id }));
|
|
249
249
|
const focusInput = FocusInput({ id: model.id });
|
|
250
|
+
const closeWithFocusCommands = [
|
|
251
|
+
focusInput,
|
|
252
|
+
...Array.getSomes([maybeUnlockScroll, maybeRestoreInert]),
|
|
253
|
+
];
|
|
254
|
+
const closeWithoutFocusCommands = Array.getSomes([
|
|
255
|
+
maybeUnlockScroll,
|
|
256
|
+
maybeRestoreInert,
|
|
257
|
+
]);
|
|
258
|
+
const closeSelectedItemWithFocus = (nextModel, maybeOutMessage = Option.none()) => {
|
|
259
|
+
const didClose = model.isOpen && !nextModel.isOpen;
|
|
260
|
+
const commands = didClose ? closeWithFocusCommands : [focusInput];
|
|
261
|
+
if (didClose && model.isAnimated) {
|
|
262
|
+
const [transitionedModel, animationCommands] = delegateToAnimation(nextModel, AnimationHid());
|
|
263
|
+
return __foldkitBrandViewResult(([
|
|
264
|
+
transitionedModel,
|
|
265
|
+
[...commands, ...animationCommands],
|
|
266
|
+
maybeOutMessage,
|
|
267
|
+
]), "@foldkit/ui/combobox/shared.js#closeSelectedItemWithFocus");
|
|
268
|
+
}
|
|
269
|
+
return __foldkitBrandViewResult(([nextModel, commands, maybeOutMessage]), "@foldkit/ui/combobox/shared.js#closeSelectedItemWithFocus");
|
|
270
|
+
};
|
|
250
271
|
const openCombobox = (baseModel) => {
|
|
251
272
|
if (model.isAnimated) {
|
|
252
273
|
const [nextModel, animationCommands] = delegateToAnimation(baseModel, AnimationShowed());
|
|
@@ -291,10 +312,10 @@ export const makeUpdate = (handlers) => {
|
|
|
291
312
|
// combobox) cannot rewrite inputValue with an outdated
|
|
292
313
|
// restingInputValue or re-emit ClearedSelection while closed.
|
|
293
314
|
Closed: ({ restingInputValue }) => __foldkitBrandViewResult((model.isOpen
|
|
294
|
-
? closeCombobox(model,
|
|
315
|
+
? closeCombobox(model, closeWithFocusCommands, restingInputValue)
|
|
295
316
|
: [model, [], Option.none()]), "@foldkit/ui/combobox/shared.js#Closed"),
|
|
296
317
|
BlurredInput: ({ restingInputValue }) => __foldkitBrandViewResult((model.isOpen
|
|
297
|
-
? closeCombobox(model,
|
|
318
|
+
? closeCombobox(model, closeWithoutFocusCommands, restingInputValue)
|
|
298
319
|
: [model, [], Option.none()]), "@foldkit/ui/combobox/shared.js#BlurredInput"),
|
|
299
320
|
ActivatedItem: ({ index, activationTrigger, maybeImmediateSelection, }) => {
|
|
300
321
|
const highlightedModel = constrainedEvo(model, {
|
|
@@ -338,22 +359,9 @@ export const makeUpdate = (handlers) => {
|
|
|
338
359
|
Option.none(),
|
|
339
360
|
]
|
|
340
361
|
: [model, [], Option.none()]), "@foldkit/ui/combobox/shared.js#DeactivatedItem"),
|
|
341
|
-
SelectedItem: ({ item, displayText, wasSelected }) => {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
maybeUnlockScroll,
|
|
345
|
-
maybeRestoreInert,
|
|
346
|
-
});
|
|
347
|
-
if (model.isOpen && !nextModel.isOpen && model.isAnimated) {
|
|
348
|
-
const [transitionedModel, animationCommands] = delegateToAnimation(nextModel, AnimationHid());
|
|
349
|
-
return __foldkitBrandViewResult(([
|
|
350
|
-
transitionedModel,
|
|
351
|
-
[...commands, ...animationCommands],
|
|
352
|
-
maybeOutMessage,
|
|
353
|
-
]), "@foldkit/ui/combobox/shared.js#SelectedItem");
|
|
354
|
-
}
|
|
355
|
-
return __foldkitBrandViewResult(([nextModel, commands, maybeOutMessage]), "@foldkit/ui/combobox/shared.js#SelectedItem");
|
|
356
|
-
},
|
|
362
|
+
SelectedItem: ({ item, displayText, wasSelected }) => __foldkitBrandViewResult((handlers.handleSelectedItem(model, item, displayText, wasSelected, {
|
|
363
|
+
closeWithFocus: closeSelectedItemWithFocus,
|
|
364
|
+
})), "@foldkit/ui/combobox/shared.js#SelectedItem"),
|
|
357
365
|
RequestedItemClick: ({ index }) => __foldkitBrandViewResult(([
|
|
358
366
|
model,
|
|
359
367
|
[ClickItem({ id: model.id, index })],
|
|
@@ -380,7 +388,7 @@ export const makeUpdate = (handlers) => {
|
|
|
380
388
|
},
|
|
381
389
|
PressedToggleButton: ({ restingInputValue }) => {
|
|
382
390
|
if (model.isOpen) {
|
|
383
|
-
return __foldkitBrandViewResult((closeCombobox(model,
|
|
391
|
+
return __foldkitBrandViewResult((closeCombobox(model, closeWithFocusCommands, restingInputValue)), "@foldkit/ui/combobox/shared.js#PressedToggleButton");
|
|
384
392
|
}
|
|
385
393
|
const [nextModel, commands] = openCombobox(constrainedEvo(model, {
|
|
386
394
|
maybeActiveItemIndex: () => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/combobox/shared.js#maybeActiveItemIndex~8"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../src/combobox/single.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../src/combobox/single.ts"],"names":[],"mappings":"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"}
|
package/dist/combobox/single.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
|
-
import {
|
|
2
|
+
import { Option, Schema as S } from 'effect';
|
|
3
3
|
import { evo } from 'foldkit/struct';
|
|
4
4
|
import { defineView } from 'foldkit/submodel';
|
|
5
5
|
import { BaseModel, ClearedSelection, Closed, Opened, SelectedItem, Selected as SharedSelected, baseInit, closedBaseModel, makeUpdate, makeView, } from './shared.js';
|
|
@@ -27,13 +27,9 @@ export const update = makeUpdate({
|
|
|
27
27
|
},
|
|
28
28
|
handleSelectedItem: (model, item, displayText, wasSelected, context) => {
|
|
29
29
|
const nullableDeselect = model.nullable && wasSelected;
|
|
30
|
-
return __foldkitBrandViewResult((
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}),
|
|
34
|
-
pipe(Array.getSomes([context.maybeUnlockScroll, context.maybeRestoreInert]), Array.prepend(context.focusInput)),
|
|
35
|
-
Option.some(SharedSelected({ value: item })),
|
|
36
|
-
]), "@foldkit/ui/combobox/single.js#handleSelectedItem");
|
|
30
|
+
return __foldkitBrandViewResult((context.closeWithFocus(evo(closedBaseModel(model), {
|
|
31
|
+
inputValue: () => (__foldkitBrandViewResult((nullableDeselect ? '' : displayText), "@foldkit/ui/combobox/single.js#inputValue~3")),
|
|
32
|
+
}), Option.some(SharedSelected({ value: item })))), "@foldkit/ui/combobox/single.js#handleSelectedItem");
|
|
37
33
|
},
|
|
38
34
|
handleImmediateActivation: (model, item) => __foldkitBrandViewResult(([
|
|
39
35
|
model,
|
package/dist/dialog/index.d.ts
CHANGED
|
@@ -180,7 +180,10 @@ export declare const descriptionId: (model: Model) => string;
|
|
|
180
180
|
* - `closeButton`: attributes for an in-panel close control such as a Cancel
|
|
181
181
|
* or dismiss button. Carries the `OnClick` handler that closes the
|
|
182
182
|
* dialog (suppressed while a leave animation is in progress). Spread
|
|
183
|
-
* onto your own button so a plain close needs no parent message.
|
|
183
|
+
* onto your own button so a plain close needs no parent message. Sets
|
|
184
|
+
* `type="button"` so that a close control inside a `form` element in the
|
|
185
|
+
* panel closes without also submitting the form. Spread a later `h.Type`
|
|
186
|
+
* to override it.
|
|
184
187
|
* - `isVisible`: derived from `isOpen` and the Animation
|
|
185
188
|
* `transitionState`. The consumer renders backdrop + panel only
|
|
186
189
|
* while this is true. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialog/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialog/index.ts"],"names":[],"mappings":"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"}
|
package/dist/dialog/index.js
CHANGED
|
@@ -277,7 +277,10 @@ export const view = defineView((model, viewInputs, h) => {
|
|
|
277
277
|
const initialFocusAttributes = [
|
|
278
278
|
h.DataAttribute(initialFocusMarkerAttribute, ''),
|
|
279
279
|
];
|
|
280
|
-
const closeButtonAttributes =
|
|
280
|
+
const closeButtonAttributes = [
|
|
281
|
+
h.Type('button'),
|
|
282
|
+
...(isLeaving ? [] : [h.OnClick(RequestedClose())]),
|
|
283
|
+
];
|
|
281
284
|
return __foldkitBrandViewResult((toView({
|
|
282
285
|
dialog: childAttributes(dialogAttributes),
|
|
283
286
|
backdrop: childAttributes(backdropAttributes),
|
|
@@ -7,7 +7,13 @@ export declare const buttonId: (id: string) => string;
|
|
|
7
7
|
/** Attribute groups the disclosure provides to the consumer's `toView`
|
|
8
8
|
* callback. The consumer composes the button + panel layout themselves using
|
|
9
9
|
* these bundles. The `button` bundle carries the click and Enter/Space
|
|
10
|
-
* handlers that dispatch the configured `onToggle` Message.
|
|
10
|
+
* handlers that dispatch the configured `onToggle` Message.
|
|
11
|
+
*
|
|
12
|
+
* The `button` bundle sets `type="button"` so that rendering the trigger as a
|
|
13
|
+
* `button` element inside a `form` element toggles without also submitting the
|
|
14
|
+
* form. Setting it is harmless on the other elements a trigger might use, such
|
|
15
|
+
* as a `div` or a `span`, because the builder assigns a DOM property rather
|
|
16
|
+
* than an HTML attribute. Spread a later `h.Type` to override it. */
|
|
11
17
|
export type DisclosureAttributes<Message> = Readonly<{
|
|
12
18
|
button: ReadonlyArray<Attribute<Message>>;
|
|
13
19
|
panel: ReadonlyArray<Attribute<Message>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE;;;mCAGmC;AACnC,eAAO,MAAM,QAAQ,GAAI,IAAI,MAAM,KAAG,MAAwB,CAAA;AAM9D
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE;;;mCAGmC;AACnC,eAAO,MAAM,QAAQ,GAAI,IAAI,MAAM,KAAG,MAAwB,CAAA;AAM9D;;;;;;;;;sEASsE;AACtE,MAAM,MAAM,oBAAoB,CAAC,OAAO,IAAI,QAAQ,CAAC;IACnD,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC;;;;;kFAK8E;IAC9E,YAAY,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAA;CACtC,CAAC,CAAA;AAEF;;;;;;;;;;oBAUoB;AACpB,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;IACtC,MAAM,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;UAuBU;AACV,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAiFF,CAAA"}
|
package/dist/disclosure/index.js
CHANGED
package/dist/fieldset/index.d.ts
CHANGED
|
@@ -11,9 +11,9 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
11
11
|
toView: (attributes: FieldsetAttributes<Message>) => Html;
|
|
12
12
|
isDisabled?: boolean;
|
|
13
13
|
}>;
|
|
14
|
-
/**
|
|
14
|
+
/** Returns the legend element id, derived from the fieldset's base id. */
|
|
15
15
|
export declare const legendId: (id: string) => string;
|
|
16
|
-
/**
|
|
16
|
+
/** Returns the description element id, derived from the fieldset's base id. */
|
|
17
17
|
export declare const descriptionId: (id: string) => string;
|
|
18
18
|
/** Renders an accessible fieldset by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
19
19
|
export declare const view: <Message>(config: ViewConfig<Message>, h: HtmlBuilder<Message>) => Html;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fieldset/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,QAAQ,CAAC;IACjD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,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,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC,CAAA;AAEF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fieldset/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,QAAQ,CAAC;IACjD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,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,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,GAAI,IAAI,MAAM,KAAG,MAAwB,CAAA;AAE9D,+EAA+E;AAC/E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE,kIAAkI;AAClI,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAsBF,CAAA"}
|
package/dist/fieldset/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
|
-
/**
|
|
2
|
+
/** Returns the legend element id, derived from the fieldset's base id. */
|
|
3
3
|
export const legendId = (id) => __foldkitBrandViewResult((`${id}-legend`), "@foldkit/ui/fieldset/index.js#legendId");
|
|
4
|
-
/**
|
|
4
|
+
/** Returns the description element id, derived from the fieldset's base id. */
|
|
5
5
|
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/fieldset/index.js#descriptionId");
|
|
6
6
|
/** Renders an accessible fieldset by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
7
7
|
export const view = (config, h) => {
|
package/dist/input/index.d.ts
CHANGED
|
@@ -12,13 +12,14 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
12
12
|
onInput?: (value: string) => Message;
|
|
13
13
|
value?: string;
|
|
14
14
|
isDisabled?: boolean;
|
|
15
|
+
isReadOnly?: boolean;
|
|
15
16
|
isInvalid?: boolean;
|
|
16
17
|
isAutofocus?: boolean;
|
|
17
18
|
name?: string;
|
|
18
19
|
type?: string;
|
|
19
20
|
placeholder?: string;
|
|
20
21
|
}>;
|
|
21
|
-
/**
|
|
22
|
+
/** Returns the description element id, derived from the input's base id. */
|
|
22
23
|
export declare const descriptionId: (id: string) => string;
|
|
23
24
|
/** Renders an accessible input by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
24
25
|
export declare const view: <Message>(config: ViewConfig<Message>, h: HtmlBuilder<Message>) => Html;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,yFAAyF;AACzF,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,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,wDAAwD;AACxD,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAEF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,yFAAyF;AACzF,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,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,wDAAwD;AACxD,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAEF,4EAA4E;AAC5E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE,+HAA+H;AAC/H,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAqEF,CAAA"}
|
package/dist/input/index.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { Predicate } from 'effect';
|
|
3
|
-
/**
|
|
3
|
+
/** Returns the description element id, derived from the input's base id. */
|
|
4
4
|
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/input/index.js#descriptionId");
|
|
5
5
|
/** Renders an accessible input by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
6
6
|
export const view = (config, h) => {
|
|
7
|
-
const { toView, id, onInput, value, isDisabled = false, isInvalid = false, isAutofocus = false, name, type = 'text', placeholder, } = config;
|
|
7
|
+
const { toView, id, onInput, value, isDisabled = false, isReadOnly = false, isInvalid = false, isAutofocus = false, name, type = 'text', placeholder, } = config;
|
|
8
8
|
const disabledAttributes = isDisabled
|
|
9
|
-
? [h.
|
|
9
|
+
? [h.Disabled(true), h.DataAttribute('disabled', '')]
|
|
10
|
+
: [];
|
|
11
|
+
const readOnlyAttributes = isReadOnly
|
|
12
|
+
? [h.Readonly(true), h.DataAttribute('readonly', '')]
|
|
10
13
|
: [];
|
|
11
14
|
const invalidAttributes = isInvalid
|
|
12
15
|
? [h.AriaInvalid(true), h.DataAttribute('invalid', '')]
|
|
13
16
|
: [];
|
|
14
|
-
const
|
|
17
|
+
const isInteractive = !isDisabled && !isReadOnly;
|
|
18
|
+
const inputAttributes = Predicate.isNotUndefined(onInput) && isInteractive
|
|
19
|
+
? [h.OnInput(onInput)]
|
|
20
|
+
: [];
|
|
15
21
|
const valueAttributes = Predicate.isNotUndefined(value)
|
|
16
22
|
? [h.Value(value)]
|
|
17
23
|
: [];
|
|
@@ -25,6 +31,7 @@ export const view = (config, h) => {
|
|
|
25
31
|
h.Type(type),
|
|
26
32
|
h.AriaDescribedBy(descriptionId(id)),
|
|
27
33
|
...disabledAttributes,
|
|
34
|
+
...readOnlyAttributes,
|
|
28
35
|
...invalidAttributes,
|
|
29
36
|
...inputAttributes,
|
|
30
37
|
...valueAttributes,
|
|
@@ -7,7 +7,13 @@ export type Orientation = typeof Orientation.Type;
|
|
|
7
7
|
* spreads `option`, `label`, and `description` onto whichever elements carry
|
|
8
8
|
* that role in their layout. Generic over `Value extends string` so
|
|
9
9
|
* `option.value` carries the consumer's union type, and over `Message`
|
|
10
|
-
* so the attribute bundles dispatch the parent's own Message.
|
|
10
|
+
* so the attribute bundles dispatch the parent's own Message.
|
|
11
|
+
*
|
|
12
|
+
* The `option` bundle sets `type="button"` so that rendering the option as a
|
|
13
|
+
* `button` element inside a `form` element selects without also submitting the
|
|
14
|
+
* form. Setting it is harmless on the other elements an option might use, such
|
|
15
|
+
* as a `div` or a `span`, because the builder assigns a DOM property rather
|
|
16
|
+
* than an HTML attribute. Spread a later `h.Type` to override it. */
|
|
11
17
|
export type OptionInfo<Value extends string, Message> = Readonly<{
|
|
12
18
|
value: Value;
|
|
13
19
|
index: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/radioGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEN,MAAM,IAAI,CAAC,EAGZ,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAOhE,+FAA+F;AAC/F,eAAO,MAAM,WAAW,iDAAyC,CAAA;AACjE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAYjD
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/radioGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEN,MAAM,IAAI,CAAC,EAGZ,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAOhE,+FAA+F;AAC/F,eAAO,MAAM,WAAW,iDAAyC,CAAA;AACjE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAYjD;;;;;;;;;;sEAUsE;AACtE,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF;;;;;;;;;;;0DAW0D;AAC1D,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC;IAC/D,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF;;;;;;;;;;0EAU0E;AAC1E,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACpD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;UAuBU;AACV,eAAO,MAAM,IAAI,GAAI,KAAK,SAAS,MAAM,EAAE,OAAO,EAChD,QAAQ,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAClC,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAkLF,CAAA"}
|
package/dist/radioGroup/index.js
CHANGED
package/dist/select/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
16
16
|
isAutofocus?: boolean;
|
|
17
17
|
name?: string;
|
|
18
18
|
}>;
|
|
19
|
-
/**
|
|
19
|
+
/** Returns the description element id, derived from the select's base id. */
|
|
20
20
|
export declare const descriptionId: (id: string) => string;
|
|
21
21
|
/** Renders an accessible select by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
22
22
|
export declare const view: <Message>(config: ViewConfig<Message>, h: HtmlBuilder<Message>) => Html;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/select/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC/C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,wDAAwD;AACxD,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACvD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAEF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/select/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC/C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF,wDAAwD;AACxD,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACvD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE,gIAAgI;AAChI,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAqDF,CAAA"}
|
package/dist/select/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { Predicate } from 'effect';
|
|
3
|
-
/**
|
|
3
|
+
/** Returns the description element id, derived from the select's base id. */
|
|
4
4
|
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/select/index.js#descriptionId");
|
|
5
5
|
/** Renders an accessible select by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
6
6
|
export const view = (config, h) => {
|
|
7
7
|
const { toView, id, onChange, value, isDisabled = false, isInvalid = false, isAutofocus = false, name, } = config;
|
|
8
8
|
const disabledAttributes = isDisabled
|
|
9
|
-
? [h.
|
|
9
|
+
? [h.Disabled(true), h.DataAttribute('disabled', '')]
|
|
10
10
|
: [];
|
|
11
11
|
const invalidAttributes = isInvalid
|
|
12
12
|
? [h.AriaInvalid(true), h.DataAttribute('invalid', '')]
|
package/dist/switch/index.d.ts
CHANGED
|
@@ -3,7 +3,13 @@ import type { Attribute, Html, HtmlBuilder } from 'foldkit/html';
|
|
|
3
3
|
* Each group is a `ReadonlyArray<Attribute<Message>>` the consumer
|
|
4
4
|
* spreads into its own element attribute arrays. The `button` and `label`
|
|
5
5
|
* bundles carry the click and Space handlers that dispatch the configured
|
|
6
|
-
* `onToggle` Message.
|
|
6
|
+
* `onToggle` Message.
|
|
7
|
+
*
|
|
8
|
+
* The `button` bundle sets `type="button"` so that rendering the switch as a
|
|
9
|
+
* `button` element inside a `form` element toggles without also submitting the
|
|
10
|
+
* form. Setting it is harmless on the other elements a switch might use, such
|
|
11
|
+
* as a `div` or a `span`, because the builder assigns a DOM property rather
|
|
12
|
+
* than an HTML attribute. Spread a later `h.Type` to override it. */
|
|
7
13
|
export type SwitchAttributes<Message> = Readonly<{
|
|
8
14
|
button: ReadonlyArray<Attribute<Message>>;
|
|
9
15
|
label: ReadonlyArray<Attribute<Message>>;
|
|
@@ -19,16 +25,25 @@ export type SwitchAttributes<Message> = Readonly<{
|
|
|
19
25
|
* the switch or its label, or presses Space. Handle it in the parent's
|
|
20
26
|
* `update` by storing the value.
|
|
21
27
|
* - `toView`: receives the {@link SwitchAttributes} and lays out the
|
|
22
|
-
* switch.
|
|
28
|
+
* switch.
|
|
29
|
+
* - `isReadOnly`: prevents toggling while exposing read-only semantics with
|
|
30
|
+
* `aria-readonly="true"` and `data-readonly`. The switch remains
|
|
31
|
+
* focusable. Independent of `isDisabled`: setting both emits both
|
|
32
|
+
* attribute sets, and either one removes the interaction handlers. */
|
|
23
33
|
export type ViewConfig<Message> = Readonly<{
|
|
24
34
|
id: string;
|
|
25
35
|
isChecked: boolean;
|
|
26
36
|
onToggle: (isChecked: boolean) => Message;
|
|
27
37
|
toView: (attributes: SwitchAttributes<Message>) => Html;
|
|
28
38
|
isDisabled?: boolean;
|
|
39
|
+
isReadOnly?: boolean;
|
|
29
40
|
name?: string;
|
|
30
41
|
value?: string;
|
|
31
42
|
}>;
|
|
43
|
+
/** Returns the label element id, derived from the switch's base id. */
|
|
44
|
+
export declare const labelId: (id: string) => string;
|
|
45
|
+
/** Returns the description element id, derived from the switch's base id. */
|
|
46
|
+
export declare const descriptionId: (id: string) => string;
|
|
32
47
|
/** Renders an accessible switch as a stateless controlled component. The
|
|
33
48
|
* parent owns the checked state (`isChecked`) and receives the new state via
|
|
34
49
|
* `onToggle` when the user toggles it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/switch/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/switch/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE;;;;;;;;;;sEAUsE;AACtE,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC/C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,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;;;;;;;;;;;;;yEAayE;AACzE,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAA;IACzC,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACvD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEF,uEAAuE;AACvE,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,KAAG,MAAuB,CAAA;AAE5D,6EAA6E;AAC7E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE;;;;;;;;;;;;;;;;;;;;;UAqBU;AACV,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAgEF,CAAA"}
|
package/dist/switch/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { Match as M, Option } from 'effect';
|
|
3
|
-
|
|
4
|
-
const
|
|
3
|
+
/** Returns the label element id, derived from the switch's base id. */
|
|
4
|
+
export const labelId = (id) => __foldkitBrandViewResult((`${id}-label`), "@foldkit/ui/switch/index.js#labelId");
|
|
5
|
+
/** Returns the description element id, derived from the switch's base id. */
|
|
6
|
+
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/switch/index.js#descriptionId");
|
|
5
7
|
/** Renders an accessible switch as a stateless controlled component. The
|
|
6
8
|
* parent owns the checked state (`isChecked`) and receives the new state via
|
|
7
9
|
* `onToggle` when the user toggles it.
|
|
@@ -25,14 +27,19 @@ const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@
|
|
|
25
27
|
* ],
|
|
26
28
|
* ``` */
|
|
27
29
|
export const view = (config, h) => {
|
|
28
|
-
const { id, isChecked, onToggle, toView, isDisabled = false, name, value: formValue = 'on', } = config;
|
|
30
|
+
const { id, isChecked, onToggle, toView, isDisabled = false, isReadOnly = false, name, value: formValue = 'on', } = config;
|
|
29
31
|
const nextChecked = !isChecked;
|
|
30
32
|
const handleKeyUp = (key) => __foldkitBrandViewResult((M.value(key).pipe(M.when(' ', () => __foldkitBrandViewResult((Option.some(onToggle(nextChecked))), "@foldkit/ui/switch/index.js#anonymous")), M.orElse(() => __foldkitBrandViewResult((Option.none()), "@foldkit/ui/switch/index.js#anonymous~2")))), "@foldkit/ui/switch/index.js#handleKeyUp");
|
|
31
33
|
const checkedAttributes = isChecked ? [h.DataAttribute('checked', '')] : [];
|
|
32
34
|
const disabledAttributes = isDisabled
|
|
33
35
|
? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
|
|
34
36
|
: [];
|
|
37
|
+
const readOnlyAttributes = isReadOnly
|
|
38
|
+
? [h.AriaReadonly(true), h.DataAttribute('readonly', '')]
|
|
39
|
+
: [];
|
|
40
|
+
const isInteractive = !isDisabled && !isReadOnly;
|
|
35
41
|
const buttonAttributes = [
|
|
42
|
+
h.Type('button'),
|
|
36
43
|
h.Role('switch'),
|
|
37
44
|
h.AriaChecked(isChecked),
|
|
38
45
|
h.AriaLabelledBy(labelId(id)),
|
|
@@ -40,16 +47,14 @@ export const view = (config, h) => {
|
|
|
40
47
|
h.Tabindex(0),
|
|
41
48
|
...checkedAttributes,
|
|
42
49
|
...disabledAttributes,
|
|
43
|
-
...
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
h.OnKeyUpPreventDefault(handleKeyUp),
|
|
48
|
-
]),
|
|
50
|
+
...readOnlyAttributes,
|
|
51
|
+
...(isInteractive
|
|
52
|
+
? [h.OnClick(onToggle(nextChecked)), h.OnKeyUpPreventDefault(handleKeyUp)]
|
|
53
|
+
: []),
|
|
49
54
|
];
|
|
50
55
|
const labelAttributes = [
|
|
51
56
|
h.Id(labelId(id)),
|
|
52
|
-
...(
|
|
57
|
+
...(isInteractive ? [h.OnClick(onToggle(nextChecked))] : []),
|
|
53
58
|
];
|
|
54
59
|
const descriptionAttributes = [h.Id(descriptionId(id))];
|
|
55
60
|
const hiddenInputAttributes = name
|
package/dist/switch/public.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/switch/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/switch/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEzD,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/switch/public.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { view } from './index.js';
|
|
1
|
+
export { view, labelId, descriptionId } from './index.js';
|
package/dist/textarea/index.d.ts
CHANGED
|
@@ -12,13 +12,14 @@ export type ViewConfig<Message> = Readonly<{
|
|
|
12
12
|
onInput?: (value: string) => Message;
|
|
13
13
|
value?: string;
|
|
14
14
|
isDisabled?: boolean;
|
|
15
|
+
isReadOnly?: boolean;
|
|
15
16
|
isInvalid?: boolean;
|
|
16
17
|
isAutofocus?: boolean;
|
|
17
18
|
name?: string;
|
|
18
19
|
rows?: number;
|
|
19
20
|
placeholder?: string;
|
|
20
21
|
}>;
|
|
21
|
-
/**
|
|
22
|
+
/** Returns the description element id, derived from the textarea's base id. */
|
|
22
23
|
export declare const descriptionId: (id: string) => string;
|
|
23
24
|
/** Renders an accessible textarea by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
24
25
|
export declare const view: <Message>(config: ViewConfig<Message>, h: HtmlBuilder<Message>) => Html;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/textarea/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,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;CAC/C,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAEF
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/textarea/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAIhE,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;CAC/C,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAEF,+EAA+E;AAC/E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAA;AAExE,kIAAkI;AAClI,eAAO,MAAM,IAAI,GAAI,OAAO,EAC1B,QAAQ,UAAU,CAAC,OAAO,CAAC,EAC3B,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAuEF,CAAA"}
|
package/dist/textarea/index.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { Predicate } from 'effect';
|
|
3
|
-
/**
|
|
3
|
+
/** Returns the description element id, derived from the textarea's base id. */
|
|
4
4
|
export const descriptionId = (id) => __foldkitBrandViewResult((`${id}-description`), "@foldkit/ui/textarea/index.js#descriptionId");
|
|
5
5
|
/** Renders an accessible textarea by building ARIA attribute groups and delegating layout to the consumer's `toView` callback. */
|
|
6
6
|
export const view = (config, h) => {
|
|
7
|
-
const { toView, id, onInput, value, isDisabled = false, isInvalid = false, isAutofocus = false, name, rows, placeholder, } = config;
|
|
7
|
+
const { toView, id, onInput, value, isDisabled = false, isReadOnly = false, isInvalid = false, isAutofocus = false, name, rows, placeholder, } = config;
|
|
8
8
|
const disabledAttributes = isDisabled
|
|
9
|
-
? [h.
|
|
9
|
+
? [h.Disabled(true), h.DataAttribute('disabled', '')]
|
|
10
|
+
: [];
|
|
11
|
+
const readOnlyAttributes = isReadOnly
|
|
12
|
+
? [h.Readonly(true), h.DataAttribute('readonly', '')]
|
|
10
13
|
: [];
|
|
11
14
|
const invalidAttributes = isInvalid
|
|
12
15
|
? [h.AriaInvalid(true), h.DataAttribute('invalid', '')]
|
|
13
16
|
: [];
|
|
14
|
-
const
|
|
17
|
+
const isInteractive = !isDisabled && !isReadOnly;
|
|
18
|
+
const inputAttributes = Predicate.isNotUndefined(onInput) && isInteractive
|
|
19
|
+
? [h.OnInput(onInput)]
|
|
20
|
+
: [];
|
|
15
21
|
const valueAttributes = Predicate.isNotUndefined(value)
|
|
16
22
|
? [h.Value(value)]
|
|
17
23
|
: [];
|
|
@@ -25,6 +31,7 @@ export const view = (config, h) => {
|
|
|
25
31
|
h.Id(id),
|
|
26
32
|
h.AriaDescribedBy(descriptionId(id)),
|
|
27
33
|
...disabledAttributes,
|
|
34
|
+
...readOnlyAttributes,
|
|
28
35
|
...invalidAttributes,
|
|
29
36
|
...inputAttributes,
|
|
30
37
|
...valueAttributes,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foldkit/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.140.1",
|
|
4
4
|
"description": "Headless, accessible UI components for Foldkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -113,22 +113,22 @@
|
|
|
113
113
|
"dist"
|
|
114
114
|
],
|
|
115
115
|
"peerDependencies": {
|
|
116
|
-
"effect": "4.0.0-beta.
|
|
116
|
+
"effect": "4.0.0-beta.105",
|
|
117
117
|
"foldkit": "^0"
|
|
118
118
|
},
|
|
119
119
|
"dependencies": {
|
|
120
120
|
"@floating-ui/dom": "^1.7.6"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
|
-
"@effect/vitest": "4.0.0-beta.
|
|
124
|
-
"effect": "4.0.0-beta.
|
|
123
|
+
"@effect/vitest": "4.0.0-beta.105",
|
|
124
|
+
"effect": "4.0.0-beta.105",
|
|
125
125
|
"happy-dom": "^20.10.4",
|
|
126
126
|
"rimraf": "^6.1.3",
|
|
127
127
|
"typedoc": "^0.28.19",
|
|
128
128
|
"typescript": "^6.0.3",
|
|
129
129
|
"vitest": "^4.1.9",
|
|
130
|
-
"
|
|
131
|
-
"foldkit": "0.
|
|
130
|
+
"foldkit": "0.140.1",
|
|
131
|
+
"@foldkit/vite-plugin": "0.12.1"
|
|
132
132
|
},
|
|
133
133
|
"keywords": [
|
|
134
134
|
"foldkit",
|