@fusion.dev/helix-headless 0.0.0-dev → 0.0.2
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 +4513 -4483
- package/dist/accordion/item/accordion-item.d.ts +13 -15
- package/dist/accordion/item/accordion-item.js +15 -17
- package/dist/announcement/root/announcement-root.d.ts +7 -25
- package/dist/announcement/root/announcement-root.js +7 -20
- package/dist/app-header/root/app-header-root.d.ts +10 -17
- package/dist/app-header/root/app-header-root.js +9 -18
- package/dist/avatar/group/avatar-group.d.ts +10 -19
- package/dist/avatar/group/avatar-group.js +12 -17
- package/dist/avatar/root/avatar-root.d.ts +8 -8
- package/dist/avatar/root/avatar-root.js +19 -20
- package/dist/badge/root/badge-root.d.ts +6 -6
- package/dist/badge/root/badge-root.js +13 -13
- package/dist/bar-chart/root/bar-chart-root.d.ts +21 -29
- package/dist/bar-chart/root/bar-chart-root.js +42 -57
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +12 -18
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +13 -16
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +9 -28
- package/dist/breadcrumbs/root/breadcrumbs-root.js +9 -28
- package/dist/button/root/button-root.d.ts +84 -94
- package/dist/button/root/button-root.js +82 -92
- package/dist/callout/root/callout-root.d.ts +4 -5
- package/dist/carousel/root/carousel-root.d.ts +59 -71
- package/dist/carousel/root/carousel-root.js +73 -101
- package/dist/chat/composer/chat-composer.d.ts +29 -33
- package/dist/chat/composer/chat-composer.js +40 -44
- package/dist/chat/message/chat-message.d.ts +25 -25
- package/dist/chat/message/chat-message.js +26 -26
- package/dist/chat/root/chat-root.d.ts +28 -41
- package/dist/chat/root/chat-root.js +27 -40
- package/dist/checkbox/root/checkbox-root.d.ts +10 -12
- package/dist/checkbox/root/checkbox-root.js +29 -35
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +32 -45
- package/dist/checkbox-group/root/checkbox-group-root.js +53 -79
- package/dist/code-block/root/code-block-root.d.ts +3 -4
- package/dist/code-block/root/code-block-root.js +8 -12
- package/dist/color-input/root/color-input-root.d.ts +36 -37
- package/dist/color-input/root/color-input-root.js +29 -34
- package/dist/color-picker/color.d.ts +7 -8
- package/dist/color-picker/color.js +7 -8
- package/dist/color-picker/root/color-picker-root.d.ts +55 -57
- package/dist/color-picker/root/color-picker-root.js +60 -64
- package/dist/combobox/root/combobox-root.d.ts +53 -58
- package/dist/combobox/root/combobox-root.js +85 -94
- package/dist/command/root/command-root.d.ts +8 -8
- package/dist/command/root/command-root.js +29 -33
- package/dist/copy-button/root/copy-button-root.d.ts +21 -24
- package/dist/copy-button/root/copy-button-root.js +25 -35
- package/dist/data-table/root/data-table-root.d.ts +77 -76
- package/dist/data-table/root/data-table-root.js +95 -84
- package/dist/data-table/root/order.d.ts +2 -2
- package/dist/data-table/root/order.js +1 -3
- package/dist/date-input/root/date-input-root.d.ts +88 -93
- package/dist/date-input/root/date-input-root.js +147 -158
- package/dist/date-picker/root/date-picker-root.d.ts +75 -83
- package/dist/date-picker/root/date-picker-root.js +120 -143
- package/dist/dialog/root/dialog-root.d.ts +41 -24
- package/dist/dialog/root/dialog-root.js +47 -24
- package/dist/divider/root/divider-root.d.ts +5 -6
- package/dist/divider/root/divider-root.js +4 -5
- package/dist/donut-chart/root/donut-chart-root.d.ts +22 -25
- package/dist/donut-chart/root/donut-chart-root.js +37 -51
- package/dist/drawer/root/drawer-root.d.ts +24 -29
- package/dist/drawer/root/drawer-root.js +15 -22
- package/dist/drilldown/item/drilldown-item.d.ts +14 -14
- package/dist/drilldown/item/drilldown-item.js +24 -26
- package/dist/drilldown/root/drilldown-root.d.ts +8 -10
- package/dist/drilldown/root/drilldown-root.js +6 -7
- package/dist/element-events.generated.js +1 -1
- package/dist/file-input/root/file-input-root.d.ts +20 -24
- package/dist/file-input/root/file-input-root.js +42 -57
- package/dist/format-date/root/format-date-root.js +1 -1
- package/dist/heatmap/root/buckets.d.ts +8 -8
- package/dist/heatmap/root/buckets.js +8 -8
- package/dist/heatmap/root/heatmap-root.d.ts +57 -63
- package/dist/heatmap/root/heatmap-root.js +72 -83
- package/dist/icon/root/icon-root.d.ts +4 -4
- package/dist/icon/root/icon-root.js +9 -9
- package/dist/icon-button/root/icon-button-root.d.ts +4 -6
- package/dist/icon-button/root/icon-button-root.js +4 -6
- package/dist/image/root/image-root.d.ts +49 -59
- package/dist/image/root/image-root.js +55 -65
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -5
- package/dist/input/root/input-root.d.ts +61 -85
- package/dist/input/root/input-root.js +79 -106
- package/dist/kbd/root/kbd-root.d.ts +8 -7
- package/dist/kbd/root/kbd-root.js +71 -11
- package/dist/legend/root/legend-root.d.ts +1 -1
- package/dist/legend/root/legend-root.js +4 -5
- package/dist/line-chart/root/line-chart-root.d.ts +26 -30
- package/dist/line-chart/root/line-chart-root.js +10 -10
- package/dist/list/item/list-item.d.ts +14 -18
- package/dist/list/item/list-item.js +18 -22
- package/dist/list/root/list-root.d.ts +4 -4
- package/dist/list/root/list-root.js +3 -3
- package/dist/listbox/root/listbox-root.d.ts +31 -58
- package/dist/listbox/root/listbox-root.js +66 -109
- package/dist/megamenu/root/megamenu-root.d.ts +34 -35
- package/dist/megamenu/root/megamenu-root.js +53 -58
- package/dist/menu/item/menu-item.d.ts +39 -53
- package/dist/menu/item/menu-item.js +50 -64
- package/dist/menu/root/menu-root.d.ts +30 -40
- package/dist/menu/root/menu-root.js +49 -82
- package/dist/meter/root/meter-root.d.ts +49 -53
- package/dist/meter/root/meter-root.js +22 -27
- package/dist/navigation/root/navigation-root.js +11 -19
- package/dist/notifications/notification/notification.d.ts +16 -22
- package/dist/notifications/notification/notification.js +21 -27
- package/dist/notifications/root/notifications-root.d.ts +31 -39
- package/dist/notifications/root/notifications-root.js +41 -52
- package/dist/number-input/root/number-input-root.d.ts +31 -33
- package/dist/number-input/root/number-input-root.js +37 -39
- package/dist/option/root/option-root.d.ts +73 -74
- package/dist/option/root/option-root.js +62 -64
- package/dist/outline/root/outline-root.d.ts +38 -44
- package/dist/outline/root/outline-root.js +66 -82
- package/dist/pagination/root/pagination-root.d.ts +87 -92
- package/dist/pagination/root/pagination-root.js +116 -123
- package/dist/pagination/size/pagination-size.d.ts +31 -50
- package/dist/pagination/size/pagination-size.js +35 -55
- package/dist/pagination/summary/pagination-summary.d.ts +12 -12
- package/dist/pagination/summary/pagination-summary.js +18 -18
- package/dist/pin-input/root/pin-input-root.d.ts +53 -70
- package/dist/pin-input/root/pin-input-root.js +74 -94
- package/dist/popover/root/popover-root.d.ts +15 -20
- package/dist/popover/root/popover-root.js +19 -36
- package/dist/progress/root/progress-root.d.ts +12 -14
- package/dist/progress/root/progress-root.js +22 -25
- package/dist/qr-code/root/qr-code-root.d.ts +11 -11
- package/dist/qr-code/root/qr-code-root.js +12 -14
- package/dist/radio/group/radio-group.js +19 -26
- package/dist/radio/root/radio-root.d.ts +12 -13
- package/dist/radio/root/radio-root.js +12 -13
- package/dist/rating/root/rating-root.d.ts +25 -30
- package/dist/rating/root/rating-root.js +43 -50
- package/dist/scroll-area/root/scroll-area-root.d.ts +11 -14
- package/dist/scroll-area/root/scroll-area-root.js +39 -33
- package/dist/select/root/select-root.d.ts +7 -12
- package/dist/select/root/select-root.js +40 -55
- package/dist/slider/root/slider-root.d.ts +53 -60
- package/dist/slider/root/slider-root.js +74 -85
- package/dist/sparkline/root/sparkline-root.d.ts +43 -47
- package/dist/sparkline/root/sparkline-root.js +23 -32
- package/dist/speed-dial/item/speed-dial-item.d.ts +6 -6
- package/dist/speed-dial/item/speed-dial-item.js +9 -9
- package/dist/speed-dial/root/speed-dial-root.d.ts +21 -25
- package/dist/speed-dial/root/speed-dial-root.js +32 -40
- package/dist/splitter/root/splitter-root.d.ts +98 -111
- package/dist/splitter/root/splitter-root.js +96 -123
- package/dist/stat/root/stat-root.d.ts +2 -7
- package/dist/stat/root/stat-root.js +0 -5
- package/dist/steps/step/step.d.ts +19 -24
- package/dist/steps/step/step.js +27 -32
- package/dist/switch/root/switch-root.js +2 -2
- package/dist/table/column/table-column.d.ts +54 -60
- package/dist/table/column/table-column.js +95 -68
- package/dist/table/root/table-root.d.ts +5 -6
- package/dist/table/root/table-root.js +7 -10
- package/dist/tabs/panel/tab-panel.d.ts +21 -25
- package/dist/tabs/panel/tab-panel.js +25 -29
- package/dist/tabs/root/tabs-root.d.ts +25 -34
- package/dist/tabs/root/tabs-root.js +22 -28
- package/dist/tabs/tab/tab.d.ts +12 -12
- package/dist/tabs/tab/tab.js +19 -20
- package/dist/textarea/root/textarea-root.d.ts +36 -36
- package/dist/textarea/root/textarea-root.js +43 -47
- package/dist/time-input/root/time-input-root.d.ts +58 -68
- package/dist/time-input/root/time-input-root.js +62 -77
- package/dist/time-picker/root/time-picker-root.d.ts +73 -79
- package/dist/time-picker/root/time-picker-root.js +72 -84
- package/dist/timeline/item/timeline-item.d.ts +8 -11
- package/dist/timeline/item/timeline-item.js +8 -11
- package/dist/timeline/root/timeline-root.d.ts +5 -7
- package/dist/timeline/root/timeline-root.js +5 -7
- package/dist/toast/item/toast-item.d.ts +9 -27
- package/dist/toast/item/toast-item.js +19 -41
- package/dist/toast/root/toast-root.d.ts +10 -14
- package/dist/toast/root/toast-root.js +4 -5
- package/dist/toggle/group/toggle-group.d.ts +6 -15
- package/dist/toggle/group/toggle-group.js +21 -36
- package/dist/toggle/root/toggle-root.d.ts +26 -27
- package/dist/toggle/root/toggle-root.js +30 -31
- package/dist/toolbar/root/toolbar-root.d.ts +7 -10
- package/dist/toolbar/root/toolbar-root.js +10 -14
- package/dist/tooltip/root/tooltip-root.d.ts +52 -59
- package/dist/tooltip/root/tooltip-root.js +98 -93
- package/dist/tour/root/tour-root.d.ts +19 -23
- package/dist/tour/root/tour-root.js +31 -41
- package/dist/tour/stop/tour-stop.d.ts +14 -15
- package/dist/tour/stop/tour-stop.js +31 -34
- package/dist/tree/item/tree-item.d.ts +30 -35
- package/dist/tree/item/tree-item.js +43 -55
- package/dist/tree/root/tree-root.d.ts +7 -10
- package/dist/tree/root/tree-root.js +33 -42
- package/dist/trend/root/trend-root.d.ts +3 -5
- package/dist/trend/root/trend-root.js +5 -9
- package/dist/video/root/video-root.d.ts +100 -124
- package/dist/video/root/video-root.js +142 -176
- package/dist/video-playlist/item/video-playlist-item.d.ts +16 -16
- package/dist/video-playlist/item/video-playlist-item.js +24 -24
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -8
- package/dist/video-playlist/menu/video-playlist-menu.js +20 -29
- package/dist/video-playlist/root/video-playlist-root.d.ts +16 -11
- package/dist/video-playlist/root/video-playlist-root.js +21 -25
- package/dist/virtual-list/root/virtual-list-root.d.ts +8 -12
- package/dist/virtual-list/root/virtual-list-root.js +11 -16
- package/jsx.d.ts +9797 -12561
- package/package.json +6 -6
- package/vue.d.ts +2684 -3228
|
@@ -39,9 +39,19 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
|
|
|
39
39
|
*/
|
|
40
40
|
disabled: boolean;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* Whether this row holds the region's tab stop. Written by the stack.
|
|
43
|
+
*
|
|
44
|
+
* A drill-down keeps one stop and moves within it on the arrows, so every
|
|
45
|
+
* other row is at `-1`. Leave it off every row, including the first, and
|
|
46
|
+
* nothing in the region is tab-reachable: the keyboard cannot get in without
|
|
47
|
+
* first clicking something with a pointer.
|
|
48
|
+
*
|
|
49
|
+
* No attribute, the same as `Button`'s: this is coordination between
|
|
50
|
+
* elements, and writing `tabindex` onto a host the consumer rendered is a
|
|
51
|
+
* change a React consumer's hydration reports and does not patch up. The stop
|
|
52
|
+
* lands inside this shadow root instead.
|
|
43
53
|
*/
|
|
44
|
-
|
|
54
|
+
focusable: boolean;
|
|
45
55
|
/**
|
|
46
56
|
* @internal Read by a parent to identify its children across the light DOM,
|
|
47
57
|
* which is cheaper than `instanceof` and is why this is public rather than
|
|
@@ -61,19 +71,9 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
|
|
|
61
71
|
*/
|
|
62
72
|
showingPage: boolean;
|
|
63
73
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* A drill-down keeps one stop and moves within it on the arrows, so every
|
|
67
|
-
* other row is at `-1`. Every row was, including the first, which left
|
|
68
|
-
* nothing in the region tab-reachable at all: the keyboard could not get in
|
|
69
|
-
* without first clicking something with a pointer.
|
|
70
|
-
*
|
|
71
|
-
* No attribute, the same as `Button`'s: this is coordination between
|
|
72
|
-
* elements, and writing `tabindex` onto a host the consumer rendered is a
|
|
73
|
-
* change a React consumer's hydration reports and does not patch up. The stop
|
|
74
|
-
* lands inside this shadow root instead.
|
|
74
|
+
* Identifies the row to whatever is listening.
|
|
75
75
|
*/
|
|
76
|
-
|
|
76
|
+
value: string;
|
|
77
77
|
/** Moves focus onto the row itself. */
|
|
78
78
|
focusItem(): void;
|
|
79
79
|
/** Announces that this row was chosen. */
|
|
@@ -48,9 +48,19 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
48
48
|
*/
|
|
49
49
|
this.disabled = false;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* Whether this row holds the region's tab stop. Written by the stack.
|
|
52
|
+
*
|
|
53
|
+
* A drill-down keeps one stop and moves within it on the arrows, so every
|
|
54
|
+
* other row is at `-1`. Leave it off every row, including the first, and
|
|
55
|
+
* nothing in the region is tab-reachable: the keyboard cannot get in without
|
|
56
|
+
* first clicking something with a pointer.
|
|
57
|
+
*
|
|
58
|
+
* No attribute, the same as `Button`'s: this is coordination between
|
|
59
|
+
* elements, and writing `tabindex` onto a host the consumer rendered is a
|
|
60
|
+
* change a React consumer's hydration reports and does not patch up. The stop
|
|
61
|
+
* lands inside this shadow root instead.
|
|
52
62
|
*/
|
|
53
|
-
this.
|
|
63
|
+
this.focusable = false;
|
|
54
64
|
/**
|
|
55
65
|
* @internal Read by a parent to identify its children across the light DOM,
|
|
56
66
|
* which is cheaper than `instanceof` and is why this is public rather than
|
|
@@ -70,19 +80,9 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
70
80
|
*/
|
|
71
81
|
this.showingPage = false;
|
|
72
82
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* A drill-down keeps one stop and moves within it on the arrows, so every
|
|
76
|
-
* other row is at `-1`. Every row was, including the first, which left
|
|
77
|
-
* nothing in the region tab-reachable at all: the keyboard could not get in
|
|
78
|
-
* without first clicking something with a pointer.
|
|
79
|
-
*
|
|
80
|
-
* No attribute, the same as `Button`'s: this is coordination between
|
|
81
|
-
* elements, and writing `tabindex` onto a host the consumer rendered is a
|
|
82
|
-
* change a React consumer's hydration reports and does not patch up. The stop
|
|
83
|
-
* lands inside this shadow root instead.
|
|
83
|
+
* Identifies the row to whatever is listening.
|
|
84
84
|
*/
|
|
85
|
-
this.
|
|
85
|
+
this.value = '';
|
|
86
86
|
}
|
|
87
87
|
/** Moves focus onto the row itself. */
|
|
88
88
|
focusItem() {
|
|
@@ -104,16 +104,14 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
104
104
|
}
|
|
105
105
|
/* A real `<button>`, and `role="menuitem"` on it.
|
|
106
106
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* one rather than reproducing it.
|
|
107
|
+
* A `<div role="button">` with a click handler cannot be activated from the
|
|
108
|
+
* keyboard: Enter and Space are behavior the platform gives a real button
|
|
109
|
+
* and gives nothing else. Same argument `Button` makes for rendering one
|
|
110
|
+
* rather than reproducing it.
|
|
112
111
|
*
|
|
113
112
|
* `menuitem` because the stack says `role="menu"`, and a menu whose
|
|
114
|
-
* children are buttons is not a menu:
|
|
115
|
-
*
|
|
116
|
-
* other.
|
|
113
|
+
* children are buttons is not a menu: a reader would be told the count of
|
|
114
|
+
* items by one role and the kind of them by the other.
|
|
117
115
|
*
|
|
118
116
|
* `aria-disabled` rather than `disabled`, so a row that cannot be chosen is
|
|
119
117
|
* still reachable and still announces why. `select()` is what refuses. */
|
|
@@ -135,8 +133,8 @@ __decorate([
|
|
|
135
133
|
property({ reflect: true, type: Boolean })
|
|
136
134
|
], HelixHeadlessDrilldownItem.prototype, "disabled", void 0);
|
|
137
135
|
__decorate([
|
|
138
|
-
property()
|
|
139
|
-
], HelixHeadlessDrilldownItem.prototype, "
|
|
136
|
+
property({ attribute: false })
|
|
137
|
+
], HelixHeadlessDrilldownItem.prototype, "focusable", void 0);
|
|
140
138
|
__decorate([
|
|
141
139
|
property({ attribute: false })
|
|
142
140
|
], HelixHeadlessDrilldownItem.prototype, "onPage", void 0);
|
|
@@ -144,8 +142,8 @@ __decorate([
|
|
|
144
142
|
property({ attribute: false })
|
|
145
143
|
], HelixHeadlessDrilldownItem.prototype, "showingPage", void 0);
|
|
146
144
|
__decorate([
|
|
147
|
-
property(
|
|
148
|
-
], HelixHeadlessDrilldownItem.prototype, "
|
|
145
|
+
property()
|
|
146
|
+
], HelixHeadlessDrilldownItem.prototype, "value", void 0);
|
|
149
147
|
HelixHeadlessDrilldownItem = __decorate([
|
|
150
148
|
customElement('helix-headless-drilldown-item')
|
|
151
149
|
], HelixHeadlessDrilldownItem);
|
|
@@ -61,12 +61,11 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
|
|
|
61
61
|
* reader went deeper or came back. Without it a slide has to pick one
|
|
62
62
|
* direction and be wrong half the time.
|
|
63
63
|
*
|
|
64
|
-
* **Undefined until a move has happened**,
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* and the settle guard does not suppress it.
|
|
64
|
+
* **Undefined until a move has happened**, and never defaulted. A value
|
|
65
|
+
* written on the first update puts an attribute on the host that a consumer's
|
|
66
|
+
* server never sent, reported as a hydration mismatch, and animates the first
|
|
67
|
+
* page in on load: an animation is not a transition, so the settle guard does
|
|
68
|
+
* not suppress it.
|
|
70
69
|
*/
|
|
71
70
|
private direction?;
|
|
72
71
|
private readonly drilldown;
|
|
@@ -75,10 +74,9 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
|
|
|
75
74
|
/**
|
|
76
75
|
* Puts the region's one tab stop on the first row of the page showing.
|
|
77
76
|
*
|
|
78
|
-
*
|
|
79
|
-
* the
|
|
80
|
-
*
|
|
81
|
-
* toolbar uses and the one a `menu` wants.
|
|
77
|
+
* One row holds the stop and the arrows move within, which is the roving
|
|
78
|
+
* pattern the toolbar uses and the one a `menu` wants. Every row at `-1` is
|
|
79
|
+
* a region the keyboard cannot get into at all without a pointer first.
|
|
82
80
|
*
|
|
83
81
|
* Called after every update, because the set changes with the page: drilling
|
|
84
82
|
* in replaces the rows outright, and the stop has to land on rows that are
|
|
@@ -133,10 +133,9 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
133
133
|
/**
|
|
134
134
|
* Puts the region's one tab stop on the first row of the page showing.
|
|
135
135
|
*
|
|
136
|
-
*
|
|
137
|
-
* the
|
|
138
|
-
*
|
|
139
|
-
* toolbar uses and the one a `menu` wants.
|
|
136
|
+
* One row holds the stop and the arrows move within, which is the roving
|
|
137
|
+
* pattern the toolbar uses and the one a `menu` wants. Every row at `-1` is
|
|
138
|
+
* a region the keyboard cannot get into at all without a pointer first.
|
|
140
139
|
*
|
|
141
140
|
* Called after every update, because the set changes with the page: drilling
|
|
142
141
|
* in replaces the rows outright, and the stop has to land on rows that are
|
|
@@ -247,9 +246,9 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
247
246
|
};
|
|
248
247
|
__decorate([
|
|
249
248
|
property()
|
|
250
|
-
/* Not "Menu"
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
/* Not "Menu". This component's own description is built around not being one,
|
|
250
|
+
and a default accessible name is the one place that claim reaches a
|
|
251
|
+
reader. */
|
|
253
252
|
], HelixHeadlessDrilldown.prototype, "label", void 0);
|
|
254
253
|
__decorate([
|
|
255
254
|
property({ attribute: 'back-label' })
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by `bun run element-events` from this package's manifest. Do not edit.
|
|
1
|
+
/* Generated by `bun run gen:element-events` from this package's manifest. Do not edit.
|
|
2
2
|
*
|
|
3
3
|
* Which events each tag dispatches, registered so the React prop audit can tell
|
|
4
4
|
* a handler on the wrong element from one on the right one. See
|
|
@@ -9,10 +9,9 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
9
9
|
* **A real `<input type="file">`, kept and made invisible rather than
|
|
10
10
|
* replaced.** It is the only way to open a file picker: the dialog is a
|
|
11
11
|
* privileged action a script cannot start on its own, and it opens for a click
|
|
12
|
-
* on the input or on a `<label>` pointing at it.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* control.
|
|
12
|
+
* on the input or on a `<label>` pointing at it. A component that draws its own
|
|
13
|
+
* button ends up calling `.click()` on a hidden input anyway, and then has two
|
|
14
|
+
* things a screen reader can find where there is one control.
|
|
16
15
|
*
|
|
17
16
|
* So the input stays, holds the label, the name, the validity and the focus,
|
|
18
17
|
* and the visible trigger is a `<label for>` rather than a button. A label is
|
|
@@ -25,10 +24,10 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
25
24
|
*
|
|
26
25
|
* **Files are not a value a consumer can hand back.** Every other control here
|
|
27
26
|
* takes the controlled and uncontrolled pair, and this one does not: a `FileList`
|
|
28
|
-
* cannot be constructed from markup, and a consumer writing
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
27
|
+
* cannot be constructed from markup, and browsers refuse a consumer writing
|
|
28
|
+
* `value` on a file input outright, because a page that could name a file could
|
|
29
|
+
* read it. So this element owns what was chosen, announces it, and offers
|
|
30
|
+
* `clear()` for the one change a consumer can legitimately ask for.
|
|
32
31
|
*
|
|
33
32
|
* **The list under it is the control's own, not decoration.** A file input with
|
|
34
33
|
* files chosen reports "3 files" and nothing else, which is unusable for
|
|
@@ -55,7 +54,6 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
55
54
|
* @csspart field - The box that is pressed and dropped on.
|
|
56
55
|
* @csspart file - One chosen file.
|
|
57
56
|
* @csspart hint - Help under the field, while nothing is wrong.
|
|
58
|
-
* @csspart icon - A glyph this component draws.
|
|
59
57
|
* @csspart kind - What kind of file it is.
|
|
60
58
|
* @csspart kind-dismiss - The remove button, when `dismissible`.
|
|
61
59
|
* @csspart kind-dismiss-mark - The glyph on the dismiss control, where none is slotted.
|
|
@@ -77,28 +75,28 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
77
75
|
* Which files the picker offers, as a native `accept` list.
|
|
78
76
|
*/
|
|
79
77
|
accept: string;
|
|
80
|
-
/**
|
|
81
|
-
* Whether more than one file can be chosen.
|
|
82
|
-
*/
|
|
83
|
-
multiple: boolean;
|
|
84
78
|
/**
|
|
85
79
|
* Which camera or microphone a mobile picker should offer, if any.
|
|
86
80
|
*/
|
|
87
81
|
capture?: 'environment' | 'user';
|
|
88
|
-
/**
|
|
89
|
-
* What the trigger reads, where nothing is slotted into it.
|
|
90
|
-
*/
|
|
91
|
-
triggerLabel: string;
|
|
92
82
|
/**
|
|
93
83
|
* Language tag the sizes are written in.
|
|
94
84
|
*
|
|
95
85
|
* Absent uses the runtime's own.
|
|
96
86
|
*/
|
|
97
87
|
locale: string;
|
|
88
|
+
/**
|
|
89
|
+
* Whether more than one file can be chosen.
|
|
90
|
+
*/
|
|
91
|
+
multiple: boolean;
|
|
98
92
|
/**
|
|
99
93
|
* What the control removing one file is called, per file.
|
|
100
94
|
*/
|
|
101
95
|
removeLabel: string;
|
|
96
|
+
/**
|
|
97
|
+
* What the trigger reads, where nothing is slotted into it.
|
|
98
|
+
*/
|
|
99
|
+
triggerLabel: string;
|
|
102
100
|
/**
|
|
103
101
|
* Whether something is being dragged over the field.
|
|
104
102
|
*
|
|
@@ -175,15 +173,13 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
175
173
|
* element saying two things and two methods would be two places to keep in
|
|
176
174
|
* step. Both parts are written out rather than passed in, and that is not
|
|
177
175
|
* style: a part name behind an interpolation is a part the manifest cannot
|
|
178
|
-
* see, so
|
|
179
|
-
* moment this took the name as an argument.
|
|
176
|
+
* see, so a stylesheet targeting it matches nothing.
|
|
180
177
|
*
|
|
181
178
|
* A method rather than a fragment inline, so a tier above can render its own,
|
|
182
|
-
* wrap this one,
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
* from the same template.
|
|
179
|
+
* wrap this one, or leave it out without reimplementing the whole template.
|
|
180
|
+
* The tag is interpolated rather than written, so `tier` resolves it: this
|
|
181
|
+
* renders the headless element, and a styled subclass that sets `tier`
|
|
182
|
+
* renders the styled one from the same template.
|
|
187
183
|
*/
|
|
188
184
|
protected renderMeta(file: File): TemplateResult;
|
|
189
185
|
protected render(): TemplateResult;
|
|
@@ -19,7 +19,7 @@ import '../../tag/index.js';
|
|
|
19
19
|
* a thing.
|
|
20
20
|
*
|
|
21
21
|
* `Intl.NumberFormat` for the number rather than `toFixed`, so a decimal comma
|
|
22
|
-
* lands where a decimal comma belongs. The unit is not
|
|
22
|
+
* lands where a decimal comma belongs. The unit is not localized with it: `MB`
|
|
23
23
|
* is written the same way in the places this ships, and `Intl`'s own byte units
|
|
24
24
|
* carry no scale to pick from.
|
|
25
25
|
*/
|
|
@@ -62,10 +62,9 @@ const kind = (file) => {
|
|
|
62
62
|
* **A real `<input type="file">`, kept and made invisible rather than
|
|
63
63
|
* replaced.** It is the only way to open a file picker: the dialog is a
|
|
64
64
|
* privileged action a script cannot start on its own, and it opens for a click
|
|
65
|
-
* on the input or on a `<label>` pointing at it.
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* control.
|
|
65
|
+
* on the input or on a `<label>` pointing at it. A component that draws its own
|
|
66
|
+
* button ends up calling `.click()` on a hidden input anyway, and then has two
|
|
67
|
+
* things a screen reader can find where there is one control.
|
|
69
68
|
*
|
|
70
69
|
* So the input stays, holds the label, the name, the validity and the focus,
|
|
71
70
|
* and the visible trigger is a `<label for>` rather than a button. A label is
|
|
@@ -78,10 +77,10 @@ const kind = (file) => {
|
|
|
78
77
|
*
|
|
79
78
|
* **Files are not a value a consumer can hand back.** Every other control here
|
|
80
79
|
* takes the controlled and uncontrolled pair, and this one does not: a `FileList`
|
|
81
|
-
* cannot be constructed from markup, and a consumer writing
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
80
|
+
* cannot be constructed from markup, and browsers refuse a consumer writing
|
|
81
|
+
* `value` on a file input outright, because a page that could name a file could
|
|
82
|
+
* read it. So this element owns what was chosen, announces it, and offers
|
|
83
|
+
* `clear()` for the one change a consumer can legitimately ask for.
|
|
85
84
|
*
|
|
86
85
|
* **The list under it is the control's own, not decoration.** A file input with
|
|
87
86
|
* files chosen reports "3 files" and nothing else, which is unusable for
|
|
@@ -108,7 +107,6 @@ const kind = (file) => {
|
|
|
108
107
|
* @csspart field - The box that is pressed and dropped on.
|
|
109
108
|
* @csspart file - One chosen file.
|
|
110
109
|
* @csspart hint - Help under the field, while nothing is wrong.
|
|
111
|
-
* @csspart icon - A glyph this component draws.
|
|
112
110
|
* @csspart kind - What kind of file it is.
|
|
113
111
|
* @csspart kind-dismiss - The remove button, when `dismissible`.
|
|
114
112
|
* @csspart kind-dismiss-mark - The glyph on the dismiss control, where none is slotted.
|
|
@@ -139,24 +137,24 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
139
137
|
* Which files the picker offers, as a native `accept` list.
|
|
140
138
|
*/
|
|
141
139
|
this.accept = '';
|
|
142
|
-
/**
|
|
143
|
-
* Whether more than one file can be chosen.
|
|
144
|
-
*/
|
|
145
|
-
this.multiple = false;
|
|
146
|
-
/**
|
|
147
|
-
* What the trigger reads, where nothing is slotted into it.
|
|
148
|
-
*/
|
|
149
|
-
this.triggerLabel = 'Choose files';
|
|
150
140
|
/**
|
|
151
141
|
* Language tag the sizes are written in.
|
|
152
142
|
*
|
|
153
143
|
* Absent uses the runtime's own.
|
|
154
144
|
*/
|
|
155
145
|
this.locale = '';
|
|
146
|
+
/**
|
|
147
|
+
* Whether more than one file can be chosen.
|
|
148
|
+
*/
|
|
149
|
+
this.multiple = false;
|
|
156
150
|
/**
|
|
157
151
|
* What the control removing one file is called, per file.
|
|
158
152
|
*/
|
|
159
153
|
this.removeLabel = 'Remove';
|
|
154
|
+
/**
|
|
155
|
+
* What the trigger reads, where nothing is slotted into it.
|
|
156
|
+
*/
|
|
157
|
+
this.triggerLabel = 'Choose files';
|
|
160
158
|
/**
|
|
161
159
|
* Whether something is being dragged over the field.
|
|
162
160
|
*
|
|
@@ -295,12 +293,10 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
295
293
|
bind and what a native file input sends when the chosen files move: both,
|
|
296
294
|
in that order, the way every other control here does.
|
|
297
295
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
that renders a native control rather than every family the first pass
|
|
303
|
-
named. See 308. */
|
|
296
|
+
Without the explicit `input`, the only one a consumer receives is the
|
|
297
|
+
inner `<input type="file">`'s own, composed out of this shadow root, so
|
|
298
|
+
the documented event does not exist and an undocumented one arrives in
|
|
299
|
+
its place. */
|
|
304
300
|
this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
|
|
305
301
|
this.dispatchEvent(new Event('change', { bubbles: true, composed: false }));
|
|
306
302
|
}
|
|
@@ -327,12 +323,10 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
327
323
|
Kept, as a decision rather than an omission. A phantom entry naming a file
|
|
328
324
|
that does not exist is a thing every server reading this form has to know
|
|
329
325
|
to discard, and the reason the platform sends one is compatibility with
|
|
330
|
-
form encodings that predate `FormData`
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
here because a divergence nobody wrote down is indistinguishable from one
|
|
335
|
-
nobody noticed. */
|
|
326
|
+
form encodings that predate `FormData`. `value` is excused on this family
|
|
327
|
+
already, for the neighboring reason that the native one is
|
|
328
|
+
`C:\fakepath\name`; this is the same component declining to reproduce a
|
|
329
|
+
lie, one level down. */
|
|
336
330
|
this.internals.setFormValue(data);
|
|
337
331
|
const control = this.control;
|
|
338
332
|
if (!control) {
|
|
@@ -361,22 +355,15 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
361
355
|
/*
|
|
362
356
|
* The hint goes under the field, and the list after both.
|
|
363
357
|
*
|
|
364
|
-
* It was under the list, on the reading that the field and its files are one
|
|
365
|
-
* block and the hint describes the block. Three things say otherwise.
|
|
366
|
-
*
|
|
367
358
|
* A hint is instruction for the next action rather than a note about the
|
|
368
359
|
* result: "up to 10MB each" is a rule for what may be added, and a rule read
|
|
369
|
-
* after the outcome is a rule read too late.
|
|
360
|
+
* after the outcome is a rule read too late. Its position also has to be
|
|
361
|
+
* stable, and under the list it travels down the page as files are added, a
|
|
362
|
+
* card's height at a time. Every other field here puts it immediately under
|
|
363
|
+
* the control.
|
|
370
364
|
*
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
* at a time, so the one piece of guidance the control carries is never twice
|
|
374
|
-
* in the same place. Every other field here puts it immediately under the
|
|
375
|
-
* control, and a reader who has learned where to look should not have to
|
|
376
|
-
* relearn it for this one.
|
|
377
|
-
*
|
|
378
|
-
* And feedback stands in place of the hint rather than beside it, so wherever
|
|
379
|
-
* the hint is, an error is. An error about a file that was refused belongs
|
|
365
|
+
* Feedback stands in place of the hint rather than beside it, so wherever the
|
|
366
|
+
* hint is, an error is. An error about a file that was refused belongs
|
|
380
367
|
* against the control that refused it, not below a list of the ones that were
|
|
381
368
|
* not.
|
|
382
369
|
*/
|
|
@@ -388,15 +375,13 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
388
375
|
* element saying two things and two methods would be two places to keep in
|
|
389
376
|
* step. Both parts are written out rather than passed in, and that is not
|
|
390
377
|
* style: a part name behind an interpolation is a part the manifest cannot
|
|
391
|
-
* see, so
|
|
392
|
-
* moment this took the name as an argument.
|
|
378
|
+
* see, so a stylesheet targeting it matches nothing.
|
|
393
379
|
*
|
|
394
380
|
* A method rather than a fragment inline, so a tier above can render its own,
|
|
395
|
-
* wrap this one,
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
* from the same template.
|
|
381
|
+
* wrap this one, or leave it out without reimplementing the whole template.
|
|
382
|
+
* The tag is interpolated rather than written, so `tier` resolves it: this
|
|
383
|
+
* renders the headless element, and a styled subclass that sets `tier`
|
|
384
|
+
* renders the styled one from the same template.
|
|
400
385
|
*/
|
|
401
386
|
renderMeta(file) {
|
|
402
387
|
return html `<${this.tag('tag')} part="size"
|
|
@@ -435,7 +420,7 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
435
420
|
</div>
|
|
436
421
|
<!-- The hint sits under the field and the list goes last, which is the
|
|
437
422
|
one ordering decision this component makes differently from the way it
|
|
438
|
-
reads. Reasoning
|
|
423
|
+
reads. Reasoning above renderMeta. -->
|
|
439
424
|
${this.renderHint()}${this.renderFeedback()}
|
|
440
425
|
${files.length === 0
|
|
441
426
|
? nothing
|
|
@@ -464,21 +449,21 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
464
449
|
__decorate([
|
|
465
450
|
property()
|
|
466
451
|
], HelixHeadlessFileInput.prototype, "accept", void 0);
|
|
467
|
-
__decorate([
|
|
468
|
-
property({ reflect: true, type: Boolean })
|
|
469
|
-
], HelixHeadlessFileInput.prototype, "multiple", void 0);
|
|
470
452
|
__decorate([
|
|
471
453
|
property()
|
|
472
454
|
], HelixHeadlessFileInput.prototype, "capture", void 0);
|
|
473
|
-
__decorate([
|
|
474
|
-
property({ attribute: 'trigger-label' })
|
|
475
|
-
], HelixHeadlessFileInput.prototype, "triggerLabel", void 0);
|
|
476
455
|
__decorate([
|
|
477
456
|
property()
|
|
478
457
|
], HelixHeadlessFileInput.prototype, "locale", void 0);
|
|
458
|
+
__decorate([
|
|
459
|
+
property({ reflect: true, type: Boolean })
|
|
460
|
+
], HelixHeadlessFileInput.prototype, "multiple", void 0);
|
|
479
461
|
__decorate([
|
|
480
462
|
property({ attribute: 'remove-label' })
|
|
481
463
|
], HelixHeadlessFileInput.prototype, "removeLabel", void 0);
|
|
464
|
+
__decorate([
|
|
465
|
+
property({ attribute: 'trigger-label' })
|
|
466
|
+
], HelixHeadlessFileInput.prototype, "triggerLabel", void 0);
|
|
482
467
|
__decorate([
|
|
483
468
|
state()
|
|
484
469
|
], HelixHeadlessFileInput.prototype, "dropping", void 0);
|
|
@@ -142,7 +142,7 @@ let HelixHeadlessFormatDate = class HelixHeadlessFormatDate extends HelixElement
|
|
|
142
142
|
ordinary reasons: built in `firstUpdated` alone this comes back
|
|
143
143
|
permanently dead the first time a list is reordered. Guarded on
|
|
144
144
|
`hasUpdated` because the first connection happens before there is anything
|
|
145
|
-
to watch.
|
|
145
|
+
to watch. */
|
|
146
146
|
if (this.hasUpdated) {
|
|
147
147
|
this.watch();
|
|
148
148
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Kept apart from the element because both answers are arithmetic and both are
|
|
5
5
|
* easy to get subtly wrong in ways a picture hides: a threshold comparison off
|
|
6
|
-
* by one boundary
|
|
6
|
+
* by one boundary colors a handful of cells wrong out of ninety, and a fit
|
|
7
7
|
* calculation off by one drops a day silently. Neither is visible in a
|
|
8
8
|
* screenshot of a strip.
|
|
9
9
|
*/
|
|
@@ -18,7 +18,7 @@ export interface Reading {
|
|
|
18
18
|
* **The cell's own tone wins**, and that ordering is the whole reason both
|
|
19
19
|
* exist. A status page already knows a day was degraded; making it encode that
|
|
20
20
|
* as a number so a component can decode it again is work for nothing, and the
|
|
21
|
-
* encoding would have to agree with the thresholds or the
|
|
21
|
+
* encoding would have to agree with the thresholds or the colors would drift
|
|
22
22
|
* from the truth. A contribution graph has only counts and wants the buckets.
|
|
23
23
|
*
|
|
24
24
|
* Thresholds are read as lower bounds, in the order given, and the last one that
|
|
@@ -48,13 +48,13 @@ export declare const words: (source: string) => string[];
|
|
|
48
48
|
* cannot show, which is why the element reflects the number and announces it.
|
|
49
49
|
*
|
|
50
50
|
* **What crosses the width is a column, and `rows` is how many cells are in
|
|
51
|
-
* one.**
|
|
52
|
-
*
|
|
51
|
+
* one.** Counting cells is the same number only while `rows` is 1. Divide by
|
|
52
|
+
* the wrong thing at `rows="7"` and a ten week graph comes back as fifty-nine
|
|
53
53
|
* readings in a 592px box: eleven days dropped to fit a strip that wanted 156
|
|
54
|
-
* pixels, and
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* that drops a week
|
|
54
|
+
* pixels, and fifty-nine is not a multiple of seven, so every column after the
|
|
55
|
+
* cut is offset by a day and the day-of-week rows stop meaning anything. A
|
|
56
|
+
* calendar heatmap that silently rotates its own weekdays is worse than one
|
|
57
|
+
* that drops a week.
|
|
58
58
|
*
|
|
59
59
|
* The count is therefore always a whole number of columns, which is what keeps
|
|
60
60
|
* the tail slice aligned.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Kept apart from the element because both answers are arithmetic and both are
|
|
5
5
|
* easy to get subtly wrong in ways a picture hides: a threshold comparison off
|
|
6
|
-
* by one boundary
|
|
6
|
+
* by one boundary colors a handful of cells wrong out of ninety, and a fit
|
|
7
7
|
* calculation off by one drops a day silently. Neither is visible in a
|
|
8
8
|
* screenshot of a strip.
|
|
9
9
|
*/
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* **The cell's own tone wins**, and that ordering is the whole reason both
|
|
14
14
|
* exist. A status page already knows a day was degraded; making it encode that
|
|
15
15
|
* as a number so a component can decode it again is work for nothing, and the
|
|
16
|
-
* encoding would have to agree with the thresholds or the
|
|
16
|
+
* encoding would have to agree with the thresholds or the colors would drift
|
|
17
17
|
* from the truth. A contribution graph has only counts and wants the buckets.
|
|
18
18
|
*
|
|
19
19
|
* Thresholds are read as lower bounds, in the order given, and the last one that
|
|
@@ -61,13 +61,13 @@ export const words = (source) => source.split(/[\s,]+/).filter((one) => one !==
|
|
|
61
61
|
* cannot show, which is why the element reflects the number and announces it.
|
|
62
62
|
*
|
|
63
63
|
* **What crosses the width is a column, and `rows` is how many cells are in
|
|
64
|
-
* one.**
|
|
65
|
-
*
|
|
64
|
+
* one.** Counting cells is the same number only while `rows` is 1. Divide by
|
|
65
|
+
* the wrong thing at `rows="7"` and a ten week graph comes back as fifty-nine
|
|
66
66
|
* readings in a 592px box: eleven days dropped to fit a strip that wanted 156
|
|
67
|
-
* pixels, and
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* that drops a week
|
|
67
|
+
* pixels, and fifty-nine is not a multiple of seven, so every column after the
|
|
68
|
+
* cut is offset by a day and the day-of-week rows stop meaning anything. A
|
|
69
|
+
* calendar heatmap that silently rotates its own weekdays is worse than one
|
|
70
|
+
* that drops a week.
|
|
71
71
|
*
|
|
72
72
|
* The count is therefore always a whole number of columns, which is what keeps
|
|
73
73
|
* the tail slice aligned.
|