@carefrees/form-utils-vue 0.0.8

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 (168) hide show
  1. package/README.md +3 -0
  2. package/assets/index.css +207 -0
  3. package/esm/component.d.ts +3 -0
  4. package/esm/component.mjs +12 -0
  5. package/esm/form/index.d.ts +37 -0
  6. package/esm/form/index.mjs +6 -0
  7. package/esm/form/index.vue.d.ts +19 -0
  8. package/esm/form/index.vue.mjs +110 -0
  9. package/esm/form/index.vue2.mjs +4 -0
  10. package/esm/formItem/form.Item.base.vue.d.ts +16 -0
  11. package/esm/formItem/form.Item.base.vue.mjs +114 -0
  12. package/esm/formItem/form.Item.base.vue2.mjs +4 -0
  13. package/esm/formItem/form.hide.item.vue.d.ts +16 -0
  14. package/esm/formItem/form.hide.item.vue.mjs +78 -0
  15. package/esm/formItem/form.hide.item.vue2.mjs +4 -0
  16. package/esm/formItem/formItem.vue.d.ts +18 -0
  17. package/esm/formItem/formItem.vue.mjs +102 -0
  18. package/esm/formItem/formItem.vue2.mjs +4 -0
  19. package/esm/formItem/index.d.ts +71 -0
  20. package/esm/formItem/index.mjs +12 -0
  21. package/esm/hooks/attr/attr.FormItem.d.ts +876 -0
  22. package/esm/hooks/attr/attr.FormItem.mjs +120 -0
  23. package/esm/hooks/index.d.ts +13 -0
  24. package/esm/hooks/register/register.FormHideItem.d.ts +9 -0
  25. package/esm/hooks/register/register.FormHideItem.mjs +38 -0
  26. package/esm/hooks/register/register.FormItem.d.ts +802 -0
  27. package/esm/hooks/register/register.FormItem.mjs +55 -0
  28. package/esm/hooks/register/register.FormList.d.ts +789 -0
  29. package/esm/hooks/register/register.FormList.mjs +43 -0
  30. package/esm/hooks/register/register.form.d.ts +3 -0
  31. package/esm/hooks/register/register.form.mjs +12 -0
  32. package/esm/hooks/useAttrs.d.ts +24 -0
  33. package/esm/hooks/useAttrs.mjs +45 -0
  34. package/esm/hooks/useEffect.d.ts +2 -0
  35. package/esm/hooks/useEffect.mjs +14 -0
  36. package/esm/hooks/useForm.d.ts +8 -0
  37. package/esm/hooks/useForm.mjs +26 -0
  38. package/esm/hooks/useFormItem.d.ts +7 -0
  39. package/esm/hooks/useFormItem.mjs +26 -0
  40. package/esm/hooks/useFormItemParentName.d.ts +18 -0
  41. package/esm/hooks/useFormItemParentName.mjs +37 -0
  42. package/esm/hooks/useFormList.d.ts +7 -0
  43. package/esm/hooks/useFormList.mjs +26 -0
  44. package/esm/hooks/useHtmlFor.d.ts +2 -0
  45. package/esm/hooks/useHtmlFor.mjs +11 -0
  46. package/esm/hooks/useMultipleForm.d.ts +7 -0
  47. package/esm/hooks/useMultipleForm.mjs +27 -0
  48. package/esm/index.d.ts +11 -0
  49. package/esm/index.mjs +59 -0
  50. package/esm/instance/ruleIntsnace.d.ts +49 -0
  51. package/esm/instance/ruleIntsnace.mjs +73 -0
  52. package/esm/interface/index.d.ts +36 -0
  53. package/esm/interface/layout.d.ts +28 -0
  54. package/esm/interface/layout.formItem.d.ts +39 -0
  55. package/esm/layout/index.d.ts +65 -0
  56. package/esm/layout/index.mjs +12 -0
  57. package/esm/layout/layout.form.rows.vue.d.ts +10 -0
  58. package/esm/layout/layout.form.rows.vue.mjs +31 -0
  59. package/esm/layout/layout.form.rows.vue2.mjs +4 -0
  60. package/esm/layout/layout.formItem.vue.d.ts +18 -0
  61. package/esm/layout/layout.formItem.vue.mjs +216 -0
  62. package/esm/layout/layout.formItem.vue2.mjs +4 -0
  63. package/esm/layout/layout.vue.d.ts +16 -0
  64. package/esm/layout/layout.vue.mjs +166 -0
  65. package/esm/layout/layout.vue2.mjs +4 -0
  66. package/esm/utils/index.d.ts +1 -0
  67. package/esm/utils/withInstall.d.ts +3 -0
  68. package/esm/utils/withInstall.mjs +22 -0
  69. package/lib/component.d.ts +3 -0
  70. package/lib/component.js +12 -0
  71. package/lib/form/index.d.ts +37 -0
  72. package/lib/form/index.js +6 -0
  73. package/lib/form/index.vue.d.ts +19 -0
  74. package/lib/form/index.vue.js +110 -0
  75. package/lib/form/index.vue2.js +4 -0
  76. package/lib/formItem/form.Item.base.vue.d.ts +16 -0
  77. package/lib/formItem/form.Item.base.vue.js +114 -0
  78. package/lib/formItem/form.Item.base.vue2.js +4 -0
  79. package/lib/formItem/form.hide.item.vue.d.ts +16 -0
  80. package/lib/formItem/form.hide.item.vue.js +78 -0
  81. package/lib/formItem/form.hide.item.vue2.js +4 -0
  82. package/lib/formItem/formItem.vue.d.ts +18 -0
  83. package/lib/formItem/formItem.vue.js +102 -0
  84. package/lib/formItem/formItem.vue2.js +4 -0
  85. package/lib/formItem/index.d.ts +71 -0
  86. package/lib/formItem/index.js +12 -0
  87. package/lib/hooks/attr/attr.FormItem.d.ts +876 -0
  88. package/lib/hooks/attr/attr.FormItem.js +120 -0
  89. package/lib/hooks/index.d.ts +13 -0
  90. package/lib/hooks/register/register.FormHideItem.d.ts +9 -0
  91. package/lib/hooks/register/register.FormHideItem.js +38 -0
  92. package/lib/hooks/register/register.FormItem.d.ts +802 -0
  93. package/lib/hooks/register/register.FormItem.js +55 -0
  94. package/lib/hooks/register/register.FormList.d.ts +789 -0
  95. package/lib/hooks/register/register.FormList.js +43 -0
  96. package/lib/hooks/register/register.form.d.ts +3 -0
  97. package/lib/hooks/register/register.form.js +12 -0
  98. package/lib/hooks/useAttrs.d.ts +24 -0
  99. package/lib/hooks/useAttrs.js +45 -0
  100. package/lib/hooks/useEffect.d.ts +2 -0
  101. package/lib/hooks/useEffect.js +14 -0
  102. package/lib/hooks/useForm.d.ts +8 -0
  103. package/lib/hooks/useForm.js +26 -0
  104. package/lib/hooks/useFormItem.d.ts +7 -0
  105. package/lib/hooks/useFormItem.js +26 -0
  106. package/lib/hooks/useFormItemParentName.d.ts +18 -0
  107. package/lib/hooks/useFormItemParentName.js +37 -0
  108. package/lib/hooks/useFormList.d.ts +7 -0
  109. package/lib/hooks/useFormList.js +26 -0
  110. package/lib/hooks/useHtmlFor.d.ts +2 -0
  111. package/lib/hooks/useHtmlFor.js +11 -0
  112. package/lib/hooks/useMultipleForm.d.ts +7 -0
  113. package/lib/hooks/useMultipleForm.js +27 -0
  114. package/lib/index.d.ts +11 -0
  115. package/lib/index.js +59 -0
  116. package/lib/instance/ruleIntsnace.d.ts +49 -0
  117. package/lib/instance/ruleIntsnace.js +73 -0
  118. package/lib/interface/index.d.ts +36 -0
  119. package/lib/interface/layout.d.ts +28 -0
  120. package/lib/interface/layout.formItem.d.ts +39 -0
  121. package/lib/layout/index.d.ts +65 -0
  122. package/lib/layout/index.js +12 -0
  123. package/lib/layout/layout.form.rows.vue.d.ts +10 -0
  124. package/lib/layout/layout.form.rows.vue.js +31 -0
  125. package/lib/layout/layout.form.rows.vue2.js +4 -0
  126. package/lib/layout/layout.formItem.vue.d.ts +18 -0
  127. package/lib/layout/layout.formItem.vue.js +216 -0
  128. package/lib/layout/layout.formItem.vue2.js +4 -0
  129. package/lib/layout/layout.vue.d.ts +16 -0
  130. package/lib/layout/layout.vue.js +166 -0
  131. package/lib/layout/layout.vue2.js +4 -0
  132. package/lib/utils/index.d.ts +1 -0
  133. package/lib/utils/withInstall.d.ts +3 -0
  134. package/lib/utils/withInstall.js +22 -0
  135. package/package.json +33 -0
  136. package/src/component.ts +3 -0
  137. package/src/form/index.ts +3 -0
  138. package/src/form/index.vue +66 -0
  139. package/src/formItem/form.Item.base.vue +54 -0
  140. package/src/formItem/form.hide.item.vue +28 -0
  141. package/src/formItem/formItem.vue +38 -0
  142. package/src/formItem/index.ts +7 -0
  143. package/src/hooks/attr/attr.FormItem.tsx +170 -0
  144. package/src/hooks/index.ts +13 -0
  145. package/src/hooks/register/register.FormHideItem.ts +45 -0
  146. package/src/hooks/register/register.FormItem.ts +80 -0
  147. package/src/hooks/register/register.FormList.ts +49 -0
  148. package/src/hooks/register/register.form.ts +12 -0
  149. package/src/hooks/useAttrs.ts +66 -0
  150. package/src/hooks/useEffect.ts +13 -0
  151. package/src/hooks/useForm.ts +28 -0
  152. package/src/hooks/useFormItem.ts +28 -0
  153. package/src/hooks/useFormItemParentName.ts +49 -0
  154. package/src/hooks/useFormList.ts +28 -0
  155. package/src/hooks/useHtmlFor.ts +9 -0
  156. package/src/hooks/useMultipleForm.ts +29 -0
  157. package/src/index.ts +16 -0
  158. package/src/instance/ruleIntsnace.ts +105 -0
  159. package/src/interface/index.ts +40 -0
  160. package/src/interface/layout.formItem.ts +42 -0
  161. package/src/interface/layout.ts +29 -0
  162. package/src/layout/index.ts +8 -0
  163. package/src/layout/layout.form.rows.vue +19 -0
  164. package/src/layout/layout.formItem.vue +119 -0
  165. package/src/layout/layout.vue +97 -0
  166. package/src/utils/index.ts +1 -0
  167. package/src/utils/withInstall.ts +28 -0
  168. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ const register_FormItem = require("./register.FormItem.js");
5
+ const useFormList = require("../useFormList.js");
6
+ const useEffect = require("../useEffect.js");
7
+ const useRegisterFormList = (options) => {
8
+ const { ruleInstance, formItemInstance, form, newName, parentItem } = register_FormItem.useRegisterFormItem(options);
9
+ const formListInstance = useFormList.useFormList();
10
+ vue.watch(
11
+ [newName.value],
12
+ () => {
13
+ formListInstance.ctor(newName.value);
14
+ },
15
+ { immediate: true }
16
+ );
17
+ vue.watch(
18
+ [form, formItemInstance, ruleInstance.value],
19
+ () => {
20
+ formListInstance.instance = form;
21
+ formListInstance.formItemInstance = formItemInstance;
22
+ formListInstance.rule = ruleInstance.value;
23
+ },
24
+ { immediate: true }
25
+ );
26
+ vue.watch(
27
+ [options.sort, parentItem.value],
28
+ () => {
29
+ formListInstance.sort = vue.toValue(parentItem.value.sort);
30
+ formListInstance.parentDataField = vue.toValue(parentItem.value.name);
31
+ },
32
+ { immediate: true }
33
+ );
34
+ useEffect.useEffect(() => {
35
+ return form.registerFormList(newName.value, formListInstance);
36
+ });
37
+ return {
38
+ ruleInstance,
39
+ formItemInstance,
40
+ formListInstance
41
+ };
42
+ };
43
+ exports.useRegisterFormList = useRegisterFormList;
@@ -0,0 +1,3 @@
1
+ import { FormInstanceBase } from '@carefrees/form-utils';
2
+ /**注册表单实例到多表单收集实例中*/
3
+ export declare const useRegisterForm: (form: FormInstanceBase, name?: string) => import('@carefrees/form-utils').MultipleInstanceBase;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const useMultipleForm = require("../useMultipleForm.js");
4
+ const useEffect = require("../useEffect.js");
5
+ const useRegisterForm = (form, name) => {
6
+ const multipleForm = useMultipleForm.useMultipleFormInject();
7
+ useEffect.useEffect(() => {
8
+ if (name) return multipleForm.ctor(name, form);
9
+ });
10
+ return multipleForm;
11
+ };
12
+ exports.useRegisterForm = useRegisterForm;
@@ -0,0 +1,24 @@
1
+ import { StyleValue, ComputedRef } from 'vue';
2
+ import { ComputedRefBase } from '../interface';
3
+ export type AttrsOptions = {
4
+ /**列数据*/
5
+ colCount?: ComputedRefBase<number | undefined>;
6
+ /**规则校验失败错误提示位置*/
7
+ errorLayout?: ComputedRefBase<'left-bottom' | 'right-bottom' | 'top-right' | 'top-left' | undefined>;
8
+ /**label显示模式*/
9
+ labelMode?: ComputedRefBase<'left' | 'top' | 'hide' | undefined>;
10
+ /**是否显示label后的冒号*/
11
+ showColon?: ComputedRefBase<boolean | undefined>;
12
+ /**表单项 className*/
13
+ formItemClass?: ComputedRefBase<string | undefined>;
14
+ /**表单项 style*/
15
+ formItemStyle?: ComputedRefBase<StyleValue | undefined>;
16
+ /**表单项 label className*/
17
+ formItemLabelClass?: ComputedRefBase<string | undefined>;
18
+ /**表单项 label style*/
19
+ formItemLabelStyle?: ComputedRefBase<StyleValue | undefined>;
20
+ };
21
+ /**公共属性 Context */
22
+ export declare function useAttrsProvide(options: AttrsOptions): void;
23
+ /**子项中获取公共属性*/
24
+ export declare function useAttrsInject(): ComputedRef<AttrsOptions>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ const attrsProvideSymbol = Symbol("carefrees-attrs");
5
+ function useAttrsProvide(options) {
6
+ const {
7
+ colCount = vue.ref(4),
8
+ errorLayout = vue.ref("left-bottom"),
9
+ labelMode = vue.ref("top"),
10
+ showColon = vue.ref(true),
11
+ formItemClass,
12
+ formItemStyle,
13
+ formItemLabelClass,
14
+ formItemLabelStyle
15
+ } = options;
16
+ const data = vue.computed(() => {
17
+ return {
18
+ colCount,
19
+ errorLayout,
20
+ labelMode,
21
+ showColon,
22
+ formItemClass,
23
+ formItemStyle,
24
+ formItemLabelClass,
25
+ formItemLabelStyle
26
+ };
27
+ });
28
+ vue.provide(attrsProvideSymbol, vue.reactive(data));
29
+ }
30
+ function useAttrsInject() {
31
+ const attrs = vue.inject(
32
+ attrsProvideSymbol,
33
+ vue.computed(
34
+ () => vue.toRefs({
35
+ colCount: 4,
36
+ errorLayout: "left-bottom",
37
+ labelMode: "top",
38
+ showColon: true
39
+ })
40
+ )
41
+ );
42
+ return attrs;
43
+ }
44
+ exports.useAttrsInject = useAttrsInject;
45
+ exports.useAttrsProvide = useAttrsProvide;
@@ -0,0 +1,2 @@
1
+ /**挂载卸载*/
2
+ export declare const useEffect: (fun: () => Function | undefined) => void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ const useEffect = (fun) => {
5
+ const unRegisterRef = vue.ref();
6
+ vue.onMounted(() => {
7
+ unRegisterRef.value = fun();
8
+ });
9
+ vue.onUnmounted(() => {
10
+ typeof unRegisterRef.value === "function" && unRegisterRef.value();
11
+ unRegisterRef.value = void 0;
12
+ });
13
+ };
14
+ exports.useEffect = useEffect;
@@ -0,0 +1,8 @@
1
+ import { FormInstanceBase } from '@carefrees/form-utils';
2
+ import { Ref } from 'vue';
3
+ /**表单实例 Context */
4
+ export declare function useFormProvide<T = any>(form: FormInstanceBase<T>): void;
5
+ /**子项中获取表单实例*/
6
+ export declare function useFormInject<T = any>(): FormInstanceBase<T>;
7
+ /**初始化表单实例*/
8
+ export declare function useForm<T = any>(form?: FormInstanceBase<T>): Ref<FormInstanceBase<T>, FormInstanceBase<T>>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formUtils = require("@carefrees/form-utils");
4
+ const vue = require("vue");
5
+ const formProvideSymbol = Symbol("carefrees-form");
6
+ function useFormProvide(form) {
7
+ vue.provide(formProvideSymbol, form);
8
+ }
9
+ function useFormInject() {
10
+ const form = vue.inject(formProvideSymbol, new formUtils.FormInstanceBase());
11
+ return form;
12
+ }
13
+ function useForm(form) {
14
+ const refForm = vue.ref();
15
+ if (!refForm.value) {
16
+ if (form) {
17
+ refForm.value = form;
18
+ } else {
19
+ refForm.value = new formUtils.FormInstanceBase();
20
+ }
21
+ }
22
+ return refForm;
23
+ }
24
+ exports.useForm = useForm;
25
+ exports.useFormInject = useFormInject;
26
+ exports.useFormProvide = useFormProvide;
@@ -0,0 +1,7 @@
1
+ import { FormItemInstanceBase } from '@carefrees/form-utils';
2
+ /**表单项实例 Context */
3
+ export declare function useFormItemProvide(formItem: FormItemInstanceBase): void;
4
+ /**子项中获取表单项实例*/
5
+ export declare function useFormItemInject(): FormItemInstanceBase;
6
+ /**s初始化 表单项实例*/
7
+ export declare function useFormItem(formItem?: FormItemInstanceBase): FormItemInstanceBase;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formUtils = require("@carefrees/form-utils");
4
+ const vue = require("vue");
5
+ const formItemProvideSymbol = Symbol("carefrees-form-item");
6
+ function useFormItemProvide(formItem) {
7
+ vue.provide(formItemProvideSymbol, formItem);
8
+ }
9
+ function useFormItemInject() {
10
+ const formItem = vue.inject(formItemProvideSymbol, new formUtils.FormItemInstanceBase());
11
+ return formItem;
12
+ }
13
+ function useFormItem(formItem) {
14
+ const refForm = vue.ref();
15
+ if (!refForm.value) {
16
+ if (formItem) {
17
+ refForm.value = formItem;
18
+ } else {
19
+ refForm.value = new formUtils.FormItemInstanceBase();
20
+ }
21
+ }
22
+ return refForm.value;
23
+ }
24
+ exports.useFormItem = useFormItem;
25
+ exports.useFormItemInject = useFormItemInject;
26
+ exports.useFormItemProvide = useFormItemProvide;
@@ -0,0 +1,18 @@
1
+ import { ComputedRef } from 'vue';
2
+ import { PartialComputedRefs } from '../interface';
3
+ export interface FormItemParentNamOptions {
4
+ /**字段*/
5
+ name: string;
6
+ /**排序*/
7
+ sort?: string;
8
+ /**是否拼接父级字段*/
9
+ isJoinParentField?: boolean;
10
+ }
11
+ export type FormItemParentNameProviderProps = PartialComputedRefs<Omit<FormItemParentNamOptions, 'isJoinParentField'>>;
12
+ export declare const useFormItemParentNameProvide: (props: FormItemParentNameProviderProps) => void;
13
+ /**表单项获取父级字段*/
14
+ export declare const useFormItemParentNameInject: (options: FormItemParentNamOptions) => {
15
+ newName: ComputedRef<string>;
16
+ newSort: ComputedRef<string>;
17
+ parentItem: ComputedRef<PartialComputedRefs<Omit<FormItemParentNamOptions, "isJoinParentField">>>;
18
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ const parentNameProvideSymbol = Symbol("carefrees-parent-name");
5
+ const useFormItemParentNameProvide = (props) => {
6
+ const { name, sort } = props;
7
+ vue.provide(
8
+ parentNameProvideSymbol,
9
+ vue.computed(() => ({ name, sort }))
10
+ );
11
+ };
12
+ const useFormItemParentNameInject = (options) => {
13
+ const { isJoinParentField = true, sort, name } = options;
14
+ const parentItem = vue.inject(
15
+ parentNameProvideSymbol,
16
+ vue.computed(() => ({ name: vue.ref(""), sort: vue.ref("") }))
17
+ );
18
+ const newName = vue.computed(() => {
19
+ const _name = vue.toValue(parentItem.value.name);
20
+ if (_name && isJoinParentField) {
21
+ if (/^\./.test(`${name}`)) {
22
+ return [_name, name].filter(Boolean).join("");
23
+ } else if (name) {
24
+ return [_name, ".", name].filter(Boolean).join("");
25
+ }
26
+ return [_name, name].filter(Boolean).join("");
27
+ }
28
+ return [name].filter(Boolean).join("");
29
+ });
30
+ const newSort = vue.computed(() => {
31
+ const _sort = vue.toValue(parentItem.value.sort);
32
+ return [isJoinParentField ? _sort : "", sort].filter(Boolean).join("-");
33
+ });
34
+ return { newName, newSort, parentItem };
35
+ };
36
+ exports.useFormItemParentNameInject = useFormItemParentNameInject;
37
+ exports.useFormItemParentNameProvide = useFormItemParentNameProvide;
@@ -0,0 +1,7 @@
1
+ import { FormListInstanceBase } from '@carefrees/form-utils';
2
+ /**表单List实例 Context */
3
+ export declare function useFormListProvide(formList: FormListInstanceBase): void;
4
+ /**子项中获取表单List实例*/
5
+ export declare function useFormListInject(): FormListInstanceBase;
6
+ /**初始化 表单List实例*/
7
+ export declare function useFormList(formList?: FormListInstanceBase): FormListInstanceBase;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formUtils = require("@carefrees/form-utils");
4
+ const vue = require("vue");
5
+ const formListProvideSymbol = Symbol("carefrees-form-list");
6
+ function useFormListProvide(formList) {
7
+ vue.provide(formListProvideSymbol, formList);
8
+ }
9
+ function useFormListInject() {
10
+ const formList = vue.inject(formListProvideSymbol, new formUtils.FormListInstanceBase());
11
+ return formList;
12
+ }
13
+ function useFormList(formList) {
14
+ const refForm = vue.ref();
15
+ if (!refForm.value) {
16
+ if (formList) {
17
+ refForm.value = formList;
18
+ } else {
19
+ refForm.value = new formUtils.FormListInstanceBase();
20
+ }
21
+ }
22
+ return refForm.value;
23
+ }
24
+ exports.useFormList = useFormList;
25
+ exports.useFormListInject = useFormListInject;
26
+ exports.useFormListProvide = useFormListProvide;
@@ -0,0 +1,2 @@
1
+ import { Ref } from 'vue';
2
+ export declare const useHtmlFor: (suffix: Ref<string>) => import('vue').ComputedRef<string>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ let localId = 0;
5
+ const useHtmlFor = (suffix) => {
6
+ const count = vue.ref(localId++);
7
+ return vue.computed(() => {
8
+ return `carefree-vue-form-item_${count.value.toString(32)}_${suffix.value}`;
9
+ });
10
+ };
11
+ exports.useHtmlFor = useHtmlFor;
@@ -0,0 +1,7 @@
1
+ import { MultipleInstanceBase } from '@carefrees/form-utils';
2
+ /**多表单收集 Context */
3
+ export declare function useMultipleFormProvide(multipleForm?: MultipleInstanceBase): void;
4
+ /**子项中获取 多表单收集 实例*/
5
+ export declare function useMultipleFormInject(): MultipleInstanceBase;
6
+ /**初始化 多表单收集 实例*/
7
+ export declare function useMultipleForm(multipleForm?: MultipleInstanceBase): MultipleInstanceBase;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formUtils = require("@carefrees/form-utils");
4
+ const vue = require("vue");
5
+ const multipleFormProvideSymbol = Symbol("carefrees-multiple-form");
6
+ function useMultipleFormProvide(multipleForm) {
7
+ const newMultipleForm = useMultipleForm(multipleForm);
8
+ vue.provide(multipleFormProvideSymbol, newMultipleForm);
9
+ }
10
+ function useMultipleFormInject() {
11
+ const multipleForm = vue.inject(multipleFormProvideSymbol, new formUtils.MultipleInstanceBase());
12
+ return multipleForm;
13
+ }
14
+ function useMultipleForm(multipleForm) {
15
+ const refForm = vue.ref();
16
+ if (!refForm.value) {
17
+ if (multipleForm) {
18
+ refForm.value = multipleForm;
19
+ } else {
20
+ refForm.value = new formUtils.MultipleInstanceBase();
21
+ }
22
+ }
23
+ return refForm.value;
24
+ }
25
+ exports.useMultipleForm = useMultipleForm;
26
+ exports.useMultipleFormInject = useMultipleFormInject;
27
+ exports.useMultipleFormProvide = useMultipleFormProvide;
package/lib/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { App } from 'vue';
2
+ export * from './hooks';
3
+ export * from './component';
4
+ export * from './utils';
5
+ export * from './interface';
6
+ export * from './interface/layout';
7
+ export * from './interface/layout.formItem';
8
+ declare const _default: {
9
+ install: (app: App) => void;
10
+ };
11
+ export default _default;
package/lib/index.js ADDED
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const component = require("./component.js");
4
+ const useAttrs = require("./hooks/useAttrs.js");
5
+ const useForm = require("./hooks/useForm.js");
6
+ const useFormItem = require("./hooks/useFormItem.js");
7
+ const useFormList = require("./hooks/useFormList.js");
8
+ const useHtmlFor = require("./hooks/useHtmlFor.js");
9
+ const useMultipleForm = require("./hooks/useMultipleForm.js");
10
+ const useFormItemParentName = require("./hooks/useFormItemParentName.js");
11
+ const useEffect = require("./hooks/useEffect.js");
12
+ const register_FormHideItem = require("./hooks/register/register.FormHideItem.js");
13
+ const register_FormItem = require("./hooks/register/register.FormItem.js");
14
+ const register_FormList = require("./hooks/register/register.FormList.js");
15
+ const register_form = require("./hooks/register/register.form.js");
16
+ const attr_FormItem = require("./hooks/attr/attr.FormItem.js");
17
+ const withInstall = require("./utils/withInstall.js");
18
+ const index$1 = require("./form/index.js");
19
+ const index$2 = require("./formItem/index.js");
20
+ const index$3 = require("./layout/index.js");
21
+ const index = {
22
+ install: (app) => {
23
+ for (const c in component) {
24
+ app.use(component[c]);
25
+ }
26
+ }
27
+ };
28
+ exports.useAttrsInject = useAttrs.useAttrsInject;
29
+ exports.useAttrsProvide = useAttrs.useAttrsProvide;
30
+ exports.useForm = useForm.useForm;
31
+ exports.useFormInject = useForm.useFormInject;
32
+ exports.useFormProvide = useForm.useFormProvide;
33
+ exports.useFormItem = useFormItem.useFormItem;
34
+ exports.useFormItemInject = useFormItem.useFormItemInject;
35
+ exports.useFormItemProvide = useFormItem.useFormItemProvide;
36
+ exports.useFormList = useFormList.useFormList;
37
+ exports.useFormListInject = useFormList.useFormListInject;
38
+ exports.useFormListProvide = useFormList.useFormListProvide;
39
+ exports.useHtmlFor = useHtmlFor.useHtmlFor;
40
+ exports.useMultipleForm = useMultipleForm.useMultipleForm;
41
+ exports.useMultipleFormInject = useMultipleForm.useMultipleFormInject;
42
+ exports.useMultipleFormProvide = useMultipleForm.useMultipleFormProvide;
43
+ exports.useFormItemParentNameInject = useFormItemParentName.useFormItemParentNameInject;
44
+ exports.useFormItemParentNameProvide = useFormItemParentName.useFormItemParentNameProvide;
45
+ exports.useEffect = useEffect.useEffect;
46
+ exports.useRegisterFormHideItem = register_FormHideItem.useRegisterFormHideItem;
47
+ exports.useRegisterFormItem = register_FormItem.useRegisterFormItem;
48
+ exports.useRegisterFormList = register_FormList.useRegisterFormList;
49
+ exports.useRegisterForm = register_form.useRegisterForm;
50
+ exports.useFormItemAttr = attr_FormItem.useFormItemAttr;
51
+ exports.withInstall = withInstall.withInstall;
52
+ exports.Form = index$1.Form;
53
+ exports.FormHideItem = index$2.FormHideItem;
54
+ exports.FormItem = index$2.FormItem;
55
+ exports.FormItemBase = index$2.FormItemBase;
56
+ exports.FormLayoutRows = index$3.FormLayoutRows;
57
+ exports.Layout = index$3.Layout;
58
+ exports.LayoutFormItem = index$3.LayoutFormItem;
59
+ exports.default = index;
@@ -0,0 +1,49 @@
1
+ import { RuleItem } from 'async-validator';
2
+ import { MessageType, FormInstanceBase } from '@carefrees/form-utils';
3
+ import { Ref } from 'vue';
4
+ export declare class RuleInstanceBase2 {
5
+ /**
6
+ * 顺序
7
+ * @example
8
+ * "0"
9
+ * "0-0"
10
+ * "0-0-0"
11
+ */
12
+ sort?: string;
13
+ /**表单实例*/
14
+ instance?: FormInstanceBase;
15
+ /**
16
+ * 字段 ,分割方式与lodash的get和set方法值更新或设置路径一致
17
+ * @example
18
+ * 默认:"name"
19
+ * 嵌套字段:"name.a.doc"
20
+ * 嵌套字段:"name[1].a.doc"
21
+ * 嵌套字段:"name.a[2].doc"
22
+ */
23
+ name: string;
24
+ /**规则*/
25
+ rules: Ref<RuleItem[]>;
26
+ /**错误提示内容*/
27
+ messages: Ref<MessageType[]>;
28
+ /**更新当前组件方法*/
29
+ updated?: Function;
30
+ /**判断是否必填*/
31
+ isRequired: () => boolean;
32
+ /**初始化*/
33
+ ctor: (name: string, rules: RuleItem[]) => this;
34
+ /**判断是否需要验证*/
35
+ isValidate: () => boolean;
36
+ /**更新提示信息*/
37
+ updatedMessages: (messages?: MessageType[]) => void;
38
+ /**更新规则*/
39
+ updatedRules: (rules: RuleItem[]) => void;
40
+ /**验证规则
41
+ * @param {boolean} isOnly 仅判断是否校验通过
42
+ */
43
+ validate: (isOnly?: boolean) => Promise<unknown>;
44
+ /**获取校验结果*/
45
+ getValidateResult: () => {
46
+ tip: string | (string | undefined)[];
47
+ isInvalid: boolean;
48
+ };
49
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const AsyncValidator = require("async-validator");
4
+ const vue = require("vue");
5
+ class RuleInstanceBase2 {
6
+ constructor() {
7
+ this.name = "";
8
+ this.rules = vue.ref([]);
9
+ this.messages = vue.ref([]);
10
+ this.isRequired = () => {
11
+ var _a, _b;
12
+ if ((_b = (_a = this.instance) == null ? void 0 : _a.getFieldHideRulesValue) == null ? void 0 : _b.call(_a, this.name)) {
13
+ return false;
14
+ }
15
+ const findItem = (vue.toValue(this.rules) || []).find((item) => item == null ? void 0 : item.required);
16
+ return !!findItem;
17
+ };
18
+ this.ctor = (name, rules) => {
19
+ this.name = name;
20
+ this.rules.value = rules || [];
21
+ return this;
22
+ };
23
+ this.isValidate = () => {
24
+ var _a, _b;
25
+ if ((_b = (_a = this.instance) == null ? void 0 : _a.getFieldHideRulesValue) == null ? void 0 : _b.call(_a, this.name)) {
26
+ return false;
27
+ }
28
+ const _rules = vue.toValue(this.rules);
29
+ return !!(Array.isArray(_rules) && _rules.length);
30
+ };
31
+ this.updatedMessages = (messages) => {
32
+ var _a;
33
+ this.messages.value = messages || [];
34
+ (_a = this.updated) == null ? void 0 : _a.call(this, {});
35
+ };
36
+ this.updatedRules = (rules) => {
37
+ var _a;
38
+ this.rules.value = rules;
39
+ (_a = this.updatedMessages) == null ? void 0 : _a.call(this, []);
40
+ };
41
+ this.validate = (isOnly = false) => {
42
+ return new Promise((resolve, reject) => {
43
+ var _a, _b, _c, _d;
44
+ const value = (_b = (_a = this.instance) == null ? void 0 : _a.getFieldValue) == null ? void 0 : _b.call(_a, this.name);
45
+ if ((_d = (_c = this.instance) == null ? void 0 : _c.getFieldHideRulesValue) == null ? void 0 : _d.call(_c, this.name)) {
46
+ this.updatedMessages([]);
47
+ resolve({ [this.name]: value });
48
+ }
49
+ new AsyncValidator({ [this.name]: vue.toValue(this.rules) || [] }).validate({ [this.name]: value }).then((values) => {
50
+ if (!isOnly) this.updatedMessages([]);
51
+ resolve(values);
52
+ }).catch(({ errors }) => {
53
+ if (Array.isArray(errors)) {
54
+ if (!isOnly) this.updatedMessages(errors);
55
+ reject(errors);
56
+ } else {
57
+ reject();
58
+ }
59
+ });
60
+ });
61
+ };
62
+ this.getValidateResult = () => {
63
+ const _messages = vue.toValue(this.messages);
64
+ const tip = Array.isArray(_messages) ? _messages.map((it) => it.message) : "";
65
+ const isInvalid = Array.isArray(tip) ? !!tip.length : !!tip;
66
+ return {
67
+ tip,
68
+ isInvalid
69
+ };
70
+ };
71
+ }
72
+ }
73
+ exports.RuleInstanceBase2 = RuleInstanceBase2;
@@ -0,0 +1,36 @@
1
+ import { ComputedRef, Ref, VNodeChild, StyleValue, UnwrapNestedRefs } from 'vue';
2
+ import { FormItemAttrOptions } from '../hooks/attr/attr.FormItem';
3
+ import { LayoutFormItemProps } from './layout.formItem';
4
+ import { FormLayoutProps } from './layout';
5
+ import { FormInstanceBase, ValidateErrorEntity } from '@carefrees/form-utils';
6
+ export type ComputedRefBase<T> = ComputedRef<T> | Ref<T>;
7
+ export type PartialComputedRefs<T> = {
8
+ [K in keyof T]: ComputedRefBase<T[K]>;
9
+ };
10
+ export interface FormItemProps extends FormItemAttrOptions, LayoutFormItemProps {
11
+ /**不进行样式渲染*/
12
+ noStyle?: boolean;
13
+ /**输入框组件*/
14
+ input?: VNodeChild;
15
+ }
16
+ export interface FormProps<T = any> extends FormLayoutProps {
17
+ form?: FormInstanceBase;
18
+ style?: StyleValue;
19
+ class?: string;
20
+ layoutClass?: string;
21
+ layoutStyle?: StyleValue;
22
+ /**表单数据*/
23
+ formData?: any;
24
+ /**值更新触发*/
25
+ onValuesChange?: (changedValues: Partial<T>, values: UnwrapNestedRefs<T>) => void;
26
+ /**提交保存 验证成功*/
27
+ onFinish?: (values: T) => void;
28
+ /**提交保存 验证失败*/
29
+ onFinishFailed?: (errorInfo: ValidateErrorEntity<T>) => void;
30
+ /**隐藏表单项初始值*/
31
+ hideData?: Record<string, boolean>;
32
+ /**表单名称*/
33
+ name?: string;
34
+ /**隐藏规则校验*/
35
+ hideRuleData?: Record<string, boolean>;
36
+ }
@@ -0,0 +1,28 @@
1
+ import { AttrsOptions } from '../hooks/useAttrs';
2
+ import { VNodeChild, StyleValue } from 'vue';
3
+ export interface FormLayoutProps extends Omit<AttrsOptions, 'colCount'> {
4
+ /**标题*/
5
+ title?: VNodeChild;
6
+ /**额外内容*/
7
+ extra?: VNodeChild;
8
+ /**是否占据整行*/
9
+ isAllColSpan?: boolean;
10
+ class?: string;
11
+ /**头部ClassName*/
12
+ headerClass?: string;
13
+ /**内容Class*/
14
+ bodyClass?: string;
15
+ style?: StyleValue;
16
+ /**头部样式*/
17
+ headerStyle?: StyleValue;
18
+ /**内容样式*/
19
+ bodyStyle?: StyleValue;
20
+ /**是否添加边框*/
21
+ bordered?: boolean;
22
+ /**列数据*/
23
+ colCount?: number;
24
+ /**
25
+ * @description gap 属性是用来设置网格行与列之间的间隙,该属性是row-gap and column-gap的简写形式。
26
+ */
27
+ gap?: string | number;
28
+ }