qidian-vue-ui 1.1.59 → 1.1.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/config-provider/index.d.ts +24 -0
- package/dist/components/config-provider/types.d.ts +8 -0
- package/dist/components/config-provider/useConfig.d.ts +32 -0
- package/dist/components/dialog/form.vue.mjs +11 -13
- package/dist/components/dialog/form.vue.mjs.map +1 -1
- package/dist/components/dialog/props.d.ts +16 -0
- package/dist/components/dialog/props.mjs +2 -1
- package/dist/components/dialog/props.mjs.map +1 -1
- package/dist/components/form/config.d.ts +1 -0
- package/dist/components/form/config.mjs +3 -1
- package/dist/components/form/config.mjs.map +1 -1
- package/dist/components/form/index.css +5 -5
- package/dist/components/form/index.d.ts +1 -1
- package/dist/components/form/index.vue.mjs +1 -1
- package/dist/components/form/index.vue2.mjs +18 -2
- package/dist/components/form/index.vue2.mjs.map +1 -1
- package/dist/components/import-dialog/index.d.ts +2 -0
- package/dist/components/import-dialog/index.vue.d.ts +14 -0
- package/dist/components/import-dialog/index.vue.mjs +180 -0
- package/dist/components/import-dialog/index.vue.mjs.map +1 -0
- package/dist/components/import-dialog/index.vue2.mjs +5 -0
- package/dist/components/import-dialog/index.vue2.mjs.map +1 -0
- package/dist/components/import-dialog/props.d.ts +5 -0
- package/dist/components/import-dialog/props.mjs +9 -0
- package/dist/components/import-dialog/props.mjs.map +1 -0
- package/dist/components/import-dialog/types.d.ts +9 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/upload/index.css +26 -26
- package/dist/components/upload/index.vue.mjs +2 -2
- package/dist/components/upload/index.vue2.mjs +10 -4
- package/dist/components/upload/index.vue2.mjs.map +1 -1
- package/dist/components/upload/types.d.ts +1 -0
- package/dist/index.mjs +48 -45
- package/dist/index.mjs.map +1 -1
- package/dist/locales/en-US.d.ts +8 -0
- package/dist/locales/en-US.mjs +8 -0
- package/dist/locales/en-US.mjs.map +1 -1
- package/dist/locales/zh-CN.d.ts +8 -0
- package/dist/locales/zh-CN.mjs +8 -0
- package/dist/locales/zh-CN.mjs.map +1 -1
- package/dist/locales/zh-TW.d.ts +8 -0
- package/dist/locales/zh-TW.mjs +8 -0
- package/dist/locales/zh-TW.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -27,6 +27,7 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
27
27
|
viewText?: string;
|
|
28
28
|
editText?: string;
|
|
29
29
|
deleteText?: string;
|
|
30
|
+
importText?: string;
|
|
30
31
|
operationText?: string;
|
|
31
32
|
closeText?: string;
|
|
32
33
|
deleteSuccessText?: string;
|
|
@@ -75,6 +76,13 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
75
76
|
addConfirmText?: string;
|
|
76
77
|
addCancelText?: string;
|
|
77
78
|
};
|
|
79
|
+
importDialog: {
|
|
80
|
+
fileSupport?: [string, string];
|
|
81
|
+
clickDownloadTplText?: string;
|
|
82
|
+
downloadTplText?: string;
|
|
83
|
+
successText?: string;
|
|
84
|
+
failText?: string;
|
|
85
|
+
};
|
|
78
86
|
}) | undefined;
|
|
79
87
|
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
80
88
|
[key: string]: any;
|
|
@@ -107,6 +115,7 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
107
115
|
viewText?: string;
|
|
108
116
|
editText?: string;
|
|
109
117
|
deleteText?: string;
|
|
118
|
+
importText?: string;
|
|
110
119
|
operationText?: string;
|
|
111
120
|
closeText?: string;
|
|
112
121
|
deleteSuccessText?: string;
|
|
@@ -155,6 +164,13 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
155
164
|
addConfirmText?: string;
|
|
156
165
|
addCancelText?: string;
|
|
157
166
|
};
|
|
167
|
+
importDialog: {
|
|
168
|
+
fileSupport?: [string, string];
|
|
169
|
+
clickDownloadTplText?: string;
|
|
170
|
+
downloadTplText?: string;
|
|
171
|
+
successText?: string;
|
|
172
|
+
failText?: string;
|
|
173
|
+
};
|
|
158
174
|
}) | undefined;
|
|
159
175
|
}> & Readonly<{}>, {
|
|
160
176
|
avatar: import("../..").QdAvatarBaseOptions | undefined;
|
|
@@ -178,6 +194,7 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
178
194
|
viewText?: string;
|
|
179
195
|
editText?: string;
|
|
180
196
|
deleteText?: string;
|
|
197
|
+
importText?: string;
|
|
181
198
|
operationText?: string;
|
|
182
199
|
closeText?: string;
|
|
183
200
|
deleteSuccessText?: string;
|
|
@@ -226,6 +243,13 @@ export declare const QdConfigProvider: import("vue").DefineComponent<{
|
|
|
226
243
|
addConfirmText?: string;
|
|
227
244
|
addCancelText?: string;
|
|
228
245
|
};
|
|
246
|
+
importDialog: {
|
|
247
|
+
fileSupport?: [string, string];
|
|
248
|
+
clickDownloadTplText?: string;
|
|
249
|
+
downloadTplText?: string;
|
|
250
|
+
successText?: string;
|
|
251
|
+
failText?: string;
|
|
252
|
+
};
|
|
229
253
|
} | undefined;
|
|
230
254
|
upload: Pick<import("..").QdUploadProps<import("tdesign-vue-next").UploadFile, unknown, string | number | (string | number)[], string | number | (string | number)[], unknown, string | string[], string | string[], unknown, string | number | (string | number)[], string | number | (string | number)[]>, "name" | "del" | "action" | "headers" | "isBatchUpload" | "method" | "requestMethod" | "listOssByIds" | "listOssByUrls"> | undefined;
|
|
231
255
|
agentChat: Pick<import("../..").UseAgentChatOptions, "getSessionId" | "getUrl"> | undefined;
|
|
@@ -37,6 +37,7 @@ export interface QdConfigProviderProps {
|
|
|
37
37
|
viewText?: string;
|
|
38
38
|
editText?: string;
|
|
39
39
|
deleteText?: string;
|
|
40
|
+
importText?: string;
|
|
40
41
|
operationText?: string;
|
|
41
42
|
closeText?: string;
|
|
42
43
|
deleteSuccessText?: string;
|
|
@@ -85,5 +86,12 @@ export interface QdConfigProviderProps {
|
|
|
85
86
|
addConfirmText?: string;
|
|
86
87
|
addCancelText?: string;
|
|
87
88
|
};
|
|
89
|
+
importDialog: {
|
|
90
|
+
fileSupport?: [string, string];
|
|
91
|
+
clickDownloadTplText?: string;
|
|
92
|
+
downloadTplText?: string;
|
|
93
|
+
successText?: string;
|
|
94
|
+
failText?: string;
|
|
95
|
+
};
|
|
88
96
|
};
|
|
89
97
|
}
|
|
@@ -18,6 +18,7 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
18
18
|
viewText?: string;
|
|
19
19
|
editText?: string;
|
|
20
20
|
deleteText?: string;
|
|
21
|
+
importText?: string;
|
|
21
22
|
operationText?: string;
|
|
22
23
|
closeText?: string;
|
|
23
24
|
deleteSuccessText?: string;
|
|
@@ -66,6 +67,13 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
66
67
|
addConfirmText?: string;
|
|
67
68
|
addCancelText?: string;
|
|
68
69
|
};
|
|
70
|
+
importDialog: {
|
|
71
|
+
fileSupport?: [string, string];
|
|
72
|
+
clickDownloadTplText?: string;
|
|
73
|
+
downloadTplText?: string;
|
|
74
|
+
successText?: string;
|
|
75
|
+
failText?: string;
|
|
76
|
+
};
|
|
69
77
|
})[T]> = keyof NonNullable<(Omit<import("tdesign-vue-next").GlobalConfigProvider | undefined, "upload" | "chat"> & {
|
|
70
78
|
loading?: {
|
|
71
79
|
text?: string;
|
|
@@ -84,6 +92,7 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
84
92
|
viewText?: string;
|
|
85
93
|
editText?: string;
|
|
86
94
|
deleteText?: string;
|
|
95
|
+
importText?: string;
|
|
87
96
|
operationText?: string;
|
|
88
97
|
closeText?: string;
|
|
89
98
|
deleteSuccessText?: string;
|
|
@@ -132,6 +141,13 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
132
141
|
addConfirmText?: string;
|
|
133
142
|
addCancelText?: string;
|
|
134
143
|
};
|
|
144
|
+
importDialog: {
|
|
145
|
+
fileSupport?: [string, string];
|
|
146
|
+
clickDownloadTplText?: string;
|
|
147
|
+
downloadTplText?: string;
|
|
148
|
+
successText?: string;
|
|
149
|
+
failText?: string;
|
|
150
|
+
};
|
|
135
151
|
})[T]>>(path: T_1) => NonNullable<NonNullable<(Omit<import("tdesign-vue-next").GlobalConfigProvider | undefined, "upload" | "chat"> & {
|
|
136
152
|
loading?: {
|
|
137
153
|
text?: string;
|
|
@@ -150,6 +166,7 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
150
166
|
viewText?: string;
|
|
151
167
|
editText?: string;
|
|
152
168
|
deleteText?: string;
|
|
169
|
+
importText?: string;
|
|
153
170
|
operationText?: string;
|
|
154
171
|
closeText?: string;
|
|
155
172
|
deleteSuccessText?: string;
|
|
@@ -198,6 +215,13 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
198
215
|
addConfirmText?: string;
|
|
199
216
|
addCancelText?: string;
|
|
200
217
|
};
|
|
218
|
+
importDialog: {
|
|
219
|
+
fileSupport?: [string, string];
|
|
220
|
+
clickDownloadTplText?: string;
|
|
221
|
+
downloadTplText?: string;
|
|
222
|
+
successText?: string;
|
|
223
|
+
failText?: string;
|
|
224
|
+
};
|
|
201
225
|
})[T]>[T_1]>;
|
|
202
226
|
global: import("vue").ComputedRef<NonNullable<(Omit<import("tdesign-vue-next").GlobalConfigProvider | undefined, "upload" | "chat"> & {
|
|
203
227
|
loading?: {
|
|
@@ -217,6 +241,7 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
217
241
|
viewText?: string;
|
|
218
242
|
editText?: string;
|
|
219
243
|
deleteText?: string;
|
|
244
|
+
importText?: string;
|
|
220
245
|
operationText?: string;
|
|
221
246
|
closeText?: string;
|
|
222
247
|
deleteSuccessText?: string;
|
|
@@ -265,5 +290,12 @@ export declare function useConfig<T extends keyof NonNullable<QdConfigProviderPr
|
|
|
265
290
|
addConfirmText?: string;
|
|
266
291
|
addCancelText?: string;
|
|
267
292
|
};
|
|
293
|
+
importDialog: {
|
|
294
|
+
fileSupport?: [string, string];
|
|
295
|
+
clickDownloadTplText?: string;
|
|
296
|
+
downloadTplText?: string;
|
|
297
|
+
successText?: string;
|
|
298
|
+
failText?: string;
|
|
299
|
+
};
|
|
268
300
|
})[T]>>;
|
|
269
301
|
};
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { defineComponent, mergeDefaults, useTemplateRef, ref, computed, createBlock, openBlock, mergeProps, unref, isRef, createSlots, withCtx, createVNode, renderList, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString } from "vue";
|
|
2
2
|
import { Button } from "tdesign-vue-next";
|
|
3
|
-
import {
|
|
3
|
+
import { qdDialogFormProps } from "./props.mjs";
|
|
4
4
|
import { useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.26_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
|
|
5
5
|
import { suspectedWrapperPromise, easyCopy, extractSlotsWithPrefix, extractSlotsWithoutPrefix } from "qidian-shared";
|
|
6
6
|
import _sfc_main$1 from "./index.vue.mjs";
|
|
7
7
|
/* empty css */
|
|
8
8
|
import { useConfig } from "../config-provider/useConfig.mjs";
|
|
9
|
-
import merge from "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/merge.mjs";
|
|
10
9
|
import QdForm from "../form/index.vue.mjs";
|
|
11
10
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
12
11
|
__name: "form",
|
|
@@ -62,8 +61,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
62
61
|
loading,
|
|
63
62
|
...qdFormOptions
|
|
64
63
|
} = props;
|
|
65
|
-
const
|
|
66
|
-
const reConfirmLoading = formSubmitLoad.value || reWrapper.confirmLoading;
|
|
64
|
+
const reConfirmLoading = formSubmitLoad.value || wrapper.confirmLoading;
|
|
67
65
|
return {
|
|
68
66
|
crudMode,
|
|
69
67
|
qdFormOptions: {
|
|
@@ -83,23 +81,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
83
81
|
}
|
|
84
82
|
},
|
|
85
83
|
qdDialogOptions: {
|
|
86
|
-
...
|
|
84
|
+
...wrapper,
|
|
87
85
|
onOpened: () => {
|
|
88
86
|
Object.assign(expose, formRef.value);
|
|
89
|
-
|
|
87
|
+
wrapper.onOpened?.();
|
|
90
88
|
},
|
|
91
89
|
onBeforeClose: () => {
|
|
92
90
|
formRef.value?.reset();
|
|
93
|
-
|
|
91
|
+
wrapper.onBeforeClose?.();
|
|
94
92
|
},
|
|
95
93
|
confirmLoading: reConfirmLoading,
|
|
96
|
-
closeOnEscKeydown: loading || reConfirmLoading ? false :
|
|
97
|
-
closeOnOverlayClick: loading || reConfirmLoading ? false :
|
|
98
|
-
closeBtn: loading || reConfirmLoading ? false :
|
|
99
|
-
confirmBtn: loading || reConfirmLoading ? typeof
|
|
100
|
-
cancelBtn: loading || reConfirmLoading ? typeof
|
|
94
|
+
closeOnEscKeydown: loading || reConfirmLoading ? false : wrapper.closeOnEscKeydown,
|
|
95
|
+
closeOnOverlayClick: loading || reConfirmLoading ? false : wrapper.closeOnOverlayClick,
|
|
96
|
+
closeBtn: loading || reConfirmLoading ? false : wrapper.closeBtn,
|
|
97
|
+
confirmBtn: loading || reConfirmLoading ? typeof wrapper.confirmBtn === "object" ? { ...wrapper.confirmBtn, disabled: true } : { disabled: true } : wrapper.confirmBtn,
|
|
98
|
+
cancelBtn: loading || reConfirmLoading ? typeof wrapper.cancelBtn === "object" ? { ...wrapper.cancelBtn, disabled: true } : { disabled: true } : wrapper.cancelBtn,
|
|
101
99
|
onConfirm: (done) => {
|
|
102
|
-
const onConfirm =
|
|
100
|
+
const onConfirm = wrapper.onConfirm;
|
|
103
101
|
if (onConfirm) return onConfirm?.(done);
|
|
104
102
|
const submit = formRef.value?.submit;
|
|
105
103
|
if (submit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.vue.mjs","sources":["../../../src/components/dialog/form.vue"],"sourcesContent":["<template>\n <qd-dialog v-model:visible=\"visible\" v-bind=\"reProps.qdDialogOptions\">\n <template v-if=\"reProps.crudMode === 'view'\" #footer>\n <t-button theme=\"default\" @click=\"hide\">{{ t('closeText') }}</t-button>\n </template>\n\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'form')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" :context=\"data\" />\n </template>\n\n <qd-form ref=\"form\" v-model:data=\"data\" v-bind=\"reProps.qdFormOptions\">\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'form')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-form>\n </qd-dialog>\n</template>\n\n<script setup lang=\"ts\" generic=\"FD extends Data = Data\">\n import type { QdDialogDone, QdDialogFormInstanceFunctions, QdDialogFormProps } from './types'\n import type { FormInstanceFunctions, Data } from 'tdesign-vue-next'\n import type { QdFormProps, QdFormSubmitContext } from '../form'\n import { Button as TButton } from 'tdesign-vue-next'\n import { qdDialogFormProps
|
|
1
|
+
{"version":3,"file":"form.vue.mjs","sources":["../../../src/components/dialog/form.vue"],"sourcesContent":["<template>\n <qd-dialog v-model:visible=\"visible\" v-bind=\"reProps.qdDialogOptions\">\n <template v-if=\"reProps.crudMode === 'view'\" #footer>\n <t-button theme=\"default\" @click=\"hide\">{{ t('closeText') }}</t-button>\n </template>\n\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'form')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" :context=\"data\" />\n </template>\n\n <qd-form ref=\"form\" v-model:data=\"data\" v-bind=\"reProps.qdFormOptions\">\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'form')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-form>\n </qd-dialog>\n</template>\n\n<script setup lang=\"ts\" generic=\"FD extends Data = Data\">\n import type { QdDialogDone, QdDialogFormInstanceFunctions, QdDialogFormProps } from './types'\n import type { FormInstanceFunctions, Data } from 'tdesign-vue-next'\n import type { QdFormProps, QdFormSubmitContext } from '../form'\n import { Button as TButton } from 'tdesign-vue-next'\n import { qdDialogFormProps } from './props'\n import { computed, useTemplateRef, ref } from 'vue'\n import { useVModels } from '@vueuse/core'\n import {\n easyCopy,\n extractSlotsWithoutPrefix,\n extractSlotsWithPrefix,\n suspectedWrapperPromise\n } from 'qidian-shared'\n import QdDialog from './index.vue'\n import { QdForm } from '../form'\n import { useConfig } from '../config-provider/useConfig'\n\n type Props = QdDialogFormProps<FD>\n\n const props = withDefaults(defineProps<Props>(), qdDialogFormProps)\n const emit = defineEmits<{\n 'update:visible': [Props['visible']]\n 'update:data': [Props['data']]\n }>()\n const { visible, data } = useVModels<typeof props, keyof typeof emit>(props, emit, {\n passive: true\n })\n\n const { t } = useConfig('crud')\n const formRef = useTemplateRef<FormInstanceFunctions>('form')\n const formSubmitLoad = ref(false)\n\n const reProps = computed(() => {\n const {\n crudMode,\n data,\n visible: inVisible,\n wrapper,\n onSubmit,\n loading,\n ...qdFormOptions\n } = props\n const reConfirmLoading = formSubmitLoad.value || wrapper.confirmLoading\n\n return {\n crudMode,\n qdFormOptions: {\n ...qdFormOptions,\n loading,\n crudMode,\n onSubmit: async (context: QdFormSubmitContext<FD>) => {\n if (!onSubmit) {\n formSubmitLoad.value = false\n return\n }\n\n formSubmitLoad.value = true\n const [err, res] = await suspectedWrapperPromise(onSubmit(context))\n formSubmitLoad.value = false\n if (err || res === false) return\n\n visible.value = false\n }\n } as unknown as QdFormProps,\n qdDialogOptions: {\n ...wrapper,\n\n onOpened: () => {\n Object.assign(expose, formRef.value)\n wrapper.onOpened?.()\n },\n\n onBeforeClose: () => {\n formRef.value?.reset()\n wrapper.onBeforeClose?.()\n },\n\n confirmLoading: reConfirmLoading,\n closeOnEscKeydown: loading || reConfirmLoading ? false : wrapper.closeOnEscKeydown,\n closeOnOverlayClick: loading || reConfirmLoading ? false : wrapper.closeOnOverlayClick,\n closeBtn: loading || reConfirmLoading ? false : wrapper.closeBtn,\n\n confirmBtn:\n loading || reConfirmLoading\n ? typeof wrapper.confirmBtn === 'object'\n ? { ...wrapper.confirmBtn, disabled: true }\n : { disabled: true }\n : wrapper.confirmBtn,\n cancelBtn:\n loading || reConfirmLoading\n ? typeof wrapper.cancelBtn === 'object'\n ? { ...wrapper.cancelBtn, disabled: true }\n : { disabled: true }\n : wrapper.cancelBtn,\n\n onConfirm: (done: QdDialogDone) => {\n const onConfirm = wrapper.onConfirm\n if (onConfirm) return onConfirm?.(done)\n\n const submit = formRef.value?.submit\n if (submit) {\n formSubmitLoad.value = true\n submit()\n }\n return false\n }\n },\n models: { data, visible: inVisible }\n }\n })\n\n function show(newData?: FD) {\n if (newData != undefined) data.value = easyCopy(newData)\n visible.value = true\n }\n\n function hide() {\n visible.value = false\n }\n\n const expose = {\n show,\n hide\n } as QdDialogFormInstanceFunctions\n\n defineExpose(expose)\n</script>\n"],"names":["data","_openBlock","_createBlock","QdDialog","_mergeProps","_unref","_createSlots","_createVNode","$slots","_withCtx","_renderSlot","TButton"],"mappings":"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"}
|
|
@@ -15,6 +15,22 @@ export declare const qdDialogProps: {
|
|
|
15
15
|
readonly showOverlay: true;
|
|
16
16
|
};
|
|
17
17
|
export declare const qdDialogFormProps: {
|
|
18
|
+
readonly wrapper: () => {
|
|
19
|
+
readonly width: "min(960px, 100%)";
|
|
20
|
+
readonly theme: "default";
|
|
21
|
+
readonly attach: "body";
|
|
22
|
+
readonly header: true;
|
|
23
|
+
readonly footer: true;
|
|
24
|
+
readonly closeBtn: true;
|
|
25
|
+
readonly closeOnEscKeydown: true;
|
|
26
|
+
readonly closeOnOverlayClick: false;
|
|
27
|
+
readonly confirmOnEnter: undefined;
|
|
28
|
+
readonly destroyOnClose: false;
|
|
29
|
+
readonly lazy: true;
|
|
30
|
+
readonly placement: "center";
|
|
31
|
+
readonly preventScrollThrough: true;
|
|
32
|
+
readonly showOverlay: true;
|
|
33
|
+
};
|
|
18
34
|
readonly gutter: () => number[];
|
|
19
35
|
readonly grid: () => {
|
|
20
36
|
col: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.mjs","sources":["../../../src/components/dialog/props.ts"],"sourcesContent":["import { qdFormProps } from '../form/props'\n\nexport const qdDialogProps = {\n width: 'min(960px, 100%)',\n theme: 'default',\n attach: 'body',\n header: true,\n footer: true,\n closeBtn: true,\n closeOnEscKeydown: true,\n closeOnOverlayClick: false,\n confirmOnEnter: undefined,\n destroyOnClose: false,\n lazy: true,\n placement: 'center',\n preventScrollThrough: true,\n showOverlay: true\n} as const\n\nexport const qdDialogFormProps = {\n ...qdFormProps\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,aAAa;AACf;AAEO,MAAM,oBAAoB;AAAA,EAC/B,GAAG;
|
|
1
|
+
{"version":3,"file":"props.mjs","sources":["../../../src/components/dialog/props.ts"],"sourcesContent":["import { qdFormProps } from '../form/props'\n\nexport const qdDialogProps = {\n width: 'min(960px, 100%)',\n theme: 'default',\n attach: 'body',\n header: true,\n footer: true,\n closeBtn: true,\n closeOnEscKeydown: true,\n closeOnOverlayClick: false,\n confirmOnEnter: undefined,\n destroyOnClose: false,\n lazy: true,\n placement: 'center',\n preventScrollThrough: true,\n showOverlay: true\n} as const\n\nexport const qdDialogFormProps = {\n ...qdFormProps,\n\n wrapper: () => qdDialogProps\n} as const\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,aAAa;AACf;AAEO,MAAM,oBAAoB;AAAA,EAC/B,GAAG;AAAA,EAEH,SAAS,MAAM;AACjB;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { InjectionKey } from 'vue';
|
|
2
2
|
import type { QdFormBeforeSubmitQueueItem } from './types';
|
|
3
3
|
export declare const PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE: InjectionKey<(item: QdFormBeforeSubmitQueueItem) => void>;
|
|
4
|
+
export declare const PROVIDE_FORM_RESET_QUEUE: InjectionKey<(item: () => void) => void>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE = Symbol("QdFormAddBeforeSubmitQueue");
|
|
2
|
+
const PROVIDE_FORM_RESET_QUEUE = Symbol("QdFormResetQueue");
|
|
2
3
|
export {
|
|
3
|
-
PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE
|
|
4
|
+
PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE,
|
|
5
|
+
PROVIDE_FORM_RESET_QUEUE
|
|
4
6
|
};
|
|
5
7
|
//# sourceMappingURL=config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","sources":["../../../src/components/form/config.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { QdFormBeforeSubmitQueueItem } from './types'\n\n/** 提交前需要处理的队列 */\nexport const PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE: InjectionKey<\n (item: QdFormBeforeSubmitQueueItem) => void\n> = Symbol('QdFormAddBeforeSubmitQueue')\n"],"names":[],"mappings":"AAIO,MAAM,uCAET,OAAO,4BAA4B;"}
|
|
1
|
+
{"version":3,"file":"config.mjs","sources":["../../../src/components/form/config.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { QdFormBeforeSubmitQueueItem } from './types'\n\n/** 提交前需要处理的队列 */\nexport const PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE: InjectionKey<\n (item: QdFormBeforeSubmitQueueItem) => void\n> = Symbol('QdFormAddBeforeSubmitQueue')\n\n/** 重置时需要处理的队列 */\nexport const PROVIDE_FORM_RESET_QUEUE: InjectionKey<(item: () => void) => void> = Symbol('QdFormResetQueue')"],"names":[],"mappings":"AAIO,MAAM,uCAET,OAAO,4BAA4B;AAGhC,MAAM,2BAAqE,OAAO,kBAAkB;"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
.qd-form--descriptions[data-v-
|
|
1
|
+
.qd-form--descriptions[data-v-e8596008] .qd-grid {
|
|
2
2
|
border-top: 1px solid var(--td-component-border);
|
|
3
3
|
border-left: 1px solid var(--td-component-border);
|
|
4
4
|
}
|
|
5
|
-
.qd-form--descriptions[data-v-
|
|
5
|
+
.qd-form--descriptions[data-v-e8596008] .qd-grid-item {
|
|
6
6
|
border-right: 1px solid var(--td-component-border);
|
|
7
7
|
border-bottom: 1px solid var(--td-component-border);
|
|
8
8
|
}
|
|
9
|
-
.qd-form--descriptions[data-v-
|
|
9
|
+
.qd-form--descriptions[data-v-e8596008] .t-form__item {
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: stretch;
|
|
12
12
|
height: 100%;
|
|
13
13
|
}
|
|
14
|
-
.qd-form--descriptions[data-v-
|
|
14
|
+
.qd-form--descriptions[data-v-e8596008] .t-form__label {
|
|
15
15
|
display: flex;
|
|
16
16
|
flex-direction: column;
|
|
17
17
|
justify-content: center;
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
height: 100%;
|
|
21
21
|
border-right: 1px solid var(--td-component-border);
|
|
22
22
|
}
|
|
23
|
-
.qd-form--descriptions[data-v-
|
|
23
|
+
.qd-form--descriptions[data-v-e8596008] .t-form__controls {
|
|
24
24
|
flex: 1 1 0;
|
|
25
25
|
overflow: hidden;
|
|
26
26
|
display: flex;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as QdForm } from './index.vue';
|
|
2
2
|
export { default as QdFormItem } from './item.vue';
|
|
3
|
-
export { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE } from './config';
|
|
3
|
+
export { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE, PROVIDE_FORM_RESET_QUEUE } from './config';
|
|
4
4
|
export { qdFormGutter, qdFormGrid } from './props';
|
|
5
5
|
export type { QdFormBeforeSubmitQueueResult, QdFormBeforeSubmitQueueItem, QdFormProps, QdFormSubmitContext, QdFormItemProps } from './types';
|
|
@@ -2,7 +2,7 @@ import './index.css'
|
|
|
2
2
|
import _sfc_main from "./index.vue2.mjs";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
5
|
-
const QdForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
const QdForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e8596008"]]);
|
|
6
6
|
export {
|
|
7
7
|
QdForm as default
|
|
8
8
|
};
|
|
@@ -2,7 +2,7 @@ import './index.css'
|
|
|
2
2
|
import { defineComponent, mergeDefaults, provide, nextTick, onBeforeUnmount, useTemplateRef, ref, computed, onMounted, withDirectives, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot, normalizeProps, guardReactiveProps, createVNode, createElementBlock, Fragment, renderList } from "vue";
|
|
3
3
|
import { Form, LoadingDirective } from "tdesign-vue-next";
|
|
4
4
|
import QdFormItem from "./item.vue.mjs";
|
|
5
|
-
import { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE } from "./config.mjs";
|
|
5
|
+
import { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE, PROVIDE_FORM_RESET_QUEUE } from "./config.mjs";
|
|
6
6
|
import { suspectedWrapperPromise, easyCopy } from "qidian-shared";
|
|
7
7
|
import { qdFormGrid, qdFormProps } from "./props.mjs";
|
|
8
8
|
import { useVModels } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.26_typescript@5.9.3_/node_modules/@vueuse/core/dist/index.mjs";
|
|
@@ -61,6 +61,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
61
61
|
beforeSubmitQueue.splice(index, 1);
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
|
+
const resetQueue = [];
|
|
65
|
+
provide(PROVIDE_FORM_RESET_QUEUE, (item) => {
|
|
66
|
+
const index = resetQueue.length;
|
|
67
|
+
nextTick(() => {
|
|
68
|
+
resetQueue.push(item);
|
|
69
|
+
});
|
|
70
|
+
onBeforeUnmount(() => {
|
|
71
|
+
resetQueue.splice(index, 1);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
64
74
|
const formRef = useTemplateRef("form");
|
|
65
75
|
const submitShowErrorMessage = ref();
|
|
66
76
|
const reProps = computed(() => {
|
|
@@ -73,15 +83,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
73
83
|
data: data2,
|
|
74
84
|
scrollToFirstError,
|
|
75
85
|
loading: externalLoad,
|
|
86
|
+
onReset,
|
|
76
87
|
...formOptions
|
|
77
88
|
} = props;
|
|
89
|
+
const reOnReset = (context) => {
|
|
90
|
+
resetQueue.forEach((item) => item());
|
|
91
|
+
onReset?.(context);
|
|
92
|
+
};
|
|
78
93
|
return {
|
|
79
94
|
descriptions,
|
|
80
95
|
externalLoad,
|
|
81
96
|
formOptions: {
|
|
82
97
|
...formOptions,
|
|
83
98
|
labelAlign: descriptions ? "left" : formOptions.labelAlign,
|
|
84
|
-
scrollToFirstError: submitShowErrorMessage.value === false ? "" : scrollToFirstError
|
|
99
|
+
scrollToFirstError: submitShowErrorMessage.value === false ? "" : scrollToFirstError,
|
|
100
|
+
onReset: reOnReset
|
|
85
101
|
},
|
|
86
102
|
formItems: items,
|
|
87
103
|
gridOptions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/form/index.vue"],"sourcesContent":["<template>\n <t-form\n ref=\"form\"\n :class=\"[\n 'qd-form',\n $slots.footer ? 'qd-form--has-footer' : '',\n reProps.descriptions ? 'qd-form--descriptions' : ''\n ]\"\n v-loading=\"formLoad\"\n v-bind=\"reProps.formOptions\"\n :data=\"data\"\n @submit=\"handleSubmit\"\n >\n <slot name=\"header\" :context=\"data\" />\n\n <slot v-bind=\"reProps.gridOptions\">\n <qd-grid v-bind=\"reProps.gridOptions\">\n <qd-form-item\n v-for=\"(item, index) in reProps.formItems\"\n :key=\"index\"\n :crud-mode=\"crudMode\"\n :context=\"data\"\n :default-clearable=\"defaultClearable\"\n v-bind=\"item\"\n />\n </qd-grid>\n </slot>\n\n <slot name=\"footer\" :context=\"data\" />\n </t-form>\n</template>\n\n<script setup lang=\"ts\" generic=\"FD extends Data = Data\">\n import type { Data, FormInstanceFunctions, SubmitContext } from 'tdesign-vue-next'\n import type { QdFormBeforeSubmitQueueItem, QdFormProps } from './types'\n import { computed, nextTick, provide, onBeforeUnmount, useTemplateRef, ref, onMounted } from 'vue'\n import { Form as TForm, LoadingDirective } from 'tdesign-vue-next'\n import QdFormItem from './item.vue'\n import { QdGrid } from '../grid'\n import { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE } from './config'\n import { suspectedWrapperPromise, easyCopy } from 'qidian-shared'\n import { qdFormGrid, qdFormProps } from './props'\n import { useVModels } from '@vueuse/core'\n import { useModal } from '../../hooks/useModal'\n import { merge } from 'lodash-es'\n\n defineOptions({\n name: 'QdForm'\n })\n\n const vLoading = LoadingDirective\n\n type Props = QdFormProps<Data>\n\n const props = withDefaults(defineProps<QdFormProps<Data>>(), qdFormProps)\n const emit = defineEmits<{\n 'update:modelValue': [Props['data']]\n }>()\n const { data } = useVModels(props, emit, { passive: true })\n\n const { msgError } = useModal()\n\n const beforeSubmitQueue: QdFormBeforeSubmitQueueItem[] = [] // 提交前需要处理的队列\n provide(PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE, (item: QdFormBeforeSubmitQueueItem) => {\n const index = beforeSubmitQueue.length\n nextTick(() => {\n beforeSubmitQueue.push(item)\n })\n onBeforeUnmount(() => {\n beforeSubmitQueue.splice(index, 1)\n })\n })\n\n const formRef = useTemplateRef<FormInstanceFunctions>('form')\n const submitShowErrorMessage = ref<boolean | undefined>()\n\n const reProps = computed(() => {\n const {\n grid,\n gutter,\n descriptions,\n items,\n onSubmit,\n data,\n scrollToFirstError,\n loading: externalLoad,\n ...formOptions\n } = props\n\n return {\n descriptions,\n externalLoad,\n formOptions: {\n ...formOptions,\n labelAlign: descriptions ? 'left' : formOptions.labelAlign,\n scrollToFirstError: submitShowErrorMessage.value === false ? '' : scrollToFirstError\n },\n formItems: items,\n gridOptions: {\n grid: merge({}, qdFormGrid, grid),\n gutter: descriptions ? 0 : gutter\n },\n onSubmit,\n models: { data }\n }\n })\n\n const formLoad = computed(() => {\n return {\n loading: reProps.value.externalLoad,\n size: 'small',\n ...props.loadingProps\n }\n })\n\n async function handleSubmit(context: SubmitContext) {\n const showErrorMessage = submitShowErrorMessage.value ?? props.showErrorMessage\n submitShowErrorMessage.value = undefined\n\n if (showErrorMessage && context.firstError) {\n msgError(context.firstError)\n }\n\n if (context.validateResult === true || !showErrorMessage) {\n const queueRes = await Promise.all(\n beforeSubmitQueue.map((item) => suspectedWrapperPromise(item()))\n )\n\n const reQueueRes = { success: true, message: '' }\n queueRes.some(([err, res]) => {\n if (err) {\n reQueueRes.success = false\n reQueueRes.message = err.message\n return true\n }\n\n if (res === false) {\n reQueueRes.success = false\n return true\n }\n\n if (typeof res === 'object' && !res.success) {\n reQueueRes.success = false\n reQueueRes.message = res.message || ''\n return true\n }\n })\n\n if (reQueueRes.success === false) {\n if (showErrorMessage && reQueueRes.message) {\n msgError(reQueueRes.message)\n }\n return\n }\n }\n\n props.onSubmit?.({\n ...context,\n showErrorMessage,\n formData: easyCopy(data.value),\n crudMode: reProps.value.formOptions.crudMode\n })\n }\n\n const expose = {} as FormInstanceFunctions\n\n onMounted(() => {\n const submit: FormInstanceFunctions['submit'] = async (params) => {\n submitShowErrorMessage.value = params?.showErrorMessage\n formRef.value?.submit(params)\n }\n\n Object.assign(expose, formRef.value, { submit })\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-form {\n &--descriptions {\n :deep(.qd-grid) {\n border-top: 1px solid var(--td-component-border);\n border-left: 1px solid var(--td-component-border);\n }\n\n :deep(.qd-grid-item) {\n border-right: 1px solid var(--td-component-border);\n border-bottom: 1px solid var(--td-component-border);\n }\n\n :deep(.t-form) {\n &__item {\n display: flex;\n align-items: stretch;\n height: 100%;\n }\n\n &__label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n background-color: var(--td-bg-color-secondarycontainer);\n padding: var(--td-comp-paddingLR-m) var(--td-comp-paddingLR-l);\n height: 100%;\n border-right: 1px solid var(--td-component-border);\n }\n\n &__controls {\n flex: 1 1 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: var(--td-comp-paddingLR-m) var(--td-comp-paddingLR-l);\n margin-left: 0 !important;\n height: 100%;\n }\n }\n }\n }\n</style>\n"],"names":["data","_withDirectives","_openBlock","_createBlock","_unref","_mergeProps","$slots","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode","_createElementBlock","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/form/index.vue"],"sourcesContent":["<template>\n <t-form\n ref=\"form\"\n :class=\"[\n 'qd-form',\n $slots.footer ? 'qd-form--has-footer' : '',\n reProps.descriptions ? 'qd-form--descriptions' : ''\n ]\"\n v-loading=\"formLoad\"\n v-bind=\"reProps.formOptions\"\n :data=\"data\"\n @submit=\"handleSubmit\"\n >\n <slot name=\"header\" :context=\"data\" />\n\n <slot v-bind=\"reProps.gridOptions\">\n <qd-grid v-bind=\"reProps.gridOptions\">\n <qd-form-item\n v-for=\"(item, index) in reProps.formItems\"\n :key=\"index\"\n :crud-mode=\"crudMode\"\n :context=\"data\"\n :default-clearable=\"defaultClearable\"\n v-bind=\"item\"\n />\n </qd-grid>\n </slot>\n\n <slot name=\"footer\" :context=\"data\" />\n </t-form>\n</template>\n\n<script setup lang=\"ts\" generic=\"FD extends Data = Data\">\n import type { Data, FormInstanceFunctions, SubmitContext } from 'tdesign-vue-next'\n import type { QdFormBeforeSubmitQueueItem, QdFormProps } from './types'\n import { computed, nextTick, provide, onBeforeUnmount, useTemplateRef, ref, onMounted } from 'vue'\n import { Form as TForm, LoadingDirective } from 'tdesign-vue-next'\n import QdFormItem from './item.vue'\n import { QdGrid } from '../grid'\n import { PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE, PROVIDE_FORM_RESET_QUEUE } from './config'\n import { suspectedWrapperPromise, easyCopy } from 'qidian-shared'\n import { qdFormGrid, qdFormProps } from './props'\n import { useVModels } from '@vueuse/core'\n import { useModal } from '../../hooks/useModal'\n import { merge } from 'lodash-es'\n\n defineOptions({\n name: 'QdForm'\n })\n\n const vLoading = LoadingDirective\n\n type Props = QdFormProps<Data>\n\n const props = withDefaults(defineProps<QdFormProps<Data>>(), qdFormProps)\n const emit = defineEmits<{\n 'update:modelValue': [Props['data']]\n }>()\n const { data } = useVModels(props, emit, { passive: true })\n\n const { msgError } = useModal()\n\n const beforeSubmitQueue: QdFormBeforeSubmitQueueItem[] = [] // 提交前需要处理的队列\n provide(PROVIDE_FORM_ADD_BEFORE_SUBMIT_QUEUE, (item: QdFormBeforeSubmitQueueItem) => {\n const index = beforeSubmitQueue.length\n nextTick(() => {\n beforeSubmitQueue.push(item)\n })\n onBeforeUnmount(() => {\n beforeSubmitQueue.splice(index, 1)\n })\n })\n\n const resetQueue: (() => void)[] = []\n provide(PROVIDE_FORM_RESET_QUEUE, (item: (typeof resetQueue)[number]) => {\n const index = resetQueue.length\n nextTick(() => {\n resetQueue.push(item)\n })\n onBeforeUnmount(() => {\n resetQueue.splice(index, 1)\n })\n })\n\n const formRef = useTemplateRef<FormInstanceFunctions>('form')\n const submitShowErrorMessage = ref<boolean | undefined>()\n\n const reProps = computed(() => {\n const {\n grid,\n gutter,\n descriptions,\n items,\n onSubmit,\n data,\n scrollToFirstError,\n loading: externalLoad,\n onReset,\n ...formOptions\n } = props\n\n const reOnReset: typeof onReset = (context) => {\n resetQueue.forEach((item) => item())\n onReset?.(context)\n }\n\n return {\n descriptions,\n externalLoad,\n formOptions: {\n ...formOptions,\n labelAlign: descriptions ? 'left' : formOptions.labelAlign,\n scrollToFirstError: submitShowErrorMessage.value === false ? '' : scrollToFirstError,\n onReset: reOnReset,\n },\n formItems: items,\n gridOptions: {\n grid: merge({}, qdFormGrid, grid),\n gutter: descriptions ? 0 : gutter\n },\n onSubmit,\n models: { data }\n }\n })\n\n const formLoad = computed(() => {\n return {\n loading: reProps.value.externalLoad,\n size: 'small',\n ...props.loadingProps\n }\n })\n\n async function handleSubmit(context: SubmitContext) {\n const showErrorMessage = submitShowErrorMessage.value ?? props.showErrorMessage\n submitShowErrorMessage.value = undefined\n\n if (showErrorMessage && context.firstError) {\n msgError(context.firstError)\n }\n\n if (context.validateResult === true || !showErrorMessage) {\n const queueRes = await Promise.all(\n beforeSubmitQueue.map((item) => suspectedWrapperPromise(item()))\n )\n\n const reQueueRes = { success: true, message: '' }\n queueRes.some(([err, res]) => {\n if (err) {\n reQueueRes.success = false\n reQueueRes.message = err.message\n return true\n }\n\n if (res === false) {\n reQueueRes.success = false\n return true\n }\n\n if (typeof res === 'object' && !res.success) {\n reQueueRes.success = false\n reQueueRes.message = res.message || ''\n return true\n }\n })\n\n if (reQueueRes.success === false) {\n if (showErrorMessage && reQueueRes.message) {\n msgError(reQueueRes.message)\n }\n return\n }\n }\n\n props.onSubmit?.({\n ...context,\n showErrorMessage,\n formData: easyCopy(data.value),\n crudMode: reProps.value.formOptions.crudMode\n })\n }\n\n const expose = {} as FormInstanceFunctions\n\n onMounted(() => {\n const submit: FormInstanceFunctions['submit'] = async (params) => {\n submitShowErrorMessage.value = params?.showErrorMessage\n formRef.value?.submit(params)\n }\n\n Object.assign(expose, formRef.value, { submit })\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-form {\n &--descriptions {\n :deep(.qd-grid) {\n border-top: 1px solid var(--td-component-border);\n border-left: 1px solid var(--td-component-border);\n }\n\n :deep(.qd-grid-item) {\n border-right: 1px solid var(--td-component-border);\n border-bottom: 1px solid var(--td-component-border);\n }\n\n :deep(.t-form) {\n &__item {\n display: flex;\n align-items: stretch;\n height: 100%;\n }\n\n &__label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n background-color: var(--td-bg-color-secondarycontainer);\n padding: var(--td-comp-paddingLR-m) var(--td-comp-paddingLR-l);\n height: 100%;\n border-right: 1px solid var(--td-component-border);\n }\n\n &__controls {\n flex: 1 1 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: var(--td-comp-paddingLR-m) var(--td-comp-paddingLR-l);\n margin-left: 0 !important;\n height: 100%;\n }\n }\n }\n }\n</style>\n"],"names":["data","_withDirectives","_openBlock","_createBlock","_unref","_mergeProps","$slots","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode","_createElementBlock","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QdImportDialogProps } from './types';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<QdImportDialogProps, {
|
|
3
|
+
show: () => void;
|
|
4
|
+
hide: () => void;
|
|
5
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
+
"update:visible": (args_0: boolean | undefined) => any;
|
|
7
|
+
}, string, import("vue").PublicProps, Readonly<QdImportDialogProps> & Readonly<{
|
|
8
|
+
"onUpdate:visible"?: ((args_0: boolean | undefined) => any) | undefined;
|
|
9
|
+
}>, {
|
|
10
|
+
name: string;
|
|
11
|
+
accept: string[];
|
|
12
|
+
method: "POST" | "GET" | "PUT" | "OPTIONS" | "PATCH" | "post" | "get" | "put" | "options" | "patch";
|
|
13
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
export default _default;
|