@jerry-fd/ui 0.3.4 → 0.3.6
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 +26 -250
- package/antd-data-table.js +2 -2
- package/chunk-IFQYYBK3.js +1 -0
- package/chunk-LIGJLNSS.js +2 -0
- package/chunk-ZLJEIJBZ.js +2 -0
- package/index.d.ts +67 -52
- package/index.js +1 -1
- package/package.json +1 -1
- package/types-BDjZbii_.d.ts +512 -0
- package/{types-BRYHaCob.d.ts → types-P1L_aHdl.d.ts} +9 -2
- 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{
|
|
1
|
+
export{f as DataFilter,b as useTransition}from'./chunk-LIGJLNSS.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-BDjZbii_.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-BDjZbii_.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,22 +35,26 @@ 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;
|
|
275
51
|
toolbarItems?: ToolbarItemConfig<any>[];
|
|
276
52
|
onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
|
|
53
|
+
syncing?: boolean;
|
|
277
54
|
animated?: boolean;
|
|
278
55
|
size?: antd_es_button.ButtonSize;
|
|
279
56
|
caption?: React__default.ReactNode;
|
|
280
57
|
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
281
|
-
style?: React__default.CSSProperties | undefined;
|
|
282
58
|
summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
|
|
283
59
|
children?: React__default.ReactNode;
|
|
284
60
|
onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
|
|
@@ -323,39 +99,41 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
|
|
|
323
99
|
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
324
100
|
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
325
101
|
virtual?: boolean | undefined;
|
|
326
|
-
label: React__default.ReactNode;
|
|
327
|
-
value: string;
|
|
328
102
|
id: string;
|
|
329
103
|
loading: boolean | undefined;
|
|
330
104
|
exporting: boolean | undefined;
|
|
331
105
|
disabled: boolean | undefined;
|
|
332
106
|
filters: FiltersState;
|
|
333
|
-
pagination:
|
|
334
|
-
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra:
|
|
107
|
+
pagination: PaginationConfig;
|
|
108
|
+
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
|
|
335
109
|
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
336
110
|
};
|
|
337
111
|
|
|
338
112
|
declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({ fireOnMount: globalFireOnMount, active, defaultActive, tabList, onTabChange, onTableChange, onToolbarAction, }: UseTabsDataTableStateProps<TData>): {
|
|
113
|
+
activeTabId: string;
|
|
114
|
+
style?: React__default.CSSProperties & {
|
|
115
|
+
[key: `--${string}`]: string | number;
|
|
116
|
+
};
|
|
339
117
|
storageKey?: string;
|
|
340
118
|
alwaysShowingColumns?: string[];
|
|
341
119
|
title?: React__default.ReactNode;
|
|
342
120
|
icon?: React__default.ReactNode;
|
|
343
121
|
description?: React__default.ReactNode;
|
|
344
122
|
variant?: "default" | "accent";
|
|
123
|
+
total?: number;
|
|
345
124
|
slots?: Record<"summary" | "footer", React__default.ReactNode>;
|
|
346
125
|
classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
|
|
347
126
|
columns: DataTableColumnType<TData>[];
|
|
348
127
|
className?: string;
|
|
349
128
|
toolbarItems?: ToolbarItemConfig<any>[];
|
|
350
129
|
onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
|
|
130
|
+
syncing?: boolean;
|
|
351
131
|
animated?: boolean;
|
|
352
|
-
activeTab: string;
|
|
353
132
|
tabList: TabItem<TData>[];
|
|
354
133
|
onTabChange: (value: string) => void;
|
|
355
134
|
size?: antd_es_button.ButtonSize;
|
|
356
135
|
caption?: React__default.ReactNode;
|
|
357
136
|
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
358
|
-
style?: React__default.CSSProperties | undefined;
|
|
359
137
|
summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
|
|
360
138
|
children?: React__default.ReactNode;
|
|
361
139
|
onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
|
|
@@ -400,16 +178,14 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
|
|
|
400
178
|
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
401
179
|
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
402
180
|
virtual?: boolean | undefined;
|
|
403
|
-
label: React__default.ReactNode;
|
|
404
|
-
value: string;
|
|
405
181
|
id: string;
|
|
406
182
|
loading: boolean | undefined;
|
|
407
183
|
exporting: boolean | undefined;
|
|
408
184
|
disabled: boolean | undefined;
|
|
409
185
|
filters: FiltersState;
|
|
410
|
-
pagination:
|
|
186
|
+
pagination: PaginationConfig;
|
|
411
187
|
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
188
|
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
413
189
|
};
|
|
414
190
|
|
|
415
|
-
export {
|
|
191
|
+
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 as e$1,f as f$1,g as g$1,k as k$1}from'./chunk-IFQYYBK3.js';import {a,b as b$1,e,c,d}from'./chunk-LIGJLNSS.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C,E,D as D$1,F,H}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import D from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {useShallow}from'zustand/react/shallow';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var Dt={tableSize:"middle",columnVisibility:{}},qe={tabStates:{},activeTabId:"",loading:false,exporting:false},it=(t,n)=>{t.tabStates[n]||(t.tabStates[n]={...Dt});},me=t=>t.tabStates[t.activeTabId]??Dt,Xe=(t,n)=>({...qe,activeTabId:n??"",setActiveTab:e=>t(a=>{a.activeTabId=e,it(a,e);}),setTableSize:e=>t(a=>{let o=a.activeTabId;it(a,o),a.tabStates[o].tableSize=e;}),setColumnVisibility:(e,a)=>t(o=>{let i=o.activeTabId;it(o,i),o.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let o=a.activeTabId;it(a,o);let i=a.tabStates[o].columnVisibility;a.tabStates[o].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let o=a.activeTabId;it(a,o);let i=a.tabStates[o].columnVisibility[e];a.tabStates[o].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...Dt};})}),Ze=(t,n)=>createStore()(persist(immer(e=>Xe(e,n)),{name:t,partialize:e=>({tabStates:e.tabStates})})),ht=D.createContext(null),Je=["id","action","actions"],be=D.createContext({});function Te({storageKey:t,initialTabId:n,alwaysShowingColumns:e,children:a$1}){let o=D.useRef(null);o.current||(o.current=Ze(t,n)),D.useEffect(()=>{let r=o.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(n);},[n]);let i=D.useMemo(()=>({alwaysShowingColumns:e??Je}),[e]);return jsx(be.Provider,{value:i,children:jsx(ht.Provider,{value:o.current,children:jsx(ConfigProvider,{theme:a,children:a$1})})})}function fe(){return D.useContext(be)}function Y(t){let n=D.useContext(ht);if(!n)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(n,t)}function Tt(){let t=D.useContext(ht);if(!t)throw new Error("useCurrentTabUIState must be used within DataTableProvider");return useStore(t,useShallow(n=>me(n)))}function ge(){return Y(t=>me(t).tableSize)}var ta={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function Ce({count:t,size:n="small",classNames:e,columns:a,scroll:o}){let i=D.useCallback(()=>ea(a,ta[n]),[a,n]);return jsx(Table,{rowKey:"id",size:n,rowHoverable:false,classNames:e,dataSource:Array.from({length:t},(r,s)=>({id:s})),pagination:false,scroll:o,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 ye=16;function ea(t,n){let e=t.length,o=`calc((100% - ${ye*(e-1)}px) / ${e})`,i=t.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",n),style:{gap:`${ye}px`},children:t.map((r,s)=>{let c=r?.key??s;return jsx("div",{style:{width:o},children:aa(r.skeleton,i)},c)})})}function aa(t,n){switch(t){case "avatar":return jsx(na,{});case "double-line":return jsx(ra,{});case "group":return jsx(ia,{needAlignment:n});default:return jsx(oa,{needAlignment:n})}}function oa({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&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: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(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 De({className:t,options:n,...e}){return jsx(e$1,{className:f("w-full",t),...e,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:n?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function xe({value:t,className:n,onChange:e,...a}){let o=b$1(),[i,r]=D.useState(false),s=D.useMemo(()=>[{groupType:"radio",value:t,options:[{label:o("large"),value:"large"},{label:o("middle"),value:"middle"},{label:o("compact"),value:"small"}],onValueChange:e}],[e,o,t]);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",n,i&&"active"),...a,children:[jsx(Tooltip,{title:o("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 ft(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function ca(t){return typeof t=="string"&&t.length>0}function ve(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(ca)}function Pe({disabled:t$1,columns:n}){let e=b$1(),{alwaysShowingColumns:a}=fe(),[o,i]=D.useState(false),{columnVisibility:r$1}=Tt(),s$1=Y(l=>l.setColumnVisibilityState),c=D.useCallback((l,d)=>{s$1(u=>({...u,[l]:d}));},[s$1]);return jsxs(r,{open:o,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(o&&"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$1,{className:"max-h-256",children:jsx(F,{children:n.map(l=>{let d=ft(l),u=r$1[d]!==false;return jsxs(H,{keywords:ve(l),onSelect:()=>c(d,!u),className:"group flex items-center gap-6",value:d,disabled:a?.includes(d),children:[jsx(Checkbox,{checked:u,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(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 Sa({btnProps:t,tooltip:n,disabled:e,loading:a,syncing:o,onAction:i}){let r=b$1(),s=n??r("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:o||a,disabled:e||a,className:"gap-0",onClick:()=>i({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:s,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function ya(){let t=ge()??"small",n=Y(e=>e.setTableSize);return jsx(xe,{value:t,onChange:n})}function Ca({columns:t}){return jsx(Pe,{columns:t})}function Da({btnProps:t,disabled:n,loading:e,onAction:a}){let o=b$1();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:n||e,onClick:()=>a({action:"data_export"}),...t,children:o("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 we({items:t,columns:n,disabled:e,loading:a,exporting:o,syncing:i,filter:r,onAction:s,className:c}){let l=D.useMemo(()=>t.map(p=>ga(p)),[t]),d=D.useMemo(()=>l.filter(p=>!p.hidden),[l]),u=D.useCallback(p=>{s?.(p);},[s]),E=D.useMemo(()=>({disabled:e,loading:a,exporting:o,columns:n,onAction:u}),[e,a,o,n,u]),C=p=>{let S={btnProps:p.btnProps,tooltip:p.tooltip,disabled:e,loading:a,onAction:u};switch(p.type){case "data_refresh":return jsx(Sa,{...S,syncing:i});case "size_setting":return jsx(ya,{});case "column_setting":return jsx(Ca,{columns:n});case "data_export":return jsx(Da,{...S,loading:o});case "custom":return p.render?.(E);case "filter_btn":return r;default:return null}};return jsx("div",{className:f("flex items-center gap-8",c),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:d.map(p=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:C(p)},p.key))})})}var Rt=["data_refresh","size_setting","column_setting","filter_btn"];function Ie(t){return t.filter(n=>n.filter!==void 0).map(n=>{let{filter:e,dataIndex:a,title:o}=n,i=Array.isArray(a)?a.join("."):a,r=e.displayName??(typeof o=="string"?o:i);return {...e,columnId:i,displayName:r}})}function Ae(t){return t.map(({filter:n,...e})=>e)}var va=31,Ra=44,Pa=250,wa=350,Ia={},Pt=(t,n)=>{if(!t)return 0;let e=t.querySelectorAll(':scope > [data-id^="data-table-card-"]'),a=0;return e.forEach(o=>{let i=o.getAttribute("data-id")==="data-table-card-content";a+=i?0:o.clientHeight;}),document.documentElement.clientHeight-n-window.scrollY-va-Ra-a-3};function ze(t,n,{x:e="max-content",y:a,...o}=Ia){let[i,r]=D.useState(a),s=D.useRef(0),c=D.useRef(null);return D.useLayoutEffect(()=>(s.current=t.current?.offsetTop??0,c.current||(c.current=c$1(()=>{s.current=t.current?.offsetTop??0,r(Pt(t.current,s.current));},Pa,false,true)),window.addEventListener("resize",c.current),()=>{c.current&&(window.removeEventListener("resize",c.current),c.current.cancel());}),[t]),D.useEffect(()=>{if(a!==void 0)return;r(Pt(t.current,s.current));let l=setTimeout(()=>{r(Pt(t.current,s.current));},wa);return ()=>{clearTimeout(l);}},[a,n,t]),{x:e,y:i,...o}}var Fa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},Na={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},ka={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},Ba={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},_a={ease:[.26,.08,.25,1],duration:.3};function Oa({id:t,activeTabId:n$1,tabList:e$1,title:a,icon:o$1,description:i$1,variant:r,classNames:s,slots:c$1,columns:l$1,filters:d$1,defaultFilters:u,total:E,pagination:C,defaultPagination:p$1,loading:S,syncing:F,exporting:P,disabled:w,animated:B=true,style:K,toolbarItems:_,onTabChange:U,onChange:j$1,onFiltersChange:ut,onToolbarAction:Z,...f$1}){let O=b$1(),H=Y(R=>R.setActiveTab),J=Y(R=>R.activeTabId),{tableSize:y,columnVisibility:et}=Tt();D.useEffect(()=>{t&&t!==J&&H(t);},[t,J,H]);let W=D.useMemo(()=>l$1.filter(R=>R.hidden!==true),[l$1]),at=D.useMemo(()=>Ae(W),[W]),q=D.useMemo(()=>Ie(l$1),[l$1]),[M,pt]=e({filters:d$1,defaultFilters:u,onFiltersChange:ut}),ot=D.useMemo(()=>at.filter(R=>et[ft(R)]!==false),[at,et]),V=D.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[mt,b]=D.useState(()=>({current:C?.current??p$1?.current??1,pageSize:C?.pageSize??p$1?.pageSize??10})),x=D.useCallback(R=>O("pagination_total").replace("{total}",String(R)),[O]),N=D.useCallback((R,St,rt,Ve)=>{let{pagination:Le,filters:Ke,sorter:Ue,extra:He}=V.current={...V.current,filters:St,sorter:rt,extra:Ve};j$1?.(Le,Ke,Ue,He);},[j$1]),I=D.useCallback((R,St)=>{let rt={current:R,pageSize:St};V.current={...V.current,pagination:rt},b(rt),j$1?.(rt,V.current.filters,V.current.sorter,V.current.extra);},[j$1]),G=D.useMemo(()=>({disabled:S||w||F,size:y==="large"?"middle":y,...p$1,showTotal:x,onChange:I,onShowSizeChange:I,...C,...mt,total:E}),[S,F,w,y,x,C,I,p$1,mt,E]),Q=D.useMemo(()=>({...Fa,header:{cell:f$1.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[f$1.bordered]),nt=e$1&&Array.isArray(e$1),_e=Math.min(G.pageSize??G.defaultPageSize??10,15),Oe=!!(S&&ot.some(R=>R.skeleton)),Ee=q.length!==0,kt=M&&M.length!==0,Bt=D.useRef(null),_t=ze(Bt,`${M?.length}-${n$1??t}`,f$1.scroll),Ot=Oe?jsx(Ce,{id:`${t}-skeleton`,columns:ot,size:y,count:_e,classNames:Q,scroll:_t}):jsx(Table,{id:`${t}-data-table`,columns:ot,classNames:Q,pagination:false,size:y,loading:S,showSorterTooltip:false,onChange:N,...f$1,scroll:_t}),Me=r==="accent",Et=jsx(c,{columns:q,filters:M,actions:pt,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",disabled:F||S,enableAutoClose:true});return jsxs(g,{ref:Bt,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:K,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",Me&&"pt-10",nt&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[o$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:o$1}),a&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(we,{onAction:Z,items:_??Rt,loading:S,syncing:F,disabled:w,exporting:P,filter:Ee&&jsx(d,{columns:q,filters:M,actions:pt,align:"end",enableAutoBack:true},`${t}-filter`),columns:W})})]}),c$1?.summary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:c$1?.summary}),nt&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(De,{value:n$1,options:e$1,onValueChange:U})}),jsx(AnimatePresence,{initial:false,children:kt&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:ka,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:Et})},n$1)}),jsx(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",F&&"pointer-events-none",s?.cardContent),children:B?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:Ba,initial:"initial",animate:"animate",exit:"exit",transition:_a,children:Ot},n$1)}):jsxs(Fragment,{children:[kt&&jsx("div",{className:"mb-16",children:Et}),Ot]})}),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:Na,...G})}),c$1?.footer&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:c$1?.footer})]})}var Ea=import.meta.env?.VITE_MOCK_API_SSR??false;function Ma({storageKey:t,alwaysShowingColumns:n,...e}){let{tableStateStorageKey:a,pagination:o}=b(),i=t??a??"APP_UI_TABLE_CONFIG";if(Ea)return jsx(Te,{initialTabId:e.activeTabId??e.id,storageKey:i,alwaysShowingColumns:n,children:jsx(Oa,{defaultPagination:o,...e})});let{title:r,port:s,host:c,url:l,method:d,...u}=Va(e);return jsx(Card,{title:r,children:jsx(Table,{id:e.id,...u})})}function Va(t){let n=t.columns.map(({render:e,port:a,host:o,method:i,...r})=>({...r}));return {...t,columns:n}}var wt={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function It(t,n){return n[t]??t}function Ka(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function At(t,n){return t==null?null:Ka(t)?t.format(n):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function Ua(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[e.sorterKeys.field]=String(s.field),r[e.sorterKeys.order]=e.orderValues[s.order]??s.order);let c={};for(let l of o){let d=It(l.columnId,e.fieldMapping);c[d]=l.values.map(u=>At(u,e.dateFormat));}return Object.keys(c).length>0&&(r[e.filtersKey]=c),r}function dt(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[e.sorterKeys.field]=String(s.field),r[e.sorterKeys.order]=e.orderValues[s.order]??s.order);for(let c of o){let l=It(c.columnId,e.fieldMapping),d=c.values.map(u=>At(u,e.dateFormat));r[l]=d.length===1?d[0]:d;}return r}function Be(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r.set(e.sorterKeys.field,String(s.field)),r.set(e.sorterKeys.order,e.orderValues[s.order]??s.order));for(let c of o){let l=It(c.columnId,e.fieldMapping),d=c.values.map(u=>At(u,e.dateFormat));r.set(l,d.join(","));}return r.toString()}function Ha(t,n={}){let e=Be(t,n);return new URLSearchParams(e)}var zt=[],Ft={current:1,pageSize:10},Ga={};function $a(){return {filters:zt,pagination:Ft,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function Ya(t){let n=new Map,e=$a();for(let a of t)n.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter,extra:e.extra});return n}function Nt({fireOnMount:t=true,active:n,defaultActive:e,tabList:a,onTabChange:o,onTableChange:i,onToolbarAction:r}){let[s,c]=D.useState(()=>e??a[0]?.value??""),l=n??s,[d,u]=D.useState(()=>Ya(a)),E=D.useMemo(()=>a.find(b=>b.value===l)??a[0],[l,a]),{id:C,fireOnMount:p=t,loading:S,exporting:F,disabled:P,serializeOptions:w=Ga,serializeFn:B=dt,defaultFilters:K,defaultPagination:_,defaultSorter:U,filters:j,pagination:ut,onChange:Z,onToolbarAction:f,value:O,label:H,...J}=E;D.useEffect(()=>{d.has(l)||u(b=>{if(b.has(l))return b;let x=new Map(b);return x.set(l,{filters:K??zt,pagination:_??Ft,sorter:U??{},extra:{action:"paginate",currentDataSource:[]}}),x});},[l,d,K,_,U]);let y=D.useMemo(()=>d.get(l)??{filters:K??zt,pagination:_??Ft,sorter:U??{},extra:{action:"paginate",currentDataSource:[]}},[d,l,K,_,U]),et=D.useRef(i),W=D.useRef(r),at=D.useRef(Z),q=D.useRef(f);et.current=i,W.current=r,at.current=Z,q.current=f;let M=D.useRef(new Map);D.useEffect(()=>{M.current.has(l)||M.current.set(l,!p);},[l,p]);let pt=D.useCallback(b=>{c(b),o?.(b);},[o]),ot=D.useCallback(b=>{u(x=>{let N=new Map(x),I=N.get(l);if(!I)return x;let G=typeof b=="function"?b(I.filters):b;return N.set(l,{...I,filters:G,pagination:{...I.pagination,current:1}}),N});},[l]),V=D.useCallback((b,x,N,I)=>{u(G=>{let Q=new Map(G),nt=Q.get(l);return nt?(Q.set(l,{...nt,pagination:b,sorter:N,extra:I}),Q):G});},[l]),mt=D.useCallback(b=>{if(b.action==="data_export"){let x={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},N=B(x,w),I={action:b.action,payload:N};q.current?.(I),W.current?.(C,I);return}q.current?.(b),W.current?.(C,b);},[C,y,B,w]);return D.useEffect(()=>{if(M.current.get(l)){M.current.set(l,false);return}let x={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},N=B(x,w);at.current?.(N,x),et.current?.(C,N,x);},[l,C,y,B,w]),{activeTabId:l,tabList:a,onTabChange:pt,id:C,loading:S,exporting:F,disabled:P||F,filters:y.filters,pagination:y.pagination,onFiltersChange:ot,onChange:V,onToolbarAction:mt,...J}}var ja=[],Wa={},qa={action:"paginate",currentDataSource:[]},Xa={current:1,pageSize:10};function Za({id:t,fireOnMount:n=true,defaultFilters:e=ja,defaultPagination:a=Xa,defaultSorter:o=Wa,serializeOptions:i={},loading:r,exporting:s,disabled:c,serializeFn:l=dt,onChange:d,onToolbarAction:u}={}){let E=D.useRef(!n),C=D.useRef(d),p=D.useRef(u);C.current=d,p.current=u;let[S,F]=D.useState(e),[P,w]=D.useState(a),[B,K]=D.useState(o),[_,U]=D.useState(qa),j=D.useCallback(f=>{F(O=>typeof f=="function"?f(O):f),w(O=>({...O,current:1}));},[]),ut=D.useCallback((f,O,H,J)=>{w(f),K(H),U(J);},[]),Z=D.useCallback(f=>{if(f.action==="data_export"){let H=l({pagination:P,filters:S,sorter:B,extra:_},i);p.current?.({action:f.action,payload:H});return}p.current?.(f);},[S,P,B,_,l,i]);return D.useEffect(()=>{if(E.current){E.current=false;return}let f={pagination:P,filters:S,sorter:B,extra:_},O=l(f,i);C.current?.(O,f);},[P,S,B,_,l,i]),{id:t,loading:r,exporting:s,disabled:c||s,filters:S,pagination:P,onFiltersChange:j,onChange:ut,onToolbarAction:Z}}var Ja=[];function Qa(t={}){let{id:n="default",onChange:e,onToolbarAction:a,...o}=t,i=D.useRef(e),r=D.useRef(a);i.current=e,r.current=a;let s=D.useCallback((F,P,w)=>{i.current?.(P,w);},[]),c=D.useCallback((F,P)=>{r.current?.(P);},[]),l=D.useMemo(()=>[{id:n,value:n,label:"",columns:Ja,total:o.total,defaultFilters:o.defaultFilters,defaultPagination:o.defaultPagination,defaultSorter:o.defaultSorter,serializeOptions:o.serializeOptions,serializeFn:o.serializeFn,loading:o.loading,exporting:o.exporting,disabled:o.disabled}],[n,o.total,o.defaultFilters,o.defaultPagination,o.defaultSorter,o.serializeOptions,o.serializeFn,o.loading,o.exporting,o.disabled]),d=Nt({fireOnMount:t.fireOnMount,tabList:l,onTableChange:s,onToolbarAction:c}),{activeTabId:u,tabList:E,columns:C,onTabChange:p,...S}=d;return S}
|
|
2
|
+
export{Rt as DEFAULT_TOOLBAR_ITEMS,Ma as DataTable,Ua as serializeForPost,dt as serializeForPostFlat,Be as serializeForURL,Ha as serializeToURLSearchParams,Za as useDataTableState,Qa as useDataTableStateAdapter,Nt 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:a})=>{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:a})})})};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,a=true){let r,i=(...m)=>{r?(clearTimeout(r),r=void 0):o&&e(...m),r=self.setTimeout(()=>{a&&e(...m),r=void 0;},t);};return i.cancel=()=>{r&&(clearTimeout(r),r=void 0);},i}function Se(e,t,o=true){let a,r,i,m=(...f)=>{r=true,i=f,a||(o&&(r=false,e(...i)),a=self.setInterval(()=>{if(!r){self.clearInterval(a),a=void 0;return}r=false,e(...i);},t));};return m.cancel=()=>{a&&(self.clearInterval(a),a=void 0),r=false;},m}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:a="medium",...r}){return jsx($.Provider,{value:{variant:t||"default",size:a||"medium"},children:jsx(Tabs.List,{"data-slot":"tabs-list",className:f(ue({variant:t,shape:o,size:a}),e),...r})})}function ge({className:e,...t}){let{variant:o,size:a}=z.useContext($);return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:f(me({variant:o,size:a}),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,...a})=>jsxs(DropdownMenu.SubTrigger,{className:s.trigger({inset:t,className:e}),...a,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 F=({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})});F.displayName=DropdownMenu.Content.displayName;var V=({className:e,inset:t,destructive:o,...a})=>jsx(DropdownMenu.Item,{className:s.item({inset:t,destructive:o,className:e}),...a});V.displayName=DropdownMenu.Item.displayName;var L=({className:e,children:t,checked:o,...a})=>jsxs(DropdownMenu.CheckboxItem,{className:s.checkbox({className:e}),checked:o,...a,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check(),asChild:true,children:jsx(Check,{})}),t]});L.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:a,children:r,items:i,disabled:m,className:f$1,asChild:g=true,renderItem:N,onOpenChange:I,onAction:b,...C})=>{let l=N??j;return jsxs(K,{open:e,defaultOpen:t,modal:o,onOpenChange:I,children:[jsx(q,{disabled:m,asChild:g,children:r}),jsxs(F,{className:f(f$1,"origin-(--radix-dropdown-menu-content-transform-origin)"),...C,children:[a&&jsxs(Fragment,{children:[jsx(h,{children:a}),jsx(x,{})]}),Array.isArray(i)&&i.map((y,w)=>l(y,w,b))]})]})};Z.displayName="DropdownMenu";function j(e,t,o){let{key:a,groupType:r,label:i,shortcut:m,icon:f,inset:g,onValueChange:N,...I}=e,b=a??t,C=Array.isArray(e.items)?e.items:void 0;return e.separator?jsx(x,{},a||`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))]},b):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(L,{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))]},b):C?jsxs(J,{children:[jsxs(S,{inset:g,disabled:e.disabled,children:[f&&jsx(D,{as:f}),i]}),jsx(Y,{children:jsx(k,{children:C.map((l,y)=>j(l,`${b}-${y}`,o))})})]},b):jsxs(V,{inset:g,onClick:l=>o?.(e,l),...I,children:[f&&jsx(D,{as:f}),i,m&&jsx(O,{children:m})]},b)}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};
|