yc-pro-components 0.0.12 → 0.0.13

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.
Files changed (103) hide show
  1. package/es/components/dialog-form/index.d.ts +14 -2
  2. package/es/components/dialog-form/src/index.vue.d.ts +14 -2
  3. package/es/components/display-item/index.d.ts +42 -6
  4. package/es/components/display-item/src/index.vue.d.ts +42 -6
  5. package/es/components/drawer-form/index.d.ts +14 -2
  6. package/es/components/drawer-form/src/index.vue.d.ts +14 -2
  7. package/es/components/form/index.d.ts +28 -4
  8. package/es/components/form/src/form-content.vue.d.ts +42 -6
  9. package/es/components/form/src/index.vue.d.ts +28 -4
  10. package/es/components/form-item/index.d.ts +88 -16
  11. package/es/components/form-item/src/index.vue.d.ts +35 -4
  12. package/es/components/form-item/src/index.vue2.mjs +1 -0
  13. package/es/components/page/index.d.ts +224 -32
  14. package/es/components/page/src/index.vue.d.ts +84 -12
  15. package/es/components/page/src/index.vue2.mjs +1 -1
  16. package/es/components/render/index.d.ts +3 -3
  17. package/es/components/render/src/index.vue.d.ts +1 -1
  18. package/es/components/search/index.d.ts +98 -14
  19. package/es/components/search/src/index.vue.d.ts +42 -6
  20. package/es/components/table/src/table-action-bar.vue2.mjs +1 -1
  21. package/es/components/table/src/table-column.vue.d.ts +42 -6
  22. package/es/components/yc-plus-page/src/index.vue.d.ts +154 -22
  23. package/es/constants/dict.d.ts +78 -0
  24. package/es/constants/dict.mjs +3 -0
  25. package/es/constants/index.d.ts +1 -0
  26. package/es/constants/index.mjs +1 -0
  27. package/es/hooks/index.d.ts +1 -0
  28. package/es/hooks/index.mjs +1 -0
  29. package/es/hooks/useDictInjection.d.ts +38 -0
  30. package/es/hooks/useDictInjection.mjs +18 -0
  31. package/es/hooks/useGetOptions.mjs +118 -30
  32. package/es/hooks/usePlusFormReset.d.ts +84 -12
  33. package/es/index.d.ts +1 -1
  34. package/es/index.mjs +2 -0
  35. package/es/types/plus.d.ts +74 -0
  36. package/es/version.d.ts +1 -1
  37. package/es/version.mjs +1 -1
  38. package/es/yc-components/index.d.ts +1 -1
  39. package/es/yc-components/version.d.ts +1 -1
  40. package/index.js +165 -59
  41. package/index.min.js +7 -7
  42. package/index.min.mjs +7 -7
  43. package/index.mjs +165 -61
  44. package/lib/components/dialog-form/index.d.ts +14 -2
  45. package/lib/components/dialog-form/src/index.vue.d.ts +14 -2
  46. package/lib/components/display-item/index.d.ts +42 -6
  47. package/lib/components/display-item/src/index.vue.d.ts +42 -6
  48. package/lib/components/drawer-form/index.d.ts +14 -2
  49. package/lib/components/drawer-form/src/index.vue.d.ts +14 -2
  50. package/lib/components/form/index.d.ts +28 -4
  51. package/lib/components/form/src/form-content.vue.d.ts +42 -6
  52. package/lib/components/form/src/index.vue.d.ts +28 -4
  53. package/lib/components/form-item/index.d.ts +88 -16
  54. package/lib/components/form-item/src/index.vue.d.ts +35 -4
  55. package/lib/components/form-item/src/index.vue2.js +1 -0
  56. package/lib/components/page/index.d.ts +224 -32
  57. package/lib/components/page/src/index.vue.d.ts +84 -12
  58. package/lib/components/page/src/index.vue2.js +1 -1
  59. package/lib/components/render/index.d.ts +3 -3
  60. package/lib/components/render/src/index.vue.d.ts +1 -1
  61. package/lib/components/search/index.d.ts +98 -14
  62. package/lib/components/search/src/index.vue.d.ts +42 -6
  63. package/lib/components/table/src/table-action-bar.vue2.js +1 -1
  64. package/lib/components/table/src/table-column.vue.d.ts +42 -6
  65. package/lib/components/yc-plus-page/src/index.vue.d.ts +154 -22
  66. package/lib/constants/dict.d.ts +78 -0
  67. package/lib/constants/dict.js +5 -0
  68. package/lib/constants/index.d.ts +1 -0
  69. package/lib/constants/index.js +2 -0
  70. package/lib/hooks/index.d.ts +1 -0
  71. package/lib/hooks/index.js +2 -0
  72. package/lib/hooks/useDictInjection.d.ts +38 -0
  73. package/lib/hooks/useDictInjection.js +20 -0
  74. package/lib/hooks/useGetOptions.js +117 -29
  75. package/lib/hooks/usePlusFormReset.d.ts +84 -12
  76. package/lib/index.d.ts +1 -1
  77. package/lib/index.js +4 -0
  78. package/lib/types/plus.d.ts +74 -0
  79. package/lib/version.d.ts +1 -1
  80. package/lib/version.js +1 -1
  81. package/lib/yc-components/index.d.ts +1 -1
  82. package/lib/yc-components/version.d.ts +1 -1
  83. package/locale/en.js +1 -1
  84. package/locale/en.min.js +1 -1
  85. package/locale/en.min.mjs +1 -1
  86. package/locale/en.mjs +1 -1
  87. package/locale/ja.js +1 -1
  88. package/locale/ja.min.js +1 -1
  89. package/locale/ja.min.mjs +1 -1
  90. package/locale/ja.mjs +1 -1
  91. package/locale/ko.js +1 -1
  92. package/locale/ko.min.js +1 -1
  93. package/locale/ko.min.mjs +1 -1
  94. package/locale/ko.mjs +1 -1
  95. package/locale/zh-cn.js +1 -1
  96. package/locale/zh-cn.min.js +1 -1
  97. package/locale/zh-cn.min.mjs +1 -1
  98. package/locale/zh-cn.mjs +1 -1
  99. package/locale/zh-tw.js +1 -1
  100. package/locale/zh-tw.min.js +1 -1
  101. package/locale/zh-tw.min.mjs +1 -1
  102. package/locale/zh-tw.mjs +1 -1
  103. package/package.json +1 -1
@@ -8,6 +8,7 @@ var usePlusProConfig = require('./usePlusProConfig.js');
8
8
  var useSortableDrag = require('./useSortableDrag.js');
9
9
  var usePlusFormReset = require('./usePlusFormReset.js');
10
10
  var useSelectWithPagination = require('./useSelectWithPagination.js');
11
+ var useDictInjection = require('./useDictInjection.js');
11
12
 
12
13
 
13
14
 
@@ -28,3 +29,4 @@ exports.usePlusFormClearValidate = usePlusFormReset.usePlusFormClearValidate;
28
29
  exports.usePlusFormFullReset = usePlusFormReset.usePlusFormFullReset;
29
30
  exports.usePlusFormReset = usePlusFormReset.usePlusFormReset;
30
31
  exports.useSelectWithPagination = useSelectWithPagination.useSelectWithPagination;
32
+ exports.useDictInjection = useDictInjection.useDictInjection;
@@ -0,0 +1,38 @@
1
+ import { DictStoreInterface } from 'yc-pro-components/es/constants';
2
+
3
+ /**
4
+ * 提供字典 Store 给子组件
5
+ * @param dictStore 字典 Store 实例,必须实现 DictStoreInterface 接口
6
+ * @description 在父组件中调用此函数,将字典 Store 提供给所有子组件使用
7
+ * @version v0.2.0
8
+ * @example
9
+ * ```vue
10
+ * <!-- 在父组件中提供字典 Store -->
11
+ * <script setup lang="ts">
12
+ * import { useDictInjection } from 'yc-components'
13
+ * import { useFieldCatalogStore } from '@/store/modules/fieldCatalog'
14
+ *
15
+ * const fieldCatalogStore = useFieldCatalogStore()
16
+ *
17
+ * // 提供字典 Store 给所有子组件
18
+ * useDictInjection(fieldCatalogStore)
19
+ * </script>
20
+ *
21
+ * <template>
22
+ * <PlusPage :columns="columns" />
23
+ * </template>
24
+ * ```
25
+ *
26
+ * ```ts
27
+ * // 子组件中使用 autoDict
28
+ * const columns: PlusColumn[] = [
29
+ * {
30
+ * label: '状态',
31
+ * prop: 'status',
32
+ * valueType: 'select',
33
+ * autoDict: true // 自动从父组件注入的 dictStore 获取
34
+ * }
35
+ * ]
36
+ * ```
37
+ */
38
+ export declare function useDictInjection(dictStore: DictStoreInterface): void;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var dict = require('../constants/dict.js');
5
+
6
+ function useDictInjection(dictStore) {
7
+ if (!dictStore) {
8
+ console.warn("[yc-components] useDictInjection: dictStore is required");
9
+ return;
10
+ }
11
+ if (typeof dictStore.getDictData !== "function") {
12
+ console.error(
13
+ "[yc-components] useDictInjection: dictStore must implement getDictData method. Please ensure your dictStore implements DictStoreInterface."
14
+ );
15
+ return;
16
+ }
17
+ vue.provide(dict.DictStoreInjectionKey, dictStore);
18
+ }
19
+
20
+ exports.useDictInjection = useDictInjection;
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var vue = require('vue');
4
+ var dict = require('../constants/dict.js');
4
5
  var is = require('../components/utils/is.js');
5
6
 
6
7
  const throwError = (data) => {
@@ -29,27 +30,53 @@ const getOptionsByOptionsMap = (options, props) => {
29
30
  const useGetOptions = (props) => {
30
31
  const options = vue.ref([]);
31
32
  const optionsIsReady = vue.ref(false);
32
- if (!props.options) {
33
+ const injectedDictStore = vue.inject(dict.DictStoreInjectionKey, null);
34
+ const hasValidOptions = props.options && (!is.isArray(props.options) || props.options.length > 0);
35
+ if (hasValidOptions) {
36
+ handleOptions();
37
+ } else if (props.autoDict) {
38
+ handleAutoDict();
39
+ } else {
33
40
  options.value = [];
34
41
  optionsIsReady.value = true;
35
- } else if (vue.isRef(props.options) || vue.isReactive(props.options) || is.isArray(props.options)) {
36
- vue.watch(
37
- () => props.options,
38
- (val) => {
39
- const value = vue.isRef(val) ? val.value : val;
40
- options.value = getOptionsByOptionsMap(value, props);
42
+ }
43
+ function handleOptions() {
44
+ if (!props.options) {
45
+ options.value = [];
46
+ optionsIsReady.value = true;
47
+ return;
48
+ }
49
+ if (vue.isRef(props.options) || vue.isReactive(props.options) || is.isArray(props.options)) {
50
+ vue.watch(
51
+ () => props.options,
52
+ (val) => {
53
+ const value = vue.isRef(val) ? val.value : val;
54
+ options.value = getOptionsByOptionsMap(value, props);
55
+ optionsIsReady.value = true;
56
+ },
57
+ {
58
+ immediate: true,
59
+ deep: true
60
+ }
61
+ );
62
+ } else if (is.isFunction(props.options)) {
63
+ const getValue = props.options;
64
+ const result = getValue(props);
65
+ if (is.isPromise(result)) {
66
+ result.then((value) => {
67
+ options.value = getOptionsByOptionsMap(value, props);
68
+ optionsIsReady.value = true;
69
+ throwError(options.value);
70
+ }).catch((err) => {
71
+ throw err;
72
+ });
73
+ } else {
74
+ options.value = getOptionsByOptionsMap(result, props);
41
75
  optionsIsReady.value = true;
42
- },
43
- {
44
- immediate: true,
45
- deep: true
46
76
  }
47
- );
48
- } else if (is.isFunction(props.options)) {
49
- const getValue = props.options;
50
- const result = getValue(props);
51
- if (is.isPromise(result)) {
52
- result.then((value) => {
77
+ } else if (is.isPromise(props.options)) {
78
+ const getValue = props.options;
79
+ getValue.then((value) => {
53
80
  options.value = getOptionsByOptionsMap(value, props);
54
81
  optionsIsReady.value = true;
55
82
  throwError(options.value);
@@ -57,21 +84,82 @@ const useGetOptions = (props) => {
57
84
  throw err;
58
85
  });
59
86
  } else {
60
- options.value = getOptionsByOptionsMap(result, props);
61
87
  optionsIsReady.value = true;
88
+ throwError(props.options);
62
89
  }
63
- } else if (is.isPromise(props.options)) {
64
- const getValue = props.options;
65
- getValue.then((value) => {
66
- options.value = getOptionsByOptionsMap(value, props);
90
+ }
91
+ function handleAutoDict() {
92
+ if (is.isFunction(props.autoDict)) {
93
+ const autoDictFn = props.autoDict;
94
+ vue.watch(
95
+ () => {
96
+ return autoDictFn(props);
97
+ },
98
+ (result) => {
99
+ if (is.isPromise(result)) {
100
+ result.then((value) => {
101
+ options.value = getOptionsByOptionsMap(value, props);
102
+ optionsIsReady.value = true;
103
+ }).catch((err) => {
104
+ console.error("[yc-components] autoDict function error:", err);
105
+ options.value = [];
106
+ optionsIsReady.value = true;
107
+ });
108
+ } else {
109
+ options.value = getOptionsByOptionsMap(result, props);
110
+ optionsIsReady.value = true;
111
+ }
112
+ },
113
+ { immediate: true }
114
+ );
115
+ } else if (typeof props.autoDict === "object" && props.autoDict !== null) {
116
+ const { store, method = "getDictData", transform, dictCode } = props.autoDict;
117
+ const dictStore = store || injectedDictStore;
118
+ const fieldOrCode = dictCode || props.prop;
119
+ if (dictStore && is.isFunction(dictStore[method])) {
120
+ vue.watch(
121
+ () => dictStore[method](fieldOrCode),
122
+ (val) => {
123
+ try {
124
+ const data = transform && is.isFunction(transform) ? transform(val) : val;
125
+ options.value = getOptionsByOptionsMap(data, props);
126
+ optionsIsReady.value = true;
127
+ } catch (err) {
128
+ console.error("[yc-components] autoDict transform error:", err);
129
+ options.value = [];
130
+ optionsIsReady.value = true;
131
+ }
132
+ },
133
+ { immediate: true }
134
+ );
135
+ } else {
136
+ console.warn(
137
+ `[yc-components] autoDict: DictStore or method "${method}" not found for field "${fieldOrCode}"`
138
+ );
139
+ options.value = [];
140
+ optionsIsReady.value = true;
141
+ }
142
+ } else if (props.autoDict === true) {
143
+ if (injectedDictStore && is.isFunction(injectedDictStore.getDictData)) {
144
+ vue.watch(
145
+ () => injectedDictStore.getDictData(props.prop),
146
+ (val) => {
147
+ options.value = getOptionsByOptionsMap(val, props);
148
+ optionsIsReady.value = true;
149
+ },
150
+ { immediate: true }
151
+ );
152
+ } else {
153
+ console.warn(
154
+ `[yc-components] autoDict: DictStore not provided via inject for field "${props.prop}". Please use useDictInjection() in parent component.`
155
+ );
156
+ options.value = [];
157
+ optionsIsReady.value = true;
158
+ }
159
+ } else {
160
+ options.value = [];
67
161
  optionsIsReady.value = true;
68
- throwError(options.value);
69
- }).catch((err) => {
70
- throw err;
71
- });
72
- } else {
73
- optionsIsReady.value = true;
74
- throwError(props.options);
162
+ }
75
163
  }
76
164
  return { customOptions: options, customOptionsIsReady: optionsIsReady };
77
165
  };
@@ -801,7 +801,7 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
801
801
  }>>;
802
802
  }> & {} & ComponentCustomProperties & {} & {
803
803
  $slots: Partial<Record<NonNullable<string | number>, (_: {
804
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
804
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
805
805
  readonly label: string | ComputedRef<string>;
806
806
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
807
807
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -830,7 +830,7 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
830
830
  };
831
831
  rows: number;
832
832
  autocomplete: string;
833
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
833
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
834
834
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
835
835
  step: string | number;
836
836
  format: string | ProgressFn | undefined;
@@ -857,6 +857,12 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
857
857
  label?: string | undefined;
858
858
  value?: string | undefined;
859
859
  } | undefined;
860
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
861
+ store?: any;
862
+ method?: string | undefined;
863
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
864
+ dictCode?: string | undefined;
865
+ } | undefined;
860
866
  readonly clearable: boolean;
861
867
  readonly index: number;
862
868
  } & {
@@ -894,6 +900,12 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
894
900
  label?: string | undefined;
895
901
  value?: string | undefined;
896
902
  } | undefined;
903
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
904
+ store?: any;
905
+ method?: string | undefined;
906
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
907
+ dictCode?: string | undefined;
908
+ } | undefined;
897
909
  clearable: boolean;
898
910
  index: number;
899
911
  }) => any>> & {
@@ -3202,7 +3214,7 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
3202
3214
  }>>;
3203
3215
  }> & {} & ComponentCustomProperties & {} & {
3204
3216
  $slots: Partial<Record<NonNullable<string | number>, (_: {
3205
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
3217
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
3206
3218
  readonly label: string | ComputedRef<string>;
3207
3219
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
3208
3220
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -3231,7 +3243,7 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
3231
3243
  };
3232
3244
  rows: number;
3233
3245
  autocomplete: string;
3234
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
3246
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
3235
3247
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
3236
3248
  step: string | number;
3237
3249
  format: string | ProgressFn | undefined;
@@ -3258,6 +3270,12 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
3258
3270
  label?: string | undefined;
3259
3271
  value?: string | undefined;
3260
3272
  } | undefined;
3273
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
3274
+ store?: any;
3275
+ method?: string | undefined;
3276
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
3277
+ dictCode?: string | undefined;
3278
+ } | undefined;
3261
3279
  readonly clearable: boolean;
3262
3280
  readonly index: number;
3263
3281
  } & {
@@ -3295,6 +3313,12 @@ export declare function usePlusFormReset(visible: Ref<boolean>, options?: FormRe
3295
3313
  label?: string | undefined;
3296
3314
  value?: string | undefined;
3297
3315
  } | undefined;
3316
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
3317
+ store?: any;
3318
+ method?: string | undefined;
3319
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
3320
+ dictCode?: string | undefined;
3321
+ } | undefined;
3298
3322
  clearable: boolean;
3299
3323
  index: number;
3300
3324
  }) => any>> & {
@@ -4065,7 +4089,7 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
4065
4089
  }>>;
4066
4090
  }> & {} & ComponentCustomProperties & {} & {
4067
4091
  $slots: Partial<Record<NonNullable<string | number>, (_: {
4068
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
4092
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
4069
4093
  readonly label: string | ComputedRef<string>;
4070
4094
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
4071
4095
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -4094,7 +4118,7 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
4094
4118
  };
4095
4119
  rows: number;
4096
4120
  autocomplete: string;
4097
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
4121
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
4098
4122
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
4099
4123
  step: string | number;
4100
4124
  format: string | ProgressFn | undefined;
@@ -4121,6 +4145,12 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
4121
4145
  label?: string | undefined;
4122
4146
  value?: string | undefined;
4123
4147
  } | undefined;
4148
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
4149
+ store?: any;
4150
+ method?: string | undefined;
4151
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
4152
+ dictCode?: string | undefined;
4153
+ } | undefined;
4124
4154
  readonly clearable: boolean;
4125
4155
  readonly index: number;
4126
4156
  } & {
@@ -4158,6 +4188,12 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
4158
4188
  label?: string | undefined;
4159
4189
  value?: string | undefined;
4160
4190
  } | undefined;
4191
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
4192
+ store?: any;
4193
+ method?: string | undefined;
4194
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
4195
+ dictCode?: string | undefined;
4196
+ } | undefined;
4161
4197
  clearable: boolean;
4162
4198
  index: number;
4163
4199
  }) => any>> & {
@@ -6466,7 +6502,7 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
6466
6502
  }>>;
6467
6503
  }> & {} & ComponentCustomProperties & {} & {
6468
6504
  $slots: Partial<Record<NonNullable<string | number>, (_: {
6469
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
6505
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
6470
6506
  readonly label: string | ComputedRef<string>;
6471
6507
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
6472
6508
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -6495,7 +6531,7 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
6495
6531
  };
6496
6532
  rows: number;
6497
6533
  autocomplete: string;
6498
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
6534
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
6499
6535
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
6500
6536
  step: string | number;
6501
6537
  format: string | ProgressFn | undefined;
@@ -6522,6 +6558,12 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
6522
6558
  label?: string | undefined;
6523
6559
  value?: string | undefined;
6524
6560
  } | undefined;
6561
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
6562
+ store?: any;
6563
+ method?: string | undefined;
6564
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
6565
+ dictCode?: string | undefined;
6566
+ } | undefined;
6525
6567
  readonly clearable: boolean;
6526
6568
  readonly index: number;
6527
6569
  } & {
@@ -6559,6 +6601,12 @@ export declare function usePlusFormClearValidate(visible: Ref<boolean>): {
6559
6601
  label?: string | undefined;
6560
6602
  value?: string | undefined;
6561
6603
  } | undefined;
6604
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
6605
+ store?: any;
6606
+ method?: string | undefined;
6607
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
6608
+ dictCode?: string | undefined;
6609
+ } | undefined;
6562
6610
  clearable: boolean;
6563
6611
  index: number;
6564
6612
  }) => any>> & {
@@ -7331,7 +7379,7 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
7331
7379
  }>>;
7332
7380
  }> & {} & ComponentCustomProperties & {} & {
7333
7381
  $slots: Partial<Record<NonNullable<string | number>, (_: {
7334
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
7382
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
7335
7383
  readonly label: string | ComputedRef<string>;
7336
7384
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
7337
7385
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -7360,7 +7408,7 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
7360
7408
  };
7361
7409
  rows: number;
7362
7410
  autocomplete: string;
7363
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
7411
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
7364
7412
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
7365
7413
  step: string | number;
7366
7414
  format: string | ProgressFn | undefined;
@@ -7387,6 +7435,12 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
7387
7435
  label?: string | undefined;
7388
7436
  value?: string | undefined;
7389
7437
  } | undefined;
7438
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
7439
+ store?: any;
7440
+ method?: string | undefined;
7441
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
7442
+ dictCode?: string | undefined;
7443
+ } | undefined;
7390
7444
  readonly clearable: boolean;
7391
7445
  readonly index: number;
7392
7446
  } & {
@@ -7424,6 +7478,12 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
7424
7478
  label?: string | undefined;
7425
7479
  value?: string | undefined;
7426
7480
  } | undefined;
7481
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
7482
+ store?: any;
7483
+ method?: string | undefined;
7484
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
7485
+ dictCode?: string | undefined;
7486
+ } | undefined;
7427
7487
  clearable: boolean;
7428
7488
  index: number;
7429
7489
  }) => any>> & {
@@ -9732,7 +9792,7 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
9732
9792
  }>>;
9733
9793
  }> & {} & ComponentCustomProperties & {} & {
9734
9794
  $slots: Partial<Record<NonNullable<string | number>, (_: {
9735
- column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
9795
+ column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "index" | "label" | "tooltip" | "formItemProps" | "fieldProps" | "options" | "modelValue" | "fieldSlots" | "fieldChildrenSlot" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap" | "autoDict">> & {
9736
9796
  readonly label: string | ComputedRef<string>;
9737
9797
  readonly modelValue: string | number | boolean | string[] | [string, string] | number[] | Date | RecordType | boolean[] | Date[] | [Date, Date] | [number, number] | string[][] | number[][] | null;
9738
9798
  readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
@@ -9761,7 +9821,7 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
9761
9821
  };
9762
9822
  rows: number;
9763
9823
  autocomplete: string;
9764
- type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "datetimerange" | "daterange" | "monthrange" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
9824
+ type: "" | "number" | "default" | "search" | "button" | "textarea" | "time" | "circle" | "image" | "line" | "text" | "datetimerange" | "daterange" | "monthrange" | "checkbox" | "radio" | "color" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "hidden" | "range" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "dashboard" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
9765
9825
  loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
9766
9826
  step: string | number;
9767
9827
  format: string | ProgressFn | undefined;
@@ -9788,6 +9848,12 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
9788
9848
  label?: string | undefined;
9789
9849
  value?: string | undefined;
9790
9850
  } | undefined;
9851
+ readonly autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
9852
+ store?: any;
9853
+ method?: string | undefined;
9854
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
9855
+ dictCode?: string | undefined;
9856
+ } | undefined;
9791
9857
  readonly clearable: boolean;
9792
9858
  readonly index: number;
9793
9859
  } & {
@@ -9825,6 +9891,12 @@ export declare function usePlusFormFullReset(visible: Ref<boolean>, onReset?: ()
9825
9891
  label?: string | undefined;
9826
9892
  value?: string | undefined;
9827
9893
  } | undefined;
9894
+ autoDict: boolean | ((column: PlusColumn) => OptionsRow<undefined>[] | Promise< OptionsRow<undefined>[]>) | {
9895
+ store?: any;
9896
+ method?: string | undefined;
9897
+ transform?: ((data: any) => OptionsRow<undefined>[]) | undefined;
9898
+ dictCode?: string | undefined;
9899
+ } | undefined;
9828
9900
  clearable: boolean;
9829
9901
  index: number;
9830
9902
  }) => any>> & {
package/lib/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { App } from 'vue';
2
2
  import { default as installer } from './defaults';
3
3
 
4
4
  export * from 'yc-pro-components/es/components';
5
- export { useGetOptions, useLocale, useTable, useSelectWithMapping, usePlusProConfig, providePlusProConfig, useDialogFormConfig, useDrawerFormConfig, useSortableDrag, usePlusFormReset, useSelectWithPagination, type UseSelectWithMappingConfig, type UseSelectWithMappingReturn, type MappedOption, type TransformConfig, type ApiResponseLike, type UseSelectWithPaginationConfig, type UseSelectWithPaginationReturn, type PlusProFormConfig, type PlusProGlobalConfig } from 'yc-pro-components/es/hooks';
5
+ export { useGetOptions, useLocale, useTable, useSelectWithMapping, usePlusProConfig, providePlusProConfig, useDialogFormConfig, useDrawerFormConfig, useSortableDrag, usePlusFormReset, useSelectWithPagination, useDictInjection, type UseSelectWithMappingConfig, type UseSelectWithMappingReturn, type MappedOption, type TransformConfig, type ApiResponseLike, type UseSelectWithPaginationConfig, type UseSelectWithPaginationReturn, type PlusProFormConfig, type PlusProGlobalConfig } from 'yc-pro-components/es/hooks';
6
6
  export * from 'yc-pro-components/es/types';
7
7
  export * from 'yc-pro-components/es/constants';
8
8
  export { version } from './version';
package/lib/index.js CHANGED
@@ -11,9 +11,11 @@ var usePlusProConfig = require('./hooks/usePlusProConfig.js');
11
11
  var useSortableDrag = require('./hooks/useSortableDrag.js');
12
12
  var usePlusFormReset = require('./hooks/usePlusFormReset.js');
13
13
  var useSelectWithPagination = require('./hooks/useSelectWithPagination.js');
14
+ var useDictInjection = require('./hooks/useDictInjection.js');
14
15
  var page = require('./constants/page.js');
15
16
  var form = require('./constants/form.js');
16
17
  var displayItem = require('./constants/display-item.js');
18
+ var dict = require('./constants/dict.js');
17
19
  var version = require('./version.js');
18
20
  var index = require('./components/dialog/index.js');
19
21
  var index$1 = require('./components/pagination/index.js');
@@ -91,6 +93,7 @@ exports.usePlusProConfig = usePlusProConfig.usePlusProConfig;
91
93
  exports.useSortableDrag = useSortableDrag.useSortableDrag;
92
94
  exports.usePlusFormReset = usePlusFormReset.usePlusFormReset;
93
95
  exports.useSelectWithPagination = useSelectWithPagination.useSelectWithPagination;
96
+ exports.useDictInjection = useDictInjection.useDictInjection;
94
97
  exports.DefaultPageInfo = page.DefaultPageInfo;
95
98
  exports.DefaultPageSizeList = page.DefaultPageSizeList;
96
99
  exports.DatePickerValueIsArrayList = form.DatePickerValueIsArrayList;
@@ -101,6 +104,7 @@ exports.ValueIsArrayList = form.ValueIsArrayList;
101
104
  exports.ValueIsBooleanList = form.ValueIsBooleanList;
102
105
  exports.ValueIsNumberList = form.ValueIsNumberList;
103
106
  exports.selectValueTypeList = displayItem.selectValueTypeList;
107
+ exports.DictStoreInjectionKey = dict.DictStoreInjectionKey;
104
108
  exports.version = version.version;
105
109
  exports.PlusDialog = index.PlusDialog;
106
110
  exports.PlusPagination = index$1.PlusPagination;
@@ -272,6 +272,80 @@ export interface CommonType {
272
272
  * 多级表头
273
273
  */
274
274
  children?: PlusColumn[];
275
+ /**
276
+ * 自动字典注入
277
+ * @version v0.2.0
278
+ * @desc 当 valueType 为 `select`|`radio`|`checkbox` 时,可以自动从字典 Store 获取 options
279
+ * @desc 优先级:options > autoDict > 默认空数组
280
+ * @example
281
+ * ```ts
282
+ * import type { PlusColumn } from 'yc-components'
283
+ *
284
+ * // 方式1:布尔值 - 自动从 inject 的 DictStore 获取
285
+ * const columns: PlusColumn[] = [
286
+ * {
287
+ * label: '状态',
288
+ * prop: 'status',
289
+ * valueType: 'select',
290
+ * autoDict: true // 自动调用 dictStore.getDictData('status')
291
+ * }
292
+ * ]
293
+ *
294
+ * // 方式2:函数 - 自定义获取逻辑
295
+ * const columns: PlusColumn[] = [
296
+ * {
297
+ * label: '状态',
298
+ * prop: 'status',
299
+ * valueType: 'select',
300
+ * autoDict: (column) => {
301
+ * // 自定义逻辑
302
+ * return customDictStore.getData(column.prop)
303
+ * }
304
+ * }
305
+ * ]
306
+ *
307
+ * // 方式3:对象配置 - 指定 Store 和方法
308
+ * const columns: PlusColumn[] = [
309
+ * {
310
+ * label: '类型',
311
+ * prop: 'type',
312
+ * valueType: 'select',
313
+ * autoDict: {
314
+ * store: specificDictStore,
315
+ * method: 'getTypeDict',
316
+ * transform: (data) => data.map(item => ({
317
+ * label: item.name,
318
+ * value: item.id
319
+ * }))
320
+ * }
321
+ * }
322
+ * ]
323
+ * ```
324
+ */
325
+ autoDict?: boolean | ((column: PlusColumn) => OptionsRow[] | Promise<OptionsRow[]>) | {
326
+ /**
327
+ * 字典 Store 实例
328
+ * @desc 如果不提供,会尝试从 inject 获取
329
+ */
330
+ store?: any;
331
+ /**
332
+ * 获取字典的方法名
333
+ * @default 'getDictData'
334
+ */
335
+ method?: string;
336
+ /**
337
+ * 转换函数
338
+ * @desc 将字典数据转换为 OptionsRow[] 格式
339
+ */
340
+ transform?: (data: any) => OptionsRow[];
341
+ /**
342
+ * 字典 code 或字段名
343
+ * @desc 指定要获取的字典 code,如果不提供则使用 props.prop
344
+ * @example dictCode: "OFFSET_AUDIT_STATUS"
345
+ * @version v0.2.0
346
+ */
347
+ dictCode?: string;
348
+ };
275
349
  }
276
350
  /**
277
351
  * 表格,表单,详情,搜索公共的类型
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "0.1.30";
1
+ export declare const version = "0.0.13";