@antdv-vue/pro-utils 0.0.0-stage → 2.1.1

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 (174) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +80 -2
  3. package/dist/autoFocusToFirstChild/index.d.ts +9 -0
  4. package/dist/autoFocusToFirstChild/index.js +36 -0
  5. package/dist/childrenToArray/index.d.ts +7 -0
  6. package/dist/childrenToArray/index.js +8 -0
  7. package/dist/components/CopyToClipboard/copy/index.d.ts +10 -0
  8. package/dist/components/CopyToClipboard/copy/index.js +84 -0
  9. package/dist/components/CopyToClipboard/copy/toggle-selection.d.ts +4 -0
  10. package/dist/components/CopyToClipboard/copy/toggle-selection.js +27 -0
  11. package/dist/components/CopyToClipboard/index.d.ts +14 -0
  12. package/dist/components/CopyToClipboard/index.js +13 -0
  13. package/dist/components/Draggable/Draggable.d.ts +62 -0
  14. package/dist/components/Draggable/Draggable.js +162 -0
  15. package/dist/components/Draggable/DraggableCore.d.ts +40 -0
  16. package/dist/components/Draggable/DraggableCore.js +149 -0
  17. package/dist/components/Draggable/index.d.ts +4 -0
  18. package/dist/components/Draggable/index.js +3 -0
  19. package/dist/components/Draggable/types.d.ts +30 -0
  20. package/dist/components/Draggable/types.js +1 -0
  21. package/dist/components/Draggable/utils/domFns.d.ts +36 -0
  22. package/dist/components/Draggable/utils/domFns.js +165 -0
  23. package/dist/components/Draggable/utils/getPrefix.d.ts +6 -0
  24. package/dist/components/Draggable/utils/getPrefix.js +31 -0
  25. package/dist/components/Draggable/utils/positionFns.d.ts +13 -0
  26. package/dist/components/Draggable/utils/positionFns.js +96 -0
  27. package/dist/components/Draggable/utils/shims.d.ts +7 -0
  28. package/dist/components/Draggable/utils/shims.js +19 -0
  29. package/dist/components/DropdownFooter/index.d.ts +20 -0
  30. package/dist/components/DropdownFooter/index.js +80 -0
  31. package/dist/components/DropdownFooter/style/index.d.ts +8 -0
  32. package/dist/components/DropdownFooter/style/index.js +18 -0
  33. package/dist/components/ErrorBoundary/index.d.ts +25 -0
  34. package/dist/components/ErrorBoundary/index.js +65 -0
  35. package/dist/components/FieldLabel/index.d.ts +31 -0
  36. package/dist/components/FieldLabel/index.js +212 -0
  37. package/dist/components/FieldLabel/style/index.d.ts +8 -0
  38. package/dist/components/FieldLabel/style/index.js +146 -0
  39. package/dist/components/FilterDropdown/index.d.ts +38 -0
  40. package/dist/components/FilterDropdown/index.js +91 -0
  41. package/dist/components/FilterDropdown/style/index.d.ts +8 -0
  42. package/dist/components/FilterDropdown/style/index.js +21 -0
  43. package/dist/components/FormItem/FormItemInput.d.ts +34 -0
  44. package/dist/components/FormItem/FormItemInput.js +163 -0
  45. package/dist/components/FormItem/ItemHolder.d.ts +58 -0
  46. package/dist/components/FormItem/ItemHolder.js +289 -0
  47. package/dist/components/FormItem/index.d.ts +64 -0
  48. package/dist/components/FormItem/index.js +591 -0
  49. package/dist/components/FormList/Field.d.ts +29 -0
  50. package/dist/components/FormList/Field.js +106 -0
  51. package/dist/components/FormList/FieldContext.d.ts +15 -0
  52. package/dist/components/FormList/FieldContext.js +11 -0
  53. package/dist/components/FormList/InternalField.d.ts +51 -0
  54. package/dist/components/FormList/InternalField.js +149 -0
  55. package/dist/components/FormList/ListContext.d.ts +12 -0
  56. package/dist/components/FormList/ListContext.js +11 -0
  57. package/dist/components/FormList/index.d.ts +36 -0
  58. package/dist/components/FormList/index.js +145 -0
  59. package/dist/components/FormList/interface.d.ts +9 -0
  60. package/dist/components/FormList/interface.js +1 -0
  61. package/dist/components/FormList/namePathType.d.ts +9 -0
  62. package/dist/components/FormList/namePathType.js +1 -0
  63. package/dist/components/FormList/utils/index.d.ts +15 -0
  64. package/dist/components/FormList/utils/index.js +37 -0
  65. package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.d.ts +21 -0
  66. package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.js +95 -0
  67. package/dist/components/InlineErrorFormItem/index.d.ts +14 -0
  68. package/dist/components/InlineErrorFormItem/index.js +44 -0
  69. package/dist/components/InlineErrorFormItem/style/index.d.ts +8 -0
  70. package/dist/components/InlineErrorFormItem/style/index.js +46 -0
  71. package/dist/components/LabelIconTip/index.d.ts +16 -0
  72. package/dist/components/LabelIconTip/index.js +79 -0
  73. package/dist/components/LabelIconTip/style/index.d.ts +8 -0
  74. package/dist/components/LabelIconTip/style/index.js +38 -0
  75. package/dist/components/ProFormContext/index.d.ts +51 -0
  76. package/dist/components/ProFormContext/index.js +11 -0
  77. package/dist/conversionMomentValue/index.d.ts +48 -0
  78. package/dist/conversionMomentValue/index.js +103 -0
  79. package/dist/dateArrayFormatter/index.d.ts +14 -0
  80. package/dist/dateArrayFormatter/index.js +38 -0
  81. package/dist/deepMerge/index.d.ts +4 -0
  82. package/dist/deepMerge/index.js +17 -0
  83. package/dist/genCopyable/index.d.ts +27 -0
  84. package/dist/genCopyable/index.js +82 -0
  85. package/dist/getFieldPropsOrFormItemProps/index.d.ts +18 -0
  86. package/dist/getFieldPropsOrFormItemProps/index.js +15 -0
  87. package/dist/getSlot/index.d.ts +8 -0
  88. package/dist/getSlot/index.js +11 -0
  89. package/dist/hooks/index.d.ts +9 -0
  90. package/dist/hooks/index.js +9 -0
  91. package/dist/hooks/useDebounceFn/index.d.ts +12 -0
  92. package/dist/hooks/useDebounceFn/index.js +34 -0
  93. package/dist/hooks/useDebounceValue/index.d.ts +12 -0
  94. package/dist/hooks/useDebounceValue/index.js +21 -0
  95. package/dist/hooks/useDocumentTitle/index.d.ts +10 -0
  96. package/dist/hooks/useDocumentTitle/index.js +12 -0
  97. package/dist/hooks/useEffect/index.d.ts +6 -0
  98. package/dist/hooks/useEffect/index.js +17 -0
  99. package/dist/hooks/useFetchData/index.d.ts +12 -0
  100. package/dist/hooks/useFetchData/index.js +35 -0
  101. package/dist/hooks/useLayoutEffect/index.d.ts +6 -0
  102. package/dist/hooks/useLayoutEffect/index.js +21 -0
  103. package/dist/hooks/useMemo/index.d.ts +6 -0
  104. package/dist/hooks/useMemo/index.js +13 -0
  105. package/dist/hooks/useState/index.d.ts +6 -0
  106. package/dist/hooks/useState/index.js +11 -0
  107. package/dist/index.d.ts +61 -0
  108. package/dist/index.js +58 -0
  109. package/dist/isBrowser/index.d.ts +4 -0
  110. package/dist/isBrowser/index.js +8 -0
  111. package/dist/isDropdownValueType/index.d.ts +4 -0
  112. package/dist/isDropdownValueType/index.js +8 -0
  113. package/dist/isImg/index.d.ts +5 -0
  114. package/dist/isImg/index.js +7 -0
  115. package/dist/isNil/index.d.ts +4 -0
  116. package/dist/isNil/index.js +6 -0
  117. package/dist/isUrl/index.d.ts +9 -0
  118. package/dist/isUrl/index.js +17 -0
  119. package/dist/merge/index.d.ts +9 -0
  120. package/dist/merge/index.js +20 -0
  121. package/dist/nanoid/index.d.ts +9 -0
  122. package/dist/nanoid/index.js +25 -0
  123. package/dist/normalizeProps/index.d.ts +6 -0
  124. package/dist/normalizeProps/index.js +6 -0
  125. package/dist/omitBoolean/index.d.ts +9 -0
  126. package/dist/omitBoolean/index.js +11 -0
  127. package/dist/omitUndefined/index.d.ts +5 -0
  128. package/dist/omitUndefined/index.js +11 -0
  129. package/dist/omitUndefinedAndEmptyArr/index.d.ts +4 -0
  130. package/dist/omitUndefinedAndEmptyArr/index.js +12 -0
  131. package/dist/parseValueToDay/index.d.ts +7 -0
  132. package/dist/parseValueToDay/index.js +21 -0
  133. package/dist/pickProFormItemProps/index.d.ts +34 -0
  134. package/dist/pickProFormItemProps/index.js +42 -0
  135. package/dist/pickProProps/index.d.ts +4 -0
  136. package/dist/pickProProps/index.js +14 -0
  137. package/dist/pro-utils.esm.js +3672 -0
  138. package/dist/proFieldParsingText/index.d.ts +25 -0
  139. package/dist/proFieldParsingText/index.js +100 -0
  140. package/dist/runFunction/index.d.ts +5 -0
  141. package/dist/runFunction/index.js +8 -0
  142. package/dist/stringify/index.d.ts +7 -0
  143. package/dist/stringify/index.js +10 -0
  144. package/dist/transformBooleanProps/index.d.ts +4 -0
  145. package/dist/transformBooleanProps/index.js +9 -0
  146. package/dist/transformKeySubmitValue/index.d.ts +24 -0
  147. package/dist/transformKeySubmitValue/index.js +200 -0
  148. package/dist/transformVueNodeType/index.d.ts +14 -0
  149. package/dist/transformVueNodeType/index.js +14 -0
  150. package/dist/typing.d.ts +562 -0
  151. package/dist/typing.js +1 -0
  152. package/dist/useEditableArray/components/CancelEditableAction.d.ts +47 -0
  153. package/dist/useEditableArray/components/CancelEditableAction.js +90 -0
  154. package/dist/useEditableArray/components/DeleteEditableAction.d.ts +33 -0
  155. package/dist/useEditableArray/components/DeleteEditableAction.js +63 -0
  156. package/dist/useEditableArray/components/SaveEditableAction.d.ts +33 -0
  157. package/dist/useEditableArray/components/SaveEditableAction.js +79 -0
  158. package/dist/useEditableArray/index.d.ts +66 -0
  159. package/dist/useEditableArray/index.js +584 -0
  160. package/dist/useEditableArray/typing.d.ts +130 -0
  161. package/dist/useEditableArray/typing.js +1 -0
  162. package/dist/useEditableMap/index.d.ts +32 -0
  163. package/dist/useEditableMap/index.js +147 -0
  164. package/dist/useMediaQuery/index.d.ts +44 -0
  165. package/dist/useMediaQuery/index.js +99 -0
  166. package/dist/useMediaQuery/query.d.ts +6 -0
  167. package/dist/useMediaQuery/query.js +17 -0
  168. package/dist/useMountMergeState/index.d.ts +11 -0
  169. package/dist/useMountMergeState/index.js +26 -0
  170. package/dist/usePrevious/index.d.ts +6 -0
  171. package/dist/usePrevious/index.js +11 -0
  172. package/dist/useRefFunction/index.d.ts +4 -0
  173. package/dist/useRefFunction/index.js +11 -0
  174. package/package.json +69 -3
@@ -0,0 +1,90 @@
1
+ import { useProFormContextInject } from "../../components/ProFormContext/index.js";
2
+ import { createVNode, defineComponent } from "vue";
3
+ import { get, set } from "@v-c/util";
4
+ import { Form } from "antdv-next";
5
+ import { useIntl } from "@antdv-vue/pro-provider";
6
+ //#region src/useEditableArray/components/CancelEditableAction.tsx
7
+ function recordKeyToString(rowKey) {
8
+ if (Array.isArray(rowKey)) return rowKey.join(",");
9
+ return rowKey;
10
+ }
11
+ /**
12
+ * Normalize antd Form `NamePath` segments.
13
+ *
14
+ * - Preserve `0` (number) and other falsy-but-valid segments
15
+ * - Flatten nested arrays (e.g. `name={['a','b']}`)
16
+ * - Convert number segments to string to align with `spellNamePath` behavior
17
+ */
18
+ function normalizeNamePath(...segments) {
19
+ return segments.flat(1).filter((key) => key !== void 0 && key !== null).map((key) => typeof key === "number" ? key.toString() : key);
20
+ }
21
+ /**
22
+ * 保存按钮的dom
23
+ */
24
+ const CancelEditableAction = /* @__PURE__ */ defineComponent((props, { slots }) => {
25
+ const intl = useIntl();
26
+ const context = useProFormContextInject();
27
+ const form = Form.useFormInstance();
28
+ const cancel = async () => {
29
+ const isMapEditor = props.editorType === "Map";
30
+ const recordKeyStr = recordKeyToString(props.recordKey)?.toString();
31
+ const namePath = normalizeNamePath(props.tableName, props.formRecordKey ?? props.recordKey);
32
+ const formattedObject = context?.getFieldFormatValueObject?.(namePath);
33
+ const fields = formattedObject != null ? get(formattedObject, namePath) : form?.getFieldValue(namePath);
34
+ const record = isMapEditor ? set({}, namePath, fields) : fields;
35
+ const cachedPreEditRow = recordKeyStr !== null ? props.preEditRows?.get(recordKeyStr) : void 0;
36
+ const isNewLineKeyMatch = () => {
37
+ const newLineKey = props.newLineConfig?.options?.recordKey;
38
+ if (newLineKey == null || props.recordKey == null) return false;
39
+ const newLineKeyStr = recordKeyToString(newLineKey)?.toString();
40
+ const currentKeyStr = recordKeyToString(props.recordKey)?.toString();
41
+ if (!newLineKeyStr || !currentKeyStr) return false;
42
+ return newLineKeyStr === currentKeyStr;
43
+ };
44
+ const res = await props.onCancel?.(props.recordKey, record, props.row, props.newLineConfig);
45
+ /** 重置为默认值,不然编辑的行会丢掉 */
46
+ const restoreRow = cachedPreEditRow ?? props.preEditRow ?? props.row;
47
+ if (cachedPreEditRow === null || cachedPreEditRow === void 0 && props.preEditRow === null && isNewLineKeyMatch()) await props.onDelete?.(props.recordKey, props.row);
48
+ else if (restoreRow != null) form.setFieldValue(namePath, restoreRow);
49
+ await (props.finishEditable ?? props.cancelEditable)?.(props.recordKey);
50
+ if (recordKeyStr) props.preEditRows?.delete(recordKeyStr);
51
+ if (props.preEditRow) props["onUpdate:preEditRow"]?.(null);
52
+ return res;
53
+ };
54
+ return () => createVNode("a", {
55
+ "key": "cancel",
56
+ "onClick": async (e) => {
57
+ e.stopPropagation();
58
+ e.preventDefault();
59
+ await cancel();
60
+ }
61
+ }, [slots.default?.() || intl.value.getMessage({
62
+ id: "editableTable.action.cancel",
63
+ defaultMessage: "取消"
64
+ })]);
65
+ }, {
66
+ name: "CancelEditableAction",
67
+ inheritAttrs: false,
68
+ props: [
69
+ "cancelEditable",
70
+ "deletePopconfirmMessage",
71
+ "editableKeys",
72
+ "editorType",
73
+ "finishEditable",
74
+ "formRecordKey",
75
+ "index",
76
+ "newLineConfig",
77
+ "onCancel",
78
+ "onDelete",
79
+ "onSave",
80
+ "onUpdate:preEditRow",
81
+ "preEditRow",
82
+ "recordKey",
83
+ "row",
84
+ "setEditableRowKeys",
85
+ "tableName",
86
+ "preEditRows"
87
+ ]
88
+ });
89
+ //#endregion
90
+ export { CancelEditableAction as default, normalizeNamePath, recordKeyToString };
@@ -0,0 +1,33 @@
1
+ import { ActionRenderConfig } from "../typing.js";
2
+ import * as _$vue from "vue";
3
+
4
+ //#region src/useEditableArray/components/DeleteEditableAction.d.ts
5
+ interface DeleteEditableActionProps<T> {
6
+ editableKeys?: ActionRenderConfig<T>['editableKeys'];
7
+ recordKey?: ActionRenderConfig<T>['recordKey'];
8
+ preEditRow?: ActionRenderConfig<T>['preEditRow'];
9
+ preEditRows?: ActionRenderConfig<T>['preEditRows'];
10
+ 'onUpdate:preEditRow'?: ActionRenderConfig<T>['onUpdate:preEditRow'];
11
+ index?: ActionRenderConfig<T>['index'];
12
+ cancelEditable?: ActionRenderConfig<T>['cancelEditable'];
13
+ editorType?: ActionRenderConfig<T>['editorType'];
14
+ onDelete?: ActionRenderConfig<T>['onDelete'];
15
+ deletePopconfirmMessage?: ActionRenderConfig<T>['deletePopconfirmMessage'];
16
+ setEditableRowKeys?: ActionRenderConfig<T>['setEditableRowKeys'];
17
+ newLineConfig?: ActionRenderConfig<T>['newLineConfig'];
18
+ tableName?: ActionRenderConfig<T>['tableName'];
19
+ row?: T;
20
+ }
21
+ /**
22
+ * 删除按钮的dom
23
+ */
24
+ declare const DeleteEditableAction: new <T extends Record<string, any>>(props: DeleteEditableActionProps<T> & {} & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps) => _$vue.CreateComponentPublicInstanceWithMixins<DeleteEditableActionProps<T> & {}, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, _$vue.PublicProps, {}, false, {}, {}, {}, {}, string, {}, any, _$vue.ComponentProvideOptions, {
25
+ P: {};
26
+ B: {};
27
+ D: {};
28
+ C: {};
29
+ M: {};
30
+ Defaults: {};
31
+ }, DeleteEditableActionProps<T> & {}, {}, {}, {}, {}, {}>;
32
+ //#endregion
33
+ export { DeleteEditableActionProps, DeleteEditableAction as default };
@@ -0,0 +1,63 @@
1
+ import { useMountMergeState } from "../../useMountMergeState/index.js";
2
+ import { recordKeyToString } from "./CancelEditableAction.js";
3
+ import { createVNode, defineComponent } from "vue";
4
+ import { Popconfirm } from "antdv-next";
5
+ import { useIntl } from "@antdv-vue/pro-provider";
6
+ import { LoadingOutlined } from "@antdv-next/icons";
7
+ //#region src/useEditableArray/components/DeleteEditableAction.tsx
8
+ /**
9
+ * 删除按钮的dom
10
+ */
11
+ const DeleteEditableAction = /* @__PURE__ */ defineComponent((props, { slots, expose }) => {
12
+ const intl = useIntl();
13
+ const [loading, setLoading] = useMountMergeState(false);
14
+ const onConfirm = async () => {
15
+ try {
16
+ setLoading(true);
17
+ const res = await props.onDelete?.(props.recordKey, props.row);
18
+ setLoading(false);
19
+ if (res === false) return false;
20
+ return res;
21
+ } catch {
22
+ setLoading(false);
23
+ return null;
24
+ } finally {
25
+ const recordKeyStr = recordKeyToString(props.recordKey)?.toString();
26
+ if (recordKeyStr) props.preEditRows?.delete(recordKeyStr);
27
+ if (props.preEditRow) props["onUpdate:preEditRow"]?.(null);
28
+ }
29
+ };
30
+ expose({});
31
+ return () => {
32
+ const { deletePopconfirmMessage } = props;
33
+ return slots.default?.() ? createVNode(Popconfirm, {
34
+ "key": "delete",
35
+ "title": deletePopconfirmMessage,
36
+ "onConfirm": onConfirm
37
+ }, { default: () => [createVNode("a", null, [loading.value ? createVNode(LoadingOutlined, { "style": { marginInlineEnd: "8px" } }, null) : null, slots.default?.() || intl.value.getMessage({
38
+ id: "editableTable.action.delete",
39
+ defaultMessage: "删除"
40
+ })])] }) : null;
41
+ };
42
+ }, {
43
+ name: "DeleteEditableAction",
44
+ inheritAttrs: false,
45
+ props: [
46
+ "cancelEditable",
47
+ "deletePopconfirmMessage",
48
+ "editableKeys",
49
+ "editorType",
50
+ "index",
51
+ "newLineConfig",
52
+ "onDelete",
53
+ "onUpdate:preEditRow",
54
+ "preEditRow",
55
+ "recordKey",
56
+ "row",
57
+ "setEditableRowKeys",
58
+ "tableName",
59
+ "preEditRows"
60
+ ]
61
+ });
62
+ //#endregion
63
+ export { DeleteEditableAction as default };
@@ -0,0 +1,33 @@
1
+ import { ActionRenderConfig } from "../typing.js";
2
+ import * as _$vue from "vue";
3
+
4
+ //#region src/useEditableArray/components/SaveEditableAction.d.ts
5
+ interface SaveEditableActionProps<T> {
6
+ editableKeys?: ActionRenderConfig<T>['editableKeys'];
7
+ recordKey?: ActionRenderConfig<T>['recordKey'];
8
+ formRecordKey?: ActionRenderConfig<T>['formRecordKey'];
9
+ preEditRow?: ActionRenderConfig<T>['preEditRow'];
10
+ preEditRows?: ActionRenderConfig<T>['preEditRows'];
11
+ 'onUpdate:preEditRow'?: ActionRenderConfig<T>['onUpdate:preEditRow'];
12
+ index?: ActionRenderConfig<T>['index'];
13
+ cancelEditable?: ActionRenderConfig<T>['cancelEditable'];
14
+ onSave?: ActionRenderConfig<T>['onSave'];
15
+ editorType?: ActionRenderConfig<T>['editorType'];
16
+ setEditableRowKeys?: ActionRenderConfig<T>['setEditableRowKeys'];
17
+ newLineConfig?: ActionRenderConfig<T>['newLineConfig'];
18
+ tableName?: ActionRenderConfig<T>['tableName'];
19
+ row: T;
20
+ }
21
+ /**
22
+ * 保存按钮的dom
23
+ */
24
+ declare const SaveEditableAction: new <T extends Record<string, any>>(props: SaveEditableActionProps<T> & {} & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps) => _$vue.CreateComponentPublicInstanceWithMixins<SaveEditableActionProps<T> & {}, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, _$vue.PublicProps, {}, false, {}, {}, {}, {}, string, {}, any, _$vue.ComponentProvideOptions, {
25
+ P: {};
26
+ B: {};
27
+ D: {};
28
+ C: {};
29
+ M: {};
30
+ Defaults: {};
31
+ }, SaveEditableActionProps<T> & {}, {}, {}, {}, {}, {}>;
32
+ //#endregion
33
+ export { SaveEditableActionProps, SaveEditableAction as default };
@@ -0,0 +1,79 @@
1
+ import { useMountMergeState } from "../../useMountMergeState/index.js";
2
+ import { merge } from "../../merge/index.js";
3
+ import { useProFormContextInject } from "../../components/ProFormContext/index.js";
4
+ import { normalizeNamePath } from "./CancelEditableAction.js";
5
+ import { createVNode, defineComponent } from "vue";
6
+ import { get, set } from "@v-c/util";
7
+ import { Form } from "antdv-next";
8
+ import { useIntl } from "@antdv-vue/pro-provider";
9
+ import { LoadingOutlined } from "@antdv-next/icons";
10
+ import { getValue } from "antdv-next/dist/form/utils/valueUtil";
11
+ //#region src/useEditableArray/components/SaveEditableAction.tsx
12
+ /**
13
+ * 保存按钮的dom
14
+ */
15
+ const SaveEditableAction = /* @__PURE__ */ defineComponent((props, { slots, expose }) => {
16
+ const intl = useIntl();
17
+ const form = Form.useFormInstance();
18
+ const context = useProFormContextInject();
19
+ const [loading, setLoading] = useMountMergeState(false);
20
+ const save = async () => {
21
+ try {
22
+ const isMapEditor = props.editorType === "Map";
23
+ const fieldRecordKey = props.formRecordKey ?? props.recordKey;
24
+ const namePath = normalizeNamePath(props.tableName, Array.isArray(fieldRecordKey) ? fieldRecordKey[0] : fieldRecordKey);
25
+ setLoading(true);
26
+ try {
27
+ await form.validateFields(namePath, { recursive: true });
28
+ } catch (error) {
29
+ setLoading(false);
30
+ throw error;
31
+ }
32
+ const formattedObject = context?.getFieldFormatValueObject?.(namePath);
33
+ const fields = formattedObject != null ? get(formattedObject, namePath) : form.getFieldValue(namePath);
34
+ if (Array.isArray(props.recordKey) && props.recordKey.length > 1) {
35
+ const [, ...recordKeyPath] = props.recordKey;
36
+ set(fields, recordKeyPath, getValue(fields, recordKeyPath));
37
+ }
38
+ const data = isMapEditor ? set({}, namePath, fields) : fields;
39
+ const res = await props.onSave?.(props.recordKey, merge({}, props.row, data), props.row, props.newLineConfig);
40
+ setLoading(false);
41
+ return res;
42
+ } catch (error) {
43
+ setLoading(false);
44
+ throw error;
45
+ }
46
+ };
47
+ expose({ save });
48
+ return () => createVNode("a", {
49
+ "key": "save",
50
+ "onClick": async (e) => {
51
+ e.stopPropagation();
52
+ e.preventDefault();
53
+ await save();
54
+ }
55
+ }, [loading.value ? createVNode(LoadingOutlined, { "style": { marginInlineEnd: "8px" } }, null) : null, slots.default?.() || intl.value.getMessage({
56
+ id: "editableTable.action.save",
57
+ defaultMessage: "保存"
58
+ })]);
59
+ }, {
60
+ name: "SaveEditableAction",
61
+ inheritAttrs: false,
62
+ props: [
63
+ "cancelEditable",
64
+ "editableKeys",
65
+ "editorType",
66
+ "formRecordKey",
67
+ "index",
68
+ "newLineConfig",
69
+ "onSave",
70
+ "onUpdate:preEditRow",
71
+ "preEditRow",
72
+ "recordKey",
73
+ "row",
74
+ "setEditableRowKeys",
75
+ "tableName"
76
+ ]
77
+ });
78
+ //#endregion
79
+ export { SaveEditableAction as default };
@@ -0,0 +1,66 @@
1
+ import { ActionRenderConfig, ActionRenderFunction, ActionTypeText, AddLineOptions, NewLineConfig, RecordKey, RowEditableConfig, RowEditableType, SaveEditableActionRef } from "./typing.js";
2
+ import { recordKeyToString } from "./components/CancelEditableAction.js";
3
+ import { Key, VueNode as VueNode$1 } from "../typing.js";
4
+ import { ComputedRef, Ref, ShallowRef, VNode } from "vue";
5
+ import { AnyObject } from "antdv-next/dist/_util/type";
6
+ import * as _$vue_jsx_runtime0 from "vue/jsx-runtime";
7
+ import { GetRowKey } from "antdv-next/dist/table/interface";
8
+
9
+ //#region src/useEditableArray/index.d.ts
10
+ /**
11
+ * 使用map 来删除数据,性能一般 但是准确率比较高
12
+ *
13
+ */
14
+ declare function editableRowByKey<RecordType>(keyProps: {
15
+ data?: RecordType[];
16
+ childrenColumnName?: string;
17
+ getRowKey?: GetRowKey<RecordType>;
18
+ key?: RecordKey;
19
+ row?: RecordType;
20
+ }, action: 'update' | 'top' | 'delete'): RecordType[];
21
+ declare function defaultActionRender<T extends Record<string, any>>(row: T, config: ActionRenderConfig<T, NewLineConfig<T>>): {
22
+ save: _$vue_jsx_runtime0.JSX.Element;
23
+ delete: _$vue_jsx_runtime0.JSX.Element | undefined;
24
+ cancel: _$vue_jsx_runtime0.JSX.Element;
25
+ saveRef: ShallowRef<SaveEditableActionRef<T> | undefined, SaveEditableActionRef<T> | undefined>;
26
+ };
27
+ /**
28
+ * 一个方便的hooks 用于维护编辑的状态
29
+ *
30
+ * @param props
31
+ */
32
+ declare function useEditableArray<RecordType extends AnyObject>(props: Omit<RowEditableConfig<RecordType>, 'editableKeys' | 'type'> & {
33
+ type?: ComputedRef<RowEditableConfig<RecordType>['type']>;
34
+ editableKeys: ComputedRef<RowEditableConfig<RecordType>['editableKeys']>;
35
+ getRowKey: ComputedRef<GetRowKey<RecordType>>;
36
+ dataSource: ComputedRef<RecordType[]>;
37
+ onValuesChange?: (record: RecordType, dataSource: RecordType[]) => void;
38
+ childrenColumnName?: ComputedRef<string | undefined>;
39
+ setDataSource: (dataSource: RecordType[]) => void;
40
+ }): UseEditableUtilType<RecordType>;
41
+ type UseEditableType = typeof useEditableArray;
42
+ interface UseEditableUtilType<T> {
43
+ messageContextHolder?: () => VNode;
44
+ editableKeys?: Ref<Key[] | undefined, Key[] | undefined>;
45
+ setEditableRowKeys?: (val: Key[] | undefined) => void;
46
+ isEditable?: (row: T & {
47
+ index: number;
48
+ }) => {
49
+ recordKey: string;
50
+ isEditable: boolean;
51
+ preIsEditable: boolean;
52
+ };
53
+ actionRender?: (row: T & {
54
+ index: number;
55
+ }) => void | VueNode$1[];
56
+ startEditable?: (recordKey: Key, record?: T) => Promise<boolean>;
57
+ cancelEditable?: (recordKey: RecordKey, needReTry?: boolean) => Promise<boolean | undefined>;
58
+ addEditRecord?: (row: T, options?: AddLineOptions | undefined) => Promise<boolean>;
59
+ saveEditable?: (recordKey: RecordKey, needReTry?: boolean) => Promise<boolean>;
60
+ newLineRecord?: ShallowRef<NewLineConfig<T> | undefined>;
61
+ preEditableKeys?: Ref<Key[] | undefined>;
62
+ onValuesChange?: (value: T, values: T) => void;
63
+ getRealIndex: ((record: T) => number) | undefined;
64
+ }
65
+ //#endregion
66
+ export { ActionRenderConfig, ActionRenderFunction, ActionTypeText, AddLineOptions, NewLineConfig, RecordKey, RowEditableConfig, RowEditableType, SaveEditableActionRef, UseEditableType, UseEditableUtilType, defaultActionRender, editableRowByKey, recordKeyToString, useEditableArray };