@tylertech/forge 3.11.0 → 3.12.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 (178) hide show
  1. package/custom-elements.json +311 -145
  2. package/dist/app-bar/forge-app-bar.css +2 -0
  3. package/dist/button/forge-button.css +2 -0
  4. package/dist/checkbox/forge-checkbox.css +2 -0
  5. package/dist/chips/forge-chips.css +2 -0
  6. package/dist/floating-action-button/forge-floating-action-button.css +2 -0
  7. package/dist/icon-button/forge-icon-button.css +2 -0
  8. package/dist/lib.js +17 -17
  9. package/dist/lib.js.map +3 -3
  10. package/dist/list/forge-list.css +2 -0
  11. package/dist/radio/forge-radio.css +2 -0
  12. package/dist/skip-link/forge-skip-link.css +2 -0
  13. package/dist/state-layer/forge-state-layer.css +2 -0
  14. package/dist/switch/forge-switch.css +2 -0
  15. package/dist/vscode.html-custom-data.json +74 -59
  16. package/esm/accordion/accordion.d.ts +1 -1
  17. package/esm/accordion/accordion.js +1 -1
  18. package/esm/app-bar/app-bar/app-bar.d.ts +1 -1
  19. package/esm/app-bar/app-bar/app-bar.js +1 -1
  20. package/esm/autocomplete/autocomplete-core.js +16 -3
  21. package/esm/autocomplete/autocomplete.d.ts +1 -1
  22. package/esm/autocomplete/autocomplete.js +1 -1
  23. package/esm/avatar/avatar.d.ts +1 -1
  24. package/esm/avatar/avatar.js +1 -1
  25. package/esm/backdrop/backdrop.d.ts +1 -1
  26. package/esm/backdrop/backdrop.js +1 -1
  27. package/esm/badge/badge.d.ts +1 -1
  28. package/esm/badge/badge.js +1 -1
  29. package/esm/banner/banner.d.ts +1 -1
  30. package/esm/banner/banner.js +1 -1
  31. package/esm/button/button.d.ts +1 -6
  32. package/esm/button/button.js +1 -6
  33. package/esm/button-area/button-area.d.ts +1 -4
  34. package/esm/button-area/button-area.js +1 -4
  35. package/esm/button-toggle/button-toggle/button-toggle.d.ts +1 -1
  36. package/esm/button-toggle/button-toggle/button-toggle.js +1 -1
  37. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +1 -1
  38. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +1 -1
  39. package/esm/chip-field/chip-field.d.ts +1 -1
  40. package/esm/chip-field/chip-field.js +1 -1
  41. package/esm/chips/chip/chip-adapter.d.ts +3 -0
  42. package/esm/chips/chip/chip-adapter.js +12 -2
  43. package/esm/chips/chip/chip-constants.d.ts +2 -0
  44. package/esm/chips/chip/chip-constants.js +2 -1
  45. package/esm/chips/chip/chip-core.d.ts +4 -0
  46. package/esm/chips/chip/chip-core.js +9 -0
  47. package/esm/chips/chip/chip.d.ts +4 -0
  48. package/esm/chips/chip/chip.js +8 -0
  49. package/esm/chips/chip-set/chip-set.d.ts +1 -1
  50. package/esm/chips/chip-set/chip-set.js +1 -1
  51. package/esm/circular-progress/circular-progress.d.ts +1 -2
  52. package/esm/circular-progress/circular-progress.js +1 -2
  53. package/esm/color-picker/color-picker.d.ts +1 -1
  54. package/esm/color-picker/color-picker.js +1 -1
  55. package/esm/date-picker/date-picker.d.ts +1 -1
  56. package/esm/date-picker/date-picker.js +1 -1
  57. package/esm/dialog/dialog.d.ts +1 -1
  58. package/esm/dialog/dialog.js +1 -1
  59. package/esm/divider/divider.d.ts +1 -1
  60. package/esm/divider/divider.js +1 -1
  61. package/esm/drawer/base/base-drawer-adapter.d.ts +2 -0
  62. package/esm/drawer/base/base-drawer-adapter.js +3 -0
  63. package/esm/drawer/base/base-drawer-core.js +3 -0
  64. package/esm/drawer/drawer/drawer.d.ts +1 -1
  65. package/esm/drawer/drawer/drawer.js +1 -1
  66. package/esm/drawer/modal-drawer/modal-drawer.d.ts +1 -1
  67. package/esm/drawer/modal-drawer/modal-drawer.js +1 -1
  68. package/esm/expansion-panel/expansion-panel.d.ts +1 -1
  69. package/esm/expansion-panel/expansion-panel.js +1 -1
  70. package/esm/field/field.d.ts +1 -2
  71. package/esm/field/field.js +1 -2
  72. package/esm/file-picker/file-picker.d.ts +2 -3
  73. package/esm/file-picker/file-picker.js +2 -3
  74. package/esm/floating-action-button/floating-action-button.d.ts +1 -1
  75. package/esm/floating-action-button/floating-action-button.js +1 -1
  76. package/esm/focus-indicator/focus-indicator.d.ts +1 -1
  77. package/esm/focus-indicator/focus-indicator.js +22 -21
  78. package/esm/icon/icon.d.ts +1 -1
  79. package/esm/icon/icon.js +1 -1
  80. package/esm/icon-button/icon-button.d.ts +1 -1
  81. package/esm/icon-button/icon-button.js +1 -1
  82. package/esm/inline-message/inline-message.d.ts +1 -1
  83. package/esm/inline-message/inline-message.js +1 -1
  84. package/esm/label/label.d.ts +1 -1
  85. package/esm/label/label.js +1 -1
  86. package/esm/label-value/label-value.d.ts +1 -1
  87. package/esm/label-value/label-value.js +1 -1
  88. package/esm/linear-progress/linear-progress.d.ts +1 -2
  89. package/esm/linear-progress/linear-progress.js +1 -2
  90. package/esm/list/list/list.d.ts +1 -1
  91. package/esm/list/list/list.js +1 -1
  92. package/esm/list/list-item/list-item-constants.js +1 -1
  93. package/esm/list-dropdown/list-dropdown-constants.d.ts +5 -1
  94. package/esm/list-dropdown/list-dropdown-utils.d.ts +3 -1
  95. package/esm/list-dropdown/list-dropdown-utils.js +41 -20
  96. package/esm/menu/menu-adapter.d.ts +2 -0
  97. package/esm/menu/menu-adapter.js +12 -8
  98. package/esm/menu/menu-constants.d.ts +1 -0
  99. package/esm/menu/menu-constants.js +3 -2
  100. package/esm/menu/menu-core.d.ts +5 -0
  101. package/esm/menu/menu-core.js +41 -2
  102. package/esm/menu/menu.d.ts +16 -1
  103. package/esm/menu/menu.js +14 -2
  104. package/esm/open-icon/open-icon.d.ts +2 -1
  105. package/esm/open-icon/open-icon.js +2 -1
  106. package/esm/overlay/overlay.d.ts +1 -2
  107. package/esm/overlay/overlay.js +1 -2
  108. package/esm/page-state/page-state.d.ts +1 -1
  109. package/esm/page-state/page-state.js +1 -1
  110. package/esm/paginator/paginator-core.d.ts +16 -0
  111. package/esm/paginator/paginator-core.js +29 -9
  112. package/esm/paginator/paginator.d.ts +37 -1
  113. package/esm/paginator/paginator.js +45 -1
  114. package/esm/popover/popover-adapter.js +1 -1
  115. package/esm/popover/popover-constants.d.ts +4 -0
  116. package/esm/popover/popover-constants.js +4 -2
  117. package/esm/popover/popover-core.d.ts +5 -1
  118. package/esm/popover/popover-core.js +13 -0
  119. package/esm/popover/popover.d.ts +6 -2
  120. package/esm/popover/popover.js +9 -1
  121. package/esm/profile-card/profile-card.d.ts +2 -1
  122. package/esm/profile-card/profile-card.js +2 -1
  123. package/esm/radio/radio/radio.d.ts +1 -2
  124. package/esm/radio/radio/radio.js +1 -2
  125. package/esm/scaffold/scaffold.d.ts +1 -1
  126. package/esm/scaffold/scaffold.js +1 -1
  127. package/esm/select/option/option.d.ts +1 -1
  128. package/esm/select/option/option.js +1 -1
  129. package/esm/select/select/select.d.ts +1 -1
  130. package/esm/select/select/select.js +2 -2
  131. package/esm/skeleton/skeleton.d.ts +1 -1
  132. package/esm/skeleton/skeleton.js +1 -1
  133. package/esm/skip-link/skip-link.d.ts +1 -1
  134. package/esm/skip-link/skip-link.js +1 -1
  135. package/esm/slider/slider.d.ts +1 -1
  136. package/esm/slider/slider.js +1 -1
  137. package/esm/split-button/split-button.d.ts +1 -1
  138. package/esm/split-button/split-button.js +1 -1
  139. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  140. package/esm/stack/stack.d.ts +1 -8
  141. package/esm/stack/stack.js +1 -8
  142. package/esm/state-layer/state-layer.d.ts +1 -1
  143. package/esm/state-layer/state-layer.js +2 -2
  144. package/esm/table/table-adapter.d.ts +4 -4
  145. package/esm/table/table-adapter.js +4 -4
  146. package/esm/table/table-core.js +2 -2
  147. package/esm/table/table-utils.d.ts +2 -2
  148. package/esm/table/table-utils.js +22 -18
  149. package/esm/table/table.d.ts +2 -2
  150. package/esm/table/table.js +1 -1
  151. package/esm/tabs/tab/tab.d.ts +1 -1
  152. package/esm/tabs/tab/tab.js +1 -1
  153. package/esm/tabs/tab-bar/tab-bar.d.ts +1 -1
  154. package/esm/tabs/tab-bar/tab-bar.js +1 -1
  155. package/esm/text-field/text-field-adapter.d.ts +6 -4
  156. package/esm/text-field/text-field-adapter.js +11 -4
  157. package/esm/text-field/text-field-core.d.ts +4 -0
  158. package/esm/text-field/text-field-core.js +13 -2
  159. package/esm/text-field/text-field.d.ts +1 -1
  160. package/esm/text-field/text-field.js +1 -1
  161. package/esm/time-picker/time-picker-adapter.js +1 -0
  162. package/esm/time-picker/time-picker-core.js +3 -3
  163. package/esm/toast/toast-adapter.d.ts +20 -0
  164. package/esm/toast/toast-adapter.js +30 -0
  165. package/esm/toast/toast-core.d.ts +17 -0
  166. package/esm/toast/toast-core.js +66 -0
  167. package/esm/toast/toast.d.ts +9 -2
  168. package/esm/toast/toast.js +10 -1
  169. package/esm/toolbar/toolbar.d.ts +1 -3
  170. package/esm/toolbar/toolbar.js +1 -3
  171. package/esm/tooltip/tooltip.d.ts +1 -1
  172. package/esm/tooltip/tooltip.js +1 -1
  173. package/esm/view-switcher/view/view.d.ts +1 -1
  174. package/esm/view-switcher/view/view.js +1 -1
  175. package/esm/view-switcher/view-switcher.d.ts +1 -1
  176. package/esm/view-switcher/view-switcher.js +1 -1
  177. package/package.json +1 -1
  178. package/sass/state-layer/_core.scss +2 -0
@@ -57,8 +57,8 @@ export class TableAdapter extends BaseAdapter {
57
57
  setSortDirection(tableElement, columnIndex, sortDirection) {
58
58
  TableUtils.setSortDirection(tableElement, columnIndex, sortDirection);
59
59
  }
60
- setSelectColumnVisibility(tableElement, isVisible, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
61
- TableUtils.setSelectColumnVisibility(tableElement, isVisible, selectListener, selectAllListener || null, selectAllTemplate || null, selectCheckboxAlignment || null, data || [], tooltipSelect || null, tooltipSelectAll || null);
60
+ setSelectColumnVisibility(tableElement, dense, isVisible, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
61
+ TableUtils.setSelectColumnVisibility(tableElement, dense, isVisible, selectListener, selectAllListener || null, selectAllTemplate || null, selectCheckboxAlignment || null, data || [], tooltipSelect || null, tooltipSelectAll || null);
62
62
  }
63
63
  setDense(tableElement, isDense) {
64
64
  TableUtils.setDenseState(tableElement, isDense);
@@ -69,8 +69,8 @@ export class TableAdapter extends BaseAdapter {
69
69
  setResizable(configuration) {
70
70
  TableUtils.setResizable(configuration);
71
71
  }
72
- setSelectAllVisibility(tableElement, isVisible, listener, selectAllTemplate, selectCheckboxAlignment, tooltipSelectAll = null) {
73
- TableUtils.setSelectAllVisibility(tableElement, isVisible, listener, selectAllTemplate, selectCheckboxAlignment || null, tooltipSelectAll || null);
72
+ setSelectAllVisibility(tableElement, dense, isVisible, listener, selectAllTemplate, selectCheckboxAlignment, tooltipSelectAll = null) {
73
+ TableUtils.setSelectAllVisibility(tableElement, dense, isVisible, listener, selectAllTemplate, selectCheckboxAlignment || null, tooltipSelectAll || null);
74
74
  }
75
75
  setFilterRow(configuration) {
76
76
  TableUtils.setFilterRow(configuration);
@@ -141,7 +141,7 @@ export class TableCore {
141
141
  if (this._select !== value) {
142
142
  this._select = value;
143
143
  // Now we can add/remove the column
144
- this._adapter.setSelectColumnVisibility(this._adapter.getTableElement(), this._select, this._selectRowListener, this._multiselect ? this._selectAllListener : undefined, this._multiselect ? this._selectAllTemplate : null, this._selectCheckboxAlignment, this._tableRows, this._tooltipSelect, this._tooltipSelectAll);
144
+ this._adapter.setSelectColumnVisibility(this._adapter.getTableElement(), this._dense, this._select, this._selectRowListener, this._multiselect ? this._selectAllListener : undefined, this._multiselect ? this._selectAllTemplate : null, this._selectCheckboxAlignment, this._tableRows, this._tooltipSelect, this._tooltipSelectAll);
145
145
  this._updateSelections(true);
146
146
  // Update the attribute on the host element
147
147
  if (this._select) {
@@ -160,7 +160,7 @@ export class TableCore {
160
160
  if (this._multiselect !== value) {
161
161
  this._multiselect = value;
162
162
  if (this._select) {
163
- this._adapter.setSelectAllVisibility(this._adapter.getTableElement(), this._multiselect, this._multiselect ? this._selectAllListener : null, this._multiselect ? this.selectAllTemplate : null, this._selectCheckboxAlignment, this._tooltipSelectAll);
163
+ this._adapter.setSelectAllVisibility(this._adapter.getTableElement(), this._dense, this._multiselect, this._multiselect ? this._selectAllListener : null, this._multiselect ? this.selectAllTemplate : null, this._selectCheckboxAlignment, this._tooltipSelectAll);
164
164
  this._updateSelections(true);
165
165
  }
166
166
  this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.MULTISELECT, this._multiselect.toString());
@@ -282,7 +282,7 @@ export declare class TableUtils {
282
282
  /**
283
283
  * Adds/removes the select column on the table.
284
284
  */
285
- static setSelectColumnVisibility(tableElement: HTMLTableElement, isVisible: boolean, selectListener: ((evt: Event) => void) | null, selectAllListener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment: CellAlign | null, data: TableRow[], tooltipSelect: string | TableSelectTooltipCallback | null, tooltipSelectAll: string | null): void;
285
+ static setSelectColumnVisibility(tableElement: HTMLTableElement, dense: boolean, isVisible: boolean, selectListener: ((evt: Event) => void) | null, selectAllListener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment: CellAlign | null, data: TableRow[], tooltipSelect: string | TableSelectTooltipCallback | null, tooltipSelectAll: string | null): void;
286
286
  /**
287
287
  * Adds the select column to the thead/tbody elements and attaches the provided click listeners.
288
288
  * @param theadElement The table head element.
@@ -311,7 +311,7 @@ export declare class TableUtils {
311
311
  * @param {HTMLTableElement} tableElement The table element.
312
312
  * @param {boolean} isVisible Whether the select all option is visible or not.
313
313
  */
314
- static setSelectAllVisibility(tableElement: HTMLTableElement, isVisible: boolean, listener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment: CellAlign | null, tooltipSelectAll: string | null): void;
314
+ static setSelectAllVisibility(tableElement: HTMLTableElement, dense: boolean, isVisible: boolean, listener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment: CellAlign | null, tooltipSelectAll: string | null): void;
315
315
  /**
316
316
  * Controls the visibility of the table filter row.
317
317
  * @param {ITableConfiguration} configuration The table configuration.
@@ -51,7 +51,7 @@ export class TableUtils {
51
51
  }
52
52
  // Add the select column
53
53
  if (configuration.selectListener) {
54
- TableUtils._addSelectColumn(thead, tbody, configuration.selectListener, configuration.selectAllListener, configuration.selectAllTemplate, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
54
+ TableUtils._addSelectColumn(thead, tbody, configuration.dense, configuration.selectListener, configuration.selectAllListener, configuration.selectAllTemplate, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
55
55
  }
56
56
  if (configuration.resizable || configuration.columnConfigurations.some(c => !!c.sortable)) {
57
57
  TableUtils._attachHeadRowMouseDownListener(thead, configuration.headRowMouseDownListener);
@@ -97,7 +97,7 @@ export class TableUtils {
97
97
  }
98
98
  // Add the select column if necessary
99
99
  if (configuration.selectListener) {
100
- TableUtils._createBodySelectColumn(tbody, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
100
+ TableUtils._createBodySelectColumn(tbody, configuration.dense, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);
101
101
  TableUtils._attachRowSelectListeners(tbody, configuration.selectListener);
102
102
  }
103
103
  TableUtils._setTableBody(configuration.tableElement, tbody);
@@ -594,12 +594,12 @@ export class TableUtils {
594
594
  * @param theadElement
595
595
  * @param tbodyElement
596
596
  */
597
- static _createSelectColumn(theadElement, tbodyElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
597
+ static _createSelectColumn(theadElement, tbodyElement, dense, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
598
598
  if (theadElement) {
599
- TableUtils._createHeadSelectColumn(theadElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll);
599
+ TableUtils._createHeadSelectColumn(theadElement, dense, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll);
600
600
  }
601
601
  if (tbodyElement) {
602
- TableUtils._createBodySelectColumn(tbodyElement, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
602
+ TableUtils._createBodySelectColumn(tbodyElement, dense, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
603
603
  }
604
604
  }
605
605
  /**
@@ -607,7 +607,7 @@ export class TableUtils {
607
607
  * @param {HTMLTableSectionElement} theadElement The table head element.
608
608
  * @param {boolean} showSelectAll Whether to show the select all checkbox or not.
609
609
  */
610
- static _createHeadSelectColumn(theadElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll) {
610
+ static _createHeadSelectColumn(theadElement, dense, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll) {
611
611
  Array.from(theadElement.rows).forEach(row => {
612
612
  const th = document.createElement('th');
613
613
  addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);
@@ -624,7 +624,7 @@ export class TableUtils {
624
624
  });
625
625
  }
626
626
  else {
627
- lastRowFirstCell?.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment, null, null, null, tooltipSelectAll));
627
+ lastRowFirstCell?.appendChild(TableUtils._createCheckboxElement(true, dense, selectCheckboxAlignment, null, null, null, tooltipSelectAll));
628
628
  }
629
629
  }
630
630
  }
@@ -632,9 +632,9 @@ export class TableUtils {
632
632
  * Creates the select column in the table body.
633
633
  * @param {HTMLTableSectionElement} tbodyElement The table body element.
634
634
  */
635
- static _createBodySelectColumn(tbodyElement, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
635
+ static _createBodySelectColumn(tbodyElement, dense, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
636
636
  const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);
637
- nonExpandedRows.forEach((row, rowIndex) => TableUtils._addRowSelectColumn(row, selectCheckboxAlignment, rowIndex, data[rowIndex], tooltipSelect, tooltipSelectAll));
637
+ nonExpandedRows.forEach((row, rowIndex) => TableUtils._addRowSelectColumn(row, dense, selectCheckboxAlignment, rowIndex, data[rowIndex], tooltipSelect, tooltipSelectAll));
638
638
  // Update the colspan on the expanded rows
639
639
  if (tbodyElement.rows.length) {
640
640
  const firstRow = tbodyElement.rows.item(0);
@@ -643,10 +643,10 @@ export class TableUtils {
643
643
  }
644
644
  }
645
645
  }
646
- static _addRowSelectColumn(row, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
646
+ static _addRowSelectColumn(row, dense, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
647
647
  const td = row.insertCell(0);
648
648
  addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_BODY_CELL, TABLE_CONSTANTS.classes.TABLE_CELL_SELECT], td);
649
- td.appendChild(TableUtils._createCheckboxElement(false, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll));
649
+ td.appendChild(TableUtils._createCheckboxElement(false, dense, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll));
650
650
  }
651
651
  /**
652
652
  * Removes the first cell (select cell) in every row in the table head and table body elements.
@@ -678,7 +678,7 @@ export class TableUtils {
678
678
  /**
679
679
  * Creates a checkbox element for the select column.
680
680
  */
681
- static _createCheckboxElement(isHeader, alignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
681
+ static _createCheckboxElement(isHeader, dense, alignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll) {
682
682
  const checkboxContainer = document.createElement('div');
683
683
  checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER);
684
684
  if (alignment) {
@@ -696,6 +696,7 @@ export class TableUtils {
696
696
  }
697
697
  const checkboxElement = document.createElement(CHECKBOX_CONSTANTS.elementName);
698
698
  checkboxElement.setAttribute(TABLE_CONSTANTS.attributes.SELECT_CHECKBOX, '');
699
+ checkboxElement.dense = dense;
699
700
  checkboxContainer.appendChild(checkboxElement);
700
701
  const tooltipFactory = (text) => {
701
702
  const tooltipEl = document.createElement('forge-tooltip');
@@ -957,14 +958,14 @@ export class TableUtils {
957
958
  /**
958
959
  * Adds/removes the select column on the table.
959
960
  */
960
- static setSelectColumnVisibility(tableElement, isVisible, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
961
+ static setSelectColumnVisibility(tableElement, dense, isVisible, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
961
962
  const theadElement = tableElement.tHead;
962
963
  const tbodyElement = tableElement.tBodies[0];
963
964
  if (!theadElement || !tbodyElement) {
964
965
  return;
965
966
  }
966
967
  if (isVisible) {
967
- TableUtils._addSelectColumn(theadElement, tbodyElement, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
968
+ TableUtils._addSelectColumn(theadElement, tbodyElement, dense, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);
968
969
  }
969
970
  else if (TableUtils._hasSelectColumn(theadElement, tbodyElement)) {
970
971
  if (selectListener) {
@@ -983,8 +984,8 @@ export class TableUtils {
983
984
  * @param selectListener The row select listener.
984
985
  * @param selectAllListener The select all checkbox listener.
985
986
  */
986
- static _addSelectColumn(theadElement, tbodyElement, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
987
- TableUtils._createSelectColumn(theadElement, tbodyElement, !!selectAllListener, selectAllTemplate, () => {
987
+ static _addSelectColumn(theadElement, tbodyElement, dense, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll) {
988
+ TableUtils._createSelectColumn(theadElement, tbodyElement, dense, !!selectAllListener, selectAllTemplate, () => {
988
989
  if (selectAllListener) {
989
990
  TableUtils._tryAttachSelectAllTemplateListener(theadElement, selectAllListener);
990
991
  }
@@ -1006,6 +1007,9 @@ export class TableUtils {
1006
1007
  if (isDense) {
1007
1008
  tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_DENSE);
1008
1009
  }
1010
+ // Update the select column checkboxes if they exist
1011
+ const selectColumnCheckboxes = tableElement.querySelectorAll(`forge-checkbox[${TABLE_CONSTANTS.attributes.SELECT_CHECKBOX}]`);
1012
+ selectColumnCheckboxes.forEach(checkboxEl => (checkboxEl.dense = isDense));
1009
1013
  }
1010
1014
  /**
1011
1015
  * Adds/removes the roomy class on the table.
@@ -1086,7 +1090,7 @@ export class TableUtils {
1086
1090
  * @param {HTMLTableElement} tableElement The table element.
1087
1091
  * @param {boolean} isVisible Whether the select all option is visible or not.
1088
1092
  */
1089
- static setSelectAllVisibility(tableElement, isVisible, listener, selectAllTemplate, selectCheckboxAlignment, tooltipSelectAll) {
1093
+ static setSelectAllVisibility(tableElement, dense, isVisible, listener, selectAllTemplate, selectCheckboxAlignment, tooltipSelectAll) {
1090
1094
  const theadElement = tableElement.tHead;
1091
1095
  if (!theadElement) {
1092
1096
  return;
@@ -1108,7 +1112,7 @@ export class TableUtils {
1108
1112
  });
1109
1113
  }
1110
1114
  else {
1111
- selectAllCell.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment || null, null, null, null, tooltipSelectAll));
1115
+ selectAllCell.appendChild(TableUtils._createCheckboxElement(true, dense, selectCheckboxAlignment || null, null, null, null, tooltipSelectAll));
1112
1116
  }
1113
1117
  if (listener && !selectAllTemplate) {
1114
1118
  TableUtils._attachSelectAllListener(theadElement, listener);
@@ -64,7 +64,7 @@ declare global {
64
64
  }
65
65
  }
66
66
  /**
67
- * @summary A comprehensive data table component with features for selection, sorting, filtering, resizing, and row expansion functionality.
67
+ * @summary Tables are used to display sets of data. They organize information into rows and columns, making it easier to read, compare, and analyze. The Forge table provides a configuration-based approach to building data tables with means for sorting, filtering, selecting, and customizing the display of tabular data.
68
68
  *
69
69
  * @tag forge-table
70
70
  *
@@ -185,7 +185,7 @@ export declare class TableComponent extends BaseComponent implements ITableCompo
185
185
  columnConfigurations: IColumnConfiguration[];
186
186
  /**
187
187
  * Controls the visibility of the select column.
188
- * @default true
188
+ * @default false
189
189
  * @attribute
190
190
  */
191
191
  select: boolean;
@@ -17,7 +17,7 @@ import { CellAlign } from './types';
17
17
  import { TooltipComponent } from '../tooltip';
18
18
  import { FocusIndicatorComponent } from '../focus-indicator';
19
19
  /**
20
- * @summary A comprehensive data table component with features for selection, sorting, filtering, resizing, and row expansion functionality.
20
+ * @summary Tables are used to display sets of data. They organize information into rows and columns, making it easier to read, compare, and analyze. The Forge table provides a configuration-based approach to building data tables with means for sorting, filtering, selecting, and customizing the display of tabular data.
21
21
  *
22
22
  * @tag forge-table
23
23
  *
@@ -26,7 +26,7 @@ declare global {
26
26
  /**
27
27
  * @tag forge-tab
28
28
  *
29
- * @summary Individual tab elements that provide navigation between different content panels.
29
+ * @summary Tab components represent a single tab inside a tab bar.
30
30
  *
31
31
  * @dependency forge-focus-indicator
32
32
  * @dependency forge-state-layer
@@ -16,7 +16,7 @@ const styles = ':host{display:inline-flex;outline:0;-webkit-tap-highlight-color:
16
16
  /**
17
17
  * @tag forge-tab
18
18
  *
19
- * @summary Individual tab elements that provide navigation between different content panels.
19
+ * @summary Tab components represent a single tab inside a tab bar.
20
20
  *
21
21
  * @dependency forge-focus-indicator
22
22
  * @dependency forge-state-layer
@@ -31,7 +31,7 @@ declare const TabBarComponent_base: import("../../constants").AbstractConstructo
31
31
  /**
32
32
  * @tag forge-tab-bar
33
33
  *
34
- * @summary Tabs organize content across different screens and views.
34
+ * @summary Tab bars organize a set of tabs, holding selection state and enabling navigation between different views or sections of content.
35
35
  *
36
36
  * @description
37
37
  * Use tabs to group content into helpful categories. Tabs are typically placed
@@ -21,7 +21,7 @@ const styles = ':host{position:relative;display:block}:host([hidden]){display:no
21
21
  /**
22
22
  * @tag forge-tab-bar
23
23
  *
24
- * @summary Tabs organize content across different screens and views.
24
+ * @summary Tab bars organize a set of tabs, holding selection state and enabling navigation between different views or sections of content.
25
25
  *
26
26
  * @description
27
27
  * Use tabs to group content into helpful categories. Tabs are typically placed
@@ -12,13 +12,14 @@ export interface ITextFieldAdapter extends IBaseFieldAdapter {
12
12
  addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
13
13
  removeRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
14
14
  disableInput(disabled: boolean): void;
15
+ setInvalid(value: boolean): void;
15
16
  handleDefaultSlotChange(listener: TextFieldInputAttributeObserver): void;
16
17
  tryAddValueChangeListener(context: unknown, listener: TextFieldValueChangeListener): void;
17
18
  removeValueChangeListener(): void;
18
19
  tryFloatLabel(force?: boolean): void;
19
20
  tryConnectSlottedLabel(): void;
20
- connectClearButton(listener: EventListener): void;
21
- disconnectClearButton(listener: EventListener): void;
21
+ connectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
22
+ disconnectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
22
23
  toggleClearButtonVisibility(visible: boolean): void;
23
24
  clearInput(): void;
24
25
  getAllSlotElements(): HTMLSlotElement[];
@@ -39,6 +40,7 @@ export declare class TextFieldAdapter extends BaseFieldAdapter implements ITextF
39
40
  addRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
40
41
  removeRootListener(name: keyof HTMLElementEventMap, listener: EventListener): void;
41
42
  disableInput(disabled: boolean): void;
43
+ setInvalid(value: boolean): void;
42
44
  inputIsDisabled(): boolean;
43
45
  click(): void;
44
46
  applyLabel(value: string | null): void;
@@ -47,8 +49,8 @@ export declare class TextFieldAdapter extends BaseFieldAdapter implements ITextF
47
49
  removeValueChangeListener(): void;
48
50
  tryFloatLabel(force?: boolean): void;
49
51
  tryConnectSlottedLabel(): void;
50
- connectClearButton(listener: EventListener): void;
51
- disconnectClearButton(listener: EventListener): void;
52
+ connectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
53
+ disconnectClearButton(clickListener: EventListener, mouseDownListener: EventListener): void;
52
54
  toggleClearButtonVisibility(visible: boolean): void;
53
55
  clearInput(): void;
54
56
  getAllSlotElements(): HTMLSlotElement[];
@@ -40,6 +40,9 @@ export class TextFieldAdapter extends BaseFieldAdapter {
40
40
  disableInput(disabled) {
41
41
  this._inputElements.forEach(el => (el.disabled = disabled));
42
42
  }
43
+ setInvalid(value) {
44
+ this._inputElements.forEach(el => toggleAttribute(el, value, 'aria-invalid', 'true'));
45
+ }
43
46
  inputIsDisabled() {
44
47
  return this._inputElements.some(el => el.disabled);
45
48
  }
@@ -130,11 +133,15 @@ export class TextFieldAdapter extends BaseFieldAdapter {
130
133
  inputElement.id = id;
131
134
  label.htmlFor = id;
132
135
  }
133
- connectClearButton(listener) {
134
- this._clearButtonSlotElement.addEventListener('click', listener);
136
+ connectClearButton(clickListener, mouseDownListener) {
137
+ this._clearButtonSlotElement.addEventListener('click', clickListener);
138
+ if (mouseDownListener) {
139
+ this._clearButtonSlotElement.addEventListener('mousedown', mouseDownListener);
140
+ }
135
141
  }
136
- disconnectClearButton(listener) {
137
- this._clearButtonSlotElement.removeEventListener('click', listener);
142
+ disconnectClearButton(clickListener, mouseDownListener) {
143
+ this._clearButtonSlotElement.removeEventListener('click', clickListener);
144
+ this._clearButtonSlotElement.removeEventListener('mousedown', mouseDownListener);
138
145
  }
139
146
  toggleClearButtonVisibility(visible) {
140
147
  if (visible) {
@@ -18,6 +18,7 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
18
18
  private _valueChangeListener;
19
19
  private _inputListener;
20
20
  private _clearButtonClickListener;
21
+ private _clearButtonMouseDownListener;
21
22
  constructor(_adapter: TextFieldAdapter);
22
23
  initialize(): void;
23
24
  destroy(): void;
@@ -27,6 +28,7 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
27
28
  private _handleSlotChange;
28
29
  private _onInputAttributeChange;
29
30
  private _onClearButtonClick;
31
+ private _onClearButtonMouseDown;
30
32
  /** Responds to the `input` event from the <input> element. */
31
33
  private _onInputChange;
32
34
  /** Called from the `value` property setter on the <input> element. */
@@ -35,6 +37,8 @@ export declare class TextFieldCore extends BaseFieldCore<ITextFieldAdapter> impl
35
37
  private _toggleClearButtonVisibility;
36
38
  get showClear(): boolean;
37
39
  set showClear(value: boolean);
40
+ get invalid(): boolean;
41
+ set invalid(value: boolean);
38
42
  get disabled(): boolean;
39
43
  set disabled(value: boolean);
40
44
  get labelPosition(): FieldLabelPosition;
@@ -17,6 +17,7 @@ export class TextFieldCore extends BaseFieldCore {
17
17
  this._valueChangeListener = this._onValueChange.bind(this);
18
18
  this._inputListener = this._onInputChange.bind(this);
19
19
  this._clearButtonClickListener = (evt) => this._onClearButtonClick(evt);
20
+ this._clearButtonMouseDownListener = (evt) => this._onClearButtonMouseDown(evt);
20
21
  }
21
22
  initialize() {
22
23
  this._adapter.tryApplyGlobalConfiguration(['labelPosition', 'variant']);
@@ -72,6 +73,9 @@ export class TextFieldCore extends BaseFieldCore {
72
73
  this._adapter.clearInput();
73
74
  }
74
75
  }
76
+ _onClearButtonMouseDown(evt) {
77
+ evt.preventDefault(); // Prevent focus change to avoid blur event
78
+ }
75
79
  /** Responds to the `input` event from the <input> element. */
76
80
  _onInputChange(evt) {
77
81
  let floatLabel;
@@ -101,14 +105,21 @@ export class TextFieldCore extends BaseFieldCore {
101
105
  this._showClear = value;
102
106
  this._adapter.toggleHostAttribute(TEXT_FIELD_CONSTANTS.attributes.SHOW_CLEAR, value);
103
107
  if (value) {
104
- this._adapter.connectClearButton(this._clearButtonClickListener);
108
+ this._adapter.connectClearButton(this._clearButtonClickListener, this._clearButtonMouseDownListener);
105
109
  }
106
110
  else {
107
- this._adapter.disconnectClearButton(this._clearButtonClickListener);
111
+ this._adapter.disconnectClearButton(this._clearButtonClickListener, this._clearButtonMouseDownListener);
108
112
  }
109
113
  this._toggleClearButtonVisibility();
110
114
  }
111
115
  }
116
+ get invalid() {
117
+ return super.invalid;
118
+ }
119
+ set invalid(value) {
120
+ super.invalid = value;
121
+ this._adapter.setInvalid(value);
122
+ }
112
123
  get disabled() {
113
124
  return super.disabled;
114
125
  }
@@ -20,7 +20,7 @@ declare global {
20
20
  /**
21
21
  * @tag forge-text-field
22
22
  *
23
- * @summary The Forge Text Field component wraps and styles an input or textarea element.
23
+ * @summary The Forge Text Field component is an input field used to capture user text input. It requires a child `<input>` or `<textarea>` element to function properly, and an optional `<label>` element can be used to provide a label for the `<input>`.
24
24
  *
25
25
  * @dependency forge-field
26
26
  * @dependency forge-icon-button
@@ -19,7 +19,7 @@ const styles = ':host{display:block}:host([hidden]){display:none}forge-field{dis
19
19
  /**
20
20
  * @tag forge-text-field
21
21
  *
22
- * @summary The Forge Text Field component wraps and styles an input or textarea element.
22
+ * @summary The Forge Text Field component is an input field used to capture user text input. It requires a child `<input>` or `<textarea>` element to function properly, and an optional `<label>` element can be used to provide a label for the `<input>`.
23
23
  *
24
24
  * @dependency forge-field
25
25
  * @dependency forge-icon-button
@@ -189,6 +189,7 @@ export class TimePickerAdapter extends BaseAdapter {
189
189
  this._toggleElement.setAttribute('aria-disabled', value.toString());
190
190
  if ('disabled' in this._toggleElement) {
191
191
  this._toggleElement.disabled = value;
192
+ this._toggleElement.tabIndex = -1;
192
193
  }
193
194
  else {
194
195
  const button = this._toggleElement.querySelector('button');
@@ -579,7 +579,7 @@ export class TimePickerCore {
579
579
  for (let totalMinutes = minMinutes; totalMinutes < TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES; totalMinutes += minuteStep) {
580
580
  const millis = minutesToMillis(totalMinutes);
581
581
  const disabled = this._restrictedTimes.includes(millis);
582
- const label = millisToTimeString(millis, this._use24HourTime, false) || '';
582
+ const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
583
583
  const value = { time: millis };
584
584
  times.push({ label, value, disabled });
585
585
  }
@@ -587,7 +587,7 @@ export class TimePickerCore {
587
587
  for (let totalMinutes = 0; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {
588
588
  const millis = minutesToMillis(totalMinutes);
589
589
  const disabled = this._restrictedTimes.includes(millis);
590
- const label = millisToTimeString(millis, this._use24HourTime, false) || '';
590
+ const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
591
591
  const value = { time: millis };
592
592
  times.push({ label, value, disabled });
593
593
  }
@@ -602,7 +602,7 @@ export class TimePickerCore {
602
602
  }
603
603
  const millis = minutesToMillis(totalMinutes);
604
604
  const disabled = this._restrictedTimes.includes(millis);
605
- const label = millisToTimeString(millis, this._use24HourTime, false) || '';
605
+ const label = millisToTimeString(millis, this._use24HourTime, this._allowSeconds) || '';
606
606
  const value = { time: millis };
607
607
  times.push({ label, value, disabled });
608
608
  }
@@ -14,6 +14,16 @@ export interface IToastAdapter extends IBaseAdapter<IToastComponent> {
14
14
  removeActionListener(listener: EventListener): void;
15
15
  setDismissLabel(label: string): void;
16
16
  setActionText(text: string): void;
17
+ addPointerEnterListener(listener: EventListener): void;
18
+ removePointerEnterListener(listener: EventListener): void;
19
+ addPointerLeaveListener(listener: EventListener): void;
20
+ removePointerLeaveListener(listener: EventListener): void;
21
+ addFocusInListener(listener: EventListener): void;
22
+ removeFocusInListener(listener: EventListener): void;
23
+ addFocusOutListener(listener: EventListener): void;
24
+ removeFocusOutListener(listener: EventListener): void;
25
+ addKeyboardListener(listener: EventListener): void;
26
+ removeKeyboardListener(listener: EventListener): void;
17
27
  }
18
28
  export declare class ToastAdapter extends BaseAdapter<IToastComponent> implements IToastAdapter {
19
29
  private _overlayElement;
@@ -29,4 +39,14 @@ export declare class ToastAdapter extends BaseAdapter<IToastComponent> implement
29
39
  removeActionListener(listener: EventListener): void;
30
40
  setDismissLabel(label: string): void;
31
41
  setActionText(text: string): void;
42
+ addPointerEnterListener(listener: EventListener): void;
43
+ removePointerEnterListener(listener: EventListener): void;
44
+ addPointerLeaveListener(listener: EventListener): void;
45
+ removePointerLeaveListener(listener: EventListener): void;
46
+ addFocusInListener(listener: EventListener): void;
47
+ removeFocusInListener(listener: EventListener): void;
48
+ addFocusOutListener(listener: EventListener): void;
49
+ removeFocusOutListener(listener: EventListener): void;
50
+ addKeyboardListener(listener: EventListener): void;
51
+ removeKeyboardListener(listener: EventListener): void;
32
52
  }
@@ -46,4 +46,34 @@ export class ToastAdapter extends BaseAdapter {
46
46
  this._actionButtonElement.setAttribute('hidden', '');
47
47
  }
48
48
  }
49
+ addPointerEnterListener(listener) {
50
+ this._component.addEventListener('pointerenter', listener);
51
+ }
52
+ removePointerEnterListener(listener) {
53
+ this._component.removeEventListener('pointerenter', listener);
54
+ }
55
+ addPointerLeaveListener(listener) {
56
+ this._component.addEventListener('pointerleave', listener);
57
+ }
58
+ removePointerLeaveListener(listener) {
59
+ this._component.removeEventListener('pointerleave', listener);
60
+ }
61
+ addFocusInListener(listener) {
62
+ this._component.addEventListener('focusin', listener);
63
+ }
64
+ removeFocusInListener(listener) {
65
+ this._component.removeEventListener('focusin', listener);
66
+ }
67
+ addFocusOutListener(listener) {
68
+ this._component.addEventListener('focusout', listener);
69
+ }
70
+ removeFocusOutListener(listener) {
71
+ this._component.removeEventListener('focusout', listener);
72
+ }
73
+ addKeyboardListener(listener) {
74
+ this._component.addEventListener('keydown', listener);
75
+ }
76
+ removeKeyboardListener(listener) {
77
+ this._component.removeEventListener('keydown', listener);
78
+ }
49
79
  }
@@ -3,6 +3,7 @@
3
3
  * Copyright Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
+ import { IDismissibleStackState, tryDismiss } from '../core/utils/dismissible-stack';
6
7
  import { IToastAdapter } from './toast-adapter';
7
8
  import { ToastPlacement, ToastTheme } from './toast-constants';
8
9
  export interface IToastCore {
@@ -26,6 +27,13 @@ export declare class ToastCore implements IToastCore {
26
27
  private _hideTimeout;
27
28
  private _actionListener;
28
29
  private _closeListener;
30
+ private _isHovered;
31
+ private _isFocused;
32
+ private _pointerEnterListener;
33
+ private _pointerLeaveListener;
34
+ private _focusInListener;
35
+ private _focusOutListener;
36
+ private _keyboardListener;
29
37
  constructor(_adapter: IToastAdapter);
30
38
  initialize(): void;
31
39
  show(): void;
@@ -34,6 +42,15 @@ export declare class ToastCore implements IToastCore {
34
42
  }): Promise<void>;
35
43
  private _onAction;
36
44
  private _onClose;
45
+ private _handlePointerEnter;
46
+ private _handlePointerLeave;
47
+ private _handleFocusIn;
48
+ private _handleFocusOut;
49
+ private _handleKeyboard;
50
+ private _updateTimerState;
51
+ private _pauseTimer;
52
+ private _resumeTimer;
53
+ [tryDismiss](state?: IDismissibleStackState): boolean;
37
54
  get open(): boolean;
38
55
  set open(value: boolean);
39
56
  get duration(): number;