@jerry-fd/ui 0.2.0 → 0.3.1
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 +46 -3
- package/antd-data-filter.js +1 -1
- package/antd-data-table.d.ts +303 -56
- package/antd-data-table.js +2 -1
- package/button-nn_s6In3.d.ts +271 -0
- package/chunk-F5D2HAH7.js +2 -0
- package/chunk-TQSM6RF4.js +1 -0
- package/chunk-TYGCMNMU.js +2 -0
- package/icon-Byr-7UQX.d.ts +10 -0
- package/index.d.ts +321 -3
- package/index.js +1 -1
- package/package.json +14 -5
- package/theme/badge.css +215 -0
- package/theme/colors.css +247 -0
- package/theme/index.css +22 -0
- package/theme/shadows.css +13 -0
- package/theme/typography.css +255 -0
- package/{types-KRc0daL-.d.ts → types-6U8YKz0A.d.ts} +2 -9
- package/chunk-75LTHX75.js +0 -1
- package/chunk-W5W7SZNA.js +0 -3
package/antd-data-filter.d.ts
CHANGED
|
@@ -1,9 +1,52 @@
|
|
|
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-
|
|
2
|
+
import { D as DataFilterProps } from './types-6U8YKz0A.js';
|
|
3
|
+
export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-6U8YKz0A.js';
|
|
4
|
+
import './icon-Byr-7UQX.js';
|
|
4
5
|
import 'react';
|
|
5
6
|
import 'dayjs';
|
|
6
7
|
|
|
7
8
|
declare function DataFilter<TData>({ disabled, columns, filters, defaultFilters, className, onFiltersChange, }: DataFilterProps<TData>): react_jsx_runtime.JSX.Element;
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
var filter = "Add Filters";
|
|
11
|
+
var search_keywords = "Search...";
|
|
12
|
+
var no_results = "No results";
|
|
13
|
+
var to = "to";
|
|
14
|
+
var input_number = "Input Number";
|
|
15
|
+
var min = "Min";
|
|
16
|
+
var max = "Max";
|
|
17
|
+
var apply = "Apply Filter";
|
|
18
|
+
var clear = "Clear Filter";
|
|
19
|
+
var clear_all = "Clear All";
|
|
20
|
+
var pagination_total = "Total {total} items";
|
|
21
|
+
var refresh = "Refresh";
|
|
22
|
+
var column_set = "Table Settings";
|
|
23
|
+
var density = "Density";
|
|
24
|
+
var large = "Large";
|
|
25
|
+
var middle = "Middle";
|
|
26
|
+
var compact = "Compact";
|
|
27
|
+
var data_export = "Export Data";
|
|
28
|
+
var enUS = {
|
|
29
|
+
filter: filter,
|
|
30
|
+
search_keywords: search_keywords,
|
|
31
|
+
no_results: no_results,
|
|
32
|
+
to: to,
|
|
33
|
+
input_number: input_number,
|
|
34
|
+
min: min,
|
|
35
|
+
max: max,
|
|
36
|
+
apply: apply,
|
|
37
|
+
clear: clear,
|
|
38
|
+
clear_all: clear_all,
|
|
39
|
+
pagination_total: pagination_total,
|
|
40
|
+
refresh: refresh,
|
|
41
|
+
column_set: column_set,
|
|
42
|
+
density: density,
|
|
43
|
+
large: large,
|
|
44
|
+
middle: middle,
|
|
45
|
+
compact: compact,
|
|
46
|
+
data_export: data_export
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
type LocaleKey = keyof typeof enUS;
|
|
50
|
+
declare function useTransition(): (key: LocaleKey) => string;
|
|
51
|
+
|
|
52
|
+
export { DataFilter, useTransition };
|
package/antd-data-filter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{h as DataFilter,d as useTransition}from'./chunk-F5D2HAH7.js';import'./chunk-TYGCMNMU.js';
|
package/antd-data-table.d.ts
CHANGED
|
@@ -1,63 +1,57 @@
|
|
|
1
1
|
import * as antd from 'antd';
|
|
2
|
-
import {
|
|
2
|
+
import { PaginationProps, TableProps } from 'antd';
|
|
3
3
|
export { PaginationProps as PaginationState, TableProps } from 'antd';
|
|
4
|
-
import {
|
|
4
|
+
import { a as FilterColumnOption, b as FiltersState } from './types-6U8YKz0A.js';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
import { I as IconType } from './icon-Byr-7UQX.js';
|
|
6
7
|
import React from 'react';
|
|
7
8
|
import { ColumnType } from 'antd/es/table';
|
|
8
9
|
import * as antd_es_table_interface from 'antd/es/table/interface';
|
|
9
10
|
import { SorterResult } from 'antd/es/table/interface';
|
|
11
|
+
import { B as Button } from './button-nn_s6In3.js';
|
|
12
|
+
import * as _rc_component_table from '@rc-component/table';
|
|
13
|
+
import * as _rc_component_table_lib_interface from '@rc-component/table/lib/interface';
|
|
14
|
+
import * as antd_es_button from 'antd/es/button';
|
|
15
|
+
import * as antd_es_table_InternalTable from 'antd/es/table/InternalTable';
|
|
10
16
|
import 'dayjs';
|
|
17
|
+
import 'tailwind-variants';
|
|
11
18
|
|
|
12
|
-
type
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
type:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
type: 'date';
|
|
34
|
-
mode?: 'single' | 'range';
|
|
35
|
-
showTime?: boolean | {
|
|
36
|
-
format: 'HH:mm' | 'HH:mm:ss';
|
|
37
|
-
};
|
|
38
|
-
displayName?: string;
|
|
39
|
-
icon?: IconType;
|
|
19
|
+
type ButtonProps = Omit<React.ComponentProps<typeof Button>, 'onClick'>;
|
|
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
40
|
};
|
|
41
|
-
|
|
42
|
-
type
|
|
43
|
-
type
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
/** 自定义 toolbar item */
|
|
42
|
+
type CustomToolbarItem<TData = unknown> = {
|
|
43
|
+
type: 'custom';
|
|
44
|
+
/** 唯一标识,必填 */
|
|
45
|
+
key: string;
|
|
46
|
+
/** 自定义渲染函数 */
|
|
47
|
+
render: (ctx: ToolbarRenderContext<TData>) => React.ReactNode;
|
|
48
|
+
/** 是否隐藏 */
|
|
49
|
+
hidden?: boolean;
|
|
46
50
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
defaultFilters?: FiltersState;
|
|
52
|
-
onFiltersChange?: React.Dispatch<React.SetStateAction<FiltersState>>;
|
|
53
|
-
className?: string;
|
|
54
|
-
cardProps?: CardProps;
|
|
55
|
-
onRefresh?: () => void;
|
|
56
|
-
loading?: boolean;
|
|
57
|
-
pagination?: PaginationProps;
|
|
58
|
-
} & Omit<TableProps<TData>, 'title' | 'columns' | 'loading' | 'pagination'>;
|
|
59
|
-
|
|
60
|
-
declare function DataTable<TData extends Record<string, unknown> = Record<string, unknown>>({ title, columns, filters, cardProps, loading, pagination, style, onFiltersChange, onRefresh, ...tableProps }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
|
|
51
|
+
/** Toolbar item 类型 */
|
|
52
|
+
type ToolbarItemConfig<TData = any> = ToolbarBuiltInActionType | BuiltInToolbarItem | CustomToolbarItem<TData>;
|
|
53
|
+
/** 默认 toolbar items */
|
|
54
|
+
declare const DEFAULT_TOOLBAR_ITEMS: ToolbarItemConfig[];
|
|
61
55
|
|
|
62
56
|
type SerializeOptions = {
|
|
63
57
|
/** 日期格式,默认 'YYYY-MM-DD' */
|
|
@@ -139,28 +133,281 @@ declare function serializeForURL<TData = Record<string, unknown>>(state: TableCh
|
|
|
139
133
|
*/
|
|
140
134
|
declare function serializeToURLSearchParams<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): URLSearchParams;
|
|
141
135
|
|
|
142
|
-
type
|
|
143
|
-
type
|
|
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> = {
|
|
144
175
|
pagination: PaginationProps;
|
|
145
176
|
filters: FiltersState;
|
|
146
177
|
sorter: SorterState<TData>;
|
|
147
178
|
};
|
|
148
179
|
type UseDataTableStateOptions<TData> = {
|
|
180
|
+
id?: string;
|
|
181
|
+
loading?: boolean;
|
|
182
|
+
exporting?: boolean;
|
|
183
|
+
disabled?: boolean;
|
|
149
184
|
fireOnMount?: boolean;
|
|
150
185
|
defaultFilters?: FiltersState;
|
|
151
186
|
defaultPagination?: PaginationProps;
|
|
152
187
|
defaultSorter?: SorterState<TData>;
|
|
153
188
|
serializeOptions?: SerializeOptions;
|
|
154
|
-
serializeFn?: (state: TableChangeState<TData>, options?: SerializeOptions) =>
|
|
155
|
-
onChange?: (serialized:
|
|
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.ReactNode;
|
|
212
|
+
/** Tab 唯一标识 */
|
|
213
|
+
value: string;
|
|
156
214
|
};
|
|
157
|
-
|
|
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.ReactNode;
|
|
222
|
+
icon?: React.ReactNode;
|
|
223
|
+
description?: React.ReactNode;
|
|
224
|
+
variant?: 'default' | 'accent';
|
|
225
|
+
slots?: Record<'summary' | 'footer', React.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.Dispatch<React.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;
|
|
246
|
+
|
|
247
|
+
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
|
+
id: string | undefined;
|
|
249
|
+
loading: boolean | undefined;
|
|
250
|
+
exporting: boolean | undefined;
|
|
251
|
+
disabled: boolean | undefined;
|
|
158
252
|
filters: FiltersState;
|
|
159
253
|
pagination: PaginationProps;
|
|
160
254
|
onFiltersChange: React.Dispatch<React.SetStateAction<FiltersState>>;
|
|
161
255
|
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
|
|
256
|
+
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
257
|
+
};
|
|
258
|
+
/**
|
|
259
|
+
* Adapter hook that wraps useTabsDataTableState for single table use case.
|
|
260
|
+
* Use this if you want consistent behavior with useTabsDataTableState but for a single table.
|
|
261
|
+
* Core logic is maintained in useTabsDataTableState, so bug fixes apply to both.
|
|
262
|
+
*/
|
|
263
|
+
declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>(options?: UseDataTableStateOptions<TData>): {
|
|
264
|
+
storageKey?: string;
|
|
265
|
+
alwaysShowingColumns?: string[];
|
|
266
|
+
title?: React.ReactNode;
|
|
267
|
+
icon?: React.ReactNode;
|
|
268
|
+
description?: React.ReactNode;
|
|
269
|
+
variant?: "default" | "accent";
|
|
270
|
+
slots?: Record<"summary" | "footer", React.ReactNode>;
|
|
271
|
+
classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
|
|
272
|
+
className?: string;
|
|
273
|
+
toolbarItems?: ToolbarItemConfig<any>[];
|
|
274
|
+
onFiltersChange: React.Dispatch<React.SetStateAction<FiltersState>>;
|
|
275
|
+
animated?: boolean;
|
|
276
|
+
size?: antd_es_button.ButtonSize;
|
|
277
|
+
caption?: React.ReactNode;
|
|
278
|
+
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
279
|
+
style?: React.CSSProperties | undefined;
|
|
280
|
+
summary?: ((data: readonly TData[]) => React.ReactNode) | undefined;
|
|
281
|
+
children?: React.ReactNode;
|
|
282
|
+
onScroll?: React.UIEventHandler<HTMLDivElement> | undefined;
|
|
283
|
+
scroll?: _rc_component_table.TableProps<RecordType>["scroll"] & {
|
|
284
|
+
scrollToFirstRowOnChange?: boolean;
|
|
285
|
+
};
|
|
286
|
+
direction?: _rc_component_table_lib_interface.Direction | undefined;
|
|
287
|
+
sticky?: (boolean | _rc_component_table_lib_interface.TableSticky) | undefined;
|
|
288
|
+
locale?: antd_es_table_interface.TableLocale | undefined;
|
|
289
|
+
styles?: antd_es_table_InternalTable.TableStylesType<TData> | undefined;
|
|
290
|
+
prefixCls?: string | undefined;
|
|
291
|
+
rootClassName?: string | undefined;
|
|
292
|
+
getPopupContainer?: antd_es_table_interface.GetPopupContainer | undefined;
|
|
293
|
+
components?: _rc_component_table_lib_interface.TableComponents<TData> | undefined;
|
|
294
|
+
bordered?: boolean | undefined;
|
|
295
|
+
tableLayout?: _rc_component_table_lib_interface.TableLayout | undefined;
|
|
296
|
+
expandedRowKeys?: _rc_component_table_lib_interface.Key[] | undefined;
|
|
297
|
+
defaultExpandedRowKeys?: _rc_component_table_lib_interface.Key[] | undefined;
|
|
298
|
+
expandedRowRender?: _rc_component_table_lib_interface.ExpandedRowRender<TData> | undefined;
|
|
299
|
+
expandRowByClick?: boolean | undefined;
|
|
300
|
+
expandIcon?: _rc_component_table_lib_interface.RenderExpandIcon<TData> | undefined;
|
|
301
|
+
onExpand?: ((expanded: boolean, record: TData) => void) | undefined;
|
|
302
|
+
onExpandedRowsChange?: (expandedKeys: _rc_component_table_lib_interface.Key[]) => void;
|
|
303
|
+
defaultExpandAllRows?: boolean | undefined;
|
|
304
|
+
indentSize?: number | undefined;
|
|
305
|
+
expandIconColumnIndex?: number | undefined;
|
|
306
|
+
expandedRowClassName?: _rc_component_table_lib_interface.RowClassName<TData> | undefined;
|
|
307
|
+
childrenColumnName?: string | undefined;
|
|
308
|
+
rowKey?: string | keyof TData | _rc_component_table_lib_interface.GetRowKey<TData> | undefined;
|
|
309
|
+
expandable?: _rc_component_table_lib_interface.ExpandableConfig<TData> | undefined;
|
|
310
|
+
rowClassName?: string | _rc_component_table_lib_interface.RowClassName<TData> | undefined;
|
|
311
|
+
showHeader?: boolean | undefined;
|
|
312
|
+
onRow?: _rc_component_table_lib_interface.GetComponentProps<TData> | undefined;
|
|
313
|
+
onHeaderRow?: _rc_component_table_lib_interface.GetComponentProps<readonly _rc_component_table.ColumnType<TData>[]> | undefined;
|
|
314
|
+
rowHoverable?: boolean | undefined;
|
|
315
|
+
tailor?: boolean | undefined;
|
|
316
|
+
getContainerWidth?: (ele: HTMLElement, width: number) => number;
|
|
317
|
+
measureRowRender?: (measureRow: React.ReactNode) => React.ReactNode;
|
|
318
|
+
dropdownPrefixCls?: string | undefined;
|
|
319
|
+
dataSource?: readonly TData[] | undefined;
|
|
320
|
+
rowSelection?: antd_es_table_interface.TableRowSelection<TData> | undefined;
|
|
321
|
+
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
322
|
+
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
323
|
+
virtual?: boolean | undefined;
|
|
324
|
+
label: React.ReactNode;
|
|
325
|
+
value: string;
|
|
326
|
+
id: string;
|
|
327
|
+
loading: boolean | undefined;
|
|
328
|
+
exporting: boolean | undefined;
|
|
329
|
+
disabled: boolean | undefined;
|
|
330
|
+
filters: FiltersState;
|
|
331
|
+
pagination: PaginationProps;
|
|
332
|
+
onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
|
|
333
|
+
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
162
334
|
};
|
|
163
335
|
|
|
164
|
-
|
|
336
|
+
declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({ fireOnMount: globalFireOnMount, active, defaultActive, tabList, onTabChange, onTableChange, onToolbarAction, }: UseTabsDataTableStateProps<TData>): {
|
|
337
|
+
storageKey?: string;
|
|
338
|
+
alwaysShowingColumns?: string[];
|
|
339
|
+
title?: React.ReactNode;
|
|
340
|
+
icon?: React.ReactNode;
|
|
341
|
+
description?: React.ReactNode;
|
|
342
|
+
variant?: "default" | "accent";
|
|
343
|
+
slots?: Record<"summary" | "footer", React.ReactNode>;
|
|
344
|
+
classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
|
|
345
|
+
columns: DataTableColumnType<TData>[];
|
|
346
|
+
className?: string;
|
|
347
|
+
toolbarItems?: ToolbarItemConfig<any>[];
|
|
348
|
+
onFiltersChange: React.Dispatch<React.SetStateAction<FiltersState>>;
|
|
349
|
+
animated?: boolean;
|
|
350
|
+
activeTab: string;
|
|
351
|
+
tabList: TabItem<TData>[];
|
|
352
|
+
onTabChange: (value: string) => void;
|
|
353
|
+
size?: antd_es_button.ButtonSize;
|
|
354
|
+
caption?: React.ReactNode;
|
|
355
|
+
footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
|
|
356
|
+
style?: React.CSSProperties | undefined;
|
|
357
|
+
summary?: ((data: readonly TData[]) => React.ReactNode) | undefined;
|
|
358
|
+
children?: React.ReactNode;
|
|
359
|
+
onScroll?: React.UIEventHandler<HTMLDivElement> | undefined;
|
|
360
|
+
scroll?: (_rc_component_table.TableProps<RecordType>["scroll"] & {
|
|
361
|
+
scrollToFirstRowOnChange?: boolean;
|
|
362
|
+
}) | undefined;
|
|
363
|
+
direction?: _rc_component_table_lib_interface.Direction | undefined;
|
|
364
|
+
sticky?: (boolean | _rc_component_table_lib_interface.TableSticky) | undefined;
|
|
365
|
+
locale?: antd_es_table_interface.TableLocale | undefined;
|
|
366
|
+
styles?: antd_es_table_InternalTable.TableStylesType<TData> | undefined;
|
|
367
|
+
prefixCls?: string | undefined;
|
|
368
|
+
rootClassName?: string | undefined;
|
|
369
|
+
getPopupContainer?: antd_es_table_interface.GetPopupContainer | undefined;
|
|
370
|
+
components?: _rc_component_table_lib_interface.TableComponents<TData> | undefined;
|
|
371
|
+
bordered?: boolean | undefined;
|
|
372
|
+
tableLayout?: _rc_component_table_lib_interface.TableLayout | undefined;
|
|
373
|
+
expandedRowKeys?: _rc_component_table_lib_interface.Key[] | undefined;
|
|
374
|
+
defaultExpandedRowKeys?: _rc_component_table_lib_interface.Key[] | undefined;
|
|
375
|
+
expandedRowRender?: _rc_component_table_lib_interface.ExpandedRowRender<TData> | undefined;
|
|
376
|
+
expandRowByClick?: boolean | undefined;
|
|
377
|
+
expandIcon?: _rc_component_table_lib_interface.RenderExpandIcon<TData> | undefined;
|
|
378
|
+
onExpand?: ((expanded: boolean, record: TData) => void) | undefined;
|
|
379
|
+
onExpandedRowsChange?: ((expandedKeys: _rc_component_table_lib_interface.Key[]) => void) | undefined;
|
|
380
|
+
defaultExpandAllRows?: boolean | undefined;
|
|
381
|
+
indentSize?: number | undefined;
|
|
382
|
+
expandIconColumnIndex?: number | undefined;
|
|
383
|
+
expandedRowClassName?: _rc_component_table_lib_interface.RowClassName<TData> | undefined;
|
|
384
|
+
childrenColumnName?: string | undefined;
|
|
385
|
+
rowKey?: string | keyof TData | _rc_component_table_lib_interface.GetRowKey<TData> | undefined;
|
|
386
|
+
expandable?: _rc_component_table_lib_interface.ExpandableConfig<TData> | undefined;
|
|
387
|
+
rowClassName?: string | _rc_component_table_lib_interface.RowClassName<TData> | undefined;
|
|
388
|
+
showHeader?: boolean | undefined;
|
|
389
|
+
onRow?: _rc_component_table_lib_interface.GetComponentProps<TData> | undefined;
|
|
390
|
+
onHeaderRow?: _rc_component_table_lib_interface.GetComponentProps<readonly _rc_component_table.ColumnType<TData>[]> | undefined;
|
|
391
|
+
rowHoverable?: boolean | undefined;
|
|
392
|
+
tailor?: boolean | undefined;
|
|
393
|
+
getContainerWidth?: ((ele: HTMLElement, width: number) => number) | undefined;
|
|
394
|
+
measureRowRender?: ((measureRow: React.ReactNode) => React.ReactNode) | undefined;
|
|
395
|
+
dropdownPrefixCls?: string | undefined;
|
|
396
|
+
dataSource?: readonly TData[] | undefined;
|
|
397
|
+
rowSelection?: antd_es_table_interface.TableRowSelection<TData> | undefined;
|
|
398
|
+
sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
|
|
399
|
+
showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
|
|
400
|
+
virtual?: boolean | undefined;
|
|
401
|
+
label: React.ReactNode;
|
|
402
|
+
value: string;
|
|
403
|
+
id: string;
|
|
404
|
+
loading: boolean | undefined;
|
|
405
|
+
exporting: boolean | undefined;
|
|
406
|
+
disabled: boolean | undefined;
|
|
407
|
+
filters: FiltersState;
|
|
408
|
+
pagination: PaginationProps;
|
|
409
|
+
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;
|
|
410
|
+
onToolbarAction: (toolbarAction: ToolbarAction) => void;
|
|
411
|
+
};
|
|
165
412
|
|
|
166
|
-
export {
|
|
413
|
+
export { DEFAULT_TOOLBAR_ITEMS, DataTable, type DataTableColumnType, type DataTableFilterConfig, type DataTableProps, FiltersState, type SerializeOptions, type SorterState, type TableChangeState, type ToolbarAction, serializeForPost, serializeForPostFlat, serializeForURL, serializeToURLSearchParams, useDataTableState, useDataTableStateAdapter, useTabsDataTableState };
|
package/antd-data-table.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import {p,b,f,e,a,q,c,g,h,d,i,j,k,m,l,n,o}from'./chunk-W5W7SZNA.js';import'./chunk-75LTHX75.js';import {Card,Table,Checkbox}from'antd';import S from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function u({className:e,...a$1}){return jsx("div",{className:a("animate-pulse rounded-sm bg-bg-soft",e),...a$1})}function ae({count:e,size:a="small",pagination:t,classNames:o,columns:i}){return jsx(Table,{rowKey:"id",size:a,rowHoverable:false,classNames:o,dataSource:Array.from({length:e},(r,n)=>({id:n})),pagination:t,children:i.map((r,n)=>jsx(Table.Column,{dataIndex:r.dataIndex,width:r.width,title:jsx(u,{className:"h-22 w-full animate-none bg-bg-antd"}),render:()=>ce(i),onCell:()=>n===0?{colSpan:i.length}:{colSpan:0}},r.dataIndex))})}var te=16;function ce(e){let a=e.length,o=`calc((100% - ${te*(a-1)}px) / ${a})`,i=e.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:"flex items-center",style:{gap:`${te}px`},children:e.map((r,n)=>{let s=r?.key??n;return jsx("div",{style:{width:o},children:ue(r.skeleton,i)},s)})})}function ue(e,a){switch(e){case "avatar":return jsx(ge,{});case "double-line":return jsx(ye,{});case "group":return jsx(Te,{needAlignment:a});default:return jsx(fe,{needAlignment:a})}}function fe({needAlignment:e}){return jsxs("div",{className:"grid h-full gap-4",children:[e&&jsx("div",{className:"h-12 w-1"}),jsx(u,{className:"h-10"})]})}function ge(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(u,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 38px)",height:"var(--avatar-size, 38px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(u,{className:"h-12 w-[60%]"}),jsx(u,{className:"h-10"})]})]})}function ye(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(u,{className:"h-12 w-[60%]"}),jsx(u,{className:"h-10"})]})}function Te({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(u,{className:"h-10 w-[20%]"}),jsx(u,{className:"h-10 w-[20%]"}),jsx(u,{className:"h-10 w-[20%]"}),jsx(u,{className:"h-10 w-[20%]"}),jsx(u,{className:"h-10 w-[20%]"})]})]})}function be(e){return e.key?String(e.key):Array.isArray(e.dataIndex)?e.dataIndex.join("."):String(e.dataIndex)}function re({disabled:e,columns:a$1,columnVisibility:t,onColumnVisibilityChange:o$1}){let i$1=p(),[r,n$1]=S.useState(false),s=S.useCallback(l=>{o$1(d=>({...d,[l]:!d[l]}));},[o$1]),m$1=Object.keys(t).filter(l=>t[l]===true).length===1;return jsxs(g,{open:r,onOpenChange:n$1,children:[jsx(h,{asChild:true,children:jsx(b,{mode:"stroke",variant:"neutral",size:"small",className:a(r&&"active"),disabled:e,children:jsx(d,{className:"size-16"})})}),jsx(i,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(j,{children:[jsx(k,{autoFocus:true,placeholder:"Search..."}),jsx(m,{children:i$1("no_results")}),jsx(l,{className:"max-h-256",children:jsx(n,{children:a$1.map(l=>{let d=be(l),c=t[d]!==false;return jsxs(o,{keywords:[l.title,l.dataIndex],onSelect:()=>s(d),className:"group flex items-center gap-6",value:d,disabled:m$1&&c,children:[jsx(Checkbox,{checked:c,tabIndex:-1,className:a("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function oe(e){return e.filter(a=>a.filter!==void 0).map(a=>{let{filter:t,dataIndex:o,title:i}=a,r=Array.isArray(o)?o.join("."):o,n=t.displayName??(typeof i=="string"?i:r);return {...t,columnId:r,displayName:n}})}function ie(e){return e.map(({filter:a,...t})=>t)}var he={header:"h-56",title:"text-[16px]"};function se(e){return e.key?String(e.key):Array.isArray(e.dataIndex)?e.dataIndex.join("."):String(e.dataIndex)}var xe={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"}},ke={size:"small",hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]};function Re({title:e$1,columns:a$1,filters:t,cardProps:o,loading:i,pagination:r,style:n,onFiltersChange:s,onRefresh:m,...l}){let d=p(),[c$1,P]=S.useState(()=>Object.fromEntries(a$1.map(b=>[se(b),true]))),h=S.useMemo(()=>oe(a$1),[a$1]),w=S.useMemo(()=>ie(a$1),[a$1]),x=S.useMemo(()=>w.filter(b=>c$1[se(b)]!==false),[w,c$1]),{extra:N,...f$1}=o??{},y={showTotal:S.useCallback(b=>d("pagination_total").replace("{total}",String(b)),[d]),disabled:i,...ke,...r},v=jsxs("div",{className:"flex gap-8",children:[jsx(b,{mode:"stroke",variant:"neutral",size:"small",disabled:!!i,onClick:m,children:i?jsx(f,{className:"size-16 animate-spin"}):jsx(e,{className:"size-16"})}),jsx(re,{disabled:!!i,columns:a$1,columnVisibility:c$1,onColumnVisibilityChange:P}),N]}),M={...xe,header:{cell:l?.bordered?"":a("border-t border-stroke-antd first:border-l last:border-r")}},pe=Math.min(y.pageSize??y.defaultPageSize??10,15),j=!!(i&&x.some(b=>b.skeleton)),de=h.length!==0;return jsxs(Card,{title:e$1,classNames:he,size:"small",...f$1,extra:v,style:n,children:[de&&jsxs(Fragment,{children:[jsx(q,{disabled:i,columns:h,filters:t,onFiltersChange:s}),jsx(c,{className:"-mx-12 my-12 w-[calc(100%+24px)] bg-bg-antd"})]}),j&&jsx(ae,{columns:x,size:l.size??"small",count:pe,classNames:M,pagination:y}),!j&&jsx(Table,{columns:x,classNames:M,pagination:y,loading:i,...l})]})}var A={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function I(e,a){return a[e]??e}function we(e){return e!==null&&typeof e=="object"&&"$d"in e&&typeof e.format=="function"}function V(e,a){return e==null?null:we(e)?e.format(a):typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:String(e)}function Fe(e,a={}){let t={...A,...a},{pagination:o,filters:i,sorter:r}=e,n={};o.current!==void 0&&(n[t.paginationKeys.current]=o.current),o.pageSize!==void 0&&(n[t.paginationKeys.pageSize]=o.pageSize);let s=Array.isArray(r)?r[0]:r;s?.field&&s?.order&&(n[t.sorterKeys.field]=String(s.field),n[t.sorterKeys.order]=t.orderValues[s.order]??s.order);let m={};for(let l of i){let d=I(l.columnId,t.fieldMapping);m[d]=l.values.map(c=>V(c,t.dateFormat));}return Object.keys(m).length>0&&(n[t.filtersKey]=m),n}function L(e,a={}){let t={...A,...a},{pagination:o,filters:i,sorter:r}=e,n={};o.current!==void 0&&(n[t.paginationKeys.current]=o.current),o.pageSize!==void 0&&(n[t.paginationKeys.pageSize]=o.pageSize);let s=Array.isArray(r)?r[0]:r;s?.field&&s?.order&&(n[t.sorterKeys.field]=String(s.field),n[t.sorterKeys.order]=t.orderValues[s.order]??s.order);for(let m of i){let l=I(m.columnId,t.fieldMapping),d=m.values.map(c=>V(c,t.dateFormat));n[l]=d.length===1?d[0]:d;}return n}function le(e,a={}){let t={...A,...a},{pagination:o,filters:i,sorter:r}=e,n=new URLSearchParams;o.current!==void 0&&n.set(t.paginationKeys.current,String(o.current)),o.pageSize!==void 0&&n.set(t.paginationKeys.pageSize,String(o.pageSize));let s=Array.isArray(r)?r[0]:r;s?.field&&s?.order&&(n.set(t.sorterKeys.field,String(s.field)),n.set(t.sorterKeys.order,t.orderValues[s.order]??s.order));for(let m of i){let l=I(m.columnId,t.fieldMapping),d=m.values.map(c=>V(c,t.dateFormat));n.set(l,d.join(","));}return n.toString()}function ze(e,a={}){let t=le(e,a);return new URLSearchParams(t)}var Ne=[],ve={},Oe={current:1,pageSize:10};function Ke({fireOnMount:e=true,defaultFilters:a=Ne,defaultPagination:t=Oe,defaultSorter:o=ve,serializeOptions:i={},serializeFn:r=L,onChange:n}={}){let s=S.useRef(!e),m=S.useRef(n);m.current=n;let[l,d]=S.useState(a),[c,P]=S.useState(t),[h,w]=S.useState(o),x=S.useCallback(f=>{d(k=>{let y=typeof f=="function"?f(k):f;return P(v=>({...v,current:1})),y});},[]),N=S.useCallback((f,k,y)=>{P(f),w(y);},[]);return S.useEffect(()=>{if(s.current){s.current=false;return}let f={pagination:c,filters:l,sorter:h},k=r(f,i);m.current?.(k,f);},[c,l,h,r,i]),{filters:l,pagination:c,onFiltersChange:x,onChange:N}}export{Re as DataTable,Fe as serializeForPost,L as serializeForPostFlat,le as serializeForURL,ze as serializeToURLSearchParams,Ke as useDataTableState};
|
|
1
|
+
import {b as b$1}from'./chunk-TQSM6RF4.js';import {d,g,e as e$1,f as f$1,a,b,c}from'./chunk-F5D2HAH7.js';import {e,f,g as g$1,h,m,p,o,q,n,j,i,l,t,A,B,C,E,D,F,H}from'./chunk-TYGCMNMU.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 {Table,ConfigProvider,Tooltip,Checkbox}from'antd';import {AnimatePresence,m as m$1}from'motion/react';import {Tabs}from'radix-ui';import {ArrowDownToLine,RefreshCw}from'lucide-react';var Wt={components:{DatePicker:{activeBorderColor:"#d9d9d9",hoverBorderColor:"#d9d9d9",activeShadow:"none",cellHeight:24,cellWidth:28}}};var ft={tableSize:"middle",columnVisibility:{}},Pe={tabStates:{},activeTabId:"",loading:false,exporting:false},tt=(t,o)=>{t.tabStates[o]||(t.tabStates[o]={...ft});},Xt=t=>t.tabStates[t.activeTabId]??ft,ze=(t,o)=>({...Pe,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 r=n.activeTabId;tt(n,r),n.tabStates[r].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let n=a.activeTabId;tt(a,n);let r=a.tabStates[n].columnVisibility;a.tabStates[n].columnVisibility=typeof e=="function"?e(r):e;}),toggleColumnVisibility:e=>t(a=>{let n=a.activeTabId;tt(a,n);let r=a.tabStates[n].columnVisibility[e];a.tabStates[n].columnVisibility[e]=!r;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...ft};})}),Ne=(t,o)=>createStore()(persist(immer(e=>ze(e,o)),{name:t,partialize:e=>({tabStates:e.tabStates})})),qt=y.createContext(null),Ie=["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=Ne(t,o)),y.useEffect(()=>{let i=n.current;i&&!i.getState().activeTabId&&i.getState().setActiveTab(o);},[o]);let r=y.useMemo(()=>({alwaysShowingColumns:e??Ie}),[e]);return jsx(Jt.Provider,{value:r,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 dt(){return M(t=>Xt(t))}function te(){return M(t=>Xt(t).tableSize)}function R({className:t,...o}){return jsx("div",{className:f("animate-pulse rounded-sm bg-bg-soft",t),...o})}function oe({count:t,size:o="small",pagination:e,classNames:a,columns:n}){let r=y.useCallback(()=>we(n),[n]);return jsx(Table,{rowKey:"id",size:o,rowHoverable:false,classNames:a,dataSource:Array.from({length:t},(i,l)=>({id:l})),pagination:e,children:n.map((i,l)=>jsx(Table.Column,{dataIndex:i.dataIndex,width:i.width,title:jsx(R,{className:"h-22 w-full animate-none bg-bg-antd"}),render:r,onCell:()=>l===0?{colSpan:n.length}:{colSpan:0}},i.dataIndex))})}var ae=16;function we(t){let o=t.length,a=`calc((100% - ${ae*(o-1)}px) / ${o})`,n=t.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:"flex items-center",style:{gap:`${ae}px`},children:t.map((r,i)=>{let l=r?.key??i;return jsx("div",{style:{width:a},children:Fe(r.skeleton,n)},l)})})}function Fe(t,o){switch(t){case "avatar":return jsx(Oe,{});case "double-line":return jsx(Ve,{});case "group":return jsx(_e,{needAlignment:o});default:return jsx(Be,{needAlignment:o})}}function Be({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsx(R,{className:"h-10"})]})}function Oe(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(R,{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(R,{className:"h-12 w-[60%]"}),jsx(R,{className:"h-10"})]})]})}function Ve(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(R,{className:"h-12 w-[60%]"}),jsx(R,{className:"h-10"})]})}function _e({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(R,{className:"h-10 w-[20%]"}),jsx(R,{className:"h-10 w-[20%]"}),jsx(R,{className:"h-10 w-[20%]"}),jsx(R,{className:"h-10 w-[20%]"}),jsx(R,{className:"h-10 w-[20%]"})]})]})}var Me=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"}}),Ke=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"}});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"}});var re=y.createContext({variant:"default",size:"medium"});function ie({className:t,...o}){return jsx(Tabs.Root,{"data-slot":"tabs",className:f("",t),...o})}function se({className:t,variant:o="default",shape:e="default",size:a="medium",...n}){return jsx(re.Provider,{value:{variant:o||"default",size:a||"medium"},children:jsx(Tabs.List,{"data-slot":"tabs-list",className:f(Me({variant:o,shape:e,size:a}),t),...n})})}function le({className:t,...o}){let{variant:e,size:a}=y.useContext(re);return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:f(Ke({variant:e,size:a}),t),...o})}function de({className:t,options:o,...e}){return jsx(ie,{className:f("w-full",t),...e,children:jsx(se,{variant:"line",size:"medium",className:"w-full px-12",children:o?.map(a=>jsx(le,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function pe({value:t$1,className:o,onChange:e,...a}){let n=d(),[r,i]=y.useState(false),l=y.useMemo(()=>[{groupType:"radio",value:t$1,options:[{label:n("large"),value:"large"},{label:n("middle"),value:"middle"},{label:n("compact"),value:"small"}],onValueChange:e}],[e,n,t$1]);return jsx(b$1,{side:"bottom",align:"end",collisionPadding:6,items:l,className:"min-w-100",open:r,onOpenChange:i,children:jsxs(t,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",o,r&&"active"),...a,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 Ge(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function me({disabled:t$1,columns:o}){let e=d(),{alwaysShowingColumns:a$1}=Zt(),[n,r]=y.useState(false),{columnVisibility:i}=dt(),l=M(s=>s.setColumnVisibilityState),b$1=y.useCallback((s,d)=>{l(u=>({...u,[s]:d}));},[l]);return jsxs(a,{open:n,onOpenChange:r,children:[jsx(b,{asChild:true,children:jsx(t,{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(c,{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 d=Ge(s),u=i[d]!==false;return jsxs(H,{keywords:[s.title,s.dataIndex],onSelect:()=>b$1(d,!u),className:"group flex items-center gap-6",value:d,disabled:a$1?.includes(d),children:[jsx(Checkbox,{checked:u,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:s.title})]},d)})})})]})})]})}function qe(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 Je({btnProps:t$1,tooltip:o,disabled:e,loading:a,onAction:n}){let r=d(),i=o??r("refresh");return jsx(t,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:a,disabled:e||a,className:"gap-0",onClick:()=>n({action:"data_refresh"}),...t$1,children:jsx(Tooltip,{title:i,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function Qe(){let t=te()??"small",o=M(e=>e.setTableSize);return jsx(pe,{value:t,onChange:o})}function Ze({columns:t}){return jsx(me,{columns:t})}function ta({btnProps:t$1,disabled:o,loading:e,onAction:a}){let n=d();return jsx(t,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:o||e,onClick:()=>a({action:"data_export"}),...t$1,children:n("data_export")})}var ea={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}},aa={ease:[.26,.08,.25,1],duration:.25};function be({items:t,columns:o,disabled:e,loading:a,exporting:n,filter:r,onAction:i,className:l}){let b=y.useMemo(()=>t.map(c=>qe(c)),[t]),s=y.useMemo(()=>b.filter(c=>!c.hidden),[b]),d=y.useCallback(c=>{i?.(c);},[i]),u=y.useMemo(()=>({disabled:e,loading:a,exporting:n,columns:o,onAction:d}),[e,a,n,o,d]),D=c=>{let P={btnProps:c.btnProps,tooltip:c.tooltip,disabled:e,loading:a,onAction:d};switch(c.type){case "data_refresh":return jsx(Je,{...P});case "size_setting":return jsx(Qe,{});case "column_setting":return jsx(Ze,{columns:o});case "data_export":return jsx(ta,{...P,loading:n});case "custom":return c.render?.(u);case "filter_btn":return r;default:return null}};return jsx("div",{className:f("flex items-center gap-8",l),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:s.map(c=>jsx(m$1.div,{layout:true,variants:ea,initial:"initial",animate:"animate",exit:"exit",transition:aa,children:D(c)},c.key))})})}var St=["data_refresh","size_setting","column_setting","filter_btn"];function fe(t){return t.filter(o=>o.filter!==void 0).map(o=>{let{filter:e,dataIndex:a,title:n}=o,r=Array.isArray(a)?a.join("."):a,i=e.displayName??(typeof n=="string"?n:r);return {...e,columnId:r,displayName:i}})}function Te(t){return t.map(({filter:o,...e})=>e)}function ra(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}var ia={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"}},sa={hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]},la={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},da={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},ca={ease:[.26,.08,.25,1],duration:.3};function pa({id:t,title:o$1,icon:e,description:a,variant:n$1,classNames:r,slots:i$1,columns:l$1,filters:b,defaultFilters:s,loading:d$1,exporting:u,disabled:D,animated:c=true,pagination:P,style:O,toolbarItems:W,activeTab:V,tabList:I,onTabChange:A,onFiltersChange:ot,onToolbarAction:nt,...q$1}){let J=d(),g$2=M(w=>w.setActiveTab),S=M(w=>w.activeTabId),{tableSize:h$1,columnVisibility:rt}=dt();y.useEffect(()=>{t&&t!==S&&g$2(t);},[t,S,g$2]);let z=y.useMemo(()=>l$1.filter(w=>w.hidden!==true),[l$1]),v=y.useMemo(()=>fe(z),[z]),Q=y.useMemo(()=>Te(z),[z]),[K,Z]=g({filters:b,defaultFilters:s,onFiltersChange:ot}),E=y.useMemo(()=>Q.filter(w=>{let De=ra(w);return rt[De]!==false}),[Q,rt]),U=y.useCallback(w=>J("pagination_total").replace("{total}",String(w)),[J]),Y=y.useMemo(()=>({showTotal:U,disabled:d$1||D,size:h$1==="large"?"middle":h$1,...sa,...P}),[U,d$1,D,h$1,P]),it={...ia,header:{cell:q$1?.bordered?"":f("border-t border-stroke-antd first:border-l last:border-r")}},st=I&&Array.isArray(I),ut=Math.min(Y.pageSize??Y.defaultPageSize??10,15),T=!!(d$1&&E.some(w=>w.skeleton)),F=v.length!==0,x=K&&K.length!==0,k=jsx(e$1,{columns:v,filters:K,actions:Z,className:"flex flex-wrap gap-6",enableAutoClose:true}),L=T?jsx(oe,{id:`${t}-skeleton`,columns:E,size:h$1,count:ut,className:"bg-bg-white",classNames:it,pagination:Y}):jsx(Table,{id:`${t}-data-table`,columns:E,className:"bg-bg-white",classNames:it,pagination:Y,size:h$1,loading:d$1,...q$1}),mt=n$1==="accent";return jsx(ConfigProvider,{theme:Wt,children:jsxs(g$1,{style:O,className:f("rounded-2xl",r?.root),variant:n$1,children:[jsxs(h,{className:f("px-14 pt-12 pb-10",mt&&"pt-10",st&&"border-b-0",r?.cardHeader),children:[jsxs(m,{className:f("flex items-center gap-12",r?.cardHeading),children:[e&&jsx(p,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(o$1&&a)&&"size-44 [&_svg]:size-24",r?.cardIcon),children:e}),o$1&&jsxs("div",{className:f(a&&"flex flex-col gap-4"),children:[jsx(o,{children:o$1}),a&&jsx(q,{children:a})]})]}),jsx(n,{className:r?.cardToolbar,children:jsx(be,{onAction:nt,items:W??St,loading:d$1,disabled:D,exporting:u,filter:F&&jsx(f$1,{columns:v,filters:K,actions:Z,align:"end",enableAutoBack:true},`${t}-filter`),columns:z})})]}),i$1?.summary&&jsx(j,{className:f("p-16",r?.cardSummary),children:i$1?.footer}),st&&jsx(j,{className:"p-0",children:jsx(de,{value:V,options:I,onValueChange:A})}),jsx(i,{className:f("overflow-hidden p-12 pt-16 pb-8",r?.cardContent),children:c?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsxs(m$1.div,{variants:da,initial:"initial",animate:"animate",exit:"exit",custom:x,transition:ca,children:[jsx(AnimatePresence,{initial:false,children:x&&jsxs(m$1.div,{variants:la,initial:"initial",animate:"animate",exit:"exit",children:[k,jsx("div",{className:"h-14"})]},S)}),L]},S)}):jsxs(Fragment,{children:[x&&jsx("div",{className:"mb-16",children:k}),L]})}),i$1?.footer&&jsx(l,{className:f("p-16",r?.cardFooter),children:i$1?.footer})]})})}function ua({id:t,storageKey:o,alwaysShowingColumns:e,...a}){return jsx(Qt,{storageKey:o??"UI_TABLE_CONFIG",initialTabId:t,alwaysShowingColumns:e,children:jsx(pa,{id:t,...a})})}var Ct={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function Dt(t,o){return o[t]??t}function ba(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function vt(t,o){return t==null?null:ba(t)?t.format(o):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function fa(t,o={}){let e={...Ct,...o},{pagination:a,filters:n,sorter:r}=t,i={};a.current!==void 0&&(i[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(i[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(r)?r[0]:r;l?.field&&l?.order&&(i[e.sorterKeys.field]=String(l.field),i[e.sorterKeys.order]=e.orderValues[l.order]??l.order);let b={};for(let s of n){let d=Dt(s.columnId,e.fieldMapping);b[d]=s.values.map(u=>vt(u,e.dateFormat));}return Object.keys(b).length>0&&(i[e.filtersKey]=b),i}function at(t,o={}){let e={...Ct,...o},{pagination:a,filters:n,sorter:r}=t,i={};a.current!==void 0&&(i[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(i[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(r)?r[0]:r;l?.field&&l?.order&&(i[e.sorterKeys.field]=String(l.field),i[e.sorterKeys.order]=e.orderValues[l.order]??l.order);for(let b of n){let s=Dt(b.columnId,e.fieldMapping),d=b.values.map(u=>vt(u,e.dateFormat));i[s]=d.length===1?d[0]:d;}return i}function Se(t,o={}){let e={...Ct,...o},{pagination:a,filters:n,sorter:r}=t,i=new URLSearchParams;a.current!==void 0&&i.set(e.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&i.set(e.paginationKeys.pageSize,String(a.pageSize));let l=Array.isArray(r)?r[0]:r;l?.field&&l?.order&&(i.set(e.sorterKeys.field,String(l.field)),i.set(e.sorterKeys.order,e.orderValues[l.order]??l.order));for(let b of n){let s=Dt(b.columnId,e.fieldMapping),d=b.values.map(u=>vt(u,e.dateFormat));i.set(s,d.join(","));}return i.toString()}function Ta(t,o={}){let e=Se(t,o);return new URLSearchParams(e)}var ga=[],ya={current:1,pageSize:10};function Ce(){return {filters:ga,pagination:ya,sorter:{}}}function Sa(t){let o=new Map,e=Ce();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 xt({fireOnMount:t=true,active:o,defaultActive:e,tabList:a,onTabChange:n,onTableChange:r,onToolbarAction:i}){let[l,b]=y.useState(()=>e??a[0]?.value??""),s=o??l,[d,u]=y.useState(()=>Sa(a)),D=y.useMemo(()=>a.find(T=>T.value===s)??a[0],[s,a]),{id:c,fireOnMount:P=t,loading:O,exporting:W,disabled:V,serializeOptions:I={},serializeFn:A=at,defaultFilters:ot,defaultPagination:nt,defaultSorter:q,filters:J,pagination:g,onChange:S,onToolbarAction:h,...rt}=D,z=y.useMemo(()=>Ce(),[]),v=y.useMemo(()=>d.get(s)??z,[d,s,z]),Q=y.useRef(r),K=y.useRef(i),Z=y.useRef(S),E=y.useRef(h);Q.current=r,K.current=i,Z.current=S,E.current=h;let U=y.useRef(new Map);y.useEffect(()=>{U.current.has(s)||U.current.set(s,!P);},[s,P]);let Y=y.useCallback(T=>{b(T),n?.(T);},[n]),it=y.useCallback(T=>{u(F=>{let x=new Map(F),k=x.get(s)??z,L=typeof T=="function"?T(k.filters):T;return x.set(s,{...k,filters:L,pagination:{...k.pagination,current:1}}),x});},[s,z]),st=y.useCallback((T,F,x)=>{u(k=>{let L=new Map(k),mt=L.get(s)??z;return L.set(s,{...mt,pagination:T,sorter:x}),L});},[s,z]),ut=y.useCallback(T=>{if(T.action==="data_export"){let F={pagination:v.pagination,filters:v.filters,sorter:v.sorter},x=A(F,I),k={action:T.action,payload:x};E.current?.(k),K.current?.(c,k);return}E.current?.(T),K.current?.(c,T);},[c,v,A,I]);return y.useEffect(()=>{if(U.current.get(s)){U.current.set(s,false);return}let F={pagination:v.pagination,filters:v.filters,sorter:v.sorter},x=A(F,I);Z.current?.(x,F),Q.current?.(c,x,F);},[s,c,v,A,I]),{activeTab:s,tabList:a,onTabChange:Y,id:c,loading:O,exporting:W,disabled:V||W,filters:v.filters,pagination:v.pagination,onFiltersChange:it,onChange:st,onToolbarAction:ut,...rt}}var Ca=[],Da={},va={current:1,pageSize:10};function xa({id:t,fireOnMount:o=true,defaultFilters:e=Ca,defaultPagination:a=va,defaultSorter:n=Da,serializeOptions:r={},loading:i,exporting:l,disabled:b,serializeFn:s=at,onChange:d,onToolbarAction:u}={}){let D=y.useRef(!o),c=y.useRef(d),P=y.useRef(u);c.current=d,P.current=u;let[O,W]=y.useState(e),[V,I]=y.useState(a),[A,ot]=y.useState(n),nt=y.useCallback(g=>{W(S=>typeof g=="function"?g(S):g),I(S=>({...S,current:1}));},[]),q=y.useCallback((g,S,h)=>{I(g),ot(h);},[]),J=y.useCallback(g=>{if(g.action==="data_export"){let h=s({pagination:V,filters:O,sorter:A},r);P.current?.({action:g.action,payload:h});return}P.current?.(g);},[O,V,s,r,A]);return y.useEffect(()=>{if(D.current){D.current=false;return}let g={pagination:V,filters:O,sorter:A},S=s(g,r);c.current?.(S,g);},[V,O,A,s,r]),{id:t,loading:i,exporting:l,disabled:b||l,filters:O,pagination:V,onFiltersChange:nt,onChange:q,onToolbarAction:J}}function ha(t={}){let{id:o="default",onChange:e,onToolbarAction:a,...n}=t,r=xt({fireOnMount:t.fireOnMount,tabList:[{id:o,value:o,label:"",columns:[],...n}],onTableChange:e?(u,D,c)=>e(D,c):void 0,onToolbarAction:a?(u,D)=>a(D):void 0}),{activeTab:i,tabList:l,columns:b,onTabChange:s,...d}=r;return d}
|
|
2
|
+
export{St as DEFAULT_TOOLBAR_ITEMS,ua as DataTable,fa as serializeForPost,at as serializeForPostFlat,Se as serializeForURL,Ta as serializeToURLSearchParams,xa as useDataTableState,ha as useDataTableStateAdapter,xt as useTabsDataTableState};
|