@justeattakeaway/pie-data-table 0.0.0-snapshot-release-20260119130527 → 0.0.0-snapshot-release-20260121170533

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 (105) hide show
  1. package/custom-elements.json +533 -2
  2. package/dist/{PieElement-DF1Wh7-N.js → PieElement-XdhDoayO.js} +1 -1
  3. package/dist/defs.d.ts +19 -3
  4. package/dist/defs.d.ts.map +1 -1
  5. package/dist/index.d.ts +20 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +101 -49
  8. package/dist/pie-data-table-body/defs-react.d.ts +3 -0
  9. package/dist/pie-data-table-body/defs-react.d.ts.map +1 -0
  10. package/dist/pie-data-table-body/defs.d.ts +2 -0
  11. package/dist/pie-data-table-body/defs.d.ts.map +1 -0
  12. package/dist/pie-data-table-body/index.d.ts +18 -0
  13. package/dist/pie-data-table-body/index.d.ts.map +1 -0
  14. package/dist/pie-data-table-body/index.js +21 -0
  15. package/dist/pie-data-table-body/react.d.ts +7 -0
  16. package/dist/pie-data-table-body/react.d.ts.map +1 -0
  17. package/dist/pie-data-table-body/react.js +13 -0
  18. package/dist/pie-data-table-cell/defs-react.d.ts +3 -0
  19. package/dist/pie-data-table-cell/defs-react.d.ts.map +1 -0
  20. package/dist/pie-data-table-cell/defs.d.ts +14 -0
  21. package/dist/pie-data-table-cell/defs.d.ts.map +1 -0
  22. package/dist/pie-data-table-cell/index.d.ts +28 -0
  23. package/dist/pie-data-table-cell/index.d.ts.map +1 -0
  24. package/dist/pie-data-table-cell/index.js +39 -0
  25. package/dist/pie-data-table-cell/react.d.ts +7 -0
  26. package/dist/pie-data-table-cell/react.d.ts.map +1 -0
  27. package/dist/pie-data-table-cell/react.js +16 -0
  28. package/dist/pie-data-table-contents/defs-react.d.ts +3 -0
  29. package/dist/pie-data-table-contents/defs-react.d.ts.map +1 -0
  30. package/dist/pie-data-table-contents/defs.d.ts +2 -0
  31. package/dist/pie-data-table-contents/defs.d.ts.map +1 -0
  32. package/dist/pie-data-table-contents/index.d.ts +19 -0
  33. package/dist/pie-data-table-contents/index.d.ts.map +1 -0
  34. package/dist/pie-data-table-contents/index.js +24 -0
  35. package/dist/pie-data-table-contents/react.d.ts +7 -0
  36. package/dist/pie-data-table-contents/react.d.ts.map +1 -0
  37. package/dist/pie-data-table-contents/react.js +13 -0
  38. package/dist/pie-data-table-head/defs-react.d.ts +3 -0
  39. package/dist/pie-data-table-head/defs-react.d.ts.map +1 -0
  40. package/dist/pie-data-table-head/defs.d.ts +2 -0
  41. package/dist/pie-data-table-head/defs.d.ts.map +1 -0
  42. package/dist/pie-data-table-head/index.d.ts +19 -0
  43. package/dist/pie-data-table-head/index.d.ts.map +1 -0
  44. package/dist/pie-data-table-head/index.js +24 -0
  45. package/dist/pie-data-table-head/react.d.ts +7 -0
  46. package/dist/pie-data-table-head/react.d.ts.map +1 -0
  47. package/dist/pie-data-table-head/react.js +13 -0
  48. package/dist/pie-data-table-head-cell/defs-react.d.ts +3 -0
  49. package/dist/pie-data-table-head-cell/defs-react.d.ts.map +1 -0
  50. package/dist/pie-data-table-head-cell/defs.d.ts +14 -0
  51. package/dist/pie-data-table-head-cell/defs.d.ts.map +1 -0
  52. package/dist/pie-data-table-head-cell/index.d.ts +28 -0
  53. package/dist/pie-data-table-head-cell/index.d.ts.map +1 -0
  54. package/dist/pie-data-table-head-cell/index.js +39 -0
  55. package/dist/pie-data-table-head-cell/react.d.ts +7 -0
  56. package/dist/pie-data-table-head-cell/react.d.ts.map +1 -0
  57. package/dist/pie-data-table-head-cell/react.js +16 -0
  58. package/dist/pie-data-table-header/index.d.ts +1 -0
  59. package/dist/pie-data-table-header/index.d.ts.map +1 -1
  60. package/dist/pie-data-table-header/index.js +1 -1
  61. package/dist/pie-data-table-row/defs-react.d.ts +3 -0
  62. package/dist/pie-data-table-row/defs-react.d.ts.map +1 -0
  63. package/dist/pie-data-table-row/defs.d.ts +13 -0
  64. package/dist/pie-data-table-row/defs.d.ts.map +1 -0
  65. package/dist/pie-data-table-row/index.d.ts +27 -0
  66. package/dist/pie-data-table-row/index.d.ts.map +1 -0
  67. package/dist/pie-data-table-row/index.js +33 -0
  68. package/dist/pie-data-table-row/react.d.ts +7 -0
  69. package/dist/pie-data-table-row/react.d.ts.map +1 -0
  70. package/dist/pie-data-table-row/react.js +15 -0
  71. package/package.json +3 -3
  72. package/src/data-table.scss +12 -18
  73. package/src/defs.ts +24 -6
  74. package/src/index.ts +78 -12
  75. package/src/pie-data-table-body/data-table-body.scss +7 -0
  76. package/src/pie-data-table-body/defs-react.ts +3 -0
  77. package/src/pie-data-table-body/defs.ts +1 -0
  78. package/src/pie-data-table-body/index.ts +30 -0
  79. package/src/pie-data-table-body/react.ts +19 -0
  80. package/src/pie-data-table-cell/data-table-cell.scss +21 -0
  81. package/src/pie-data-table-cell/defs-react.ts +3 -0
  82. package/src/pie-data-table-cell/defs.ts +19 -0
  83. package/src/pie-data-table-cell/index.ts +62 -0
  84. package/src/pie-data-table-cell/react.ts +19 -0
  85. package/src/pie-data-table-contents/data-table-contents.scss +4 -0
  86. package/src/pie-data-table-contents/defs-react.ts +3 -0
  87. package/src/pie-data-table-contents/defs.ts +1 -0
  88. package/src/pie-data-table-contents/index.ts +36 -0
  89. package/src/pie-data-table-contents/react.ts +19 -0
  90. package/src/pie-data-table-head/data-table-head.scss +8 -0
  91. package/src/pie-data-table-head/defs-react.ts +3 -0
  92. package/src/pie-data-table-head/defs.ts +1 -0
  93. package/src/pie-data-table-head/index.ts +37 -0
  94. package/src/pie-data-table-head/react.ts +19 -0
  95. package/src/pie-data-table-head-cell/data-table-head-cell.scss +21 -0
  96. package/src/pie-data-table-head-cell/defs-react.ts +3 -0
  97. package/src/pie-data-table-head-cell/defs.ts +19 -0
  98. package/src/pie-data-table-head-cell/index.ts +60 -0
  99. package/src/pie-data-table-head-cell/react.ts +19 -0
  100. package/src/pie-data-table-header/index.ts +1 -0
  101. package/src/pie-data-table-row/data-table-row.scss +16 -0
  102. package/src/pie-data-table-row/defs-react.ts +3 -0
  103. package/src/pie-data-table-row/defs.ts +17 -0
  104. package/src/pie-data-table-row/index.ts +51 -0
  105. package/src/pie-data-table-row/react.ts +19 -0
@@ -0,0 +1,14 @@
1
+ import { ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
2
+ export declare const dataTableHeadCellTextAlign: readonly ["left", "right", "center"];
3
+ export interface DataTableHeadCellProps {
4
+ /**
5
+ * Text alignment for the cell content
6
+ */
7
+ textAlign?: typeof dataTableHeadCellTextAlign[number];
8
+ /**
9
+ * Whether the cell is hidden
10
+ */
11
+ isHidden?: boolean;
12
+ }
13
+ export declare const defaultProps: ComponentDefaultProps<DataTableHeadCellProps, 'textAlign' | 'isHidden'>;
14
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-head-cell/defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,eAAO,MAAM,0BAA0B,sCAAuC,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACtD;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,sBAAsB,EAAE,WAAW,GAAG,UAAU,CAGhG,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { nothing } from 'lit';
2
+ import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
3
+ import { DataTableHeadCellProps } from './defs';
4
+ export * from './defs';
5
+ declare const componentSelector = "pie-data-table-head-cell";
6
+ /**
7
+ * @tagname pie-data-table-head-cell
8
+ * @slot - Default slot
9
+ */
10
+ export declare class PieDataTableHeadCell extends PieElement implements DataTableHeadCellProps {
11
+ /**
12
+ * Text alignment for the cell content
13
+ */
14
+ textAlign?: DataTableHeadCellProps['textAlign'];
15
+ /**
16
+ * Whether the cell is hidden
17
+ */
18
+ isHidden?: DataTableHeadCellProps['isHidden'];
19
+ connectedCallback(): void;
20
+ render(): typeof nothing | import('lit-html').TemplateResult<1>;
21
+ static styles: import('lit').CSSResult;
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ [componentSelector]: PieDataTableHeadCell;
26
+ }
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-head-cell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAa,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AAIrF,OAAO,EACH,KAAK,sBAAsB,EAG9B,MAAM,QAAQ,CAAC;AAEhB,cAAc,QAAQ,CAAC;AAEvB,QAAA,MAAM,iBAAiB,6BAA6B,CAAC;AAErD;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,UAAW,YAAW,sBAAsB;IAClF;;OAEG;IAGI,SAAS,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEvD;;OAEG;IAEI,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAErD,iBAAiB;IAOjB,MAAM;IAUN,MAAM,CAAC,MAAM,0BAAqB;CACrC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,CAAC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;KAC7C;CACJ"}
@@ -0,0 +1,39 @@
1
+ import { unsafeCSS as p, nothing as c, html as f } from "lit";
2
+ import { property as d } from "lit/decorators.js";
3
+ import { P as h } from "../PieElement-XdhDoayO.js";
4
+ import { validPropertyValues as g, safeCustomElement as b } from "@justeattakeaway/pie-webc-core";
5
+ const m = ":host{padding:var(--dt-spacing-d);border-bottom:1px solid var(--data-table-border-color);display:table-cell}:host([textAlign=right]){text-align:right}:host([textAlign=center]){text-align:center}:host([textAlign=left]){text-align:left}:host([isHidden]){display:none}", x = ["left", "right", "center"], u = {
6
+ textAlign: "left",
7
+ isHidden: !1
8
+ };
9
+ var y = Object.defineProperty, v = Object.getOwnPropertyDescriptor, s = (l, r, n, o) => {
10
+ for (var e = o > 1 ? void 0 : o ? v(r, n) : r, a = l.length - 1, i; a >= 0; a--)
11
+ (i = l[a]) && (e = (o ? i(r, n, e) : i(e)) || e);
12
+ return o && e && y(r, n, e), e;
13
+ };
14
+ const A = "pie-data-table-head-cell";
15
+ let t = class extends h {
16
+ connectedCallback() {
17
+ this.hasAttribute("role") || this.setAttribute("role", "columnheader"), super.connectedCallback();
18
+ }
19
+ render() {
20
+ const { isHidden: l } = this;
21
+ return l ? c : f`<slot></slot>`;
22
+ }
23
+ };
24
+ t.styles = p(m);
25
+ s([
26
+ d({ type: String }),
27
+ g(A, x, u.textAlign)
28
+ ], t.prototype, "textAlign", 2);
29
+ s([
30
+ d({ type: Boolean })
31
+ ], t.prototype, "isHidden", 2);
32
+ t = s([
33
+ b("pie-data-table-head-cell")
34
+ ], t);
35
+ export {
36
+ t as PieDataTableHeadCell,
37
+ x as dataTableHeadCellTextAlign,
38
+ u as defaultProps
39
+ };
@@ -0,0 +1,7 @@
1
+ import { PieDataTableHeadCell as PieDataTableHeadCellLit } from './index';
2
+ import { DataTableHeadCellProps } from './defs';
3
+ import * as React from 'react';
4
+ export * from './defs';
5
+ type ReactBaseType = React.HTMLAttributes<HTMLElement>;
6
+ export declare const PieDataTableHeadCell: React.ForwardRefExoticComponent<React.PropsWithoutRef<DataTableHeadCellProps> & React.RefAttributes<PieDataTableHeadCellLit> & ReactBaseType>;
7
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-head-cell/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAErD,cAAc,QAAQ,CAAC;AAUvB,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAEtD,eAAO,MAAM,oBAAoB,EAAgC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,GACxI,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,aAAa,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import * as e from "react";
2
+ import { createComponent as a } from "@lit/react";
3
+ import { PieDataTableHeadCell as l } from "./index.js";
4
+ import { dataTableHeadCellTextAlign as p, defaultProps as s } from "./index.js";
5
+ const t = a({
6
+ displayName: "PieDataTableHeadCell",
7
+ elementClass: l,
8
+ react: e,
9
+ tagName: "pie-data-table-head-cell",
10
+ events: {}
11
+ }), d = t;
12
+ export {
13
+ d as PieDataTableHeadCell,
14
+ p as dataTableHeadCellTextAlign,
15
+ s as defaultProps
16
+ };
@@ -4,6 +4,7 @@ export * from './defs';
4
4
  declare const componentSelector = "pie-data-table-header";
5
5
  /**
6
6
  * @tagname pie-data-table-header
7
+ * @slot action-button - Slot for action buttons in the header
7
8
  */
8
9
  export declare class PieDataTableHeader extends PieElement implements DataTableHeaderProps {
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-header/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AAKrF,OAAO,EACH,KAAK,oBAAoB,EAEzB,YAAY,EACf,MAAM,QAAQ,CAAC;AAGhB,cAAc,QAAQ,CAAC;AAEvB,QAAA,MAAM,iBAAiB,0BAA0B,CAAC;AAElD;;GAEG;AACH,qBACa,kBAAmB,SAAQ,UAAW,YAAW,oBAAoB;IAC9E;;OAEG;IAEI,OAAO,EAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD;;OAEG;IAEI,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEtD;;OAEG;IAGI,OAAO,CAAC,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAG7C,OAAO,CAAC,iBAAiB,CAAsB;IAG/C,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,4BAA4B;IAIpC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,YAAY;IAIZ,MAAM;IA2BN,MAAM,CAAC,MAAM,0BAAqB;CACrC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;KAC3C;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-header/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AAKrF,OAAO,EACH,KAAK,oBAAoB,EAEzB,YAAY,EACf,MAAM,QAAQ,CAAC;AAGhB,cAAc,QAAQ,CAAC;AAEvB,QAAA,MAAM,iBAAiB,0BAA0B,CAAC;AAElD;;;GAGG;AACH,qBACa,kBAAmB,SAAQ,UAAW,YAAW,oBAAoB;IAC9E;;OAEG;IAEI,OAAO,EAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD;;OAEG;IAEI,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEtD;;OAEG;IAGI,OAAO,CAAC,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAG7C,OAAO,CAAC,iBAAiB,CAAsB;IAG/C,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,4BAA4B;IAIpC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,YAAY;IAIZ,MAAM;IA2BN,MAAM,CAAC,MAAM,0BAAqB;CACrC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;KAC3C;CACJ"}
@@ -1,6 +1,6 @@
1
1
  import { unsafeCSS as p, nothing as h, html as l } from "lit";
2
2
  import { property as c, queryAssignedElements as g, state as b } from "lit/decorators.js";
3
- import { P as u } from "../PieElement-DF1Wh7-N.js";
3
+ import { P as u } from "../PieElement-XdhDoayO.js";
4
4
  import { validPropertyValues as f, safeCustomElement as v } from "@justeattakeaway/pie-webc-core";
5
5
  import { classMap as m } from "lit/directives/class-map.js";
6
6
  const y = "*,*:after,*:before{box-sizing:inherit}:host{display:block}.c-data-table-header{--data-table-header-background: transparent;--data-table-border-color: var(--dt-color-border-default);padding:var(--dt-spacing-d);background-color:var(--data-table-header-background);border-bottom:1px solid var(--data-table-border-color);display:flex;justify-content:space-between;align-items:flex-end}.c-data-table-header-heading-wrapper{display:flex;flex-direction:column;gap:var(--dt-spacing-b)}.c-data-table-header-heading{font-weight:var(--dt-font-weight-extrabold);font-size:calc(var(--dt-font-size-24) * 1px);line-height:calc(var(--dt-font-size-24-line-height) * 1px)}.c-data-table-header-sub-heading{font-weight:var(--dt-font-weight-regular);font-size:calc(var(--dt-font-size-16) * 1px);line-height:calc(var(--dt-font-size-16-line-height) * 1px)}.c-data-table-header--strong{--data-table-header-background: var(--dt-color-support-brand-02)}.c-data-table-action-buttons-wrapper{display:flex;gap:var(--dt-spacing-d)}", x = ["subtle", "strong"], S = {
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ export type ReactBaseType = React.HTMLAttributes<HTMLElement>;
3
+ //# sourceMappingURL=defs-react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs-react.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-row/defs-react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
2
+ export interface DataTableRowProps extends Partial<HTMLTableRowElement> {
3
+ /**
4
+ * Whether the row is currently selected
5
+ */
6
+ isSelected?: boolean;
7
+ /**
8
+ * Whether the row is hidden
9
+ */
10
+ isHidden?: boolean;
11
+ }
12
+ export declare const defaultProps: ComponentDefaultProps<DataTableRowProps, 'isSelected' | 'isHidden'>;
13
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-row/defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IACrE;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,YAAY,GAAG,UAAU,CAG5F,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { nothing } from 'lit';
2
+ import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
3
+ import { DataTableRowProps } from './defs';
4
+ export * from './defs';
5
+ declare const componentSelector = "pie-data-table-row";
6
+ /**
7
+ * @tagname pie-data-table-row
8
+ * @slot - Default slot
9
+ */
10
+ export declare class PieDataTableRow extends PieElement implements DataTableRowProps {
11
+ /**
12
+ * Whether the row is currently selected
13
+ */
14
+ isSelected?: DataTableRowProps['isSelected'];
15
+ /**
16
+ * Whether the row is hidden
17
+ */
18
+ isHidden?: DataTableRowProps['isHidden'];
19
+ render(): typeof nothing | import('lit-html').TemplateResult<1>;
20
+ static styles: import('lit').CSSResult;
21
+ }
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ [componentSelector]: PieDataTableRow;
25
+ }
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-row/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAa,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,yDAAyD,CAAC;AAIrF,OAAO,EACH,KAAK,iBAAiB,EACzB,MAAM,QAAQ,CAAC;AAEhB,cAAc,QAAQ,CAAC;AAEvB,QAAA,MAAM,iBAAiB,uBAAuB,CAAC;AAE/C;;;GAGG;AACH,qBACa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IACxE;;OAEG;IAEI,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEpD;;OAEG;IAEI,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM;IAWN,MAAM,CAAC,MAAM,0BAAqB;CACrC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC;KACxC;CACJ"}
@@ -0,0 +1,33 @@
1
+ import { unsafeCSS as d, nothing as c, html as f } from "lit";
2
+ import { property as i } from "lit/decorators.js";
3
+ import { P as b } from "../PieElement-XdhDoayO.js";
4
+ import { safeCustomElement as m } from "@justeattakeaway/pie-webc-core";
5
+ const u = ":host{display:table-row;border-bottom:1px solid var(--data-table-border-color)}:host(:hover){background-color:var(--pie-data-table-row-background-hover, transparent)}:host([isSelected]){background-color:var(--dt-color-container-subtle)}", S = {
6
+ isSelected: !1,
7
+ isHidden: !1
8
+ };
9
+ var v = Object.defineProperty, h = Object.getOwnPropertyDescriptor, p = (t, r, a, s) => {
10
+ for (var e = s > 1 ? void 0 : s ? h(r, a) : r, l = t.length - 1, n; l >= 0; l--)
11
+ (n = t[l]) && (e = (s ? n(r, a, e) : n(e)) || e);
12
+ return s && e && v(r, a, e), e;
13
+ };
14
+ let o = class extends b {
15
+ render() {
16
+ const { isHidden: t } = this;
17
+ return t ? c : f`<slot></slot>`;
18
+ }
19
+ };
20
+ o.styles = d(u);
21
+ p([
22
+ i({ type: Boolean })
23
+ ], o.prototype, "isSelected", 2);
24
+ p([
25
+ i({ type: Boolean })
26
+ ], o.prototype, "isHidden", 2);
27
+ o = p([
28
+ m("pie-data-table-row")
29
+ ], o);
30
+ export {
31
+ o as PieDataTableRow,
32
+ S as defaultProps
33
+ };
@@ -0,0 +1,7 @@
1
+ import { PieDataTableRow as PieDataTableRowLit } from './index';
2
+ import { DataTableRowProps } from './defs';
3
+ import * as React from 'react';
4
+ export * from './defs';
5
+ type ReactBaseType = React.HTMLAttributes<HTMLElement>;
6
+ export declare const PieDataTableRow: React.ForwardRefExoticComponent<React.PropsWithoutRef<DataTableRowProps> & React.RefAttributes<PieDataTableRowLit> & ReactBaseType>;
7
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-row/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEhD,cAAc,QAAQ,CAAC;AAUvB,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAEtD,eAAO,MAAM,eAAe,EAA2B,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,GACzH,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import * as a from "react";
2
+ import { createComponent as e } from "@lit/react";
3
+ import { PieDataTableRow as t } from "./index.js";
4
+ import { defaultProps as s } from "./index.js";
5
+ const o = e({
6
+ displayName: "PieDataTableRow",
7
+ elementClass: t,
8
+ react: a,
9
+ tagName: "pie-data-table-row",
10
+ events: {}
11
+ }), i = o;
12
+ export {
13
+ i as PieDataTableRow,
14
+ s as defaultProps
15
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-data-table",
3
3
  "description": "PIE Design System Data Table built using Web Components",
4
- "version": "0.0.0-snapshot-release-20260119130527",
4
+ "version": "0.0.0-snapshot-release-20260121170533",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -37,12 +37,12 @@
37
37
  "devDependencies": {
38
38
  "@custom-elements-manifest/analyzer": "0.9.0",
39
39
  "@justeattakeaway/pie-components-config": "0.21.0",
40
- "@justeattakeaway/pie-css": "0.0.0-snapshot-release-20260119130527",
40
+ "@justeattakeaway/pie-css": "0.26.1",
41
41
  "@justeattakeaway/pie-monorepo-utils": "0.7.0",
42
42
  "cem-plugin-module-file-extensions": "0.0.5"
43
43
  },
44
44
  "dependencies": {
45
- "@justeattakeaway/pie-webc-core": "0.0.0-snapshot-release-20260119130527"
45
+ "@justeattakeaway/pie-webc-core": "6.0.1"
46
46
  },
47
47
  "volta": {
48
48
  "extends": "../../../package.json"
@@ -33,40 +33,34 @@
33
33
  }
34
34
  }
35
35
 
36
- .c-data-table-header {
36
+ .c-data-table-head-cell {
37
37
  background-color: transparent;
38
38
  font-weight: var(--dt-font-weight-bold);
39
39
  color: var(--data-table-text-color);
40
40
  text-align: left;
41
- padding: var(--dt-spacing-d);
42
- border-bottom: 1px solid var(--data-table-border-color);
43
41
  }
44
42
 
45
- .c-data-table-header-text-align--left {
43
+ .c-data-table-head-cell-text-align--left,
44
+ .c-data-table-cell-text-align--left {
46
45
  text-align: left;
47
46
  }
48
47
 
49
- .c-data-table-header-text-align--right {
48
+ .c-data-table-head-cell-text-align--right,
49
+ .c-data-table-cell-text-align--right {
50
50
  text-align: right;
51
51
  }
52
52
 
53
- .c-data-table-header-text-align--center {
53
+ .c-data-table-head-cell-text-align--center,
54
+ .c-data-table-cell-text-align--center {
54
55
  text-align: center;
55
56
  }
56
57
 
57
- .c-data-table-cell {
58
+ .c-data-table-cell, .c-data-table-head-cell {
58
59
  padding: var(--dt-spacing-d);
59
60
  border-bottom: 1px solid var(--data-table-border-color);
60
61
  }
61
62
 
62
- .c-data-table-cell-text-align--left {
63
- text-align: left;
64
- }
65
-
66
- .c-data-table-cell-text-align--right {
67
- text-align: right;
68
- }
69
-
70
- .c-data-table-cell-text-align--center {
71
- text-align: center;
72
- }
63
+ .c-data-table-cell--hidden,
64
+ .c-data-table-row--hidden {
65
+ display: none;
66
+ }
package/src/defs.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { type ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
2
2
 
3
+ type TextAlign = 'left' | 'right' | 'center';
4
+
3
5
  export interface Column {
4
6
  /**
5
7
  * Unique identifier for the column
@@ -12,7 +14,7 @@ export interface Column {
12
14
  /**
13
15
  * Optional property to specify the text alignment of the column
14
16
  * */
15
- textAlign?: 'left' | 'right' | 'center';
17
+ textAlign?: TextAlign;
16
18
 
17
19
  /**
18
20
  * Optional property to specify the width of the column
@@ -24,19 +26,35 @@ export interface Column {
24
26
  accessor?: string;
25
27
  }
26
28
 
29
+ export type AdditionalCell = {
30
+ content: string | number;
31
+ textAlign?: TextAlign;
32
+ colSpan?: number;
33
+ hideCell?: boolean;
34
+ };
35
+
36
+ export type DataTableAdditionalRow = {
37
+ cells: AdditionalCell[];
38
+ hideRow?: boolean;
39
+ };
40
+
27
41
  export interface DataTableProps {
28
42
  /**
29
43
  * Array of column definitions
30
44
  */
31
- columns: Column[];
45
+ columns?: Column[];
32
46
 
33
47
  /**
34
48
  * Array of data objects to display
35
49
  */
36
- data: Record<string, unknown>[];
50
+ data?: Record<string, unknown>[];
51
+
52
+ /**
53
+ * Arbitrary additional rows to display at the bottom of the table
54
+ */
55
+ additionalRows?: DataTableAdditionalRow[];
37
56
  }
38
57
 
39
- export const defaultProps: ComponentDefaultProps<DataTableProps, keyof Omit<DataTableProps, 'columns' | 'data'>> = {
40
- hasBorder: true,
41
- isStriped: false,
58
+ export const defaultProps: ComponentDefaultProps<DataTableProps, keyof Omit<DataTableProps, 'columns' | 'data' >> = {
59
+ additionalRows: [],
42
60
  };
package/src/index.ts CHANGED
@@ -8,6 +8,8 @@ import styles from './data-table.scss?inline';
8
8
  import {
9
9
  type DataTableProps,
10
10
  type Column,
11
+ type DataTableAdditionalRow,
12
+ defaultProps,
11
13
  } from './defs';
12
14
 
13
15
  // Valid values available to consumers
@@ -17,6 +19,8 @@ const componentSelector = 'pie-data-table';
17
19
 
18
20
  /**
19
21
  * @tagname pie-data-table
22
+ * @slot table-header - Slot for custom table header content
23
+ * @slot - Default slot for when there is no data to display in the table
20
24
  */
21
25
  @safeCustomElement('pie-data-table')
22
26
  export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps {
@@ -32,6 +36,27 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
32
36
  @property({ type: Array })
33
37
  public data: Record<string, unknown>[] = [];
34
38
 
39
+ /**
40
+ * Arbitrary additional rows to display at the bottom of the table
41
+ */
42
+ @property({ type: Array })
43
+ public additionalRows?: DataTableAdditionalRow[] = defaultProps.additionalRows;
44
+
45
+ /**
46
+ * Maps text alignment values to corresponding CSS classes
47
+ *
48
+ * @param prefix - The prefix for the CSS class
49
+ * @param textAlign - The text alignment value
50
+ * @returns An object with CSS classes as keys and boolean values indicating whether the class should be applied
51
+ */
52
+ private mapTextAlignClasses (prefix: string, textAlign?: string) {
53
+ return {
54
+ [`${prefix}-text-align--left`]: textAlign === 'left',
55
+ [`${prefix}-text-align--right`]: textAlign === 'right',
56
+ [`${prefix}-text-align--center`]: textAlign === 'center',
57
+ };
58
+ }
59
+
35
60
  /**
36
61
  * Renders a header cell for the table
37
62
  * @param column - The column definition to render
@@ -40,14 +65,12 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
40
65
  const { width, heading, textAlign } = column;
41
66
  const style = width ? `width: ${width}` : nothing;
42
67
  const classes = {
43
- 'c-data-table-header': true,
44
- 'c-data-table-header-text-align--left': textAlign === 'left',
45
- 'c-data-table-header-text-align--right': textAlign === 'right',
46
- 'c-data-table-header-text-align--center': textAlign === 'center',
68
+ 'c-data-table-head-cell': true,
69
+ ...this.mapTextAlignClasses('c-data-table-head-cell', textAlign),
47
70
  };
48
71
 
49
72
  return html`
50
- <th style="${style}" class="${classMap(classes)}">
73
+ <th style="${String(style)}" class="${classMap(classes)}">
51
74
  ${heading}
52
75
  </th>
53
76
  `;
@@ -74,9 +97,7 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
74
97
  private renderTableCell (column: Column, row: Record<string, unknown>) {
75
98
  const classes = {
76
99
  'c-data-table-cell': true,
77
- 'c-data-table-cell-text-align--left': column.textAlign === 'left',
78
- 'c-data-table-cell-text-align--right': column.textAlign === 'right',
79
- 'c-data-table-cell-text-align--center': column.textAlign === 'center',
100
+ ...this.mapTextAlignClasses('c-data-table-cell', column.textAlign),
80
101
  };
81
102
 
82
103
  return html`
@@ -101,6 +122,54 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
101
122
  `;
102
123
  }
103
124
 
125
+ /**
126
+ * Renders the additional rows for the table
127
+ */
128
+ private renderAdditionalRows () {
129
+ /* eslint-disable indent */
130
+ return html`
131
+ <tfoot>
132
+ ${this.additionalRows && this.additionalRows.length > 0 && this.additionalRows.map((row) => {
133
+ const rowClasses = {
134
+ 'c-data-table-row': true,
135
+ 'c-data-table-row--hidden': !!row.hideRow,
136
+ };
137
+ return html`
138
+ <tr class="${classMap(rowClasses)}">
139
+ ${row.cells.map((cell) => {
140
+ const cellClasses = {
141
+ 'c-data-table-cell': true,
142
+ 'c-data-table-cell--hidden': !!cell.hideCell,
143
+ ...this.mapTextAlignClasses('c-data-table-cell', cell.textAlign),
144
+ };
145
+
146
+ return html`
147
+ <td
148
+ class="${classMap(cellClasses)}"
149
+ colspan=${cell.colSpan || 1}
150
+ >
151
+ ${cell.content}
152
+ </td>
153
+ `;
154
+ })}
155
+ </tr>
156
+ `;
157
+ })}
158
+ </tfoot>
159
+ `;
160
+ /* eslint-enable indent */
161
+ }
162
+
163
+ private renderHTMLTable () {
164
+ return html`
165
+ <table>
166
+ ${this.columns.length > 0 ? this.renderTableHeader() : nothing}
167
+ ${this.data.length > 0 ? this.renderTableRows() : nothing}
168
+ ${this.additionalRows && this.additionalRows.length > 0 ? this.renderAdditionalRows() : nothing}
169
+ </table>
170
+ `;
171
+ }
172
+
104
173
  render () {
105
174
  const classes = {
106
175
  'c-data-table': true,
@@ -109,10 +178,7 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
109
178
  return html`
110
179
  <div class="${classMap(classes)}">
111
180
  <slot name="table-header"></slot>
112
- <table>
113
- ${this.columns.length > 0 ? this.renderTableHeader() : nothing}
114
- ${this.data.length > 0 ? this.renderTableRows() : nothing}
115
- </table>
181
+ ${this.data.length > 0 && this.columns.length > 0 ? this.renderHTMLTable() : html`<slot></slot>`}
116
182
  </div>
117
183
  `;
118
184
  }
@@ -0,0 +1,7 @@
1
+ :host {
2
+ display: table-row-group;
3
+
4
+ ::slotted(pie-data-table-row) {
5
+ --pie-data-table-row-background-hover: var(--dt-color-container-subtle);
6
+ }
7
+ }
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+
3
+ export type ReactBaseType = React.HTMLAttributes<HTMLElement>
@@ -0,0 +1 @@
1
+ export type DataTableBodyProps = Partial<HTMLTableSectionElement>;
@@ -0,0 +1,30 @@
1
+ import { html, unsafeCSS } from 'lit';
2
+ import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
3
+ import { safeCustomElement } from '@justeattakeaway/pie-webc-core';
4
+
5
+ import styles from './data-table-body.scss?inline';
6
+ import { type DataTableBodyProps } from './defs';
7
+
8
+ export * from './defs';
9
+
10
+ const componentSelector = 'pie-data-table-body';
11
+
12
+ /**
13
+ * @tagname pie-data-table-body
14
+ * @slot - Default slot
15
+ */
16
+ @safeCustomElement('pie-data-table-body')
17
+ export class PieDataTableBody extends PieElement implements DataTableBodyProps {
18
+ render () {
19
+ return html`<slot></slot>`;
20
+ }
21
+
22
+ // Renders a `CSSResult` generated from SCSS by Vite
23
+ static styles = unsafeCSS(styles);
24
+ }
25
+
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ [componentSelector]: PieDataTableBody;
29
+ }
30
+ }
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { PieDataTableBody as PieDataTableBodyLit } from './index';
4
+ import { type DataTableBodyProps } from './defs';
5
+
6
+ export * from './defs';
7
+
8
+ const PieDataTableBodyReact = createComponent({
9
+ displayName: 'PieDataTableBody',
10
+ elementClass: PieDataTableBodyLit,
11
+ react: React,
12
+ tagName: 'pie-data-table-body',
13
+ events: {},
14
+ });
15
+
16
+ type ReactBaseType = React.HTMLAttributes<HTMLElement>
17
+
18
+ export const PieDataTableBody = PieDataTableBodyReact as React.ForwardRefExoticComponent<React.PropsWithoutRef<DataTableBodyProps>
19
+ & React.RefAttributes<PieDataTableBodyLit> & ReactBaseType>;
@@ -0,0 +1,21 @@
1
+ :host {
2
+ padding: var(--dt-spacing-d);
3
+ border-bottom: 1px solid var(--data-table-border-color);
4
+ display: table-cell;
5
+ }
6
+
7
+ :host([textAlign="right"]) {
8
+ text-align: right;
9
+ }
10
+
11
+ :host([textAlign="center"]) {
12
+ text-align: center;
13
+ }
14
+
15
+ :host([textAlign="left"]) {
16
+ text-align: left;
17
+ }
18
+
19
+ :host([isHidden]) {
20
+ display: none;
21
+ }
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+
3
+ export type ReactBaseType = React.HTMLAttributes<HTMLElement>