@robot-admin/naive-ui-components 0.17.3 → 0.17.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/C_Form.cjs +1 -1
- package/dist/C_Form.js +1 -1
- package/dist/C_FormModal2.cjs +1 -1
- package/dist/C_FormModal2.js +1 -1
- package/dist/C_FormSearch.css +52 -52
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_Table.base.css +155 -145
- package/dist/C_Table.css +155 -145
- package/dist/C_Table.d.cts +1 -1
- package/dist/C_Table.d.ts +1 -1
- package/dist/C_Time.css +4 -4
- package/dist/C_Time2.cjs +1 -1
- package/dist/C_Time2.js +1 -1
- package/dist/C_Tree.css +23 -23
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_WorkFlow.css +39 -39
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants.d.cts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants3.d.cts +1 -1
- package/dist/constants3.d.ts +1 -1
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.cts +8 -8
- package/dist/data.d.ts +8 -8
- package/dist/formValidation.cjs +1 -0
- package/dist/formValidation.js +1 -0
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +2 -2
- package/dist/index.vue.d.ts +2 -2
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +2 -2
- package/dist/index11.vue.d.cts +2 -2
- package/dist/index11.vue.d.ts +3 -3
- package/dist/index12.vue.d.cts +3 -3
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.cts +3 -3
- package/dist/index14.vue.d.ts +8 -8
- package/dist/index15.vue.d.cts +8 -8
- package/dist/index15.vue.d.ts +1 -1
- package/dist/index16.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +5 -5
- package/dist/index19.vue.d.cts +5 -5
- package/dist/index19.vue.d.ts +5 -4
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +2 -2
- package/dist/index20.vue.d.ts +2 -2
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +4 -4
- package/dist/index25.vue.d.ts +4 -4
- package/dist/index26.vue.d.cts +1 -1
- package/dist/index26.vue.d.ts +1 -1
- package/dist/index27.vue.d.cts +4 -4
- package/dist/index27.vue.d.ts +4 -4
- package/dist/index28.vue.d.cts +2 -2
- package/dist/index28.vue.d.ts +2 -2
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +5 -4
- package/dist/index8.vue.d.ts +3 -3
- package/dist/index9.vue.d.cts +3 -3
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/style.css +274 -264
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +4 -4
- package/dist/useCollapsePanel.d.ts +4 -4
- package/dist/useCropperCore.d.cts +6 -6
- package/dist/useCropperCore.d.ts +6 -6
- package/dist/useDraggableLayout.d.cts +6 -6
- package/dist/useDraggableLayout.d.ts +6 -6
- package/dist/useDynamicFormState.d.cts +4 -3
- package/dist/useDynamicFormState.d.ts +4 -3
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useInfiniteScroll.d.cts +2 -2
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useQRCode.d.cts +3 -3
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.cts +2 -2
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.cts +4 -4
- package/dist/useSignatureHistory.d.ts +4 -4
- package/dist/useSplitResize.d.cts +11 -11
- package/dist/useSplitResize.d.ts +11 -11
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +535 -509
- package/dist/useTableQuery.d.ts +535 -509
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +11 -6
- package/dist/useTimeSelection.d.ts +11 -6
- package/dist/useWorkflowValidation.d.cts +5 -5
- package/dist/useWorkflowValidation.d.ts +5 -5
- package/dist/verification.d.cts +4 -4
- package/dist/verification.d.ts +4 -4
- package/docs/guides/usage.en.md +16 -0
- package/docs/guides/usage.md +38 -0
- package/package.json +2 -1
package/dist/useTableQuery.d.ts
CHANGED
|
@@ -278,6 +278,67 @@ interface UseCrossPageSelectionReturn<T extends object = DataRecord> {
|
|
|
278
278
|
/** Preserve selected identities and loaded row snapshots across local or remote pages. */
|
|
279
279
|
declare function useCrossPageSelection<T extends object = DataRecord>(options: UseCrossPageSelectionOptions<T>): UseCrossPageSelectionReturn<T>;
|
|
280
280
|
//#endregion
|
|
281
|
+
//#region src/components/C_Table/composables/useTableGlobalConfig.d.ts
|
|
282
|
+
type FormatterType = 'date' | 'datetime' | 'currency' | 'percent' | 'enum' | 'number';
|
|
283
|
+
interface FormatterConfig {
|
|
284
|
+
/** 日期格式 */
|
|
285
|
+
date?: {
|
|
286
|
+
format?: string;
|
|
287
|
+
};
|
|
288
|
+
/** 日期时间格式 */
|
|
289
|
+
datetime?: {
|
|
290
|
+
format?: string;
|
|
291
|
+
};
|
|
292
|
+
/** 货币格式 */
|
|
293
|
+
currency?: {
|
|
294
|
+
prefix?: string;
|
|
295
|
+
suffix?: string;
|
|
296
|
+
precision?: number;
|
|
297
|
+
};
|
|
298
|
+
/** 百分比格式 */
|
|
299
|
+
percent?: {
|
|
300
|
+
precision?: number;
|
|
301
|
+
suffix?: string;
|
|
302
|
+
};
|
|
303
|
+
/** 数字格式(千分位) */
|
|
304
|
+
number?: {
|
|
305
|
+
precision?: number;
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
/** 列级 formatter 配置 */
|
|
309
|
+
interface ColumnFormatter {
|
|
310
|
+
type: FormatterType;
|
|
311
|
+
/** enum mapping:{ male: '男', female: '女' } */
|
|
312
|
+
mapping?: Record<string, string>;
|
|
313
|
+
/** 自定义格式化函数(优先级最高) */
|
|
314
|
+
fn?: (value: unknown, row: DataRecord) => string;
|
|
315
|
+
/** 覆盖全局格式配置 */
|
|
316
|
+
config?: Record<string, unknown>;
|
|
317
|
+
}
|
|
318
|
+
interface TableGlobalConfig {
|
|
319
|
+
/** 任意 C_Table 配置的应用级默认值。 */
|
|
320
|
+
defaults?: TableConfig;
|
|
321
|
+
/** 表格显示默认值 */
|
|
322
|
+
display?: DisplayConfig;
|
|
323
|
+
/** 默认分页条数 */
|
|
324
|
+
pageSize?: number;
|
|
325
|
+
/** 空状态文案 */
|
|
326
|
+
emptyText?: string;
|
|
327
|
+
/** 全局格式化配置 */
|
|
328
|
+
formatter?: FormatterConfig;
|
|
329
|
+
/** 列配置持久化前缀 */
|
|
330
|
+
persistPrefix?: string;
|
|
331
|
+
/** 默认导出文件名 */
|
|
332
|
+
exportFilename?: string;
|
|
333
|
+
}
|
|
334
|
+
declare const TABLE_GLOBAL_CONFIG_KEY: InjectionKey<TableGlobalConfig>;
|
|
335
|
+
/** 根据 ColumnFormatter 配置格式化单元格值 */
|
|
336
|
+
declare function applyFormatter(value: unknown, row: DataRecord, formatter: ColumnFormatter, globalConfig?: FormatterConfig): string;
|
|
337
|
+
/** 在组件内获取全局配置(自动合并默认值) */
|
|
338
|
+
declare function useTableGlobalConfig(): TableGlobalConfig;
|
|
339
|
+
/** 合并全局配置到 TableConfig(局部 > 全局 > 默认) */
|
|
340
|
+
declare function mergeGlobalConfig(local: TableConfig, global: TableGlobalConfig): TableConfig;
|
|
341
|
+
//#endregion
|
|
281
342
|
//#region src/components/C_Table/composables/useTableExport.d.ts
|
|
282
343
|
interface ExportConfig {
|
|
283
344
|
/** Data scope used by C_Table; source preserves the legacy loaded-source behavior. */
|
|
@@ -582,118 +643,296 @@ declare const createEditModeChecker: (config: ResolvedConfig) => {
|
|
|
582
643
|
isCellEditMode: () => boolean;
|
|
583
644
|
};
|
|
584
645
|
//#endregion
|
|
585
|
-
//#region src/components/C_Table/composables/
|
|
586
|
-
|
|
587
|
-
interface
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
format?: string;
|
|
591
|
-
};
|
|
592
|
-
/** 日期时间格式 */
|
|
593
|
-
datetime?: {
|
|
594
|
-
format?: string;
|
|
595
|
-
};
|
|
596
|
-
/** 货币格式 */
|
|
597
|
-
currency?: {
|
|
598
|
-
prefix?: string;
|
|
599
|
-
suffix?: string;
|
|
600
|
-
precision?: number;
|
|
601
|
-
};
|
|
602
|
-
/** 百分比格式 */
|
|
603
|
-
percent?: {
|
|
604
|
-
precision?: number;
|
|
605
|
-
suffix?: string;
|
|
606
|
-
};
|
|
607
|
-
/** 数字格式(千分位) */
|
|
608
|
-
number?: {
|
|
609
|
-
precision?: number;
|
|
610
|
-
};
|
|
611
|
-
}
|
|
612
|
-
/** 列级 formatter 配置 */
|
|
613
|
-
interface ColumnFormatter {
|
|
614
|
-
type: FormatterType;
|
|
615
|
-
/** enum mapping:{ male: '男', female: '女' } */
|
|
616
|
-
mapping?: Record<string, string>;
|
|
617
|
-
/** 自定义格式化函数(优先级最高) */
|
|
618
|
-
fn?: (value: unknown, row: DataRecord) => string;
|
|
619
|
-
/** 覆盖全局格式配置 */
|
|
620
|
-
config?: Record<string, unknown>;
|
|
646
|
+
//#region src/components/C_Table/composables/useRowEdit.d.ts
|
|
647
|
+
/** 行级校验错误 */
|
|
648
|
+
interface RowValidationError {
|
|
649
|
+
field: string;
|
|
650
|
+
message: string;
|
|
621
651
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
formatter?: FormatterConfig;
|
|
633
|
-
/** 列配置持久化前缀 */
|
|
634
|
-
persistPrefix?: string;
|
|
635
|
-
/** 默认导出文件名 */
|
|
636
|
-
exportFilename?: string;
|
|
652
|
+
/**
|
|
653
|
+
* 行编辑配置选项
|
|
654
|
+
*/
|
|
655
|
+
interface RowEditOptions {
|
|
656
|
+
data: () => DataRecord[];
|
|
657
|
+
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
658
|
+
onSave?: (rowData: DataRecord, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
|
|
659
|
+
onCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
|
|
660
|
+
/** 列配置(用于提取校验规则) */
|
|
661
|
+
columns?: () => TableColumn[];
|
|
637
662
|
}
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
663
|
+
/**
|
|
664
|
+
* 可编辑行组合函数,提供表格整行的编辑功能
|
|
665
|
+
*/
|
|
666
|
+
declare function useRowEdit(options: RowEditOptions): {
|
|
667
|
+
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
668
|
+
editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
|
|
669
|
+
isSaving: vue.Ref<boolean, boolean>;
|
|
670
|
+
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
671
|
+
startEditRow: (rowKey: DataTableRowKey) => boolean;
|
|
672
|
+
cancelEditRow: () => Promise<void>;
|
|
673
|
+
saveEditRow: () => Promise<{
|
|
674
|
+
updatedData: DataRecord;
|
|
675
|
+
rowIndex: number;
|
|
676
|
+
} | undefined>;
|
|
677
|
+
validateRow: () => Promise<boolean>;
|
|
678
|
+
validationErrors: vue.Ref<{
|
|
679
|
+
field: string;
|
|
680
|
+
message: string;
|
|
681
|
+
}[], RowValidationError[] | {
|
|
682
|
+
field: string;
|
|
683
|
+
message: string;
|
|
684
|
+
}[]>;
|
|
685
|
+
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
686
|
+
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
687
|
+
findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
|
|
688
|
+
invalidate: () => void;
|
|
689
|
+
};
|
|
645
690
|
//#endregion
|
|
646
|
-
//#region src/components/C_Table/
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
691
|
+
//#region src/components/C_Table/composables/useTableManager.d.ts
|
|
692
|
+
/**
|
|
693
|
+
* 表格管理器配置接口
|
|
694
|
+
*/
|
|
695
|
+
interface TableManagerConfig {
|
|
696
|
+
feedback?: ComponentFeedback;
|
|
697
|
+
locale?: ComponentLocale;
|
|
698
|
+
editable: boolean;
|
|
699
|
+
editMode: string;
|
|
700
|
+
showRowActions: boolean;
|
|
701
|
+
modalTitle: string;
|
|
702
|
+
modalWidth: number;
|
|
703
|
+
onEditSave?: (rowData: DataRecord, rowIndex: number, columnKey?: string) => void | Promise<void>;
|
|
704
|
+
onEditCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
|
|
705
|
+
onEditError?: (error: unknown) => void;
|
|
706
|
+
expandable: boolean;
|
|
707
|
+
defaultExpandedKeys?: DataTableRowKey[];
|
|
708
|
+
onLoadExpandData?: (row: DataRecord) => Promise<any[]> | any[];
|
|
709
|
+
onExpandError?: (error: unknown, row: DataRecord) => void;
|
|
710
|
+
renderExpandContent?: unknown;
|
|
711
|
+
rowExpandable?: (row: DataRecord) => boolean;
|
|
712
|
+
enableSelection: boolean;
|
|
713
|
+
defaultCheckedKeys?: DataTableRowKey[];
|
|
714
|
+
rowCheckable?: (row: DataRecord) => boolean;
|
|
715
|
+
maxSelection?: number;
|
|
716
|
+
enableChildSelection: boolean;
|
|
717
|
+
childRowCheckable?: (childRow: DataRecord, parentRow: DataRecord) => boolean;
|
|
718
|
+
enableParentChildLink: boolean;
|
|
719
|
+
parentChildLinkMode: ParentChildLinkMode;
|
|
720
|
+
dynamicRows?: DynamicRowsOptions<DataRecord>;
|
|
721
|
+
treeEnabled?: boolean;
|
|
722
|
+
treeChildrenKey?: string;
|
|
660
723
|
}
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
remote?: boolean;
|
|
724
|
+
/**
|
|
725
|
+
* 表格管理器参数接口
|
|
726
|
+
*/
|
|
727
|
+
interface TableManagerParams {
|
|
728
|
+
config: MaybeRefOrGetter<TableManagerConfig>;
|
|
729
|
+
data: () => DataRecord[];
|
|
730
|
+
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
731
|
+
emit: (...args: any[]) => unknown;
|
|
732
|
+
/** 列配置(用于编辑校验) */
|
|
733
|
+
columns?: () => TableColumn[];
|
|
734
|
+
/** UI 壳提供加载内容,状态引擎保持可独立调用。 */
|
|
735
|
+
renderLoading?: () => VNodeChild;
|
|
736
|
+
/** String row-key field inherited by dynamic row creation; explicit dynamicRows.rowKey wins. */
|
|
737
|
+
rowKeyField?: MaybeRefOrGetter<string | undefined>;
|
|
676
738
|
}
|
|
677
|
-
/**
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
739
|
+
/**
|
|
740
|
+
* 事件处理器接口
|
|
741
|
+
*/
|
|
742
|
+
interface EventHandlers {
|
|
743
|
+
onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string, originalKey?: DataTableRowKey) => Promise<void>;
|
|
744
|
+
onCancel: (rowData: DataRecord, rowIndex: number) => Promise<void>;
|
|
745
|
+
onExpandChange: (keys: DataTableRowKey[], row?: DataRecord, expanded?: boolean) => void;
|
|
746
|
+
onSelectionChange: (checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections: Map<DataTableRowKey, DataTableRowKey[]>) => void;
|
|
747
|
+
onChildSelectionChange: (parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void;
|
|
748
|
+
onRowChange: (data: DataRecord[]) => void;
|
|
749
|
+
onRowSelectionChange: (selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void;
|
|
750
|
+
onRowAdd: (newRow: DataRecord) => void;
|
|
751
|
+
onRowDelete: (deletedRow: DataRecord, index: number) => void;
|
|
752
|
+
onRowCopy: (originalRow: DataRecord, newRow: DataRecord) => void;
|
|
753
|
+
onRowMove: (row: DataRecord, fromIndex: number, toIndex: number) => void;
|
|
754
|
+
}
|
|
755
|
+
/**
|
|
756
|
+
* 表格统一状态管理器
|
|
757
|
+
*/
|
|
758
|
+
declare function useTableManager(params: TableManagerParams): {
|
|
759
|
+
editStates: {
|
|
760
|
+
rowEdit: {
|
|
761
|
+
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
762
|
+
editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
|
|
763
|
+
isSaving: vue.Ref<boolean, boolean>;
|
|
764
|
+
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
765
|
+
startEditRow: (rowKey: DataTableRowKey) => boolean;
|
|
766
|
+
cancelEditRow: () => Promise<void>;
|
|
767
|
+
saveEditRow: () => Promise<{
|
|
768
|
+
updatedData: DataRecord;
|
|
769
|
+
rowIndex: number;
|
|
770
|
+
} | undefined>;
|
|
771
|
+
validateRow: () => Promise<boolean>;
|
|
772
|
+
validationErrors: vue.Ref<{
|
|
773
|
+
field: string;
|
|
774
|
+
message: string;
|
|
775
|
+
}[], RowValidationError[] | {
|
|
776
|
+
field: string;
|
|
777
|
+
message: string;
|
|
778
|
+
}[]>;
|
|
779
|
+
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
780
|
+
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
781
|
+
findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
|
|
782
|
+
invalidate: () => void;
|
|
783
|
+
};
|
|
784
|
+
cellEdit: {
|
|
785
|
+
editingCell: vue.Ref<{
|
|
786
|
+
rowKey: DataTableRowKey | null;
|
|
787
|
+
columnKey: string | null;
|
|
788
|
+
}, {
|
|
789
|
+
rowKey: DataTableRowKey | null;
|
|
790
|
+
columnKey: string | null;
|
|
791
|
+
} | {
|
|
792
|
+
rowKey: DataTableRowKey | null;
|
|
793
|
+
columnKey: string | null;
|
|
794
|
+
}>;
|
|
795
|
+
editingData: vue.Ref<Record<string, unknown>, Record<string, unknown>>;
|
|
796
|
+
isSaving: vue.Ref<boolean, boolean>;
|
|
797
|
+
isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
|
|
798
|
+
startEditCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
|
|
799
|
+
saveEditCell: () => Promise<{
|
|
800
|
+
updatedData: {
|
|
801
|
+
[x: string]: unknown;
|
|
802
|
+
};
|
|
803
|
+
rowIndex: number;
|
|
804
|
+
columnKey: string;
|
|
805
|
+
} | undefined>;
|
|
806
|
+
cancelEditCell: () => void;
|
|
807
|
+
validateCell: () => Promise<boolean>;
|
|
808
|
+
cellValidationError: vue.Ref<string | null, string | null>;
|
|
809
|
+
getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
|
|
810
|
+
updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
|
|
811
|
+
findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
|
|
812
|
+
invalidate: () => void;
|
|
813
|
+
};
|
|
814
|
+
modalEdit: {
|
|
815
|
+
isModalVisible: vue.Ref<boolean, boolean>;
|
|
816
|
+
isSaving: vue.Ref<boolean, boolean>;
|
|
817
|
+
editingData: vue.Ref<DataRecord, DataRecord>;
|
|
818
|
+
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
819
|
+
editingRowIndex: vue.ComputedRef<number>;
|
|
820
|
+
startEdit: (rowKey: DataTableRowKey, sourceData?: DataRecord | undefined) => boolean;
|
|
821
|
+
saveEdit: (formData?: DataRecord | undefined) => Promise<{
|
|
822
|
+
updatedData: any;
|
|
823
|
+
rowIndex: number;
|
|
824
|
+
} | undefined>;
|
|
825
|
+
cancelEdit: () => Promise<boolean>;
|
|
826
|
+
updateEditingData: (data: DataRecord) => boolean;
|
|
827
|
+
resetEditingState: () => boolean;
|
|
828
|
+
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
829
|
+
getEditingRowData: (rowKey: DataTableRowKey) => any;
|
|
830
|
+
invalidate: () => void;
|
|
831
|
+
};
|
|
832
|
+
};
|
|
833
|
+
expandState: UseTableExpandReturn<DataRecord, DataRecord>;
|
|
834
|
+
dynamicRowsState: DynamicRowsReturn<DataRecord>;
|
|
835
|
+
stateManager: {
|
|
836
|
+
edit: {
|
|
837
|
+
/** 开始编辑 */start(rowKey: DataTableRowKey, columnKey?: string): void; /** 取消编辑 */
|
|
838
|
+
cancel(): void; /** 保存编辑 */
|
|
839
|
+
save(): Promise<void>; /** 是否正在编辑 */
|
|
840
|
+
isEditing(rowKey: DataTableRowKey, columnKey?: string): boolean; /** 获取当前编辑数据 */
|
|
841
|
+
getEditingData(): DataRecord | null | undefined;
|
|
842
|
+
};
|
|
843
|
+
expand: {
|
|
844
|
+
/** 展开行 */row(rowKey: DataTableRowKey): Promise<void>; /** 折叠行 */
|
|
845
|
+
collapse(rowKey: DataTableRowKey): void; /** 展开折叠切换 */
|
|
846
|
+
toggle(rowKey: DataTableRowKey): Promise<void>; /** 展开所有行 */
|
|
847
|
+
all(): Promise<void>; /** 折叠所有行 */
|
|
848
|
+
collapseAll(): void; /** 检查行是否已展开 */
|
|
849
|
+
isExpanded(rowKey: DataTableRowKey): boolean;
|
|
850
|
+
};
|
|
851
|
+
selection: {
|
|
852
|
+
/** 选择指定行 */select(rowKey: DataTableRowKey): void; /** 取消选择指定行 */
|
|
853
|
+
unselect(rowKey: DataTableRowKey): void; /** 选择所有行 */
|
|
854
|
+
all(): void; /** 清除所有行选择 */
|
|
855
|
+
clear(): void; /** 检查行是否已选择 */
|
|
856
|
+
isSelected(rowKey: DataTableRowKey): boolean; /** 获取所有已选择的行数据 */
|
|
857
|
+
getSelected(): DataRecord[];
|
|
858
|
+
};
|
|
859
|
+
childSelection: {
|
|
860
|
+
/** 选择指定父行下的子行 */select(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 取消选择指定父行下的子行 */
|
|
861
|
+
unselect(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 选择指定父行下的所有子行 */
|
|
862
|
+
selectAll(parentKey: DataTableRowKey): void; /** 清除指定父行下的所有子行选择 */
|
|
863
|
+
clear(parentKey: DataTableRowKey): void; /** 获取指定父行下所有已选择的子行数据 */
|
|
864
|
+
getSelected(parentKey: DataTableRowKey): DataRecord[];
|
|
865
|
+
};
|
|
866
|
+
dynamicRows: {
|
|
867
|
+
/** 添加行 */add(): void; /** 插入行 */
|
|
868
|
+
insert(): void; /** 删除行 */
|
|
869
|
+
delete(): void; /** 复制行 */
|
|
870
|
+
copy(): void; /** 上移动态行 */
|
|
871
|
+
moveUp(): void; /** 下移动态行 */
|
|
872
|
+
moveDown(): void; /** 清空动态行数据 */
|
|
873
|
+
clearSelection(): void; /** 获取当前选中的动态行数据 */
|
|
874
|
+
getSelected(): DataRecord | null; /** 打印表格 */
|
|
875
|
+
print(elementRef?: HTMLElement): Promise<void>; /** 导出表格数据 */
|
|
876
|
+
download(elementRef?: HTMLElement, filename?: string): Promise<void>;
|
|
877
|
+
}; /** 清除所有选择 */
|
|
878
|
+
clearAllSelections(): void;
|
|
879
|
+
};
|
|
880
|
+
expandedKeys: vue.ComputedRef<DataTableRowKey[]>;
|
|
881
|
+
checkedKeys: vue.ComputedRef<DataTableRowKey[]>;
|
|
882
|
+
eventHandlers: EventHandlers;
|
|
883
|
+
};
|
|
884
|
+
//#endregion
|
|
885
|
+
//#region src/components/C_Table/types.d.ts
|
|
886
|
+
type RefLike<T> = {
|
|
887
|
+
value: T;
|
|
888
|
+
} | T;
|
|
889
|
+
type MaybeRefLike<T> = RefLike<T> | MaybeRef<T>;
|
|
890
|
+
type DataRecord = Record<string, unknown>;
|
|
891
|
+
type TableRowKey<T extends object = DataRecord> = Extract<keyof T, string> | ((row: T) => DataTableRowKey);
|
|
892
|
+
interface TableRowKeyIssue<T extends object = DataRecord> {
|
|
893
|
+
type: 'missing' | 'duplicate' | 'error';
|
|
894
|
+
row: T;
|
|
895
|
+
index: number;
|
|
896
|
+
key?: DataTableRowKey;
|
|
897
|
+
firstIndex?: number;
|
|
898
|
+
cause?: unknown;
|
|
899
|
+
}
|
|
900
|
+
type EditMode = 'row' | 'cell' | 'both' | 'modal' | 'none';
|
|
901
|
+
type EditType = 'input' | 'textarea' | 'select' | 'date' | 'number' | 'switch' | 'email' | 'mobile';
|
|
902
|
+
type ButtonType$1 = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'error';
|
|
903
|
+
type ParentChildLinkMode = 'strict' | 'loose';
|
|
904
|
+
interface PaginationConfig {
|
|
905
|
+
enabled?: boolean;
|
|
906
|
+
page?: number;
|
|
907
|
+
pageSize?: number;
|
|
908
|
+
total?: number;
|
|
909
|
+
showSizePicker?: boolean;
|
|
910
|
+
showQuickJumper?: boolean;
|
|
911
|
+
pageSizes?: number[];
|
|
912
|
+
simple?: boolean;
|
|
913
|
+
size?: 'small' | 'medium' | 'large';
|
|
914
|
+
remote?: boolean;
|
|
915
|
+
}
|
|
916
|
+
/** API 函数类型 */
|
|
917
|
+
type ApiFunction<T extends object = DataRecord> = (row: T, index: number) => unknown | Promise<unknown>;
|
|
918
|
+
/** 渲染函数类型 */
|
|
919
|
+
type RenderFunction<T extends object = DataRecord> = (row: T, index: number) => VNodeChild;
|
|
920
|
+
/** 自定义操作按钮配置 */
|
|
921
|
+
interface CustomAction<T extends object = DataRecord> {
|
|
922
|
+
/** 按钮唯一键 */
|
|
923
|
+
key: string;
|
|
924
|
+
/** 按钮显示文本 */
|
|
925
|
+
label: string | ((row: T, index: number) => string);
|
|
926
|
+
/** 按钮图标 */
|
|
927
|
+
icon: string | ((row: T, index: number) => string);
|
|
928
|
+
/** 按钮类型样式 */
|
|
929
|
+
type?: ButtonType$1 | ((row: T, index: number) => ButtonType$1);
|
|
930
|
+
/** 点击事件处理器 */
|
|
931
|
+
onClick: (row: T, index: number) => void | Promise<void>;
|
|
932
|
+
/** 条件显示函数(可选) */
|
|
933
|
+
show?: (row: T, index: number) => boolean;
|
|
934
|
+
/** 是否禁用(可选) */
|
|
935
|
+
disabled?: (row: T, index: number) => boolean;
|
|
697
936
|
/** 按钮提示文本(可选) */
|
|
698
937
|
tooltip?: string;
|
|
699
938
|
}
|
|
@@ -871,6 +1110,7 @@ interface TableDisplayProps {
|
|
|
871
1110
|
singleLine?: boolean;
|
|
872
1111
|
size?: 'small' | 'medium' | 'large';
|
|
873
1112
|
}
|
|
1113
|
+
/** @deprecated 旧类型兼容;组件功能请使用 config.edit。 */
|
|
874
1114
|
interface TableEditProps<T extends object = DataRecord> {
|
|
875
1115
|
editable?: boolean;
|
|
876
1116
|
editMode?: EditMode;
|
|
@@ -881,6 +1121,7 @@ interface TableEditProps<T extends object = DataRecord> {
|
|
|
881
1121
|
modalWidth?: number;
|
|
882
1122
|
columnWidth?: number;
|
|
883
1123
|
}
|
|
1124
|
+
/** @deprecated 旧类型兼容;组件功能请使用 config.expand。 */
|
|
884
1125
|
interface TableExpandProps<T extends object = DataRecord, C = DataRecord> {
|
|
885
1126
|
expandable?: boolean;
|
|
886
1127
|
onLoadExpandData?: (row: T) => Promise<C[]> | C[];
|
|
@@ -888,6 +1129,7 @@ interface TableExpandProps<T extends object = DataRecord, C = DataRecord> {
|
|
|
888
1129
|
rowExpandable?: (row: T) => boolean;
|
|
889
1130
|
defaultExpandedKeys?: DataTableRowKey[];
|
|
890
1131
|
}
|
|
1132
|
+
/** @deprecated 旧类型兼容;组件功能请使用 config.selection。 */
|
|
891
1133
|
interface TableSelectionProps<T extends object = DataRecord, C = DataRecord> extends BaseConfig<T> {
|
|
892
1134
|
enableSelection?: boolean;
|
|
893
1135
|
defaultCheckedKeys?: DataTableRowKey[];
|
|
@@ -897,8 +1139,16 @@ interface TableSelectionProps<T extends object = DataRecord, C = DataRecord> ext
|
|
|
897
1139
|
enableParentChildLink?: boolean;
|
|
898
1140
|
parentChildLinkMode?: ParentChildLinkMode;
|
|
899
1141
|
}
|
|
900
|
-
interface TableProps<T extends object = DataRecord, C = DataRecord> extends TableBaseProps<T
|
|
901
|
-
|
|
1142
|
+
interface TableProps<T extends object = DataRecord, C = DataRecord> extends Partial<TableBaseProps<T>>, TableDisplayProps, TableEditProps<T>, TableExpandProps<T, C>, TableSelectionProps<T, C> {
|
|
1143
|
+
/** 功能配置的统一入口。 */
|
|
1144
|
+
config?: TableConfig<T>;
|
|
1145
|
+
/** CRUD 模式自动提供 columns / data / loading,可省略对应属性。 */
|
|
1146
|
+
crud?: CrudBinding<T>;
|
|
1147
|
+
/** 原生分页入口;声明后优先于 config.pagination。 */
|
|
1148
|
+
pagination?: PaginationProps | false;
|
|
1149
|
+
remote?: boolean;
|
|
1150
|
+
virtualScrollX?: boolean;
|
|
1151
|
+
/** @deprecated 使用 config.actions。 */
|
|
902
1152
|
actions?: SimpleTableActions<T>;
|
|
903
1153
|
/** 根容器 class,原生 class/style 仍转发到内部表格。 */
|
|
904
1154
|
wrapperClass?: vue.HTMLAttributes['class'];
|
|
@@ -974,6 +1224,12 @@ interface TablePaginationMethods {
|
|
|
974
1224
|
}
|
|
975
1225
|
interface TableInstance<T extends object = DataRecord, C = DataRecord> extends TableEditMethods<T>, TableExpandMethods, TableSelectionMethods<T, C>, TableDynamicRowsMethods<T>, TablePaginationMethods {
|
|
976
1226
|
exportData: () => Promise<void>;
|
|
1227
|
+
/** 高级兼容入口;常规操作优先使用实例上的选择、展开和编辑方法。 */
|
|
1228
|
+
getManager: () => ReturnType<typeof useTableManager>['stateManager'];
|
|
1229
|
+
/** 此嵌套对象中的 Ref 保持响应式,读取时使用 .value。 */
|
|
1230
|
+
crossPageSelection: Pick<UseCrossPageSelectionReturn<T>, 'selectedKeys' | 'selectedCount' | 'select' | 'unselect' | 'selectAll' | 'clearAll' | 'getSelectedRows'> & {
|
|
1231
|
+
enabled: ComputedRef<boolean>;
|
|
1232
|
+
};
|
|
977
1233
|
}
|
|
978
1234
|
interface UseTableExpandOptions<T extends object = DataRecord, C = DataRecord> extends ExpandConfig<T, C>, SelectionConfig<T, C> {
|
|
979
1235
|
data: Ref<T[]> | ComputedRef<T[]>;
|
|
@@ -1086,399 +1342,160 @@ declare const __VLS_export$1: <T extends object = DataRecord>(__VLS_props: NonNu
|
|
|
1086
1342
|
printTable: (elementRef?: HTMLElement) => Promise<void>;
|
|
1087
1343
|
downloadTableScreenshot: (elementRef?: HTMLElement, filename?: string) => Promise<void>;
|
|
1088
1344
|
resetToFirstPage: () => void;
|
|
1089
|
-
getTotalPages: () => number;
|
|
1090
|
-
getSelectedRows: () => DataRecord[];
|
|
1091
|
-
getEditingData: () => DataRecord | null | undefined;
|
|
1092
|
-
isEditing: (rowKey: DataTableRowKey, columnKey?: string) => boolean;
|
|
1093
|
-
isExpanded: (rowKey: DataTableRowKey) => boolean;
|
|
1094
|
-
getManager: () => {
|
|
1095
|
-
edit: {
|
|
1096
|
-
start(rowKey: DataTableRowKey, columnKey?: string): void;
|
|
1097
|
-
cancel(): void;
|
|
1098
|
-
save(): Promise<void>;
|
|
1099
|
-
isEditing(rowKey: DataTableRowKey, columnKey?: string): boolean;
|
|
1100
|
-
getEditingData(): DataRecord | null | undefined;
|
|
1101
|
-
};
|
|
1102
|
-
expand: {
|
|
1103
|
-
row(rowKey: DataTableRowKey): Promise<void>;
|
|
1104
|
-
collapse(rowKey: DataTableRowKey): void;
|
|
1105
|
-
toggle(rowKey: DataTableRowKey): Promise<void>;
|
|
1106
|
-
all(): Promise<void>;
|
|
1107
|
-
collapseAll(): void;
|
|
1108
|
-
isExpanded(rowKey: DataTableRowKey): boolean;
|
|
1109
|
-
};
|
|
1110
|
-
selection: {
|
|
1111
|
-
select(rowKey: DataTableRowKey): void;
|
|
1112
|
-
unselect(rowKey: DataTableRowKey): void;
|
|
1113
|
-
all(): void;
|
|
1114
|
-
clear(): void;
|
|
1115
|
-
isSelected(rowKey: DataTableRowKey): boolean;
|
|
1116
|
-
getSelected(): DataRecord[];
|
|
1117
|
-
};
|
|
1118
|
-
childSelection: {
|
|
1119
|
-
select(parentKey: DataTableRowKey, childKey: DataTableRowKey): void;
|
|
1120
|
-
unselect(parentKey: DataTableRowKey, childKey: DataTableRowKey): void;
|
|
1121
|
-
selectAll(parentKey: DataTableRowKey): void;
|
|
1122
|
-
clear(parentKey: DataTableRowKey): void;
|
|
1123
|
-
getSelected(parentKey: DataTableRowKey): DataRecord[];
|
|
1124
|
-
};
|
|
1125
|
-
dynamicRows: {
|
|
1126
|
-
add(): void;
|
|
1127
|
-
insert(): void;
|
|
1128
|
-
delete(): void;
|
|
1129
|
-
copy(): void;
|
|
1130
|
-
moveUp(): void;
|
|
1131
|
-
moveDown(): void;
|
|
1132
|
-
clearSelection(): void;
|
|
1133
|
-
getSelected(): DataRecord | null;
|
|
1134
|
-
print(elementRef?: HTMLElement): Promise<void>;
|
|
1135
|
-
download(elementRef?: HTMLElement, filename?: string): Promise<void>;
|
|
1136
|
-
};
|
|
1137
|
-
clearAllSelections(): void;
|
|
1138
|
-
}; /** 导出数据 */
|
|
1139
|
-
exportData: () => Promise<void>; /** 跨页选择 */
|
|
1140
|
-
crossPageSelection: {
|
|
1141
|
-
enabled: vue.ComputedRef<boolean>;
|
|
1142
|
-
selectedKeys: vue.Ref<Set<DataTableRowKey>, Set<DataTableRowKey>>;
|
|
1143
|
-
selectedCount: vue.ComputedRef<number>;
|
|
1144
|
-
select: (key: DataTableRowKey) => boolean;
|
|
1145
|
-
unselect: (key: DataTableRowKey) => void;
|
|
1146
|
-
selectAll: () => void;
|
|
1147
|
-
clearAll: () => void;
|
|
1148
|
-
getSelectedRows: () => DataRecord[];
|
|
1149
|
-
};
|
|
1150
|
-
}>) => void;
|
|
1151
|
-
attrs: any;
|
|
1152
|
-
slots: {
|
|
1153
|
-
'toolbar-left'?: (props: {}) => any;
|
|
1154
|
-
} & {
|
|
1155
|
-
'toolbar-right'?: (props: {}) => any;
|
|
1156
|
-
} & {
|
|
1157
|
-
error?: (props: {
|
|
1158
|
-
error: ErrorConfig;
|
|
1159
|
-
}) => any;
|
|
1160
|
-
} & {
|
|
1161
|
-
loading?: (props: {}) => any;
|
|
1162
|
-
};
|
|
1163
|
-
emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
|
|
1164
|
-
}>) => vue.VNode & {
|
|
1165
|
-
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
1166
|
-
};
|
|
1167
|
-
declare const _default$1: typeof __VLS_export$1;
|
|
1168
|
-
type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
|
|
1169
|
-
//#endregion
|
|
1170
|
-
//#region src/components/C_Table/helpers.d.ts
|
|
1171
|
-
/** Type-safe identity helper that rejects misspelled business field keys. */
|
|
1172
|
-
declare function defineTableColumns<T extends object>(columns: StrictTableColumn<T>[]): StrictTableColumn<T>[];
|
|
1173
|
-
/** Preserve row types across edit, action, summary and batch callbacks. */
|
|
1174
|
-
declare function defineTableConfig<T extends object>(config: TableConfig<T>): TableConfig<T>;
|
|
1175
|
-
/** Find missing and duplicate row keys before stateful table features consume them. */
|
|
1176
|
-
declare function validateTableRowKeys<T extends object>(data: readonly T[], rowKey: (row: T) => DataTableRowKey | null | undefined): TableRowKeyIssue<T>[];
|
|
1177
|
-
//#endregion
|
|
1178
|
-
//#region src/components/C_Table/composables/useTableColumns.d.ts
|
|
1179
|
-
/** useTableColumns 中对 tableManager 的最小依赖接口 */
|
|
1180
|
-
interface TableManagerRef {
|
|
1181
|
-
editStates: {
|
|
1182
|
-
cellEdit: {
|
|
1183
|
-
isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
|
|
1184
|
-
getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
|
|
1185
|
-
updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
|
|
1186
|
-
saveEditCell: () => Promise<unknown>;
|
|
1187
|
-
cancelEditCell: () => void;
|
|
1188
|
-
startEditCell: (rowKey: DataTableRowKey, columnKey: string) => void;
|
|
1189
|
-
};
|
|
1190
|
-
rowEdit: {
|
|
1191
|
-
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
1192
|
-
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
1193
|
-
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
1194
|
-
};
|
|
1195
|
-
};
|
|
1196
|
-
dynamicRowsState?: {
|
|
1197
|
-
enhanceColumns: (columns: TableColumn[]) => TableColumn[];
|
|
1198
|
-
} | null;
|
|
1199
|
-
expandState?: {
|
|
1200
|
-
getTableColumns: (originalColumns: TableColumn[]) => DataTableColumn[];
|
|
1201
|
-
} | null;
|
|
1202
|
-
}
|
|
1203
|
-
/**
|
|
1204
|
-
* 渲染编辑组件(行编辑/单元格编辑通用)
|
|
1205
|
-
*/
|
|
1206
|
-
interface UseTableColumnsOptions {
|
|
1207
|
-
/** 原始列配置 */
|
|
1208
|
-
rawColumns: ComputedRef<TableColumn[]>;
|
|
1209
|
-
/** 统一配置 */
|
|
1210
|
-
config: ComputedRef<ResolvedConfig>;
|
|
1211
|
-
/** 默认列宽 */
|
|
1212
|
-
columnWidth: number;
|
|
1213
|
-
/** 区分使用侧显式统一列宽与内部默认值,不把默认值强加给弹性业务列。 */
|
|
1214
|
-
columnWidthExplicit?: boolean;
|
|
1215
|
-
/** 用户设定的 scrollX */
|
|
1216
|
-
scrollX?: number | string;
|
|
1217
|
-
/** 行键获取函数 */
|
|
1218
|
-
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
1219
|
-
/** 表格管理器 */
|
|
1220
|
-
tableManager: TableManagerRef;
|
|
1221
|
-
/** 操作列渲染函数 */
|
|
1222
|
-
actionsRenderer: (row: DataRecord, index: number) => VNodeChild;
|
|
1223
|
-
/** 编辑模式检查器 */
|
|
1224
|
-
editModeChecker: ComputedRef<{
|
|
1225
|
-
isNonEditable: (column: TableColumn) => boolean;
|
|
1226
|
-
isRowEditMode: () => boolean;
|
|
1227
|
-
isCellEditMode: () => boolean;
|
|
1228
|
-
}>;
|
|
1229
|
-
/** 是否渲染操作列 */
|
|
1230
|
-
showActionsColumn: ComputedRef<boolean>;
|
|
1231
|
-
}
|
|
1232
|
-
interface UseTableColumnsReturn {
|
|
1233
|
-
reactiveColumns: Ref<TableColumn[]>;
|
|
1234
|
-
showSettingsPanel: Ref<boolean>;
|
|
1235
|
-
computedColumns: ComputedRef<DataTableColumn[]>;
|
|
1236
|
-
computedScrollX: ComputedRef<number | string | undefined>;
|
|
1237
|
-
handleColumnChange: (columns: TableColumn[]) => void;
|
|
1238
|
-
}
|
|
1239
|
-
/**
|
|
1240
|
-
* 表格列处理引擎
|
|
1241
|
-
*/
|
|
1242
|
-
declare function useTableColumns(options: UseTableColumnsOptions): UseTableColumnsReturn;
|
|
1243
|
-
//#endregion
|
|
1244
|
-
//#region src/components/C_Table/composables/useRowEdit.d.ts
|
|
1245
|
-
/** 行级校验错误 */
|
|
1246
|
-
interface RowValidationError {
|
|
1247
|
-
field: string;
|
|
1248
|
-
message: string;
|
|
1249
|
-
}
|
|
1250
|
-
/**
|
|
1251
|
-
* 行编辑配置选项
|
|
1252
|
-
*/
|
|
1253
|
-
interface RowEditOptions {
|
|
1254
|
-
data: () => DataRecord[];
|
|
1255
|
-
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
1256
|
-
onSave?: (rowData: DataRecord, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
|
|
1257
|
-
onCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
|
|
1258
|
-
/** 列配置(用于提取校验规则) */
|
|
1259
|
-
columns?: () => TableColumn[];
|
|
1260
|
-
}
|
|
1261
|
-
/**
|
|
1262
|
-
* 可编辑行组合函数,提供表格整行的编辑功能
|
|
1263
|
-
*/
|
|
1264
|
-
declare function useRowEdit(options: RowEditOptions): {
|
|
1265
|
-
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
1266
|
-
editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
|
|
1267
|
-
isSaving: vue.Ref<boolean, boolean>;
|
|
1268
|
-
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
1269
|
-
startEditRow: (rowKey: DataTableRowKey) => boolean;
|
|
1270
|
-
cancelEditRow: () => Promise<void>;
|
|
1271
|
-
saveEditRow: () => Promise<{
|
|
1272
|
-
updatedData: DataRecord;
|
|
1273
|
-
rowIndex: number;
|
|
1274
|
-
} | undefined>;
|
|
1275
|
-
validateRow: () => Promise<boolean>;
|
|
1276
|
-
validationErrors: vue.Ref<{
|
|
1277
|
-
field: string;
|
|
1278
|
-
message: string;
|
|
1279
|
-
}[], RowValidationError[] | {
|
|
1280
|
-
field: string;
|
|
1281
|
-
message: string;
|
|
1282
|
-
}[]>;
|
|
1283
|
-
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
1284
|
-
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
1285
|
-
findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
|
|
1286
|
-
invalidate: () => void;
|
|
1287
|
-
};
|
|
1288
|
-
//#endregion
|
|
1289
|
-
//#region src/components/C_Table/composables/useTableManager.d.ts
|
|
1290
|
-
/**
|
|
1291
|
-
* 表格管理器配置接口
|
|
1292
|
-
*/
|
|
1293
|
-
interface TableManagerConfig {
|
|
1294
|
-
feedback?: ComponentFeedback;
|
|
1295
|
-
locale?: ComponentLocale;
|
|
1296
|
-
editable: boolean;
|
|
1297
|
-
editMode: string;
|
|
1298
|
-
showRowActions: boolean;
|
|
1299
|
-
modalTitle: string;
|
|
1300
|
-
modalWidth: number;
|
|
1301
|
-
onEditSave?: (rowData: DataRecord, rowIndex: number, columnKey?: string) => void | Promise<void>;
|
|
1302
|
-
onEditCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
|
|
1303
|
-
onEditError?: (error: unknown) => void;
|
|
1304
|
-
expandable: boolean;
|
|
1305
|
-
defaultExpandedKeys?: DataTableRowKey[];
|
|
1306
|
-
onLoadExpandData?: (row: DataRecord) => Promise<any[]> | any[];
|
|
1307
|
-
onExpandError?: (error: unknown, row: DataRecord) => void;
|
|
1308
|
-
renderExpandContent?: unknown;
|
|
1309
|
-
rowExpandable?: (row: DataRecord) => boolean;
|
|
1310
|
-
enableSelection: boolean;
|
|
1311
|
-
defaultCheckedKeys?: DataTableRowKey[];
|
|
1312
|
-
rowCheckable?: (row: DataRecord) => boolean;
|
|
1313
|
-
maxSelection?: number;
|
|
1314
|
-
enableChildSelection: boolean;
|
|
1315
|
-
childRowCheckable?: (childRow: DataRecord, parentRow: DataRecord) => boolean;
|
|
1316
|
-
enableParentChildLink: boolean;
|
|
1317
|
-
parentChildLinkMode: ParentChildLinkMode;
|
|
1318
|
-
dynamicRows?: DynamicRowsOptions<DataRecord>;
|
|
1319
|
-
treeEnabled?: boolean;
|
|
1320
|
-
treeChildrenKey?: string;
|
|
1321
|
-
}
|
|
1322
|
-
/**
|
|
1323
|
-
* 表格管理器参数接口
|
|
1324
|
-
*/
|
|
1325
|
-
interface TableManagerParams {
|
|
1326
|
-
config: MaybeRefOrGetter<TableManagerConfig>;
|
|
1327
|
-
data: () => DataRecord[];
|
|
1328
|
-
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
1329
|
-
emit: (...args: any[]) => unknown;
|
|
1330
|
-
/** 列配置(用于编辑校验) */
|
|
1331
|
-
columns?: () => TableColumn[];
|
|
1332
|
-
/** UI 壳提供加载内容,状态引擎保持可独立调用。 */
|
|
1333
|
-
renderLoading?: () => VNodeChild;
|
|
1334
|
-
/** String row-key field inherited by dynamic row creation; explicit dynamicRows.rowKey wins. */
|
|
1335
|
-
rowKeyField?: MaybeRefOrGetter<string | undefined>;
|
|
1336
|
-
}
|
|
1337
|
-
/**
|
|
1338
|
-
* 事件处理器接口
|
|
1339
|
-
*/
|
|
1340
|
-
interface EventHandlers {
|
|
1341
|
-
onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string, originalKey?: DataTableRowKey) => Promise<void>;
|
|
1342
|
-
onCancel: (rowData: DataRecord, rowIndex: number) => Promise<void>;
|
|
1343
|
-
onExpandChange: (keys: DataTableRowKey[], row?: DataRecord, expanded?: boolean) => void;
|
|
1344
|
-
onSelectionChange: (checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections: Map<DataTableRowKey, DataTableRowKey[]>) => void;
|
|
1345
|
-
onChildSelectionChange: (parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void;
|
|
1346
|
-
onRowChange: (data: DataRecord[]) => void;
|
|
1347
|
-
onRowSelectionChange: (selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void;
|
|
1348
|
-
onRowAdd: (newRow: DataRecord) => void;
|
|
1349
|
-
onRowDelete: (deletedRow: DataRecord, index: number) => void;
|
|
1350
|
-
onRowCopy: (originalRow: DataRecord, newRow: DataRecord) => void;
|
|
1351
|
-
onRowMove: (row: DataRecord, fromIndex: number, toIndex: number) => void;
|
|
1352
|
-
}
|
|
1353
|
-
/**
|
|
1354
|
-
* 表格统一状态管理器
|
|
1355
|
-
*/
|
|
1356
|
-
declare function useTableManager(params: TableManagerParams): {
|
|
1357
|
-
editStates: {
|
|
1358
|
-
rowEdit: {
|
|
1359
|
-
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
1360
|
-
editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
|
|
1361
|
-
isSaving: vue.Ref<boolean, boolean>;
|
|
1362
|
-
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
1363
|
-
startEditRow: (rowKey: DataTableRowKey) => boolean;
|
|
1364
|
-
cancelEditRow: () => Promise<void>;
|
|
1365
|
-
saveEditRow: () => Promise<{
|
|
1366
|
-
updatedData: DataRecord;
|
|
1367
|
-
rowIndex: number;
|
|
1368
|
-
} | undefined>;
|
|
1369
|
-
validateRow: () => Promise<boolean>;
|
|
1370
|
-
validationErrors: vue.Ref<{
|
|
1371
|
-
field: string;
|
|
1372
|
-
message: string;
|
|
1373
|
-
}[], RowValidationError[] | {
|
|
1374
|
-
field: string;
|
|
1375
|
-
message: string;
|
|
1376
|
-
}[]>;
|
|
1377
|
-
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
1378
|
-
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
1379
|
-
findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
|
|
1380
|
-
invalidate: () => void;
|
|
1345
|
+
getTotalPages: () => number;
|
|
1346
|
+
getSelectedRows: () => DataRecord[];
|
|
1347
|
+
getEditingData: () => DataRecord | null | undefined;
|
|
1348
|
+
isEditing: (rowKey: DataTableRowKey, columnKey?: string) => boolean;
|
|
1349
|
+
isExpanded: (rowKey: DataTableRowKey) => boolean;
|
|
1350
|
+
getManager: () => {
|
|
1351
|
+
edit: {
|
|
1352
|
+
start(rowKey: DataTableRowKey, columnKey?: string): void;
|
|
1353
|
+
cancel(): void;
|
|
1354
|
+
save(): Promise<void>;
|
|
1355
|
+
isEditing(rowKey: DataTableRowKey, columnKey?: string): boolean;
|
|
1356
|
+
getEditingData(): DataRecord | null | undefined;
|
|
1357
|
+
};
|
|
1358
|
+
expand: {
|
|
1359
|
+
row(rowKey: DataTableRowKey): Promise<void>;
|
|
1360
|
+
collapse(rowKey: DataTableRowKey): void;
|
|
1361
|
+
toggle(rowKey: DataTableRowKey): Promise<void>;
|
|
1362
|
+
all(): Promise<void>;
|
|
1363
|
+
collapseAll(): void;
|
|
1364
|
+
isExpanded(rowKey: DataTableRowKey): boolean;
|
|
1365
|
+
};
|
|
1366
|
+
selection: {
|
|
1367
|
+
select(rowKey: DataTableRowKey): void;
|
|
1368
|
+
unselect(rowKey: DataTableRowKey): void;
|
|
1369
|
+
all(): void;
|
|
1370
|
+
clear(): void;
|
|
1371
|
+
isSelected(rowKey: DataTableRowKey): boolean;
|
|
1372
|
+
getSelected(): DataRecord[];
|
|
1373
|
+
};
|
|
1374
|
+
childSelection: {
|
|
1375
|
+
select(parentKey: DataTableRowKey, childKey: DataTableRowKey): void;
|
|
1376
|
+
unselect(parentKey: DataTableRowKey, childKey: DataTableRowKey): void;
|
|
1377
|
+
selectAll(parentKey: DataTableRowKey): void;
|
|
1378
|
+
clear(parentKey: DataTableRowKey): void;
|
|
1379
|
+
getSelected(parentKey: DataTableRowKey): DataRecord[];
|
|
1380
|
+
};
|
|
1381
|
+
dynamicRows: {
|
|
1382
|
+
add(): void;
|
|
1383
|
+
insert(): void;
|
|
1384
|
+
delete(): void;
|
|
1385
|
+
copy(): void;
|
|
1386
|
+
moveUp(): void;
|
|
1387
|
+
moveDown(): void;
|
|
1388
|
+
clearSelection(): void;
|
|
1389
|
+
getSelected(): DataRecord | null;
|
|
1390
|
+
print(elementRef?: HTMLElement): Promise<void>;
|
|
1391
|
+
download(elementRef?: HTMLElement, filename?: string): Promise<void>;
|
|
1392
|
+
};
|
|
1393
|
+
clearAllSelections(): void;
|
|
1394
|
+
}; /** 导出数据 */
|
|
1395
|
+
exportData: () => Promise<void>; /** 跨页选择 */
|
|
1396
|
+
crossPageSelection: {
|
|
1397
|
+
enabled: vue.ComputedRef<boolean>;
|
|
1398
|
+
selectedKeys: vue.Ref<Set<DataTableRowKey>, Set<DataTableRowKey>>;
|
|
1399
|
+
selectedCount: vue.ComputedRef<number>;
|
|
1400
|
+
select: (key: DataTableRowKey) => boolean;
|
|
1401
|
+
unselect: (key: DataTableRowKey) => void;
|
|
1402
|
+
selectAll: () => void;
|
|
1403
|
+
clearAll: () => void;
|
|
1404
|
+
getSelectedRows: () => DataRecord[];
|
|
1381
1405
|
};
|
|
1406
|
+
}>) => void;
|
|
1407
|
+
attrs: any;
|
|
1408
|
+
slots: {
|
|
1409
|
+
'toolbar-left'?: (props: {}) => any;
|
|
1410
|
+
} & {
|
|
1411
|
+
'toolbar-right'?: (props: {}) => any;
|
|
1412
|
+
} & {
|
|
1413
|
+
error?: (props: {
|
|
1414
|
+
error: ErrorConfig;
|
|
1415
|
+
}) => any;
|
|
1416
|
+
} & {
|
|
1417
|
+
loading?: (props: {}) => any;
|
|
1418
|
+
};
|
|
1419
|
+
emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
|
|
1420
|
+
}>) => vue.VNode & {
|
|
1421
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
1422
|
+
};
|
|
1423
|
+
declare const _default$1: typeof __VLS_export$1;
|
|
1424
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
|
|
1425
|
+
//#endregion
|
|
1426
|
+
//#region src/components/C_Table/helpers.d.ts
|
|
1427
|
+
/** Type-safe identity helper that rejects misspelled business field keys. */
|
|
1428
|
+
declare function defineTableColumns<T extends object>(columns: StrictTableColumn<T>[]): StrictTableColumn<T>[];
|
|
1429
|
+
/** Preserve row types across edit, action, summary and batch callbacks. */
|
|
1430
|
+
declare function defineTableConfig<T extends object>(config: TableConfig<T>): TableConfig<T>;
|
|
1431
|
+
/** Find missing and duplicate row keys before stateful table features consume them. */
|
|
1432
|
+
declare function validateTableRowKeys<T extends object>(data: readonly T[], rowKey: (row: T) => DataTableRowKey | null | undefined): TableRowKeyIssue<T>[];
|
|
1433
|
+
//#endregion
|
|
1434
|
+
//#region src/components/C_Table/composables/useTableColumns.d.ts
|
|
1435
|
+
/** useTableColumns 中对 tableManager 的最小依赖接口 */
|
|
1436
|
+
interface TableManagerRef {
|
|
1437
|
+
editStates: {
|
|
1382
1438
|
cellEdit: {
|
|
1383
|
-
editingCell: vue.Ref<{
|
|
1384
|
-
rowKey: DataTableRowKey | null;
|
|
1385
|
-
columnKey: string | null;
|
|
1386
|
-
}, {
|
|
1387
|
-
rowKey: DataTableRowKey | null;
|
|
1388
|
-
columnKey: string | null;
|
|
1389
|
-
} | {
|
|
1390
|
-
rowKey: DataTableRowKey | null;
|
|
1391
|
-
columnKey: string | null;
|
|
1392
|
-
}>;
|
|
1393
|
-
editingData: vue.Ref<Record<string, unknown>, Record<string, unknown>>;
|
|
1394
|
-
isSaving: vue.Ref<boolean, boolean>;
|
|
1395
1439
|
isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
|
|
1396
|
-
startEditCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
|
|
1397
|
-
saveEditCell: () => Promise<{
|
|
1398
|
-
updatedData: {
|
|
1399
|
-
[x: string]: unknown;
|
|
1400
|
-
};
|
|
1401
|
-
rowIndex: number;
|
|
1402
|
-
columnKey: string;
|
|
1403
|
-
} | undefined>;
|
|
1404
|
-
cancelEditCell: () => void;
|
|
1405
|
-
validateCell: () => Promise<boolean>;
|
|
1406
|
-
cellValidationError: vue.Ref<string | null, string | null>;
|
|
1407
1440
|
getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
|
|
1408
1441
|
updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
|
|
1409
|
-
|
|
1410
|
-
|
|
1442
|
+
saveEditCell: () => Promise<unknown>;
|
|
1443
|
+
cancelEditCell: () => void;
|
|
1444
|
+
startEditCell: (rowKey: DataTableRowKey, columnKey: string) => void;
|
|
1411
1445
|
};
|
|
1412
|
-
|
|
1413
|
-
isModalVisible: vue.Ref<boolean, boolean>;
|
|
1414
|
-
isSaving: vue.Ref<boolean, boolean>;
|
|
1415
|
-
editingData: vue.Ref<DataRecord, DataRecord>;
|
|
1416
|
-
editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
|
|
1417
|
-
editingRowIndex: vue.ComputedRef<number>;
|
|
1418
|
-
startEdit: (rowKey: DataTableRowKey, sourceData?: DataRecord | undefined) => boolean;
|
|
1419
|
-
saveEdit: (formData?: DataRecord | undefined) => Promise<{
|
|
1420
|
-
updatedData: any;
|
|
1421
|
-
rowIndex: number;
|
|
1422
|
-
} | undefined>;
|
|
1423
|
-
cancelEdit: () => Promise<boolean>;
|
|
1424
|
-
updateEditingData: (data: DataRecord) => boolean;
|
|
1425
|
-
resetEditingState: () => boolean;
|
|
1446
|
+
rowEdit: {
|
|
1426
1447
|
isEditingRow: (rowKey: DataTableRowKey) => boolean;
|
|
1427
|
-
getEditingRowData: (rowKey: DataTableRowKey) =>
|
|
1428
|
-
|
|
1429
|
-
};
|
|
1430
|
-
};
|
|
1431
|
-
expandState: UseTableExpandReturn<DataRecord, DataRecord>;
|
|
1432
|
-
dynamicRowsState: DynamicRowsReturn<DataRecord>;
|
|
1433
|
-
stateManager: {
|
|
1434
|
-
edit: {
|
|
1435
|
-
/** 开始编辑 */start(rowKey: DataTableRowKey, columnKey?: string): void; /** 取消编辑 */
|
|
1436
|
-
cancel(): void; /** 保存编辑 */
|
|
1437
|
-
save(): Promise<void>; /** 是否正在编辑 */
|
|
1438
|
-
isEditing(rowKey: DataTableRowKey, columnKey?: string): boolean; /** 获取当前编辑数据 */
|
|
1439
|
-
getEditingData(): DataRecord | null | undefined;
|
|
1440
|
-
};
|
|
1441
|
-
expand: {
|
|
1442
|
-
/** 展开行 */row(rowKey: DataTableRowKey): Promise<void>; /** 折叠行 */
|
|
1443
|
-
collapse(rowKey: DataTableRowKey): void; /** 展开折叠切换 */
|
|
1444
|
-
toggle(rowKey: DataTableRowKey): Promise<void>; /** 展开所有行 */
|
|
1445
|
-
all(): Promise<void>; /** 折叠所有行 */
|
|
1446
|
-
collapseAll(): void; /** 检查行是否已展开 */
|
|
1447
|
-
isExpanded(rowKey: DataTableRowKey): boolean;
|
|
1448
|
-
};
|
|
1449
|
-
selection: {
|
|
1450
|
-
/** 选择指定行 */select(rowKey: DataTableRowKey): void; /** 取消选择指定行 */
|
|
1451
|
-
unselect(rowKey: DataTableRowKey): void; /** 选择所有行 */
|
|
1452
|
-
all(): void; /** 清除所有行选择 */
|
|
1453
|
-
clear(): void; /** 检查行是否已选择 */
|
|
1454
|
-
isSelected(rowKey: DataTableRowKey): boolean; /** 获取所有已选择的行数据 */
|
|
1455
|
-
getSelected(): DataRecord[];
|
|
1456
|
-
};
|
|
1457
|
-
childSelection: {
|
|
1458
|
-
/** 选择指定父行下的子行 */select(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 取消选择指定父行下的子行 */
|
|
1459
|
-
unselect(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 选择指定父行下的所有子行 */
|
|
1460
|
-
selectAll(parentKey: DataTableRowKey): void; /** 清除指定父行下的所有子行选择 */
|
|
1461
|
-
clear(parentKey: DataTableRowKey): void; /** 获取指定父行下所有已选择的子行数据 */
|
|
1462
|
-
getSelected(parentKey: DataTableRowKey): DataRecord[];
|
|
1448
|
+
getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
|
|
1449
|
+
updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
|
|
1463
1450
|
};
|
|
1464
|
-
dynamicRows: {
|
|
1465
|
-
/** 添加行 */add(): void; /** 插入行 */
|
|
1466
|
-
insert(): void; /** 删除行 */
|
|
1467
|
-
delete(): void; /** 复制行 */
|
|
1468
|
-
copy(): void; /** 上移动态行 */
|
|
1469
|
-
moveUp(): void; /** 下移动态行 */
|
|
1470
|
-
moveDown(): void; /** 清空动态行数据 */
|
|
1471
|
-
clearSelection(): void; /** 获取当前选中的动态行数据 */
|
|
1472
|
-
getSelected(): DataRecord | null; /** 打印表格 */
|
|
1473
|
-
print(elementRef?: HTMLElement): Promise<void>; /** 导出表格数据 */
|
|
1474
|
-
download(elementRef?: HTMLElement, filename?: string): Promise<void>;
|
|
1475
|
-
}; /** 清除所有选择 */
|
|
1476
|
-
clearAllSelections(): void;
|
|
1477
1451
|
};
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1452
|
+
dynamicRowsState?: {
|
|
1453
|
+
enhanceColumns: (columns: TableColumn[]) => TableColumn[];
|
|
1454
|
+
} | null;
|
|
1455
|
+
expandState?: {
|
|
1456
|
+
getTableColumns: (originalColumns: TableColumn[]) => DataTableColumn[];
|
|
1457
|
+
} | null;
|
|
1458
|
+
}
|
|
1459
|
+
/**
|
|
1460
|
+
* 渲染编辑组件(行编辑/单元格编辑通用)
|
|
1461
|
+
*/
|
|
1462
|
+
interface UseTableColumnsOptions {
|
|
1463
|
+
/** 原始列配置 */
|
|
1464
|
+
rawColumns: ComputedRef<TableColumn[]>;
|
|
1465
|
+
/** 统一配置 */
|
|
1466
|
+
config: ComputedRef<ResolvedConfig>;
|
|
1467
|
+
/** 默认列宽 */
|
|
1468
|
+
columnWidth: number;
|
|
1469
|
+
/** 区分使用侧显式统一列宽与内部默认值,不把默认值强加给弹性业务列。 */
|
|
1470
|
+
columnWidthExplicit?: boolean;
|
|
1471
|
+
/** 用户设定的 scrollX */
|
|
1472
|
+
scrollX?: number | string;
|
|
1473
|
+
/** 行键获取函数 */
|
|
1474
|
+
rowKey: (row: DataRecord) => DataTableRowKey;
|
|
1475
|
+
/** 表格管理器 */
|
|
1476
|
+
tableManager: TableManagerRef;
|
|
1477
|
+
/** 操作列渲染函数 */
|
|
1478
|
+
actionsRenderer: (row: DataRecord, index: number) => VNodeChild;
|
|
1479
|
+
/** 编辑模式检查器 */
|
|
1480
|
+
editModeChecker: ComputedRef<{
|
|
1481
|
+
isNonEditable: (column: TableColumn) => boolean;
|
|
1482
|
+
isRowEditMode: () => boolean;
|
|
1483
|
+
isCellEditMode: () => boolean;
|
|
1484
|
+
}>;
|
|
1485
|
+
/** 是否渲染操作列 */
|
|
1486
|
+
showActionsColumn: ComputedRef<boolean>;
|
|
1487
|
+
}
|
|
1488
|
+
interface UseTableColumnsReturn {
|
|
1489
|
+
reactiveColumns: Ref<TableColumn[]>;
|
|
1490
|
+
showSettingsPanel: Ref<boolean>;
|
|
1491
|
+
computedColumns: ComputedRef<DataTableColumn[]>;
|
|
1492
|
+
computedScrollX: ComputedRef<number | string | undefined>;
|
|
1493
|
+
handleColumnChange: (columns: TableColumn[]) => void;
|
|
1494
|
+
}
|
|
1495
|
+
/**
|
|
1496
|
+
* 表格列处理引擎
|
|
1497
|
+
*/
|
|
1498
|
+
declare function useTableColumns(options: UseTableColumnsOptions): UseTableColumnsReturn;
|
|
1482
1499
|
//#endregion
|
|
1483
1500
|
//#region src/components/C_Table/composables/useTableExpand.d.ts
|
|
1484
1501
|
/**
|
|
@@ -1711,9 +1728,10 @@ interface TreeExpose {
|
|
|
1711
1728
|
getCheckedData: TreeInst['getCheckedData'];
|
|
1712
1729
|
getIndeterminateData: TreeInst['getIndeterminateData'];
|
|
1713
1730
|
scrollTo: TreeInst['scrollTo'];
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1731
|
+
/** Vue 公开实例会解包顶层 Ref;这些属性直接读取数组。 */
|
|
1732
|
+
expandedKeys: TreeKey[];
|
|
1733
|
+
selectedKeys: TreeKey[];
|
|
1734
|
+
checkedKeys: TreeKey[];
|
|
1717
1735
|
}
|
|
1718
1736
|
interface TreeEmits {
|
|
1719
1737
|
'update:searchPattern': [pattern: string];
|
|
@@ -1737,38 +1755,42 @@ interface TreeSlots {
|
|
|
1737
1755
|
//#endregion
|
|
1738
1756
|
//#region src/components/C_Tree/index.vue.d.ts
|
|
1739
1757
|
type __VLS_Slots = TreeSlots;
|
|
1740
|
-
declare const __VLS_base: vue.DefineComponent<TreeProps$1, TreeExpose,
|
|
1741
|
-
|
|
1758
|
+
declare const __VLS_base: vue.DefineComponent<TreeProps$1, Omit<TreeExpose, "expandedKeys" | "checkedKeys" | "selectedKeys"> & {
|
|
1759
|
+
expandedKeys: vue.Ref<TreeKey[]>;
|
|
1760
|
+
selectedKeys: vue.Ref<TreeKey[]>;
|
|
1761
|
+
checkedKeys: vue.Ref<TreeKey[]>;
|
|
1762
|
+
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1742
1763
|
refresh: () => any;
|
|
1743
|
-
|
|
1744
|
-
"update:expandedKeys": (keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any;
|
|
1764
|
+
add: (parentNode?: TreeNodeData | undefined) => any;
|
|
1745
1765
|
"node-drop": (info: DropInfo) => any;
|
|
1746
1766
|
"update:searchPattern": (pattern: string) => any;
|
|
1767
|
+
"update:expandedKeys": (keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any;
|
|
1747
1768
|
"update:selectedKeys": (keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any;
|
|
1748
1769
|
"update:checkedKeys": (keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any;
|
|
1749
1770
|
"node-select": (node: TreeNodeData | null, selectedKeys: TreeKey[]) => any;
|
|
1750
1771
|
"node-action": (action: string, node: TreeNodeData) => any;
|
|
1772
|
+
"load-error": (error: unknown, node: TreeOption$1) => any;
|
|
1751
1773
|
}, string, vue.PublicProps, Readonly<TreeProps$1> & Readonly<{
|
|
1752
|
-
onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
|
|
1753
1774
|
onRefresh?: (() => any) | undefined;
|
|
1754
|
-
|
|
1755
|
-
"onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any) | undefined;
|
|
1775
|
+
onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
|
|
1756
1776
|
"onNode-drop"?: ((info: DropInfo) => any) | undefined;
|
|
1757
1777
|
"onUpdate:searchPattern"?: ((pattern: string) => any) | undefined;
|
|
1778
|
+
"onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any) | undefined;
|
|
1758
1779
|
"onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any) | undefined;
|
|
1759
1780
|
"onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (TreeOption$1 | null)[], meta: TreeUpdateMeta) => any) | undefined;
|
|
1760
1781
|
"onNode-select"?: ((node: TreeNodeData | null, selectedKeys: TreeKey[]) => any) | undefined;
|
|
1761
1782
|
"onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
|
|
1783
|
+
"onLoad-error"?: ((error: unknown, node: TreeOption$1) => any) | undefined;
|
|
1762
1784
|
}>, {
|
|
1785
|
+
density: ComponentDensity;
|
|
1763
1786
|
mode: TreeMode;
|
|
1764
|
-
showToolbar: boolean;
|
|
1765
|
-
addable: boolean;
|
|
1766
1787
|
draggable: boolean;
|
|
1767
|
-
|
|
1788
|
+
showToolbar: boolean;
|
|
1768
1789
|
defaultExpandAll: boolean;
|
|
1769
1790
|
showLine: boolean;
|
|
1770
1791
|
searchable: boolean;
|
|
1771
1792
|
searchPlaceholder: string;
|
|
1793
|
+
addable: boolean;
|
|
1772
1794
|
addText: string;
|
|
1773
1795
|
refreshable: boolean;
|
|
1774
1796
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
@@ -1787,7 +1809,7 @@ declare const presetConfigs: Record<TreeMode, Partial<TreeProps$1>>;
|
|
|
1787
1809
|
type EmitFn = <E extends keyof TreeEmits>(event: E, ...args: TreeEmits[E]) => void;
|
|
1788
1810
|
/** State coordination only; checking, filtering, keyboard and loading stay native. */
|
|
1789
1811
|
declare function useTreeOperations(props: TreeProps$1, emit: EmitFn, slots?: TreeSlots): {
|
|
1790
|
-
internalSearchPattern:
|
|
1812
|
+
internalSearchPattern: Ref<string, string>;
|
|
1791
1813
|
expandedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
|
|
1792
1814
|
selectedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
|
|
1793
1815
|
checkedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
|
|
@@ -1813,7 +1835,11 @@ declare function useTreeOperations(props: TreeProps$1, emit: EmitFn, slots?: Tre
|
|
|
1813
1835
|
handleDrop: (info: DropInfo) => void;
|
|
1814
1836
|
handleAdd: () => void;
|
|
1815
1837
|
handleRefresh: () => void;
|
|
1816
|
-
expose: TreeExpose
|
|
1838
|
+
expose: Omit<TreeExpose, "expandedKeys" | "checkedKeys" | "selectedKeys"> & {
|
|
1839
|
+
expandedKeys: Ref<TreeKey[]>;
|
|
1840
|
+
selectedKeys: Ref<TreeKey[]>;
|
|
1841
|
+
checkedKeys: Ref<TreeKey[]>;
|
|
1842
|
+
};
|
|
1817
1843
|
};
|
|
1818
1844
|
//#endregion
|
|
1819
1845
|
//#region src/utils/storage.d.ts
|
|
@@ -1957,4 +1983,4 @@ declare function useTableQuery<T extends object, Q extends object = Record<strin
|
|
|
1957
1983
|
cancel: () => void;
|
|
1958
1984
|
};
|
|
1959
1985
|
//#endregion
|
|
1960
|
-
export {
|
|
1986
|
+
export { PaginationConfig as $, printPresets as $t, HighlightPluginOptions as A, resolveConfig as At, defineTableColumns as B, useTableGlobalConfig as Bt, TreeNodeData as C, SelectionConfig$1 as Ct, TreeSlots as D, TreeConfig as Dt, TreeRenderContext as E, ToolbarConfig as Et, useCellEdit as F, FormatterType as Ft, BuiltInTableColumn as G, RowDragConfig as Gt, validateTableRowKeys as H, UseCrossPageSelectionOptions as Ht, usePagination as I, TABLE_GLOBAL_CONFIG_KEY as It, CustomAction as J, useRowDrag as Jt, ChildSelectionState as K, UseRowDragOptions as Kt, useTableActions as L, TableGlobalConfig as Lt, setupHighlight as M, exportTableData as Mt, useHighlight as N, ColumnFormatter as Nt, TreeUpdateMeta as O, VirtualScrollConfig as Ot, useModalEdit as P, FormatterConfig as Pt, NormalTableColumn as Q, PrintWatermarkOptions as Qt, useTableExpand as R, applyFormatter as Rt, TreeNativeProps as S, ExpandConfig$1 as St, TreeProps$1 as T, TableConfig as Tt, _default$1 as U, UseCrossPageSelectionReturn as Ut, defineTableConfig as V, CrossPageSelectionConfig as Vt, ApiFunction as W, useCrossPageSelection as Wt, EditMode as X, DynamicRowsReturn as Xt, DataRecord as Y, DynamicRowsOptions as Yt, MaybeRefLike as Z, useDynamicRows as Zt, StatusType as _, ColumnDragConfig as _t, getItem as a, StrictTableColumn as at, TreeKey as b, EditConfig as bt, setItem as c, TableInstance as ct, _default as d, TableRowKeyIssue as dt, usePrintWatermark as en, ParentChildLinkMode as et, ActionConfig as f, UseTableExpandOptions as ft, StatusConfig as g, BatchActionsConfig as gt, IconConfig as h, useRowEdit as ht, useTableQuery as i, COMPONENT_LOCALE_KEY as in, SimpleTableActions as it, createHighlight as j, ExportConfig as jt, HighlightAPI as k, createEditModeChecker as kt, useTreeOperations as l, TableProps as lt, DropInfo as m, useTableManager as mt, TableQueryResult as n, useComponentLocale as nn, RowAction as nt, removeAllItem as o, TableColumn as ot, ButtonType as p, UseTableExpandReturn as pt, ColumnWithKey as q, UseRowDragReturn as qt, UseTableQueryOptions as r, COMPONENT_FEEDBACK_KEY as rn, SelectOption as rt, removeItem as s, TableEmits as st, TableQueryContext as t, useComponentFeedback as tn, RenderFunction as tt, presetConfigs as u, TableRowKey as ut, TreeEmits as v, CrudBinding as vt, TreeOption$1 as w, SummaryConfig as wt, TreeMode as x, ErrorConfig as xt, TreeExpose as y, DisplayConfig as yt, useTableColumns as z, mergeGlobalConfig as zt };
|