@yetuzi/vue3-query-components 1.2.0 → 1.2.3

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/dist/index.d.ts CHANGED
@@ -41,7 +41,7 @@ import { VNodeProps } from 'vue';
41
41
  declare const __VLS_component: DefineComponent<CommonConfigProviderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<CommonConfigProviderProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
42
42
 
43
43
  declare const __VLS_component_2: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
44
- form: CommonFormPropForm<AnyObject>;
44
+ form: CommonFormItemArray<AnyObject>;
45
45
  layouts: Array<CommonQueryTableLayoutsUnite>;
46
46
  }, {}, {}, {}, string, ComponentProvideOptions, false, {
47
47
  CommonFormRef: ShallowUnwrapRef<CommonFormExpose<AnyObject>> | null;
@@ -336,94 +336,280 @@ export declare const CommonForm: <T extends AnyObject>(__VLS_props: NonNullable<
336
336
  };
337
337
 
338
338
  /**
339
- * 多选框
339
+ * 多选框组件表单项
340
+ *
341
+ * @typeParam T - 表单数据对象类型
342
+ *
343
+ * @example
344
+ * ```ts
345
+ * const checkboxItem: CommonFormCheckboxItem<UserData> = {
346
+ * is: 'check-box',
347
+ * prop: 'hobbies',
348
+ * label: '爱好',
349
+ * props: {
350
+ * options: [
351
+ * { label: '阅读', value: 'reading' },
352
+ * { label: '运动', value: 'sports' }
353
+ * ]
354
+ * }
355
+ * }
356
+ * ```
340
357
  */
341
- export declare interface CommonFormCheckboxItem<T extends AnyObject> extends CommonFormSupplement<'check-box', CommonCheckboxProps, T> {
358
+ export declare interface CommonFormCheckboxItem<T extends AnyObject> extends CommonFormItemBase<'check-box', CommonCheckboxProps, T> {
342
359
  }
343
360
 
344
361
  /**
345
- * 自定义组件
362
+ * 自定义组件表单项
363
+ * 允许使用任意 Vue 组件作为表单项
364
+ *
365
+ * @typeParam T - 表单数据对象类型
366
+ * @typeParam C - 自定义组件类型,默认为 Component
367
+ * @typeParam P - 组件 Props 类型,默认从组件推导
368
+ *
369
+ * @example
370
+ * ```ts
371
+ * import MyCustomComponent from './MyCustomComponent.vue'
372
+ *
373
+ * const customItem: CommonFormCustomItem<UserData> = {
374
+ * is: MyCustomComponent,
375
+ * prop: 'custom',
376
+ * label: '自定义字段',
377
+ * props: {
378
+ * // 传递给自定义组件的属性
379
+ * customProp: 'value'
380
+ * }
381
+ * }
382
+ * ```
346
383
  */
347
- export declare interface CommonFormCustomComponentsItem<T extends AnyObject, C extends Component = Component, P = ComponentProps<C>> extends CommonFormSupplement<C, P, T> {
384
+ export declare interface CommonFormCustomItem<T extends AnyObject, C extends Component = Component, P = ComponentProps<C>> extends CommonFormItemBase<C, P, T> {
348
385
  }
349
386
 
350
387
  /**
351
- * 表单数据类型,支持通过prop访问
388
+ * 表单数据类型
389
+ * 支持通过 prop 访问表单字段值,并允许额外的字符串索引
390
+ *
391
+ * @typeParam T - 表单数据对象类型
352
392
  */
353
- export declare type CommonFormData<T extends AnyObject> = T & {
354
- [key: string]: any;
355
- };
393
+ export declare type CommonFormData<T extends AnyObject> = T & Record<string, any>;
356
394
 
357
395
  /**
358
- * 日期选择器
396
+ * 日期选择器组件表单项
397
+ *
398
+ * @typeParam T - 表单数据对象类型
399
+ *
400
+ * @example
401
+ * ```ts
402
+ * const dateItem: CommonFormDatePickerItem<UserData> = {
403
+ * is: 'date-picker',
404
+ * prop: 'birthday',
405
+ * label: '生日',
406
+ * props: {
407
+ * type: 'date',
408
+ * placeholder: '请选择日期'
409
+ * }
410
+ * }
411
+ * ```
359
412
  */
360
- export declare interface CommonFormDatePickerItem<T extends AnyObject> extends CommonFormSupplement<'date-picker', CommonDatePickerProps, T> {
413
+ export declare interface CommonFormDatePickerItem<T extends AnyObject> extends CommonFormItemBase<'date-picker', CommonDatePickerProps, T> {
361
414
  }
362
415
 
363
416
  /**
364
417
  * CommonForm 组件实例暴露类型
365
- * 继承 FormInstance 的所有方法,可直接调用 validate()、resetFields()
366
- * 并且 导出 formData 数据
418
+ * 继承 Element Plus FormInstance 的所有方法,并提供表单数据访问
419
+ *
420
+ * @typeParam T - 表单数据对象类型,默认为 AnyObject
421
+ *
422
+ * @example
423
+ * ```vue
424
+ * <script setup lang="ts">
425
+ * import { ref } from 'vue'
426
+ *
427
+ * const formRef = ref<CommonFormExpose<UserData>>()
428
+ *
429
+ * const handleSubmit = async () => {
430
+ * // 调用 FormInstance 方法
431
+ * await formRef.value?.validate()
432
+ *
433
+ * // 访问表单数据
434
+ * console.log(formRef.value?.formData)
435
+ * }
436
+ * </script>
437
+ * ```
367
438
  */
368
439
  export declare interface CommonFormExpose<T extends AnyObject = AnyObject> extends FormInstance {
369
- /** 表单数据对象 */
440
+ /**
441
+ * 表单数据响应式对象
442
+ * 包含所有表单字段的当前值
443
+ */
370
444
  formData: Reactive<CommonFormData<T>>;
371
445
  }
372
446
 
373
447
  /**
374
- * 输入框组件
448
+ * 输入框组件表单项
449
+ *
450
+ * @typeParam T - 表单数据对象类型
451
+ *
452
+ * @example
453
+ * ```ts
454
+ * const inputItem: CommonFormInputItem<UserData> = {
455
+ * is: 'input',
456
+ * prop: 'name',
457
+ * label: '姓名',
458
+ * props: {
459
+ * placeholder: '请输入姓名',
460
+ * clearable: true
461
+ * }
462
+ * }
463
+ * ```
375
464
  */
376
- export declare interface CommonFormInputItem<T extends AnyObject> extends CommonFormSupplement<'input', CommonInputProps, T> {
465
+ export declare interface CommonFormInputItem<T extends AnyObject> extends CommonFormItemBase<'input', CommonInputProps, T> {
377
466
  }
378
467
 
379
468
  /**
380
469
  * 表单项类型数组
381
470
  * 用于 CommonForm 的 form 属性,也可用于类型标注
382
471
  *
472
+ * @typeParam T - 表单数据对象类型
473
+ *
383
474
  * @example
384
475
  * ```ts
385
- * import type { CommonFormPropForm } from '@yetuzi/vue3-query-components'
476
+ * import type { CommonFormItemArray } from '@yetuzi/vue3-query-components'
386
477
  *
387
- * const form: CommonFormPropForm<MyDataType> = [
478
+ * const form: CommonFormItemArray<MyDataType> = [
388
479
  * { is: 'input', prop: 'name', label: '用户名' },
389
480
  * { is: 'select', prop: 'status', label: '状态' }
390
481
  * ]
391
482
  * ```
392
483
  */
393
- export declare type CommonFormPropForm<T extends AnyObject> = Array<CommonFormSelectItem<T> | CommonFormInputItem<T> | CommonFormDatePickerItem<T> | CommonFormRadioItem<T> | CommonFormCustomComponentsItem<T> | CommonFormCheckboxItem<T> | CommonFormSwitchItem<T>>;
484
+ export declare type CommonFormItemArray<T extends AnyObject> = Array<CommonFormSelectItem<T> | CommonFormInputItem<T> | CommonFormDatePickerItem<T> | CommonFormRadioItem<T> | CommonFormCustomItem<T> | CommonFormCheckboxItem<T> | CommonFormSwitchItem<T>>;
394
485
 
395
486
  /**
396
- * form 组件props
487
+ * 表单项基础接口
488
+ * 所有表单项类型的公共属性定义
489
+ *
490
+ * @typeParam T - 组件类型,可以是内置组件类型字符串或自定义组件
491
+ * @typeParam P - 组件的 Props 类型
492
+ * @typeParam D - 表单数据对象类型
493
+ * @typeParam V - 初始值的类型,默认为 any
494
+ *
495
+ * @example 内置组件
496
+ * ```ts
497
+ * const inputItem: CommonFormInputItem<UserData> = {
498
+ * is: 'input',
499
+ * prop: 'name',
500
+ * label: '姓名'
501
+ * }
502
+ * ```
503
+ *
504
+ * @example 自定义组件
505
+ * ```ts
506
+ * import MyComponent from './MyComponent.vue'
507
+ *
508
+ * const customItem: CommonFormCustomItem<UserData> = {
509
+ * is: MyComponent,
510
+ * prop: 'custom',
511
+ * label: '自定义字段'
512
+ * }
513
+ * ```
397
514
  */
398
- export declare interface CommonFormProps<T extends AnyObject> extends ExtractPropTypes<FormProps> {
399
- form?: CommonFormPropForm<T>;
515
+ declare interface CommonFormItemBase<T, P, D extends AnyObject, V = any> {
516
+ /**
517
+ * 组件类型标识
518
+ * - 内置组件:'input' | 'select' | 'date-picker' | 'radio' | 'check-box' | 'switch'
519
+ * - 自定义组件:直接传入组件对象
520
+ */
521
+ is: T | (string & {});
522
+ /** 表单项标签 */
523
+ label?: string;
524
+ /** 表单字段名,支持表单数据类型的 key 或任意字符串 */
525
+ prop: keyof D | (string & {});
526
+ /** 传递给组件的额外属性 */
527
+ props?: Partial<P>;
528
+ /** 字段初始值 */
529
+ initialValue?: V;
530
+ /** ElFormItem 的额外属性配置(不包含 prop 和 label) */
531
+ formItem?: Partial<Omit<FormItemProps, 'prop' | 'label'>>;
400
532
  }
401
533
 
402
534
  /**
403
- * 单选框
535
+ * CommonForm 组件 Props
536
+ *
537
+ * @typeParam T - 表单数据对象类型
538
+ *
539
+ * @example
540
+ * ```vue
541
+ * <template>
542
+ * <CommonForm :form="formConfig" v-model="formData" />
543
+ * </template>
544
+ * ```
404
545
  */
405
- export declare interface CommonFormRadioItem<T extends AnyObject> extends CommonFormSupplement<'radio', CommonRadioProps, T> {
546
+ export declare interface CommonFormProps<T extends AnyObject> extends ExtractPropTypes<FormProps> {
547
+ /** 表单项配置数组 */
548
+ form?: CommonFormItemArray<T>;
406
549
  }
407
550
 
408
551
  /**
409
- * 选择器组件
552
+ * 单选框组件表单项
553
+ *
554
+ * @typeParam T - 表单数据对象类型
555
+ *
556
+ * @example
557
+ * ```ts
558
+ * const radioItem: CommonFormRadioItem<UserData> = {
559
+ * is: 'radio',
560
+ * prop: 'gender',
561
+ * label: '性别',
562
+ * props: {
563
+ * options: [
564
+ * { label: '男', value: 'male' },
565
+ * { label: '女', value: 'female' }
566
+ * ]
567
+ * }
568
+ * }
569
+ * ```
410
570
  */
411
- export declare interface CommonFormSelectItem<T extends AnyObject> extends CommonFormSupplement<'select', CommonSelectProps, T> {
571
+ export declare interface CommonFormRadioItem<T extends AnyObject> extends CommonFormItemBase<'radio', CommonRadioProps, T> {
412
572
  }
413
573
 
414
- declare interface CommonFormSupplement<T, P, D extends AnyObject, V = any> {
415
- is: T | (string & {});
416
- label?: string;
417
- prop: keyof D | (string & {});
418
- props?: Partial<P>;
419
- initialValue?: V;
420
- formItem?: Partial<Omit<FormItemProps, 'prop' | 'label'>>;
574
+ /**
575
+ * 选择器组件表单项
576
+ *
577
+ * @typeParam T - 表单数据对象类型
578
+ *
579
+ * @example
580
+ * ```ts
581
+ * const selectItem: CommonFormSelectItem<UserData> = {
582
+ * is: 'select',
583
+ * prop: 'city',
584
+ * label: '城市',
585
+ * props: {
586
+ * options: [
587
+ * { label: '北京', value: 'beijing' },
588
+ * { label: '上海', value: 'shanghai' }
589
+ * ]
590
+ * }
591
+ * }
592
+ * ```
593
+ */
594
+ export declare interface CommonFormSelectItem<T extends AnyObject> extends CommonFormItemBase<'select', CommonSelectProps, T> {
421
595
  }
422
596
 
423
597
  /**
424
- * 开关
598
+ * 开关组件表单项
599
+ *
600
+ * @typeParam T - 表单数据对象类型
601
+ *
602
+ * @example
603
+ * ```ts
604
+ * const switchItem: CommonFormSwitchItem<UserData> = {
605
+ * is: 'switch',
606
+ * prop: 'enabled',
607
+ * label: '是否启用',
608
+ * initialValue: true
609
+ * }
610
+ * ```
425
611
  */
426
- export declare interface CommonFormSwitchItem<T extends AnyObject> extends CommonFormSupplement<'switch', CommonSwitchProps, T> {
612
+ export declare interface CommonFormSwitchItem<T extends AnyObject> extends CommonFormItemBase<'switch', CommonSwitchProps, T> {
427
613
  }
428
614
 
429
615
  export declare const CommonInput: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, __VLS_TemplateResult_5["slots"]>;
@@ -461,7 +647,7 @@ export declare interface CommonQueryTableProps<T extends AnyObject = AnyObject>
461
647
  * 表单配置数组
462
648
  * 定义查询表单的字段和属性
463
649
  */
464
- form?: CommonFormPropForm<T>;
650
+ form?: CommonFormItemArray<T>;
465
651
  /**
466
652
  * 表格列配置
467
653
  * 定义表格的列结构和展示方式
@@ -545,6 +731,8 @@ export declare const CommonTable: <T extends AnyObject>(__VLS_props: NonNullable
545
731
  * 表格列类型数组
546
732
  * 用于 CommonTable 的 columns 属性,也可用于类型标注
547
733
  *
734
+ * @typeParam T - 表格数据行类型
735
+ *
548
736
  * @example
549
737
  * ```ts
550
738
  * import type { CommonTableArrayColumns } from '@yetuzi/vue3-query-components'
@@ -558,31 +746,138 @@ export declare const CommonTable: <T extends AnyObject>(__VLS_props: NonNullable
558
746
  */
559
747
  export declare type CommonTableArrayColumns<T extends AnyObject> = Array<CommonTableColumnRoot<T>>;
560
748
 
749
+ /**
750
+ * 表格列配置类型
751
+ * 支持数组形式和对象形式的列配置
752
+ *
753
+ * @typeParam T - 表格数据行类型
754
+ *
755
+ * @example 数组形式
756
+ * ```ts
757
+ * const columns: CommonTableArrayColumns<UserData> = [
758
+ * { prop: 'name', label: '姓名' },
759
+ * { prop: 'age', label: '年龄' }
760
+ * ]
761
+ * ```
762
+ *
763
+ * @example 对象形式
764
+ * ```ts
765
+ * const columns: CommonTableObjectColumns<UserData> = {
766
+ * name: { prop: 'name', label: '姓名' },
767
+ * age: { prop: 'age', label: '年龄' }
768
+ * }
769
+ * ```
770
+ */
561
771
  export declare type CommonTableColumn<T extends AnyObject> = CommonTableArrayColumns<T> | CommonTableObjectColumns<T>;
562
772
 
563
773
  /**
564
- * Column 根类型 要求 prop 、label 为必传
774
+ * 表格列定义根类型
775
+ * 包含所有列类型的联合类型
776
+ *
777
+ * @typeParam T - 表格数据行类型
565
778
  */
566
- export declare type CommonTableColumnRoot<T extends AnyObject> = TableColumnSupplement<T> | TableColumnTypeIndex<T> | TableColumnTypeSelection<T> | TableColumnTypeExpand<T> | TableColumnTypeDate<T> | TableColumnTypeDateTime<T>;
779
+ export declare type CommonTableColumnRoot<T extends AnyObject> = TableColumnBase<T> | TableColumnTypeIndex<T> | TableColumnTypeSelection<T> | TableColumnTypeExpand<T> | TableColumnTypeDate<T> | TableColumnTypeDateTime<T>;
567
780
 
568
- /** CommonTable 暴露给父组件的实例类型(包含 ElTable 所有方法) */
781
+ /**
782
+ * CommonTable 暴露给父组件的实例类型
783
+ * 包含 ElTable 的所有方法和属性
784
+ *
785
+ * @example
786
+ * ```vue
787
+ * <script setup lang="ts">
788
+ * import { ref } from 'vue'
789
+ *
790
+ * const tableRef = ref<CommonTableExpose>()
791
+ *
792
+ * const clearSelection = () => {
793
+ * tableRef.value?.clearSelection()
794
+ * }
795
+ *
796
+ * const toggleRowSelection = (row: UserData) => {
797
+ * tableRef.value?.toggleRowSelection(row, true)
798
+ * }
799
+ * </script>
800
+ * ```
801
+ */
569
802
  export declare interface CommonTableExpose extends TableInstance {
570
803
  }
571
804
 
572
805
  /**
573
806
  * CommonTable 组件实例暴露类型
807
+ * 提供 Element Plus Table 实例访问
808
+ *
809
+ * @example
810
+ * ```vue
811
+ * <script setup lang="ts">
812
+ * import { ref } from 'vue'
813
+ *
814
+ * const tableRef = ref<CommonTableInstance>()
815
+ *
816
+ * const scrollToBottom = () => {
817
+ * tableRef.value?.elTableRef.value?.scrollTo({
818
+ * top: 10000,
819
+ * behavior: 'smooth'
820
+ * })
821
+ * }
822
+ * </script>
823
+ * ```
574
824
  */
575
825
  export declare interface CommonTableInstance {
576
826
  /** ElTable 组件实例引用 */
577
827
  elTableRef: Ref<TableInstance | undefined>;
578
828
  }
579
829
 
580
- /** Columns 为 Object 时的ts类型 */
830
+ /**
831
+ * 表格列对象形式类型
832
+ * 以键值对的方式配置列
833
+ *
834
+ * @typeParam T - 表格数据行类型
835
+ *
836
+ * @example
837
+ * ```ts
838
+ * const columns: CommonTableObjectColumns<UserData> = {
839
+ * name: { prop: 'name', label: '姓名' },
840
+ * age: { prop: 'age', label: '年龄' }
841
+ * }
842
+ * ```
843
+ */
581
844
  declare type CommonTableObjectColumns<T extends AnyObject> = Record<keyof T | (string & {}), CommonTableColumnRoot<T>>;
582
845
 
846
+ /**
847
+ * CommonTable 组件 Props
848
+ * 基于 Element Plus Table 封装,提供开箱即用的表格功能
849
+ *
850
+ * @typeParam T - 表格数据行类型
851
+ *
852
+ * @example
853
+ * ```vue
854
+ * <template>
855
+ * <CommonTable :columns="columns" :data="tableData" />
856
+ * </template>
857
+ *
858
+ * <script setup lang="ts">
859
+ * import type { CommonTableArrayColumns } from '@yetuzi/vue3-query-components'
860
+ *
861
+ * interface UserData {
862
+ * id: number
863
+ * name: string
864
+ * email: string
865
+ * }
866
+ *
867
+ * const columns: CommonTableArrayColumns<UserData> = [
868
+ * { prop: 'id', label: 'ID', type: 'index' },
869
+ * { prop: 'name', label: '姓名' },
870
+ * { prop: 'email', label: '邮箱' }
871
+ * ]
872
+ *
873
+ * const tableData: UserData[] = [...]
874
+ * </script>
875
+ * ```
876
+ */
583
877
  export declare interface CommonTableProps<T extends AnyObject = AnyObject> extends ExtractPropTypes<Omit<TableProps<T>, 'data' | 'headerCellStyle'>> {
584
- /** table 表格需要的表头 */
878
+ /** 表格列配置 */
585
879
  columns: CommonTableColumn<T>;
880
+ /** 表格数据 */
586
881
  data: T[];
587
882
  }
588
883
 
@@ -683,25 +978,6 @@ export declare function getCommonProviderConfig(): {
683
978
  */
684
979
  export declare function getFirstValidValue<T>(...args: T[]): T | undefined;
685
980
 
686
- /**
687
- * 表单项类型守卫辅助函数
688
- * 用于检查表单项的 is 属性是否为指定类型
689
- *
690
- * @param item - 表单项对象
691
- * @param type - 要检查的类型字符串
692
- * @returns 是否为指定类型
693
- *
694
- * @example
695
- * ```ts
696
- * if (isFormItemType(item, 'select')) {
697
- * // item 在这里被推断为 CommonFormSelectItem
698
- * }
699
- * ```
700
- */
701
- export declare function isFormItemType<T extends AnyObject>(item: CommonFormPropForm<T>[number], type: string): item is CommonFormPropForm<T>[number] & {
702
- is: string;
703
- };
704
-
705
981
  /**
706
982
  * 列表请求 参数要求,包含分页
707
983
  */
@@ -743,56 +1019,132 @@ export declare type RequiredSomeFields<T extends object, K extends keyof T> = Om
743
1019
  [P in K]-?: T[P];
744
1020
  };
745
1021
 
746
- /** 增强 TableColumn 的类型 */
747
- declare interface TableColumnSupplement<T extends AnyObject> extends Partial<Omit<TableColumnCtx<T>, 'prop' | 'type'>> {
1022
+ /**
1023
+ * 表格列基础接口
1024
+ * 所有列类型的公共属性定义
1025
+ *
1026
+ * @typeParam T - 表格数据行类型
1027
+ */
1028
+ declare interface TableColumnBase<T extends AnyObject> extends Partial<Omit<TableColumnCtx<T>, 'prop' | 'type'>> {
1029
+ /** 列字段名,支持数据类型的 key 或任意字符串 */
748
1030
  prop: keyof T | (string & {});
1031
+ /** 列类型 */
749
1032
  type?: TableColumnType | (string & {});
750
1033
  }
751
1034
 
752
1035
  /**
753
- * 表格列类型
1036
+ * 表格列类型标识
754
1037
  * 从 CommonTableColumnRoot 中自动提取 type 字段的类型
1038
+ *
1039
+ * @example
1040
+ * ```ts
1041
+ * let columnType: TableColumnType
1042
+ *
1043
+ * columnType = 'index' // ✓ 索引列
1044
+ * columnType = 'selection' // ✓ 选择列
1045
+ * columnType = 'expand' // ✓ 展开列
1046
+ * columnType = 'date' // ✓ 日期列
1047
+ * columnType = 'dateTime' // ✓ 日期时间列
1048
+ * ```
755
1049
  */
756
1050
  export declare type TableColumnType = Extract<CommonTableColumnRoot<AnyObject>, {
757
1051
  type: any;
758
1052
  }>['type'];
759
1053
 
760
1054
  /**
761
- * 日期时间
1055
+ * 日期列类型
1056
+ * 自动格式化日期显示
1057
+ *
1058
+ * @typeParam T - 表格数据行类型
1059
+ *
1060
+ * @example
1061
+ * ```ts
1062
+ * const dateColumn: TableColumnTypeDate<UserData> = {
1063
+ * type: 'date',
1064
+ * prop: 'createTime',
1065
+ * label: '创建日期'
1066
+ * }
1067
+ * ```
762
1068
  */
763
- declare interface TableColumnTypeDate<T extends AnyObject> extends TableColumnSupplement<T> {
764
- /** 时间内容 */
1069
+ declare interface TableColumnTypeDate<T extends AnyObject> extends TableColumnBase<T> {
765
1070
  type: 'date';
766
1071
  }
767
1072
 
768
1073
  /**
769
- * 日期时间
1074
+ * 日期时间列类型
1075
+ * 自动格式化日期时间显示
1076
+ *
1077
+ * @typeParam T - 表格数据行类型
1078
+ *
1079
+ * @example
1080
+ * ```ts
1081
+ * const dateTimeColumn: TableColumnTypeDateTime<UserData> = {
1082
+ * type: 'dateTime',
1083
+ * prop: 'updateTime',
1084
+ * label: '更新时间'
1085
+ * }
1086
+ * ```
770
1087
  */
771
- declare interface TableColumnTypeDateTime<T extends AnyObject> extends TableColumnSupplement<T> {
772
- /** 时间内容 */
1088
+ declare interface TableColumnTypeDateTime<T extends AnyObject> extends TableColumnBase<T> {
773
1089
  type: 'dateTime';
774
1090
  }
775
1091
 
776
1092
  /**
777
- * 可展开的按钮
1093
+ * 展开列类型
1094
+ * 提供行展开功能
1095
+ *
1096
+ * @typeParam T - 表格数据行类型
1097
+ *
1098
+ * @example
1099
+ * ```ts
1100
+ * const expandColumn: TableColumnTypeExpand<UserData> = {
1101
+ * type: 'expand',
1102
+ * label: '详情'
1103
+ * }
1104
+ * ```
778
1105
  */
779
- declare interface TableColumnTypeExpand<T extends AnyObject> extends OptionalFields<TableColumnSupplement<T>, 'prop'> {
1106
+ declare interface TableColumnTypeExpand<T extends AnyObject> extends OptionalFields<TableColumnBase<T>, 'prop'> {
780
1107
  type: 'expand';
781
1108
  }
782
1109
 
783
1110
  /**
784
- * 下标
1111
+ * 索引列类型
1112
+ * 自动显示行号
1113
+ *
1114
+ * @typeParam T - 表格数据行类型
1115
+ *
1116
+ * @example
1117
+ * ```ts
1118
+ * const indexColumn: TableColumnTypeIndex<UserData> = {
1119
+ * type: 'index',
1120
+ * label: '序号',
1121
+ * width: 60
1122
+ * }
1123
+ * ```
785
1124
  */
786
- declare interface TableColumnTypeIndex<T extends AnyObject> extends OptionalFields<TableColumnSupplement<T>, 'prop'> {
1125
+ declare interface TableColumnTypeIndex<T extends AnyObject> extends OptionalFields<TableColumnBase<T>, 'prop'> {
787
1126
  type: 'index';
788
1127
  }
789
1128
 
790
1129
  /**
791
- * 选择器
1130
+ * 选择列类型
1131
+ * 提供多选功能
1132
+ *
1133
+ * @typeParam T - 表格数据行类型
1134
+ *
1135
+ * @example
1136
+ * ```ts
1137
+ * const selectionColumn: TableColumnTypeSelection<UserData> = {
1138
+ * type: 'selection',
1139
+ * selectable: (row, index) => row.status === 'active'
1140
+ * }
1141
+ * ```
792
1142
  */
793
- declare interface TableColumnTypeSelection<T extends AnyObject> extends OptionalFields<TableColumnSupplement<T>, 'prop'> {
1143
+ declare interface TableColumnTypeSelection<T extends AnyObject> extends OptionalFields<TableColumnBase<T>, 'prop'> {
794
1144
  type: 'selection';
1145
+ /** 行可选择的条件函数 */
795
1146
  selectable?: (row: T, index: number) => boolean;
1147
+ /** 是否保留之前的选择 */
796
1148
  'reserve-selection'?: boolean;
797
1149
  }
798
1150