@vonage/vivid 4.31.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/custom-elements.json +116 -169
  2. package/lib/accordion-item/accordion-item.d.ts +42 -1
  3. package/lib/action-group/action-group.d.ts +42 -1
  4. package/lib/alert/alert.d.ts +84 -2
  5. package/lib/audio-player/audio-player.d.ts +42 -1
  6. package/lib/avatar/avatar.d.ts +42 -1
  7. package/lib/badge/badge.d.ts +42 -1
  8. package/lib/banner/banner.d.ts +126 -3
  9. package/lib/breadcrumb/breadcrumb.d.ts +42 -1
  10. package/lib/breadcrumb-item/breadcrumb-item.d.ts +42 -1
  11. package/lib/button/button.d.ts +126 -3
  12. package/lib/calendar-event/calendar-event.d.ts +42 -1
  13. package/lib/card/card.d.ts +42 -1
  14. package/lib/checkbox/checkbox.d.ts +252 -7
  15. package/lib/combobox/combobox.d.ts +252 -6
  16. package/lib/data-grid/data-grid-cell.d.ts +419 -2
  17. package/lib/data-grid/data-grid-row.d.ts +380 -1
  18. package/lib/date-picker/date-picker.d.ts +336 -8
  19. package/lib/date-range-picker/date-range-picker.d.ts +168 -4
  20. package/lib/date-time-picker/date-time-picker.d.ts +336 -8
  21. package/lib/dial-pad/dial-pad.d.ts +42 -1
  22. package/lib/dialog/dialog.d.ts +84 -2
  23. package/lib/divider/divider.d.ts +42 -1
  24. package/lib/fab/fab.d.ts +42 -1
  25. package/lib/file-picker/file-picker.d.ts +252 -6
  26. package/lib/file-picker/locale.d.ts +1 -0
  27. package/lib/header/header.d.ts +42 -1
  28. package/lib/menu/menu.d.ts +84 -2
  29. package/lib/menu-item/menu-item.d.ts +84 -2
  30. package/lib/nav/nav.d.ts +42 -1
  31. package/lib/nav-disclosure/nav-disclosure.d.ts +84 -2
  32. package/lib/nav-item/nav-item.d.ts +84 -2
  33. package/lib/note/note.d.ts +42 -1
  34. package/lib/number-field/number-field.d.ts +336 -8
  35. package/lib/option/option.d.ts +84 -2
  36. package/lib/pagination/pagination.d.ts +42 -1
  37. package/lib/progress/progress.d.ts +42 -1
  38. package/lib/progress-ring/progress-ring.d.ts +42 -1
  39. package/lib/radio/radio.d.ts +126 -4
  40. package/lib/radio-group/radio-group.d.ts +42 -1
  41. package/lib/range-slider/range-slider.d.ts +126 -3
  42. package/lib/rich-text-editor/menubar/menubar.d.ts +42 -1
  43. package/lib/rich-text-editor/rich-text-editor.d.ts +42 -1
  44. package/lib/searchable-select/option-tag.d.ts +42 -1
  45. package/lib/searchable-select/searchable-select.d.ts +336 -8
  46. package/lib/select/select.d.ts +294 -7
  47. package/lib/selectable-box/selectable-box.d.ts +42 -2
  48. package/lib/slider/slider.d.ts +126 -3
  49. package/lib/split-button/split-button.d.ts +126 -3
  50. package/lib/switch/switch.d.ts +84 -2
  51. package/lib/tab/tab.d.ts +126 -3
  52. package/lib/tab-panel/tab-panel.d.ts +42 -1
  53. package/lib/tag/tag.d.ts +126 -3
  54. package/lib/tag-group/tag-group.d.ts +42 -1
  55. package/lib/text-area/text-area.d.ts +294 -7
  56. package/lib/text-field/text-field.d.ts +336 -8
  57. package/lib/time-picker/time-picker.d.ts +168 -4
  58. package/lib/toggletip/toggletip.d.ts +84 -2
  59. package/lib/tooltip/tooltip.d.ts +42 -1
  60. package/lib/tree-item/tree-item.d.ts +84 -2
  61. package/lib/tree-view/tree-view.d.ts +42 -1
  62. package/lib/video-player/video-player.d.ts +42 -1
  63. package/locales/de-DE.cjs +2 -1
  64. package/locales/de-DE.js +2 -1
  65. package/locales/en-GB.cjs +2 -1
  66. package/locales/en-GB.js +2 -1
  67. package/locales/en-US.cjs +2 -1
  68. package/locales/en-US.js +2 -1
  69. package/locales/ja-JP.cjs +2 -1
  70. package/locales/ja-JP.js +2 -1
  71. package/locales/zh-CN.cjs +2 -1
  72. package/locales/zh-CN.js +2 -1
  73. package/package.json +1 -1
  74. package/shared/aria/aria-mixin.d.ts +43 -2
  75. package/shared/aria/attribute-removal.d.ts +3 -0
  76. package/shared/aria/delegate-aria-behavior.d.ts +0 -3
  77. package/shared/aria/delegates-aria.d.ts +42 -1
  78. package/shared/aria/host-semantics.d.ts +42 -1
  79. package/shared/definition15.cjs +5 -1
  80. package/shared/definition15.js +5 -1
  81. package/shared/definition17.cjs +61 -78
  82. package/shared/definition17.js +61 -78
  83. package/shared/definition26.cjs +37 -2
  84. package/shared/definition26.js +37 -2
  85. package/shared/definition30.cjs +8 -4
  86. package/shared/definition30.js +8 -4
  87. package/shared/definition31.cjs +6 -6
  88. package/shared/definition31.js +6 -6
  89. package/shared/definition42.cjs +0 -4
  90. package/shared/definition42.js +0 -4
  91. package/shared/definition47.cjs +0 -8
  92. package/shared/definition47.js +1 -9
  93. package/shared/definition54.cjs +1 -1
  94. package/shared/definition54.js +1 -1
  95. package/shared/definition62.cjs +1 -1
  96. package/shared/definition62.js +1 -1
  97. package/shared/definition63.cjs +1 -2
  98. package/shared/definition63.js +1 -2
  99. package/shared/delegates-aria.cjs +4 -25
  100. package/shared/delegates-aria.js +4 -25
  101. package/shared/divider.cjs +8 -3
  102. package/shared/divider.js +8 -3
  103. package/shared/feedback/feedback-message.d.ts +42 -1
  104. package/shared/feedback/mixins.d.ts +84 -2
  105. package/shared/foundation/button/button.d.ts +84 -2
  106. package/shared/foundation/form-associated/form-associated.d.ts +84 -2
  107. package/shared/foundation/vivid-element/vivid-element.d.ts +43 -2
  108. package/shared/listbox.cjs +1 -1
  109. package/shared/listbox.js +1 -1
  110. package/shared/option.cjs +15 -2
  111. package/shared/option.js +16 -3
  112. package/shared/patterns/affix.d.ts +84 -2
  113. package/shared/patterns/anchored.d.ts +84 -2
  114. package/shared/patterns/char-count/char-count.d.ts +42 -1
  115. package/shared/patterns/form-elements/form-element.d.ts +84 -2
  116. package/shared/patterns/form-elements/with-error-text.d.ts +126 -3
  117. package/shared/patterns/form-elements/with-success-text.d.ts +42 -1
  118. package/shared/patterns/linkable.d.ts +42 -1
  119. package/shared/patterns/localized.d.ts +42 -1
  120. package/shared/patterns/trapped-focus.d.ts +42 -1
  121. package/shared/picker-field/mixins/calendar-picker.d.ts +84 -2
  122. package/shared/picker-field/mixins/calendar-picker.template.d.ts +84 -2
  123. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +42 -1
  124. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +168 -4
  125. package/shared/picker-field/mixins/single-date-picker.d.ts +252 -6
  126. package/shared/picker-field/mixins/single-value-picker.d.ts +84 -2
  127. package/shared/picker-field/mixins/time-selection-picker.d.ts +168 -4
  128. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +168 -4
  129. package/shared/picker-field/picker-field.d.ts +252 -6
  130. package/shared/vivid-element.cjs +56 -5
  131. package/shared/vivid-element.js +56 -5
  132. package/vivid.api.json +2 -93
@@ -3,6 +3,7 @@ import { h as html, V as VividElement, a as attr, o as observable, D as DOM, O a
3
3
  import { V as VisuallyHidden, v as visuallyHiddenDefinition } from './definition66.js';
4
4
  import { b as keyEscape, j as keyFunction2, k as keyEnter, d as keyEnd, g as keyHome, h as keyArrowRight, i as keyArrowLeft, l as keyPageDown, m as keyPageUp, f as keyArrowDown, e as keyArrowUp, a as keySpace } from './key-codes.js';
5
5
  import { R as RepeatDirective } from './repeat.js';
6
+ import { H as HostSemantics, a as applyHostSemantics } from './host-semantics.js';
6
7
  import { c as children } from './children.js';
7
8
  import { s as slotted, e as elements } from './slotted.js';
8
9
  import { L as Localized } from './localized.js';
@@ -70,7 +71,7 @@ const defaultHeaderCellContentsTemplate = html`
70
71
  ${(x) => x.columnDefinition.title === void 0 ? x.columnDefinition.columnDataKey : x.columnDefinition.title}
71
72
  </template>
72
73
  `;
73
- class DataGridCell extends Localized(VividElement) {
74
+ class DataGridCell extends Localized(HostSemantics(VividElement)) {
74
75
  constructor() {
75
76
  super(...arguments);
76
77
  // eslint-disable-next-line @repo/repo/no-attribute-default-value
@@ -88,7 +89,21 @@ class DataGridCell extends Localized(VividElement) {
88
89
  };
89
90
  this._selectable = false;
90
91
  this.selected = false;
92
+ /**
93
+ * Indicates the selected status.
94
+ *
95
+ * @deprecated For setting selected state, please use `selected` property instead.
96
+ * @public
97
+ * HTML Attribute: aria-selected
98
+ */
91
99
  this.ariaSelected = null;
100
+ /**
101
+ * Indicates the sort status.
102
+ *
103
+ * @deprecated To set the sorting visual style please use `sortDirection` property.
104
+ * @public
105
+ * HTML Attribute: aria-sort
106
+ */
92
107
  this.ariaSort = null;
93
108
  }
94
109
  /**
@@ -278,54 +293,25 @@ class DataGridCell extends Localized(VividElement) {
278
293
  this.customCellView = null;
279
294
  }
280
295
  }
281
- /**
282
- *
283
- * @private
284
- */
285
- calculateAriaSelectedValue() {
286
- if (this._selectable && this.selected) return "true";
287
- if (this._selectable && !this.selected) return "false";
288
- return null;
289
- }
290
- /**
291
- * @internal
292
- */
293
- _selectableChanged() {
294
- this.ariaSelected = this.calculateAriaSelectedValue();
295
- }
296
- /**
297
- * @internal
298
- */
299
- selectedChanged() {
300
- this.ariaSelected = this.calculateAriaSelectedValue();
301
- }
302
296
  /**
303
297
  * @internal
304
298
  */
305
- ariaSelectedChanged(_, newValue) {
299
+ ariaSelectedChanged(prevValue, newValue) {
300
+ super.ariaSelectedChanged(prevValue, newValue);
306
301
  this._selectable = newValue !== null;
307
302
  this.selected = newValue === "true";
308
303
  }
309
304
  /**
310
305
  * @internal
311
306
  */
312
- ariaSortChanged(_oldValue, newValue) {
307
+ ariaSortChanged(oldValue, newValue) {
308
+ super.ariaSortChanged(oldValue, newValue);
313
309
  if (newValue === null) {
314
310
  this.sortDirection = void 0;
315
311
  return;
316
312
  }
317
313
  this.sortDirection = newValue;
318
314
  }
319
- /**
320
- * @internal
321
- */
322
- sortDirectionChanged(_oldValue, newValue) {
323
- if (newValue === void 0) {
324
- this.ariaSort = null;
325
- return;
326
- }
327
- this.ariaSort = newValue;
328
- }
329
315
  #getColumnDataKey() {
330
316
  return this.columnDefinition && this.columnDefinition.columnDataKey ? this.columnDefinition.columnDataKey : this.textContent.trim();
331
317
  }
@@ -371,12 +357,6 @@ __decorateClass$2([
371
357
  __decorateClass$2([
372
358
  attr({ mode: "boolean" })
373
359
  ], DataGridCell.prototype, "selected");
374
- __decorateClass$2([
375
- attr({ attribute: "aria-selected", mode: "fromView" })
376
- ], DataGridCell.prototype, "ariaSelected");
377
- __decorateClass$2([
378
- attr({ attribute: "aria-sort" })
379
- ], DataGridCell.prototype, "ariaSort");
380
360
  __decorateClass$2([
381
361
  attr({ attribute: "sort-direction" })
382
362
  ], DataGridCell.prototype, "sortDirection");
@@ -390,7 +370,7 @@ var __decorateClass$1 = (decorators, target, key, kind) => {
390
370
  if (result) __defProp$1(target, key, result);
391
371
  return result;
392
372
  };
393
- class DataGridRow extends VividElement {
373
+ class DataGridRow extends HostSemantics(VividElement) {
394
374
  constructor() {
395
375
  super(...arguments);
396
376
  // eslint-disable-next-line @repo/repo/no-attribute-default-value
@@ -406,6 +386,13 @@ class DataGridRow extends VividElement {
406
386
  this.updateRowStyle = () => {
407
387
  this.style.gridTemplateColumns = this.gridTemplateColumns;
408
388
  };
389
+ /**
390
+ * Indicates the selected status.
391
+ *
392
+ * @deprecated
393
+ * @public
394
+ * HTML Attribute: aria-selected
395
+ */
409
396
  this.ariaSelected = null;
410
397
  this._selectable = false;
411
398
  this.selected = false;
@@ -519,30 +506,11 @@ class DataGridRow extends VividElement {
519
506
  /**
520
507
  * @internal
521
508
  */
522
- ariaSelectedChanged(_oldValue, newValue) {
509
+ ariaSelectedChanged(oldValue, newValue) {
510
+ super.ariaSelectedChanged(oldValue, newValue);
523
511
  this._selectable = newValue !== null;
524
512
  this.selected = newValue === "true";
525
513
  }
526
- /**
527
- * @internal
528
- */
529
- _calculateAriaSelectedValue() {
530
- if (this._selectable && this.selected) return "true";
531
- if (this._selectable && !this.selected) return "false";
532
- return null;
533
- }
534
- /**
535
- * @internal
536
- */
537
- _selectableChanged() {
538
- this.ariaSelected = this._calculateAriaSelectedValue();
539
- }
540
- /**
541
- * @internal
542
- */
543
- selectedChanged() {
544
- this.ariaSelected = this._calculateAriaSelectedValue();
545
- }
546
514
  }
547
515
  // @ts-expect-error Type is incorrectly non-optional
548
516
  __decorateClass$1([
@@ -578,9 +546,6 @@ __decorateClass$1([
578
546
  __decorateClass$1([
579
547
  observable
580
548
  ], DataGridRow.prototype, "cellElements");
581
- __decorateClass$1([
582
- attr({ attribute: "aria-selected" })
583
- ], DataGridRow.prototype, "ariaSelected");
584
549
  __decorateClass$1([
585
550
  observable
586
551
  ], DataGridRow.prototype, "_selectable");
@@ -638,7 +603,7 @@ const _DataGrid = class _DataGrid extends VividElement {
638
603
  );
639
604
  const focusRow = this.rowElements[focusRowIndex];
640
605
  const cells = focusRow.querySelectorAll(
641
- '[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"], [cell-type]'
606
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"], [data-vvd-component="data-grid-cell"]'
642
607
  );
643
608
  const focusColumnIndex = Math.max(
644
609
  0,
@@ -654,7 +619,7 @@ const _DataGrid = class _DataGrid extends VividElement {
654
619
  if (mutations && mutations.length) {
655
620
  mutations.forEach((mutation) => {
656
621
  mutation.addedNodes.forEach((newNode) => {
657
- if (newNode.nodeType === 1 && newNode.getAttribute("role") === "row") {
622
+ if (newNode.nodeType === 1 && (newNode.getAttribute("role") === "row" || newNode.getAttribute("row-type") === "default")) {
658
623
  newNode.columnDefinitions = this.columnDefinitions;
659
624
  }
660
625
  });
@@ -696,7 +661,8 @@ const _DataGrid = class _DataGrid extends VividElement {
696
661
  }
697
662
  };
698
663
  this.#handleClick = ({ target, ctrlKey, shiftKey, metaKey }) => {
699
- if (target.getAttribute("role") !== "gridcell") return;
664
+ if (target.getAttribute("role") !== "gridcell" || target.getAttribute("cell-type") !== "default")
665
+ return;
700
666
  if (this.selectionMode === DataGridSelectionMode.singleCell || this.selectionMode === DataGridSelectionMode.multiCell) {
701
667
  this.#handleCellSelection({ target, ctrlKey, shiftKey, metaKey });
702
668
  return;
@@ -749,10 +715,10 @@ const _DataGrid = class _DataGrid extends VividElement {
749
715
  */
750
716
  this._resetSelection = (clear = false) => {
751
717
  const cells = Array.from(
752
- this.querySelectorAll('[role="gridcell"], [cell-type]')
718
+ this.querySelectorAll('[role="gridcell"], [cell-type="default"]')
753
719
  );
754
720
  const rows = Array.from(
755
- this.querySelectorAll('[role="row"], [row-type]')
721
+ this.querySelectorAll('[role="row"], [row-type="default"]')
756
722
  );
757
723
  if (this.selectionMode === DataGridSelectionMode.singleCell || this.selectionMode === DataGridSelectionMode.multiCell) {
758
724
  for (const cell of cells) {
@@ -1156,7 +1122,7 @@ const _DataGrid = class _DataGrid extends VividElement {
1156
1122
  applyFixedColumnStyling() {
1157
1123
  this.rowElements.forEach((row) => {
1158
1124
  const cells = row.querySelectorAll(
1159
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1125
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1160
1126
  );
1161
1127
  this.fixedColumnsPositions.forEach((position, index) => {
1162
1128
  if (index < cells.length) {
@@ -1176,7 +1142,7 @@ const _DataGrid = class _DataGrid extends VividElement {
1176
1142
  this.fixedColumnsPositions = [];
1177
1143
  if (this.rowElements.length === 0) return;
1178
1144
  const cells = this.rowElements[0].querySelectorAll(
1179
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1145
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1180
1146
  );
1181
1147
  let accumulator = 0;
1182
1148
  for (let i = 0; i < Math.min(this.fixedColumns, cells.length); i++) {
@@ -1195,7 +1161,7 @@ const _DataGrid = class _DataGrid extends VividElement {
1195
1161
  }
1196
1162
  this.rowElements.forEach((row) => {
1197
1163
  const cells = row.querySelectorAll(
1198
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1164
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1199
1165
  );
1200
1166
  this.fixedColumnsPositions.forEach((_, index) => {
1201
1167
  if (index < cells.length) {
@@ -1303,7 +1269,7 @@ const DataGridTemplate = (context) => {
1303
1269
  :defaultRowItemTemplate="${rowItemTemplate}"
1304
1270
  ${children({
1305
1271
  property: "rowElements",
1306
- filter: elements("[role=row]")
1272
+ filter: elements("[role=row],[data-vvd-component=data-grid-row]")
1307
1273
  })}
1308
1274
  >
1309
1275
  <div class="base">
@@ -1314,6 +1280,11 @@ const DataGridTemplate = (context) => {
1314
1280
  `;
1315
1281
  };
1316
1282
 
1283
+ function calculateAriaSelectedValue$1(x) {
1284
+ if (x._selectable && x.selected) return "true";
1285
+ if (x._selectable && !x.selected) return "false";
1286
+ return null;
1287
+ }
1317
1288
  function createCellItemTemplate(context) {
1318
1289
  const cellTag = context.tagFor(DataGridCell);
1319
1290
  return html`
@@ -1342,14 +1313,17 @@ const DataGridRowTemplate = (context) => {
1342
1313
  const getBaseClasses = (x) => classNames("base", ["selected", !!x.selected]);
1343
1314
  return html`
1344
1315
  <template
1345
- role="row"
1316
+ ${applyHostSemantics({
1317
+ role: "row",
1318
+ ariaSelected: calculateAriaSelectedValue$1
1319
+ })}
1346
1320
  class="${(x) => x.rowType !== "default" ? x.rowType : ""}"
1347
1321
  :defaultCellItemTemplate="${cellItemTemplate}"
1348
1322
  :defaultHeaderCellItemTemplate="${headerCellItemTemplate}"
1349
1323
  ${children({
1350
1324
  property: "cellElements",
1351
1325
  filter: elements(
1352
- '[role="cell"],[role="gridcell"],[role="columnheader"],[role="rowheader"],[cell-type]'
1326
+ '[role="cell"],[role="gridcell"],[role="columnheader"],[role="rowheader"],[data-vvd-component="data-grid-cell"]'
1353
1327
  )
1354
1328
  })}
1355
1329
  >
@@ -1375,6 +1349,11 @@ function getSortIcon(x) {
1375
1349
  }
1376
1350
  return "sort-solid";
1377
1351
  }
1352
+ function calculateAriaSelectedValue(x) {
1353
+ if (x._selectable && x.selected) return "true";
1354
+ if (x._selectable && !x.selected) return "false";
1355
+ return null;
1356
+ }
1378
1357
  function renderSortIcons(c) {
1379
1358
  const iconTag = c.tagFor(Icon);
1380
1359
  return html`
@@ -1398,7 +1377,11 @@ const DataGridCellTemplate = (context) => {
1398
1377
  return html`
1399
1378
  <template
1400
1379
  tabindex="-1"
1401
- role="${(x) => DataGridCellRole[x.cellType] ?? DataGridCellRole.default}"
1380
+ ${applyHostSemantics({
1381
+ role: (x) => DataGridCellRole[x.cellType] ?? DataGridCellRole.default,
1382
+ ariaSelected: calculateAriaSelectedValue,
1383
+ ariaSort: (x) => x.sortDirection ?? null
1384
+ })}
1402
1385
  @click="${(x) => x._handleInteraction()}"
1403
1386
  @keydown="${(x, c) => handleKeyDown(x, c.event)}"
1404
1387
  >
@@ -1406,7 +1389,7 @@ const DataGridCellTemplate = (context) => {
1406
1389
  class="${getBaseClasses}"
1407
1390
  role="${(x) => shouldShowSortIcons(x) ? "button" : void 0}"
1408
1391
  >
1409
- ${(x) => x.ariaSelected === "true" ? html`<${visuallyHiddenTagName}>${(x2) => x2.locale.dataGrid.cell.selected}</${visuallyHiddenTagName}>` : null}
1392
+ ${(x) => x.selected ? html`<${visuallyHiddenTagName}>${(x2) => x2.locale.dataGrid.cell.selected}</${visuallyHiddenTagName}>` : null}
1410
1393
  <slot></slot>
1411
1394
  ${when(
1412
1395
  shouldShowSortIcons,
@@ -13,7 +13,7 @@ const when = require('./when.cjs');
13
13
  const ref = require('./ref.cjs');
14
14
  const classNames = require('./class-names.cjs');
15
15
 
16
- const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit;--_low-ink-color: var(--vvd-color-neutral-600)}.control-wrapper{display:flex;flex-direction:column;block-size:inherit;gap:4px;max-block-size:inherit}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.control:hover,.control:active,.control:focus-visible{background-color:var(--vvd-color-cta-100)}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.preview-list ::-webkit-scrollbar{width:4px}.preview-list ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.preview-list ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
16
+ const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit;--_low-ink-color: var(--vvd-color-neutral-600)}.control-wrapper{display:flex;flex-direction:column;block-size:inherit;gap:4px;max-block-size:inherit}.control{position:relative;display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.control .upload-text{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-600);isolation:isolate;pointer-events:none;text-align:center;transition:all .3s ease}.control:hover .upload-text,.control.dz-drag-hover .upload-text{color:var(--vvd-color-neutral-800)}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.control:hover,.control:active,.control:focus-visible{border-color:var(--vvd-color-cta-400);background-color:var(--vvd-color-cta-100);box-shadow:0 2px 8px #0000001a;transform:translateY(-1px)}.control:active{box-shadow:0 1px 4px #0000001a;transform:translateY(0)}.control.dz-drag-hover{border-color:var(--vvd-color-cta-200);background-color:var(--vvd-color-cta-200);outline:2px dashed var(--vvd-color-cta-500);transform:scale(1.02)}.upload-icon{animation:subtle-pulse 2s ease-in-out infinite;color:var(--vvd-color-cta-600);pointer-events:none;transition:all .3s ease}.control:hover .upload-icon{animation:none;color:var(--vvd-color-cta-700);transform:scale(1.1)}.control:active .upload-icon{transform:scale(1.05)}.control.dz-drag-hover .upload-icon{animation:none;color:var(--vvd-color-neutral-800);transform:scale(1.15)}@keyframes subtle-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.preview-list ::-webkit-scrollbar{width:4px}.preview-list ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.preview-list ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
17
17
 
18
18
  var objectExtend = extend;
19
19
 
@@ -2311,6 +2311,7 @@ class FilePicker extends mixins.WithFeedback(
2311
2311
  const previewList = this.shadowRoot.querySelector(
2312
2312
  ".preview-list"
2313
2313
  );
2314
+ this.#setupDragEventHandlers(control);
2314
2315
  this.#dropzone = new $3ed269f2f0fb224b$export$2e2bcd8739ae039(control, {
2315
2316
  url: "/",
2316
2317
  // dummy url, we do not use dropzone's upload functionality
@@ -2338,6 +2339,34 @@ class FilePicker extends mixins.WithFeedback(
2338
2339
  });
2339
2340
  this.#syncSingleFileState();
2340
2341
  }
2342
+ /**
2343
+ * Sets up drag event handlers for enhanced visual feedback
2344
+ * @private
2345
+ */
2346
+ #setupDragEventHandlers(control) {
2347
+ control.addEventListener("dragenter", (e) => {
2348
+ e.preventDefault();
2349
+ e.stopPropagation();
2350
+ control.classList.add("dz-drag-hover");
2351
+ });
2352
+ control.addEventListener("dragover", (e) => {
2353
+ e.preventDefault();
2354
+ e.stopPropagation();
2355
+ control.classList.add("dz-drag-hover");
2356
+ });
2357
+ control.addEventListener("dragleave", (e) => {
2358
+ e.preventDefault();
2359
+ e.stopPropagation();
2360
+ if (!control.contains(e.relatedTarget)) {
2361
+ control.classList.remove("dz-drag-hover");
2362
+ }
2363
+ });
2364
+ control.addEventListener("drop", (e) => {
2365
+ e.preventDefault();
2366
+ e.stopPropagation();
2367
+ control.classList.remove("dz-drag-hover");
2368
+ });
2369
+ }
2341
2370
  disconnectedCallback() {
2342
2371
  super.disconnectedCallback();
2343
2372
  this.#dropzone.destroy();
@@ -2486,7 +2515,13 @@ const FilePickerTemplate = (context) => {
2486
2515
  role: "button"
2487
2516
  })}
2488
2517
  >
2489
- <slot class="main"></slot>
2518
+ <vwc-icon
2519
+ class="upload-icon"
2520
+ name="cloud-upload-line"
2521
+ size="-4"
2522
+ label="${(x) => x.locale.filePicker.uploadFilesLabel}"
2523
+ ></vwc-icon>
2524
+ <span class="upload-text"><slot></slot></span>
2490
2525
  </div>
2491
2526
  ${(x) => x._getFeedbackTemplate(context)}
2492
2527
  </div>
@@ -11,7 +11,7 @@ import { w as when } from './when.js';
11
11
  import { r as ref } from './ref.js';
12
12
  import { c as classNames } from './class-names.js';
13
13
 
14
- const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit;--_low-ink-color: var(--vvd-color-neutral-600)}.control-wrapper{display:flex;flex-direction:column;block-size:inherit;gap:4px;max-block-size:inherit}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.control:hover,.control:active,.control:focus-visible{background-color:var(--vvd-color-cta-100)}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.preview-list ::-webkit-scrollbar{width:4px}.preview-list ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.preview-list ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
14
+ const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit;--_low-ink-color: var(--vvd-color-neutral-600)}.control-wrapper{display:flex;flex-direction:column;block-size:inherit;gap:4px;max-block-size:inherit}.control{position:relative;display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.control .upload-text{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-600);isolation:isolate;pointer-events:none;text-align:center;transition:all .3s ease}.control:hover .upload-text,.control.dz-drag-hover .upload-text{color:var(--vvd-color-neutral-800)}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.control:hover,.control:active,.control:focus-visible{border-color:var(--vvd-color-cta-400);background-color:var(--vvd-color-cta-100);box-shadow:0 2px 8px #0000001a;transform:translateY(-1px)}.control:active{box-shadow:0 1px 4px #0000001a;transform:translateY(0)}.control.dz-drag-hover{border-color:var(--vvd-color-cta-200);background-color:var(--vvd-color-cta-200);outline:2px dashed var(--vvd-color-cta-500);transform:scale(1.02)}.upload-icon{animation:subtle-pulse 2s ease-in-out infinite;color:var(--vvd-color-cta-600);pointer-events:none;transition:all .3s ease}.control:hover .upload-icon{animation:none;color:var(--vvd-color-cta-700);transform:scale(1.1)}.control:active .upload-icon{transform:scale(1.05)}.control.dz-drag-hover .upload-icon{animation:none;color:var(--vvd-color-neutral-800);transform:scale(1.15)}@keyframes subtle-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.preview-list ::-webkit-scrollbar{width:4px}.preview-list ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.preview-list ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
15
15
 
16
16
  var objectExtend = extend;
17
17
 
@@ -2309,6 +2309,7 @@ class FilePicker extends WithFeedback(
2309
2309
  const previewList = this.shadowRoot.querySelector(
2310
2310
  ".preview-list"
2311
2311
  );
2312
+ this.#setupDragEventHandlers(control);
2312
2313
  this.#dropzone = new $3ed269f2f0fb224b$export$2e2bcd8739ae039(control, {
2313
2314
  url: "/",
2314
2315
  // dummy url, we do not use dropzone's upload functionality
@@ -2336,6 +2337,34 @@ class FilePicker extends WithFeedback(
2336
2337
  });
2337
2338
  this.#syncSingleFileState();
2338
2339
  }
2340
+ /**
2341
+ * Sets up drag event handlers for enhanced visual feedback
2342
+ * @private
2343
+ */
2344
+ #setupDragEventHandlers(control) {
2345
+ control.addEventListener("dragenter", (e) => {
2346
+ e.preventDefault();
2347
+ e.stopPropagation();
2348
+ control.classList.add("dz-drag-hover");
2349
+ });
2350
+ control.addEventListener("dragover", (e) => {
2351
+ e.preventDefault();
2352
+ e.stopPropagation();
2353
+ control.classList.add("dz-drag-hover");
2354
+ });
2355
+ control.addEventListener("dragleave", (e) => {
2356
+ e.preventDefault();
2357
+ e.stopPropagation();
2358
+ if (!control.contains(e.relatedTarget)) {
2359
+ control.classList.remove("dz-drag-hover");
2360
+ }
2361
+ });
2362
+ control.addEventListener("drop", (e) => {
2363
+ e.preventDefault();
2364
+ e.stopPropagation();
2365
+ control.classList.remove("dz-drag-hover");
2366
+ });
2367
+ }
2339
2368
  disconnectedCallback() {
2340
2369
  super.disconnectedCallback();
2341
2370
  this.#dropzone.destroy();
@@ -2484,7 +2513,13 @@ const FilePickerTemplate = (context) => {
2484
2513
  role: "button"
2485
2514
  })}
2486
2515
  >
2487
- <slot class="main"></slot>
2516
+ <vwc-icon
2517
+ class="upload-icon"
2518
+ name="cloud-upload-line"
2519
+ size="-4"
2520
+ label="${(x) => x.locale.filePicker.uploadFilesLabel}"
2521
+ ></vwc-icon>
2522
+ <span class="upload-text"><slot></slot></span>
2488
2523
  </div>
2489
2524
  ${(x) => x._getFeedbackTemplate(context)}
2490
2525
  </div>
@@ -30,7 +30,14 @@ var __decorateClass = (decorators, target, key, kind) => {
30
30
  class MenuItem extends hostSemantics.HostSemantics(affix.AffixIcon(vividElement.VividElement)) {
31
31
  constructor() {
32
32
  super();
33
- // eslint-disable-next-line @repo/repo/no-attribute-default-value
33
+ /**
34
+ * The role of the element.
35
+ *
36
+ * @deprecated Use `control-type` instead for checkbox and radio items. If the menu item is not a direct descendant of a menu, role will default to `presentation`.
37
+ * @public
38
+ * @remarks
39
+ * HTML Attribute: role
40
+ */
34
41
  this.role = MenuItemRole.menuitem;
35
42
  this.checked = false;
36
43
  /**
@@ -223,9 +230,6 @@ __decorateClass([
223
230
  __decorateClass([
224
231
  vividElement.attr({ mode: "boolean" })
225
232
  ], MenuItem.prototype, "expanded");
226
- __decorateClass([
227
- vividElement.attr
228
- ], MenuItem.prototype, "role");
229
233
  __decorateClass([
230
234
  vividElement.observable
231
235
  ], MenuItem.prototype, "_isPresentational");
@@ -28,7 +28,14 @@ var __decorateClass = (decorators, target, key, kind) => {
28
28
  class MenuItem extends HostSemantics(AffixIcon(VividElement)) {
29
29
  constructor() {
30
30
  super();
31
- // eslint-disable-next-line @repo/repo/no-attribute-default-value
31
+ /**
32
+ * The role of the element.
33
+ *
34
+ * @deprecated Use `control-type` instead for checkbox and radio items. If the menu item is not a direct descendant of a menu, role will default to `presentation`.
35
+ * @public
36
+ * @remarks
37
+ * HTML Attribute: role
38
+ */
32
39
  this.role = MenuItemRole.menuitem;
33
40
  this.checked = false;
34
41
  /**
@@ -221,9 +228,6 @@ __decorateClass([
221
228
  __decorateClass([
222
229
  attr({ mode: "boolean" })
223
230
  ], MenuItem.prototype, "expanded");
224
- __decorateClass([
225
- attr
226
- ], MenuItem.prototype, "role");
227
231
  __decorateClass([
228
232
  observable
229
233
  ], MenuItem.prototype, "_isPresentational");
@@ -232,19 +232,19 @@ class Menu extends anchored.Anchored(delegatesAria.DelegatesAria(vividElement.Vi
232
232
  #setupAnchor(a) {
233
233
  a.addEventListener("click", this.#onAnchorClick, true);
234
234
  a.addEventListener("focusout", this._onFocusout);
235
- a.setAttribute("aria-haspopup", "menu");
235
+ a.ariaHasPopup = "menu";
236
236
  this.#updateAnchor(a);
237
237
  }
238
238
  #updateAnchor(a) {
239
- a.setAttribute("aria-expanded", this.open.toString());
240
- a.setAttribute("data-expanded", this.open.toString());
239
+ a.ariaExpanded = this.open.toString();
240
+ a.dataset.expanded = this.open.toString();
241
241
  }
242
242
  #cleanupAnchor(a) {
243
243
  a.removeEventListener("click", this.#onAnchorClick, true);
244
244
  a.removeEventListener("focusout", this._onFocusout);
245
- a.removeAttribute("aria-haspopup");
246
- a.removeAttribute("aria-expanded");
247
- a.removeAttribute("data-expanded");
245
+ a.ariaHasPopup = null;
246
+ a.ariaExpanded = null;
247
+ delete a.dataset.expanded;
248
248
  }
249
249
  #onAnchorClick;
250
250
  /**
@@ -230,19 +230,19 @@ class Menu extends Anchored(DelegatesAria(VividElement)) {
230
230
  #setupAnchor(a) {
231
231
  a.addEventListener("click", this.#onAnchorClick, true);
232
232
  a.addEventListener("focusout", this._onFocusout);
233
- a.setAttribute("aria-haspopup", "menu");
233
+ a.ariaHasPopup = "menu";
234
234
  this.#updateAnchor(a);
235
235
  }
236
236
  #updateAnchor(a) {
237
- a.setAttribute("aria-expanded", this.open.toString());
238
- a.setAttribute("data-expanded", this.open.toString());
237
+ a.ariaExpanded = this.open.toString();
238
+ a.dataset.expanded = this.open.toString();
239
239
  }
240
240
  #cleanupAnchor(a) {
241
241
  a.removeEventListener("click", this.#onAnchorClick, true);
242
242
  a.removeEventListener("focusout", this._onFocusout);
243
- a.removeAttribute("aria-haspopup");
244
- a.removeAttribute("aria-expanded");
245
- a.removeAttribute("data-expanded");
243
+ a.ariaHasPopup = null;
244
+ a.ariaExpanded = null;
245
+ delete a.dataset.expanded;
246
246
  }
247
247
  #onAnchorClick;
248
248
  /**
@@ -24,7 +24,6 @@ class Radio extends withErrorText.WithErrorText(
24
24
  ) {
25
25
  constructor() {
26
26
  super();
27
- this.ariaLabel = null;
28
27
  /**
29
28
  * The element's value to be included in form submission when checked.
30
29
  * Default to "on" to reach parity with input[type="radio"]
@@ -177,9 +176,6 @@ class Radio extends withErrorText.WithErrorText(
177
176
  }
178
177
  }
179
178
  }
180
- __decorateClass([
181
- vividElement.attr({ attribute: "aria-label" })
182
- ], Radio.prototype, "ariaLabel");
183
179
  __decorateClass([
184
180
  vividElement.attr
185
181
  ], Radio.prototype, "connotation");
@@ -22,7 +22,6 @@ class Radio extends WithErrorText(
22
22
  ) {
23
23
  constructor() {
24
24
  super();
25
- this.ariaLabel = null;
26
25
  /**
27
26
  * The element's value to be included in form submission when checked.
28
27
  * Default to "on" to reach parity with input[type="radio"]
@@ -175,9 +174,6 @@ class Radio extends WithErrorText(
175
174
  }
176
175
  }
177
176
  }
178
- __decorateClass([
179
- attr({ attribute: "aria-label" })
180
- ], Radio.prototype, "ariaLabel");
181
177
  __decorateClass([
182
178
  attr
183
179
  ], Radio.prototype, "connotation");
@@ -23,7 +23,6 @@ class SelectableBox extends delegatesAria.DelegatesAria(vividElement.VividElemen
23
23
  constructor() {
24
24
  super(...arguments);
25
25
  this.checked = false;
26
- this.clickable = false;
27
26
  this.clickableBox = false;
28
27
  this.controlPlacement = "end-stacked";
29
28
  this.tight = false;
@@ -49,13 +48,6 @@ __decorateClass([
49
48
  vividElement.attr({ mode: "boolean" })
50
49
  ], SelectableBox.prototype, "checked");
51
50
  __decorateClass([
52
- vividElement.attr({ mode: "boolean" })
53
- ], SelectableBox.prototype, "clickable");
54
- __decorateClass([
55
- vividElement.replaces({
56
- deprecatedPropertyName: "clickable",
57
- fromDeprecated: (v) => v
58
- }),
59
51
  vividElement.attr({ attribute: "clickable-box", mode: "boolean" })
60
52
  ], SelectableBox.prototype, "clickableBox");
61
53
  __decorateClass([
@@ -1,6 +1,6 @@
1
1
  import { C as Checkbox, c as checkboxDefinition } from './definition15.js';
2
2
  import { R as Radio, r as radioDefinition } from './definition42.js';
3
- import { V as VividElement, a as attr, r as replaces, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { V as VividElement, a as attr, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
4
4
  import { D as DelegatesAria, d as delegateAria } from './delegates-aria.js';
5
5
  import { C as Connotation } from './enums.js';
6
6
  import { c as classNames } from './class-names.js';
@@ -21,7 +21,6 @@ class SelectableBox extends DelegatesAria(VividElement) {
21
21
  constructor() {
22
22
  super(...arguments);
23
23
  this.checked = false;
24
- this.clickable = false;
25
24
  this.clickableBox = false;
26
25
  this.controlPlacement = "end-stacked";
27
26
  this.tight = false;
@@ -47,13 +46,6 @@ __decorateClass([
47
46
  attr({ mode: "boolean" })
48
47
  ], SelectableBox.prototype, "checked");
49
48
  __decorateClass([
50
- attr({ mode: "boolean" })
51
- ], SelectableBox.prototype, "clickable");
52
- __decorateClass([
53
- replaces({
54
- deprecatedPropertyName: "clickable",
55
- fromDeprecated: (v) => v
56
- }),
57
49
  attr({ attribute: "clickable-box", mode: "boolean" })
58
50
  ], SelectableBox.prototype, "clickableBox");
59
51
  __decorateClass([