@vkzstudio/muza-ui 1.0.43 → 1.0.45
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/components/Accordion/Accordion.d.ts +42 -6
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Button/Button.d.ts +71 -17
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.d.ts +66 -20
- package/dist/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.js +39 -39
- package/dist/components/DataTable/DataTable.stories.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +69 -36
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.stories.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +38 -7
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +165 -163
- package/dist/components/DropdownMenu/DropdownMenu.stories.d.ts +3 -17
- package/dist/components/DropdownMenu/DropdownMenu.stories.d.ts.map +1 -1
- package/dist/components/EdgeButton/EdgeButton.d.ts +10 -11
- package/dist/components/EdgeButton/EdgeButton.d.ts.map +1 -1
- package/dist/components/ExpandableTable/ExpandableTable.d.ts +103 -19
- package/dist/components/ExpandableTable/ExpandableTable.d.ts.map +1 -1
- package/dist/components/ExpandableTable/ExpandableTable.js +100 -111
- package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts +6 -1
- package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts.map +1 -1
- package/dist/components/ExpandableTable/index.d.ts +1 -1
- package/dist/components/ExpandableTable/index.d.ts.map +1 -1
- package/dist/components/FileUpload/FileItem.d.ts +22 -0
- package/dist/components/FileUpload/FileItem.d.ts.map +1 -1
- package/dist/components/FileUpload/FileItem.js +38 -41
- package/dist/components/FileUpload/FileUpload.d.ts +137 -42
- package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/FileUpload/FileUpload.js +87 -83
- package/dist/components/FileUpload/FileUpload.stories.d.ts +1 -0
- package/dist/components/FileUpload/FileUpload.stories.d.ts.map +1 -1
- package/dist/components/FileUpload/index.d.ts +1 -1
- package/dist/components/FileUpload/index.d.ts.map +1 -1
- package/dist/components/Flex/Flex.d.ts +1 -1
- package/dist/components/Icons/CustomBadges.d.ts +14 -0
- package/dist/components/Icons/CustomBadges.d.ts.map +1 -0
- package/dist/components/Icons/CustomBadges.js +334 -0
- package/dist/components/Icons/CustomIcons.d.ts +24 -0
- package/dist/components/Icons/CustomIcons.d.ts.map +1 -1
- package/dist/components/Icons/CustomIcons.js +88 -42
- package/dist/components/Icons/CustomLogos.d.ts +29 -0
- package/dist/components/Icons/CustomLogos.d.ts.map +1 -0
- package/dist/components/Icons/CustomLogos.js +593 -0
- package/dist/components/Icons/LogosAndBadges.stories.d.ts +7 -0
- package/dist/components/Icons/LogosAndBadges.stories.d.ts.map +1 -0
- package/dist/components/Icons/index.d.ts +2 -0
- package/dist/components/Icons/index.d.ts.map +1 -1
- package/dist/components/Input/Input.d.ts +33 -34
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/components/LanguageSwitcher/LanguageSwitcher.d.ts +24 -1
- package/dist/components/LanguageSwitcher/LanguageSwitcher.d.ts.map +1 -1
- package/dist/components/LanguageSwitcher/LanguageSwitcher.js +71 -52
- package/dist/components/LanguageSwitcher/LanguageSwitcher.stories.d.ts +2 -0
- package/dist/components/LanguageSwitcher/LanguageSwitcher.stories.d.ts.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.d.ts +50 -23
- package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.js +18 -17
- package/dist/components/Reorderable/Reorderable.d.ts +48 -1
- package/dist/components/Reorderable/Reorderable.d.ts.map +1 -1
- package/dist/components/ReorderableTable/ReorderableTable.d.ts +34 -17
- package/dist/components/ReorderableTable/ReorderableTable.d.ts.map +1 -1
- package/dist/components/ReorderableTable/ReorderableTable.stories.d.ts.map +1 -1
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.d.ts +266 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.d.ts.map +1 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.examples.d.ts +39 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.examples.d.ts.map +1 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.js +134 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.stories.d.ts +14 -0
- package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.stories.d.ts.map +1 -0
- package/dist/components/ResponsiveLayoutTable/index.d.ts +2 -0
- package/dist/components/ResponsiveLayoutTable/index.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +58 -28
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +123 -92
- package/dist/components/Select/Select.stories.d.ts +1 -0
- package/dist/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +1 -1
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Select/utils.d.ts +1 -0
- package/dist/components/Select/utils.d.ts.map +1 -1
- package/dist/components/Select/utils.js +5 -2
- package/dist/components/TextEditor/TextEditor.d.ts +82 -46
- package/dist/components/TextEditor/TextEditor.d.ts.map +1 -1
- package/dist/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
- package/dist/components/TextEditor/index.d.ts +1 -1
- package/dist/components/TextEditor/index.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +41 -10
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.stories.d.ts.map +1 -1
- package/dist/components/Toggle/Toggle.js +1 -1
- package/dist/components/ToggleCheckButton/ToggleCheckButton.d.ts +69 -0
- package/dist/components/ToggleCheckButton/ToggleCheckButton.d.ts.map +1 -0
- package/dist/components/ToggleCheckButton/ToggleCheckButton.js +64 -0
- package/dist/components/ToggleCheckButton/ToggleCheckButton.stories.d.ts +8 -0
- package/dist/components/ToggleCheckButton/ToggleCheckButton.stories.d.ts.map +1 -0
- package/dist/components/ToggleCheckButton/index.d.ts +2 -0
- package/dist/components/ToggleCheckButton/index.d.ts.map +1 -0
- package/dist/components/WebCheckoutNav/WebCheckoutNav.examples.d.ts +19 -0
- package/dist/components/WebCheckoutNav/WebCheckoutNav.examples.d.ts.map +1 -0
- package/dist/components/WebCheckoutNav/WebCheckoutNav.stories.d.ts +8 -0
- package/dist/components/WebCheckoutNav/WebCheckoutNav.stories.d.ts.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/hooks/use-is-breakpoint.d.ts +11 -0
- package/dist/hooks/use-is-breakpoint.d.ts.map +1 -1
- package/dist/hooks/use-is-breakpoint.js +24 -13
- package/dist/index.js +236 -215
- package/dist/muza-ui.css +1 -1
- package/dist/styles/token-colors.css +64 -3
- package/dist/styles/token-sizes.css +86 -54
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +16 -5
- package/package.json +1 -1
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Mirrors the breakpoints exported from `@/hooks/use-is-breakpoint`.
|
|
5
|
-
*/
|
|
6
|
-
export type ResponsiveBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
|
|
2
|
+
import { ResponsiveBreakpoint } from '../../hooks/use-is-breakpoint';
|
|
3
|
+
export type { ResponsiveBreakpoint };
|
|
7
4
|
/**
|
|
8
5
|
* Column definition for the ExpandableTable.
|
|
6
|
+
*
|
|
9
7
|
* @typeParam T - The type of data objects in each row
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const columns: IColumn<Order>[] = [
|
|
11
|
+
* { dataKey: 'date', title: 'Date', responsive: 'sm' },
|
|
12
|
+
* {
|
|
13
|
+
* dataKey: 'status',
|
|
14
|
+
* title: 'Status',
|
|
15
|
+
* responsive: 'md',
|
|
16
|
+
* render: (value) => <Tag variant="success">{value}</Tag>,
|
|
17
|
+
* },
|
|
18
|
+
* ]
|
|
10
19
|
*/
|
|
11
|
-
export interface IColumn<T
|
|
20
|
+
export interface IColumn<T extends {
|
|
21
|
+
id: string | number;
|
|
22
|
+
}> {
|
|
12
23
|
/** Key of the data object to display in this column. */
|
|
13
24
|
dataKey: keyof T;
|
|
14
25
|
/** Header content rendered in the table head. */
|
|
@@ -28,50 +39,110 @@ export interface IColumn<T> {
|
|
|
28
39
|
* - Named breakpoint (`'xs'..'3xl'`): visible at and above that breakpoint, rendered with static Tailwind classes.
|
|
29
40
|
* - Boolean: caller supplies the visibility directly (e.g. from `useMediaQuery('(min-width: 52rem)')`).
|
|
30
41
|
* `true` shows the column, `false` hides it. Use this for arbitrary thresholds.
|
|
42
|
+
*
|
|
31
43
|
* @default 'xs'
|
|
44
|
+
* @see ResponsiveBreakpoint
|
|
32
45
|
*/
|
|
33
46
|
responsive?: ResponsiveBreakpoint | boolean;
|
|
34
47
|
/**
|
|
35
48
|
* When `responsive` hides this column, also render it in the automatic expandable area
|
|
36
49
|
* below the row. Set to `false` to just hide the column — useful when the expandable
|
|
37
50
|
* area already contains a richer version of the same data.
|
|
51
|
+
*
|
|
38
52
|
* @default true
|
|
39
53
|
*/
|
|
40
54
|
moveToExpandable?: boolean;
|
|
41
55
|
}
|
|
42
56
|
/**
|
|
43
57
|
* Cell definition within an expandable row section.
|
|
58
|
+
*
|
|
44
59
|
* @typeParam T - The type of data objects in each row
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const cell: IExpandableTableRowCell<Order> = {
|
|
63
|
+
* dataKey: 'customerName',
|
|
64
|
+
* title: 'Customer',
|
|
65
|
+
* render: (value) => <a href="#profile">{value}</a>,
|
|
66
|
+
* }
|
|
45
67
|
*/
|
|
46
|
-
export interface IExpandableTableRowCell<T
|
|
68
|
+
export interface IExpandableTableRowCell<T extends {
|
|
69
|
+
id: string | number;
|
|
70
|
+
}> {
|
|
47
71
|
/** Key of the data object to display in this cell. */
|
|
48
72
|
dataKey: keyof T;
|
|
49
73
|
/** Additional CSS class applied to the cell. */
|
|
50
74
|
className?: string;
|
|
51
75
|
/** Label rendered next to the cell value. */
|
|
52
76
|
title: ReactNode;
|
|
53
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Custom render function for the cell value.
|
|
79
|
+
* When omitted, the raw value is rendered as text.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* render: (value, row) => <Typography weight="medium">{value}</Typography>
|
|
83
|
+
*/
|
|
54
84
|
render?: (value: T[keyof T], rowData: T) => ReactNode;
|
|
55
85
|
}
|
|
56
86
|
/**
|
|
57
87
|
* Section definition for the expandable row content.
|
|
58
88
|
* Groups related cells under an optional heading.
|
|
89
|
+
*
|
|
59
90
|
* @typeParam T - The type of data objects in each row
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* const section: IExpandableTableRowSection<Order> = {
|
|
94
|
+
* title: 'Customer Information',
|
|
95
|
+
* cells: [
|
|
96
|
+
* { dataKey: 'customerName', title: 'Name' },
|
|
97
|
+
* { dataKey: 'customerAddress', title: 'Address' },
|
|
98
|
+
* ],
|
|
99
|
+
* }
|
|
60
100
|
*/
|
|
61
|
-
export interface IExpandableTableRowSection<T
|
|
101
|
+
export interface IExpandableTableRowSection<T extends {
|
|
102
|
+
id: string | number;
|
|
103
|
+
}> {
|
|
62
104
|
/** Optional heading rendered above the section cells. */
|
|
63
105
|
title?: ReactNode;
|
|
64
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Array of cell definitions displayed within this section.
|
|
108
|
+
*
|
|
109
|
+
* @see IExpandableTableRowCell
|
|
110
|
+
*/
|
|
65
111
|
cells: IExpandableTableRowCell<T>[];
|
|
66
112
|
}
|
|
67
113
|
/**
|
|
68
114
|
* Props for the ExpandableTable component.
|
|
69
|
-
*
|
|
115
|
+
*
|
|
116
|
+
* @typeParam T - The type of data objects in each row. Must include an
|
|
117
|
+
* `id: string | number` field — used both as the React key and as the
|
|
118
|
+
* internal expansion-state key. Keying by index corrupts focus, animation,
|
|
119
|
+
* and expansion state whenever rows reorder, filter, or paginate.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* <ExpandableTable<Order>
|
|
123
|
+
* data={orders}
|
|
124
|
+
* columns={columns}
|
|
125
|
+
* expandableRowSections={[
|
|
126
|
+
* { title: 'Details', cells: [{ dataKey: 'invoiceNumber', title: 'Invoice' }] },
|
|
127
|
+
* ]}
|
|
128
|
+
* />
|
|
70
129
|
*/
|
|
71
|
-
export interface ExpandableTableProps<T
|
|
130
|
+
export interface ExpandableTableProps<T extends {
|
|
131
|
+
id: string | number;
|
|
132
|
+
}> {
|
|
72
133
|
/** Array of data objects where each item represents one table row. */
|
|
73
134
|
data: T[];
|
|
74
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Array of column definitions describing headers and cell rendering.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* const columns: IColumn<Order>[] = [
|
|
140
|
+
* { dataKey: 'date', title: 'Date', responsive: 'sm' },
|
|
141
|
+
* { dataKey: 'title', title: 'Order' },
|
|
142
|
+
* ]
|
|
143
|
+
*
|
|
144
|
+
* @see IColumn
|
|
145
|
+
*/
|
|
75
146
|
columns: IColumn<T>[];
|
|
76
147
|
/**
|
|
77
148
|
* Sections shown when a row is expanded. Can be a static array applied to every row
|
|
@@ -80,21 +151,32 @@ export interface ExpandableTableProps<T> {
|
|
|
80
151
|
*
|
|
81
152
|
* @example
|
|
82
153
|
* // Static sections
|
|
83
|
-
* expandableRowSections={[
|
|
154
|
+
* expandableRowSections={[
|
|
155
|
+
* { title: 'Details', cells: [{ dataKey: 'name', title: 'Name' }] },
|
|
156
|
+
* ]}
|
|
84
157
|
*
|
|
85
158
|
* // Dynamic sections based on row data
|
|
86
|
-
* expandableRowSections={(row) =>
|
|
159
|
+
* expandableRowSections={(row) =>
|
|
160
|
+
* row.status === 'active' ? activeSections : inactiveSections
|
|
161
|
+
* }
|
|
87
162
|
*
|
|
88
163
|
* @see IExpandableTableRowSection
|
|
89
164
|
*/
|
|
90
165
|
expandableRowSections?: IExpandableTableRowSection<T>[] | ((row: T) => IExpandableTableRowSection<T>[]);
|
|
91
166
|
/**
|
|
92
|
-
* Custom CSS classes for internal elements.
|
|
167
|
+
* Custom CSS classes for internal elements of the expanded row area.
|
|
168
|
+
* Use to override the default grid layouts when labels are long or when
|
|
169
|
+
* independent column sizing is needed.
|
|
93
170
|
*
|
|
94
171
|
* @example
|
|
95
|
-
*
|
|
172
|
+
* // Override the outer grid used inside the expanded row
|
|
96
173
|
* classNames={{ expandedContentGrid: 'md:grid-cols-[200px_1fr]' }}
|
|
97
|
-
*
|
|
174
|
+
*
|
|
175
|
+
* // Replace the subgrid inside each section with independent columns
|
|
176
|
+
* classNames={{
|
|
177
|
+
* sectionTitle: 'md:grid-cols-[minmax(200px,auto)_1fr]',
|
|
178
|
+
* cellsWrap: 'md:grid-cols-[minmax(200px,auto)_1fr]',
|
|
179
|
+
* }}
|
|
98
180
|
*/
|
|
99
181
|
classNames?: Partial<{
|
|
100
182
|
/** Custom class for the expanded content grid container (overrides default `md:grid-cols-[auto_1fr]`). */
|
|
@@ -105,5 +187,7 @@ export interface ExpandableTableProps<T> {
|
|
|
105
187
|
cellsWrap: string;
|
|
106
188
|
}>;
|
|
107
189
|
}
|
|
108
|
-
export declare const ExpandableTable: <T
|
|
190
|
+
export declare const ExpandableTable: <T extends {
|
|
191
|
+
id: string | number;
|
|
192
|
+
}>({ data, columns, expandableRowSections, classNames, }: ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
109
193
|
//# sourceMappingURL=ExpandableTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableTable.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ExpandableTable.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAEd,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,2BAA2B,CAAA;AAclC,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACxD,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAA;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;IACrD;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAA;IAC3C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACxE,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,KAAK,EAAE,SAAS,CAAA;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;CACtD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IAC3E,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;OAIG;IACH,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACrE,sEAAsE;IACtE,IAAI,EAAE,CAAC,EAAE,CAAA;IACT;;;;;;;;;;OAUG;IACH,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACrB;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CAAC,EAClB,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAC/B,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACjD;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACnB,0GAA0G;QAC1G,mBAAmB,EAAE,MAAM,CAAA;QAC3B,yFAAyF;QACzF,YAAY,EAAE,MAAM,CAAA;QACpB,0GAA0G;QAC1G,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AA4CD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,uDAKhE,oBAAoB,CAAC,CAAC,CAAC,4CAgYzB,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { jsxs as m, jsx as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { cva as
|
|
4
|
-
import {
|
|
5
|
-
import { Table as
|
|
6
|
-
import { cn as
|
|
1
|
+
import { jsxs as m, jsx as t, Fragment as G } from "react/jsx-runtime";
|
|
2
|
+
import { useState as F, useRef as _, useEffect as O, useCallback as W, useMemo as K, Fragment as q } from "react";
|
|
3
|
+
import { cva as J } from "class-variance-authority";
|
|
4
|
+
import { useBreakpoints as Q } from "../../hooks/use-is-breakpoint.js";
|
|
5
|
+
import { Table as U, TableHeader as X, TableRow as B, TableHead as Y, TableRowGroup as Z, TableCell as M } from "./Table.js";
|
|
6
|
+
import { cn as l } from "../../utils/cn.js";
|
|
7
7
|
import { Typography as g } from "../Typography/Typography.js";
|
|
8
|
-
import { AltArrowDownOutline as
|
|
9
|
-
import { Flex as
|
|
10
|
-
const
|
|
8
|
+
import { AltArrowDownOutline as w } from "@solar-icons/react-perf";
|
|
9
|
+
import { Flex as $ } from "../Flex/Flex.js";
|
|
10
|
+
const j = J("", {
|
|
11
11
|
variants: {
|
|
12
12
|
responsive: {
|
|
13
13
|
xs: "",
|
|
@@ -28,26 +28,26 @@ const G = D("", {
|
|
|
28
28
|
"3xl": "3xl:hidden"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
}),
|
|
32
|
-
data:
|
|
33
|
-
columns:
|
|
34
|
-
expandableRowSections:
|
|
31
|
+
}), z = (s) => typeof s == "string" && (s === "xs" || s === "sm" || s === "md" || s === "lg" || s === "xl" || s === "2xl" || s === "3xl"), E = (s, o) => s === void 0 || s === "xs" ? !0 : typeof s == "boolean" ? s : o[s], se = ({
|
|
32
|
+
data: s,
|
|
33
|
+
columns: o,
|
|
34
|
+
expandableRowSections: n,
|
|
35
35
|
classNames: p
|
|
36
36
|
}) => {
|
|
37
|
-
const [v,
|
|
37
|
+
const [v, H] = F(/* @__PURE__ */ new Set()), [L, u] = F(/* @__PURE__ */ new Set()), f = _(
|
|
38
38
|
/* @__PURE__ */ new Map()
|
|
39
39
|
);
|
|
40
|
-
|
|
40
|
+
O(() => {
|
|
41
41
|
const e = f.current;
|
|
42
42
|
return () => {
|
|
43
43
|
e.forEach((i) => clearTimeout(i)), e.clear();
|
|
44
44
|
};
|
|
45
45
|
}, []);
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
|
|
46
|
+
const C = W((e) => {
|
|
47
|
+
H((i) => {
|
|
48
|
+
const a = new Set(i);
|
|
49
|
+
if (a.has(e)) {
|
|
50
|
+
a.delete(e), u((c) => {
|
|
51
51
|
const r = new Set(c);
|
|
52
52
|
return r.add(e), r;
|
|
53
53
|
});
|
|
@@ -55,53 +55,42 @@ const G = D("", {
|
|
|
55
55
|
d && clearTimeout(d), f.current.set(
|
|
56
56
|
e,
|
|
57
57
|
setTimeout(() => {
|
|
58
|
-
|
|
58
|
+
u((c) => {
|
|
59
59
|
const r = new Set(c);
|
|
60
60
|
return r.delete(e), r;
|
|
61
61
|
}), f.current.delete(e);
|
|
62
62
|
}, 150)
|
|
63
63
|
);
|
|
64
64
|
} else {
|
|
65
|
-
|
|
65
|
+
a.add(e);
|
|
66
66
|
const d = f.current.get(e);
|
|
67
|
-
d && (clearTimeout(d), f.current.delete(e),
|
|
67
|
+
d && (clearTimeout(d), f.current.delete(e), u((c) => {
|
|
68
68
|
const r = new Set(c);
|
|
69
69
|
return r.delete(e), r;
|
|
70
70
|
}));
|
|
71
71
|
}
|
|
72
|
-
return
|
|
72
|
+
return a;
|
|
73
73
|
});
|
|
74
|
-
}, []),
|
|
75
|
-
() => (
|
|
76
|
-
xs
|
|
77
|
-
sm: N,
|
|
78
|
-
md: V,
|
|
79
|
-
lg: F,
|
|
80
|
-
xl: K,
|
|
81
|
-
"2xl": L,
|
|
82
|
-
"3xl": $
|
|
83
|
-
}),
|
|
84
|
-
[N, V, F, K, L, $]
|
|
85
|
-
), j = E(
|
|
86
|
-
() => a.some(
|
|
87
|
-
(e) => e.responsive !== void 0 && e.responsive !== "xs" && e.moveToExpandable !== !1 && !C(e.responsive, u)
|
|
74
|
+
}, []), x = Q(), N = K(
|
|
75
|
+
() => o.some(
|
|
76
|
+
(e) => e.responsive !== void 0 && e.responsive !== "xs" && e.moveToExpandable !== !1 && !E(e.responsive, x)
|
|
88
77
|
),
|
|
89
|
-
[
|
|
90
|
-
), { firstVisibleIndex:
|
|
78
|
+
[o, x]
|
|
79
|
+
), { firstVisibleIndex: P, lastVisibleIndex: A } = K(() => {
|
|
91
80
|
let e = -1, i = -1;
|
|
92
|
-
return
|
|
93
|
-
|
|
81
|
+
return o.forEach((a, d) => {
|
|
82
|
+
E(a.responsive, x) && (e === -1 && (e = d), i = d);
|
|
94
83
|
}), { firstVisibleIndex: e, lastVisibleIndex: i };
|
|
95
|
-
}, [
|
|
96
|
-
return /* @__PURE__ */ m(
|
|
97
|
-
/* @__PURE__ */
|
|
98
|
-
const
|
|
99
|
-
return /* @__PURE__ */
|
|
100
|
-
|
|
84
|
+
}, [o, x]), y = !n && N, V = !!n || y;
|
|
85
|
+
return /* @__PURE__ */ m(U, { children: [
|
|
86
|
+
/* @__PURE__ */ t(X, { children: /* @__PURE__ */ t(B, { className: "[&>th]:border-0 [&>th]:bg-transparent", children: o.map((e, i) => {
|
|
87
|
+
const a = z(e.responsive) ? e.responsive : void 0, d = e.responsive === !1;
|
|
88
|
+
return /* @__PURE__ */ t(
|
|
89
|
+
Y,
|
|
101
90
|
{
|
|
102
|
-
className:
|
|
91
|
+
className: l(
|
|
103
92
|
e.className,
|
|
104
|
-
|
|
93
|
+
j({ responsive: a }),
|
|
105
94
|
d && "hidden"
|
|
106
95
|
),
|
|
107
96
|
children: e.title
|
|
@@ -109,45 +98,45 @@ const G = D("", {
|
|
|
109
98
|
i
|
|
110
99
|
);
|
|
111
100
|
}) }) }),
|
|
112
|
-
|
|
101
|
+
s.map((e) => {
|
|
113
102
|
var c;
|
|
114
|
-
const
|
|
103
|
+
const i = e.id, a = v.has(i) || y, d = L.has(i);
|
|
115
104
|
return /* @__PURE__ */ m(
|
|
116
|
-
|
|
105
|
+
Z,
|
|
117
106
|
{
|
|
118
|
-
className:
|
|
119
|
-
"group hover:[&_td]:border-stroke-brand-hover":
|
|
107
|
+
className: l({
|
|
108
|
+
"group hover:[&_td]:border-stroke-brand-hover": n
|
|
120
109
|
}),
|
|
121
110
|
children: [
|
|
122
111
|
/* @__PURE__ */ m(
|
|
123
|
-
|
|
112
|
+
B,
|
|
124
113
|
{
|
|
125
|
-
expandablePosition:
|
|
126
|
-
className:
|
|
127
|
-
"cursor-pointer":
|
|
114
|
+
expandablePosition: n && (v.has(i) || d) || y ? "top" : "none",
|
|
115
|
+
className: l("focus-visible-default", {
|
|
116
|
+
"cursor-pointer": n
|
|
128
117
|
}),
|
|
129
|
-
onClick:
|
|
130
|
-
onKeyDown:
|
|
131
|
-
(r.key === "Enter" || r.key === " ") && (r.preventDefault(),
|
|
118
|
+
onClick: n ? () => C(i) : void 0,
|
|
119
|
+
onKeyDown: n ? (r) => {
|
|
120
|
+
(r.key === "Enter" || r.key === " ") && (r.preventDefault(), C(i));
|
|
132
121
|
} : void 0,
|
|
133
|
-
tabIndex:
|
|
134
|
-
role:
|
|
135
|
-
"aria-expanded":
|
|
122
|
+
tabIndex: n ? 0 : void 0,
|
|
123
|
+
role: n ? "button" : void 0,
|
|
124
|
+
"aria-expanded": n ? v.has(i) : void 0,
|
|
136
125
|
children: [
|
|
137
|
-
|
|
138
|
-
const T =
|
|
139
|
-
return /* @__PURE__ */
|
|
140
|
-
|
|
126
|
+
o.map((r, h) => {
|
|
127
|
+
const T = z(r.responsive) ? r.responsive : void 0, b = r.responsive === !1;
|
|
128
|
+
return /* @__PURE__ */ t(
|
|
129
|
+
M,
|
|
141
130
|
{
|
|
142
|
-
isFirst: h ===
|
|
143
|
-
isLast: h ===
|
|
144
|
-
expandablePosition: (
|
|
145
|
-
className:
|
|
131
|
+
isFirst: h === P,
|
|
132
|
+
isLast: h === A && !n,
|
|
133
|
+
expandablePosition: (a || d) && V ? "top" : "none",
|
|
134
|
+
className: l(
|
|
146
135
|
r.className,
|
|
147
|
-
|
|
136
|
+
j({ responsive: T }),
|
|
148
137
|
b && "hidden"
|
|
149
138
|
),
|
|
150
|
-
children: r.render ? r.render(e[r.dataKey], e) : /* @__PURE__ */
|
|
139
|
+
children: r.render ? r.render(e[r.dataKey], e) : /* @__PURE__ */ t(
|
|
151
140
|
g,
|
|
152
141
|
{
|
|
153
142
|
variant: "body",
|
|
@@ -161,17 +150,17 @@ const G = D("", {
|
|
|
161
150
|
h
|
|
162
151
|
);
|
|
163
152
|
}),
|
|
164
|
-
|
|
165
|
-
|
|
153
|
+
n && /* @__PURE__ */ t(
|
|
154
|
+
M,
|
|
166
155
|
{
|
|
167
156
|
className: "w-[68px]",
|
|
168
157
|
isFirst: !1,
|
|
169
158
|
isLast: !0,
|
|
170
159
|
expandablePosition: v.has(i) || d ? "top" : "none",
|
|
171
|
-
children: /* @__PURE__ */
|
|
172
|
-
|
|
160
|
+
children: /* @__PURE__ */ t(
|
|
161
|
+
w,
|
|
173
162
|
{
|
|
174
|
-
className:
|
|
163
|
+
className: l(
|
|
175
164
|
"text-text-brand-def transition-transform duration-300",
|
|
176
165
|
{
|
|
177
166
|
"rotate-180": v.has(i)
|
|
@@ -184,51 +173,51 @@ const G = D("", {
|
|
|
184
173
|
]
|
|
185
174
|
}
|
|
186
175
|
),
|
|
187
|
-
|
|
176
|
+
V && /* @__PURE__ */ t("tr", { "aria-hidden": !a, children: /* @__PURE__ */ t(
|
|
188
177
|
"td",
|
|
189
178
|
{
|
|
190
|
-
colSpan:
|
|
179
|
+
colSpan: o.length + (n ? 1 : 0),
|
|
191
180
|
className: "border-0 p-0",
|
|
192
|
-
children: /* @__PURE__ */
|
|
181
|
+
children: /* @__PURE__ */ t(
|
|
193
182
|
"div",
|
|
194
183
|
{
|
|
195
|
-
className:
|
|
184
|
+
className: l(
|
|
196
185
|
"grid transition-[grid-template-rows] duration-300 ease-in-out",
|
|
197
|
-
|
|
186
|
+
a ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
198
187
|
),
|
|
199
|
-
children: /* @__PURE__ */
|
|
188
|
+
children: /* @__PURE__ */ t("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ m(
|
|
200
189
|
"div",
|
|
201
190
|
{
|
|
202
|
-
className:
|
|
191
|
+
className: l(
|
|
203
192
|
"rounded-b-xl border-x-1 border-b-1 border-stroke-base-secondary bg-surface-base-secondary transition-colors group-hover:border-stroke-brand-hover"
|
|
204
193
|
),
|
|
205
194
|
children: [
|
|
206
|
-
/* @__PURE__ */
|
|
195
|
+
/* @__PURE__ */ t("div", { className: "mx-comp-table-p border-t-1 border-stroke-base-secondary" }),
|
|
207
196
|
/* @__PURE__ */ m(
|
|
208
197
|
"div",
|
|
209
198
|
{
|
|
210
|
-
className:
|
|
199
|
+
className: l(
|
|
211
200
|
"grid grid-cols-1 gap-2xl px-comp-table-p py-2xl md:grid-cols-[auto_1fr]",
|
|
212
201
|
p == null ? void 0 : p.expandedContentGrid
|
|
213
202
|
),
|
|
214
203
|
children: [
|
|
215
|
-
|
|
216
|
-
/* @__PURE__ */
|
|
217
|
-
|
|
204
|
+
N && /* @__PURE__ */ m(G, { children: [
|
|
205
|
+
/* @__PURE__ */ t(
|
|
206
|
+
$,
|
|
218
207
|
{
|
|
219
208
|
gap: "md",
|
|
220
209
|
direction: "column",
|
|
221
210
|
className: "col-span-full",
|
|
222
|
-
children:
|
|
223
|
-
(r) => r.moveToExpandable !== !1 && r.responsive !== void 0 && r.responsive !== "xs" && !
|
|
211
|
+
children: o.filter(
|
|
212
|
+
(r) => r.moveToExpandable !== !1 && r.responsive !== void 0 && r.responsive !== "xs" && !E(r.responsive, x)
|
|
224
213
|
).map((r, h) => /* @__PURE__ */ m(
|
|
225
|
-
|
|
214
|
+
$,
|
|
226
215
|
{
|
|
227
216
|
align: "center",
|
|
228
217
|
justify: "between",
|
|
229
218
|
direction: "row",
|
|
230
219
|
children: [
|
|
231
|
-
/* @__PURE__ */
|
|
220
|
+
/* @__PURE__ */ t(
|
|
232
221
|
g,
|
|
233
222
|
{
|
|
234
223
|
variant: "body",
|
|
@@ -239,7 +228,7 @@ const G = D("", {
|
|
|
239
228
|
r.render ? r.render(
|
|
240
229
|
e[r.dataKey],
|
|
241
230
|
e
|
|
242
|
-
) : /* @__PURE__ */
|
|
231
|
+
) : /* @__PURE__ */ t(
|
|
243
232
|
g,
|
|
244
233
|
{
|
|
245
234
|
variant: "body",
|
|
@@ -255,21 +244,21 @@ const G = D("", {
|
|
|
255
244
|
))
|
|
256
245
|
}
|
|
257
246
|
),
|
|
258
|
-
|
|
247
|
+
n && /* @__PURE__ */ t("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
|
|
259
248
|
] }),
|
|
260
|
-
(c = typeof
|
|
261
|
-
if (!
|
|
262
|
-
const T = typeof
|
|
263
|
-
return /* @__PURE__ */ m(
|
|
249
|
+
(c = typeof n == "function" ? n(e) : n) == null ? void 0 : c.map((r, h) => {
|
|
250
|
+
if (!n) return null;
|
|
251
|
+
const T = typeof n == "function" ? n(e).length : n.length;
|
|
252
|
+
return /* @__PURE__ */ m(q, { children: [
|
|
264
253
|
/* @__PURE__ */ m(
|
|
265
254
|
"div",
|
|
266
255
|
{
|
|
267
|
-
className:
|
|
256
|
+
className: l(
|
|
268
257
|
"col-span-full grid grid-cols-1 gap-y-xl md:col-span-2 md:grid-cols-subgrid",
|
|
269
258
|
p == null ? void 0 : p.sectionTitle
|
|
270
259
|
),
|
|
271
260
|
children: [
|
|
272
|
-
r.title && /* @__PURE__ */
|
|
261
|
+
r.title && /* @__PURE__ */ t(
|
|
273
262
|
g,
|
|
274
263
|
{
|
|
275
264
|
variant: "body",
|
|
@@ -281,16 +270,16 @@ const G = D("", {
|
|
|
281
270
|
children: r.title
|
|
282
271
|
}
|
|
283
272
|
),
|
|
284
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ t(
|
|
285
274
|
"div",
|
|
286
275
|
{
|
|
287
|
-
className:
|
|
276
|
+
className: l(
|
|
288
277
|
"col-span-full grid grid-cols-1 gap-x-3xl md:col-span-2 md:grid-cols-subgrid md:gap-y-md",
|
|
289
278
|
p == null ? void 0 : p.cellsWrap
|
|
290
279
|
),
|
|
291
280
|
children: r.cells.flatMap(
|
|
292
281
|
(b, k) => [
|
|
293
|
-
/* @__PURE__ */
|
|
282
|
+
/* @__PURE__ */ t(
|
|
294
283
|
g,
|
|
295
284
|
{
|
|
296
285
|
component: "span",
|
|
@@ -300,7 +289,7 @@ const G = D("", {
|
|
|
300
289
|
},
|
|
301
290
|
`${k}-label`
|
|
302
291
|
),
|
|
303
|
-
b.render ? /* @__PURE__ */
|
|
292
|
+
b.render ? /* @__PURE__ */ t(
|
|
304
293
|
"div",
|
|
305
294
|
{
|
|
306
295
|
className: "mb-md block last-of-type:mb-0 md:mb-0",
|
|
@@ -310,7 +299,7 @@ const G = D("", {
|
|
|
310
299
|
)
|
|
311
300
|
},
|
|
312
301
|
`${k}-value`
|
|
313
|
-
) : /* @__PURE__ */
|
|
302
|
+
) : /* @__PURE__ */ t(
|
|
314
303
|
g,
|
|
315
304
|
{
|
|
316
305
|
variant: "body",
|
|
@@ -328,7 +317,7 @@ const G = D("", {
|
|
|
328
317
|
]
|
|
329
318
|
}
|
|
330
319
|
),
|
|
331
|
-
h < T - 1 && /* @__PURE__ */
|
|
320
|
+
h < T - 1 && /* @__PURE__ */ t("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
|
|
332
321
|
] }, h);
|
|
333
322
|
})
|
|
334
323
|
]
|
|
@@ -349,5 +338,5 @@ const G = D("", {
|
|
|
349
338
|
] });
|
|
350
339
|
};
|
|
351
340
|
export {
|
|
352
|
-
|
|
341
|
+
se as ExpandableTable
|
|
353
342
|
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { StoryObj } from '@storybook/react-vite';
|
|
2
2
|
declare const meta: {
|
|
3
3
|
title: string;
|
|
4
|
-
component: <T
|
|
4
|
+
component: <T extends {
|
|
5
|
+
id: string | number;
|
|
6
|
+
}>({ data, columns, expandableRowSections, classNames, }: import('./ExpandableTable').ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
5
7
|
parameters: {
|
|
6
8
|
layout: string;
|
|
7
9
|
docs: {
|
|
@@ -25,6 +27,9 @@ declare const meta: {
|
|
|
25
27
|
expandableRowSections: {
|
|
26
28
|
control: "object";
|
|
27
29
|
};
|
|
30
|
+
classNames: {
|
|
31
|
+
control: "object";
|
|
32
|
+
};
|
|
28
33
|
};
|
|
29
34
|
};
|
|
30
35
|
export default meta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableTable.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAO3D,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"ExpandableTable.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAO3D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC8B,CAAA;AAExC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAmNlC,eAAO,MAAM,MAAM,EAAE,KAsBpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAkB/B,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAwJjC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAuBvB,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,KAyH1C,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KA0DhC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAoExB,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KA6EjC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KA2E/B,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ExpandableTable, type ExpandableTableProps, type IColumn, type IExpandableTableRowCell, type IExpandableTableRowSection, } from './ExpandableTable';
|
|
1
|
+
export { ExpandableTable, type ExpandableTableProps, type IColumn, type IExpandableTableRowCell, type IExpandableTableRowSection, type ResponsiveBreakpoint, } from './ExpandableTable';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAA"}
|