cnhis-design-vue 3.1.24-beta.0 → 3.1.24-beta.2

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 (24) hide show
  1. package/es/components/annotation-edit/src/AnnotationEdit.js +4 -1
  2. package/es/components/big-table/src/components/edit-form/edit-input.js +7 -11
  3. package/es/components/form-config/index.d.ts +1 -0
  4. package/es/components/form-config/src/FormConfig.vue.d.ts +1 -0
  5. package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +1 -0
  6. package/es/components/form-render/index.js +1 -1
  7. package/es/components/form-render/src/FormRender.js +14 -1
  8. package/es/components/form-render/src/components/renderer/formItem.js +10 -2
  9. package/es/components/form-render/src/components/renderer/search.js +1 -0
  10. package/es/components/form-render/src/components/renderer/searchCascade.js +1 -0
  11. package/es/components/form-render/src/components/renderer/select.js +1 -0
  12. package/es/components/form-render/src/hooks/index.js +1 -1
  13. package/es/components/form-render/src/hooks/useFieldListAdaptor.js +7 -3
  14. package/es/components/form-render/src/hooks/useFormValidator.d.ts +1 -0
  15. package/es/components/form-render/src/hooks/useFormValidator.js +17 -3
  16. package/es/components/form-render/src/types/fieldItem.d.ts +4 -0
  17. package/es/components/form-render/src/utils/index.d.ts +1 -0
  18. package/es/components/form-render/src/utils/index.js +10 -1
  19. package/es/components/index.js +1 -1
  20. package/es/components/shortcut-setter/index.d.ts +1 -0
  21. package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +1 -0
  22. package/es/shared/utils/index.d.ts +1 -0
  23. package/es/shared/utils/index.js +19 -2
  24. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, ref, createVNode, unref } from 'vue';
1
+ import { defineComponent, computed, ref, onDeactivated, createVNode, unref } from 'vue';
2
2
  import { FileTrayFull, FileTray } from '@vicons/ionicons5';
3
3
  import { NPopover, NIcon, NInput } from 'naive-ui';
4
4
 
@@ -113,6 +113,9 @@ var script = defineComponent({
113
113
  }, null)]);
114
114
  }
115
115
  }
116
+ onDeactivated(() => {
117
+ showPopper.value = false;
118
+ });
116
119
  return renderAnnotation;
117
120
  }
118
121
  });
@@ -50,13 +50,16 @@ var EditInput = defineComponent({
50
50
  function onBlur() {
51
51
  emit("formChange", {
52
52
  value: __value.value,
53
- ...commData
53
+ ...commData,
54
+ type: "blur"
54
55
  });
55
56
  }
56
57
  const config = {
57
58
  clearable: true,
58
59
  placeholder: props.col.placeholder || "\u8BF7\u8F93\u5165",
59
- ...props.col.componentProps || {}
60
+ ...props.col.componentProps || {},
61
+ onBlur,
62
+ onKeyup: keyup
60
63
  };
61
64
  function keyup(event) {
62
65
  if (event.key == "Enter") {
@@ -70,20 +73,13 @@ var EditInput = defineComponent({
70
73
  "ref": formRef
71
74
  }, attrs, config, {
72
75
  "value": __value.value,
73
- "onUpdate:value": ($event) => __value.value = $event,
74
- "onBlur": onBlur,
75
- "onKeyup": keyup
76
+ "onUpdate:value": ($event) => __value.value = $event
76
77
  }), null) : createVNode(NInputNumber, mergeProps({
77
78
  "ref": formRef
78
79
  }, attrs, config, {
79
80
  "value": __value.value,
80
81
  "onUpdate:value": ($event) => __value.value = $event,
81
- "onUpdateValue": onUpdateValue,
82
- "onBlur": () => emit("formChange", {
83
- value: __value.value,
84
- ...commData,
85
- type: "blur"
86
- })
82
+ "onUpdateValue": onUpdateValue
87
83
  }), null);
88
84
  }
89
85
  });
@@ -970,6 +970,7 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
970
970
  } | undefined;
971
971
  suffixConfig?: any | any[] | undefined;
972
972
  autograph?: string | undefined;
973
+ defined_error_msg?: string | undefined;
973
974
  fieldType?: import("@formily/json-schema").SchemaTypes | undefined;
974
975
  content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
975
976
  lazyRequest?: boolean | undefined;
@@ -972,6 +972,7 @@ declare const _default: import("vue").DefineComponent<{
972
972
  } | undefined;
973
973
  suffixConfig?: any | any[] | undefined;
974
974
  autograph?: string | undefined;
975
+ defined_error_msg?: string | undefined;
975
976
  fieldType?: import("@formily/json-schema").SchemaTypes | undefined;
976
977
  content?: string | import("../..").FormRenderer | Record<string, import("../..").FormRenderer> | undefined;
977
978
  lazyRequest?: boolean | undefined;
@@ -101,6 +101,7 @@ declare const _default: import("vue").DefineComponent<{}, {
101
101
  } | undefined;
102
102
  suffixConfig?: any | any[] | undefined;
103
103
  autograph?: string | undefined;
104
+ defined_error_msg?: string | undefined;
104
105
  fieldType?: import("@formily/json-schema").SchemaTypes | undefined;
105
106
  content?: string | import("../../../../../es/components/form-render").FormRenderer | Record<string, import("../../../../../es/components/form-render").FormRenderer> | undefined;
106
107
  lazyRequest?: boolean | undefined;
@@ -8,7 +8,7 @@ export { useFormField } from './src/hooks/useFormField.js';
8
8
  export { AsyncQueue, useAsyncQueue } from './src/hooks/useAsyncQueue.js';
9
9
  export { useFieldVisitor } from './src/hooks/useFieldVisitor.js';
10
10
  export { useFieldNormalize } from './src/hooks/useFieldNormalize.js';
11
- export { useFormValidator } from './src/hooks/useFormValidator.js';
11
+ export { useFormValidator, validateMessageLocale } from './src/hooks/useFormValidator.js';
12
12
  export { BusinessCollector, useBusinessBinding } from './src/hooks/useBusinessBinding.js';
13
13
  export { ContextCollector, useChangeContext } from './src/hooks/useChangeContext.js';
14
14
  export { FormItemDepsCollector, useFormItemDeps } from './src/hooks/useFormItemDeps.js';
@@ -22,6 +22,7 @@ import '../../../shared/utils/tapable/AsyncSeriesHook.js';
22
22
  import '../../../shared/utils/tapable/AsyncSeriesBailHook.js';
23
23
  import '../../../shared/utils/tapable/AsyncSeriesLoopHook.js';
24
24
  import '../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js';
25
+ import { validateMessageLocale } from './hooks/useFormValidator.js';
25
26
  import '@vueuse/core';
26
27
  import { useAnchor } from './hooks/useAnchor.js';
27
28
  import { useFormContext } from './hooks/useFormContext.js';
@@ -62,6 +63,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
62
63
  setup(__props, { expose, emit }) {
63
64
  const props = __props;
64
65
  const { nuiThemeOverrides } = useNuiThemeOverrides();
66
+ validateMessageLocale();
65
67
  useFormRenderLifeCycle(props).callLifeCycle("onSetup");
66
68
  const formModel = createForm({
67
69
  initialValues: props.initialData,
@@ -151,7 +153,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
151
153
  return formModel.getFormState().values;
152
154
  },
153
155
  setFieldState(path, handler) {
154
- formModel.setFieldState(path, handler);
156
+ formModel.setFieldState(path, (state) => {
157
+ handler(
158
+ new Proxy(state, {
159
+ get(target, key, receiver) {
160
+ return Reflect.get(target, key, receiver);
161
+ },
162
+ set(target, key, value, receiver) {
163
+ return Reflect.set(target, key, value, receiver);
164
+ }
165
+ })
166
+ );
167
+ });
155
168
  },
156
169
  resetFields(path = "*") {
157
170
  formModel.reset(path);
@@ -1,10 +1,11 @@
1
1
  import { defineComponent, inject, computed, createVNode } from 'vue';
2
2
  import { isVoidField } from '@formily/core';
3
3
  import { useField, connect, mapProps } from '@formily/vue';
4
+ import { isString } from 'lodash-es';
4
5
  import { NFormItem } from 'naive-ui';
5
6
  import Annotation from '../../../../annotation-edit/index.js';
6
7
  import { InjectionAnnotation, InjectionFormUUID } from '../../constants/index.js';
7
- import '../../utils/index.js';
8
+ import { validateMessageParser } from '../../utils/index.js';
8
9
  import { dotEscape } from '../../utils/schema.js';
9
10
 
10
11
  const script = defineComponent({
@@ -65,9 +66,10 @@ const script = defineComponent({
65
66
  const FORM_ITEM = connect(script, mapProps({
66
67
  title: "label"
67
68
  }, (props, field) => {
68
- const feedback = !isVoidField(field) ? field.selfErrors.length ? field.selfErrors.join(",") : void 0 : void 0;
69
+ const feedback = !isVoidField(field) ? field.selfErrors.length ? parseFeedback(field.selfErrors, props.fieldItem) : void 0 : void 0;
69
70
  return {
70
71
  ...props,
72
+ fieldItem: void 0,
71
73
  required: isVoidField(field) ? void 0 : field.required,
72
74
  class: "form-render__formItem",
73
75
  style: {
@@ -77,5 +79,11 @@ const FORM_ITEM = connect(script, mapProps({
77
79
  "validation-status": feedback ? "error" : void 0
78
80
  };
79
81
  }));
82
+ function parseFeedback(selfErrors, fieldItem) {
83
+ if (!isString(fieldItem.defined_error_msg) || !fieldItem.defined_error_msg) {
84
+ return selfErrors.map((message) => validateMessageParser(message, fieldItem)).join(",");
85
+ }
86
+ return validateMessageParser(fieldItem.defined_error_msg, fieldItem);
87
+ }
80
88
 
81
89
  export { FORM_ITEM };
@@ -18,6 +18,7 @@ import '../../../../../shared/utils/tapable/AsyncSeriesHook.js';
18
18
  import '../../../../../shared/utils/tapable/AsyncSeriesBailHook.js';
19
19
  import '../../../../../shared/utils/tapable/AsyncSeriesLoopHook.js';
20
20
  import '../../../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js';
21
+ import '../../hooks/useFormValidator.js';
21
22
  import '@formily/core';
22
23
  import '@vue/shared';
23
24
  import { connect, mapProps } from '@formily/vue';
@@ -18,6 +18,7 @@ import '../../../../../shared/utils/tapable/AsyncSeriesHook.js';
18
18
  import '../../../../../shared/utils/tapable/AsyncSeriesBailHook.js';
19
19
  import '../../../../../shared/utils/tapable/AsyncSeriesLoopHook.js';
20
20
  import '../../../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js';
21
+ import '../../hooks/useFormValidator.js';
21
22
  import '@vue/shared';
22
23
  import { connect, mapProps } from '@formily/vue';
23
24
  import './input.js';
@@ -18,6 +18,7 @@ import '../../../../../shared/utils/tapable/AsyncSeriesHook.js';
18
18
  import '../../../../../shared/utils/tapable/AsyncSeriesBailHook.js';
19
19
  import '../../../../../shared/utils/tapable/AsyncSeriesLoopHook.js';
20
20
  import '../../../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js';
21
+ import '../../hooks/useFormValidator.js';
21
22
  import '@vue/shared';
22
23
  import { connect, mapProps } from '@formily/vue';
23
24
  import './input.js';
@@ -5,7 +5,7 @@ export { useFormField } from './useFormField.js';
5
5
  export { AsyncQueue, useAsyncQueue } from './useAsyncQueue.js';
6
6
  export { useFieldVisitor } from './useFieldVisitor.js';
7
7
  export { useFieldNormalize } from './useFieldNormalize.js';
8
- export { useFormValidator } from './useFormValidator.js';
8
+ export { useFormValidator, validateMessageLocale } from './useFormValidator.js';
9
9
  export { BusinessCollector, useBusinessBinding } from './useBusinessBinding.js';
10
10
  export { ContextCollector, useChangeContext } from './useChangeContext.js';
11
11
  export { FormItemDepsCollector, useFormItemDeps } from './useFormItemDeps.js';
@@ -1,6 +1,6 @@
1
- import { arrayed } from '../../../../shared/utils/index.js';
1
+ import { arrayed, deepOmit } from '../../../../shared/utils/index.js';
2
2
  import { isObject } from '@vueuse/core';
3
- import { cloneDeep, omit, pick } from 'lodash-es';
3
+ import { cloneDeep, pick } from 'lodash-es';
4
4
  import '../../index.js';
5
5
  import { parseNumberFromMaybeString, formRenderLog } from '../utils/index.js';
6
6
  import { useFieldNormalize } from './useFieldNormalize.js';
@@ -35,9 +35,13 @@ function useFieldListAdaptor(collector) {
35
35
  result["x-reactions"] = item.reactions;
36
36
  }
37
37
  if (!item.noDecorator) {
38
+ if (JSON.stringify(item).includes("$deps")) {
39
+ console.log(item);
40
+ }
38
41
  Object.assign(result, {
39
42
  "x-decorator": "FORM_ITEM",
40
43
  "x-decorator-props": {
44
+ fieldItem: deepOmit(item, ["reactions"]),
41
45
  span: item.elem_width,
42
46
  showLabel: item.hide_title !== "1",
43
47
  propertyKey: item.val_key,
@@ -171,7 +175,7 @@ function useFieldListAdaptor(collector) {
171
175
  const createCustomSchema = (item) => {
172
176
  const schema = createStandardSchema(item);
173
177
  Object.assign(schema["x-component-props"], {
174
- fieldItem: omit(item, ["reactions"])
178
+ fieldItem: deepOmit(item, ["reactions"])
175
179
  });
176
180
  return schema;
177
181
  };
@@ -3,3 +3,4 @@ import { FieldItem } from '../types';
3
3
  export declare function useFormValidator(): {
4
4
  createValidatorSchema: (fieldItem: FieldItem) => AnyObject[];
5
5
  };
6
+ export declare const validateMessageLocale: () => void;
@@ -1,7 +1,8 @@
1
1
  import { arrayed } from '../../../../shared/utils/index.js';
2
- import { isString } from 'lodash-es';
2
+ import { once, isString } from 'lodash-es';
3
3
  import '../utils/index.js';
4
4
  import { isFunction } from '@vueuse/core';
5
+ import { registerValidateLocale } from '@formily/core';
5
6
  import { isIdCard } from '../utils/business.js';
6
7
 
7
8
  function useFormValidator() {
@@ -42,7 +43,11 @@ function useFormValidator() {
42
43
  };
43
44
  function createValidatorSchema(fieldItem) {
44
45
  const rules = [];
45
- const { validate: { vali_obj, max_length, message, max_value, min_value, decimal_length } = {}, validator } = fieldItem;
46
+ const {
47
+ defined_error_msg,
48
+ validate: { vali_obj, max_length, min_length, message, max_value, min_value, decimal_length } = {},
49
+ validator
50
+ } = fieldItem;
46
51
  if (validator) {
47
52
  arrayed(validator).forEach((f) => {
48
53
  if (!isFunction(f))
@@ -52,6 +57,8 @@ function useFormValidator() {
52
57
  }
53
58
  if (max_length)
54
59
  rules.push({ max: max_length, message });
60
+ if (min_length)
61
+ rules.push({ min: min_length, message });
55
62
  if (max_value)
56
63
  rules.push({ maximum: max_value, message });
57
64
  if (min_value)
@@ -66,5 +73,12 @@ function useFormValidator() {
66
73
  }
67
74
  return { createValidatorSchema };
68
75
  }
76
+ const validateMessageLocale = once(() => {
77
+ registerValidateLocale({
78
+ "zh-CN": {
79
+ required: "${alias}\u4E3A\u5FC5\u586B"
80
+ }
81
+ });
82
+ });
69
83
 
70
- export { useFormValidator };
84
+ export { useFormValidator, validateMessageLocale };
@@ -177,6 +177,10 @@ export declare type FieldItem = {
177
177
  * 数据源签名
178
178
  */
179
179
  autograph: string;
180
+ /**
181
+ * 合并错误信息
182
+ */
183
+ defined_error_msg: string;
180
184
  /**
181
185
  * 数据类型
182
186
  */
@@ -16,3 +16,4 @@ export declare function presetRequestHandler(res: unknown): any;
16
16
  export declare function optionMatcher(options: AnyObject[], input: Nullable<string>, key: string, matcherOption?: {
17
17
  keyword?: string;
18
18
  }): AnyObject[];
19
+ export declare function validateMessageParser(message: string, fieldItem: Omit<FieldItem, 'reactions'>): string;
@@ -124,5 +124,14 @@ function optionMatcher(options, input, key, matcherOption = {
124
124
  return option[key];
125
125
  }
126
126
  }
127
+ function validateMessageParser(message, fieldItem) {
128
+ if (!isString(message) || !message)
129
+ return "";
130
+ return message.replace(/\$\{([^}]*)}/g, replacer);
131
+ function replacer(_, property) {
132
+ var _a;
133
+ return (_a = fieldItem[property.trim()]) != null ? _a : "";
134
+ }
135
+ }
127
136
 
128
- export { createInputSlot, createSlot, formRenderLog, injectOrProvide, mergeDeepProperties, optionMatcher, parseNumberFromMaybeString, presetRequestHandler };
137
+ export { createInputSlot, createSlot, formRenderLog, injectOrProvide, mergeDeepProperties, optionMatcher, parseNumberFromMaybeString, presetRequestHandler, validateMessageParser };
@@ -47,7 +47,7 @@ export { useFormField } from './form-render/src/hooks/useFormField.js';
47
47
  export { AsyncQueue, useAsyncQueue } from './form-render/src/hooks/useAsyncQueue.js';
48
48
  export { useFieldVisitor } from './form-render/src/hooks/useFieldVisitor.js';
49
49
  export { useFieldNormalize } from './form-render/src/hooks/useFieldNormalize.js';
50
- export { useFormValidator } from './form-render/src/hooks/useFormValidator.js';
50
+ export { useFormValidator, validateMessageLocale } from './form-render/src/hooks/useFormValidator.js';
51
51
  export { BusinessCollector, useBusinessBinding } from './form-render/src/hooks/useBusinessBinding.js';
52
52
  export { ContextCollector, useChangeContext } from './form-render/src/hooks/useChangeContext.js';
53
53
  export { FormItemDepsCollector, useFormItemDeps } from './form-render/src/hooks/useFormItemDeps.js';
@@ -132,6 +132,7 @@ declare const ShortcutSetter: SFCWithInstall<import("vue").DefineComponent<{
132
132
  } | undefined;
133
133
  suffixConfig?: any | any[] | undefined;
134
134
  autograph?: string | undefined;
135
+ defined_error_msg?: string | undefined;
135
136
  fieldType?: import("@formily/json-schema").SchemaTypes | undefined;
136
137
  content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
137
138
  lazyRequest?: boolean | undefined;
@@ -134,6 +134,7 @@ declare const _default: import("vue").DefineComponent<{
134
134
  } | undefined;
135
135
  suffixConfig?: any | any[] | undefined;
136
136
  autograph?: string | undefined;
137
+ defined_error_msg?: string | undefined;
137
138
  fieldType?: import("@formily/json-schema").SchemaTypes | undefined;
138
139
  content?: string | import("../../../../es/components/form-render").FormRenderer | Record<string, import("../../../../es/components/form-render").FormRenderer> | undefined;
139
140
  lazyRequest?: boolean | undefined;
@@ -7,3 +7,4 @@ export declare function arrayed<T>(maybeArray: T): T extends Array<any> ? T : [T
7
7
  export declare function uuidGenerator(): string;
8
8
  export declare const getStringWidth: import("@vueuse/core").UseMemoizedFn<number, [str: string]>;
9
9
  export declare const DMZ: AnyObject;
10
+ export declare function deepOmit<T extends AnyObject>(target: T, keys: Array<keyof T>): AnyObject;
@@ -1,5 +1,5 @@
1
1
  import { useMemoize } from '@vueuse/core';
2
- import { isArray, isString } from 'lodash-es';
2
+ import { isArray, isString, isObject } from 'lodash-es';
3
3
 
4
4
  function traverse(target, handler, keys = "children", parent) {
5
5
  function stop() {
@@ -94,5 +94,22 @@ const getStringWidth = /* @__PURE__ */ useMemoize(function(str) {
94
94
  }, 0);
95
95
  });
96
96
  const DMZ = Object.seal(/* @__PURE__ */ Object.create(null));
97
+ function deepOmit(target, keys) {
98
+ function search(obj, keys2) {
99
+ return Object.entries(obj).reduce((result, [k, v]) => {
100
+ if (keys2.includes(k))
101
+ return result;
102
+ if (isArray(v)) {
103
+ result[k] = v.map((child) => search(child, keys2));
104
+ } else if (isObject(v)) {
105
+ result[k] = search(v, keys2);
106
+ } else {
107
+ result[k] = v;
108
+ }
109
+ return result;
110
+ }, {});
111
+ }
112
+ return search(target, keys);
113
+ }
97
114
 
98
- export { DMZ, arrayed, generateTimeFormat, getStringWidth, safeComponentRegister, traverse, uuidGenerator };
115
+ export { DMZ, arrayed, deepOmit, generateTimeFormat, getStringWidth, safeComponentRegister, traverse, uuidGenerator };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "3.1.24-beta.0",
3
+ "version": "3.1.24-beta.2",
4
4
  "license": "ISC",
5
5
  "module": "./es/components/index.js",
6
6
  "main": "./es/components/index.js",
@@ -66,5 +66,5 @@
66
66
  "iOS 7",
67
67
  "last 3 iOS versions"
68
68
  ],
69
- "gitHead": "d05d6e707ee1105622da5bac1373cf6d57e2513a"
69
+ "gitHead": "735a7705ad62257a2127123ad583c4edf048d350"
70
70
  }