@fusion.dev/helix-headless 0.26.0 → 0.30.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 +4966 -755
- package/dist/accordion/root/accordion-root.d.ts +5 -6
- package/dist/accordion/root/accordion-root.js +13 -36
- package/dist/announcement/root/announcement-root.js +1 -1
- package/dist/avatar/root/avatar-root.d.ts +17 -3
- package/dist/avatar/root/avatar-root.js +27 -8
- package/dist/blockquote/root/blockquote-root.js +1 -1
- package/dist/button/root/button-root.js +1 -1
- package/dist/carousel/root/carousel-root.js +2 -2
- package/dist/chat/root/chat-root.js +1 -1
- package/dist/checkbox/root/checkbox-root.js +2 -2
- package/dist/checkbox-group/root/checkbox-group-root.js +2 -2
- package/dist/color-input/root/color-input-root.d.ts +12 -14
- package/dist/color-input/root/color-input-root.js +4 -52
- package/dist/color-picker/root/color-picker-root.js +2 -2
- package/dist/combobox/root/combobox-root.js +11 -14
- package/dist/command/root/command-root.js +2 -3
- package/dist/data-table/root/data-table-root.js +1 -1
- package/dist/date-input/root/date-input-root.d.ts +5 -77
- package/dist/date-input/root/date-input-root.js +16 -108
- package/dist/date-picker/root/date-picker-root.js +2 -2
- package/dist/divider/root/divider-root.js +1 -1
- package/dist/drawer/root/drawer-root.js +1 -1
- package/dist/drilldown/item/drilldown-item.js +1 -1
- package/dist/file-input/root/file-input-root.js +4 -7
- package/dist/filter-input/field/filter-field.d.ts +1 -1
- package/dist/filter-input/root/filter-input-root.d.ts +2 -2
- package/dist/filter-input/root/filter-input-root.js +12 -15
- package/dist/heatmap/root/heatmap-root.js +1 -1
- package/dist/image/root/image-root.d.ts +7 -0
- package/dist/image/root/image-root.js +6 -2
- package/dist/input/root/input-root.js +3 -3
- package/dist/listbox/root/listbox-root.js +3 -3
- package/dist/megamenu/root/megamenu-root.d.ts +12 -2
- package/dist/megamenu/root/megamenu-root.js +20 -15
- package/dist/menu/item/menu-item.js +1 -1
- package/dist/menu/root/menu-root.js +3 -10
- package/dist/navigation/root/navigation-root.d.ts +1 -2
- package/dist/navigation/root/navigation-root.js +3 -9
- package/dist/number-input/root/number-input-root.js +5 -5
- package/dist/object-inspector/root/object-inspector-root.js +4 -4
- package/dist/outline/root/outline-root.d.ts +0 -1
- package/dist/outline/root/outline-root.js +6 -12
- package/dist/pin-input/root/pin-input-root.js +2 -2
- package/dist/popover/root/popover-root.js +2 -10
- package/dist/radio/root/radio-root.js +1 -1
- package/dist/scatter-chart/root/scatter-chart-root.js +1 -1
- package/dist/scroll-area/root/scroll-area-root.js +1 -1
- package/dist/select/root/select-root.js +8 -9
- package/dist/slider/root/slider-root.js +2 -2
- package/dist/sparkline/root/sparkline-root.d.ts +2 -1
- package/dist/sparkline/root/sparkline-root.js +2 -2
- package/dist/speed-dial/item/speed-dial-item.js +1 -1
- package/dist/speed-dial/root/speed-dial-root.d.ts +2 -2
- package/dist/speed-dial/root/speed-dial-root.js +4 -7
- package/dist/switch/root/switch-root.js +3 -3
- package/dist/table/column/table-column.js +1 -1
- package/dist/tabs/root/tabs-root.d.ts +2 -17
- package/dist/tabs/root/tabs-root.js +3 -21
- package/dist/tabs/tab/tab.js +1 -1
- package/dist/textarea/root/textarea-root.js +3 -3
- package/dist/time-input/root/time-input-root.d.ts +5 -64
- package/dist/time-input/root/time-input-root.js +15 -107
- package/dist/time-picker/root/time-picker-root.js +2 -2
- package/dist/toggle/group/toggle-group.d.ts +0 -13
- package/dist/toggle/group/toggle-group.js +3 -23
- package/dist/toggle/root/toggle-root.js +1 -1
- package/dist/tooltip/root/tooltip-root.d.ts +0 -13
- package/dist/tooltip/root/tooltip-root.js +8 -16
- package/dist/tour/root/tour-root.js +6 -6
- package/dist/tour/stop/tour-stop.js +2 -2
- package/dist/video/root/captions.d.ts +85 -0
- package/dist/video/root/captions.js +45 -0
- package/dist/video/root/fullscreen.d.ts +28 -0
- package/dist/video/root/fullscreen.js +28 -0
- package/dist/video/root/idle.d.ts +34 -0
- package/dist/video/root/idle.js +24 -0
- package/dist/video/root/media-session.d.ts +54 -0
- package/dist/video/root/media-session.js +49 -0
- package/dist/video/root/remote-playback.d.ts +34 -0
- package/dist/video/root/remote-playback.js +38 -0
- package/dist/video/root/video-root.d.ts +11 -89
- package/dist/video/root/video-root.js +45 -139
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +2 -1
- package/dist/video-playlist/menu/video-playlist-menu.js +8 -10
- package/dist/virtual-list/root/virtual-list-root.js +1 -1
- package/package.json +8 -7
- package/types/jsx.d.ts +264 -192
- package/types/vue.d.ts +78 -69
package/types/vue.d.ts
CHANGED
|
@@ -478,6 +478,15 @@ Used for the label and the initials. */
|
|
|
478
478
|
|
|
479
479
|
Falls back to the slot, or to initials, if it fails. */
|
|
480
480
|
src?: (HelixHeadlessAvatar["src"]) | undefined;
|
|
481
|
+
/** Where the image stands: still on its way, arrived, or failed and replaced
|
|
482
|
+
by the initials.
|
|
483
|
+
|
|
484
|
+
Read-only to a consumer: it is a report rather than a setting, and the same
|
|
485
|
+
report `Image` gives, for the same reason. `load` and `error` fire once, so
|
|
486
|
+
a listener bound after the picture settled hears neither, which is the
|
|
487
|
+
platform on an `<img>` too, and this is what that listener asks instead.
|
|
488
|
+
Mirrored to `data-status` rather than reflected, as `Image` explains. */
|
|
489
|
+
status?: (HelixHeadlessAvatar["status"]) | undefined;
|
|
481
490
|
};
|
|
482
491
|
|
|
483
492
|
export type HelixHeadlessAvatarVueEvents = {
|
|
@@ -928,7 +937,7 @@ way to stop it, so an autoplaying carousel keeps its pause control on a
|
|
|
928
937
|
touch device exactly as it does on a desktop. */
|
|
929
938
|
controls?: (HelixHeadlessCarousel["controls"]) | undefined;
|
|
930
939
|
/** Slide to start on, where nothing declared one. */
|
|
931
|
-
"default-index"?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
|
|
940
|
+
"default-index"?: (HelixHeadlessCarousel["defaultIndex"] | `${number}`) | undefined;
|
|
932
941
|
/** Slide to start on, where nothing declared one. */
|
|
933
942
|
defaultIndex?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
|
|
934
943
|
/** How long each slide is held, in milliseconds. */
|
|
@@ -965,7 +974,7 @@ No default, because it reflects. A reflected property with a value writes
|
|
|
965
974
|
its attribute on upgrade, and the host then carries something a consumer's
|
|
966
975
|
server markup never had, which React reports as a mismatch. The one-across
|
|
967
976
|
case is the absent attribute, and the styles read it that way. */
|
|
968
|
-
"per-view"?: (HelixHeadlessCarousel["perView"]) | undefined;
|
|
977
|
+
"per-view"?: (HelixHeadlessCarousel["perView"] | `${number}`) | undefined;
|
|
969
978
|
/** How many slides are shown across the track at once. Absent shows one.
|
|
970
979
|
|
|
971
980
|
**Here rather than on the styled tier, because it decides how many places
|
|
@@ -1758,7 +1767,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
1758
1767
|
/** What the collapsed count is called, since `+3` names nothing. */
|
|
1759
1768
|
expandLabel?: (HelixHeadlessCombobox["expandLabel"]) | undefined;
|
|
1760
1769
|
/** How many tokens to show before the rest become a count. */
|
|
1761
|
-
"max-tags"?: (HelixHeadlessCombobox["maxTags"]) | undefined;
|
|
1770
|
+
"max-tags"?: (HelixHeadlessCombobox["maxTags"] | `${number}`) | undefined;
|
|
1762
1771
|
/** How many tokens to show before the rest become a count. */
|
|
1763
1772
|
maxTags?: (HelixHeadlessCombobox["maxTags"]) | undefined;
|
|
1764
1773
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -2105,11 +2114,11 @@ export type HelixHeadlessDataTableVueProps = {
|
|
|
2105
2114
|
/** Column order to open with, where nothing declared one. */
|
|
2106
2115
|
defaultOrder?: (HelixHeadlessDataTable["defaultOrder"]) | undefined;
|
|
2107
2116
|
/** Page to open on, where nothing declared one. */
|
|
2108
|
-
"default-page"?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
|
|
2117
|
+
"default-page"?: (HelixHeadlessDataTable["defaultPage"] | `${number}`) | undefined;
|
|
2109
2118
|
/** Page to open on, where nothing declared one. */
|
|
2110
2119
|
defaultPage?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
|
|
2111
2120
|
/** Page size to open with, where nothing declared one. */
|
|
2112
|
-
"default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
|
|
2121
|
+
"default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"] | `${number}`) | undefined;
|
|
2113
2122
|
/** Page size to open with, where nothing declared one. */
|
|
2114
2123
|
defaultPageSize?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
|
|
2115
2124
|
/** Keys to open with selected, comma separated, where nothing declared any. */
|
|
@@ -2216,7 +2225,7 @@ element ever asks for a different page size: a size selector is
|
|
|
2216
2225
|
`helix-pagination-size`, which a consumer puts in the `footer` slot and
|
|
2217
2226
|
answers themselves. Routing this through `requestChange` would announce an
|
|
2218
2227
|
event the element never has cause to fire. */
|
|
2219
|
-
"page-size"?: (HelixHeadlessDataTable["pageSize"]) | undefined;
|
|
2228
|
+
"page-size"?: (HelixHeadlessDataTable["pageSize"] | `${number}`) | undefined;
|
|
2220
2229
|
/** How many rows a page holds. Zero is every row, which is what "no paging" means.
|
|
2221
2230
|
|
|
2222
2231
|
**It announces nothing, and that is not an omission.** Nothing in this
|
|
@@ -2373,7 +2382,7 @@ submits and what `min` and `max` compare against. */
|
|
|
2373
2382
|
/** Days of the week that cannot be chosen, `0` for Sunday through `6`. */
|
|
2374
2383
|
disableDays?: (HelixHeadlessDateInput["disableDays"]) | undefined;
|
|
2375
2384
|
/** First column of the week in the calendar, `0` for Sunday through `6`. */
|
|
2376
|
-
"first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
|
|
2385
|
+
"first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"] | `${number}`) | undefined;
|
|
2377
2386
|
/** First column of the week in the calendar, `0` for Sunday through `6`. */
|
|
2378
2387
|
firstDayOfWeek?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
|
|
2379
2388
|
/** Language tag the calendar names its months and days in. */
|
|
@@ -2396,6 +2405,17 @@ first. The panel is sized by its content, so this widens it. */
|
|
|
2396
2405
|
months?: (HelixHeadlessDateInput["months"]) | undefined;
|
|
2397
2406
|
/** What the field says before a date is in it. */
|
|
2398
2407
|
placeholder?: (HelixHeadlessDateInput["placeholder"]) | undefined;
|
|
2408
|
+
/** How far apart the selectable dates are, in days.
|
|
2409
|
+
|
|
2410
|
+
`<input type="date" step>`'s own unit, handed to the calendar this renders
|
|
2411
|
+
so the field and the grid agree about which dates exist. Counted from `min`
|
|
2412
|
+
where there is one and from 1 January 1970 where there is not, which is the
|
|
2413
|
+
platform's base. */
|
|
2414
|
+
step?: (HelixHeadlessDateInput["step"]) | undefined;
|
|
2415
|
+
/** Accessible name for the control that opens the calendar. */
|
|
2416
|
+
"trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
2417
|
+
/** Accessible name for the control that opens the calendar. */
|
|
2418
|
+
triggerLabel?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
2399
2419
|
/** Whether the control refuses changes while still submitting its value.
|
|
2400
2420
|
|
|
2401
2421
|
**Enforced by refusing every request in one place**, which is the seam this
|
|
@@ -2420,17 +2440,6 @@ submits nothing and leaves the tab order, and a read-only one submits its
|
|
|
2420
2440
|
value and stays reachable, which is what a form showing a value somebody
|
|
2421
2441
|
else set needs. */
|
|
2422
2442
|
readOnly?: (HelixHeadlessDateInput["readOnly"]) | undefined;
|
|
2423
|
-
/** How far apart the selectable dates are, in days.
|
|
2424
|
-
|
|
2425
|
-
`<input type="date" step>`'s own unit, handed to the calendar this renders
|
|
2426
|
-
so the field and the grid agree about which dates exist. Counted from `min`
|
|
2427
|
-
where there is one and from 1 January 1970 where there is not, which is the
|
|
2428
|
-
platform's base. */
|
|
2429
|
-
step?: (HelixHeadlessDateInput["step"]) | undefined;
|
|
2430
|
-
/** Accessible name for the control that opens the calendar. */
|
|
2431
|
-
"trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
2432
|
-
/** Accessible name for the control that opens the calendar. */
|
|
2433
|
-
triggerLabel?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
2434
2443
|
/** Whether the element is open.
|
|
2435
2444
|
|
|
2436
2445
|
One property, not two, so `dialog.open` answers the question anyone
|
|
@@ -2459,7 +2468,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
2459
2468
|
/** What the collapsed count is called, since `+3` names nothing. */
|
|
2460
2469
|
expandLabel?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
|
|
2461
2470
|
/** How many tokens to show before the rest become a count. */
|
|
2462
|
-
"max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
|
|
2471
|
+
"max-tags"?: (HelixHeadlessDateInput["maxTags"] | `${number}`) | undefined;
|
|
2463
2472
|
/** How many tokens to show before the rest become a count. */
|
|
2464
2473
|
maxTags?: (HelixHeadlessDateInput["maxTags"]) | undefined;
|
|
2465
2474
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -2564,7 +2573,7 @@ export type HelixHeadlessDatePickerVueProps = {
|
|
|
2564
2573
|
/** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
|
|
2565
2574
|
disableDays?: (HelixHeadlessDatePicker["disableDays"]) | undefined;
|
|
2566
2575
|
/** First column of the week, `0` for Sunday through `6` for Saturday. */
|
|
2567
|
-
"first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
|
|
2576
|
+
"first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
|
|
2568
2577
|
/** First column of the week, `0` for Sunday through `6` for Saturday. */
|
|
2569
2578
|
firstDayOfWeek?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
|
|
2570
2579
|
/** Whether the current selection fails validation. */
|
|
@@ -3166,12 +3175,12 @@ Here rather than on each control. */
|
|
|
3166
3175
|
};
|
|
3167
3176
|
|
|
3168
3177
|
export type HelixHeadlessFileInputVueEvents = {
|
|
3169
|
-
/** Announced once the value has moved. */
|
|
3170
|
-
input: HelixHeadlessFileInputElementEvent;
|
|
3171
3178
|
/** Announced once the value has moved. */
|
|
3172
3179
|
change: HelixHeadlessFileInputElementEvent;
|
|
3173
3180
|
/** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves. */
|
|
3174
3181
|
"helix-before-change": HelixHeadlessFileInputHelixBeforeChangeElementEvent;
|
|
3182
|
+
/** Announced once the value has moved. */
|
|
3183
|
+
input: HelixHeadlessFileInputElementEvent;
|
|
3175
3184
|
};
|
|
3176
3185
|
|
|
3177
3186
|
/** `HelixHeadlessFilterChip` component event */
|
|
@@ -3407,7 +3416,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
3407
3416
|
/** What the collapsed count is called, since `+3` names nothing. */
|
|
3408
3417
|
expandLabel?: (HelixHeadlessFilterInput["expandLabel"]) | undefined;
|
|
3409
3418
|
/** How many tokens to show before the rest become a count. */
|
|
3410
|
-
"max-tags"?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
|
|
3419
|
+
"max-tags"?: (HelixHeadlessFilterInput["maxTags"] | `${number}`) | undefined;
|
|
3411
3420
|
/** How many tokens to show before the rest become a count. */
|
|
3412
3421
|
maxTags?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
|
|
3413
3422
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -3568,7 +3577,7 @@ arithmetic should plan around.
|
|
|
3568
3577
|
|
|
3569
3578
|
Zero turns the dropping off altogether, which is right for a strip in a
|
|
3570
3579
|
container that cannot get narrow. */
|
|
3571
|
-
"min-cell"?: (HelixHeadlessHeatmap["minCell"]) | undefined;
|
|
3580
|
+
"min-cell"?: (HelixHeadlessHeatmap["minCell"] | `${number}`) | undefined;
|
|
3572
3581
|
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
3573
3582
|
|
|
3574
3583
|
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
@@ -3916,11 +3925,11 @@ is broken. */
|
|
|
3916
3925
|
/** What the clear button is called, since an icon has no name of its own. */
|
|
3917
3926
|
clearLabel?: (HelixHeadlessInput["clearLabel"]) | undefined;
|
|
3918
3927
|
/** Most characters the value may have. */
|
|
3919
|
-
maxlength?: (HelixHeadlessInput["maxLength"]) | undefined;
|
|
3928
|
+
maxlength?: (HelixHeadlessInput["maxLength"] | `${number}`) | undefined;
|
|
3920
3929
|
/** Most characters the value may have. */
|
|
3921
3930
|
maxLength?: (HelixHeadlessInput["maxLength"]) | undefined;
|
|
3922
3931
|
/** Fewest characters the value may have. */
|
|
3923
|
-
minlength?: (HelixHeadlessInput["minLength"]) | undefined;
|
|
3932
|
+
minlength?: (HelixHeadlessInput["minLength"] | `${number}`) | undefined;
|
|
3924
3933
|
/** Fewest characters the value may have. */
|
|
3925
3934
|
minLength?: (HelixHeadlessInput["minLength"]) | undefined;
|
|
3926
3935
|
/** A regular expression the value has to match, as the platform reads it.
|
|
@@ -4440,7 +4449,7 @@ so the controller has to be told not to measure, and that decision is here
|
|
|
4440
4449
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
4441
4450
|
number in two languages, drifting the first time either moved. This sets
|
|
4442
4451
|
`data-narrow` on the host and the stylesheet arranges itself off that. */
|
|
4443
|
-
"full-below"?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
|
|
4452
|
+
"full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
|
|
4444
4453
|
/** The width, in pixels, under which a card becomes a band. Zero never does.
|
|
4445
4454
|
|
|
4446
4455
|
A card is a panel hung off one word, and there is no room to hang anything
|
|
@@ -4965,7 +4974,7 @@ consumer to ask for it. */
|
|
|
4965
4974
|
Ten steps, which is the convention every spinner on the platform follows,
|
|
4966
4975
|
and a property because ten of a step of `0.01` is a hundredth and rarely
|
|
4967
4976
|
what a reader wants from a whole key. */
|
|
4968
|
-
"large-step"?: (HelixHeadlessNumberInput["largeStep"]) | undefined;
|
|
4977
|
+
"large-step"?: (HelixHeadlessNumberInput["largeStep"] | `${number}`) | undefined;
|
|
4969
4978
|
/** How far `PageUp` and `PageDown` move.
|
|
4970
4979
|
|
|
4971
4980
|
Ten steps, which is the convention every spinner on the platform follows,
|
|
@@ -5077,7 +5086,7 @@ One by default: the root is open and everything under it closed, so a
|
|
|
5077
5086
|
reader sees the shape of the value before its contents. `0` starts with the
|
|
5078
5087
|
root closed; a large number opens everything, which on a big value is the
|
|
5079
5088
|
wall of text this exists to avoid. */
|
|
5080
|
-
"default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"]) | undefined;
|
|
5089
|
+
"default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"] | `${number}`) | undefined;
|
|
5081
5090
|
/** How many levels start open.
|
|
5082
5091
|
|
|
5083
5092
|
One by default: the root is open and everything under it closed, so a
|
|
@@ -5302,7 +5311,7 @@ Not reflected, for the reason `ends` is not: it decides what renders, so
|
|
|
5302
5311
|
nothing has to select on it. */
|
|
5303
5312
|
compact?: (HelixHeadlessPagination["compact"]) | undefined;
|
|
5304
5313
|
/** Page to open on, where nothing declared one. */
|
|
5305
|
-
"default-page"?: (HelixHeadlessPagination["defaultPage"]) | undefined;
|
|
5314
|
+
"default-page"?: (HelixHeadlessPagination["defaultPage"] | `${number}`) | undefined;
|
|
5306
5315
|
/** Page to open on, where nothing declared one. */
|
|
5307
5316
|
defaultPage?: (HelixHeadlessPagination["defaultPage"]) | undefined;
|
|
5308
5317
|
/** Whether to offer a jump to the first and last pages.
|
|
@@ -5388,7 +5397,7 @@ so there is never a question of which of two sources is current. */
|
|
|
5388
5397
|
Only arithmetic: this does not slice anything, because the component never
|
|
5389
5398
|
sees the items. It is what turns `total` into a page count, and nothing
|
|
5390
5399
|
else. */
|
|
5391
|
-
"page-size"?: (HelixHeadlessPagination["pageSize"]) | undefined;
|
|
5400
|
+
"page-size"?: (HelixHeadlessPagination["pageSize"] | `${number}`) | undefined;
|
|
5392
5401
|
/** How many items are on a page.
|
|
5393
5402
|
|
|
5394
5403
|
Only arithmetic: this does not slice anything, because the component never
|
|
@@ -5441,7 +5450,7 @@ export type HelixHeadlessPaginationSizeHelixBeforeChangeElementEvent =
|
|
|
5441
5450
|
|
|
5442
5451
|
export type HelixHeadlessPaginationSizeVueProps = {
|
|
5443
5452
|
/** Size to start on, where nothing declared one. */
|
|
5444
|
-
"default-value"?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
|
|
5453
|
+
"default-value"?: (HelixHeadlessPaginationSize["defaultValue"] | `${number}`) | undefined;
|
|
5445
5454
|
/** Size to start on, where nothing declared one. */
|
|
5446
5455
|
defaultValue?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
|
|
5447
5456
|
/** The size in force.
|
|
@@ -5491,7 +5500,7 @@ Absent uses the runtime's own. */
|
|
|
5491
5500
|
/** The page on show, one-based. */
|
|
5492
5501
|
page?: (HelixHeadlessPaginationSummary["page"]) | undefined;
|
|
5493
5502
|
/** How many items are on a page. */
|
|
5494
|
-
"page-size"?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
|
|
5503
|
+
"page-size"?: (HelixHeadlessPaginationSummary["pageSize"] | `${number}`) | undefined;
|
|
5495
5504
|
/** How many items are on a page. */
|
|
5496
5505
|
pageSize?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
|
|
5497
5506
|
/** How many items there are across every page. */
|
|
@@ -6505,7 +6514,7 @@ Zero by default, which is a pane fully gone. A tab strip or a title bar
|
|
|
6505
6514
|
that should survive its own collapse says how much of itself to keep, and
|
|
6506
6515
|
only whoever put it there knows that, which is the same reason `min` is a
|
|
6507
6516
|
consumer's to set. */
|
|
6508
|
-
"collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"]) | undefined;
|
|
6517
|
+
"collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"] | `${number}`) | undefined;
|
|
6509
6518
|
/** How much of a shut pane is still shown, as a percentage.
|
|
6510
6519
|
|
|
6511
6520
|
Zero by default, which is a pane fully gone. A tab strip or a title bar
|
|
@@ -6540,7 +6549,7 @@ of a pane during a drag; this is the thing that says the sliver can go. */
|
|
|
6540
6549
|
/** Which pane starts shut, where nothing declared it. */
|
|
6541
6550
|
defaultCollapsed?: (HelixHeadlessSplitter["defaultCollapsed"]) | undefined;
|
|
6542
6551
|
/** Where the divider starts, where nothing declared it. */
|
|
6543
|
-
"default-position"?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
|
|
6552
|
+
"default-position"?: (HelixHeadlessSplitter["defaultPosition"] | `${number}`) | undefined;
|
|
6544
6553
|
/** Where the divider starts, where nothing declared it. */
|
|
6545
6554
|
defaultPosition?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
|
|
6546
6555
|
/** Accessible name for the divider. */
|
|
@@ -7121,7 +7130,7 @@ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
|
|
|
7121
7130
|
element sends two entries, and that is what this does. */
|
|
7122
7131
|
dirName?: (HelixHeadlessTextarea["dirName"]) | undefined;
|
|
7123
7132
|
/** Most characters the value may have. */
|
|
7124
|
-
maxlength?: (HelixHeadlessTextarea["maxLength"]) | undefined;
|
|
7133
|
+
maxlength?: (HelixHeadlessTextarea["maxLength"] | `${number}`) | undefined;
|
|
7125
7134
|
/** Most characters the value may have. */
|
|
7126
7135
|
maxLength?: (HelixHeadlessTextarea["maxLength"]) | undefined;
|
|
7127
7136
|
/** Fewest characters the value may have.
|
|
@@ -7130,7 +7139,7 @@ Forwarded to the real `<textarea>` rather than checked here, which is what
|
|
|
7130
7139
|
makes the message the browser's and therefore the reader's own language.
|
|
7131
7140
|
No `pattern`: the platform does not give a textarea one, and inventing it
|
|
7132
7141
|
would be this library guessing where the point is to stop guessing. */
|
|
7133
|
-
minlength?: (HelixHeadlessTextarea["minLength"]) | undefined;
|
|
7142
|
+
minlength?: (HelixHeadlessTextarea["minLength"] | `${number}`) | undefined;
|
|
7134
7143
|
/** Fewest characters the value may have.
|
|
7135
7144
|
|
|
7136
7145
|
Forwarded to the real `<textarea>` rather than checked here, which is what
|
|
@@ -7261,30 +7270,6 @@ why a wheel cannot do either. */
|
|
|
7261
7270
|
mode?: (HelixHeadlessTimeInput["mode"]) | undefined;
|
|
7262
7271
|
/** What the field says before a time is in it. */
|
|
7263
7272
|
placeholder?: (HelixHeadlessTimeInput["placeholder"]) | undefined;
|
|
7264
|
-
/** Whether the control refuses changes while still submitting its value.
|
|
7265
|
-
|
|
7266
|
-
**Enforced by refusing every request in one place**, which is the seam this
|
|
7267
|
-
component already has: `requestValue` is what every path here comes through,
|
|
7268
|
-
and gating it once is what stops the next call site from being written
|
|
7269
|
-
without the check.
|
|
7270
|
-
|
|
7271
|
-
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
7272
|
-
submits nothing and leaves the tab order, and a read-only one submits its
|
|
7273
|
-
value and stays reachable, which is what a form showing a value somebody
|
|
7274
|
-
else set needs. */
|
|
7275
|
-
readonly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
|
|
7276
|
-
/** Whether the control refuses changes while still submitting its value.
|
|
7277
|
-
|
|
7278
|
-
**Enforced by refusing every request in one place**, which is the seam this
|
|
7279
|
-
component already has: `requestValue` is what every path here comes through,
|
|
7280
|
-
and gating it once is what stops the next call site from being written
|
|
7281
|
-
without the check.
|
|
7282
|
-
|
|
7283
|
-
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
7284
|
-
submits nothing and leaves the tab order, and a read-only one submits its
|
|
7285
|
-
value and stays reachable, which is what a form showing a value somebody
|
|
7286
|
-
else set needs. */
|
|
7287
|
-
readOnly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
|
|
7288
7273
|
/** How far apart the offered times are, in minutes. */
|
|
7289
7274
|
step?: (HelixHeadlessTimeInput["step"]) | undefined;
|
|
7290
7275
|
/** Whether the field writes the time out, or holds the value as it is.
|
|
@@ -7319,6 +7304,30 @@ not touch, and React reads that as a hydration mismatch. The absent
|
|
|
7319
7304
|
attribute *is* the list, which the stylesheet reads as the base rule, so
|
|
7320
7305
|
only the departure has to be named. */
|
|
7321
7306
|
variant?: (HelixHeadlessTimeInput["variant"]) | undefined;
|
|
7307
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
7308
|
+
|
|
7309
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
7310
|
+
component already has: `requestValue` is what every path here comes through,
|
|
7311
|
+
and gating it once is what stops the next call site from being written
|
|
7312
|
+
without the check.
|
|
7313
|
+
|
|
7314
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
7315
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
7316
|
+
value and stays reachable, which is what a form showing a value somebody
|
|
7317
|
+
else set needs. */
|
|
7318
|
+
readonly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
|
|
7319
|
+
/** Whether the control refuses changes while still submitting its value.
|
|
7320
|
+
|
|
7321
|
+
**Enforced by refusing every request in one place**, which is the seam this
|
|
7322
|
+
component already has: `requestValue` is what every path here comes through,
|
|
7323
|
+
and gating it once is what stops the next call site from being written
|
|
7324
|
+
without the check.
|
|
7325
|
+
|
|
7326
|
+
Not `disabled`, which is the confusion worth naming: a disabled control
|
|
7327
|
+
submits nothing and leaves the tab order, and a read-only one submits its
|
|
7328
|
+
value and stays reachable, which is what a form showing a value somebody
|
|
7329
|
+
else set needs. */
|
|
7330
|
+
readOnly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
|
|
7322
7331
|
/** Whether the element is open.
|
|
7323
7332
|
|
|
7324
7333
|
One property, not two, so `dialog.open` answers the question anyone
|
|
@@ -7347,7 +7356,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
7347
7356
|
/** What the collapsed count is called, since `+3` names nothing. */
|
|
7348
7357
|
expandLabel?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
|
|
7349
7358
|
/** How many tokens to show before the rest become a count. */
|
|
7350
|
-
"max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
|
|
7359
|
+
"max-tags"?: (HelixHeadlessTimeInput["maxTags"] | `${number}`) | undefined;
|
|
7351
7360
|
/** How many tokens to show before the rest become a count. */
|
|
7352
7361
|
maxTags?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
|
|
7353
7362
|
/** The value the markup declared, which is where a reset returns to. */
|
|
@@ -7891,7 +7900,7 @@ of them, which is noise rather than help. Focus opens with no delay: a
|
|
|
7891
7900
|
keyboard reader arriving on a control has already committed to it. */
|
|
7892
7901
|
delay?: (HelixHeadlessTooltip["delay"]) | undefined;
|
|
7893
7902
|
/** How long the bubble stays after the pointer leaves, in milliseconds. */
|
|
7894
|
-
"delay-out"?: (HelixHeadlessTooltip["delayOut"]) | undefined;
|
|
7903
|
+
"delay-out"?: (HelixHeadlessTooltip["delayOut"] | `${number}`) | undefined;
|
|
7895
7904
|
/** How long the bubble stays after the pointer leaves, in milliseconds. */
|
|
7896
7905
|
delayOut?: (HelixHeadlessTooltip["delayOut"]) | undefined;
|
|
7897
7906
|
/** Whether the tooltip never shows. */
|
|
@@ -8018,7 +8027,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
|
|
|
8018
8027
|
`undefined` until somebody sets one. */
|
|
8019
8028
|
index?: (HelixHeadlessTour["index"]) | undefined;
|
|
8020
8029
|
/** Stop to start on, where nothing declared one. */
|
|
8021
|
-
"default-index"?: (HelixHeadlessTour["defaultIndex"]) | undefined;
|
|
8030
|
+
"default-index"?: (HelixHeadlessTour["defaultIndex"] | `${number}`) | undefined;
|
|
8022
8031
|
/** Stop to start on, where nothing declared one. */
|
|
8023
8032
|
defaultIndex?: (HelixHeadlessTour["defaultIndex"]) | undefined;
|
|
8024
8033
|
/** Label for the control that goes on from the last stop. */
|
|
@@ -8038,7 +8047,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
|
|
|
8038
8047
|
/** Label for the control that leaves the tour. */
|
|
8039
8048
|
skipLabel?: (HelixHeadlessTour["skipLabel"]) | undefined;
|
|
8040
8049
|
/** Space left around the target when it is lit, in pixels. */
|
|
8041
|
-
"spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
|
|
8050
|
+
"spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"] | `${number}`) | undefined;
|
|
8042
8051
|
/** Space left around the target when it is lit, in pixels. */
|
|
8043
8052
|
spotlightPadding?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
|
|
8044
8053
|
};
|
|
@@ -8503,7 +8512,7 @@ as long as anyone is likely to look.
|
|
|
8503
8512
|
|
|
8504
8513
|
The wait is only ever about *idling*. A video that is paused keeps its bar
|
|
8505
8514
|
regardless, because a reader who stopped it is deciding what to do next. */
|
|
8506
|
-
"idle-delay"?: (HelixHeadlessVideo["idleDelay"]) | undefined;
|
|
8515
|
+
"idle-delay"?: (HelixHeadlessVideo["idleDelay"] | `${number}`) | undefined;
|
|
8507
8516
|
/** How long the bar waits after the pointer stops before it goes, in ms.
|
|
8508
8517
|
|
|
8509
8518
|
A wait rather than leaving with the pointer, or a reader moving across the
|
|
@@ -8787,7 +8796,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
8787
8796
|
HelixHeadlessAccordionItemVueProps,
|
|
8788
8797
|
HelixHeadlessAccordionItemVueEvents
|
|
8789
8798
|
>;
|
|
8790
|
-
/** Holds the mode and nothing else. The item that was clicked is what coordinates: it walks up to the nearest accordion, reads the mode off it, and closes its peers itself. Coordination is structural, not a subscription. 'helix-before-open' does not bubble and is not composed, because overlays nest and an inner one's lifecycle must never read as the outer one's, so an accordion cannot learn that a child opened by listening for it. Membership resolves on demand, so there is no registry to keep in step: an item added a second after render coordinates on its first click. Items are matched with 'instanceof HelixHeadlessAccordionItem', never by tag name. Matching 'helix-accordion-item' would tie this tier to the styled one.
|
|
8799
|
+
/** Holds the mode and nothing else. The item that was clicked is what coordinates: it walks up to the nearest accordion, reads the mode off it, and closes its peers itself. Coordination is structural, not a subscription. 'helix-before-open' does not bubble and is not composed, because overlays nest and an inner one's lifecycle must never read as the outer one's, so an accordion cannot learn that a child opened by listening for it. Membership resolves on demand, so there is no registry to keep in step: an item added a second after render coordinates on its first click. Items are matched with 'instanceof HelixHeadlessAccordionItem', never by tag name. Matching 'helix-accordion-item' would tie this tier to the styled one. The keyboard listener is the controller's and is attached on connect, so none of it runs on the server, where there is no tree to walk and no events to hear. */
|
|
8791
8800
|
"helix-headless-accordion": DefineCustomElement<
|
|
8792
8801
|
HelixHeadlessAccordion,
|
|
8793
8802
|
HelixHeadlessAccordionVueProps,
|
|
@@ -9039,7 +9048,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9039
9048
|
HelixHeadlessFilterChipVueProps,
|
|
9040
9049
|
HelixHeadlessFilterChipVueEvents
|
|
9041
9050
|
>;
|
|
9042
|
-
/** **A declaration, not a control.** It renders nothing and is never seen. A consumer writes one per field, with the comparisons that field supports and the values it supports them on, and the filter input reads them to build its menu: '''html <helix-headless-filter-field name="disposition" label="Disposition"> <helix-headless-filter-operator name="any" label="is any of" default> </helix-headless-filter-operator> <helix-headless-filter-operator name="none" label="is none of"> </helix-headless-filter-operator> <helix-headless-option value="refunded">Refunded</helix-headless-option> </helix-headless-filter-field> ''' **Operators are per field and never global.** 'is after' belongs to a date and 'has all of' to a set, and a field that supports one comparison shows no chooser at all. A global list would offer every field every word and leave the component deciding which of them made sense, which is the domain question it declines to answer. **A field that declares none gets two, and they are the ones the punctuation can say.** 'is any of' and 'is none of' are what 'field:a,b' and '-field:a,b' mean, so declaring them was ceremony for the case every product has; the example above is what a consumer writes when the words matter, not the price of admission. Declaring one comparison replaces both rather than joining them
|
|
9051
|
+
/** **A declaration, not a control.** It renders nothing and is never seen. A consumer writes one per field, with the comparisons that field supports and the values it supports them on, and the filter input reads them to build its menu: '''html <helix-headless-filter-field name="disposition" label="Disposition"> <helix-headless-filter-operator name="any" label="is any of" default> </helix-headless-filter-operator> <helix-headless-filter-operator name="none" label="is none of"> </helix-headless-filter-operator> <helix-headless-option value="refunded">Refunded</helix-headless-option> </helix-headless-filter-field> ''' **Operators are per field and never global.** 'is after' belongs to a date and 'has all of' to a set, and a field that supports one comparison shows no chooser at all. A global list would offer every field every word and leave the component deciding which of them made sense, which is the domain question it declines to answer. **A field that declares none gets two, and they are the ones the punctuation can say.** 'is any of' and 'is none of' are what 'field:a,b' and '-field:a,b' mean, so declaring them was ceremony for the case every product has; the example above is what a consumer writes when the words matter, not the price of admission. Declaring one comparison replaces both rather than joining them: see 'vocabulary', which is where that is decided once for the menu and the grammar together. **Values are 'Option's, which is the element a consumer already has.** They carry a value, a label and a disabled state, and a picker built on 'Menu' or 'Listbox' can render them without this element inventing a second way to say the same thing. A field whose values cannot be enumerated declares none, and what fills a chip then is whatever the consumer types. */
|
|
9043
9052
|
"helix-headless-filter-field": DefineCustomElement<
|
|
9044
9053
|
HelixHeadlessFilterField,
|
|
9045
9054
|
HelixHeadlessFilterFieldVueProps,
|
|
@@ -9057,7 +9066,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9057
9066
|
HelixHeadlessFilterOperatorVueProps,
|
|
9058
9067
|
HelixHeadlessFilterOperatorVueEvents
|
|
9059
9068
|
>;
|
|
9060
|
-
/** **The tokens are the consumer's own elements, slotted.** What a filter narrows by belongs to the consumer's model rather than to this element: a facet with a prefix, a saved query, a range. So they are slotted rather than rendered from a list of strings, and removing one is a request this element makes rather than a change it applies. Combobox is the other way round, and that is the difference between the two: its tokens are a view of a selection it owns, drawn from options it was handed. **'value' is the text being typed, not the tokens**, which is what makes this a field a consumer can listen to. Every keystroke announces 'input' with the text on the element, so a table narrows as the reader types. The tokens need no reporting back, being markup the consumer already holds. Backspace on an empty field asks the last token to go, through the same 'helix-dismiss' its own remove control fires, so a consumer who handled the pointer has already handled the keyboard. **It reads what was declared, and nothing that was not.** Write 'FilterField's
|
|
9069
|
+
/** **The tokens are the consumer's own elements, slotted.** What a filter narrows by belongs to the consumer's model rather than to this element: a facet with a prefix, a saved query, a range. So they are slotted rather than rendered from a list of strings, and removing one is a request this element makes rather than a change it applies. Combobox is the other way round, and that is the difference between the two: its tokens are a view of a selection it owns, drawn from options it was handed. **'value' is the text being typed, not the tokens**, which is what makes this a field a consumer can listen to. Every keystroke announces 'input' with the text on the element, so a table narrows as the reader types. The tokens need no reporting back, being markup the consumer already holds. Backspace on an empty field asks the last token to go, through the same 'helix-dismiss' its own remove control fires, so a consumer who handled the pointer has already handled the keyboard. **It reads what was declared, and nothing that was not.** Write 'FilterField's (usually inside the 'FilterMenu' slotted into 'start', so the picker and the text work off one set), and Enter reads the box against them: 'disposition:refunded,settled' and '-disposition:refunded' announce 'helix-facet', exactly as ticking those values in the picker would, and the text they were read from goes. Everything else stays where it was typed, so 'refund tuesday disposition:settled' is a filter and a search at once. 'grammar.ts' carries the whole rule and is worth reading before relying on it; the short version is that Helix owns the punctuation and the consumer owns every word in it. A field with no 'FilterField' in it parses nothing, which is the behavior this had before it could. **A field whose values cannot be listed belongs here rather than in the picker.** 'assignee:ada' is a filter and nobody wants to enumerate every name in the company, but a menu page for it would have nothing on it to press. Written directly inside this element it is read by the grammar and never offered as a page: unslotted, so nothing draws it, which is the same trick 'FilterField' already plays on its own children. **It can suggest what to type next, and deciding what to suggest is still the consumer's.** Slot 'helix-option' elements into 'suggestions' and the field shows them, moves through them with the arrows, and lets Enter press one; the option fires its own 'helix-select' and the consumer decides what choosing meant. Keys before a colon and values after it are the same panel with different contents, and 'readFilterText' is exported for a consumer narrowing that panel against what a reader has half typed. **The panel opens when there is something in it and closes when there is not**, rather than on a choice. A reader who picks a key wants its values next, and closing on the choice would shut the panel between two renders. Use 'selectionStart' and 'setSelectionRange' to write a completion back and put the caret after it, or the next parse reads the wrong term. **Three things here have three different owners, and only one of them is a controlled property.** 'value' is the text, and it is uncontrolled by default: the reader types, the element applies it, and 'input' says so. **Writing 'value' does not take that over.** It is a seed and a correction, so a consumer who sets it and then expects the field to hold still will watch the next keystroke overwrite them. Ownership is taken by refusing 'helix-before-change' and writing the value you want, which is the same shape every field in this library uses and is worth saying out loud here because the property looks like React's. 'default-value' seeds the field without claiming anything. 'open' is the suggestions panel, and it is the ordinary controlled pair: refuse 'helix-before-open' or 'helix-before-close' to take the decision, and 'default-open' to seed it. The tokens are neither, because they are not state. They are the consumer's own elements in a slot, so there is nothing for this to own and nothing to report back: a token goes when the consumer removes it from their markup, having been asked by 'helix-dismiss'. **A 'FilterChip' naming a declared field is asked differently**, and it has to be: the picker holds what is ticked, so a chip that removed itself without telling it left the value ticked in a list nobody could see was wrong. That dismissal is answered as the field being filtered by nothing, so it arrives as 'helix-facet' like every other change and the chip goes because the filter went. */
|
|
9061
9070
|
"helix-headless-filter-input": DefineCustomElement<
|
|
9062
9071
|
HelixHeadlessFilterInput,
|
|
9063
9072
|
HelixHeadlessFilterInputVueProps,
|