@justeattakeaway/pie-data-table 0.0.0-snapshot-release-20251014131309 → 0.0.0-snapshot-release-20251111101641

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 (121) hide show
  1. package/custom-elements.json +3 -714
  2. package/dist/index.d.ts +20 -62
  3. package/dist/index.js +20 -152
  4. package/dist/react.d.ts +25 -7
  5. package/dist/react.js +2 -4
  6. package/package.json +3 -3
  7. package/src/data-table.scss +2 -61
  8. package/src/defs.ts +3 -60
  9. package/src/index.ts +3 -172
  10. package/dist/PieElement-DgHPBi0_.js +0 -11
  11. package/dist/defs-react.d.ts +0 -9
  12. package/dist/defs-react.d.ts.map +0 -1
  13. package/dist/defs.d.ts +0 -51
  14. package/dist/defs.d.ts.map +0 -1
  15. package/dist/index.d.ts.map +0 -1
  16. package/dist/pie-data-table-body/defs-react.d.ts +0 -3
  17. package/dist/pie-data-table-body/defs-react.d.ts.map +0 -1
  18. package/dist/pie-data-table-body/defs.d.ts +0 -2
  19. package/dist/pie-data-table-body/defs.d.ts.map +0 -1
  20. package/dist/pie-data-table-body/index.d.ts +0 -17
  21. package/dist/pie-data-table-body/index.d.ts.map +0 -1
  22. package/dist/pie-data-table-body/index.js +0 -21
  23. package/dist/pie-data-table-body/react.d.ts +0 -7
  24. package/dist/pie-data-table-body/react.d.ts.map +0 -1
  25. package/dist/pie-data-table-body/react.js +0 -13
  26. package/dist/pie-data-table-cell/defs-react.d.ts +0 -3
  27. package/dist/pie-data-table-cell/defs-react.d.ts.map +0 -1
  28. package/dist/pie-data-table-cell/defs.d.ts +0 -14
  29. package/dist/pie-data-table-cell/defs.d.ts.map +0 -1
  30. package/dist/pie-data-table-cell/index.d.ts +0 -27
  31. package/dist/pie-data-table-cell/index.d.ts.map +0 -1
  32. package/dist/pie-data-table-cell/index.js +0 -39
  33. package/dist/pie-data-table-cell/react.d.ts +0 -7
  34. package/dist/pie-data-table-cell/react.d.ts.map +0 -1
  35. package/dist/pie-data-table-cell/react.js +0 -16
  36. package/dist/pie-data-table-contents/defs-react.d.ts +0 -3
  37. package/dist/pie-data-table-contents/defs-react.d.ts.map +0 -1
  38. package/dist/pie-data-table-contents/defs.d.ts +0 -2
  39. package/dist/pie-data-table-contents/defs.d.ts.map +0 -1
  40. package/dist/pie-data-table-contents/index.d.ts +0 -18
  41. package/dist/pie-data-table-contents/index.d.ts.map +0 -1
  42. package/dist/pie-data-table-contents/index.js +0 -24
  43. package/dist/pie-data-table-contents/react.d.ts +0 -7
  44. package/dist/pie-data-table-contents/react.d.ts.map +0 -1
  45. package/dist/pie-data-table-contents/react.js +0 -13
  46. package/dist/pie-data-table-head/defs-react.d.ts +0 -3
  47. package/dist/pie-data-table-head/defs-react.d.ts.map +0 -1
  48. package/dist/pie-data-table-head/defs.d.ts +0 -2
  49. package/dist/pie-data-table-head/defs.d.ts.map +0 -1
  50. package/dist/pie-data-table-head/index.d.ts +0 -18
  51. package/dist/pie-data-table-head/index.d.ts.map +0 -1
  52. package/dist/pie-data-table-head/index.js +0 -24
  53. package/dist/pie-data-table-head/react.d.ts +0 -7
  54. package/dist/pie-data-table-head/react.d.ts.map +0 -1
  55. package/dist/pie-data-table-head/react.js +0 -13
  56. package/dist/pie-data-table-head-cell/defs-react.d.ts +0 -3
  57. package/dist/pie-data-table-head-cell/defs-react.d.ts.map +0 -1
  58. package/dist/pie-data-table-head-cell/defs.d.ts +0 -14
  59. package/dist/pie-data-table-head-cell/defs.d.ts.map +0 -1
  60. package/dist/pie-data-table-head-cell/index.d.ts +0 -27
  61. package/dist/pie-data-table-head-cell/index.d.ts.map +0 -1
  62. package/dist/pie-data-table-head-cell/index.js +0 -39
  63. package/dist/pie-data-table-head-cell/react.d.ts +0 -7
  64. package/dist/pie-data-table-head-cell/react.d.ts.map +0 -1
  65. package/dist/pie-data-table-head-cell/react.js +0 -16
  66. package/dist/pie-data-table-header/defs-react.d.ts +0 -9
  67. package/dist/pie-data-table-header/defs-react.d.ts.map +0 -1
  68. package/dist/pie-data-table-header/defs.d.ts +0 -18
  69. package/dist/pie-data-table-header/defs.d.ts.map +0 -1
  70. package/dist/pie-data-table-header/index.d.ts +0 -40
  71. package/dist/pie-data-table-header/index.d.ts.map +0 -1
  72. package/dist/pie-data-table-header/index.js +0 -80
  73. package/dist/pie-data-table-header/react.d.ts +0 -7
  74. package/dist/pie-data-table-header/react.d.ts.map +0 -1
  75. package/dist/pie-data-table-header/react.js +0 -16
  76. package/dist/pie-data-table-row/defs-react.d.ts +0 -3
  77. package/dist/pie-data-table-row/defs-react.d.ts.map +0 -1
  78. package/dist/pie-data-table-row/defs.d.ts +0 -13
  79. package/dist/pie-data-table-row/defs.d.ts.map +0 -1
  80. package/dist/pie-data-table-row/index.d.ts +0 -30
  81. package/dist/pie-data-table-row/index.d.ts.map +0 -1
  82. package/dist/pie-data-table-row/index.js +0 -46
  83. package/dist/pie-data-table-row/react.d.ts +0 -7
  84. package/dist/pie-data-table-row/react.d.ts.map +0 -1
  85. package/dist/pie-data-table-row/react.js +0 -15
  86. package/dist/react.d.ts.map +0 -1
  87. package/src/pie-data-table-body/data-table-body.scss +0 -3
  88. package/src/pie-data-table-body/defs-react.ts +0 -3
  89. package/src/pie-data-table-body/defs.ts +0 -1
  90. package/src/pie-data-table-body/index.ts +0 -29
  91. package/src/pie-data-table-body/react.ts +0 -19
  92. package/src/pie-data-table-cell/data-table-cell.scss +0 -21
  93. package/src/pie-data-table-cell/defs-react.ts +0 -3
  94. package/src/pie-data-table-cell/defs.ts +0 -19
  95. package/src/pie-data-table-cell/index.ts +0 -61
  96. package/src/pie-data-table-cell/react.ts +0 -19
  97. package/src/pie-data-table-contents/data-table-contents.scss +0 -4
  98. package/src/pie-data-table-contents/defs-react.ts +0 -3
  99. package/src/pie-data-table-contents/defs.ts +0 -1
  100. package/src/pie-data-table-contents/index.ts +0 -35
  101. package/src/pie-data-table-contents/react.ts +0 -19
  102. package/src/pie-data-table-head/data-table-head.scss +0 -8
  103. package/src/pie-data-table-head/defs-react.ts +0 -3
  104. package/src/pie-data-table-head/defs.ts +0 -1
  105. package/src/pie-data-table-head/index.ts +0 -36
  106. package/src/pie-data-table-head/react.ts +0 -19
  107. package/src/pie-data-table-head-cell/data-table-head-cell.scss +0 -21
  108. package/src/pie-data-table-head-cell/defs-react.ts +0 -3
  109. package/src/pie-data-table-head-cell/defs.ts +0 -19
  110. package/src/pie-data-table-head-cell/index.ts +0 -59
  111. package/src/pie-data-table-head-cell/react.ts +0 -19
  112. package/src/pie-data-table-header/data-table-header.scss +0 -44
  113. package/src/pie-data-table-header/defs-react.ts +0 -8
  114. package/src/pie-data-table-header/defs.ts +0 -22
  115. package/src/pie-data-table-header/index.ts +0 -101
  116. package/src/pie-data-table-header/react.ts +0 -19
  117. package/src/pie-data-table-row/data-table-row.scss +0 -12
  118. package/src/pie-data-table-row/defs-react.ts +0 -3
  119. package/src/pie-data-table-row/defs.ts +0 -17
  120. package/src/pie-data-table-row/index.ts +0 -77
  121. package/src/pie-data-table-row/react.ts +0 -19
package/dist/index.d.ts CHANGED
@@ -1,62 +1,20 @@
1
- import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
2
- import { DataTableProps, Column, DataTableAdditionalRow } from './defs';
3
- export * from './defs';
4
- declare const componentSelector = "pie-data-table";
5
- declare const PieDataTable_base: import('@justeattakeaway/pie-webc-core').GenericConstructor<import('@justeattakeaway/pie-webc-core').RTLInterface> & typeof PieElement;
6
- /**
7
- * @tagname pie-data-table
8
- */
9
- export declare class PieDataTable extends PieDataTable_base implements DataTableProps {
10
- /**
11
- * Array of column definitions
12
- */
13
- columns: Column[];
14
- /**
15
- * Array of data objects to display
16
- */
17
- data: Record<string, unknown>[];
18
- /**
19
- * Arbitrary additional rows to display at the bottom of the table
20
- */
21
- additionalRows?: DataTableAdditionalRow[];
22
- /**
23
- * Maps text alignment values to corresponding CSS classes
24
- *
25
- * @param prefix - The prefix for the CSS class
26
- * @param textAlign - The text alignment value
27
- * @returns An object with CSS classes as keys and boolean values indicating whether the class should be applied
28
- */
29
- private mapTextAlignClasses;
30
- /**
31
- * Renders a header cell for the table
32
- * @param column - The column definition to render
33
- */
34
- private renderHeaderCell;
35
- /**
36
- * Renders the table header
37
- */
38
- private renderTableHeader;
39
- /**
40
- * Renders a table cell for the given column and row
41
- * @param column - The column definition to render
42
- * @param row - The data object for the current row
43
- */
44
- private renderTableCell;
45
- /**
46
- * Renders the table rows
47
- */
48
- private renderTableRows;
49
- /**
50
- * Renders the additional rows for the table
51
- */
52
- private renderAdditionalRows;
53
- private renderHTMLTable;
54
- render(): import('lit-html').TemplateResult<1>;
55
- static styles: import('lit').CSSResult;
56
- }
57
- declare global {
58
- interface HTMLElementTagNameMap {
59
- [componentSelector]: PieDataTable;
60
- }
61
- }
62
- //# sourceMappingURL=index.d.ts.map
1
+ import { CSSResult } from 'lit';
2
+ import { GenericConstructor } from '@justeattakeaway/pie-webc-core';
3
+ import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
4
+ import { RTLInterface } from '@justeattakeaway/pie-webc-core';
5
+ import { TemplateResult } from 'lit-html';
6
+
7
+ export declare interface DataTableProps {
8
+ }
9
+
10
+ /**
11
+ * @tagname pie-data-table
12
+ */
13
+ export declare class PieDataTable extends PieDataTable_base implements DataTableProps {
14
+ render(): TemplateResult<1>;
15
+ static styles: CSSResult;
16
+ }
17
+
18
+ declare const PieDataTable_base: GenericConstructor<RTLInterface> & typeof PieElement;
19
+
20
+ export { }
package/dist/index.js CHANGED
@@ -1,159 +1,27 @@
1
- import { nothing as c, html as l, unsafeCSS as g } from "lit";
2
- import { property as h } from "lit/decorators.js";
3
- import { P as u } from "./PieElement-DgHPBi0_.js";
4
- import { RtlMixin as p, safeCustomElement as m } from "@justeattakeaway/pie-webc-core";
5
- import { classMap as n } from "lit/directives/class-map.js";
6
- const v = "*,*:after,*:before{box-sizing:inherit}:host{display:block}.c-data-table{--data-table-background-color: var(--dt-color-container-default);--data-table-background-hover-or-active: var(--dt-color-container-subtle);--data-table-border-color: var(--dt-color-border-default);--data-table-border-radius: var(--dt-radius-rounded-c);--data-table-text-color: var(--dt-color-content-default);background-color:var(--data-table-background-color);border:1px solid var(--data-table-border-color);border-radius:var(--data-table-border-radius);color:var(--data-table-text-color);width:100%;overflow:hidden}.c-data-table table{border-spacing:0;width:100%}.c-data-table tbody{overflow:auto}.c-data-table tbody tr:hover{background-color:var(--data-table-background-hover-or-active)}.c-data-table-head-cell{background-color:transparent;font-weight:var(--dt-font-weight-bold);color:var(--data-table-header-color);text-align:left}.c-data-table-head-cell-text-align--left,.c-data-table-cell-text-align--left{text-align:left}.c-data-table-head-cell-text-align--right,.c-data-table-cell-text-align--right{text-align:right}.c-data-table-head-cell-text-align--center,.c-data-table-cell-text-align--center{text-align:center}.c-data-table-cell,.c-data-table-head-cell{padding:var(--dt-spacing-d);border-bottom:1px solid var(--data-table-border-color)}.c-data-table-cell--hidden,.c-data-table-row--hidden{display:none}", f = {
7
- additionalRows: []
1
+ import { LitElement as b, html as d, unsafeCSS as f } from "lit";
2
+ import { RtlMixin as h, safeCustomElement as v } from "@justeattakeaway/pie-webc-core";
3
+ const e = class e extends b {
4
+ willUpdate() {
5
+ this.getAttribute("v") || this.setAttribute("v", e.v);
6
+ }
8
7
  };
9
- var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor, i = (t, a, e, d) => {
10
- for (var r = d > 1 ? void 0 : d ? x(a, e) : a, s = t.length - 1, b; s >= 0; s--)
11
- (b = t[s]) && (r = (d ? b(a, e, r) : b(r)) || r);
12
- return d && r && w(a, e, r), r;
8
+ e.v = "0.1.6";
9
+ let r = e;
10
+ const c = "*,*:after,*:before{box-sizing:inherit}:host{display:block}";
11
+ var u = Object.getOwnPropertyDescriptor, m = (i, l, p, o) => {
12
+ for (var t = o > 1 ? void 0 : o ? u(l, p) : l, s = i.length - 1, n; s >= 0; s--)
13
+ (n = i[s]) && (t = n(t) || t);
14
+ return t;
13
15
  };
14
- let o = class extends p(u) {
15
- constructor() {
16
- super(...arguments), this.columns = [], this.data = [], this.additionalRows = f.additionalRows;
17
- }
18
- /**
19
- * Maps text alignment values to corresponding CSS classes
20
- *
21
- * @param prefix - The prefix for the CSS class
22
- * @param textAlign - The text alignment value
23
- * @returns An object with CSS classes as keys and boolean values indicating whether the class should be applied
24
- */
25
- mapTextAlignClasses(t, a) {
26
- return {
27
- [`${t}-text-align--left`]: a === "left",
28
- [`${t}-text-align--right`]: a === "right",
29
- [`${t}-text-align--center`]: a === "center"
30
- };
31
- }
32
- /**
33
- * Renders a header cell for the table
34
- * @param column - The column definition to render
35
- */
36
- renderHeaderCell(t) {
37
- const { width: a, heading: e, textAlign: d } = t, r = a ? `width: ${a}` : c, s = {
38
- "c-data-table-head-cell": !0,
39
- ...this.mapTextAlignClasses("c-data-table-head-cell", d)
40
- };
41
- return l`
42
- <th style="${String(r)}" class="${n(s)}">
43
- ${e}
44
- </th>
45
- `;
46
- }
47
- /**
48
- * Renders the table header
49
- */
50
- renderTableHeader() {
51
- return l`
52
- <thead>
53
- <tr>
54
- ${this.columns.map((t) => this.renderHeaderCell(t))}
55
- </tr>
56
- </thead>
57
- `;
58
- }
59
- /**
60
- * Renders a table cell for the given column and row
61
- * @param column - The column definition to render
62
- * @param row - The data object for the current row
63
- */
64
- renderTableCell(t, a) {
65
- const e = {
66
- "c-data-table-cell": !0,
67
- ...this.mapTextAlignClasses("c-data-table-cell", t.textAlign)
68
- };
69
- return l`
70
- <td class="${n(e)}">
71
- ${t.accessor ? a[t.accessor] : ""}
72
- </td>
73
- `;
74
- }
75
- /**
76
- * Renders the table rows
77
- */
78
- renderTableRows() {
79
- return l`
80
- <tbody>
81
- ${this.data.map((t) => l`
82
- <tr class="c-data-table-row">
83
- ${this.columns.map((a) => this.renderTableCell(a, t))}
84
- </tr>
85
- `)}
86
- </tbody>
87
- `;
88
- }
89
- /**
90
- * Renders the additional rows for the table
91
- */
92
- renderAdditionalRows() {
93
- return l`
94
- <tfoot>
95
- ${this.additionalRows && this.additionalRows.length > 0 && this.additionalRows.map((t) => {
96
- const a = {
97
- "c-data-table-row": !0,
98
- "c-data-table-row--hidden": !!t.hideRow
99
- };
100
- return l`
101
- <tr class="${n(a)}">
102
- ${t.cells.map((e) => {
103
- const d = {
104
- "c-data-table-cell": !0,
105
- "c-data-table-cell--hidden": !!e.hideCell,
106
- ...this.mapTextAlignClasses("c-data-table-cell", e.textAlign)
107
- };
108
- return l`
109
- <td
110
- class="${n(d)}"
111
- colspan=${e.colSpan || 1}
112
- >
113
- ${e.content}
114
- </td>
115
- `;
116
- })}
117
- </tr>
118
- `;
119
- })}
120
- </tfoot>
121
- `;
122
- }
123
- renderHTMLTable() {
124
- return l`
125
- <table>
126
- ${this.columns.length > 0 ? this.renderTableHeader() : c}
127
- ${this.data.length > 0 ? this.renderTableRows() : c}
128
- ${this.additionalRows && this.additionalRows.length > 0 ? this.renderAdditionalRows() : c}
129
- </table>
130
- `;
131
- }
16
+ let a = class extends h(r) {
132
17
  render() {
133
- return l`
134
- <div class="${n({
135
- "c-data-table": !0
136
- })}">
137
- <slot name="table-header"></slot>
138
- ${this.data.length > 0 && this.columns.length > 0 ? this.renderHTMLTable() : l`<slot></slot>`}
139
- </div>
140
- `;
18
+ return d`<h1 data-test-id="pie-data-table">Hello world!</h1>`;
141
19
  }
142
20
  };
143
- o.styles = g(v);
144
- i([
145
- h({ type: Array })
146
- ], o.prototype, "columns", 2);
147
- i([
148
- h({ type: Array })
149
- ], o.prototype, "data", 2);
150
- i([
151
- h({ type: Array })
152
- ], o.prototype, "additionalRows", 2);
153
- o = i([
154
- m("pie-data-table")
155
- ], o);
21
+ a.styles = f(c);
22
+ a = m([
23
+ v("pie-data-table")
24
+ ], a);
156
25
  export {
157
- o as PieDataTable,
158
- f as defaultProps
26
+ a as PieDataTable
159
27
  };
package/dist/react.d.ts CHANGED
@@ -1,7 +1,25 @@
1
- import { PieDataTable as PieDataTableLit } from './index';
2
- import { DataTableProps } from './defs';
3
- import * as React from 'react';
4
- export * from './defs';
5
- type ReactBaseType = React.HTMLAttributes<HTMLElement>;
6
- export declare const PieDataTable: React.ForwardRefExoticComponent<React.PropsWithoutRef<DataTableProps> & React.RefAttributes<PieDataTableLit> & ReactBaseType>;
7
- //# sourceMappingURL=react.d.ts.map
1
+ import { CSSResult } from 'lit';
2
+ import { GenericConstructor } from '@justeattakeaway/pie-webc-core';
3
+ import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
4
+ import * as React_2 from 'react';
5
+ import { RTLInterface } from '@justeattakeaway/pie-webc-core';
6
+ import { TemplateResult } from 'lit-html';
7
+
8
+ export declare interface DataTableProps {
9
+ }
10
+
11
+ export declare const PieDataTable: React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<DataTableProps> & React_2.RefAttributes<PieDataTable_2> & ReactBaseType>;
12
+
13
+ /**
14
+ * @tagname pie-data-table
15
+ */
16
+ declare class PieDataTable_2 extends PieDataTable_base implements DataTableProps {
17
+ render(): TemplateResult<1>;
18
+ static styles: CSSResult;
19
+ }
20
+
21
+ declare const PieDataTable_base: GenericConstructor<RTLInterface> & typeof PieElement;
22
+
23
+ declare type ReactBaseType = React_2.HTMLAttributes<HTMLElement>;
24
+
25
+ export { }
package/dist/react.js CHANGED
@@ -1,15 +1,13 @@
1
1
  import * as a from "react";
2
2
  import { createComponent as e } from "@lit/react";
3
3
  import { PieDataTable as t } from "./index.js";
4
- import { defaultProps as s } from "./index.js";
5
4
  const o = e({
6
5
  displayName: "PieDataTable",
7
6
  elementClass: t,
8
7
  react: a,
9
8
  tagName: "pie-data-table",
10
9
  events: {}
11
- }), i = o;
10
+ }), l = o;
12
11
  export {
13
- i as PieDataTable,
14
- s as defaultProps
12
+ l as PieDataTable
15
13
  };
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-20251014131309",
4
+ "version": "0.0.0-snapshot-release-20251111101641",
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.22.0",
40
+ "@justeattakeaway/pie-css": "0.0.0-snapshot-release-20251111101641",
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": "2.0.0"
45
+ "@justeattakeaway/pie-webc-core": "0.0.0-snapshot-release-20251111101641"
46
46
  },
47
47
  "volta": {
48
48
  "extends": "../../../package.json"
@@ -1,66 +1,7 @@
1
1
  @use '@justeattakeaway/pie-css/scss' as p;
2
2
 
3
3
  :host {
4
+ // Note: For consistency sake, the recommended display should be either
5
+ // "block" or "inline-block", otherwise it can be ommited for floating elements
4
6
  display: block;
5
7
  }
6
-
7
- .c-data-table {
8
- --data-table-background-color: var(--dt-color-container-default);
9
- --data-table-background-hover-or-active: var(--dt-color-container-subtle);
10
- --data-table-border-color: var(--dt-color-border-default);
11
- --data-table-border-radius: var(--dt-radius-rounded-c);
12
- --data-table-text-color: var(--dt-color-content-default);
13
-
14
- background-color: var(--data-table-background-color);
15
- border: 1px solid var(--data-table-border-color);
16
- border-radius: var(--data-table-border-radius);
17
- color: var(--data-table-text-color);
18
-
19
- width: 100%;
20
- overflow: hidden;
21
-
22
- table {
23
- border-spacing: 0;
24
- width: 100%;
25
- }
26
-
27
- tbody {
28
- overflow: auto;
29
- }
30
-
31
- tbody tr:hover {
32
- background-color: var(--data-table-background-hover-or-active);
33
- }
34
- }
35
-
36
- .c-data-table-head-cell {
37
- background-color: transparent;
38
- font-weight: var(--dt-font-weight-bold);
39
- color: var(--data-table-header-color);
40
- text-align: left;
41
- }
42
-
43
- .c-data-table-head-cell-text-align--left,
44
- .c-data-table-cell-text-align--left {
45
- text-align: left;
46
- }
47
-
48
- .c-data-table-head-cell-text-align--right,
49
- .c-data-table-cell-text-align--right {
50
- text-align: right;
51
- }
52
-
53
- .c-data-table-head-cell-text-align--center,
54
- .c-data-table-cell-text-align--center {
55
- text-align: center;
56
- }
57
-
58
- .c-data-table-cell, .c-data-table-head-cell {
59
- padding: var(--dt-spacing-d);
60
- border-bottom: 1px solid var(--data-table-border-color);
61
- }
62
-
63
- .c-data-table-cell--hidden,
64
- .c-data-table-row--hidden {
65
- display: none;
66
- }
package/src/defs.ts CHANGED
@@ -1,60 +1,3 @@
1
- import { type ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
2
-
3
- type TextAlign = 'left' | 'right' | 'center';
4
-
5
- export interface Column {
6
- /**
7
- * Unique identifier for the column
8
- * */
9
- id: string;
10
- /**
11
- * Optional property to specify the display name for the column heading
12
- * */
13
- heading: string;
14
- /**
15
- * Optional property to specify the text alignment of the column
16
- * */
17
- textAlign?: TextAlign;
18
-
19
- /**
20
- * Optional property to specify the width of the column
21
- * */
22
- width?: string;
23
- /**
24
- * Optional property to specify the key in the data object to display in this column
25
- * */
26
- accessor?: string;
27
- }
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
-
41
- export interface DataTableProps {
42
- /**
43
- * Array of column definitions
44
- */
45
- columns?: Column[];
46
-
47
- /**
48
- * Array of data objects to display
49
- */
50
- data?: Record<string, unknown>[];
51
-
52
- /**
53
- * Arbitrary additional rows to display at the bottom of the table
54
- */
55
- additionalRows?: DataTableAdditionalRow[];
56
- }
57
-
58
- export const defaultProps: ComponentDefaultProps<DataTableProps, keyof Omit<DataTableProps, 'columns' | 'data' >> = {
59
- additionalRows: [],
60
- };
1
+ // TODO - please remove the eslint disable comment below when you add props to this interface
2
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
3
+ export interface DataTableProps {}
package/src/index.ts CHANGED
@@ -1,23 +1,9 @@
1
- import { html, nothing, unsafeCSS } from 'lit';
2
- import { property } from 'lit/decorators.js';
1
+ import { html, unsafeCSS } from 'lit';
3
2
  import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
4
3
  import { RtlMixin, safeCustomElement } from '@justeattakeaway/pie-webc-core';
5
- import { classMap } from 'lit/directives/class-map.js';
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
4
 
14
5
  import styles from './data-table.scss?inline';
15
- import {
16
- type DataTableProps,
17
- type Column,
18
- type DataTableAdditionalRow,
19
- defaultProps,
20
- } from './defs';
6
+ import { type DataTableProps } from './defs';
21
7
 
22
8
  // Valid values available to consumers
23
9
  export * from './defs';
@@ -29,163 +15,8 @@ const componentSelector = 'pie-data-table';
29
15
  */
30
16
  @safeCustomElement('pie-data-table')
31
17
  export class PieDataTable extends RtlMixin(PieElement) implements DataTableProps {
32
- /**
33
- * Array of column definitions
34
- */
35
- @property({ type: Array })
36
- public columns: Column[] = [];
37
-
38
- /**
39
- * Array of data objects to display
40
- */
41
- @property({ type: Array })
42
- public data: Record<string, unknown>[] = [];
43
-
44
- /**
45
- * Arbitrary additional rows to display at the bottom of the table
46
- */
47
- @property({ type: Array })
48
- public additionalRows?: DataTableAdditionalRow[] = defaultProps.additionalRows;
49
-
50
- /**
51
- * Maps text alignment values to corresponding CSS classes
52
- *
53
- * @param prefix - The prefix for the CSS class
54
- * @param textAlign - The text alignment value
55
- * @returns An object with CSS classes as keys and boolean values indicating whether the class should be applied
56
- */
57
- private mapTextAlignClasses (prefix: string, textAlign?: string) {
58
- return {
59
- [`${prefix}-text-align--left`]: textAlign === 'left',
60
- [`${prefix}-text-align--right`]: textAlign === 'right',
61
- [`${prefix}-text-align--center`]: textAlign === 'center',
62
- };
63
- }
64
-
65
- /**
66
- * Renders a header cell for the table
67
- * @param column - The column definition to render
68
- */
69
- private renderHeaderCell (column: Column) {
70
- const { width, heading, textAlign } = column;
71
- const style = width ? `width: ${width}` : nothing;
72
- const classes = {
73
- 'c-data-table-head-cell': true,
74
- ...this.mapTextAlignClasses('c-data-table-head-cell', textAlign),
75
- };
76
-
77
- return html`
78
- <th style="${String(style)}" class="${classMap(classes)}">
79
- ${heading}
80
- </th>
81
- `;
82
- }
83
-
84
- /**
85
- * Renders the table header
86
- */
87
- private renderTableHeader () {
88
- return html`
89
- <thead>
90
- <tr>
91
- ${this.columns.map((column) => this.renderHeaderCell(column))}
92
- </tr>
93
- </thead>
94
- `;
95
- }
96
-
97
- /**
98
- * Renders a table cell for the given column and row
99
- * @param column - The column definition to render
100
- * @param row - The data object for the current row
101
- */
102
- private renderTableCell (column: Column, row: Record<string, unknown>) {
103
- const classes = {
104
- 'c-data-table-cell': true,
105
- ...this.mapTextAlignClasses('c-data-table-cell', column.textAlign),
106
- };
107
-
108
- return html`
109
- <td class="${classMap(classes)}">
110
- ${column.accessor ? row[column.accessor] : ''}
111
- </td>
112
- `;
113
- }
114
-
115
- /**
116
- * Renders the table rows
117
- */
118
- private renderTableRows () {
119
- return html`
120
- <tbody>
121
- ${this.data.map((row) => html`
122
- <tr class="c-data-table-row">
123
- ${this.columns.map((column) => this.renderTableCell(column, row))}
124
- </tr>
125
- `)}
126
- </tbody>
127
- `;
128
- }
129
-
130
- /**
131
- * Renders the additional rows for the table
132
- */
133
- private renderAdditionalRows () {
134
- /* eslint-disable indent */
135
- return html`
136
- <tfoot>
137
- ${this.additionalRows && this.additionalRows.length > 0 && this.additionalRows.map((row) => {
138
- const rowClasses = {
139
- 'c-data-table-row': true,
140
- 'c-data-table-row--hidden': !!row.hideRow,
141
- };
142
- return html`
143
- <tr class="${classMap(rowClasses)}">
144
- ${row.cells.map((cell) => {
145
- const cellClasses = {
146
- 'c-data-table-cell': true,
147
- 'c-data-table-cell--hidden': !!cell.hideCell,
148
- ...this.mapTextAlignClasses('c-data-table-cell', cell.textAlign),
149
- };
150
-
151
- return html`
152
- <td
153
- class="${classMap(cellClasses)}"
154
- colspan=${cell.colSpan || 1}
155
- >
156
- ${cell.content}
157
- </td>
158
- `;
159
- })}
160
- </tr>
161
- `;
162
- })}
163
- </tfoot>
164
- `;
165
- /* eslint-enable indent */
166
- }
167
-
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
- `;
176
- }
177
-
178
18
  render () {
179
- const classes = {
180
- 'c-data-table': true,
181
- };
182
-
183
- return html`
184
- <div class="${classMap(classes)}">
185
- <slot name="table-header"></slot>
186
- ${this.data.length > 0 && this.columns.length > 0 ? this.renderHTMLTable() : html`<slot></slot>`}
187
- </div>
188
- `;
19
+ return html`<h1 data-test-id="pie-data-table">Hello world!</h1>`;
189
20
  }
190
21
 
191
22
  // Renders a `CSSResult` generated from SCSS by Vite
@@ -1,11 +0,0 @@
1
- import { LitElement as i } from "lit";
2
- const t = class t extends i {
3
- willUpdate() {
4
- this.getAttribute("v") || this.setAttribute("v", t.v);
5
- }
6
- };
7
- t.v = "0.1.2";
8
- let s = t;
9
- export {
10
- s as P
11
- };