@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/CHANGELOG.md +182 -0
- package/README.md +131 -68
- package/dist/index.css +1 -1
- package/dist/index.d.ts +427 -75
- package/dist/index.js +8 -13
- package/dist/index.js.map +1 -1
- package/dist/version-info.json +28 -0
- package/package.json +14 -6
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:
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
413
|
+
export declare interface CommonFormDatePickerItem<T extends AnyObject> extends CommonFormItemBase<'date-picker', CommonDatePickerProps, T> {
|
|
361
414
|
}
|
|
362
415
|
|
|
363
416
|
/**
|
|
364
417
|
* CommonForm 组件实例暴露类型
|
|
365
|
-
* 继承
|
|
366
|
-
*
|
|
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
|
|
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 {
|
|
476
|
+
* import type { CommonFormItemArray } from '@yetuzi/vue3-query-components'
|
|
386
477
|
*
|
|
387
|
-
* const form:
|
|
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
|
|
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
|
-
*
|
|
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
|
-
|
|
399
|
-
|
|
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
|
|
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
|
|
571
|
+
export declare interface CommonFormRadioItem<T extends AnyObject> extends CommonFormItemBase<'radio', CommonRadioProps, T> {
|
|
412
572
|
}
|
|
413
573
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
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
|
|
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?:
|
|
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
|
-
*
|
|
774
|
+
* 表格列定义根类型
|
|
775
|
+
* 包含所有列类型的联合类型
|
|
776
|
+
*
|
|
777
|
+
* @typeParam T - 表格数据行类型
|
|
565
778
|
*/
|
|
566
|
-
export declare type CommonTableColumnRoot<T extends AnyObject> =
|
|
779
|
+
export declare type CommonTableColumnRoot<T extends AnyObject> = TableColumnBase<T> | TableColumnTypeIndex<T> | TableColumnTypeSelection<T> | TableColumnTypeExpand<T> | TableColumnTypeDate<T> | TableColumnTypeDateTime<T>;
|
|
567
780
|
|
|
568
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
747
|
-
|
|
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
|
|
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
|
|
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<
|
|
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<
|
|
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<
|
|
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
|
|