@typed/ui 1.0.0-beta.5 → 1.0.0-beta.7
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/Alert.d.ts +35 -41
- package/dist/Alert.d.ts.map +1 -1
- package/dist/Alert.js +23 -20
- package/dist/Button.d.ts +34 -78
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +16 -12
- package/dist/Carousel.d.ts +35 -236
- package/dist/Carousel.d.ts.map +1 -1
- package/dist/Carousel.js +13 -136
- package/dist/Checkbox.d.ts +55 -90
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +44 -38
- package/dist/Collection.d.ts +15 -15
- package/dist/Collection.js +7 -7
- package/dist/Combobox.d.ts +38 -187
- package/dist/Combobox.d.ts.map +1 -1
- package/dist/Combobox.js +9 -80
- package/dist/Component.d.ts +30 -24
- package/dist/Component.d.ts.map +1 -1
- package/dist/Component.js +23 -12
- package/dist/Composite.d.ts +50 -50
- package/dist/Composite.js +20 -20
- package/dist/Dialog.d.ts +34 -34
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +16 -14
- package/dist/Disclosure.d.ts +15 -15
- package/dist/Disclosure.js +6 -6
- package/dist/Dom/Events.d.ts +4 -4
- package/dist/Dom/Events.js +4 -4
- package/dist/Dom/Props.d.ts +9 -9
- package/dist/Dom/Props.js +4 -4
- package/dist/Dom/Refs.d.ts +2 -2
- package/dist/Dom/Refs.js +1 -1
- package/dist/Dom/Render.d.ts +2 -2
- package/dist/Dom/Render.js +2 -2
- package/dist/Dom/Types.d.ts +33 -33
- package/dist/Dom/index.d.ts +5 -5
- package/dist/Dom/index.d.ts.map +1 -1
- package/dist/Dom/index.js +4 -4
- package/dist/Dom.d.ts +1 -1
- package/dist/Dom.js +1 -1
- package/dist/Focusable.d.ts +5 -5
- package/dist/Focusable.js +1 -1
- package/dist/Form.d.ts +565 -533
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +350 -195
- package/dist/Grid.d.ts +39 -220
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +12 -107
- package/dist/Group.d.ts +50 -69
- package/dist/Group.d.ts.map +1 -1
- package/dist/Group.js +33 -25
- package/dist/Heading.d.ts +41 -40
- package/dist/Heading.d.ts.map +1 -1
- package/dist/Heading.js +26 -16
- package/dist/Hovercard.d.ts +18 -18
- package/dist/Hovercard.js +6 -6
- package/dist/HttpRouter.d.ts +3 -3
- package/dist/HttpRouter.js +5 -5
- package/dist/Link.d.ts +17 -21
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +11 -0
- package/dist/Listbox.d.ts +31 -163
- package/dist/Listbox.d.ts.map +1 -1
- package/dist/Listbox.js +9 -80
- package/dist/Menu.d.ts +67 -376
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +17 -179
- package/dist/Menubar.d.ts +24 -142
- package/dist/Menubar.d.ts.map +1 -1
- package/dist/Menubar.js +8 -66
- package/dist/Meter.d.ts +72 -132
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +35 -42
- package/dist/NativeDetails.d.ts +1 -1
- package/dist/NativeDetails.js +1 -1
- package/dist/NativeDialog.d.ts +7 -5
- package/dist/NativeDialog.d.ts.map +1 -1
- package/dist/NativeDialog.js +42 -4
- package/dist/NativePopover.d.ts +6 -4
- package/dist/NativePopover.d.ts.map +1 -1
- package/dist/NativePopover.js +43 -5
- package/dist/Popover.d.ts +18 -19
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +7 -8
- package/dist/RadioGroup.d.ts +86 -188
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +55 -105
- package/dist/Role.d.ts +4 -4
- package/dist/Role.js +1 -1
- package/dist/Select.d.ts +109 -220
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +67 -117
- package/dist/Separator.d.ts +30 -26
- package/dist/Separator.d.ts.map +1 -1
- package/dist/Separator.js +16 -10
- package/dist/Slider.d.ts +64 -111
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +47 -42
- package/dist/SpinButton.d.ts +64 -111
- package/dist/SpinButton.d.ts.map +1 -1
- package/dist/SpinButton.js +47 -42
- package/dist/Storybook.d.ts +2 -2
- package/dist/Storybook.js +1 -1
- package/dist/Switch.d.ts +52 -91
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +30 -36
- package/dist/Tabs.d.ts +44 -224
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +10 -94
- package/dist/Toolbar.d.ts +24 -142
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +8 -66
- package/dist/Tooltip.d.ts +20 -20
- package/dist/Tooltip.js +6 -6
- package/dist/Tree.d.ts +43 -229
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +12 -113
- package/dist/TreeGrid.d.ts +45 -264
- package/dist/TreeGrid.d.ts.map +1 -1
- package/dist/TreeGrid.js +13 -125
- package/dist/VisuallyHidden.d.ts +41 -27
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +27 -10
- package/dist/WindowSplitter.d.ts +68 -108
- package/dist/WindowSplitter.d.ts.map +1 -1
- package/dist/WindowSplitter.js +106 -23
- package/package.json +9 -8
package/dist/Select.d.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* A native popover-backed listbox with separate selection, focus, and visibility.
|
|
3
|
+
* Unlike Form.Select, these options are divs rather than native select options.
|
|
4
|
+
* Pass one collection to Content and its Options for registered keyboard navigation.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* The module keeps policy, state transitions, and DOM rendering separable so applications can use
|
|
8
|
-
* the state and pure operations without mounting UI, or supply custom hosts without replacing native
|
|
9
|
-
* events and browser-owned focus.
|
|
6
|
+
* Read the [Select guide](/explore/ui-select) for a complete example.
|
|
10
7
|
*
|
|
8
|
+
* [APG interaction reference](https://www.w3.org/WAI/ARIA/apg/patterns/listbox/).
|
|
11
9
|
* @since 1.0.0
|
|
12
|
-
* @category
|
|
10
|
+
* @category Overview
|
|
13
11
|
* @packageDocumentation
|
|
14
12
|
*/
|
|
15
13
|
import * as Effect from "effect/Effect";
|
|
@@ -23,104 +21,78 @@ import * as Composite from "./Composite.js";
|
|
|
23
21
|
import * as Dom from "./Dom.js";
|
|
24
22
|
import type { HostResult } from "./Dom/Types.js";
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* Popup identity, committed value, visibility, and active option.
|
|
27
25
|
*
|
|
28
26
|
* @remarks
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* Applications can inspect, update, and test Select behavior without mounting or coupling the
|
|
32
|
-
* state to a renderer.
|
|
33
|
-
*
|
|
34
|
-
* ## Ownership and lifetime
|
|
35
|
-
*
|
|
36
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
37
|
-
*
|
|
38
|
-
* ## Example
|
|
39
|
-
*
|
|
40
|
-
* Import with `import type { State } from "@typed/ui/Select";` Extend the [Select.makeState
|
|
41
|
-
* runnable setup](/reference/%40typed%2Fui%2FSelect%23makeState). Inside the linked program,
|
|
42
|
-
* `const snapshot: State = yield* state` exposes popup identity, selected value, open state, and
|
|
43
|
-
* active option.
|
|
27
|
+
* value and activeId are independent: keyboard movement can change activeId before selection
|
|
28
|
+
* commits a value. Vertical real-focus navigation is fixed by makeState.
|
|
44
29
|
* @since 1.0.0
|
|
45
|
-
* @category models
|
|
30
|
+
* @category State models
|
|
46
31
|
*/
|
|
47
32
|
export interface State extends Omit<Composite.State, "orientation"> {
|
|
48
33
|
/**
|
|
49
34
|
* Axis used to interpret Arrow-key movement.
|
|
50
35
|
* @since 1.0.0
|
|
51
|
-
* @category
|
|
36
|
+
* @category Keyboard navigation
|
|
52
37
|
*/
|
|
53
38
|
readonly orientation: "vertical";
|
|
54
39
|
/**
|
|
55
40
|
* Stable id used for collection identity and ARIA relationships.
|
|
56
41
|
* @since 1.0.0
|
|
57
|
-
* @category
|
|
42
|
+
* @category Identity and relationships
|
|
58
43
|
*/
|
|
59
44
|
readonly id: string;
|
|
60
45
|
/**
|
|
61
46
|
* Current semantic value selected or edited by the widget.
|
|
62
47
|
* @since 1.0.0
|
|
63
|
-
* @category
|
|
48
|
+
* @category Value state
|
|
64
49
|
*/
|
|
65
50
|
readonly value: string | null;
|
|
66
51
|
/**
|
|
67
52
|
* Whether the associated native popover is open.
|
|
68
53
|
* @since 1.0.0
|
|
69
|
-
* @category
|
|
54
|
+
* @category Visibility
|
|
70
55
|
*/
|
|
71
56
|
readonly open: boolean;
|
|
72
57
|
}
|
|
73
58
|
/**
|
|
74
|
-
*
|
|
75
|
-
* loop true.
|
|
59
|
+
* Required popup ID with optional initial selection, visibility, focus, and wrap policy.
|
|
76
60
|
*
|
|
77
61
|
* @remarks
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* Making initialization explicit documents hydration-sensitive defaults and lets servers and
|
|
81
|
-
* clients construct matching state.
|
|
82
|
-
*
|
|
83
|
-
* ## Ownership and lifetime
|
|
84
|
-
*
|
|
85
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
86
|
-
*
|
|
87
|
-
* ## Example
|
|
88
|
-
*
|
|
89
|
-
* Import with `import type { InitialState } from "@typed/ui/Select";` Extend the [Select.makeState
|
|
90
|
-
* runnable setup](/reference/%40typed%2Fui%2FSelect%23makeState). Construct state with
|
|
91
|
-
* `const initial: InitialState = { id: "timezone", value: null, open: false }; const state = yield* Select.makeState(initial)`.
|
|
62
|
+
* value and activeId default to null, open to false, and loop to true. Use a stable
|
|
63
|
+
* document-unique ID so the native invoker relationship survives hydration.
|
|
92
64
|
* @since 1.0.0
|
|
93
|
-
* @category models
|
|
65
|
+
* @category State models
|
|
94
66
|
*/
|
|
95
67
|
export interface InitialState {
|
|
96
68
|
/**
|
|
97
69
|
* Stable id used for collection identity and ARIA relationships.
|
|
98
70
|
* @since 1.0.0
|
|
99
|
-
* @category
|
|
71
|
+
* @category Identity and relationships
|
|
100
72
|
*/
|
|
101
73
|
readonly id: string;
|
|
102
74
|
/**
|
|
103
75
|
* Current semantic value selected or edited by the widget.
|
|
104
76
|
* @since 1.0.0
|
|
105
|
-
* @category
|
|
77
|
+
* @category Value state
|
|
106
78
|
*/
|
|
107
79
|
readonly value?: string | null;
|
|
108
80
|
/**
|
|
109
81
|
* Whether the associated native popover is open.
|
|
110
82
|
* @since 1.0.0
|
|
111
|
-
* @category
|
|
83
|
+
* @category Visibility
|
|
112
84
|
*/
|
|
113
85
|
readonly open?: boolean;
|
|
114
86
|
/**
|
|
115
87
|
* Id currently active for keyboard navigation; null means no active item.
|
|
116
88
|
* @since 1.0.0
|
|
117
|
-
* @category
|
|
89
|
+
* @category Keyboard focus
|
|
118
90
|
*/
|
|
119
91
|
readonly activeId?: string | null;
|
|
120
92
|
/**
|
|
121
93
|
* Whether movement wraps between the first and last enabled items.
|
|
122
94
|
* @since 1.0.0
|
|
123
|
-
* @category
|
|
95
|
+
* @category Keyboard navigation
|
|
124
96
|
*/
|
|
125
97
|
readonly loop?: boolean;
|
|
126
98
|
}
|
|
@@ -128,15 +100,9 @@ export interface InitialState {
|
|
|
128
100
|
* Effect Schema used by makeState to encode, decode, and hydrate Select state.
|
|
129
101
|
*
|
|
130
102
|
* @remarks
|
|
131
|
-
* ## Why
|
|
132
|
-
*
|
|
133
103
|
* A public schema makes hydration and serialized state use the same runtime validation as direct
|
|
134
104
|
* construction.
|
|
135
105
|
*
|
|
136
|
-
* ## Ownership and lifetime
|
|
137
|
-
*
|
|
138
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
139
|
-
*
|
|
140
106
|
* @example
|
|
141
107
|
* ```ts
|
|
142
108
|
* import * as Schema from "effect/Schema";
|
|
@@ -145,7 +111,7 @@ export interface InitialState {
|
|
|
145
111
|
* const decodeState = Schema.decodeUnknownEffect(Select.StateSchema);
|
|
146
112
|
* ```
|
|
147
113
|
* @since 1.0.0
|
|
148
|
-
* @category schemas
|
|
114
|
+
* @category Hydration schemas
|
|
149
115
|
*/
|
|
150
116
|
export declare const StateSchema: Schema.Struct<{
|
|
151
117
|
readonly id: Schema.String;
|
|
@@ -162,12 +128,8 @@ export declare const StateSchema: Schema.Struct<{
|
|
|
162
128
|
* false, and loop true.
|
|
163
129
|
*
|
|
164
130
|
* @remarks
|
|
165
|
-
* ## Why
|
|
166
|
-
*
|
|
167
131
|
* State and collection ownership can be composed and tested independently from any renderer.
|
|
168
132
|
*
|
|
169
|
-
* ## Ownership and lifetime
|
|
170
|
-
*
|
|
171
133
|
* The returned Effect creates the RefSubject when run. That state is renderer-independent;
|
|
172
134
|
* collection registrations belong to the separate Scope that runs register or ref, not to state
|
|
173
135
|
* creation.
|
|
@@ -186,7 +148,7 @@ export declare const StateSchema: Schema.Struct<{
|
|
|
186
148
|
* );
|
|
187
149
|
* ```
|
|
188
150
|
* @since 1.0.0
|
|
189
|
-
* @category
|
|
151
|
+
* @category State construction
|
|
190
152
|
*/
|
|
191
153
|
export declare function makeState(initial: InitialState): Effect.Effect<RefSubject.HydratedRefSubject<{
|
|
192
154
|
readonly id: string;
|
|
@@ -202,12 +164,8 @@ export declare function makeState(initial: InitialState): Effect.Effect<RefSubje
|
|
|
202
164
|
* Creates a scoped Collection for Select items.
|
|
203
165
|
*
|
|
204
166
|
* @remarks
|
|
205
|
-
* ## Why
|
|
206
|
-
*
|
|
207
167
|
* State and collection ownership can be composed and tested independently from any renderer.
|
|
208
168
|
*
|
|
209
|
-
* ## Ownership and lifetime
|
|
210
|
-
*
|
|
211
169
|
* The returned Effect allocates the RefSubject in the caller's Scope. Each later registration is
|
|
212
170
|
* owned by the Scope that runs register, independently of this construction Effect.
|
|
213
171
|
*
|
|
@@ -224,65 +182,40 @@ export declare function makeState(initial: InitialState): Effect.Effect<RefSubje
|
|
|
224
182
|
* );
|
|
225
183
|
* ```
|
|
226
184
|
* @since 1.0.0
|
|
227
|
-
* @category
|
|
185
|
+
* @category State construction
|
|
228
186
|
*/
|
|
229
187
|
export declare const makeCollection: (initial?: Collection.State<string, Element>) => Effect.Effect<RefSubject.RefSubject<Collection.State<string, Element>, never, never>, never, Scope.Scope>;
|
|
230
188
|
/**
|
|
231
|
-
*
|
|
189
|
+
* Commits an option ID and value, then marks the popup closed.
|
|
232
190
|
*
|
|
233
191
|
* @remarks
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* and native event handlers.
|
|
238
|
-
*
|
|
239
|
-
* ## Ownership and lifetime
|
|
240
|
-
*
|
|
241
|
-
* The returned Effect performs the update or DOM side effect only when run, preserves the declared
|
|
242
|
-
* error and service channels, and retains no resources after completion.
|
|
243
|
-
*
|
|
244
|
-
* ## Example
|
|
245
|
-
*
|
|
246
|
-
* Import with `import { select } from "@typed/ui/Select";` Extend the [Select.makeState runnable
|
|
247
|
-
* setup](/reference/%40typed%2Fui%2FSelect%23makeState). Inside the linked Effect program invoke
|
|
248
|
-
* `yield* select(state, "utc", "UTC")`, then read state to observe selection and active focus
|
|
249
|
-
* update together while the popup closes.
|
|
192
|
+
* This Effect changes state only. It does not check collection membership or move focus itself;
|
|
193
|
+
* the mounted popover observes the visibility change. Keep id and value consistent with the
|
|
194
|
+
* option being selected.
|
|
250
195
|
* @since 1.0.0
|
|
251
|
-
* @category
|
|
196
|
+
* @category State transitions
|
|
252
197
|
*/
|
|
253
198
|
export declare function select<E, R>(state: RefSubject.RefSubject<State, E, R>, id: string, value: string): Effect.Effect<State, E, R>;
|
|
254
199
|
/**
|
|
255
|
-
*
|
|
200
|
+
* Shared select state and the button content that names the current choice.
|
|
256
201
|
*
|
|
257
202
|
* @remarks
|
|
258
|
-
*
|
|
259
|
-
*
|
|
260
|
-
* The options type makes required state, content, accessible relationships, and custom-host inputs
|
|
261
|
-
* visible before rendering.
|
|
262
|
-
*
|
|
263
|
-
* ## Ownership and lifetime
|
|
264
|
-
*
|
|
265
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
266
|
-
*
|
|
267
|
-
* ## Example
|
|
268
|
-
*
|
|
269
|
-
* Import with `import type { TriggerOptions } from "@typed/ui/Select";` Extend the
|
|
270
|
-
* [Select.makeState runnable setup](/reference/%40typed%2Fui%2FSelect%23makeState). A native
|
|
271
|
-
* popover trigger accepts `const options: TriggerOptions = { state, content: "Choose timezone" }`.
|
|
203
|
+
* The trigger derives its IDs and popover target from state.id. Content may be reactive; selecting
|
|
204
|
+
* a value does not automatically replace the label.
|
|
272
205
|
* @since 1.0.0
|
|
273
|
-
* @category
|
|
206
|
+
* @category Component options
|
|
274
207
|
*/
|
|
275
208
|
export interface TriggerOptions extends Dom.HostOptions<HTMLButtonElement> {
|
|
276
209
|
/**
|
|
277
210
|
* Renderer-independent RefSubject state consumed by this component or operation.
|
|
278
211
|
* @since 1.0.0
|
|
279
|
-
* @category
|
|
212
|
+
* @category State connection
|
|
280
213
|
*/
|
|
281
214
|
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
282
215
|
/**
|
|
283
216
|
* Renderable child content for the component host.
|
|
284
217
|
* @since 1.0.0
|
|
285
|
-
* @category
|
|
218
|
+
* @category Rendered content
|
|
286
219
|
*/
|
|
287
220
|
readonly content: Renderable.Any;
|
|
288
221
|
}
|
|
@@ -298,92 +231,86 @@ declare function triggerProps<const Options extends TriggerOptions>(options: Opt
|
|
|
298
231
|
};
|
|
299
232
|
type TriggerProps<Options extends TriggerOptions> = ReturnType<ReturnType<typeof triggerProps<Options>>>;
|
|
300
233
|
/**
|
|
301
|
-
* Renders the native button that
|
|
234
|
+
* Renders the native button that toggles the select listbox popover.
|
|
302
235
|
*
|
|
303
236
|
* @remarks
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
* ## Ownership and lifetime
|
|
237
|
+
* The generated button ID labels Content; popovertarget points to state.id. ArrowDown invokes
|
|
238
|
+
* the native button click. Content synchronizes native toggle events with open state. Render a
|
|
239
|
+
* useful name containing the current choice; the trigger does not format selected values for
|
|
240
|
+
* you.
|
|
310
241
|
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
315
|
-
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```ts
|
|
244
|
+
* import { RefSubject } from "@typed/fx";
|
|
245
|
+
* import { html } from "@typed/template";
|
|
246
|
+
* import { component } from "@typed/ui/Component";
|
|
247
|
+
* import * as Select from "@typed/ui/Select";
|
|
316
248
|
*
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
249
|
+
* export const DensityPicker = component(function* () {
|
|
250
|
+
* const state = yield* Select.makeState({ id: "density-options", value: "comfortable" });
|
|
251
|
+
* const collection = yield* Select.makeCollection();
|
|
252
|
+
* const label = RefSubject.map(state, ({ value }) =>
|
|
253
|
+
* value === "compact" ? "Density: compact" : "Density: comfortable",
|
|
254
|
+
* );
|
|
255
|
+
* return html`<div class="density-picker">
|
|
256
|
+
* ${Select.Trigger({ state, content: label })}
|
|
257
|
+
* ${Select.Content({
|
|
258
|
+
* state, collection,
|
|
259
|
+
* content: [
|
|
260
|
+
* Select.Option({
|
|
261
|
+
* state, collection, id: "density-comfortable", value: "comfortable",
|
|
262
|
+
* textValue: "Comfortable", content: "Comfortable",
|
|
263
|
+
* }),
|
|
264
|
+
* Select.Option({
|
|
265
|
+
* state, collection, id: "density-compact", value: "compact",
|
|
266
|
+
* textValue: "Compact", content: "Compact",
|
|
267
|
+
* }),
|
|
268
|
+
* ],
|
|
269
|
+
* })}
|
|
270
|
+
* </div>`;
|
|
271
|
+
* });
|
|
272
|
+
* ```
|
|
321
273
|
* @since 1.0.0
|
|
322
|
-
* @category
|
|
274
|
+
* @category Controls
|
|
323
275
|
*/
|
|
324
276
|
export declare function Trigger<const Options extends TriggerOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, TriggerProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
325
277
|
/**
|
|
326
|
-
*
|
|
278
|
+
* Alias of Trigger.
|
|
327
279
|
*
|
|
328
280
|
* @remarks
|
|
329
|
-
*
|
|
330
|
-
*
|
|
331
|
-
* The component applies the family behavior while leaving callers free to supply a custom host
|
|
332
|
-
* through the shared DOM boundary.
|
|
333
|
-
*
|
|
334
|
-
* ## Ownership and lifetime
|
|
335
|
-
*
|
|
336
|
-
* The alias acquires nothing. Rendering it has exactly the canonical component's Scope and DOM
|
|
337
|
-
* ownership contract.
|
|
338
|
-
*
|
|
339
|
-
* ## Example
|
|
340
|
-
*
|
|
341
|
-
* Import with `import { Select } from "@typed/ui/Select";` Extend the [Select.makeState runnable
|
|
342
|
-
* setup](/reference/%40typed%2Fui%2FSelect%23makeState). Replace the linked program's final
|
|
343
|
-
* snapshot read with `Select({ state, content: "Choose timezone" })`; render that Fx before the
|
|
344
|
-
* same Scope closes.
|
|
281
|
+
* Calling Select alone creates only the invoker button. Compose Content and Option for the popup
|
|
282
|
+
* choice surface; use Form.Select for a native select element.
|
|
345
283
|
* @since 1.0.0
|
|
346
|
-
* @category
|
|
284
|
+
* @category Controls
|
|
347
285
|
*/
|
|
348
286
|
export declare const Select: typeof Trigger;
|
|
349
287
|
/**
|
|
350
|
-
*
|
|
288
|
+
* Shared state, registered option collection, and listbox content.
|
|
351
289
|
*
|
|
352
290
|
* @remarks
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
*
|
|
356
|
-
* visible before rendering.
|
|
357
|
-
*
|
|
358
|
-
* ## Ownership and lifetime
|
|
359
|
-
*
|
|
360
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
361
|
-
*
|
|
362
|
-
* ## Example
|
|
363
|
-
*
|
|
364
|
-
* Import with `import type { ContentOptions } from "@typed/ui/Select";` Extend the
|
|
365
|
-
* [Select.makeState runnable setup](/reference/%40typed%2Fui%2FSelect%23makeState). Enable listbox
|
|
366
|
-
* movement with `const options: ContentOptions = { state, collection, content: "Timezones" }`.
|
|
291
|
+
* The collection is optional in the type but required for this host’s keyboard navigation and
|
|
292
|
+
* selected-item focus on opening. Render the same registered options represented by that
|
|
293
|
+
* collection.
|
|
367
294
|
* @since 1.0.0
|
|
368
|
-
* @category
|
|
295
|
+
* @category Component options
|
|
369
296
|
*/
|
|
370
297
|
export interface ContentOptions extends Dom.HostOptions<HTMLDivElement> {
|
|
371
298
|
/**
|
|
372
299
|
* Renderer-independent RefSubject state consumed by this component or operation.
|
|
373
300
|
* @since 1.0.0
|
|
374
|
-
* @category
|
|
301
|
+
* @category State connection
|
|
375
302
|
*/
|
|
376
303
|
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
377
304
|
/**
|
|
378
305
|
* Item registry used for collection-driven keyboard behavior and mounted ordering.
|
|
379
306
|
* @since 1.0.0
|
|
380
|
-
* @category
|
|
307
|
+
* @category Item registration
|
|
381
308
|
*/
|
|
382
309
|
readonly collection?: RefSubject.RefSubject<Collection.State<string>>;
|
|
383
310
|
/**
|
|
384
311
|
* Renderable child content for the component host.
|
|
385
312
|
* @since 1.0.0
|
|
386
|
-
* @category
|
|
313
|
+
* @category Rendered content
|
|
387
314
|
*/
|
|
388
315
|
readonly content: Renderable.Any;
|
|
389
316
|
}
|
|
@@ -399,92 +326,68 @@ declare function contentProps<const Options extends ContentOptions>(options: Opt
|
|
|
399
326
|
};
|
|
400
327
|
type ContentProps<Options extends ContentOptions> = ReturnType<ReturnType<typeof contentProps<Options>>>;
|
|
401
328
|
/**
|
|
402
|
-
* Renders manual-popover listbox
|
|
329
|
+
* Renders the manual-popover listbox and coordinates registered keyboard movement.
|
|
403
330
|
*
|
|
404
331
|
* @remarks
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
*
|
|
409
|
-
*
|
|
410
|
-
* ## Ownership and lifetime
|
|
411
|
-
*
|
|
412
|
-
* The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
|
|
413
|
-
* collection registrations only when rendered. The rendering Scope removes those resources;
|
|
414
|
-
* unrelated nodes and attributes remain caller-owned.
|
|
415
|
-
*
|
|
416
|
-
* ## Example
|
|
417
|
-
*
|
|
418
|
-
* Import with `import { Content } from "@typed/ui/Select";` Extend the [Select.makeState runnable
|
|
419
|
-
* setup](/reference/%40typed%2Fui%2FSelect%23makeState). Replace the linked program's final
|
|
420
|
-
* snapshot read with `Content({ state, content: "Timezones" })`; render that Fx before the same
|
|
421
|
-
* Scope closes.
|
|
332
|
+
* With a collection, arrows and Home/End move focus, buffered typeahead locates options,
|
|
333
|
+
* Enter/Space commits the active choice, and Escape closes with invoker focus restoration.
|
|
334
|
+
* Opening focuses a registered option matching the selected value; an unmatched or null value
|
|
335
|
+
* does not choose the first option. Manual popover mode does not imply auto-mode outside-click
|
|
336
|
+
* dismissal.
|
|
422
337
|
* @since 1.0.0
|
|
423
|
-
* @category
|
|
338
|
+
* @category Controls
|
|
424
339
|
*/
|
|
425
340
|
export declare function Content<const Options extends ContentOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, ContentProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
426
341
|
/**
|
|
427
|
-
*
|
|
342
|
+
* Stable option identity, selection value, rendered content, and optional typeahead text.
|
|
428
343
|
*
|
|
429
344
|
* @remarks
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
* The options type makes required state, content, accessible relationships, and custom-host inputs
|
|
433
|
-
* visible before rendering.
|
|
434
|
-
*
|
|
435
|
-
* ## Ownership and lifetime
|
|
436
|
-
*
|
|
437
|
-
* This declaration is data or schema metadata and acquires no resources.
|
|
438
|
-
*
|
|
439
|
-
* ## Example
|
|
440
|
-
*
|
|
441
|
-
* Import with `import type { OptionOptions } from "@typed/ui/Select";` Extend the [Select.makeState
|
|
442
|
-
* runnable setup](/reference/%40typed%2Fui%2FSelect%23makeState). A selectable option is
|
|
443
|
-
* `const options: OptionOptions = { state, collection, id: "utc", value: "UTC", content: "UTC" }`.
|
|
345
|
+
* Share state and collection with Content. textValue should be the human-readable label when value
|
|
346
|
+
* is an internal code; disabled suppresses activation and participates in navigation.
|
|
444
347
|
* @since 1.0.0
|
|
445
|
-
* @category
|
|
348
|
+
* @category Component options
|
|
446
349
|
*/
|
|
447
350
|
export interface OptionOptions extends Dom.HostOptions<HTMLDivElement> {
|
|
448
351
|
/**
|
|
449
352
|
* Renderer-independent RefSubject state consumed by this component or operation.
|
|
450
353
|
* @since 1.0.0
|
|
451
|
-
* @category
|
|
354
|
+
* @category State connection
|
|
452
355
|
*/
|
|
453
356
|
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
454
357
|
/**
|
|
455
358
|
* Item registry used for collection-driven keyboard behavior and mounted ordering.
|
|
456
359
|
* @since 1.0.0
|
|
457
|
-
* @category
|
|
360
|
+
* @category Item registration
|
|
458
361
|
*/
|
|
459
362
|
readonly collection?: RefSubject.RefSubject<Collection.State<string>>;
|
|
460
363
|
/**
|
|
461
364
|
* Stable id used for collection identity and ARIA relationships.
|
|
462
365
|
* @since 1.0.0
|
|
463
|
-
* @category
|
|
366
|
+
* @category Identity and relationships
|
|
464
367
|
*/
|
|
465
368
|
readonly id: string;
|
|
466
369
|
/**
|
|
467
370
|
* Current semantic value selected or edited by the widget.
|
|
468
371
|
* @since 1.0.0
|
|
469
|
-
* @category
|
|
372
|
+
* @category Value state
|
|
470
373
|
*/
|
|
471
374
|
readonly value: string;
|
|
472
375
|
/**
|
|
473
376
|
* Renderable child content for the component host.
|
|
474
377
|
* @since 1.0.0
|
|
475
|
-
* @category
|
|
378
|
+
* @category Rendered content
|
|
476
379
|
*/
|
|
477
380
|
readonly content: Renderable.Any;
|
|
478
381
|
/**
|
|
479
382
|
* Search text used by typeahead independently of rendered markup.
|
|
480
383
|
* @since 1.0.0
|
|
481
|
-
* @category
|
|
384
|
+
* @category Keyboard navigation
|
|
482
385
|
*/
|
|
483
386
|
readonly textValue?: string;
|
|
484
387
|
/**
|
|
485
388
|
* Flag used by collection movement and widget handlers to skip activation by default.
|
|
486
389
|
* @since 1.0.0
|
|
487
|
-
* @category
|
|
390
|
+
* @category Availability
|
|
488
391
|
*/
|
|
489
392
|
readonly disabled?: boolean;
|
|
490
393
|
}
|
|
@@ -500,29 +403,15 @@ declare function optionProps<const Options extends OptionOptions>(options: Optio
|
|
|
500
403
|
};
|
|
501
404
|
type OptionProps<Options extends OptionOptions> = ReturnType<ReturnType<typeof optionProps<Options>>>;
|
|
502
405
|
/**
|
|
503
|
-
* Renders
|
|
504
|
-
* unless disabled.
|
|
406
|
+
* Renders a selectable listbox option with distinct active and selected state.
|
|
505
407
|
*
|
|
506
408
|
* @remarks
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
* ## Ownership and lifetime
|
|
513
|
-
*
|
|
514
|
-
* The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
|
|
515
|
-
* collection registrations only when rendered. The rendering Scope removes those resources;
|
|
516
|
-
* unrelated nodes and attributes remain caller-owned.
|
|
517
|
-
*
|
|
518
|
-
* ## Example
|
|
519
|
-
*
|
|
520
|
-
* Import with `import { Option } from "@typed/ui/Select";` Extend the [Select.makeState runnable
|
|
521
|
-
* setup](/reference/%40typed%2Fui%2FSelect%23makeState). Replace the linked program's final
|
|
522
|
-
* snapshot read with `Option({ state, id: "utc", value: "UTC", content: "UTC" })`; render that Fx
|
|
523
|
-
* before the same Scope closes.
|
|
409
|
+
* Click commits value and closes the popup; focus updates activeId without committing a new
|
|
410
|
+
* value. Register every option with the same collection used by Content for keyboard navigation.
|
|
411
|
+
* Supply textValue for readable typeahead when value is an internal code. This div is not a
|
|
412
|
+
* native form field.
|
|
524
413
|
* @since 1.0.0
|
|
525
|
-
* @category
|
|
414
|
+
* @category Controls
|
|
526
415
|
*/
|
|
527
416
|
export declare function Option<const Options extends OptionOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, OptionProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
528
417
|
export {};
|
package/dist/Select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.ts"],"names":[],"mappings":"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"}
|