@plumile/ui 0.1.162 → 0.1.164
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/lib/esm/admin/organisms/admin_sidebar/adminSidebar.css.js +2 -0
- package/lib/esm/admin/theme/adminDensity.css.js +0 -1
- package/lib/esm/atomic/atoms/label/label.css.js +0 -1
- package/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +1 -0
- package/lib/esm/atomic/molecules/markdown/components/MarkdownHeading.css.js +0 -1
- package/lib/esm/backoffice/templates/list_page_template/listPageTemplate.css.js.map +1 -1
- package/lib/esm/components/data-table/DataTable.css.js +45 -45
- package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
- package/lib/esm/components/data-table/DataTable.js +88 -52
- package/lib/esm/components/data-table/DataTable.js.map +1 -1
- package/lib/esm/components/data-table/VirtualizedConnectionTable.js +169 -161
- package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -1
- package/lib/esm/internal/data-table/layout.js +19 -2
- package/lib/esm/internal/data-table/layout.js.map +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/types/components/data-table/DataTable.css.d.ts.map +1 -1
- package/lib/types/components/data-table/DataTable.d.ts +13 -2
- package/lib/types/components/data-table/DataTable.d.ts.map +1 -1
- package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -1
- package/lib/types/internal/data-table/layout.d.ts +5 -0
- package/lib/types/internal/data-table/layout.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
/* empty css */
|
|
6
6
|
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
|
-
/* empty css */
|
|
9
8
|
//#region src/admin/theme/adminDensity.css.ts
|
|
10
9
|
var e = "var(--_1eea990)", t = "var(--_1eea991)", n = "var(--_1eea992)", r = "var(--_1eea993)", i = "var(--_1eea994)", a = "var(--_1eea995)", o = "var(--_1eea996)", s = "_1eea997", c = "_1eea998", l = "_1eea999";
|
|
11
10
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listPageTemplate.css.js","names":[],"sources":["../../../../../src/backoffice/templates/list_page_template/listPageTemplate.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe } from '@vanilla-extract/recipes';\n\nimport { adminSurfaceRecipe } from '../../../admin/theme/adminSurface.css.js';\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\nimport { vars } from '../../../theme/themeContract.css.js';\n\nexport const container = sprinkles({\n display: 'grid',\n});\n\nexport const containerContained = sprinkles({\n height: 'full',\n minHeight: 0,\n});\n\nexport const containerPresentation = {\n framed: sprinkles({\n gap: 3,\n }),\n flat: sprinkles({\n gap: 2,\n }),\n};\n\nexport const containerRows = recipe({\n variants: {\n scrollMode: {\n page: {},\n contained: {},\n },\n toolbar: {\n true: {},\n false: {},\n },\n status: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variants: { scrollMode: 'page', toolbar: true, status: true },\n style: { gridTemplateRows: 'auto auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: true, status: false },\n style: { gridTemplateRows: 'auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: false, status: true },\n style: { gridTemplateRows: 'auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: false, status: false },\n style: { gridTemplateRows: 'auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: true, status: true },\n style: { gridTemplateRows: 'auto auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: true, status: false },\n style: { gridTemplateRows: 'auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: false, status: true },\n style: { gridTemplateRows: 'auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: false, status: false },\n style: { gridTemplateRows: 'auto minmax(0, 1fr)' },\n },\n ],\n});\n\nexport const headerCard = sprinkles({\n minWidth: 0,\n});\n\nexport const headerPresentation = {\n framed: style([\n adminSurfaceRecipe({\n level: 'panel',\n radius: 'lg',\n border: 'subtle',\n elevation: 'none',\n padding: 'lg',\n }),\n {\n backgroundImage: vars.backgroundImage.listHeaderSurface,\n },\n ]),\n flat: sprinkles({\n paddingX: 1,\n paddingY: 1,\n }),\n};\n\nexport const toolbarCard = sprinkles({\n minWidth: 0,\n});\n\nexport const toolbarPresentation = {\n framed: adminSurfaceRecipe({\n level: 'toolbar',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n flat: style([\n adminSurfaceRecipe({\n level: 'toolbar',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderLight}`,\n },\n ]),\n};\n\nexport const tableCard = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n minHeight: 0,\n minWidth: 0,\n});\n\nexport const tableCardContained = sprinkles({\n height: 'full',\n minHeight: 0,\n});\n\nexport const tablePresentation = {\n framed: style([\n adminSurfaceRecipe({\n level: 'table',\n radius: 'lg',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderSubtle}`,\n },\n ]),\n flat: style([\n adminSurfaceRecipe({\n level: 'table',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderLight}`,\n },\n ]),\n};\n\nexport const tableScroll = style({\n overflowX: '
|
|
1
|
+
{"version":3,"file":"listPageTemplate.css.js","names":[],"sources":["../../../../../src/backoffice/templates/list_page_template/listPageTemplate.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe } from '@vanilla-extract/recipes';\n\nimport { adminSurfaceRecipe } from '../../../admin/theme/adminSurface.css.js';\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\nimport { vars } from '../../../theme/themeContract.css.js';\n\nexport const container = sprinkles({\n display: 'grid',\n});\n\nexport const containerContained = sprinkles({\n height: 'full',\n minHeight: 0,\n});\n\nexport const containerPresentation = {\n framed: sprinkles({\n gap: 3,\n }),\n flat: sprinkles({\n gap: 2,\n }),\n};\n\nexport const containerRows = recipe({\n variants: {\n scrollMode: {\n page: {},\n contained: {},\n },\n toolbar: {\n true: {},\n false: {},\n },\n status: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n {\n variants: { scrollMode: 'page', toolbar: true, status: true },\n style: { gridTemplateRows: 'auto auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: true, status: false },\n style: { gridTemplateRows: 'auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: false, status: true },\n style: { gridTemplateRows: 'auto auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'page', toolbar: false, status: false },\n style: { gridTemplateRows: 'auto minmax(0, auto)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: true, status: true },\n style: { gridTemplateRows: 'auto auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: true, status: false },\n style: { gridTemplateRows: 'auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: false, status: true },\n style: { gridTemplateRows: 'auto auto minmax(0, 1fr)' },\n },\n {\n variants: { scrollMode: 'contained', toolbar: false, status: false },\n style: { gridTemplateRows: 'auto minmax(0, 1fr)' },\n },\n ],\n});\n\nexport const headerCard = sprinkles({\n minWidth: 0,\n});\n\nexport const headerPresentation = {\n framed: style([\n adminSurfaceRecipe({\n level: 'panel',\n radius: 'lg',\n border: 'subtle',\n elevation: 'none',\n padding: 'lg',\n }),\n {\n backgroundImage: vars.backgroundImage.listHeaderSurface,\n },\n ]),\n flat: sprinkles({\n paddingX: 1,\n paddingY: 1,\n }),\n};\n\nexport const toolbarCard = sprinkles({\n minWidth: 0,\n});\n\nexport const toolbarPresentation = {\n framed: adminSurfaceRecipe({\n level: 'toolbar',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n flat: style([\n adminSurfaceRecipe({\n level: 'toolbar',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderLight}`,\n },\n ]),\n};\n\nexport const tableCard = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n minHeight: 0,\n minWidth: 0,\n});\n\nexport const tableCardContained = sprinkles({\n height: 'full',\n minHeight: 0,\n});\n\nexport const tablePresentation = {\n framed: style([\n adminSurfaceRecipe({\n level: 'table',\n radius: 'lg',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderSubtle}`,\n },\n ]),\n flat: style([\n adminSurfaceRecipe({\n level: 'table',\n radius: 'md',\n border: 'subtle',\n elevation: 'none',\n padding: 'sm',\n }),\n {\n boxShadow: `0 1px 0 ${vars.colors.borderLight}`,\n },\n ]),\n};\n\nexport const tableScroll = style({\n overflowX: 'hidden',\n overflowY: 'visible',\n scrollbarWidth: 'thin',\n scrollbarColor: `${vars.colors.border} transparent`,\n});\n\nexport const tableScrollContained = sprinkles({\n flex: 1,\n minHeight: 0,\n});\n\nexport const tableFooter = sprinkles({\n marginTop: 0,\n});\n"],"mappings":""}
|
|
@@ -10,98 +10,98 @@ var t = e({
|
|
|
10
10
|
} },
|
|
11
11
|
defaultVariants: { kind: "default" },
|
|
12
12
|
compoundVariants: []
|
|
13
|
-
}), n = "ysn8467 txvbqbjzu txvbqbu86
|
|
14
|
-
defaultClassName: "
|
|
13
|
+
}), n = "ysn8468 ysn8467 txvbqbjzu txvbqbu86", r = e({
|
|
14
|
+
defaultClassName: "ysn846c",
|
|
15
15
|
variantClassNames: { kind: {
|
|
16
|
-
default: "
|
|
17
|
-
brandTable: "
|
|
16
|
+
default: "ysn846d ysn846a ysn8469 txvbqb1tv txvbqb2sj txvbqbal4 txvbqb6hs txvbqb1b83 txvbqb1b1e",
|
|
17
|
+
brandTable: "ysn846e ysn846b txvbqb1b4r txvbqb1tv txvbqb2sj txvbqbal4 txvbqb6pq"
|
|
18
18
|
} },
|
|
19
19
|
defaultVariants: { kind: "default" },
|
|
20
20
|
compoundVariants: []
|
|
21
|
-
}), i = "ysn846f
|
|
22
|
-
defaultClassName: "
|
|
21
|
+
}), i = "ysn846g ysn846f txvbqbfq0 txvbqb19uf txvbqbe8", a = "var(--ysn846h)", o = "var(--ysn846i)", s = "var(--ysn846j)", c = "var(--ysn846k)", l = e({
|
|
22
|
+
defaultClassName: "ysn846l",
|
|
23
23
|
variantClassNames: { density: {
|
|
24
|
-
compact: "
|
|
25
|
-
default: "
|
|
26
|
-
comfortable: "
|
|
24
|
+
compact: "ysn846m",
|
|
25
|
+
default: "ysn846n",
|
|
26
|
+
comfortable: "ysn846o"
|
|
27
27
|
} },
|
|
28
28
|
defaultVariants: { density: "default" },
|
|
29
29
|
compoundVariants: []
|
|
30
30
|
}), u = e({
|
|
31
|
-
defaultClassName: "
|
|
31
|
+
defaultClassName: "ysn846t ysn846p txvbqbey txvbqbfpn txvbqbh6d txvbqbhdl txvbqbwr6 txvbqb18ef txvbqb1avz",
|
|
32
32
|
variantClassNames: { kind: {
|
|
33
|
-
default: "
|
|
34
|
-
brandTable: "
|
|
33
|
+
default: "ysn846u ysn846r ysn846q txvbqb1bg3 txvbqbhbf txvbqbmwk txvbqb6a",
|
|
34
|
+
brandTable: "ysn846v ysn846s txvbqb10lu txvbqb11jf txvbqb12ig txvbqbxuj txvbqb1bg5 txvbqbhbs txvbqb96 txvbqbmvu txvbqb6a txvbqb98d"
|
|
35
35
|
} },
|
|
36
36
|
defaultVariants: { kind: "default" },
|
|
37
37
|
compoundVariants: []
|
|
38
38
|
}), d = e({
|
|
39
|
-
defaultClassName: "
|
|
39
|
+
defaultClassName: "ysn846y ysn846w txvbqbfpn txvbqbh4x",
|
|
40
40
|
variantClassNames: { kind: {
|
|
41
|
-
default: "
|
|
42
|
-
brandTable: "
|
|
41
|
+
default: "ysn846z",
|
|
42
|
+
brandTable: "ysn84610 ysn846x txvbqb1b4r"
|
|
43
43
|
} },
|
|
44
44
|
defaultVariants: { kind: "default" },
|
|
45
45
|
compoundVariants: []
|
|
46
|
-
}), f = "ysn84611
|
|
47
|
-
defaultClassName: "
|
|
46
|
+
}), f = "ysn84612 ysn84611 txvbqbfvs txvbqbu86", p = e({
|
|
47
|
+
defaultClassName: "ysn84619 ysn84614 ysn84613 txvbqbe8 txvbqb2sj txvbqb1tv txvbqbfq0 txvbqb7h txvbqb76 txvbqb7t",
|
|
48
48
|
variantClassNames: { kind: {
|
|
49
|
-
default: "
|
|
50
|
-
brandTable: "
|
|
49
|
+
default: "ysn8461a ysn84616 ysn84615 txvbqb1b7z txvbqb6ii txvbqbal4",
|
|
50
|
+
brandTable: "ysn8461b ysn84618 ysn84617 txvbqb1b4r txvbqb6pq txvbqbal4"
|
|
51
51
|
} },
|
|
52
52
|
defaultVariants: { kind: "default" },
|
|
53
53
|
compoundVariants: []
|
|
54
54
|
}), m = e({
|
|
55
|
-
defaultClassName: "
|
|
55
|
+
defaultClassName: "ysn8461e",
|
|
56
56
|
variantClassNames: { kind: {
|
|
57
|
-
default: "
|
|
58
|
-
brandTable: "
|
|
57
|
+
default: "ysn8461f ysn8461c txvbqb1b81",
|
|
58
|
+
brandTable: "ysn8461g ysn8461d txvbqb1b4r"
|
|
59
59
|
} },
|
|
60
60
|
defaultVariants: { kind: "default" },
|
|
61
61
|
compoundVariants: []
|
|
62
62
|
}), h = e({
|
|
63
|
-
defaultClassName: "
|
|
63
|
+
defaultClassName: "ysn8461j",
|
|
64
64
|
variantClassNames: { kind: {
|
|
65
|
-
default: "
|
|
66
|
-
brandTable: "
|
|
65
|
+
default: "ysn8461k ysn8461h txvbqb1b7z",
|
|
66
|
+
brandTable: "ysn8461l ysn8461i txvbqb1b4r"
|
|
67
67
|
} },
|
|
68
68
|
defaultVariants: { kind: "default" },
|
|
69
69
|
compoundVariants: []
|
|
70
70
|
}), g = e({
|
|
71
|
-
defaultClassName: "
|
|
71
|
+
defaultClassName: "ysn8461q ysn8461m txvbqbey txvbqbfpn txvbqbhdl txvbqbv7x txvbqbwr6",
|
|
72
72
|
variantClassNames: { kind: {
|
|
73
|
-
default: "
|
|
74
|
-
brandTable: "
|
|
73
|
+
default: "ysn8461r ysn8461o ysn8461n txvbqb1bg3",
|
|
74
|
+
brandTable: "ysn8461s ysn8461p txvbqb10lu txvbqb11jf txvbqb12ig txvbqbxuj txvbqb1bg1 txvbqbhbf txvbqb9j txvbqb98d"
|
|
75
75
|
} },
|
|
76
76
|
defaultVariants: { kind: "default" },
|
|
77
77
|
compoundVariants: []
|
|
78
|
-
}), _ = "
|
|
79
|
-
defaultClassName: "
|
|
78
|
+
}), _ = "ysn8461t txvbqbhbf txvbqb1bg1", v = "ysn8461u txvbqb1bg1", y = "ysn8461v txvbqb1avz txvbqbwr6 txvbqb18ef txvbqbv7x", b = "ysn8461w", x = e({
|
|
79
|
+
defaultClassName: "ysn84620",
|
|
80
80
|
variantClassNames: { align: {
|
|
81
|
-
left: "
|
|
82
|
-
center: "
|
|
83
|
-
right: "
|
|
81
|
+
left: "ysn84621 ysn8461x txvbqblsu txvbqb18dc",
|
|
82
|
+
center: "ysn84622 ysn8461y txvbqbls4 txvbqb18dp",
|
|
83
|
+
right: "ysn84623 ysn8461z txvbqblsh txvbqb18e2"
|
|
84
84
|
} },
|
|
85
85
|
defaultVariants: {},
|
|
86
86
|
compoundVariants: []
|
|
87
87
|
}), S = e({
|
|
88
|
-
defaultClassName: "
|
|
88
|
+
defaultClassName: "ysn84624",
|
|
89
89
|
variantClassNames: { state: {
|
|
90
|
-
default: "
|
|
91
|
-
selected: "
|
|
92
|
-
muted: "
|
|
93
|
-
danger: "
|
|
90
|
+
default: "ysn84625",
|
|
91
|
+
selected: "ysn84626",
|
|
92
|
+
muted: "ysn84627",
|
|
93
|
+
danger: "ysn84628"
|
|
94
94
|
} },
|
|
95
95
|
defaultVariants: {},
|
|
96
96
|
compoundVariants: []
|
|
97
|
-
}), C = "
|
|
98
|
-
defaultClassName: "
|
|
97
|
+
}), C = "ysn84629", w = "ysn8462a txvbqb9w txvbqb1bg3 txvbqb18dp", T = e({
|
|
98
|
+
defaultClassName: "ysn8462b",
|
|
99
99
|
variantClassNames: { minVisibleAt: {
|
|
100
|
-
sm: "
|
|
101
|
-
md: "
|
|
102
|
-
lg: "
|
|
103
|
-
xl: "
|
|
104
|
-
xxl: "
|
|
100
|
+
sm: "ysn8462c",
|
|
101
|
+
md: "ysn8462d",
|
|
102
|
+
lg: "ysn8462e",
|
|
103
|
+
xl: "ysn8462f",
|
|
104
|
+
xxl: "ysn8462g"
|
|
105
105
|
} },
|
|
106
106
|
defaultVariants: {},
|
|
107
107
|
compoundVariants: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.css.js","names":[],"sources":["../../../../src/components/data-table/DataTable.css.ts"],"sourcesContent":["import {\n style,\n createVar,\n fallbackVar,\n type StyleRule,\n} from '@vanilla-extract/css';\nimport { recipe } from '@vanilla-extract/recipes';\n\nimport { vars } from '../../theme/themeContract.css.js';\n\nimport {\n DATA_TABLE_BREAKPOINT_ENTRIES,\n type DataTableBreakpoint,\n} from './tableBreakpoints.js';\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nexport const container = recipe({\n base: style([\n sprinkles({\n display: 'flex',\n flexDirection: 'column',\n width: 'full',\n containerType: 'inline-size',\n }),\n {\n scrollbarGutter: 'stable',\n },\n ]),\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surface',\n borderColor: 'border',\n borderRadius: 'lg',\n borderStyle: 'solid',\n borderWidth: 'default',\n overflowX: 'auto',\n overflowY: 'hidden',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n borderRadius: 'none',\n borderStyle: 'none',\n borderWidth: 0,\n overflow: 'visible',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const containerWithContainedBody = sprinkles({\n height: 'full',\n minHeight: 0,\n overflow: 'hidden',\n});\n\nexport const header = recipe({\n variants: {\n kind: {\n default: style([\n sprinkles({\n borderWidth: 0,\n borderStyle: 'solid',\n borderBottomWidth: 'default',\n borderBottomColor: 'borderSubtle',\n backgroundColor: 'surfaceMuted',\n backgroundImage: 'tableHeaderAccent',\n }),\n ]),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderStyle: 'solid',\n borderBottomWidth: 'default',\n borderBottomColor: 'brandSubtleBorder',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const headerRow = style([\n sprinkles({\n display: 'grid',\n width: 'full',\n alignItems: 'stretch',\n }),\n {\n '@media': {\n 'screen and (max-width: 767px)': {\n minWidth: '38rem',\n },\n },\n },\n]);\n\nexport const tableCellPaddingVar = createVar();\nexport const tableCellFontSizeVar = createVar();\nexport const tableEmptyRowPaddingVar = createVar();\nexport const tableRowMinHeightVar = createVar();\n\nexport const densityRecipe = recipe({\n variants: {\n density: {\n compact: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[2]} ${vars.spacing[3]}`,\n [tableCellFontSizeVar]: vars.fontSize.sm,\n [tableEmptyRowPaddingVar]: `${vars.spacing[4]} ${vars.spacing[3]}`,\n [tableRowMinHeightVar]: vars.spacing[9],\n },\n },\n default: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[3]} ${vars.spacing[4]}`,\n [tableCellFontSizeVar]: vars.fontSize.sm,\n [tableEmptyRowPaddingVar]: `${vars.spacing[6]} ${vars.spacing[4]}`,\n [tableRowMinHeightVar]: vars.spacing[10],\n },\n },\n comfortable: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[3]} ${vars.spacing[5]}`,\n [tableCellFontSizeVar]: vars.fontSize.base,\n [tableEmptyRowPaddingVar]: `${vars.spacing[7]} ${vars.spacing[5]}`,\n [tableRowMinHeightVar]: vars.spacing[12],\n },\n },\n },\n },\n defaultVariants: {\n density: 'default',\n },\n});\n\nexport const headerCell = recipe({\n base: sprinkles({\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n gap: 2,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n variants: {\n kind: {\n default: style([\n sprinkles({\n color: 'textSecondary',\n fontWeight: 'semibold',\n letterSpacing: 'capsNarrow',\n textTransform: 'uppercase',\n }),\n {\n padding: fallbackVar(\n tableCellPaddingVar,\n `${vars.spacing[3]} ${vars.spacing[4]}`,\n ),\n fontSize: fallbackVar(tableCellFontSizeVar, vars.fontSize.sm),\n minHeight: fallbackVar(tableRowMinHeightVar, vars.spacing[10]),\n selectors: {\n '&:last-child': {\n borderRight: 'none',\n },\n },\n },\n ]),\n brandTable: sprinkles({\n color: 'textMuted',\n fontWeight: 'bold',\n fontSize: 'xs',\n letterSpacing: 'caps',\n textTransform: 'uppercase',\n paddingY: 4,\n paddingX: 0,\n borderRightWidth: 0,\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const body = recipe({\n base: sprinkles({\n display: 'flex',\n flexDirection: 'column',\n }),\n variants: {\n kind: {\n default: {},\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const bodyContained = style([\n sprinkles({\n flex: 1,\n minHeight: 0,\n }),\n {\n overflowY: 'auto',\n scrollbarWidth: 'thin',\n scrollbarColor: `${vars.colors.border} transparent`,\n },\n]);\n\nexport const row = recipe({\n base: style([\n sprinkles({\n alignItems: 'stretch',\n borderStyle: 'solid',\n borderWidth: 0,\n display: 'grid',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n }),\n {\n '@media': {\n 'screen and (max-width: 767px)': {\n minWidth: '38rem',\n },\n },\n },\n ]),\n variants: {\n kind: {\n default: style([\n sprinkles({\n backgroundColor: 'surface',\n borderBottomColor: 'borderLight',\n borderBottomWidth: 'default',\n }),\n {\n selectors: {\n '&:last-child': {\n borderBottomWidth: 0,\n },\n '&:hover': {\n backgroundColor: vars.colors.tableRowHoverSurface,\n },\n },\n },\n ]),\n brandTable: style([\n sprinkles({\n backgroundColor: 'transparent',\n borderBottomColor: 'brandSubtleBorder',\n borderBottomWidth: 'default',\n }),\n {\n selectors: {\n '&:last-child': {\n borderBottomWidth: 0,\n },\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n },\n ]),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const rowEven = recipe({\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surfaceSecondary',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const rowOdd = recipe({\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surface',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const cell = recipe({\n base: sprinkles({\n alignItems: 'center',\n display: 'flex',\n gap: 2,\n minWidth: 0,\n overflow: 'hidden',\n }),\n variants: {\n kind: {\n default: style([\n sprinkles({\n color: 'textSecondary',\n }),\n {\n padding: fallbackVar(\n tableCellPaddingVar,\n `${vars.spacing[3]} ${vars.spacing[4]}`,\n ),\n fontSize: fallbackVar(tableCellFontSizeVar, vars.fontSize.sm),\n minHeight: fallbackVar(tableRowMinHeightVar, vars.spacing[10]),\n selectors: {\n '&:last-child': {\n borderRight: 'none',\n },\n },\n },\n ]),\n brandTable: sprinkles({\n color: 'text',\n fontWeight: 'semibold',\n fontSize: 'sm',\n paddingY: 4,\n paddingX: 0,\n borderRightWidth: 0,\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const primaryCell = sprinkles({\n fontWeight: 'semibold',\n color: 'text',\n});\n\nexport const primaryHeaderCell = sprinkles({\n color: 'text',\n});\n\nexport const singleLineCell = sprinkles({\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n});\n\nexport const stickyHeader = style({\n position: 'sticky',\n top: 0,\n zIndex: vars.zIndex[10],\n});\n\nexport const alignRecipe = recipe({\n variants: {\n align: {\n left: sprinkles({\n justifyContent: 'flex-start',\n textAlign: 'left',\n }),\n center: sprinkles({\n justifyContent: 'center',\n textAlign: 'center',\n }),\n right: sprinkles({\n justifyContent: 'flex-end',\n textAlign: 'end',\n }),\n },\n },\n});\n\nexport const rowStateRecipe = recipe({\n variants: {\n state: {\n default: {},\n selected: {\n backgroundColor: vars.colors.tableRowSelectedSurface,\n },\n muted: {\n opacity: 0.72,\n },\n danger: {\n backgroundColor: vars.colors.tableRowDangerSurface,\n },\n },\n },\n});\n\nexport const emptyRow = style({\n padding: fallbackVar(\n tableEmptyRowPaddingVar,\n `${vars.spacing[6]} ${vars.spacing[4]}`,\n ),\n});\n\nexport const emptyCell = sprinkles({\n fontSize: 'base',\n color: 'textSecondary',\n textAlign: 'center',\n});\n\nconst hideBelowMap: Record<DataTableBreakpoint, StyleRule> = {} as Record<\n DataTableBreakpoint,\n StyleRule\n>;\n\nDATA_TABLE_BREAKPOINT_ENTRIES.forEach(([breakpoint, width]) => {\n hideBelowMap[breakpoint] = {\n '@container': {\n [`(max-width: ${width - 0.5}px)`]: {\n visibility: 'hidden',\n opacity: 0,\n pointerEvents: 'none',\n paddingInline: 0,\n paddingBlock: 0,\n borderRight: 'none',\n overflow: 'hidden',\n },\n },\n };\n});\n\nexport const hideBelowRecipe = recipe({\n variants: {\n minVisibleAt: hideBelowMap,\n },\n});\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"DataTable.css.js","names":[],"sources":["../../../../src/components/data-table/DataTable.css.ts"],"sourcesContent":["import {\n style,\n createVar,\n fallbackVar,\n type StyleRule,\n} from '@vanilla-extract/css';\nimport { recipe } from '@vanilla-extract/recipes';\n\nimport { vars } from '../../theme/themeContract.css.js';\n\nimport {\n DATA_TABLE_BREAKPOINT_ENTRIES,\n type DataTableBreakpoint,\n} from './tableBreakpoints.js';\nimport { sprinkles } from '../../theme/sprinkles.css.js';\n\nexport const container = recipe({\n base: style([\n sprinkles({\n display: 'flex',\n flexDirection: 'column',\n width: 'full',\n containerType: 'inline-size',\n }),\n {\n scrollbarGutter: 'stable',\n },\n ]),\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surface',\n borderColor: 'border',\n borderRadius: 'lg',\n borderStyle: 'solid',\n borderWidth: 'default',\n overflowX: 'auto',\n overflowY: 'hidden',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n borderRadius: 'none',\n borderStyle: 'none',\n borderWidth: 0,\n overflow: 'visible',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const containerWithContainedBody = style([\n sprinkles({\n height: 'full',\n minHeight: 0,\n }),\n {\n overflowX: 'hidden',\n overflowY: 'hidden',\n },\n]);\n\nexport const header = recipe({\n variants: {\n kind: {\n default: style([\n sprinkles({\n borderWidth: 0,\n borderStyle: 'solid',\n borderBottomWidth: 'default',\n borderBottomColor: 'borderSubtle',\n backgroundColor: 'surfaceMuted',\n backgroundImage: 'tableHeaderAccent',\n }),\n ]),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderStyle: 'solid',\n borderBottomWidth: 'default',\n borderBottomColor: 'brandSubtleBorder',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const headerRow = style([\n sprinkles({\n display: 'grid',\n width: 'full',\n alignItems: 'stretch',\n }),\n]);\n\nexport const tableCellPaddingVar = createVar();\nexport const tableCellFontSizeVar = createVar();\nexport const tableEmptyRowPaddingVar = createVar();\nexport const tableRowMinHeightVar = createVar();\n\nexport const densityRecipe = recipe({\n variants: {\n density: {\n compact: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[2]} ${vars.spacing[3]}`,\n [tableCellFontSizeVar]: vars.fontSize.sm,\n [tableEmptyRowPaddingVar]: `${vars.spacing[4]} ${vars.spacing[3]}`,\n [tableRowMinHeightVar]: vars.spacing[9],\n },\n },\n default: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[3]} ${vars.spacing[4]}`,\n [tableCellFontSizeVar]: vars.fontSize.sm,\n [tableEmptyRowPaddingVar]: `${vars.spacing[6]} ${vars.spacing[4]}`,\n [tableRowMinHeightVar]: vars.spacing[10],\n },\n },\n comfortable: {\n vars: {\n [tableCellPaddingVar]: `${vars.spacing[3]} ${vars.spacing[5]}`,\n [tableCellFontSizeVar]: vars.fontSize.base,\n [tableEmptyRowPaddingVar]: `${vars.spacing[7]} ${vars.spacing[5]}`,\n [tableRowMinHeightVar]: vars.spacing[12],\n },\n },\n },\n },\n defaultVariants: {\n density: 'default',\n },\n});\n\nexport const headerCell = recipe({\n base: sprinkles({\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n gap: 2,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n variants: {\n kind: {\n default: style([\n sprinkles({\n color: 'textSecondary',\n fontWeight: 'semibold',\n letterSpacing: 'capsNarrow',\n textTransform: 'uppercase',\n }),\n {\n padding: fallbackVar(\n tableCellPaddingVar,\n `${vars.spacing[3]} ${vars.spacing[4]}`,\n ),\n fontSize: fallbackVar(tableCellFontSizeVar, vars.fontSize.sm),\n minHeight: fallbackVar(tableRowMinHeightVar, vars.spacing[10]),\n selectors: {\n '&:last-child': {\n borderRight: 'none',\n },\n },\n },\n ]),\n brandTable: sprinkles({\n color: 'textMuted',\n fontWeight: 'bold',\n fontSize: 'xs',\n letterSpacing: 'caps',\n textTransform: 'uppercase',\n paddingY: 4,\n paddingX: 0,\n borderRightWidth: 0,\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const body = recipe({\n base: sprinkles({\n display: 'flex',\n flexDirection: 'column',\n }),\n variants: {\n kind: {\n default: {},\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const bodyContained = style([\n sprinkles({\n flex: 1,\n minHeight: 0,\n }),\n {\n overflowX: 'hidden',\n overflowY: 'auto',\n scrollbarWidth: 'thin',\n scrollbarColor: `${vars.colors.border} transparent`,\n },\n]);\n\nexport const row = recipe({\n base: style([\n sprinkles({\n alignItems: 'stretch',\n borderStyle: 'solid',\n borderWidth: 0,\n display: 'grid',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n }),\n ]),\n variants: {\n kind: {\n default: style([\n sprinkles({\n backgroundColor: 'surface',\n borderBottomColor: 'borderLight',\n borderBottomWidth: 'default',\n }),\n {\n selectors: {\n '&:last-child': {\n borderBottomWidth: 0,\n },\n '&:hover': {\n backgroundColor: vars.colors.tableRowHoverSurface,\n },\n },\n },\n ]),\n brandTable: style([\n sprinkles({\n backgroundColor: 'transparent',\n borderBottomColor: 'brandSubtleBorder',\n borderBottomWidth: 'default',\n }),\n {\n selectors: {\n '&:last-child': {\n borderBottomWidth: 0,\n },\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n },\n ]),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const rowEven = recipe({\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surfaceSecondary',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const rowOdd = recipe({\n variants: {\n kind: {\n default: sprinkles({\n backgroundColor: 'surface',\n }),\n brandTable: sprinkles({\n backgroundColor: 'transparent',\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const cell = recipe({\n base: sprinkles({\n alignItems: 'center',\n display: 'flex',\n gap: 2,\n minWidth: 0,\n overflow: 'hidden',\n }),\n variants: {\n kind: {\n default: style([\n sprinkles({\n color: 'textSecondary',\n }),\n {\n padding: fallbackVar(\n tableCellPaddingVar,\n `${vars.spacing[3]} ${vars.spacing[4]}`,\n ),\n fontSize: fallbackVar(tableCellFontSizeVar, vars.fontSize.sm),\n minHeight: fallbackVar(tableRowMinHeightVar, vars.spacing[10]),\n selectors: {\n '&:last-child': {\n borderRight: 'none',\n },\n },\n },\n ]),\n brandTable: sprinkles({\n color: 'text',\n fontWeight: 'semibold',\n fontSize: 'sm',\n paddingY: 4,\n paddingX: 0,\n borderRightWidth: 0,\n }),\n },\n },\n defaultVariants: {\n kind: 'default',\n },\n});\n\nexport const primaryCell = sprinkles({\n fontWeight: 'semibold',\n color: 'text',\n});\n\nexport const primaryHeaderCell = sprinkles({\n color: 'text',\n});\n\nexport const singleLineCell = sprinkles({\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n});\n\nexport const stickyHeader = style({\n position: 'sticky',\n top: 0,\n zIndex: vars.zIndex[10],\n});\n\nexport const alignRecipe = recipe({\n variants: {\n align: {\n left: sprinkles({\n justifyContent: 'flex-start',\n textAlign: 'left',\n }),\n center: sprinkles({\n justifyContent: 'center',\n textAlign: 'center',\n }),\n right: sprinkles({\n justifyContent: 'flex-end',\n textAlign: 'end',\n }),\n },\n },\n});\n\nexport const rowStateRecipe = recipe({\n variants: {\n state: {\n default: {},\n selected: {\n backgroundColor: vars.colors.tableRowSelectedSurface,\n },\n muted: {\n opacity: 0.72,\n },\n danger: {\n backgroundColor: vars.colors.tableRowDangerSurface,\n },\n },\n },\n});\n\nexport const emptyRow = style({\n padding: fallbackVar(\n tableEmptyRowPaddingVar,\n `${vars.spacing[6]} ${vars.spacing[4]}`,\n ),\n});\n\nexport const emptyCell = sprinkles({\n fontSize: 'base',\n color: 'textSecondary',\n textAlign: 'center',\n});\n\nconst hideBelowMap: Record<DataTableBreakpoint, StyleRule> = {} as Record<\n DataTableBreakpoint,\n StyleRule\n>;\n\nDATA_TABLE_BREAKPOINT_ENTRIES.forEach(([breakpoint, width]) => {\n hideBelowMap[breakpoint] = {\n '@container': {\n [`(max-width: ${width - 0.5}px)`]: {\n display: 'none',\n },\n },\n };\n});\n\nexport const hideBelowRecipe = recipe({\n variants: {\n minVisibleAt: hideBelowMap,\n },\n});\n"],"mappings":""}
|
|
@@ -1,22 +1,49 @@
|
|
|
1
1
|
import { cx as e } from "../../theme/tools.js";
|
|
2
2
|
import { useUiTranslation as t } from "../../i18n/useUiTranslation.js";
|
|
3
3
|
import { alignRecipe as n, body as r, bodyContained as i, cell as a, container as o, containerWithContainedBody as s, densityRecipe as c, emptyRow as l, header as u, headerCell as d, headerRow as f, hideBelowRecipe as p, primaryCell as m, primaryHeaderCell as h, row as g, rowEven as _, rowOdd as v, rowStateRecipe as y, singleLineCell as b, stickyHeader as x } from "./DataTable.css.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { DATA_TABLE_BREAKPOINTS as S } from "./tableBreakpoints.js";
|
|
5
|
+
import { buildDataTableInlineTemplate as C, filterDataTableGridTemplateColumns as w } from "../../internal/data-table/layout.js";
|
|
6
|
+
import { forwardRef as T, useLayoutEffect as E, useMemo as D, useRef as O, useState as k } from "react";
|
|
7
|
+
import { jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
7
8
|
//#region src/components/data-table/DataTable.tsx
|
|
8
|
-
var
|
|
9
|
-
if (t == null) return
|
|
10
|
-
},
|
|
11
|
-
let n = [c({ density:
|
|
9
|
+
var M = (e) => e ?? "default", N = (e) => e ?? "default", P = (e) => e == null ? null : p({ minVisibleAt: e }), F = ({ columnCount: e, gridTemplateClassName: t, gridTemplateColumns: n }) => {
|
|
10
|
+
if (t == null) return C(e, n);
|
|
11
|
+
}, I = ({ density: e, gridTemplateClassName: t }) => {
|
|
12
|
+
let n = [c({ density: N(e) })];
|
|
12
13
|
return t != null && n.push(t), n;
|
|
13
|
-
},
|
|
14
|
+
}, L = (e, t) => e.map((e, t) => ({
|
|
15
|
+
column: e,
|
|
16
|
+
index: t
|
|
17
|
+
})).filter(({ column: e }) => e.minVisibleAt == null || t == null ? !0 : t >= S[e.minVisibleAt]), R = ({ columns: e, gridTemplateColumns: t, visibleColumnEntries: n }) => w({
|
|
18
|
+
gridTemplateColumns: t,
|
|
19
|
+
visibleColumnIndexes: n.map((e) => e.index),
|
|
20
|
+
columnCount: e.length
|
|
21
|
+
}), z = (e) => {
|
|
22
|
+
let [t, n] = k(null);
|
|
23
|
+
return E(() => {
|
|
24
|
+
let t = e.current;
|
|
25
|
+
if (t == null || typeof window > "u") return;
|
|
26
|
+
let r = () => {
|
|
27
|
+
let e = t.getBoundingClientRect().width, r = null;
|
|
28
|
+
e > 0 ? r = e : t.clientWidth > 0 && (r = t.clientWidth), n(r);
|
|
29
|
+
};
|
|
30
|
+
if (r(), typeof ResizeObserver > "u") return window.addEventListener("resize", r), () => {
|
|
31
|
+
window.removeEventListener("resize", r);
|
|
32
|
+
};
|
|
33
|
+
let i = new ResizeObserver(() => {
|
|
34
|
+
r();
|
|
35
|
+
});
|
|
36
|
+
return i.observe(t), () => {
|
|
37
|
+
i.disconnect();
|
|
38
|
+
};
|
|
39
|
+
}, [e]), t;
|
|
40
|
+
}, B = T(({ children: n, className: r, kind: i, bodyScrollMode: a = "page", classes: c, ariaLabel: l, ariaLabelledBy: u }, d) => {
|
|
14
41
|
let { t: f } = t(), p;
|
|
15
42
|
u ?? (p = l ?? f("common.table.label"));
|
|
16
43
|
let m = a === "contained", h = null;
|
|
17
|
-
return m && (h = s), /* @__PURE__ */
|
|
44
|
+
return m && (h = s), /* @__PURE__ */ A("div", {
|
|
18
45
|
ref: d,
|
|
19
|
-
className: e(o({ kind:
|
|
46
|
+
className: e(o({ kind: M(i) }), h, c?.container, r),
|
|
20
47
|
role: "table",
|
|
21
48
|
"aria-label": p,
|
|
22
49
|
"aria-labelledby": u,
|
|
@@ -24,29 +51,29 @@ var E = (e) => e ?? "default", D = (e) => e ?? "default", O = (e) => e == null ?
|
|
|
24
51
|
children: n
|
|
25
52
|
});
|
|
26
53
|
});
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
let p =
|
|
54
|
+
B.displayName = "DataTableRoot";
|
|
55
|
+
var V = ({ columns: t, kind: r, density: i, headerBehavior: a, headerClassName: o, gridTemplateClassName: s, gridTemplateColumns: c, classes: l }) => {
|
|
56
|
+
let p = M(r), m = F({
|
|
30
57
|
columnCount: t.length,
|
|
31
58
|
gridTemplateClassName: s,
|
|
32
59
|
gridTemplateColumns: c
|
|
33
|
-
}), g =
|
|
60
|
+
}), g = I({
|
|
34
61
|
density: i,
|
|
35
62
|
gridTemplateClassName: s
|
|
36
63
|
}), _;
|
|
37
64
|
a?.offsetTop != null && (_ = { top: a.offsetTop });
|
|
38
65
|
let v = null;
|
|
39
|
-
return a?.sticky === !0 && (v = x), /* @__PURE__ */
|
|
66
|
+
return a?.sticky === !0 && (v = x), /* @__PURE__ */ A("div", {
|
|
40
67
|
className: e(u({ kind: p }), v, l?.header, o),
|
|
41
68
|
style: _,
|
|
42
69
|
role: "rowgroup",
|
|
43
|
-
children: /* @__PURE__ */
|
|
70
|
+
children: /* @__PURE__ */ A("div", {
|
|
44
71
|
className: e(f, l?.headerRow, ...g),
|
|
45
72
|
role: "row",
|
|
46
73
|
style: m,
|
|
47
74
|
children: t.map((t) => {
|
|
48
|
-
let r = [d({ kind: p }), l?.headerCell], i =
|
|
49
|
-
return i != null && r.push(i), t.className != null && r.push(t.className), t.isPrimary && r.push(h, l?.primaryHeaderCell), t.align != null && r.push(n({ align: t.align })), /* @__PURE__ */
|
|
75
|
+
let r = [d({ kind: p }), l?.headerCell], i = P(t.minVisibleAt);
|
|
76
|
+
return i != null && r.push(i), t.className != null && r.push(t.className), t.isPrimary && r.push(h, l?.primaryHeaderCell), t.align != null && r.push(n({ align: t.align })), /* @__PURE__ */ A("div", {
|
|
50
77
|
role: "columnheader",
|
|
51
78
|
className: e(...r),
|
|
52
79
|
children: t.header
|
|
@@ -54,101 +81,110 @@ var M = ({ columns: t, kind: r, density: i, headerBehavior: a, headerClassName:
|
|
|
54
81
|
})
|
|
55
82
|
})
|
|
56
83
|
});
|
|
57
|
-
},
|
|
84
|
+
}, H = T(({ children: t, className: n, kind: a, bodyScrollMode: o = "page", classes: s }, c) => {
|
|
58
85
|
let l = o === "contained", u = null;
|
|
59
|
-
return l && (u = i), /* @__PURE__ */
|
|
86
|
+
return l && (u = i), /* @__PURE__ */ A("div", {
|
|
60
87
|
ref: c,
|
|
61
|
-
className: e(r({ kind:
|
|
88
|
+
className: e(r({ kind: M(a) }), u, s?.body, n),
|
|
62
89
|
role: "rowgroup",
|
|
63
90
|
"data-scroll-mode": o,
|
|
64
91
|
children: t
|
|
65
92
|
});
|
|
66
93
|
});
|
|
67
|
-
|
|
68
|
-
var
|
|
69
|
-
let S =
|
|
94
|
+
H.displayName = "DataTableBody";
|
|
95
|
+
var U = ({ row: t, index: r, columns: i, getRowId: o, kind: s, density: c, rowClassName: l, rowState: u, gridTemplateClassName: d, gridTemplateColumns: f, classes: p, style: h, cellMode: x = "normal" }) => {
|
|
96
|
+
let S = M(s), C = F({
|
|
70
97
|
columnCount: i.length,
|
|
71
98
|
gridTemplateClassName: d,
|
|
72
99
|
gridTemplateColumns: f
|
|
73
|
-
}),
|
|
74
|
-
|
|
100
|
+
}), w = [g({ kind: S }), p?.row], T = u?.(t, r);
|
|
101
|
+
T != null && w.push(y({ state: T })), r % 2 == 0 ? w.push(_({ kind: S }), p?.rowEven) : w.push(v({ kind: S }), p?.rowOdd), w.push(...I({
|
|
75
102
|
density: c,
|
|
76
103
|
gridTemplateClassName: d
|
|
77
104
|
}));
|
|
78
|
-
let
|
|
79
|
-
return
|
|
105
|
+
let E = l?.(t, r);
|
|
106
|
+
return E != null && w.push(E), /* @__PURE__ */ A("div", {
|
|
80
107
|
role: "row",
|
|
81
|
-
className: e(...
|
|
108
|
+
className: e(...w),
|
|
82
109
|
style: {
|
|
83
110
|
...C,
|
|
84
111
|
...h
|
|
85
112
|
},
|
|
86
113
|
children: i.map((r) => {
|
|
87
|
-
let i = [a({ kind: S }), p?.cell], o =
|
|
88
|
-
return o != null && i.push(o), x === "singleLine" && i.push(b), r.className != null && i.push(r.className), r.isPrimary && i.push(m, p?.primaryCell), r.align != null && i.push(n({ align: r.align })), /* @__PURE__ */
|
|
114
|
+
let i = [a({ kind: S }), p?.cell], o = P(r.minVisibleAt);
|
|
115
|
+
return o != null && i.push(o), x === "singleLine" && i.push(b), r.className != null && i.push(r.className), r.isPrimary && i.push(m, p?.primaryCell), r.align != null && i.push(n({ align: r.align })), /* @__PURE__ */ A("div", {
|
|
89
116
|
role: "cell",
|
|
90
117
|
className: e(...i),
|
|
91
118
|
children: r.cell(t)
|
|
92
119
|
}, r.id);
|
|
93
120
|
})
|
|
94
121
|
}, o(t, r));
|
|
95
|
-
},
|
|
96
|
-
let { t: a } = t(), o = n ?? /* @__PURE__ */
|
|
97
|
-
className: e("
|
|
122
|
+
}, W = ({ emptyState: n, density: r, classes: i }) => {
|
|
123
|
+
let { t: a } = t(), o = n ?? /* @__PURE__ */ A("div", {
|
|
124
|
+
className: e("ysn8462a txvbqb9w txvbqb1bg3 txvbqb18dp", i?.emptyCell),
|
|
98
125
|
children: a("common.table.empty")
|
|
99
126
|
});
|
|
100
|
-
return /* @__PURE__ */
|
|
101
|
-
className: e(l, c({ density:
|
|
127
|
+
return /* @__PURE__ */ A("div", {
|
|
128
|
+
className: e(l, c({ density: N(r) }), i?.emptyRow),
|
|
102
129
|
role: "row",
|
|
103
|
-
children: /* @__PURE__ */
|
|
130
|
+
children: /* @__PURE__ */ A("div", {
|
|
104
131
|
role: "cell",
|
|
105
132
|
children: o
|
|
106
133
|
})
|
|
107
134
|
});
|
|
108
|
-
},
|
|
109
|
-
let y
|
|
110
|
-
|
|
135
|
+
}, G = ({ columns: e, rows: t, getRowId: n, emptyState: r, className: i, headerClassName: a, bodyClassName: o, rowClassName: s, gridTemplateClassName: c, gridTemplateColumns: l, kind: u, density: d, headerBehavior: f, bodyScrollMode: p = "page", rowState: m, classes: h, ariaLabel: g, ariaLabelledBy: _, bodyFooterNode: v }) => {
|
|
136
|
+
let y = O(null), b = z(y), x = D(() => L(e, b), [e, b]), S = D(() => x.map((e) => e.column), [x]), C = D(() => R({
|
|
137
|
+
columns: e,
|
|
138
|
+
gridTemplateColumns: l,
|
|
139
|
+
visibleColumnEntries: x
|
|
140
|
+
}), [
|
|
141
|
+
e,
|
|
142
|
+
l,
|
|
143
|
+
x
|
|
144
|
+
]), w;
|
|
145
|
+
return w = t.length === 0 ? /* @__PURE__ */ A(W, {
|
|
111
146
|
emptyState: r,
|
|
112
147
|
density: d,
|
|
113
148
|
classes: h
|
|
114
|
-
}) : t.map((
|
|
115
|
-
row:
|
|
116
|
-
index:
|
|
117
|
-
columns:
|
|
149
|
+
}) : t.map((e, t) => /* @__PURE__ */ A(U, {
|
|
150
|
+
row: e,
|
|
151
|
+
index: t,
|
|
152
|
+
columns: S,
|
|
118
153
|
getRowId: n,
|
|
119
154
|
kind: u,
|
|
120
155
|
density: d,
|
|
121
156
|
rowClassName: s,
|
|
122
157
|
rowState: m,
|
|
123
158
|
gridTemplateClassName: c,
|
|
124
|
-
gridTemplateColumns:
|
|
159
|
+
gridTemplateColumns: C,
|
|
125
160
|
classes: h
|
|
126
|
-
}, n(
|
|
161
|
+
}, n(e, t))), /* @__PURE__ */ j(B, {
|
|
162
|
+
ref: y,
|
|
127
163
|
className: i,
|
|
128
164
|
kind: u,
|
|
129
165
|
bodyScrollMode: p,
|
|
130
166
|
classes: h,
|
|
131
167
|
ariaLabel: g,
|
|
132
168
|
ariaLabelledBy: _,
|
|
133
|
-
children: [/* @__PURE__ */
|
|
134
|
-
columns:
|
|
169
|
+
children: [/* @__PURE__ */ A(V, {
|
|
170
|
+
columns: S,
|
|
135
171
|
kind: u,
|
|
136
172
|
density: d,
|
|
137
173
|
headerBehavior: f,
|
|
138
174
|
headerClassName: a,
|
|
139
175
|
gridTemplateClassName: c,
|
|
140
|
-
gridTemplateColumns:
|
|
176
|
+
gridTemplateColumns: C,
|
|
141
177
|
classes: h
|
|
142
|
-
}), /* @__PURE__ */
|
|
178
|
+
}), /* @__PURE__ */ j(H, {
|
|
143
179
|
className: o,
|
|
144
180
|
kind: u,
|
|
145
181
|
bodyScrollMode: p,
|
|
146
182
|
classes: h,
|
|
147
|
-
children: [
|
|
183
|
+
children: [w, v]
|
|
148
184
|
})]
|
|
149
185
|
});
|
|
150
186
|
};
|
|
151
187
|
//#endregion
|
|
152
|
-
export {
|
|
188
|
+
export { G as DataTable, H as DataTableBody, W as DataTableEmptyRow, V as DataTableHeader, B as DataTableRoot, U as DataTableRow, L as getVisibleDataTableColumnEntries, R as getVisibleDataTableGridTemplateColumns, z as useDataTableContainerWidth };
|
|
153
189
|
|
|
154
190
|
//# sourceMappingURL=DataTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type JSX,\n type ReactNode,\n} from 'react';\n\nimport * as styles from './DataTable.css.js';\nimport type { DataTableBreakpoint } from './tableBreakpoints.js';\nimport { buildDataTableInlineTemplate } from '../../internal/data-table/layout.js';\nimport { useUiTranslation } from '../../i18n/useUiTranslation.js';\nimport type { SlotClasses } from '../../styles/slots.js';\nimport { cx } from '../../theme/tools.js';\n\nexport type DataTableColumn<Row> = {\n id: string;\n header: JSX.Element | string;\n cell: (row: Row) => JSX.Element | string | null;\n minVisibleAt?: DataTableBreakpoint;\n className?: string;\n isPrimary?: boolean;\n align?: 'left' | 'center' | 'right';\n priority?: 'primary' | 'important' | 'secondary' | 'debug';\n mobileRole?:\n | 'title'\n | 'subtitle'\n | 'meta'\n | 'badge'\n | 'status'\n | 'action'\n | 'hidden';\n};\n\nexport type GetRowId<Row> = (row: Row, index: number) => string;\n\nexport type DataTableKind = NonNullable<\n Parameters<typeof styles.container>[0]\n>['kind'];\n\nexport type DataTableDensity = NonNullable<\n Parameters<typeof styles.densityRecipe>[0]\n>['density'];\n\nexport type DataTableRowState = NonNullable<\n Parameters<typeof styles.rowStateRecipe>[0]\n>['state'];\n\nexport type DataTableHeaderBehavior = {\n sticky?: boolean;\n offsetTop?: number;\n};\n\nexport type DataTableBodyScrollMode = 'page' | 'contained';\n\nexport type DataTableSlot =\n | 'container'\n | 'header'\n | 'headerRow'\n | 'headerCell'\n | 'primaryHeaderCell'\n | 'body'\n | 'row'\n | 'rowEven'\n | 'rowOdd'\n | 'cell'\n | 'primaryCell'\n | 'emptyRow'\n | 'emptyCell';\n\nexport type DataTableCellMode = 'normal' | 'singleLine';\n\nexport type DataTablePrimitiveLayoutProps = {\n gridTemplateClassName?: string;\n gridTemplateColumns?: string;\n};\n\nexport type DataTableRootProps = {\n children: ReactNode;\n className?: string;\n kind?: DataTableKind;\n bodyScrollMode?: DataTableBodyScrollMode;\n classes?: Pick<SlotClasses<DataTableSlot>, 'container'>;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n};\n\nexport type DataTableHeaderProps<Row> = DataTablePrimitiveLayoutProps & {\n columns: readonly DataTableColumn<Row>[];\n kind?: DataTableKind;\n density?: DataTableDensity;\n headerBehavior?: DataTableHeaderBehavior;\n headerClassName?: string;\n classes?: Pick<\n SlotClasses<DataTableSlot>,\n 'header' | 'headerRow' | 'headerCell' | 'primaryHeaderCell'\n >;\n};\n\nexport type DataTableBodyProps = {\n children: ReactNode;\n className?: string;\n kind?: DataTableKind;\n bodyScrollMode?: DataTableBodyScrollMode;\n classes?: Pick<SlotClasses<DataTableSlot>, 'body'>;\n};\n\nexport type DataTableRowProps<Row> = DataTablePrimitiveLayoutProps & {\n row: Row;\n index: number;\n columns: readonly DataTableColumn<Row>[];\n getRowId: GetRowId<Row>;\n kind?: DataTableKind;\n density?: DataTableDensity;\n rowClassName?: (row: Row, index: number) => string | null | undefined;\n rowState?: (row: Row, index: number) => DataTableRowState;\n classes?: Pick<\n SlotClasses<DataTableSlot>,\n 'row' | 'rowEven' | 'rowOdd' | 'cell' | 'primaryCell'\n >;\n style?: CSSProperties;\n cellMode?: DataTableCellMode;\n};\n\nexport type DataTableEmptyRowProps = {\n emptyState?: JSX.Element;\n density?: DataTableDensity;\n classes?: Pick<SlotClasses<DataTableSlot>, 'emptyRow' | 'emptyCell'>;\n};\n\nexport type DataTableProps<Row> = {\n columns: readonly DataTableColumn<Row>[];\n rows: readonly Row[];\n getRowId: GetRowId<Row>;\n emptyState?: JSX.Element;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n rowClassName?: (row: Row, index: number) => string | null | undefined;\n gridTemplateClassName?: string;\n gridTemplateColumns?: string;\n kind?: DataTableKind;\n density?: DataTableDensity;\n headerBehavior?: DataTableHeaderBehavior;\n bodyScrollMode?: DataTableBodyScrollMode;\n rowState?: (row: Row, index: number) => DataTableRowState;\n classes?: SlotClasses<DataTableSlot>;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n bodyFooterNode?: ReactNode;\n};\n\nconst resolveKind = (kind?: DataTableKind): DataTableKind => {\n return kind ?? 'default';\n};\n\nconst resolveDensity = (density?: DataTableDensity): DataTableDensity => {\n return density ?? 'default';\n};\n\nconst getVisibilityClass = (minVisibleAt?: DataTableBreakpoint) => {\n if (minVisibleAt == null) {\n return null;\n }\n\n return styles.hideBelowRecipe({ minVisibleAt });\n};\n\nconst getInlineTemplateStyle = ({\n columnCount,\n gridTemplateClassName,\n gridTemplateColumns,\n}: DataTablePrimitiveLayoutProps & {\n columnCount: number;\n}): CSSProperties | undefined => {\n if (gridTemplateClassName != null) {\n return undefined;\n }\n return buildDataTableInlineTemplate(columnCount, gridTemplateColumns);\n};\n\nconst getGridRowClasses = ({\n density,\n gridTemplateClassName,\n}: DataTablePrimitiveLayoutProps & {\n density?: DataTableDensity;\n}): string[] => {\n const rowClasses = [\n styles.densityRecipe({ density: resolveDensity(density) }),\n ];\n if (gridTemplateClassName != null) {\n rowClasses.push(gridTemplateClassName);\n }\n return rowClasses;\n};\n\nexport const DataTableRoot = forwardRef<HTMLDivElement, DataTableRootProps>(\n (\n {\n children,\n className,\n kind,\n bodyScrollMode = 'page',\n classes,\n ariaLabel,\n ariaLabelledBy,\n },\n ref,\n ): JSX.Element => {\n const { t } = useUiTranslation();\n let tableAriaLabel: string | undefined;\n if (ariaLabelledBy == null) {\n tableAriaLabel = ariaLabel ?? t('common.table.label');\n }\n const hasContainedBodyScroll = bodyScrollMode === 'contained';\n let containedClassName: string | null = null;\n if (hasContainedBodyScroll) {\n containedClassName = styles.containerWithContainedBody;\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.container({ kind: resolveKind(kind) }),\n containedClassName,\n classes?.container,\n className,\n )}\n role=\"table\"\n aria-label={tableAriaLabel}\n aria-labelledby={ariaLabelledBy}\n data-scroll-mode={bodyScrollMode}\n >\n {children}\n </div>\n );\n },\n);\n\nDataTableRoot.displayName = 'DataTableRoot';\n\nexport const DataTableHeader = <Row,>({\n columns,\n kind,\n density,\n headerBehavior,\n headerClassName,\n gridTemplateClassName,\n gridTemplateColumns,\n classes,\n}: DataTableHeaderProps<Row>): JSX.Element => {\n const resolvedKind = resolveKind(kind);\n const inlineTemplateStyle = getInlineTemplateStyle({\n columnCount: columns.length,\n gridTemplateClassName,\n gridTemplateColumns,\n });\n const gridRowClasses = getGridRowClasses({\n density,\n gridTemplateClassName,\n });\n let headerStyle: CSSProperties | undefined;\n if (headerBehavior?.offsetTop != null) {\n headerStyle = { top: headerBehavior.offsetTop };\n }\n let stickyHeaderClassName: string | null = null;\n if (headerBehavior?.sticky === true) {\n stickyHeaderClassName = styles.stickyHeader;\n }\n\n return (\n <div\n className={cx(\n styles.header({ kind: resolvedKind }),\n stickyHeaderClassName,\n classes?.header,\n headerClassName,\n )}\n style={headerStyle}\n role=\"rowgroup\"\n >\n <div\n className={cx(styles.headerRow, classes?.headerRow, ...gridRowClasses)}\n role=\"row\"\n style={inlineTemplateStyle}\n >\n {columns.map((column) => {\n const headerClasses = [\n styles.headerCell({ kind: resolvedKind }),\n classes?.headerCell,\n ];\n const visibilityClass = getVisibilityClass(column.minVisibleAt);\n if (visibilityClass != null) {\n headerClasses.push(visibilityClass);\n }\n\n if (column.className != null) {\n headerClasses.push(column.className);\n }\n if (column.isPrimary) {\n headerClasses.push(\n styles.primaryHeaderCell,\n classes?.primaryHeaderCell,\n );\n }\n if (column.align != null) {\n headerClasses.push(styles.alignRecipe({ align: column.align }));\n }\n\n return (\n <div\n key={column.id}\n role=\"columnheader\"\n className={cx(...headerClasses)}\n >\n {column.header}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const DataTableBody = forwardRef<HTMLDivElement, DataTableBodyProps>(\n (\n { children, className, kind, bodyScrollMode = 'page', classes },\n ref,\n ): JSX.Element => {\n const hasContainedBodyScroll = bodyScrollMode === 'contained';\n let containedClassName: string | null = null;\n if (hasContainedBodyScroll) {\n containedClassName = styles.bodyContained;\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.body({ kind: resolveKind(kind) }),\n containedClassName,\n classes?.body,\n className,\n )}\n role=\"rowgroup\"\n data-scroll-mode={bodyScrollMode}\n >\n {children}\n </div>\n );\n },\n);\n\nDataTableBody.displayName = 'DataTableBody';\n\nexport const DataTableRow = <Row,>({\n row,\n index,\n columns,\n getRowId,\n kind,\n density,\n rowClassName,\n rowState,\n gridTemplateClassName,\n gridTemplateColumns,\n classes,\n style,\n cellMode = 'normal',\n}: DataTableRowProps<Row>): JSX.Element => {\n const resolvedKind = resolveKind(kind);\n const inlineTemplateStyle = getInlineTemplateStyle({\n columnCount: columns.length,\n gridTemplateClassName,\n gridTemplateColumns,\n });\n const rowClasses = [styles.row({ kind: resolvedKind }), classes?.row];\n const state = rowState?.(row, index);\n if (state != null) {\n rowClasses.push(styles.rowStateRecipe({ state }));\n }\n if (index % 2 === 0) {\n rowClasses.push(styles.rowEven({ kind: resolvedKind }), classes?.rowEven);\n } else {\n rowClasses.push(styles.rowOdd({ kind: resolvedKind }), classes?.rowOdd);\n }\n rowClasses.push(...getGridRowClasses({ density, gridTemplateClassName }));\n\n const customClass = rowClassName?.(row, index);\n if (customClass != null) {\n rowClasses.push(customClass);\n }\n\n return (\n <div\n key={getRowId(row, index)}\n role=\"row\"\n className={cx(...rowClasses)}\n style={{ ...inlineTemplateStyle, ...style }}\n >\n {columns.map((column) => {\n const cellClasses = [\n styles.cell({ kind: resolvedKind }),\n classes?.cell,\n ];\n const visibilityClass = getVisibilityClass(column.minVisibleAt);\n\n if (visibilityClass != null) {\n cellClasses.push(visibilityClass);\n }\n if (cellMode === 'singleLine') {\n cellClasses.push(styles.singleLineCell);\n }\n if (column.className != null) {\n cellClasses.push(column.className);\n }\n if (column.isPrimary) {\n cellClasses.push(styles.primaryCell, classes?.primaryCell);\n }\n if (column.align != null) {\n cellClasses.push(styles.alignRecipe({ align: column.align }));\n }\n\n return (\n <div key={column.id} role=\"cell\" className={cx(...cellClasses)}>\n {column.cell(row)}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport const DataTableEmptyRow = ({\n emptyState,\n density,\n classes,\n}: DataTableEmptyRowProps): JSX.Element => {\n const { t } = useUiTranslation();\n const resolvedEmptyState = emptyState ?? (\n <div className={cx(styles.emptyCell, classes?.emptyCell)}>\n {t('common.table.empty')}\n </div>\n );\n\n return (\n <div\n className={cx(\n styles.emptyRow,\n styles.densityRecipe({ density: resolveDensity(density) }),\n classes?.emptyRow,\n )}\n role=\"row\"\n >\n <div role=\"cell\">{resolvedEmptyState}</div>\n </div>\n );\n};\n\n/**\n * Generic responsive data table component.\n */\nexport const DataTable = <Row,>({\n columns,\n rows,\n getRowId,\n emptyState,\n className,\n headerClassName,\n bodyClassName,\n rowClassName,\n gridTemplateClassName,\n gridTemplateColumns,\n kind,\n density,\n headerBehavior,\n bodyScrollMode = 'page',\n rowState,\n classes,\n ariaLabel,\n ariaLabelledBy,\n bodyFooterNode,\n}: DataTableProps<Row>): JSX.Element => {\n let rowsContent: ReactNode;\n if (rows.length === 0) {\n rowsContent = (\n <DataTableEmptyRow\n emptyState={emptyState}\n density={density}\n classes={classes}\n />\n );\n } else {\n rowsContent = rows.map((row, index) => {\n return (\n <DataTableRow\n key={getRowId(row, index)}\n row={row}\n index={index}\n columns={columns}\n getRowId={getRowId}\n kind={kind}\n density={density}\n rowClassName={rowClassName}\n rowState={rowState}\n gridTemplateClassName={gridTemplateClassName}\n gridTemplateColumns={gridTemplateColumns}\n classes={classes}\n />\n );\n });\n }\n\n return (\n <DataTableRoot\n className={className}\n kind={kind}\n bodyScrollMode={bodyScrollMode}\n classes={classes}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n >\n <DataTableHeader\n columns={columns}\n kind={kind}\n density={density}\n headerBehavior={headerBehavior}\n headerClassName={headerClassName}\n gridTemplateClassName={gridTemplateClassName}\n gridTemplateColumns={gridTemplateColumns}\n classes={classes}\n />\n <DataTableBody\n className={bodyClassName}\n kind={kind}\n bodyScrollMode={bodyScrollMode}\n classes={classes}\n >\n {rowsContent}\n {bodyFooterNode}\n </DataTableBody>\n </DataTableRoot>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import {\n forwardRef,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type JSX,\n type RefObject,\n type ReactNode,\n} from 'react';\n\nimport * as styles from './DataTable.css.js';\nimport {\n DATA_TABLE_BREAKPOINTS,\n type DataTableBreakpoint,\n} from './tableBreakpoints.js';\nimport {\n buildDataTableInlineTemplate,\n filterDataTableGridTemplateColumns,\n} from '../../internal/data-table/layout.js';\nimport { useUiTranslation } from '../../i18n/useUiTranslation.js';\nimport type { SlotClasses } from '../../styles/slots.js';\nimport { cx } from '../../theme/tools.js';\n\nexport type DataTableColumn<Row> = {\n id: string;\n header: JSX.Element | string;\n cell: (row: Row) => JSX.Element | string | null;\n minVisibleAt?: DataTableBreakpoint;\n className?: string;\n isPrimary?: boolean;\n align?: 'left' | 'center' | 'right';\n priority?: 'primary' | 'important' | 'secondary' | 'debug';\n mobileRole?:\n | 'title'\n | 'subtitle'\n | 'meta'\n | 'badge'\n | 'status'\n | 'action'\n | 'hidden';\n};\n\nexport type GetRowId<Row> = (row: Row, index: number) => string;\n\nexport type DataTableKind = NonNullable<\n Parameters<typeof styles.container>[0]\n>['kind'];\n\nexport type DataTableDensity = NonNullable<\n Parameters<typeof styles.densityRecipe>[0]\n>['density'];\n\nexport type DataTableRowState = NonNullable<\n Parameters<typeof styles.rowStateRecipe>[0]\n>['state'];\n\nexport type DataTableHeaderBehavior = {\n sticky?: boolean;\n offsetTop?: number;\n};\n\nexport type DataTableBodyScrollMode = 'page' | 'contained';\n\nexport type DataTableSlot =\n | 'container'\n | 'header'\n | 'headerRow'\n | 'headerCell'\n | 'primaryHeaderCell'\n | 'body'\n | 'row'\n | 'rowEven'\n | 'rowOdd'\n | 'cell'\n | 'primaryCell'\n | 'emptyRow'\n | 'emptyCell';\n\nexport type DataTableCellMode = 'normal' | 'singleLine';\n\nexport type DataTablePrimitiveLayoutProps = {\n gridTemplateClassName?: string;\n gridTemplateColumns?: string;\n};\n\nexport type DataTableRootProps = {\n children: ReactNode;\n className?: string;\n kind?: DataTableKind;\n bodyScrollMode?: DataTableBodyScrollMode;\n classes?: Pick<SlotClasses<DataTableSlot>, 'container'>;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n};\n\nexport type DataTableHeaderProps<Row> = DataTablePrimitiveLayoutProps & {\n columns: readonly DataTableColumn<Row>[];\n kind?: DataTableKind;\n density?: DataTableDensity;\n headerBehavior?: DataTableHeaderBehavior;\n headerClassName?: string;\n classes?: Pick<\n SlotClasses<DataTableSlot>,\n 'header' | 'headerRow' | 'headerCell' | 'primaryHeaderCell'\n >;\n};\n\nexport type DataTableBodyProps = {\n children: ReactNode;\n className?: string;\n kind?: DataTableKind;\n bodyScrollMode?: DataTableBodyScrollMode;\n classes?: Pick<SlotClasses<DataTableSlot>, 'body'>;\n};\n\nexport type DataTableRowProps<Row> = DataTablePrimitiveLayoutProps & {\n row: Row;\n index: number;\n columns: readonly DataTableColumn<Row>[];\n getRowId: GetRowId<Row>;\n kind?: DataTableKind;\n density?: DataTableDensity;\n rowClassName?: (row: Row, index: number) => string | null | undefined;\n rowState?: (row: Row, index: number) => DataTableRowState;\n classes?: Pick<\n SlotClasses<DataTableSlot>,\n 'row' | 'rowEven' | 'rowOdd' | 'cell' | 'primaryCell'\n >;\n style?: CSSProperties;\n cellMode?: DataTableCellMode;\n};\n\nexport type DataTableEmptyRowProps = {\n emptyState?: JSX.Element;\n density?: DataTableDensity;\n classes?: Pick<SlotClasses<DataTableSlot>, 'emptyRow' | 'emptyCell'>;\n};\n\nexport type DataTableProps<Row> = {\n columns: readonly DataTableColumn<Row>[];\n rows: readonly Row[];\n getRowId: GetRowId<Row>;\n emptyState?: JSX.Element;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n rowClassName?: (row: Row, index: number) => string | null | undefined;\n gridTemplateClassName?: string;\n gridTemplateColumns?: string;\n kind?: DataTableKind;\n density?: DataTableDensity;\n headerBehavior?: DataTableHeaderBehavior;\n bodyScrollMode?: DataTableBodyScrollMode;\n rowState?: (row: Row, index: number) => DataTableRowState;\n classes?: SlotClasses<DataTableSlot>;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n bodyFooterNode?: ReactNode;\n};\n\nconst resolveKind = (kind?: DataTableKind): DataTableKind => {\n return kind ?? 'default';\n};\n\nconst resolveDensity = (density?: DataTableDensity): DataTableDensity => {\n return density ?? 'default';\n};\n\nconst getVisibilityClass = (minVisibleAt?: DataTableBreakpoint) => {\n if (minVisibleAt == null) {\n return null;\n }\n\n return styles.hideBelowRecipe({ minVisibleAt });\n};\n\nconst getInlineTemplateStyle = ({\n columnCount,\n gridTemplateClassName,\n gridTemplateColumns,\n}: DataTablePrimitiveLayoutProps & {\n columnCount: number;\n}): CSSProperties | undefined => {\n if (gridTemplateClassName != null) {\n return undefined;\n }\n return buildDataTableInlineTemplate(columnCount, gridTemplateColumns);\n};\n\nconst getGridRowClasses = ({\n density,\n gridTemplateClassName,\n}: DataTablePrimitiveLayoutProps & {\n density?: DataTableDensity;\n}): string[] => {\n const rowClasses = [\n styles.densityRecipe({ density: resolveDensity(density) }),\n ];\n if (gridTemplateClassName != null) {\n rowClasses.push(gridTemplateClassName);\n }\n return rowClasses;\n};\n\nexport type VisibleDataTableColumnEntry<Row> = {\n column: DataTableColumn<Row>;\n index: number;\n};\n\nexport const getVisibleDataTableColumnEntries = <Row,>(\n columns: readonly DataTableColumn<Row>[],\n containerWidth: number | null,\n): readonly VisibleDataTableColumnEntry<Row>[] => {\n return columns\n .map((column, index) => {\n return { column, index };\n })\n .filter(({ column }) => {\n if (column.minVisibleAt == null || containerWidth == null) {\n return true;\n }\n return containerWidth >= DATA_TABLE_BREAKPOINTS[column.minVisibleAt];\n });\n};\n\nexport const getVisibleDataTableGridTemplateColumns = <Row,>({\n columns,\n gridTemplateColumns,\n visibleColumnEntries,\n}: {\n columns: readonly DataTableColumn<Row>[];\n gridTemplateColumns?: string;\n visibleColumnEntries: readonly VisibleDataTableColumnEntry<Row>[];\n}): string | undefined => {\n return filterDataTableGridTemplateColumns({\n gridTemplateColumns,\n visibleColumnIndexes: visibleColumnEntries.map((entry) => {\n return entry.index;\n }),\n columnCount: columns.length,\n });\n};\n\nexport const useDataTableContainerWidth = (\n ref: RefObject<HTMLElement | null>,\n): number | null => {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n\n useLayoutEffect(() => {\n const element = ref.current;\n if (element == null || typeof window === 'undefined') {\n return undefined;\n }\n\n const readWidth = (): void => {\n const rectWidth = element.getBoundingClientRect().width;\n let nextWidth: number | null = null;\n if (rectWidth > 0) {\n nextWidth = rectWidth;\n } else if (element.clientWidth > 0) {\n nextWidth = element.clientWidth;\n }\n setContainerWidth(nextWidth);\n };\n\n readWidth();\n\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', readWidth);\n return () => {\n window.removeEventListener('resize', readWidth);\n };\n }\n\n const observer = new ResizeObserver(() => {\n readWidth();\n });\n observer.observe(element);\n return () => {\n observer.disconnect();\n };\n }, [ref]);\n\n return containerWidth;\n};\n\nexport const DataTableRoot = forwardRef<HTMLDivElement, DataTableRootProps>(\n (\n {\n children,\n className,\n kind,\n bodyScrollMode = 'page',\n classes,\n ariaLabel,\n ariaLabelledBy,\n },\n ref,\n ): JSX.Element => {\n const { t } = useUiTranslation();\n let tableAriaLabel: string | undefined;\n if (ariaLabelledBy == null) {\n tableAriaLabel = ariaLabel ?? t('common.table.label');\n }\n const hasContainedBodyScroll = bodyScrollMode === 'contained';\n let containedClassName: string | null = null;\n if (hasContainedBodyScroll) {\n containedClassName = styles.containerWithContainedBody;\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.container({ kind: resolveKind(kind) }),\n containedClassName,\n classes?.container,\n className,\n )}\n role=\"table\"\n aria-label={tableAriaLabel}\n aria-labelledby={ariaLabelledBy}\n data-scroll-mode={bodyScrollMode}\n >\n {children}\n </div>\n );\n },\n);\n\nDataTableRoot.displayName = 'DataTableRoot';\n\nexport const DataTableHeader = <Row,>({\n columns,\n kind,\n density,\n headerBehavior,\n headerClassName,\n gridTemplateClassName,\n gridTemplateColumns,\n classes,\n}: DataTableHeaderProps<Row>): JSX.Element => {\n const resolvedKind = resolveKind(kind);\n const inlineTemplateStyle = getInlineTemplateStyle({\n columnCount: columns.length,\n gridTemplateClassName,\n gridTemplateColumns,\n });\n const gridRowClasses = getGridRowClasses({\n density,\n gridTemplateClassName,\n });\n let headerStyle: CSSProperties | undefined;\n if (headerBehavior?.offsetTop != null) {\n headerStyle = { top: headerBehavior.offsetTop };\n }\n let stickyHeaderClassName: string | null = null;\n if (headerBehavior?.sticky === true) {\n stickyHeaderClassName = styles.stickyHeader;\n }\n\n return (\n <div\n className={cx(\n styles.header({ kind: resolvedKind }),\n stickyHeaderClassName,\n classes?.header,\n headerClassName,\n )}\n style={headerStyle}\n role=\"rowgroup\"\n >\n <div\n className={cx(styles.headerRow, classes?.headerRow, ...gridRowClasses)}\n role=\"row\"\n style={inlineTemplateStyle}\n >\n {columns.map((column) => {\n const headerClasses = [\n styles.headerCell({ kind: resolvedKind }),\n classes?.headerCell,\n ];\n const visibilityClass = getVisibilityClass(column.minVisibleAt);\n if (visibilityClass != null) {\n headerClasses.push(visibilityClass);\n }\n\n if (column.className != null) {\n headerClasses.push(column.className);\n }\n if (column.isPrimary) {\n headerClasses.push(\n styles.primaryHeaderCell,\n classes?.primaryHeaderCell,\n );\n }\n if (column.align != null) {\n headerClasses.push(styles.alignRecipe({ align: column.align }));\n }\n\n return (\n <div\n key={column.id}\n role=\"columnheader\"\n className={cx(...headerClasses)}\n >\n {column.header}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const DataTableBody = forwardRef<HTMLDivElement, DataTableBodyProps>(\n (\n { children, className, kind, bodyScrollMode = 'page', classes },\n ref,\n ): JSX.Element => {\n const hasContainedBodyScroll = bodyScrollMode === 'contained';\n let containedClassName: string | null = null;\n if (hasContainedBodyScroll) {\n containedClassName = styles.bodyContained;\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.body({ kind: resolveKind(kind) }),\n containedClassName,\n classes?.body,\n className,\n )}\n role=\"rowgroup\"\n data-scroll-mode={bodyScrollMode}\n >\n {children}\n </div>\n );\n },\n);\n\nDataTableBody.displayName = 'DataTableBody';\n\nexport const DataTableRow = <Row,>({\n row,\n index,\n columns,\n getRowId,\n kind,\n density,\n rowClassName,\n rowState,\n gridTemplateClassName,\n gridTemplateColumns,\n classes,\n style,\n cellMode = 'normal',\n}: DataTableRowProps<Row>): JSX.Element => {\n const resolvedKind = resolveKind(kind);\n const inlineTemplateStyle = getInlineTemplateStyle({\n columnCount: columns.length,\n gridTemplateClassName,\n gridTemplateColumns,\n });\n const rowClasses = [styles.row({ kind: resolvedKind }), classes?.row];\n const state = rowState?.(row, index);\n if (state != null) {\n rowClasses.push(styles.rowStateRecipe({ state }));\n }\n if (index % 2 === 0) {\n rowClasses.push(styles.rowEven({ kind: resolvedKind }), classes?.rowEven);\n } else {\n rowClasses.push(styles.rowOdd({ kind: resolvedKind }), classes?.rowOdd);\n }\n rowClasses.push(...getGridRowClasses({ density, gridTemplateClassName }));\n\n const customClass = rowClassName?.(row, index);\n if (customClass != null) {\n rowClasses.push(customClass);\n }\n\n return (\n <div\n key={getRowId(row, index)}\n role=\"row\"\n className={cx(...rowClasses)}\n style={{ ...inlineTemplateStyle, ...style }}\n >\n {columns.map((column) => {\n const cellClasses = [\n styles.cell({ kind: resolvedKind }),\n classes?.cell,\n ];\n const visibilityClass = getVisibilityClass(column.minVisibleAt);\n\n if (visibilityClass != null) {\n cellClasses.push(visibilityClass);\n }\n if (cellMode === 'singleLine') {\n cellClasses.push(styles.singleLineCell);\n }\n if (column.className != null) {\n cellClasses.push(column.className);\n }\n if (column.isPrimary) {\n cellClasses.push(styles.primaryCell, classes?.primaryCell);\n }\n if (column.align != null) {\n cellClasses.push(styles.alignRecipe({ align: column.align }));\n }\n\n return (\n <div key={column.id} role=\"cell\" className={cx(...cellClasses)}>\n {column.cell(row)}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport const DataTableEmptyRow = ({\n emptyState,\n density,\n classes,\n}: DataTableEmptyRowProps): JSX.Element => {\n const { t } = useUiTranslation();\n const resolvedEmptyState = emptyState ?? (\n <div className={cx(styles.emptyCell, classes?.emptyCell)}>\n {t('common.table.empty')}\n </div>\n );\n\n return (\n <div\n className={cx(\n styles.emptyRow,\n styles.densityRecipe({ density: resolveDensity(density) }),\n classes?.emptyRow,\n )}\n role=\"row\"\n >\n <div role=\"cell\">{resolvedEmptyState}</div>\n </div>\n );\n};\n\n/**\n * Generic responsive data table component.\n */\nexport const DataTable = <Row,>({\n columns,\n rows,\n getRowId,\n emptyState,\n className,\n headerClassName,\n bodyClassName,\n rowClassName,\n gridTemplateClassName,\n gridTemplateColumns,\n kind,\n density,\n headerBehavior,\n bodyScrollMode = 'page',\n rowState,\n classes,\n ariaLabel,\n ariaLabelledBy,\n bodyFooterNode,\n}: DataTableProps<Row>): JSX.Element => {\n const containerRef = useRef<HTMLDivElement>(null);\n const containerWidth = useDataTableContainerWidth(containerRef);\n const visibleColumnEntries = useMemo(() => {\n return getVisibleDataTableColumnEntries(columns, containerWidth);\n }, [columns, containerWidth]);\n const visibleColumns = useMemo(() => {\n return visibleColumnEntries.map((entry) => {\n return entry.column;\n });\n }, [visibleColumnEntries]);\n const visibleGridTemplateColumns = useMemo(() => {\n return getVisibleDataTableGridTemplateColumns({\n columns,\n gridTemplateColumns,\n visibleColumnEntries,\n });\n }, [columns, gridTemplateColumns, visibleColumnEntries]);\n\n let rowsContent: ReactNode;\n if (rows.length === 0) {\n rowsContent = (\n <DataTableEmptyRow\n emptyState={emptyState}\n density={density}\n classes={classes}\n />\n );\n } else {\n rowsContent = rows.map((row, index) => {\n return (\n <DataTableRow\n key={getRowId(row, index)}\n row={row}\n index={index}\n columns={visibleColumns}\n getRowId={getRowId}\n kind={kind}\n density={density}\n rowClassName={rowClassName}\n rowState={rowState}\n gridTemplateClassName={gridTemplateClassName}\n gridTemplateColumns={visibleGridTemplateColumns}\n classes={classes}\n />\n );\n });\n }\n\n return (\n <DataTableRoot\n ref={containerRef}\n className={className}\n kind={kind}\n bodyScrollMode={bodyScrollMode}\n classes={classes}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n >\n <DataTableHeader\n columns={visibleColumns}\n kind={kind}\n density={density}\n headerBehavior={headerBehavior}\n headerClassName={headerClassName}\n gridTemplateClassName={gridTemplateClassName}\n gridTemplateColumns={visibleGridTemplateColumns}\n classes={classes}\n />\n <DataTableBody\n className={bodyClassName}\n kind={kind}\n bodyScrollMode={bodyScrollMode}\n classes={classes}\n >\n {rowsContent}\n {bodyFooterNode}\n </DataTableBody>\n </DataTableRoot>\n );\n};\n"],"mappings":"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"}
|