@fusion.dev/helix-headless 0.164.0 → 0.165.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 +260 -11
- package/dist/date-input/root/date-input-root.d.ts +3 -3
- package/dist/date-input/root/date-input-root.js +8 -5
- package/dist/format-date/root/format-date-root.d.ts +3 -1
- package/dist/format-date/root/format-date-root.js +4 -1
- package/dist/lightbox/item/lightbox-item.js +3 -1
- package/dist/lightbox/root/lightbox-root.d.ts +28 -0
- package/dist/lightbox/root/lightbox-root.js +21 -2
- package/dist/number-input/root/number-input-root.d.ts +32 -9
- package/dist/number-input/root/number-input-root.js +53 -9
- package/dist/option/root/index.d.ts +1 -0
- package/dist/option/root/index.js +1 -0
- package/dist/tag/root/index.d.ts +1 -0
- package/dist/tag/root/index.js +1 -0
- package/dist/time-input/root/time-input-root.d.ts +4 -3
- package/dist/time-input/root/time-input-root.js +5 -4
- package/dist/time-picker/root/time-picker-root.d.ts +1 -1
- package/dist/time-picker/root/time-picker-root.js +5 -2
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +48 -24
- package/types/vue.d.ts +9 -6
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.165.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
},
|
|
50
50
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@fusion.dev/helix-core": "0.
|
|
53
|
-
"@fusion.dev/helix-icons": "0.
|
|
52
|
+
"@fusion.dev/helix-core": "0.165.0",
|
|
53
|
+
"@fusion.dev/helix-icons": "0.165.0",
|
|
54
54
|
"uqr": "^0.1.3"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@fusion.dev/helix-cem": "0.
|
|
58
|
-
"@fusion.dev/helix-testing": "0.
|
|
57
|
+
"@fusion.dev/helix-cem": "0.165.0",
|
|
58
|
+
"@fusion.dev/helix-testing": "0.165.0",
|
|
59
59
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
60
60
|
"@happy-dom/global-registrator": "^20.14.5",
|
|
61
61
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -14258,7 +14258,9 @@ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
|
|
|
14258
14258
|
`narrow` ("3h ago").
|
|
14259
14259
|
|
|
14260
14260
|
The reading refreshes as it goes stale, as `elapsed` does, and the whole
|
|
14261
|
-
date is its title. `elapsed` wins where both are set.
|
|
14261
|
+
date is its title. `elapsed` wins where both are set. Written with no
|
|
14262
|
+
value, as `elapsed` is, or with a style `Intl` does not know, it reads
|
|
14263
|
+
`long`. */
|
|
14262
14264
|
relative?: (HelixHeadlessFormatDate["relative"]) | undefined;
|
|
14263
14265
|
/** How the second is written, where a time of day is shown. */
|
|
14264
14266
|
second?: (HelixHeadlessFormatDate["second"]) | undefined;
|
|
@@ -14400,7 +14402,9 @@ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
|
|
|
14400
14402
|
`narrow` ("3h ago").
|
|
14401
14403
|
|
|
14402
14404
|
The reading refreshes as it goes stale, as `elapsed` does, and the whole
|
|
14403
|
-
date is its title. `elapsed` wins where both are set.
|
|
14405
|
+
date is its title. `elapsed` wins where both are set. Written with no
|
|
14406
|
+
value, as `elapsed` is, or with a style `Intl` does not know, it reads
|
|
14407
|
+
`long`. */
|
|
14404
14408
|
"prop:relative"?: (HelixHeadlessFormatDate["relative"]) | undefined;
|
|
14405
14409
|
/** How the second is written, where a time of day is shown. */
|
|
14406
14410
|
"prop:second"?: (HelixHeadlessFormatDate["second"]) | undefined;
|
|
@@ -22042,10 +22046,11 @@ one they already know. */
|
|
|
22042
22046
|
invalid, as it is in a native number field.
|
|
22043
22047
|
|
|
22044
22048
|
Unset, a step moves by one, or by one percent under a percent format, and
|
|
22045
|
-
a typed number is rounded to the smallest amount
|
|
22046
|
-
|
|
22047
|
-
|
|
22048
|
-
the
|
|
22049
|
+
a typed number is rounded to the smallest amount the format shows, as
|
|
22050
|
+
React Aria's NumberField does: a field showing dollars keeps the cents
|
|
22051
|
+
typed into it, and one with no `format-options` keeps three decimal
|
|
22052
|
+
places. `any` puts the number on no grid, as it does in a native number
|
|
22053
|
+
field: a step moves by one, and any number in range is valid. */
|
|
22049
22054
|
step?: (HelixHeadlessNumberInput["step"]) | undefined;
|
|
22050
22055
|
/** The message the browser shows when the number is off the step grid, with
|
|
22051
22056
|
`{below}` and `{above}` filled in with the nearest valid values, written in
|
|
@@ -22320,10 +22325,11 @@ one they already know. */
|
|
|
22320
22325
|
invalid, as it is in a native number field.
|
|
22321
22326
|
|
|
22322
22327
|
Unset, a step moves by one, or by one percent under a percent format, and
|
|
22323
|
-
a typed number is rounded to the smallest amount
|
|
22324
|
-
|
|
22325
|
-
|
|
22326
|
-
the
|
|
22328
|
+
a typed number is rounded to the smallest amount the format shows, as
|
|
22329
|
+
React Aria's NumberField does: a field showing dollars keeps the cents
|
|
22330
|
+
typed into it, and one with no `format-options` keeps three decimal
|
|
22331
|
+
places. `any` puts the number on no grid, as it does in a native number
|
|
22332
|
+
field: a step moves by one, and any number in range is valid. */
|
|
22327
22333
|
"prop:step"?: (HelixHeadlessNumberInput["step"]) | undefined;
|
|
22328
22334
|
/** The message the browser shows when the number is off the step grid, with
|
|
22329
22335
|
`{below}` and `{above}` filled in with the nearest valid values, written in
|
|
@@ -46941,7 +46947,9 @@ export type CustomElements = {
|
|
|
46941
46947
|
* `narrow` ("3h ago").
|
|
46942
46948
|
*
|
|
46943
46949
|
* The reading refreshes as it goes stale, as `elapsed` does, and the whole
|
|
46944
|
-
* date is its title. `elapsed` wins where both are set.
|
|
46950
|
+
* date is its title. `elapsed` wins where both are set. Written with no
|
|
46951
|
+
* value, as `elapsed` is, or with a style `Intl` does not know, it reads
|
|
46952
|
+
* `long`.
|
|
46945
46953
|
* - `second`: How the second is written, where a time of day is shown.
|
|
46946
46954
|
* - `time-style`/`timeStyle`: The locale's own pattern for the time of day: `full`, `long`, `medium`, or
|
|
46947
46955
|
* `short`. Set, it stands in for `hour`, `minute`, `second` and
|
|
@@ -53007,7 +53015,7 @@ export type CustomElements = {
|
|
|
53007
53015
|
* A separate family from `Input`'s `type="number"`. It renders two buttons,
|
|
53008
53016
|
* binds four keys `Input` does not, and handles clamping and stepping.
|
|
53009
53017
|
*
|
|
53010
|
-
* The field is `type="text"` with `inputmode
|
|
53018
|
+
* The field is `type="text"` with an `inputmode` for a number. Tested in a real
|
|
53011
53019
|
* browser, `type="number"` fails in three ways:
|
|
53012
53020
|
* - Typing `12e` gives a `.value` of `""`, so the element cannot see what you
|
|
53013
53021
|
* typed. A `type="text"` field keeps `"12e"`.
|
|
@@ -53015,7 +53023,11 @@ export type CustomElements = {
|
|
|
53015
53023
|
* to 4, when you only meant to scroll the page.
|
|
53016
53024
|
* - `selectionStart` is `null`, so the caret cannot be managed.
|
|
53017
53025
|
*
|
|
53018
|
-
* `inputmode
|
|
53026
|
+
* `inputmode` keeps a numeric keypad on phones, chosen as React Aria's
|
|
53027
|
+
* NumberField chooses it: a keypad with a minus key where the number can be
|
|
53028
|
+
* negative, and one with a decimal separator where the format shows a
|
|
53029
|
+
* fraction. An iPhone has no keypad with a minus key, so a field that can be
|
|
53030
|
+
* negative takes the full keyboard there.
|
|
53019
53031
|
*
|
|
53020
53032
|
* `format-options` shows the number with `Intl.NumberFormat` in `locale`, as a
|
|
53021
53033
|
* currency, a percent or a unit, while the field is not being edited. Focus
|
|
@@ -53126,10 +53138,11 @@ export type CustomElements = {
|
|
|
53126
53138
|
* invalid, as it is in a native number field.
|
|
53127
53139
|
*
|
|
53128
53140
|
* Unset, a step moves by one, or by one percent under a percent format, and
|
|
53129
|
-
* a typed number is rounded to the smallest amount
|
|
53130
|
-
*
|
|
53131
|
-
*
|
|
53132
|
-
* the
|
|
53141
|
+
* a typed number is rounded to the smallest amount the format shows, as
|
|
53142
|
+
* React Aria's NumberField does: a field showing dollars keeps the cents
|
|
53143
|
+
* typed into it, and one with no `format-options` keeps three decimal
|
|
53144
|
+
* places. `any` puts the number on no grid, as it does in a native number
|
|
53145
|
+
* field: a step moves by one, and any number in range is valid.
|
|
53133
53146
|
* - `step-mismatch-message`/`stepMismatchMessage`: The message the browser shows when the number is off the step grid, with
|
|
53134
53147
|
* `{below}` and `{above}` filled in with the nearest valid values, written in
|
|
53135
53148
|
* the locale.
|
|
@@ -53351,6 +53364,8 @@ export type CustomElements = {
|
|
|
53351
53364
|
*
|
|
53352
53365
|
* These can be used to apply styling when a component is in a given state.
|
|
53353
53366
|
*
|
|
53367
|
+
* - `at-max`: The number is at `max`, so it cannot step up, as React Aria's NumberField says with `canIncrement`.
|
|
53368
|
+
* - `at-min`: The number is at `min`, so it cannot step down.
|
|
53354
53369
|
* - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
|
|
53355
53370
|
* - `scrubbing`: The label is being dragged to change the value, under `scrub`, as Zag's scrubber says while it is held.
|
|
53356
53371
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
@@ -75789,7 +75804,9 @@ export type CustomElementsSolidJs = {
|
|
|
75789
75804
|
* `narrow` ("3h ago").
|
|
75790
75805
|
*
|
|
75791
75806
|
* The reading refreshes as it goes stale, as `elapsed` does, and the whole
|
|
75792
|
-
* date is its title. `elapsed` wins where both are set.
|
|
75807
|
+
* date is its title. `elapsed` wins where both are set. Written with no
|
|
75808
|
+
* value, as `elapsed` is, or with a style `Intl` does not know, it reads
|
|
75809
|
+
* `long`.
|
|
75793
75810
|
* - `second`: How the second is written, where a time of day is shown.
|
|
75794
75811
|
* - `time-style`/`timeStyle`: The locale's own pattern for the time of day: `full`, `long`, `medium`, or
|
|
75795
75812
|
* `short`. Set, it stands in for `hour`, `minute`, `second` and
|
|
@@ -81937,7 +81954,7 @@ export type CustomElementsSolidJs = {
|
|
|
81937
81954
|
* A separate family from `Input`'s `type="number"`. It renders two buttons,
|
|
81938
81955
|
* binds four keys `Input` does not, and handles clamping and stepping.
|
|
81939
81956
|
*
|
|
81940
|
-
* The field is `type="text"` with `inputmode
|
|
81957
|
+
* The field is `type="text"` with an `inputmode` for a number. Tested in a real
|
|
81941
81958
|
* browser, `type="number"` fails in three ways:
|
|
81942
81959
|
* - Typing `12e` gives a `.value` of `""`, so the element cannot see what you
|
|
81943
81960
|
* typed. A `type="text"` field keeps `"12e"`.
|
|
@@ -81945,7 +81962,11 @@ export type CustomElementsSolidJs = {
|
|
|
81945
81962
|
* to 4, when you only meant to scroll the page.
|
|
81946
81963
|
* - `selectionStart` is `null`, so the caret cannot be managed.
|
|
81947
81964
|
*
|
|
81948
|
-
* `inputmode
|
|
81965
|
+
* `inputmode` keeps a numeric keypad on phones, chosen as React Aria's
|
|
81966
|
+
* NumberField chooses it: a keypad with a minus key where the number can be
|
|
81967
|
+
* negative, and one with a decimal separator where the format shows a
|
|
81968
|
+
* fraction. An iPhone has no keypad with a minus key, so a field that can be
|
|
81969
|
+
* negative takes the full keyboard there.
|
|
81949
81970
|
*
|
|
81950
81971
|
* `format-options` shows the number with `Intl.NumberFormat` in `locale`, as a
|
|
81951
81972
|
* currency, a percent or a unit, while the field is not being edited. Focus
|
|
@@ -82056,10 +82077,11 @@ export type CustomElementsSolidJs = {
|
|
|
82056
82077
|
* invalid, as it is in a native number field.
|
|
82057
82078
|
*
|
|
82058
82079
|
* Unset, a step moves by one, or by one percent under a percent format, and
|
|
82059
|
-
* a typed number is rounded to the smallest amount
|
|
82060
|
-
*
|
|
82061
|
-
*
|
|
82062
|
-
* the
|
|
82080
|
+
* a typed number is rounded to the smallest amount the format shows, as
|
|
82081
|
+
* React Aria's NumberField does: a field showing dollars keeps the cents
|
|
82082
|
+
* typed into it, and one with no `format-options` keeps three decimal
|
|
82083
|
+
* places. `any` puts the number on no grid, as it does in a native number
|
|
82084
|
+
* field: a step moves by one, and any number in range is valid.
|
|
82063
82085
|
* - `step-mismatch-message`/`stepMismatchMessage`: The message the browser shows when the number is off the step grid, with
|
|
82064
82086
|
* `{below}` and `{above}` filled in with the nearest valid values, written in
|
|
82065
82087
|
* the locale.
|
|
@@ -82281,6 +82303,8 @@ export type CustomElementsSolidJs = {
|
|
|
82281
82303
|
*
|
|
82282
82304
|
* These can be used to apply styling when a component is in a given state.
|
|
82283
82305
|
*
|
|
82306
|
+
* - `at-max`: The number is at `max`, so it cannot step up, as React Aria's NumberField says with `canIncrement`.
|
|
82307
|
+
* - `at-min`: The number is at `min`, so it cannot step down.
|
|
82284
82308
|
* - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
|
|
82285
82309
|
* - `scrubbing`: The label is being dragged to change the value, under `scrub`, as Zag's scrubber says while it is held.
|
|
82286
82310
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
package/types/vue.d.ts
CHANGED
|
@@ -7349,7 +7349,9 @@ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
|
|
|
7349
7349
|
`narrow` ("3h ago").
|
|
7350
7350
|
|
|
7351
7351
|
The reading refreshes as it goes stale, as `elapsed` does, and the whole
|
|
7352
|
-
date is its title. `elapsed` wins where both are set.
|
|
7352
|
+
date is its title. `elapsed` wins where both are set. Written with no
|
|
7353
|
+
value, as `elapsed` is, or with a style `Intl` does not know, it reads
|
|
7354
|
+
`long`. */
|
|
7353
7355
|
relative?: (HelixHeadlessFormatDate["relative"]) | undefined;
|
|
7354
7356
|
/** How the second is written, where a time of day is shown. */
|
|
7355
7357
|
second?: (HelixHeadlessFormatDate["second"]) | undefined;
|
|
@@ -11354,10 +11356,11 @@ one they already know. */
|
|
|
11354
11356
|
invalid, as it is in a native number field.
|
|
11355
11357
|
|
|
11356
11358
|
Unset, a step moves by one, or by one percent under a percent format, and
|
|
11357
|
-
a typed number is rounded to the smallest amount
|
|
11358
|
-
|
|
11359
|
-
|
|
11360
|
-
the
|
|
11359
|
+
a typed number is rounded to the smallest amount the format shows, as
|
|
11360
|
+
React Aria's NumberField does: a field showing dollars keeps the cents
|
|
11361
|
+
typed into it, and one with no `format-options` keeps three decimal
|
|
11362
|
+
places. `any` puts the number on no grid, as it does in a native number
|
|
11363
|
+
field: a step moves by one, and any number in range is valid. */
|
|
11361
11364
|
step?: (HelixHeadlessNumberInput["step"]) | undefined;
|
|
11362
11365
|
/** The message the browser shows when the number is off the step grid, with
|
|
11363
11366
|
`{below}` and `{above}` filled in with the nearest valid values, written in
|
|
@@ -19219,7 +19222,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
19219
19222
|
HelixHeadlessNotificationsVueProps,
|
|
19220
19223
|
HelixHeadlessNotificationsVueEvents
|
|
19221
19224
|
>;
|
|
19222
|
-
/** A separate family from 'Input''s 'type="number"'. It renders two buttons, binds four keys 'Input' does not, and handles clamping and stepping. The field is 'type="text"' with 'inputmode
|
|
19225
|
+
/** A separate family from 'Input''s 'type="number"'. It renders two buttons, binds four keys 'Input' does not, and handles clamping and stepping. The field is 'type="text"' with an 'inputmode' for a number. Tested in a real browser, 'type="number"' fails in three ways: - Typing '12e' gives a '.value' of '""', so the element cannot see what you typed. A 'type="text"' field keeps '"12e"'. - The mouse wheel over a focused field changes the value, for example from 5 to 4, when you only meant to scroll the page. - 'selectionStart' is 'null', so the caret cannot be managed. 'inputmode' keeps a numeric keypad on phones, chosen as React Aria's NumberField chooses it: a keypad with a minus key where the number can be negative, and one with a decimal separator where the format shows a fraction. An iPhone has no keypad with a minus key, so a field that can be negative takes the full keyboard there. 'format-options' shows the number with 'Intl.NumberFormat' in 'locale', as a currency, a percent or a unit, while the field is not being edited. Focus shows the number itself, and a typed '$1,200' or '25%' is read back with the same options. The value stays the plain number: '1200', or '0.25' for 25%. The locale's group separators are read in every field, so '1,234' is a number in 'en-US'. The field and its two buttons sit in a 'role="group"' named by the label, and the field carries 'role-label', "number field" in English, as its 'aria-roledescription', as React Aria's NumberField does. On iOS and iPadOS the field is a plain text field, with no 'role="spinbutton"', which VoiceOver reads as a slider you cannot type in, and no role description, so VoiceOver says the field is required. React Aria's NumberField does the same. Validity follows the platform's rules: 'min', 'max', and 'step' are checked and reported through the host's own 'setValidity', under the platform's flag names. Stepping is separate from typing, so a number is not corrected while you type it. While you type, the form holds the number the text reads as, so a field showing '$2,500.50' gives the form 2500.5, and text that is not a number gives it nothing, as a native number field does. Holding a stepper button down steps once, then again after 400 milliseconds, then every 60 milliseconds until you let go, as React Aria's NumberField does. **Keyboard.** The field is one tab stop, and the stepper buttons are not in the tab order. | Key | What it does | |---|---| | Up, Down | Steps the value up or down by 'step'. | | Page Up, Page Down | Steps by 'large-step' steps, ten by default. | | Home, End | Goes to 'min' or 'max', where there is one. Without one, moves the caret. | | Enter | Commits the typed number and submits the form, as a native field does. | The field has 'role="spinbutton"' with 'aria-valuenow', 'aria-valuemin', 'aria-valuemax', and the formatted text in 'aria-valuetext'. */
|
|
19223
19226
|
"helix-headless-number-input": DefineCustomElement<
|
|
19224
19227
|
HelixHeadlessNumberInput,
|
|
19225
19228
|
HelixHeadlessNumberInputVueProps,
|