@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
|
@@ -48,10 +48,6 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
48
48
|
* @csspart placeholder - What stands in until it arrives.
|
|
49
49
|
*/
|
|
50
50
|
export declare class HelixHeadlessImage extends HelixElement {
|
|
51
|
-
/**
|
|
52
|
-
* Where the picture is.
|
|
53
|
-
*/
|
|
54
|
-
src: string;
|
|
55
51
|
/**
|
|
56
52
|
* What it shows, for a reader who cannot see it.
|
|
57
53
|
*
|
|
@@ -60,21 +56,18 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
60
56
|
*/
|
|
61
57
|
alt: string;
|
|
62
58
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* `lazy` by default, which is the opposite of the platform's, because a
|
|
66
|
-
* picture worth putting in a component is usually below the fold and the one
|
|
67
|
-
* that is not is the exception worth writing down.
|
|
68
|
-
*/
|
|
69
|
-
loading?: 'eager' | 'lazy';
|
|
70
|
-
/**
|
|
71
|
-
* The candidate widths, passed through to the picture.
|
|
59
|
+
* How the picture is fetched across origins, which decides whether a canvas
|
|
60
|
+
* can read it.
|
|
72
61
|
*/
|
|
73
|
-
|
|
62
|
+
crossOrigin: 'anonymous' | 'use-credentials' | null;
|
|
74
63
|
/**
|
|
75
|
-
*
|
|
64
|
+
* Whether the browser may decode off the main thread.
|
|
65
|
+
*
|
|
66
|
+
* `async` is the resting value and right for a picture in a page. `sync` is
|
|
67
|
+
* what a consumer reaches for when the picture is about to be composited with
|
|
68
|
+
* something else and a tear would show.
|
|
76
69
|
*/
|
|
77
|
-
|
|
70
|
+
decoding: 'async' | 'auto' | 'sync';
|
|
78
71
|
/**
|
|
79
72
|
* How urgently to fetch it, for the one picture that is the page.
|
|
80
73
|
*
|
|
@@ -86,25 +79,29 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
86
79
|
*/
|
|
87
80
|
fetchPriority: 'auto' | 'high' | 'low';
|
|
88
81
|
/**
|
|
89
|
-
* Whether
|
|
82
|
+
* Whether to wait until it is nearly on screen.
|
|
90
83
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* right for a picture in a page, and `sync` is what a consumer reaches for
|
|
95
|
-
* when the picture is about to be composited with something else and a tear
|
|
96
|
-
* would show.
|
|
97
|
-
*/
|
|
98
|
-
decoding: 'async' | 'auto' | 'sync';
|
|
99
|
-
/**
|
|
100
|
-
* How the picture is fetched across origins, which decides whether a canvas
|
|
101
|
-
* can read it.
|
|
84
|
+
* `lazy` by default, which is the opposite of the platform's, because a
|
|
85
|
+
* picture worth putting in a component is usually below the fold and the one
|
|
86
|
+
* that is not is the exception worth writing down.
|
|
102
87
|
*/
|
|
103
|
-
|
|
88
|
+
loading?: 'eager' | 'lazy';
|
|
104
89
|
/**
|
|
105
90
|
* How much of the referring URL to send with the request.
|
|
106
91
|
*/
|
|
107
92
|
referrerPolicy: string;
|
|
93
|
+
/**
|
|
94
|
+
* How much of the line it will take, passed through to the picture.
|
|
95
|
+
*/
|
|
96
|
+
sizes: string;
|
|
97
|
+
/**
|
|
98
|
+
* Where the picture is.
|
|
99
|
+
*/
|
|
100
|
+
src: string;
|
|
101
|
+
/**
|
|
102
|
+
* The candidate widths, passed through to the picture.
|
|
103
|
+
*/
|
|
104
|
+
srcset: string;
|
|
108
105
|
/**
|
|
109
106
|
* Whether the picture is on its way, here, or never coming.
|
|
110
107
|
*
|
|
@@ -115,14 +112,12 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
115
112
|
* a consumer rendered: React reads the attribute appearing at upgrade as a
|
|
116
113
|
* hydration mismatch, and a serialized `<helix-image status="loaded">` pasted
|
|
117
114
|
* back declares that a picture has arrived which this element has never
|
|
118
|
-
* fetched. The `data-` name is the library's answer to both, being a
|
|
119
|
-
*
|
|
120
|
-
* `
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* a custom state instead, which is what `:state(open)` and `:state(checked)`
|
|
125
|
-
* became on 27 Aug 2026 for exactly that reason.
|
|
115
|
+
* fetched. The `data-` name is the library's answer to both, being a name a
|
|
116
|
+
* re-parse cannot mistake for a declaration, and it is what `data-closed` on
|
|
117
|
+
* `Toast.Item` already does. A picture arrives after somebody fetched it,
|
|
118
|
+
* which puts this on the safe side of hydration: a fact that can be true on
|
|
119
|
+
* the *first* update mirrors to a custom state instead, which is what
|
|
120
|
+
* `:state(open)` and `:state(checked)` are.
|
|
126
121
|
*
|
|
127
122
|
* `loading` writes nothing, because it is where every image starts and the
|
|
128
123
|
* resting state of a mirror is the attribute's absence.
|
|
@@ -136,22 +131,18 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
136
131
|
* Says so under the platform's own name, because the platform's cannot escape.
|
|
137
132
|
*
|
|
138
133
|
* `load` and `error` on an `<img>` neither bubble nor compose, so the ones
|
|
139
|
-
* fired inside this shadow root reach nobody outside it.
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* already did for the same pair on the same element.
|
|
134
|
+
* fired inside this shadow root reach nobody outside it. Re-emitting from the
|
|
135
|
+
* host is what `relayNativeEvent` is for, and it is what `Avatar` already does
|
|
136
|
+
* for the same pair on the same element.
|
|
143
137
|
*
|
|
144
|
-
* **
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* all. So the prefix bought nothing and cost the two spellings this library
|
|
148
|
-
* had for one idea, `Avatar` relaying `load` while `Image` invented one. See
|
|
149
|
-
* 294 and 295.
|
|
138
|
+
* **Unprefixed, unlike every other event here.** The prefix exists to stop a
|
|
139
|
+
* collision with a native name, and there is none to collide with: the native
|
|
140
|
+
* events cannot reach a consumer at all.
|
|
150
141
|
*
|
|
151
|
-
* **Not bubbling, and that is not a small point.**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
142
|
+
* **Not bubbling, and that is not a small point.** A bubbling relay of `load`
|
|
143
|
+
* would be the tempting one, letting a gallery count its pictures with one
|
|
144
|
+
* listener, and it reaches nothing in React: `load` is in react-dom's
|
|
145
|
+
* `nonDelegatedEvents`, so there is no root
|
|
155
146
|
* listener to catch it, and React attaches a direct one for `<img>` and never
|
|
156
147
|
* for a custom element. `bindReactHandler` binds exactly the non-bubbling
|
|
157
148
|
* ones, so matching the native propagation is what makes `onLoad` work at
|
|
@@ -173,8 +164,8 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
173
164
|
* **It can only ever conclude success.** A picture that has not been attempted
|
|
174
165
|
* looks exactly like one that failed: `complete` is true and `naturalWidth` is
|
|
175
166
|
* zero for both, and a DOM that never fetches anything reports that for every
|
|
176
|
-
* image it has
|
|
177
|
-
* it
|
|
167
|
+
* image it has, so deciding `error` here calls every picture broken the moment
|
|
168
|
+
* it renders. Failure has an event of its own and that event is reliable, so
|
|
178
169
|
* this is only here to catch the success that happened too early to hear.
|
|
179
170
|
*/
|
|
180
171
|
private settle;
|
|
@@ -184,12 +175,11 @@ export declare class HelixHeadlessImage extends HelixElement {
|
|
|
184
175
|
/**
|
|
185
176
|
* The picture's own state, under the platform's own names.
|
|
186
177
|
*
|
|
187
|
-
* The `<img>` is inside this shadow root
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* narrower question
|
|
191
|
-
*
|
|
192
|
-
* substitute for the numbers.
|
|
178
|
+
* The `<img>` is inside this shadow root and `querySelector` does not cross a
|
|
179
|
+
* shadow boundary, so a consumer asking how big the picture turned out to be,
|
|
180
|
+
* or whether it is already there, has nowhere else to ask. `status` answers a
|
|
181
|
+
* narrower question in this library's words and is no substitute for the
|
|
182
|
+
* numbers.
|
|
193
183
|
*
|
|
194
184
|
* `naturalWidth` and `naturalHeight` are the case worth having: they are how
|
|
195
185
|
* a consumer sizes a lightbox or works out an aspect ratio, and they exist
|
|
@@ -57,10 +57,6 @@ import { property, state } from 'lit/decorators.js';
|
|
|
57
57
|
let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
58
58
|
constructor() {
|
|
59
59
|
super(...arguments);
|
|
60
|
-
/**
|
|
61
|
-
* Where the picture is.
|
|
62
|
-
*/
|
|
63
|
-
this.src = '';
|
|
64
60
|
/**
|
|
65
61
|
* What it shows, for a reader who cannot see it.
|
|
66
62
|
*
|
|
@@ -69,13 +65,18 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
69
65
|
*/
|
|
70
66
|
this.alt = '';
|
|
71
67
|
/**
|
|
72
|
-
*
|
|
68
|
+
* How the picture is fetched across origins, which decides whether a canvas
|
|
69
|
+
* can read it.
|
|
73
70
|
*/
|
|
74
|
-
this.
|
|
71
|
+
this.crossOrigin = null;
|
|
75
72
|
/**
|
|
76
|
-
*
|
|
73
|
+
* Whether the browser may decode off the main thread.
|
|
74
|
+
*
|
|
75
|
+
* `async` is the resting value and right for a picture in a page. `sync` is
|
|
76
|
+
* what a consumer reaches for when the picture is about to be composited with
|
|
77
|
+
* something else and a tear would show.
|
|
77
78
|
*/
|
|
78
|
-
this.
|
|
79
|
+
this.decoding = 'async';
|
|
79
80
|
/**
|
|
80
81
|
* How urgently to fetch it, for the one picture that is the page.
|
|
81
82
|
*
|
|
@@ -87,25 +88,21 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
87
88
|
*/
|
|
88
89
|
this.fetchPriority = 'auto';
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* **The template hardcoded `async` and a consumer could not reach it**, which
|
|
93
|
-
* is worse than the property being absent: the decision was taken on their
|
|
94
|
-
* behalf and nothing said so. `async` is still the resting value and still
|
|
95
|
-
* right for a picture in a page, and `sync` is what a consumer reaches for
|
|
96
|
-
* when the picture is about to be composited with something else and a tear
|
|
97
|
-
* would show.
|
|
91
|
+
* How much of the referring URL to send with the request.
|
|
98
92
|
*/
|
|
99
|
-
this.
|
|
93
|
+
this.referrerPolicy = '';
|
|
100
94
|
/**
|
|
101
|
-
* How the
|
|
102
|
-
* can read it.
|
|
95
|
+
* How much of the line it will take, passed through to the picture.
|
|
103
96
|
*/
|
|
104
|
-
this.
|
|
97
|
+
this.sizes = '';
|
|
105
98
|
/**
|
|
106
|
-
*
|
|
99
|
+
* Where the picture is.
|
|
107
100
|
*/
|
|
108
|
-
this.
|
|
101
|
+
this.src = '';
|
|
102
|
+
/**
|
|
103
|
+
* The candidate widths, passed through to the picture.
|
|
104
|
+
*/
|
|
105
|
+
this.srcset = '';
|
|
109
106
|
/**
|
|
110
107
|
* Whether the picture is on its way, here, or never coming.
|
|
111
108
|
*
|
|
@@ -116,14 +113,12 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
116
113
|
* a consumer rendered: React reads the attribute appearing at upgrade as a
|
|
117
114
|
* hydration mismatch, and a serialized `<helix-image status="loaded">` pasted
|
|
118
115
|
* back declares that a picture has arrived which this element has never
|
|
119
|
-
* fetched. The `data-` name is the library's answer to both, being a
|
|
120
|
-
*
|
|
121
|
-
* `
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* a custom state instead, which is what `:state(open)` and `:state(checked)`
|
|
126
|
-
* became on 27 Aug 2026 for exactly that reason.
|
|
116
|
+
* fetched. The `data-` name is the library's answer to both, being a name a
|
|
117
|
+
* re-parse cannot mistake for a declaration, and it is what `data-closed` on
|
|
118
|
+
* `Toast.Item` already does. A picture arrives after somebody fetched it,
|
|
119
|
+
* which puts this on the safe side of hydration: a fact that can be true on
|
|
120
|
+
* the *first* update mirrors to a custom state instead, which is what
|
|
121
|
+
* `:state(open)` and `:state(checked)` are.
|
|
127
122
|
*
|
|
128
123
|
* `loading` writes nothing, because it is where every image starts and the
|
|
129
124
|
* resting state of a mirror is the attribute's absence.
|
|
@@ -144,22 +139,18 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
144
139
|
* Says so under the platform's own name, because the platform's cannot escape.
|
|
145
140
|
*
|
|
146
141
|
* `load` and `error` on an `<img>` neither bubble nor compose, so the ones
|
|
147
|
-
* fired inside this shadow root reach nobody outside it.
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* already did for the same pair on the same element.
|
|
142
|
+
* fired inside this shadow root reach nobody outside it. Re-emitting from the
|
|
143
|
+
* host is what `relayNativeEvent` is for, and it is what `Avatar` already does
|
|
144
|
+
* for the same pair on the same element.
|
|
151
145
|
*
|
|
152
|
-
* **
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* all. So the prefix bought nothing and cost the two spellings this library
|
|
156
|
-
* had for one idea, `Avatar` relaying `load` while `Image` invented one. See
|
|
157
|
-
* 294 and 295.
|
|
146
|
+
* **Unprefixed, unlike every other event here.** The prefix exists to stop a
|
|
147
|
+
* collision with a native name, and there is none to collide with: the native
|
|
148
|
+
* events cannot reach a consumer at all.
|
|
158
149
|
*
|
|
159
|
-
* **Not bubbling, and that is not a small point.**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
150
|
+
* **Not bubbling, and that is not a small point.** A bubbling relay of `load`
|
|
151
|
+
* would be the tempting one, letting a gallery count its pictures with one
|
|
152
|
+
* listener, and it reaches nothing in React: `load` is in react-dom's
|
|
153
|
+
* `nonDelegatedEvents`, so there is no root
|
|
163
154
|
* listener to catch it, and React attaches a direct one for `<img>` and never
|
|
164
155
|
* for a custom element. `bindReactHandler` binds exactly the non-bubbling
|
|
165
156
|
* ones, so matching the native propagation is what makes `onLoad` work at
|
|
@@ -192,8 +183,8 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
192
183
|
* **It can only ever conclude success.** A picture that has not been attempted
|
|
193
184
|
* looks exactly like one that failed: `complete` is true and `naturalWidth` is
|
|
194
185
|
* zero for both, and a DOM that never fetches anything reports that for every
|
|
195
|
-
* image it has
|
|
196
|
-
* it
|
|
186
|
+
* image it has, so deciding `error` here calls every picture broken the moment
|
|
187
|
+
* it renders. Failure has an event of its own and that event is reliable, so
|
|
197
188
|
* this is only here to catch the success that happened too early to hear.
|
|
198
189
|
*/
|
|
199
190
|
settle() {
|
|
@@ -237,12 +228,11 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
237
228
|
/**
|
|
238
229
|
* The picture's own state, under the platform's own names.
|
|
239
230
|
*
|
|
240
|
-
* The `<img>` is inside this shadow root
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
* narrower question
|
|
244
|
-
*
|
|
245
|
-
* substitute for the numbers.
|
|
231
|
+
* The `<img>` is inside this shadow root and `querySelector` does not cross a
|
|
232
|
+
* shadow boundary, so a consumer asking how big the picture turned out to be,
|
|
233
|
+
* or whether it is already there, has nowhere else to ask. `status` answers a
|
|
234
|
+
* narrower question in this library's words and is no substitute for the
|
|
235
|
+
* numbers.
|
|
246
236
|
*
|
|
247
237
|
* `naturalWidth` and `naturalHeight` are the case worth having: they are how
|
|
248
238
|
* a consumer sizes a lightbox or works out an aspect ratio, and they exist
|
|
@@ -298,31 +288,31 @@ let HelixHeadlessImage = class HelixHeadlessImage extends HelixElement {
|
|
|
298
288
|
};
|
|
299
289
|
__decorate([
|
|
300
290
|
property()
|
|
301
|
-
], HelixHeadlessImage.prototype, "
|
|
291
|
+
], HelixHeadlessImage.prototype, "alt", void 0);
|
|
292
|
+
__decorate([
|
|
293
|
+
property({ attribute: 'crossorigin' })
|
|
294
|
+
], HelixHeadlessImage.prototype, "crossOrigin", void 0);
|
|
302
295
|
__decorate([
|
|
303
296
|
property()
|
|
304
|
-
], HelixHeadlessImage.prototype, "
|
|
297
|
+
], HelixHeadlessImage.prototype, "decoding", void 0);
|
|
298
|
+
__decorate([
|
|
299
|
+
property({ attribute: 'fetchpriority' })
|
|
300
|
+
], HelixHeadlessImage.prototype, "fetchPriority", void 0);
|
|
305
301
|
__decorate([
|
|
306
302
|
property({ reflect: true })
|
|
307
303
|
], HelixHeadlessImage.prototype, "loading", void 0);
|
|
308
304
|
__decorate([
|
|
309
|
-
property()
|
|
310
|
-
], HelixHeadlessImage.prototype, "
|
|
305
|
+
property({ attribute: 'referrerpolicy' })
|
|
306
|
+
], HelixHeadlessImage.prototype, "referrerPolicy", void 0);
|
|
311
307
|
__decorate([
|
|
312
308
|
property()
|
|
313
309
|
], HelixHeadlessImage.prototype, "sizes", void 0);
|
|
314
|
-
__decorate([
|
|
315
|
-
property({ attribute: 'fetchpriority' })
|
|
316
|
-
], HelixHeadlessImage.prototype, "fetchPriority", void 0);
|
|
317
310
|
__decorate([
|
|
318
311
|
property()
|
|
319
|
-
], HelixHeadlessImage.prototype, "
|
|
320
|
-
__decorate([
|
|
321
|
-
property({ attribute: 'crossorigin' })
|
|
322
|
-
], HelixHeadlessImage.prototype, "crossOrigin", void 0);
|
|
312
|
+
], HelixHeadlessImage.prototype, "src", void 0);
|
|
323
313
|
__decorate([
|
|
324
|
-
property(
|
|
325
|
-
], HelixHeadlessImage.prototype, "
|
|
314
|
+
property()
|
|
315
|
+
], HelixHeadlessImage.prototype, "srcset", void 0);
|
|
326
316
|
__decorate([
|
|
327
317
|
property({ attribute: false })
|
|
328
318
|
], HelixHeadlessImage.prototype, "status", void 0);
|
package/dist/index.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import './element-events.generated.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Everything core exports, forwarded whole.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the
|
|
9
|
-
*
|
|
5
|
+
* Not a named list. The generated React package imports the type each public
|
|
6
|
+
* property is declared with, so anything a component newly reaches for (a
|
|
7
|
+
* value-change event, a placement type, a close event) compiles here and breaks
|
|
8
|
+
* there the moment the list misses it. Forwarding the module has nothing to
|
|
9
|
+
* keep in step.
|
|
10
10
|
*/
|
|
11
11
|
export * from '@fusion.dev/helix-core';
|
|
12
12
|
export * from './accordion/index.js';
|
package/dist/index.js
CHANGED
|
@@ -2,11 +2,11 @@ import './element-events.generated.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Everything core exports, forwarded whole.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the
|
|
9
|
-
*
|
|
5
|
+
* Not a named list. The generated React package imports the type each public
|
|
6
|
+
* property is declared with, so anything a component newly reaches for (a
|
|
7
|
+
* value-change event, a placement type, a close event) compiles here and breaks
|
|
8
|
+
* there the moment the list misses it. Forwarding the module has nothing to
|
|
9
|
+
* keep in step.
|
|
10
10
|
*/
|
|
11
11
|
export * from '@fusion.dev/helix-core';
|
|
12
12
|
export * from './accordion/index.js';
|
|
@@ -28,19 +28,12 @@ declare const HelixHeadlessInput_base: (new (...args: any[]) => import("@fusion.
|
|
|
28
28
|
* here guesses. What this adds is the anchor, so `reportValidity` points the
|
|
29
29
|
* bubble at the input rather than at the host.
|
|
30
30
|
*
|
|
31
|
-
* `pattern`, `minlength` and `maxlength` are forwarded with them.
|
|
32
|
-
* promised by this paragraph and did not exist, so a consumer following the
|
|
33
|
-
* sentence wrote an attribute on the host that reached no input and constrained
|
|
34
|
-
* nothing: the field looked as though it were checked and was not.
|
|
31
|
+
* `pattern`, `minlength` and `maxlength` are forwarded with them.
|
|
35
32
|
*
|
|
36
|
-
* **`clearable` and `reveal` are the field's, not the consumer's.**
|
|
37
|
-
* slot
|
|
38
|
-
*
|
|
39
|
-
* `
|
|
40
|
-
* cannot check what they typed into. Neither is a slot's worth of variation:
|
|
41
|
-
* one empties the value, the other flips the type, and both want the same
|
|
42
|
-
* position, the same size and the same disabled behavior. The slot stays for
|
|
43
|
-
* what actually varies, a unit or a prefix.
|
|
33
|
+
* **`clearable` and `reveal` are the field's, not the consumer's.** Neither is
|
|
34
|
+
* a slot's worth of variation: one empties the value, the other flips the type,
|
|
35
|
+
* and both want the same position, the same size and the same disabled
|
|
36
|
+
* behavior. The `end` slot stays for what actually varies, a unit or a prefix.
|
|
44
37
|
*
|
|
45
38
|
* Both opt in rather than following from `type`, and are booleans that default
|
|
46
39
|
* to false. A Lit boolean property that defaults to *true* cannot be turned off
|
|
@@ -67,7 +60,6 @@ declare const HelixHeadlessInput_base: (new (...args: any[]) => import("@fusion.
|
|
|
67
60
|
* @csspart feedback - What is wrong with it.
|
|
68
61
|
* @csspart field - The box holding everything.
|
|
69
62
|
* @csspart hint - Help under the field, while nothing is wrong.
|
|
70
|
-
* @csspart icon - A glyph this component draws.
|
|
71
63
|
* @csspart label - The question, over the field.
|
|
72
64
|
* @csspart reveal - The button that shows and hides a password.
|
|
73
65
|
*/
|
|
@@ -82,54 +74,6 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
|
|
|
82
74
|
* a token like `email` or `bday` to ask for autofill, or to `off` to refuse.
|
|
83
75
|
*/
|
|
84
76
|
autocomplete: string;
|
|
85
|
-
/**
|
|
86
|
-
* Shown while the field is empty.
|
|
87
|
-
*
|
|
88
|
-
* Not a label: it goes when typing starts.
|
|
89
|
-
*/
|
|
90
|
-
placeholder: string;
|
|
91
|
-
/**
|
|
92
|
-
* Whether the field refuses input while still submitting its value.
|
|
93
|
-
*
|
|
94
|
-
* **`readonly`, which is the platform's spelling, and it was `read-only`
|
|
95
|
-
* until 28 Aug 2026.** A camelCase property needs an explicit `attribute`
|
|
96
|
-
* and the library had been answering that question two ways: thirteen
|
|
97
|
-
* attributes kept the name HTML uses (`crossorigin`, `maxlength`,
|
|
98
|
-
* `formnovalidate`, `dirname` and the rest) and five dash-cased a word the
|
|
99
|
-
* platform writes as one. `readonly` was the only one on both lists, this
|
|
100
|
-
* spelling on `Rating` and `read-only` on the eight other fields, so one
|
|
101
|
-
* library shipped both and each was inert on the other's families.
|
|
102
|
-
*
|
|
103
|
-
* The cost of the dash-cased form is the one this repository keeps writing
|
|
104
|
-
* down about attributes: nothing warns. `<helix-input readonly>` is what
|
|
105
|
-
* anybody who has written HTML types, it parsed to no property at all, and
|
|
106
|
-
* the field stayed editable with no error anywhere. Measured before the
|
|
107
|
-
* rename: `readOnly` came back `false`.
|
|
108
|
-
*
|
|
109
|
-
* Taken now for the reason [#213](../../../../../docs/19-queue.md) gives
|
|
110
|
-
* about the part it renamed for the same kind of reason: there is no
|
|
111
|
-
* `helix-v` tag, so no consumer is holding the old spelling, and this is free
|
|
112
|
-
* today and a deprecation after the first release.
|
|
113
|
-
* `check:attribute-names` holds it from here.
|
|
114
|
-
*/
|
|
115
|
-
readOnly: boolean;
|
|
116
|
-
/**
|
|
117
|
-
* What the field accepts, which decides the keyboard and the validation.
|
|
118
|
-
*
|
|
119
|
-
* **Not reflected**, and it was. Reflection exists so a selector can reach a
|
|
120
|
-
* value, and no stylesheet in this repository selects on `type`: what it did
|
|
121
|
-
* instead was write `type="text"` onto every `<helix-input>` ever rendered,
|
|
122
|
-
* an attribute no consumer's markup had. That is precisely the fault `Button`
|
|
123
|
-
* had with `href`, `target` and `rel`, written up in the area rules as the
|
|
124
|
-
* reason the rule exists, and this was the last property in the library still
|
|
125
|
-
* doing it. Audited: ten reflected attributes have no selector anywhere, and
|
|
126
|
-
* this is the only one of them with a value that puts itself on the host.
|
|
127
|
-
*
|
|
128
|
-
* Nothing reads it from the attribute either. The real `<input>` inside takes
|
|
129
|
-
* it as a property binding, which is what makes the keyboard and the
|
|
130
|
-
* validation follow.
|
|
131
|
-
*/
|
|
132
|
-
type: InputType;
|
|
133
77
|
/**
|
|
134
78
|
* Whether the field offers a button that empties it.
|
|
135
79
|
*
|
|
@@ -144,20 +88,44 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
|
|
|
144
88
|
*/
|
|
145
89
|
clearLabel: string;
|
|
146
90
|
/**
|
|
147
|
-
*
|
|
91
|
+
* Most characters the value may have.
|
|
92
|
+
*/
|
|
93
|
+
maxLength?: number;
|
|
94
|
+
/**
|
|
95
|
+
* Fewest characters the value may have.
|
|
96
|
+
*/
|
|
97
|
+
minLength?: number;
|
|
98
|
+
/**
|
|
99
|
+
* A regular expression the value has to match, as the platform reads it.
|
|
148
100
|
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* changes type.
|
|
101
|
+
* Forwarded rather than checked here, which is the whole reason validity is
|
|
102
|
+
* the platform's: the browser knows what a `pattern` means, anchors it at both
|
|
103
|
+
* ends, and produces the message in the reader's own language.
|
|
153
104
|
*/
|
|
154
|
-
|
|
105
|
+
pattern: string;
|
|
155
106
|
/**
|
|
156
|
-
*
|
|
107
|
+
* Shown while the field is empty.
|
|
157
108
|
*
|
|
158
|
-
*
|
|
109
|
+
* Not a label: it goes when typing starts.
|
|
159
110
|
*/
|
|
160
|
-
|
|
111
|
+
placeholder: string;
|
|
112
|
+
/**
|
|
113
|
+
* Whether the field refuses input while still submitting its value.
|
|
114
|
+
*
|
|
115
|
+
* **The attribute is `readonly`, which is the platform's spelling.** A
|
|
116
|
+
* camelCase property needs an explicit `attribute`, and dash-casing a word
|
|
117
|
+
* HTML writes as one costs what an attribute always costs here: nothing
|
|
118
|
+
* warns. `<helix-input readonly>` is what anybody who has written HTML types;
|
|
119
|
+
* against `read-only` it parses to no property at all, and the field stays
|
|
120
|
+
* editable with no error anywhere. Measured on the dash-cased form, `readOnly`
|
|
121
|
+
* came back `false`.
|
|
122
|
+
*
|
|
123
|
+
* A part was renamed for
|
|
124
|
+
* the same kind of reason: there is no `helix-v` tag, so no consumer is
|
|
125
|
+
* holding the old spelling, and this is free today and a deprecation after
|
|
126
|
+
* the first release.
|
|
127
|
+
*/
|
|
128
|
+
readOnly: boolean;
|
|
161
129
|
/**
|
|
162
130
|
* Whether the password is currently showing.
|
|
163
131
|
*
|
|
@@ -187,7 +155,7 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
|
|
|
187
155
|
* the boundary. An insert-at-cursor toolbar, a format button, a mask that
|
|
188
156
|
* repositions the caret after rewriting the value, all of them need this and
|
|
189
157
|
* none of them could be written. Textarea gained the same surface for the same
|
|
190
|
-
* reason.
|
|
158
|
+
* reason.
|
|
191
159
|
*
|
|
192
160
|
* Zero before there is a control, which is where an empty field's caret would
|
|
193
161
|
* be anyway.
|
|
@@ -251,26 +219,34 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
|
|
|
251
219
|
protected willUpdate(changed: PropertyValues): void;
|
|
252
220
|
protected updated(changed: PropertyValues): void;
|
|
253
221
|
/**
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* The class documentation promised `pattern` and `minlength` "and the rest"
|
|
257
|
-
* were set on the real input, and no such properties existed: a consumer
|
|
258
|
-
* following that sentence wrote an attribute on the host, it reached no input,
|
|
259
|
-
* and the field constrained nothing while looking as though it did.
|
|
222
|
+
* Whether a password field offers a toggle that shows what was typed.
|
|
260
223
|
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
224
|
+
* Ignored on every other type. A reveal on an email field would be a button
|
|
225
|
+
* that does nothing visible, and guarding it here rather than asking the
|
|
226
|
+
* consumer not to means the property can be set once on a component that
|
|
227
|
+
* changes type.
|
|
264
228
|
*/
|
|
265
|
-
|
|
229
|
+
reveal: boolean;
|
|
266
230
|
/**
|
|
267
|
-
*
|
|
231
|
+
* What the reveal toggle is called.
|
|
232
|
+
*
|
|
233
|
+
* The state is `aria-pressed`, not this.
|
|
268
234
|
*/
|
|
269
|
-
|
|
235
|
+
revealLabel: string;
|
|
270
236
|
/**
|
|
271
|
-
*
|
|
237
|
+
* What the field accepts, which decides the keyboard and the validation.
|
|
238
|
+
*
|
|
239
|
+
* **Not reflected.** Reflection exists so a selector can reach a value, and
|
|
240
|
+
* no stylesheet in this repository selects on `type`. Reflecting it writes
|
|
241
|
+
* `type="text"` onto every `<helix-input>` ever rendered, an attribute no
|
|
242
|
+
* consumer's markup has, which is the fault the area rules write up under
|
|
243
|
+
* `Button`'s `href`, `target` and `rel`.
|
|
244
|
+
*
|
|
245
|
+
* Nothing reads it from the attribute either. The real `<input>` inside takes
|
|
246
|
+
* it as a property binding, which is what makes the keyboard and the
|
|
247
|
+
* validation follow.
|
|
272
248
|
*/
|
|
273
|
-
|
|
249
|
+
type: InputType;
|
|
274
250
|
protected render(): TemplateResult;
|
|
275
251
|
}
|
|
276
252
|
declare global {
|