@fusion.dev/helix-headless 0.47.1 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +149 -39
- package/dist/color-picker/root/color-picker-root.d.ts +78 -3
- package/dist/color-picker/root/color-picker-root.js +47 -4
- package/dist/outline/root/outline-root.d.ts +1 -1
- package/dist/rating/root/rating-root.d.ts +65 -7
- package/dist/rating/root/rating-root.js +35 -8
- package/dist/tabs/panel/tab-panel.d.ts +1 -1
- package/dist/tabs/root/tabs-root.d.ts +1 -1
- package/dist/tabs/tab/tab.d.ts +1 -1
- package/dist/time-picker/root/time-picker-root.d.ts +13 -0
- package/dist/time-picker/root/time-picker-root.js +2 -0
- package/dist/tour/root/tour-root.d.ts +1 -1
- package/dist/tour/stop/tour-stop.d.ts +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +377 -22
- package/types/vue.d.ts +99 -4
package/types/jsx.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type {
|
|
|
18
18
|
HelixDismissEvent,
|
|
19
19
|
HelixFacetEvent,
|
|
20
20
|
HelixFilterEvent,
|
|
21
|
+
HelixFormElement,
|
|
21
22
|
HelixHeadlessAccordion,
|
|
22
23
|
HelixHeadlessAccordionItem,
|
|
23
24
|
HelixHeadlessAnnouncement,
|
|
@@ -3154,6 +3155,67 @@ answer to which one is authoritative or which has the caret. Do not close it
|
|
|
3154
3155
|
the other way round, with Color Input dropping its own field: the value
|
|
3155
3156
|
would then be unreadable and unpasteable without opening a panel. */
|
|
3156
3157
|
noValue?: (HelixHeadlessColorPicker["noValue"]) | undefined;
|
|
3158
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
3159
|
+
|
|
3160
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
3161
|
+
component already has: `requestValue` is what every path here comes through,
|
|
3162
|
+
and gating it once is what stops the next call site from being written
|
|
3163
|
+
without the check.
|
|
3164
|
+
|
|
3165
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
3166
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
3167
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
3168
|
+
else set needs.
|
|
3169
|
+
|
|
3170
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
3171
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
3172
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
3173
|
+
value is requested. Gating only the request would leave the square under
|
|
3174
|
+
the reader's pointer and the value where it was, which is a control that
|
|
3175
|
+
refuses and looks like it accepted. */
|
|
3176
|
+
readonly?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
3177
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
3178
|
+
|
|
3179
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
3180
|
+
component already has: `requestValue` is what every path here comes through,
|
|
3181
|
+
and gating it once is what stops the next call site from being written
|
|
3182
|
+
without the check.
|
|
3183
|
+
|
|
3184
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
3185
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
3186
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
3187
|
+
else set needs.
|
|
3188
|
+
|
|
3189
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
3190
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
3191
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
3192
|
+
value is requested. Gating only the request would leave the square under
|
|
3193
|
+
the reader's pointer and the value where it was, which is a control that
|
|
3194
|
+
refuses and looks like it accepted. */
|
|
3195
|
+
readOnly?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
3196
|
+
/** Whether the form refuses to submit while no color is chosen.
|
|
3197
|
+
|
|
3198
|
+
**A color is exactly as requirable as a date**, which is the comparison
|
|
3199
|
+
that settles it: this element extends `HelixFormElement`, carries `name`
|
|
3200
|
+
and reports its value, so a consumer writing
|
|
3201
|
+
`<helix-color-picker name="brand" required>` inside a form has every reason
|
|
3202
|
+
to expect the form to refuse an empty one. Its two siblings in the same
|
|
3203
|
+
composition position, Date Picker and Time Picker, both check it.
|
|
3204
|
+
|
|
3205
|
+
Written out rather than taken from `MixinField`, for the reason those two
|
|
3206
|
+
record: the mixin brings a label, a hint and a feedback region, and this is
|
|
3207
|
+
a panel composed *into* a field that already has all three, so taking it
|
|
3208
|
+
would give one control two of each. What is left is the validity call and
|
|
3209
|
+
the anchor the browser points its bubble at.
|
|
3210
|
+
|
|
3211
|
+
**Emptiness is the only fault reported, and bad input deliberately is
|
|
3212
|
+
not.** The value row is typed into a character at a time and every
|
|
3213
|
+
keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
|
|
3214
|
+
reported fault on the way to `#00ff00`. Date Picker and Time Picker can
|
|
3215
|
+
report bad input because their value moves only on a commit. Color Input
|
|
3216
|
+
reports it for this family instead, once, against the field the reader
|
|
3217
|
+
typed into. */
|
|
3218
|
+
required?: (HelixHeadlessColorPicker["required"]) | undefined;
|
|
3157
3219
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
3158
3220
|
swatches?: (HelixHeadlessColorPicker["swatches"]) | undefined;
|
|
3159
3221
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -3274,6 +3336,67 @@ answer to which one is authoritative or which has the caret. Do not close it
|
|
|
3274
3336
|
the other way round, with Color Input dropping its own field: the value
|
|
3275
3337
|
would then be unreadable and unpasteable without opening a panel. */
|
|
3276
3338
|
"prop:noValue"?: (HelixHeadlessColorPicker["noValue"]) | undefined;
|
|
3339
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
3340
|
+
|
|
3341
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
3342
|
+
component already has: `requestValue` is what every path here comes through,
|
|
3343
|
+
and gating it once is what stops the next call site from being written
|
|
3344
|
+
without the check.
|
|
3345
|
+
|
|
3346
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
3347
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
3348
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
3349
|
+
else set needs.
|
|
3350
|
+
|
|
3351
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
3352
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
3353
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
3354
|
+
value is requested. Gating only the request would leave the square under
|
|
3355
|
+
the reader's pointer and the value where it was, which is a control that
|
|
3356
|
+
refuses and looks like it accepted. */
|
|
3357
|
+
"bool:readonly"?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
3358
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
3359
|
+
|
|
3360
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
3361
|
+
component already has: `requestValue` is what every path here comes through,
|
|
3362
|
+
and gating it once is what stops the next call site from being written
|
|
3363
|
+
without the check.
|
|
3364
|
+
|
|
3365
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
3366
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
3367
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
3368
|
+
else set needs.
|
|
3369
|
+
|
|
3370
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
3371
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
3372
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
3373
|
+
value is requested. Gating only the request would leave the square under
|
|
3374
|
+
the reader's pointer and the value where it was, which is a control that
|
|
3375
|
+
refuses and looks like it accepted. */
|
|
3376
|
+
"prop:readOnly"?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
3377
|
+
/** Whether the form refuses to submit while no color is chosen.
|
|
3378
|
+
|
|
3379
|
+
**A color is exactly as requirable as a date**, which is the comparison
|
|
3380
|
+
that settles it: this element extends `HelixFormElement`, carries `name`
|
|
3381
|
+
and reports its value, so a consumer writing
|
|
3382
|
+
`<helix-color-picker name="brand" required>` inside a form has every reason
|
|
3383
|
+
to expect the form to refuse an empty one. Its two siblings in the same
|
|
3384
|
+
composition position, Date Picker and Time Picker, both check it.
|
|
3385
|
+
|
|
3386
|
+
Written out rather than taken from `MixinField`, for the reason those two
|
|
3387
|
+
record: the mixin brings a label, a hint and a feedback region, and this is
|
|
3388
|
+
a panel composed *into* a field that already has all three, so taking it
|
|
3389
|
+
would give one control two of each. What is left is the validity call and
|
|
3390
|
+
the anchor the browser points its bubble at.
|
|
3391
|
+
|
|
3392
|
+
**Emptiness is the only fault reported, and bad input deliberately is
|
|
3393
|
+
not.** The value row is typed into a character at a time and every
|
|
3394
|
+
keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
|
|
3395
|
+
reported fault on the way to `#00ff00`. Date Picker and Time Picker can
|
|
3396
|
+
report bad input because their value moves only on a commit. Color Input
|
|
3397
|
+
reports it for this family instead, once, against the field the reader
|
|
3398
|
+
typed into. */
|
|
3399
|
+
"prop:required"?: (HelixHeadlessColorPicker["required"]) | undefined;
|
|
3277
3400
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
3278
3401
|
"prop:swatches"?: (HelixHeadlessColorPicker["swatches"]) | undefined;
|
|
3279
3402
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -11901,7 +12024,41 @@ export type HelixHeadlessRatingProps = {
|
|
|
11901
12024
|
Zero rather than one, because "no rating" and "the worst rating" are
|
|
11902
12025
|
different answers and a control that cannot express the first has to
|
|
11903
12026
|
pretend the second. A survey that requires an answer says so with
|
|
11904
|
-
`required`, not by making one unreachable.
|
|
12027
|
+
`required`, not by making one unreachable.
|
|
12028
|
+
|
|
12029
|
+
**It is the floor of the scale, and every edge follows from that.**
|
|
12030
|
+
|
|
12031
|
+
*Clearing* returns the row to it. An empty rating, a value nothing can
|
|
12032
|
+
parse, and a form reset with nothing declared are all the same situation,
|
|
12033
|
+
and all three draw `min` filled: at the default of zero that is the empty
|
|
12034
|
+
row this always drew, and at `min="2"` it is two marks, the way an empty
|
|
12035
|
+
`Slider` sits at its own minimum rather than at zero. The value is still
|
|
12036
|
+
`""` through all of it, so `required` still refuses it and `valueAsNumber`
|
|
12037
|
+
is still `NaN`: what the row shows is the bottom of the scale, not an
|
|
12038
|
+
answer somebody gave.
|
|
12039
|
+
|
|
12040
|
+
*The steps* are the scores from `step` up to `max` that are not below it,
|
|
12041
|
+
so `min="2"` on five marks offers 2 to 5 and leaves the first two marks
|
|
12042
|
+
filled and unpressable. At zero nothing is dropped, which is why the
|
|
12043
|
+
default row is unchanged.
|
|
12044
|
+
|
|
12045
|
+
*The keyboard* moves through those steps and no others. `wrap` is already
|
|
12046
|
+
false here, so arrowing down from the lowest one holds its ground rather
|
|
12047
|
+
than reaching a score this property forbids, and the tab stop an unrated
|
|
12048
|
+
rating carries sits on the lowest score offered rather than on the first
|
|
12049
|
+
mark.
|
|
12050
|
+
|
|
12051
|
+
*A `min` between two steps* is a floor and not a step: `min="1.5"` with
|
|
12052
|
+
whole marks clamps the value at 1.5 and offers 2 upward, since 1.5 is not
|
|
12053
|
+
somewhere the row can be pressed. That is a real thing to ask for and is
|
|
12054
|
+
left to mean what it says.
|
|
12055
|
+
|
|
12056
|
+
*A `min` outside the marks is refused rather than obeyed*, and says so
|
|
12057
|
+
once on the console. Below zero and anything that is not a number are read
|
|
12058
|
+
as zero, there being no mark to draw for a negative score; above `max` is
|
|
12059
|
+
read as `max`, which collapses the scale to its top score rather than
|
|
12060
|
+
leaving a rating with nothing to press. A property that silently accepts
|
|
12061
|
+
nonsense is the fault this pays off, so neither case is quietly ignored. */
|
|
11905
12062
|
min?: (HelixHeadlessRating["min"]) | undefined;
|
|
11906
12063
|
/** Whether this shows a score rather than asks for one.
|
|
11907
12064
|
|
|
@@ -12024,7 +12181,41 @@ export type HelixHeadlessRatingSolidJsProps = {
|
|
|
12024
12181
|
Zero rather than one, because "no rating" and "the worst rating" are
|
|
12025
12182
|
different answers and a control that cannot express the first has to
|
|
12026
12183
|
pretend the second. A survey that requires an answer says so with
|
|
12027
|
-
`required`, not by making one unreachable.
|
|
12184
|
+
`required`, not by making one unreachable.
|
|
12185
|
+
|
|
12186
|
+
**It is the floor of the scale, and every edge follows from that.**
|
|
12187
|
+
|
|
12188
|
+
*Clearing* returns the row to it. An empty rating, a value nothing can
|
|
12189
|
+
parse, and a form reset with nothing declared are all the same situation,
|
|
12190
|
+
and all three draw `min` filled: at the default of zero that is the empty
|
|
12191
|
+
row this always drew, and at `min="2"` it is two marks, the way an empty
|
|
12192
|
+
`Slider` sits at its own minimum rather than at zero. The value is still
|
|
12193
|
+
`""` through all of it, so `required` still refuses it and `valueAsNumber`
|
|
12194
|
+
is still `NaN`: what the row shows is the bottom of the scale, not an
|
|
12195
|
+
answer somebody gave.
|
|
12196
|
+
|
|
12197
|
+
*The steps* are the scores from `step` up to `max` that are not below it,
|
|
12198
|
+
so `min="2"` on five marks offers 2 to 5 and leaves the first two marks
|
|
12199
|
+
filled and unpressable. At zero nothing is dropped, which is why the
|
|
12200
|
+
default row is unchanged.
|
|
12201
|
+
|
|
12202
|
+
*The keyboard* moves through those steps and no others. `wrap` is already
|
|
12203
|
+
false here, so arrowing down from the lowest one holds its ground rather
|
|
12204
|
+
than reaching a score this property forbids, and the tab stop an unrated
|
|
12205
|
+
rating carries sits on the lowest score offered rather than on the first
|
|
12206
|
+
mark.
|
|
12207
|
+
|
|
12208
|
+
*A `min` between two steps* is a floor and not a step: `min="1.5"` with
|
|
12209
|
+
whole marks clamps the value at 1.5 and offers 2 upward, since 1.5 is not
|
|
12210
|
+
somewhere the row can be pressed. That is a real thing to ask for and is
|
|
12211
|
+
left to mean what it says.
|
|
12212
|
+
|
|
12213
|
+
*A `min` outside the marks is refused rather than obeyed*, and says so
|
|
12214
|
+
once on the console. Below zero and anything that is not a number are read
|
|
12215
|
+
as zero, there being no mark to draw for a negative score; above `max` is
|
|
12216
|
+
read as `max`, which collapses the scale to its top score rather than
|
|
12217
|
+
leaving a rating with nothing to press. A property that silently accepts
|
|
12218
|
+
nonsense is the fault this pays off, so neither case is quietly ignored. */
|
|
12028
12219
|
"prop:min"?: (HelixHeadlessRating["min"]) | undefined;
|
|
12029
12220
|
/** Whether this shows a score rather than asks for one.
|
|
12030
12221
|
|
|
@@ -20671,6 +20862,46 @@ export type CustomElements = {
|
|
|
20671
20862
|
* answer to which one is authoritative or which has the caret. Do not close it
|
|
20672
20863
|
* the other way round, with Color Input dropping its own field: the value
|
|
20673
20864
|
* would then be unreadable and unpasteable without opening a panel.
|
|
20865
|
+
* - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
|
|
20866
|
+
*
|
|
20867
|
+
* **Enforced by refusing every request in one place**, which is the seam this
|
|
20868
|
+
* component already has: `requestValue` is what every path here comes through,
|
|
20869
|
+
* and gating it once is what stops the next call site from being written
|
|
20870
|
+
* without the check.
|
|
20871
|
+
*
|
|
20872
|
+
* Not `disabled`, which is the confusion worth naming: a disabled control
|
|
20873
|
+
* submits nothing and leaves the tab order, and a read-only one submits its
|
|
20874
|
+
* value and stays reachable, which is what a form showing a color somebody
|
|
20875
|
+
* else set needs.
|
|
20876
|
+
*
|
|
20877
|
+
* **One gate is not enough here, and the second is `move`.** This picker
|
|
20878
|
+
* holds a model beside its value, which Date Picker and Time Picker do not:
|
|
20879
|
+
* `moved` is the HSB the square is drawn from, and it is written before the
|
|
20880
|
+
* value is requested. Gating only the request would leave the square under
|
|
20881
|
+
* the reader's pointer and the value where it was, which is a control that
|
|
20882
|
+
* refuses and looks like it accepted.
|
|
20883
|
+
* - `required`: Whether the form refuses to submit while no color is chosen.
|
|
20884
|
+
*
|
|
20885
|
+
* **A color is exactly as requirable as a date**, which is the comparison
|
|
20886
|
+
* that settles it: this element extends `HelixFormElement`, carries `name`
|
|
20887
|
+
* and reports its value, so a consumer writing
|
|
20888
|
+
* `<helix-color-picker name="brand" required>` inside a form has every reason
|
|
20889
|
+
* to expect the form to refuse an empty one. Its two siblings in the same
|
|
20890
|
+
* composition position, Date Picker and Time Picker, both check it.
|
|
20891
|
+
*
|
|
20892
|
+
* Written out rather than taken from `MixinField`, for the reason those two
|
|
20893
|
+
* record: the mixin brings a label, a hint and a feedback region, and this is
|
|
20894
|
+
* a panel composed *into* a field that already has all three, so taking it
|
|
20895
|
+
* would give one control two of each. What is left is the validity call and
|
|
20896
|
+
* the anchor the browser points its bubble at.
|
|
20897
|
+
*
|
|
20898
|
+
* **Emptiness is the only fault reported, and bad input deliberately is
|
|
20899
|
+
* not.** The value row is typed into a character at a time and every
|
|
20900
|
+
* keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
|
|
20901
|
+
* reported fault on the way to `#00ff00`. Date Picker and Time Picker can
|
|
20902
|
+
* report bad input because their value moves only on a commit. Color Input
|
|
20903
|
+
* reports it for this family instead, once, against the field the reader
|
|
20904
|
+
* typed into.
|
|
20674
20905
|
* - `swatches`: Colors offered under the picker, as a comma-separated list.
|
|
20675
20906
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
20676
20907
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -20748,14 +20979,8 @@ export type CustomElements = {
|
|
|
20748
20979
|
*
|
|
20749
20980
|
* Methods that can be called to access component functionality.
|
|
20750
20981
|
*
|
|
20982
|
+
* - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
|
|
20751
20983
|
* - `focus(options?: FocusOptions) => void`: Puts the keyboard on the square, which is the control a reader wants.
|
|
20752
|
-
* - `requestValue(next: string) => boolean`: Requests a new value, and reports whether the request stood.
|
|
20753
|
-
*
|
|
20754
|
-
* Announces before it acts, so `preventDefault()` on the `helix-before-change` is
|
|
20755
|
-
* a refusal and nothing moves. Nobody refusing means the control updates
|
|
20756
|
-
* itself, whether or not a consumer declared `value`: a declared property
|
|
20757
|
-
* is a seed and a correction, the way `<input value>` is, and a consumer
|
|
20758
|
-
* who wants the change for themselves refuses it and assigns their own.
|
|
20759
20984
|
* - `formResetCallback() => void`: Returns the control to the value its markup declared.
|
|
20760
20985
|
*
|
|
20761
20986
|
* Both halves are dropped, the consumer's and the control's, because a
|
|
@@ -29361,6 +29586,40 @@ export type CustomElements = {
|
|
|
29361
29586
|
* different answers and a control that cannot express the first has to
|
|
29362
29587
|
* pretend the second. A survey that requires an answer says so with
|
|
29363
29588
|
* `required`, not by making one unreachable.
|
|
29589
|
+
*
|
|
29590
|
+
* **It is the floor of the scale, and every edge follows from that.**
|
|
29591
|
+
*
|
|
29592
|
+
* *Clearing* returns the row to it. An empty rating, a value nothing can
|
|
29593
|
+
* parse, and a form reset with nothing declared are all the same situation,
|
|
29594
|
+
* and all three draw `min` filled: at the default of zero that is the empty
|
|
29595
|
+
* row this always drew, and at `min="2"` it is two marks, the way an empty
|
|
29596
|
+
* `Slider` sits at its own minimum rather than at zero. The value is still
|
|
29597
|
+
* `""` through all of it, so `required` still refuses it and `valueAsNumber`
|
|
29598
|
+
* is still `NaN`: what the row shows is the bottom of the scale, not an
|
|
29599
|
+
* answer somebody gave.
|
|
29600
|
+
*
|
|
29601
|
+
* *The steps* are the scores from `step` up to `max` that are not below it,
|
|
29602
|
+
* so `min="2"` on five marks offers 2 to 5 and leaves the first two marks
|
|
29603
|
+
* filled and unpressable. At zero nothing is dropped, which is why the
|
|
29604
|
+
* default row is unchanged.
|
|
29605
|
+
*
|
|
29606
|
+
* *The keyboard* moves through those steps and no others. `wrap` is already
|
|
29607
|
+
* false here, so arrowing down from the lowest one holds its ground rather
|
|
29608
|
+
* than reaching a score this property forbids, and the tab stop an unrated
|
|
29609
|
+
* rating carries sits on the lowest score offered rather than on the first
|
|
29610
|
+
* mark.
|
|
29611
|
+
*
|
|
29612
|
+
* *A `min` between two steps* is a floor and not a step: `min="1.5"` with
|
|
29613
|
+
* whole marks clamps the value at 1.5 and offers 2 upward, since 1.5 is not
|
|
29614
|
+
* somewhere the row can be pressed. That is a real thing to ask for and is
|
|
29615
|
+
* left to mean what it says.
|
|
29616
|
+
*
|
|
29617
|
+
* *A `min` outside the marks is refused rather than obeyed*, and says so
|
|
29618
|
+
* once on the console. Below zero and anything that is not a number are read
|
|
29619
|
+
* as zero, there being no mark to draw for a negative score; above `max` is
|
|
29620
|
+
* read as `max`, which collapses the scale to its top score rather than
|
|
29621
|
+
* leaving a rating with nothing to press. A property that silently accepts
|
|
29622
|
+
* nonsense is the fault this pays off, so neither case is quietly ignored.
|
|
29364
29623
|
* - `readonly`/`readOnly`: Whether this shows a score rather than asks for one.
|
|
29365
29624
|
*
|
|
29366
29625
|
* A readout is not a control that has been switched off. It takes no focus,
|
|
@@ -29518,14 +29777,15 @@ export type CustomElements = {
|
|
|
29518
29777
|
*
|
|
29519
29778
|
* - `--rating-full`: How many marks are wholly filled. (default: `undefined`)
|
|
29520
29779
|
* - `--rating-part`: How much of the next mark is filled, 0 to 1. (default: `undefined`)
|
|
29521
|
-
* - `--rating-step`:
|
|
29522
|
-
* - `--rating-steps`: How many steps
|
|
29780
|
+
* - `--rating-step`: Which step along the row a target is, counting from one, whatever `min` leaves open. (default: `undefined`)
|
|
29781
|
+
* - `--rating-steps`: How many steps the whole row holds, which is `max` over `step`. (default: `undefined`)
|
|
29523
29782
|
*
|
|
29524
29783
|
* ## CSS Parts
|
|
29525
29784
|
*
|
|
29526
29785
|
* Custom selectors for styling elements within the component.
|
|
29527
29786
|
*
|
|
29528
29787
|
* - `feedback`: What is wrong with it.
|
|
29788
|
+
* - `field`: The row: the marks, and the score beside them.
|
|
29529
29789
|
* - `fill`: The filled marks, clipped to the score.
|
|
29530
29790
|
* - `hint`: Help under the marks, while nothing is wrong.
|
|
29531
29791
|
* - `label`: The question, over the marks.
|
|
@@ -32726,6 +32986,19 @@ export type CustomElements = {
|
|
|
32726
32986
|
* string, which is the whole reason the shape is that one. What each row *says*
|
|
32727
32987
|
* is the reader's own convention, from `Intl`.
|
|
32728
32988
|
*
|
|
32989
|
+
* **The chosen row is marked in the markup, not worked out on upgrade.** The
|
|
32990
|
+
* listbox is handed the answer as `.value`, and lit-ssr serializes no property
|
|
32991
|
+
* binding, so a served `value="09:30"` shipped ninety-six rows with nothing on
|
|
32992
|
+
* any of them saying which one it was: the mark arrived when the listbox
|
|
32993
|
+
* upgraded and ran `place`. So each option is given `selected` as well, which
|
|
32994
|
+
* is an attribute binding and does serve, and which the listbox then agrees
|
|
32995
|
+
* with rather than fights, `place` writing the same answer from the same value.
|
|
32996
|
+
* `selected` is the declaration a consumer writes on `Option` anywhere else in
|
|
32997
|
+
* the library, and Date Picker expresses its own choice as markup for the same
|
|
32998
|
+
* reason: a picker whose answer is invisible until a script runs is a picker
|
|
32999
|
+
* whose answer is not served at all. Both readings do it, the list and the
|
|
33000
|
+
* wheels, a wheel being a listbox like the list is.
|
|
33001
|
+
*
|
|
32729
33002
|
* ## Attributes & Properties
|
|
32730
33003
|
*
|
|
32731
33004
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -38489,6 +38762,46 @@ export type CustomElementsSolidJs = {
|
|
|
38489
38762
|
* answer to which one is authoritative or which has the caret. Do not close it
|
|
38490
38763
|
* the other way round, with Color Input dropping its own field: the value
|
|
38491
38764
|
* would then be unreadable and unpasteable without opening a panel.
|
|
38765
|
+
* - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
|
|
38766
|
+
*
|
|
38767
|
+
* **Enforced by refusing every request in one place**, which is the seam this
|
|
38768
|
+
* component already has: `requestValue` is what every path here comes through,
|
|
38769
|
+
* and gating it once is what stops the next call site from being written
|
|
38770
|
+
* without the check.
|
|
38771
|
+
*
|
|
38772
|
+
* Not `disabled`, which is the confusion worth naming: a disabled control
|
|
38773
|
+
* submits nothing and leaves the tab order, and a read-only one submits its
|
|
38774
|
+
* value and stays reachable, which is what a form showing a color somebody
|
|
38775
|
+
* else set needs.
|
|
38776
|
+
*
|
|
38777
|
+
* **One gate is not enough here, and the second is `move`.** This picker
|
|
38778
|
+
* holds a model beside its value, which Date Picker and Time Picker do not:
|
|
38779
|
+
* `moved` is the HSB the square is drawn from, and it is written before the
|
|
38780
|
+
* value is requested. Gating only the request would leave the square under
|
|
38781
|
+
* the reader's pointer and the value where it was, which is a control that
|
|
38782
|
+
* refuses and looks like it accepted.
|
|
38783
|
+
* - `required`: Whether the form refuses to submit while no color is chosen.
|
|
38784
|
+
*
|
|
38785
|
+
* **A color is exactly as requirable as a date**, which is the comparison
|
|
38786
|
+
* that settles it: this element extends `HelixFormElement`, carries `name`
|
|
38787
|
+
* and reports its value, so a consumer writing
|
|
38788
|
+
* `<helix-color-picker name="brand" required>` inside a form has every reason
|
|
38789
|
+
* to expect the form to refuse an empty one. Its two siblings in the same
|
|
38790
|
+
* composition position, Date Picker and Time Picker, both check it.
|
|
38791
|
+
*
|
|
38792
|
+
* Written out rather than taken from `MixinField`, for the reason those two
|
|
38793
|
+
* record: the mixin brings a label, a hint and a feedback region, and this is
|
|
38794
|
+
* a panel composed *into* a field that already has all three, so taking it
|
|
38795
|
+
* would give one control two of each. What is left is the validity call and
|
|
38796
|
+
* the anchor the browser points its bubble at.
|
|
38797
|
+
*
|
|
38798
|
+
* **Emptiness is the only fault reported, and bad input deliberately is
|
|
38799
|
+
* not.** The value row is typed into a character at a time and every
|
|
38800
|
+
* keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
|
|
38801
|
+
* reported fault on the way to `#00ff00`. Date Picker and Time Picker can
|
|
38802
|
+
* report bad input because their value moves only on a commit. Color Input
|
|
38803
|
+
* reports it for this family instead, once, against the field the reader
|
|
38804
|
+
* typed into.
|
|
38492
38805
|
* - `swatches`: Colors offered under the picker, as a comma-separated list.
|
|
38493
38806
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
38494
38807
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -38566,14 +38879,8 @@ export type CustomElementsSolidJs = {
|
|
|
38566
38879
|
*
|
|
38567
38880
|
* Methods that can be called to access component functionality.
|
|
38568
38881
|
*
|
|
38882
|
+
* - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
|
|
38569
38883
|
* - `focus(options?: FocusOptions) => void`: Puts the keyboard on the square, which is the control a reader wants.
|
|
38570
|
-
* - `requestValue(next: string) => boolean`: Requests a new value, and reports whether the request stood.
|
|
38571
|
-
*
|
|
38572
|
-
* Announces before it acts, so `preventDefault()` on the `helix-before-change` is
|
|
38573
|
-
* a refusal and nothing moves. Nobody refusing means the control updates
|
|
38574
|
-
* itself, whether or not a consumer declared `value`: a declared property
|
|
38575
|
-
* is a seed and a correction, the way `<input value>` is, and a consumer
|
|
38576
|
-
* who wants the change for themselves refuses it and assigns their own.
|
|
38577
38884
|
* - `formResetCallback() => void`: Returns the control to the value its markup declared.
|
|
38578
38885
|
*
|
|
38579
38886
|
* Both halves are dropped, the consumer's and the control's, because a
|
|
@@ -47303,6 +47610,40 @@ export type CustomElementsSolidJs = {
|
|
|
47303
47610
|
* different answers and a control that cannot express the first has to
|
|
47304
47611
|
* pretend the second. A survey that requires an answer says so with
|
|
47305
47612
|
* `required`, not by making one unreachable.
|
|
47613
|
+
*
|
|
47614
|
+
* **It is the floor of the scale, and every edge follows from that.**
|
|
47615
|
+
*
|
|
47616
|
+
* *Clearing* returns the row to it. An empty rating, a value nothing can
|
|
47617
|
+
* parse, and a form reset with nothing declared are all the same situation,
|
|
47618
|
+
* and all three draw `min` filled: at the default of zero that is the empty
|
|
47619
|
+
* row this always drew, and at `min="2"` it is two marks, the way an empty
|
|
47620
|
+
* `Slider` sits at its own minimum rather than at zero. The value is still
|
|
47621
|
+
* `""` through all of it, so `required` still refuses it and `valueAsNumber`
|
|
47622
|
+
* is still `NaN`: what the row shows is the bottom of the scale, not an
|
|
47623
|
+
* answer somebody gave.
|
|
47624
|
+
*
|
|
47625
|
+
* *The steps* are the scores from `step` up to `max` that are not below it,
|
|
47626
|
+
* so `min="2"` on five marks offers 2 to 5 and leaves the first two marks
|
|
47627
|
+
* filled and unpressable. At zero nothing is dropped, which is why the
|
|
47628
|
+
* default row is unchanged.
|
|
47629
|
+
*
|
|
47630
|
+
* *The keyboard* moves through those steps and no others. `wrap` is already
|
|
47631
|
+
* false here, so arrowing down from the lowest one holds its ground rather
|
|
47632
|
+
* than reaching a score this property forbids, and the tab stop an unrated
|
|
47633
|
+
* rating carries sits on the lowest score offered rather than on the first
|
|
47634
|
+
* mark.
|
|
47635
|
+
*
|
|
47636
|
+
* *A `min` between two steps* is a floor and not a step: `min="1.5"` with
|
|
47637
|
+
* whole marks clamps the value at 1.5 and offers 2 upward, since 1.5 is not
|
|
47638
|
+
* somewhere the row can be pressed. That is a real thing to ask for and is
|
|
47639
|
+
* left to mean what it says.
|
|
47640
|
+
*
|
|
47641
|
+
* *A `min` outside the marks is refused rather than obeyed*, and says so
|
|
47642
|
+
* once on the console. Below zero and anything that is not a number are read
|
|
47643
|
+
* as zero, there being no mark to draw for a negative score; above `max` is
|
|
47644
|
+
* read as `max`, which collapses the scale to its top score rather than
|
|
47645
|
+
* leaving a rating with nothing to press. A property that silently accepts
|
|
47646
|
+
* nonsense is the fault this pays off, so neither case is quietly ignored.
|
|
47306
47647
|
* - `readonly`/`readOnly`: Whether this shows a score rather than asks for one.
|
|
47307
47648
|
*
|
|
47308
47649
|
* A readout is not a control that has been switched off. It takes no focus,
|
|
@@ -47460,14 +47801,15 @@ export type CustomElementsSolidJs = {
|
|
|
47460
47801
|
*
|
|
47461
47802
|
* - `--rating-full`: How many marks are wholly filled. (default: `undefined`)
|
|
47462
47803
|
* - `--rating-part`: How much of the next mark is filled, 0 to 1. (default: `undefined`)
|
|
47463
|
-
* - `--rating-step`:
|
|
47464
|
-
* - `--rating-steps`: How many steps
|
|
47804
|
+
* - `--rating-step`: Which step along the row a target is, counting from one, whatever `min` leaves open. (default: `undefined`)
|
|
47805
|
+
* - `--rating-steps`: How many steps the whole row holds, which is `max` over `step`. (default: `undefined`)
|
|
47465
47806
|
*
|
|
47466
47807
|
* ## CSS Parts
|
|
47467
47808
|
*
|
|
47468
47809
|
* Custom selectors for styling elements within the component.
|
|
47469
47810
|
*
|
|
47470
47811
|
* - `feedback`: What is wrong with it.
|
|
47812
|
+
* - `field`: The row: the marks, and the score beside them.
|
|
47471
47813
|
* - `fill`: The filled marks, clipped to the score.
|
|
47472
47814
|
* - `hint`: Help under the marks, while nothing is wrong.
|
|
47473
47815
|
* - `label`: The question, over the marks.
|
|
@@ -50738,6 +51080,19 @@ export type CustomElementsSolidJs = {
|
|
|
50738
51080
|
* string, which is the whole reason the shape is that one. What each row *says*
|
|
50739
51081
|
* is the reader's own convention, from `Intl`.
|
|
50740
51082
|
*
|
|
51083
|
+
* **The chosen row is marked in the markup, not worked out on upgrade.** The
|
|
51084
|
+
* listbox is handed the answer as `.value`, and lit-ssr serializes no property
|
|
51085
|
+
* binding, so a served `value="09:30"` shipped ninety-six rows with nothing on
|
|
51086
|
+
* any of them saying which one it was: the mark arrived when the listbox
|
|
51087
|
+
* upgraded and ran `place`. So each option is given `selected` as well, which
|
|
51088
|
+
* is an attribute binding and does serve, and which the listbox then agrees
|
|
51089
|
+
* with rather than fights, `place` writing the same answer from the same value.
|
|
51090
|
+
* `selected` is the declaration a consumer writes on `Option` anywhere else in
|
|
51091
|
+
* the library, and Date Picker expresses its own choice as markup for the same
|
|
51092
|
+
* reason: a picker whose answer is invisible until a script runs is a picker
|
|
51093
|
+
* whose answer is not served at all. Both readings do it, the list and the
|
|
51094
|
+
* wheels, a wheel being a listbox like the list is.
|
|
51095
|
+
*
|
|
50741
51096
|
* ## Attributes & Properties
|
|
50742
51097
|
*
|
|
50743
51098
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -53342,9 +53697,9 @@ export type CustomCssProperties = {
|
|
|
53342
53697
|
"--rating-full"?: (string) | undefined;
|
|
53343
53698
|
/** How much of the next mark is filled, 0 to 1. */
|
|
53344
53699
|
"--rating-part"?: (string) | undefined;
|
|
53345
|
-
/**
|
|
53700
|
+
/** Which step along the row a target is, counting from one, whatever `min` leaves open. */
|
|
53346
53701
|
"--rating-step"?: (string) | undefined;
|
|
53347
|
-
/** How many steps
|
|
53702
|
+
/** How many steps the whole row holds, which is `max` over `step`. */
|
|
53348
53703
|
"--rating-steps"?: (string) | undefined;
|
|
53349
53704
|
/** Where a point sits across, as a percentage. Written by the component. */
|
|
53350
53705
|
"--chart-point-x"?: (string) | undefined;
|
package/types/vue.d.ts
CHANGED
|
@@ -1664,6 +1664,67 @@ answer to which one is authoritative or which has the caret. Do not close it
|
|
|
1664
1664
|
the other way round, with Color Input dropping its own field: the value
|
|
1665
1665
|
would then be unreadable and unpasteable without opening a panel. */
|
|
1666
1666
|
noValue?: (HelixHeadlessColorPicker["noValue"]) | undefined;
|
|
1667
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
1668
|
+
|
|
1669
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
1670
|
+
component already has: `requestValue` is what every path here comes through,
|
|
1671
|
+
and gating it once is what stops the next call site from being written
|
|
1672
|
+
without the check.
|
|
1673
|
+
|
|
1674
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
1675
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
1676
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
1677
|
+
else set needs.
|
|
1678
|
+
|
|
1679
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
1680
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
1681
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
1682
|
+
value is requested. Gating only the request would leave the square under
|
|
1683
|
+
the reader's pointer and the value where it was, which is a control that
|
|
1684
|
+
refuses and looks like it accepted. */
|
|
1685
|
+
readonly?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
1686
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
1687
|
+
|
|
1688
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
1689
|
+
component already has: `requestValue` is what every path here comes through,
|
|
1690
|
+
and gating it once is what stops the next call site from being written
|
|
1691
|
+
without the check.
|
|
1692
|
+
|
|
1693
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
1694
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
1695
|
+
value and stays reachable, which is what a form showing a color somebody
|
|
1696
|
+
else set needs.
|
|
1697
|
+
|
|
1698
|
+
**One gate is not enough here, and the second is `move`.** This picker
|
|
1699
|
+
holds a model beside its value, which Date Picker and Time Picker do not:
|
|
1700
|
+
`moved` is the HSB the square is drawn from, and it is written before the
|
|
1701
|
+
value is requested. Gating only the request would leave the square under
|
|
1702
|
+
the reader's pointer and the value where it was, which is a control that
|
|
1703
|
+
refuses and looks like it accepted. */
|
|
1704
|
+
readOnly?: (HelixHeadlessColorPicker["readOnly"]) | undefined;
|
|
1705
|
+
/** Whether the form refuses to submit while no color is chosen.
|
|
1706
|
+
|
|
1707
|
+
**A color is exactly as requirable as a date**, which is the comparison
|
|
1708
|
+
that settles it: this element extends `HelixFormElement`, carries `name`
|
|
1709
|
+
and reports its value, so a consumer writing
|
|
1710
|
+
`<helix-color-picker name="brand" required>` inside a form has every reason
|
|
1711
|
+
to expect the form to refuse an empty one. Its two siblings in the same
|
|
1712
|
+
composition position, Date Picker and Time Picker, both check it.
|
|
1713
|
+
|
|
1714
|
+
Written out rather than taken from `MixinField`, for the reason those two
|
|
1715
|
+
record: the mixin brings a label, a hint and a feedback region, and this is
|
|
1716
|
+
a panel composed *into* a field that already has all three, so taking it
|
|
1717
|
+
would give one control two of each. What is left is the validity call and
|
|
1718
|
+
the anchor the browser points its bubble at.
|
|
1719
|
+
|
|
1720
|
+
**Emptiness is the only fault reported, and bad input deliberately is
|
|
1721
|
+
not.** The value row is typed into a character at a time and every
|
|
1722
|
+
keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
|
|
1723
|
+
reported fault on the way to `#00ff00`. Date Picker and Time Picker can
|
|
1724
|
+
report bad input because their value moves only on a commit. Color Input
|
|
1725
|
+
reports it for this family instead, once, against the field the reader
|
|
1726
|
+
typed into. */
|
|
1727
|
+
required?: (HelixHeadlessColorPicker["required"]) | undefined;
|
|
1667
1728
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
1668
1729
|
swatches?: (HelixHeadlessColorPicker["swatches"]) | undefined;
|
|
1669
1730
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -6105,7 +6166,41 @@ export type HelixHeadlessRatingVueProps = {
|
|
|
6105
6166
|
Zero rather than one, because "no rating" and "the worst rating" are
|
|
6106
6167
|
different answers and a control that cannot express the first has to
|
|
6107
6168
|
pretend the second. A survey that requires an answer says so with
|
|
6108
|
-
`required`, not by making one unreachable.
|
|
6169
|
+
`required`, not by making one unreachable.
|
|
6170
|
+
|
|
6171
|
+
**It is the floor of the scale, and every edge follows from that.**
|
|
6172
|
+
|
|
6173
|
+
*Clearing* returns the row to it. An empty rating, a value nothing can
|
|
6174
|
+
parse, and a form reset with nothing declared are all the same situation,
|
|
6175
|
+
and all three draw `min` filled: at the default of zero that is the empty
|
|
6176
|
+
row this always drew, and at `min="2"` it is two marks, the way an empty
|
|
6177
|
+
`Slider` sits at its own minimum rather than at zero. The value is still
|
|
6178
|
+
`""` through all of it, so `required` still refuses it and `valueAsNumber`
|
|
6179
|
+
is still `NaN`: what the row shows is the bottom of the scale, not an
|
|
6180
|
+
answer somebody gave.
|
|
6181
|
+
|
|
6182
|
+
*The steps* are the scores from `step` up to `max` that are not below it,
|
|
6183
|
+
so `min="2"` on five marks offers 2 to 5 and leaves the first two marks
|
|
6184
|
+
filled and unpressable. At zero nothing is dropped, which is why the
|
|
6185
|
+
default row is unchanged.
|
|
6186
|
+
|
|
6187
|
+
*The keyboard* moves through those steps and no others. `wrap` is already
|
|
6188
|
+
false here, so arrowing down from the lowest one holds its ground rather
|
|
6189
|
+
than reaching a score this property forbids, and the tab stop an unrated
|
|
6190
|
+
rating carries sits on the lowest score offered rather than on the first
|
|
6191
|
+
mark.
|
|
6192
|
+
|
|
6193
|
+
*A `min` between two steps* is a floor and not a step: `min="1.5"` with
|
|
6194
|
+
whole marks clamps the value at 1.5 and offers 2 upward, since 1.5 is not
|
|
6195
|
+
somewhere the row can be pressed. That is a real thing to ask for and is
|
|
6196
|
+
left to mean what it says.
|
|
6197
|
+
|
|
6198
|
+
*A `min` outside the marks is refused rather than obeyed*, and says so
|
|
6199
|
+
once on the console. Below zero and anything that is not a number are read
|
|
6200
|
+
as zero, there being no mark to draw for a negative score; above `max` is
|
|
6201
|
+
read as `max`, which collapses the scale to its top score rather than
|
|
6202
|
+
leaving a rating with nothing to press. A property that silently accepts
|
|
6203
|
+
nonsense is the fault this pays off, so neither case is quietly ignored. */
|
|
6109
6204
|
min?: (HelixHeadlessRating["min"]) | undefined;
|
|
6110
6205
|
/** Whether this shows a score rather than asks for one.
|
|
6111
6206
|
|
|
@@ -9038,9 +9133,9 @@ export type CustomCssProperties = {
|
|
|
9038
9133
|
"--rating-full"?: (string) | undefined;
|
|
9039
9134
|
/** How much of the next mark is filled, 0 to 1. */
|
|
9040
9135
|
"--rating-part"?: (string) | undefined;
|
|
9041
|
-
/**
|
|
9136
|
+
/** Which step along the row a target is, counting from one, whatever `min` leaves open. */
|
|
9042
9137
|
"--rating-step"?: (string) | undefined;
|
|
9043
|
-
/** How many steps
|
|
9138
|
+
/** How many steps the whole row holds, which is `max` over `step`. */
|
|
9044
9139
|
"--rating-steps"?: (string) | undefined;
|
|
9045
9140
|
/** Where a point sits across, as a percentage. Written by the component. */
|
|
9046
9141
|
"--chart-point-x"?: (string) | undefined;
|
|
@@ -9734,7 +9829,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9734
9829
|
HelixHeadlessTimeInputVueProps,
|
|
9735
9830
|
HelixHeadlessTimeInputVueEvents
|
|
9736
9831
|
>;
|
|
9737
|
-
/** **A list rather than three wheels**, and the reason is what a list already is. 'helix-listbox' brings the keyboard, the typeahead, the scroll into view and the announcement of a set of options, and a time at a step is a set of options. Three little wheels for hours, minutes and a meridiem are three controls to build, three to test, and a tab stop each for something a reader answers once. **A step is what makes it a list at all.** Fifteen minutes is ninety-six rows, which a reader scrolls or types into; one minute is one thousand four hundred and forty, which is a listbox in name only. So the list is for the times a product actually offers, and arbitrary times are the field's job in Input Time, the same division Date Input draws between typing a date and using the calendar. **The value is 'HH:mm' on a twenty-four hour clock, always.** That is what a form submits and what 'min' and 'max' compare against, and it sorts as a string, which is the whole reason the shape is that one. What each row *says* is the reader's own convention, from 'Intl'. */
|
|
9832
|
+
/** **A list rather than three wheels**, and the reason is what a list already is. 'helix-listbox' brings the keyboard, the typeahead, the scroll into view and the announcement of a set of options, and a time at a step is a set of options. Three little wheels for hours, minutes and a meridiem are three controls to build, three to test, and a tab stop each for something a reader answers once. **A step is what makes it a list at all.** Fifteen minutes is ninety-six rows, which a reader scrolls or types into; one minute is one thousand four hundred and forty, which is a listbox in name only. So the list is for the times a product actually offers, and arbitrary times are the field's job in Input Time, the same division Date Input draws between typing a date and using the calendar. **The value is 'HH:mm' on a twenty-four hour clock, always.** That is what a form submits and what 'min' and 'max' compare against, and it sorts as a string, which is the whole reason the shape is that one. What each row *says* is the reader's own convention, from 'Intl'. **The chosen row is marked in the markup, not worked out on upgrade.** The listbox is handed the answer as '.value', and lit-ssr serializes no property binding, so a served 'value="09:30"' shipped ninety-six rows with nothing on any of them saying which one it was: the mark arrived when the listbox upgraded and ran 'place'. So each option is given 'selected' as well, which is an attribute binding and does serve, and which the listbox then agrees with rather than fights, 'place' writing the same answer from the same value. 'selected' is the declaration a consumer writes on 'Option' anywhere else in the library, and Date Picker expresses its own choice as markup for the same reason: a picker whose answer is invisible until a script runs is a picker whose answer is not served at all. Both readings do it, the list and the wheels, a wheel being a listbox like the list is. */
|
|
9738
9833
|
"helix-headless-time-picker": DefineCustomElement<
|
|
9739
9834
|
HelixHeadlessTimePicker,
|
|
9740
9835
|
HelixHeadlessTimePickerVueProps,
|