@govtechsg/sgds-web-component 3.10.0-rc.4 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/base/select-element.d.ts +0 -1
  2. package/base/select-element.js +0 -1
  3. package/base/select-element.js.map +1 -1
  4. package/components/Checkbox/index.umd.min.js +3 -3
  5. package/components/Checkbox/index.umd.min.js.map +1 -1
  6. package/components/Checkbox/sgds-checkbox-group.d.ts +0 -1
  7. package/components/Checkbox/sgds-checkbox-group.js +0 -1
  8. package/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  9. package/components/Checkbox/sgds-checkbox.d.ts +0 -1
  10. package/components/Checkbox/sgds-checkbox.js +0 -1
  11. package/components/Checkbox/sgds-checkbox.js.map +1 -1
  12. package/components/ComboBox/index.umd.min.js +225 -225
  13. package/components/ComboBox/index.umd.min.js.map +1 -1
  14. package/components/Datepicker/index.umd.min.js +3 -3
  15. package/components/Datepicker/index.umd.min.js.map +1 -1
  16. package/components/Datepicker/sgds-datepicker.d.ts +0 -1
  17. package/components/Datepicker/sgds-datepicker.js +0 -1
  18. package/components/Datepicker/sgds-datepicker.js.map +1 -1
  19. package/components/FileUpload/index.umd.min.js +2 -2
  20. package/components/FileUpload/index.umd.min.js.map +1 -1
  21. package/components/FileUpload/sgds-file-upload.d.ts +0 -1
  22. package/components/FileUpload/sgds-file-upload.js +0 -1
  23. package/components/FileUpload/sgds-file-upload.js.map +1 -1
  24. package/components/Input/index.umd.min.js +2 -2
  25. package/components/Input/index.umd.min.js.map +1 -1
  26. package/components/Input/sgds-input.d.ts +0 -1
  27. package/components/Input/sgds-input.js +0 -1
  28. package/components/Input/sgds-input.js.map +1 -1
  29. package/components/QuantityToggle/index.umd.min.js +3 -3
  30. package/components/QuantityToggle/index.umd.min.js.map +1 -1
  31. package/components/QuantityToggle/sgds-quantity-toggle.d.ts +0 -1
  32. package/components/QuantityToggle/sgds-quantity-toggle.js +0 -1
  33. package/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
  34. package/components/Radio/index.umd.min.js +6 -6
  35. package/components/Radio/index.umd.min.js.map +1 -1
  36. package/components/Radio/sgds-radio-group.d.ts +0 -1
  37. package/components/Radio/sgds-radio-group.js +0 -1
  38. package/components/Radio/sgds-radio-group.js.map +1 -1
  39. package/components/Select/index.umd.min.js +2 -2
  40. package/components/Select/index.umd.min.js.map +1 -1
  41. package/components/SystemBanner/index.umd.min.js +2 -2
  42. package/components/SystemBanner/index.umd.min.js.map +1 -1
  43. package/components/SystemBanner/sgds-system-banner.d.ts +2 -2
  44. package/components/SystemBanner/sgds-system-banner.js +5 -5
  45. package/components/SystemBanner/sgds-system-banner.js.map +1 -1
  46. package/components/Table/index.umd.min.js +62 -17
  47. package/components/Table/index.umd.min.js.map +1 -1
  48. package/components/Table/sgds-table-cell.js +1 -1
  49. package/components/Table/sgds-table-cell.js.map +1 -1
  50. package/components/Table/sgds-table-head.d.ts +2 -5
  51. package/components/Table/sgds-table-head.js +24 -15
  52. package/components/Table/sgds-table-head.js.map +1 -1
  53. package/components/Table/sgds-table.d.ts +41 -6
  54. package/components/Table/sgds-table.js +57 -15
  55. package/components/Table/sgds-table.js.map +1 -1
  56. package/components/Table/table-cell.js +1 -1
  57. package/components/Table/table-context.d.ts +3 -0
  58. package/components/Table/table-context.js +6 -0
  59. package/components/Table/table-context.js.map +1 -0
  60. package/components/Table/table-head.js +1 -1
  61. package/components/Table/table.js +1 -1
  62. package/components/Textarea/index.umd.min.js +6 -6
  63. package/components/Textarea/index.umd.min.js.map +1 -1
  64. package/components/Textarea/sgds-textarea.d.ts +0 -1
  65. package/components/Textarea/sgds-textarea.js +0 -1
  66. package/components/Textarea/sgds-textarea.js.map +1 -1
  67. package/components/index.umd.min.js +31 -27
  68. package/components/index.umd.min.js.map +1 -1
  69. package/index.umd.min.js +616 -612
  70. package/index.umd.min.js.map +1 -1
  71. package/package.json +1 -1
  72. package/react/base/select-element.cjs.js +0 -1
  73. package/react/base/select-element.cjs.js.map +1 -1
  74. package/react/base/select-element.js +0 -1
  75. package/react/base/select-element.js.map +1 -1
  76. package/react/components/Checkbox/sgds-checkbox-group.cjs.js +0 -1
  77. package/react/components/Checkbox/sgds-checkbox-group.cjs.js.map +1 -1
  78. package/react/components/Checkbox/sgds-checkbox-group.js +0 -1
  79. package/react/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  80. package/react/components/Checkbox/sgds-checkbox.cjs.js +0 -1
  81. package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
  82. package/react/components/Checkbox/sgds-checkbox.js +0 -1
  83. package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
  84. package/react/components/Datepicker/sgds-datepicker.cjs.js +0 -1
  85. package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
  86. package/react/components/Datepicker/sgds-datepicker.js +0 -1
  87. package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
  88. package/react/components/FileUpload/sgds-file-upload.cjs.js +0 -1
  89. package/react/components/FileUpload/sgds-file-upload.cjs.js.map +1 -1
  90. package/react/components/FileUpload/sgds-file-upload.js +0 -1
  91. package/react/components/FileUpload/sgds-file-upload.js.map +1 -1
  92. package/react/components/Input/sgds-input.cjs.js +0 -1
  93. package/react/components/Input/sgds-input.cjs.js.map +1 -1
  94. package/react/components/Input/sgds-input.js +0 -1
  95. package/react/components/Input/sgds-input.js.map +1 -1
  96. package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js +0 -1
  97. package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js.map +1 -1
  98. package/react/components/QuantityToggle/sgds-quantity-toggle.js +0 -1
  99. package/react/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
  100. package/react/components/Radio/sgds-radio-group.cjs.js +0 -1
  101. package/react/components/Radio/sgds-radio-group.cjs.js.map +1 -1
  102. package/react/components/Radio/sgds-radio-group.js +0 -1
  103. package/react/components/Radio/sgds-radio-group.js.map +1 -1
  104. package/react/components/SystemBanner/sgds-system-banner.cjs.js +5 -5
  105. package/react/components/SystemBanner/sgds-system-banner.cjs.js.map +1 -1
  106. package/react/components/SystemBanner/sgds-system-banner.js +5 -5
  107. package/react/components/SystemBanner/sgds-system-banner.js.map +1 -1
  108. package/react/components/Table/sgds-table-cell.cjs.js +1 -1
  109. package/react/components/Table/sgds-table-cell.cjs.js.map +1 -1
  110. package/react/components/Table/sgds-table-cell.js +1 -1
  111. package/react/components/Table/sgds-table-cell.js.map +1 -1
  112. package/react/components/Table/sgds-table-head.cjs.js +24 -15
  113. package/react/components/Table/sgds-table-head.cjs.js.map +1 -1
  114. package/react/components/Table/sgds-table-head.js +24 -15
  115. package/react/components/Table/sgds-table-head.js.map +1 -1
  116. package/react/components/Table/sgds-table.cjs.js +56 -14
  117. package/react/components/Table/sgds-table.cjs.js.map +1 -1
  118. package/react/components/Table/sgds-table.js +57 -15
  119. package/react/components/Table/sgds-table.js.map +1 -1
  120. package/react/components/Table/table-cell.cjs.js +1 -1
  121. package/react/components/Table/table-cell.js +1 -1
  122. package/react/components/Table/table-context.cjs.js +11 -0
  123. package/react/components/Table/table-context.cjs.js.map +1 -0
  124. package/react/components/Table/table-context.js +7 -0
  125. package/react/components/Table/table-context.js.map +1 -0
  126. package/react/components/Table/table-head.cjs.js +1 -1
  127. package/react/components/Table/table-head.js +1 -1
  128. package/react/components/Table/table.cjs.js +1 -1
  129. package/react/components/Table/table.js +1 -1
  130. package/react/components/Textarea/sgds-textarea.cjs.js +0 -1
  131. package/react/components/Textarea/sgds-textarea.cjs.js.map +1 -1
  132. package/react/components/Textarea/sgds-textarea.js +0 -1
  133. package/react/components/Textarea/sgds-textarea.js.map +1 -1
  134. package/react/utils/inputValidationController.cjs.js +2 -2
  135. package/react/utils/inputValidationController.cjs.js.map +1 -1
  136. package/react/utils/inputValidationController.js +2 -2
  137. package/react/utils/inputValidationController.js.map +1 -1
  138. package/react/utils/validatorMixin.cjs.js +10 -13
  139. package/react/utils/validatorMixin.cjs.js.map +1 -1
  140. package/react/utils/validatorMixin.js +10 -13
  141. package/react/utils/validatorMixin.js.map +1 -1
  142. package/utils/inputValidationController.d.ts +1 -1
  143. package/utils/inputValidationController.js +2 -2
  144. package/utils/inputValidationController.js.map +1 -1
  145. package/utils/validatorMixin.js +10 -13
  146. package/utils/validatorMixin.js.map +1 -1
@@ -13,7 +13,7 @@ class SgdsTableCell extends SgdsElement {
13
13
  this.setAttribute("role", "cell");
14
14
  }
15
15
  render() {
16
- return html ` <slot class="table-cell"></slot> `;
16
+ return html `<div class="table-cell"><slot></slot></div>`;
17
17
  }
18
18
  }
19
19
  SgdsTableCell.styles = [...SgdsElement.styles, css_248z];
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-table-cell.js","sources":["../../../src/components/Table/sgds-table-cell.ts"],"sourcesContent":["import { html } from \"lit\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport tableCellStyle from \"./table-cell.css\";\n\n/**\n * @summary Table cell is used for presenting individual data values, interactive elements, or custom content within a table row.\n *\n * @slot - Insert any elements to be rendered as the cell’s content.\n */\nexport class SgdsTableCell extends SgdsElement {\n static styles = [...SgdsElement.styles, tableCellStyle];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"cell\");\n }\n\n render() {\n return html` <slot class=\"table-cell\"></slot> `;\n }\n}\n\nexport default SgdsTableCell;\n"],"names":["tableCellStyle"],"mappings":";;;;AAIA;;;;AAIG;AACG,MAAO,aAAc,SAAQ,WAAW,CAAA;IAG5C,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,kCAAA,CAAoC,CAAC;KACjD;;AATM,aAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAc,CAAC;;;;"}
1
+ {"version":3,"file":"sgds-table-cell.js","sources":["../../../src/components/Table/sgds-table-cell.ts"],"sourcesContent":["import { html } from \"lit\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport tableCellStyle from \"./table-cell.css\";\n\n/**\n * @summary Table cell is used for presenting individual data values, interactive elements, or custom content within a table row.\n *\n * @slot - Insert any elements to be rendered as the cell’s content.\n */\nexport class SgdsTableCell extends SgdsElement {\n static styles = [...SgdsElement.styles, tableCellStyle];\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"cell\");\n }\n\n render() {\n return html`<div class=\"table-cell\"><slot></slot></div>`;\n }\n}\n\nexport default SgdsTableCell;\n"],"names":["tableCellStyle"],"mappings":";;;;AAKA;;;;AAIG;AACG,MAAO,aAAc,SAAQ,WAAW,CAAA;IAG5C,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,2CAAA,CAA6C,CAAC;KAC1D;;AATM,aAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAc,CAAC;;;;"}
@@ -6,12 +6,9 @@ import SgdsElement from "../../base/sgds-element";
6
6
  */
7
7
  export declare class SgdsTableHead extends SgdsElement {
8
8
  static styles: import("lit").CSSResult[];
9
- /**
10
- * To indicate if the header will have a darker bottom border style
11
- */
12
- private border;
13
- _handleBorderChange(): void;
9
+ private _headerBackground;
14
10
  connectedCallback(): void;
11
+ _handleHeaderBackground(): void;
15
12
  render(): import("lit").TemplateResult<1>;
16
13
  }
17
14
  export default SgdsTableHead;
@@ -1,9 +1,12 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { html } from 'lit';
3
- import { state } from 'lit/decorators.js';
4
3
  import SgdsElement from '../../base/sgds-element.js';
5
- import { watch } from '../../utils/watch.js';
6
4
  import css_248z from './table-head.js';
5
+ import { consume } from '@lit/context';
6
+ import { TableHeaderBackgroundContext } from './table-context.js';
7
+ import { state } from 'lit/decorators.js';
8
+ import { classMap } from 'lit/directives/class-map.js';
9
+ import { watch } from '../../utils/watch.js';
7
10
 
8
11
  /**
9
12
  * @summary Table head represents a table header cell that identifies a group of information within the table.
@@ -13,31 +16,37 @@ import css_248z from './table-head.js';
13
16
  class SgdsTableHead extends SgdsElement {
14
17
  constructor() {
15
18
  super(...arguments);
16
- /**
17
- * To indicate if the header will have a darker bottom border style
18
- */
19
- this.border = false;
20
- }
21
- _handleBorderChange() {
22
- var _a, _b;
23
- this.border = ((_b = (_a = this.nextElementSibling) === null || _a === void 0 ? void 0 : _a.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase()) !== "sgds-table-cell";
24
- this.border ? this.setAttribute("border", "true") : this.removeAttribute("border");
19
+ this._headerBackground = false;
25
20
  }
26
21
  connectedCallback() {
27
22
  super.connectedCallback();
28
23
  this.setAttribute("role", "columnheader");
29
24
  }
25
+ _handleHeaderBackground() {
26
+ if (this._headerBackground)
27
+ this.setAttribute("headerBackground", "true");
28
+ else
29
+ this.removeAttribute("headerBackground");
30
+ }
30
31
  render() {
31
- return html `<slot></slot>`;
32
+ return html `<div
33
+ class=${classMap({
34
+ "table-head": true,
35
+ "header-background": this._headerBackground
36
+ })}
37
+ >
38
+ <slot></slot>
39
+ </div>`;
32
40
  }
33
41
  }
34
42
  SgdsTableHead.styles = [...SgdsElement.styles, css_248z];
35
43
  __decorate([
44
+ consume({ context: TableHeaderBackgroundContext, subscribe: true }),
36
45
  state()
37
- ], SgdsTableHead.prototype, "border", void 0);
46
+ ], SgdsTableHead.prototype, "_headerBackground", void 0);
38
47
  __decorate([
39
- watch("border")
40
- ], SgdsTableHead.prototype, "_handleBorderChange", null);
48
+ watch("_headerBackground")
49
+ ], SgdsTableHead.prototype, "_handleHeaderBackground", null);
41
50
 
42
51
  export { SgdsTableHead, SgdsTableHead as default };
43
52
  //# sourceMappingURL=sgds-table-head.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-table-head.js","sources":["../../../src/components/Table/sgds-table-head.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport { watch } from \"../../utils/watch\";\nimport tableHeadStyle from \"./table-head.css\";\n\n/**\n * @summary Table head represents a table header cell that identifies a group of information within the table.\n *\n * @slot - Place any elements inside to display as the header content.\n */\nexport class SgdsTableHead extends SgdsElement {\n static styles = [...SgdsElement.styles, tableHeadStyle];\n /**\n * To indicate if the header will have a darker bottom border style\n */\n @state() private border = false;\n\n @watch(\"border\")\n _handleBorderChange() {\n this.border = this.nextElementSibling?.tagName?.toLowerCase() !== \"sgds-table-cell\";\n this.border ? this.setAttribute(\"border\", \"true\") : this.removeAttribute(\"border\");\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"columnheader\");\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\nexport default SgdsTableHead;\n"],"names":["tableHeadStyle"],"mappings":";;;;;;;AAMA;;;;AAIG;AACG,MAAO,aAAc,SAAQ,WAAW,CAAA;AAA9C,IAAA,WAAA,GAAA;;AAEE;;AAEG;QACc,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAgBjC;IAbC,mBAAmB,GAAA;;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,MAAK,iBAAiB,CAAC;QACpF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KACpF;IAED,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAC3C;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,aAAA,CAAe,CAAC;KAC5B;;AAnBM,aAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAc,CAAzC,CAA2C;AAIvC,UAAA,CAAA;AAAhB,IAAA,KAAK,EAAE;AAAwB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGhC,UAAA,CAAA;IADC,KAAK,CAAC,QAAQ,CAAC;AAIf,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sgds-table-head.js","sources":["../../../src/components/Table/sgds-table-head.ts"],"sourcesContent":["import { html } from \"lit\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport tableHeadStyle from \"./table-head.css\";\n\nimport { consume } from \"@lit/context\";\nimport { TableHeaderBackgroundContext } from \"./table-context\";\nimport { state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { watch } from \"../../utils/watch\";\n\n/**\n * @summary Table head represents a table header cell that identifies a group of information within the table.\n *\n * @slot - Place any elements inside to display as the header content.\n */\n\nexport class SgdsTableHead extends SgdsElement {\n static styles = [...SgdsElement.styles, tableHeadStyle];\n\n @consume({ context: TableHeaderBackgroundContext, subscribe: true })\n @state()\n private _headerBackground = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute(\"role\", \"columnheader\");\n }\n\n @watch(\"_headerBackground\")\n _handleHeaderBackground() {\n if (this._headerBackground) this.setAttribute(\"headerBackground\", \"true\");\n else this.removeAttribute(\"headerBackground\");\n }\n\n render() {\n return html`<div\n class=${classMap({\n \"table-head\": true,\n \"header-background\": this._headerBackground\n })}\n >\n <slot></slot>\n </div>`;\n }\n}\n\nexport default SgdsTableHead;\n"],"names":["tableHeadStyle"],"mappings":";;;;;;;;;;AAWA;;;;AAIG;AAEG,MAAO,aAAc,SAAQ,WAAW,CAAA;AAA9C,IAAA,WAAA,GAAA;;QAKU,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KAuBnC;IArBC,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAC3C;IAGD,uBAAuB,GAAA;QACrB,IAAI,IAAI,CAAC,iBAAiB;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;AACrE,YAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;KAC/C;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA,CAAA;AACD,YAAA,EAAA,QAAQ,CAAC;AACf,YAAA,YAAY,EAAE,IAAI;YAClB,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;SAC5C,CAAC,CAAA;;;WAGG,CAAC;KACT;;AA1BM,aAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAc,CAAzC,CAA2C;AAIhD,UAAA,CAAA;IAFP,OAAO,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACnE,IAAA,KAAK,EAAE;AAC0B,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQlC,UAAA,CAAA;IADC,KAAK,CAAC,mBAAmB,CAAC;AAI1B,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA;;;;"}
@@ -9,27 +9,62 @@ export type HeaderPosition = "horizontal" | "vertical" | "both";
9
9
  export declare class SgdsTable extends SgdsElement {
10
10
  static styles: import("lit").CSSResult[];
11
11
  /**
12
- * Use responsive="sm", responsive="md" , responsive="lg", or responsive="xl" as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally. Use reponsive="always" to let table be always responsive
12
+ * Specifies the responsive breakpoint for the table.
13
+ * Use "sm", "md", "lg", or "xl" to create responsive tables up to a particular breakpoint.
14
+ * From that breakpoint and up, the table will behave normally and not scroll horizontally.
15
+ * Use "always" to make the table always responsive.
16
+ *
17
+ * (@deprecated) Deprecated since 3.9.0 legacy from v2
18
+ * @type {"sm" | "md" | "lg" | "xl" | "always"}
13
19
  */
14
20
  responsive: "sm" | "md" | "lg" | "xl" | "always";
15
21
  /**
16
- * Populate row header cells using Arrays
22
+ * Array of strings to populate row header cells.
23
+ * @type {string[]}
17
24
  */
18
25
  rowHeader: string[];
19
26
  /**
20
- * Populate column header cells using Arrays only when <code>headerPosition="vertical"</code> or <code>headerPosition="both"</code>
27
+ * Array of strings to populate column header cells.
28
+ * Only used when `headerPosition` is set to "vertical" or "both".
29
+ * @type {string[]}
21
30
  */
22
31
  columnHeader: string[];
23
32
  /**
24
- * Populate data cells using Arrays
33
+ * Two-dimensional array of strings or numbers to populate table data cells.
34
+ * @type {Array<(string | number)[]>}
25
35
  */
26
36
  tableData: Array<(string | number)[]>;
27
37
  /**
28
- * Defines the placement of headers in the table (horizontal, vertical, or both)
38
+ * Defines the placement of headers in the table.
39
+ * Use "horizontal" for top headers only, "vertical" for left headers only,
40
+ * or "both" for both row and column headers.
41
+ * @type {"horizontal" | "vertical" | "both"}
42
+ * @default "horizontal"
29
43
  */
30
44
  headerPosition: HeaderPosition;
31
- /** Used only for SSR to indicate the presence of the `default` slot. */
45
+ /**
46
+ * Enables background styling on horizontal header rows.
47
+ * When true, applies background color to header cells for better visual distinction.
48
+ * @type {boolean}
49
+ * @default false
50
+ */
51
+ headerBackground: boolean;
52
+ /**
53
+ * Enables borders around table cells.
54
+ * When true, displays visible borders between all table cells.
55
+ * @type {boolean}
56
+ * @default false
57
+ */
58
+ tableBorder: boolean;
59
+ /**
60
+ * Indicates the presence of the default slot.
61
+ * Used for server-side rendering to determine table structure.
62
+ * @type {boolean}
63
+ * @internal
64
+ * @default false
65
+ */
32
66
  hasDefaultSlot: boolean;
67
+ private _headerBackground;
33
68
  /** @internal */
34
69
  private readonly hasSlotController;
35
70
  connectedCallback(): void;
@@ -1,10 +1,12 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { html } from 'lit';
3
- import { property } from 'lit/decorators.js';
3
+ import { property, state } from 'lit/decorators.js';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
5
  import SgdsElement from '../../base/sgds-element.js';
6
6
  import css_248z from './table.js';
7
7
  import { HasSlotController } from '../../utils/slot.js';
8
+ import { provide } from '@lit/context';
9
+ import { TableHeaderBackgroundContext } from './table-context.js';
8
10
 
9
11
  /**
10
12
  * @summary Table is used for displaying collections of data in organized rows and columns.
@@ -16,23 +18,52 @@ class SgdsTable extends SgdsElement {
16
18
  constructor() {
17
19
  super(...arguments);
18
20
  /**
19
- * Populate row header cells using Arrays
21
+ * Array of strings to populate row header cells.
22
+ * @type {string[]}
20
23
  */
21
24
  this.rowHeader = [];
22
25
  /**
23
- * Populate column header cells using Arrays only when <code>headerPosition="vertical"</code> or <code>headerPosition="both"</code>
26
+ * Array of strings to populate column header cells.
27
+ * Only used when `headerPosition` is set to "vertical" or "both".
28
+ * @type {string[]}
24
29
  */
25
30
  this.columnHeader = [];
26
31
  /**
27
- * Populate data cells using Arrays
32
+ * Two-dimensional array of strings or numbers to populate table data cells.
33
+ * @type {Array<(string | number)[]>}
28
34
  */
29
35
  this.tableData = [];
30
36
  /**
31
- * Defines the placement of headers in the table (horizontal, vertical, or both)
37
+ * Defines the placement of headers in the table.
38
+ * Use "horizontal" for top headers only, "vertical" for left headers only,
39
+ * or "both" for both row and column headers.
40
+ * @type {"horizontal" | "vertical" | "both"}
41
+ * @default "horizontal"
32
42
  */
33
43
  this.headerPosition = "horizontal";
34
- /** Used only for SSR to indicate the presence of the `default` slot. */
44
+ /**
45
+ * Enables background styling on horizontal header rows.
46
+ * When true, applies background color to header cells for better visual distinction.
47
+ * @type {boolean}
48
+ * @default false
49
+ */
50
+ this.headerBackground = false;
51
+ /**
52
+ * Enables borders around table cells.
53
+ * When true, displays visible borders between all table cells.
54
+ * @type {boolean}
55
+ * @default false
56
+ */
57
+ this.tableBorder = false;
58
+ /**
59
+ * Indicates the presence of the default slot.
60
+ * Used for server-side rendering to determine table structure.
61
+ * @type {boolean}
62
+ * @internal
63
+ * @default false
64
+ */
35
65
  this.hasDefaultSlot = false;
66
+ this._headerBackground = false;
36
67
  /** @internal */
37
68
  this.hasSlotController = new HasSlotController(this, "[default]");
38
69
  }
@@ -42,19 +73,20 @@ class SgdsTable extends SgdsElement {
42
73
  updated() {
43
74
  if (!this.hasDefaultSlot)
44
75
  this.hasDefaultSlot = this.hasSlotController.test("[default]");
76
+ this._headerBackground = this.headerBackground;
45
77
  }
46
78
  _renderTable() {
47
79
  if (this.headerPosition === "horizontal") {
48
80
  return html `
49
81
  <thead>
50
82
  <tr>
51
- ${this.rowHeader.map((header) => html ` <th>${header}</th> `)}
83
+ ${this.rowHeader.map((header) => html ` <th><div>${header}</div></th> `)}
52
84
  </tr>
53
85
  </thead>
54
86
  <tbody>
55
87
  ${this.tableData.map(row => html `
56
88
  <tr>
57
- ${row.map((cell) => html `<td>${cell}</td>`)}
89
+ ${row.map((cell) => html `<td><div>${cell}</div></td>`)}
58
90
  </tr>
59
91
  `)}
60
92
  </tbody>
@@ -64,15 +96,15 @@ class SgdsTable extends SgdsElement {
64
96
  return html `
65
97
  <thead>
66
98
  <tr>
67
- <th></th>
68
- ${this.rowHeader.map((header) => html ` <th>${header}</th> `)}
99
+ <th><div></div></th>
100
+ ${this.rowHeader.map((header) => html ` <th><div>${header}</div></th> `)}
69
101
  </tr>
70
102
  </thead>
71
103
  <tbody>
72
104
  ${this.tableData.map((row, index) => html `
73
105
  <tr>
74
- <th>${this.columnHeader[index]}</th>
75
- ${row.map((cell) => html `<td>${cell}</td>`)}
106
+ <th><div>${this.columnHeader[index]}</div></th>
107
+ ${row.map((cell) => html `<td><div>${cell}</div></td>`)}
76
108
  </tr>
77
109
  `)}
78
110
  </tbody>
@@ -83,8 +115,8 @@ class SgdsTable extends SgdsElement {
83
115
  return html `
84
116
  ${flippedTableData.map((row, index) => html `
85
117
  <tr>
86
- <th>${this.columnHeader[index]}</th>
87
- ${row.map((cell) => html `<td>${cell}</td>`)}
118
+ <th><div>${this.columnHeader[index]}</div></th>
119
+ ${row.map((cell) => html `<td><div>${cell}</div></td>`)}
88
120
  </tr>
89
121
  `)}
90
122
  `;
@@ -102,7 +134,7 @@ class SgdsTable extends SgdsElement {
102
134
  })}
103
135
  tabindex="0"
104
136
  >
105
- <slot id="table-slot" class="table"></slot>
137
+ <slot id="table-slot" class=${classMap({ table: true, "no-border": !this.hasDefaultSlot })}></slot>
106
138
 
107
139
  ${!this.hasDefaultSlot
108
140
  ? html `<table class="table">
@@ -129,9 +161,19 @@ __decorate([
129
161
  __decorate([
130
162
  property({ type: String })
131
163
  ], SgdsTable.prototype, "headerPosition", void 0);
164
+ __decorate([
165
+ property({ type: Boolean })
166
+ ], SgdsTable.prototype, "headerBackground", void 0);
167
+ __decorate([
168
+ property({ type: Boolean })
169
+ ], SgdsTable.prototype, "tableBorder", void 0);
132
170
  __decorate([
133
171
  property({ type: Boolean })
134
172
  ], SgdsTable.prototype, "hasDefaultSlot", void 0);
173
+ __decorate([
174
+ provide({ context: TableHeaderBackgroundContext }),
175
+ state()
176
+ ], SgdsTable.prototype, "_headerBackground", void 0);
135
177
 
136
178
  export { SgdsTable, SgdsTable as default };
137
179
  //# sourceMappingURL=sgds-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-table.js","sources":["../../../src/components/Table/sgds-table.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\n\nimport tableStyle from \"./table.css\";\nimport { HasSlotController } from \"../../utils/slot\";\n\nexport type HeaderPosition = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * @summary Table is used for displaying collections of data in organized rows and columns.\n * It supports two rendering methods: supply an array of data for automatic table generation, or use the slot to insert custom table elements for full structural control.\n *\n * @slot - Insert custom table elements (such as rows, headers, or cells) to define the table structure manually.\n */\n\nexport class SgdsTable extends SgdsElement {\n static styles = [...SgdsElement.styles, tableStyle];\n\n /**\n * Use responsive=\"sm\", responsive=\"md\" , responsive=\"lg\", or responsive=\"xl\" as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally. Use reponsive=\"always\" to let table be always responsive\n */\n @property({ type: String, reflect: true }) responsive: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"always\";\n\n /**\n * Populate row header cells using Arrays\n */\n @property({ type: Array }) rowHeader: string[] = [];\n\n /**\n * Populate column header cells using Arrays only when <code>headerPosition=\"vertical\"</code> or <code>headerPosition=\"both\"</code>\n */\n @property({ type: Array }) columnHeader: string[] = [];\n\n /**\n * Populate data cells using Arrays\n */\n @property({ type: Array }) tableData: Array<(string | number)[]> = [];\n\n /**\n * Defines the placement of headers in the table (horizontal, vertical, or both)\n */\n @property({ type: String }) headerPosition: HeaderPosition = \"horizontal\";\n\n /** Used only for SSR to indicate the presence of the `default` slot. */\n @property({ type: Boolean }) hasDefaultSlot = false;\n\n /** @internal */\n private readonly hasSlotController = new HasSlotController(this, \"[default]\");\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n updated() {\n if (!this.hasDefaultSlot) this.hasDefaultSlot = this.hasSlotController.test(\"[default]\");\n }\n\n private _renderTable() {\n if (this.headerPosition === \"horizontal\") {\n return html`\n <thead>\n <tr>\n ${this.rowHeader.map((header: string) => html` <th>${header}</th> `)}\n </tr>\n </thead>\n <tbody>\n ${this.tableData.map(\n row => html`\n <tr>\n ${row.map((cell: string) => html`<td>${cell}</td>`)}\n </tr>\n `\n )}\n </tbody>\n `;\n }\n\n if (this.headerPosition === \"both\") {\n return html`\n <thead>\n <tr>\n <th></th>\n ${this.rowHeader.map((header: string) => html` <th>${header}</th> `)}\n </tr>\n </thead>\n <tbody>\n ${this.tableData.map(\n (row, index) => html`\n <tr>\n <th>${this.columnHeader[index]}</th>\n ${row.map((cell: string) => html`<td>${cell}</td>`)}\n </tr>\n `\n )}\n </tbody>\n `;\n }\n\n if (this.headerPosition === \"vertical\") {\n const flippedTableData = this.tableData[0].map((_, colIndex) => this.tableData.map(row => row[colIndex]));\n\n return html`\n ${flippedTableData.map(\n (row, index) => html`\n <tr>\n <th>${this.columnHeader[index]}</th>\n ${row.map((cell: string) => html`<td>${cell}</td>`)}\n </tr>\n `\n )}\n `;\n }\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n \"table-responsive\": this.responsive === \"always\",\n \"table-responsive-sm\": this.responsive === \"sm\",\n \"table-responsive-md\": this.responsive === \"md\",\n \"table-responsive-lg\": this.responsive === \"lg\",\n \"table-responsive-xl\": this.responsive === \"xl\"\n })}\n tabindex=\"0\"\n >\n <slot id=\"table-slot\" class=\"table\"></slot>\n\n ${!this.hasDefaultSlot\n ? html`<table class=\"table\">\n ${this._renderTable()}\n </table>`\n : \"\"}\n </div>\n `;\n }\n}\n\nexport default SgdsTable;\n"],"names":["tableStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-table.js","sources":["../../../src/components/Table/sgds-table.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\n\nimport tableStyle from \"./table.css\";\nimport { HasSlotController } from \"../../utils/slot\";\nimport { provide } from \"@lit/context\";\nimport { TableHeaderBackgroundContext } from \"./table-context\";\n\nexport type HeaderPosition = \"horizontal\" | \"vertical\" | \"both\";\n\n/**\n * @summary Table is used for displaying collections of data in organized rows and columns.\n * It supports two rendering methods: supply an array of data for automatic table generation, or use the slot to insert custom table elements for full structural control.\n *\n * @slot - Insert custom table elements (such as rows, headers, or cells) to define the table structure manually.\n */\n\nexport class SgdsTable extends SgdsElement {\n static styles = [...SgdsElement.styles, tableStyle];\n\n /**\n * Specifies the responsive breakpoint for the table.\n * Use \"sm\", \"md\", \"lg\", or \"xl\" to create responsive tables up to a particular breakpoint.\n * From that breakpoint and up, the table will behave normally and not scroll horizontally.\n * Use \"always\" to make the table always responsive.\n *\n * (@deprecated) Deprecated since 3.9.0 legacy from v2\n * @type {\"sm\" | \"md\" | \"lg\" | \"xl\" | \"always\"}\n */\n @property({ type: String, reflect: true }) responsive: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"always\";\n\n /**\n * Array of strings to populate row header cells.\n * @type {string[]}\n */\n @property({ type: Array }) rowHeader: string[] = [];\n\n /**\n * Array of strings to populate column header cells.\n * Only used when `headerPosition` is set to \"vertical\" or \"both\".\n * @type {string[]}\n */\n @property({ type: Array }) columnHeader: string[] = [];\n\n /**\n * Two-dimensional array of strings or numbers to populate table data cells.\n * @type {Array<(string | number)[]>}\n */\n @property({ type: Array }) tableData: Array<(string | number)[]> = [];\n\n /**\n * Defines the placement of headers in the table.\n * Use \"horizontal\" for top headers only, \"vertical\" for left headers only,\n * or \"both\" for both row and column headers.\n * @type {\"horizontal\" | \"vertical\" | \"both\"}\n * @default \"horizontal\"\n */\n @property({ type: String }) headerPosition: HeaderPosition = \"horizontal\";\n\n /**\n * Enables background styling on horizontal header rows.\n * When true, applies background color to header cells for better visual distinction.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean }) headerBackground = false;\n\n /**\n * Enables borders around table cells.\n * When true, displays visible borders between all table cells.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean }) tableBorder = false;\n\n /**\n * Indicates the presence of the default slot.\n * Used for server-side rendering to determine table structure.\n * @type {boolean}\n * @internal\n * @default false\n */\n @property({ type: Boolean }) hasDefaultSlot = false;\n\n @provide({ context: TableHeaderBackgroundContext })\n @state()\n private _headerBackground = false;\n\n /** @internal */\n private readonly hasSlotController = new HasSlotController(this, \"[default]\");\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n updated() {\n if (!this.hasDefaultSlot) this.hasDefaultSlot = this.hasSlotController.test(\"[default]\");\n this._headerBackground = this.headerBackground;\n }\n\n private _renderTable() {\n if (this.headerPosition === \"horizontal\") {\n return html`\n <thead>\n <tr>\n ${this.rowHeader.map((header: string) => html` <th><div>${header}</div></th> `)}\n </tr>\n </thead>\n <tbody>\n ${this.tableData.map(\n row => html`\n <tr>\n ${row.map((cell: string) => html`<td><div>${cell}</div></td>`)}\n </tr>\n `\n )}\n </tbody>\n `;\n }\n\n if (this.headerPosition === \"both\") {\n return html`\n <thead>\n <tr>\n <th><div></div></th>\n ${this.rowHeader.map((header: string) => html` <th><div>${header}</div></th> `)}\n </tr>\n </thead>\n <tbody>\n ${this.tableData.map(\n (row, index) => html`\n <tr>\n <th><div>${this.columnHeader[index]}</div></th>\n ${row.map((cell: string) => html`<td><div>${cell}</div></td>`)}\n </tr>\n `\n )}\n </tbody>\n `;\n }\n\n if (this.headerPosition === \"vertical\") {\n const flippedTableData = this.tableData[0].map((_, colIndex) => this.tableData.map(row => row[colIndex]));\n\n return html`\n ${flippedTableData.map(\n (row, index) => html`\n <tr>\n <th><div>${this.columnHeader[index]}</div></th>\n ${row.map((cell: string) => html`<td><div>${cell}</div></td>`)}\n </tr>\n `\n )}\n `;\n }\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n \"table-responsive\": this.responsive === \"always\",\n \"table-responsive-sm\": this.responsive === \"sm\",\n \"table-responsive-md\": this.responsive === \"md\",\n \"table-responsive-lg\": this.responsive === \"lg\",\n \"table-responsive-xl\": this.responsive === \"xl\"\n })}\n tabindex=\"0\"\n >\n <slot id=\"table-slot\" class=${classMap({ table: true, \"no-border\": !this.hasDefaultSlot })}></slot>\n\n ${!this.hasDefaultSlot\n ? html`<table class=\"table\">\n ${this._renderTable()}\n </table>`\n : \"\"}\n </div>\n `;\n }\n}\n\nexport default SgdsTable;\n"],"names":["tableStyle"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { css } from 'lit';
2
2
 
3
- var css_248z = css`:host{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);display:table-cell;padding:var(--sgds-padding-lg)}`;
3
+ var css_248z = css`:host{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);display:table-cell;vertical-align:middle}.table-cell{align-items:center;display:flex;min-height:var(--sgds-dimension-56);padding:var(--sgds-padding-sm) var(--sgds-padding-md)}`;
4
4
 
5
5
  export { css_248z as default };
6
6
  //# sourceMappingURL=table-cell.js.map
@@ -0,0 +1,3 @@
1
+ export declare const TableHeaderBackgroundContext: {
2
+ __context__: boolean;
3
+ };
@@ -0,0 +1,6 @@
1
+ import { createContext } from '@lit/context';
2
+
3
+ const TableHeaderBackgroundContext = createContext("table-header-background");
4
+
5
+ export { TableHeaderBackgroundContext };
6
+ //# sourceMappingURL=table-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-context.js","sources":["../../../src/components/Table/table-context.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\n\nexport const TableHeaderBackgroundContext = createContext<boolean>(\"table-header-background\");\n"],"names":[],"mappings":";;MAEa,4BAA4B,GAAG,aAAa,CAAU,yBAAyB;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { css } from 'lit';
2
2
 
3
- var css_248z = css`:host{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-emphasis);display:table-cell;font-weight:700;padding:var(--sgds-padding-lg)}:host(:not([border])){border-color:var(--sgds-border-color-muted)}`;
3
+ var css_248z = css`:host{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);display:table-cell;vertical-align:middle}:host([headerBackground]){background-color:var(--sgds-surface-raised)}.table-head{align-items:center;display:flex;font-weight:700;min-height:var(--sgds-dimension-56);padding:var(--sgds-padding-sm) var(--sgds-padding-md)}`;
4
4
 
5
5
  export { css_248z as default };
6
6
  //# sourceMappingURL=table-head.js.map
@@ -1,6 +1,6 @@
1
1
  import { css } from 'lit';
2
2
 
3
- var css_248z = css`tbody,td,th,thead,tr{border:var(--sgds-border-width-0) solid;border-color:inherit}th{text-align:-webkit-match-parent}table{border-collapse:collapse;caption-side:bottom}.table{border-color:var(--sgds-border-color-default);display:table;vertical-align:top;width:100%}.hidden{display:none}.table>:not(caption) td,.table>:not(caption) th{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);padding:var(--sgds-padding-lg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>thead th{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-emphasis)}.table-group-divider{border-top:calc(var(--sgds-border-width)*2) solid}.table>:not(:first-child){border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-emphasis)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}`;
3
+ var css_248z = css`tbody,td,th,thead,tr{border:var(--sgds-border-width-0) solid;border-color:inherit}th{text-align:-webkit-match-parent}table{border-collapse:collapse;caption-side:bottom}.table{display:table;width:100%}.hidden{display:none}.table>:not(caption) td,.table>:not(caption) th{border-bottom:var(--sgds-border-width-1) solid var(--sgds-border-color-muted)}.table>:not(caption) td>div,.table>:not(caption) th>div{align-items:center;display:flex;min-height:var(--sgds-dimension-56);padding:var(--sgds-padding-sm) var(--sgds-padding-md)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-emphasis)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}:host([tableBorder]) .table{border:var(--sgds-border-width-1) solid;border-color:var(--sgds-border-color-muted);border-bottom:0}:host([tableBorder]) .table.no-border{border:0}:host([headerBackground]) th{background-color:var(--sgds-surface-raised)}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}`;
4
4
 
5
5
  export { css_248z as default };
6
6
  //# sourceMappingURL=table.js.map