@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.
@@ -1,9 +1,52 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { D as DataFilterProps } from './types-KRc0daL-.js';
3
- export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-KRc0daL-.js';
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
- export { DataFilter };
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 };
@@ -1 +1 @@
1
- export{q as DataFilter}from'./chunk-W5W7SZNA.js';import'./chunk-75LTHX75.js';
1
+ export{h as DataFilter,d as useTransition}from'./chunk-F5D2HAH7.js';import'./chunk-TYGCMNMU.js';
@@ -1,63 +1,57 @@
1
1
  import * as antd from 'antd';
2
- import { CardProps, PaginationProps, TableProps } from 'antd';
2
+ import { PaginationProps, TableProps } from 'antd';
3
3
  export { PaginationProps as PaginationState, TableProps } from 'antd';
4
- import { I as IconType, a as FilterColumnOption, b as FiltersState } from './types-KRc0daL-.js';
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 TextFilterConfig = {
13
- type: 'text';
14
- displayName?: string;
15
- icon?: IconType;
16
- };
17
- type OptionFilterConfig = {
18
- type: 'option' | 'multiOption';
19
- options: FilterColumnOption[];
20
- displayName?: string;
21
- icon?: IconType;
22
- };
23
- type NumberFilterConfig = {
24
- type: 'number';
25
- mode?: 'single' | 'range';
26
- min?: number;
27
- max?: number;
28
- step?: number;
29
- displayName?: string;
30
- icon?: IconType;
31
- };
32
- type DateFilterConfig = {
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
- type SkeletonVariant = 'text' | 'avatar' | 'double-line' | 'group';
42
- type DataTableFilterConfig = TextFilterConfig | OptionFilterConfig | NumberFilterConfig | DateFilterConfig;
43
- type DataTableColumnType<TData> = ColumnType<TData> & {
44
- filter?: DataTableFilterConfig;
45
- skeleton?: SkeletonVariant;
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
- type DataTableProps<TData extends Record<string, unknown> = Record<string, unknown>> = {
48
- title?: React.ReactNode;
49
- columns: DataTableColumnType<TData>[];
50
- filters?: FiltersState;
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 SorterState<TData = Record<string, unknown>> = SorterResult<TData> | SorterResult<TData>[];
143
- type TableChangeState<TData = Record<string, unknown>> = {
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) => Record<string, unknown>;
155
- onChange?: (serialized: Record<string, unknown>, source: TableChangeState<TData>) => void;
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
- declare function useDataTableState<TData extends Record<string, unknown> = Record<string, unknown>>({ fireOnMount, defaultFilters: initialFilters, defaultPagination: initialPagination, defaultSorter: initialSorter, serializeOptions, serializeFn, onChange, }?: UseDataTableStateOptions<TData>): {
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
- type ColumnVisibilityState = Record<string, boolean>;
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 { type ColumnVisibilityState, DataTable, type DataTableColumnType, type DataTableFilterConfig, type DataTableProps, FiltersState, type SerializeOptions, type SorterState, type TableChangeState, serializeForPost, serializeForPostFlat, serializeForURL, serializeToURLSearchParams, useDataTableState };
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 };
@@ -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};