@justeattakeaway/pie-data-table 0.0.0-snapshot-release-20250910151748 → 0.0.0-snapshot-release-20251010234024

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 (102) hide show
  1. package/custom-elements.json +739 -332
  2. package/dist/{PieElement-Y2VnHR4y.js → PieElement-DgHPBi0_.js} +1 -1
  3. package/dist/defs.d.ts +2 -2
  4. package/dist/defs.d.ts.map +1 -1
  5. package/dist/index.d.ts +1 -10
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +53 -63
  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 +17 -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 +27 -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 +18 -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 +18 -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 +27 -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.js +1 -1
  59. package/dist/pie-data-table-row/defs-react.d.ts +3 -0
  60. package/dist/pie-data-table-row/defs-react.d.ts.map +1 -0
  61. package/dist/pie-data-table-row/defs.d.ts +13 -0
  62. package/dist/pie-data-table-row/defs.d.ts.map +1 -0
  63. package/dist/pie-data-table-row/index.d.ts +30 -0
  64. package/dist/pie-data-table-row/index.d.ts.map +1 -0
  65. package/dist/pie-data-table-row/index.js +46 -0
  66. package/dist/pie-data-table-row/react.d.ts +7 -0
  67. package/dist/pie-data-table-row/react.d.ts.map +1 -0
  68. package/dist/pie-data-table-row/react.js +15 -0
  69. package/package.json +7 -4
  70. package/src/data-table.scss +5 -7
  71. package/src/defs.ts +2 -2
  72. package/src/index.ts +20 -40
  73. package/src/pie-data-table-body/data-table-body.scss +3 -0
  74. package/src/pie-data-table-body/defs-react.ts +3 -0
  75. package/src/pie-data-table-body/defs.ts +1 -0
  76. package/src/pie-data-table-body/index.ts +29 -0
  77. package/src/pie-data-table-body/react.ts +19 -0
  78. package/src/pie-data-table-cell/data-table-cell.scss +21 -0
  79. package/src/pie-data-table-cell/defs-react.ts +3 -0
  80. package/src/pie-data-table-cell/defs.ts +19 -0
  81. package/src/pie-data-table-cell/index.ts +61 -0
  82. package/src/pie-data-table-cell/react.ts +19 -0
  83. package/src/pie-data-table-contents/data-table-contents.scss +4 -0
  84. package/src/pie-data-table-contents/defs-react.ts +3 -0
  85. package/src/pie-data-table-contents/defs.ts +1 -0
  86. package/src/pie-data-table-contents/index.ts +35 -0
  87. package/src/pie-data-table-contents/react.ts +19 -0
  88. package/src/pie-data-table-head/data-table-head.scss +8 -0
  89. package/src/pie-data-table-head/defs-react.ts +3 -0
  90. package/src/pie-data-table-head/defs.ts +1 -0
  91. package/src/pie-data-table-head/index.ts +36 -0
  92. package/src/pie-data-table-head/react.ts +19 -0
  93. package/src/pie-data-table-head-cell/data-table-head-cell.scss +21 -0
  94. package/src/pie-data-table-head-cell/defs-react.ts +3 -0
  95. package/src/pie-data-table-head-cell/defs.ts +19 -0
  96. package/src/pie-data-table-head-cell/index.ts +59 -0
  97. package/src/pie-data-table-head-cell/react.ts +19 -0
  98. package/src/pie-data-table-row/data-table-row.scss +12 -0
  99. package/src/pie-data-table-row/defs-react.ts +3 -0
  100. package/src/pie-data-table-row/defs.ts +17 -0
  101. package/src/pie-data-table-row/index.ts +77 -0
  102. package/src/pie-data-table-row/react.ts +19 -0
@@ -0,0 +1,24 @@
1
+ import { unsafeCSS as d, html as b } from "lit";
2
+ import { P as c } from "../PieElement-DgHPBi0_.js";
3
+ import { safeCustomElement as i } from "@justeattakeaway/pie-webc-core";
4
+ const p = ":host{background-color:transparent;font-weight:var(--dt-font-weight-bold);color:var(--data-table-header-color);border-bottom:1px solid var(--data-table-border-color);display:table-header-group}";
5
+ var h = Object.getOwnPropertyDescriptor, m = (o, a, n, l) => {
6
+ for (var e = l > 1 ? void 0 : l ? h(a, n) : a, t = o.length - 1, s; t >= 0; t--)
7
+ (s = o[t]) && (e = s(e) || e);
8
+ return e;
9
+ };
10
+ let r = class extends c {
11
+ connectedCallback() {
12
+ this.hasAttribute("role") || this.setAttribute("role", "rowgroup"), super.connectedCallback();
13
+ }
14
+ render() {
15
+ return b`<slot></slot>`;
16
+ }
17
+ };
18
+ r.styles = d(p);
19
+ r = m([
20
+ i("pie-data-table-head")
21
+ ], r);
22
+ export {
23
+ r as PieDataTableHead
24
+ };
@@ -0,0 +1,7 @@
1
+ import { PieDataTableHead as PieDataTableHeadLit } from './index';
2
+ import { DataTableHeadProps } from './defs';
3
+ import * as React from 'react';
4
+ export * from './defs';
5
+ type ReactBaseType = React.HTMLAttributes<HTMLElement>;
6
+ export declare const PieDataTableHead: React.ForwardRefExoticComponent<React.PropsWithoutRef<DataTableHeadProps> & React.RefAttributes<PieDataTableHeadLit> & ReactBaseType>;
7
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/pie-data-table-head/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,cAAc,QAAQ,CAAC;AAUvB,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AAEtD,eAAO,MAAM,gBAAgB,EAA4B,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAC5H,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,aAAa,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as a from "react";
2
+ import { createComponent as e } from "@lit/react";
3
+ import { PieDataTableHead as t } from "./index.js";
4
+ const o = e({
5
+ displayName: "PieDataTableHead",
6
+ elementClass: t,
7
+ react: a,
8
+ tagName: "pie-data-table-head",
9
+ events: {}
10
+ }), l = o;
11
+ export {
12
+ l as PieDataTableHead
13
+ };
@@ -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-head-cell/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,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,27 @@
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
+ */
9
+ export declare class PieDataTableHeadCell extends PieElement implements DataTableHeadCellProps {
10
+ /**
11
+ * Text alignment for the cell content
12
+ */
13
+ textAlign?: DataTableHeadCellProps['textAlign'];
14
+ /**
15
+ * Whether the cell is hidden
16
+ */
17
+ isHidden?: DataTableHeadCellProps['isHidden'];
18
+ connectedCallback(): void;
19
+ render(): typeof nothing | import('lit-html').TemplateResult<1>;
20
+ static styles: import('lit').CSSResult;
21
+ }
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ [componentSelector]: PieDataTableHeadCell;
25
+ }
26
+ }
27
+ //# 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;;GAEG;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-DgHPBi0_.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
+ };
@@ -1,6 +1,6 @@
1
1
  import { unsafeCSS as h, nothing as p, html as n } from "lit";
2
2
  import { property as c, state as b } from "lit/decorators.js";
3
- import { P as g } from "../PieElement-Y2VnHR4y.js";
3
+ import { P as g } from "../PieElement-DgHPBi0_.js";
4
4
  import { validPropertyValues as u, safeCustomElement as f } from "@justeattakeaway/pie-webc-core";
5
5
  import { classMap as v } from "lit/directives/class-map.js";
6
6
  const m = "*,*:after,*:before{box-sizing:inherit}:host{display:block}.c-data-table-header{--data-table-header-background: transparent;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-title-wrapper{display:flex;flex-direction:column;gap:var(--dt-spacing-b)}.c-data-table-header-title{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-subtitle{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)}", y = ["subtle", "strong"], x = {
@@ -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,30 @@
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
+ */
9
+ export declare class PieDataTableRow extends PieElement implements DataTableRowProps {
10
+ /**
11
+ * Whether the row is currently selected
12
+ */
13
+ isSelected?: DataTableRowProps['isSelected'];
14
+ /**
15
+ * Whether the row is hidden
16
+ */
17
+ isHidden?: DataTableRowProps['isHidden'];
18
+ connectedCallback(): void;
19
+ disconnectedCallback(): void;
20
+ private _handleMouseEnter;
21
+ private _handleMouseLeave;
22
+ render(): typeof nothing | import('lit-html').TemplateResult<1>;
23
+ static styles: import('lit').CSSResult;
24
+ }
25
+ declare global {
26
+ interface HTMLElementTagNameMap {
27
+ [componentSelector]: PieDataTableRow;
28
+ }
29
+ }
30
+ //# 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;;GAEG;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,iBAAiB;IAYjB,oBAAoB;IAOpB,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,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,46 @@
1
+ import { unsafeCSS as c, nothing as h, html as p } from "lit";
2
+ import { property as d } from "lit/decorators.js";
3
+ import { P as u } from "../PieElement-DgHPBi0_.js";
4
+ import { safeCustomElement as v } from "@justeattakeaway/pie-webc-core";
5
+ const b = ":host{display:table-row;border-bottom:1px solid var(--data-table-border-color)}:host ::slotted(pie-data-table-cell){background-color:var(--data-table-background-hover-or-active, transparent)}:host([isSelected]){background-color:var(--dt-color-container-subtle)}", g = {
6
+ isSelected: !1,
7
+ isHidden: !1
8
+ };
9
+ var m = Object.defineProperty, f = Object.getOwnPropertyDescriptor, i = (r, o, a, s) => {
10
+ for (var e = s > 1 ? void 0 : s ? f(o, a) : o, n = r.length - 1, l; n >= 0; n--)
11
+ (l = r[n]) && (e = (s ? l(o, a, e) : l(e)) || e);
12
+ return s && e && m(o, a, e), e;
13
+ };
14
+ let t = class extends u {
15
+ constructor() {
16
+ super(...arguments), this._handleMouseEnter = () => {
17
+ this.style.setProperty("--data-table-background-hover-or-active", "var(--dt-color-container-subtle)");
18
+ }, this._handleMouseLeave = () => {
19
+ this.style.setProperty("--data-table-background-hover-or-active", "transparent");
20
+ };
21
+ }
22
+ connectedCallback() {
23
+ this.hasAttribute("role") || this.setAttribute("role", "row"), this.addEventListener("mouseenter", this._handleMouseEnter), this.addEventListener("mouseleave", this._handleMouseLeave), this.style.setProperty("--data-table-background-hover-or-active", "transparent"), super.connectedCallback();
24
+ }
25
+ disconnectedCallback() {
26
+ super.disconnectedCallback(), this.removeEventListener("mouseenter", this._handleMouseEnter), this.removeEventListener("mouseleave", this._handleMouseLeave);
27
+ }
28
+ render() {
29
+ const { isHidden: r } = this;
30
+ return r ? h : p`<slot></slot>`;
31
+ }
32
+ };
33
+ t.styles = c(b);
34
+ i([
35
+ d({ type: Boolean })
36
+ ], t.prototype, "isSelected", 2);
37
+ i([
38
+ d({ type: Boolean })
39
+ ], t.prototype, "isHidden", 2);
40
+ t = i([
41
+ v("pie-data-table-row")
42
+ ], t);
43
+ export {
44
+ t as PieDataTableRow,
45
+ g as defaultProps
46
+ };
@@ -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-20250910151748",
4
+ "version": "0.0.0-snapshot-release-20251010234024",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -13,7 +13,10 @@
13
13
  "**/*.d.ts"
14
14
  ],
15
15
  "pieMetadata": {
16
- "componentStatus": "alpha"
16
+ "componentStatus": "alpha",
17
+ "replaces": {
18
+ "snacks": []
19
+ }
17
20
  },
18
21
  "scripts": {
19
22
  "build": "run -T vite build",
@@ -34,12 +37,12 @@
34
37
  "devDependencies": {
35
38
  "@custom-elements-manifest/analyzer": "0.9.0",
36
39
  "@justeattakeaway/pie-components-config": "0.21.0",
37
- "@justeattakeaway/pie-css": "0.21.0",
40
+ "@justeattakeaway/pie-css": "0.22.0",
38
41
  "@justeattakeaway/pie-monorepo-utils": "0.7.0",
39
42
  "cem-plugin-module-file-extensions": "0.0.5"
40
43
  },
41
44
  "dependencies": {
42
- "@justeattakeaway/pie-webc-core": "1.1.0"
45
+ "@justeattakeaway/pie-webc-core": "2.0.0"
43
46
  },
44
47
  "volta": {
45
48
  "extends": "../../../package.json"
@@ -33,31 +33,29 @@
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-header-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,
46
44
  .c-data-table-cell-text-align--left {
47
45
  text-align: left;
48
46
  }
49
47
 
50
- .c-data-table-header-text-align--right,
48
+ .c-data-table-head-cell-text-align--right,
51
49
  .c-data-table-cell-text-align--right {
52
50
  text-align: right;
53
51
  }
54
52
 
55
- .c-data-table-header-text-align--center,
53
+ .c-data-table-head-cell-text-align--center,
56
54
  .c-data-table-cell-text-align--center {
57
55
  text-align: center;
58
56
  }
59
57
 
60
- .c-data-table-cell {
58
+ .c-data-table-cell, .c-data-table-head-cell {
61
59
  padding: var(--dt-spacing-d);
62
60
  border-bottom: 1px solid var(--data-table-border-color);
63
61
  }
package/src/defs.ts CHANGED
@@ -42,12 +42,12 @@ export interface DataTableProps {
42
42
  /**
43
43
  * Array of column definitions
44
44
  */
45
- columns: Column[];
45
+ columns?: Column[];
46
46
 
47
47
  /**
48
48
  * Array of data objects to display
49
49
  */
50
- data: Record<string, unknown>[];
50
+ data?: Record<string, unknown>[];
51
51
 
52
52
  /**
53
53
  * Arbitrary additional rows to display at the bottom of the table
package/src/index.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import { html, nothing, unsafeCSS } from 'lit';
2
- import { unsafeHTML } from 'lit/directives/unsafe-html.js';
3
2
  import { property } from 'lit/decorators.js';
4
3
  import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
5
4
  import { RtlMixin, safeCustomElement } from '@justeattakeaway/pie-webc-core';
6
5
  import { classMap } from 'lit/directives/class-map.js';
7
6
 
7
+ // import '@justeattakeaway/pie-data-table-contents';
8
+ // import '@justeattakeaway/pie-data-table-head';
9
+ // import '@justeattakeaway/pie-data-table-head-cell';
10
+ // import '@justeattakeaway/pie-data-table-body';
11
+ // import '@justeattakeaway/pie-data-table-row';
12
+ // import '@justeattakeaway/pie-data-table-cell';
13
+
8
14
  import styles from './data-table.scss?inline';
9
15
  import {
10
16
  type DataTableProps,
@@ -64,12 +70,12 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
64
70
  const { width, heading, textAlign } = column;
65
71
  const style = width ? `width: ${width}` : nothing;
66
72
  const classes = {
67
- 'c-data-table-header': true,
68
- ...this.mapTextAlignClasses('c-data-table-header', textAlign),
73
+ 'c-data-table-head-cell': true,
74
+ ...this.mapTextAlignClasses('c-data-table-head-cell', textAlign),
69
75
  };
70
76
 
71
77
  return html`
72
- <th style="${style}" class="${classMap(classes)}">
78
+ <th style="${String(style)}" class="${classMap(classes)}">
73
79
  ${heading}
74
80
  </th>
75
81
  `;
@@ -101,7 +107,7 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
101
107
 
102
108
  return html`
103
109
  <td class="${classMap(classes)}">
104
- ${column.accessor ? this.renderCellContent(row[column.accessor]) : ''}
110
+ ${column.accessor ? row[column.accessor] : ''}
105
111
  </td>
106
112
  `;
107
113
  }
@@ -159,36 +165,14 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
159
165
  /* eslint-enable indent */
160
166
  }
161
167
 
162
- /**
163
- * Util method that checks if a string contains HTML tags
164
- */
165
- private isHTMLString (str: string): boolean {
166
- return /<[a-z][\s\S]*>/i.test(str.trim());
167
- }
168
-
169
- /**
170
- * Renders the content of a table cell, handling different types of content
171
- *
172
- * @param value - The content to render in the cell
173
- */
174
- private renderCellContent (value: unknown): unknown {
175
- if (value == null) {
176
- return '';
177
- }
178
-
179
- if ((value instanceof HTMLElement) || (value && typeof value === 'object')) {
180
- return value;
181
- }
182
-
183
- if (typeof value === 'function') {
184
- return this.renderCellContent(value());
185
- }
186
-
187
- if (typeof value === 'string' && this.isHTMLString(value)) {
188
- return unsafeHTML(value);
189
- }
190
-
191
- return String(value);
168
+ private renderHTMLTable () {
169
+ return html`
170
+ <table>
171
+ ${this.columns.length > 0 ? this.renderTableHeader() : nothing}
172
+ ${this.data.length > 0 ? this.renderTableRows() : nothing}
173
+ ${this.additionalRows && this.additionalRows.length > 0 ? this.renderAdditionalRows() : nothing}
174
+ </table>
175
+ `;
192
176
  }
193
177
 
194
178
  render () {
@@ -199,11 +183,7 @@ export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps
199
183
  return html`
200
184
  <div class="${classMap(classes)}">
201
185
  <slot name="table-header"></slot>
202
- <table>
203
- ${this.columns.length > 0 ? this.renderTableHeader() : nothing}
204
- ${this.data.length > 0 ? this.renderTableRows() : nothing}
205
- ${this.additionalRows && this.additionalRows.length > 0 ? this.renderAdditionalRows() : nothing}
206
- </table>
186
+ ${this.data.length > 0 && this.columns.length > 0 ? this.renderHTMLTable() : html`<slot></slot>`}
207
187
  </div>
208
188
  `;
209
189
  }
@@ -0,0 +1,3 @@
1
+ :host {
2
+ display: table-row-group;
3
+ }
@@ -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,29 @@
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
+ */
15
+ @safeCustomElement('pie-data-table-body')
16
+ export class PieDataTableBody extends PieElement implements DataTableBodyProps {
17
+ render () {
18
+ return html`<slot></slot>`;
19
+ }
20
+
21
+ // Renders a `CSSResult` generated from SCSS by Vite
22
+ static styles = unsafeCSS(styles);
23
+ }
24
+
25
+ declare global {
26
+ interface HTMLElementTagNameMap {
27
+ [componentSelector]: PieDataTableBody;
28
+ }
29
+ }
@@ -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>
@@ -0,0 +1,19 @@
1
+ import { type ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
2
+
3
+ export const dataTableCellTextAlign = ['left', 'right', 'center'] as const;
4
+
5
+ export interface DataTableCellProps {
6
+ /**
7
+ * Text alignment for the cell content
8
+ */
9
+ textAlign?: typeof dataTableCellTextAlign[number];
10
+ /**
11
+ * Whether the cell is hidden
12
+ */
13
+ isHidden?: boolean;
14
+ }
15
+
16
+ export const defaultProps: ComponentDefaultProps<DataTableCellProps, 'textAlign' | 'isHidden'> = {
17
+ textAlign: 'left',
18
+ isHidden: false,
19
+ };