@fusion.dev/helix-headless 0.19.1 → 0.20.1

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.
@@ -2,7 +2,7 @@ import { AriaForwardController, HelixFormElement, PopoverController } from '@fus
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import '../../date-picker/index.js';
4
4
  import '../../tag/index.js';
5
- declare const HelixHeadlessDateInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
5
+ declare const HelixHeadlessDateInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinTokensInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
6
6
  /**
7
7
  * @summary A date, typed or picked from a calendar.
8
8
  *
@@ -57,8 +57,9 @@ declare const HelixHeadlessDateInput_base: (new (...args: any[]) => import("@fus
57
57
  * @csspart picker-previous-mark - The glyph on the previous month control.
58
58
  * @csspart picker-week - One row of days.
59
59
  * @csspart picker-weekday - A column header naming a day of the week.
60
- * @csspart rest - How many dates are held beyond the ones shown.
60
+ * @csspart rest - How many dates are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
61
61
  * @csspart surface - The floating panel.
62
+ * @csspart tags - The row the dates sit in.
62
63
  * @csspart trigger - The control that opens the calendar.
63
64
  * @csspart trigger-icon - The mark on the button that opens the calendar.
64
65
  */
@@ -117,20 +118,6 @@ export declare class HelixHeadlessDateInput extends HelixHeadlessDateInput_base
117
118
  * Latest date that can be chosen, as `YYYY-MM-DD`.
118
119
  */
119
120
  max: string;
120
- /**
121
- * How many dates are shown as tags before the rest are counted, in `multiple`.
122
- *
123
- * `0` is all of them, and is the default: a cap that guesses is worse than no
124
- * cap, because the number that fits depends on the width of the field and the
125
- * length of what is in it, neither of which this element knows. What a cap is
126
- * genuinely for is a field in a row or a table cell, where a set of twelve
127
- * dates would push everything below it down a line at a time.
128
- *
129
- * The remainder is counted rather than hidden. `+3` is a fact a reader can
130
- * act on, where a row that silently stops is a field that appears to have lost
131
- * what was put in it, and the count is what tells them there is more to see.
132
- */
133
- maxTags: number;
134
121
  /**
135
122
  * Earliest date that can be chosen, as `YYYY-MM-DD`.
136
123
  */
@@ -218,7 +205,7 @@ export declare class HelixHeadlessDateInput extends HelixHeadlessDateInput_base
218
205
  private readonly handleInput;
219
206
  /** Adds what was typed to the set, or takes the last one back out. */
220
207
  private readonly handleDraftKey;
221
- /** The dates that get a tag, which is all of them until `maxTags` says not. */
208
+ /** The dates that get a tag, which is all of them until the cap says not. */
222
209
  private get shownDates();
223
210
  /** How many are held beyond the ones shown. */
224
211
  private get restCount();
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { AriaForwardController, valueAsDate as asDate, customElement, dateAsValue as fromDate, HelixFormElement, MixinControllerOpen, MixinControllerValue, MixinField, PopoverController, } from '@fusion.dev/helix-core';
7
+ import { AriaForwardController, valueAsDate as asDate, customElement, dateAsValue as fromDate, HelixFormElement, MixinControllerOpen, MixinControllerValue, MixinField, MixinTokens, PopoverController, } from '@fusion.dev/helix-core';
8
8
  import { calendarBlank } from '@fusion.dev/helix-icons';
9
9
  import { nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
@@ -18,7 +18,7 @@ const dates = (value) => value
18
18
  .split(',')
19
19
  .map((one) => one.trim())
20
20
  .filter(Boolean);
21
- let HelixHeadlessDateInput = class HelixHeadlessDateInput extends MixinControllerOpen(MixinControllerValue(MixinField(HelixFormElement))) {
21
+ let HelixHeadlessDateInput = class HelixHeadlessDateInput extends MixinControllerOpen(MixinTokens(MixinControllerValue(MixinField(HelixFormElement)))) {
22
22
  constructor() {
23
23
  super(...arguments);
24
24
  this.aria = new AriaForwardController(this, {
@@ -31,7 +31,6 @@ let HelixHeadlessDateInput = class HelixHeadlessDateInput extends MixinControlle
31
31
  this.firstDayOfWeek = 0;
32
32
  this.locale = '';
33
33
  this.max = '';
34
- this.maxTags = 0;
35
34
  this.min = '';
36
35
  this.months = 1;
37
36
  this.placeholder = 'YYYY-MM-DD';
@@ -153,7 +152,7 @@ let HelixHeadlessDateInput = class HelixHeadlessDateInput extends MixinControlle
153
152
  }
154
153
  get shownDates() {
155
154
  const held = dates(this.value);
156
- return this.maxTags > 0 ? held.slice(0, this.maxTags) : held;
155
+ return this.shownLimit > 0 ? held.slice(0, this.shownLimit) : held;
157
156
  }
158
157
  get restCount() {
159
158
  return Math.max(0, dates(this.value).length - this.shownDates.length);
@@ -272,8 +271,9 @@ let HelixHeadlessDateInput = class HelixHeadlessDateInput extends MixinControlle
272
271
  render() {
273
272
  return html `${this.renderLabel()}
274
273
  <div part="field" @keydown=${this.handleKeydown}>
275
- ${this.mode === 'multiple' ? this.shownDates.map((date) => this.renderTag(date)) : nothing}
276
- ${this.restCount > 0 ? html `<span part="rest">${`+${this.restCount}`}</span>` : nothing}
274
+ ${this.mode === 'multiple'
275
+ ? this.renderTokenRow(this.shownDates.map((date) => this.renderTag(date)), this.restCount)
276
+ : nothing}
277
277
  <input
278
278
  part="control"
279
279
  id="control"
@@ -347,9 +347,6 @@ __decorate([
347
347
  __decorate([
348
348
  property()
349
349
  ], HelixHeadlessDateInput.prototype, "max", void 0);
350
- __decorate([
351
- property({ attribute: 'max-tags', type: Number })
352
- ], HelixHeadlessDateInput.prototype, "maxTags", void 0);
353
350
  __decorate([
354
351
  property()
355
352
  ], HelixHeadlessDateInput.prototype, "min", void 0);
@@ -3,7 +3,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import '../../icon/index.js';
4
4
  import '../../tag/index.js';
5
5
  import '../../time-picker/index.js';
6
- declare const HelixHeadlessTimeInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
6
+ declare const HelixHeadlessTimeInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinTokensInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
7
7
  /**
8
8
  * @summary A time, typed or picked from a list.
9
9
  *
@@ -76,8 +76,9 @@ declare const HelixHeadlessTimeInput_base: (new (...args: any[]) => import("@fus
76
76
  * @csspart picker-option-item - The row.
77
77
  * @csspart picker-option-label - The words.
78
78
  * @csspart picker-option-text - The words and the caption, as one column.
79
- * @csspart rest - How many times are held beyond the ones shown.
79
+ * @csspart rest - How many times are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
80
80
  * @csspart surface - The floating panel.
81
+ * @csspart tags - The row the times sit in.
81
82
  * @csspart time - One held time, as a tag, in `multiple`.
82
83
  * @csspart time-dismiss - The remove button, when `dismissible`.
83
84
  * @csspart time-dismiss-mark - The glyph on the dismiss control, where none is slotted.
@@ -104,14 +105,6 @@ export declare class HelixHeadlessTimeInput extends HelixHeadlessTimeInput_base
104
105
  * Latest time that can be chosen, as `HH:mm`.
105
106
  */
106
107
  max: string;
107
- /**
108
- * How many times are shown as tags before the rest are counted, in `multiple`.
109
- *
110
- * `0` is all of them, and is the default, for the reason Date Input gives: how
111
- * many fit depends on the width of the field and the length of what is in it,
112
- * and this element knows neither.
113
- */
114
- maxTags: number;
115
108
  /**
116
109
  * Earliest time that can be chosen, as `HH:mm`.
117
110
  */
@@ -181,7 +174,7 @@ export declare class HelixHeadlessTimeInput extends HelixHeadlessTimeInput_base
181
174
  * being added to, so the field needs somewhere to hold a time before it joins.
182
175
  */
183
176
  private draft;
184
- /** The times that get a tag, which is all of them until `maxTags` says not. */
177
+ /** The times that get a tag, which is all of them until the cap says not. */
185
178
  private get shownTimes();
186
179
  /** How many are held beyond the ones shown. */
187
180
  private get restCount();
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { AriaForwardController, valueAsTime as asTime, customElement, timeAsValue as fromTime, HelixFormElement, MixinControllerOpen, MixinControllerValue, MixinField, PopoverController, } from '@fusion.dev/helix-core';
7
+ import { AriaForwardController, valueAsTime as asTime, customElement, timeAsValue as fromTime, HelixFormElement, MixinControllerOpen, MixinControllerValue, MixinField, MixinTokens, PopoverController, } from '@fusion.dev/helix-core';
8
8
  import { clock } from '@fusion.dev/helix-icons';
9
9
  import { nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
@@ -14,7 +14,7 @@ import '../../icon/index.js';
14
14
  import '../../tag/index.js';
15
15
  import '../../time-picker/index.js';
16
16
  import { isTime, toMinutes, writeTime } from '../../time-picker/root/time-picker-root.js';
17
- let HelixHeadlessTimeInput = class HelixHeadlessTimeInput extends MixinControllerOpen(MixinControllerValue(MixinField(HelixFormElement))) {
17
+ let HelixHeadlessTimeInput = class HelixHeadlessTimeInput extends MixinControllerOpen(MixinTokens(MixinControllerValue(MixinField(HelixFormElement)))) {
18
18
  constructor() {
19
19
  super(...arguments);
20
20
  this.aria = new AriaForwardController(this, {
@@ -23,7 +23,6 @@ let HelixHeadlessTimeInput = class HelixHeadlessTimeInput extends MixinControlle
23
23
  this.autocomplete = '';
24
24
  this.locale = '';
25
25
  this.max = '23:59';
26
- this.maxTags = 0;
27
26
  this.min = '00:00';
28
27
  this.placeholder = 'HH:mm';
29
28
  this.readOnly = false;
@@ -140,7 +139,7 @@ let HelixHeadlessTimeInput = class HelixHeadlessTimeInput extends MixinControlle
140
139
  }
141
140
  get shownTimes() {
142
141
  const held = this.held;
143
- return this.maxTags > 0 ? held.slice(0, this.maxTags) : held;
142
+ return this.shownLimit > 0 ? held.slice(0, this.shownLimit) : held;
144
143
  }
145
144
  get restCount() {
146
145
  return Math.max(0, this.held.length - this.shownTimes.length);
@@ -272,8 +271,9 @@ let HelixHeadlessTimeInput = class HelixHeadlessTimeInput extends MixinControlle
272
271
  render() {
273
272
  return html `${this.renderLabel()}
274
273
  <div part="field" @keydown=${this.handleKeydown}>
275
- ${this.mode === 'multiple' ? this.shownTimes.map((at) => this.renderTag(at)) : nothing}
276
- ${this.restCount > 0 ? html `<span part="rest">${`+${this.restCount}`}</span>` : nothing}
274
+ ${this.mode === 'multiple'
275
+ ? this.renderTokenRow(this.shownTimes.map((at) => this.renderTag(at)), this.restCount)
276
+ : nothing}
277
277
  <input
278
278
  part="control"
279
279
  id="control"
@@ -332,9 +332,6 @@ __decorate([
332
332
  __decorate([
333
333
  property()
334
334
  ], HelixHeadlessTimeInput.prototype, "max", void 0);
335
- __decorate([
336
- property({ attribute: 'max-tags', type: Number })
337
- ], HelixHeadlessTimeInput.prototype, "maxTags", void 0);
338
335
  __decorate([
339
336
  property()
340
337
  ], HelixHeadlessTimeInput.prototype, "min", void 0);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-headless",
3
3
  "description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
4
- "version": "0.19.1",
4
+ "version": "0.20.1",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -45,14 +45,14 @@
45
45
  },
46
46
  "bugs": "https://github.com/project-fusion/fusion/issues",
47
47
  "dependencies": {
48
- "@fusion.dev/helix-core": "0.19.1",
49
- "@fusion.dev/helix-icons": "0.19.1",
48
+ "@fusion.dev/helix-core": "0.20.1",
49
+ "@fusion.dev/helix-icons": "0.20.1",
50
50
  "uqr": "^0.1.3"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@custom-elements-manifest/analyzer": "^0.11.0",
54
- "@fusion.dev/helix-cem": "0.19.1",
55
- "@fusion.dev/helix-testing": "0.19.1",
54
+ "@fusion.dev/helix-cem": "0.20.1",
55
+ "@fusion.dev/helix-testing": "0.20.1",
56
56
  "@fusion.dev/scripts": "0.0.0-dev",
57
57
  "@happy-dom/global-registrator": "^20.0.0",
58
58
  "@lit-labs/ssr": "^3.3.0",
package/types/jsx.d.ts CHANGED
@@ -4207,30 +4207,6 @@ submits and what `min` and `max` compare against. */
4207
4207
  locale?: (HelixHeadlessDateInput["locale"]) | undefined;
4208
4208
  /** Latest date that can be chosen, as `YYYY-MM-DD`. */
4209
4209
  max?: (HelixHeadlessDateInput["max"]) | undefined;
4210
- /** How many dates are shown as tags before the rest are counted, in `multiple`.
4211
-
4212
- `0` is all of them, and is the default: a cap that guesses is worse than no
4213
- cap, because the number that fits depends on the width of the field and the
4214
- length of what is in it, neither of which this element knows. What a cap is
4215
- genuinely for is a field in a row or a table cell, where a set of twelve
4216
- dates would push everything below it down a line at a time.
4217
-
4218
- The remainder is counted rather than hidden. `+3` is a fact a reader can
4219
- act on, where a row that silently stops is a field that appears to have lost
4220
- what was put in it, and the count is what tells them there is more to see. */
4221
- "max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4222
- /** How many dates are shown as tags before the rest are counted, in `multiple`.
4223
-
4224
- `0` is all of them, and is the default: a cap that guesses is worse than no
4225
- cap, because the number that fits depends on the width of the field and the
4226
- length of what is in it, neither of which this element knows. What a cap is
4227
- genuinely for is a field in a row or a table cell, where a set of twelve
4228
- dates would push everything below it down a line at a time.
4229
-
4230
- The remainder is counted rather than hidden. `+3` is a fact a reader can
4231
- act on, where a row that silently stops is a field that appears to have lost
4232
- what was put in it, and the count is what tells them there is more to see. */
4233
- maxTags?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4234
4210
  /** Earliest date that can be chosen, as `YYYY-MM-DD`. */
4235
4211
  min?: (HelixHeadlessDateInput["min"]) | undefined;
4236
4212
  /** How many dates can be held at once.
@@ -4299,6 +4275,20 @@ the resolved state for stylesheets, which is what the mirror is for. */
4299
4275
  "default-open"?: (HelixHeadlessDateInput["defaultOpen"]) | undefined;
4300
4276
  /** Initial open state for uncontrolled use, where nothing declared one. */
4301
4277
  defaultOpen?: (HelixHeadlessDateInput["defaultOpen"]) | undefined;
4278
+ /** What the control is called once everything is showing. */
4279
+ "collapse-label"?: (HelixHeadlessDateInput["collapseLabel"]) | undefined;
4280
+ /** What the control is called once everything is showing. */
4281
+ collapseLabel?: (HelixHeadlessDateInput["collapseLabel"]) | undefined;
4282
+ /** Whether the count is a control that shows the rest. */
4283
+ expandable?: (HelixHeadlessDateInput["expandable"]) | undefined;
4284
+ /** What the collapsed count is called, since `+3` names nothing. */
4285
+ "expand-label"?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4286
+ /** What the collapsed count is called, since `+3` names nothing. */
4287
+ expandLabel?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4288
+ /** How many tokens to show before the rest become a count. */
4289
+ "max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4290
+ /** How many tokens to show before the rest become a count. */
4291
+ maxTags?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4302
4292
  /** The value the markup declared, which is where a reset returns to. */
4303
4293
  "default-value"?: (HelixHeadlessDateInput["defaultValue"]) | undefined;
4304
4294
  /** The value the markup declared, which is where a reset returns to. */
@@ -4448,30 +4438,6 @@ submits and what `min` and `max` compare against. */
4448
4438
  "prop:locale"?: (HelixHeadlessDateInput["locale"]) | undefined;
4449
4439
  /** Latest date that can be chosen, as `YYYY-MM-DD`. */
4450
4440
  "prop:max"?: (HelixHeadlessDateInput["max"]) | undefined;
4451
- /** How many dates are shown as tags before the rest are counted, in `multiple`.
4452
-
4453
- `0` is all of them, and is the default: a cap that guesses is worse than no
4454
- cap, because the number that fits depends on the width of the field and the
4455
- length of what is in it, neither of which this element knows. What a cap is
4456
- genuinely for is a field in a row or a table cell, where a set of twelve
4457
- dates would push everything below it down a line at a time.
4458
-
4459
- The remainder is counted rather than hidden. `+3` is a fact a reader can
4460
- act on, where a row that silently stops is a field that appears to have lost
4461
- what was put in it, and the count is what tells them there is more to see. */
4462
- "attr:max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4463
- /** How many dates are shown as tags before the rest are counted, in `multiple`.
4464
-
4465
- `0` is all of them, and is the default: a cap that guesses is worse than no
4466
- cap, because the number that fits depends on the width of the field and the
4467
- length of what is in it, neither of which this element knows. What a cap is
4468
- genuinely for is a field in a row or a table cell, where a set of twelve
4469
- dates would push everything below it down a line at a time.
4470
-
4471
- The remainder is counted rather than hidden. `+3` is a fact a reader can
4472
- act on, where a row that silently stops is a field that appears to have lost
4473
- what was put in it, and the count is what tells them there is more to see. */
4474
- "prop:maxTags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4475
4441
  /** Earliest date that can be chosen, as `YYYY-MM-DD`. */
4476
4442
  "prop:min"?: (HelixHeadlessDateInput["min"]) | undefined;
4477
4443
  /** How many dates can be held at once.
@@ -4540,6 +4506,20 @@ the resolved state for stylesheets, which is what the mirror is for. */
4540
4506
  "bool:default-open"?: (HelixHeadlessDateInput["defaultOpen"]) | undefined;
4541
4507
  /** Initial open state for uncontrolled use, where nothing declared one. */
4542
4508
  "prop:defaultOpen"?: (HelixHeadlessDateInput["defaultOpen"]) | undefined;
4509
+ /** What the control is called once everything is showing. */
4510
+ "attr:collapse-label"?: (HelixHeadlessDateInput["collapseLabel"]) | undefined;
4511
+ /** What the control is called once everything is showing. */
4512
+ "prop:collapseLabel"?: (HelixHeadlessDateInput["collapseLabel"]) | undefined;
4513
+ /** Whether the count is a control that shows the rest. */
4514
+ "prop:expandable"?: (HelixHeadlessDateInput["expandable"]) | undefined;
4515
+ /** What the collapsed count is called, since `+3` names nothing. */
4516
+ "attr:expand-label"?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4517
+ /** What the collapsed count is called, since `+3` names nothing. */
4518
+ "prop:expandLabel"?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4519
+ /** How many tokens to show before the rest become a count. */
4520
+ "attr:max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4521
+ /** How many tokens to show before the rest become a count. */
4522
+ "prop:maxTags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4543
4523
  /** The value the markup declared, which is where a reset returns to. */
4544
4524
  "attr:default-value"?: (HelixHeadlessDateInput["defaultValue"]) | undefined;
4545
4525
  /** The value the markup declared, which is where a reset returns to. */
@@ -12954,18 +12934,6 @@ Absent uses the runtime's own. */
12954
12934
  locale?: (HelixHeadlessTimeInput["locale"]) | undefined;
12955
12935
  /** Latest time that can be chosen, as `HH:mm`. */
12956
12936
  max?: (HelixHeadlessTimeInput["max"]) | undefined;
12957
- /** How many times are shown as tags before the rest are counted, in `multiple`.
12958
-
12959
- `0` is all of them, and is the default, for the reason Date Input gives: how
12960
- many fit depends on the width of the field and the length of what is in it,
12961
- and this element knows neither. */
12962
- "max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
12963
- /** How many times are shown as tags before the rest are counted, in `multiple`.
12964
-
12965
- `0` is all of them, and is the default, for the reason Date Input gives: how
12966
- many fit depends on the width of the field and the length of what is in it,
12967
- and this element knows neither. */
12968
- maxTags?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
12969
12937
  /** Earliest time that can be chosen, as `HH:mm`. */
12970
12938
  min?: (HelixHeadlessTimeInput["min"]) | undefined;
12971
12939
  /** How many times can be held at once.
@@ -13052,6 +13020,20 @@ the resolved state for stylesheets, which is what the mirror is for. */
13052
13020
  "default-open"?: (HelixHeadlessTimeInput["defaultOpen"]) | undefined;
13053
13021
  /** Initial open state for uncontrolled use, where nothing declared one. */
13054
13022
  defaultOpen?: (HelixHeadlessTimeInput["defaultOpen"]) | undefined;
13023
+ /** What the control is called once everything is showing. */
13024
+ "collapse-label"?: (HelixHeadlessTimeInput["collapseLabel"]) | undefined;
13025
+ /** What the control is called once everything is showing. */
13026
+ collapseLabel?: (HelixHeadlessTimeInput["collapseLabel"]) | undefined;
13027
+ /** Whether the count is a control that shows the rest. */
13028
+ expandable?: (HelixHeadlessTimeInput["expandable"]) | undefined;
13029
+ /** What the collapsed count is called, since `+3` names nothing. */
13030
+ "expand-label"?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
13031
+ /** What the collapsed count is called, since `+3` names nothing. */
13032
+ expandLabel?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
13033
+ /** How many tokens to show before the rest become a count. */
13034
+ "max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13035
+ /** How many tokens to show before the rest become a count. */
13036
+ maxTags?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13055
13037
  /** The value the markup declared, which is where a reset returns to. */
13056
13038
  "default-value"?: (HelixHeadlessTimeInput["defaultValue"]) | undefined;
13057
13039
  /** The value the markup declared, which is where a reset returns to. */
@@ -13140,18 +13122,6 @@ Absent uses the runtime's own. */
13140
13122
  "prop:locale"?: (HelixHeadlessTimeInput["locale"]) | undefined;
13141
13123
  /** Latest time that can be chosen, as `HH:mm`. */
13142
13124
  "prop:max"?: (HelixHeadlessTimeInput["max"]) | undefined;
13143
- /** How many times are shown as tags before the rest are counted, in `multiple`.
13144
-
13145
- `0` is all of them, and is the default, for the reason Date Input gives: how
13146
- many fit depends on the width of the field and the length of what is in it,
13147
- and this element knows neither. */
13148
- "attr:max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13149
- /** How many times are shown as tags before the rest are counted, in `multiple`.
13150
-
13151
- `0` is all of them, and is the default, for the reason Date Input gives: how
13152
- many fit depends on the width of the field and the length of what is in it,
13153
- and this element knows neither. */
13154
- "prop:maxTags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13155
13125
  /** Earliest time that can be chosen, as `HH:mm`. */
13156
13126
  "prop:min"?: (HelixHeadlessTimeInput["min"]) | undefined;
13157
13127
  /** How many times can be held at once.
@@ -13238,6 +13208,20 @@ the resolved state for stylesheets, which is what the mirror is for. */
13238
13208
  "bool:default-open"?: (HelixHeadlessTimeInput["defaultOpen"]) | undefined;
13239
13209
  /** Initial open state for uncontrolled use, where nothing declared one. */
13240
13210
  "prop:defaultOpen"?: (HelixHeadlessTimeInput["defaultOpen"]) | undefined;
13211
+ /** What the control is called once everything is showing. */
13212
+ "attr:collapse-label"?: (HelixHeadlessTimeInput["collapseLabel"]) | undefined;
13213
+ /** What the control is called once everything is showing. */
13214
+ "prop:collapseLabel"?: (HelixHeadlessTimeInput["collapseLabel"]) | undefined;
13215
+ /** Whether the count is a control that shows the rest. */
13216
+ "prop:expandable"?: (HelixHeadlessTimeInput["expandable"]) | undefined;
13217
+ /** What the collapsed count is called, since `+3` names nothing. */
13218
+ "attr:expand-label"?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
13219
+ /** What the collapsed count is called, since `+3` names nothing. */
13220
+ "prop:expandLabel"?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
13221
+ /** How many tokens to show before the rest become a count. */
13222
+ "attr:max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13223
+ /** How many tokens to show before the rest become a count. */
13224
+ "prop:maxTags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
13241
13225
  /** The value the markup declared, which is where a reset returns to. */
13242
13226
  "attr:default-value"?: (HelixHeadlessTimeInput["defaultValue"]) | undefined;
13243
13227
  /** The value the markup declared, which is where a reset returns to. */
@@ -19314,17 +19298,6 @@ export type CustomElements = {
19314
19298
  * - `first-day-of-week`/`firstDayOfWeek`: First column of the week in the calendar, `0` for Sunday through `6`.
19315
19299
  * - `locale`: Language tag the calendar names its months and days in.
19316
19300
  * - `max`: Latest date that can be chosen, as `YYYY-MM-DD`.
19317
- * - `max-tags`/`maxTags`: How many dates are shown as tags before the rest are counted, in `multiple`.
19318
- *
19319
- * `0` is all of them, and is the default: a cap that guesses is worse than no
19320
- * cap, because the number that fits depends on the width of the field and the
19321
- * length of what is in it, neither of which this element knows. What a cap is
19322
- * genuinely for is a field in a row or a table cell, where a set of twelve
19323
- * dates would push everything below it down a line at a time.
19324
- *
19325
- * The remainder is counted rather than hidden. `+3` is a fact a reader can
19326
- * act on, where a row that silently stops is a field that appears to have lost
19327
- * what was put in it, and the count is what tells them there is more to see.
19328
19301
  * - `min`: Earliest date that can be chosen, as `YYYY-MM-DD`.
19329
19302
  * - `mode`: How many dates can be held at once.
19330
19303
  *
@@ -19368,6 +19341,10 @@ export type CustomElements = {
19368
19341
  * last reader did rather than what the author wrote. `:state(open)` carries
19369
19342
  * the resolved state for stylesheets, which is what the mirror is for.
19370
19343
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
19344
+ * - `collapse-label`/`collapseLabel`: What the control is called once everything is showing.
19345
+ * - `expandable`: Whether the count is a control that shows the rest.
19346
+ * - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
19347
+ * - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
19371
19348
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
19372
19349
  * - `value`: What the control holds now, and what its form submits.
19373
19350
  *
@@ -19540,8 +19517,9 @@ export type CustomElements = {
19540
19517
  * - `picker-previous-mark`: The glyph on the previous month control.
19541
19518
  * - `picker-week`: One row of days.
19542
19519
  * - `picker-weekday`: A column header naming a day of the week.
19543
- * - `rest`: How many dates are held beyond the ones shown.
19520
+ * - `rest`: How many dates are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
19544
19521
  * - `surface`: The floating panel.
19522
+ * - `tags`: The row the dates sit in.
19545
19523
  * - `trigger`: The control that opens the calendar.
19546
19524
  * - `trigger-icon`: The mark on the button that opens the calendar.
19547
19525
  */
@@ -27649,11 +27627,6 @@ export type CustomElements = {
27649
27627
  *
27650
27628
  * Absent uses the runtime's own.
27651
27629
  * - `max`: Latest time that can be chosen, as `HH:mm`.
27652
- * - `max-tags`/`maxTags`: How many times are shown as tags before the rest are counted, in `multiple`.
27653
- *
27654
- * `0` is all of them, and is the default, for the reason Date Input gives: how
27655
- * many fit depends on the width of the field and the length of what is in it,
27656
- * and this element knows neither.
27657
27630
  * - `min`: Earliest time that can be chosen, as `HH:mm`.
27658
27631
  * - `mode`: How many times can be held at once.
27659
27632
  *
@@ -27707,6 +27680,10 @@ export type CustomElements = {
27707
27680
  * last reader did rather than what the author wrote. `:state(open)` carries
27708
27681
  * the resolved state for stylesheets, which is what the mirror is for.
27709
27682
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
27683
+ * - `collapse-label`/`collapseLabel`: What the control is called once everything is showing.
27684
+ * - `expandable`: Whether the count is a control that shows the rest.
27685
+ * - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
27686
+ * - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
27710
27687
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
27711
27688
  * - `value`: What the control holds now, and what its form submits.
27712
27689
  *
@@ -27886,8 +27863,9 @@ export type CustomElements = {
27886
27863
  * - `picker-option-item`: The row.
27887
27864
  * - `picker-option-label`: The words.
27888
27865
  * - `picker-option-text`: The words and the caption, as one column.
27889
- * - `rest`: How many times are held beyond the ones shown.
27866
+ * - `rest`: How many times are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
27890
27867
  * - `surface`: The floating panel.
27868
+ * - `tags`: The row the times sit in.
27891
27869
  * - `time`: One held time, as a tag, in `multiple`.
27892
27870
  * - `time-dismiss`: The remove button, when `dismissible`.
27893
27871
  * - `time-dismiss-mark`: The glyph on the dismiss control, where none is slotted.
@@ -33825,17 +33803,6 @@ export type CustomElementsSolidJs = {
33825
33803
  * - `first-day-of-week`/`firstDayOfWeek`: First column of the week in the calendar, `0` for Sunday through `6`.
33826
33804
  * - `locale`: Language tag the calendar names its months and days in.
33827
33805
  * - `max`: Latest date that can be chosen, as `YYYY-MM-DD`.
33828
- * - `max-tags`/`maxTags`: How many dates are shown as tags before the rest are counted, in `multiple`.
33829
- *
33830
- * `0` is all of them, and is the default: a cap that guesses is worse than no
33831
- * cap, because the number that fits depends on the width of the field and the
33832
- * length of what is in it, neither of which this element knows. What a cap is
33833
- * genuinely for is a field in a row or a table cell, where a set of twelve
33834
- * dates would push everything below it down a line at a time.
33835
- *
33836
- * The remainder is counted rather than hidden. `+3` is a fact a reader can
33837
- * act on, where a row that silently stops is a field that appears to have lost
33838
- * what was put in it, and the count is what tells them there is more to see.
33839
33806
  * - `min`: Earliest date that can be chosen, as `YYYY-MM-DD`.
33840
33807
  * - `mode`: How many dates can be held at once.
33841
33808
  *
@@ -33879,6 +33846,10 @@ export type CustomElementsSolidJs = {
33879
33846
  * last reader did rather than what the author wrote. `:state(open)` carries
33880
33847
  * the resolved state for stylesheets, which is what the mirror is for.
33881
33848
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
33849
+ * - `collapse-label`/`collapseLabel`: What the control is called once everything is showing.
33850
+ * - `expandable`: Whether the count is a control that shows the rest.
33851
+ * - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
33852
+ * - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
33882
33853
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
33883
33854
  * - `value`: What the control holds now, and what its form submits.
33884
33855
  *
@@ -34051,8 +34022,9 @@ export type CustomElementsSolidJs = {
34051
34022
  * - `picker-previous-mark`: The glyph on the previous month control.
34052
34023
  * - `picker-week`: One row of days.
34053
34024
  * - `picker-weekday`: A column header naming a day of the week.
34054
- * - `rest`: How many dates are held beyond the ones shown.
34025
+ * - `rest`: How many dates are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
34055
34026
  * - `surface`: The floating panel.
34027
+ * - `tags`: The row the dates sit in.
34056
34028
  * - `trigger`: The control that opens the calendar.
34057
34029
  * - `trigger-icon`: The mark on the button that opens the calendar.
34058
34030
  */
@@ -42328,11 +42300,6 @@ export type CustomElementsSolidJs = {
42328
42300
  *
42329
42301
  * Absent uses the runtime's own.
42330
42302
  * - `max`: Latest time that can be chosen, as `HH:mm`.
42331
- * - `max-tags`/`maxTags`: How many times are shown as tags before the rest are counted, in `multiple`.
42332
- *
42333
- * `0` is all of them, and is the default, for the reason Date Input gives: how
42334
- * many fit depends on the width of the field and the length of what is in it,
42335
- * and this element knows neither.
42336
42303
  * - `min`: Earliest time that can be chosen, as `HH:mm`.
42337
42304
  * - `mode`: How many times can be held at once.
42338
42305
  *
@@ -42386,6 +42353,10 @@ export type CustomElementsSolidJs = {
42386
42353
  * last reader did rather than what the author wrote. `:state(open)` carries
42387
42354
  * the resolved state for stylesheets, which is what the mirror is for.
42388
42355
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
42356
+ * - `collapse-label`/`collapseLabel`: What the control is called once everything is showing.
42357
+ * - `expandable`: Whether the count is a control that shows the rest.
42358
+ * - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
42359
+ * - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
42389
42360
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
42390
42361
  * - `value`: What the control holds now, and what its form submits.
42391
42362
  *
@@ -42565,8 +42536,9 @@ export type CustomElementsSolidJs = {
42565
42536
  * - `picker-option-item`: The row.
42566
42537
  * - `picker-option-label`: The words.
42567
42538
  * - `picker-option-text`: The words and the caption, as one column.
42568
- * - `rest`: How many times are held beyond the ones shown.
42539
+ * - `rest`: How many times are held beyond the ones shown. A `<button>` with `expandable`, a `<span>` without it.
42569
42540
  * - `surface`: The floating panel.
42541
+ * - `tags`: The row the times sit in.
42570
42542
  * - `time`: One held time, as a tag, in `multiple`.
42571
42543
  * - `time-dismiss`: The remove button, when `dismissible`.
42572
42544
  * - `time-dismiss-mark`: The glyph on the dismiss control, where none is slotted.