@fusion.dev/helix-headless 0.47.0 → 0.48.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 +159 -35
- package/dist/carousel/root/carousel-root.d.ts +42 -0
- package/dist/carousel/root/carousel-root.js +6 -2
- 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/rating/root/rating-root.d.ts +65 -7
- package/dist/rating/root/rating-root.js +35 -8
- package/dist/time-picker/root/time-picker-root.d.ts +13 -0
- package/dist/time-picker/root/time-picker-root.js +2 -0
- package/package.json +5 -5
- package/types/jsx.d.ts +507 -22
- package/types/vue.d.ts +143 -4
package/types/vue.d.ts
CHANGED
|
@@ -985,6 +985,27 @@ clamps to the last *slide*, so three of the six indicators point at an
|
|
|
985
985
|
offset the track has already reached: pressing next walks the dots to the
|
|
986
986
|
end while the slides stop moving a third of the way through.
|
|
987
987
|
|
|
988
|
+
**The number is published to the styles rather than enumerated by them**,
|
|
989
|
+
as `--carousel-per-view` on the track, which is what keeps a width and a
|
|
990
|
+
count from disagreeing. A sheet can only name a value it wrote a rule for,
|
|
991
|
+
so the styled tier enumerated `per-view="2"` through `5` and called five a
|
|
992
|
+
judgment; above it the pane fell back to one across while this file went on
|
|
993
|
+
counting positions. Measured in Chromium over eight slides, six across gave
|
|
994
|
+
three dots, a pane taking the whole track and five slides reachable only by
|
|
995
|
+
dragging. Written from here there is no ceiling to exceed, and a consumer's
|
|
996
|
+
own sheet reads the same declaration the styled one does. `runEnd` publishes
|
|
997
|
+
its correction the same way and for the same reason.
|
|
998
|
+
|
|
999
|
+
**On the track and not on the host.** A custom property on the host is a
|
|
1000
|
+
reflected attribute by another name: it would arrive on upgrade, and a
|
|
1001
|
+
consumer's server markup never had it. Inside the component's own shadow
|
|
1002
|
+
root it serializes with the rest of the template on the server, and the
|
|
1003
|
+
track's own declaration beats anything a consumer inherits in, so the
|
|
1004
|
+
attribute is the one answer to how wide a pane is.
|
|
1005
|
+
|
|
1006
|
+
A value the track cannot honor is taken to the nearest one it can, by
|
|
1007
|
+
`across`, and both tiers read that rather than this.
|
|
1008
|
+
|
|
988
1009
|
No default, because it reflects. A reflected property with a value writes
|
|
989
1010
|
its attribute on upgrade, and the host then carries something a consumer's
|
|
990
1011
|
server markup never had, which React reports as a mismatch. The one-across
|
|
@@ -1001,6 +1022,27 @@ clamps to the last *slide*, so three of the six indicators point at an
|
|
|
1001
1022
|
offset the track has already reached: pressing next walks the dots to the
|
|
1002
1023
|
end while the slides stop moving a third of the way through.
|
|
1003
1024
|
|
|
1025
|
+
**The number is published to the styles rather than enumerated by them**,
|
|
1026
|
+
as `--carousel-per-view` on the track, which is what keeps a width and a
|
|
1027
|
+
count from disagreeing. A sheet can only name a value it wrote a rule for,
|
|
1028
|
+
so the styled tier enumerated `per-view="2"` through `5` and called five a
|
|
1029
|
+
judgment; above it the pane fell back to one across while this file went on
|
|
1030
|
+
counting positions. Measured in Chromium over eight slides, six across gave
|
|
1031
|
+
three dots, a pane taking the whole track and five slides reachable only by
|
|
1032
|
+
dragging. Written from here there is no ceiling to exceed, and a consumer's
|
|
1033
|
+
own sheet reads the same declaration the styled one does. `runEnd` publishes
|
|
1034
|
+
its correction the same way and for the same reason.
|
|
1035
|
+
|
|
1036
|
+
**On the track and not on the host.** A custom property on the host is a
|
|
1037
|
+
reflected attribute by another name: it would arrive on upgrade, and a
|
|
1038
|
+
consumer's server markup never had it. Inside the component's own shadow
|
|
1039
|
+
root it serializes with the rest of the template on the server, and the
|
|
1040
|
+
track's own declaration beats anything a consumer inherits in, so the
|
|
1041
|
+
attribute is the one answer to how wide a pane is.
|
|
1042
|
+
|
|
1043
|
+
A value the track cannot honor is taken to the nearest one it can, by
|
|
1044
|
+
`across`, and both tiers read that rather than this.
|
|
1045
|
+
|
|
1004
1046
|
No default, because it reflects. A reflected property with a value writes
|
|
1005
1047
|
its attribute on upgrade, and the host then carries something a consumer's
|
|
1006
1048
|
server markup never had, which React reports as a mismatch. The one-across
|
|
@@ -1622,6 +1664,67 @@ answer to which one is authoritative or which has the caret. Do not close it
|
|
|
1622
1664
|
the other way round, with Color Input dropping its own field: the value
|
|
1623
1665
|
would then be unreadable and unpasteable without opening a panel. */
|
|
1624
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;
|
|
1625
1728
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
1626
1729
|
swatches?: (HelixHeadlessColorPicker["swatches"]) | undefined;
|
|
1627
1730
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -6063,7 +6166,41 @@ export type HelixHeadlessRatingVueProps = {
|
|
|
6063
6166
|
Zero rather than one, because "no rating" and "the worst rating" are
|
|
6064
6167
|
different answers and a control that cannot express the first has to
|
|
6065
6168
|
pretend the second. A survey that requires an answer says so with
|
|
6066
|
-
`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. */
|
|
6067
6204
|
min?: (HelixHeadlessRating["min"]) | undefined;
|
|
6068
6205
|
/** Whether this shows a score rather than asks for one.
|
|
6069
6206
|
|
|
@@ -8914,6 +9051,8 @@ export type CustomCssProperties = {
|
|
|
8914
9051
|
"--carousel-gap"?: (string) | undefined;
|
|
8915
9052
|
/** The size one pane is laid out at. A sheet sets it and the component measures the run with it. */
|
|
8916
9053
|
"--carousel-pane"?: (string) | undefined;
|
|
9054
|
+
/** How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. */
|
|
9055
|
+
"--carousel-per-view"?: (string) | undefined;
|
|
8917
9056
|
/** How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. */
|
|
8918
9057
|
"--carousel-run-end"?: (string) | undefined;
|
|
8919
9058
|
/** The chosen color, to paint over the transparency check. */
|
|
@@ -8994,9 +9133,9 @@ export type CustomCssProperties = {
|
|
|
8994
9133
|
"--rating-full"?: (string) | undefined;
|
|
8995
9134
|
/** How much of the next mark is filled, 0 to 1. */
|
|
8996
9135
|
"--rating-part"?: (string) | undefined;
|
|
8997
|
-
/**
|
|
9136
|
+
/** Which step along the row a target is, counting from one, whatever `min` leaves open. */
|
|
8998
9137
|
"--rating-step"?: (string) | undefined;
|
|
8999
|
-
/** How many steps
|
|
9138
|
+
/** How many steps the whole row holds, which is `max` over `step`. */
|
|
9000
9139
|
"--rating-steps"?: (string) | undefined;
|
|
9001
9140
|
/** Where a point sits across, as a percentage. Written by the component. */
|
|
9002
9141
|
"--chart-point-x"?: (string) | undefined;
|
|
@@ -9690,7 +9829,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9690
9829
|
HelixHeadlessTimeInputVueProps,
|
|
9691
9830
|
HelixHeadlessTimeInputVueEvents
|
|
9692
9831
|
>;
|
|
9693
|
-
/** **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. */
|
|
9694
9833
|
"helix-headless-time-picker": DefineCustomElement<
|
|
9695
9834
|
HelixHeadlessTimePicker,
|
|
9696
9835
|
HelixHeadlessTimePickerVueProps,
|