ll-plus 2.7.16 → 2.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/es/components/advanced-filtering/index.d.ts +8 -8
  2. package/es/components/advanced-filtering/src/advanced-filtering.vue.d.ts +4 -4
  3. package/es/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +4 -4
  4. package/es/components/form/index.d.ts +4 -4
  5. package/es/components/form/src/form.vue.d.ts +4 -4
  6. package/es/components/key-value/index.d.ts +2 -16122
  7. package/es/components/key-value/src/components/key-value-item.vue.d.ts +99 -142
  8. package/es/components/key-value/src/config/key-value-item.d.ts +40 -291
  9. package/es/components/key-value/src/config/key-value.d.ts +23 -29
  10. package/es/components/key-value/src/key-value.vue.d.ts +447 -561
  11. package/es/index.mjs +1 -1
  12. package/es/packages/components/form/src/form.vue2.mjs +15 -9
  13. package/es/packages/components/form/src/form.vue2.mjs.map +1 -1
  14. package/es/packages/components/key-value/index.mjs.map +1 -1
  15. package/es/packages/components/key-value/src/components/key-value-item.vue2.mjs +16 -9
  16. package/es/packages/components/key-value/src/components/key-value-item.vue2.mjs.map +1 -1
  17. package/es/packages/components/key-value/src/config/key-value-item.mjs +26 -10
  18. package/es/packages/components/key-value/src/config/key-value-item.mjs.map +1 -1
  19. package/es/packages/components/key-value/src/config/key-value.mjs +3 -1
  20. package/es/packages/components/key-value/src/config/key-value.mjs.map +1 -1
  21. package/es/packages/components/key-value/src/key-value.vue2.mjs +61 -21
  22. package/es/packages/components/key-value/src/key-value.vue2.mjs.map +1 -1
  23. package/es/packages/utils/data.mjs +8 -1
  24. package/es/packages/utils/data.mjs.map +1 -1
  25. package/es/packages/utils/index.mjs +1 -1
  26. package/es/utils/data.d.ts +1 -0
  27. package/es/utils/props/runtime.d.ts +2 -2
  28. package/index.full.js +126 -48
  29. package/index.full.min.js +22 -22
  30. package/index.full.min.js.map +1 -1
  31. package/index.full.min.mjs +22 -22
  32. package/index.full.min.mjs.map +1 -1
  33. package/index.full.mjs +126 -49
  34. package/lib/components/advanced-filtering/index.d.ts +8 -8
  35. package/lib/components/advanced-filtering/src/advanced-filtering.vue.d.ts +4 -4
  36. package/lib/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +4 -4
  37. package/lib/components/form/index.d.ts +4 -4
  38. package/lib/components/form/src/form.vue.d.ts +4 -4
  39. package/lib/components/key-value/index.d.ts +2 -16122
  40. package/lib/components/key-value/src/components/key-value-item.vue.d.ts +99 -142
  41. package/lib/components/key-value/src/config/key-value-item.d.ts +40 -291
  42. package/lib/components/key-value/src/config/key-value.d.ts +23 -29
  43. package/lib/components/key-value/src/key-value.vue.d.ts +447 -561
  44. package/lib/index.js +1 -0
  45. package/lib/index.js.map +1 -1
  46. package/lib/packages/components/form/src/form.vue2.js +15 -9
  47. package/lib/packages/components/form/src/form.vue2.js.map +1 -1
  48. package/lib/packages/components/key-value/index.js.map +1 -1
  49. package/lib/packages/components/key-value/src/components/key-value-item.vue2.js +15 -8
  50. package/lib/packages/components/key-value/src/components/key-value-item.vue2.js.map +1 -1
  51. package/lib/packages/components/key-value/src/config/key-value-item.js +26 -10
  52. package/lib/packages/components/key-value/src/config/key-value-item.js.map +1 -1
  53. package/lib/packages/components/key-value/src/config/key-value.js +3 -1
  54. package/lib/packages/components/key-value/src/config/key-value.js.map +1 -1
  55. package/lib/packages/components/key-value/src/key-value.vue2.js +60 -20
  56. package/lib/packages/components/key-value/src/key-value.vue2.js.map +1 -1
  57. package/lib/packages/utils/data.js +8 -0
  58. package/lib/packages/utils/data.js.map +1 -1
  59. package/lib/packages/utils/index.js +1 -0
  60. package/lib/packages/utils/index.js.map +1 -1
  61. package/lib/utils/data.d.ts +1 -0
  62. package/lib/utils/props/runtime.d.ts +2 -2
  63. package/package.json +1 -1
  64. package/theme-chalk/css/advanced-filtering.css +2 -2
  65. package/theme-chalk/css/api-component.css +2 -2
  66. package/theme-chalk/css/cascader.css +2 -2
  67. package/theme-chalk/css/checkbox.css +2 -2
  68. package/theme-chalk/css/code-editor.css +2 -2
  69. package/theme-chalk/css/color-picker.css +2 -2
  70. package/theme-chalk/css/cropper.css +2 -2
  71. package/theme-chalk/css/descriptions.css +2 -2
  72. package/theme-chalk/css/drawer.css +2 -2
  73. package/theme-chalk/css/dropdown-button-simple.css +2 -2
  74. package/theme-chalk/css/dropdown.css +2 -2
  75. package/theme-chalk/css/easy-cron.css +2 -2
  76. package/theme-chalk/css/form.css +2 -2
  77. package/theme-chalk/css/images.css +1 -1
  78. package/theme-chalk/css/index.css +3 -3
  79. package/theme-chalk/css/input-number.css +2 -2
  80. package/theme-chalk/css/input.css +2 -2
  81. package/theme-chalk/css/key-value.css +2 -2
  82. package/theme-chalk/css/markdown-editor.css +2 -2
  83. package/theme-chalk/css/modal.css +2 -2
  84. package/theme-chalk/css/new-drawer.css +2 -2
  85. package/theme-chalk/css/new-modal.css +2 -2
  86. package/theme-chalk/css/number-range.css +2 -2
  87. package/theme-chalk/css/rich-text-editor.css +2 -2
  88. package/theme-chalk/css/segmented.css +2 -2
  89. package/theme-chalk/css/switch.css +2 -2
  90. package/theme-chalk/css/table.css +2 -2
  91. package/theme-chalk/css/tabs-simple.css +2 -2
  92. package/theme-chalk/css/tag-group.css +2 -2
  93. package/types/packages/components/advanced-filtering/index.d.ts +8 -8
  94. package/types/packages/components/advanced-filtering/src/advanced-filtering.vue.d.ts +4 -4
  95. package/types/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +4 -4
  96. package/types/packages/components/form/index.d.ts +4 -4
  97. package/types/packages/components/form/src/form.vue.d.ts +4 -4
  98. package/types/packages/components/key-value/index.d.ts +2 -16122
  99. package/types/packages/components/key-value/src/components/key-value-item.vue.d.ts +99 -142
  100. package/types/packages/components/key-value/src/config/key-value-item.d.ts +40 -291
  101. package/types/packages/components/key-value/src/config/key-value.d.ts +23 -29
  102. package/types/packages/components/key-value/src/key-value.vue.d.ts +447 -561
  103. package/types/packages/utils/data.d.ts +1 -0
  104. package/types/packages/utils/props/runtime.d.ts +2 -2
package/lib/index.js CHANGED
@@ -483,6 +483,7 @@ exports.fileToBase64 = file.fileToBase64;
483
483
  exports.formatFileSize = file.formatFileSize;
484
484
  exports.deepUnref = deepUnref.deepUnref;
485
485
  exports.deepCompare = data.deepCompare;
486
+ exports.guid = data.guid;
486
487
  exports.hasValue = data.hasValue;
487
488
  exports.useScroll = index$X.useScroll;
488
489
  exports.install = install;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../packages/ll-plus/index.ts"],"sourcesContent":["import installer from './defaults'\n\nexport * from '@ll-plus/components'\nexport * from '@ll-plus/constant'\nexport * from '@ll-plus/utils'\nexport * from '@ll-plus/hooks'\n\nexport const install = installer.install\nexport default installer\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,UAAUA,gBAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../packages/ll-plus/index.ts"],"sourcesContent":["import installer from './defaults'\n\nexport * from '@ll-plus/components'\nexport * from '@ll-plus/constant'\nexport * from '@ll-plus/utils'\nexport * from '@ll-plus/hooks'\n\nexport const install = installer.install\nexport default installer\n"],"names":["installer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,UAAUA,gBAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -54,27 +54,33 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
54
54
  const validate = async () => {
55
55
  if (props.validateErrorStop) {
56
56
  clearValidate();
57
- let bool = true;
58
57
  if (!validateFields.value.length)
59
- return bool;
58
+ return Promise.resolve();
60
59
  for (const i of validateFields.value) {
61
- bool = await formRef.value.validateFields([i]);
62
- if (!bool) {
63
- return bool;
60
+ try {
61
+ await formRef.value.validateFields([i]);
62
+ } catch (error) {
63
+ return Promise.reject(error);
64
64
  }
65
65
  }
66
+ return Promise.resolve();
66
67
  } else {
67
- return await formRef.value.validateFields();
68
+ try {
69
+ await formRef.value.validateFields(validateFields.value);
70
+ return Promise.resolve();
71
+ } catch (error) {
72
+ return Promise.reject(error);
73
+ }
68
74
  }
69
75
  };
70
76
  const resetFields = async () => {
71
- return await formRef.value.resetFields();
77
+ await formRef.value.resetFields();
72
78
  };
73
79
  const clearValidate = async (nameList) => {
74
- return await formRef.value.clearValidate(nameList);
80
+ await formRef.value.clearValidate(nameList);
75
81
  };
76
82
  const scrollToField = async (name, options) => {
77
- return await formRef.value.scrollToField(name, options);
83
+ await formRef.value.scrollToField(name, options);
78
84
  };
79
85
  const getBindValue = (item) => {
80
86
  const obj = { ...item };
@@ -1 +1 @@
1
- {"version":3,"file":"form.vue2.js","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <a-form\n v-bind=\"computedFormOptions\"\n :id=\"id\"\n ref=\"formRef\"\n :model=\"props.formData\"\n >\n <a-row v-bind=\"props.rowOptions\">\n <a-col\n v-for=\"(item, index) in computedFormColumns\"\n :key=\"index\"\n v-bind=\"item?.colOptions ?? {}\"\n :span=\"item?.spanCol ?? 24\"\n >\n <slot name=\"formItem\" :item=\"item\" :index=\"index\">\n <ll-form-item\n :name=\"item?.key ?? index\"\n :class=\"getFormItemClass(item)\"\n v-bind=\"getBindValue(item)\"\n >\n <template #label>\n <slot name=\"label\" :item=\"item\" :index=\"index\">\n <span>{{ item.label }}</span>\n <span v-if=\"item?.tip\" :class=\"bem.e('tooltip-wrapper')\">\n <ll-tooltip\n style=\"margin-left: 8px\"\n :overlay-class-name=\"bem.e('tooltip')\"\n :arrow-point-at-center=\"true\"\n :max-width=\"item?.tipConfig?.maxWidth ?? 406\"\n :placement=\"item?.tipConfig?.placement ?? 'top'\"\n :tip=\"item.tip\"\n :font-size=\"'16px'\"\n v-bind=\"item?.tipConfig\"\n />\n </span>\n </slot>\n </template>\n <slot name=\"content\" :item=\"item\" :index=\"index\">\n <template v-if=\"!isEmpty(item.children)\">\n <a-row :gutter=\"5\" v-bind=\"item.rowOptions\">\n <a-col\n v-for=\"(child, childIndex) in item.children\"\n :key=\"childIndex\"\n :style=\"{\n display: 'flex',\n 'align-items': 'center'\n }\"\n v-bind=\"item?.colOptions ?? {}\"\n >\n <slot name=\"children\" :item=\"child\" :index=\"index\">\n <form-component\n :item=\"child\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </a-col>\n </a-row>\n </template>\n <form-component\n v-else\n :ref=\"el => (formComponents[index] = el)\"\n :item=\"item\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </ll-form-item>\n </slot>\n </a-col>\n </a-row>\n </a-form>\n </a-spin>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { reactive, ref, watch, onMounted, nextTick, computed } from 'vue'\nimport { omit, isEmpty, has } from 'lodash-es'\nimport { formProps, formEmits, type FormColumn } from './config'\n\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\nimport { createNamespace, deepUnref } from '@ll-plus/utils'\n\nimport formComponent from './components/form-component.vue'\n\n// 定义组件名称\ndefineOptions({ name: 'LlForm' })\n\n// Props\nconst props = defineProps(formProps)\n\nconst emits = defineEmits(formEmits)\n\nconst bem = createNamespace('form')\n\nconst formData = reactive(props.formData)\n\nconst formRef = ref()\n\nconst formComponents = ref<InstanceType<typeof formComponent>[]>(\n [] as InstanceType<typeof formComponent>[]\n)\n\nconst computedFormColumns = computed(() => {\n const formColumns = deepUnref(props.formColumns) as FormColumn[]\n return formColumns.map(e => {\n e.disabled = has(e, 'disabled') ? e.disabled : props.disabled\n if (e.children && e.children.length) {\n e.children.map(a => {\n a.disabled = has(a, 'disabled') ? a.disabled : props.disabled\n return a\n })\n }\n return e\n })\n})\n\nconst validateFields = computed(() => {\n return props.formColumns\n .filter(e => e.required || (has(e, 'rules') && e.rules.length > 0))\n .map(e => {\n return e.key\n })\n})\n\nconst computedFormOptions = computed(() => {\n return {\n scrollToFirstError: !props.validateErrorStop,\n ...props.formOptions\n }\n})\n\nconst id = ref(`ll-form-${+new Date()}`)\n\nconst validate = async () => {\n if (props.validateErrorStop) {\n clearValidate()\n let bool = true\n if (!validateFields.value.length) return bool\n for (const i of validateFields.value) {\n bool = await formRef.value.validateFields([i])\n if (!bool) {\n return bool\n }\n }\n } else {\n return await formRef.value.validateFields()\n }\n}\n\nconst resetFields = async () => {\n return await formRef.value.resetFields()\n}\n\nconst clearValidate = async (nameList?: NamePath[]) => {\n return await formRef.value.clearValidate(nameList)\n}\n\nconst scrollToField = async (name: NamePath, options?: ScrollOptions) => {\n return await formRef.value.scrollToField(name, options)\n}\n\nconst getBindValue = (item: FormColumn) => {\n const obj = { ...item }\n return omit(obj, ['label'])\n}\n\nconst getFormItemClass = (item = {} as FormColumn) => {\n if (props.formOptions.layout === 'horizontal') {\n if (item?.labelCol) {\n return item.labelCol.span && item.labelCol.span >= 24\n ? bem.is('label-top')\n : bem.is('label-left')\n } else {\n return bem.is('label-left')\n }\n }\n return bem.is('label-top')\n}\n\nconst handleChangeField = (item: FormColumn) => {\n emits('change', { item, value: formData[item.key], formData })\n}\n\nwatch(\n () => props.formData,\n async val => {\n for (const i in val) {\n formData[i] = val[i]\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nonMounted(async () => {\n await nextTick()\n if (props.autoFocus) {\n for (const element of formComponents.value) {\n const item = element?.getItem()\n if (['input', 'textarea', 'input-number'].includes(item.type)) {\n element?.focus()\n break\n }\n }\n }\n})\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate,\n scrollToField\n})\n</script>\n"],"names":["createNamespace","reactive","ref","computed","deepUnref","has","omit","watch","onMounted","nextTick"],"mappings":"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"}
1
+ {"version":3,"file":"form.vue2.js","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <a-form\n v-bind=\"computedFormOptions\"\n :id=\"id\"\n ref=\"formRef\"\n :model=\"props.formData\"\n >\n <a-row v-bind=\"props.rowOptions\">\n <a-col\n v-for=\"(item, index) in computedFormColumns\"\n :key=\"index\"\n v-bind=\"item?.colOptions ?? {}\"\n :span=\"item?.spanCol ?? 24\"\n >\n <slot name=\"formItem\" :item=\"item\" :index=\"index\">\n <ll-form-item\n :name=\"item?.key ?? index\"\n :class=\"getFormItemClass(item)\"\n v-bind=\"getBindValue(item)\"\n >\n <template #label>\n <slot name=\"label\" :item=\"item\" :index=\"index\">\n <span>{{ item.label }}</span>\n <span v-if=\"item?.tip\" :class=\"bem.e('tooltip-wrapper')\">\n <ll-tooltip\n style=\"margin-left: 8px\"\n :overlay-class-name=\"bem.e('tooltip')\"\n :arrow-point-at-center=\"true\"\n :max-width=\"item?.tipConfig?.maxWidth ?? 406\"\n :placement=\"item?.tipConfig?.placement ?? 'top'\"\n :tip=\"item.tip\"\n :font-size=\"'16px'\"\n v-bind=\"item?.tipConfig\"\n />\n </span>\n </slot>\n </template>\n <slot name=\"content\" :item=\"item\" :index=\"index\">\n <template v-if=\"!isEmpty(item.children)\">\n <a-row :gutter=\"5\" v-bind=\"item.rowOptions\">\n <a-col\n v-for=\"(child, childIndex) in item.children\"\n :key=\"childIndex\"\n :style=\"{\n display: 'flex',\n 'align-items': 'center'\n }\"\n v-bind=\"item?.colOptions ?? {}\"\n >\n <slot name=\"children\" :item=\"child\" :index=\"index\">\n <form-component\n :item=\"child\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </a-col>\n </a-row>\n </template>\n <form-component\n v-else\n :ref=\"el => (formComponents[index] = el)\"\n :item=\"item\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </ll-form-item>\n </slot>\n </a-col>\n </a-row>\n </a-form>\n </a-spin>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { reactive, ref, watch, onMounted, nextTick, computed } from 'vue'\nimport { omit, isEmpty, has } from 'lodash-es'\nimport { formProps, formEmits, type FormColumn } from './config'\n\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\nimport { createNamespace, deepUnref } from '@ll-plus/utils'\n\nimport formComponent from './components/form-component.vue'\n\n// 定义组件名称\ndefineOptions({ name: 'LlForm' })\n\n// Props\nconst props = defineProps(formProps)\n\nconst emits = defineEmits(formEmits)\n\nconst bem = createNamespace('form')\n\nconst formData = reactive(props.formData)\n\nconst formRef = ref()\n\nconst formComponents = ref<InstanceType<typeof formComponent>[]>(\n [] as InstanceType<typeof formComponent>[]\n)\n\nconst computedFormColumns = computed(() => {\n const formColumns = deepUnref(props.formColumns) as FormColumn[]\n return formColumns.map(e => {\n e.disabled = has(e, 'disabled') ? e.disabled : props.disabled\n if (e.children && e.children.length) {\n e.children.map(a => {\n a.disabled = has(a, 'disabled') ? a.disabled : props.disabled\n return a\n })\n }\n return e\n })\n})\n\nconst validateFields = computed(() => {\n return props.formColumns\n .filter(e => e.required || (has(e, 'rules') && e.rules.length > 0))\n .map(e => {\n return e.key\n })\n})\n\nconst computedFormOptions = computed(() => {\n return {\n scrollToFirstError: !props.validateErrorStop,\n ...props.formOptions\n }\n})\n\nconst id = ref(`ll-form-${+new Date()}`)\n\nconst validate = async () => {\n if (props.validateErrorStop) {\n clearValidate()\n if (!validateFields.value.length) return Promise.resolve()\n for (const i of validateFields.value) {\n try {\n await formRef.value.validateFields([i])\n } catch (error) {\n return Promise.reject(error) // 跳出验证循环并返回错误\n }\n }\n return Promise.resolve()\n } else {\n try {\n await formRef.value.validateFields(validateFields.value)\n return Promise.resolve()\n } catch (error) {\n return Promise.reject(error)\n }\n }\n}\n\nconst resetFields = async () => {\n await formRef.value.resetFields()\n}\n\nconst clearValidate = async (nameList?: NamePath[]) => {\n await formRef.value.clearValidate(nameList)\n}\n\nconst scrollToField = async (name: NamePath, options?: ScrollOptions) => {\n await formRef.value.scrollToField(name, options)\n}\n\nconst getBindValue = (item: FormColumn) => {\n const obj = { ...item }\n return omit(obj, ['label'])\n}\n\nconst getFormItemClass = (item = {} as FormColumn) => {\n if (props.formOptions.layout === 'horizontal') {\n if (item?.labelCol) {\n return item.labelCol.span && item.labelCol.span >= 24\n ? bem.is('label-top')\n : bem.is('label-left')\n } else {\n return bem.is('label-left')\n }\n }\n return bem.is('label-top')\n}\n\nconst handleChangeField = (item: FormColumn) => {\n emits('change', { item, value: formData[item.key], formData })\n}\n\nwatch(\n () => props.formData,\n async val => {\n for (const i in val) {\n formData[i] = val[i]\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nonMounted(async () => {\n await nextTick()\n if (props.autoFocus) {\n for (const element of formComponents.value) {\n const item = element?.getItem()\n if (['input', 'textarea', 'input-number'].includes(item.type)) {\n element?.focus()\n break\n }\n }\n }\n})\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate,\n scrollToField\n})\n</script>\n"],"names":["createNamespace","reactive","ref","computed","deepUnref","has","omit","watch","onMounted","nextTick"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../packages/components/key-value/index.ts"],"sourcesContent":["import { withInstall } from '@ll-plus/utils'\n\nimport KeyValue from './src/key-value.vue'\n\nexport const LlKeyValue = withInstall(KeyValue)\n\nexport default LlKeyValue\n\nexport * from './src/config'\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n LlKeyValue: typeof KeyValue\n }\n}\n"],"names":["withInstall","KeyValue"],"mappings":";;;;;;;;;;;;AAIa,MAAA,UAAA,GAAaA,wBAAYC,kBAAQ;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/key-value/index.ts"],"sourcesContent":["import { withInstall, type SFCWithInstall } from '@ll-plus/utils'\n\nimport KeyValue from './src/key-value.vue'\n\nexport const LlKeyValue: SFCWithInstall<typeof KeyValue> = withInstall(KeyValue)\n\nexport default LlKeyValue\n\nexport * from './src/config'\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n LlKeyValue: typeof KeyValue\n }\n}\n"],"names":["withInstall","KeyValue"],"mappings":";;;;;;;;;;;;AAIa,MAAA,UAAA,GAA8CA,wBAAYC,kBAAQ;;;;;;;;;;;;;"}
@@ -23,7 +23,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
23
23
  const attrs = vue.useAttrs();
24
24
  const bem = createNamespace.createNamespace("key-value");
25
25
  const innerValue = vue.ref(props.value);
26
- const form = vue.ref();
26
+ const formRef = vue.ref();
27
27
  const getKeyType = vue.computed(() => {
28
28
  const option = props.keyType;
29
29
  return option;
@@ -52,16 +52,23 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
52
52
  };
53
53
  const handleChange = async () => {
54
54
  innerValue.value["value"] = null;
55
- await form.value?.clearValidate();
55
+ await formRef.value?.clearValidate();
56
56
  };
57
57
  const validate = async () => {
58
- return await form.value?.validate();
58
+ await vue.nextTick();
59
+ try {
60
+ await formRef.value?.validate();
61
+ return Promise.resolve();
62
+ } catch (error) {
63
+ console.log({ error }, props.idx);
64
+ return Promise.reject();
65
+ }
59
66
  };
60
67
  const resetFields = async () => {
61
- return await form.value?.resetFields();
68
+ await formRef.value?.resetFields();
62
69
  };
63
70
  const clearValidate = async (namePath) => {
64
- return await form.value?.clearValidate(namePath);
71
+ await formRef.value?.clearValidate(namePath);
65
72
  };
66
73
  vue.watch(
67
74
  innerValue,
@@ -92,8 +99,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
92
99
  const _component_a_popconfirm = vue.resolveComponent("a-popconfirm");
93
100
  const _component_ll_form = vue.resolveComponent("ll-form");
94
101
  return vue.openBlock(), vue.createBlock(_component_ll_form, {
95
- ref_key: "form",
96
- ref: form,
102
+ ref_key: "formRef",
103
+ ref: formRef,
97
104
  "form-columns": vue.unref(keyValueItem.formColumns),
98
105
  "form-data": props.value,
99
106
  "form-options": vue.unref(keyValueItem.formOptions)
@@ -194,7 +201,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
194
201
  name: "value"
195
202
  }, {
196
203
  default: vue.withCtx(() => [
197
- vue.renderSlot(_ctx.$slots, "value-warapper", vue.normalizeProps(vue.guardReactiveProps(getValueType.value)), () => [
204
+ vue.renderSlot(_ctx.$slots, "value-wrapper", vue.normalizeProps(vue.guardReactiveProps(getValueType.value)), () => [
198
205
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(`ll-${getValueType.value.type}`), vue.mergeProps({
199
206
  value: innerValue.value["value"],
200
207
  "onUpdate:value": _cache[2] || (_cache[2] = ($event) => innerValue.value["value"] = $event),
@@ -1 +1 @@
1
- {"version":3,"file":"key-value-item.vue2.js","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=\"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 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 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 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":["useAttrs","createNamespace","ref","computed","isEmpty","watch","nextTick"],"mappings":"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"}
1
+ {"version":3,"file":"key-value-item.vue2.js","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":["useAttrs","createNamespace","ref","computed","isEmpty","nextTick","watch"],"mappings":"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"}
@@ -31,43 +31,59 @@ const formColumns = [
31
31
  ];
32
32
  const keyValueItemProps = runtime.buildProps({
33
33
  disabled: {
34
- type: Boolean
34
+ type: Boolean,
35
+ default: false
35
36
  },
36
37
  values: {
37
38
  type: runtime.definePropType(Array),
38
39
  default: () => [
39
40
  {
40
41
  key: null,
41
- value: null
42
+ value: null,
43
+ guid: ""
42
44
  }
43
45
  ]
44
46
  },
45
47
  disabledValue: {
46
- type: runtime.definePropType(Array)
48
+ type: runtime.definePropType(Array),
49
+ default: () => []
47
50
  },
48
51
  disabledKey: {
49
- type: runtime.definePropType(Array)
52
+ type: runtime.definePropType(Array),
53
+ default: () => []
50
54
  },
51
55
  disabledDelete: {
52
- type: runtime.definePropType(Array)
56
+ type: runtime.definePropType(Array),
57
+ default: () => []
53
58
  },
54
59
  keyValueType: {
55
- type: runtime.definePropType(String)
60
+ type: runtime.definePropType(String),
61
+ default: "doubt"
56
62
  },
57
63
  keyType: {
58
- type: runtime.definePropType(Object)
64
+ type: runtime.definePropType(Object),
65
+ default: () => ({
66
+ type: "input",
67
+ placeholder: "\u8BF7\u8F93\u5165Key"
68
+ })
59
69
  },
60
70
  keyTypes: {
61
- type: runtime.definePropType(Array)
71
+ type: runtime.definePropType(Array),
72
+ default: () => []
62
73
  },
63
74
  valueType: {
64
- type: runtime.definePropType(Object)
75
+ type: runtime.definePropType(Object),
76
+ default: () => ({
77
+ type: "input",
78
+ placeholder: "\u8BF7\u8F93\u5165Value"
79
+ })
65
80
  },
66
81
  value: {
67
82
  type: runtime.definePropType(Object),
68
83
  default: () => ({
69
84
  key: "",
70
- value: ""
85
+ value: "",
86
+ guid: ""
71
87
  })
72
88
  },
73
89
  idx: {
@@ -1 +1 @@
1
- {"version":3,"file":"key-value-item.js","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 { KeyType } from './'\n\nexport const typeRules = [\n {\n trigger: ['blur', 'change'],\n message: '此字段是必需的',\n validator: async (_rule: any, value: any) => {\n if (!value) {\n return Promise.reject(new Error('此字段是必需的'))\n } else {\n return Promise.resolve()\n }\n }\n }\n]\nexport const formOptions = {\n layout: 'horizontal',\n labelAlign: 'left'\n} as FormProps\n\nexport const formColumns = [\n {\n key: 'other',\n labelCol: {\n span: 24\n }\n }\n]\n\nexport interface KeyValueItem {\n key: any | null\n value: any | null\n}\n\nexport const keyValueItemProps = buildProps({\n disabled: {\n type: Boolean\n },\n values: {\n type: definePropType<KeyValueItem[]>(Array),\n default: () => [\n {\n key: null,\n value: null\n }\n ]\n },\n disabledValue: {\n type: definePropType<number[]>(Array)\n },\n disabledKey: {\n type: definePropType<number[]>(Array)\n },\n disabledDelete: {\n type: definePropType<number[]>(Array)\n },\n keyValueType: {\n type: definePropType<'single' | 'doubt'>(String)\n },\n keyType: {\n type: definePropType<FormColumn>(Object)\n },\n keyTypes: {\n type: definePropType<KeyType[]>(Array)\n },\n valueType: {\n type: definePropType<FormColumn>(Object)\n },\n value: {\n type: definePropType<KeyValueItem>(Object),\n default: () => ({\n key: '',\n value: ''\n })\n },\n idx: {\n type: Number,\n required: true\n },\n keyValueTypeDict: {\n type: Object,\n default: () => ({})\n },\n keepLast: {\n type: Boolean,\n default: false\n }\n} as const)\n\nexport const keyValueItemEmits = {\n delete: () => true,\n change: () => true,\n 'update:value': (value: KeyValueItem) => !!value\n}\n"],"names":["buildProps","definePropType"],"mappings":";;;;;;AAKO,MAAM,SAAY,GAAA;AAAA,EACvB;AAAA,IACE,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,IAC1B,OAAS,EAAA,4CAAA;AAAA,IACT,SAAA,EAAW,OAAO,KAAA,EAAY,KAAe,KAAA;AAC3C,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAA,OAAO,OAAQ,CAAA,MAAA,CAAO,IAAI,KAAA,CAAM,4CAAS,CAAC,CAAA,CAAA;AAAA,OACrC,MAAA;AACL,QAAA,OAAO,QAAQ,OAAQ,EAAA,CAAA;AAAA,OACzB;AAAA,KACF;AAAA,GACF;AACF,EAAA;AACO,MAAM,WAAc,GAAA;AAAA,EACzB,MAAQ,EAAA,YAAA;AAAA,EACR,UAAY,EAAA,MAAA;AACd,EAAA;AAEO,MAAM,WAAc,GAAA;AAAA,EACzB;AAAA,IACE,GAAK,EAAA,OAAA;AAAA,IACL,QAAU,EAAA;AAAA,MACR,IAAM,EAAA,EAAA;AAAA,KACR;AAAA,GACF;AACF,EAAA;AAOO,MAAM,oBAAoBA,kBAAW,CAAA;AAAA,EAC1C,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,GACR;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAMC,uBAA+B,KAAK,CAAA;AAAA,IAC1C,SAAS,MAAM;AAAA,MACb;AAAA,QACE,GAAK,EAAA,IAAA;AAAA,QACL,KAAO,EAAA,IAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,GACtC;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,GACtC;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,GACtC;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAA,EAAMA,uBAAmC,MAAM,CAAA;AAAA,GACjD;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAA,EAAMA,uBAA2B,MAAM,CAAA;AAAA,GACzC;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAA,EAAMA,uBAA0B,KAAK,CAAA;AAAA,GACvC;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAA,EAAMA,uBAA2B,MAAM,CAAA;AAAA,GACzC;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAA,EAAMA,uBAA6B,MAAM,CAAA;AAAA,IACzC,SAAS,OAAO;AAAA,MACd,GAAK,EAAA,EAAA;AAAA,MACL,KAAO,EAAA,EAAA;AAAA,KACT,CAAA;AAAA,GACF;AAAA,EACA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF,CAAU,EAAA;AAEH,MAAM,iBAAoB,GAAA;AAAA,EAC/B,QAAQ,MAAM,IAAA;AAAA,EACd,QAAQ,MAAM,IAAA;AAAA,EACd,cAAgB,EAAA,CAAC,KAAwB,KAAA,CAAC,CAAC,KAAA;AAC7C;;;;;;;;"}
1
+ {"version":3,"file":"key-value-item.js","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":["buildProps","definePropType"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  require('../../../../utils/index.js');
4
+ var data = require('../../../../utils/data.js');
4
5
  var runtime = require('../../../../utils/props/runtime.js');
5
6
 
6
7
  "use strict";
7
8
  const getKeyValueItem = () => ({
8
9
  key: null,
9
- value: null
10
+ value: null,
11
+ guid: data.guid()
10
12
  });
11
13
  const keyValueProps = runtime.buildProps({
12
14
  value: {
@@ -1 +1 @@
1
- {"version":3,"file":"key-value.js","sources":["../../../../../../../packages/components/key-value/src/config/key-value.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type { ExtractPropTypes } from 'vue'\nimport { type FormColumn } from '@ll-plus/components'\nimport type { KeyValueItem } from './key-value-item'\nimport type KeyValue from '../key-value.vue'\n\nexport interface KeyType {\n label: string\n value: string\n option: FormColumn\n}\n\ntype KeyValueType = 'single' | 'doubt'\n\nexport const getKeyValueItem = () => ({\n key: null,\n value: null\n})\n\nexport const keyValueProps = buildProps({\n value: {\n type: definePropType<KeyValueItem[]>(Array),\n default: () => [{ 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<KeyValueType>(String),\n default: 'doubt'\n },\n keyType: {\n type: definePropType<FormColumn>(Object),\n default: () => ({\n type: 'input',\n placeholder: '请输入Key'\n })\n },\n keyTypes: {\n type: definePropType<KeyType[]>(Array),\n default: () => []\n },\n valueType: {\n type: definePropType<FormColumn>(Object),\n default: () => ({\n type: 'input',\n placeholder: '请输入Value'\n })\n },\n disabledValue: {\n type: definePropType<number[]>(Array),\n default: () => []\n },\n disabledKey: {\n type: definePropType<number[]>(Array),\n default: () => []\n },\n disabledDelete: {\n type: definePropType<number[]>(Array),\n default: () => []\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\nexport interface KeyValueAddEmits {\n index: number\n item: KeyValueItem\n value: KeyValueItem[]\n}\n\nexport const keyValueEmits = {\n change: (value: KeyValueItem[]) => !!value,\n add: (params: KeyValueAddEmits) => !!params,\n delete: (index: number) => typeof index === 'number',\n 'update:value': (value: KeyValueItem[]) => !!value\n}\n\n// props\nexport type KeyValueProps = ExtractPropTypes<typeof keyValueProps>\n// emits\nexport type KeyValueEmits = typeof keyValueEmits\n// instance\nexport type KeyValueInstance = InstanceType<typeof KeyValue>\n"],"names":["buildProps","definePropType"],"mappings":";;;;;;AAeO,MAAM,kBAAkB,OAAO;AAAA,EACpC,GAAK,EAAA,IAAA;AAAA,EACL,KAAO,EAAA,IAAA;AACT,CAAA,EAAA;AAEO,MAAM,gBAAgBA,kBAAW,CAAA;AAAA,EACtC,KAAO,EAAA;AAAA,IACL,IAAA,EAAMC,uBAA+B,KAAK,CAAA;AAAA,IAC1C,OAAA,EAAS,MAAM,CAAC,EAAE,KAAK,IAAM,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA,GAC5C;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,EAAMA,uBAA6B,MAAM,CAAA;AAAA,IACzC,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAA,EAAMA,uBAA2B,MAAM,CAAA;AAAA,IACvC,SAAS,OAAO;AAAA,MACd,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,uBAAA;AAAA,KACf,CAAA;AAAA,GACF;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAA,EAAMA,uBAA0B,KAAK,CAAA;AAAA,IACrC,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAA,EAAMA,uBAA2B,MAAM,CAAA;AAAA,IACvC,SAAS,OAAO;AAAA,MACd,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,yBAAA;AAAA,KACf,CAAA;AAAA,GACF;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,IAAA,EAAMA,uBAAyB,KAAK,CAAA;AAAA,IACpC,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;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;AAQH,MAAM,aAAgB,GAAA;AAAA,EAC3B,MAAQ,EAAA,CAAC,KAA0B,KAAA,CAAC,CAAC,KAAA;AAAA,EACrC,GAAK,EAAA,CAAC,MAA6B,KAAA,CAAC,CAAC,MAAA;AAAA,EACrC,MAAQ,EAAA,CAAC,KAAkB,KAAA,OAAO,KAAU,KAAA,QAAA;AAAA,EAC5C,cAAgB,EAAA,CAAC,KAA0B,KAAA,CAAC,CAAC,KAAA;AAC/C;;;;;;"}
1
+ {"version":3,"file":"key-value.js","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":["guid","buildProps","definePropType"],"mappings":"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"}
@@ -23,38 +23,68 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
23
23
  const bem = createNamespace.createNamespace("key-value");
24
24
  const formItemContext = antDesignVue.Form.useInjectFormItemContext();
25
25
  const innerValue = vue.ref(
26
- props.value.length ? props.value : [{ key: null, value: null }]
26
+ !props.value || props.value && !props.value.length ? [{ key: null, value: null, guid: data.guid() }] : props.value.map((e) => {
27
+ return {
28
+ ...e,
29
+ guid: data.guid()
30
+ };
31
+ })
27
32
  );
28
- const keyValueItems = vue.ref([]);
33
+ const keyValueItems = vue.ref({});
34
+ const setKeyValueItems = (el, type) => {
35
+ if (el) {
36
+ keyValueItems.value[type] = el;
37
+ }
38
+ };
29
39
  const keyValueTypeDict = vue.computed(() => {
30
40
  const obj = {};
31
- props.keyTypes.map((e) => {
41
+ props.keyTypes.forEach((e) => {
32
42
  obj[e.value] = e.option;
33
43
  });
34
44
  return obj;
35
45
  });
36
46
  const validate = async () => {
37
47
  await vue.nextTick();
38
- return Promise.all(
39
- keyValueItems.value.filter((e) => !!e).map((e) => e.validate())
48
+ const validationPromises = Object.values(keyValueItems.value).map(
49
+ async (item) => {
50
+ try {
51
+ await item.validate();
52
+ return { item, valid: true };
53
+ } catch (error) {
54
+ console.error("Validation failed for item:", item, error);
55
+ return { item, valid: false, error };
56
+ }
57
+ }
40
58
  );
59
+ const validationResults = await Promise.all(validationPromises);
60
+ const allValid = validationResults.every((result) => result.valid);
61
+ const errors = validationResults.filter((result) => !result.valid);
62
+ if (!allValid) {
63
+ console.log("Validation errors:", errors);
64
+ return { valid: false, errors };
65
+ }
66
+ return { valid: true };
41
67
  };
42
68
  const resetFields = async () => {
43
69
  await vue.nextTick();
44
- return Promise.all(
45
- keyValueItems.value.filter((e) => !!e).map((e) => e.resetFields())
46
- );
70
+ for (const i of Object.values(keyValueItems.value)) {
71
+ if (i) {
72
+ i.resetFields();
73
+ }
74
+ }
47
75
  };
48
76
  const clearValidate = async () => {
49
77
  await vue.nextTick();
50
- return Promise.all(
51
- keyValueItems.value.filter((e) => !!e).map((e) => e.clearValidate())
52
- );
78
+ for (const i of Object.values(keyValueItems.value)) {
79
+ if (i) {
80
+ i.clearValidate();
81
+ }
82
+ }
53
83
  };
54
84
  const handleAddItem = async () => {
55
- const valid = await validate();
56
- if (props.validate && !valid)
57
- return false;
85
+ const { valid } = await validate();
86
+ if (!valid)
87
+ return;
58
88
  innerValue.value.push(keyValue.getKeyValueItem());
59
89
  emits("add", {
60
90
  index: innerValue.value.length - 1,
@@ -64,25 +94,35 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
64
94
  };
65
95
  const handleDelete = (idx) => {
66
96
  if (innerValue.value.length === 1) {
67
- innerValue.value = [{ key: null, value: null }];
97
+ innerValue.value = [{ key: null, value: null, guid: data.guid() }];
68
98
  } else {
69
99
  innerValue.value.splice(idx, 1);
70
100
  emits("delete", idx);
71
101
  }
72
102
  };
73
103
  const getValue = (val) => {
74
- return val.filter((e) => data.hasValue(e.key) || data.hasValue(e.value));
104
+ return val.filter((e) => data.hasValue(e.key) || data.hasValue(e.value)).map((e) => ({
105
+ key: e.key,
106
+ value: e.value
107
+ }));
75
108
  };
76
109
  vue.watch(
77
110
  () => props.value,
78
111
  (n) => {
112
+ if (!n || n && !n.length)
113
+ return;
79
114
  const copyInnerValue = getValue(innerValue.value);
80
115
  const copyPropsValue = getValue(n);
81
116
  if (data.deepCompare(copyInnerValue, copyPropsValue))
82
117
  return;
83
118
  innerValue.value = [
84
- ...n && n.length > 0 ? n : props.keepLast ? [{ key: null, value: null }] : n
85
- ];
119
+ ...n && n.length > 0 ? n : props.keepLast ? [{ key: null, value: null, guid: data.guid() }] : n
120
+ ].map((e) => {
121
+ return {
122
+ ...e,
123
+ guid: data.guid()
124
+ };
125
+ });
86
126
  },
87
127
  {
88
128
  immediate: true,
@@ -139,9 +179,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
139
179
  null,
140
180
  vue.renderList(innerValue.value, (_item, idx) => {
141
181
  return vue.openBlock(), vue.createBlock(keyValueItem.default, {
142
- key: _item,
182
+ key: _item.guid,
143
183
  ref_for: true,
144
- ref: (el) => keyValueItems.value[idx] = el,
184
+ ref: (el) => setKeyValueItems(el, _item.guid),
145
185
  value: innerValue.value[idx],
146
186
  "onUpdate:value": ($event) => innerValue.value[idx] = $event,
147
187
  idx,
@@ -1 +1 @@
1
- {"version":3,"file":"key-value.vue2.js","sources":["../../../../../../packages/components/key-value/src/key-value.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <div v-if=\"innerValue.length > 0\" :class=\"bem.e('list')\">\n <key-value-item\n v-for=\"(_item, idx) in innerValue\"\n :key=\"_item\"\n :ref=\"el => (keyValueItems[idx] = el)\"\n v-model:value=\"innerValue[idx]\"\n :idx=\"idx\"\n :key-label=\"props.keyLabel\"\n :value-label=\"props.valueLabel\"\n :key-value-type-dict=\"keyValueTypeDict\"\n :key-value-type=\"props.keyValueType\"\n :key-type=\"props.keyType\"\n :key-types=\"props.keyTypes\"\n :value-type=\"props.valueType\"\n :values=\"innerValue\"\n :disabled=\"props.disabled\"\n :disabled-value=\"props.disabledValue\"\n :disabled-key=\"props.disabledKey\"\n :disabled-delete=\"props.disabledDelete\"\n :keep-last=\"props.keepLast\"\n @delete=\"handleDelete(idx)\"\n >\n <template\n v-for=\"item in Object.keys($slots)\"\n :key=\"item\"\n #[item]=\"data\"\n >\n <slot :name=\"item\" v-bind=\"data || {}\" :index=\"idx\"></slot>\n </template>\n </key-value-item>\n </div>\n\n <ll-button\n :class=\"bem.e('add')\"\n :loading=\"loading\"\n :disabled=\"props.disabled || props.disabledAdd\"\n @click=\"handleAddItem\"\n >\n <div :class=\"bem.e('plus')\">\n <ll-icon\n v-if=\"!loading\"\n icon-name=\"icon-add\"\n :class=\"bem.e('icon-add')\"\n />\n {{ props.addText }}\n </div>\n </ll-button>\n </a-spin>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick } from 'vue'\nimport { Form } from 'ant-design-vue'\nimport { createNamespace, deepCompare, hasValue } from '@ll-plus/utils'\nimport {\n keyValueProps,\n keyValueEmits,\n getKeyValueItem,\n type KeyValueItem\n} from './config'\nimport keyValueItem from './components/key-value-item.vue'\n\ndefineOptions({ name: 'LlKeyValue' })\n\nconst props = defineProps(keyValueProps)\nconst emits = defineEmits(keyValueEmits)\nconst bem = createNamespace('key-value')\nconst formItemContext = Form.useInjectFormItemContext()\n\nconst innerValue = ref<KeyValueItem[]>(\n props.value.length ? props.value : [{ key: null, value: null }]\n)\n\nconst keyValueItems = ref<InstanceType<typeof keyValueItem>[]>([])\n\nconst keyValueTypeDict = computed(() => {\n const obj = {}\n props.keyTypes.map(e => {\n obj[e.value] = e.option\n })\n return obj\n})\n\nconst validate = async () => {\n await nextTick()\n return Promise.all(\n keyValueItems.value.filter(e => !!e).map(e => e.validate())\n )\n}\n\nconst resetFields = async () => {\n await nextTick()\n return Promise.all(\n keyValueItems.value.filter(e => !!e).map(e => e.resetFields())\n )\n}\n\nconst clearValidate = async () => {\n await nextTick()\n return Promise.all(\n keyValueItems.value.filter(e => !!e).map(e => e.clearValidate())\n )\n}\n\nconst handleAddItem = async () => {\n const valid = await validate()\n if (props.validate && !valid) return false\n innerValue.value.push(getKeyValueItem())\n emits('add', {\n index: innerValue.value.length - 1,\n item: innerValue.value[innerValue.value.length - 1],\n value: innerValue.value\n })\n}\n\nconst handleDelete = (idx: number) => {\n if (innerValue.value.length === 1) {\n innerValue.value = [{ key: null, value: null }]\n } else {\n innerValue.value.splice(idx, 1)\n emits('delete', idx)\n }\n}\n\n// const handleChange = () => {\n// try {\n// formItemContext.onFieldChange()\n// emits('change', innerValue.value)\n// emits('update:value', innerValue.value)\n// } catch (error) {\n// console.error(error)\n// }\n// }\n\nconst getValue = (val: KeyValueItem[]) => {\n return val.filter(e => hasValue(e.key) || hasValue(e.value))\n}\n\nwatch(\n () => props.value,\n n => {\n const copyInnerValue = getValue(innerValue.value)\n const copyPropsValue = getValue(n)\n if (deepCompare(copyInnerValue, copyPropsValue)) return\n innerValue.value = [\n ...(n && n.length > 0\n ? n\n : props.keepLast\n ? [{ key: null, value: null }]\n : n)\n ]\n },\n {\n immediate: true,\n deep: true\n }\n)\n\nwatch(\n () => innerValue.value,\n val => {\n const copyInnerValue = getValue(val)\n const copyPropsValue = getValue(props.value)\n if (deepCompare(copyInnerValue, copyPropsValue)) return\n try {\n formItemContext.onFieldChange()\n emits('change', copyInnerValue)\n emits('update:value', copyInnerValue)\n } catch (error) {\n console.error(error)\n }\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate\n})\n</script>\n"],"names":["createNamespace","Form","ref","computed","nextTick","getKeyValueItem","hasValue","watch","deepCompare"],"mappings":";;;;;;;;;;;;;;;;;;;;AAoEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AACd,IAAM,MAAA,GAAA,GAAMA,gCAAgB,WAAW,CAAA,CAAA;AACvC,IAAM,MAAA,eAAA,GAAkBC,kBAAK,wBAAyB,EAAA,CAAA;AAEtD,IAAA,MAAM,UAAa,GAAAC,OAAA;AAAA,MACjB,KAAA,CAAM,KAAM,CAAA,MAAA,GAAS,KAAM,CAAA,KAAA,GAAQ,CAAC,EAAE,GAAK,EAAA,IAAA,EAAM,KAAO,EAAA,IAAA,EAAM,CAAA;AAAA,KAChE,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgBA,OAAyC,CAAA,EAAE,CAAA,CAAA;AAEjE,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAA,MAAM,MAAM,EAAC,CAAA;AACb,MAAM,KAAA,CAAA,QAAA,CAAS,IAAI,CAAK,CAAA,KAAA;AACtB,QAAI,GAAA,CAAA,CAAA,CAAE,KAAK,CAAA,GAAI,CAAE,CAAA,MAAA,CAAA;AAAA,OAClB,CAAA,CAAA;AACD,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,WAAW,YAAY;AAC3B,MAAA,MAAMC,YAAS,EAAA,CAAA;AACf,MAAA,OAAO,OAAQ,CAAA,GAAA;AAAA,QACb,aAAc,CAAA,KAAA,CAAM,MAAO,CAAA,CAAA,CAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,QAAA,EAAU,CAAA;AAAA,OAC5D,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,cAAc,YAAY;AAC9B,MAAA,MAAMA,YAAS,EAAA,CAAA;AACf,MAAA,OAAO,OAAQ,CAAA,GAAA;AAAA,QACb,aAAc,CAAA,KAAA,CAAM,MAAO,CAAA,CAAA,CAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,WAAA,EAAa,CAAA;AAAA,OAC/D,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,gBAAgB,YAAY;AAChC,MAAA,MAAMA,YAAS,EAAA,CAAA;AACf,MAAA,OAAO,OAAQ,CAAA,GAAA;AAAA,QACb,aAAc,CAAA,KAAA,CAAM,MAAO,CAAA,CAAA,CAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,aAAA,EAAe,CAAA;AAAA,OACjE,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,gBAAgB,YAAY;AAChC,MAAM,MAAA,KAAA,GAAQ,MAAM,QAAS,EAAA,CAAA;AAC7B,MAAI,IAAA,KAAA,CAAM,YAAY,CAAC,KAAA;AAAO,QAAO,OAAA,KAAA,CAAA;AACrC,MAAW,UAAA,CAAA,KAAA,CAAM,IAAK,CAAAC,wBAAA,EAAiB,CAAA,CAAA;AACvC,MAAA,KAAA,CAAM,KAAO,EAAA;AAAA,QACX,KAAA,EAAO,UAAW,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA;AAAA,QACjC,MAAM,UAAW,CAAA,KAAA,CAAM,UAAW,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,QAClD,OAAO,UAAW,CAAA,KAAA;AAAA,OACnB,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,GAAgB,KAAA;AACpC,MAAI,IAAA,UAAA,CAAW,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,QAAA,UAAA,CAAW,QAAQ,CAAC,EAAE,KAAK,IAAM,EAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,OACzC,MAAA;AACL,QAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,GAAA,EAAK,CAAC,CAAA,CAAA;AAC9B,QAAA,KAAA,CAAM,UAAU,GAAG,CAAA,CAAA;AAAA,OACrB;AAAA,KACF,CAAA;AAYA,IAAM,MAAA,QAAA,GAAW,CAAC,GAAwB,KAAA;AACxC,MAAO,OAAA,GAAA,CAAI,MAAO,CAAA,CAAA,CAAA,KAAKC,aAAS,CAAA,CAAA,CAAE,GAAG,CAAK,IAAAA,aAAA,CAAS,CAAE,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KAC7D,CAAA;AAEA,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,KAAA;AAAA,MACZ,CAAK,CAAA,KAAA;AACH,QAAM,MAAA,cAAA,GAAiB,QAAS,CAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChD,QAAM,MAAA,cAAA,GAAiB,SAAS,CAAC,CAAA,CAAA;AACjC,QAAI,IAAAC,gBAAA,CAAY,gBAAgB,cAAc,CAAA;AAAG,UAAA,OAAA;AACjD,QAAA,UAAA,CAAW,KAAQ,GAAA;AAAA,UACjB,GAAI,CAAA,IAAK,CAAE,CAAA,MAAA,GAAS,IAChB,CACA,GAAA,KAAA,CAAM,QACN,GAAA,CAAC,EAAE,GAAK,EAAA,IAAA,EAAM,KAAO,EAAA,IAAA,EAAM,CAC3B,GAAA,CAAA;AAAA,SACN,CAAA;AAAA,OACF;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,QACX,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;AAEA,IAAAD,SAAA;AAAA,MACE,MAAM,UAAW,CAAA,KAAA;AAAA,MACjB,CAAO,GAAA,KAAA;AACL,QAAM,MAAA,cAAA,GAAiB,SAAS,GAAG,CAAA,CAAA;AACnC,QAAM,MAAA,cAAA,GAAiB,QAAS,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAC3C,QAAI,IAAAC,gBAAA,CAAY,gBAAgB,cAAc,CAAA;AAAG,UAAA,OAAA;AACjD,QAAI,IAAA;AACF,UAAA,eAAA,CAAgB,aAAc,EAAA,CAAA;AAC9B,UAAA,KAAA,CAAM,UAAU,cAAc,CAAA,CAAA;AAC9B,UAAA,KAAA,CAAM,gBAAgB,cAAc,CAAA,CAAA;AAAA,iBAC7B,KAAO,EAAA;AACd,UAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,SACrB;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;AAEA,IAAa,QAAA,CAAA;AAAA,MACX,QAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"key-value.vue2.js","sources":["../../../../../../packages/components/key-value/src/key-value.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <div v-if=\"innerValue.length > 0\" :class=\"bem.e('list')\">\n <key-value-item\n v-for=\"(_item, idx) in innerValue\"\n :key=\"_item.guid\"\n :ref=\"el => setKeyValueItems(el, _item.guid)\"\n v-model:value=\"innerValue[idx]\"\n :idx=\"idx\"\n :key-label=\"props.keyLabel\"\n :value-label=\"props.valueLabel\"\n :key-value-type-dict=\"keyValueTypeDict\"\n :key-value-type=\"props.keyValueType\"\n :key-type=\"props.keyType\"\n :key-types=\"props.keyTypes\"\n :value-type=\"props.valueType\"\n :values=\"innerValue\"\n :disabled=\"props.disabled\"\n :disabled-value=\"props.disabledValue\"\n :disabled-key=\"props.disabledKey\"\n :disabled-delete=\"props.disabledDelete\"\n :keep-last=\"props.keepLast\"\n @delete=\"handleDelete(idx)\"\n >\n <template\n v-for=\"item in Object.keys($slots)\"\n :key=\"item\"\n #[item]=\"data\"\n >\n <slot :name=\"item\" v-bind=\"data || {}\" :index=\"idx\"></slot>\n </template>\n </key-value-item>\n </div>\n\n <ll-button\n :class=\"bem.e('add')\"\n :loading=\"loading\"\n :disabled=\"props.disabled || props.disabledAdd\"\n @click=\"handleAddItem\"\n >\n <div :class=\"bem.e('plus')\">\n <ll-icon\n v-if=\"!loading\"\n icon-name=\"icon-add\"\n :class=\"bem.e('icon-add')\"\n />\n {{ props.addText }}\n </div>\n </ll-button>\n </a-spin>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick } from 'vue'\nimport { Form } from 'ant-design-vue'\nimport { createNamespace, deepCompare, hasValue, guid } from '@ll-plus/utils'\nimport {\n keyValueProps,\n keyValueEmits,\n getKeyValueItem,\n type IKeyValueItem,\n type IKeyValueReturn,\n type IKeyValueAddEmits\n} from './config'\nimport keyValueItem from './components/key-value-item.vue'\nimport type { FormColumn } from '@ll-plus/components'\n\ntype KeyValueItemInstance = InstanceType<typeof keyValueItem>\n\ndefineOptions({ name: 'LlKeyValue' })\n\nconst props = defineProps(keyValueProps)\nconst emits = defineEmits(keyValueEmits)\nconst bem = createNamespace('key-value')\nconst formItemContext = Form.useInjectFormItemContext()\n\nconst innerValue = ref<IKeyValueItem[]>(\n !props.value || (props.value && !props.value.length)\n ? ([{ key: null, value: null, guid: guid() }] as IKeyValueItem[])\n : (props.value.map(e => {\n return {\n ...e,\n guid: guid()\n }\n }) as IKeyValueItem[])\n)\nconst keyValueItems = ref<Record<string, KeyValueItemInstance>>({})\n\nconst setKeyValueItems = (\n el: KeyValueItemInstance | null,\n type: string\n): void => {\n if (el) {\n keyValueItems.value[type] = el\n }\n}\n\nconst keyValueTypeDict = computed<Record<string, FormColumn>>(() => {\n const obj: Record<string, FormColumn> = {}\n props.keyTypes.forEach(e => {\n obj[e.value] = e.option\n })\n return obj\n})\n\nconst validate = async (): Promise<{ valid: boolean; errors?: any[] }> => {\n await nextTick()\n\n const validationPromises = Object.values(keyValueItems.value).map(\n async item => {\n try {\n await item.validate()\n return { item, valid: true }\n } catch (error) {\n console.error('Validation failed for item:', item, error)\n return { item, valid: false, error }\n }\n }\n )\n\n const validationResults = await Promise.all(validationPromises)\n\n const allValid = validationResults.every(result => result.valid)\n const errors = validationResults.filter(result => !result.valid)\n\n if (!allValid) {\n console.log('Validation errors:', errors)\n return { valid: false, errors }\n }\n\n return { valid: true }\n}\n\nconst resetFields = async (): Promise<void> => {\n await nextTick()\n for (const i of Object.values(keyValueItems.value)) {\n if (i) {\n i.resetFields()\n }\n }\n}\n\nconst clearValidate = async (): Promise<void> => {\n await nextTick()\n for (const i of Object.values(keyValueItems.value)) {\n if (i) {\n i.clearValidate()\n }\n }\n}\n\nconst handleAddItem = async (): Promise<void> => {\n const { valid } = await validate()\n if (!valid) return\n innerValue.value.push(getKeyValueItem())\n emits('add', {\n index: innerValue.value.length - 1,\n item: innerValue.value[innerValue.value.length - 1],\n value: innerValue.value\n } as IKeyValueAddEmits)\n}\n\nconst handleDelete = (idx: number): void => {\n if (innerValue.value.length === 1) {\n innerValue.value = [{ key: null, value: null, guid: guid() }]\n } else {\n innerValue.value.splice(idx, 1)\n emits('delete', idx)\n }\n}\n\nconst getValue = (\n val: IKeyValueItem[] | IKeyValueReturn[]\n): IKeyValueReturn[] => {\n return val\n .filter(e => hasValue(e.key) || hasValue(e.value))\n .map(e => ({\n key: e.key,\n value: e.value\n }))\n}\n\nwatch(\n () => props.value,\n (n: IKeyValueReturn[]) => {\n if (!n || (n && !n.length)) return\n const copyInnerValue = getValue(innerValue.value)\n const copyPropsValue = getValue(n)\n if (deepCompare(copyInnerValue, copyPropsValue)) return\n innerValue.value = [\n ...(n && n.length > 0\n ? n\n : props.keepLast\n ? [{ key: null, value: null, guid: guid() }]\n : n)\n ].map(e => {\n return {\n ...e,\n guid: guid()\n }\n })\n },\n {\n immediate: true,\n deep: true\n }\n)\n\nwatch(\n () => innerValue.value,\n (val: IKeyValueItem[]) => {\n const copyInnerValue = getValue(val)\n const copyPropsValue = getValue(props.value)\n if (deepCompare(copyInnerValue, copyPropsValue)) return\n try {\n formItemContext.onFieldChange()\n emits('change', copyInnerValue)\n emits('update:value', copyInnerValue)\n } catch (error) {\n console.error(error)\n }\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate\n})\n</script>\n"],"names":["createNamespace","Form","ref","guid","computed","nextTick","getKeyValueItem","hasValue","watch","deepCompare"],"mappings":"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"}
@@ -32,7 +32,15 @@ function deepCompare(obj1, obj2) {
32
32
  const hasValue = (value) => {
33
33
  return Array.isArray(value) ? value.length > 0 : !lodashEs.isNull(value) && !lodashEs.isUndefined(value) && value !== "";
34
34
  };
35
+ const guid = () => {
36
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
37
+ const r = Math.random() * 16 | 0;
38
+ const v = c === "x" ? r : r & 3 | 8;
39
+ return v.toString(16);
40
+ });
41
+ };
35
42
 
36
43
  exports.deepCompare = deepCompare;
44
+ exports.guid = guid;
37
45
  exports.hasValue = hasValue;
38
46
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":["../../../../packages/utils/data.ts"],"sourcesContent":["import { isNull, isUndefined } from 'lodash-es'\n\nexport function deepCompare(obj1: any, obj2: any): boolean {\n const stack = [[obj1, obj2]]\n\n while (stack.length) {\n const [a, b] = stack.pop() as any[]\n\n if (a === b) continue\n\n if (\n typeof a !== 'object' ||\n a === null ||\n typeof b !== 'object' ||\n b === null\n ) {\n return false\n }\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n // If both objects have no keys, consider them equal\n if (keysA.length === 0 && keysB.length === 0) {\n continue\n }\n\n for (const key of keysA) {\n if (!keysB.includes(key)) {\n return false\n }\n stack.push([a[key], b[key]])\n }\n }\n\n return true\n}\n\nexport const hasValue = (value: any) => {\n return Array.isArray(value)\n ? value.length > 0\n : !isNull(value) && !isUndefined(value) && value !== ''\n}\n"],"names":["isNull","isUndefined"],"mappings":";;;;;AAEgB,SAAA,WAAA,CAAY,MAAW,IAAoB,EAAA;AACzD,EAAA,MAAM,KAAQ,GAAA,CAAC,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA,CAAA;AAE3B,EAAA,OAAO,MAAM,MAAQ,EAAA;AACnB,IAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,MAAM,GAAI,EAAA,CAAA;AAEzB,IAAA,IAAI,CAAM,KAAA,CAAA;AAAG,MAAA,SAAA;AAEb,IACE,IAAA,OAAO,MAAM,QACb,IAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,QACb,IAAA,CAAA,KAAM,IACN,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAC3B,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAE3B,IAAI,IAAA,KAAA,CAAM,MAAW,KAAA,KAAA,CAAM,MAAQ,EAAA;AACjC,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAGA,IAAA,IAAI,KAAM,CAAA,MAAA,KAAW,CAAK,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AAC5C,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,KAAA,MAAW,OAAO,KAAO,EAAA;AACvB,MAAA,IAAI,CAAC,KAAA,CAAM,QAAS,CAAA,GAAG,CAAG,EAAA;AACxB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAE,CAAA,GAAG,GAAG,CAAE,CAAA,GAAG,CAAC,CAAC,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEa,MAAA,QAAA,GAAW,CAAC,KAAe,KAAA;AACtC,EAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GACtB,MAAM,MAAS,GAAA,CAAA,GACf,CAACA,eAAA,CAAO,KAAK,CAAK,IAAA,CAACC,oBAAY,CAAA,KAAK,KAAK,KAAU,KAAA,EAAA,CAAA;AACzD;;;;;"}
1
+ {"version":3,"file":"data.js","sources":["../../../../packages/utils/data.ts"],"sourcesContent":["import { isNull, isUndefined } from 'lodash-es'\n\nexport function deepCompare(obj1: any, obj2: any): boolean {\n const stack = [[obj1, obj2]]\n\n while (stack.length) {\n const [a, b] = stack.pop() as any[]\n\n if (a === b) continue\n\n if (\n typeof a !== 'object' ||\n a === null ||\n typeof b !== 'object' ||\n b === null\n ) {\n return false\n }\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n // If both objects have no keys, consider them equal\n if (keysA.length === 0 && keysB.length === 0) {\n continue\n }\n\n for (const key of keysA) {\n if (!keysB.includes(key)) {\n return false\n }\n stack.push([a[key], b[key]])\n }\n }\n\n return true\n}\n\nexport const hasValue = (value: any) => {\n return Array.isArray(value)\n ? value.length > 0\n : !isNull(value) && !isUndefined(value) && value !== ''\n}\n\nexport const guid = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n"],"names":["isNull","isUndefined"],"mappings":";;;;;AAEgB,SAAA,WAAA,CAAY,MAAW,IAAoB,EAAA;AACzD,EAAA,MAAM,KAAQ,GAAA,CAAC,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA,CAAA;AAE3B,EAAA,OAAO,MAAM,MAAQ,EAAA;AACnB,IAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,MAAM,GAAI,EAAA,CAAA;AAEzB,IAAA,IAAI,CAAM,KAAA,CAAA;AAAG,MAAA,SAAA;AAEb,IACE,IAAA,OAAO,MAAM,QACb,IAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,QACb,IAAA,CAAA,KAAM,IACN,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAC3B,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAE3B,IAAI,IAAA,KAAA,CAAM,MAAW,KAAA,KAAA,CAAM,MAAQ,EAAA;AACjC,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAGA,IAAA,IAAI,KAAM,CAAA,MAAA,KAAW,CAAK,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AAC5C,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,KAAA,MAAW,OAAO,KAAO,EAAA;AACvB,MAAA,IAAI,CAAC,KAAA,CAAM,QAAS,CAAA,GAAG,CAAG,EAAA;AACxB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAE,CAAA,GAAG,GAAG,CAAE,CAAA,GAAG,CAAC,CAAC,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEa,MAAA,QAAA,GAAW,CAAC,KAAe,KAAA;AACtC,EAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GACtB,MAAM,MAAS,GAAA,CAAA,GACf,CAACA,eAAA,CAAO,KAAK,CAAK,IAAA,CAACC,oBAAY,CAAA,KAAK,KAAK,KAAU,KAAA,EAAA,CAAA;AACzD,EAAA;AAEO,MAAM,OAAO,MAAc;AAChC,EAAA,OAAO,sCAAuC,CAAA,OAAA,CAAQ,OAAS,EAAA,SAAU,CAAG,EAAA;AAC1E,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AACH;;;;;;"}
@@ -42,6 +42,7 @@ exports.fileToBase64 = file.fileToBase64;
42
42
  exports.formatFileSize = file.formatFileSize;
43
43
  exports.deepUnref = deepUnref.deepUnref;
44
44
  exports.deepCompare = data.deepCompare;
45
+ exports.guid = data.guid;
45
46
  exports.hasValue = data.hasValue;
46
47
  exports.buildProp = runtime.buildProp;
47
48
  exports.buildProps = runtime.buildProps;