@jerry-fd/ui 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/antd-data-filter.d.ts +2 -3
- package/antd-data-filter.js +1 -1
- package/antd-data-table.d.ts +24 -250
- package/antd-data-table.js +2 -2
- package/chunk-CU3BCSE2.js +1 -0
- package/chunk-H4KCSH5E.js +2 -0
- package/chunk-ZLJEIJBZ.js +2 -0
- package/index.d.ts +59 -52
- package/index.js +1 -1
- package/package.json +1 -1
- package/{types-BRYHaCob.d.ts → types-P1L_aHdl.d.ts} +9 -2
- package/types-xnXBx9Tt.d.ts +511 -0
- package/button-mRGhVhV8.d.ts +0 -271
- package/chunk-23OVYXGQ.js +0 -2
- package/chunk-BJHN7W7I.js +0 -2
- package/chunk-MQJGKS3C.js +0 -1
- package/icon-BmaneZ4I.d.ts +0 -10
package/antd-data-filter.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { D as DataFilterProps } from './types-
|
|
3
|
-
export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-
|
|
4
|
-
import './icon-BmaneZ4I.js';
|
|
2
|
+
import { D as DataFilterProps } from './types-P1L_aHdl.js';
|
|
3
|
+
export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-P1L_aHdl.js';
|
|
5
4
|
import 'react';
|
|
6
5
|
import 'dayjs';
|
|
7
6
|
|
package/antd-data-filter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{e as DataFilter,a as useTransition}from'./chunk-
|
|
1
|
+
export{e as DataFilter,a as useTransition}from'./chunk-H4KCSH5E.js';import'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';
|
package/antd-data-table.d.ts
CHANGED
|
@@ -1,248 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PaginationProps, TableProps } from 'antd';
|
|
3
|
-
export { PaginationProps as PaginationState, TableProps } from 'antd';
|
|
4
|
-
import { a as FilterColumnOption, b as FiltersState } from './types-BRYHaCob.js';
|
|
1
|
+
import { b as FiltersState } from './types-P1L_aHdl.js';
|
|
5
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import { ColumnType } from 'antd/es/table';
|
|
9
|
-
import * as antd_es_table_interface from 'antd/es/table/interface';
|
|
10
|
-
import { SorterResult, GetRowKey } from 'antd/es/table/interface';
|
|
11
|
-
import { B as Button } from './button-mRGhVhV8.js';
|
|
3
|
+
import { c as BaseRecord, D as DataTableProps, U as UseDataTableStateOptions, P as PaginationConfig, T as ToolbarAction, d as ToolbarItemConfig, e as UseTabsDataTableStateProps, f as DataTableColumnType, g as TabItem } from './types-xnXBx9Tt.js';
|
|
4
|
+
export { h as DEFAULT_TOOLBAR_ITEMS, i as DataTableFilterConfig, S as SerializeOptions, j as SorterState, k as TableChangeHandler, l as TableChangeState, m as TabsTableChangeHandler, s as serializeForPost, n as serializeForPostFlat, o as serializeForURL, p as serializeToURLSearchParams } from './types-xnXBx9Tt.js';
|
|
12
5
|
import * as _rc_component_table from '@rc-component/table';
|
|
13
6
|
import * as _rc_component_table_lib_interface from '@rc-component/table/lib/interface';
|
|
14
7
|
import * as antd_es_button from 'antd/es/button';
|
|
15
8
|
import * as antd_es_table_InternalTable from 'antd/es/table/InternalTable';
|
|
9
|
+
import * as antd_es_table_interface from 'antd/es/table/interface';
|
|
10
|
+
import { SorterResult, TableCurrentDataSource, GetRowKey } from 'antd/es/table/interface';
|
|
11
|
+
import * as antd from 'antd';
|
|
12
|
+
import React__default from 'react';
|
|
16
13
|
import 'dayjs';
|
|
14
|
+
import 'antd/es/table';
|
|
17
15
|
import 'tailwind-variants';
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
/** 渲染 props,传递给自定义组件 */
|
|
21
|
-
interface ToolbarRenderContext<TData = unknown> {
|
|
22
|
-
disabled?: boolean;
|
|
23
|
-
loading?: boolean;
|
|
24
|
-
exporting?: boolean;
|
|
25
|
-
columns: DataTableColumnType<TData>[];
|
|
26
|
-
onAction: (action: ToolbarAction) => void;
|
|
27
|
-
}
|
|
28
|
-
/** 内置 toolbar item */
|
|
29
|
-
type BuiltInToolbarItem = {
|
|
30
|
-
/** 内置 action 类型 */
|
|
31
|
-
type: ToolbarBuiltInActionType;
|
|
32
|
-
/** 唯一标识,默认使用 type */
|
|
33
|
-
key?: string;
|
|
34
|
-
/** 覆盖按钮 props */
|
|
35
|
-
btnProps?: ButtonProps;
|
|
36
|
-
/** tooltip 提示 */
|
|
37
|
-
tooltip?: string;
|
|
38
|
-
/** 是否隐藏 */
|
|
39
|
-
hidden?: boolean;
|
|
40
|
-
};
|
|
41
|
-
/** 自定义 toolbar item */
|
|
42
|
-
type CustomToolbarItem<TData = unknown> = {
|
|
43
|
-
type: 'custom';
|
|
44
|
-
/** 唯一标识,必填 */
|
|
45
|
-
key: string;
|
|
46
|
-
/** 自定义渲染函数 */
|
|
47
|
-
render: (ctx: ToolbarRenderContext<TData>) => React__default.ReactNode;
|
|
48
|
-
/** 是否隐藏 */
|
|
49
|
-
hidden?: boolean;
|
|
50
|
-
};
|
|
51
|
-
/** Toolbar item 类型 */
|
|
52
|
-
type ToolbarItemConfig<TData = any> = ToolbarBuiltInActionType | BuiltInToolbarItem | CustomToolbarItem<TData>;
|
|
53
|
-
/** 默认 toolbar items */
|
|
54
|
-
declare const DEFAULT_TOOLBAR_ITEMS: ToolbarItemConfig[];
|
|
55
|
-
|
|
56
|
-
type SerializeOptions = {
|
|
57
|
-
/** 日期格式,默认 'YYYY-MM-DD' */
|
|
58
|
-
dateFormat?: string;
|
|
59
|
-
/** 分页参数名映射 */
|
|
60
|
-
paginationKeys?: {
|
|
61
|
-
current?: string;
|
|
62
|
-
pageSize?: string;
|
|
63
|
-
};
|
|
64
|
-
/** 排序参数名映射 */
|
|
65
|
-
sorterKeys?: {
|
|
66
|
-
field?: string;
|
|
67
|
-
order?: string;
|
|
68
|
-
};
|
|
69
|
-
/** 筛选参数名映射,默认使用 columnId 作为 key */
|
|
70
|
-
filtersKey?: string;
|
|
71
|
-
/** 排序顺序值映射 */
|
|
72
|
-
orderValues?: {
|
|
73
|
-
ascend?: string;
|
|
74
|
-
descend?: string;
|
|
75
|
-
};
|
|
76
|
-
/**
|
|
77
|
-
* 筛选字段别名映射
|
|
78
|
-
* key: columnId, value: 实际查询参数名
|
|
79
|
-
* @example { p95: 'keyword', name: 'searchName' }
|
|
80
|
-
*/
|
|
81
|
-
fieldMapping?: Record<string, string>;
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* 将 TableChangeState 序列化为 POST 请求的数据结构
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* const postData = serializeForPost(state);
|
|
88
|
-
* // {
|
|
89
|
-
* // current: 1,
|
|
90
|
-
* // pageSize: 10,
|
|
91
|
-
* // sortField: 'age',
|
|
92
|
-
* // sortOrder: 'desc',
|
|
93
|
-
* // filters: {
|
|
94
|
-
* // p95: [12131],
|
|
95
|
-
* // name: ['hahah'],
|
|
96
|
-
* // date: ['2026-01-30'],
|
|
97
|
-
* // tags: ['2026-01-01', '2026-01-10'],
|
|
98
|
-
* // url: ['backlog', 'todo'],
|
|
99
|
-
* // status: ['todo']
|
|
100
|
-
* // }
|
|
101
|
-
* // }
|
|
102
|
-
*/
|
|
103
|
-
declare function serializeForPost<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): Record<string, unknown>;
|
|
104
|
-
/**
|
|
105
|
-
* 将 TableChangeState 序列化为扁平化的 POST 数据(筛选条件直接作为顶级字段)
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* const postData = serializeForPostFlat(state);
|
|
109
|
-
* // {
|
|
110
|
-
* // current: 1,
|
|
111
|
-
* // pageSize: 10,
|
|
112
|
-
* // sortField: 'age',
|
|
113
|
-
* // sortOrder: 'desc',
|
|
114
|
-
* // p95: 12131, // 单值直接展开
|
|
115
|
-
* // name: 'hahah',
|
|
116
|
-
* // date: '2026-01-30',
|
|
117
|
-
* // tags: ['2026-01-01', '2026-01-10'], // 多值保持数组
|
|
118
|
-
* // url: ['backlog', 'todo'],
|
|
119
|
-
* // status: 'todo'
|
|
120
|
-
* // }
|
|
121
|
-
*/
|
|
122
|
-
declare function serializeForPostFlat<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): Record<string, unknown>;
|
|
123
|
-
/**
|
|
124
|
-
* 将 TableChangeState 序列化为 URL 查询参数字符串
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* const queryString = serializeForURL(state);
|
|
128
|
-
* // "current=1&pageSize=10&sortField=age&sortOrder=desc&p95=12131&name=hahah&date=2026-01-30&tags=2026-01-01,2026-01-10&url=backlog,todo&status=todo"
|
|
129
|
-
*/
|
|
130
|
-
declare function serializeForURL<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): string;
|
|
131
|
-
/**
|
|
132
|
-
* 将 TableChangeState 序列化为 URLSearchParams 对象
|
|
133
|
-
*/
|
|
134
|
-
declare function serializeToURLSearchParams<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): URLSearchParams;
|
|
135
|
-
|
|
136
|
-
type TextFilterConfig = {
|
|
137
|
-
type: 'text';
|
|
138
|
-
displayName?: string;
|
|
139
|
-
icon?: IconType;
|
|
140
|
-
};
|
|
141
|
-
type OptionFilterConfig = {
|
|
142
|
-
type: 'option' | 'multiOption';
|
|
143
|
-
options: FilterColumnOption[];
|
|
144
|
-
displayName?: string;
|
|
145
|
-
icon?: IconType;
|
|
146
|
-
};
|
|
147
|
-
type NumberFilterConfig = {
|
|
148
|
-
type: 'number';
|
|
149
|
-
mode?: 'single' | 'range';
|
|
150
|
-
min?: number;
|
|
151
|
-
max?: number;
|
|
152
|
-
step?: number;
|
|
153
|
-
displayName?: string;
|
|
154
|
-
icon?: IconType;
|
|
155
|
-
};
|
|
156
|
-
type DateFilterConfig = {
|
|
157
|
-
type: 'date';
|
|
158
|
-
mode?: 'single' | 'range';
|
|
159
|
-
showTime?: boolean | {
|
|
160
|
-
format: 'HH:mm' | 'HH:mm:ss';
|
|
161
|
-
};
|
|
162
|
-
displayName?: string;
|
|
163
|
-
icon?: IconType;
|
|
164
|
-
};
|
|
165
|
-
type SkeletonVariant = 'text' | 'avatar' | 'double-line' | 'group';
|
|
166
|
-
type DataTableFilterConfig = TextFilterConfig | OptionFilterConfig | NumberFilterConfig | DateFilterConfig;
|
|
167
|
-
type DataTableColumnType<TData> = ColumnType<TData> & {
|
|
168
|
-
hidden?: boolean;
|
|
169
|
-
filter?: DataTableFilterConfig;
|
|
170
|
-
skeleton?: SkeletonVariant;
|
|
171
|
-
};
|
|
172
|
-
type BaseRecord = Record<string, unknown>;
|
|
173
|
-
type SorterState<TData = BaseRecord> = SorterResult<TData> | SorterResult<TData>[];
|
|
174
|
-
type TableChangeState<TData = BaseRecord> = {
|
|
175
|
-
pagination: PaginationProps;
|
|
176
|
-
filters: FiltersState;
|
|
177
|
-
sorter: SorterState<TData>;
|
|
178
|
-
};
|
|
179
|
-
type UseDataTableStateOptions<TData> = {
|
|
180
|
-
id?: string;
|
|
181
|
-
loading?: boolean;
|
|
182
|
-
exporting?: boolean;
|
|
183
|
-
disabled?: boolean;
|
|
184
|
-
fireOnMount?: boolean;
|
|
185
|
-
defaultFilters?: FiltersState;
|
|
186
|
-
defaultPagination?: PaginationProps;
|
|
187
|
-
defaultSorter?: SorterState<TData>;
|
|
188
|
-
serializeOptions?: SerializeOptions;
|
|
189
|
-
serializeFn?: (state: TableChangeState<TData>, options?: SerializeOptions) => BaseRecord;
|
|
190
|
-
onChange?: (serialized: BaseRecord, source: TableChangeState<TData>) => void;
|
|
191
|
-
onToolbarAction?: (action: ToolbarAction) => void | Promise<void>;
|
|
192
|
-
};
|
|
193
|
-
type UseTabsDataTableStateProps<TData extends BaseRecord = BaseRecord> = {
|
|
194
|
-
fireOnMount?: boolean;
|
|
195
|
-
disabled?: boolean;
|
|
196
|
-
active?: string;
|
|
197
|
-
defaultActive?: string;
|
|
198
|
-
tabList: TabItem<TData>[];
|
|
199
|
-
onTabChange?: (value: string) => void;
|
|
200
|
-
onTableChange?: (tableId: string, serialized: BaseRecord, source: TableChangeState<TData>) => void;
|
|
201
|
-
onToolbarAction?: (tableId: string, action: ToolbarAction) => void | Promise<void>;
|
|
202
|
-
};
|
|
203
|
-
type ToolbarBuiltInActionType = 'data_refresh' | 'size_setting' | 'column_setting' | 'data_export' | 'filter_btn';
|
|
204
|
-
type ToolbarAction<T extends BaseRecord = BaseRecord> = {
|
|
205
|
-
action: ToolbarBuiltInActionType | string;
|
|
206
|
-
payload?: T;
|
|
207
|
-
};
|
|
208
|
-
type TabItem<TData extends BaseRecord = BaseRecord> = DataTableProps<TData> & UseDataTableStateOptions<TData> & {
|
|
209
|
-
id: string;
|
|
210
|
-
/** Tab 标签 */
|
|
211
|
-
label: React__default.ReactNode;
|
|
212
|
-
/** Tab 唯一标识 */
|
|
213
|
-
value: string;
|
|
214
|
-
};
|
|
215
|
-
type NamedClass = 'root' | 'cardHeader' | 'cardHeading' | 'cardIcon' | 'cardToolbar' | 'cardContent' | 'cardSummary' | 'cardFooter';
|
|
216
|
-
type DataTableProps<TData extends BaseRecord = BaseRecord> = {
|
|
217
|
-
id: string;
|
|
218
|
-
/** 多 Tab 共享存储时传入,默认使用 id */
|
|
219
|
-
storageKey?: string;
|
|
220
|
-
alwaysShowingColumns?: string[];
|
|
221
|
-
title?: React__default.ReactNode;
|
|
222
|
-
icon?: React__default.ReactNode;
|
|
223
|
-
description?: React__default.ReactNode;
|
|
224
|
-
variant?: 'default' | 'accent';
|
|
225
|
-
slots?: Record<'summary' | 'footer', React__default.ReactNode>;
|
|
226
|
-
classNames?: Partial<Record<NamedClass, string>>;
|
|
227
|
-
columns: DataTableColumnType<TData>[];
|
|
228
|
-
filters?: FiltersState;
|
|
229
|
-
defaultFilters?: FiltersState;
|
|
230
|
-
className?: string;
|
|
231
|
-
toolbarItems?: ToolbarItemConfig<any>[];
|
|
232
|
-
onFiltersChange?: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
|
|
233
|
-
onToolbarAction?: (action: ToolbarAction) => void | Promise<void>;
|
|
234
|
-
loading?: boolean;
|
|
235
|
-
exporting?: boolean;
|
|
236
|
-
disabled?: boolean;
|
|
237
|
-
/** 是否启用动画,默认 true */
|
|
238
|
-
animated?: boolean;
|
|
239
|
-
pagination?: PaginationProps;
|
|
240
|
-
activeTab?: string;
|
|
241
|
-
tabList?: TabItem<TData>[];
|
|
242
|
-
onTabChange?: (value: string) => void;
|
|
243
|
-
} & Omit<TableProps<TData>, 'title' | 'columns' | 'loading' | 'pagination'>;
|
|
244
|
-
|
|
245
|
-
declare function DataTable<TData extends BaseRecord = BaseRecord>({ id, storageKey, alwaysShowingColumns, ...props }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
|
|
17
|
+
declare function DataTable<TData extends BaseRecord = BaseRecord>({ storageKey, alwaysShowingColumns, ...props }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
|
|
246
18
|
|
|
247
19
|
declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id, fireOnMount, defaultFilters: initialFilters, defaultPagination: initialPagination, defaultSorter: initialSorter, serializeOptions, loading, exporting, disabled, serializeFn, onChange, onToolbarAction, }?: UseDataTableStateOptions<TData>): {
|
|
248
20
|
id: string | undefined;
|
|
@@ -250,9 +22,9 @@ declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id,
|
|
|
250
22
|
exporting: boolean | undefined;
|
|
251
23
|
disabled: boolean | undefined;
|
|
252
24
|
filters: FiltersState;
|
|
253
|
-
pagination:
|
|
25
|
+
pagination: PaginationConfig;
|
|
254
26
|
onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
|
|
255
|
-
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra:
|
|
27
|
+
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
|
|
256
28
|
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
257
29
|
};
|
|
258
30
|
/**
|
|
@@ -263,12 +35,16 @@ declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id,
|
|
|
263
35
|
declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>(options?: UseDataTableStateOptions<TData> & {
|
|
264
36
|
rowKey?: string | keyof TData | GetRowKey<TData>;
|
|
265
37
|
}): {
|
|
38
|
+
style?: React__default.CSSProperties & {
|
|
39
|
+
[key: `--${string}`]: string | number;
|
|
40
|
+
};
|
|
266
41
|
storageKey?: string;
|
|
267
42
|
alwaysShowingColumns?: string[];
|
|
268
43
|
title?: React__default.ReactNode;
|
|
269
44
|
icon?: React__default.ReactNode;
|
|
270
45
|
description?: React__default.ReactNode;
|
|
271
46
|
variant?: "default" | "accent";
|
|
47
|
+
total?: number;
|
|
272
48
|
slots?: Record<"summary" | "footer", React__default.ReactNode>;
|
|
273
49
|
classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
|
|
274
50
|
className?: string;
|
|
@@ -278,7 +54,6 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
|
|
|
278
54
|
size?: antd_es_button.ButtonSize;
|
|
279
55
|
caption?: React__default.ReactNode;
|
|
280
56
|
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
281
|
-
style?: React__default.CSSProperties | undefined;
|
|
282
57
|
summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
|
|
283
58
|
children?: React__default.ReactNode;
|
|
284
59
|
onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
|
|
@@ -323,25 +98,28 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
|
|
|
323
98
|
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
324
99
|
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
325
100
|
virtual?: boolean | undefined;
|
|
326
|
-
label: React__default.ReactNode;
|
|
327
|
-
value: string;
|
|
328
101
|
id: string;
|
|
329
102
|
loading: boolean | undefined;
|
|
330
103
|
exporting: boolean | undefined;
|
|
331
104
|
disabled: boolean | undefined;
|
|
332
105
|
filters: FiltersState;
|
|
333
|
-
pagination:
|
|
334
|
-
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra:
|
|
106
|
+
pagination: PaginationConfig;
|
|
107
|
+
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
|
|
335
108
|
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
336
109
|
};
|
|
337
110
|
|
|
338
111
|
declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({ fireOnMount: globalFireOnMount, active, defaultActive, tabList, onTabChange, onTableChange, onToolbarAction, }: UseTabsDataTableStateProps<TData>): {
|
|
112
|
+
activeTabId: string;
|
|
113
|
+
style?: React__default.CSSProperties & {
|
|
114
|
+
[key: `--${string}`]: string | number;
|
|
115
|
+
};
|
|
339
116
|
storageKey?: string;
|
|
340
117
|
alwaysShowingColumns?: string[];
|
|
341
118
|
title?: React__default.ReactNode;
|
|
342
119
|
icon?: React__default.ReactNode;
|
|
343
120
|
description?: React__default.ReactNode;
|
|
344
121
|
variant?: "default" | "accent";
|
|
122
|
+
total?: number;
|
|
345
123
|
slots?: Record<"summary" | "footer", React__default.ReactNode>;
|
|
346
124
|
classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
|
|
347
125
|
columns: DataTableColumnType<TData>[];
|
|
@@ -349,13 +127,11 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
|
|
|
349
127
|
toolbarItems?: ToolbarItemConfig<any>[];
|
|
350
128
|
onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
|
|
351
129
|
animated?: boolean;
|
|
352
|
-
activeTab: string;
|
|
353
130
|
tabList: TabItem<TData>[];
|
|
354
131
|
onTabChange: (value: string) => void;
|
|
355
132
|
size?: antd_es_button.ButtonSize;
|
|
356
133
|
caption?: React__default.ReactNode;
|
|
357
134
|
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
358
|
-
style?: React__default.CSSProperties | undefined;
|
|
359
135
|
summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
|
|
360
136
|
children?: React__default.ReactNode;
|
|
361
137
|
onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
|
|
@@ -400,16 +176,14 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
|
|
|
400
176
|
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
401
177
|
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
402
178
|
virtual?: boolean | undefined;
|
|
403
|
-
label: React__default.ReactNode;
|
|
404
|
-
value: string;
|
|
405
179
|
id: string;
|
|
406
180
|
loading: boolean | undefined;
|
|
407
181
|
exporting: boolean | undefined;
|
|
408
182
|
disabled: boolean | undefined;
|
|
409
183
|
filters: FiltersState;
|
|
410
|
-
pagination:
|
|
184
|
+
pagination: PaginationConfig;
|
|
411
185
|
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: antd_es_table_interface.SorterResult<TData> | antd_es_table_interface.SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
|
|
412
186
|
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
413
187
|
};
|
|
414
188
|
|
|
415
|
-
export {
|
|
189
|
+
export { DataTable, DataTableColumnType, DataTableProps, FiltersState, PaginationConfig, ToolbarAction, UseDataTableStateOptions, useDataTableState, useDataTableStateAdapter, useTabsDataTableState };
|
package/antd-data-table.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {e,a as a$1,b as b$1,c as c$1,g as g$1}from'./chunk-MQJGKS3C.js';import {a,d,b,c}from'./chunk-23OVYXGQ.js';import {f,g,h,l,o,n,p,m,j,i,k,M as M$1,r,s,A,t,B,C,E,D,F,H}from'./chunk-BJHN7W7I.js';import'./chunk-WOT6VMZA.js';import y from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Card,Table,ConfigProvider,Tooltip,Checkbox}from'antd';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var Yt={components:{DatePicker:{activeBorderColor:"#d9d9d9",hoverBorderColor:"#d9d9d9",activeShadow:"none",cellHeight:24,cellWidth:28}}};var mt={tableSize:"middle",columnVisibility:{}},he={tabStates:{},activeTabId:"",loading:false,exporting:false},tt=(t,o)=>{t.tabStates[o]||(t.tabStates[o]={...mt});},Xt=t=>t.tabStates[t.activeTabId]??mt,xe=(t,o)=>({...he,activeTabId:o??"",setActiveTab:e=>t(a=>{a.activeTabId=e,tt(a,e);}),setTableSize:e=>t(a=>{let n=a.activeTabId;tt(a,n),a.tabStates[n].tableSize=e;}),setColumnVisibility:(e,a)=>t(n=>{let i=n.activeTabId;tt(n,i),n.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let n=a.activeTabId;tt(a,n);let i=a.tabStates[n].columnVisibility;a.tabStates[n].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let n=a.activeTabId;tt(a,n);let i=a.tabStates[n].columnVisibility[e];a.tabStates[n].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...mt};})}),ve=(t,o)=>createStore()(persist(immer(e=>xe(e,o)),{name:t,partialize:e=>({tabStates:e.tabStates})})),qt=y.createContext(null),Re=["id","action","actions"],Jt=y.createContext({});function Qt({storageKey:t,initialTabId:o,alwaysShowingColumns:e,children:a}){let n=y.useRef(null);n.current||(n.current=ve(t,o)),y.useEffect(()=>{let r=n.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(o);},[o]);let i=y.useMemo(()=>({alwaysShowingColumns:e??Re}),[e]);return jsx(Jt.Provider,{value:i,children:jsx(qt.Provider,{value:n.current,children:a})})}function Zt(){return y.useContext(Jt)}function M(t){let o=y.useContext(qt);if(!o)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(o,t)}function lt(){return M(t=>Xt(t))}function te(){return M(t=>Xt(t).tableSize)}var Ie={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function oe({count:t,size:o="small",pagination:e$1,classNames:a,columns:n}){let i=y.useCallback(()=>Ae(n,Ie[o]),[n,o]);return jsx(Table,{rowKey:"id",size:o,rowHoverable:false,classNames:a,dataSource:Array.from({length:t},(r,l)=>({id:l})),pagination:e$1,children:n.map((r,l)=>jsx(Table.Column,{dataIndex:r.dataIndex,width:r.width,title:jsx(e,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>l===0?{colSpan:n.length}:{colSpan:0}},r.dataIndex))})}var ae=16;function Ae(t,o){let e=t.length,n=`calc((100% - ${ae*(e-1)}px) / ${e})`,i=t.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",o),style:{gap:`${ae}px`},children:t.map((r,l)=>{let p=r?.key??l;return jsx("div",{style:{width:n},children:we(r.skeleton,i)},p)})})}function we(t,o){switch(t){case "avatar":return jsx(ze,{});case "double-line":return jsx(Ne,{});case "group":return jsx(Fe,{needAlignment:o});default:return jsx(ke,{needAlignment:o})}}function ke({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsx(e,{className:"h-10"})]})}function ze(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(e,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(e,{className:"h-12 w-[60%]"}),jsx(e,{className:"h-10"})]})]})}function Ne(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(e,{className:"h-12 w-[60%]"}),jsx(e,{className:"h-10"})]})}function Fe({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"})]})]})}function ne({className:t,options:o,...e}){return jsx(a$1,{className:f("w-full",t),...e,children:jsx(b$1,{variant:"line",size:"medium",className:"w-full px-12",children:o?.map(a=>jsx(c$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function ie({value:t,className:o,onChange:e,...a$1}){let n=a(),[i,r]=y.useState(false),l=y.useMemo(()=>[{groupType:"radio",value:t,options:[{label:n("large"),value:"large"},{label:n("middle"),value:"middle"},{label:n("compact"),value:"small"}],onValueChange:e}],[e,n,t]);return jsx(g$1,{side:"bottom",align:"end",collisionPadding:6,items:l,className:"min-w-100",open:i,onOpenChange:r,children:jsxs(M$1,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",o,i&&"active"),...a$1,children:[jsx(Tooltip,{title:n("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function Me(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function Ke(t){return typeof t=="string"&&t.length>0}function Ee(t){return [Array.isArray(t.dataIndex)?t.dataIndex.join(" "):typeof t.dataIndex=="string"?t.dataIndex:null,typeof t.title=="string"?t.title:null,t.key!==null?String(t.key):null].filter(Ke)}function le({disabled:t$1,columns:o}){let e=a(),{alwaysShowingColumns:a$1}=Zt(),[n,i]=y.useState(false),{columnVisibility:r$1}=lt(),l=M(s=>s.setColumnVisibilityState),p=y.useCallback((s,c)=>{l(m=>({...m,[s]:c}));},[l]);return jsxs(r,{open:n,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M$1,{mode:"stroke",variant:"neutral",size:"small",className:f(n&&"active","relative gap-0"),disabled:t$1,startContent:jsx(A,{}),children:jsx(Tooltip,{title:e("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:e("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:o.map(s=>{let c=Me(s),m=r$1[c]!==false;return jsxs(H,{keywords:Ee(s),onSelect:()=>p(c,!m),className:"group flex items-center gap-6",value:c,disabled:a$1?.includes(c),children:[jsx(Checkbox,{checked:m,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:s.title})]},c)})})})]})})]})}function $e(t){return typeof t=="string"?{type:t,key:t}:t.type==="custom"?{type:"custom",key:t.key,hidden:t.hidden,render:t.render}:{type:t.type,key:t.key??t.type,hidden:t.hidden,btnProps:t.btnProps,tooltip:t.tooltip}}function Ye({btnProps:t,tooltip:o,disabled:e,loading:a$1,onAction:n}){let i=a(),r=o??i("refresh");return jsx(M$1,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:a$1,disabled:e||a$1,className:"gap-0",onClick:()=>n({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:r,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function je(){let t=te()??"small",o=M(e=>e.setTableSize);return jsx(ie,{value:t,onChange:o})}function Xe({columns:t}){return jsx(le,{columns:t})}function qe({btnProps:t,disabled:o,loading:e,onAction:a$1}){let n=a();return jsx(M$1,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:o||e,onClick:()=>a$1({action:"data_export"}),...t,children:n("data_export")})}var Je={initial:{opacity:0,scale:.75,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.75,x:10,originX:1}},Qe={ease:[.26,.08,.25,1],duration:.25};function ce({items:t,columns:o,disabled:e,loading:a,exporting:n,filter:i,onAction:r,className:l}){let p=y.useMemo(()=>t.map(d=>$e(d)),[t]),s=y.useMemo(()=>p.filter(d=>!d.hidden),[p]),c=y.useCallback(d=>{r?.(d);},[r]),m=y.useMemo(()=>({disabled:e,loading:a,exporting:n,columns:o,onAction:c}),[e,a,n,o,c]),C=d=>{let P={btnProps:d.btnProps,tooltip:d.tooltip,disabled:e,loading:a,onAction:c};switch(d.type){case "data_refresh":return jsx(Ye,{...P});case "size_setting":return jsx(je,{});case "column_setting":return jsx(Xe,{columns:o});case "data_export":return jsx(qe,{...P,loading:n});case "custom":return d.render?.(m);case "filter_btn":return i;default:return null}};return jsx("div",{className:f("flex items-center gap-8",l),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:s.map(d=>jsx(m$1.div,{layout:true,variants:Je,initial:"initial",animate:"animate",exit:"exit",transition:Qe,children:C(d)},d.key))})})}var ft=["data_refresh","size_setting","column_setting","filter_btn"];function de(t){return t.filter(o=>o.filter!==void 0).map(o=>{let{filter:e,dataIndex:a,title:n}=o,i=Array.isArray(a)?a.join("."):a,r=e.displayName??(typeof n=="string"?n:i);return {...e,columnId:i,displayName:r}})}function pe(t){return t.map(({filter:o,...e})=>e)}function ea(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}var aa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"}},oa={hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]},na={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},ra={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},ia={ease:[.26,.08,.25,1],duration:.3};function sa({id:t,title:o$1,icon:e,description:a$1,variant:n$1,classNames:i$1,slots:r,columns:l$1,filters:p$1,defaultFilters:s,loading:c$1,exporting:m$2,disabled:C,animated:d$1=true,pagination:P,style:O,toolbarItems:Y,activeTab:_,tabList:w,onTabChange:k$1,onFiltersChange:ot,onToolbarAction:nt,...q}){let J=a(),g$1=M(N=>N.setActiveTab),S=M(N=>N.activeTabId),{tableSize:v,columnVisibility:rt}=lt();y.useEffect(()=>{t&&t!==S&&g$1(t);},[t,S,g$1]);let I=y.useMemo(()=>l$1.filter(N=>N.hidden!==true),[l$1]),h$1=y.useMemo(()=>de(I),[I]),Q=y.useMemo(()=>pe(I),[I]),[K,Z]=d({filters:p$1,defaultFilters:s,onFiltersChange:ot}),L=y.useMemo(()=>Q.filter(N=>{let ge=ea(N);return rt[ge]!==false}),[Q,rt]),U=y.useCallback(N=>J("pagination_total").replace("{total}",String(N)),[J]),j$1=y.useMemo(()=>({showTotal:U,disabled:c$1||C,size:v==="large"?"middle":v,...oa,...P}),[U,c$1,C,v,P]),it={...aa,header:{cell:q?.bordered?"":f("border-t border-stroke-antd first:border-l last:border-r")}},st=w&&Array.isArray(w),dt=Math.min(j$1.pageSize??j$1.defaultPageSize??10,15),f$1=!!(c$1&&L.some(N=>N.skeleton)),F=h$1.length!==0,x=K&&K.length!==0,z=jsx(b,{columns:h$1,filters:K,actions:Z,className:"flex flex-wrap gap-6",enableAutoClose:true}),E=f$1?jsx(oe,{id:`${t}-skeleton`,columns:L,size:v,count:dt,className:"bg-bg-white",classNames:it,pagination:j$1}):jsx(Table,{id:`${t}-data-table`,columns:L,className:"bg-bg-white",classNames:it,pagination:j$1,size:v,loading:c$1,...q}),pt=n$1==="accent";return jsx(ConfigProvider,{theme:Yt,children:jsxs(g,{style:O,className:f("rounded-2xl",i$1?.root),variant:n$1,children:[jsxs(h,{className:f("px-14 pt-12 pb-10",pt&&"pt-10",st&&"border-b-0",i$1?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",i$1?.cardHeading),children:[e&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(o$1&&a$1)&&"size-44 [&_svg]:size-24",i$1?.cardIcon),children:e}),o$1&&jsxs("div",{className:f(a$1&&"flex flex-col gap-4"),children:[jsx(n,{children:o$1}),a$1&&jsx(p,{children:a$1})]})]}),jsx(m,{className:i$1?.cardToolbar,children:jsx(ce,{onAction:nt,items:Y??ft,loading:c$1,disabled:C,exporting:m$2,filter:F&&jsx(c,{columns:h$1,filters:K,actions:Z,align:"end",enableAutoBack:true},`${t}-filter`),columns:I})})]}),r?.summary&&jsx(j,{className:f("p-16",i$1?.cardSummary),children:r?.footer}),st&&jsx(j,{className:"p-0",children:jsx(ne,{value:_,options:w,onValueChange:k$1})}),jsx(i,{className:f("overflow-hidden p-12 pt-16 pb-8",i$1?.cardContent),children:d$1?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsxs(m$1.div,{variants:ra,initial:"initial",animate:"animate",exit:"exit",custom:x,transition:ia,children:[jsx(AnimatePresence,{initial:false,children:x&&jsxs(m$1.div,{variants:na,initial:"initial",animate:"animate",exit:"exit",children:[z,jsx("div",{className:"h-14"})]},S)}),E]},S)}):jsxs(Fragment,{children:[x&&jsx("div",{className:"mb-16",children:z}),E]})}),r?.footer&&jsx(k,{className:f("p-16",i$1?.cardFooter),children:r?.footer})]})})}function la({id:t,storageKey:o,alwaysShowingColumns:e,...a}){let n=o??"UI_TABLE_CONFIG";if(!import.meta.env?.VITE_MOCK_API_SSR){let{title:i,...r}=ca(a);return jsx(Card,{title:i,children:jsx(Table,{id:t,...r})})}return jsx(Qt,{storageKey:n,initialTabId:t,alwaysShowingColumns:e,children:jsx(sa,{id:t,...a})})}function ca(t){let o=t.columns.map(({render:e,...a})=>({...a}));return {...t,columns:o}}var gt={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function yt(t,o){return o[t]??t}function pa(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function St(t,o){return t==null?null:pa(t)?t.format(o):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function ua(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r={};a.current!==void 0&&(r[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r[e.sorterKeys.field]=String(l.field),r[e.sorterKeys.order]=e.orderValues[l.order]??l.order);let p={};for(let s of n){let c=yt(s.columnId,e.fieldMapping);p[c]=s.values.map(m=>St(m,e.dateFormat));}return Object.keys(p).length>0&&(r[e.filtersKey]=p),r}function at(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r={};a.current!==void 0&&(r[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r[e.sorterKeys.field]=String(l.field),r[e.sorterKeys.order]=e.orderValues[l.order]??l.order);for(let p of n){let s=yt(p.columnId,e.fieldMapping),c=p.values.map(m=>St(m,e.dateFormat));r[s]=c.length===1?c[0]:c;}return r}function be(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r=new URLSearchParams;a.current!==void 0&&r.set(e.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&r.set(e.paginationKeys.pageSize,String(a.pageSize));let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r.set(e.sorterKeys.field,String(l.field)),r.set(e.sorterKeys.order,e.orderValues[l.order]??l.order));for(let p of n){let s=yt(p.columnId,e.fieldMapping),c=p.values.map(m=>St(m,e.dateFormat));r.set(s,c.join(","));}return r.toString()}function ma(t,o={}){let e=be(t,o);return new URLSearchParams(e)}var Ta=[],ba={current:1,pageSize:10};function fe(){return {filters:Ta,pagination:ba,sorter:{}}}function fa(t){let o=new Map,e=fe();for(let a of t)o.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter});return o}function Dt({fireOnMount:t=true,active:o,defaultActive:e,tabList:a,onTabChange:n,onTableChange:i,onToolbarAction:r}){let[l,p]=y.useState(()=>e??a[0]?.value??""),s=o??l,[c,m]=y.useState(()=>fa(a)),C=y.useMemo(()=>a.find(f=>f.value===s)??a[0],[s,a]),{id:d,fireOnMount:P=t,loading:O,exporting:Y,disabled:_,serializeOptions:w={},serializeFn:k=at,defaultFilters:ot,defaultPagination:nt,defaultSorter:q,filters:J,pagination:g,onChange:S,onToolbarAction:v,...rt}=C,I=y.useMemo(()=>fe(),[]),h=y.useMemo(()=>c.get(s)??I,[c,s,I]),Q=y.useRef(i),K=y.useRef(r),Z=y.useRef(S),L=y.useRef(v);Q.current=i,K.current=r,Z.current=S,L.current=v;let U=y.useRef(new Map);y.useEffect(()=>{U.current.has(s)||U.current.set(s,!P);},[s,P]);let j=y.useCallback(f=>{p(f),n?.(f);},[n]),it=y.useCallback(f=>{m(F=>{let x=new Map(F),z=x.get(s)??I,E=typeof f=="function"?f(z.filters):f;return x.set(s,{...z,filters:E,pagination:{...z.pagination,current:1}}),x});},[s,I]),st=y.useCallback((f,F,x)=>{m(z=>{let E=new Map(z),pt=E.get(s)??I;return E.set(s,{...pt,pagination:f,sorter:x}),E});},[s,I]),dt=y.useCallback(f=>{if(f.action==="data_export"){let F={pagination:h.pagination,filters:h.filters,sorter:h.sorter},x=k(F,w),z={action:f.action,payload:x};L.current?.(z),K.current?.(d,z);return}L.current?.(f),K.current?.(d,f);},[d,h,k,w]);return y.useEffect(()=>{if(U.current.get(s)){U.current.set(s,false);return}let F={pagination:h.pagination,filters:h.filters,sorter:h.sorter},x=k(F,w);Z.current?.(x,F),Q.current?.(d,x,F);},[s,d,h,k,w]),{activeTab:s,tabList:a,onTabChange:j,id:d,loading:O,exporting:Y,disabled:_||Y,filters:h.filters,pagination:h.pagination,onFiltersChange:it,onChange:st,onToolbarAction:dt,...rt}}var ga=[],ya={},Sa={current:1,pageSize:10};function Da({id:t,fireOnMount:o=true,defaultFilters:e=ga,defaultPagination:a=Sa,defaultSorter:n=ya,serializeOptions:i={},loading:r,exporting:l,disabled:p,serializeFn:s=at,onChange:c,onToolbarAction:m}={}){let C=y.useRef(!o),d=y.useRef(c),P=y.useRef(m);d.current=c,P.current=m;let[O,Y]=y.useState(e),[_,w]=y.useState(a),[k,ot]=y.useState(n),nt=y.useCallback(g=>{Y(S=>typeof g=="function"?g(S):g),w(S=>({...S,current:1}));},[]),q=y.useCallback((g,S,v)=>{w(g),ot(v);},[]),J=y.useCallback(g=>{if(g.action==="data_export"){let v=s({pagination:_,filters:O,sorter:k},i);P.current?.({action:g.action,payload:v});return}P.current?.(g);},[O,_,s,i,k]);return y.useEffect(()=>{if(C.current){C.current=false;return}let g={pagination:_,filters:O,sorter:k},S=s(g,i);d.current?.(S,g);},[_,O,k,s,i]),{id:t,loading:r,exporting:l,disabled:p||l,filters:O,pagination:_,onFiltersChange:nt,onChange:q,onToolbarAction:J}}function Ca(t={}){let{id:o="default",onChange:e,onToolbarAction:a,...n}=t,i=Dt({fireOnMount:t.fireOnMount,tabList:[{id:o,value:o,label:"",columns:[],...n}],onTableChange:e?(m,C,d)=>e(C,d):void 0,onToolbarAction:a?(m,C)=>a(C):void 0}),{activeTab:r,tabList:l,columns:p,onTabChange:s,...c}=i;return c}
|
|
2
|
-
export{
|
|
1
|
+
import {b,c as c$1,i as i$1,e,f as f$1,g as g$1,k as k$1}from'./chunk-CU3BCSE2.js';import {a,d,b as b$1,c}from'./chunk-H4KCSH5E.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C as C$1,E,D,F,H as H$1}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import C from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var ct={components:{DatePicker:{activeBorderColor:"#d9d9d9",hoverBorderColor:"#d9d9d9",activeShadow:"none",cellHeight:24,cellWidth:28}}};var De={tableSize:"middle",columnVisibility:{}},qt={tabStates:{},activeTabId:"",loading:false,exporting:false},ae=(e,o)=>{e.tabStates[o]||(e.tabStates[o]={...De});},dt=e=>e.tabStates[e.activeTabId]??De,Xt=(e,o)=>({...qt,activeTabId:o??"",setActiveTab:t=>e(a=>{a.activeTabId=t,ae(a,t);}),setTableSize:t=>e(a=>{let n=a.activeTabId;ae(a,n),a.tabStates[n].tableSize=t;}),setColumnVisibility:(t,a)=>e(n=>{let i=n.activeTabId;ae(n,i),n.tabStates[i].columnVisibility[t]=a;}),setColumnVisibilityState:t=>e(a=>{let n=a.activeTabId;ae(a,n);let i=a.tabStates[n].columnVisibility;a.tabStates[n].columnVisibility=typeof t=="function"?t(i):t;}),toggleColumnVisibility:t=>e(a=>{let n=a.activeTabId;ae(a,n);let i=a.tabStates[n].columnVisibility[t];a.tabStates[n].columnVisibility[t]=!i;}),setLoading:t=>e({loading:t}),setExporting:t=>e({exporting:t}),resetCurrentTabState:()=>e(t=>{let a=t.activeTabId;t.tabStates[a]={...De};})}),Jt=(e,o)=>createStore()(persist(immer(t=>Xt(t,o)),{name:e,partialize:t=>({tabStates:t.tabStates})})),ut=C.createContext(null),Qt=["id","action","actions"],pt=C.createContext({});function mt({storageKey:e,initialTabId:o,alwaysShowingColumns:t,children:a}){let n=C.useRef(null);n.current||(n.current=Jt(e,o)),C.useEffect(()=>{let r=n.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(o);},[o]);let i=C.useMemo(()=>({alwaysShowingColumns:t??Qt}),[t]);return jsx(pt.Provider,{value:i,children:jsx(ut.Provider,{value:n.current,children:jsx(ConfigProvider,{theme:ct,children:a})})})}function bt(){return C.useContext(pt)}function H(e){let o=C.useContext(ut);if(!o)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(o,e)}function me(){return H(e=>dt(e))}function Tt(){return H(e=>dt(e).tableSize)}var ea={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function yt({count:e,size:o="small",classNames:t,columns:a,scroll:n}){let i=C.useCallback(()=>ta(a,ea[o]),[a,o]);return jsx(Table,{rowKey:"id",size:o,rowHoverable:false,classNames:t,dataSource:Array.from({length:e},(r,s)=>({id:s})),pagination:false,scroll:n,children:a.map((r,s)=>jsx(Table.Column,{dataIndex:r.dataIndex,width:r.width,title:jsx(i$1,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>s===0?{colSpan:a.length}:{colSpan:0}},r.dataIndex))})}var gt=16;function ta(e,o){let t=e.length,n=`calc((100% - ${gt*(t-1)}px) / ${t})`,i=e.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",o),style:{gap:`${gt}px`},children:e.map((r,s)=>{let u=r?.key??s;return jsx("div",{style:{width:n},children:aa(r.skeleton,i)},u)})})}function aa(e,o){switch(e){case "avatar":return jsx(na,{});case "double-line":return jsx(ra,{});case "group":return jsx(ia,{needAlignment:o});default:return jsx(oa,{needAlignment:o})}}function oa({needAlignment:e}){return jsxs("div",{className:"grid h-full gap-4",children:[e&&jsx("div",{className:"h-12 w-1"}),jsx(i$1,{className:"h-10"})]})}function na(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(i$1,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})]})}function ra(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})}function ia({needAlignment:e}){return jsxs("div",{className:"grid h-full gap-4",children:[e&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"})]})]})}function St({className:e$1,options:o,...t}){return jsx(e,{className:f("w-full",e$1),...t,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:o?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function Dt({value:e,className:o,onChange:t,...a$1}){let n=a(),[i,r]=C.useState(false),s=C.useMemo(()=>[{groupType:"radio",value:e,options:[{label:n("large"),value:"large"},{label:n("middle"),value:"middle"},{label:n("compact"),value:"small"}],onValueChange:t}],[t,n,e]);return jsx(k$1,{side:"bottom",align:"end",collisionPadding:6,items:s,className:"min-w-100",open:i,onOpenChange:r,children:jsxs(M,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",o,i&&"active"),...a$1,children:[jsx(Tooltip,{title:n("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function be(e){return e.key?String(e.key):Array.isArray(e.dataIndex)?e.dataIndex.join("."):String(e.dataIndex)}function ca(e){return typeof e=="string"&&e.length>0}function ht(e){return [Array.isArray(e.dataIndex)?e.dataIndex.join(" "):typeof e.dataIndex=="string"?e.dataIndex:null,typeof e.title=="string"?e.title:null,e.key!==null?String(e.key):null].filter(ca)}function vt({disabled:e,columns:o}){let t$1=a(),{alwaysShowingColumns:a$1}=bt(),[n,i]=C.useState(false),{columnVisibility:r$1}=me(),s$1=H(l=>l.setColumnVisibilityState),u=C.useCallback((l,d)=>{s$1(m=>({...m,[l]:d}));},[s$1]);return jsxs(r,{open:n,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(n&&"active","relative gap-0"),disabled:e,startContent:jsx(A,{}),children:jsx(Tooltip,{title:t$1("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C$1,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:t$1("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:o.map(l=>{let d=be(l),m=r$1[d]!==false;return jsxs(H$1,{keywords:ht(l),onSelect:()=>u(d,!m),className:"group flex items-center gap-6",value:d,disabled:a$1?.includes(d),children:[jsx(Checkbox,{checked:m,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(e){return typeof e=="string"?{type:e,key:e}:e.type==="custom"?{type:"custom",key:e.key,hidden:e.hidden,render:e.render}:{type:e.type,key:e.key??e.type,hidden:e.hidden,btnProps:e.btnProps,tooltip:e.tooltip}}function ya({btnProps:e,tooltip:o,disabled:t,loading:a$1,onAction:n}){let i=a(),r=o??i("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:a$1,disabled:t||a$1,className:"gap-0",onClick:()=>n({action:"data_refresh"}),...e,children:jsx(Tooltip,{title:r,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function Sa(){let e=Tt()??"small",o=H(t=>t.setTableSize);return jsx(Dt,{value:e,onChange:o})}function Ca({columns:e}){return jsx(vt,{columns:e})}function Da({btnProps:e,disabled:o,loading:t,onAction:a$1}){let n=a();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:t,disabled:o||t,onClick:()=>a$1({action:"data_export"}),...e,children:n("data_export")})}var ha={initial:{opacity:0,scale:.85,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.85,x:10,originX:1}},xa={ease:[.26,.08,.25,1],duration:.25};function Rt({items:e,columns:o,disabled:t,loading:a,exporting:n,filter:i,onAction:r,className:s}){let u=C.useMemo(()=>e.map(c=>ga(c)),[e]),l=C.useMemo(()=>u.filter(c=>!c.hidden),[u]),d=C.useCallback(c=>{r?.(c);},[r]),m=C.useMemo(()=>({disabled:t,loading:a,exporting:n,columns:o,onAction:d}),[t,a,n,o,d]),z=c=>{let f={btnProps:c.btnProps,tooltip:c.tooltip,disabled:t,loading:a,onAction:d};switch(c.type){case "data_refresh":return jsx(ya,{...f});case "size_setting":return jsx(Sa,{});case "column_setting":return jsx(Ca,{columns:o});case "data_export":return jsx(Da,{...f,loading:n});case "custom":return c.render?.(m);case "filter_btn":return i;default:return null}};return jsx("div",{className:f("flex items-center gap-8",s),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:l.map(c=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:z(c)},c.key))})})}var ve=["data_refresh","size_setting","column_setting","filter_btn"];function Pt(e){return e.filter(o=>o.filter!==void 0).map(o=>{let{filter:t,dataIndex:a,title:n}=o,i=Array.isArray(a)?a.join("."):a,r=t.displayName??(typeof n=="string"?n:i);return {...t,columnId:i,displayName:r}})}function wt(e){return e.map(({filter:o,...t})=>t)}var va=31,Ra=44,Pa={},At=0,Pe=e=>{if(!e)return 0;let o=e.querySelectorAll(':scope > [data-id^="data-table-card-"]'),t=0;return o.forEach(a=>{let n=a.getAttribute("data-id")==="data-table-card-content";t+=n?0:a.clientHeight;}),document.documentElement.clientHeight-At-window.scrollY-va-Ra-t-3},It=e=>{At=e?.offsetTop??0;};function zt(e,o,{x:t="max-content",y:a,...n}=Pa){let[i,r]=C.useState(a);return C.useLayoutEffect(()=>{It(e.current);let s=c$1(()=>{It(e.current),r(Pe(e.current));},250);return window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s);}},[e]),C.useEffect(()=>{if(a!==void 0)return;r(Pe(e.current));let s=setTimeout(()=>{r(Pe(e.current));},350);return ()=>{clearTimeout(s);}},[a,o,e]),{x:t,y:i,...n}}var Aa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},za={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},Na={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},ka={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},Fa={ease:[.26,.08,.25,1],duration:.3};function Ba({id:e,activeTabId:o$1,tabList:t,title:a$1,icon:n$1,description:i$1,variant:r,classNames:s,slots:u,columns:l$1,filters:d$1,defaultFilters:m$2,total:z,pagination:c$1,defaultPagination:f$1,loading:D,exporting:q,disabled:N,animated:M=true,style:k$1,toolbarItems:ie,onTabChange:$,onChange:W,onFiltersChange:se,onToolbarAction:le,..._}){let g$1=a(),F=H(v=>v.setActiveTab),L=H(v=>v.activeTabId),{tableSize:V,columnVisibility:E}=me();C.useEffect(()=>{e&&e!==L&&F(e);},[e,L,F]);let y=C.useMemo(()=>l$1.filter(v=>v.hidden!==true),[l$1]),X=C.useMemo(()=>Pt(y),[y]),J=C.useMemo(()=>wt(y),[y]),[U,Q]=d({filters:d$1,defaultFilters:m$2,onFiltersChange:se}),G=C.useMemo(()=>J.filter(v=>E[be(v)]!==false),[J,E]),O=C.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[ce,fe]=C.useState(()=>({current:c$1?.current??f$1?.current??1,pageSize:c$1?.pageSize??f$1?.pageSize??10})),de=C.useCallback(v=>g$1("pagination_total").replace("{total}",String(v)),[g$1]),S=C.useCallback((v,ye,ue,Et)=>{let{pagination:Kt,filters:Ht,sorter:Lt,extra:Ut}=O.current={...O.current,filters:ye,sorter:ue,extra:Et};W?.(Kt,Ht,Lt,Ut);},[W]),I=C.useCallback((v,ye)=>{let ue={...c$1,current:v,pageSize:ye};O.current={...O.current,pagination:ue},fe(ue),W?.(O.current.pagination,O.current.filters,O.current.sorter,O.current.extra);},[W,c$1]),x=C.useMemo(()=>({disabled:D||N,size:V==="large"?"middle":V,...f$1,showTotal:de,onChange:I,onShowSizeChange:I,...c$1,...ce,total:z}),[D,N,V,de,c$1,I,f$1,ce,z]),B=C.useMemo(()=>({...Aa,header:{cell:_.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[_.bordered]),Z=t&&Array.isArray(t),te=Math.min(x.pageSize??x.defaultPageSize??10,15),ge=!!(D&&G.some(v=>v.skeleton)),Ot=X.length!==0,Ne=U&&U.length!==0,ke=C.useRef(null),Mt=C.useMemo(()=>_.scroll,[_.scroll]),Fe=zt(ke,`${U?.length}-${o$1??e}`,Mt),Be=ge?jsx(yt,{id:`${e}-skeleton`,columns:G,size:V,count:te,classNames:B,scroll:Fe}):jsx(Table,{id:`${e}-data-table`,columns:G,classNames:B,pagination:false,size:V,loading:D,showSorterTooltip:false,onChange:S,..._,scroll:Fe}),Vt=r==="accent",_e=jsx(b$1,{columns:X,filters:U,actions:Q,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",enableAutoClose:true});return jsxs(g,{ref:ke,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:k$1,variant:r,children:[jsxs(h,{"data-id":"data-table-card-header",className:f("data-table-card-header grow-0 px-14 pt-12 pb-10",Vt&&"pt-10",Z&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[n$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a$1&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:n$1}),a$1&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a$1}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(Rt,{onAction:le,items:ie??ve,loading:D,disabled:N,exporting:q,filter:Ot&&jsx(c,{columns:X,filters:U,actions:Q,align:"end",enableAutoBack:true},`${e}-filter`),columns:y})})]}),u?.summary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:u?.summary}),Z&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(St,{value:o$1,options:t,onValueChange:$})}),jsx(AnimatePresence,{initial:false,children:Ne&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:Na,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:_e})},o$1)}),jsx(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",s?.cardContent),children:M?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:ka,initial:"initial",animate:"animate",exit:"exit",transition:Fa,children:Be},o$1)}):jsxs(Fragment,{children:[Ne&&jsx("div",{className:"mb-16",children:_e}),Be]})}),jsx(k,{"data-id":"data-table-card-pager",className:"flex min-h-64 w-full grow-0 items-center justify-between",children:jsx(Pagination,{classNames:za,...x})}),u?.footer&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:u?.footer})]})}var _a=import.meta.env?.VITE_MOCK_API_SSR;function Oa({storageKey:e,alwaysShowingColumns:o,...t}){let{tableStateStorageKey:a,pagination:n}=b(),i=e??a??"APP_UI_TABLE_CONFIG";if(_a)return jsx(mt,{initialTabId:t.activeTabId??t.id,storageKey:i,alwaysShowingColumns:o,children:jsx(Ba,{defaultPagination:n,...t})});let{title:r,port:s,host:u,url:l,method:d,...m}=Ma(t);return jsx(Card,{title:r,children:jsx(Table,{id:t.id,...m})})}function Ma(e){let o=e.columns.map(({render:t,port:a,host:n,method:i,...r})=>({...r}));return {...e,columns:o}}var we={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function Ie(e,o){return o[e]??e}function Ea(e){return e!==null&&typeof e=="object"&&"$d"in e&&typeof e.format=="function"}function Ae(e,o){return e==null?null:Ea(e)?e.format(o):typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:String(e)}function Ka(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r={};a.current!==void 0&&(r[t.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[t.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[t.sorterKeys.field]=String(s.field),r[t.sorterKeys.order]=t.orderValues[s.order]??s.order);let u={};for(let l of n){let d=Ie(l.columnId,t.fieldMapping);u[d]=l.values.map(m=>Ae(m,t.dateFormat));}return Object.keys(u).length>0&&(r[t.filtersKey]=u),r}function re(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r={};a.current!==void 0&&(r[t.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[t.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[t.sorterKeys.field]=String(s.field),r[t.sorterKeys.order]=t.orderValues[s.order]??s.order);for(let u of n){let l=Ie(u.columnId,t.fieldMapping),d=u.values.map(m=>Ae(m,t.dateFormat));r[l]=d.length===1?d[0]:d;}return r}function Bt(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r=new URLSearchParams;a.current!==void 0&&r.set(t.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&r.set(t.paginationKeys.pageSize,String(a.pageSize));let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r.set(t.sorterKeys.field,String(s.field)),r.set(t.sorterKeys.order,t.orderValues[s.order]??s.order));for(let u of n){let l=Ie(u.columnId,t.fieldMapping),d=u.values.map(m=>Ae(m,t.dateFormat));r.set(l,d.join(","));}return r.toString()}function Ha(e,o={}){let t=Bt(e,o);return new URLSearchParams(t)}var La=[],Ua={current:1,pageSize:10},Ga={};function _t(){return {filters:La,pagination:Ua,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function $a(e){let o=new Map,t=_t();for(let a of e)o.set(a.value,{filters:a.defaultFilters??a.filters??t.filters,pagination:a.defaultPagination??a.pagination??t.pagination,sorter:a.defaultSorter??t.sorter,extra:t.extra});return o}function ze({fireOnMount:e=true,active:o,defaultActive:t,tabList:a,onTabChange:n,onTableChange:i,onToolbarAction:r}){let[s,u]=C.useState(()=>t??a[0]?.value??""),l=o??s,[d,m]=C.useState(()=>$a(a)),z=C.useMemo(()=>a.find(S=>S.value===l)??a[0],[l,a]),{id:c,fireOnMount:f=e,loading:D,exporting:q,disabled:N,serializeOptions:M=Ga,serializeFn:k=re,defaultFilters:ie,defaultPagination:$,defaultSorter:W,filters:se,pagination:le,onChange:_,onToolbarAction:g,value:F,label:L,...V}=z,E=C.useMemo(()=>_t(),[]),y=C.useMemo(()=>d.get(l)??E,[d,l,E]),X=C.useRef(i),J=C.useRef(r),U=C.useRef(_),Q=C.useRef(g);X.current=i,J.current=r,U.current=_,Q.current=g;let G=C.useRef(new Map);C.useEffect(()=>{G.current.has(l)||G.current.set(l,!f);},[l,f]);let O=C.useCallback(S=>{u(S),n?.(S);},[n]),ce=C.useCallback(S=>{m(I=>{let x=new Map(I),B=x.get(l)??E,Z=typeof S=="function"?S(B.filters):S;return x.set(l,{...B,filters:Z,pagination:{...B.pagination,current:1}}),x});},[l,E]),fe=C.useCallback((S,I,x,B)=>{m(Z=>{let te=new Map(Z),ge=te.get(l)??E;return te.set(l,{...ge,pagination:S,sorter:x,extra:B}),te});},[l,E]),de=C.useCallback(S=>{if(S.action==="data_export"){let I={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},x=k(I,M),B={action:S.action,payload:x};Q.current?.(B),J.current?.(c,B);return}Q.current?.(S),J.current?.(c,S);},[c,y,k,M]);return C.useEffect(()=>{if(G.current.get(l)){G.current.set(l,false);return}let I={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},x=k(I,M);U.current?.(x,I),X.current?.(c,x,I);},[l,c,y,k,M]),{activeTabId:l,tabList:a,onTabChange:O,id:c,loading:D,exporting:q,disabled:N||q,filters:y.filters,pagination:y.pagination,onFiltersChange:ce,onChange:fe,onToolbarAction:de,...V}}var Wa=[],Ya={},ja={action:"paginate",currentDataSource:[]},qa={current:1,pageSize:10};function Xa({id:e,fireOnMount:o=true,defaultFilters:t=Wa,defaultPagination:a=qa,defaultSorter:n=Ya,serializeOptions:i={},loading:r,exporting:s,disabled:u,serializeFn:l=re,onChange:d,onToolbarAction:m}={}){let z=C.useRef(!o),c=C.useRef(d),f=C.useRef(m);c.current=d,f.current=m;let[D,q]=C.useState(t),[N,M]=C.useState(a),[k,ie]=C.useState(n),[$,W]=C.useState(ja),se=C.useCallback(g=>{q(F=>typeof g=="function"?g(F):g),M(F=>({...F,current:1}));},[]),le=C.useCallback((g,F,L,V)=>{M(g),ie(L),W(V);},[]),_=C.useCallback(g=>{if(g.action==="data_export"){let L=l({pagination:N,filters:D,sorter:k,extra:$},i);f.current?.({action:g.action,payload:L});return}f.current?.(g);},[D,N,k,$,l,i]);return C.useEffect(()=>{if(z.current){z.current=false;return}let g={pagination:N,filters:D,sorter:k,extra:$},F=l(g,i);c.current?.(F,g);},[N,D,k,$,l,i]),{id:e,loading:r,exporting:s,disabled:u||s,filters:D,pagination:N,onFiltersChange:se,onChange:le,onToolbarAction:_}}function Ja(e={}){let{id:o="default",onChange:t,onToolbarAction:a,...n}=e,i=C.useCallback((c,f,D)=>{t?.(f,D);},[t]),r=C.useCallback((c,f)=>{a?.(f);},[a]),s=ze({fireOnMount:e.fireOnMount,tabList:[{id:o,value:o,label:"",columns:[],total:e.total,...n}],onTableChange:t?i:void 0,onToolbarAction:a?r:void 0}),{activeTabId:u,tabList:l,columns:d,onTabChange:m,...z}=s;return z}
|
|
2
|
+
export{ve as DEFAULT_TOOLBAR_ITEMS,Oa as DataTable,Ka as serializeForPost,re as serializeForPostFlat,Bt as serializeForURL,Ha as serializeToURLSearchParams,Xa as useDataTableState,Ja as useDataTableStateAdapter,ze as useTabsDataTableState};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {e,f,a as a$1,N}from'./chunk-ZLJEIJBZ.js';import {a}from'./chunk-WOT6VMZA.js';import {LazyMotion}from'motion/react';import z from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Tabs,DropdownMenu}from'radix-ui';import {Circle,Check,ChevronRight}from'lucide-react';var R=Symbol.for("@@jerry-fe/ui/UIProviderContext");function se(){if(!globalThis[R]){let e=z.createContext(null);globalThis[R]=e;}return globalThis[R]}var de=()=>import('./motion-features-NSSC2G6R.js').then(e=>e.default),E=se(),le={hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]},pe=({locale:e="zh-CN",tableStateStorageKey:t="APP_UI_TABLE_CONFIG",pagination:o=le,children:n})=>{let r=z.useMemo(()=>({tableStateStorageKey:t,pagination:o}),[t,o]);return jsx(LazyMotion,{features:de,strict:true,children:jsx(E.Provider,{value:r,children:jsx(a$1,{locale:e,children:n})})})};pe.displayName="UIProvider";function Ie(){let e=z.useContext(E);if(!e)throw new Error("useUiState must be used within UIProvider");return e}function ze(e,t,o=true,n=true){let r;return (...i)=>{r?(clearTimeout(r),r=void 0):o&&e(...i),r=self.setTimeout(()=>{n&&e(...i),r=void 0;},t);}}function Se(e,t,o=true){let n,r,i;return (...f)=>{r=true,i=f,n||(o&&(r=false,e(...i)),n=self.setInterval(()=>{if(!r){self.clearInterval(n),n=void 0;return}r=false,e(...i);},t));}}var xe={};a(xe,{Root:()=>fe,Tabs:()=>fe,TabsContent:()=>ve,TabsList:()=>be,TabsTrigger:()=>ge});var ue=e({base:"flex w-fit shrink-0 items-center",variants:{variant:{default:"bg-bg-antd p-4",button:"",line:"border-b border-stroke-antd"},shape:{default:"",pill:""},size:{large:"gap-10",medium:"gap-8",small:"gap-6",xsmall:"gap-4"}},compoundVariants:[{variant:"default",size:"large",className:"gap-10 p-6"},{variant:"default",size:"medium",className:"gap-4 p-4"},{variant:"default",size:"small",className:"gap-6 p-4"},{variant:"default",size:"xsmall",className:"gap-4 p-4"},{variant:"default",shape:"default",size:"large",className:"rounded-lg"},{variant:"default",shape:"default",size:"medium",className:"rounded-lg"},{variant:"default",shape:"default",size:"small",className:"rounded-md"},{variant:"default",shape:"default",size:"xsmall",className:"rounded-md"},{variant:"line",size:"large",className:"gap-28"},{variant:"line",size:"medium",className:"gap-28"},{variant:"line",size:"small",className:"gap-16"},{variant:"line",size:"xsmall",className:"gap-16"},{variant:"default",shape:"pill",className:"rounded-full **:[[role=tab]]:rounded-full"},{variant:"button",shape:"pill",className:"rounded-full **:[[role=tab]]:rounded-full"}],defaultVariants:{variant:"default",size:"medium"}}),me=e({base:"inline-flex shrink-0 cursor-pointer items-center justify-center border-0 bg-transparent font-medium whitespace-nowrap ring-offset-1 transition-colors select-none focus-visible:ring-2 focus-visible:ring-primary-base focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg]:text-text-soft [&:hover_svg]:text-primary-base [&[data-state=active]_svg]:text-primary-base",variants:{variant:{default:"text-text-sub hover:text-text-strong data-[state=active]:bg-bg-white data-[state=active]:text-primary-base",button:"rounded-lg text-text-sub hover:text-text-strong focus-visible:ring-2 focus-visible:ring-primary-base focus-visible:ring-offset-1 data-[state=active]:bg-bg-antd data-[state=active]:text-text-strong",line:"border-b-2 border-transparent text-text-sub hover:text-text-strong data-[state=active]:border-primary-base data-[state=active]:text-primary-base"},size:{large:"gap-10 text-label-md [&_svg]:size-20",medium:"gap-8 text-label-sm [&_svg]:size-16",small:"gap-6 text-label-xs [&_svg]:size-14",xsmall:"gap-4 text-label-xs [&_svg]:size-14"}},compoundVariants:[{variant:"default",size:"large",className:"rounded-md px-16 py-10"},{variant:"default",size:"medium",className:"rounded-md px-12 py-6"},{variant:"default",size:"small",className:"rounded-sm px-10 py-6"},{variant:"default",size:"xsmall",className:"rounded-sm px-8 py-4"},{variant:"button",size:"large",className:"rounded-lg px-16 py-12"},{variant:"button",size:"medium",className:"rounded-lg px-12 py-10"},{variant:"button",size:"small",className:"rounded-md px-10 py-8"},{variant:"button",size:"xsmall",className:"rounded-md px-8 py-6"},{variant:"line",size:"large",className:"py-12"},{variant:"line",size:"medium",className:"py-10"},{variant:"line",size:"small",className:"py-8"},{variant:"line",size:"xsmall",className:"py-6"}],defaultVariants:{variant:"default",size:"medium"}}),ce=e({base:"focus-visible:ring-ring mt-10 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden",variants:{variant:{default:""}},defaultVariants:{variant:"default"}}),$=z.createContext({variant:"default",size:"medium"});function fe({className:e,...t}){return jsx(Tabs.Root,{"data-slot":"tabs",className:f("",e),...t})}function be({className:e,variant:t="default",shape:o="default",size:n="medium",...r}){return jsx($.Provider,{value:{variant:t||"default",size:n||"medium"},children:jsx(Tabs.List,{"data-slot":"tabs-list",className:f(ue({variant:t,shape:o,size:n}),e),...r})})}function ge({className:e,...t}){let{variant:o,size:n}=z.useContext($);return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:f(me({variant:o,size:n}),e),...t})}function ve({className:e,variant:t,...o}){return jsx(Tabs.Content,{"data-slot":"tabs-content",className:f(ce({variant:t}),e),...o})}function _e({className:e,...t}){return jsx("div",{className:f("animate-pulse rounded-sm bg-bg-soft",e),...t})}var we=e({slots:{content:["z-50 overflow-hidden rounded-2xl bg-bg-white p-8 shadow-regular-md ring-1 ring-stroke-soft ring-inset","flex flex-col gap-4 text-label-sm text-text-sub","data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom","data-[state=open]:animate-in data-[state=open]:fade-in-0","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"],trigger:["cursor-default rounded-lg px-10 py-6 outline-none select-none [&_svg]:pointer-events-none [&_svg]:shrink-0","flex items-center gap-8","data-highlighted:bg-bg-weak data-[state=open]:bg-bg-weak","focus-visible:ring-2 focus-visible:ring-primary-base","data-disabled:pointer-events-none data-disabled:text-text-disabled"],item:["group/item relative cursor-pointer rounded-lg px-10 py-6 outline-none select-none data-highlighted:bg-bg-weak","flex items-center gap-8","transition duration-200 ease-out","focus:outline-none","focus-visible:ring-2 focus-visible:ring-primary-base","data-disabled:pointer-events-none data-disabled:text-text-disabled"],checkbox:["relative flex cursor-default items-center rounded-lg py-6 pr-6 transition-colors outline-none select-none","data-disabled:pointer-events-none data-disabled:text-text-disabled","data-highlighted:bg-bg-weak","focus:outline-none","focus-visible:ring-2 focus-visible:ring-primary-base","pl-38"],label:"px-8 py-2 text-label-sm text-text-soft",separator:"-mx-4 my-4 h-px bg-bg-weak",shortcut:"ml-auto text-text-soft group-data-disabled/item:text-text-disabled",arrow:"-mr-6 ml-auto size-16",icon:"size-16",check:"absolute top-1/2 left-10 size-16 -translate-y-1/2"},variants:{inset:{true:{trigger:"pl-38",item:"pl-38",label:"pl-38"}},destructive:{true:{item:"text-error-base focus-visible:ring-error-base data-highlighted:bg-red-50"}}}}),s=we();var K=DropdownMenu.Root,q=DropdownMenu.Trigger,X=DropdownMenu.Group,Y=DropdownMenu.Portal,J=DropdownMenu.Sub,Q=DropdownMenu.RadioGroup;DropdownMenu.Arrow;var S=({className:e,inset:t,children:o,...n})=>jsxs(DropdownMenu.SubTrigger,{className:s.trigger({inset:t,className:e}),...n,children:[o,jsx(ChevronRight,{className:s.arrow()})]});S.displayName=DropdownMenu.SubTrigger.displayName;var k=({className:e,...t})=>jsx(DropdownMenu.SubContent,{className:s.content({className:f("min-w-120",e)}),...t});k.displayName=DropdownMenu.SubContent.displayName;var V=({className:e,sideOffset:t=4,...o})=>jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{sideOffset:t,className:s.content({className:f("min-w-xs",e)}),...o})});V.displayName=DropdownMenu.Content.displayName;var L=({className:e,inset:t,destructive:o,...n})=>jsx(DropdownMenu.Item,{className:s.item({inset:t,destructive:o,className:e}),...n});L.displayName=DropdownMenu.Item.displayName;var F=({className:e,children:t,checked:o,...n})=>jsxs(DropdownMenu.CheckboxItem,{className:s.checkbox({className:e}),checked:o,...n,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check(),asChild:true,children:jsx(Check,{})}),t]});F.displayName=DropdownMenu.CheckboxItem.displayName;var A=({className:e,children:t,...o})=>jsxs(DropdownMenu.RadioItem,{className:s.checkbox({className:e}),...o,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check({className:"left-14 size-8 fill-current"}),asChild:true,children:jsx(Circle,{})}),t]});A.displayName=DropdownMenu.RadioItem.displayName;var h=({className:e,inset:t,...o})=>jsx(DropdownMenu.Label,{className:s.label({inset:t,className:e}),...o});h.displayName=DropdownMenu.Label.displayName;var x=({className:e,...t})=>jsx(DropdownMenu.Separator,{className:s.separator({className:e}),...t});x.displayName=DropdownMenu.Separator.displayName;var O=({className:e,...t})=>jsx("span",{className:s.shortcut({className:e}),...t});O.displayName="DropdownMenuShortcut";var D=({className:e,...t})=>jsx(N,{className:s.icon({className:e}),...t});D.displayName="DropdownMenuIcon";var Z=({open:e,defaultOpen:t,modal:o,menuLabel:n,children:r,items:i,disabled:f$1,className:b,asChild:g=true,renderItem:N,onOpenChange:I,onAction:c,...C})=>{let l=N??j;return jsxs(K,{open:e,defaultOpen:t,modal:o,onOpenChange:I,children:[jsx(q,{disabled:f$1,asChild:g,children:r}),jsxs(V,{className:f(b,"origin-(--radix-dropdown-menu-content-transform-origin)"),...C,children:[n&&jsxs(Fragment,{children:[jsx(h,{children:n}),jsx(x,{})]}),Array.isArray(i)&&i.map((y,w)=>l(y,w,c))]})]})};Z.displayName="DropdownMenu";function j(e,t,o){let{key:n,groupType:r,label:i,shortcut:f,icon:b,inset:g,onValueChange:N,...I}=e,c=n??t,C=Array.isArray(e.items)?e.items:void 0;return e.separator?jsx(x,{},n||`separator-${t}`):r==="radio"&&e.options?jsxs(Q,{value:String(e.value),onValueChange:N,children:[i&&jsxs(Fragment,{children:[jsx(h,{inset:g,children:i}),jsx(x,{})]}),e.options.map(l=>jsx(A,{disabled:l.disabled||e.disabled,value:String(l.value),children:l.label},l.key||l.value))]},c):r==="checkbox"&&e.options?jsxs(X,{children:[i&&jsxs(Fragment,{children:[jsx(h,{inset:g,children:i}),jsx(x,{})]}),e.options.map(({key:l,label:y,value:w,disabled:ee},te)=>jsx(F,{disabled:ee||e.disabled,checked:String(e.value)?.includes(String(w)),onCheckedChange:oe=>{let G=e.value??[],ae=oe?[...G,w]:G.filter(ne=>ne!==w);e.onValueChange?.(ae);},children:y},l||te))]},c):C?jsxs(J,{children:[jsxs(S,{inset:g,disabled:e.disabled,children:[b&&jsx(D,{as:b}),i]}),jsx(Y,{children:jsx(k,{children:C.map((l,y)=>j(l,`${c}-${y}`,o))})})]},c):jsxs(L,{inset:g,onClick:l=>o?.(e,l),...I,children:[b&&jsx(D,{as:b}),i,f&&jsx(O,{children:f})]},c)}export{pe as a,Ie as b,ze as c,Se as d,fe as e,be as f,ge as g,xe as h,_e as i,s as j,Z as k};
|