@vonage/vivid 4.30.1 → 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 (141) hide show
  1. package/custom-elements.json +129 -172
  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/locale.d.ts +3 -0
  59. package/lib/toggletip/toggletip.d.ts +430 -11
  60. package/lib/tooltip/tooltip.d.ts +42 -1
  61. package/lib/tree-item/tree-item.d.ts +84 -2
  62. package/lib/tree-view/tree-view.d.ts +42 -1
  63. package/lib/video-player/video-player.d.ts +42 -1
  64. package/locales/de-DE.cjs +8 -1
  65. package/locales/de-DE.js +8 -1
  66. package/locales/en-GB.cjs +8 -1
  67. package/locales/en-GB.js +8 -1
  68. package/locales/en-US.cjs +8 -1
  69. package/locales/en-US.js +8 -1
  70. package/locales/ja-JP.cjs +8 -1
  71. package/locales/ja-JP.js +8 -1
  72. package/locales/zh-CN.cjs +8 -1
  73. package/locales/zh-CN.js +8 -1
  74. package/package.json +1 -1
  75. package/shared/anchored.js +1 -1
  76. package/shared/aria/aria-mixin.d.ts +43 -2
  77. package/shared/aria/attribute-removal.d.ts +3 -0
  78. package/shared/aria/delegate-aria-behavior.d.ts +0 -3
  79. package/shared/aria/delegates-aria.d.ts +42 -1
  80. package/shared/aria/host-semantics.d.ts +42 -1
  81. package/shared/definition13.cjs +1 -1
  82. package/shared/definition13.js +1 -1
  83. package/shared/definition15.cjs +6 -2
  84. package/shared/definition15.js +6 -2
  85. package/shared/definition17.cjs +61 -78
  86. package/shared/definition17.js +61 -78
  87. package/shared/definition26.cjs +37 -2
  88. package/shared/definition26.js +37 -2
  89. package/shared/definition30.cjs +8 -4
  90. package/shared/definition30.js +8 -4
  91. package/shared/definition31.cjs +7 -7
  92. package/shared/definition31.js +7 -7
  93. package/shared/definition42.cjs +0 -4
  94. package/shared/definition42.js +0 -4
  95. package/shared/definition47.cjs +0 -8
  96. package/shared/definition47.js +1 -9
  97. package/shared/definition5.cjs +1 -1
  98. package/shared/definition5.js +1 -1
  99. package/shared/definition54.cjs +1 -1
  100. package/shared/definition54.js +1 -1
  101. package/shared/definition60.cjs +7 -6
  102. package/shared/definition60.js +7 -6
  103. package/shared/definition62.cjs +1 -1
  104. package/shared/definition62.js +1 -1
  105. package/shared/definition63.cjs +1 -2
  106. package/shared/definition63.js +1 -2
  107. package/shared/delegates-aria.cjs +4 -25
  108. package/shared/delegates-aria.js +4 -25
  109. package/shared/divider.cjs +8 -3
  110. package/shared/divider.js +8 -3
  111. package/shared/feedback/feedback-message.d.ts +42 -1
  112. package/shared/feedback/mixins.d.ts +84 -2
  113. package/shared/foundation/button/button.d.ts +84 -2
  114. package/shared/foundation/form-associated/form-associated.d.ts +84 -2
  115. package/shared/foundation/vivid-element/vivid-element.d.ts +43 -2
  116. package/shared/listbox.cjs +1 -1
  117. package/shared/listbox.js +1 -1
  118. package/shared/localization/Locale.d.ts +2 -0
  119. package/shared/option.cjs +15 -2
  120. package/shared/option.js +16 -3
  121. package/shared/patterns/affix.d.ts +84 -2
  122. package/shared/patterns/anchored.d.ts +84 -2
  123. package/shared/patterns/char-count/char-count.d.ts +42 -1
  124. package/shared/patterns/form-elements/form-element.d.ts +84 -2
  125. package/shared/patterns/form-elements/with-error-text.d.ts +126 -3
  126. package/shared/patterns/form-elements/with-success-text.d.ts +42 -1
  127. package/shared/patterns/linkable.d.ts +42 -1
  128. package/shared/patterns/localized.d.ts +42 -1
  129. package/shared/patterns/trapped-focus.d.ts +42 -1
  130. package/shared/picker-field/mixins/calendar-picker.d.ts +84 -2
  131. package/shared/picker-field/mixins/calendar-picker.template.d.ts +84 -2
  132. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +42 -1
  133. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +168 -4
  134. package/shared/picker-field/mixins/single-date-picker.d.ts +252 -6
  135. package/shared/picker-field/mixins/single-value-picker.d.ts +84 -2
  136. package/shared/picker-field/mixins/time-selection-picker.d.ts +168 -4
  137. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +168 -4
  138. package/shared/picker-field/picker-field.d.ts +252 -6
  139. package/shared/vivid-element.cjs +56 -5
  140. package/shared/vivid-element.js +56 -5
  141. package/vivid.api.json +2 -93
@@ -5,6 +5,7 @@ const vividElement = require('./vivid-element.cjs');
5
5
  const definition = require('./definition66.cjs');
6
6
  const keyCodes = require('./key-codes.cjs');
7
7
  const repeat = require('./repeat.cjs');
8
+ const hostSemantics = require('./host-semantics.cjs');
8
9
  const children = require('./children.cjs');
9
10
  const slotted = require('./slotted.cjs');
10
11
  const localized = require('./localized.cjs');
@@ -72,7 +73,7 @@ const defaultHeaderCellContentsTemplate = vividElement.html`
72
73
  ${(x) => x.columnDefinition.title === void 0 ? x.columnDefinition.columnDataKey : x.columnDefinition.title}
73
74
  </template>
74
75
  `;
75
- class DataGridCell extends localized.Localized(vividElement.VividElement) {
76
+ class DataGridCell extends localized.Localized(hostSemantics.HostSemantics(vividElement.VividElement)) {
76
77
  constructor() {
77
78
  super(...arguments);
78
79
  // eslint-disable-next-line @repo/repo/no-attribute-default-value
@@ -90,7 +91,21 @@ class DataGridCell extends localized.Localized(vividElement.VividElement) {
90
91
  };
91
92
  this._selectable = false;
92
93
  this.selected = false;
94
+ /**
95
+ * Indicates the selected status.
96
+ *
97
+ * @deprecated For setting selected state, please use `selected` property instead.
98
+ * @public
99
+ * HTML Attribute: aria-selected
100
+ */
93
101
  this.ariaSelected = null;
102
+ /**
103
+ * Indicates the sort status.
104
+ *
105
+ * @deprecated To set the sorting visual style please use `sortDirection` property.
106
+ * @public
107
+ * HTML Attribute: aria-sort
108
+ */
94
109
  this.ariaSort = null;
95
110
  }
96
111
  /**
@@ -280,54 +295,25 @@ class DataGridCell extends localized.Localized(vividElement.VividElement) {
280
295
  this.customCellView = null;
281
296
  }
282
297
  }
283
- /**
284
- *
285
- * @private
286
- */
287
- calculateAriaSelectedValue() {
288
- if (this._selectable && this.selected) return "true";
289
- if (this._selectable && !this.selected) return "false";
290
- return null;
291
- }
292
- /**
293
- * @internal
294
- */
295
- _selectableChanged() {
296
- this.ariaSelected = this.calculateAriaSelectedValue();
297
- }
298
- /**
299
- * @internal
300
- */
301
- selectedChanged() {
302
- this.ariaSelected = this.calculateAriaSelectedValue();
303
- }
304
298
  /**
305
299
  * @internal
306
300
  */
307
- ariaSelectedChanged(_, newValue) {
301
+ ariaSelectedChanged(prevValue, newValue) {
302
+ super.ariaSelectedChanged(prevValue, newValue);
308
303
  this._selectable = newValue !== null;
309
304
  this.selected = newValue === "true";
310
305
  }
311
306
  /**
312
307
  * @internal
313
308
  */
314
- ariaSortChanged(_oldValue, newValue) {
309
+ ariaSortChanged(oldValue, newValue) {
310
+ super.ariaSortChanged(oldValue, newValue);
315
311
  if (newValue === null) {
316
312
  this.sortDirection = void 0;
317
313
  return;
318
314
  }
319
315
  this.sortDirection = newValue;
320
316
  }
321
- /**
322
- * @internal
323
- */
324
- sortDirectionChanged(_oldValue, newValue) {
325
- if (newValue === void 0) {
326
- this.ariaSort = null;
327
- return;
328
- }
329
- this.ariaSort = newValue;
330
- }
331
317
  #getColumnDataKey() {
332
318
  return this.columnDefinition && this.columnDefinition.columnDataKey ? this.columnDefinition.columnDataKey : this.textContent.trim();
333
319
  }
@@ -373,12 +359,6 @@ __decorateClass$2([
373
359
  __decorateClass$2([
374
360
  vividElement.attr({ mode: "boolean" })
375
361
  ], DataGridCell.prototype, "selected");
376
- __decorateClass$2([
377
- vividElement.attr({ attribute: "aria-selected", mode: "fromView" })
378
- ], DataGridCell.prototype, "ariaSelected");
379
- __decorateClass$2([
380
- vividElement.attr({ attribute: "aria-sort" })
381
- ], DataGridCell.prototype, "ariaSort");
382
362
  __decorateClass$2([
383
363
  vividElement.attr({ attribute: "sort-direction" })
384
364
  ], DataGridCell.prototype, "sortDirection");
@@ -392,7 +372,7 @@ var __decorateClass$1 = (decorators, target, key, kind) => {
392
372
  if (result) __defProp$1(target, key, result);
393
373
  return result;
394
374
  };
395
- class DataGridRow extends vividElement.VividElement {
375
+ class DataGridRow extends hostSemantics.HostSemantics(vividElement.VividElement) {
396
376
  constructor() {
397
377
  super(...arguments);
398
378
  // eslint-disable-next-line @repo/repo/no-attribute-default-value
@@ -408,6 +388,13 @@ class DataGridRow extends vividElement.VividElement {
408
388
  this.updateRowStyle = () => {
409
389
  this.style.gridTemplateColumns = this.gridTemplateColumns;
410
390
  };
391
+ /**
392
+ * Indicates the selected status.
393
+ *
394
+ * @deprecated
395
+ * @public
396
+ * HTML Attribute: aria-selected
397
+ */
411
398
  this.ariaSelected = null;
412
399
  this._selectable = false;
413
400
  this.selected = false;
@@ -521,30 +508,11 @@ class DataGridRow extends vividElement.VividElement {
521
508
  /**
522
509
  * @internal
523
510
  */
524
- ariaSelectedChanged(_oldValue, newValue) {
511
+ ariaSelectedChanged(oldValue, newValue) {
512
+ super.ariaSelectedChanged(oldValue, newValue);
525
513
  this._selectable = newValue !== null;
526
514
  this.selected = newValue === "true";
527
515
  }
528
- /**
529
- * @internal
530
- */
531
- _calculateAriaSelectedValue() {
532
- if (this._selectable && this.selected) return "true";
533
- if (this._selectable && !this.selected) return "false";
534
- return null;
535
- }
536
- /**
537
- * @internal
538
- */
539
- _selectableChanged() {
540
- this.ariaSelected = this._calculateAriaSelectedValue();
541
- }
542
- /**
543
- * @internal
544
- */
545
- selectedChanged() {
546
- this.ariaSelected = this._calculateAriaSelectedValue();
547
- }
548
516
  }
549
517
  // @ts-expect-error Type is incorrectly non-optional
550
518
  __decorateClass$1([
@@ -580,9 +548,6 @@ __decorateClass$1([
580
548
  __decorateClass$1([
581
549
  vividElement.observable
582
550
  ], DataGridRow.prototype, "cellElements");
583
- __decorateClass$1([
584
- vividElement.attr({ attribute: "aria-selected" })
585
- ], DataGridRow.prototype, "ariaSelected");
586
551
  __decorateClass$1([
587
552
  vividElement.observable
588
553
  ], DataGridRow.prototype, "_selectable");
@@ -640,7 +605,7 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
640
605
  );
641
606
  const focusRow = this.rowElements[focusRowIndex];
642
607
  const cells = focusRow.querySelectorAll(
643
- '[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"], [cell-type]'
608
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [role="rowheader"], [data-vvd-component="data-grid-cell"]'
644
609
  );
645
610
  const focusColumnIndex = Math.max(
646
611
  0,
@@ -656,7 +621,7 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
656
621
  if (mutations && mutations.length) {
657
622
  mutations.forEach((mutation) => {
658
623
  mutation.addedNodes.forEach((newNode) => {
659
- if (newNode.nodeType === 1 && newNode.getAttribute("role") === "row") {
624
+ if (newNode.nodeType === 1 && (newNode.getAttribute("role") === "row" || newNode.getAttribute("row-type") === "default")) {
660
625
  newNode.columnDefinitions = this.columnDefinitions;
661
626
  }
662
627
  });
@@ -698,7 +663,8 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
698
663
  }
699
664
  };
700
665
  this.#handleClick = ({ target, ctrlKey, shiftKey, metaKey }) => {
701
- if (target.getAttribute("role") !== "gridcell") return;
666
+ if (target.getAttribute("role") !== "gridcell" || target.getAttribute("cell-type") !== "default")
667
+ return;
702
668
  if (this.selectionMode === DataGridSelectionMode.singleCell || this.selectionMode === DataGridSelectionMode.multiCell) {
703
669
  this.#handleCellSelection({ target, ctrlKey, shiftKey, metaKey });
704
670
  return;
@@ -751,10 +717,10 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
751
717
  */
752
718
  this._resetSelection = (clear = false) => {
753
719
  const cells = Array.from(
754
- this.querySelectorAll('[role="gridcell"], [cell-type]')
720
+ this.querySelectorAll('[role="gridcell"], [cell-type="default"]')
755
721
  );
756
722
  const rows = Array.from(
757
- this.querySelectorAll('[role="row"], [row-type]')
723
+ this.querySelectorAll('[role="row"], [row-type="default"]')
758
724
  );
759
725
  if (this.selectionMode === DataGridSelectionMode.singleCell || this.selectionMode === DataGridSelectionMode.multiCell) {
760
726
  for (const cell of cells) {
@@ -1158,7 +1124,7 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
1158
1124
  applyFixedColumnStyling() {
1159
1125
  this.rowElements.forEach((row) => {
1160
1126
  const cells = row.querySelectorAll(
1161
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1127
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1162
1128
  );
1163
1129
  this.fixedColumnsPositions.forEach((position, index) => {
1164
1130
  if (index < cells.length) {
@@ -1178,7 +1144,7 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
1178
1144
  this.fixedColumnsPositions = [];
1179
1145
  if (this.rowElements.length === 0) return;
1180
1146
  const cells = this.rowElements[0].querySelectorAll(
1181
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1147
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1182
1148
  );
1183
1149
  let accumulator = 0;
1184
1150
  for (let i = 0; i < Math.min(this.fixedColumns, cells.length); i++) {
@@ -1197,7 +1163,7 @@ const _DataGrid = class _DataGrid extends vividElement.VividElement {
1197
1163
  }
1198
1164
  this.rowElements.forEach((row) => {
1199
1165
  const cells = row.querySelectorAll(
1200
- '[role="cell"], [role="gridcell"], [role="columnheader"]'
1166
+ '[role="cell"], [role="gridcell"], [role="columnheader"], [cell-type="default"], [cell-type="columnheader"]'
1201
1167
  );
1202
1168
  this.fixedColumnsPositions.forEach((_, index) => {
1203
1169
  if (index < cells.length) {
@@ -1305,7 +1271,7 @@ const DataGridTemplate = (context) => {
1305
1271
  :defaultRowItemTemplate="${rowItemTemplate}"
1306
1272
  ${children.children({
1307
1273
  property: "rowElements",
1308
- filter: slotted.elements("[role=row]")
1274
+ filter: slotted.elements("[role=row],[data-vvd-component=data-grid-row]")
1309
1275
  })}
1310
1276
  >
1311
1277
  <div class="base">
@@ -1316,6 +1282,11 @@ const DataGridTemplate = (context) => {
1316
1282
  `;
1317
1283
  };
1318
1284
 
1285
+ function calculateAriaSelectedValue$1(x) {
1286
+ if (x._selectable && x.selected) return "true";
1287
+ if (x._selectable && !x.selected) return "false";
1288
+ return null;
1289
+ }
1319
1290
  function createCellItemTemplate(context) {
1320
1291
  const cellTag = context.tagFor(DataGridCell);
1321
1292
  return vividElement.html`
@@ -1344,14 +1315,17 @@ const DataGridRowTemplate = (context) => {
1344
1315
  const getBaseClasses = (x) => classNames.classNames("base", ["selected", !!x.selected]);
1345
1316
  return vividElement.html`
1346
1317
  <template
1347
- role="row"
1318
+ ${hostSemantics.applyHostSemantics({
1319
+ role: "row",
1320
+ ariaSelected: calculateAriaSelectedValue$1
1321
+ })}
1348
1322
  class="${(x) => x.rowType !== "default" ? x.rowType : ""}"
1349
1323
  :defaultCellItemTemplate="${cellItemTemplate}"
1350
1324
  :defaultHeaderCellItemTemplate="${headerCellItemTemplate}"
1351
1325
  ${children.children({
1352
1326
  property: "cellElements",
1353
1327
  filter: slotted.elements(
1354
- '[role="cell"],[role="gridcell"],[role="columnheader"],[role="rowheader"],[cell-type]'
1328
+ '[role="cell"],[role="gridcell"],[role="columnheader"],[role="rowheader"],[data-vvd-component="data-grid-cell"]'
1355
1329
  )
1356
1330
  })}
1357
1331
  >
@@ -1377,6 +1351,11 @@ function getSortIcon(x) {
1377
1351
  }
1378
1352
  return "sort-solid";
1379
1353
  }
1354
+ function calculateAriaSelectedValue(x) {
1355
+ if (x._selectable && x.selected) return "true";
1356
+ if (x._selectable && !x.selected) return "false";
1357
+ return null;
1358
+ }
1380
1359
  function renderSortIcons(c) {
1381
1360
  const iconTag = c.tagFor(definition$1.Icon);
1382
1361
  return vividElement.html`
@@ -1400,7 +1379,11 @@ const DataGridCellTemplate = (context) => {
1400
1379
  return vividElement.html`
1401
1380
  <template
1402
1381
  tabindex="-1"
1403
- role="${(x) => DataGridCellRole[x.cellType] ?? DataGridCellRole.default}"
1382
+ ${hostSemantics.applyHostSemantics({
1383
+ role: (x) => DataGridCellRole[x.cellType] ?? DataGridCellRole.default,
1384
+ ariaSelected: calculateAriaSelectedValue,
1385
+ ariaSort: (x) => x.sortDirection ?? null
1386
+ })}
1404
1387
  @click="${(x) => x._handleInteraction()}"
1405
1388
  @keydown="${(x, c) => handleKeyDown(x, c.event)}"
1406
1389
  >
@@ -1408,7 +1391,7 @@ const DataGridCellTemplate = (context) => {
1408
1391
  class="${getBaseClasses}"
1409
1392
  role="${(x) => shouldShowSortIcons(x) ? "button" : void 0}"
1410
1393
  >
1411
- ${(x) => x.ariaSelected === "true" ? vividElement.html`<${visuallyHiddenTagName}>${(x2) => x2.locale.dataGrid.cell.selected}</${visuallyHiddenTagName}>` : null}
1394
+ ${(x) => x.selected ? vividElement.html`<${visuallyHiddenTagName}>${(x2) => x2.locale.dataGrid.cell.selected}</${visuallyHiddenTagName}>` : null}
1412
1395
  <slot></slot>
1413
1396
  ${when.when(
1414
1397
  shouldShowSortIcons,
@@ -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,