@govtechsg/sgds-web-component 3.29.1-rc.2 → 3.29.1-rc.3

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 (31) hide show
  1. package/components/Badge/badge.js +1 -1
  2. package/components/Badge/badge.js.map +1 -1
  3. package/components/Badge/index.umd.min.js +3 -3
  4. package/components/Badge/index.umd.min.js.map +1 -1
  5. package/components/Badge/sgds-badge.d.ts +1 -0
  6. package/components/Badge/sgds-badge.js +7 -2
  7. package/components/Badge/sgds-badge.js.map +1 -1
  8. package/components/ComboBox/index.umd.min.js +3 -3
  9. package/components/ComboBox/index.umd.min.js.map +1 -1
  10. package/components/DataTable/index.umd.min.js +1 -1
  11. package/components/DataTable/index.umd.min.js.map +1 -1
  12. package/components/DataTable/sgds-data-table.js +2 -15
  13. package/components/DataTable/sgds-data-table.js.map +1 -1
  14. package/components/index.umd.min.js +4 -4
  15. package/components/index.umd.min.js.map +1 -1
  16. package/custom-elements.json +8 -1
  17. package/index.umd.min.js +4 -4
  18. package/index.umd.min.js.map +1 -1
  19. package/package.json +1 -1
  20. package/react/components/Badge/badge.cjs.js +1 -1
  21. package/react/components/Badge/badge.cjs.js.map +1 -1
  22. package/react/components/Badge/badge.js +1 -1
  23. package/react/components/Badge/badge.js.map +1 -1
  24. package/react/components/Badge/sgds-badge.cjs.js +7 -2
  25. package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
  26. package/react/components/Badge/sgds-badge.js +7 -2
  27. package/react/components/Badge/sgds-badge.js.map +1 -1
  28. package/react/components/DataTable/sgds-data-table.cjs.js +2 -15
  29. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -1
  30. package/react/components/DataTable/sgds-data-table.js +2 -15
  31. package/react/components/DataTable/sgds-data-table.js.map +1 -1
@@ -201,21 +201,7 @@ var SgdsDataTable = class extends SgdsElement {
201
201
  if (columnIndex < 0) return;
202
202
  if (direction === "none") {
203
203
  this.tableRows = this._getRowsInInitialPositionOrder(this.tableRows);
204
- this._syncDomRowOrder();
205
- this._updateVisibleRows();
206
- return;
207
- }
208
- if (this.mode === "client") {
209
- const start = (this.currentPage - 1) * this.itemsPerPage;
210
- const end = start + this.itemsPerPage;
211
- const nextRows = [...this.tableRows];
212
- const sortedVisibleRows = nextRows.slice(start, end).sort((left, right) => {
213
- const leftValue = this._toComparableValue(left, key, columnIndex);
214
- const rightValue = this._toComparableValue(right, key, columnIndex);
215
- return this._compareValues(leftValue, rightValue, direction);
216
- });
217
- nextRows.splice(start, sortedVisibleRows.length, ...sortedVisibleRows);
218
- this.tableRows = nextRows;
204
+ if (this.mode === "client") this.currentPage = 1;
219
205
  this._syncDomRowOrder();
220
206
  this._updateVisibleRows();
221
207
  return;
@@ -225,6 +211,7 @@ var SgdsDataTable = class extends SgdsElement {
225
211
  const rightValue = this._toComparableValue(right, key, columnIndex);
226
212
  return this._compareValues(leftValue, rightValue, direction);
227
213
  });
214
+ if (this.mode === "client") this.currentPage = 1;
228
215
  this._syncDomRowOrder();
229
216
  this._updateVisibleRows();
230
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-data-table.js","names":["tableStyle"],"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 }\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\" role=\"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"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-data-table.js","names":["tableStyle"],"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 }\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 if (this.mode === \"client\") this.currentPage = 1;\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 if (this.mode === \"client\") this.currentPage = 1;\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\" role=\"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"],"mappings":"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"}
@@ -2627,12 +2627,12 @@ let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),Fg(e,t);return
2627
2627
  </div>`:b}
2628
2628
  </div>
2629
2629
  <slot @slotchange=${this._handleSlotChange}></slot>
2630
- `}};E([C()],Qg.prototype,`_breakpointReached`,void 0),E([C()],Qg.prototype,`_mobileMenuOpen`,void 0),E([C()],Qg.prototype,`_hasDropdownItems`,void 0),E([T({flatten:!0})],Qg.prototype,`_defaultSlotElements`,void 0),E([S({type:String,reflect:!0})],Qg.prototype,`label`,void 0),E([S({type:String,reflect:!0})],Qg.prototype,`secondaryText`,void 0),E([S({type:Boolean})],Qg.prototype,`disabled`,void 0),E([S({type:String})],Qg.prototype,`ariaLabel`,void 0),E([S({type:String})],Qg.prototype,`close`,void 0);var $g=class extends Qg{constructor(...e){super(...e),this._breakpointReached=!0}};E([um({context:Cm,subscribe:!0}),C()],$g.prototype,`_breakpointReached`,void 0),x();var e_=u`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-fixed-dark)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-fixed-dark)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-fixed-dark)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-fixed-dark)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-fixed-dark)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-fixed-dark)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-fixed-dark)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192,192px);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{overflow:hidden;padding:var(--sgds-padding-none) var(--sgds-padding-3-xs);text-overflow:ellipsis;white-space:nowrap}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;x();var t_=u`:host{display:contents}.tooltip-placeholder{display:inline-block;max-width:100%}.tooltip{word-wrap:break-word;background-color:var(--sgds-surface-fixed-dark);border-radius:var(--sgds-border-radius-md);box-shadow:0 0 2px 0 rgba(0,0,0,.12),0 8px 16px 0 rgba(0,0,0,.14);color:var(--sgds-color-fixed-light);display:block;font-size:var(--sgds-font-size-label-sm);line-break:auto;max-width:var(--sgds-dimension-320);padding:var(--sgds-padding-xs) var(--sgds-padding-sm);text-align:left;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--sgds-z-index-overlay)}div{max-width:fit-content}`;x();var n_=class extends D{constructor(...e){super(...e),this._myTooltip=Hg(),this._tooltipBubble=Hg(),this.content=``,this.placement=`top`,this.trigger=`hover focus`,this.open=!1,this._handleClickOutOfElement=e=>{this.open&&(e.composedPath().includes(this)||this.hide())}}static{this.styles=[...D.styles,t_]}connectedCallback(){super.connectedCallback(),this.trigger.includes(`click`)&&document.addEventListener(`click`,this._handleClickOutOfElement)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`click`,this._handleClickOutOfElement),this._cleanupAutoUpdate&&=(this._cleanupAutoUpdate(),void 0)}firstUpdated(e){super.firstUpdated(e),this._tooltipTargetElements.forEach(e=>{e.setAttribute(`data-sgds-tooltip`,this.content),this.trigger.includes(`hover`)&&(e.addEventListener(`mouseenter`,()=>this.show()),e.addEventListener(`mouseleave`,()=>this.hide())),this.trigger.includes(`focus`)&&(e.addEventListener(`focus`,()=>this.show()),e.addEventListener(`blur`,()=>this.hide())),this.trigger===`click`&&e.addEventListener(`click`,()=>this.toggle())})}_handleSlotChange(){this._tooltipTargetElements.forEach(e=>e.setAttribute(`data-sgds-tooltip`,this.content))}async updateFloatingPosition(){if(!this._myTooltip.value||!this._tooltipBubble.value)return;let{x:e,y:t,placement:n,strategy:r,middlewareData:i}=await wg(this._tooltipTargetElements[0],this._tooltipBubble.value,{strategy:`fixed`,placement:this.placement,middleware:[yg(8),xg(),bg(),Cg()]});this._tooltipBubble.value.setAttribute(`data-placement`,n),Object.assign(this._tooltipBubble.value.style,{position:r,left:`${e}px`,top:`${t}px`});let{referenceHidden:a,escaped:o}=i.hide||{};a||o?this._tooltipBubble.value.style.visibility=`hidden`:this._tooltipBubble.value.style.visibility=`visible`}async show(){this.open||(this.open=!0,this.emit(`sgds-show`),await this.updateComplete,await this.updateFloatingPosition(),this._myTooltip.value&&this._tooltipBubble.value&&(this._cleanupAutoUpdate=vg(this._tooltipTargetElements[0],this._tooltipBubble.value,()=>this.updateFloatingPosition())),this.emit(`sgds-after-show`))}hide(){this.open&&(this.emit(`sgds-hide`),this.open=!1,this._cleanupAutoUpdate&&=(this._cleanupAutoUpdate(),void 0),setTimeout(()=>this.emit(`sgds-after-hide`),0))}toggle(){this.open?this.hide():this.show()}render(){return y`
2630
+ `}};E([C()],Qg.prototype,`_breakpointReached`,void 0),E([C()],Qg.prototype,`_mobileMenuOpen`,void 0),E([C()],Qg.prototype,`_hasDropdownItems`,void 0),E([T({flatten:!0})],Qg.prototype,`_defaultSlotElements`,void 0),E([S({type:String,reflect:!0})],Qg.prototype,`label`,void 0),E([S({type:String,reflect:!0})],Qg.prototype,`secondaryText`,void 0),E([S({type:Boolean})],Qg.prototype,`disabled`,void 0),E([S({type:String})],Qg.prototype,`ariaLabel`,void 0),E([S({type:String})],Qg.prototype,`close`,void 0);var $g=class extends Qg{constructor(...e){super(...e),this._breakpointReached=!0}};E([um({context:Cm,subscribe:!0}),C()],$g.prototype,`_breakpointReached`,void 0),x();var e_=u`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-default)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-default)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-default)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-default)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-default)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-default)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-subtle)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192,192px);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-default)}.badge.full-width{max-width:100%}.badge-label{overflow:hidden;padding:var(--sgds-padding-none) var(--sgds-padding-3-xs);text-overflow:ellipsis;white-space:nowrap}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;x();var t_=u`:host{display:contents}.tooltip-placeholder{display:inline-block;max-width:100%}.tooltip{word-wrap:break-word;background-color:var(--sgds-surface-fixed-dark);border-radius:var(--sgds-border-radius-md);box-shadow:0 0 2px 0 rgba(0,0,0,.12),0 8px 16px 0 rgba(0,0,0,.14);color:var(--sgds-color-fixed-light);display:block;font-size:var(--sgds-font-size-label-sm);line-break:auto;max-width:var(--sgds-dimension-320);padding:var(--sgds-padding-xs) var(--sgds-padding-sm);text-align:left;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--sgds-z-index-overlay)}div{max-width:fit-content}`;x();var n_=class extends D{constructor(...e){super(...e),this._myTooltip=Hg(),this._tooltipBubble=Hg(),this.content=``,this.placement=`top`,this.trigger=`hover focus`,this.open=!1,this._handleClickOutOfElement=e=>{this.open&&(e.composedPath().includes(this)||this.hide())}}static{this.styles=[...D.styles,t_]}connectedCallback(){super.connectedCallback(),this.trigger.includes(`click`)&&document.addEventListener(`click`,this._handleClickOutOfElement)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`click`,this._handleClickOutOfElement),this._cleanupAutoUpdate&&=(this._cleanupAutoUpdate(),void 0)}firstUpdated(e){super.firstUpdated(e),this._tooltipTargetElements.forEach(e=>{e.setAttribute(`data-sgds-tooltip`,this.content),this.trigger.includes(`hover`)&&(e.addEventListener(`mouseenter`,()=>this.show()),e.addEventListener(`mouseleave`,()=>this.hide())),this.trigger.includes(`focus`)&&(e.addEventListener(`focus`,()=>this.show()),e.addEventListener(`blur`,()=>this.hide())),this.trigger===`click`&&e.addEventListener(`click`,()=>this.toggle())})}_handleSlotChange(){this._tooltipTargetElements.forEach(e=>e.setAttribute(`data-sgds-tooltip`,this.content))}async updateFloatingPosition(){if(!this._myTooltip.value||!this._tooltipBubble.value)return;let{x:e,y:t,placement:n,strategy:r,middlewareData:i}=await wg(this._tooltipTargetElements[0],this._tooltipBubble.value,{strategy:`fixed`,placement:this.placement,middleware:[yg(8),xg(),bg(),Cg()]});this._tooltipBubble.value.setAttribute(`data-placement`,n),Object.assign(this._tooltipBubble.value.style,{position:r,left:`${e}px`,top:`${t}px`});let{referenceHidden:a,escaped:o}=i.hide||{};a||o?this._tooltipBubble.value.style.visibility=`hidden`:this._tooltipBubble.value.style.visibility=`visible`}async show(){this.open||(this.open=!0,this.emit(`sgds-show`),await this.updateComplete,await this.updateFloatingPosition(),this._myTooltip.value&&this._tooltipBubble.value&&(this._cleanupAutoUpdate=vg(this._tooltipTargetElements[0],this._tooltipBubble.value,()=>this.updateFloatingPosition())),this.emit(`sgds-after-show`))}hide(){this.open&&(this.emit(`sgds-hide`),this.open=!1,this._cleanupAutoUpdate&&=(this._cleanupAutoUpdate(),void 0),setTimeout(()=>this.emit(`sgds-after-hide`),0))}toggle(){this.open?this.hide():this.show()}render(){return y`
2631
2631
  <div ${Gg(this._myTooltip)} class="tooltip-placeholder">
2632
2632
  <slot @slotchange=${()=>this._handleSlotChange()}></slot>
2633
2633
  ${this.open?y`<div ${Gg(this._tooltipBubble)} class="tooltip" role="tooltip">${this.content}</div>`:null}
2634
2634
  </div>
2635
- `}};E([S({type:String})],n_.prototype,`content`,void 0),E([S({type:String})],n_.prototype,`placement`,void 0),E([S({type:String})],n_.prototype,`trigger`,void 0),E([C()],n_.prototype,`open`,void 0),E([T()],n_.prototype,`_tooltipTargetElements`,void 0),x();var r_=class extends D{constructor(...e){super(...e),this.show=!1,this.variant=`primary`,this.outlined=!1,this.dismissible=!1,this.fullWidth=!1,this.truncated=!1,this.text=``}static{this.styles=[...D.styles,e_]}static{this.dependencies={"sgds-close-button":kt,"sgds-tooltip":n_}}close(){this.show=!1}_handleShowChange(){if(this.show){if(this.emit(`sgds-show`,{cancelable:!0}).defaultPrevented){this.show=!1;return}this.emit(`sgds-after-show`)}else{if(this.emit(`sgds-hide`,{cancelable:!0}).defaultPrevented){this.show=!0;return}this.emit(`sgds-after-hide`)}}_handleTruncation(){let e=this.shadowRoot?.querySelector(`.badge-label`);e&&(this.truncated=e.scrollWidth>e.clientWidth)}_handleLabelSlotChange(e){this.text=Sm(e.target)}_renderBadge(){let e=this.outlined||this.variant===`warning`||this.variant===`white`;return y`<div
2635
+ `}};E([S({type:String})],n_.prototype,`content`,void 0),E([S({type:String})],n_.prototype,`placement`,void 0),E([S({type:String})],n_.prototype,`trigger`,void 0),E([C()],n_.prototype,`open`,void 0),E([T()],n_.prototype,`_tooltipTargetElements`,void 0),x();var r_=class extends D{constructor(...e){super(...e),this.show=!1,this.variant=`primary`,this.outlined=!1,this.dismissible=!1,this.fullWidth=!1,this.truncated=!1,this.text=``}static{this.styles=[...D.styles,e_]}static{this.dependencies={"sgds-close-button":kt,"sgds-tooltip":n_}}close(){this.show=!1}_handleShowChange(){if(this.show){if(this.emit(`sgds-show`,{cancelable:!0}).defaultPrevented){this.show=!1;return}this.emit(`sgds-after-show`)}else{if(this.emit(`sgds-hide`,{cancelable:!0}).defaultPrevented){this.show=!0;return}this.emit(`sgds-after-hide`)}}_handleTruncation(){let e=this.shadowRoot?.querySelector(`.badge-label`);e&&(this.truncated=e.scrollWidth>e.clientWidth)}_handleLabelSlotChange(e){this.text=Sm(e.target)}get _closeButtonTone(){return this.variant===`white`?`fixed-dark`:this.outlined?`default`:this.variant===`warning`?`fixed-dark`:`fixed-light`}_renderBadge(){return y`<div
2636
2636
  class="
2637
2637
  ${O({"badge-dismissible":this.dismissible,badge:!0,outlined:this.outlined,"full-width":this.fullWidth})}"
2638
2638
  aria-hidden=${this.show?`false`:`true`}
@@ -2647,7 +2647,7 @@ let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),Fg(e,t);return
2647
2647
  size="sm"
2648
2648
  aria-label="close the badge"
2649
2649
  @click=${this.close}
2650
- tone=${e?`fixed-dark`:`fixed-light`}
2650
+ tone=${this._closeButtonTone}
2651
2651
  ></sgds-close-button>`:b}
2652
2652
  </div>`}render(){return this.dismissible&&this.show||!this.dismissible?this.truncated?y`<sgds-tooltip content=${this.text} @sgds-hide=${e=>e.stopPropagation()}
2653
2653
  >${this._renderBadge()}</sgds-tooltip
@@ -3125,7 +3125,7 @@ let V_=(e,t,n)=>{let r=/* @__PURE__ */ new Map;for(let i=t;i<=n;i++)r.set(e[i],i
3125
3125
  :host {
3126
3126
  display: block;
3127
3127
  }
3128
- `]}static{this.dependencies={"sgds-pagination":G_,"sgds-data-table-cell":K_,"sgds-data-table-head":K,"sgds-skeleton":Y_}}connectedCallback(){super.connectedCallback()}_isRowChecked(e){return e.checked||e.checkbox?.checked===!0}_updateHeaderCheckbox(){let e=this.tableRows.filter(e=>this._isRowChecked(e)).length,t=e===this.tableRows.length&&e>0;this.headerRows.forEach(n=>{n.checked=t,n.checkbox&&(n.checkbox.checked=t,n.checkbox.indeterminate=e>0&&!t)})}async _syncHeaderCheckboxAfterRender(){if(!this.multiSelect||this.headerRows.length===0)return;let e=[...this.headerRows,...this.tableRows];await Promise.all(e.map(e=>e.updateComplete)),this._updateHeaderCheckbox()}_emitRowSelect(){let e=this.tableRows.filter(e=>this._isRowChecked(e)).map(e=>this._getRowData(e));this.emit(`sgds-row-select`,{detail:{selected:e}})}_attachRowListener(e){let t=this._rowHandlers.get(e);t&&e.removeEventListener(`i-sgds-change`,t);let n=t=>{let{checked:n}=t.detail;this.headerRows.includes(e)?this.tableRows.forEach(e=>{e.checked=n,e.checkbox&&(e.checkbox.checked=n)}):(e.checked=n,this._updateHeaderCheckbox()),this._emitRowSelect()};this._rowHandlers.set(e,n),e.addEventListener(`i-sgds-change`,n)}_configureRows(){let e=this.tableRows.some(e=>e.expand),t=this.tableRows.length>0;this.headerRows.forEach(n=>{n.showCheckbox=this.multiSelect,n.showExpandPlaceholder=e,n.hasDataRows=t,this.multiSelect&&this._attachRowListener(n)}),this.tableRows.forEach(t=>{t.showCheckbox=this.multiSelect,t.showExpandPlaceholder=!t.expand&&e,this.multiSelect&&this._attachRowListener(t)}),this.multiSelect&&this._syncHeaderCheckboxAfterRender(),this._applyColumnAlignment()}_applyColumnAlignment(){let e=this._headerCells.reduce((e,t)=>{let n=Number(t.colSpan)>0?Number(t.colSpan):1,r=t.textAlign??`left`;for(let t=0;t<n;t++)e.push(r);return e},[]);this.headerRows.forEach(t=>{t.columnAlignments=[...e]}),this.tableRows.forEach(t=>{t.columnAlignments=[...e]})}_extractCellText(e,t){return e.getCellText(t)||(Array.from(e.children).filter(e=>e.tagName.toLowerCase()===`sgds-data-table-cell`)[t]?.textContent||``).trim()}_getRowData(e){let t={};return this._headerCells.forEach((n,r)=>{let i=n.sortKey||(n.textContent??``).trim()||`col-${r}`;t[i]=this._extractCellText(e,r)}),t}_toComparableValue(e,t,n){return this._extractCellText(e,n)}_compareValues(e,t,n){if(e===t)return 0;let r=Number(e),i=Number(t);if(Number.isFinite(r)&&Number.isFinite(i))return n===`ascending`?r-i:i-r;let a=String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`});return n===`ascending`?a:-a}_resetOtherHeaderSortStates(e){this._headerCells.forEach(t=>{t!==e&&t.sorting&&(t.sortDirection=`none`)})}_getRowsInInitialPositionOrder(e){return[...e].sort((e,t)=>{let n=this._initialRowPositions.get(e),r=this._initialRowPositions.get(t);return n===void 0&&r===void 0?0:n===void 0?1:r===void 0?-1:n-r})}_captureInitialRowPositions(e){this._hasCapturedInitialRowPositions||=(e.forEach((e,t)=>{this._initialRowPositions.set(e,t)}),!0)}_handleSort(e){let t=e.composedPath().find(e=>e instanceof K);if(!t||!t.sorting)return;let{key:n,direction:r}=e.detail,i=t?this._headerCells.indexOf(t):-1;if(this._resetOtherHeaderSortStates(t),this.serverSort){e.stopPropagation(),this.emit(`sgds-sort`,{detail:{key:n,direction:r}});return}if(!(i<0)){if(r===`none`){this.tableRows=this._getRowsInInitialPositionOrder(this.tableRows),this._syncDomRowOrder(),this._updateVisibleRows();return}if(this.mode===`client`){let e=(this.currentPage-1)*this.itemsPerPage,t=e+this.itemsPerPage,a=[...this.tableRows],o=a.slice(e,t).sort((e,t)=>{let a=this._toComparableValue(e,n,i),o=this._toComparableValue(t,n,i);return this._compareValues(a,o,r)});a.splice(e,o.length,...o),this.tableRows=a,this._syncDomRowOrder(),this._updateVisibleRows();return}this.tableRows=[...this.tableRows].sort((e,t)=>{let a=this._toComparableValue(e,n,i),o=this._toComparableValue(t,n,i);return this._compareValues(a,o,r)}),this._syncDomRowOrder(),this._updateVisibleRows()}}_syncDomRowOrder(){let e=this.tableRows[0]?.parentElement;e&&this.tableRows.forEach(t=>e.appendChild(t))}_handleSlotChange(e){let t=e.target.assignedElements({flatten:!0}).filter(e=>e instanceof q_),n=e=>Array.from(e.children).filter(e=>{let t=e.tagName.toLowerCase();return t!==`sgds-data-table-cell`&&t!==`sgds-data-table-head`?!1:e.getAttribute(`slot`)!==`content`});this.headerRows=t.filter(e=>n(e).some(e=>e.tagName.toLowerCase()===`sgds-data-table-head`)),this.tableRows=t.filter(e=>{let t=n(e);return t.length>0&&t.every(e=>e.tagName.toLowerCase()===`sgds-data-table-cell`)}),this._headerCells=this.headerRows.reduce((e,t)=>{let n=Array.from(t.children).filter(e=>e instanceof K);return e.push(...n),e},[]),this._captureInitialRowPositions(this.tableRows),this._headerCells.forEach(e=>{e.sorting&&!e.sortDirection&&(e.sortDirection=`none`)}),this._configureRows(),this._updateVisibleRows()}_updateVisibleRows(){if(this.loading){this.tableRows.forEach(e=>e.style.display=`none`);return}if(this.mode===`server`){this.tableRows.forEach(e=>e.style.display=``);return}let e=this.dataLength||this.tableRows.length,t=Math.max(1,Math.ceil(e/this.itemsPerPage));if(this.currentPage>t){this.currentPage=t;return}let n=(this.currentPage-1)*this.itemsPerPage,r=new Set(this.tableRows.slice(n,n+this.itemsPerPage));this.tableRows.forEach(e=>e.style.display=r.has(e)?``:`none`)}_getSkeletonColumnCount(){let e=this._headerCells.reduce((e,t)=>e+(Number(t.colSpan)>0?Number(t.colSpan):1),0),t=this.tableRows[0],n=t?Array.from(t.children).filter(e=>e instanceof K_).length:0,r=this.tableRows.some(e=>e.expand);return{dataColumns:e||n||1,hasExpand:r,hasCheckbox:this.multiSelect}}_renderLoadingSkeleton(){let{dataColumns:e,hasExpand:t,hasCheckbox:n}=this._getSkeletonColumnCount(),r=Math.max(1,this.itemsPerPage||1);return Array.from({length:r},()=>y`<div class="skeleton-row" role="presentation">
3128
+ `]}static{this.dependencies={"sgds-pagination":G_,"sgds-data-table-cell":K_,"sgds-data-table-head":K,"sgds-skeleton":Y_}}connectedCallback(){super.connectedCallback()}_isRowChecked(e){return e.checked||e.checkbox?.checked===!0}_updateHeaderCheckbox(){let e=this.tableRows.filter(e=>this._isRowChecked(e)).length,t=e===this.tableRows.length&&e>0;this.headerRows.forEach(n=>{n.checked=t,n.checkbox&&(n.checkbox.checked=t,n.checkbox.indeterminate=e>0&&!t)})}async _syncHeaderCheckboxAfterRender(){if(!this.multiSelect||this.headerRows.length===0)return;let e=[...this.headerRows,...this.tableRows];await Promise.all(e.map(e=>e.updateComplete)),this._updateHeaderCheckbox()}_emitRowSelect(){let e=this.tableRows.filter(e=>this._isRowChecked(e)).map(e=>this._getRowData(e));this.emit(`sgds-row-select`,{detail:{selected:e}})}_attachRowListener(e){let t=this._rowHandlers.get(e);t&&e.removeEventListener(`i-sgds-change`,t);let n=t=>{let{checked:n}=t.detail;this.headerRows.includes(e)?this.tableRows.forEach(e=>{e.checked=n,e.checkbox&&(e.checkbox.checked=n)}):(e.checked=n,this._updateHeaderCheckbox()),this._emitRowSelect()};this._rowHandlers.set(e,n),e.addEventListener(`i-sgds-change`,n)}_configureRows(){let e=this.tableRows.some(e=>e.expand),t=this.tableRows.length>0;this.headerRows.forEach(n=>{n.showCheckbox=this.multiSelect,n.showExpandPlaceholder=e,n.hasDataRows=t,this.multiSelect&&this._attachRowListener(n)}),this.tableRows.forEach(t=>{t.showCheckbox=this.multiSelect,t.showExpandPlaceholder=!t.expand&&e,this.multiSelect&&this._attachRowListener(t)}),this.multiSelect&&this._syncHeaderCheckboxAfterRender(),this._applyColumnAlignment()}_applyColumnAlignment(){let e=this._headerCells.reduce((e,t)=>{let n=Number(t.colSpan)>0?Number(t.colSpan):1,r=t.textAlign??`left`;for(let t=0;t<n;t++)e.push(r);return e},[]);this.headerRows.forEach(t=>{t.columnAlignments=[...e]}),this.tableRows.forEach(t=>{t.columnAlignments=[...e]})}_extractCellText(e,t){return e.getCellText(t)||(Array.from(e.children).filter(e=>e.tagName.toLowerCase()===`sgds-data-table-cell`)[t]?.textContent||``).trim()}_getRowData(e){let t={};return this._headerCells.forEach((n,r)=>{let i=n.sortKey||(n.textContent??``).trim()||`col-${r}`;t[i]=this._extractCellText(e,r)}),t}_toComparableValue(e,t,n){return this._extractCellText(e,n)}_compareValues(e,t,n){if(e===t)return 0;let r=Number(e),i=Number(t);if(Number.isFinite(r)&&Number.isFinite(i))return n===`ascending`?r-i:i-r;let a=String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`});return n===`ascending`?a:-a}_resetOtherHeaderSortStates(e){this._headerCells.forEach(t=>{t!==e&&t.sorting&&(t.sortDirection=`none`)})}_getRowsInInitialPositionOrder(e){return[...e].sort((e,t)=>{let n=this._initialRowPositions.get(e),r=this._initialRowPositions.get(t);return n===void 0&&r===void 0?0:n===void 0?1:r===void 0?-1:n-r})}_captureInitialRowPositions(e){this._hasCapturedInitialRowPositions||=(e.forEach((e,t)=>{this._initialRowPositions.set(e,t)}),!0)}_handleSort(e){let t=e.composedPath().find(e=>e instanceof K);if(!t||!t.sorting)return;let{key:n,direction:r}=e.detail,i=t?this._headerCells.indexOf(t):-1;if(this._resetOtherHeaderSortStates(t),this.serverSort){e.stopPropagation(),this.emit(`sgds-sort`,{detail:{key:n,direction:r}});return}if(!(i<0)){if(r===`none`){this.tableRows=this._getRowsInInitialPositionOrder(this.tableRows),this.mode===`client`&&(this.currentPage=1),this._syncDomRowOrder(),this._updateVisibleRows();return}this.tableRows=[...this.tableRows].sort((e,t)=>{let a=this._toComparableValue(e,n,i),o=this._toComparableValue(t,n,i);return this._compareValues(a,o,r)}),this.mode===`client`&&(this.currentPage=1),this._syncDomRowOrder(),this._updateVisibleRows()}}_syncDomRowOrder(){let e=this.tableRows[0]?.parentElement;e&&this.tableRows.forEach(t=>e.appendChild(t))}_handleSlotChange(e){let t=e.target.assignedElements({flatten:!0}).filter(e=>e instanceof q_),n=e=>Array.from(e.children).filter(e=>{let t=e.tagName.toLowerCase();return t!==`sgds-data-table-cell`&&t!==`sgds-data-table-head`?!1:e.getAttribute(`slot`)!==`content`});this.headerRows=t.filter(e=>n(e).some(e=>e.tagName.toLowerCase()===`sgds-data-table-head`)),this.tableRows=t.filter(e=>{let t=n(e);return t.length>0&&t.every(e=>e.tagName.toLowerCase()===`sgds-data-table-cell`)}),this._headerCells=this.headerRows.reduce((e,t)=>{let n=Array.from(t.children).filter(e=>e instanceof K);return e.push(...n),e},[]),this._captureInitialRowPositions(this.tableRows),this._headerCells.forEach(e=>{e.sorting&&!e.sortDirection&&(e.sortDirection=`none`)}),this._configureRows(),this._updateVisibleRows()}_updateVisibleRows(){if(this.loading){this.tableRows.forEach(e=>e.style.display=`none`);return}if(this.mode===`server`){this.tableRows.forEach(e=>e.style.display=``);return}let e=this.dataLength||this.tableRows.length,t=Math.max(1,Math.ceil(e/this.itemsPerPage));if(this.currentPage>t){this.currentPage=t;return}let n=(this.currentPage-1)*this.itemsPerPage,r=new Set(this.tableRows.slice(n,n+this.itemsPerPage));this.tableRows.forEach(e=>e.style.display=r.has(e)?``:`none`)}_getSkeletonColumnCount(){let e=this._headerCells.reduce((e,t)=>e+(Number(t.colSpan)>0?Number(t.colSpan):1),0),t=this.tableRows[0],n=t?Array.from(t.children).filter(e=>e instanceof K_).length:0,r=this.tableRows.some(e=>e.expand);return{dataColumns:e||n||1,hasExpand:r,hasCheckbox:this.multiSelect}}_renderLoadingSkeleton(){let{dataColumns:e,hasExpand:t,hasCheckbox:n}=this._getSkeletonColumnCount(),r=Math.max(1,this.itemsPerPage||1);return Array.from({length:r},()=>y`<div class="skeleton-row" role="presentation">
3129
3129
  ${t?y`<div class="skeleton-cell control-cell">
3130
3130
  <sgds-skeleton .height=${`20px`} .width=${`20px`} .borderRadius=${`4px`}></sgds-skeleton>
3131
3131
  </div>`:b}