@govtechsg/sgds-web-component 3.27.0-rc.0 → 3.27.0-rc.1

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 (48) hide show
  1. package/components/DataTable/data-table.js +1 -1
  2. package/components/DataTable/index.umd.min.js +289 -274
  3. package/components/DataTable/index.umd.min.js.map +1 -1
  4. package/components/DataTable/sgds-data-table-cell.d.ts +4 -4
  5. package/components/DataTable/sgds-data-table-cell.js +4 -4
  6. package/components/DataTable/sgds-data-table-cell.js.map +1 -1
  7. package/components/DataTable/sgds-data-table-head.d.ts +5 -5
  8. package/components/DataTable/sgds-data-table-head.js +7 -7
  9. package/components/DataTable/sgds-data-table-head.js.map +1 -1
  10. package/components/DataTable/sgds-data-table-row.js +8 -8
  11. package/components/DataTable/sgds-data-table-row.js.map +1 -1
  12. package/components/DataTable/sgds-data-table.d.ts +6 -4
  13. package/components/DataTable/sgds-data-table.js +53 -20
  14. package/components/DataTable/sgds-data-table.js.map +1 -1
  15. package/components/Textarea/index.umd.min.js +1 -1
  16. package/components/Textarea/index.umd.min.js.map +1 -1
  17. package/components/Textarea/textarea.js +1 -1
  18. package/components/index.umd.min.js +252 -247
  19. package/components/index.umd.min.js.map +1 -1
  20. package/css/fouc.css +2 -2
  21. package/custom-elements.json +2661 -2722
  22. package/index.umd.min.js +84 -79
  23. package/index.umd.min.js.map +1 -1
  24. package/package.json +1 -1
  25. package/react/components/DataTable/data-table.cjs.js +1 -1
  26. package/react/components/DataTable/data-table.js +1 -1
  27. package/react/components/DataTable/sgds-data-table-cell.cjs.js +4 -4
  28. package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -1
  29. package/react/components/DataTable/sgds-data-table-cell.js +4 -4
  30. package/react/components/DataTable/sgds-data-table-cell.js.map +1 -1
  31. package/react/components/DataTable/sgds-data-table-head.cjs.js +7 -7
  32. package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -1
  33. package/react/components/DataTable/sgds-data-table-head.js +7 -7
  34. package/react/components/DataTable/sgds-data-table-head.js.map +1 -1
  35. package/react/components/DataTable/sgds-data-table-row.cjs.js +8 -8
  36. package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -1
  37. package/react/components/DataTable/sgds-data-table-row.js +8 -8
  38. package/react/components/DataTable/sgds-data-table-row.js.map +1 -1
  39. package/react/components/DataTable/sgds-data-table.cjs.js +53 -20
  40. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -1
  41. package/react/components/DataTable/sgds-data-table.js +53 -20
  42. package/react/components/DataTable/sgds-data-table.js.map +1 -1
  43. package/react/components/Textarea/textarea.cjs.js +1 -1
  44. package/react/components/Textarea/textarea.js +1 -1
  45. package/react/index.cjs.js +18 -18
  46. package/react/index.d.ts +2 -2
  47. package/react/index.js +2 -2
  48. package/types/react.d.ts +107 -115
@@ -6,10 +6,10 @@ import SgdsElement from "../../base/sgds-element";
6
6
  */
7
7
  export declare class SgdsDataTableCell extends SgdsElement {
8
8
  static styles: import("lit").CSSResult[];
9
- /** Number of columns this cell spans. */
10
- colspan: number | undefined;
11
- /** Number of rows this cell spans. */
12
- rowspan: number | undefined;
9
+ /** @internal Number of columns this cell spans. */
10
+ colSpan: number | undefined;
11
+ /** @internal Number of rows this cell spans. */
12
+ rowSpan: number | undefined;
13
13
  render(): import("lit").TemplateResult<1>;
14
14
  }
15
15
  export default SgdsDataTableCell;
@@ -22,11 +22,11 @@ SgdsDataTableCell.styles = [
22
22
  `
23
23
  ];
24
24
  __decorate([
25
- property({ type: Number, reflect: true })
26
- ], SgdsDataTableCell.prototype, "colspan", void 0);
25
+ property({ type: Number })
26
+ ], SgdsDataTableCell.prototype, "colSpan", void 0);
27
27
  __decorate([
28
- property({ type: Number, reflect: true })
29
- ], SgdsDataTableCell.prototype, "rowspan", void 0);
28
+ property({ type: Number })
29
+ ], SgdsDataTableCell.prototype, "rowSpan", void 0);
30
30
 
31
31
  export { SgdsDataTableCell, SgdsDataTableCell as default };
32
32
  //# sourceMappingURL=sgds-data-table-cell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-data-table-cell.js","sources":["../../../src/components/DataTable/sgds-data-table-cell.ts"],"sourcesContent":["import { css, html } from \"lit\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary Data container for a table cell. Rendered as a `<td>` by the parent `sgds-data-table-row`.\n *\n * @slot default - Content to display inside the cell.\n */\nexport class SgdsDataTableCell extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n css`\n :host {\n display: contents;\n }\n `\n ];\n\n /** Number of columns this cell spans. */\n @property({ type: Number, reflect: true }) colspan: number | undefined;\n\n /** Number of rows this cell spans. */\n @property({ type: Number, reflect: true }) rowspan: number | undefined;\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\nexport default SgdsDataTableCell;\n"],"names":[],"mappings":";;;;;AAIA;;;;AAIG;AACG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IAgBhD,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,aAAA,CAAe,CAAC;KAC5B;;AAjBM,iBAAA,CAAA,MAAM,GAAG;IACd,GAAG,WAAW,CAAC,MAAM;AACrB,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA;CACF,CAAC;AAGyC,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5B,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sgds-data-table-cell.js","sources":["../../../src/components/DataTable/sgds-data-table-cell.ts"],"sourcesContent":["import { css, html } from \"lit\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary Data container for a table cell. Rendered as a `<td>` by the parent `sgds-data-table-row`.\n *\n * @slot default - Content to display inside the cell.\n */\nexport class SgdsDataTableCell extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n css`\n :host {\n display: contents;\n }\n `\n ];\n\n /** @internal Number of columns this cell spans. */\n @property({ type: Number }) colSpan: number | undefined;\n\n /** @internal Number of rows this cell spans. */\n @property({ type: Number }) rowSpan: number | undefined;\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\nexport default SgdsDataTableCell;\n"],"names":[],"mappings":";;;;;AAIA;;;;AAIG;AACG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IAgBhD,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,aAAA,CAAe,CAAC;KAC5B;;AAjBM,iBAAA,CAAA,MAAM,GAAG;IACd,GAAG,WAAW,CAAC,MAAM;AACrB,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA;CACF,CAAC;AAG0B,UAAA,CAAA;AAA3B,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5B,UAAA,CAAA;AAA3B,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -9,14 +9,14 @@ export declare class SgdsDataTableHead extends SgdsElement {
9
9
  static styles: import("lit").CSSResult[];
10
10
  /** Sets the column width. */
11
11
  width: string | undefined;
12
- /** Number of columns this cell spans. */
13
- colspan: number | undefined;
14
- /** Number of rows this cell spans. */
15
- rowspan: number | undefined;
12
+ /** @internal Number of columns this cell spans. */
13
+ colSpan: number | undefined;
14
+ /** @internal Number of rows this cell spans. */
15
+ rowSpan: number | undefined;
16
16
  /** Text alignment for the header content. */
17
17
  textAlign: "left" | "right";
18
18
  /** Current sort direction for this column. */
19
- ariasort: "ascending" | "descending" | "none" | "other" | undefined;
19
+ sortDirection: "ascending" | "descending" | "none" | "other" | undefined;
20
20
  /** When true, clicking this header cycles through ascending → descending → none sort. */
21
21
  sorting: boolean;
22
22
  /** Column key emitted in the row's internal sort payload, used to identify which column to sort. */
@@ -23,8 +23,8 @@ class SgdsDataTableHead extends SgdsElement {
23
23
  handleSortClick() {
24
24
  if (!this.sorting)
25
25
  return;
26
- const next = this.ariasort === "ascending" ? "descending" : this.ariasort === "descending" ? "none" : "ascending";
27
- this.ariasort = next;
26
+ const next = this.sortDirection === "ascending" ? "descending" : this.sortDirection === "descending" ? "none" : "ascending";
27
+ this.sortDirection = next;
28
28
  this.emit("i-sgds-sort", {
29
29
  detail: { key: this.sortKey, direction: next },
30
30
  bubbles: true,
@@ -47,17 +47,17 @@ __decorate([
47
47
  property({ type: String, reflect: true })
48
48
  ], SgdsDataTableHead.prototype, "width", void 0);
49
49
  __decorate([
50
- property({ type: Number, reflect: true })
51
- ], SgdsDataTableHead.prototype, "colspan", void 0);
50
+ property({ type: Number })
51
+ ], SgdsDataTableHead.prototype, "colSpan", void 0);
52
52
  __decorate([
53
- property({ type: Number, reflect: true })
54
- ], SgdsDataTableHead.prototype, "rowspan", void 0);
53
+ property({ type: Number })
54
+ ], SgdsDataTableHead.prototype, "rowSpan", void 0);
55
55
  __decorate([
56
56
  property({ type: String, reflect: true })
57
57
  ], SgdsDataTableHead.prototype, "textAlign", void 0);
58
58
  __decorate([
59
59
  property({ type: String, reflect: true })
60
- ], SgdsDataTableHead.prototype, "ariasort", void 0);
60
+ ], SgdsDataTableHead.prototype, "sortDirection", void 0);
61
61
  __decorate([
62
62
  property({ type: Boolean, reflect: true })
63
63
  ], SgdsDataTableHead.prototype, "sorting", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-data-table-head.js","sources":["../../../src/components/DataTable/sgds-data-table-head.ts"],"sourcesContent":["import { css, html } from \"lit\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary Data container for a table header cell. Rendered as a `<th>` by the parent `sgds-data-table-row`.\n *\n * @slot default - Content to display inside the header cell.\n *\n */\nexport class SgdsDataTableHead extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n css`\n :host {\n display: contents;\n }\n `\n ];\n\n /** Sets the column width. */\n @property({ type: String, reflect: true }) width: string | undefined;\n\n /** Number of columns this cell spans. */\n @property({ type: Number, reflect: true }) colspan: number | undefined;\n\n /** Number of rows this cell spans. */\n @property({ type: Number, reflect: true }) rowspan: number | undefined;\n\n /** Text alignment for the header content. */\n @property({ type: String, reflect: true }) textAlign: \"left\" | \"right\" = \"left\";\n\n /** Current sort direction for this column. */\n @property({ type: String, reflect: true }) ariasort: \"ascending\" | \"descending\" | \"none\" | \"other\" | undefined;\n\n /** When true, clicking this header cycles through ascending → descending → none sort. */\n @property({ type: Boolean, reflect: true }) sorting = false;\n\n /** Column key emitted in the row's internal sort payload, used to identify which column to sort. */\n @property({ type: String, reflect: true }) sortKey = \"\";\n\n /** @internal — called by the row when the rendered `<th>` is clicked. */\n handleSortClick() {\n if (!this.sorting) return;\n const next = this.ariasort === \"ascending\" ? \"descending\" : this.ariasort === \"descending\" ? \"none\" : \"ascending\";\n this.ariasort = next;\n this.emit(\"i-sgds-sort\", {\n detail: { key: this.sortKey, direction: next },\n bubbles: true,\n composed: true\n });\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\nexport default SgdsDataTableHead;\n"],"names":[],"mappings":";;;;;AAIA;;;;;AAKG;AACG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAAlD,IAAA,WAAA,GAAA;;;QAoB6C,IAAS,CAAA,SAAA,GAAqB,MAAM,CAAC;;QAMpC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAGjB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAiBzD;;IAdC,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AAClH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AAC9C,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,aAAA,CAAe,CAAC;KAC5B;;AA5CM,iBAAA,CAAA,MAAM,GAAG;IACd,GAAG,WAAW,CAAC,MAAM;AACrB,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA;AACF,CAPY,CAOX;AAGyC,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA2B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG1B,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5B,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5B,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAsC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGrC,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqE,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGnE,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAiB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sgds-data-table-head.js","sources":["../../../src/components/DataTable/sgds-data-table-head.ts"],"sourcesContent":["import { css, html } from \"lit\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary Data container for a table header cell. Rendered as a `<th>` by the parent `sgds-data-table-row`.\n *\n * @slot default - Content to display inside the header cell.\n *\n */\nexport class SgdsDataTableHead extends SgdsElement {\n static styles = [\n ...SgdsElement.styles,\n css`\n :host {\n display: contents;\n }\n `\n ];\n\n /** Sets the column width. */\n @property({ type: String, reflect: true }) width: string | undefined;\n\n /** @internal Number of columns this cell spans. */\n @property({ type: Number }) colSpan: number | undefined;\n\n /** @internal Number of rows this cell spans. */\n @property({ type: Number }) rowSpan: number | undefined;\n\n /** Text alignment for the header content. */\n @property({ type: String, reflect: true }) textAlign: \"left\" | \"right\" = \"left\";\n\n /** Current sort direction for this column. */\n @property({ type: String, reflect: true }) sortDirection: \"ascending\" | \"descending\" | \"none\" | \"other\" | undefined;\n\n /** When true, clicking this header cycles through ascending → descending → none sort. */\n @property({ type: Boolean, reflect: true }) sorting = false;\n\n /** Column key emitted in the row's internal sort payload, used to identify which column to sort. */\n @property({ type: String, reflect: true }) sortKey = \"\";\n\n /** @internal — called by the row when the rendered `<th>` is clicked. */\n handleSortClick() {\n if (!this.sorting) return;\n const next =\n this.sortDirection === \"ascending\" ? \"descending\" : this.sortDirection === \"descending\" ? \"none\" : \"ascending\";\n this.sortDirection = next;\n this.emit(\"i-sgds-sort\", {\n detail: { key: this.sortKey, direction: next },\n bubbles: true,\n composed: true\n });\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\nexport default SgdsDataTableHead;\n"],"names":[],"mappings":";;;;;AAIA;;;;;AAKG;AACG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAAlD,IAAA,WAAA,GAAA;;;QAoB6C,IAAS,CAAA,SAAA,GAAqB,MAAM,CAAC;;QAMpC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAGjB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAkBzD;;IAfC,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,IAAI,GACR,IAAI,CAAC,aAAa,KAAK,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,aAAa,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AACjH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AAC9C,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,aAAA,CAAe,CAAC;KAC5B;;AA7CM,iBAAA,CAAA,MAAM,GAAG;IACd,GAAG,WAAW,CAAC,MAAM;AACrB,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA;AACF,CAPY,CAOX;AAGyC,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA2B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGzC,UAAA,CAAA;AAA3B,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5B,UAAA,CAAA;AAA3B,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGb,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAsC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGrC,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA0E,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGxE,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAiB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -165,9 +165,9 @@ class SgdsDataTableRow extends SgdsElement {
165
165
  if (el instanceof SgdsDataTableHead) {
166
166
  return html `<th
167
167
  width=${ifDefined(el.width)}
168
- colspan=${ifDefined(el.colspan)}
169
- rowspan=${ifDefined(el.rowspan)}
170
- aria-sort=${ifDefined(el.ariasort)}
168
+ colspan=${ifDefined(el.colSpan)}
169
+ rowspan=${ifDefined(el.rowSpan)}
170
+ aria-sort=${ifDefined(el.sortDirection)}
171
171
  scope="col"
172
172
  tabindex=${ifDefined(el.sorting ? "0" : undefined)}
173
173
  ?data-sorting=${el.sorting}
@@ -180,13 +180,13 @@ class SgdsDataTableRow extends SgdsElement {
180
180
  ? html `
181
181
  <button
182
182
  type="button"
183
- class="sort-button ${el.ariasort === "none" ? "" : "active"}"
184
- aria-label=${el.ariasort === "descending" ? "Sort descending" : "Sort ascending"}
183
+ class="sort-button ${el.sortDirection === "none" ? "" : "active"}"
184
+ aria-label=${el.sortDirection === "descending" ? "Sort descending" : "Sort ascending"}
185
185
  ?disabled=${!this.hasDataRows}
186
186
  >
187
187
  <sgds-icon
188
188
  class="sort-icon"
189
- name=${el.ariasort === "descending" ? "sort-descending" : "sort-ascending"}
189
+ name=${el.sortDirection === "descending" ? "sort-descending" : "sort-ascending"}
190
190
  size="sm"
191
191
  ></sgds-icon>
192
192
  </button>
@@ -196,7 +196,7 @@ class SgdsDataTableRow extends SgdsElement {
196
196
  </th>`;
197
197
  }
198
198
  const cellAlignment = (_a = this.columnAlignments[columnIndex]) !== null && _a !== void 0 ? _a : "left";
199
- return html `<td colspan=${ifDefined(el.colspan)} rowspan=${ifDefined(el.rowspan)}>
199
+ return html `<td colspan=${ifDefined(el.colSpan)} rowspan=${ifDefined(el.rowSpan)}>
200
200
  <div class="data-table-cell ${cellAlignment === "right" ? "align-right" : "align-left"}">
201
201
  ${slotName ? html `<slot name=${slotName}></slot>` : nothing}
202
202
  </div>
@@ -244,7 +244,7 @@ class SgdsDataTableRow extends SgdsElement {
244
244
  let visualColumnIndex = 0;
245
245
  return cells.map(el => {
246
246
  const renderedCell = this._renderCell(el, visualColumnIndex);
247
- const span = Number(el.colspan) > 0 ? Number(el.colspan) : 1;
247
+ const span = Number(el.colSpan) > 0 ? Number(el.colSpan) : 1;
248
248
  visualColumnIndex += span;
249
249
  return renderedCell;
250
250
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-data-table-row.js","sources":["../../../src/components/DataTable/sgds-data-table-row.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, query, state } from \"lit/decorators.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { SgdsCheckbox } from \"../Checkbox/sgds-checkbox\";\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from \"../../utils/animate\";\nimport { getAnimation, setDefaultAnimation } from \"../../utils/animation-registry\";\nimport { waitForEvent } from \"../../utils/event\";\nimport { watch } from \"../../utils/watch\";\nimport tableRowStyle from \"./data-table.css\";\nimport SgdsDataTableCell from \"./sgds-data-table-cell\";\nimport SgdsDataTableHead from \"./sgds-data-table-head\";\nimport { SgdsIcon } from \"../Icon/sgds-icon\";\n\n/**\n * @summary A data table row. Set `expand` to enable an expandable content area beneath\n * the row, then place detail content in the `content` slot.\n *\n * @slot default - Insert `sgds-data-table-cell` or `sgds-data-table-head` elements.\n * @slot content - Content shown in the animated expand area beneath the row.\n *\n * @event sgds-show - Emitted when the expandable row begins to open.\n * @event sgds-after-show - Emitted after the expandable row open animation completes.\n * @event sgds-hide - Emitted when the expandable row begins to close.\n * @event sgds-after-hide - Emitted after the expandable row close animation completes.\n */\nexport class SgdsDataTableRow extends SgdsElement {\n static styles = [...SgdsElement.styles, tableRowStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-checkbox\": SgdsCheckbox,\n \"sgds-data-table-cell\": SgdsDataTableCell,\n \"sgds-data-table-head\": SgdsDataTableHead,\n \"sgds-icon\": SgdsIcon\n };\n\n /** Arbitrary data associated with this row. Returned in event detail on row selection. */\n @property({ type: Object, reflect: true }) rowData: Record<string, unknown> = {};\n\n /** When true, the row has an expandable content area toggled by a chevron. */\n @property({ type: Boolean, reflect: true }) expand = false;\n\n /** When true, the expandable content area is open. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** When true, the row is checked. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** @internal — set by `sgds-data-table` to show a checkbox cell on this row. */\n @property({ type: Boolean }) showCheckbox = false;\n\n /** @internal — set by `sgds-data-table` when at least one sibling row is expandable. */\n @property({ type: Boolean }) showExpandPlaceholder = false;\n\n /** @internal — per-column alignment injected by `sgds-data-table` from header cells. */\n @property({ attribute: false }) columnAlignments: Array<\"left\" | \"right\"> = [];\n /** @internal — set by `sgds-data-table` to indicate whether body rows exist. */\n @property({ type: Boolean }) hasDataRows = false;\n\n /** @internal */\n @query(\".expandable-body\") private _expandableBody!: HTMLElement;\n\n /** @internal */\n @query(\"sgds-checkbox\") private _checkboxEl!: SgdsCheckbox;\n\n @state() private _isHeaderRow = false;\n private _cellSlotNames = new WeakMap<SgdsDataTableCell | SgdsDataTableHead, string>();\n private _lightDomObserver?: MutationObserver;\n\n /** The checkbox rendered inside this row, if `showCheckbox` is true. */\n get checkbox(): SgdsCheckbox | null {\n return this._checkboxEl ?? null;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._lightDomObserver = new MutationObserver(() => this._handleLightDomChange());\n this._lightDomObserver.observe(this, { childList: true });\n this._handleLightDomChange();\n }\n\n disconnectedCallback() {\n this._lightDomObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n firstUpdated() {\n if (this._expandableBody) {\n this._expandableBody.hidden = !this.open;\n }\n }\n\n @watch(\"open\", { waitUntilFirstUpdate: true })\n async handleExpandedChange() {\n if (this.open) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.open = false;\n return;\n }\n await stopAnimations(this._expandableBody);\n this._expandableBody.hidden = false;\n const { keyframes, options } = getAnimation(this, \"row.expand.show\");\n await animateTo(\n this._expandableBody,\n shimKeyframesHeightAuto(keyframes, this._expandableBody.scrollHeight),\n options\n );\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.open = true;\n return;\n }\n await stopAnimations(this._expandableBody);\n const { keyframes, options } = getAnimation(this, \"row.expand.hide\");\n await animateTo(\n this._expandableBody,\n shimKeyframesHeightAuto(keyframes, this._expandableBody.scrollHeight),\n options\n );\n this._expandableBody.hidden = true;\n this.emit(\"sgds-after-hide\");\n }\n }\n\n @watch(\"checked\")\n async handleCheckedChange() {\n if (this.checked) {\n this.emit(\"i-sgds-change\", { detail: { checked: true } });\n }\n }\n\n /** Opens the expandable content area. */\n public async show() {\n if (this.open) return;\n this.open = true;\n return waitForEvent(this, \"sgds-after-show\");\n }\n\n /** Closes the expandable content area. */\n public async hide() {\n if (!this.open) return;\n this.open = false;\n return waitForEvent(this, \"sgds-after-hide\");\n }\n\n /** @internal — returns visible text content for a body cell by visual column index. */\n public getCellText(columnIndex: number) {\n const cells = this._getCells().filter(cell => cell instanceof SgdsDataTableCell) as SgdsDataTableCell[];\n const cell = cells[columnIndex];\n if (!cell) return \"\";\n return (cell.textContent ?? \"\").trim();\n }\n\n private _getCells() {\n return Array.from(this.children).filter(\n child => child instanceof SgdsDataTableCell || child instanceof SgdsDataTableHead\n ) as Array<SgdsDataTableCell | SgdsDataTableHead>;\n }\n\n private _syncCellSlots(cells: Array<SgdsDataTableCell | SgdsDataTableHead>) {\n cells.forEach(cell => {\n const index = cells.indexOf(cell);\n const slotName = `cell-${index}`;\n this._cellSlotNames.set(cell, slotName);\n if (cell.getAttribute(\"slot\") !== slotName) {\n cell.setAttribute(\"slot\", slotName);\n }\n });\n }\n\n private _handleLightDomChange() {\n const cells = this._getCells();\n this._syncCellSlots(cells);\n this._isHeaderRow = cells.some(cell => cell instanceof SgdsDataTableHead);\n this.requestUpdate();\n }\n\n private _onCheckboxChange(e: CustomEvent) {\n this.emit(\"i-sgds-change\", { detail: { checked: (e.target as SgdsCheckbox).checked } });\n }\n\n private _toggleExpand() {\n this.open ? this.hide() : this.show();\n }\n\n private _onExpandKeyDown(e: KeyboardEvent) {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n this._toggleExpand();\n }\n\n private _onSortKeyDown(e: KeyboardEvent, header: SgdsDataTableHead) {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n header.handleSortClick();\n }\n\n private _renderCell(el: SgdsDataTableCell | SgdsDataTableHead, columnIndex: number) {\n const slotName = this._cellSlotNames.get(el);\n\n if (el instanceof SgdsDataTableHead) {\n return html`<th\n width=${ifDefined(el.width)}\n colspan=${ifDefined(el.colspan)}\n rowspan=${ifDefined(el.rowspan)}\n aria-sort=${ifDefined(el.ariasort)}\n scope=\"col\"\n tabindex=${ifDefined(el.sorting ? \"0\" : undefined)}\n ?data-sorting=${el.sorting}\n @click=${el.sorting ? () => el.handleSortClick() : nothing}\n @keydown=${el.sorting ? (e: KeyboardEvent) => this._onSortKeyDown(e, el) : nothing}\n >\n <div class=\"data-table-head ${el.textAlign === \"right\" ? \"align-right\" : \"align-left\"}\">\n ${slotName ? html`<slot name=${slotName}></slot>` : nothing}\n ${el.sorting\n ? html`\n <button\n type=\"button\"\n class=\"sort-button ${el.ariasort === \"none\" ? \"\" : \"active\"}\"\n aria-label=${el.ariasort === \"descending\" ? \"Sort descending\" : \"Sort ascending\"}\n ?disabled=${!this.hasDataRows}\n >\n <sgds-icon\n class=\"sort-icon\"\n name=${el.ariasort === \"descending\" ? \"sort-descending\" : \"sort-ascending\"}\n size=\"sm\"\n ></sgds-icon>\n </button>\n `\n : nothing}\n </div>\n </th>`;\n }\n\n const cellAlignment = this.columnAlignments[columnIndex] ?? \"left\";\n return html`<td colspan=${ifDefined(el.colspan)} rowspan=${ifDefined(el.rowspan)}>\n <div class=\"data-table-cell ${cellAlignment === \"right\" ? \"align-right\" : \"align-left\"}\">\n ${slotName ? html`<slot name=${slotName}></slot>` : nothing}\n </div>\n </td>`;\n }\n\n private _renderExpandCell() {\n if (this._isHeaderRow) {\n return html`<th class=\"control-cell\" scope=\"col\"></th>`;\n }\n\n return html`<td class=\"control-cell\" @click=${this._toggleExpand} @keydown=${this._onExpandKeyDown} tabindex=\"0\">\n <div class=\"data-table-cell expand-cell\">\n <sgds-icon name=${this.open ? \"chevron-up\" : \"chevron-down\"} size=\"md\"></sgds-icon>\n </div>\n </td>`;\n }\n\n private _renderExpandPlaceholder() {\n return this._isHeaderRow ? html`<th class=\"control-cell\" scope=\"col\"></th>` : html`<td class=\"control-cell\"></td>`;\n }\n\n private _renderCheckboxCell() {\n return this._isHeaderRow\n ? html`<th class=\"control-cell\" scope=\"col\">\n <div class=\"data-table-cell checkbox-cell\">\n <sgds-checkbox .checked=${this.checked} @sgds-change=${this._onCheckboxChange}></sgds-checkbox>\n </div>\n </th>`\n : html`<td class=\"control-cell\">\n <div class=\"data-table-cell checkbox-cell\">\n <sgds-checkbox .checked=${this.checked} @sgds-change=${this._onCheckboxChange}></sgds-checkbox>\n </div>\n </td>`;\n }\n\n render() {\n const cells = this._getCells();\n const totalCols = cells.length + (this.showCheckbox ? 1 : 0) + (this.expand || this.showExpandPlaceholder ? 1 : 0);\n const rowPart = this._isHeaderRow ? \"row row-header\" : \"row row-body\";\n\n return html`\n <tr part=${rowPart} ?data-header-row=${this._isHeaderRow} class=${this.open ? \"active\" : \"\"}>\n ${this.expand\n ? this._renderExpandCell()\n : this.showExpandPlaceholder\n ? this._renderExpandPlaceholder()\n : nothing}\n ${this.showCheckbox ? this._renderCheckboxCell() : nothing}\n ${(() => {\n let visualColumnIndex = 0;\n return cells.map(el => {\n const renderedCell = this._renderCell(el, visualColumnIndex);\n const span = Number(el.colspan) > 0 ? Number(el.colspan) : 1;\n visualColumnIndex += span;\n return renderedCell;\n });\n })()}\n </tr>\n\n ${this.expand\n ? html`\n <tr class=\"expandable-row\">\n <td colspan=${totalCols} class=\"expandable-td\">\n <div class=\"expandable-body\">\n <div class=\"expandable-content\">\n <slot name=\"content\"></slot>\n </div>\n </div>\n </td>\n </tr>\n `\n : nothing}\n `;\n }\n}\n\nsetDefaultAnimation(\"row.expand.show\", {\n keyframes: [\n { height: \"0\", opacity: \"0\" },\n { height: \"auto\", opacity: \"1\" }\n ],\n options: { duration: 250, easing: \"ease-in-out\" }\n});\n\nsetDefaultAnimation(\"row.expand.hide\", {\n keyframes: [\n { height: \"auto\", opacity: \"1\" },\n { height: \"0\", opacity: \"0\" }\n ],\n options: { duration: 250, easing: \"ease-in-out\" }\n});\n\nexport default SgdsDataTableRow;\n"],"names":["tableRowStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-data-table-row.js","sources":["../../../src/components/DataTable/sgds-data-table-row.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, query, state } from \"lit/decorators.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { SgdsCheckbox } from \"../Checkbox/sgds-checkbox\";\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from \"../../utils/animate\";\nimport { getAnimation, setDefaultAnimation } from \"../../utils/animation-registry\";\nimport { waitForEvent } from \"../../utils/event\";\nimport { watch } from \"../../utils/watch\";\nimport tableRowStyle from \"./data-table.css\";\nimport SgdsDataTableCell from \"./sgds-data-table-cell\";\nimport SgdsDataTableHead from \"./sgds-data-table-head\";\nimport { SgdsIcon } from \"../Icon/sgds-icon\";\n\n/**\n * @summary A data table row. Set `expand` to enable an expandable content area beneath\n * the row, then place detail content in the `content` slot.\n *\n * @slot default - Insert `sgds-data-table-cell` or `sgds-data-table-head` elements.\n * @slot content - Content shown in the animated expand area beneath the row.\n *\n * @event sgds-show - Emitted when the expandable row begins to open.\n * @event sgds-after-show - Emitted after the expandable row open animation completes.\n * @event sgds-hide - Emitted when the expandable row begins to close.\n * @event sgds-after-hide - Emitted after the expandable row close animation completes.\n */\nexport class SgdsDataTableRow extends SgdsElement {\n static styles = [...SgdsElement.styles, tableRowStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-checkbox\": SgdsCheckbox,\n \"sgds-data-table-cell\": SgdsDataTableCell,\n \"sgds-data-table-head\": SgdsDataTableHead,\n \"sgds-icon\": SgdsIcon\n };\n\n /** Arbitrary data associated with this row. Returned in event detail on row selection. */\n @property({ type: Object, reflect: true }) rowData: Record<string, unknown> = {};\n\n /** When true, the row has an expandable content area toggled by a chevron. */\n @property({ type: Boolean, reflect: true }) expand = false;\n\n /** When true, the expandable content area is open. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** When true, the row is checked. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** @internal — set by `sgds-data-table` to show a checkbox cell on this row. */\n @property({ type: Boolean }) showCheckbox = false;\n\n /** @internal — set by `sgds-data-table` when at least one sibling row is expandable. */\n @property({ type: Boolean }) showExpandPlaceholder = false;\n\n /** @internal — per-column alignment injected by `sgds-data-table` from header cells. */\n @property({ attribute: false }) columnAlignments: Array<\"left\" | \"right\"> = [];\n /** @internal — set by `sgds-data-table` to indicate whether body rows exist. */\n @property({ type: Boolean }) hasDataRows = false;\n\n /** @internal */\n @query(\".expandable-body\") private _expandableBody!: HTMLElement;\n\n /** @internal */\n @query(\"sgds-checkbox\") private _checkboxEl!: SgdsCheckbox;\n\n @state() private _isHeaderRow = false;\n private _cellSlotNames = new WeakMap<SgdsDataTableCell | SgdsDataTableHead, string>();\n private _lightDomObserver?: MutationObserver;\n\n /** The checkbox rendered inside this row, if `showCheckbox` is true. */\n get checkbox(): SgdsCheckbox | null {\n return this._checkboxEl ?? null;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._lightDomObserver = new MutationObserver(() => this._handleLightDomChange());\n this._lightDomObserver.observe(this, { childList: true });\n this._handleLightDomChange();\n }\n\n disconnectedCallback() {\n this._lightDomObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n firstUpdated() {\n if (this._expandableBody) {\n this._expandableBody.hidden = !this.open;\n }\n }\n\n @watch(\"open\", { waitUntilFirstUpdate: true })\n async handleExpandedChange() {\n if (this.open) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.open = false;\n return;\n }\n await stopAnimations(this._expandableBody);\n this._expandableBody.hidden = false;\n const { keyframes, options } = getAnimation(this, \"row.expand.show\");\n await animateTo(\n this._expandableBody,\n shimKeyframesHeightAuto(keyframes, this._expandableBody.scrollHeight),\n options\n );\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.open = true;\n return;\n }\n await stopAnimations(this._expandableBody);\n const { keyframes, options } = getAnimation(this, \"row.expand.hide\");\n await animateTo(\n this._expandableBody,\n shimKeyframesHeightAuto(keyframes, this._expandableBody.scrollHeight),\n options\n );\n this._expandableBody.hidden = true;\n this.emit(\"sgds-after-hide\");\n }\n }\n\n @watch(\"checked\")\n async handleCheckedChange() {\n if (this.checked) {\n this.emit(\"i-sgds-change\", { detail: { checked: true } });\n }\n }\n\n /** Opens the expandable content area. */\n public async show() {\n if (this.open) return;\n this.open = true;\n return waitForEvent(this, \"sgds-after-show\");\n }\n\n /** Closes the expandable content area. */\n public async hide() {\n if (!this.open) return;\n this.open = false;\n return waitForEvent(this, \"sgds-after-hide\");\n }\n\n /** @internal — returns visible text content for a body cell by visual column index. */\n public getCellText(columnIndex: number) {\n const cells = this._getCells().filter(cell => cell instanceof SgdsDataTableCell) as SgdsDataTableCell[];\n const cell = cells[columnIndex];\n if (!cell) return \"\";\n return (cell.textContent ?? \"\").trim();\n }\n\n private _getCells() {\n return Array.from(this.children).filter(\n child => child instanceof SgdsDataTableCell || child instanceof SgdsDataTableHead\n ) as Array<SgdsDataTableCell | SgdsDataTableHead>;\n }\n\n private _syncCellSlots(cells: Array<SgdsDataTableCell | SgdsDataTableHead>) {\n cells.forEach(cell => {\n const index = cells.indexOf(cell);\n const slotName = `cell-${index}`;\n this._cellSlotNames.set(cell, slotName);\n if (cell.getAttribute(\"slot\") !== slotName) {\n cell.setAttribute(\"slot\", slotName);\n }\n });\n }\n\n private _handleLightDomChange() {\n const cells = this._getCells();\n this._syncCellSlots(cells);\n this._isHeaderRow = cells.some(cell => cell instanceof SgdsDataTableHead);\n this.requestUpdate();\n }\n\n private _onCheckboxChange(e: CustomEvent) {\n this.emit(\"i-sgds-change\", { detail: { checked: (e.target as SgdsCheckbox).checked } });\n }\n\n private _toggleExpand() {\n this.open ? this.hide() : this.show();\n }\n\n private _onExpandKeyDown(e: KeyboardEvent) {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n this._toggleExpand();\n }\n\n private _onSortKeyDown(e: KeyboardEvent, header: SgdsDataTableHead) {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n header.handleSortClick();\n }\n\n private _renderCell(el: SgdsDataTableCell | SgdsDataTableHead, columnIndex: number) {\n const slotName = this._cellSlotNames.get(el);\n\n if (el instanceof SgdsDataTableHead) {\n return html`<th\n width=${ifDefined(el.width)}\n colspan=${ifDefined(el.colSpan)}\n rowspan=${ifDefined(el.rowSpan)}\n aria-sort=${ifDefined(el.sortDirection)}\n scope=\"col\"\n tabindex=${ifDefined(el.sorting ? \"0\" : undefined)}\n ?data-sorting=${el.sorting}\n @click=${el.sorting ? () => el.handleSortClick() : nothing}\n @keydown=${el.sorting ? (e: KeyboardEvent) => this._onSortKeyDown(e, el) : nothing}\n >\n <div class=\"data-table-head ${el.textAlign === \"right\" ? \"align-right\" : \"align-left\"}\">\n ${slotName ? html`<slot name=${slotName}></slot>` : nothing}\n ${el.sorting\n ? html`\n <button\n type=\"button\"\n class=\"sort-button ${el.sortDirection === \"none\" ? \"\" : \"active\"}\"\n aria-label=${el.sortDirection === \"descending\" ? \"Sort descending\" : \"Sort ascending\"}\n ?disabled=${!this.hasDataRows}\n >\n <sgds-icon\n class=\"sort-icon\"\n name=${el.sortDirection === \"descending\" ? \"sort-descending\" : \"sort-ascending\"}\n size=\"sm\"\n ></sgds-icon>\n </button>\n `\n : nothing}\n </div>\n </th>`;\n }\n\n const cellAlignment = this.columnAlignments[columnIndex] ?? \"left\";\n return html`<td colspan=${ifDefined(el.colSpan)} rowspan=${ifDefined(el.rowSpan)}>\n <div class=\"data-table-cell ${cellAlignment === \"right\" ? \"align-right\" : \"align-left\"}\">\n ${slotName ? html`<slot name=${slotName}></slot>` : nothing}\n </div>\n </td>`;\n }\n\n private _renderExpandCell() {\n if (this._isHeaderRow) {\n return html`<th class=\"control-cell\" scope=\"col\"></th>`;\n }\n\n return html`<td class=\"control-cell\" @click=${this._toggleExpand} @keydown=${this._onExpandKeyDown} tabindex=\"0\">\n <div class=\"data-table-cell expand-cell\">\n <sgds-icon name=${this.open ? \"chevron-up\" : \"chevron-down\"} size=\"md\"></sgds-icon>\n </div>\n </td>`;\n }\n\n private _renderExpandPlaceholder() {\n return this._isHeaderRow ? html`<th class=\"control-cell\" scope=\"col\"></th>` : html`<td class=\"control-cell\"></td>`;\n }\n\n private _renderCheckboxCell() {\n return this._isHeaderRow\n ? html`<th class=\"control-cell\" scope=\"col\">\n <div class=\"data-table-cell checkbox-cell\">\n <sgds-checkbox .checked=${this.checked} @sgds-change=${this._onCheckboxChange}></sgds-checkbox>\n </div>\n </th>`\n : html`<td class=\"control-cell\">\n <div class=\"data-table-cell checkbox-cell\">\n <sgds-checkbox .checked=${this.checked} @sgds-change=${this._onCheckboxChange}></sgds-checkbox>\n </div>\n </td>`;\n }\n\n render() {\n const cells = this._getCells();\n const totalCols = cells.length + (this.showCheckbox ? 1 : 0) + (this.expand || this.showExpandPlaceholder ? 1 : 0);\n const rowPart = this._isHeaderRow ? \"row row-header\" : \"row row-body\";\n\n return html`\n <tr part=${rowPart} ?data-header-row=${this._isHeaderRow} class=${this.open ? \"active\" : \"\"}>\n ${this.expand\n ? this._renderExpandCell()\n : this.showExpandPlaceholder\n ? this._renderExpandPlaceholder()\n : nothing}\n ${this.showCheckbox ? this._renderCheckboxCell() : nothing}\n ${(() => {\n let visualColumnIndex = 0;\n return cells.map(el => {\n const renderedCell = this._renderCell(el, visualColumnIndex);\n const span = Number(el.colSpan) > 0 ? Number(el.colSpan) : 1;\n visualColumnIndex += span;\n return renderedCell;\n });\n })()}\n </tr>\n\n ${this.expand\n ? html`\n <tr class=\"expandable-row\">\n <td colspan=${totalCols} class=\"expandable-td\">\n <div class=\"expandable-body\">\n <div class=\"expandable-content\">\n <slot name=\"content\"></slot>\n </div>\n </div>\n </td>\n </tr>\n `\n : nothing}\n `;\n }\n}\n\nsetDefaultAnimation(\"row.expand.show\", {\n keyframes: [\n { height: \"0\", opacity: \"0\" },\n { height: \"auto\", opacity: \"1\" }\n ],\n options: { duration: 250, easing: \"ease-in-out\" }\n});\n\nsetDefaultAnimation(\"row.expand.hide\", {\n keyframes: [\n { height: \"auto\", opacity: \"1\" },\n { height: \"0\", opacity: \"0\" }\n ],\n options: { duration: 250, easing: \"ease-in-out\" }\n});\n\nexport default SgdsDataTableRow;\n"],"names":["tableRowStyle"],"mappings":"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"}
@@ -2,7 +2,7 @@ import SgdsElement from "../../base/sgds-element";
2
2
  import SgdsPagination from "../Pagination/sgds-pagination";
3
3
  import SgdsDataTableCell from "./sgds-data-table-cell";
4
4
  import SgdsDataTableHead from "./sgds-data-table-head";
5
- import SgdsSpinner from "../Spinner/sgds-spinner";
5
+ import SgdsSkeleton from "../Skeleton/sgds-skeleton";
6
6
  /**
7
7
  * @summary A data table container with pagination, row selection, loading, and sorting support.
8
8
  *
@@ -21,7 +21,7 @@ export declare class SgdsDataTable extends SgdsElement {
21
21
  "sgds-pagination": typeof SgdsPagination;
22
22
  "sgds-data-table-cell": typeof SgdsDataTableCell;
23
23
  "sgds-data-table-head": typeof SgdsDataTableHead;
24
- "sgds-spinner": typeof SgdsSpinner;
24
+ "sgds-skeleton": typeof SgdsSkeleton;
25
25
  };
26
26
  /** If true, renders a checkbox column for row selection. */
27
27
  multiSelect: boolean;
@@ -33,12 +33,12 @@ export declare class SgdsDataTable extends SgdsElement {
33
33
  itemsPerPage: number;
34
34
  /** Custom text shown on the footer's left side. */
35
35
  footerText: string;
36
- /** If true, hides the footer (summary text and pagination controls). */
37
- hideFooter: boolean;
38
36
  /** When true, shows a loading state and hides body rows. */
39
37
  isLoading: boolean;
40
38
  /** When true, emits sort events for external handling instead of local sorting. */
41
39
  serverSort: boolean;
40
+ /** Variant forwarded to the internal pagination component. */
41
+ paginationVariant: "default" | "number" | "button" | "description";
42
42
  /**
43
43
  * Controls the CSS `table-layout` algorithm.
44
44
  * Use "auto" to let the browser size columns based on content, or "fixed" to distribute column widths evenly regardless of content.
@@ -76,6 +76,8 @@ export declare class SgdsDataTable extends SgdsElement {
76
76
  private _syncDomRowOrder;
77
77
  private _handleSlotChange;
78
78
  private _updateVisibleRows;
79
+ private _getSkeletonColumnCount;
80
+ private _renderLoadingSkeleton;
79
81
  updated(changed: Map<string, unknown>): void;
80
82
  render(): import("lit").TemplateResult<1>;
81
83
  }
@@ -7,7 +7,7 @@ import { SgdsPagination } from '../Pagination/sgds-pagination.js';
7
7
  import { SgdsDataTableRow } from './sgds-data-table-row.js';
8
8
  import { SgdsDataTableCell } from './sgds-data-table-cell.js';
9
9
  import { SgdsDataTableHead } from './sgds-data-table-head.js';
10
- import { SgdsSpinner } from '../Spinner/sgds-spinner.js';
10
+ import { SgdsSkeleton } from '../Skeleton/sgds-skeleton.js';
11
11
 
12
12
  /**
13
13
  * @summary A data table container with pagination, row selection, loading, and sorting support.
@@ -33,12 +33,12 @@ class SgdsDataTable extends SgdsElement {
33
33
  this.itemsPerPage = 5;
34
34
  /** Custom text shown on the footer's left side. */
35
35
  this.footerText = "";
36
- /** If true, hides the footer (summary text and pagination controls). */
37
- this.hideFooter = false;
38
36
  /** When true, shows a loading state and hides body rows. */
39
37
  this.isLoading = false;
40
38
  /** When true, emits sort events for external handling instead of local sorting. */
41
39
  this.serverSort = false;
40
+ /** Variant forwarded to the internal pagination component. */
41
+ this.paginationVariant = "default";
42
42
  /**
43
43
  * Controls the CSS `table-layout` algorithm.
44
44
  * Use "auto" to let the browser size columns based on content, or "fixed" to distribute column widths evenly regardless of content.
@@ -135,7 +135,7 @@ class SgdsDataTable extends SgdsElement {
135
135
  _applyColumnAlignment() {
136
136
  const headerAlignments = this._headerCells.reduce((acc, header) => {
137
137
  var _a;
138
- const span = Number(header.colspan) > 0 ? Number(header.colspan) : 1;
138
+ const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;
139
139
  const alignment = (_a = header.textAlign) !== null && _a !== void 0 ? _a : "left";
140
140
  for (let i = 0; i < span; i++) {
141
141
  acc.push(alignment);
@@ -178,7 +178,7 @@ class SgdsDataTable extends SgdsElement {
178
178
  _resetOtherHeaderSortStates(activeHeader) {
179
179
  this._headerCells.forEach(header => {
180
180
  if (header !== activeHeader && header.sorting) {
181
- header.ariasort = "none";
181
+ header.sortDirection = "none";
182
182
  }
183
183
  });
184
184
  }
@@ -277,16 +277,20 @@ class SgdsDataTable extends SgdsElement {
277
277
  }, []);
278
278
  this._captureInitialRowPositions(this.tableRows);
279
279
  this._headerCells.forEach(header => {
280
- if (header.sorting && !header.ariasort) {
281
- header.ariasort = "none";
280
+ if (header.sorting && !header.sortDirection) {
281
+ header.sortDirection = "none";
282
282
  }
283
283
  });
284
284
  this._configureRows();
285
285
  this._updateVisibleRows();
286
286
  }
287
287
  _updateVisibleRows() {
288
+ if (this.isLoading) {
289
+ this.tableRows.forEach(row => (row.style.display = "none"));
290
+ return;
291
+ }
288
292
  if (this.mode === "server") {
289
- this.tableRows.forEach(row => (row.style.display = this.isLoading ? "none" : ""));
293
+ this.tableRows.forEach(row => (row.style.display = ""));
290
294
  return;
291
295
  }
292
296
  const total = this.dataLength || this.tableRows.length;
@@ -299,6 +303,35 @@ class SgdsDataTable extends SgdsElement {
299
303
  const visible = new Set(this.tableRows.slice(start, start + this.itemsPerPage));
300
304
  this.tableRows.forEach(row => (row.style.display = visible.has(row) ? "" : "none"));
301
305
  }
306
+ _getSkeletonColumnCount() {
307
+ const firstHeaderRow = this.headerRows[0];
308
+ const firstHeaderCells = firstHeaderRow
309
+ ? Array.from(firstHeaderRow.children).filter(child => child instanceof SgdsDataTableHead)
310
+ : [];
311
+ const headerColumnCount = firstHeaderCells.reduce((count, header) => {
312
+ const span = Number(header.colSpan) > 0 ? Number(header.colSpan) : 1;
313
+ return count + span;
314
+ }, 0);
315
+ const firstBodyRow = this.tableRows[0];
316
+ const fallbackBodyColumnCount = firstBodyRow
317
+ ? Array.from(firstBodyRow.children).filter(child => child instanceof SgdsDataTableCell).length
318
+ : 0;
319
+ const hasExpand = this.tableRows.some(row => row.expand);
320
+ const controlColumns = (this.multiSelect ? 1 : 0) + (hasExpand ? 1 : 0);
321
+ const dataColumns = headerColumnCount || fallbackBodyColumnCount || 1;
322
+ return Math.max(1, dataColumns + controlColumns);
323
+ }
324
+ _renderLoadingSkeleton() {
325
+ const skeletonColumns = this._getSkeletonColumnCount();
326
+ const skeletonRows = Math.max(1, this.itemsPerPage || 1);
327
+ return html `<div class="loading" role="status" aria-live="polite" aria-label="Loading">
328
+ <div class="loading-grid" style=${`--sgds-data-table-loading-columns: ${skeletonColumns};`} aria-hidden="true">
329
+ ${Array.from({ length: skeletonRows }, (_, rowIndex) => html `<div class="loading-grid-row" key=${rowIndex}>
330
+ ${Array.from({ length: skeletonColumns }, () => html `<sgds-skeleton .height=${"56px"} .borderRadius=${"4px"}></sgds-skeleton>`)}
331
+ </div>`)}
332
+ </div>
333
+ </div>`;
334
+ }
302
335
  updated(changed) {
303
336
  if (changed.has("currentPage") || changed.has("itemsPerPage") || changed.has("mode") || changed.has("isLoading")) {
304
337
  this._updateVisibleRows();
@@ -316,34 +349,34 @@ class SgdsDataTable extends SgdsElement {
316
349
  const end = Math.min(start + this.itemsPerPage, total);
317
350
  const displayStart = total === 0 ? 0 : start + 1;
318
351
  const showNoData = !this.isLoading && this.tableRows.length === 0;
352
+ const showFooter = total !== 0;
319
353
  return html `
320
354
  <div class="data-table">
321
- <div>
355
+ <div class="table-container">
322
356
  <slot @slotchange=${this._handleSlotChange} @i-sgds-sort=${this._handleSort} class="table"></slot>
323
357
  ${this.isLoading
324
- ? html `<div class="loading" role="status" aria-live="polite">
325
- <div class="loading-menu"><sgds-spinner size="xs" tone="brand"></sgds-spinner>Loading...</div>
326
- </div>`
358
+ ? this._renderLoadingSkeleton()
327
359
  : showNoData
328
360
  ? html `<slot name="no-data" class="no-data" role="status" aria-live="polite">No data</slot>`
329
361
  : nothing}
330
362
  </div>
331
363
 
332
- ${this.hideFooter
333
- ? nothing
334
- : html `<div class="footer">
364
+ ${showFooter
365
+ ? html `<div class="footer">
335
366
  ${this.footerText || html `<span>Showing ${displayStart} to ${end} of ${total} results</span>`}
336
367
  <sgds-pagination
337
368
  .dataLength=${total}
338
369
  .currentPage=${this.currentPage}
339
370
  .itemsPerPage=${this.itemsPerPage}
371
+ .variant=${this.paginationVariant}
340
372
  size="sm"
341
373
  @sgds-page-change=${(e) => {
342
374
  this.currentPage = e.detail.currentPage;
343
375
  this.emit("sgds-page-change");
344
376
  }}
345
377
  ></sgds-pagination>
346
- </div>`}
378
+ </div>`
379
+ : nothing}
347
380
  </div>
348
381
  `;
349
382
  }
@@ -362,7 +395,7 @@ SgdsDataTable.dependencies = {
362
395
  "sgds-pagination": SgdsPagination,
363
396
  "sgds-data-table-cell": SgdsDataTableCell,
364
397
  "sgds-data-table-head": SgdsDataTableHead,
365
- "sgds-spinner": SgdsSpinner
398
+ "sgds-skeleton": SgdsSkeleton
366
399
  };
367
400
  __decorate([
368
401
  property({ type: Boolean })
@@ -379,15 +412,15 @@ __decorate([
379
412
  __decorate([
380
413
  property({ type: String })
381
414
  ], SgdsDataTable.prototype, "footerText", void 0);
382
- __decorate([
383
- property({ type: Boolean })
384
- ], SgdsDataTable.prototype, "hideFooter", void 0);
385
415
  __decorate([
386
416
  property({ type: Boolean })
387
417
  ], SgdsDataTable.prototype, "isLoading", void 0);
388
418
  __decorate([
389
419
  property({ type: Boolean })
390
420
  ], SgdsDataTable.prototype, "serverSort", void 0);
421
+ __decorate([
422
+ property({ type: String })
423
+ ], SgdsDataTable.prototype, "paginationVariant", void 0);
391
424
  __decorate([
392
425
  property({ type: String, reflect: true })
393
426
  ], SgdsDataTable.prototype, "layout", void 0);