@redvars/peacock 3.8.4 → 3.8.5
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.
- package/dist/accordion-item.js +28 -38
- package/dist/accordion-item.js.map +1 -1
- package/dist/accordion.js +8 -0
- package/dist/accordion.js.map +1 -1
- package/dist/button.js +17 -17
- package/dist/button.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +27 -18
- package/dist/custom-elements.json +38 -38
- package/dist/pagination.js +15 -10
- package/dist/pagination.js.map +1 -1
- package/dist/src/accordion/accordion-item.d.ts +0 -6
- package/dist/src/accordion/accordion.d.ts +5 -0
- package/dist/src/button/button/button.d.ts +16 -16
- package/dist/table.js +4 -9
- package/dist/table.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/readme.md +2 -2
- package/src/accordion/accordion-item.scss +34 -12
- package/src/accordion/accordion-item.ts +27 -38
- package/src/accordion/accordion.ts +7 -0
- package/src/button/button/button.ts +17 -17
- package/src/pagination/pagination.scss +15 -10
- package/src/table/table.scss +3 -9
- package/src/table/table.ts +1 -1
|
@@ -2058,67 +2058,67 @@
|
|
|
2058
2058
|
"cssProperties": [
|
|
2059
2059
|
{
|
|
2060
2060
|
"description": "Defines the border radius of the button container shape.",
|
|
2061
|
-
"name": "--button-container-shape
|
|
2061
|
+
"name": "--button-container-shape"
|
|
2062
2062
|
},
|
|
2063
2063
|
{
|
|
2064
2064
|
"description": "Defines the start position of the button container shape.",
|
|
2065
|
-
"name": "--button-container-shape-start-start
|
|
2065
|
+
"name": "--button-container-shape-start-start"
|
|
2066
2066
|
},
|
|
2067
2067
|
{
|
|
2068
2068
|
"description": "Defines the end position of the button container shape.",
|
|
2069
|
-
"name": "--button-container-shape-start-end
|
|
2069
|
+
"name": "--button-container-shape-start-end"
|
|
2070
2070
|
},
|
|
2071
2071
|
{
|
|
2072
2072
|
"description": "Defines the start position of the button container shape.",
|
|
2073
|
-
"name": "--button-container-shape-end-start
|
|
2073
|
+
"name": "--button-container-shape-end-start"
|
|
2074
2074
|
},
|
|
2075
2075
|
{
|
|
2076
2076
|
"description": "Defines the end position of the button container shape.",
|
|
2077
|
-
"name": "--button-container-shape-end-end
|
|
2077
|
+
"name": "--button-container-shape-end-end"
|
|
2078
2078
|
},
|
|
2079
2079
|
{
|
|
2080
2080
|
"description": "Color of the filled button container.",
|
|
2081
|
-
"name": "--filled-button-container-color
|
|
2081
|
+
"name": "--filled-button-container-color"
|
|
2082
2082
|
},
|
|
2083
2083
|
{
|
|
2084
2084
|
"description": "Text color of the filled button label.",
|
|
2085
|
-
"name": "--filled-button-label-text-color
|
|
2085
|
+
"name": "--filled-button-label-text-color"
|
|
2086
2086
|
},
|
|
2087
2087
|
{
|
|
2088
2088
|
"description": "Color of the outlined button container.",
|
|
2089
|
-
"name": "--outlined-button-container-color
|
|
2089
|
+
"name": "--outlined-button-container-color"
|
|
2090
2090
|
},
|
|
2091
2091
|
{
|
|
2092
2092
|
"description": "Text color of the outlined button label.",
|
|
2093
|
-
"name": "--outlined-button-label-text-color
|
|
2093
|
+
"name": "--outlined-button-label-text-color"
|
|
2094
2094
|
},
|
|
2095
2095
|
{
|
|
2096
2096
|
"description": "Text color of the text button label.",
|
|
2097
|
-
"name": "--text-button-label-text-color
|
|
2097
|
+
"name": "--text-button-label-text-color"
|
|
2098
2098
|
},
|
|
2099
2099
|
{
|
|
2100
2100
|
"description": "Color of the tonal button container.",
|
|
2101
|
-
"name": "--tonal-button-container-color
|
|
2101
|
+
"name": "--tonal-button-container-color"
|
|
2102
2102
|
},
|
|
2103
2103
|
{
|
|
2104
2104
|
"description": "Text color of the tonal button label.",
|
|
2105
|
-
"name": "--tonal-button-label-text-color
|
|
2105
|
+
"name": "--tonal-button-label-text-color"
|
|
2106
2106
|
},
|
|
2107
2107
|
{
|
|
2108
2108
|
"description": "Color of the elevated button container.",
|
|
2109
|
-
"name": "--elevated-button-container-color
|
|
2109
|
+
"name": "--elevated-button-container-color"
|
|
2110
2110
|
},
|
|
2111
2111
|
{
|
|
2112
2112
|
"description": "Text color of the elevated button label.",
|
|
2113
|
-
"name": "--elevated-button-label-text-color
|
|
2113
|
+
"name": "--elevated-button-label-text-color"
|
|
2114
2114
|
},
|
|
2115
2115
|
{
|
|
2116
2116
|
"description": "Color of the neo button container.",
|
|
2117
|
-
"name": "--neo-button-container-color
|
|
2117
|
+
"name": "--neo-button-container-color"
|
|
2118
2118
|
},
|
|
2119
2119
|
{
|
|
2120
2120
|
"description": "Text color of the neo button label.",
|
|
2121
|
-
"name": "--neo-button-label-text-color
|
|
2121
|
+
"name": "--neo-button-label-text-color"
|
|
2122
2122
|
}
|
|
2123
2123
|
],
|
|
2124
2124
|
"members": [
|
|
@@ -2137,7 +2137,7 @@
|
|
|
2137
2137
|
"type": {
|
|
2138
2138
|
"text": "boolean"
|
|
2139
2139
|
},
|
|
2140
|
-
"default": "
|
|
2140
|
+
"default": "false",
|
|
2141
2141
|
"description": "When `true` (default), the icon is placed after the label (trailing).\nWhen `false`, the icon is placed before the label (leading).",
|
|
2142
2142
|
"attribute": "trailing-icon",
|
|
2143
2143
|
"reflects": true
|
|
@@ -2642,7 +2642,7 @@
|
|
|
2642
2642
|
"type": {
|
|
2643
2643
|
"text": "boolean"
|
|
2644
2644
|
},
|
|
2645
|
-
"default": "
|
|
2645
|
+
"default": "false",
|
|
2646
2646
|
"description": "When `true` (default), the icon is placed after the label (trailing).\nWhen `false`, the icon is placed before the label (leading).",
|
|
2647
2647
|
"fieldName": "trailingIcon"
|
|
2648
2648
|
},
|
|
@@ -6396,17 +6396,6 @@
|
|
|
6396
6396
|
"attribute": "hide-toggle",
|
|
6397
6397
|
"reflects": true
|
|
6398
6398
|
},
|
|
6399
|
-
{
|
|
6400
|
-
"kind": "field",
|
|
6401
|
-
"name": "togglePosition",
|
|
6402
|
-
"type": {
|
|
6403
|
-
"text": "'before' | 'after'"
|
|
6404
|
-
},
|
|
6405
|
-
"default": "'after'",
|
|
6406
|
-
"description": "Position of the toggle icon relative to the panel title.\n`'after'` places it at the trailing end (default, matches M3).\n`'before'` places it at the leading start.",
|
|
6407
|
-
"attribute": "toggle-position",
|
|
6408
|
-
"reflects": true
|
|
6409
|
-
},
|
|
6410
6399
|
{
|
|
6411
6400
|
"kind": "field",
|
|
6412
6401
|
"name": "_hasDescriptionSlot",
|
|
@@ -6511,15 +6500,6 @@
|
|
|
6511
6500
|
"default": "false",
|
|
6512
6501
|
"description": "Whether to hide the expand/collapse toggle indicator icon.",
|
|
6513
6502
|
"fieldName": "hideToggle"
|
|
6514
|
-
},
|
|
6515
|
-
{
|
|
6516
|
-
"name": "toggle-position",
|
|
6517
|
-
"type": {
|
|
6518
|
-
"text": "'before' | 'after'"
|
|
6519
|
-
},
|
|
6520
|
-
"default": "'after'",
|
|
6521
|
-
"description": "Position of the toggle icon relative to the panel title.\n`'after'` places it at the trailing end (default, matches M3).\n`'before'` places it at the leading start.",
|
|
6522
|
-
"fieldName": "togglePosition"
|
|
6523
6503
|
}
|
|
6524
6504
|
],
|
|
6525
6505
|
"superclass": {
|
|
@@ -6577,6 +6557,17 @@
|
|
|
6577
6557
|
"attribute": "variant",
|
|
6578
6558
|
"reflects": true
|
|
6579
6559
|
},
|
|
6560
|
+
{
|
|
6561
|
+
"kind": "field",
|
|
6562
|
+
"name": "leadingToggle",
|
|
6563
|
+
"type": {
|
|
6564
|
+
"text": "boolean"
|
|
6565
|
+
},
|
|
6566
|
+
"default": "false",
|
|
6567
|
+
"description": "When `true`, the toggle icon is placed at the leading start of the header.\nWhen `false` (default), the icon is placed at the trailing end.",
|
|
6568
|
+
"attribute": "leading-toggle",
|
|
6569
|
+
"reflects": true
|
|
6570
|
+
},
|
|
6580
6571
|
{
|
|
6581
6572
|
"kind": "field",
|
|
6582
6573
|
"name": "items",
|
|
@@ -6635,6 +6626,15 @@
|
|
|
6635
6626
|
"default": "'default'",
|
|
6636
6627
|
"description": "Variant for the accordion.\n`'default'` renders panels with a subtle background on expand and dividers between items.\n`'flat'` renders panels without borders or background changes — suitable for use inside cards.",
|
|
6637
6628
|
"fieldName": "variant"
|
|
6629
|
+
},
|
|
6630
|
+
{
|
|
6631
|
+
"name": "leading-toggle",
|
|
6632
|
+
"type": {
|
|
6633
|
+
"text": "boolean"
|
|
6634
|
+
},
|
|
6635
|
+
"default": "false",
|
|
6636
|
+
"description": "When `true`, the toggle icon is placed at the leading start of the header.\nWhen `false` (default), the icon is placed at the trailing end.",
|
|
6637
|
+
"fieldName": "leadingToggle"
|
|
6638
6638
|
}
|
|
6639
6639
|
],
|
|
6640
6640
|
"superclass": {
|
package/dist/pagination.js
CHANGED
|
@@ -16,21 +16,24 @@ var css_248z = i`* {
|
|
|
16
16
|
|
|
17
17
|
:host {
|
|
18
18
|
display: block;
|
|
19
|
+
container-type: inline-size;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
.pagination {
|
|
22
23
|
display: flex;
|
|
23
24
|
align-items: center;
|
|
24
|
-
justify-content:
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
flex-wrap: wrap;
|
|
25
27
|
gap: var(--spacing-200, 1rem);
|
|
28
|
+
row-gap: var(--spacing-100, 0.5rem);
|
|
26
29
|
background: var(--color-surface, #fff);
|
|
27
30
|
padding: var(--spacing-150, 0.75rem) var(--spacing-200, 1rem);
|
|
28
31
|
}
|
|
29
|
-
@
|
|
32
|
+
@container (min-width: 48rem) {
|
|
30
33
|
.pagination {
|
|
31
|
-
flex-wrap:
|
|
32
|
-
justify-content:
|
|
33
|
-
row-gap:
|
|
34
|
+
flex-wrap: nowrap;
|
|
35
|
+
justify-content: flex-end;
|
|
36
|
+
row-gap: 0;
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
.pagination .page-size {
|
|
@@ -54,15 +57,17 @@ var css_248z = i`* {
|
|
|
54
57
|
--field-container-height: 2.5rem;
|
|
55
58
|
}
|
|
56
59
|
.pagination .pagination-item-count {
|
|
57
|
-
|
|
60
|
+
order: 3;
|
|
61
|
+
margin-inline-start: 0;
|
|
62
|
+
inline-size: 100%;
|
|
58
63
|
display: flex;
|
|
59
64
|
align-items: center;
|
|
60
65
|
}
|
|
61
|
-
@
|
|
66
|
+
@container (min-width: 48rem) {
|
|
62
67
|
.pagination .pagination-item-count {
|
|
63
|
-
order:
|
|
64
|
-
margin-inline-start:
|
|
65
|
-
inline-size:
|
|
68
|
+
order: 0;
|
|
69
|
+
margin-inline-start: auto;
|
|
70
|
+
inline-size: auto;
|
|
66
71
|
}
|
|
67
72
|
}
|
|
68
73
|
.pagination .pagination-text {
|
package/dist/pagination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sources":["../../src/pagination/pagination.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './pagination.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_PAGE_SIZES = [10, 25, 50, 100];\n\n/**\n * @label Pagination\n * @tag wc-pagination\n * @rawTag pagination\n * @summary A pagination control with page size selector, item count display, and previous/next navigation.\n * @overview\n * <p>The pagination component provides controls for navigating through paged data sets.</p>\n *\n * @fires {CustomEvent} page - Dispatched when the page or page size changes. Detail: `{ page, pageSize }`.\n *\n * @example\n * ```html\n * <wc-pagination style=\"width: 100%;\" page=\"1\" page-size=\"10\" total-items=\"100\"></wc-pagination>\n * ```\n * @tags navigation, data\n */\n@IndividualComponent\nexport class Pagination extends LitElement {\n static styles = [styles];\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items.\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number = 0;\n\n /**\n * Supported page size options.\n */\n @property({ type: Array, attribute: 'page-sizes' })\n pageSizes: number[] = DEFAULT_PAGE_SIZES;\n\n protected override willUpdate(\n changedProperties: PropertyValues<Pagination>,\n ): void {\n // Normalize page-size options so the select always has valid numeric values.\n const normalizedPageSizes = [...new Set(\n this.pageSizes\n .map(size => Number(size))\n .filter(size => Number.isFinite(size) && size > 0)\n .map(size => Math.trunc(size)),\n )];\n\n if (!normalizedPageSizes.length) {\n normalizedPageSizes.push(...DEFAULT_PAGE_SIZES);\n }\n\n if (\n changedProperties.has('pageSizes') &&\n (this.pageSizes.length !== normalizedPageSizes.length ||\n this.pageSizes.some((size, index) => size !== normalizedPageSizes[index]))\n ) {\n this.pageSizes = normalizedPageSizes;\n }\n\n if (!this.pageSizes.includes(this.pageSize)) {\n this.pageSize = this.pageSizes[0] ?? DEFAULT_PAGE_SIZES[0];\n }\n\n if (!Number.isFinite(this.totalItems) || this.totalItems < 0) {\n this.totalItems = 0;\n }\n\n if (!Number.isFinite(this.page) || this.page < 1) {\n this.page = 1;\n }\n\n const maxPage = this.getTotalPages();\n if (this.page > maxPage) {\n this.page = maxPage;\n }\n }\n\n private getTotalPages(): number {\n if (this.totalItems <= 0) return 1;\n return Math.max(1, Math.ceil(this.totalItems / this.pageSize));\n }\n\n private setPage(nextPage: number) {\n const clampedPage = Math.min(Math.max(1, nextPage), this.getTotalPages());\n if (clampedPage === this.page) return;\n this.page = clampedPage;\n this.dispatchPageEvent();\n }\n\n private handlePageSizeChange(event: CustomEvent<{ value?: string }>) {\n const rawValue = event.detail?.value;\n const parsedPageSize = Number.parseInt(rawValue ?? '', 10);\n\n if (!Number.isFinite(parsedPageSize) || parsedPageSize <= 0) {\n return;\n }\n\n this.pageSize = parsedPageSize;\n this.page = 1;\n this.dispatchPageEvent();\n }\n\n private handlePreviousPage = () => {\n this.setPage(this.page - 1);\n };\n\n private handleNextPage = () => {\n this.setPage(this.page + 1);\n };\n\n private dispatchPageEvent() {\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n const startItem = this.totalItems === 0 ? 0 : this.pageSize * (this.page - 1) + 1;\n const endItem = Math.min(this.pageSize * this.page, this.totalItems);\n const isFirstPage = this.page === 1;\n const isLastPage = this.pageSize * this.page >= this.totalItems;\n\n return html`\n <div class=\"pagination\">\n <div class=\"page-size\">\n <span class=\"page-size-label\">Items per page:</span>\n <wc-select\n class=\"page-size-select\"\n .value=${String(this.pageSize)}\n aria-label=\"Items per page\"\n @change=${this.handlePageSizeChange}\n >\n ${this.pageSizes.map(\n size => html`<wc-option value=${String(size)}>${size}</wc-option>`,\n )}\n </wc-select>\n </div>\n\n <div class=\"pagination-item-count\">\n <span class=\"pagination-text\">\n ${startItem} - ${endItem} of ${this.totalItems}\n </span>\n </div>\n\n <div class=\"pagination-actions\">\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Previous page\"\n ?disabled=${isFirstPage}\n @click=${this.handlePreviousPage}\n >\n <wc-icon name=\"keyboard_arrow_left\"></wc-icon>\n </wc-icon-button>\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Next page\"\n ?disabled=${isLastPage}\n @click=${this.handleNextPage}\n >\n <wc-icon name=\"keyboard_arrow_right\"></wc-icon>\n </wc-icon-button>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pagination.js","sources":["../../src/pagination/pagination.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './pagination.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_PAGE_SIZES = [10, 25, 50, 100];\n\n/**\n * @label Pagination\n * @tag wc-pagination\n * @rawTag pagination\n * @summary A pagination control with page size selector, item count display, and previous/next navigation.\n * @overview\n * <p>The pagination component provides controls for navigating through paged data sets.</p>\n *\n * @fires {CustomEvent} page - Dispatched when the page or page size changes. Detail: `{ page, pageSize }`.\n *\n * @example\n * ```html\n * <wc-pagination style=\"width: 100%;\" page=\"1\" page-size=\"10\" total-items=\"100\"></wc-pagination>\n * ```\n * @tags navigation, data\n */\n@IndividualComponent\nexport class Pagination extends LitElement {\n static styles = [styles];\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items.\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number = 0;\n\n /**\n * Supported page size options.\n */\n @property({ type: Array, attribute: 'page-sizes' })\n pageSizes: number[] = DEFAULT_PAGE_SIZES;\n\n protected override willUpdate(\n changedProperties: PropertyValues<Pagination>,\n ): void {\n // Normalize page-size options so the select always has valid numeric values.\n const normalizedPageSizes = [...new Set(\n this.pageSizes\n .map(size => Number(size))\n .filter(size => Number.isFinite(size) && size > 0)\n .map(size => Math.trunc(size)),\n )];\n\n if (!normalizedPageSizes.length) {\n normalizedPageSizes.push(...DEFAULT_PAGE_SIZES);\n }\n\n if (\n changedProperties.has('pageSizes') &&\n (this.pageSizes.length !== normalizedPageSizes.length ||\n this.pageSizes.some((size, index) => size !== normalizedPageSizes[index]))\n ) {\n this.pageSizes = normalizedPageSizes;\n }\n\n if (!this.pageSizes.includes(this.pageSize)) {\n this.pageSize = this.pageSizes[0] ?? DEFAULT_PAGE_SIZES[0];\n }\n\n if (!Number.isFinite(this.totalItems) || this.totalItems < 0) {\n this.totalItems = 0;\n }\n\n if (!Number.isFinite(this.page) || this.page < 1) {\n this.page = 1;\n }\n\n const maxPage = this.getTotalPages();\n if (this.page > maxPage) {\n this.page = maxPage;\n }\n }\n\n private getTotalPages(): number {\n if (this.totalItems <= 0) return 1;\n return Math.max(1, Math.ceil(this.totalItems / this.pageSize));\n }\n\n private setPage(nextPage: number) {\n const clampedPage = Math.min(Math.max(1, nextPage), this.getTotalPages());\n if (clampedPage === this.page) return;\n this.page = clampedPage;\n this.dispatchPageEvent();\n }\n\n private handlePageSizeChange(event: CustomEvent<{ value?: string }>) {\n const rawValue = event.detail?.value;\n const parsedPageSize = Number.parseInt(rawValue ?? '', 10);\n\n if (!Number.isFinite(parsedPageSize) || parsedPageSize <= 0) {\n return;\n }\n\n this.pageSize = parsedPageSize;\n this.page = 1;\n this.dispatchPageEvent();\n }\n\n private handlePreviousPage = () => {\n this.setPage(this.page - 1);\n };\n\n private handleNextPage = () => {\n this.setPage(this.page + 1);\n };\n\n private dispatchPageEvent() {\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n const startItem = this.totalItems === 0 ? 0 : this.pageSize * (this.page - 1) + 1;\n const endItem = Math.min(this.pageSize * this.page, this.totalItems);\n const isFirstPage = this.page === 1;\n const isLastPage = this.pageSize * this.page >= this.totalItems;\n\n return html`\n <div class=\"pagination\">\n <div class=\"page-size\">\n <span class=\"page-size-label\">Items per page:</span>\n <wc-select\n class=\"page-size-select\"\n .value=${String(this.pageSize)}\n aria-label=\"Items per page\"\n @change=${this.handlePageSizeChange}\n >\n ${this.pageSizes.map(\n size => html`<wc-option value=${String(size)}>${size}</wc-option>`,\n )}\n </wc-select>\n </div>\n\n <div class=\"pagination-item-count\">\n <span class=\"pagination-text\">\n ${startItem} - ${endItem} of ${this.totalItems}\n </span>\n </div>\n\n <div class=\"pagination-actions\">\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Previous page\"\n ?disabled=${isFirstPage}\n @click=${this.handlePreviousPage}\n >\n <wc-icon name=\"keyboard_arrow_left\"></wc-icon>\n </wc-icon-button>\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Next page\"\n ?disabled=${isLastPage}\n @click=${this.handleNextPage}\n >\n <wc-icon name=\"keyboard_arrow_right\"></wc-icon>\n </wc-icon-button>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":"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"}
|
|
@@ -42,12 +42,6 @@ export declare class AccordionItem extends LitElement {
|
|
|
42
42
|
* Whether to hide the expand/collapse toggle indicator icon.
|
|
43
43
|
*/
|
|
44
44
|
hideToggle: boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Position of the toggle icon relative to the panel title.
|
|
47
|
-
* `'after'` places it at the trailing end (default, matches M3).
|
|
48
|
-
* `'before'` places it at the leading start.
|
|
49
|
-
*/
|
|
50
|
-
togglePosition: 'before' | 'after';
|
|
51
45
|
/** True when the `description` slot contains at least one non-empty node. */
|
|
52
46
|
private _hasDescriptionSlot;
|
|
53
47
|
/** True when the `heading` slot contains at least one non-empty node. */
|
|
@@ -35,6 +35,11 @@ export declare class Accordion extends LitElement {
|
|
|
35
35
|
* `'flat'` renders panels without borders or background changes — suitable for use inside cards.
|
|
36
36
|
*/
|
|
37
37
|
variant: 'default' | 'flat';
|
|
38
|
+
/**
|
|
39
|
+
* When `true`, the toggle icon is placed at the leading start of the header.
|
|
40
|
+
* When `false` (default), the icon is placed at the trailing end.
|
|
41
|
+
*/
|
|
42
|
+
leadingToggle: boolean;
|
|
38
43
|
items: Array<AccordionItem>;
|
|
39
44
|
connectedCallback(): void;
|
|
40
45
|
disconnectedCallback(): void;
|
|
@@ -11,30 +11,30 @@ declare const Button_base: import("../../__internal/mixins/mixin.js").MixinRetur
|
|
|
11
11
|
* @overview
|
|
12
12
|
* <p>Buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. Button labels express what action will occur when the user interacts with it.</p>
|
|
13
13
|
*
|
|
14
|
-
* @cssprop --button-container-shape
|
|
14
|
+
* @cssprop --button-container-shape - Defines the border radius of the button container shape.
|
|
15
15
|
*
|
|
16
|
-
* @cssprop --button-container-shape-start-start
|
|
17
|
-
* @cssprop --button-container-shape-start-end
|
|
18
|
-
* @cssprop --button-container-shape-end-start
|
|
19
|
-
* @cssprop --button-container-shape-end-end
|
|
16
|
+
* @cssprop --button-container-shape-start-start - Defines the start position of the button container shape.
|
|
17
|
+
* @cssprop --button-container-shape-start-end - Defines the end position of the button container shape.
|
|
18
|
+
* @cssprop --button-container-shape-end-start - Defines the start position of the button container shape.
|
|
19
|
+
* @cssprop --button-container-shape-end-end - Defines the end position of the button container shape.
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
|
-
* @cssprop --filled-button-container-color
|
|
23
|
-
* @cssprop --filled-button-label-text-color
|
|
22
|
+
* @cssprop --filled-button-container-color - Color of the filled button container.
|
|
23
|
+
* @cssprop --filled-button-label-text-color - Text color of the filled button label.
|
|
24
24
|
*
|
|
25
|
-
* @cssprop --outlined-button-container-color
|
|
26
|
-
* @cssprop --outlined-button-label-text-color
|
|
25
|
+
* @cssprop --outlined-button-container-color - Color of the outlined button container.
|
|
26
|
+
* @cssprop --outlined-button-label-text-color - Text color of the outlined button label.
|
|
27
27
|
*
|
|
28
|
-
* @cssprop --text-button-label-text-color
|
|
28
|
+
* @cssprop --text-button-label-text-color - Text color of the text button label.
|
|
29
29
|
*
|
|
30
|
-
* @cssprop --tonal-button-container-color
|
|
31
|
-
* @cssprop --tonal-button-label-text-color
|
|
30
|
+
* @cssprop --tonal-button-container-color - Color of the tonal button container.
|
|
31
|
+
* @cssprop --tonal-button-label-text-color - Text color of the tonal button label.
|
|
32
32
|
*
|
|
33
|
-
* @cssprop --elevated-button-container-color
|
|
34
|
-
* @cssprop --elevated-button-label-text-color
|
|
33
|
+
* @cssprop --elevated-button-container-color - Color of the elevated button container.
|
|
34
|
+
* @cssprop --elevated-button-label-text-color - Text color of the elevated button label.
|
|
35
35
|
*
|
|
36
|
-
* @cssprop --neo-button-container-color
|
|
37
|
-
* @cssprop --neo-button-label-text-color
|
|
36
|
+
* @cssprop --neo-button-container-color - Color of the neo button container.
|
|
37
|
+
* @cssprop --neo-button-label-text-color - Text color of the neo button label.
|
|
38
38
|
*
|
|
39
39
|
* @fires {MouseEvent} click - Dispatched when the button is clicked.
|
|
40
40
|
*
|
package/dist/table.js
CHANGED
|
@@ -25,7 +25,8 @@ var css_248z = i`* {
|
|
|
25
25
|
min-height: 20em;
|
|
26
26
|
--table-border-color: var(--color-outline-variant);
|
|
27
27
|
--table-border: 1px solid var(--table-border-color);
|
|
28
|
-
--table-col-content-padding: var(--spacing-150, 0.75rem)
|
|
28
|
+
--table-col-content-padding: var(--spacing-150, 0.75rem)
|
|
29
|
+
var(--spacing-200, 1rem);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
.table {
|
|
@@ -96,10 +97,7 @@ var css_248z = i`* {
|
|
|
96
97
|
width: 100%;
|
|
97
98
|
}
|
|
98
99
|
.row .col .col-content .col-action {
|
|
99
|
-
--button-
|
|
100
|
-
}
|
|
101
|
-
.row .col .col-content .col-action.has-focus {
|
|
102
|
-
z-index: 12;
|
|
100
|
+
--button-container-shape: 0;
|
|
103
101
|
}
|
|
104
102
|
.row .col .col-content .checkbox {
|
|
105
103
|
padding: 0 var(--spacing-100, 0.5rem);
|
|
@@ -113,14 +111,12 @@ var css_248z = i`* {
|
|
|
113
111
|
.row .fixed-columns {
|
|
114
112
|
position: sticky;
|
|
115
113
|
left: 0;
|
|
116
|
-
z-index: 1;
|
|
117
114
|
}
|
|
118
115
|
.row .scrollable-columns {
|
|
119
116
|
flex: 0 0 auto;
|
|
120
117
|
}
|
|
121
118
|
|
|
122
119
|
.header {
|
|
123
|
-
z-index: 2;
|
|
124
120
|
position: sticky;
|
|
125
121
|
top: 0;
|
|
126
122
|
font-family: var(--typography-label-medium-font-family);
|
|
@@ -154,7 +150,6 @@ var css_248z = i`* {
|
|
|
154
150
|
.body .row .col:focus {
|
|
155
151
|
outline: none;
|
|
156
152
|
border-bottom-color: var(--color-primary);
|
|
157
|
-
z-index: 1;
|
|
158
153
|
}
|
|
159
154
|
.body .row .col:focus .col-content {
|
|
160
155
|
border-color: var(--color-primary);
|
|
@@ -324,7 +319,7 @@ let Table = class Table extends i$1 {
|
|
|
324
319
|
? 'keyboard_arrow_up'
|
|
325
320
|
: 'keyboard_arrow_down';
|
|
326
321
|
}
|
|
327
|
-
return '';
|
|
322
|
+
return 'unfold_more';
|
|
328
323
|
}
|
|
329
324
|
onSortClick(col) {
|
|
330
325
|
if (this.sortBy === col.name) {
|
package/dist/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../src/table/table.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { throttle } from '@/__internal/utils/throttle.js';\n\nimport styles from './table.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_CELL_WIDTH = 16; // in rem\n\nexport interface TableColumn {\n name: string;\n label: string;\n width?: number;\n fixed?: boolean;\n template?: (row: any, column: TableColumn) => string;\n}\n\n/**\n * @label Table\n * @tag wc-table\n * @rawTag table\n * @summary A configurable component for displaying tabular data.\n * @overview\n * <p>The table component displays rows of data with support for sorting, pagination, row selection, and fixed columns.</p>\n *\n * @fires {CustomEvent} cell-click - Dispatched when a table cell is clicked.\n * @fires {CustomEvent} selection-change - Dispatched when the row selection changes.\n * @fires {CustomEvent} sort - Dispatched when the table is sorted.\n * @fires {CustomEvent} page - Dispatched when the page or page size changes.\n *\n * @example\n * ```html\n * <wc-table columns=\"[{'name': 'name','label': 'Name','width': 16},{'name': 'age','label': 'Age','width': 7}]\" data=\"[{'name': 'John','age': 30},{'name': 'Jane','age': 25}]\"></wc-table>\n * ```\n * @tags display, data\n */\n@IndividualComponent\nexport class Table extends LitElement {\n static styles = [styles];\n\n /**\n * Grid columns configuration.\n * Each column can have: name, label, width (px), fixed (boolean), template (function).\n */\n @property({ type: Array })\n columns: TableColumn[] = [];\n\n /**\n * Grid data to display on table.\n */\n @property({ type: Array })\n data: any[] = [];\n\n /**\n * Row selection type. Set to `\"checkbox\"` to enable checkbox selection.\n */\n @property({ type: String, attribute: 'selection-type' })\n selectionType: 'checkbox' | undefined;\n\n /**\n * Array of selected row key values.\n */\n @property({ type: Array, attribute: 'selected-row-keys' })\n selectedRowKeys: string[] = [];\n\n /**\n * The field name used as the unique key for each row. Defaults to `\"id\"`.\n */\n @property({ type: String, attribute: 'key-field' })\n keyField: string = 'id';\n\n /**\n * If true, sorting and pagination are managed externally (controlled mode).\n */\n @property({ type: Boolean })\n managed: boolean = false;\n\n /**\n * If true, columns are sortable. Defaults to `true`.\n */\n @property({ type: Boolean })\n sortable: boolean = true;\n\n /**\n * The field name currently used for sorting.\n */\n @property({ type: String, attribute: 'sort-by' })\n sortBy: string = '';\n\n /**\n * The current sort order. Possible values are `\"asc\"` and `\"desc\"`. Defaults to `\"asc\"`.\n */\n @property({ type: String, attribute: 'sort-order' })\n sortOrder: 'asc' | 'desc' = 'asc';\n\n /**\n * If true, pagination is enabled. Defaults to `true`.\n */\n @property({ type: Boolean })\n paginate: boolean = false;\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items (used in managed/controlled mode).\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number | undefined;\n\n /**\n * Headline text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-headline' })\n emptyStateHeadline: string = 'No items';\n\n /**\n * Description text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-description' })\n emptyStateDescription: string = 'There are no items to display';\n\n /** Tracks the currently hovered row and column for hover-highlight CSS. */\n @state()\n private hoveredCell: { row?: any; column?: any } = {};\n\n /** True when all rows on the current page are selected. */\n @state()\n private isSelectAll: boolean = false;\n\n /** True when some (but not all) rows on the current page are selected. */\n @state()\n private isSelectAllIntermediate: boolean = false;\n\n /** True when the scroll container has been scrolled horizontally. */\n @state()\n private isHorizontallyScrolled: boolean = false;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** Throttled version of the cell-mouseover handler to avoid excessive state updates. */\n private onCellMouseOverThrottled = throttle((row: any, column: any) => {\n this.hoveredCell = { row, column };\n }, 30);\n\n private onSelectAllClick = () => {\n this.isSelectAll = !this.isSelectAll;\n let selectedRowKeys: string[] = [];\n if (this.isSelectAll) {\n selectedRowKeys = this.data\n .slice((this.page - 1) * this.pageSize, this.page * this.pageSize)\n .map(row => row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onRowSelectClick = (row: any) => {\n let selectedRowKeys = [...this.selectedRowKeys];\n if (selectedRowKeys.includes(row[this.keyField])) {\n this.isSelectAll = false;\n selectedRowKeys = selectedRowKeys.filter(\n rowId => rowId !== row[this.keyField],\n );\n } else {\n selectedRowKeys.push(row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onSelectChange(selectedRowKeys: string[]) {\n this.selectedRowKeys = selectedRowKeys;\n this.dispatchEvent(\n new CustomEvent('selection-change', {\n detail: {\n value: this.selectedRowKeys,\n isSelectAll: this.isSelectAll,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onCellClick(row: any, col: TableColumn, evt: MouseEvent) {\n this.dispatchEvent(\n new CustomEvent('cell-click', {\n detail: {\n record: row,\n column: col,\n altKey: evt.altKey,\n ctrlKey: evt.ctrlKey,\n metaKey: evt.metaKey,\n shiftKey: evt.shiftKey,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onScrollContainer = (event: Event) => {\n const target = event.target as HTMLElement;\n this.isHorizontallyScrolled = !!target.scrollLeft;\n };\n\n private get totalColumnsWidth(): number {\n let total = 0;\n if (this.selectionType === 'checkbox') {\n total += 3; // approximate checkbox column width in rem\n }\n this.columns.forEach(col => {\n total += col.width ?? DEFAULT_CELL_WIDTH;\n });\n return total;\n }\n\n private getTotalItems(): number {\n if (this.paginate && !this.managed && this.data) return this.data.length;\n return this.totalItems ?? 0;\n }\n\n private getSortIcon(col: TableColumn): string {\n if (this.sortBy === col.name) {\n return this.sortOrder === 'asc'\n ? 'keyboard_arrow_up'\n : 'keyboard_arrow_down';\n }\n return '';\n }\n\n private onSortClick(col: TableColumn) {\n if (this.sortBy === col.name) {\n if (this.sortOrder === 'asc') {\n this.sortOrder = 'desc';\n } else {\n this.sortBy = '';\n }\n } else {\n this.sortBy = col.name;\n this.sortOrder = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent('sort', {\n detail: { sortBy: this.sortBy, sortOrder: this.sortOrder },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderHeader() {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col col-checkbox center\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.isSelectAll}\n .indeterminate=${this.isSelectAllIntermediate}\n @change=${this.onSelectAllClick}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(col => {\n const colWidth = col.width\n ? parseInt(String(col.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n class=${classMap({ col: true, sort: this.sortBy === col.name })}\n style=\"width: ${colWidth}rem\"\n >\n <div class=\"col-content\">\n <div class=\"col-text\">${col.label}</div>\n <div class=\"col-actions\">\n ${this.sortable\n ? html`\n <wc-button\n class=\"col-action\"\n color=\"secondary\"\n variant=\"text\"\n @click=${() => this.onSortClick(col)}\n >\n <wc-icon\n slot=\"icon\"\n name=${this.getSortIcon(col)}\n ></wc-icon>\n </wc-button>\n `\n : nothing}\n </div>\n </div>\n </div>\n `;\n if (col.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div class=\"header\">\n <div class=\"row\" style=\"min-width: ${this.totalColumnsWidth}rem\">\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n </div>\n `;\n }\n\n private renderBody() {\n let data = [...this.data];\n\n if (!this.managed) {\n if (this.sortable && this.sortBy) {\n data = data.sort((a, b) => {\n if (a[this.sortBy] < b[this.sortBy])\n return this.sortOrder === 'asc' ? -1 : 1;\n if (a[this.sortBy] > b[this.sortBy])\n return this.sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }\n if (this.paginate) {\n data = data.slice(\n (this.page - 1) * this.pageSize,\n this.page * this.pageSize,\n );\n }\n }\n\n const rows = data.map(row => {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col center col-checkbox\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.selectedRowKeys.includes(row[this.keyField])}\n @change=${() => this.onRowSelectClick(row)}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(column => {\n const colWidth = column.width\n ? parseInt(String(column.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n tabindex=\"0\"\n class=${classMap({\n col: true,\n 'col-hover':\n this.hoveredCell.row === row &&\n this.hoveredCell.column === column,\n })}\n style=\"width: ${colWidth}rem\"\n @mouseover=${() => this.onCellMouseOverThrottled(row, column)}\n @focus=${() => this.onCellMouseOverThrottled(row, column)}\n @keydown=${(event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'c') {\n const elem = event.target as HTMLElement;\n window.navigator.clipboard\n .writeText(elem.innerText)\n .catch(() => {});\n }\n }}\n @click=${(evt: MouseEvent) => {\n const selection = window.getSelection();\n if (selection?.type !== 'Range') {\n this.onCellClick(row, column, evt);\n }\n }}\n >\n <div class=\"col-content\">\n ${column.template\n ? html`<div class=\"col-template\">\n ${unsafeHTML(column.template(row, column))}\n </div>`\n : html`<div class=\"col-text\" title=${row?.[column.name] ?? ''}>\n ${row?.[column.name]}\n </div>`}\n </div>\n </div>\n `;\n if (column.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div\n class=${classMap({\n row: true,\n 'row-hover': this.hoveredCell.row === row,\n })}\n style=\"min-width: ${this.totalColumnsWidth}rem\"\n >\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n `;\n });\n\n return html`<div class=\"body\">${rows}</div>`;\n }\n\n private renderEmptyState() {\n return html`\n <div class=\"empty-table\">\n <wc-empty-state\n class=\"empty-state content-center\"\n headline=${this.emptyStateHeadline}\n description=${this.emptyStateDescription}\n ></wc-empty-state>\n </div>\n `;\n }\n\n private renderPagination() {\n if (!this.paginate) return nothing;\n\n return html`\n <wc-pagination\n .page=${this.page}\n .pageSize=${this.pageSize}\n .totalItems=${this.getTotalItems()}\n @page=${(e: CustomEvent) => {\n this.page = e.detail.page;\n this.pageSize = e.detail.pageSize;\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }}\n ></wc-pagination>\n `;\n }\n\n render() {\n const tableClasses = {\n table: true,\n sortable: this.sortable,\n paginate: this.paginate,\n 'horizontal-scrolled': this.isHorizontallyScrolled,\n };\n\n return html`\n <div class=${classMap(tableClasses)}>\n <div class=\"table-scroll-container\" @scroll=${this.onScrollContainer}>\n ${this.renderHeader()}\n ${this.data && this.data.length\n ? this.renderBody()\n : this.renderEmptyState()}\n </div>\n <div class=\"table-footer\">${this.renderPagination()}</div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","unsafeHTML","styles","property","state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../src/table/table.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { throttle } from '@/__internal/utils/throttle.js';\n\nimport styles from './table.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_CELL_WIDTH = 16; // in rem\n\nexport interface TableColumn {\n name: string;\n label: string;\n width?: number;\n fixed?: boolean;\n template?: (row: any, column: TableColumn) => string;\n}\n\n/**\n * @label Table\n * @tag wc-table\n * @rawTag table\n * @summary A configurable component for displaying tabular data.\n * @overview\n * <p>The table component displays rows of data with support for sorting, pagination, row selection, and fixed columns.</p>\n *\n * @fires {CustomEvent} cell-click - Dispatched when a table cell is clicked.\n * @fires {CustomEvent} selection-change - Dispatched when the row selection changes.\n * @fires {CustomEvent} sort - Dispatched when the table is sorted.\n * @fires {CustomEvent} page - Dispatched when the page or page size changes.\n *\n * @example\n * ```html\n * <wc-table columns=\"[{'name': 'name','label': 'Name','width': 16},{'name': 'age','label': 'Age','width': 7}]\" data=\"[{'name': 'John','age': 30},{'name': 'Jane','age': 25}]\"></wc-table>\n * ```\n * @tags display, data\n */\n@IndividualComponent\nexport class Table extends LitElement {\n static styles = [styles];\n\n /**\n * Grid columns configuration.\n * Each column can have: name, label, width (px), fixed (boolean), template (function).\n */\n @property({ type: Array })\n columns: TableColumn[] = [];\n\n /**\n * Grid data to display on table.\n */\n @property({ type: Array })\n data: any[] = [];\n\n /**\n * Row selection type. Set to `\"checkbox\"` to enable checkbox selection.\n */\n @property({ type: String, attribute: 'selection-type' })\n selectionType: 'checkbox' | undefined;\n\n /**\n * Array of selected row key values.\n */\n @property({ type: Array, attribute: 'selected-row-keys' })\n selectedRowKeys: string[] = [];\n\n /**\n * The field name used as the unique key for each row. Defaults to `\"id\"`.\n */\n @property({ type: String, attribute: 'key-field' })\n keyField: string = 'id';\n\n /**\n * If true, sorting and pagination are managed externally (controlled mode).\n */\n @property({ type: Boolean })\n managed: boolean = false;\n\n /**\n * If true, columns are sortable. Defaults to `true`.\n */\n @property({ type: Boolean })\n sortable: boolean = true;\n\n /**\n * The field name currently used for sorting.\n */\n @property({ type: String, attribute: 'sort-by' })\n sortBy: string = '';\n\n /**\n * The current sort order. Possible values are `\"asc\"` and `\"desc\"`. Defaults to `\"asc\"`.\n */\n @property({ type: String, attribute: 'sort-order' })\n sortOrder: 'asc' | 'desc' = 'asc';\n\n /**\n * If true, pagination is enabled. Defaults to `true`.\n */\n @property({ type: Boolean })\n paginate: boolean = false;\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items (used in managed/controlled mode).\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number | undefined;\n\n /**\n * Headline text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-headline' })\n emptyStateHeadline: string = 'No items';\n\n /**\n * Description text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-description' })\n emptyStateDescription: string = 'There are no items to display';\n\n /** Tracks the currently hovered row and column for hover-highlight CSS. */\n @state()\n private hoveredCell: { row?: any; column?: any } = {};\n\n /** True when all rows on the current page are selected. */\n @state()\n private isSelectAll: boolean = false;\n\n /** True when some (but not all) rows on the current page are selected. */\n @state()\n private isSelectAllIntermediate: boolean = false;\n\n /** True when the scroll container has been scrolled horizontally. */\n @state()\n private isHorizontallyScrolled: boolean = false;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** Throttled version of the cell-mouseover handler to avoid excessive state updates. */\n private onCellMouseOverThrottled = throttle((row: any, column: any) => {\n this.hoveredCell = { row, column };\n }, 30);\n\n private onSelectAllClick = () => {\n this.isSelectAll = !this.isSelectAll;\n let selectedRowKeys: string[] = [];\n if (this.isSelectAll) {\n selectedRowKeys = this.data\n .slice((this.page - 1) * this.pageSize, this.page * this.pageSize)\n .map(row => row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onRowSelectClick = (row: any) => {\n let selectedRowKeys = [...this.selectedRowKeys];\n if (selectedRowKeys.includes(row[this.keyField])) {\n this.isSelectAll = false;\n selectedRowKeys = selectedRowKeys.filter(\n rowId => rowId !== row[this.keyField],\n );\n } else {\n selectedRowKeys.push(row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onSelectChange(selectedRowKeys: string[]) {\n this.selectedRowKeys = selectedRowKeys;\n this.dispatchEvent(\n new CustomEvent('selection-change', {\n detail: {\n value: this.selectedRowKeys,\n isSelectAll: this.isSelectAll,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onCellClick(row: any, col: TableColumn, evt: MouseEvent) {\n this.dispatchEvent(\n new CustomEvent('cell-click', {\n detail: {\n record: row,\n column: col,\n altKey: evt.altKey,\n ctrlKey: evt.ctrlKey,\n metaKey: evt.metaKey,\n shiftKey: evt.shiftKey,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onScrollContainer = (event: Event) => {\n const target = event.target as HTMLElement;\n this.isHorizontallyScrolled = !!target.scrollLeft;\n };\n\n private get totalColumnsWidth(): number {\n let total = 0;\n if (this.selectionType === 'checkbox') {\n total += 3; // approximate checkbox column width in rem\n }\n this.columns.forEach(col => {\n total += col.width ?? DEFAULT_CELL_WIDTH;\n });\n return total;\n }\n\n private getTotalItems(): number {\n if (this.paginate && !this.managed && this.data) return this.data.length;\n return this.totalItems ?? 0;\n }\n\n private getSortIcon(col: TableColumn): string {\n if (this.sortBy === col.name) {\n return this.sortOrder === 'asc'\n ? 'keyboard_arrow_up'\n : 'keyboard_arrow_down';\n }\n return 'unfold_more';\n }\n\n private onSortClick(col: TableColumn) {\n if (this.sortBy === col.name) {\n if (this.sortOrder === 'asc') {\n this.sortOrder = 'desc';\n } else {\n this.sortBy = '';\n }\n } else {\n this.sortBy = col.name;\n this.sortOrder = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent('sort', {\n detail: { sortBy: this.sortBy, sortOrder: this.sortOrder },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderHeader() {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col col-checkbox center\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.isSelectAll}\n .indeterminate=${this.isSelectAllIntermediate}\n @change=${this.onSelectAllClick}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(col => {\n const colWidth = col.width\n ? parseInt(String(col.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n class=${classMap({ col: true, sort: this.sortBy === col.name })}\n style=\"width: ${colWidth}rem\"\n >\n <div class=\"col-content\">\n <div class=\"col-text\">${col.label}</div>\n <div class=\"col-actions\">\n ${this.sortable\n ? html`\n <wc-button\n class=\"col-action\"\n color=\"secondary\"\n variant=\"text\"\n @click=${() => this.onSortClick(col)}\n >\n <wc-icon\n slot=\"icon\"\n name=${this.getSortIcon(col)}\n ></wc-icon>\n </wc-button>\n `\n : nothing}\n </div>\n </div>\n </div>\n `;\n if (col.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div class=\"header\">\n <div class=\"row\" style=\"min-width: ${this.totalColumnsWidth}rem\">\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n </div>\n `;\n }\n\n private renderBody() {\n let data = [...this.data];\n\n if (!this.managed) {\n if (this.sortable && this.sortBy) {\n data = data.sort((a, b) => {\n if (a[this.sortBy] < b[this.sortBy])\n return this.sortOrder === 'asc' ? -1 : 1;\n if (a[this.sortBy] > b[this.sortBy])\n return this.sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }\n if (this.paginate) {\n data = data.slice(\n (this.page - 1) * this.pageSize,\n this.page * this.pageSize,\n );\n }\n }\n\n const rows = data.map(row => {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col center col-checkbox\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.selectedRowKeys.includes(row[this.keyField])}\n @change=${() => this.onRowSelectClick(row)}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(column => {\n const colWidth = column.width\n ? parseInt(String(column.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n tabindex=\"0\"\n class=${classMap({\n col: true,\n 'col-hover':\n this.hoveredCell.row === row &&\n this.hoveredCell.column === column,\n })}\n style=\"width: ${colWidth}rem\"\n @mouseover=${() => this.onCellMouseOverThrottled(row, column)}\n @focus=${() => this.onCellMouseOverThrottled(row, column)}\n @keydown=${(event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'c') {\n const elem = event.target as HTMLElement;\n window.navigator.clipboard\n .writeText(elem.innerText)\n .catch(() => {});\n }\n }}\n @click=${(evt: MouseEvent) => {\n const selection = window.getSelection();\n if (selection?.type !== 'Range') {\n this.onCellClick(row, column, evt);\n }\n }}\n >\n <div class=\"col-content\">\n ${column.template\n ? html`<div class=\"col-template\">\n ${unsafeHTML(column.template(row, column))}\n </div>`\n : html`<div class=\"col-text\" title=${row?.[column.name] ?? ''}>\n ${row?.[column.name]}\n </div>`}\n </div>\n </div>\n `;\n if (column.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div\n class=${classMap({\n row: true,\n 'row-hover': this.hoveredCell.row === row,\n })}\n style=\"min-width: ${this.totalColumnsWidth}rem\"\n >\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n `;\n });\n\n return html`<div class=\"body\">${rows}</div>`;\n }\n\n private renderEmptyState() {\n return html`\n <div class=\"empty-table\">\n <wc-empty-state\n class=\"empty-state content-center\"\n headline=${this.emptyStateHeadline}\n description=${this.emptyStateDescription}\n ></wc-empty-state>\n </div>\n `;\n }\n\n private renderPagination() {\n if (!this.paginate) return nothing;\n\n return html`\n <wc-pagination\n .page=${this.page}\n .pageSize=${this.pageSize}\n .totalItems=${this.getTotalItems()}\n @page=${(e: CustomEvent) => {\n this.page = e.detail.page;\n this.pageSize = e.detail.pageSize;\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }}\n ></wc-pagination>\n `;\n }\n\n render() {\n const tableClasses = {\n table: true,\n sortable: this.sortable,\n paginate: this.paginate,\n 'horizontal-scrolled': this.isHorizontallyScrolled,\n };\n\n return html`\n <div class=${classMap(tableClasses)}>\n <div class=\"table-scroll-container\" @scroll=${this.onScrollContainer}>\n ${this.renderHeader()}\n ${this.data && this.data.length\n ? this.renderBody()\n : this.renderEmptyState()}\n </div>\n <div class=\"table-footer\">${this.renderPagination()}</div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","unsafeHTML","styles","property","state"],"mappings":"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"}
|