ll-plus 2.7.15 → 2.7.17
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/es/components/advanced-filtering/index.d.ts +300 -300
- package/es/components/advanced-filtering/src/advanced-filtering.d.ts +1 -2
- package/es/components/advanced-filtering/src/advanced-filtering.vue.d.ts +150 -150
- package/es/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +148 -148
- package/es/components/advanced-filtering/src/components/advanced-filtering-tags.vue.d.ts +3 -3
- package/es/components/breadcrumb-card/index.d.ts +1 -1
- package/es/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +1 -1
- package/es/components/cascader/index.d.ts +8 -8
- package/es/components/cascader/src/cascader.vue.d.ts +8 -8
- package/es/components/checkbox/index.d.ts +217 -217
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/es/components/checkbox/src/checkbox.d.ts +56 -56
- package/es/components/drawer/index.d.ts +5 -5
- package/es/components/drawer/src/components/second-confirmation/index.d.ts +1 -1
- package/es/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +1 -1
- package/es/components/drawer/src/drawer.vue.d.ts +5 -5
- package/es/components/easy-cron/index.d.ts +88 -88
- package/es/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/es/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/es/components/easy-cron/src/easy-cron.vue.d.ts +88 -88
- package/es/components/form/index.d.ts +148 -148
- package/es/components/form/src/components/form-component.vue.d.ts +1 -1
- package/es/components/form/src/config/form.d.ts +56 -56
- package/es/components/form/src/form.vue.d.ts +147 -147
- package/es/components/icon-picker/index.d.ts +1 -1
- package/es/components/icon-picker/src/components/modal.vue.d.ts +1 -1
- package/es/components/icon-picker/src/icon-picker.vue.d.ts +1 -1
- package/es/components/input/index.d.ts +33 -33
- package/es/components/input/src/input.vue.d.ts +33 -33
- package/es/components/key-value/index.d.ts +2 -16096
- package/es/components/key-value/src/components/key-value-item.vue.d.ts +334 -367
- package/es/components/key-value/src/config/key-value-item.d.ts +41 -288
- package/es/components/key-value/src/config/key-value.d.ts +23 -29
- package/es/components/key-value/src/key-value.vue.d.ts +1151 -1239
- package/es/components/modal/index.d.ts +1 -1
- package/es/components/modal/src/modal.vue.d.ts +1 -1
- package/es/components/new-drawer/index.d.ts +7 -7
- package/es/components/new-drawer/src/drawer.vue.d.ts +7 -7
- package/es/components/new-modal/index.d.ts +2 -2
- package/es/components/new-modal/src/modal.vue.d.ts +2 -2
- package/es/components/rich-text-editor/index.d.ts +1 -1
- package/es/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/es/components/select/index.d.ts +4 -4
- package/es/components/select/src/select.vue.d.ts +4 -4
- package/es/components/select-group/index.d.ts +2 -2
- package/es/components/select-group/src/select-group.d.ts +1 -1
- package/es/components/select-group/src/select-group.vue.d.ts +2 -2
- package/es/components/table/index.d.ts +6 -6
- package/es/components/table/src/components/main-table.vue.d.ts +2 -2
- package/es/components/table/src/config/table.d.ts +2 -2
- package/es/components/table/src/table.vue.d.ts +6 -6
- package/es/components/textarea/index.d.ts +5 -5
- package/es/components/textarea/src/textarea.vue.d.ts +5 -5
- package/es/components/tooltip/index.d.ts +4 -4
- package/es/components/tooltip/src/tooltip.d.ts +1 -1
- package/es/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/es/components/tree-search/index.d.ts +1 -1
- package/es/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/es/components/upload-drag/index.d.ts +2 -2
- package/es/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/es/index.mjs +3 -2
- package/es/index.mjs.map +1 -1
- package/es/packages/components/advanced-filtering/index.mjs +1 -1
- package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs +3 -5
- package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs.map +1 -1
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs +2 -1
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs.map +1 -1
- package/es/packages/components/form/src/form.vue2.mjs +19 -11
- package/es/packages/components/form/src/form.vue2.mjs.map +1 -1
- package/es/packages/components/index.mjs +1 -1
- package/es/packages/components/key-value/index.mjs.map +1 -1
- package/es/packages/components/key-value/src/components/key-value-item.vue2.mjs +66 -67
- package/es/packages/components/key-value/src/components/key-value-item.vue2.mjs.map +1 -1
- package/es/packages/components/key-value/src/config/key-value-item.mjs +36 -11
- package/es/packages/components/key-value/src/config/key-value-item.mjs.map +1 -1
- package/es/packages/components/key-value/src/config/key-value.mjs +4 -2
- package/es/packages/components/key-value/src/config/key-value.mjs.map +1 -1
- package/es/packages/components/key-value/src/key-value.vue2.mjs +97 -33
- package/es/packages/components/key-value/src/key-value.vue2.mjs.map +1 -1
- package/es/packages/components/select-group/src/select-group.vue2.mjs +1 -2
- package/es/packages/components/select-group/src/select-group.vue2.mjs.map +1 -1
- package/es/packages/utils/data.mjs +42 -0
- package/es/packages/utils/data.mjs.map +1 -0
- package/es/packages/utils/{deepUnref.mjs → deep-unref.mjs} +1 -1
- package/es/packages/utils/deep-unref.mjs.map +1 -0
- package/es/packages/utils/index.mjs +2 -1
- package/es/packages/utils/index.mjs.map +1 -1
- package/es/utils/data.d.ts +3 -0
- package/es/utils/index.d.ts +2 -1
- package/es/utils/props/runtime.d.ts +2 -2
- package/index.full.js +257 -125
- package/index.full.min.js +22 -22
- package/index.full.min.js.map +1 -1
- package/index.full.min.mjs +22 -22
- package/index.full.min.mjs.map +1 -1
- package/index.full.mjs +256 -126
- package/lib/components/advanced-filtering/index.d.ts +300 -300
- package/lib/components/advanced-filtering/src/advanced-filtering.d.ts +1 -2
- package/lib/components/advanced-filtering/src/advanced-filtering.vue.d.ts +150 -150
- package/lib/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +148 -148
- package/lib/components/advanced-filtering/src/components/advanced-filtering-tags.vue.d.ts +3 -3
- package/lib/components/breadcrumb-card/index.d.ts +1 -1
- package/lib/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +1 -1
- package/lib/components/cascader/index.d.ts +8 -8
- package/lib/components/cascader/src/cascader.vue.d.ts +8 -8
- package/lib/components/checkbox/index.d.ts +217 -217
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/lib/components/checkbox/src/checkbox.d.ts +56 -56
- package/lib/components/drawer/index.d.ts +5 -5
- package/lib/components/drawer/src/components/second-confirmation/index.d.ts +1 -1
- package/lib/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +1 -1
- package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
- package/lib/components/easy-cron/index.d.ts +88 -88
- package/lib/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/lib/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/lib/components/easy-cron/src/easy-cron.vue.d.ts +88 -88
- package/lib/components/form/index.d.ts +148 -148
- package/lib/components/form/src/components/form-component.vue.d.ts +1 -1
- package/lib/components/form/src/config/form.d.ts +56 -56
- package/lib/components/form/src/form.vue.d.ts +147 -147
- package/lib/components/icon-picker/index.d.ts +1 -1
- package/lib/components/icon-picker/src/components/modal.vue.d.ts +1 -1
- package/lib/components/icon-picker/src/icon-picker.vue.d.ts +1 -1
- package/lib/components/input/index.d.ts +33 -33
- package/lib/components/input/src/input.vue.d.ts +33 -33
- package/lib/components/key-value/index.d.ts +2 -16096
- package/lib/components/key-value/src/components/key-value-item.vue.d.ts +334 -367
- package/lib/components/key-value/src/config/key-value-item.d.ts +41 -288
- package/lib/components/key-value/src/config/key-value.d.ts +23 -29
- package/lib/components/key-value/src/key-value.vue.d.ts +1151 -1239
- package/lib/components/modal/index.d.ts +1 -1
- package/lib/components/modal/src/modal.vue.d.ts +1 -1
- package/lib/components/new-drawer/index.d.ts +7 -7
- package/lib/components/new-drawer/src/drawer.vue.d.ts +7 -7
- package/lib/components/new-modal/index.d.ts +2 -2
- package/lib/components/new-modal/src/modal.vue.d.ts +2 -2
- package/lib/components/rich-text-editor/index.d.ts +1 -1
- package/lib/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/lib/components/select/index.d.ts +4 -4
- package/lib/components/select/src/select.vue.d.ts +4 -4
- package/lib/components/select-group/index.d.ts +2 -2
- package/lib/components/select-group/src/select-group.d.ts +1 -1
- package/lib/components/select-group/src/select-group.vue.d.ts +2 -2
- package/lib/components/table/index.d.ts +6 -6
- package/lib/components/table/src/components/main-table.vue.d.ts +2 -2
- package/lib/components/table/src/config/table.d.ts +2 -2
- package/lib/components/table/src/table.vue.d.ts +6 -6
- package/lib/components/textarea/index.d.ts +5 -5
- package/lib/components/textarea/src/textarea.vue.d.ts +5 -5
- package/lib/components/tooltip/index.d.ts +4 -4
- package/lib/components/tooltip/src/tooltip.d.ts +1 -1
- package/lib/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/lib/components/tree-search/index.d.ts +1 -1
- package/lib/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/lib/components/upload-drag/index.d.ts +2 -2
- package/lib/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/packages/components/advanced-filtering/index.js +0 -1
- package/lib/packages/components/advanced-filtering/index.js.map +1 -1
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.js +5 -8
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.js.map +1 -1
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js +2 -1
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js.map +1 -1
- package/lib/packages/components/form/src/form.vue2.js +19 -11
- package/lib/packages/components/form/src/form.vue2.js.map +1 -1
- package/lib/packages/components/index.js +0 -1
- package/lib/packages/components/index.js.map +1 -1
- package/lib/packages/components/key-value/index.js.map +1 -1
- package/lib/packages/components/key-value/src/components/key-value-item.vue2.js +65 -66
- package/lib/packages/components/key-value/src/components/key-value-item.vue2.js.map +1 -1
- package/lib/packages/components/key-value/src/config/key-value-item.js +36 -11
- package/lib/packages/components/key-value/src/config/key-value-item.js.map +1 -1
- package/lib/packages/components/key-value/src/config/key-value.js +4 -2
- package/lib/packages/components/key-value/src/config/key-value.js.map +1 -1
- package/lib/packages/components/key-value/src/key-value.vue2.js +97 -33
- package/lib/packages/components/key-value/src/key-value.vue2.js.map +1 -1
- package/lib/packages/components/select-group/src/select-group.vue2.js +2 -3
- package/lib/packages/components/select-group/src/select-group.vue2.js.map +1 -1
- package/lib/packages/utils/data.js +46 -0
- package/lib/packages/utils/data.js.map +1 -0
- package/lib/packages/utils/{deepUnref.js → deep-unref.js} +1 -1
- package/lib/packages/utils/deep-unref.js.map +1 -0
- package/lib/packages/utils/index.js +5 -1
- package/lib/packages/utils/index.js.map +1 -1
- package/lib/utils/data.d.ts +3 -0
- package/lib/utils/index.d.ts +2 -1
- package/lib/utils/props/runtime.d.ts +2 -2
- package/package.json +1 -1
- package/theme-chalk/css/advanced-filtering.css +2 -2
- package/theme-chalk/css/api-component.css +2 -2
- package/theme-chalk/css/cascader.css +2 -2
- package/theme-chalk/css/checkbox.css +2 -2
- package/theme-chalk/css/code-editor.css +2 -2
- package/theme-chalk/css/color-picker.css +2 -2
- package/theme-chalk/css/cropper.css +2 -2
- package/theme-chalk/css/descriptions.css +2 -2
- package/theme-chalk/css/drawer.css +2 -2
- package/theme-chalk/css/dropdown-button-simple.css +2 -2
- package/theme-chalk/css/dropdown.css +2 -2
- package/theme-chalk/css/easy-cron.css +2 -2
- package/theme-chalk/css/form.css +2 -2
- package/theme-chalk/css/images.css +1 -1
- package/theme-chalk/css/index.css +3 -3
- package/theme-chalk/css/input-number.css +2 -2
- package/theme-chalk/css/input.css +2 -2
- package/theme-chalk/css/key-value.css +2 -2
- package/theme-chalk/css/markdown-editor.css +2 -2
- package/theme-chalk/css/modal.css +2 -2
- package/theme-chalk/css/new-drawer.css +2 -2
- package/theme-chalk/css/new-modal.css +2 -2
- package/theme-chalk/css/number-range.css +2 -2
- package/theme-chalk/css/rich-text-editor.css +2 -2
- package/theme-chalk/css/segmented.css +2 -2
- package/theme-chalk/css/switch.css +2 -2
- package/theme-chalk/css/table.css +2 -2
- package/theme-chalk/css/tabs-simple.css +2 -2
- package/theme-chalk/css/tag-group.css +2 -2
- package/types/packages/components/advanced-filtering/index.d.ts +300 -300
- package/types/packages/components/advanced-filtering/src/advanced-filtering.d.ts +1 -2
- package/types/packages/components/advanced-filtering/src/advanced-filtering.vue.d.ts +150 -150
- package/types/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +148 -148
- package/types/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue.d.ts +3 -3
- package/types/packages/components/breadcrumb-card/index.d.ts +1 -1
- package/types/packages/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +1 -1
- package/types/packages/components/cascader/index.d.ts +8 -8
- package/types/packages/components/cascader/src/cascader.vue.d.ts +8 -8
- package/types/packages/components/checkbox/index.d.ts +217 -217
- package/types/packages/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/types/packages/components/checkbox/src/checkbox.d.ts +56 -56
- package/types/packages/components/drawer/index.d.ts +5 -5
- package/types/packages/components/drawer/src/components/second-confirmation/index.d.ts +1 -1
- package/types/packages/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +1 -1
- package/types/packages/components/drawer/src/drawer.vue.d.ts +5 -5
- package/types/packages/components/easy-cron/index.d.ts +88 -88
- package/types/packages/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/types/packages/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/types/packages/components/easy-cron/src/easy-cron.vue.d.ts +88 -88
- package/types/packages/components/form/index.d.ts +148 -148
- package/types/packages/components/form/src/components/form-component.vue.d.ts +1 -1
- package/types/packages/components/form/src/config/form.d.ts +56 -56
- package/types/packages/components/form/src/form.vue.d.ts +147 -147
- package/types/packages/components/icon-picker/index.d.ts +1 -1
- package/types/packages/components/icon-picker/src/components/modal.vue.d.ts +1 -1
- package/types/packages/components/icon-picker/src/icon-picker.vue.d.ts +1 -1
- package/types/packages/components/input/index.d.ts +33 -33
- package/types/packages/components/input/src/input.vue.d.ts +33 -33
- package/types/packages/components/key-value/index.d.ts +2 -16096
- package/types/packages/components/key-value/src/components/key-value-item.vue.d.ts +334 -367
- package/types/packages/components/key-value/src/config/key-value-item.d.ts +41 -288
- package/types/packages/components/key-value/src/config/key-value.d.ts +23 -29
- package/types/packages/components/key-value/src/key-value.vue.d.ts +1151 -1239
- package/types/packages/components/modal/index.d.ts +1 -1
- package/types/packages/components/modal/src/modal.vue.d.ts +1 -1
- package/types/packages/components/new-drawer/index.d.ts +7 -7
- package/types/packages/components/new-drawer/src/drawer.vue.d.ts +7 -7
- package/types/packages/components/new-modal/index.d.ts +2 -2
- package/types/packages/components/new-modal/src/modal.vue.d.ts +2 -2
- package/types/packages/components/rich-text-editor/index.d.ts +1 -1
- package/types/packages/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/types/packages/components/select/index.d.ts +4 -4
- package/types/packages/components/select/src/select.vue.d.ts +4 -4
- package/types/packages/components/select-group/index.d.ts +2 -2
- package/types/packages/components/select-group/src/select-group.d.ts +1 -1
- package/types/packages/components/select-group/src/select-group.vue.d.ts +2 -2
- package/types/packages/components/table/index.d.ts +6 -6
- package/types/packages/components/table/src/components/main-table.vue.d.ts +2 -2
- package/types/packages/components/table/src/config/table.d.ts +2 -2
- package/types/packages/components/table/src/table.vue.d.ts +6 -6
- package/types/packages/components/textarea/index.d.ts +5 -5
- package/types/packages/components/textarea/src/textarea.vue.d.ts +5 -5
- package/types/packages/components/tooltip/index.d.ts +4 -4
- package/types/packages/components/tooltip/src/tooltip.d.ts +1 -1
- package/types/packages/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/types/packages/components/tree-search/index.d.ts +1 -1
- package/types/packages/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/types/packages/components/upload-drag/index.d.ts +2 -2
- package/types/packages/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/types/packages/utils/data.d.ts +3 -0
- package/types/packages/utils/index.d.ts +2 -1
- package/types/packages/utils/props/runtime.d.ts +2 -2
- package/es/packages/utils/deepUnref.mjs.map +0 -1
- package/lib/packages/utils/deepUnref.js.map +0 -1
- /package/es/utils/{deepUnref.d.ts → deep-unref.d.ts} +0 -0
- /package/lib/utils/{deepUnref.d.ts → deep-unref.d.ts} +0 -0
- /package/types/packages/utils/{deepUnref.d.ts → deep-unref.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, useAttrs, ref, computed,
|
|
1
|
+
import { defineComponent, useAttrs, ref, computed, nextTick, watch, resolveComponent, openBlock, createBlock, unref, withCtx, createElementBlock, normalizeClass, createVNode, renderSlot, resolveDynamicComponent, mergeProps, createSlots, renderList, createCommentVNode, normalizeStyle, createTextVNode, createElementVNode, normalizeProps, guardReactiveProps } from 'vue';
|
|
2
2
|
import { isEmpty } from 'lodash-es';
|
|
3
3
|
import '../../../../utils/index.mjs';
|
|
4
4
|
import '../config/index.mjs';
|
|
@@ -19,7 +19,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
19
19
|
const attrs = useAttrs();
|
|
20
20
|
const bem = createNamespace("key-value");
|
|
21
21
|
const innerValue = ref(props.value);
|
|
22
|
-
const
|
|
22
|
+
const formRef = ref();
|
|
23
23
|
const getKeyType = computed(() => {
|
|
24
24
|
const option = props.keyType;
|
|
25
25
|
return option;
|
|
@@ -37,27 +37,34 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
37
37
|
const getValueDisabled = computed(() => {
|
|
38
38
|
return props.disabledValue?.includes(props.idx) || props.disabled || getValueType.value?.disabled;
|
|
39
39
|
});
|
|
40
|
-
const getDeleteDisabled = computed(() => {
|
|
41
|
-
return props.disabledDelete?.includes(props.idx) || props.disabled;
|
|
42
|
-
});
|
|
43
40
|
const hasValue = computed(() => {
|
|
44
41
|
return innerValue.value["key"] || innerValue.value["key"] === 0 || innerValue.value["value"];
|
|
45
42
|
});
|
|
43
|
+
const getDeleteDisabled = computed(() => {
|
|
44
|
+
return props.disabledDelete?.includes(props.idx) || props.disabled || props.values.length === 1 && !hasValue.value;
|
|
45
|
+
});
|
|
46
46
|
const handleDelete = () => {
|
|
47
47
|
emits("delete");
|
|
48
48
|
};
|
|
49
49
|
const handleChange = async () => {
|
|
50
50
|
innerValue.value["value"] = null;
|
|
51
|
-
await
|
|
51
|
+
await formRef.value?.clearValidate();
|
|
52
52
|
};
|
|
53
53
|
const validate = async () => {
|
|
54
|
-
|
|
54
|
+
await nextTick();
|
|
55
|
+
try {
|
|
56
|
+
await formRef.value?.validate();
|
|
57
|
+
return Promise.resolve();
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.log({ error }, props.idx);
|
|
60
|
+
return Promise.reject();
|
|
61
|
+
}
|
|
55
62
|
};
|
|
56
63
|
const resetFields = async () => {
|
|
57
|
-
|
|
64
|
+
await formRef.value?.resetFields();
|
|
58
65
|
};
|
|
59
66
|
const clearValidate = async (namePath) => {
|
|
60
|
-
|
|
67
|
+
await formRef.value?.clearValidate(namePath);
|
|
61
68
|
};
|
|
62
69
|
watch(
|
|
63
70
|
innerValue,
|
|
@@ -88,8 +95,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
88
95
|
const _component_a_popconfirm = resolveComponent("a-popconfirm");
|
|
89
96
|
const _component_ll_form = resolveComponent("ll-form");
|
|
90
97
|
return openBlock(), createBlock(_component_ll_form, {
|
|
91
|
-
ref_key: "
|
|
92
|
-
ref:
|
|
98
|
+
ref_key: "formRef",
|
|
99
|
+
ref: formRef,
|
|
93
100
|
"form-columns": unref(formColumns),
|
|
94
101
|
"form-data": props.value,
|
|
95
102
|
"form-options": unref(formOptions)
|
|
@@ -190,7 +197,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
190
197
|
name: "value"
|
|
191
198
|
}, {
|
|
192
199
|
default: withCtx(() => [
|
|
193
|
-
renderSlot(_ctx.$slots, "value-
|
|
200
|
+
renderSlot(_ctx.$slots, "value-wrapper", normalizeProps(guardReactiveProps(getValueType.value)), () => [
|
|
194
201
|
(openBlock(), createBlock(resolveDynamicComponent(`ll-${getValueType.value.type}`), mergeProps({
|
|
195
202
|
value: innerValue.value["value"],
|
|
196
203
|
"onUpdate:value": _cache[2] || (_cache[2] = ($event) => innerValue.value["value"] = $event),
|
|
@@ -218,57 +225,21 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
218
225
|
2
|
|
219
226
|
/* CLASS */
|
|
220
227
|
),
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
onConfirm: handleDelete
|
|
235
|
-
}, {
|
|
236
|
-
default: withCtx(() => [
|
|
237
|
-
createElementVNode(
|
|
238
|
-
"div",
|
|
239
|
-
{
|
|
240
|
-
class: normalizeClass(unref(bem).m("delete")),
|
|
241
|
-
style: normalizeStyle({
|
|
242
|
-
"margin-top": !!unref(attrs)["key-label"] || !!unref(attrs)["value-label"] ? "26px" : "0px"
|
|
243
|
-
})
|
|
244
|
-
},
|
|
245
|
-
[
|
|
246
|
-
createVNode(_component_ll_button, {
|
|
247
|
-
type: "link",
|
|
248
|
-
disabled: getDeleteDisabled.value
|
|
249
|
-
}, {
|
|
250
|
-
default: withCtx(() => [
|
|
251
|
-
renderSlot(_ctx.$slots, "delete-icon", {}, () => [
|
|
252
|
-
createVNode(_component_ll_icon, {
|
|
253
|
-
"icon-name": "icon-remove",
|
|
254
|
-
class: "delete"
|
|
255
|
-
})
|
|
256
|
-
])
|
|
257
|
-
]),
|
|
258
|
-
_: 3
|
|
259
|
-
/* FORWARDED */
|
|
260
|
-
}, 8, ["disabled"])
|
|
261
|
-
],
|
|
262
|
-
6
|
|
263
|
-
/* CLASS, STYLE */
|
|
264
|
-
)
|
|
265
|
-
]),
|
|
266
|
-
_: 3
|
|
267
|
-
/* FORWARDED */
|
|
268
|
-
}, 8, ["overlay-class-name", "get-popup-container"])) : (openBlock(), createElementBlock(
|
|
228
|
+
hasValue.value ? (openBlock(), createBlock(_component_a_popconfirm, {
|
|
229
|
+
key: 2,
|
|
230
|
+
title: "\u786E\u5B9A\u8981\u79FB\u9664\u5417?",
|
|
231
|
+
"ok-text": "\u786E\u8BA4",
|
|
232
|
+
"cancel-text": "\u53D6\u6D88",
|
|
233
|
+
placement: "topRight",
|
|
234
|
+
"overlay-class-name": unref(bem).m("popconfirm"),
|
|
235
|
+
"get-popup-container": (trigger) => trigger.parentNode,
|
|
236
|
+
"destroy-tooltip-on-hide": "",
|
|
237
|
+
onConfirm: handleDelete
|
|
238
|
+
}, {
|
|
239
|
+
default: withCtx(() => [
|
|
240
|
+
createElementVNode(
|
|
269
241
|
"div",
|
|
270
242
|
{
|
|
271
|
-
key: 1,
|
|
272
243
|
class: normalizeClass(unref(bem).m("delete")),
|
|
273
244
|
style: normalizeStyle({
|
|
274
245
|
"margin-top": !!unref(attrs)["key-label"] || !!unref(attrs)["value-label"] ? "26px" : "0px"
|
|
@@ -277,8 +248,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
277
248
|
[
|
|
278
249
|
createVNode(_component_ll_button, {
|
|
279
250
|
type: "link",
|
|
280
|
-
disabled: getDeleteDisabled.value
|
|
281
|
-
onClick: handleDelete
|
|
251
|
+
disabled: getDeleteDisabled.value
|
|
282
252
|
}, {
|
|
283
253
|
default: withCtx(() => [
|
|
284
254
|
renderSlot(_ctx.$slots, "delete-icon", {}, () => [
|
|
@@ -294,11 +264,40 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
294
264
|
],
|
|
295
265
|
6
|
|
296
266
|
/* CLASS, STYLE */
|
|
297
|
-
)
|
|
267
|
+
)
|
|
268
|
+
]),
|
|
269
|
+
_: 3
|
|
270
|
+
/* FORWARDED */
|
|
271
|
+
}, 8, ["overlay-class-name", "get-popup-container"])) : (openBlock(), createElementBlock(
|
|
272
|
+
"div",
|
|
273
|
+
{
|
|
274
|
+
key: 3,
|
|
275
|
+
class: normalizeClass(unref(bem).m("delete")),
|
|
276
|
+
style: normalizeStyle({
|
|
277
|
+
"margin-top": !!unref(attrs)["key-label"] || !!unref(attrs)["value-label"] ? "26px" : "0px"
|
|
278
|
+
})
|
|
279
|
+
},
|
|
280
|
+
[
|
|
281
|
+
createVNode(_component_ll_button, {
|
|
282
|
+
type: "link",
|
|
283
|
+
disabled: getDeleteDisabled.value,
|
|
284
|
+
onClick: handleDelete
|
|
285
|
+
}, {
|
|
286
|
+
default: withCtx(() => [
|
|
287
|
+
renderSlot(_ctx.$slots, "delete-icon", {}, () => [
|
|
288
|
+
createVNode(_component_ll_icon, {
|
|
289
|
+
"icon-name": "icon-remove",
|
|
290
|
+
class: "delete"
|
|
291
|
+
})
|
|
292
|
+
])
|
|
293
|
+
]),
|
|
294
|
+
_: 3
|
|
295
|
+
/* FORWARDED */
|
|
296
|
+
}, 8, ["disabled"])
|
|
298
297
|
],
|
|
299
|
-
|
|
300
|
-
/*
|
|
301
|
-
))
|
|
298
|
+
6
|
|
299
|
+
/* CLASS, STYLE */
|
|
300
|
+
))
|
|
302
301
|
],
|
|
303
302
|
2
|
|
304
303
|
/* CLASS */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-value-item.vue2.mjs","sources":["../../../../../../../packages/components/key-value/src/components/key-value-item.vue"],"sourcesContent":["<template>\n <ll-form\n ref=\"form\"\n :form-columns=\"formColumns\"\n :form-data=\"props.value\"\n :form-options=\"formOptions\"\n >\n <template #formItem=\"{ item }\">\n <template v-if=\"item.key === 'other'\">\n <div :class=\"bem.e('item')\">\n <div v-if=\"props.keyValueType !== 'single'\" :class=\"bem.m('left')\">\n <ll-form-item\n :label=\"attrs['key-label']\"\n :label-col=\"{\n span: 24\n }\"\n :rules=\"getKeyType.rules || []\"\n name=\"key\"\n >\n <slot name=\"key\">\n <ll-select\n v-if=\"!isEmpty(props.keyTypes)\"\n v-model:value=\"innerValue['key']\"\n :options=\"props.keyTypes\"\n :disabled=\"getKeyDisabled\"\n style=\"width: 100%\"\n placeholder=\"请选择\"\n allow-clear\n @change=\"handleChange\"\n />\n <component\n :is=\"`ll-${getKeyType.type}`\"\n v-else\n v-model:value=\"innerValue['key']\"\n v-bind=\"getKeyType\"\n :disabled=\"getKeyDisabled\"\n style=\"width: 100%\"\n >\n <template\n v-for=\"_item in Object.keys($slots)\"\n :key=\"_item\"\n #[_item]=\"data\"\n >\n <slot\n :name=\"_item\"\n v-bind=\"data || {}\"\n content=\"key\"\n ></slot>\n </template>\n </component>\n </slot>\n </ll-form-item>\n </div>\n\n <div\n v-if=\"props.keyValueType !== 'single'\"\n :class=\"bem.m('separator')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label'] ? '26px' : '0px'\n }\"\n >\n <slot name=\"separator\">~</slot>\n </div>\n\n <div :class=\"bem.m('right')\">\n <ll-form-item\n :label=\"attrs['value-label']\"\n :label-col=\"{\n span: 24\n }\"\n :rules=\"getValueType.rules || []\"\n name=\"value\"\n >\n <slot name=\"value-warapper\" v-bind=\"getValueType\">\n <component\n :is=\"`ll-${getValueType.type}`\"\n v-model:value=\"innerValue['value']\"\n :disabled=\"getValueDisabled\"\n style=\"width: 100%\"\n v-bind=\"getValueType\"\n >\n <template\n v-for=\"_item in Object.keys($slots)\"\n :key=\"_item\"\n #[_item]=\"data\"\n >\n <slot\n :name=\"_item\"\n v-bind=\"data || {}\"\n content=\"value\"\n ></slot>\n </template>\n </component>\n </slot>\n </ll-form-item>\n </div>\n <template v-if=\"props.showDelete\">\n <template v-if=\"hasValue\">\n <a-popconfirm\n title=\"确定要移除吗?\"\n ok-text=\"确认\"\n cancel-text=\"取消\"\n placement=\"topRight\"\n :overlay-class-name=\"bem.m('popconfirm')\"\n :get-popup-container=\"(trigger: Element) => trigger.parentNode\"\n destroy-tooltip-on-hide\n @confirm=\"handleDelete\"\n >\n <div\n :class=\"bem.m('delete')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label']\n ? '26px'\n : '0px'\n }\"\n >\n <ll-button type=\"link\" :disabled=\"getDeleteDisabled\">\n <slot name=\"delete-icon\">\n <ll-icon icon-name=\"icon-remove\" class=\"delete\" />\n </slot>\n </ll-button>\n </div>\n </a-popconfirm>\n </template>\n <div\n v-else\n :class=\"bem.m('delete')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label']\n ? '26px'\n : '0px'\n }\"\n >\n <ll-button\n type=\"link\"\n :disabled=\"getDeleteDisabled\"\n @click=\"handleDelete\"\n >\n <slot name=\"delete-icon\">\n <ll-icon icon-name=\"icon-remove\" class=\"delete\" />\n </slot>\n </ll-button>\n </div>\n </template>\n </div>\n </template>\n </template>\n </ll-form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, useAttrs, watch, nextTick } from 'vue'\nimport { isEmpty } from 'lodash-es'\nimport { createNamespace } from '@ll-plus/utils'\nimport type { FormInstance } from '@ll-plus/components'\nimport {\n keyValueItemProps,\n keyValueItemEmits,\n formColumns,\n formOptions\n} from '../config'\nimport { type FormColumn } from '@ll-plus/components'\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\ndefineOptions({\n name: 'LlKeyValueItem'\n})\n\nconst props = defineProps(keyValueItemProps)\nconst emits = defineEmits(keyValueItemEmits)\n\nconst attrs = useAttrs()\nconst bem = createNamespace('key-value')\nconst innerValue = ref(props.value)\n\nconst form = ref<FormInstance | null>()\n\nconst getKeyType = computed<FormColumn>(() => {\n const option = props.keyType\n return option\n})\nconst getValueType = computed<FormColumn>(() => {\n let option = props.valueType\n if (innerValue.value['key'] && !isEmpty(props.keyValueTypeDict)) {\n option = props.keyValueTypeDict[innerValue.value['key']]\n }\n return option\n})\n\nconst getKeyDisabled = computed(() => {\n return (\n props.disabledKey?.includes(props.idx) ||\n props.disabled ||\n getKeyType.value?.disabled\n )\n})\n\nconst getValueDisabled = computed(() => {\n return (\n props.disabledValue?.includes(props.idx) ||\n props.disabled ||\n getValueType.value?.disabled\n )\n})\n\nconst getDeleteDisabled = computed(() => {\n return props.disabledDelete?.includes(props.idx) || props.disabled\n})\n\nconst hasValue = computed(() => {\n return (\n innerValue.value['key'] ||\n innerValue.value['key'] === 0 ||\n innerValue.value['value']\n )\n})\n\nconst handleDelete = () => {\n emits('delete')\n}\n\nconst handleChange = async () => {\n innerValue.value['value'] = null\n await form.value?.clearValidate()\n}\n\nconst validate = async () => {\n return await form.value?.validate()\n}\n\nconst resetFields = async () => {\n return await form.value?.resetFields()\n}\nconst clearValidate = async (namePath?: NamePath[]) => {\n return await form.value?.clearValidate(namePath)\n}\n\nwatch(\n innerValue,\n async val => {\n await nextTick().then(() => {\n try {\n emits('update:value', val)\n emits('change')\n } catch (error) {\n console.error(error)\n }\n })\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate\n})\n</script>\n\n<style scoped></style>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"key-value-item.vue2.mjs","sources":["../../../../../../../packages/components/key-value/src/components/key-value-item.vue"],"sourcesContent":["<template>\n <ll-form\n ref=\"formRef\"\n :form-columns=\"formColumns\"\n :form-data=\"props.value\"\n :form-options=\"formOptions\"\n >\n <template #formItem=\"{ item }\">\n <template v-if=\"item.key === 'other'\">\n <div :class=\"bem.e('item')\">\n <div v-if=\"props.keyValueType !== 'single'\" :class=\"bem.m('left')\">\n <ll-form-item\n :label=\"attrs['key-label']\"\n :label-col=\"{\n span: 24\n }\"\n :rules=\"getKeyType.rules || []\"\n name=\"key\"\n >\n <slot name=\"key\">\n <ll-select\n v-if=\"!isEmpty(props.keyTypes)\"\n v-model:value=\"innerValue['key']\"\n :options=\"props.keyTypes\"\n :disabled=\"getKeyDisabled\"\n style=\"width: 100%\"\n placeholder=\"请选择\"\n allow-clear\n @change=\"handleChange\"\n />\n <component\n :is=\"`ll-${getKeyType.type}`\"\n v-else\n v-model:value=\"innerValue['key']\"\n v-bind=\"getKeyType\"\n :disabled=\"getKeyDisabled\"\n style=\"width: 100%\"\n >\n <template\n v-for=\"_item in Object.keys($slots)\"\n :key=\"_item\"\n #[_item]=\"data\"\n >\n <slot\n :name=\"_item\"\n v-bind=\"data || {}\"\n content=\"key\"\n ></slot>\n </template>\n </component>\n </slot>\n </ll-form-item>\n </div>\n\n <div\n v-if=\"props.keyValueType !== 'single'\"\n :class=\"bem.m('separator')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label'] ? '26px' : '0px'\n }\"\n >\n <slot name=\"separator\">~</slot>\n </div>\n\n <div :class=\"bem.m('right')\">\n <ll-form-item\n :label=\"attrs['value-label']\"\n :label-col=\"{\n span: 24\n }\"\n :rules=\"getValueType.rules || []\"\n name=\"value\"\n >\n <slot name=\"value-wrapper\" v-bind=\"getValueType\">\n <component\n :is=\"`ll-${getValueType.type}`\"\n v-model:value=\"innerValue['value']\"\n :disabled=\"getValueDisabled\"\n style=\"width: 100%\"\n v-bind=\"getValueType\"\n >\n <template\n v-for=\"_item in Object.keys($slots)\"\n :key=\"_item\"\n #[_item]=\"data\"\n >\n <slot\n :name=\"_item\"\n v-bind=\"data || {}\"\n content=\"value\"\n ></slot>\n </template>\n </component>\n </slot>\n </ll-form-item>\n </div>\n <template v-if=\"hasValue\">\n <a-popconfirm\n title=\"确定要移除吗?\"\n ok-text=\"确认\"\n cancel-text=\"取消\"\n placement=\"topRight\"\n :overlay-class-name=\"bem.m('popconfirm')\"\n :get-popup-container=\"(trigger: Element) => trigger.parentNode\"\n destroy-tooltip-on-hide\n @confirm=\"handleDelete\"\n >\n <div\n :class=\"bem.m('delete')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label']\n ? '26px'\n : '0px'\n }\"\n >\n <ll-button type=\"link\" :disabled=\"getDeleteDisabled\">\n <slot name=\"delete-icon\">\n <ll-icon icon-name=\"icon-remove\" class=\"delete\" />\n </slot>\n </ll-button>\n </div>\n </a-popconfirm>\n </template>\n <div\n v-else\n :class=\"bem.m('delete')\"\n :style=\"{\n 'margin-top':\n !!attrs['key-label'] || !!attrs['value-label'] ? '26px' : '0px'\n }\"\n >\n <ll-button\n type=\"link\"\n :disabled=\"getDeleteDisabled\"\n @click=\"handleDelete\"\n >\n <slot name=\"delete-icon\">\n <ll-icon icon-name=\"icon-remove\" class=\"delete\" />\n </slot>\n </ll-button>\n </div>\n </div>\n </template>\n </template>\n </ll-form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, useAttrs, watch, nextTick } from 'vue'\nimport { isEmpty } from 'lodash-es'\nimport { createNamespace } from '@ll-plus/utils'\nimport type { FormInstance } from '@ll-plus/components'\nimport {\n keyValueItemProps,\n keyValueItemEmits,\n formColumns,\n formOptions\n} from '../config'\nimport { type FormColumn } from '@ll-plus/components'\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\ndefineOptions({\n name: 'LlKeyValueItem'\n})\n\nconst props = defineProps(keyValueItemProps)\nconst emits = defineEmits(keyValueItemEmits)\n\nconst attrs = useAttrs()\nconst bem = createNamespace('key-value')\nconst innerValue = ref(props.value)\n\nconst formRef = ref<FormInstance | null>()\n\nconst getKeyType = computed<FormColumn>(() => {\n const option = props.keyType\n return option\n})\nconst getValueType = computed<FormColumn>(() => {\n let option = props.valueType\n if (innerValue.value['key'] && !isEmpty(props.keyValueTypeDict)) {\n option = props.keyValueTypeDict[innerValue.value['key']]\n }\n return option\n})\n\nconst getKeyDisabled = computed(() => {\n return (\n props.disabledKey?.includes(props.idx) ||\n props.disabled ||\n getKeyType.value?.disabled\n )\n})\n\nconst getValueDisabled = computed(() => {\n return (\n props.disabledValue?.includes(props.idx) ||\n props.disabled ||\n getValueType.value?.disabled\n )\n})\n\nconst hasValue = computed(() => {\n return (\n innerValue.value['key'] ||\n innerValue.value['key'] === 0 ||\n innerValue.value['value']\n )\n})\n\nconst getDeleteDisabled = computed(() => {\n return (\n props.disabledDelete?.includes(props.idx) ||\n props.disabled ||\n (props.values.length === 1 && !hasValue.value)\n )\n})\n\nconst handleDelete = () => {\n emits('delete')\n}\n\nconst handleChange = async () => {\n innerValue.value['value'] = null\n await formRef.value?.clearValidate()\n}\n\nconst validate = async () => {\n await nextTick()\n try {\n await formRef.value?.validate()\n return Promise.resolve()\n } catch (error) {\n console.log({ error }, props.idx)\n return Promise.reject()\n }\n}\n\nconst resetFields = async () => {\n await formRef.value?.resetFields()\n}\n\nconst clearValidate = async (namePath?: NamePath[]) => {\n await formRef.value?.clearValidate(namePath)\n}\n\nwatch(\n innerValue,\n async val => {\n await nextTick().then(() => {\n try {\n emits('update:value', val)\n emits('change')\n } catch (error) {\n console.error(error)\n }\n })\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate\n})\n</script>\n\n<style scoped></style>\n"],"names":[],"mappings":"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"}
|
|
@@ -29,34 +29,59 @@ const formColumns = [
|
|
|
29
29
|
];
|
|
30
30
|
const keyValueItemProps = buildProps({
|
|
31
31
|
disabled: {
|
|
32
|
-
type: Boolean
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: false
|
|
34
|
+
},
|
|
35
|
+
values: {
|
|
36
|
+
type: definePropType(Array),
|
|
37
|
+
default: () => [
|
|
38
|
+
{
|
|
39
|
+
key: null,
|
|
40
|
+
value: null,
|
|
41
|
+
guid: ""
|
|
42
|
+
}
|
|
43
|
+
]
|
|
33
44
|
},
|
|
34
45
|
disabledValue: {
|
|
35
|
-
type: definePropType(Array)
|
|
46
|
+
type: definePropType(Array),
|
|
47
|
+
default: () => []
|
|
36
48
|
},
|
|
37
49
|
disabledKey: {
|
|
38
|
-
type: definePropType(Array)
|
|
50
|
+
type: definePropType(Array),
|
|
51
|
+
default: () => []
|
|
39
52
|
},
|
|
40
53
|
disabledDelete: {
|
|
41
|
-
type: definePropType(Array)
|
|
54
|
+
type: definePropType(Array),
|
|
55
|
+
default: () => []
|
|
42
56
|
},
|
|
43
57
|
keyValueType: {
|
|
44
|
-
type: definePropType(String)
|
|
58
|
+
type: definePropType(String),
|
|
59
|
+
default: "doubt"
|
|
45
60
|
},
|
|
46
61
|
keyType: {
|
|
47
|
-
type: definePropType(Object)
|
|
62
|
+
type: definePropType(Object),
|
|
63
|
+
default: () => ({
|
|
64
|
+
type: "input",
|
|
65
|
+
placeholder: "\u8BF7\u8F93\u5165Key"
|
|
66
|
+
})
|
|
48
67
|
},
|
|
49
68
|
keyTypes: {
|
|
50
|
-
type: definePropType(Array)
|
|
69
|
+
type: definePropType(Array),
|
|
70
|
+
default: () => []
|
|
51
71
|
},
|
|
52
72
|
valueType: {
|
|
53
|
-
type: definePropType(Object)
|
|
73
|
+
type: definePropType(Object),
|
|
74
|
+
default: () => ({
|
|
75
|
+
type: "input",
|
|
76
|
+
placeholder: "\u8BF7\u8F93\u5165Value"
|
|
77
|
+
})
|
|
54
78
|
},
|
|
55
79
|
value: {
|
|
56
80
|
type: definePropType(Object),
|
|
57
81
|
default: () => ({
|
|
58
82
|
key: "",
|
|
59
|
-
value: ""
|
|
83
|
+
value: "",
|
|
84
|
+
guid: ""
|
|
60
85
|
})
|
|
61
86
|
},
|
|
62
87
|
idx: {
|
|
@@ -67,9 +92,9 @@ const keyValueItemProps = buildProps({
|
|
|
67
92
|
type: Object,
|
|
68
93
|
default: () => ({})
|
|
69
94
|
},
|
|
70
|
-
|
|
95
|
+
keepLast: {
|
|
71
96
|
type: Boolean,
|
|
72
|
-
default:
|
|
97
|
+
default: false
|
|
73
98
|
}
|
|
74
99
|
});
|
|
75
100
|
const keyValueItemEmits = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-value-item.mjs","sources":["../../../../../../../packages/components/key-value/src/config/key-value-item.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\nimport type { FormProps } from 'ant-design-vue'\nimport type { FormColumn } from '@ll-plus/components'\nimport type {
|
|
1
|
+
{"version":3,"file":"key-value-item.mjs","sources":["../../../../../../../packages/components/key-value/src/config/key-value-item.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\nimport type { FormProps } from 'ant-design-vue'\nimport type { FormColumn } from '@ll-plus/components'\nimport type { IKeyType, IKeyValueItem } from './key-value'\n\n// 定义 typeRules 常量\nexport const typeRules: Array<{\n trigger: string[]\n message: string\n validator: (_rule: any, value: any) => Promise<void>\n}> = [\n {\n trigger: ['blur', 'change'],\n message: '此字段是必需的',\n validator: async (_rule: any, value: any): Promise<void> => {\n if (!value) {\n return Promise.reject(new Error('此字段是必需的'))\n } else {\n return Promise.resolve()\n }\n }\n }\n]\n\n// 定义 formOptions 常量\nexport const formOptions: FormProps = {\n layout: 'horizontal',\n labelAlign: 'left'\n}\n\n// 定义 formColumns 常量\nexport const formColumns: Array<{\n key: string\n labelCol: {\n span: number\n }\n}> = [\n {\n key: 'other',\n labelCol: {\n span: 24\n }\n }\n]\n\n// 定义 keyValueItemProps 常量\nexport const keyValueItemProps = buildProps({\n disabled: {\n type: Boolean,\n default: false\n },\n values: {\n type: definePropType<IKeyValueItem[]>(Array),\n default: (): IKeyValueItem[] => [\n {\n key: null,\n value: null,\n guid: ''\n }\n ]\n },\n disabledValue: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n disabledKey: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n disabledDelete: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n keyValueType: {\n type: definePropType<'single' | 'doubt'>(String),\n default: 'doubt'\n },\n keyType: {\n type: definePropType<FormColumn>(Object),\n default: (): FormColumn => ({\n type: 'input',\n placeholder: '请输入Key'\n })\n },\n keyTypes: {\n type: definePropType<IKeyType[]>(Array),\n default: (): IKeyType[] => []\n },\n valueType: {\n type: definePropType<FormColumn>(Object),\n default: (): FormColumn => ({\n type: 'input',\n placeholder: '请输入Value'\n })\n },\n value: {\n type: definePropType<IKeyValueItem>(Object),\n default: (): IKeyValueItem => ({\n key: '',\n value: '',\n guid: ''\n })\n },\n idx: {\n type: Number,\n required: true\n },\n keyValueTypeDict: {\n type: Object as () => Record<string, string>,\n default: (): Record<string, string> => ({})\n },\n keepLast: {\n type: Boolean,\n default: false\n }\n} as const)\n\n// 定义 keyValueItemEmits 常量\nexport const keyValueItemEmits = {\n delete: (): boolean => true,\n change: (): boolean => true,\n 'update:value': (value: IKeyValueItem): boolean => !!value\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import '../../../../utils/index.mjs';
|
|
2
|
+
import { guid } from '../../../../utils/data.mjs';
|
|
2
3
|
import { buildProps, definePropType } from '../../../../utils/props/runtime.mjs';
|
|
3
4
|
|
|
4
5
|
"use strict";
|
|
5
6
|
const getKeyValueItem = () => ({
|
|
6
7
|
key: null,
|
|
7
|
-
value: null
|
|
8
|
+
value: null,
|
|
9
|
+
guid: guid()
|
|
8
10
|
});
|
|
9
11
|
const keyValueProps = buildProps({
|
|
10
12
|
value: {
|
|
11
13
|
type: definePropType(Array),
|
|
12
|
-
default: () => [{ key:
|
|
14
|
+
default: () => [{ key: null, value: null }]
|
|
13
15
|
},
|
|
14
16
|
loading: {
|
|
15
17
|
type: Boolean,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-value.mjs","sources":["../../../../../../../packages/components/key-value/src/config/key-value.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\
|
|
1
|
+
{"version":3,"file":"key-value.mjs","sources":["../../../../../../../packages/components/key-value/src/config/key-value.ts"],"sourcesContent":["import { buildProps, definePropType, guid } from '@ll-plus/utils'\nimport type { ExtractPropTypes } from 'vue'\nimport { type FormColumn } from '@ll-plus/components'\nimport type KeyValue from '../key-value.vue'\n\n// 定义 IKeyType 接口\nexport interface IKeyType {\n label: string\n value: string\n option: FormColumn\n}\n\n// 定义 IKeyValueReturn 接口\nexport interface IKeyValueReturn {\n key: any | null\n value: any | null\n}\n\n// 定义 IKeyValueItem 类型\nexport type IKeyValueItem = IKeyValueReturn & { guid: string }\n\n// 定义 IKeyValueType 类型\ntype IKeyValueType = 'single' | 'doubt'\n\n// 定义 getKeyValueItem 函数\nexport const getKeyValueItem = (): IKeyValueItem => ({\n key: null,\n value: null,\n guid: guid()\n})\n\n// 定义 keyValueProps 常量\nexport const keyValueProps = buildProps({\n value: {\n type: definePropType<IKeyValueReturn[]>(Array),\n default: (): IKeyValueReturn[] => [{ key: null, value: null }]\n },\n loading: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n keyLabel: {\n type: String,\n default: ''\n },\n valueLabel: {\n type: String,\n default: ''\n },\n addText: {\n type: String,\n default: '添加'\n },\n keyValueType: {\n type: definePropType<IKeyValueType>(String),\n default: 'doubt'\n },\n keyType: {\n type: definePropType<FormColumn>(Object),\n default: (): FormColumn => ({\n type: 'input',\n placeholder: '请输入Key'\n })\n },\n keyTypes: {\n type: definePropType<IKeyType[]>(Array),\n default: (): IKeyType[] => []\n },\n valueType: {\n type: definePropType<FormColumn>(Object),\n default: (): FormColumn => ({\n type: 'input',\n placeholder: '请输入Value'\n })\n },\n disabledValue: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n disabledKey: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n disabledDelete: {\n type: definePropType<number[]>(Array),\n default: (): number[] => []\n },\n disabledAdd: {\n type: Boolean,\n default: false\n },\n validate: {\n type: Boolean,\n default: false\n },\n keepLast: {\n type: Boolean,\n default: true\n }\n} as const)\n\n// 定义 IKeyValueAddEmits 接口\nexport interface IKeyValueAddEmits {\n index: number\n item: IKeyValueItem\n value: IKeyValueItem[]\n}\n\n// 定义 keyValueEmits 常量\nexport const keyValueEmits = {\n change: (value: IKeyValueReturn[]): boolean => !!value,\n add: (params: IKeyValueAddEmits): boolean => !!params,\n delete: (index: number): boolean => typeof index === 'number',\n 'update:value': (value: IKeyValueReturn[]): boolean => !!value\n}\n\n// 定义 KeyValueProps 类型\nexport type KeyValueProps = ExtractPropTypes<typeof keyValueProps>\n// 定义 KeyValueEmits 类型\nexport type KeyValueEmits = typeof keyValueEmits\n// 定义 KeyValueInstance 类型\nexport type KeyValueInstance = InstanceType<typeof KeyValue>\n"],"names":[],"mappings":";;;;;AAyBO,MAAM,kBAAkB,OAAsB;AAAA,EACnD,GAAK,EAAA,IAAA;AAAA,EACL,KAAO,EAAA,IAAA;AAAA,EACP,MAAM,IAAK,EAAA;AACb,CAAA,EAAA;AAGO,MAAM,gBAAgB,UAAW,CAAA;AAAA,EACtC,KAAO,EAAA;AAAA,IACL,IAAA,EAAM,eAAkC,KAAK,CAAA;AAAA,IAC7C,OAAA,EAAS,MAAyB,CAAC,EAAE,KAAK,IAAM,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA,GAC/D;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAA,EAAM,eAA8B,MAAM,CAAA;AAAA,IAC1C,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAA2B,MAAM,CAAA;AAAA,IACvC,SAAS,OAAmB;AAAA,MAC1B,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,uBAAA;AAAA,KACf,CAAA;AAAA,GACF;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAA,EAAM,eAA2B,KAAK,CAAA;AAAA,IACtC,OAAA,EAAS,MAAkB,EAAC;AAAA,GAC9B;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAA,EAAM,eAA2B,MAAM,CAAA;AAAA,IACvC,SAAS,OAAmB;AAAA,MAC1B,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,yBAAA;AAAA,KACf,CAAA;AAAA,GACF;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAA,EAAM,eAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAgB,EAAC;AAAA,GAC5B;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAA,EAAM,eAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAgB,EAAC;AAAA,GAC5B;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,IAAA,EAAM,eAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAgB,EAAC;AAAA,GAC5B;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AACF,CAAU,EAAA;AAUH,MAAM,aAAgB,GAAA;AAAA,EAC3B,MAAQ,EAAA,CAAC,KAAsC,KAAA,CAAC,CAAC,KAAA;AAAA,EACjD,GAAK,EAAA,CAAC,MAAuC,KAAA,CAAC,CAAC,MAAA;AAAA,EAC/C,MAAQ,EAAA,CAAC,KAA2B,KAAA,OAAO,KAAU,KAAA,QAAA;AAAA,EACrD,cAAgB,EAAA,CAAC,KAAsC,KAAA,CAAC,CAAC,KAAA;AAC3D;;;;"}
|
|
@@ -5,6 +5,7 @@ import './config/index.mjs';
|
|
|
5
5
|
import keyValueItem from './components/key-value-item.vue.mjs';
|
|
6
6
|
import { keyValueProps, keyValueEmits, getKeyValueItem } from './config/key-value.mjs';
|
|
7
7
|
import { createNamespace } from '../../../utils/create-namespace.mjs';
|
|
8
|
+
import { guid, hasValue, deepCompare } from '../../../utils/data.mjs';
|
|
8
9
|
|
|
9
10
|
"use strict";
|
|
10
11
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -17,69 +18,132 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
17
18
|
const emits = __emit;
|
|
18
19
|
const bem = createNamespace("key-value");
|
|
19
20
|
const formItemContext = Form.useInjectFormItemContext();
|
|
20
|
-
const innerValue = ref(
|
|
21
|
-
|
|
21
|
+
const innerValue = ref(
|
|
22
|
+
!props.value || props.value && !props.value.length ? [{ key: null, value: null, guid: guid() }] : props.value.map((e) => {
|
|
23
|
+
return {
|
|
24
|
+
...e,
|
|
25
|
+
guid: guid()
|
|
26
|
+
};
|
|
27
|
+
})
|
|
28
|
+
);
|
|
29
|
+
const keyValueItems = ref({});
|
|
30
|
+
const setKeyValueItems = (el, type) => {
|
|
31
|
+
if (el) {
|
|
32
|
+
keyValueItems.value[type] = el;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
22
35
|
const keyValueTypeDict = computed(() => {
|
|
23
36
|
const obj = {};
|
|
24
|
-
props.keyTypes.
|
|
37
|
+
props.keyTypes.forEach((e) => {
|
|
25
38
|
obj[e.value] = e.option;
|
|
26
39
|
});
|
|
27
40
|
return obj;
|
|
28
41
|
});
|
|
29
42
|
const validate = async () => {
|
|
30
43
|
await nextTick();
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
const validationPromises = Object.values(keyValueItems.value).map(
|
|
45
|
+
async (item) => {
|
|
46
|
+
try {
|
|
47
|
+
await item.validate();
|
|
48
|
+
return { item, valid: true };
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error("Validation failed for item:", item, error);
|
|
51
|
+
return { item, valid: false, error };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
33
54
|
);
|
|
55
|
+
const validationResults = await Promise.all(validationPromises);
|
|
56
|
+
const allValid = validationResults.every((result) => result.valid);
|
|
57
|
+
const errors = validationResults.filter((result) => !result.valid);
|
|
58
|
+
if (!allValid) {
|
|
59
|
+
console.log("Validation errors:", errors);
|
|
60
|
+
return { valid: false, errors };
|
|
61
|
+
}
|
|
62
|
+
return { valid: true };
|
|
34
63
|
};
|
|
35
64
|
const resetFields = async () => {
|
|
36
65
|
await nextTick();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
66
|
+
for (const i of Object.values(keyValueItems.value)) {
|
|
67
|
+
if (i) {
|
|
68
|
+
i.resetFields();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
40
71
|
};
|
|
41
72
|
const clearValidate = async () => {
|
|
42
73
|
await nextTick();
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
74
|
+
for (const i of Object.values(keyValueItems.value)) {
|
|
75
|
+
if (i) {
|
|
76
|
+
i.clearValidate();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
46
79
|
};
|
|
47
80
|
const handleAddItem = async () => {
|
|
48
|
-
const valid = await validate();
|
|
49
|
-
if (
|
|
50
|
-
return
|
|
81
|
+
const { valid } = await validate();
|
|
82
|
+
if (!valid)
|
|
83
|
+
return;
|
|
51
84
|
innerValue.value.push(getKeyValueItem());
|
|
52
85
|
emits("add", {
|
|
53
86
|
index: innerValue.value.length - 1,
|
|
54
87
|
item: innerValue.value[innerValue.value.length - 1],
|
|
55
88
|
value: innerValue.value
|
|
56
89
|
});
|
|
57
|
-
handleChange();
|
|
58
90
|
};
|
|
59
91
|
const handleDelete = (idx) => {
|
|
60
|
-
innerValue.value.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
try {
|
|
66
|
-
formItemContext.onFieldChange();
|
|
67
|
-
emits("change", innerValue.value);
|
|
68
|
-
emits("update:value", innerValue.value);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.error(error);
|
|
92
|
+
if (innerValue.value.length === 1) {
|
|
93
|
+
innerValue.value = [{ key: null, value: null, guid: guid() }];
|
|
94
|
+
} else {
|
|
95
|
+
innerValue.value.splice(idx, 1);
|
|
96
|
+
emits("delete", idx);
|
|
71
97
|
}
|
|
72
98
|
};
|
|
99
|
+
const getValue = (val) => {
|
|
100
|
+
return val.filter((e) => hasValue(e.key) || hasValue(e.value)).map((e) => ({
|
|
101
|
+
key: e.key,
|
|
102
|
+
value: e.value
|
|
103
|
+
}));
|
|
104
|
+
};
|
|
73
105
|
watch(
|
|
74
106
|
() => props.value,
|
|
75
107
|
(n) => {
|
|
76
|
-
|
|
108
|
+
if (!n || n && !n.length)
|
|
109
|
+
return;
|
|
110
|
+
const copyInnerValue = getValue(innerValue.value);
|
|
111
|
+
const copyPropsValue = getValue(n);
|
|
112
|
+
if (deepCompare(copyInnerValue, copyPropsValue))
|
|
113
|
+
return;
|
|
114
|
+
innerValue.value = [
|
|
115
|
+
...n && n.length > 0 ? n : props.keepLast ? [{ key: null, value: null, guid: guid() }] : n
|
|
116
|
+
].map((e) => {
|
|
117
|
+
return {
|
|
118
|
+
...e,
|
|
119
|
+
guid: guid()
|
|
120
|
+
};
|
|
121
|
+
});
|
|
77
122
|
},
|
|
78
123
|
{
|
|
79
124
|
immediate: true,
|
|
80
125
|
deep: true
|
|
81
126
|
}
|
|
82
127
|
);
|
|
128
|
+
watch(
|
|
129
|
+
() => innerValue.value,
|
|
130
|
+
(val) => {
|
|
131
|
+
const copyInnerValue = getValue(val);
|
|
132
|
+
const copyPropsValue = getValue(props.value);
|
|
133
|
+
if (deepCompare(copyInnerValue, copyPropsValue))
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
formItemContext.onFieldChange();
|
|
137
|
+
emits("change", copyInnerValue);
|
|
138
|
+
emits("update:value", copyInnerValue);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
console.error(error);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
deep: true
|
|
145
|
+
}
|
|
146
|
+
);
|
|
83
147
|
__expose({
|
|
84
148
|
validate,
|
|
85
149
|
resetFields,
|
|
@@ -111,9 +175,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
111
175
|
null,
|
|
112
176
|
renderList(innerValue.value, (_item, idx) => {
|
|
113
177
|
return openBlock(), createBlock(keyValueItem, {
|
|
114
|
-
key: _item,
|
|
178
|
+
key: _item.guid,
|
|
115
179
|
ref_for: true,
|
|
116
|
-
ref: (el) =>
|
|
180
|
+
ref: (el) => setKeyValueItems(el, _item.guid),
|
|
117
181
|
value: innerValue.value[idx],
|
|
118
182
|
"onUpdate:value": ($event) => innerValue.value[idx] = $event,
|
|
119
183
|
idx,
|
|
@@ -124,13 +188,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
124
188
|
"key-type": props.keyType,
|
|
125
189
|
"key-types": props.keyTypes,
|
|
126
190
|
"value-type": props.valueType,
|
|
191
|
+
values: innerValue.value,
|
|
127
192
|
disabled: props.disabled,
|
|
128
193
|
"disabled-value": props.disabledValue,
|
|
129
194
|
"disabled-key": props.disabledKey,
|
|
130
195
|
"disabled-delete": props.disabledDelete,
|
|
131
|
-
"
|
|
132
|
-
onDelete: ($event) => handleDelete(idx)
|
|
133
|
-
onChange: handleChange
|
|
196
|
+
"keep-last": props.keepLast,
|
|
197
|
+
onDelete: ($event) => handleDelete(idx)
|
|
134
198
|
}, createSlots({
|
|
135
199
|
_: 2
|
|
136
200
|
/* DYNAMIC */
|
|
@@ -143,7 +207,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
143
207
|
])
|
|
144
208
|
};
|
|
145
209
|
})
|
|
146
|
-
]), 1032, ["value", "onUpdate:value", "idx", "key-label", "value-label", "key-value-type-dict", "key-value-type", "key-type", "key-types", "value-type", "disabled", "disabled-value", "disabled-key", "disabled-delete", "
|
|
210
|
+
]), 1032, ["value", "onUpdate:value", "idx", "key-label", "value-label", "key-value-type-dict", "key-value-type", "key-type", "key-types", "value-type", "values", "disabled", "disabled-value", "disabled-key", "disabled-delete", "keep-last", "onDelete"]);
|
|
147
211
|
}),
|
|
148
212
|
128
|
|
149
213
|
/* KEYED_FRAGMENT */
|