@fusion.dev/helix 0.16.3 → 0.16.5
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 +44 -11
- package/dist/data-table/root/data-table-root.css.js +8 -0
- package/dist/notifications/notification/notification.css.js +18 -4
- package/dist/notifications/notification/notification.d.ts +1 -0
- package/package.json +6 -6
- package/types/jsx.d.ts +106 -8
- package/types/vue.d.ts +33 -3
package/custom-elements.json
CHANGED
|
@@ -945,8 +945,8 @@
|
|
|
945
945
|
"slug": "preview"
|
|
946
946
|
},
|
|
947
947
|
{
|
|
948
|
-
"description": "The mark
|
|
949
|
-
"slug": "chevron-at-the-
|
|
948
|
+
"description": "The mark before the row, so a nested list reads as a tree.",
|
|
949
|
+
"slug": "chevron-at-the-start"
|
|
950
950
|
},
|
|
951
951
|
{
|
|
952
952
|
"description": "Each section announces for itself, and a listener on the set hears nothing.",
|
|
@@ -4138,16 +4138,30 @@
|
|
|
4138
4138
|
"kind": "field",
|
|
4139
4139
|
"name": "value",
|
|
4140
4140
|
"type": {
|
|
4141
|
-
"text": "string"
|
|
4141
|
+
"text": "number | string"
|
|
4142
4142
|
},
|
|
4143
4143
|
"default": "''",
|
|
4144
|
-
"description": "The count or short text to show.\n\nAbsent shows a dot, zero shows nothing.",
|
|
4144
|
+
"description": "The count or short text to show.\n\nAbsent shows a dot, zero shows nothing.\n\n**A string, and a number is taken anyway.** What this shows is usually a\ncount, so `value={unread}` is the first thing a React consumer writes, and\na property assignment does not go through the attribute converter that\nwould have made it a string. Read raw it went straight into\n`this.value.trim()`, which threw inside `render` and left the mark showing\nwhatever it had last: measured, a badge set to the number 2 stayed an 8px\ndot with no digit in it, and the console carried\n`TypeError: this.value.trim is not a function`. A component whose whole job\nis showing a count must not lose the count for being handed one.",
|
|
4145
4145
|
"attribute": "value",
|
|
4146
4146
|
"inheritedFrom": {
|
|
4147
4147
|
"name": "HelixHeadlessBadge",
|
|
4148
4148
|
"module": "src/badge/root/badge-root.ts"
|
|
4149
4149
|
}
|
|
4150
4150
|
},
|
|
4151
|
+
{
|
|
4152
|
+
"kind": "field",
|
|
4153
|
+
"name": "given",
|
|
4154
|
+
"type": {
|
|
4155
|
+
"text": "string"
|
|
4156
|
+
},
|
|
4157
|
+
"privacy": "private",
|
|
4158
|
+
"description": "The value as text, whatever it was set to.",
|
|
4159
|
+
"readonly": true,
|
|
4160
|
+
"inheritedFrom": {
|
|
4161
|
+
"name": "HelixHeadlessBadge",
|
|
4162
|
+
"module": "src/badge/root/badge-root.ts"
|
|
4163
|
+
}
|
|
4164
|
+
},
|
|
4151
4165
|
{
|
|
4152
4166
|
"kind": "field",
|
|
4153
4167
|
"name": "blank",
|
|
@@ -4387,10 +4401,10 @@
|
|
|
4387
4401
|
{
|
|
4388
4402
|
"name": "value",
|
|
4389
4403
|
"type": {
|
|
4390
|
-
"text": "string"
|
|
4404
|
+
"text": "number | string"
|
|
4391
4405
|
},
|
|
4392
4406
|
"default": "''",
|
|
4393
|
-
"description": "The count or short text to show.\n\nAbsent shows a dot, zero shows nothing.",
|
|
4407
|
+
"description": "The count or short text to show.\n\nAbsent shows a dot, zero shows nothing.\n\n**A string, and a number is taken anyway.** What this shows is usually a\ncount, so `value={unread}` is the first thing a React consumer writes, and\na property assignment does not go through the attribute converter that\nwould have made it a string. Read raw it went straight into\n`this.value.trim()`, which threw inside `render` and left the mark showing\nwhatever it had last: measured, a badge set to the number 2 stayed an 8px\ndot with no digit in it, and the console carried\n`TypeError: this.value.trim is not a function`. A component whose whole job\nis showing a count must not lose the count for being handed one.",
|
|
4394
4408
|
"fieldName": "value",
|
|
4395
4409
|
"inheritedFrom": {
|
|
4396
4410
|
"name": "HelixHeadlessBadge",
|
|
@@ -24637,6 +24651,11 @@
|
|
|
24637
24651
|
"description": "One query across every column, from a search field the page owns.",
|
|
24638
24652
|
"slug": "searching"
|
|
24639
24653
|
},
|
|
24654
|
+
{
|
|
24655
|
+
"description": "A reading of the range and a choice of page size, either side of the pagination the table draws.",
|
|
24656
|
+
"min": 520,
|
|
24657
|
+
"slug": "summary-and-size"
|
|
24658
|
+
},
|
|
24640
24659
|
{
|
|
24641
24660
|
"description": "Pages of five hundred, each drawn a window at a time.",
|
|
24642
24661
|
"slug": "windowed-paging"
|
|
@@ -49613,8 +49632,13 @@
|
|
|
49613
49632
|
"slug": "full"
|
|
49614
49633
|
},
|
|
49615
49634
|
{
|
|
49616
|
-
"description": "Opening on
|
|
49617
|
-
"slug": "on-
|
|
49635
|
+
"description": "Opening only on a press, for a trigger that is also a link.",
|
|
49636
|
+
"slug": "on-press"
|
|
49637
|
+
},
|
|
49638
|
+
{
|
|
49639
|
+
"description": "Three in one bar, so moving between them is a change of panel rather than a close and an open.",
|
|
49640
|
+
"min": 480,
|
|
49641
|
+
"slug": "several"
|
|
49618
49642
|
}
|
|
49619
49643
|
],
|
|
49620
49644
|
"source": "helix/styled/src/megamenu"
|
|
@@ -52865,6 +52889,10 @@
|
|
|
52865
52889
|
"description": "Ink in an item that has been read.",
|
|
52866
52890
|
"name": "--notifications-color"
|
|
52867
52891
|
},
|
|
52892
|
+
{
|
|
52893
|
+
"description": "Ink on the control that removes an item, which is `danger` because removing one is the end of it.",
|
|
52894
|
+
"name": "--notifications-dismiss-color"
|
|
52895
|
+
},
|
|
52868
52896
|
{
|
|
52869
52897
|
"description": "Space above and below an item.",
|
|
52870
52898
|
"name": "--notifications-padding-block"
|
|
@@ -53176,7 +53204,7 @@
|
|
|
53176
53204
|
"text": "TemplateResult | typeof nothing"
|
|
53177
53205
|
}
|
|
53178
53206
|
},
|
|
53179
|
-
"description": "The control that removes the item, with the mark a consumer can replace.\n\n**A method rather than markup inside `render`, and the slot moves with\nit.** A fallback answers a consumer and a seam answers the tier above, which\nare different people: the styled tier wants an icon here, and with the slot\nwritten inline the only way to change it is to reimplement the whole\ntemplate. Moving only the fallback out is not enough: the slot is the thing\na tier redraws.\n\n**The mark is drawn rather than typed, which is what lets it align.** A\ncharacter such as `×` is placed by its font rather than by its box:\nmeasured against the ghost button beside it at 8x, the cross carried 6\npixels of ink to the label's 9.5 and sat 1.5 pixels below its center, in two\nboxes whose own centers agreed to a tenth of a pixel. No stylesheet can\ncorrect that, because the offset is inside the glyph. An `<svg>` is centered\non its own viewBox, so it lands where the box says and takes the icon step\nthe row is already set in
|
|
53207
|
+
"description": "The control that removes the item, with the mark a consumer can replace.\n\n**A method rather than markup inside `render`, and the slot moves with\nit.** A fallback answers a consumer and a seam answers the tier above, which\nare different people: the styled tier wants an icon here, and with the slot\nwritten inline the only way to change it is to reimplement the whole\ntemplate. Moving only the fallback out is not enough: the slot is the thing\na tier redraws.\n\n**The mark is drawn rather than typed, which is what lets it align.** A\ncharacter such as `×` is placed by its font rather than by its box:\nmeasured against the ghost button beside it at 8x, the cross carried 6\npixels of ink to the label's 9.5 and sat 1.5 pixels below its center, in two\nboxes whose own centers agreed to a tenth of a pixel. No stylesheet can\ncorrect that, because the offset is inside the glyph. An `<svg>` is centered\non its own viewBox, so it lands where the box says and takes the icon step\nthe row is already set in.\n\n**A trash and not the `x` the Tag draws, because the two do not mean the\nsame thing.** A tag's cross takes a token off a field the reader is still\nfilling in, and putting it back is retyping a word. A notification is the\nonly copy of something that happened, and this removes it from the feed for\ngood, so the mark is the one every other interface uses for that and the\nink is `danger`. It is only ever on screen while the row is hovered or\nfocused, so a feed of twenty is not a column of red.",
|
|
53180
53208
|
"inheritedFrom": {
|
|
53181
53209
|
"name": "HelixHeadlessNotification",
|
|
53182
53210
|
"module": "src/notifications/notification/notification.ts"
|
|
@@ -54181,6 +54209,11 @@
|
|
|
54181
54209
|
"description": "Read and dismissed are two different things a feed is told.",
|
|
54182
54210
|
"slug": "events"
|
|
54183
54211
|
},
|
|
54212
|
+
{
|
|
54213
|
+
"description": "A bell in the header, a count on it, and the feed in a drawer behind it.",
|
|
54214
|
+
"min": 420,
|
|
54215
|
+
"slug": "in-a-drawer"
|
|
54216
|
+
},
|
|
54184
54217
|
{
|
|
54185
54218
|
"description": "Read state the page owns, so marking read can be the round trip it usually is.",
|
|
54186
54219
|
"slug": "read-on-the-server"
|
|
@@ -100175,7 +100208,7 @@
|
|
|
100175
100208
|
"text": "string"
|
|
100176
100209
|
},
|
|
100177
100210
|
"default": "''",
|
|
100178
|
-
"description": "Controls beyond the ones every player has, named in the order they appear.\n\nA list rather than a property apiece. A bar is a row with a budget, and a\nboolean per feature invites a consumer to switch all of them on: naming\nthem makes the row a decision, and makes the order theirs. Anything\nunrecognized is skipped rather than throwing, since the list is markup and\na typo should cost a control, not a page.\n\n`pip` is offered only where the platform has it, checked rather than\nassumed: it is absent on iPhone and behind a flag in Firefox, and a button\nthat cannot work is worse than one that is not there.\n\nThe names are `speed`, `pip`, `remote` and `
|
|
100211
|
+
"description": "Controls beyond the ones every player has, named in the order they appear.\n\nA list rather than a property apiece. A bar is a row with a budget, and a\nboolean per feature invites a consumer to switch all of them on: naming\nthem makes the row a decision, and makes the order theirs. Anything\nunrecognized is skipped rather than throwing, since the list is markup and\na typo should cost a control, not a page.\n\n`pip` is offered only where the platform has it, checked rather than\nassumed: it is absent on iPhone and behind a flag in Firefox, and a button\nthat cannot work is worse than one that is not there.\n\nThe names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,\n`previous` and `next`.\n\n**`previous` and `next` do nothing to the video, and are offered anyway.**\nThey announce `helix-previous` and `helix-next` and stop there, so what\nthey move is whatever holds the set, which is what `VideoPlaylist` listens\nfor. A player standing alone therefore draws a pair of controls that change\nnothing, and that is deliberate: a player cannot know whether it is inside\na set, and one that hid them until it could prove there was one would be a\nplayer that never offers them. Name them where something is listening.\n\n**`download` is named and never assumed.** Offering the file is a decision\nabout the content rather than about the player, and plenty of consumers\ndecline it deliberately. It is also the one control whose success is not\nours to promise: the attribute is ignored cross-origin, so a file served\nfrom somewhere else opens rather than saves, which is the browser's rule\nand not something a player can work around.",
|
|
100179
100212
|
"attribute": "extra-controls",
|
|
100180
100213
|
"inheritedFrom": {
|
|
100181
100214
|
"name": "HelixHeadlessVideo",
|
|
@@ -101655,7 +101688,7 @@
|
|
|
101655
101688
|
"text": "string"
|
|
101656
101689
|
},
|
|
101657
101690
|
"default": "''",
|
|
101658
|
-
"description": "Controls beyond the ones every player has, named in the order they appear.\n\nA list rather than a property apiece. A bar is a row with a budget, and a\nboolean per feature invites a consumer to switch all of them on: naming\nthem makes the row a decision, and makes the order theirs. Anything\nunrecognized is skipped rather than throwing, since the list is markup and\na typo should cost a control, not a page.\n\n`pip` is offered only where the platform has it, checked rather than\nassumed: it is absent on iPhone and behind a flag in Firefox, and a button\nthat cannot work is worse than one that is not there.\n\nThe names are `speed`, `pip`, `remote` and `
|
|
101691
|
+
"description": "Controls beyond the ones every player has, named in the order they appear.\n\nA list rather than a property apiece. A bar is a row with a budget, and a\nboolean per feature invites a consumer to switch all of them on: naming\nthem makes the row a decision, and makes the order theirs. Anything\nunrecognized is skipped rather than throwing, since the list is markup and\na typo should cost a control, not a page.\n\n`pip` is offered only where the platform has it, checked rather than\nassumed: it is absent on iPhone and behind a flag in Firefox, and a button\nthat cannot work is worse than one that is not there.\n\nThe names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,\n`previous` and `next`.\n\n**`previous` and `next` do nothing to the video, and are offered anyway.**\nThey announce `helix-previous` and `helix-next` and stop there, so what\nthey move is whatever holds the set, which is what `VideoPlaylist` listens\nfor. A player standing alone therefore draws a pair of controls that change\nnothing, and that is deliberate: a player cannot know whether it is inside\na set, and one that hid them until it could prove there was one would be a\nplayer that never offers them. Name them where something is listening.\n\n**`download` is named and never assumed.** Offering the file is a decision\nabout the content rather than about the player, and plenty of consumers\ndecline it deliberately. It is also the one control whose success is not\nours to promise: the attribute is ignored cross-origin, so a file served\nfrom somewhere else opens rather than saves, which is the browser's rule\nand not something a player can work around.",
|
|
101659
101692
|
"fieldName": "extraControls",
|
|
101660
101693
|
"inheritedFrom": {
|
|
101661
101694
|
"name": "HelixHeadlessVideo",
|
|
@@ -61,9 +61,17 @@ padding-block-end: var(--helix-space-sm);
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
[part="footer"] {
|
|
64
|
+
align-items: center;
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-wrap: wrap;
|
|
67
|
+
gap: var(--helix-space-md);
|
|
64
68
|
padding-block-start: var(--helix-space-sm);
|
|
65
69
|
}
|
|
66
70
|
|
|
71
|
+
[part="pagination"] {
|
|
72
|
+
margin-inline-start: auto;
|
|
73
|
+
}
|
|
74
|
+
|
|
67
75
|
[part="empty"],
|
|
68
76
|
[part="loading"] {
|
|
69
77
|
color: var(--helix-color-foreground-subtle);
|
|
@@ -12,6 +12,8 @@ display: block;
|
|
|
12
12
|
align-items: start;
|
|
13
13
|
border-block-end: var(--helix-border-thin) solid
|
|
14
14
|
var(--notifications-rule, var(--helix-color-border));
|
|
15
|
+
|
|
16
|
+
cursor: default;
|
|
15
17
|
display: grid;
|
|
16
18
|
grid-template-columns: minmax(var(--notifications-media-column, 0px), auto) minmax(0, 1fr) auto;
|
|
17
19
|
padding-block: var(--notifications-padding-block, var(--helix-space-sm));
|
|
@@ -75,7 +77,9 @@ margin-inline-start: var(--helix-space-sm);
|
|
|
75
77
|
|
|
76
78
|
[part="trailing"] > * {
|
|
77
79
|
grid-area: swap;
|
|
78
|
-
transition:
|
|
80
|
+
transition:
|
|
81
|
+
opacity var(--helix-duration-normal) var(--helix-easing-standard),
|
|
82
|
+
translate var(--helix-duration-normal) var(--helix-easing-decelerate);
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
:host {
|
|
@@ -87,12 +91,15 @@ color: var(--helix-color-foreground-subtle);
|
|
|
87
91
|
font-family: var(--helix-font-sans);
|
|
88
92
|
font-size: var(--helix-text-xs);
|
|
89
93
|
opacity: calc(1 - var(--_notifications-swap));
|
|
94
|
+
|
|
95
|
+
translate: calc(var(--helix-space-2xs) * var(--_notifications-swap)) 0;
|
|
90
96
|
}
|
|
91
97
|
|
|
92
98
|
[part="controls"] {
|
|
93
99
|
align-items: center;
|
|
94
100
|
display: flex;
|
|
95
101
|
opacity: var(--_notifications-swap);
|
|
102
|
+
translate: calc(var(--helix-space-2xs) * (1 - var(--_notifications-swap))) 0;
|
|
96
103
|
}
|
|
97
104
|
|
|
98
105
|
:host(:hover:state(controls)),
|
|
@@ -119,6 +126,7 @@ grid-template-areas: none;
|
|
|
119
126
|
[part="trailing"] > * {
|
|
120
127
|
grid-area: auto;
|
|
121
128
|
opacity: 1;
|
|
129
|
+
translate: none;
|
|
122
130
|
}
|
|
123
131
|
|
|
124
132
|
[part="controls"] {
|
|
@@ -126,6 +134,13 @@ pointer-events: auto;
|
|
|
126
134
|
}
|
|
127
135
|
}
|
|
128
136
|
|
|
137
|
+
@media (prefers-reduced-motion: reduce) {
|
|
138
|
+
[part="trailing"] > * {
|
|
139
|
+
transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);
|
|
140
|
+
translate: none;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
129
144
|
[part="actions"] {
|
|
130
145
|
align-items: center;
|
|
131
146
|
display: flex;
|
|
@@ -137,7 +152,7 @@ background: none;
|
|
|
137
152
|
border: 0;
|
|
138
153
|
border-radius: var(--helix-radii-sm);
|
|
139
154
|
block-size: var(--helix-size-control);
|
|
140
|
-
color: var(--helix-color-
|
|
155
|
+
color: var(--notifications-dismiss-color, var(--helix-color-danger));
|
|
141
156
|
cursor: pointer;
|
|
142
157
|
display: grid;
|
|
143
158
|
inline-size: var(--helix-size-control);
|
|
@@ -152,8 +167,7 @@ inline-size: var(--icon-size, var(--helix-size-icon));
|
|
|
152
167
|
}
|
|
153
168
|
|
|
154
169
|
[part="dismiss"]:hover {
|
|
155
|
-
background-color: color-mix(in oklab,
|
|
156
|
-
color: var(--helix-color-foreground);
|
|
170
|
+
background-color: color-mix(in oklab, currentcolor 12%, transparent);
|
|
157
171
|
}
|
|
158
172
|
|
|
159
173
|
[part="dismiss"]:focus-visible {
|
|
@@ -43,6 +43,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
43
43
|
* @csspart trailing - The column holding the time and the controls.
|
|
44
44
|
*
|
|
45
45
|
* @cssproperty --notifications-color - Ink in an item that has been read.
|
|
46
|
+
* @cssproperty --notifications-dismiss-color - Ink on the control that removes an item, which is `danger` because removing one is the end of it.
|
|
46
47
|
* @cssproperty --notifications-padding-block - Space above and below an item.
|
|
47
48
|
* @cssproperty --notifications-padding-inline - Space either side of an item.
|
|
48
49
|
* @cssproperty --notifications-rule - The hairline between items.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.16.
|
|
4
|
+
"version": "0.16.5",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.16.
|
|
50
|
-
"@fusion.dev/helix-headless": "0.16.
|
|
51
|
-
"@fusion.dev/helix-styles": "0.16.
|
|
49
|
+
"@fusion.dev/helix-core": "0.16.5",
|
|
50
|
+
"@fusion.dev/helix-headless": "0.16.5",
|
|
51
|
+
"@fusion.dev/helix-styles": "0.16.5"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
55
|
-
"@fusion.dev/helix-cem": "0.16.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.16.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.16.5",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.16.5",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^3.3.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -1151,7 +1151,17 @@ Past it the indicator reads `{max}+`. */
|
|
|
1151
1151
|
max?: (HelixBadge["max"]) | undefined;
|
|
1152
1152
|
/** The count or short text to show.
|
|
1153
1153
|
|
|
1154
|
-
Absent shows a dot, zero shows nothing.
|
|
1154
|
+
Absent shows a dot, zero shows nothing.
|
|
1155
|
+
|
|
1156
|
+
**A string, and a number is taken anyway.** What this shows is usually a
|
|
1157
|
+
count, so `value={unread}` is the first thing a React consumer writes, and
|
|
1158
|
+
a property assignment does not go through the attribute converter that
|
|
1159
|
+
would have made it a string. Read raw it went straight into
|
|
1160
|
+
`this.value.trim()`, which threw inside `render` and left the mark showing
|
|
1161
|
+
whatever it had last: measured, a badge set to the number 2 stayed an 8px
|
|
1162
|
+
dot with no digit in it, and the console carried
|
|
1163
|
+
`TypeError: this.value.trim is not a function`. A component whose whole job
|
|
1164
|
+
is showing a count must not lose the count for being handed one. */
|
|
1155
1165
|
value?: (HelixBadge["value"]) | undefined;
|
|
1156
1166
|
};
|
|
1157
1167
|
|
|
@@ -1169,7 +1179,17 @@ Past it the indicator reads `{max}+`. */
|
|
|
1169
1179
|
"prop:max"?: (HelixBadge["max"]) | undefined;
|
|
1170
1180
|
/** The count or short text to show.
|
|
1171
1181
|
|
|
1172
|
-
Absent shows a dot, zero shows nothing.
|
|
1182
|
+
Absent shows a dot, zero shows nothing.
|
|
1183
|
+
|
|
1184
|
+
**A string, and a number is taken anyway.** What this shows is usually a
|
|
1185
|
+
count, so `value={unread}` is the first thing a React consumer writes, and
|
|
1186
|
+
a property assignment does not go through the attribute converter that
|
|
1187
|
+
would have made it a string. Read raw it went straight into
|
|
1188
|
+
`this.value.trim()`, which threw inside `render` and left the mark showing
|
|
1189
|
+
whatever it had last: measured, a badge set to the number 2 stayed an 8px
|
|
1190
|
+
dot with no digit in it, and the console carried
|
|
1191
|
+
`TypeError: this.value.trim is not a function`. A component whose whole job
|
|
1192
|
+
is showing a count must not lose the count for being handed one. */
|
|
1173
1193
|
"prop:value"?: (HelixBadge["value"]) | undefined;
|
|
1174
1194
|
|
|
1175
1195
|
/** Set the innerHTML of the element */
|
|
@@ -17805,7 +17825,16 @@ a typo should cost a control, not a page.
|
|
|
17805
17825
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
17806
17826
|
that cannot work is worse than one that is not there.
|
|
17807
17827
|
|
|
17808
|
-
The names are `speed`, `pip`, `remote`
|
|
17828
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
17829
|
+
`previous` and `next`.
|
|
17830
|
+
|
|
17831
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
17832
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
17833
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
17834
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
17835
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
17836
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
17837
|
+
player that never offers them. Name them where something is listening.
|
|
17809
17838
|
|
|
17810
17839
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
17811
17840
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -17826,7 +17855,16 @@ a typo should cost a control, not a page.
|
|
|
17826
17855
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
17827
17856
|
that cannot work is worse than one that is not there.
|
|
17828
17857
|
|
|
17829
|
-
The names are `speed`, `pip`, `remote`
|
|
17858
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
17859
|
+
`previous` and `next`.
|
|
17860
|
+
|
|
17861
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
17862
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
17863
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
17864
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
17865
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
17866
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
17867
|
+
player that never offers them. Name them where something is listening.
|
|
17830
17868
|
|
|
17831
17869
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
17832
17870
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -18036,7 +18074,16 @@ a typo should cost a control, not a page.
|
|
|
18036
18074
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
18037
18075
|
that cannot work is worse than one that is not there.
|
|
18038
18076
|
|
|
18039
|
-
The names are `speed`, `pip`, `remote`
|
|
18077
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
18078
|
+
`previous` and `next`.
|
|
18079
|
+
|
|
18080
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
18081
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
18082
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
18083
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
18084
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
18085
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
18086
|
+
player that never offers them. Name them where something is listening.
|
|
18040
18087
|
|
|
18041
18088
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
18042
18089
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -18057,7 +18104,16 @@ a typo should cost a control, not a page.
|
|
|
18057
18104
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
18058
18105
|
that cannot work is worse than one that is not there.
|
|
18059
18106
|
|
|
18060
|
-
The names are `speed`, `pip`, `remote`
|
|
18107
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
18108
|
+
`previous` and `next`.
|
|
18109
|
+
|
|
18110
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
18111
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
18112
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
18113
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
18114
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
18115
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
18116
|
+
player that never offers them. Name them where something is listening.
|
|
18061
18117
|
|
|
18062
18118
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
18063
18119
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -18970,6 +19026,16 @@ export type CustomElements = {
|
|
|
18970
19026
|
* - `value`: The count or short text to show.
|
|
18971
19027
|
*
|
|
18972
19028
|
* Absent shows a dot, zero shows nothing.
|
|
19029
|
+
*
|
|
19030
|
+
* **A string, and a number is taken anyway.** What this shows is usually a
|
|
19031
|
+
* count, so `value={unread}` is the first thing a React consumer writes, and
|
|
19032
|
+
* a property assignment does not go through the attribute converter that
|
|
19033
|
+
* would have made it a string. Read raw it went straight into
|
|
19034
|
+
* `this.value.trim()`, which threw inside `render` and left the mark showing
|
|
19035
|
+
* whatever it had last: measured, a badge set to the number 2 stayed an 8px
|
|
19036
|
+
* dot with no digit in it, and the console carried
|
|
19037
|
+
* `TypeError: this.value.trim is not a function`. A component whose whole job
|
|
19038
|
+
* is showing a count must not lose the count for being handed one.
|
|
18973
19039
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
18974
19040
|
*
|
|
18975
19041
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -26661,6 +26727,7 @@ export type CustomElements = {
|
|
|
26661
26727
|
* CSS variables available for styling the component.
|
|
26662
26728
|
*
|
|
26663
26729
|
* - `--notifications-color`: Ink in an item that has been read. (default: `undefined`)
|
|
26730
|
+
* - `--notifications-dismiss-color`: Ink on the control that removes an item, which is `danger` because removing one is the end of it. (default: `undefined`)
|
|
26664
26731
|
* - `--notifications-padding-block`: Space above and below an item. (default: `undefined`)
|
|
26665
26732
|
* - `--notifications-padding-inline`: Space either side of an item. (default: `undefined`)
|
|
26666
26733
|
* - `--notifications-rule`: The hairline between items. (default: `undefined`)
|
|
@@ -33911,7 +33978,16 @@ export type CustomElements = {
|
|
|
33911
33978
|
* assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
33912
33979
|
* that cannot work is worse than one that is not there.
|
|
33913
33980
|
*
|
|
33914
|
-
* The names are `speed`, `pip`, `remote`
|
|
33981
|
+
* The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
33982
|
+
* `previous` and `next`.
|
|
33983
|
+
*
|
|
33984
|
+
* **`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
33985
|
+
* They announce `helix-previous` and `helix-next` and stop there, so what
|
|
33986
|
+
* they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
33987
|
+
* for. A player standing alone therefore draws a pair of controls that change
|
|
33988
|
+
* nothing, and that is deliberate: a player cannot know whether it is inside
|
|
33989
|
+
* a set, and one that hid them until it could prove there was one would be a
|
|
33990
|
+
* player that never offers them. Name them where something is listening.
|
|
33915
33991
|
*
|
|
33916
33992
|
* **`download` is named and never assumed.** Offering the file is a decision
|
|
33917
33993
|
* about the content rather than about the player, and plenty of consumers
|
|
@@ -34925,6 +35001,16 @@ export type CustomElementsSolidJs = {
|
|
|
34925
35001
|
* - `value`: The count or short text to show.
|
|
34926
35002
|
*
|
|
34927
35003
|
* Absent shows a dot, zero shows nothing.
|
|
35004
|
+
*
|
|
35005
|
+
* **A string, and a number is taken anyway.** What this shows is usually a
|
|
35006
|
+
* count, so `value={unread}` is the first thing a React consumer writes, and
|
|
35007
|
+
* a property assignment does not go through the attribute converter that
|
|
35008
|
+
* would have made it a string. Read raw it went straight into
|
|
35009
|
+
* `this.value.trim()`, which threw inside `render` and left the mark showing
|
|
35010
|
+
* whatever it had last: measured, a badge set to the number 2 stayed an 8px
|
|
35011
|
+
* dot with no digit in it, and the console carried
|
|
35012
|
+
* `TypeError: this.value.trim is not a function`. A component whose whole job
|
|
35013
|
+
* is showing a count must not lose the count for being handed one.
|
|
34928
35014
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
34929
35015
|
*
|
|
34930
35016
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -42779,6 +42865,7 @@ export type CustomElementsSolidJs = {
|
|
|
42779
42865
|
* CSS variables available for styling the component.
|
|
42780
42866
|
*
|
|
42781
42867
|
* - `--notifications-color`: Ink in an item that has been read. (default: `undefined`)
|
|
42868
|
+
* - `--notifications-dismiss-color`: Ink on the control that removes an item, which is `danger` because removing one is the end of it. (default: `undefined`)
|
|
42782
42869
|
* - `--notifications-padding-block`: Space above and below an item. (default: `undefined`)
|
|
42783
42870
|
* - `--notifications-padding-inline`: Space either side of an item. (default: `undefined`)
|
|
42784
42871
|
* - `--notifications-rule`: The hairline between items. (default: `undefined`)
|
|
@@ -50227,7 +50314,16 @@ export type CustomElementsSolidJs = {
|
|
|
50227
50314
|
* assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
50228
50315
|
* that cannot work is worse than one that is not there.
|
|
50229
50316
|
*
|
|
50230
|
-
* The names are `speed`, `pip`, `remote`
|
|
50317
|
+
* The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
50318
|
+
* `previous` and `next`.
|
|
50319
|
+
*
|
|
50320
|
+
* **`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
50321
|
+
* They announce `helix-previous` and `helix-next` and stop there, so what
|
|
50322
|
+
* they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
50323
|
+
* for. A player standing alone therefore draws a pair of controls that change
|
|
50324
|
+
* nothing, and that is deliberate: a player cannot know whether it is inside
|
|
50325
|
+
* a set, and one that hid them until it could prove there was one would be a
|
|
50326
|
+
* player that never offers them. Name them where something is listening.
|
|
50231
50327
|
*
|
|
50232
50328
|
* **`download` is named and never assumed.** Offering the file is a decision
|
|
50233
50329
|
* about the content rather than about the player, and plenty of consumers
|
|
@@ -51051,6 +51147,8 @@ export type CustomCssProperties = {
|
|
|
51051
51147
|
"--navigation-indicator-color"?: (string) | undefined;
|
|
51052
51148
|
/** Ink in an item that has been read. */
|
|
51053
51149
|
"--notifications-color"?: (string) | undefined;
|
|
51150
|
+
/** Ink on the control that removes an item, which is `danger` because removing one is the end of it. */
|
|
51151
|
+
"--notifications-dismiss-color"?: (string) | undefined;
|
|
51054
51152
|
/** Space above and below an item. */
|
|
51055
51153
|
"--notifications-padding-block"?: (string) | undefined;
|
|
51056
51154
|
/** Space either side of an item. */
|
package/types/vue.d.ts
CHANGED
|
@@ -608,7 +608,17 @@ Past it the indicator reads `{max}+`. */
|
|
|
608
608
|
max?: (HelixBadge["max"]) | undefined;
|
|
609
609
|
/** The count or short text to show.
|
|
610
610
|
|
|
611
|
-
Absent shows a dot, zero shows nothing.
|
|
611
|
+
Absent shows a dot, zero shows nothing.
|
|
612
|
+
|
|
613
|
+
**A string, and a number is taken anyway.** What this shows is usually a
|
|
614
|
+
count, so `value={unread}` is the first thing a React consumer writes, and
|
|
615
|
+
a property assignment does not go through the attribute converter that
|
|
616
|
+
would have made it a string. Read raw it went straight into
|
|
617
|
+
`this.value.trim()`, which threw inside `render` and left the mark showing
|
|
618
|
+
whatever it had last: measured, a badge set to the number 2 stayed an 8px
|
|
619
|
+
dot with no digit in it, and the console carried
|
|
620
|
+
`TypeError: this.value.trim is not a function`. A component whose whole job
|
|
621
|
+
is showing a count must not lose the count for being handed one. */
|
|
612
622
|
value?: (HelixBadge["value"]) | undefined;
|
|
613
623
|
};
|
|
614
624
|
|
|
@@ -9145,7 +9155,16 @@ a typo should cost a control, not a page.
|
|
|
9145
9155
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
9146
9156
|
that cannot work is worse than one that is not there.
|
|
9147
9157
|
|
|
9148
|
-
The names are `speed`, `pip`, `remote`
|
|
9158
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
9159
|
+
`previous` and `next`.
|
|
9160
|
+
|
|
9161
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
9162
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
9163
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
9164
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
9165
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
9166
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
9167
|
+
player that never offers them. Name them where something is listening.
|
|
9149
9168
|
|
|
9150
9169
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
9151
9170
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -9166,7 +9185,16 @@ a typo should cost a control, not a page.
|
|
|
9166
9185
|
assumed: it is absent on iPhone and behind a flag in Firefox, and a button
|
|
9167
9186
|
that cannot work is worse than one that is not there.
|
|
9168
9187
|
|
|
9169
|
-
The names are `speed`, `pip`, `remote`
|
|
9188
|
+
The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
|
|
9189
|
+
`previous` and `next`.
|
|
9190
|
+
|
|
9191
|
+
**`previous` and `next` do nothing to the video, and are offered anyway.**
|
|
9192
|
+
They announce `helix-previous` and `helix-next` and stop there, so what
|
|
9193
|
+
they move is whatever holds the set, which is what `VideoPlaylist` listens
|
|
9194
|
+
for. A player standing alone therefore draws a pair of controls that change
|
|
9195
|
+
nothing, and that is deliberate: a player cannot know whether it is inside
|
|
9196
|
+
a set, and one that hid them until it could prove there was one would be a
|
|
9197
|
+
player that never offers them. Name them where something is listening.
|
|
9170
9198
|
|
|
9171
9199
|
**`download` is named and never assumed.** Offering the file is a decision
|
|
9172
9200
|
about the content rather than about the player, and plenty of consumers
|
|
@@ -9876,6 +9904,8 @@ export type CustomCssProperties = {
|
|
|
9876
9904
|
"--navigation-indicator-color"?: (string) | undefined;
|
|
9877
9905
|
/** Ink in an item that has been read. */
|
|
9878
9906
|
"--notifications-color"?: (string) | undefined;
|
|
9907
|
+
/** Ink on the control that removes an item, which is `danger` because removing one is the end of it. */
|
|
9908
|
+
"--notifications-dismiss-color"?: (string) | undefined;
|
|
9879
9909
|
/** Space above and below an item. */
|
|
9880
9910
|
"--notifications-padding-block"?: (string) | undefined;
|
|
9881
9911
|
/** Space either side of an item. */
|