qidian-vue-ui 1.1.57 → 1.1.59
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/dialog/form.vue.mjs +13 -11
- package/dist/components/dialog/form.vue.mjs.map +1 -1
- package/dist/components/dialog/props.d.ts +0 -16
- package/dist/components/dialog/props.mjs +1 -2
- package/dist/components/dialog/props.mjs.map +1 -1
- package/dist/components/form/index.css +5 -5
- package/dist/components/form/index.vue.mjs +1 -1
- package/dist/components/form/index.vue2.mjs +0 -4
- package/dist/components/form/index.vue2.mjs.map +1 -1
- package/dist/components/form/item.css +2 -2
- package/dist/components/form/item.vue.mjs +1 -1
- package/dist/components/form/item.vue2.mjs +5 -2
- package/dist/components/form/item.vue2.mjs.map +1 -1
- package/dist/components/md-editor/index.vue.mjs +1 -1
- package/dist/components/md-editor/index.vue2.mjs +10 -3
- package/dist/components/md-editor/index.vue2.mjs.map +1 -1
- package/dist/components/md-editor/index2.css +33 -9
- package/dist/components/service/list/index.css +3 -3
- package/dist/components/service/list/index.vue.d.ts +2 -2
- package/dist/components/service/list/index.vue.mjs +1 -1
- package/dist/components/service/list/index.vue2.mjs +2 -2
- package/dist/components/service/list/index.vue2.mjs.map +1 -1
- package/dist/node_modules/.pnpm/tdesign-vue-next@1.17.1_vue@3.5.26_typescript@5.9.3_/node_modules/tdesign-vue-next/es/form/consts/index.mjs +11 -0
- package/dist/node_modules/.pnpm/tdesign-vue-next@1.17.1_vue@3.5.26_typescript@5.9.3_/node_modules/tdesign-vue-next/es/form/consts/index.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
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 { qdDialogFormProps } from "./props.mjs";
|
|
3
|
+
import { qdDialogProps, 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";
|
|
9
10
|
import QdForm from "../form/index.vue.mjs";
|
|
10
11
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
12
|
__name: "form",
|
|
@@ -61,7 +62,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
61
62
|
loading,
|
|
62
63
|
...qdFormOptions
|
|
63
64
|
} = props;
|
|
64
|
-
const
|
|
65
|
+
const reWrapper = merge({}, qdDialogProps, wrapper);
|
|
66
|
+
const reConfirmLoading = formSubmitLoad.value || reWrapper.confirmLoading;
|
|
65
67
|
return {
|
|
66
68
|
crudMode,
|
|
67
69
|
qdFormOptions: {
|
|
@@ -81,23 +83,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
81
83
|
}
|
|
82
84
|
},
|
|
83
85
|
qdDialogOptions: {
|
|
84
|
-
...
|
|
86
|
+
...reWrapper,
|
|
85
87
|
onOpened: () => {
|
|
86
88
|
Object.assign(expose, formRef.value);
|
|
87
|
-
|
|
89
|
+
reWrapper.onOpened?.();
|
|
88
90
|
},
|
|
89
91
|
onBeforeClose: () => {
|
|
90
92
|
formRef.value?.reset();
|
|
91
|
-
|
|
93
|
+
reWrapper.onBeforeClose?.();
|
|
92
94
|
},
|
|
93
95
|
confirmLoading: reConfirmLoading,
|
|
94
|
-
closeOnEscKeydown: loading || reConfirmLoading ? false :
|
|
95
|
-
closeOnOverlayClick: loading || reConfirmLoading ? false :
|
|
96
|
-
closeBtn: loading || reConfirmLoading ? false :
|
|
97
|
-
confirmBtn: loading || reConfirmLoading ? typeof
|
|
98
|
-
cancelBtn: loading || reConfirmLoading ? typeof
|
|
96
|
+
closeOnEscKeydown: loading || reConfirmLoading ? false : reWrapper.closeOnEscKeydown,
|
|
97
|
+
closeOnOverlayClick: loading || reConfirmLoading ? false : reWrapper.closeOnOverlayClick,
|
|
98
|
+
closeBtn: loading || reConfirmLoading ? false : reWrapper.closeBtn,
|
|
99
|
+
confirmBtn: loading || reConfirmLoading ? typeof reWrapper.confirmBtn === "object" ? { ...reWrapper.confirmBtn, disabled: true } : { disabled: true } : reWrapper.confirmBtn,
|
|
100
|
+
cancelBtn: loading || reConfirmLoading ? typeof reWrapper.cancelBtn === "object" ? { ...reWrapper.cancelBtn, disabled: true } : { disabled: true } : reWrapper.cancelBtn,
|
|
99
101
|
onConfirm: (done) => {
|
|
100
|
-
const onConfirm =
|
|
102
|
+
const onConfirm = reWrapper.onConfirm;
|
|
101
103
|
if (onConfirm) return onConfirm?.(done);
|
|
102
104
|
const submit = formRef.value?.submit;
|
|
103
105
|
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 } 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 ||
|
|
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, qdDialogProps } 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 import { merge } from 'lodash-es'\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 reWrapper = merge({}, qdDialogProps, wrapper)\n const reConfirmLoading = formSubmitLoad.value || reWrapper.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 ...reWrapper,\n\n onOpened: () => {\n Object.assign(expose, formRef.value)\n reWrapper.onOpened?.()\n },\n\n onBeforeClose: () => {\n formRef.value?.reset()\n reWrapper.onBeforeClose?.()\n },\n\n confirmLoading: reConfirmLoading,\n closeOnEscKeydown: loading || reConfirmLoading ? false : reWrapper.closeOnEscKeydown,\n closeOnOverlayClick: loading || reConfirmLoading ? false : reWrapper.closeOnOverlayClick,\n closeBtn: loading || reConfirmLoading ? false : reWrapper.closeBtn,\n\n confirmBtn:\n loading || reConfirmLoading\n ? typeof reWrapper.confirmBtn === 'object'\n ? { ...reWrapper.confirmBtn, disabled: true }\n : { disabled: true }\n : reWrapper.confirmBtn,\n cancelBtn:\n loading || reConfirmLoading\n ? typeof reWrapper.cancelBtn === 'object'\n ? { ...reWrapper.cancelBtn, disabled: true }\n : { disabled: true }\n : reWrapper.cancelBtn,\n\n onConfirm: (done: QdDialogDone) => {\n const onConfirm = reWrapper.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,22 +15,6 @@ 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
|
-
};
|
|
34
18
|
readonly gutter: () => number[];
|
|
35
19
|
readonly grid: () => {
|
|
36
20
|
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
|
|
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;AACL;"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
.qd-form--descriptions[data-v-
|
|
1
|
+
.qd-form--descriptions[data-v-e75ac98e] .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-e75ac98e] .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-e75ac98e] .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-e75ac98e] .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-e75ac98e] .t-form__controls {
|
|
24
24
|
flex: 1 1 0;
|
|
25
25
|
overflow: hidden;
|
|
26
26
|
display: flex;
|
|
@@ -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-e75ac98e"]]);
|
|
6
6
|
export {
|
|
7
7
|
QdForm as default
|
|
8
8
|
};
|
|
@@ -63,7 +63,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
63
63
|
});
|
|
64
64
|
const formRef = useTemplateRef("form");
|
|
65
65
|
const submitShowErrorMessage = ref();
|
|
66
|
-
const submitLoad = ref(false);
|
|
67
66
|
const reProps = computed(() => {
|
|
68
67
|
const {
|
|
69
68
|
grid,
|
|
@@ -81,7 +80,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
81
80
|
externalLoad,
|
|
82
81
|
formOptions: {
|
|
83
82
|
...formOptions,
|
|
84
|
-
readonly: submitLoad.value || formOptions.readonly,
|
|
85
83
|
labelAlign: descriptions ? "left" : formOptions.labelAlign,
|
|
86
84
|
scrollToFirstError: submitShowErrorMessage.value === false ? "" : scrollToFirstError
|
|
87
85
|
},
|
|
@@ -108,11 +106,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
108
106
|
msgError(context.firstError);
|
|
109
107
|
}
|
|
110
108
|
if (context.validateResult === true || !showErrorMessage) {
|
|
111
|
-
submitLoad.value = true;
|
|
112
109
|
const queueRes = await Promise.all(
|
|
113
110
|
beforeSubmitQueue.map((item) => suspectedWrapperPromise(item()))
|
|
114
111
|
);
|
|
115
|
-
submitLoad.value = false;
|
|
116
112
|
const reQueueRes = { success: true, message: "" };
|
|
117
113
|
queueRes.some(([err, res]) => {
|
|
118
114
|
if (err) {
|
|
@@ -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
|
|
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,6 +1,6 @@
|
|
|
1
|
-
.qd-form-item[data-v-
|
|
1
|
+
.qd-form-item[data-v-834dd2be] > .t-form__item > .t-form__controls > .t-form__controls-content > * {
|
|
2
2
|
width: 100%;
|
|
3
3
|
}
|
|
4
|
-
.qd-form-item__component[data-v-
|
|
4
|
+
.qd-form-item__component[data-v-834dd2be] {
|
|
5
5
|
width: 100%;
|
|
6
6
|
}
|
|
@@ -2,7 +2,7 @@ import './item.css'
|
|
|
2
2
|
import _sfc_main from "./item.vue2.mjs";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
5
|
-
const QdFormItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
const QdFormItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-834dd2be"]]);
|
|
6
6
|
export {
|
|
7
7
|
QdFormItem as default
|
|
8
8
|
};
|
|
@@ -77,7 +77,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
77
77
|
return (_ctx, _cache) => {
|
|
78
78
|
return reIfRender.value !== false ? (openBlock(), createBlock(unref(QdGridItem), mergeProps({
|
|
79
79
|
key: 0,
|
|
80
|
-
class:
|
|
80
|
+
class: [
|
|
81
|
+
"qd-form-item",
|
|
82
|
+
reProps.value.formItemOptions.name ? `qd-form-item__${reProps.value.formItemOptions.name}` : ""
|
|
83
|
+
]
|
|
81
84
|
}, reProps.value.gridItemOptions), {
|
|
82
85
|
default: withCtx(() => [
|
|
83
86
|
createVNode(unref(FormItem), normalizeProps(guardReactiveProps(reProps.value.formItemOptions)), createSlots({
|
|
@@ -105,7 +108,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
105
108
|
]), 1040)
|
|
106
109
|
]),
|
|
107
110
|
_: 3
|
|
108
|
-
}, 16)) : createCommentVNode("", true);
|
|
111
|
+
}, 16, ["class"])) : createCommentVNode("", true);
|
|
109
112
|
};
|
|
110
113
|
}
|
|
111
114
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.vue2.mjs","sources":["../../../src/components/form/item.vue"],"sourcesContent":["<template>\n <qd-grid-item
|
|
1
|
+
{"version":3,"file":"item.vue2.mjs","sources":["../../../src/components/form/item.vue"],"sourcesContent":["<template>\n <qd-grid-item\n v-if=\"reIfRender !== false\"\n :class=\"[\n 'qd-form-item',\n reProps.formItemOptions.name ? `qd-form-item__${reProps.formItemOptions.name}` : ''\n ]\"\n v-bind=\"reProps.gridItemOptions\"\n >\n <t-form-item v-bind=\"reProps.formItemOptions\">\n <slot :crud-mode=\"reProps.formItemOptions.crudMode\" :context=\"context\">\n <qd-config-renderer\n v-if=\"reProps.configRendererOptions.config\"\n class=\"qd-form-item__component\"\n v-bind=\"reProps.configRendererOptions\"\n />\n </slot>\n\n <template v-for=\"name in filterSlots($slots, ['default'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-form-item>\n </qd-grid-item>\n</template>\n\n<script setup lang=\"ts\">\n import type { QdFormItemProps } from './types'\n import type {\n QdConfigRendererProps,\n QdComputeFunction,\n QdAsyncComputeOptions\n } from '../config-renderer'\n import { computed } from 'vue'\n import { FormItem as TFormItem } from 'tdesign-vue-next'\n import { QdGridItem } from '../grid'\n import { QdConfigRenderer } from '../config-renderer'\n import { qdFormItemProps } from './props'\n import { qdUseComputeValue } from '../config-renderer/compute'\n import { filterSlots, isEmpty } from 'qidian-shared'\n\n defineOptions({\n name: 'QdFormItem'\n })\n\n const props = withDefaults(defineProps<QdFormItemProps>(), qdFormItemProps)\n\n // 处理 ifRender\n const reIfRender = computed(() => {\n const ifRender = props.ifRender\n if (isEmpty(ifRender)) return true\n\n if (\n (ifRender as QdComputeFunction<boolean>)?.__qdCompute ||\n (ifRender as QdAsyncComputeOptions<boolean>)?.__qdAsyncCompute\n ) {\n const { result } = qdUseComputeValue(\n ifRender as QdComputeFunction<boolean> | QdAsyncComputeOptions<boolean>,\n computed(() => props.context || {})\n )\n return result.value\n }\n\n return ifRender as boolean\n })\n\n const reProps = computed(() => {\n const { col, row, context, component, required, rules, ...formItemOptions } = props\n const reRules = rules || []\n\n if (component) {\n const comp = component.is\n const compName = (\n typeof comp === 'string' ? comp : !comp ? '' : 'name' in comp ? comp.name || '' : ''\n ).toLowerCase()\n const messagePrefix =\n compName.search('select') > -1 ||\n compName.search('checkbox') > -1 ||\n compName.search('radio') > -1\n ? '请选择'\n : compName.search('upload') > -1\n ? '请上传'\n : '请输入'\n\n if (required && !reRules.some((item) => item.required)) {\n if (required && typeof required === 'string') {\n reRules.push({ required: true, message: required })\n } else {\n reRules.push({ required: true, message: `${messagePrefix}${formItemOptions.label}` })\n }\n }\n\n component.placeholder =\n component.placeholder ??\n (compName.search('picker') > -1 || compName.search('upload') > -1\n ? ''\n : `${messagePrefix}${formItemOptions.label}`)\n component.clearable =\n component.clearable ?? (required ? false : (props.defaultClearable ?? true))\n }\n\n return {\n formItemOptions: {\n ...formItemOptions,\n rules: reRules\n },\n gridItemOptions: { col, row },\n configRendererOptions: { context, config: component } as QdConfigRendererProps\n }\n })\n</script>\n\n<style lang=\"less\" scoped>\n .qd-form-item {\n & > :deep(.t-form__item) {\n & > .t-form__controls > .t-form__controls-content > * {\n width: 100%;\n }\n }\n\n &__component {\n width: 100%;\n }\n }\n</style>\n"],"names":["_openBlock","_createBlock","_unref","_mergeProps","_createVNode","TFormItem","_normalizeProps","_guardReactiveProps","_createSlots","_renderSlot","$slots","_withCtx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CE,UAAM,QAAQ;AAGd,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,WAAW,MAAM;AACvB,UAAI,QAAQ,QAAQ,EAAG,QAAO;AAE9B,UACG,UAAyC,eACzC,UAA6C,kBAC9C;AACA,cAAM,EAAE,WAAW;AAAA,UACjB;AAAA,UACA,SAAS,MAAM,MAAM,WAAW,CAAA,CAAE;AAAA,QAAA;AAEpC,eAAO,OAAO;AAAA,MAChB;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,EAAE,KAAK,KAAK,SAAS,WAAW,UAAU,OAAO,GAAG,gBAAA,IAAoB;AAC9E,YAAM,UAAU,SAAS,CAAA;AAEzB,UAAI,WAAW;AACb,cAAM,OAAO,UAAU;AACvB,cAAM,YACJ,OAAO,SAAS,WAAW,OAAO,CAAC,OAAO,KAAK,UAAU,OAAO,KAAK,QAAQ,KAAK,IAClF,YAAA;AACF,cAAM,gBACJ,SAAS,OAAO,QAAQ,IAAI,MAC5B,SAAS,OAAO,UAAU,IAAI,MAC9B,SAAS,OAAO,OAAO,IAAI,KACvB,QACA,SAAS,OAAO,QAAQ,IAAI,KAC1B,QACA;AAER,YAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG;AACtD,cAAI,YAAY,OAAO,aAAa,UAAU;AAC5C,oBAAQ,KAAK,EAAE,UAAU,MAAM,SAAS,UAAU;AAAA,UACpD,OAAO;AACL,oBAAQ,KAAK,EAAE,UAAU,MAAM,SAAS,GAAG,aAAa,GAAG,gBAAgB,KAAK,GAAA,CAAI;AAAA,UACtF;AAAA,QACF;AAEA,kBAAU,cACR,UAAU,gBACT,SAAS,OAAO,QAAQ,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI,KAC3D,KACA,GAAG,aAAa,GAAG,gBAAgB,KAAK;AAC9C,kBAAU,YACR,UAAU,cAAc,WAAW,QAAS,MAAM,oBAAoB;AAAA,MAC1E;AAEA,aAAO;AAAA,QACL,iBAAiB;AAAA,UACf,GAAG;AAAA,UACH,OAAO;AAAA,QAAA;AAAA,QAET,iBAAiB,EAAE,KAAK,IAAA;AAAA,QACxB,uBAAuB,EAAE,SAAS,QAAQ,UAAA;AAAA,MAAU;AAAA,IAExD,CAAC;;aA1GO,WAAA,UAAU,SADlBA,UAAA,GAAAC,YAqBeC,mBArBfC,WAqBe;AAAA;QAnBZ,OAAK;AAAA;UAAgC,QAAA,MAAQ,gBAAgB,wBAAwB,QAAA,MAAQ,gBAAgB,IAAI,KAAA;AAAA,QAAA;AAAA,SAI1G,QAAA,MAAQ,eAAe,GAAA;AAAA,yBAE/B,MAYc;AAAA,UAZdC,YAYcF,MAAAG,QAAA,GAAAC,eAAAC,mBAZO,QAAA,MAAQ,eAAe,CAAA,GAAAC,YAAA;AAAA,6BAC1C,MAMO;AAAA,cANPC,WAMO,KAAA,QAAA,WAAA;AAAA,gBANA,UAAW,QAAA,MAAQ,gBAAgB;AAAA,gBAAW,SAAS,QAAA;AAAA,cAAA,GAA9D,MAMO;AAAA,gBAJG,QAAA,MAAQ,sBAAsB,UADtCT,aAAAC,YAIEC,oBAJFC,WAIE;AAAA;kBAFA,OAAM;AAAA,gBAAA,GACE,QAAA,MAAQ,qBAAqB,GAAA,MAAA,EAAA;;;;;uBAIhBD,MAAA,WAAA,EAAYQ,KAAAA,QAAM,CAAA,SAAA,CAAA,GAAA,CAA1B,SAAI;;;gBACnB,IAAAC,QAAA,CADkE,cAAS;AAAA,kBAC3EF,WAAwC,KAAA,QAA3B,MAAIH,eAAAC,mBAAU,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,gBAAA;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ import _sfc_main from "./index.vue2.mjs";
|
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
6
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
7
|
-
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
7
|
+
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-060ae0b3"]]);
|
|
8
8
|
export {
|
|
9
9
|
index as default
|
|
10
10
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import './index2.css'
|
|
2
2
|
import './index.css'
|
|
3
|
-
import { defineComponent, mergeDefaults, ref, computed, useTemplateRef, onMounted, createBlock, openBlock, unref, mergeProps, isRef, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
|
|
3
|
+
import { defineComponent, mergeDefaults, inject, ref, computed, useTemplateRef, onMounted, createBlock, openBlock, unref, mergeProps, isRef, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
|
|
4
4
|
import "../../node_modules/.pnpm/md-editor-v3@6.2.1_vue@3.5.26_typescript@5.9.3_/node_modules/md-editor-v3/lib/es/index.mjs";
|
|
5
5
|
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";
|
|
6
|
+
import { FormItemInjectionKey } from "../../node_modules/.pnpm/tdesign-vue-next@1.17.1_vue@3.5.26_typescript@5.9.3_/node_modules/tdesign-vue-next/es/form/consts/index.mjs";
|
|
6
7
|
import { qdMdEditorToolbars, qdMdEditorProps } from "./props.mjs";
|
|
7
8
|
import ve from "../../node_modules/.pnpm/md-editor-v3@6.2.1_vue@3.5.26_typescript@5.9.3_/node_modules/md-editor-v3/lib/es/MdEditor.mjs";
|
|
8
9
|
import { useReadonly } from "../../hooks/useReadonly.mjs";
|
|
@@ -81,6 +82,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
81
82
|
const { modelValue } = useVModels(props, emit, { passive: true });
|
|
82
83
|
const tdReadonly = useReadonly();
|
|
83
84
|
const tdDisabled = useDisabled();
|
|
85
|
+
const tdFormItem = inject(FormItemInjectionKey, void 0);
|
|
84
86
|
const focus = ref(false);
|
|
85
87
|
const reProps = computed(() => {
|
|
86
88
|
const {
|
|
@@ -108,9 +110,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
108
110
|
};
|
|
109
111
|
const reOnBlur = (evt) => {
|
|
110
112
|
focus.value = false;
|
|
113
|
+
tdFormItem?.handleBlur();
|
|
111
114
|
onBlur?.(evt);
|
|
112
115
|
};
|
|
113
|
-
const reToolbars = reReadonly ||
|
|
116
|
+
const reToolbars = reReadonly || reDisabled ? ["=", "pageFullscreen", "preview"] : toolbars ?? [...qdMdEditorToolbars];
|
|
114
117
|
const reDisabledUploadImg = disabledUploadImg ?? true;
|
|
115
118
|
if (reDisabledUploadImg) {
|
|
116
119
|
const imgIdx = reToolbars.findIndex((item) => item === "image");
|
|
@@ -151,7 +154,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
151
154
|
ref: "editor",
|
|
152
155
|
modelValue: unref(modelValue),
|
|
153
156
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
|
|
154
|
-
class: [
|
|
157
|
+
class: [
|
|
158
|
+
"qd-md-editor",
|
|
159
|
+
focus.value ? "qd-md-editor--focus" : "",
|
|
160
|
+
reProps.value.disabled ? "qd-md-editor--disabled" : ""
|
|
161
|
+
],
|
|
155
162
|
"read-only": reProps.value.readonly,
|
|
156
163
|
disabled: reProps.value.disabled
|
|
157
164
|
}, reProps.value.mdEditorOptions), createSlots({ _: 2 }, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/md-editor/index.vue"],"sourcesContent":["<template>\n <md-editor\n ref=\"editor\"\n v-model=\"modelValue\"\n :class=\"['qd-md-editor'
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../src/components/md-editor/index.vue"],"sourcesContent":["<template>\n <md-editor\n ref=\"editor\"\n v-model=\"modelValue\"\n :class=\"[\n 'qd-md-editor',\n focus ? 'qd-md-editor--focus' : '',\n reProps.disabled ? 'qd-md-editor--disabled' : ''\n ]\"\n :read-only=\"reProps.readonly\"\n :disabled=\"reProps.disabled\"\n v-bind=\"reProps.mdEditorOptions\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </md-editor>\n</template>\n\n<script setup lang=\"ts\">\n // TODO i18n @vavt/cm-extension\n // TODO theme 优先使用配置的\n // TODO 图片上传\n // TODO 文件上传\n import type { QdMdEditorProps } from './types'\n import type { EditorProps } from 'md-editor-v3'\n import './config'\n import { MdEditor } from 'md-editor-v3'\n import { computed, inject, onMounted, ref, useTemplateRef } from 'vue'\n import { useVModels } from '@vueuse/core'\n import { FormItemInjectionKey } from 'tdesign-vue-next/es/form/consts'\n import { qdMdEditorProps, qdMdEditorToolbars } from './props'\n import { useDisabled, useReadonly } from '../../hooks'\n\n defineOptions({\n name: 'QdMdEditor'\n })\n\n const props = withDefaults(defineProps<QdMdEditorProps>(), qdMdEditorProps)\n const emit = defineEmits<{\n 'update:modelValue': [QdMdEditorProps['modelValue']]\n }>()\n const { modelValue } = useVModels(props, emit, { passive: true })\n\n const tdReadonly = useReadonly()\n const tdDisabled = useDisabled()\n const tdFormItem = inject(FormItemInjectionKey, undefined)\n const focus = ref(false)\n\n const reProps = computed(() => {\n const {\n modelValue,\n readonly,\n disabled,\n maxlength,\n toolbars,\n onFocus,\n onBlur,\n disabledEcharts,\n disabledHighlight,\n disabledImgZoomIn,\n disabledKatex,\n disabledMermaid,\n disabledPrettier,\n disabledUploadImg,\n ...mdEditorOptions\n } = props\n\n const reReadonly = readonly ?? tdReadonly.value\n const reDisabled = disabled ?? tdDisabled.value\n\n const reOnFocus: typeof onFocus = (evt) => {\n focus.value = true\n onFocus?.(evt)\n }\n\n const reOnBlur: typeof onBlur = (evt) => {\n focus.value = false\n tdFormItem?.handleBlur()\n onBlur?.(evt)\n }\n\n const reToolbars =\n reReadonly || reDisabled\n ? ['=', 'pageFullscreen', 'preview']\n : (toolbars ?? [...qdMdEditorToolbars])\n\n const reDisabledUploadImg = disabledUploadImg ?? true\n if (reDisabledUploadImg) {\n const imgIdx = reToolbars.findIndex((item) => item === 'image')\n if (imgIdx > -1) reToolbars.splice(imgIdx, 1)\n }\n\n const reMdEditorOptions = {\n ...mdEditorOptions,\n codeTheme: 'github',\n previewTheme: 'github',\n toolbars: reToolbars,\n noEcharts: disabledEcharts,\n noHighlight: disabledHighlight,\n noImgZoomIn: disabledImgZoomIn,\n noKatex: disabledKatex,\n noMermaid: disabledMermaid,\n noPrettier: disabledPrettier,\n noUploadImg: reDisabledUploadImg,\n maxLength: maxlength,\n onFocus: reOnFocus,\n onBlur: reOnBlur\n } as unknown as Omit<EditorProps, 'modelValue' | 'readOnly' | 'disabled'>\n\n return {\n readonly: reReadonly,\n disabled: reDisabled,\n mdEditorOptions: reMdEditorOptions,\n models: {\n modelValue\n }\n }\n })\n\n const editorRef = useTemplateRef('editor')\n\n const expose = {}\n\n onMounted(async () => {\n Object.assign(expose, editorRef.value)\n })\n</script>\n\n<style lang=\"less\">\n @import 'md-editor-v3/lib/style.css';\n @import 'katex/dist/katex.min.css';\n @import 'cropperjs/dist/cropper.css';\n @import 'highlight.js/styles/github.css';\n</style>\n\n<style lang=\"less\" scoped>\n .qd-md-editor {\n --md-color: var(--td-text-color-primary);\n --md-border-color: var(--td-border-level-2-color);\n --md-bk-color: var(--td-bg-color-specialcomponent);\n --md-bk-hover-color: var(--td-bg-color-container-hover);\n height: 100%;\n border-radius: var(--td-radius-default);\n transition:\n border cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n background-color cubic-bezier(0.38, 0, 0.24, 1) 0.2s,\n -webkit-box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s;\n\n &:hover {\n border-color: var(--td-brand-color);\n }\n\n &.qd-md-editor--focus {\n border-color: var(--td-brand-color);\n box-shadow: 0 0 0 2px var(--td-brand-color-focus);\n }\n\n &.qd-md-editor--disabled {\n color: var(--td-text-color-disabled);\n background-color: var(--td-bg-color-component-disabled);\n cursor: not-allowed;\n\n :deep(.cm-editor) {\n background-color: transparent;\n }\n\n &:hover {\n border-color: var(--td-border-level-2-color);\n }\n }\n\n :deep(.md-editor) {\n &-preview {\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n :deep(.cm-editor) {\n font: var(--td-font-body-medium);\n }\n\n :deep(.cm-scroller) {\n line-height: inherit !important;\n }\n\n :deep(.cm-content) {\n margin: 0 !important;\n padding: var(--td-comp-paddingLR-s);\n }\n }\n\n .t-is-error .qd-md-editor {\n border-color: var(--td-error-color);\n\n &--focus {\n box-shadow: 0 0 0 2px var(--td-error-color-focus);\n }\n }\n</style>\n"],"names":["modelValue","_openBlock","_createBlock","_unref","_mergeProps","_createSlots","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCE,UAAM,QAAQ;AACd,UAAM,OAAO;AAGb,UAAM,EAAE,eAAe,WAAW,OAAO,MAAM,EAAE,SAAS,MAAM;AAEhE,UAAM,aAAa,YAAA;AACnB,UAAM,aAAa,YAAA;AACnB,UAAM,aAAa,OAAO,sBAAsB,MAAS;AACzD,UAAM,QAAQ,IAAI,KAAK;AAEvB,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM;AAAA,QACJ,YAAAA;AAAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA,IACD;AAEJ,YAAM,aAAa,YAAY,WAAW;AAC1C,YAAM,aAAa,YAAY,WAAW;AAE1C,YAAM,YAA4B,CAAC,QAAQ;AACzC,cAAM,QAAQ;AACd,kBAAU,GAAG;AAAA,MACf;AAEA,YAAM,WAA0B,CAAC,QAAQ;AACvC,cAAM,QAAQ;AACd,oBAAY,WAAA;AACZ,iBAAS,GAAG;AAAA,MACd;AAEA,YAAM,aACJ,cAAc,aACV,CAAC,KAAK,kBAAkB,SAAS,IAChC,YAAY,CAAC,GAAG,kBAAkB;AAEzC,YAAM,sBAAsB,qBAAqB;AACjD,UAAI,qBAAqB;AACvB,cAAM,SAAS,WAAW,UAAU,CAAC,SAAS,SAAS,OAAO;AAC9D,YAAI,SAAS,GAAI,YAAW,OAAO,QAAQ,CAAC;AAAA,MAC9C;AAEA,YAAM,oBAAoB;AAAA,QACxB,GAAG;AAAA,QACH,WAAW;AAAA,QACX,cAAc;AAAA,QACd,UAAU;AAAA,QACV,WAAW;AAAA,QACX,aAAa;AAAA,QACb,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,MAAA;AAGV,aAAO;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,QACV,iBAAiB;AAAA,QACjB,QAAQ;AAAA,UACN,YAAAA;AAAAA,QAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,UAAM,YAAY,eAAe,QAAQ;AAEzC,UAAM,SAAS,CAAA;AAEf,cAAU,YAAY;AACpB,aAAO,OAAO,QAAQ,UAAU,KAAK;AAAA,IACvC,CAAC;;AA7HD,aAAAC,aAAAC,YAeYC,WAfZC,WAeY;AAAA,QAdV,KAAI;AAAA,oBACKD,MAAA,UAAA;AAAA,yFAAA,WAAU,QAAA,SAAA;AAAA,QAClB,OAAK;AAAA;UAAgC,MAAA,QAAK,wBAAA;AAAA,UAAqC,QAAA,MAAQ,WAAQ,2BAAA;AAAA,QAAA;AAAA,QAK/F,aAAW,QAAA,MAAQ;AAAA,QACnB,UAAU,QAAA,MAAQ;AAAA,MAAA,GACX,QAAA,MAAQ,eAAe,GAAAE,YAAA,EAAA,GAAA,KAAA;AAAA,mBAEDC,KAAAA,QAAM,CAAlB,GAAG,SAAI;;;YACvB,IAAAC,QAAA,CAD6C,cAAS;AAAA,cACtDC,WAAwC,KAAA,QAA3B,MAAIC,eAAAC,mBAAU,SAAS,CAAA,GAAA,QAAA,IAAA;AAAA,YAAA;;;;;;;"}
|
|
@@ -1,22 +1,46 @@
|
|
|
1
|
-
.qd-md-editor[data-v-
|
|
1
|
+
.qd-md-editor[data-v-060ae0b3] {
|
|
2
2
|
--md-color: var(--td-text-color-primary);
|
|
3
3
|
--md-border-color: var(--td-border-level-2-color);
|
|
4
4
|
--md-bk-color: var(--td-bg-color-specialcomponent);
|
|
5
5
|
--md-bk-hover-color: var(--td-bg-color-container-hover);
|
|
6
|
+
height: 100%;
|
|
6
7
|
border-radius: var(--td-radius-default);
|
|
7
8
|
transition: border cubic-bezier(0.38, 0, 0.24, 1) 0.2s, box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s, background-color cubic-bezier(0.38, 0, 0.24, 1) 0.2s, -webkit-box-shadow cubic-bezier(0.38, 0, 0.24, 1) 0.2s;
|
|
8
9
|
}
|
|
9
|
-
.qd-md-editor[data-v-
|
|
10
|
-
border-color: var(--td-brand-color)
|
|
10
|
+
.qd-md-editor[data-v-060ae0b3]:hover {
|
|
11
|
+
border-color: var(--td-brand-color);
|
|
11
12
|
}
|
|
12
|
-
.qd-md-editor.qd-md-editor--focus[data-v-
|
|
13
|
-
border-color: var(--td-brand-color)
|
|
13
|
+
.qd-md-editor.qd-md-editor--focus[data-v-060ae0b3] {
|
|
14
|
+
border-color: var(--td-brand-color);
|
|
14
15
|
box-shadow: 0 0 0 2px var(--td-brand-color-focus);
|
|
15
16
|
}
|
|
16
|
-
.qd-md-editor[data-v-
|
|
17
|
+
.qd-md-editor.qd-md-editor--disabled[data-v-060ae0b3] {
|
|
18
|
+
color: var(--td-text-color-disabled);
|
|
19
|
+
background-color: var(--td-bg-color-component-disabled);
|
|
20
|
+
cursor: not-allowed;
|
|
21
|
+
}
|
|
22
|
+
.qd-md-editor.qd-md-editor--disabled[data-v-060ae0b3] .cm-editor {
|
|
23
|
+
background-color: transparent;
|
|
24
|
+
}
|
|
25
|
+
.qd-md-editor.qd-md-editor--disabled[data-v-060ae0b3]:hover {
|
|
26
|
+
border-color: var(--td-border-level-2-color);
|
|
27
|
+
}
|
|
28
|
+
.qd-md-editor[data-v-060ae0b3] .md-editor-preview {
|
|
29
|
+
padding: var(--td-comp-paddingLR-s);
|
|
30
|
+
}
|
|
31
|
+
.qd-md-editor[data-v-060ae0b3] .cm-editor {
|
|
32
|
+
font: var(--td-font-body-medium);
|
|
33
|
+
}
|
|
34
|
+
.qd-md-editor[data-v-060ae0b3] .cm-scroller {
|
|
35
|
+
line-height: inherit !important;
|
|
36
|
+
}
|
|
37
|
+
.qd-md-editor[data-v-060ae0b3] .cm-content {
|
|
38
|
+
margin: 0 !important;
|
|
17
39
|
padding: var(--td-comp-paddingLR-s);
|
|
18
40
|
}
|
|
19
|
-
.qd-md-editor[data-v-
|
|
20
|
-
|
|
21
|
-
|
|
41
|
+
.t-is-error .qd-md-editor[data-v-060ae0b3] {
|
|
42
|
+
border-color: var(--td-error-color);
|
|
43
|
+
}
|
|
44
|
+
.t-is-error .qd-md-editor--focus[data-v-060ae0b3] {
|
|
45
|
+
box-shadow: 0 0 0 2px var(--td-error-color-focus);
|
|
22
46
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
.qd-service-list[data-v-
|
|
1
|
+
.qd-service-list[data-v-54fa1b8e] {
|
|
2
2
|
height: 100%;
|
|
3
3
|
display: flex;
|
|
4
4
|
flex-direction: column;
|
|
5
5
|
background-color: transparent;
|
|
6
6
|
}
|
|
7
|
-
.qd-service-list[data-v-
|
|
7
|
+
.qd-service-list[data-v-54fa1b8e] > .t-list__load {
|
|
8
8
|
color: var(--td-text-color-secondary);
|
|
9
9
|
background-color: transparent;
|
|
10
10
|
}
|
|
11
|
-
.qd-service-list__empty[data-v-
|
|
11
|
+
.qd-service-list__empty[data-v-54fa1b8e] {
|
|
12
12
|
padding: var(--td-comp-paddingLR-xxl) var(--td-comp-paddingTB-xxl);
|
|
13
13
|
}
|
|
@@ -9,12 +9,12 @@ declare const _default: <D extends TableRowData = TableRowData, R = unknown, P =
|
|
|
9
9
|
attrs: any;
|
|
10
10
|
slots: {
|
|
11
11
|
[x: string]: ((props: any) => any) | undefined;
|
|
12
|
-
} & {
|
|
13
|
-
empty?: (props: {}) => any;
|
|
14
12
|
} & {
|
|
15
13
|
default?: (props: {
|
|
16
14
|
data: D[];
|
|
17
15
|
}) => any;
|
|
16
|
+
} & {
|
|
17
|
+
empty?: (props: {}) => any;
|
|
18
18
|
};
|
|
19
19
|
emit: (evt: "update:data", args_0: D[] | undefined) => void;
|
|
20
20
|
}>) => import("vue").VNode & {
|
|
@@ -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 QdServiceList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
const QdServiceList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-54fa1b8e"]]);
|
|
6
6
|
export {
|
|
7
7
|
QdServiceList as default
|
|
8
8
|
};
|
|
@@ -224,13 +224,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
224
224
|
onLoadMore: unref(loadMore)
|
|
225
225
|
}), createSlots({
|
|
226
226
|
default: withCtx(() => [
|
|
227
|
+
renderSlot(_ctx.$slots, "default", { data: unref(data) }, void 0, true),
|
|
227
228
|
!listLoad.value.loading && !listAsyncLoad.value && empty.value ? renderSlot(_ctx.$slots, "empty", { key: 0 }, () => [
|
|
228
229
|
createVNode(unref(Empty), {
|
|
229
230
|
class: "qd-service-list__empty",
|
|
230
231
|
title: unref(t)("emptyText")
|
|
231
232
|
}, null, 8, ["title"])
|
|
232
|
-
], true) : createCommentVNode("", true)
|
|
233
|
-
renderSlot(_ctx.$slots, "default", { data: unref(data) }, void 0, true)
|
|
233
|
+
], true) : createCommentVNode("", true)
|
|
234
234
|
]),
|
|
235
235
|
_: 2
|
|
236
236
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/service/list/index.vue"],"sourcesContent":["<template>\n <t-list\n ref=\"list\"\n class=\"qd-service-list\"\n v-loading=\"listLoad\"\n :async-loading=\"listAsyncLoad\"\n v-bind=\"reProps.listOptions\"\n @scroll=\"onScroll\"\n @load-more=\"loadMore\"\n >\n <slot v-if=\"!listLoad.loading && !listAsyncLoad && empty\" name=\"empty\">\n <t-empty class=\"qd-service-list__empty\" :title=\"t('emptyText')\" />\n </slot>\n\n <slot :data=\"data\" />\n\n <template v-for=\"name in filterSlots($slots, ['default', 'empty'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-list>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import type { ComponentPublicInstance } from 'vue'\n import type { ListInstanceFunctions, TableRowData, TdListProps } from 'tdesign-vue-next'\n import type { ServicePageParams, ServicePagination } from 'qidian-shared'\n import type { QdServiceListInstanceFunctions, QdServiceListProps } from './types'\n import {\n computed,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n onMounted,\n useTemplateRef\n } from 'vue'\n import { List as TList, Empty as TEmpty } from 'tdesign-vue-next'\n import { qdServiceListProps } from './props'\n import { filterSlots, useServiceLoadMore } from 'qidian-shared'\n import { useVModels } from '@vueuse/core'\n import { useConfig } from '../../config-provider/useConfig'\n\n defineOptions({\n name: 'QdServiceList'\n })\n\n type Props = QdServiceListProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdServiceListProps)\n const emit = defineEmits<{\n 'update:data': [Props['data']]\n }>()\n const { data } = useVModels<\n {\n data: NonNullable<Props['data']>\n },\n keyof typeof emit\n >(props, emit, { passive: true })\n\n const { t } = useConfig('crud')\n const listRef = useTemplateRef<ListInstanceFunctions & ComponentPublicInstance>('list')\n let scrollTopRecord = 0\n\n const reProps = computed(() => {\n const {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n onBefore,\n onAfter,\n onSuccess,\n onError,\n\n data,\n\n loadingWithData,\n\n loading: externalLoad,\n asyncLoading: externalAsyncLoad,\n scroll,\n ...listOptions\n } = props\n\n return {\n loadingWithData,\n scrollTarget: scroll?.target,\n externalLoad,\n externalAsyncLoad,\n listOptions: {\n ...listOptions,\n scroll\n } as TdListProps,\n serviceOptions: {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n onBefore,\n onAfter,\n onSuccess,\n onError\n },\n models: {\n data\n }\n }\n })\n\n const {\n data: serviceData,\n dataList,\n firstLoad,\n manualTriggerLoad,\n loading,\n loadingMore,\n noMore,\n error,\n refresh,\n refreshAsync,\n cancel,\n loadMore,\n loadMoreAsync,\n mutate\n } = useServiceLoadMore({\n ...reProps.value.serviceOptions,\n onSuccess: (res) => {\n reProps.value.serviceOptions.onSuccess?.(res)\n\n data.value = (serviceData.value?.list || []) as D[]\n }\n })\n\n const empty = computed(() => noMore.value && !data.value.length)\n const listLoad = computed(() => {\n const { externalLoad, loadingWithData } = reProps.value\n let loading = false\n\n if (externalLoad) {\n loading = true\n } else if (firstLoad.value && data.value.length) {\n loading = loadingWithData\n }\n\n return {\n loading,\n size: 'small',\n ...props.loadingProps\n }\n })\n const listAsyncLoad = computed(() => {\n const { externalLoad, externalAsyncLoad } = reProps.value\n if (externalAsyncLoad) return externalAsyncLoad\n if (firstLoad.value || externalLoad) {\n if (data.value.length) return ''\n return 'loading'\n }\n if (loading.value) return 'loading'\n return noMore.value ? '' : 'load-more'\n })\n\n function onScroll({\n scrollTop,\n scrollBottom\n }: {\n e: Event | WheelEvent\n scrollTop: number\n scrollBottom: number\n }) {\n scrollTopRecord = scrollTop\n\n if (\n loading.value ||\n noMore.value ||\n scrollBottom > (reProps.value.listOptions.scroll?.rowHeight ?? 100)\n ) {\n return\n }\n\n loadMore()\n }\n\n function getScrollTargetEl() {\n const { scrollTarget } = reProps.value\n if (!scrollTarget) return null\n\n if (typeof scrollTarget !== 'string') return scrollTarget\n return document.querySelector(scrollTarget)\n }\n\n function onTargetScroll(evt: Event) {\n const { scrollHeight, clientHeight, scrollTop } = evt.target as HTMLElement\n const scrollBottom = scrollHeight - clientHeight - scrollTop\n onScroll({ scrollTop, scrollBottom, e: evt })\n }\n\n function addListerTarget() {\n const el = getScrollTargetEl()\n if (!el) return\n\n removeListerTarget()\n el.addEventListener('scroll', onTargetScroll)\n }\n\n function removeListerTarget() {\n const el = getScrollTargetEl()\n if (!el) return\n\n el.removeEventListener('scroll', onTargetScroll)\n }\n\n function resumeScrollTopRecord() {\n let el = getScrollTargetEl()\n if (!el) el = listRef.value?.$el\n if (!el) return\n\n const { scrollTop } = el\n const currentScrollTopRecord = scrollTopRecord\n if (currentScrollTopRecord === scrollTop) return\n\n const core = () => {\n el.scrollTo({ top: currentScrollTopRecord })\n setTimeout(() => {\n if (!el) return\n const { scrollTop, scrollHeight } = el\n if (scrollHeight < currentScrollTopRecord) return\n if (scrollTop >= currentScrollTopRecord) return\n core()\n }, 50)\n }\n\n core()\n }\n\n const expose = {\n data: serviceData,\n dataList,\n firstLoad,\n manualTriggerLoad,\n loading,\n loadingMore,\n noMore,\n error,\n refresh,\n refreshAsync,\n cancel,\n loadMore,\n loadMoreAsync,\n mutate\n } as QdServiceListInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n addListerTarget()\n Object.assign(expose, listRef.value)\n })\n\n onActivated(() => {\n resumeScrollTopRecord()\n addListerTarget()\n })\n\n onDeactivated(() => {\n removeListerTarget()\n })\n\n onBeforeUnmount(() => {\n removeListerTarget()\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-service-list {\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n\n & > :deep(.t-list__load) {\n color: var(--td-text-color-secondary);\n background-color: transparent;\n }\n\n &__empty {\n padding: var(--td-comp-paddingLR-xxl) var(--td-comp-paddingTB-xxl);\n }\n }\n</style>\n"],"names":["data","loading","scrollTop","_withDirectives","_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_createVNode","TEmpty","$slots","_withCtx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/service/list/index.vue"],"sourcesContent":["<template>\n <t-list\n ref=\"list\"\n class=\"qd-service-list\"\n v-loading=\"listLoad\"\n :async-loading=\"listAsyncLoad\"\n v-bind=\"reProps.listOptions\"\n @scroll=\"onScroll\"\n @load-more=\"loadMore\"\n >\n <slot :data=\"data\" />\n\n <slot v-if=\"!listLoad.loading && !listAsyncLoad && empty\" name=\"empty\">\n <t-empty class=\"qd-service-list__empty\" :title=\"t('emptyText')\" />\n </slot>\n\n <template v-for=\"name in filterSlots($slots, ['default', 'empty'])\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </t-list>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import type { ComponentPublicInstance } from 'vue'\n import type { ListInstanceFunctions, TableRowData, TdListProps } from 'tdesign-vue-next'\n import type { ServicePageParams, ServicePagination } from 'qidian-shared'\n import type { QdServiceListInstanceFunctions, QdServiceListProps } from './types'\n import {\n computed,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n onMounted,\n useTemplateRef\n } from 'vue'\n import { List as TList, Empty as TEmpty } from 'tdesign-vue-next'\n import { qdServiceListProps } from './props'\n import { filterSlots, useServiceLoadMore } from 'qidian-shared'\n import { useVModels } from '@vueuse/core'\n import { useConfig } from '../../config-provider/useConfig'\n\n defineOptions({\n name: 'QdServiceList'\n })\n\n type Props = QdServiceListProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdServiceListProps)\n const emit = defineEmits<{\n 'update:data': [Props['data']]\n }>()\n const { data } = useVModels<\n {\n data: NonNullable<Props['data']>\n },\n keyof typeof emit\n >(props, emit, { passive: true })\n\n const { t } = useConfig('crud')\n const listRef = useTemplateRef<ListInstanceFunctions & ComponentPublicInstance>('list')\n let scrollTopRecord = 0\n\n const reProps = computed(() => {\n const {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n onBefore,\n onAfter,\n onSuccess,\n onError,\n\n data,\n\n loadingWithData,\n\n loading: externalLoad,\n asyncLoading: externalAsyncLoad,\n scroll,\n ...listOptions\n } = props\n\n return {\n loadingWithData,\n scrollTarget: scroll?.target,\n externalLoad,\n externalAsyncLoad,\n listOptions: {\n ...listOptions,\n scroll\n } as TdListProps,\n serviceOptions: {\n service,\n manual,\n transformParams,\n transformRes,\n pagination,\n onBefore,\n onAfter,\n onSuccess,\n onError\n },\n models: {\n data\n }\n }\n })\n\n const {\n data: serviceData,\n dataList,\n firstLoad,\n manualTriggerLoad,\n loading,\n loadingMore,\n noMore,\n error,\n refresh,\n refreshAsync,\n cancel,\n loadMore,\n loadMoreAsync,\n mutate\n } = useServiceLoadMore({\n ...reProps.value.serviceOptions,\n onSuccess: (res) => {\n reProps.value.serviceOptions.onSuccess?.(res)\n\n data.value = (serviceData.value?.list || []) as D[]\n }\n })\n\n const empty = computed(() => noMore.value && !data.value.length)\n const listLoad = computed(() => {\n const { externalLoad, loadingWithData } = reProps.value\n let loading = false\n\n if (externalLoad) {\n loading = true\n } else if (firstLoad.value && data.value.length) {\n loading = loadingWithData\n }\n\n return {\n loading,\n size: 'small',\n ...props.loadingProps\n }\n })\n const listAsyncLoad = computed(() => {\n const { externalLoad, externalAsyncLoad } = reProps.value\n if (externalAsyncLoad) return externalAsyncLoad\n if (firstLoad.value || externalLoad) {\n if (data.value.length) return ''\n return 'loading'\n }\n if (loading.value) return 'loading'\n return noMore.value ? '' : 'load-more'\n })\n\n function onScroll({\n scrollTop,\n scrollBottom\n }: {\n e: Event | WheelEvent\n scrollTop: number\n scrollBottom: number\n }) {\n scrollTopRecord = scrollTop\n\n if (\n loading.value ||\n noMore.value ||\n scrollBottom > (reProps.value.listOptions.scroll?.rowHeight ?? 100)\n ) {\n return\n }\n\n loadMore()\n }\n\n function getScrollTargetEl() {\n const { scrollTarget } = reProps.value\n if (!scrollTarget) return null\n\n if (typeof scrollTarget !== 'string') return scrollTarget\n return document.querySelector(scrollTarget)\n }\n\n function onTargetScroll(evt: Event) {\n const { scrollHeight, clientHeight, scrollTop } = evt.target as HTMLElement\n const scrollBottom = scrollHeight - clientHeight - scrollTop\n onScroll({ scrollTop, scrollBottom, e: evt })\n }\n\n function addListerTarget() {\n const el = getScrollTargetEl()\n if (!el) return\n\n removeListerTarget()\n el.addEventListener('scroll', onTargetScroll)\n }\n\n function removeListerTarget() {\n const el = getScrollTargetEl()\n if (!el) return\n\n el.removeEventListener('scroll', onTargetScroll)\n }\n\n function resumeScrollTopRecord() {\n let el = getScrollTargetEl()\n if (!el) el = listRef.value?.$el\n if (!el) return\n\n const { scrollTop } = el\n const currentScrollTopRecord = scrollTopRecord\n if (currentScrollTopRecord === scrollTop) return\n\n const core = () => {\n el.scrollTo({ top: currentScrollTopRecord })\n setTimeout(() => {\n if (!el) return\n const { scrollTop, scrollHeight } = el\n if (scrollHeight < currentScrollTopRecord) return\n if (scrollTop >= currentScrollTopRecord) return\n core()\n }, 50)\n }\n\n core()\n }\n\n const expose = {\n data: serviceData,\n dataList,\n firstLoad,\n manualTriggerLoad,\n loading,\n loadingMore,\n noMore,\n error,\n refresh,\n refreshAsync,\n cancel,\n loadMore,\n loadMoreAsync,\n mutate\n } as QdServiceListInstanceFunctions<D, R, P, TP, Pag>\n\n onMounted(() => {\n addListerTarget()\n Object.assign(expose, listRef.value)\n })\n\n onActivated(() => {\n resumeScrollTopRecord()\n addListerTarget()\n })\n\n onDeactivated(() => {\n removeListerTarget()\n })\n\n onBeforeUnmount(() => {\n removeListerTarget()\n })\n\n defineExpose(expose)\n</script>\n\n<style lang=\"less\" scoped>\n .qd-service-list {\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n\n & > :deep(.t-list__load) {\n color: var(--td-text-color-secondary);\n background-color: transparent;\n }\n\n &__empty {\n padding: var(--td-comp-paddingLR-xxl) var(--td-comp-paddingTB-xxl);\n }\n }\n</style>\n"],"names":["data","loading","scrollTop","_withDirectives","_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_createVNode","TEmpty","$slots","_withCtx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../../../../../../node_modules/.pnpm/tdesign-vue-next@1.17.1_vue@3.5.26_typescript@5.9.3_/node_modules/tdesign-vue-next/es/form/consts/index.mjs"],"sourcesContent":["/**\n * tdesign v1.17.1\n * (c) 2025 tdesign\n * @license MIT\n */\n\nimport { computed } from 'vue';\nimport { u as usePrefixClass } from '../../_chunks/dep-8d482ce6.mjs';\nimport 'lodash-es';\nimport '../../_chunks/dep-e3264f04.mjs';\nimport '../../_chunks/dep-e6176713.mjs';\nimport '../../_chunks/dep-c68053ef.mjs';\nimport '../../_chunks/dep-57d87f17.mjs';\nimport '../../_chunks/dep-8c6ad426.mjs';\nimport '../../config-provider/hooks/useConfig.mjs';\nimport '../../config-provider/utils/context.mjs';\nimport '../../_chunks/dep-4d4f98d8.mjs';\nimport '../../_chunks/dep-5e12f8d0.mjs';\nimport '../../_chunks/dep-0f6107c9.mjs';\nimport '../../_chunks/dep-9047f778.mjs';\nimport '../../_chunks/dep-c5d4856e.mjs';\nimport '../../_chunks/dep-fd9800f5.mjs';\nimport '../../_chunks/dep-5daea114.mjs';\nimport '../../_chunks/dep-5e28716a.mjs';\nimport '../../_chunks/dep-d76cff35.mjs';\nimport '../../_chunks/dep-dc5eb4b1.mjs';\nimport '../../_chunks/dep-d6b3336f.mjs';\n\nvar FORM_CONTROL_COMPONENTS = [\"TInput\", \"TInputNumber\", \"TTextarea\", \"TCascader\", \"TSelect\", \"TOption\", \"TSwitch\", \"TCheckbox\", \"TCheckboxGroup\", \"TRadio\", \"TRadioGroup\", \"TTreeSelect\", \"TDatePicker\", \"TTimePicker\", \"TUpload\", \"TTransfer\", \"TSlider\"];\nvar useCLASSNAMES = function useCLASSNAMES() {\n var classPrefix = usePrefixClass();\n return computed(function () {\n var form = \"\".concat(classPrefix.value, \"-form\");\n var input = \"\".concat(classPrefix.value, \"-input\");\n var is = \"\".concat(classPrefix.value, \"-is\");\n return {\n form: form,\n label: \"\".concat(form, \"__label\"),\n labelTop: \"\".concat(form, \"__label--top\"),\n inline: \"\".concat(form, \"-inline\"),\n formItem: \"\".concat(form, \"__item\"),\n formItemWithHelp: \"\".concat(form, \"__item-with-help\"),\n formItemWithExtra: \"\".concat(form, \"__item-with-extra\"),\n controls: \"\".concat(form, \"__controls\"),\n controlsContent: \"\".concat(form, \"__controls-content\"),\n status: \"\".concat(form, \"__status\"),\n extra: \"\".concat(input, \"__extra\"),\n help: \"\".concat(input, \"__help\"),\n success: \"\".concat(is, \"-success\"),\n successBorder: \"\".concat(form, \"--success-border\"),\n error: \"\".concat(is, \"-error\"),\n warning: \"\".concat(is, \"-warning\")\n };\n });\n};\nvar ValidateStatus = /* @__PURE__ */function (ValidateStatus2) {\n ValidateStatus2[\"TO_BE_VALIDATED\"] = \"not\";\n ValidateStatus2[\"SUCCESS\"] = \"success\";\n ValidateStatus2[\"FAIL\"] = \"fail\";\n return ValidateStatus2;\n}(ValidateStatus || {});\nvar FormInjectionKey = Symbol(\"FormProvide\");\nvar FormItemInjectionKey = Symbol(\"FormItemProvide\");\n\nexport { FORM_CONTROL_COMPONENTS, FormInjectionKey, FormItemInjectionKey, ValidateStatus, useCLASSNAMES };\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AA8DG,IAAC,uBAAuB,OAAO,iBAAiB;","x_google_ignoreList":[0]}
|