@govtechsg/sgds-web-component 3.27.0-rc.3 → 3.27.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 (202) hide show
  1. package/base/dropdown-list-element.js +2 -9
  2. package/base/dropdown-list-element.js.map +1 -1
  3. package/components/Breadcrumb/index.umd.min.js +5 -5
  4. package/components/Breadcrumb/index.umd.min.js.map +1 -1
  5. package/components/ComboBox/index.umd.min.js +1 -1
  6. package/components/ComboBox/index.umd.min.js.map +1 -1
  7. package/components/DataTable/data-table.js +1 -1
  8. package/components/DataTable/index.umd.min.js +49 -42
  9. package/components/DataTable/index.umd.min.js.map +1 -1
  10. package/components/DataTable/sgds-data-table-cell.d.ts +2 -2
  11. package/components/DataTable/sgds-data-table-cell.js.map +1 -1
  12. package/components/DataTable/sgds-data-table-head.d.ts +2 -2
  13. package/components/DataTable/sgds-data-table-head.js.map +1 -1
  14. package/components/DataTable/sgds-data-table-row.d.ts +0 -3
  15. package/components/DataTable/sgds-data-table-row.js +0 -13
  16. package/components/DataTable/sgds-data-table-row.js.map +1 -1
  17. package/components/DataTable/sgds-data-table.d.ts +7 -4
  18. package/components/DataTable/sgds-data-table.js +49 -38
  19. package/components/DataTable/sgds-data-table.js.map +1 -1
  20. package/components/DataTable/types.d.ts +7 -0
  21. package/components/Datepicker/index.umd.min.js +1 -1
  22. package/components/Dropdown/dropdown-item.js +1 -1
  23. package/components/Dropdown/index.umd.min.js +5 -5
  24. package/components/Dropdown/index.umd.min.js.map +1 -1
  25. package/components/Dropdown/sgds-dropdown-item.d.ts +0 -2
  26. package/components/Dropdown/sgds-dropdown-item.js +2 -8
  27. package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  28. package/components/Footer/index.umd.min.js +1 -1
  29. package/components/Footer/index.umd.min.js.map +1 -1
  30. package/components/Footer/sgds-footer.js +1 -1
  31. package/components/Footer/sgds-footer.js.map +1 -1
  32. package/components/Input/index.umd.min.js +1 -1
  33. package/components/Mainnav/index.d.ts +0 -2
  34. package/components/Mainnav/index.js +0 -2
  35. package/components/Mainnav/index.js.map +1 -1
  36. package/components/Mainnav/index.umd.min.js +285 -338
  37. package/components/Mainnav/index.umd.min.js.map +1 -1
  38. package/components/Mainnav/mainnav-dropdown.js +1 -1
  39. package/components/Mainnav/mainnav-item.js +1 -1
  40. package/components/Mainnav/mainnav.js +1 -1
  41. package/components/Mainnav/sgds-mainnav.d.ts +51 -8
  42. package/components/Mainnav/sgds-mainnav.js +238 -40
  43. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  44. package/components/OverflowMenu/index.umd.min.js +5 -5
  45. package/components/OverflowMenu/index.umd.min.js.map +1 -1
  46. package/components/QuantityToggle/index.umd.min.js +1 -1
  47. package/components/Select/index.umd.min.js +21 -21
  48. package/components/Select/index.umd.min.js.map +1 -1
  49. package/components/Tab/index.umd.min.js +1 -1
  50. package/components/Tab/index.umd.min.js.map +1 -1
  51. package/components/Tab/tab-panel.js +1 -1
  52. package/components/Textarea/index.umd.min.js +1 -1
  53. package/components/index.d.ts +0 -3
  54. package/components/index.js +0 -3
  55. package/components/index.js.map +1 -1
  56. package/components/index.umd.min.js +587 -665
  57. package/components/index.umd.min.js.map +1 -1
  58. package/css/fouc.css +5 -8
  59. package/custom-elements.json +15246 -17418
  60. package/index.d.ts +0 -1
  61. package/index.js +0 -1
  62. package/index.js.map +1 -1
  63. package/index.umd.min.js +353 -441
  64. package/index.umd.min.js.map +1 -1
  65. package/package.json +1 -1
  66. package/react/base/dropdown-list-element.cjs.js +2 -9
  67. package/react/base/dropdown-list-element.cjs.js.map +1 -1
  68. package/react/base/dropdown-list-element.js +2 -9
  69. package/react/base/dropdown-list-element.js.map +1 -1
  70. package/react/components/DataTable/data-table.cjs.js +1 -1
  71. package/react/components/DataTable/data-table.js +1 -1
  72. package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -1
  73. package/react/components/DataTable/sgds-data-table-cell.js.map +1 -1
  74. package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -1
  75. package/react/components/DataTable/sgds-data-table-head.js.map +1 -1
  76. package/react/components/DataTable/sgds-data-table-row.cjs.js +0 -13
  77. package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -1
  78. package/react/components/DataTable/sgds-data-table-row.js +0 -13
  79. package/react/components/DataTable/sgds-data-table-row.js.map +1 -1
  80. package/react/components/DataTable/sgds-data-table.cjs.js +49 -38
  81. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -1
  82. package/react/components/DataTable/sgds-data-table.js +49 -38
  83. package/react/components/DataTable/sgds-data-table.js.map +1 -1
  84. package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
  85. package/react/components/Dropdown/dropdown-item.js +1 -1
  86. package/react/components/Dropdown/sgds-dropdown-item.cjs.js +2 -8
  87. package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
  88. package/react/components/Dropdown/sgds-dropdown-item.js +2 -8
  89. package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  90. package/react/components/Footer/sgds-footer.cjs.js +1 -1
  91. package/react/components/Footer/sgds-footer.cjs.js.map +1 -1
  92. package/react/components/Footer/sgds-footer.js +1 -1
  93. package/react/components/Footer/sgds-footer.js.map +1 -1
  94. package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
  95. package/react/components/Mainnav/mainnav-dropdown.js +1 -1
  96. package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
  97. package/react/components/Mainnav/mainnav-item.js +1 -1
  98. package/react/components/Mainnav/mainnav.cjs.js +1 -1
  99. package/react/components/Mainnav/mainnav.js +1 -1
  100. package/react/components/Mainnav/sgds-mainnav.cjs.js +237 -39
  101. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  102. package/react/components/Mainnav/sgds-mainnav.js +238 -40
  103. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  104. package/react/components/Tab/tab-panel.cjs.js +1 -1
  105. package/react/components/Tab/tab-panel.js +1 -1
  106. package/react/index.cjs.js +146 -152
  107. package/react/index.cjs.js.map +1 -1
  108. package/react/index.d.ts +5 -8
  109. package/react/index.js +5 -8
  110. package/react/index.js.map +1 -1
  111. package/react/styles/form-text-control.cjs.js +1 -1
  112. package/react/styles/form-text-control.js +1 -1
  113. package/styles/form-text-control.js +1 -1
  114. package/themes/blue.css +11 -11
  115. package/themes/cyan.css +10 -10
  116. package/themes/day.css +1 -1
  117. package/themes/gt/blue.css +11 -11
  118. package/themes/gt/cyan.css +10 -10
  119. package/themes/gt/magenta.css +11 -11
  120. package/themes/gt/pink.css +11 -11
  121. package/themes/gt/purple.css +11 -11
  122. package/themes/gt/red.css +11 -11
  123. package/themes/magenta.css +11 -11
  124. package/themes/pink.css +11 -11
  125. package/themes/purple.css +11 -11
  126. package/themes/red.css +11 -11
  127. package/themes/root.css +0 -5
  128. package/types/react.d.ts +97 -148
  129. package/base/nav-element.d.ts +0 -64
  130. package/base/nav-element.js +0 -263
  131. package/base/nav-element.js.map +0 -1
  132. package/base/nav-profile-element.d.ts +0 -47
  133. package/base/nav-profile-element.js +0 -191
  134. package/base/nav-profile-element.js.map +0 -1
  135. package/base/nav-profile.js +0 -6
  136. package/base/nav-profile.js.map +0 -1
  137. package/components/Appnav/appnav-context.d.ts +0 -6
  138. package/components/Appnav/appnav-context.js +0 -7
  139. package/components/Appnav/appnav-context.js.map +0 -1
  140. package/components/Appnav/appnav.js +0 -6
  141. package/components/Appnav/appnav.js.map +0 -1
  142. package/components/Appnav/index.d.ts +0 -9
  143. package/components/Appnav/index.js +0 -8
  144. package/components/Appnav/index.js.map +0 -1
  145. package/components/Appnav/index.umd.min.js +0 -2535
  146. package/components/Appnav/index.umd.min.js.map +0 -1
  147. package/components/Appnav/sgds-appnav-profile.d.ts +0 -17
  148. package/components/Appnav/sgds-appnav-profile.js +0 -31
  149. package/components/Appnav/sgds-appnav-profile.js.map +0 -1
  150. package/components/Appnav/sgds-appnav.d.ts +0 -44
  151. package/components/Appnav/sgds-appnav.js +0 -183
  152. package/components/Appnav/sgds-appnav.js.map +0 -1
  153. package/components/Mainnav/sgds-mainnav-profile.d.ts +0 -15
  154. package/components/Mainnav/sgds-mainnav-profile.js +0 -29
  155. package/components/Mainnav/sgds-mainnav-profile.js.map +0 -1
  156. package/react/appnav/index.cjs.js +0 -45
  157. package/react/appnav/index.cjs.js.map +0 -1
  158. package/react/appnav/index.d.ts +0 -4
  159. package/react/appnav/index.js +0 -21
  160. package/react/appnav/index.js.map +0 -1
  161. package/react/appnav-profile/index.cjs.js +0 -40
  162. package/react/appnav-profile/index.cjs.js.map +0 -1
  163. package/react/appnav-profile/index.d.ts +0 -4
  164. package/react/appnav-profile/index.js +0 -16
  165. package/react/appnav-profile/index.js.map +0 -1
  166. package/react/base/nav-element.cjs.js +0 -268
  167. package/react/base/nav-element.cjs.js.map +0 -1
  168. package/react/base/nav-element.js +0 -264
  169. package/react/base/nav-element.js.map +0 -1
  170. package/react/base/nav-profile-element.cjs.js +0 -196
  171. package/react/base/nav-profile-element.cjs.js.map +0 -1
  172. package/react/base/nav-profile-element.js +0 -192
  173. package/react/base/nav-profile-element.js.map +0 -1
  174. package/react/base/nav-profile.cjs.js +0 -11
  175. package/react/base/nav-profile.cjs.js.map +0 -1
  176. package/react/base/nav-profile.js +0 -7
  177. package/react/base/nav-profile.js.map +0 -1
  178. package/react/components/Appnav/appnav-context.cjs.js +0 -13
  179. package/react/components/Appnav/appnav-context.cjs.js.map +0 -1
  180. package/react/components/Appnav/appnav-context.js +0 -8
  181. package/react/components/Appnav/appnav-context.js.map +0 -1
  182. package/react/components/Appnav/appnav.cjs.js +0 -11
  183. package/react/components/Appnav/appnav.cjs.js.map +0 -1
  184. package/react/components/Appnav/appnav.js +0 -7
  185. package/react/components/Appnav/appnav.js.map +0 -1
  186. package/react/components/Appnav/sgds-appnav-profile.cjs.js +0 -37
  187. package/react/components/Appnav/sgds-appnav-profile.cjs.js.map +0 -1
  188. package/react/components/Appnav/sgds-appnav-profile.js +0 -32
  189. package/react/components/Appnav/sgds-appnav-profile.js.map +0 -1
  190. package/react/components/Appnav/sgds-appnav.cjs.js +0 -189
  191. package/react/components/Appnav/sgds-appnav.cjs.js.map +0 -1
  192. package/react/components/Appnav/sgds-appnav.js +0 -184
  193. package/react/components/Appnav/sgds-appnav.js.map +0 -1
  194. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js +0 -35
  195. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js.map +0 -1
  196. package/react/components/Mainnav/sgds-mainnav-profile.js +0 -30
  197. package/react/components/Mainnav/sgds-mainnav-profile.js.map +0 -1
  198. package/react/mainnav-profile/index.cjs.js +0 -40
  199. package/react/mainnav-profile/index.cjs.js.map +0 -1
  200. package/react/mainnav-profile/index.d.ts +0 -4
  201. package/react/mainnav-profile/index.js +0 -16
  202. package/react/mainnav-profile/index.js.map +0 -1
@@ -14,9 +14,9 @@ import { SgdsSkeleton } from '../Skeleton/sgds-skeleton.js';
14
14
  * @summary A data table container with pagination, row selection, loading, and sorting support.
15
15
  *
16
16
  * @slot default - Insert one or more `sgds-data-table-row` elements.
17
- * @slot no-data - Custom content rendered when no body rows are available and `isLoading` is false.
17
+ * @slot no-data - Custom content rendered when no body rows are available and `loading` is false.
18
18
  *
19
- * @event sgds-row-select - Emitted when row checkboxes change. Detail: `{ selected: rowData[] }`.
19
+ * @event sgds-row-select - Emitted when row checkboxes change. Detail: `{ selected: Record<string, string>[] }`.
20
20
  * @event sgds-sort - Emitted when `serverSort` is true and a sorting column header is clicked.
21
21
  * Detail: `{ key: string; direction: "ascending" | "descending" | "none" }`.
22
22
  * @event sgds-page-change - Emitted when pagination changes page.
@@ -33,9 +33,9 @@ class SgdsDataTable extends SgdsElement {
33
33
  /** Number of rows per page. */
34
34
  this.itemsPerPage = 5;
35
35
  /** Custom text shown on the footer's left side. */
36
- this.footerText = "";
36
+ this.paginationSummary = "";
37
37
  /** When true, shows a loading state and hides body rows. */
38
- this.isLoading = false;
38
+ this.loading = false;
39
39
  /** When true, emits sort events for external handling instead of local sorting. */
40
40
  this.serverSort = false;
41
41
  /** Variant forwarded to the internal pagination component. */
@@ -87,7 +87,7 @@ class SgdsDataTable extends SgdsElement {
87
87
  this._updateHeaderCheckbox();
88
88
  }
89
89
  _emitRowSelect() {
90
- const selected = this.tableRows.filter(r => this._isRowChecked(r)).map(r => r.rowData);
90
+ const selected = this.tableRows.filter(r => this._isRowChecked(r)).map(r => this._getRowData(r));
91
91
  this.emit("sgds-row-select", { detail: { selected } });
92
92
  }
93
93
  _attachRowListener(row) {
@@ -158,10 +158,16 @@ class SgdsDataTable extends SgdsElement {
158
158
  const cell = cells[columnIndex];
159
159
  return ((cell === null || cell === void 0 ? void 0 : cell.textContent) || "").trim();
160
160
  }
161
- _toComparableValue(row, key, columnIndex) {
162
- if (key && row.rowData && key in row.rowData) {
163
- return row.rowData[key];
164
- }
161
+ _getRowData(row) {
162
+ const data = {};
163
+ this._headerCells.forEach((header, index) => {
164
+ var _a;
165
+ const key = header.sortKey || ((_a = header.textContent) !== null && _a !== void 0 ? _a : "").trim() || `col-${index}`;
166
+ data[key] = this._extractCellText(row, index);
167
+ });
168
+ return data;
169
+ }
170
+ _toComparableValue(row, _key, columnIndex) {
165
171
  return this._extractCellText(row, columnIndex);
166
172
  }
167
173
  _compareValues(left, right, direction) {
@@ -208,8 +214,7 @@ class SgdsDataTable extends SgdsElement {
208
214
  const activeHeader = e.composedPath().find(node => node instanceof SgdsDataTableHead);
209
215
  if (!activeHeader || !activeHeader.sorting)
210
216
  return;
211
- const { key, direction } = e
212
- .detail;
217
+ const { key, direction } = e.detail;
213
218
  const columnIndex = activeHeader ? this._headerCells.indexOf(activeHeader) : -1;
214
219
  this._resetOtherHeaderSortStates(activeHeader);
215
220
  if (this.serverSort) {
@@ -286,7 +291,7 @@ class SgdsDataTable extends SgdsElement {
286
291
  this._updateVisibleRows();
287
292
  }
288
293
  _updateVisibleRows() {
289
- if (this.isLoading) {
294
+ if (this.loading) {
290
295
  this.tableRows.forEach(row => (row.style.display = "none"));
291
296
  return;
292
297
  }
@@ -305,11 +310,7 @@ class SgdsDataTable extends SgdsElement {
305
310
  this.tableRows.forEach(row => (row.style.display = visible.has(row) ? "" : "none"));
306
311
  }
307
312
  _getSkeletonColumnCount() {
308
- const firstHeaderRow = this.headerRows[0];
309
- const firstHeaderCells = firstHeaderRow
310
- ? Array.from(firstHeaderRow.children).filter(child => child instanceof SgdsDataTableHead)
311
- : [];
312
- const headerColumnCount = firstHeaderCells.reduce((count, header) => {
313
+ const headerColumnCount = this._headerCells.reduce((count, header) => {
313
314
  const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;
314
315
  return count + span;
315
316
  }, 0);
@@ -318,23 +319,30 @@ class SgdsDataTable extends SgdsElement {
318
319
  ? Array.from(firstBodyRow.children).filter(child => child instanceof SgdsDataTableCell).length
319
320
  : 0;
320
321
  const hasExpand = this.tableRows.some(row => row.expand);
321
- const controlColumns = (this.multiSelect ? 1 : 0) + (hasExpand ? 1 : 0);
322
322
  const dataColumns = headerColumnCount || fallbackBodyColumnCount || 1;
323
- return Math.max(1, dataColumns + controlColumns);
323
+ return { dataColumns, hasExpand, hasCheckbox: this.multiSelect };
324
324
  }
325
325
  _renderLoadingSkeleton() {
326
- const skeletonColumns = this._getSkeletonColumnCount();
326
+ const { dataColumns, hasExpand, hasCheckbox } = this._getSkeletonColumnCount();
327
327
  const skeletonRows = Math.max(1, this.itemsPerPage || 1);
328
- return html `<div class="loading" role="status" aria-live="polite" aria-label="Loading">
329
- <div class="loading-grid" style=${`--sgds-data-table-loading-columns: ${skeletonColumns};`} aria-hidden="true">
330
- ${Array.from({ length: skeletonRows }, (_, rowIndex) => html `<div class="loading-grid-row" key=${rowIndex}>
331
- ${Array.from({ length: skeletonColumns }, () => html `<sgds-skeleton .height=${"56px"} .borderRadius=${"4px"}></sgds-skeleton>`)}
332
- </div>`)}
333
- </div>
334
- </div>`;
328
+ return Array.from({ length: skeletonRows }, () => html `<div class="skeleton-row" role="presentation">
329
+ ${hasExpand
330
+ ? html `<div class="skeleton-cell control-cell">
331
+ <sgds-skeleton .height=${"20px"} .width=${"20px"} .borderRadius=${"4px"}></sgds-skeleton>
332
+ </div>`
333
+ : nothing}
334
+ ${hasCheckbox
335
+ ? html `<div class="skeleton-cell control-cell">
336
+ <sgds-skeleton .height=${"24px"} .width=${"24px"} .borderRadius=${"4px"}></sgds-skeleton>
337
+ </div>`
338
+ : nothing}
339
+ ${Array.from({ length: dataColumns }, () => html `<div class="skeleton-cell">
340
+ <sgds-skeleton .height=${"100%"} .borderRadius=${"4px"}></sgds-skeleton>
341
+ </div>`)}
342
+ </div>`);
335
343
  }
336
344
  updated(changed) {
337
- if (changed.has("currentPage") || changed.has("itemsPerPage") || changed.has("mode") || changed.has("isLoading")) {
345
+ if (changed.has("currentPage") || changed.has("itemsPerPage") || changed.has("mode") || changed.has("loading")) {
338
346
  this._updateVisibleRows();
339
347
  }
340
348
  if (changed.has("multiSelect")) {
@@ -349,22 +357,25 @@ class SgdsDataTable extends SgdsElement {
349
357
  const start = (this.currentPage - 1) * this.itemsPerPage;
350
358
  const end = Math.min(start + this.itemsPerPage, total);
351
359
  const displayStart = total === 0 ? 0 : start + 1;
352
- const showNoData = !this.isLoading && this.tableRows.length === 0;
360
+ const showNoData = !this.loading && this.tableRows.length === 0;
353
361
  const showFooter = total !== 0;
354
362
  return html `
355
363
  <div class="data-table">
356
364
  <div class="table-container">
357
- <slot @slotchange=${this._handleSlotChange} @i-sgds-sort=${this._handleSort} class="table"></slot>
358
- ${this.isLoading
359
- ? this._renderLoadingSkeleton()
360
- : showNoData
361
- ? html `<slot name="no-data" class="no-data" role="status" aria-live="polite">No data</slot>`
362
- : nothing}
365
+ <div class="table">
366
+ <slot @slotchange=${this._handleSlotChange} @i-sgds-sort=${this._handleSort}></slot>
367
+ ${this.loading ? this._renderLoadingSkeleton() : nothing}
368
+ </div>
369
+ ${!this.loading && showNoData
370
+ ? html `<slot name="no-data" class="no-data" role="status" aria-live="polite">No data</slot>`
371
+ : nothing}
363
372
  </div>
364
373
 
365
374
  ${showFooter
366
375
  ? html `<div class="footer">
367
- ${this.footerText || html `<span>Showing ${displayStart} to ${end} of ${total} results</span>`}
376
+ ${this.loading
377
+ ? html `<span></span>`
378
+ : this.paginationSummary || html `<span>Showing ${displayStart} to ${end} of ${total} results</span>`}
368
379
  <sgds-pagination
369
380
  .dataLength=${total}
370
381
  .currentPage=${this.currentPage}
@@ -412,10 +423,10 @@ __decorate([
412
423
  ], SgdsDataTable.prototype, "itemsPerPage", void 0);
413
424
  __decorate([
414
425
  property({ type: String })
415
- ], SgdsDataTable.prototype, "footerText", void 0);
426
+ ], SgdsDataTable.prototype, "paginationSummary", void 0);
416
427
  __decorate([
417
428
  property({ type: Boolean })
418
- ], SgdsDataTable.prototype, "isLoading", void 0);
429
+ ], SgdsDataTable.prototype, "loading", void 0);
419
430
  __decorate([
420
431
  property({ type: Boolean })
421
432
  ], SgdsDataTable.prototype, "serverSort", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-data-table.js","sources":["../../../../src/components/DataTable/sgds-data-table.ts"],"sourcesContent":["import { css, html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport tableStyle from \"./data-table.css\";\nimport SgdsPagination from \"../Pagination/sgds-pagination\";\nimport type { ISgdsPaginationPageChangeEventDetail } from \"../Pagination/sgds-pagination\";\nimport SgdsDataTableRow from \"./sgds-data-table-row\";\nimport SgdsDataTableCell from \"./sgds-data-table-cell\";\nimport SgdsDataTableHead from \"./sgds-data-table-head\";\nimport SgdsSkeleton from \"../Skeleton/sgds-skeleton\";\n\n/**\n * @summary A data table container with pagination, row selection, loading, and sorting support.\n *\n * @slot default - Insert one or more `sgds-data-table-row` elements.\n * @slot no-data - Custom content rendered when no body rows are available and `isLoading` is false.\n *\n * @event sgds-row-select - Emitted when row checkboxes change. Detail: `{ selected: rowData[] }`.\n * @event sgds-sort - Emitted when `serverSort` is true and a sorting column header is clicked.\n * Detail: `{ key: string; direction: \"ascending\" | \"descending\" | \"none\" }`.\n * @event sgds-page-change - Emitted when pagination changes page.\n */\nexport class SgdsDataTable extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n tableStyle,\n css`\n :host {\n display: block;\n }\n `\n ];\n\n /** @internal */\n static dependencies = {\n \"sgds-pagination\": SgdsPagination,\n \"sgds-data-table-cell\": SgdsDataTableCell,\n \"sgds-data-table-head\": SgdsDataTableHead,\n \"sgds-skeleton\": SgdsSkeleton\n };\n\n /** If true, renders a checkbox column for row selection. */\n @property({ type: Boolean }) multiSelect = false;\n\n /** Total number of data items (for server-side pagination). */\n @property({ type: Number }) dataLength = 0;\n\n /** Current page (1-based). */\n @property({ type: Number }) currentPage = 1;\n\n /** Number of rows per page. */\n @property({ type: Number }) itemsPerPage = 5;\n\n /** Custom text shown on the footer's left side. */\n @property({ type: String }) footerText = \"\";\n\n /** When true, shows a loading state and hides body rows. */\n @property({ type: Boolean }) isLoading = false;\n\n /** When true, emits sort events for external handling instead of local sorting. */\n @property({ type: Boolean }) serverSort = false;\n\n /** Variant forwarded to the internal pagination component. */\n @property({ type: String }) paginationVariant: \"default\" | \"number\" | \"button\" | \"description\" = \"default\";\n\n /**\n * Controls the CSS `table-layout` algorithm.\n * Use \"auto\" to let the browser size columns based on content, or \"fixed\" to distribute column widths evenly regardless of content.\n * @type {\"auto\" | \"fixed\"}\n * @default \"auto\"\n */\n @property({ type: String, reflect: true }) layout: \"auto\" | \"fixed\" = \"auto\";\n\n /**\n * Pagination mode. `client` (default) slices rows and renders pagination controls.\n * `server` renders all slotted rows as-is — the caller is responsible for passing\n * the correct page of data and handling `sgds-page-change` externally.\n */\n @property({ type: String }) mode: \"client\" | \"server\" = \"client\";\n\n @state() private tableRows: SgdsDataTableRow[] = [];\n @state() private headerRows: SgdsDataTableRow[] = [];\n\n private _headerCells: SgdsDataTableHead[] = [];\n private _initialRowPositions = new WeakMap<SgdsDataTableRow, number>();\n private _hasCapturedInitialRowPositions = false;\n\n private _rowHandlers = new WeakMap<SgdsDataTableRow, EventListener>();\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"table\");\n }\n\n private _isRowChecked(row: SgdsDataTableRow) {\n return row.checked || row.checkbox?.checked === true;\n }\n\n private _updateHeaderCheckbox() {\n const checkedCount = this.tableRows.filter(r => this._isRowChecked(r)).length;\n\n const allChecked = checkedCount === this.tableRows.length && checkedCount > 0;\n\n this.headerRows.forEach(r => {\n r.checked = allChecked;\n if (r.checkbox) {\n r.checkbox.checked = allChecked;\n r.checkbox.indeterminate = checkedCount > 0 && !allChecked;\n }\n });\n }\n\n private async _syncHeaderCheckboxAfterRender() {\n if (!this.multiSelect || this.headerRows.length === 0) return;\n\n const rows = [...this.headerRows, ...this.tableRows];\n await Promise.all(rows.map(row => row.updateComplete));\n this._updateHeaderCheckbox();\n }\n\n private _emitRowSelect() {\n const selected = this.tableRows.filter(r => this._isRowChecked(r)).map(r => r.rowData);\n this.emit(\"sgds-row-select\", { detail: { selected } });\n }\n\n private _attachRowListener(row: SgdsDataTableRow) {\n const old = this._rowHandlers.get(row);\n if (old) row.removeEventListener(\"i-sgds-change\", old);\n\n const handler: EventListener = (e: Event) => {\n const { checked } = (e as CustomEvent<{ checked: boolean }>).detail;\n\n if (this.headerRows.includes(row)) {\n this.tableRows.forEach(r => {\n r.checked = checked;\n if (r.checkbox) r.checkbox.checked = checked;\n });\n } else {\n row.checked = checked;\n this._updateHeaderCheckbox();\n }\n this._emitRowSelect();\n };\n\n this._rowHandlers.set(row, handler);\n row.addEventListener(\"i-sgds-change\", handler);\n }\n\n private _configureRows() {\n const hasExpand = this.tableRows.some(r => r.expand);\n const hasDataRows = this.tableRows.length > 0;\n\n this.headerRows.forEach(row => {\n row.showCheckbox = this.multiSelect;\n row.showExpandPlaceholder = hasExpand;\n row.hasDataRows = hasDataRows;\n if (this.multiSelect) this._attachRowListener(row);\n });\n\n this.tableRows.forEach(row => {\n row.showCheckbox = this.multiSelect;\n row.showExpandPlaceholder = !row.expand && hasExpand;\n if (this.multiSelect) this._attachRowListener(row);\n });\n\n if (this.multiSelect) {\n this._syncHeaderCheckboxAfterRender();\n }\n\n this._applyColumnAlignment();\n }\n\n private _applyColumnAlignment() {\n const headerAlignments = this._headerCells.reduce<Array<\"left\" | \"right\">>((acc, header) => {\n const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;\n const alignment = header.textAlign ?? \"left\";\n for (let i = 0; i < span; i++) {\n acc.push(alignment);\n }\n return acc;\n }, []);\n\n this.headerRows.forEach(row => {\n row.columnAlignments = [...headerAlignments];\n });\n\n this.tableRows.forEach(row => {\n row.columnAlignments = [...headerAlignments];\n });\n }\n\n private _extractCellText(row: SgdsDataTableRow, columnIndex: number) {\n const rowCellText = row.getCellText(columnIndex);\n if (rowCellText) return rowCellText;\n\n const cells = Array.from(row.children).filter(child => child.tagName.toLowerCase() === \"sgds-data-table-cell\");\n const cell = cells[columnIndex];\n return (cell?.textContent || \"\").trim();\n }\n\n private _toComparableValue(row: SgdsDataTableRow, key: string, columnIndex: number) {\n if (key && row.rowData && key in row.rowData) {\n return row.rowData[key];\n }\n\n return this._extractCellText(row, columnIndex);\n }\n\n private _compareValues(left: unknown, right: unknown, direction: \"ascending\" | \"descending\") {\n if (left === right) return 0;\n\n const leftNumber = Number(left);\n const rightNumber = Number(right);\n const bothNumeric = Number.isFinite(leftNumber) && Number.isFinite(rightNumber);\n\n if (bothNumeric) {\n return direction === \"ascending\" ? leftNumber - rightNumber : rightNumber - leftNumber;\n }\n\n const cmp = String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: \"base\" });\n return direction === \"ascending\" ? cmp : -cmp;\n }\n\n private _resetOtherHeaderSortStates(activeHeader: SgdsDataTableHead | null) {\n this._headerCells.forEach(header => {\n if (header !== activeHeader && header.sorting) {\n header.sortDirection = \"none\";\n }\n });\n }\n\n private _getRowsInInitialPositionOrder(rows: SgdsDataTableRow[]) {\n return [...rows].sort((left, right) => {\n const leftPosition = this._initialRowPositions.get(left);\n const rightPosition = this._initialRowPositions.get(right);\n\n if (leftPosition === undefined && rightPosition === undefined) return 0;\n if (leftPosition === undefined) return 1;\n if (rightPosition === undefined) return -1;\n return leftPosition - rightPosition;\n });\n }\n\n private _captureInitialRowPositions(rows: SgdsDataTableRow[]) {\n if (this._hasCapturedInitialRowPositions) return;\n\n rows.forEach((row, index) => {\n this._initialRowPositions.set(row, index);\n });\n\n this._hasCapturedInitialRowPositions = true;\n }\n\n private _handleSort(e: Event) {\n const activeHeader = e.composedPath().find(node => node instanceof SgdsDataTableHead) as\n | SgdsDataTableHead\n | undefined;\n\n if (!activeHeader || !activeHeader.sorting) return;\n\n const { key, direction } = (e as CustomEvent<{ key: string; direction: \"ascending\" | \"descending\" | \"none\" }>)\n .detail;\n const columnIndex = activeHeader ? this._headerCells.indexOf(activeHeader) : -1;\n\n this._resetOtherHeaderSortStates(activeHeader);\n\n if (this.serverSort) {\n e.stopPropagation();\n this.emit(\"sgds-sort\", { detail: { key, direction } });\n return;\n }\n\n if (columnIndex < 0) return;\n\n if (direction === \"none\") {\n this.tableRows = this._getRowsInInitialPositionOrder(this.tableRows);\n this._syncDomRowOrder();\n this._updateVisibleRows();\n return;\n }\n\n if (this.mode === \"client\") {\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const end = start + this.itemsPerPage;\n const nextRows = [...this.tableRows];\n\n const sortedVisibleRows = nextRows.slice(start, end).sort((left, right) => {\n const leftValue = this._toComparableValue(left, key, columnIndex);\n const rightValue = this._toComparableValue(right, key, columnIndex);\n return this._compareValues(leftValue, rightValue, direction);\n });\n nextRows.splice(start, sortedVisibleRows.length, ...sortedVisibleRows);\n\n this.tableRows = nextRows;\n this._syncDomRowOrder();\n this._updateVisibleRows();\n return;\n }\n\n this.tableRows = [...this.tableRows].sort((left, right) => {\n const leftValue = this._toComparableValue(left, key, columnIndex);\n const rightValue = this._toComparableValue(right, key, columnIndex);\n return this._compareValues(leftValue, rightValue, direction);\n });\n\n this._syncDomRowOrder();\n this._updateVisibleRows();\n }\n\n private _syncDomRowOrder() {\n const parent = this.tableRows[0]?.parentElement;\n if (!parent) return;\n this.tableRows.forEach(row => parent.appendChild(row));\n }\n\n private _handleSlotChange(e: Event) {\n const slotted = (e.target as HTMLSlotElement)\n .assignedElements({ flatten: true })\n .filter(el => el instanceof SgdsDataTableRow) as SgdsDataTableRow[];\n\n const rowTableChildren = (row: SgdsDataTableRow) =>\n Array.from(row.children).filter(child => {\n const tagName = child.tagName.toLowerCase();\n const isTableCell = tagName === \"sgds-data-table-cell\" || tagName === \"sgds-data-table-head\";\n if (!isTableCell) return false;\n return child.getAttribute(\"slot\") !== \"content\";\n });\n\n this.headerRows = slotted.filter(row =>\n rowTableChildren(row).some(child => child.tagName.toLowerCase() === \"sgds-data-table-head\")\n );\n\n this.tableRows = slotted.filter(row => {\n const children = rowTableChildren(row);\n return children.length > 0 && children.every(child => child.tagName.toLowerCase() === \"sgds-data-table-cell\");\n });\n\n this._headerCells = this.headerRows.reduce<SgdsDataTableHead[]>((acc, row) => {\n const headers = Array.from(row.children).filter(\n child => child instanceof SgdsDataTableHead\n ) as SgdsDataTableHead[];\n acc.push(...headers);\n return acc;\n }, []);\n\n this._captureInitialRowPositions(this.tableRows);\n\n this._headerCells.forEach(header => {\n if (header.sorting && !header.sortDirection) {\n header.sortDirection = \"none\";\n }\n });\n\n this._configureRows();\n this._updateVisibleRows();\n }\n\n private _updateVisibleRows() {\n if (this.isLoading) {\n this.tableRows.forEach(row => (row.style.display = \"none\"));\n return;\n }\n\n if (this.mode === \"server\") {\n this.tableRows.forEach(row => (row.style.display = \"\"));\n return;\n }\n\n const total = this.dataLength || this.tableRows.length;\n const lastPage = Math.max(1, Math.ceil(total / this.itemsPerPage));\n if (this.currentPage > lastPage) {\n this.currentPage = lastPage;\n return;\n }\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const visible = new Set(this.tableRows.slice(start, start + this.itemsPerPage));\n this.tableRows.forEach(row => (row.style.display = visible.has(row) ? \"\" : \"none\"));\n }\n\n private _getSkeletonColumnCount() {\n const firstHeaderRow = this.headerRows[0];\n const firstHeaderCells = firstHeaderRow\n ? (Array.from(firstHeaderRow.children).filter(child => child instanceof SgdsDataTableHead) as SgdsDataTableHead[])\n : [];\n\n const headerColumnCount = firstHeaderCells.reduce((count, header) => {\n const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;\n return count + span;\n }, 0);\n\n const firstBodyRow = this.tableRows[0];\n const fallbackBodyColumnCount = firstBodyRow\n ? Array.from(firstBodyRow.children).filter(child => child instanceof SgdsDataTableCell).length\n : 0;\n\n const hasExpand = this.tableRows.some(row => row.expand);\n const controlColumns = (this.multiSelect ? 1 : 0) + (hasExpand ? 1 : 0);\n const dataColumns = headerColumnCount || fallbackBodyColumnCount || 1;\n\n return Math.max(1, dataColumns + controlColumns);\n }\n\n private _renderLoadingSkeleton() {\n const skeletonColumns = this._getSkeletonColumnCount();\n const skeletonRows = Math.max(1, this.itemsPerPage || 1);\n\n return html`<div class=\"loading\" role=\"status\" aria-live=\"polite\" aria-label=\"Loading\">\n <div class=\"loading-grid\" style=${`--sgds-data-table-loading-columns: ${skeletonColumns};`} aria-hidden=\"true\">\n ${Array.from(\n { length: skeletonRows },\n (_, rowIndex) =>\n html`<div class=\"loading-grid-row\" key=${rowIndex}>\n ${Array.from(\n { length: skeletonColumns },\n () => html`<sgds-skeleton .height=${\"56px\"} .borderRadius=${\"4px\"}></sgds-skeleton>`\n )}\n </div>`\n )}\n </div>\n </div>`;\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has(\"currentPage\") || changed.has(\"itemsPerPage\") || changed.has(\"mode\") || changed.has(\"isLoading\")) {\n this._updateVisibleRows();\n }\n if (changed.has(\"multiSelect\")) {\n this._configureRows();\n }\n\n if (this.multiSelect && (changed.has(\"tableRows\") || changed.has(\"headerRows\"))) {\n this._syncHeaderCheckboxAfterRender();\n }\n }\n\n render() {\n const total = this.dataLength || this.tableRows.length;\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const end = Math.min(start + this.itemsPerPage, total);\n const displayStart = total === 0 ? 0 : start + 1;\n const showNoData = !this.isLoading && this.tableRows.length === 0;\n const showFooter = total !== 0;\n\n return html`\n <div class=\"data-table\">\n <div class=\"table-container\">\n <slot @slotchange=${this._handleSlotChange} @i-sgds-sort=${this._handleSort} class=\"table\"></slot>\n ${this.isLoading\n ? this._renderLoadingSkeleton()\n : showNoData\n ? html`<slot name=\"no-data\" class=\"no-data\" role=\"status\" aria-live=\"polite\">No data</slot>`\n : nothing}\n </div>\n\n ${showFooter\n ? html`<div class=\"footer\">\n ${this.footerText || html`<span>Showing ${displayStart} to ${end} of ${total} results</span>`}\n <sgds-pagination\n .dataLength=${total}\n .currentPage=${this.currentPage}\n .itemsPerPage=${this.itemsPerPage}\n .variant=${this.paginationVariant}\n size=\"sm\"\n @sgds-page-change=${(e: CustomEvent<ISgdsPaginationPageChangeEventDetail>) => {\n this.currentPage = e.detail.currentPage;\n this.emit(\"sgds-page-change\");\n }}\n ></sgds-pagination>\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n\nexport default SgdsDataTable;\n"],"names":["tableStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-data-table.js","sources":["../../../../src/components/DataTable/sgds-data-table.ts"],"sourcesContent":["import { css, html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport tableStyle from \"./data-table.css\";\nimport SgdsPagination from \"../Pagination/sgds-pagination\";\nimport type { ISgdsPaginationPageChangeEventDetail } from \"../Pagination/sgds-pagination\";\nimport SgdsDataTableRow from \"./sgds-data-table-row\";\nimport SgdsDataTableCell from \"./sgds-data-table-cell\";\nimport SgdsDataTableHead from \"./sgds-data-table-head\";\nimport SgdsSkeleton from \"../Skeleton/sgds-skeleton\";\nimport type { ISgdsDataTableRowSelectEventDetail, ISgdsDataTableSortEventDetail } from \"./types\";\nexport type { ISgdsDataTableRowSelectEventDetail, ISgdsDataTableSortEventDetail };\n\n/**\n * @summary A data table container with pagination, row selection, loading, and sorting support.\n *\n * @slot default - Insert one or more `sgds-data-table-row` elements.\n * @slot no-data - Custom content rendered when no body rows are available and `loading` is false.\n *\n * @event sgds-row-select - Emitted when row checkboxes change. Detail: `{ selected: Record<string, string>[] }`.\n * @event sgds-sort - Emitted when `serverSort` is true and a sorting column header is clicked.\n * Detail: `{ key: string; direction: \"ascending\" | \"descending\" | \"none\" }`.\n * @event sgds-page-change - Emitted when pagination changes page.\n */\nexport class SgdsDataTable extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n tableStyle,\n css`\n :host {\n display: block;\n }\n `\n ];\n\n /** @internal */\n static dependencies = {\n \"sgds-pagination\": SgdsPagination,\n \"sgds-data-table-cell\": SgdsDataTableCell,\n \"sgds-data-table-head\": SgdsDataTableHead,\n \"sgds-skeleton\": SgdsSkeleton\n };\n\n /** If true, renders a checkbox column for row selection. */\n @property({ type: Boolean }) multiSelect = false;\n\n /** Total number of data items (for server-side pagination). */\n @property({ type: Number }) dataLength = 0;\n\n /** Current page (1-based). */\n @property({ type: Number }) currentPage = 1;\n\n /** Number of rows per page. */\n @property({ type: Number }) itemsPerPage = 5;\n\n /** Custom text shown on the footer's left side. */\n @property({ type: String }) paginationSummary = \"\";\n\n /** When true, shows a loading state and hides body rows. */\n @property({ type: Boolean }) loading = false;\n\n /** When true, emits sort events for external handling instead of local sorting. */\n @property({ type: Boolean }) serverSort = false;\n\n /** Variant forwarded to the internal pagination component. */\n @property({ type: String }) paginationVariant: \"default\" | \"number\" | \"button\" | \"description\" = \"default\";\n\n /**\n * Controls the CSS `table-layout` algorithm.\n * Use \"auto\" to let the browser size columns based on content, or \"fixed\" to distribute column widths evenly regardless of content.\n * @type {\"auto\" | \"fixed\"}\n * @default \"auto\"\n */\n @property({ type: String, reflect: true }) layout: \"auto\" | \"fixed\" = \"auto\";\n\n /**\n * Pagination mode. `client` (default) slices rows and renders pagination controls.\n * `server` renders all slotted rows as-is — the caller is responsible for passing\n * the correct page of data and handling `sgds-page-change` externally.\n */\n @property({ type: String }) mode: \"client\" | \"server\" = \"client\";\n\n @state() private tableRows: SgdsDataTableRow[] = [];\n @state() private headerRows: SgdsDataTableRow[] = [];\n\n private _headerCells: SgdsDataTableHead[] = [];\n private _initialRowPositions = new WeakMap<SgdsDataTableRow, number>();\n private _hasCapturedInitialRowPositions = false;\n\n private _rowHandlers = new WeakMap<SgdsDataTableRow, EventListener>();\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"table\");\n }\n\n private _isRowChecked(row: SgdsDataTableRow) {\n return row.checked || row.checkbox?.checked === true;\n }\n\n private _updateHeaderCheckbox() {\n const checkedCount = this.tableRows.filter(r => this._isRowChecked(r)).length;\n\n const allChecked = checkedCount === this.tableRows.length && checkedCount > 0;\n\n this.headerRows.forEach(r => {\n r.checked = allChecked;\n if (r.checkbox) {\n r.checkbox.checked = allChecked;\n r.checkbox.indeterminate = checkedCount > 0 && !allChecked;\n }\n });\n }\n\n private async _syncHeaderCheckboxAfterRender() {\n if (!this.multiSelect || this.headerRows.length === 0) return;\n\n const rows = [...this.headerRows, ...this.tableRows];\n await Promise.all(rows.map(row => row.updateComplete));\n this._updateHeaderCheckbox();\n }\n\n private _emitRowSelect() {\n const selected = this.tableRows.filter(r => this._isRowChecked(r)).map(r => this._getRowData(r));\n this.emit(\"sgds-row-select\", { detail: { selected } });\n }\n\n private _attachRowListener(row: SgdsDataTableRow) {\n const old = this._rowHandlers.get(row);\n if (old) row.removeEventListener(\"i-sgds-change\", old);\n\n const handler: EventListener = (e: Event) => {\n const { checked } = (e as CustomEvent<{ checked: boolean }>).detail;\n\n if (this.headerRows.includes(row)) {\n this.tableRows.forEach(r => {\n r.checked = checked;\n if (r.checkbox) r.checkbox.checked = checked;\n });\n } else {\n row.checked = checked;\n this._updateHeaderCheckbox();\n }\n this._emitRowSelect();\n };\n\n this._rowHandlers.set(row, handler);\n row.addEventListener(\"i-sgds-change\", handler);\n }\n\n private _configureRows() {\n const hasExpand = this.tableRows.some(r => r.expand);\n const hasDataRows = this.tableRows.length > 0;\n\n this.headerRows.forEach(row => {\n row.showCheckbox = this.multiSelect;\n row.showExpandPlaceholder = hasExpand;\n row.hasDataRows = hasDataRows;\n if (this.multiSelect) this._attachRowListener(row);\n });\n\n this.tableRows.forEach(row => {\n row.showCheckbox = this.multiSelect;\n row.showExpandPlaceholder = !row.expand && hasExpand;\n if (this.multiSelect) this._attachRowListener(row);\n });\n\n if (this.multiSelect) {\n this._syncHeaderCheckboxAfterRender();\n }\n\n this._applyColumnAlignment();\n }\n\n private _applyColumnAlignment() {\n const headerAlignments = this._headerCells.reduce<Array<\"left\" | \"right\">>((acc, header) => {\n const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;\n const alignment = header.textAlign ?? \"left\";\n for (let i = 0; i < span; i++) {\n acc.push(alignment);\n }\n return acc;\n }, []);\n\n this.headerRows.forEach(row => {\n row.columnAlignments = [...headerAlignments];\n });\n\n this.tableRows.forEach(row => {\n row.columnAlignments = [...headerAlignments];\n });\n }\n\n private _extractCellText(row: SgdsDataTableRow, columnIndex: number) {\n const rowCellText = row.getCellText(columnIndex);\n if (rowCellText) return rowCellText;\n\n const cells = Array.from(row.children).filter(child => child.tagName.toLowerCase() === \"sgds-data-table-cell\");\n const cell = cells[columnIndex];\n return (cell?.textContent || \"\").trim();\n }\n\n private _getRowData(row: SgdsDataTableRow): Record<string, string> {\n const data: Record<string, string> = {};\n this._headerCells.forEach((header, index) => {\n const key = header.sortKey || (header.textContent ?? \"\").trim() || `col-${index}`;\n data[key] = this._extractCellText(row, index);\n });\n return data;\n }\n\n private _toComparableValue(row: SgdsDataTableRow, _key: string, columnIndex: number) {\n return this._extractCellText(row, columnIndex);\n }\n\n private _compareValues(left: unknown, right: unknown, direction: \"ascending\" | \"descending\") {\n if (left === right) return 0;\n\n const leftNumber = Number(left);\n const rightNumber = Number(right);\n const bothNumeric = Number.isFinite(leftNumber) && Number.isFinite(rightNumber);\n\n if (bothNumeric) {\n return direction === \"ascending\" ? leftNumber - rightNumber : rightNumber - leftNumber;\n }\n\n const cmp = String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: \"base\" });\n return direction === \"ascending\" ? cmp : -cmp;\n }\n\n private _resetOtherHeaderSortStates(activeHeader: SgdsDataTableHead | null) {\n this._headerCells.forEach(header => {\n if (header !== activeHeader && header.sorting) {\n header.sortDirection = \"none\";\n }\n });\n }\n\n private _getRowsInInitialPositionOrder(rows: SgdsDataTableRow[]) {\n return [...rows].sort((left, right) => {\n const leftPosition = this._initialRowPositions.get(left);\n const rightPosition = this._initialRowPositions.get(right);\n\n if (leftPosition === undefined && rightPosition === undefined) return 0;\n if (leftPosition === undefined) return 1;\n if (rightPosition === undefined) return -1;\n return leftPosition - rightPosition;\n });\n }\n\n private _captureInitialRowPositions(rows: SgdsDataTableRow[]) {\n if (this._hasCapturedInitialRowPositions) return;\n\n rows.forEach((row, index) => {\n this._initialRowPositions.set(row, index);\n });\n\n this._hasCapturedInitialRowPositions = true;\n }\n\n private _handleSort(e: Event) {\n const activeHeader = e.composedPath().find(node => node instanceof SgdsDataTableHead) as\n | SgdsDataTableHead\n | undefined;\n\n if (!activeHeader || !activeHeader.sorting) return;\n\n const { key, direction } = (e as CustomEvent<ISgdsDataTableSortEventDetail>).detail;\n const columnIndex = activeHeader ? this._headerCells.indexOf(activeHeader) : -1;\n\n this._resetOtherHeaderSortStates(activeHeader);\n\n if (this.serverSort) {\n e.stopPropagation();\n this.emit(\"sgds-sort\", { detail: { key, direction } });\n return;\n }\n\n if (columnIndex < 0) return;\n\n if (direction === \"none\") {\n this.tableRows = this._getRowsInInitialPositionOrder(this.tableRows);\n this._syncDomRowOrder();\n this._updateVisibleRows();\n return;\n }\n\n if (this.mode === \"client\") {\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const end = start + this.itemsPerPage;\n const nextRows = [...this.tableRows];\n\n const sortedVisibleRows = nextRows.slice(start, end).sort((left, right) => {\n const leftValue = this._toComparableValue(left, key, columnIndex);\n const rightValue = this._toComparableValue(right, key, columnIndex);\n return this._compareValues(leftValue, rightValue, direction);\n });\n nextRows.splice(start, sortedVisibleRows.length, ...sortedVisibleRows);\n\n this.tableRows = nextRows;\n this._syncDomRowOrder();\n this._updateVisibleRows();\n return;\n }\n\n this.tableRows = [...this.tableRows].sort((left, right) => {\n const leftValue = this._toComparableValue(left, key, columnIndex);\n const rightValue = this._toComparableValue(right, key, columnIndex);\n return this._compareValues(leftValue, rightValue, direction);\n });\n\n this._syncDomRowOrder();\n this._updateVisibleRows();\n }\n\n private _syncDomRowOrder() {\n const parent = this.tableRows[0]?.parentElement;\n if (!parent) return;\n this.tableRows.forEach(row => parent.appendChild(row));\n }\n\n private _handleSlotChange(e: Event) {\n const slotted = (e.target as HTMLSlotElement)\n .assignedElements({ flatten: true })\n .filter(el => el instanceof SgdsDataTableRow) as SgdsDataTableRow[];\n\n const rowTableChildren = (row: SgdsDataTableRow) =>\n Array.from(row.children).filter(child => {\n const tagName = child.tagName.toLowerCase();\n const isTableCell = tagName === \"sgds-data-table-cell\" || tagName === \"sgds-data-table-head\";\n if (!isTableCell) return false;\n return child.getAttribute(\"slot\") !== \"content\";\n });\n\n this.headerRows = slotted.filter(row =>\n rowTableChildren(row).some(child => child.tagName.toLowerCase() === \"sgds-data-table-head\")\n );\n\n this.tableRows = slotted.filter(row => {\n const children = rowTableChildren(row);\n return children.length > 0 && children.every(child => child.tagName.toLowerCase() === \"sgds-data-table-cell\");\n });\n\n this._headerCells = this.headerRows.reduce<SgdsDataTableHead[]>((acc, row) => {\n const headers = Array.from(row.children).filter(\n child => child instanceof SgdsDataTableHead\n ) as SgdsDataTableHead[];\n acc.push(...headers);\n return acc;\n }, []);\n\n this._captureInitialRowPositions(this.tableRows);\n\n this._headerCells.forEach(header => {\n if (header.sorting && !header.sortDirection) {\n header.sortDirection = \"none\";\n }\n });\n\n this._configureRows();\n this._updateVisibleRows();\n }\n\n private _updateVisibleRows() {\n if (this.loading) {\n this.tableRows.forEach(row => (row.style.display = \"none\"));\n return;\n }\n\n if (this.mode === \"server\") {\n this.tableRows.forEach(row => (row.style.display = \"\"));\n return;\n }\n\n const total = this.dataLength || this.tableRows.length;\n const lastPage = Math.max(1, Math.ceil(total / this.itemsPerPage));\n if (this.currentPage > lastPage) {\n this.currentPage = lastPage;\n return;\n }\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const visible = new Set(this.tableRows.slice(start, start + this.itemsPerPage));\n this.tableRows.forEach(row => (row.style.display = visible.has(row) ? \"\" : \"none\"));\n }\n\n private _getSkeletonColumnCount(): { dataColumns: number; hasExpand: boolean; hasCheckbox: boolean } {\n const headerColumnCount = this._headerCells.reduce((count, header) => {\n const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;\n return count + span;\n }, 0);\n\n const firstBodyRow = this.tableRows[0];\n const fallbackBodyColumnCount = firstBodyRow\n ? Array.from(firstBodyRow.children).filter(child => child instanceof SgdsDataTableCell).length\n : 0;\n\n const hasExpand = this.tableRows.some(row => row.expand);\n const dataColumns = headerColumnCount || fallbackBodyColumnCount || 1;\n\n return { dataColumns, hasExpand, hasCheckbox: this.multiSelect };\n }\n\n private _renderLoadingSkeleton() {\n const { dataColumns, hasExpand, hasCheckbox } = this._getSkeletonColumnCount();\n const skeletonRows = Math.max(1, this.itemsPerPage || 1);\n\n return Array.from(\n { length: skeletonRows },\n () =>\n html`<div class=\"skeleton-row\" role=\"presentation\">\n ${hasExpand\n ? html`<div class=\"skeleton-cell control-cell\">\n <sgds-skeleton .height=${\"20px\"} .width=${\"20px\"} .borderRadius=${\"4px\"}></sgds-skeleton>\n </div>`\n : nothing}\n ${hasCheckbox\n ? html`<div class=\"skeleton-cell control-cell\">\n <sgds-skeleton .height=${\"24px\"} .width=${\"24px\"} .borderRadius=${\"4px\"}></sgds-skeleton>\n </div>`\n : nothing}\n ${Array.from(\n { length: dataColumns },\n () =>\n html`<div class=\"skeleton-cell\">\n <sgds-skeleton .height=${\"100%\"} .borderRadius=${\"4px\"}></sgds-skeleton>\n </div>`\n )}\n </div>`\n );\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has(\"currentPage\") || changed.has(\"itemsPerPage\") || changed.has(\"mode\") || changed.has(\"loading\")) {\n this._updateVisibleRows();\n }\n if (changed.has(\"multiSelect\")) {\n this._configureRows();\n }\n\n if (this.multiSelect && (changed.has(\"tableRows\") || changed.has(\"headerRows\"))) {\n this._syncHeaderCheckboxAfterRender();\n }\n }\n\n render() {\n const total = this.dataLength || this.tableRows.length;\n const start = (this.currentPage - 1) * this.itemsPerPage;\n const end = Math.min(start + this.itemsPerPage, total);\n const displayStart = total === 0 ? 0 : start + 1;\n const showNoData = !this.loading && this.tableRows.length === 0;\n const showFooter = total !== 0;\n\n return html`\n <div class=\"data-table\">\n <div class=\"table-container\">\n <div class=\"table\">\n <slot @slotchange=${this._handleSlotChange} @i-sgds-sort=${this._handleSort}></slot>\n ${this.loading ? this._renderLoadingSkeleton() : nothing}\n </div>\n ${!this.loading && showNoData\n ? html`<slot name=\"no-data\" class=\"no-data\" role=\"status\" aria-live=\"polite\">No data</slot>`\n : nothing}\n </div>\n\n ${showFooter\n ? html`<div class=\"footer\">\n ${this.loading\n ? html`<span></span>`\n : this.paginationSummary || html`<span>Showing ${displayStart} to ${end} of ${total} results</span>`}\n <sgds-pagination\n .dataLength=${total}\n .currentPage=${this.currentPage}\n .itemsPerPage=${this.itemsPerPage}\n .variant=${this.paginationVariant}\n size=\"sm\"\n @sgds-page-change=${(e: CustomEvent<ISgdsPaginationPageChangeEventDetail>) => {\n this.currentPage = e.detail.currentPage;\n this.emit(\"sgds-page-change\");\n }}\n ></sgds-pagination>\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n\nexport default SgdsDataTable;\n"],"names":["tableStyle"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var lit = require('lit');
7
7
 
8
- var css_248z = lit.css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.dropdown-item.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-40);pointer-events:none}.dropdown-item.readonly{cursor:default}.dropdown-item.readonly:focus,.dropdown-item.readonly:focus-visible,.dropdown-item.readonly:hover{background-color:var(--sgds-bg-transparent);outline:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}::slotted(a),::slotted(sgds-checkbox){flex:1;margin:calc(var(--sgds-padding-sm)*-1) calc(var(--sgds-padding-lg)*-1);padding:var(--sgds-padding-sm) var(--sgds-padding-lg)}.dropdown-item.mainnav-dropdown-link{padding:var(--sgds-padding-none)}.dropdown-item.mainnav-dropdown-link ::slotted(*){box-sizing:border-box;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}@media screen and (min-width:1024px){.dropdown-item.mainnav-dropdown-link ::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
8
+ var css_248z = lit.css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.dropdown-item.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-40);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}::slotted(a),::slotted(sgds-checkbox){flex:1;margin:calc(var(--sgds-padding-sm)*-1) calc(var(--sgds-padding-lg)*-1);padding:var(--sgds-padding-sm) var(--sgds-padding-lg)}.dropdown-item.mainnav-dropdown-link{padding:var(--sgds-padding-none)}.dropdown-item.mainnav-dropdown-link ::slotted(*){box-sizing:border-box;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}@media screen and (min-width:1024px){.dropdown-item.mainnav-dropdown-link ::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=dropdown-item.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.dropdown-item.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-40);pointer-events:none}.dropdown-item.readonly{cursor:default}.dropdown-item.readonly:focus,.dropdown-item.readonly:focus-visible,.dropdown-item.readonly:hover{background-color:var(--sgds-bg-transparent);outline:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}::slotted(a),::slotted(sgds-checkbox){flex:1;margin:calc(var(--sgds-padding-sm)*-1) calc(var(--sgds-padding-lg)*-1);padding:var(--sgds-padding-sm) var(--sgds-padding-lg)}.dropdown-item.mainnav-dropdown-link{padding:var(--sgds-padding-none)}.dropdown-item.mainnav-dropdown-link ::slotted(*){box-sizing:border-box;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}@media screen and (min-width:1024px){.dropdown-item.mainnav-dropdown-link ::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
4
+ var css_248z = css`:host([disabled]){cursor:not-allowed}.dropdown-item{align-items:center;background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-sm);padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item:hover{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background-color:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.dropdown-item.active{background-color:var(--sgds-bg-translucent-subtle);color:var(--sgds-primary-color-default);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{opacity:var(--sgds-opacity-40);pointer-events:none}::slotted(*){color:inherit!important;display:flex;gap:var(--sgds-gap-sm);text-decoration:none!important}::slotted(a),::slotted(sgds-checkbox){flex:1;margin:calc(var(--sgds-padding-sm)*-1) calc(var(--sgds-padding-lg)*-1);padding:var(--sgds-padding-sm) var(--sgds-padding-lg)}.dropdown-item.mainnav-dropdown-link{padding:var(--sgds-padding-none)}.dropdown-item.mainnav-dropdown-link ::slotted(*){box-sizing:border-box;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}@media screen and (min-width:1024px){.dropdown-item.mainnav-dropdown-link ::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=dropdown-item.js.map
@@ -24,8 +24,6 @@ class SgdsDropdownItem extends sgdsElement["default"] {
24
24
  this.active = false;
25
25
  /** Disables the SgdsMainnavItem */
26
26
  this.disabled = false;
27
- /** When true, removes interactive styles (hover, cursor) for non-navigational display items */
28
- this.readonly = false;
29
27
  /** Forwards aria-label to the inner clickable element for accessibility */
30
28
  this.ariaLabel = "";
31
29
  }
@@ -44,10 +42,9 @@ class SgdsDropdownItem extends sgdsElement["default"] {
44
42
  <div
45
43
  class="dropdown-item ${classMap_js.classMap({
46
44
  disabled: this.disabled,
47
- active: this.active,
48
- readonly: this.readonly
45
+ active: this.active
49
46
  })}"
50
- tabindex=${this.disabled || this.readonly ? "-1" : "0"}
47
+ tabindex=${this.disabled ? "-1" : "0"}
51
48
  aria-label=${ifDefined_js.ifDefined(this.ariaLabel || undefined)}
52
49
  >
53
50
  <slot></slot>
@@ -68,9 +65,6 @@ tslib.__decorate([
68
65
  tslib.__decorate([
69
66
  decorators_js.property({ type: Boolean, reflect: true })
70
67
  ], SgdsDropdownItem.prototype, "disabled", void 0);
71
- tslib.__decorate([
72
- decorators_js.property({ type: Boolean, reflect: true })
73
- ], SgdsDropdownItem.prototype, "readonly", void 0);
74
68
  tslib.__decorate([
75
69
  decorators_js.property({ type: String })
76
70
  ], SgdsDropdownItem.prototype, "ariaLabel", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-dropdown-item.cjs.js","sources":["../../../../src/components/Dropdown/sgds-dropdown-item.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport dropdownItemStyle from \"./dropdown-item.css\";\nimport dropdownStyle from \"./dropdown.css\";\n/**\n * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`\n * @slot default - The default slot for SgdsDropdownItem. Pass in a single anchor tag per dropdown item directly for navigation items.\n */\nexport class SgdsDropdownItem extends SgdsElement {\n static styles = [dropdownStyle, dropdownItemStyle];\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal */\n @queryAssignedElements({ flatten: true }) private anchor: HTMLAnchorElement[];\n\n /** when true, sets the active stylings of dropdown item */\n @property({ type: Boolean })\n active = false;\n\n /** Disables the SgdsMainnavItem */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** When true, removes interactive styles (hover, cursor) for non-navigational display items */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /** Forwards aria-label to the inner clickable element for accessibility */\n @property({ type: String })\n ariaLabel = \"\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\" && this.anchor.length > 0) {\n this.anchor[0].click();\n }\n });\n this.setAttribute(\"role\", \"menuitem\");\n this.setAttribute(\"aria-disabled\", `${this.disabled}`);\n }\n\n render() {\n return html`\n <div\n class=\"dropdown-item ${classMap({\n disabled: this.disabled,\n active: this.active,\n readonly: this.readonly\n })}\"\n tabindex=${this.disabled || this.readonly ? \"-1\" : \"0\"}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport default SgdsDropdownItem;\n"],"names":["SgdsElement","html","classMap","ifDefined","dropdownStyle","dropdownItemStyle","SgdsIcon","__decorate","queryAssignedElements","property"],"mappings":";;;;;;;;;;;;;;;AAQA;;;AAGG;AACG,MAAO,gBAAiB,SAAQA,sBAAW,CAAA;AAAjD,IAAA,WAAA,GAAA;;;QAWE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAIf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KA4BhB;IA1BC,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,KAAI;AACpD,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KACxD;IAED,MAAM,GAAA;AACJ,QAAA,OAAOC,QAAI,CAAA,CAAA;;AAEgB,6BAAA,EAAAC,oBAAQ,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;AACS,iBAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AACzC,mBAAA,EAAAC,sBAAS,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;;;;KAItD,CAAC;KACH;;AAjDM,gBAAA,CAAA,MAAM,GAAG,CAACC,mBAAa,EAAEC,uBAAiB,CAAC,CAAC;AAC5C,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAEC,iBAAQ;AACtB,CAFkB,CAEjB;AAGgDC,gBAAA,CAAA;AAAjD,IAAAC,mCAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI9ED,gBAAA,CAAA;AADC,IAAAE,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIfF,gBAAA,CAAA;IADCE,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjBF,gBAAA,CAAA;IADCE,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjBF,gBAAA,CAAA;AADC,IAAAE,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"sgds-dropdown-item.cjs.js","sources":["../../../../src/components/Dropdown/sgds-dropdown-item.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport dropdownItemStyle from \"./dropdown-item.css\";\nimport dropdownStyle from \"./dropdown.css\";\n/**\n * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`\n * @slot default - The default slot for SgdsDropdownItem. Pass in a single anchor tag per dropdown item directly for navigation items.\n */\nexport class SgdsDropdownItem extends SgdsElement {\n static styles = [dropdownStyle, dropdownItemStyle];\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal */\n @queryAssignedElements({ flatten: true }) private anchor: HTMLAnchorElement[];\n\n /** when true, sets the active stylings of dropdown item */\n @property({ type: Boolean })\n active = false;\n\n /** Disables the SgdsMainnavItem */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Forwards aria-label to the inner clickable element for accessibility */\n @property({ type: String })\n ariaLabel = \"\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\" && this.anchor.length > 0) {\n this.anchor[0].click();\n }\n });\n this.setAttribute(\"role\", \"menuitem\");\n this.setAttribute(\"aria-disabled\", `${this.disabled}`);\n }\n\n render() {\n return html`\n <div\n class=\"dropdown-item ${classMap({\n disabled: this.disabled,\n active: this.active\n })}\"\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport default SgdsDropdownItem;\n"],"names":["SgdsElement","html","classMap","ifDefined","dropdownStyle","dropdownItemStyle","SgdsIcon","__decorate","queryAssignedElements","property"],"mappings":";;;;;;;;;;;;;;;AAQA;;;AAGG;AACG,MAAO,gBAAiB,SAAQA,sBAAW,CAAA;AAAjD,IAAA,WAAA,GAAA;;;QAWE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAIf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KA2BhB;IAzBC,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,KAAI;AACpD,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KACxD;IAED,MAAM,GAAA;AACJ,QAAA,OAAOC,QAAI,CAAA,CAAA;;AAEgB,6BAAA,EAAAC,oBAAQ,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;mBACS,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AACxB,mBAAA,EAAAC,sBAAS,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;;;;KAItD,CAAC;KACH;;AA5CM,gBAAA,CAAA,MAAM,GAAG,CAACC,mBAAa,EAAEC,uBAAiB,CAAC,CAAC;AAC5C,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAEC,iBAAQ;AACtB,CAFkB,CAEjB;AAGgDC,gBAAA,CAAA;AAAjD,IAAAC,mCAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI9ED,gBAAA,CAAA;AADC,IAAAE,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIfF,gBAAA,CAAA;IADCE,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjBF,gBAAA,CAAA;AADC,IAAAE,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
@@ -20,8 +20,6 @@ class SgdsDropdownItem extends SgdsElement {
20
20
  this.active = false;
21
21
  /** Disables the SgdsMainnavItem */
22
22
  this.disabled = false;
23
- /** When true, removes interactive styles (hover, cursor) for non-navigational display items */
24
- this.readonly = false;
25
23
  /** Forwards aria-label to the inner clickable element for accessibility */
26
24
  this.ariaLabel = "";
27
25
  }
@@ -40,10 +38,9 @@ class SgdsDropdownItem extends SgdsElement {
40
38
  <div
41
39
  class="dropdown-item ${classMap({
42
40
  disabled: this.disabled,
43
- active: this.active,
44
- readonly: this.readonly
41
+ active: this.active
45
42
  })}"
46
- tabindex=${this.disabled || this.readonly ? "-1" : "0"}
43
+ tabindex=${this.disabled ? "-1" : "0"}
47
44
  aria-label=${ifDefined(this.ariaLabel || undefined)}
48
45
  >
49
46
  <slot></slot>
@@ -64,9 +61,6 @@ __decorate([
64
61
  __decorate([
65
62
  property({ type: Boolean, reflect: true })
66
63
  ], SgdsDropdownItem.prototype, "disabled", void 0);
67
- __decorate([
68
- property({ type: Boolean, reflect: true })
69
- ], SgdsDropdownItem.prototype, "readonly", void 0);
70
64
  __decorate([
71
65
  property({ type: String })
72
66
  ], SgdsDropdownItem.prototype, "ariaLabel", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-dropdown-item.js","sources":["../../../../src/components/Dropdown/sgds-dropdown-item.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport dropdownItemStyle from \"./dropdown-item.css\";\nimport dropdownStyle from \"./dropdown.css\";\n/**\n * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`\n * @slot default - The default slot for SgdsDropdownItem. Pass in a single anchor tag per dropdown item directly for navigation items.\n */\nexport class SgdsDropdownItem extends SgdsElement {\n static styles = [dropdownStyle, dropdownItemStyle];\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal */\n @queryAssignedElements({ flatten: true }) private anchor: HTMLAnchorElement[];\n\n /** when true, sets the active stylings of dropdown item */\n @property({ type: Boolean })\n active = false;\n\n /** Disables the SgdsMainnavItem */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** When true, removes interactive styles (hover, cursor) for non-navigational display items */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /** Forwards aria-label to the inner clickable element for accessibility */\n @property({ type: String })\n ariaLabel = \"\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\" && this.anchor.length > 0) {\n this.anchor[0].click();\n }\n });\n this.setAttribute(\"role\", \"menuitem\");\n this.setAttribute(\"aria-disabled\", `${this.disabled}`);\n }\n\n render() {\n return html`\n <div\n class=\"dropdown-item ${classMap({\n disabled: this.disabled,\n active: this.active,\n readonly: this.readonly\n })}\"\n tabindex=${this.disabled || this.readonly ? \"-1\" : \"0\"}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport default SgdsDropdownItem;\n"],"names":["dropdownStyle","dropdownItemStyle"],"mappings":";;;;;;;;;;;AAQA;;;AAGG;AACG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAAjD,IAAA,WAAA,GAAA;;;QAWE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAIf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KA4BhB;IA1BC,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,KAAI;AACpD,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KACxD;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEgB,6BAAA,EAAA,QAAQ,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;AACS,iBAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AACzC,mBAAA,EAAA,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;;;;KAItD,CAAC;KACH;;AAjDM,gBAAA,CAAA,MAAM,GAAG,CAACA,QAAa,EAAEC,UAAiB,CAAC,CAAC;AAC5C,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAE,QAAQ;AACtB,CAFkB,CAEjB;AAGgD,UAAA,CAAA;AAAjD,IAAA,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI9E,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIf,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjB,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sgds-dropdown-item.js","sources":["../../../../src/components/Dropdown/sgds-dropdown-item.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport dropdownItemStyle from \"./dropdown-item.css\";\nimport dropdownStyle from \"./dropdown.css\";\n/**\n * @summary `SgdsDropdownItem` are navigation links built with `HTMLAnchorElement`. It should be used in the default slot of `SgdsDropdown`\n * @slot default - The default slot for SgdsDropdownItem. Pass in a single anchor tag per dropdown item directly for navigation items.\n */\nexport class SgdsDropdownItem extends SgdsElement {\n static styles = [dropdownStyle, dropdownItemStyle];\n static dependencies = {\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal */\n @queryAssignedElements({ flatten: true }) private anchor: HTMLAnchorElement[];\n\n /** when true, sets the active stylings of dropdown item */\n @property({ type: Boolean })\n active = false;\n\n /** Disables the SgdsMainnavItem */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Forwards aria-label to the inner clickable element for accessibility */\n @property({ type: String })\n ariaLabel = \"\";\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\" && this.anchor.length > 0) {\n this.anchor[0].click();\n }\n });\n this.setAttribute(\"role\", \"menuitem\");\n this.setAttribute(\"aria-disabled\", `${this.disabled}`);\n }\n\n render() {\n return html`\n <div\n class=\"dropdown-item ${classMap({\n disabled: this.disabled,\n active: this.active\n })}\"\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport default SgdsDropdownItem;\n"],"names":["dropdownStyle","dropdownItemStyle"],"mappings":";;;;;;;;;;;AAQA;;;AAGG;AACG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAAjD,IAAA,WAAA,GAAA;;;QAWE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAIf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAIjB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KA2BhB;IAzBC,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,KAAI;AACpD,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KACxD;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEgB,6BAAA,EAAA,QAAQ,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;mBACS,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AACxB,mBAAA,EAAA,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;;;;KAItD,CAAC;KACH;;AA5CM,gBAAA,CAAA,MAAM,GAAG,CAACA,QAAa,EAAEC,UAAiB,CAAC,CAAC;AAC5C,gBAAA,CAAA,YAAY,GAAG;AACpB,IAAA,WAAW,EAAE,QAAQ;AACtB,CAFkB,CAEjB;AAGgD,UAAA,CAAA;AAAjD,IAAA,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI9E,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIf,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIjB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -142,7 +142,7 @@ class SgdsFooter extends sgdsElement["default"] {
142
142
  >
143
143
  </li>
144
144
  <li>
145
- <sgds-link size="sm" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of use</a></sgds-link>
145
+ <sgds-link size="sm" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of Use</a></sgds-link>
146
146
  </li>
147
147
  </ul>
148
148
  <div class="footer-copyrights">© ${new Date().getFullYear()}, ${this.copyrightLiner}</div>
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-footer.cjs.js","sources":["../../../../src/components/Footer/sgds-footer.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsLink from \"../Link/sgds-link\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { watch } from \"../../utils/watch\";\nimport footerStyle from \"./footer.css\";\nimport gridStyle from \"../../css/grid.css\";\nimport type { SgdsFooterItem } from \"./sgds-footer-item\";\n\n/**\n * @summary The footer contains supporting information for your service at the bottom of your website. All .gov.sg digital services shall contain a Global Footer Bar across all pages. The Global Footer Bar should include the name of the digital service, contact information, a privacy statement and the terms of use.\n *\n * @slot default - The slot for footer content. Use this slot if you want full control over the layout or styling. When provided, it replaces the `items` slot layout.\n * @slot title - The slot for title\n * @slot description - The slot for description\n * @slot items - the slot for the list of footer items, styled automatically with `.footer-items`. For custom layouts or styles, use the `default` slot instead.\n */\nexport class SgdsFooter extends SgdsElement {\n static styles = [...SgdsElement.styles, gridStyle, footerStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-link\": SgdsLink\n };\n\n /** Sets copyrightLiner of SgdsFooter */\n @property({ type: String })\n copyrightLiner = \"Government of Singapore\";\n\n /**\thref link for contacts */\n @property({ type: String })\n contactHref = \"#\";\n\n /**\thref link for feedback */\n @property({ type: String })\n feedbackHref = \"#\";\n\n /**\thref link for faq (optional) */\n @property({ type: String })\n faqHref = \"\";\n\n /**\thref link for sitemap (optional) */\n @property({ type: String })\n sitemapHref = \"\";\n\n /**\thref link for privacy statement */\n @property({ type: String })\n privacyHref = \"#\";\n\n /**\thref link for terms of use */\n @property({ type: String })\n termsOfUseHref = \"#\";\n\n /** Sets the layout context of the footer. Use \"sidebar\" when the footer is alongside a collapsible or persistent sidebar. Overlay sidebars should use \"default\". */\n @property({ type: String, reflect: true }) layout: \"default\" | \"sidebar\" = \"default\";\n\n /** Sets the color tone of the footer. Use \"neutral\" for light backgrounds (e.g. sidebar layouts). */\n @property({ type: String, reflect: true }) tone: \"fixed-dark\" | \"neutral\" = \"fixed-dark\";\n\n /** Used only for SSR to indicate the presence of the `default` slot. */\n @property({ type: Boolean }) hasDefaultSlot = false;\n\n /** Used only for SSR to indicate the presence of the `title` slot. */\n @property({ type: Boolean }) hasTitleSlot = false;\n\n /** Used only for SSR to indicate the presence of the `description` slot. */\n @property({ type: Boolean }) hasDescriptionSlot = false;\n\n /** Used only for SSR to indicate the presence of the `items` slot. */\n @property({ type: Boolean }) hasItemsSlot = false;\n\n private readonly hasSlotController = new HasSlotController(this, \"[default]\", \"title\", \"description\", \"items\");\n\n private _handleItemsSlotChange(e: Event) {\n const assignedElements = (e.target as HTMLSlotElement).assignedElements();\n assignedElements.forEach(el => {\n (el as SgdsFooterItem).tone = this.tone;\n });\n }\n\n @watch(\"tone\", { waitUntilFirstUpdate: true })\n _handleToneChange() {\n const itemsSlot = this.shadowRoot?.querySelector('slot[name=\"items\"]') as HTMLSlotElement | null;\n itemsSlot?.assignedElements().forEach(el => {\n (el as SgdsFooterItem).tone = this.tone;\n });\n }\n\n updated() {\n if (!this.hasDefaultSlot) this.hasDefaultSlot = this.hasSlotController.test(\"[default]\");\n if (!this.hasTitleSlot) this.hasTitleSlot = this.hasSlotController.test(\"title\");\n if (!this.hasDescriptionSlot) this.hasDescriptionSlot = this.hasSlotController.test(\"description\");\n if (!this.hasItemsSlot) this.hasItemsSlot = this.hasSlotController.test(\"items\");\n }\n\n private get _linkTone() {\n return this.tone === \"neutral\" ? \"neutral\" : \"fixed-light\";\n }\n\n render() {\n return html`\n <footer class=\"footer\">\n <section\n class=\"${classMap({\n \"footer-top\": this.hasDefaultSlot || this.hasTitleSlot || this.hasDescriptionSlot || this.hasItemsSlot,\n \"has-content\": this.hasDefaultSlot || this.hasItemsSlot,\n \"sgds-container\": this.layout === \"default\",\n \"sgds-container-sidebar\": this.layout === \"sidebar\"\n })}\"\n >\n <div class=\"footer-header\">\n <slot name=\"title\"></slot>\n <slot name=\"description\"></slot>\n </div>\n <div>\n ${this.hasDefaultSlot\n ? html`<slot></slot>`\n : html`\n <div class=\"footer-items\">\n <slot name=\"items\" @slotchange=${this._handleItemsSlotChange}></slot>\n </div>\n `}\n </div>\n </section>\n <section\n class=\"${classMap({\n \"footer-bottom\": true,\n \"sgds-container\": this.layout === \"default\",\n \"sgds-container-sidebar\": this.layout === \"sidebar\"\n })}\"\n >\n <div class=\"footer-mandatory-links\">\n <ul>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.contactHref}>Contact</a></sgds-link>\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.feedbackHref}>Feedback</a></sgds-link>\n </li>\n ${this.faqHref\n ? html`<li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.faqHref}>FAQ</a></sgds-link>\n </li>`\n : nothing}\n ${this.sitemapHref\n ? html`<li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.sitemapHref}>Sitemap</a></sgds-link>\n </li>`\n : nothing}\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}>\n <a href=\"https://tech.gov.sg/report_vulnerability\" target=\"_blank\" rel=\"noopener noreferrer\">\n Report Vulnerability\n </a>\n </sgds-link>\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}\n ><a href=${this.privacyHref}>Privacy Statement</a></sgds-link\n >\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of use</a></sgds-link>\n </li>\n </ul>\n <div class=\"footer-copyrights\">© ${new Date().getFullYear()}, ${this.copyrightLiner}</div>\n </div>\n </section>\n </footer>\n `;\n }\n}\n\nexport default SgdsFooter;\n"],"names":["SgdsElement","HasSlotController","html","classMap","nothing","gridStyle","footerStyle","SgdsLink","__decorate","property","watch"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-footer.cjs.js","sources":["../../../../src/components/Footer/sgds-footer.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsLink from \"../Link/sgds-link\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { watch } from \"../../utils/watch\";\nimport footerStyle from \"./footer.css\";\nimport gridStyle from \"../../css/grid.css\";\nimport type { SgdsFooterItem } from \"./sgds-footer-item\";\n\n/**\n * @summary The footer contains supporting information for your service at the bottom of your website. All .gov.sg digital services shall contain a Global Footer Bar across all pages. The Global Footer Bar should include the name of the digital service, contact information, a privacy statement and the terms of use.\n *\n * @slot default - The slot for footer content. Use this slot if you want full control over the layout or styling. When provided, it replaces the `items` slot layout.\n * @slot title - The slot for title\n * @slot description - The slot for description\n * @slot items - the slot for the list of footer items, styled automatically with `.footer-items`. For custom layouts or styles, use the `default` slot instead.\n */\nexport class SgdsFooter extends SgdsElement {\n static styles = [...SgdsElement.styles, gridStyle, footerStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-link\": SgdsLink\n };\n\n /** Sets copyrightLiner of SgdsFooter */\n @property({ type: String })\n copyrightLiner = \"Government of Singapore\";\n\n /**\thref link for contacts */\n @property({ type: String })\n contactHref = \"#\";\n\n /**\thref link for feedback */\n @property({ type: String })\n feedbackHref = \"#\";\n\n /**\thref link for faq (optional) */\n @property({ type: String })\n faqHref = \"\";\n\n /**\thref link for sitemap (optional) */\n @property({ type: String })\n sitemapHref = \"\";\n\n /**\thref link for privacy statement */\n @property({ type: String })\n privacyHref = \"#\";\n\n /**\thref link for terms of use */\n @property({ type: String })\n termsOfUseHref = \"#\";\n\n /** Sets the layout context of the footer. Use \"sidebar\" when the footer is alongside a collapsible or persistent sidebar. Overlay sidebars should use \"default\". */\n @property({ type: String, reflect: true }) layout: \"default\" | \"sidebar\" = \"default\";\n\n /** Sets the color tone of the footer. Use \"neutral\" for light backgrounds (e.g. sidebar layouts). */\n @property({ type: String, reflect: true }) tone: \"fixed-dark\" | \"neutral\" = \"fixed-dark\";\n\n /** Used only for SSR to indicate the presence of the `default` slot. */\n @property({ type: Boolean }) hasDefaultSlot = false;\n\n /** Used only for SSR to indicate the presence of the `title` slot. */\n @property({ type: Boolean }) hasTitleSlot = false;\n\n /** Used only for SSR to indicate the presence of the `description` slot. */\n @property({ type: Boolean }) hasDescriptionSlot = false;\n\n /** Used only for SSR to indicate the presence of the `items` slot. */\n @property({ type: Boolean }) hasItemsSlot = false;\n\n private readonly hasSlotController = new HasSlotController(this, \"[default]\", \"title\", \"description\", \"items\");\n\n private _handleItemsSlotChange(e: Event) {\n const assignedElements = (e.target as HTMLSlotElement).assignedElements();\n assignedElements.forEach(el => {\n (el as SgdsFooterItem).tone = this.tone;\n });\n }\n\n @watch(\"tone\", { waitUntilFirstUpdate: true })\n _handleToneChange() {\n const itemsSlot = this.shadowRoot?.querySelector('slot[name=\"items\"]') as HTMLSlotElement | null;\n itemsSlot?.assignedElements().forEach(el => {\n (el as SgdsFooterItem).tone = this.tone;\n });\n }\n\n updated() {\n if (!this.hasDefaultSlot) this.hasDefaultSlot = this.hasSlotController.test(\"[default]\");\n if (!this.hasTitleSlot) this.hasTitleSlot = this.hasSlotController.test(\"title\");\n if (!this.hasDescriptionSlot) this.hasDescriptionSlot = this.hasSlotController.test(\"description\");\n if (!this.hasItemsSlot) this.hasItemsSlot = this.hasSlotController.test(\"items\");\n }\n\n private get _linkTone() {\n return this.tone === \"neutral\" ? \"neutral\" : \"fixed-light\";\n }\n\n render() {\n return html`\n <footer class=\"footer\">\n <section\n class=\"${classMap({\n \"footer-top\": this.hasDefaultSlot || this.hasTitleSlot || this.hasDescriptionSlot || this.hasItemsSlot,\n \"has-content\": this.hasDefaultSlot || this.hasItemsSlot,\n \"sgds-container\": this.layout === \"default\",\n \"sgds-container-sidebar\": this.layout === \"sidebar\"\n })}\"\n >\n <div class=\"footer-header\">\n <slot name=\"title\"></slot>\n <slot name=\"description\"></slot>\n </div>\n <div>\n ${this.hasDefaultSlot\n ? html`<slot></slot>`\n : html`\n <div class=\"footer-items\">\n <slot name=\"items\" @slotchange=${this._handleItemsSlotChange}></slot>\n </div>\n `}\n </div>\n </section>\n <section\n class=\"${classMap({\n \"footer-bottom\": true,\n \"sgds-container\": this.layout === \"default\",\n \"sgds-container-sidebar\": this.layout === \"sidebar\"\n })}\"\n >\n <div class=\"footer-mandatory-links\">\n <ul>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.contactHref}>Contact</a></sgds-link>\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.feedbackHref}>Feedback</a></sgds-link>\n </li>\n ${this.faqHref\n ? html`<li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.faqHref}>FAQ</a></sgds-link>\n </li>`\n : nothing}\n ${this.sitemapHref\n ? html`<li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.sitemapHref}>Sitemap</a></sgds-link>\n </li>`\n : nothing}\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}>\n <a href=\"https://tech.gov.sg/report_vulnerability\" target=\"_blank\" rel=\"noopener noreferrer\">\n Report Vulnerability\n </a>\n </sgds-link>\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}\n ><a href=${this.privacyHref}>Privacy Statement</a></sgds-link\n >\n </li>\n <li>\n <sgds-link size=\"sm\" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of Use</a></sgds-link>\n </li>\n </ul>\n <div class=\"footer-copyrights\">© ${new Date().getFullYear()}, ${this.copyrightLiner}</div>\n </div>\n </section>\n </footer>\n `;\n }\n}\n\nexport default SgdsFooter;\n"],"names":["SgdsElement","HasSlotController","html","classMap","nothing","gridStyle","footerStyle","SgdsLink","__decorate","property","watch"],"mappings":"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"}
@@ -138,7 +138,7 @@ class SgdsFooter extends SgdsElement {
138
138
  >
139
139
  </li>
140
140
  <li>
141
- <sgds-link size="sm" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of use</a></sgds-link>
141
+ <sgds-link size="sm" tone=${this._linkTone}><a href=${this.termsOfUseHref}>Terms of Use</a></sgds-link>
142
142
  </li>
143
143
  </ul>
144
144
  <div class="footer-copyrights">© ${new Date().getFullYear()}, ${this.copyrightLiner}</div>