ll-plus 2.3.8 → 2.3.9
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/api-component/index.d.ts +416 -174
- package/es/components/api-component/index.mjs +1 -0
- package/es/components/api-component/index.mjs.map +1 -1
- package/es/components/api-component/src/api-component.vue.d.ts +416 -174
- package/es/components/api-component/src/api-component.vue2.mjs +14 -65
- package/es/components/api-component/src/api-component.vue2.mjs.map +1 -1
- package/es/components/api-component/src/components/api-url.vue.d.ts +12 -38
- package/es/components/api-component/src/components/body-component.vue.d.ts +393 -0
- package/es/components/api-component/src/components/body-component.vue.mjs +8 -0
- package/es/components/api-component/src/components/body-component.vue.mjs.map +1 -0
- package/es/components/api-component/src/components/body-component.vue2.mjs +126 -0
- package/es/components/api-component/src/components/body-component.vue2.mjs.map +1 -0
- package/es/components/api-component/src/components/json-xml-table-row.vue.d.ts +5 -2
- package/es/components/api-component/src/components/json-xml-table-row.vue2.mjs +10 -4
- package/es/components/api-component/src/components/json-xml-table-row.vue2.mjs.map +1 -1
- package/es/components/api-component/src/components/json-xml-table.vue.d.ts +14 -1
- package/es/components/api-component/src/components/json-xml-table.vue2.mjs +16 -5
- package/es/components/api-component/src/components/json-xml-table.vue2.mjs.map +1 -1
- package/es/components/api-component/src/components/json-xml.vue.d.ts +19 -2
- package/es/components/api-component/src/components/json-xml.vue2.mjs +18 -22
- package/es/components/api-component/src/components/json-xml.vue2.mjs.map +1 -1
- package/es/components/api-component/src/config/api-component.d.ts +8 -12
- package/es/components/api-component/src/config/api-component.mjs +4 -6
- package/es/components/api-component/src/config/api-component.mjs.map +1 -1
- package/es/components/api-component/src/config/api-url.d.ts +4 -6
- package/es/components/api-component/src/config/api-url.mjs +4 -6
- package/es/components/api-component/src/config/api-url.mjs.map +1 -1
- package/es/components/api-component/src/config/body.d.ts +19 -0
- package/es/components/api-component/src/config/body.mjs +30 -0
- package/es/components/api-component/src/config/body.mjs.map +1 -0
- package/es/components/api-component/src/config/index.d.ts +1 -0
- package/es/components/api-component/src/config/index.mjs +1 -0
- package/es/components/api-component/src/config/index.mjs.map +1 -1
- package/es/components/api-component/src/config/json-xml.d.ts +9 -1
- package/es/components/api-component/src/config/json-xml.mjs +12 -1
- package/es/components/api-component/src/config/json-xml.mjs.map +1 -1
- package/es/components/code-editor/index.d.ts +6 -6
- package/es/components/code-editor/src/code-editor.vue.d.ts +6 -6
- package/es/components/code-editor/src/config/code-editor.d.ts +2 -2
- package/es/components/code-editor/src/config/code-editor.mjs +1 -1
- package/es/components/code-editor/src/config/code-editor.mjs.map +1 -1
- package/es/components/index.mjs +1 -0
- package/es/components/index.mjs.map +1 -1
- package/es/components/operate-icon/index.d.ts +1 -1
- package/es/components/operate-icon/src/operate-icon.vue.d.ts +1 -1
- package/es/components/tabs-simple/index.d.ts +4 -0
- package/es/components/tabs-simple/src/tabs-simple.d.ts +1 -0
- package/es/components/tabs-simple/src/tabs-simple.mjs +4 -0
- package/es/components/tabs-simple/src/tabs-simple.mjs.map +1 -1
- package/es/components/tabs-simple/src/tabs-simple.vue.d.ts +4 -0
- package/es/components/tabs-simple/src/tabs-simple.vue2.mjs +5 -1
- package/es/components/tabs-simple/src/tabs-simple.vue2.mjs.map +1 -1
- package/es/index.mjs +1 -0
- package/es/index.mjs.map +1 -1
- package/es/utils/props/runtime.d.ts +2 -2
- package/index.full.js +548 -432
- package/index.full.min.js +25 -23
- package/index.full.min.js.map +1 -1
- package/index.full.min.mjs +24 -22
- package/index.full.min.mjs.map +1 -1
- package/index.full.mjs +548 -434
- package/lib/components/api-component/index.d.ts +416 -174
- package/lib/components/api-component/index.js +3 -0
- package/lib/components/api-component/index.js.map +1 -1
- package/lib/components/api-component/src/api-component.vue.d.ts +416 -174
- package/lib/components/api-component/src/api-component.vue2.js +11 -62
- package/lib/components/api-component/src/api-component.vue2.js.map +1 -1
- package/lib/components/api-component/src/components/api-url.vue.d.ts +12 -38
- package/lib/components/api-component/src/components/body-component.vue.d.ts +393 -0
- package/lib/components/api-component/src/components/body-component.vue.js +12 -0
- package/lib/components/api-component/src/components/body-component.vue.js.map +1 -0
- package/lib/components/api-component/src/components/body-component.vue2.js +130 -0
- package/lib/components/api-component/src/components/body-component.vue2.js.map +1 -0
- package/lib/components/api-component/src/components/json-xml-table-row.vue.d.ts +5 -2
- package/lib/components/api-component/src/components/json-xml-table-row.vue2.js +10 -4
- package/lib/components/api-component/src/components/json-xml-table-row.vue2.js.map +1 -1
- package/lib/components/api-component/src/components/json-xml-table.vue.d.ts +14 -1
- package/lib/components/api-component/src/components/json-xml-table.vue2.js +15 -4
- package/lib/components/api-component/src/components/json-xml-table.vue2.js.map +1 -1
- package/lib/components/api-component/src/components/json-xml.vue.d.ts +19 -2
- package/lib/components/api-component/src/components/json-xml.vue2.js +18 -22
- package/lib/components/api-component/src/components/json-xml.vue2.js.map +1 -1
- package/lib/components/api-component/src/config/api-component.d.ts +8 -12
- package/lib/components/api-component/src/config/api-component.js +4 -6
- package/lib/components/api-component/src/config/api-component.js.map +1 -1
- package/lib/components/api-component/src/config/api-url.d.ts +4 -6
- package/lib/components/api-component/src/config/api-url.js +4 -6
- package/lib/components/api-component/src/config/api-url.js.map +1 -1
- package/lib/components/api-component/src/config/body.d.ts +19 -0
- package/lib/components/api-component/src/config/body.js +33 -0
- package/lib/components/api-component/src/config/body.js.map +1 -0
- package/lib/components/api-component/src/config/index.d.ts +1 -0
- package/lib/components/api-component/src/config/index.js +3 -0
- package/lib/components/api-component/src/config/index.js.map +1 -1
- package/lib/components/api-component/src/config/json-xml.d.ts +9 -1
- package/lib/components/api-component/src/config/json-xml.js +12 -1
- package/lib/components/api-component/src/config/json-xml.js.map +1 -1
- package/lib/components/code-editor/index.d.ts +6 -6
- package/lib/components/code-editor/src/code-editor.vue.d.ts +6 -6
- package/lib/components/code-editor/src/config/code-editor.d.ts +2 -2
- package/lib/components/code-editor/src/config/code-editor.js +1 -1
- package/lib/components/code-editor/src/config/code-editor.js.map +1 -1
- package/lib/components/index.js +3 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/operate-icon/index.d.ts +1 -1
- package/lib/components/operate-icon/src/operate-icon.vue.d.ts +1 -1
- package/lib/components/tabs-simple/index.d.ts +4 -0
- package/lib/components/tabs-simple/src/tabs-simple.d.ts +1 -0
- package/lib/components/tabs-simple/src/tabs-simple.js +4 -0
- package/lib/components/tabs-simple/src/tabs-simple.js.map +1 -1
- package/lib/components/tabs-simple/src/tabs-simple.vue.d.ts +4 -0
- package/lib/components/tabs-simple/src/tabs-simple.vue2.js +5 -1
- package/lib/components/tabs-simple/src/tabs-simple.vue2.js.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/props/runtime.d.ts +2 -2
- package/package.json +1 -1
- package/theme-chalk/css/api-component.css +1 -1
- package/theme-chalk/css/index.css +1 -1
- package/theme-chalk/css/tabs-simple.css +1 -1
- package/types/packages/components/api-component/index.d.ts +416 -174
- package/types/packages/components/api-component/src/api-component.vue.d.ts +416 -174
- package/types/packages/components/api-component/src/components/api-url.vue.d.ts +12 -38
- package/types/packages/components/api-component/src/components/body-component.vue.d.ts +393 -0
- package/types/packages/components/api-component/src/components/json-xml-table-row.vue.d.ts +5 -2
- package/types/packages/components/api-component/src/components/json-xml-table.vue.d.ts +14 -1
- package/types/packages/components/api-component/src/components/json-xml.vue.d.ts +19 -2
- package/types/packages/components/api-component/src/config/api-component.d.ts +8 -12
- package/types/packages/components/api-component/src/config/api-url.d.ts +4 -6
- package/types/packages/components/api-component/src/config/body.d.ts +19 -0
- package/types/packages/components/api-component/src/config/index.d.ts +1 -0
- package/types/packages/components/api-component/src/config/json-xml.d.ts +9 -1
- package/types/packages/components/code-editor/index.d.ts +6 -6
- package/types/packages/components/code-editor/src/code-editor.vue.d.ts +6 -6
- package/types/packages/components/code-editor/src/config/code-editor.d.ts +2 -2
- package/types/packages/components/operate-icon/index.d.ts +1 -1
- package/types/packages/components/operate-icon/src/operate-icon.vue.d.ts +1 -1
- package/types/packages/components/tabs-simple/index.d.ts +4 -0
- package/types/packages/components/tabs-simple/src/tabs-simple.d.ts +1 -0
- package/types/packages/components/tabs-simple/src/tabs-simple.vue.d.ts +4 -0
- package/types/packages/utils/props/runtime.d.ts +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import _sfc_main from './body-component.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
var BodyComponent = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "body-component.vue"]]);
|
|
6
|
+
|
|
7
|
+
export { BodyComponent as default };
|
|
8
|
+
//# sourceMappingURL=body-component.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-component.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { defineComponent, inject, ref, watch, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, createElementVNode, createBlock, createCommentVNode, createTextVNode } from 'vue';
|
|
2
|
+
import '../../../../utils/index.mjs';
|
|
3
|
+
import JsonXml from './json-xml.vue.mjs';
|
|
4
|
+
import paramsTable from './params-table.vue.mjs';
|
|
5
|
+
import '../config/index.mjs';
|
|
6
|
+
import { bodyProps, bodyEmits } from '../config/body.mjs';
|
|
7
|
+
import { createNamespace } from '../../../../utils/create-namespace.mjs';
|
|
8
|
+
import { bodyList } from '../config/api-component.mjs';
|
|
9
|
+
import { paramsTableColumns, formdataTableColumns } from '../config/table.mjs';
|
|
10
|
+
|
|
11
|
+
"use strict";
|
|
12
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
13
|
+
...{ name: "BodyComponent" },
|
|
14
|
+
__name: "body-component",
|
|
15
|
+
props: bodyProps,
|
|
16
|
+
emits: bodyEmits,
|
|
17
|
+
setup(__props, { emit: __emit }) {
|
|
18
|
+
const props = __props;
|
|
19
|
+
const emits = __emit;
|
|
20
|
+
const bem = createNamespace("api-component");
|
|
21
|
+
const disabled = inject("disabled");
|
|
22
|
+
const bodyKey = ref(props.value.bodyParams.type);
|
|
23
|
+
const parameters = ref(
|
|
24
|
+
props.value.bodyParams.parameters
|
|
25
|
+
);
|
|
26
|
+
const jsonSchema = ref(
|
|
27
|
+
props.value.bodyParams.jsonSchema
|
|
28
|
+
);
|
|
29
|
+
const description = ref(
|
|
30
|
+
props.value.bodyParams.description
|
|
31
|
+
);
|
|
32
|
+
const handleChange = (e) => {
|
|
33
|
+
if (e === "none") {
|
|
34
|
+
parameters.value = [];
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
watch([parameters, jsonSchema, description], () => {
|
|
38
|
+
const obj = {
|
|
39
|
+
...props.value,
|
|
40
|
+
bodyParams: {
|
|
41
|
+
type: bodyKey.value,
|
|
42
|
+
parameters: parameters.value,
|
|
43
|
+
jsonSchema: jsonSchema.value,
|
|
44
|
+
description: description.value
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
emits("change", obj);
|
|
48
|
+
emits("update:value", obj);
|
|
49
|
+
});
|
|
50
|
+
return (_ctx, _cache) => {
|
|
51
|
+
const _component_ll_tabs_simple = resolveComponent("ll-tabs-simple");
|
|
52
|
+
const _component_ll_code_editor = resolveComponent("ll-code-editor");
|
|
53
|
+
return openBlock(), createElementBlock(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
class: normalizeClass(unref(bem).m("body"))
|
|
57
|
+
},
|
|
58
|
+
[
|
|
59
|
+
createVNode(_component_ll_tabs_simple, {
|
|
60
|
+
"active-key": bodyKey.value,
|
|
61
|
+
"onUpdate:activeKey": _cache[0] || (_cache[0] = ($event) => bodyKey.value = $event),
|
|
62
|
+
tabs: unref(bodyList),
|
|
63
|
+
class: normalizeClass(unref(bem).m("body-tab")),
|
|
64
|
+
disabled: unref(disabled),
|
|
65
|
+
onChange: handleChange
|
|
66
|
+
}, null, 8, ["active-key", "tabs", "class", "disabled"]),
|
|
67
|
+
createElementVNode(
|
|
68
|
+
"div",
|
|
69
|
+
{
|
|
70
|
+
class: normalizeClass(unref(bem).m("body-container"))
|
|
71
|
+
},
|
|
72
|
+
[
|
|
73
|
+
bodyKey.value === "json" ? (openBlock(), createBlock(JsonXml, {
|
|
74
|
+
key: 0,
|
|
75
|
+
value: jsonSchema.value,
|
|
76
|
+
"onUpdate:value": _cache[1] || (_cache[1] = ($event) => jsonSchema.value = $event),
|
|
77
|
+
type: bodyKey.value
|
|
78
|
+
}, null, 8, ["value", "type"])) : createCommentVNode("v-if", true),
|
|
79
|
+
bodyKey.value === "xml" ? (openBlock(), createBlock(JsonXml, {
|
|
80
|
+
key: 1,
|
|
81
|
+
value: jsonSchema.value,
|
|
82
|
+
"onUpdate:value": _cache[2] || (_cache[2] = ($event) => jsonSchema.value = $event),
|
|
83
|
+
type: bodyKey.value
|
|
84
|
+
}, null, 8, ["value", "type"])) : createCommentVNode("v-if", true),
|
|
85
|
+
bodyKey.value === "raw" ? (openBlock(), createBlock(_component_ll_code_editor, {
|
|
86
|
+
key: 2,
|
|
87
|
+
value: description.value,
|
|
88
|
+
"onUpdate:value": _cache[3] || (_cache[3] = ($event) => description.value = $event)
|
|
89
|
+
}, null, 8, ["value"])) : createCommentVNode("v-if", true),
|
|
90
|
+
bodyKey.value === "x-www-form-urlencoded" ? (openBlock(), createBlock(paramsTable, {
|
|
91
|
+
key: 3,
|
|
92
|
+
columns: unref(paramsTableColumns),
|
|
93
|
+
"data-source": parameters.value
|
|
94
|
+
}, null, 8, ["columns", "data-source"])) : createCommentVNode("v-if", true),
|
|
95
|
+
bodyKey.value === "form-data" ? (openBlock(), createBlock(paramsTable, {
|
|
96
|
+
key: 4,
|
|
97
|
+
columns: unref(formdataTableColumns),
|
|
98
|
+
"data-source": parameters.value
|
|
99
|
+
}, null, 8, ["columns", "data-source"])) : createCommentVNode("v-if", true),
|
|
100
|
+
bodyKey.value === "none" ? (openBlock(), createElementBlock(
|
|
101
|
+
"div",
|
|
102
|
+
{
|
|
103
|
+
key: 5,
|
|
104
|
+
class: normalizeClass(unref(bem).e("none"))
|
|
105
|
+
},
|
|
106
|
+
[
|
|
107
|
+
createCommentVNode(" <ll-empty>\n <template #title> \u8BE5\u8BF7\u6C42\u6CA1\u6709 Body \u4F53 </template>\n </ll-empty> "),
|
|
108
|
+
createTextVNode(" \u8BE5\u8BF7\u6C42\u6CA1\u6709 Body \u4F53 ")
|
|
109
|
+
],
|
|
110
|
+
2
|
|
111
|
+
/* CLASS */
|
|
112
|
+
)) : createCommentVNode("v-if", true)
|
|
113
|
+
],
|
|
114
|
+
2
|
|
115
|
+
/* CLASS */
|
|
116
|
+
)
|
|
117
|
+
],
|
|
118
|
+
2
|
|
119
|
+
/* CLASS */
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
export { _sfc_main as default };
|
|
126
|
+
//# sourceMappingURL=body-component.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-component.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/body-component.vue"],"sourcesContent":["<template>\n <div :class=\"bem.m('body')\">\n <ll-tabs-simple\n v-model:active-key=\"bodyKey\"\n :tabs=\"bodyList\"\n :class=\"bem.m('body-tab')\"\n :disabled=\"disabled\"\n @change=\"handleChange\"\n />\n <div :class=\"bem.m('body-container')\">\n <json-xml\n v-if=\"bodyKey === 'json'\"\n v-model:value=\"jsonSchema\"\n :type=\"bodyKey\"\n />\n <json-xml\n v-if=\"bodyKey === 'xml'\"\n v-model:value=\"jsonSchema\"\n :type=\"bodyKey\"\n />\n <ll-code-editor v-if=\"bodyKey === 'raw'\" v-model:value=\"description\" />\n <params-table\n v-if=\"bodyKey === 'x-www-form-urlencoded'\"\n :columns=\"paramsTableColumns\"\n :data-source=\"parameters\"\n />\n <params-table\n v-if=\"bodyKey === 'form-data'\"\n :columns=\"formdataTableColumns\"\n :data-source=\"parameters\"\n />\n <div v-if=\"bodyKey === 'none'\" :class=\"bem.e('none')\">\n <!-- <ll-empty>\n <template #title> 该请求没有 Body 体 </template>\n </ll-empty> -->\n 该请求没有 Body 体\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject } from 'vue'\nimport { createNamespace } from '@ll-plus/utils'\n\nimport JsonXml from './json-xml.vue'\n\nimport paramsTable from './params-table.vue'\n\nimport type { BodyParams } from '../config'\n\nimport {\n bodyProps,\n bodyEmits,\n formdataTableColumns,\n paramsTableColumns,\n bodyList\n} from '../config'\n\ndefineOptions({ name: 'BodyComponent' })\n\nconst props = defineProps(bodyProps)\n\nconst emits = defineEmits(bodyEmits)\n\nconst bem = createNamespace('api-component')\n\nconst disabled = inject('disabled')\n\nconst bodyKey = ref<BodyParams['type']>(props.value.bodyParams.type)\n\nconst parameters = ref<BodyParams['parameters']>(\n props.value.bodyParams.parameters\n)\n\nconst jsonSchema = ref<BodyParams['jsonSchema']>(\n props.value.bodyParams.jsonSchema\n)\n\nconst description = ref<BodyParams['description']>(\n props.value.bodyParams.description\n)\n\nconst handleChange = e => {\n if (e === 'none') {\n parameters.value = []\n }\n}\n\nwatch([parameters, jsonSchema, description], () => {\n const obj = {\n ...props.value,\n bodyParams: {\n type: bodyKey.value,\n parameters: parameters.value,\n jsonSchema: jsonSchema.value,\n description: description.value\n }\n }\n emits('change', obj)\n emits('update:value', obj)\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA6DA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAEd,IAAM,MAAA,GAAA,GAAM,gBAAgB,eAAe,CAAA,CAAA;AAE3C,IAAM,MAAA,QAAA,GAAW,OAAO,UAAU,CAAA,CAAA;AAElC,IAAA,MAAM,OAAU,GAAA,GAAA,CAAwB,KAAM,CAAA,KAAA,CAAM,WAAW,IAAI,CAAA,CAAA;AAEnE,IAAA,MAAM,UAAa,GAAA,GAAA;AAAA,MACjB,KAAA,CAAM,MAAM,UAAW,CAAA,UAAA;AAAA,KACzB,CAAA;AAEA,IAAA,MAAM,UAAa,GAAA,GAAA;AAAA,MACjB,KAAA,CAAM,MAAM,UAAW,CAAA,UAAA;AAAA,KACzB,CAAA;AAEA,IAAA,MAAM,WAAc,GAAA,GAAA;AAAA,MAClB,KAAA,CAAM,MAAM,UAAW,CAAA,WAAA;AAAA,KACzB,CAAA;AAEA,IAAA,MAAM,eAAe,CAAK,CAAA,KAAA;AACxB,MAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,QAAA,UAAA,CAAW,QAAQ,EAAC,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAEA,IAAA,KAAA,CAAM,CAAC,UAAA,EAAY,UAAY,EAAA,WAAW,GAAG,MAAM;AACjD,MAAA,MAAM,GAAM,GAAA;AAAA,QACV,GAAG,KAAM,CAAA,KAAA;AAAA,QACT,UAAY,EAAA;AAAA,UACV,MAAM,OAAQ,CAAA,KAAA;AAAA,UACd,YAAY,UAAW,CAAA,KAAA;AAAA,UACvB,YAAY,UAAW,CAAA,KAAA;AAAA,UACvB,aAAa,WAAY,CAAA,KAAA;AAAA,SAC3B;AAAA,OACF,CAAA;AACA,MAAA,KAAA,CAAM,UAAU,GAAG,CAAA,CAAA;AACnB,MAAA,KAAA,CAAM,gBAAgB,GAAG,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
readonly data: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem) | ((new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem))[], unknown, unknown, () => void, boolean>;
|
|
3
|
+
readonly list: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]) | ((new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
3
4
|
readonly parentData: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem) | ((new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem))[], unknown, unknown, () => null, boolean>;
|
|
4
5
|
readonly layer: import("ll-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
|
|
5
6
|
readonly treeKey: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
6
7
|
}, any, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
-
change: () => boolean;
|
|
8
|
+
change: (val: import("../config").IJsonXmlItem) => boolean;
|
|
8
9
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
10
|
readonly data: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem) | ((new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem))[], unknown, unknown, () => void, boolean>;
|
|
11
|
+
readonly list: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]) | ((new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
10
12
|
readonly parentData: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem) | ((new (...args: any[]) => import("../config").IJsonXmlItem) | (() => import("../config").IJsonXmlItem))[], unknown, unknown, () => null, boolean>;
|
|
11
13
|
readonly layer: import("ll-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
|
|
12
14
|
readonly treeKey: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
|
|
13
15
|
}>> & {
|
|
14
|
-
onChange?: (() => any) | undefined;
|
|
16
|
+
onChange?: ((val: import("../config").IJsonXmlItem) => any) | undefined;
|
|
15
17
|
}, {
|
|
16
18
|
readonly data: import("../config").IJsonXmlItem;
|
|
19
|
+
readonly list: import("../config").IJsonXmlItem[];
|
|
17
20
|
readonly parentData: import("../config").IJsonXmlItem;
|
|
18
21
|
readonly layer: number;
|
|
19
22
|
readonly treeKey: string;
|
|
@@ -107,13 +107,18 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
107
107
|
const { type, parentData: parentData2, innerData: innerData2 } = item;
|
|
108
108
|
handleAdd(type, parentData2, innerData2);
|
|
109
109
|
};
|
|
110
|
-
const handleRowChange = () => {
|
|
111
|
-
|
|
110
|
+
const handleRowChange = (child) => {
|
|
111
|
+
if (innerData.value.children) {
|
|
112
|
+
const index = innerData.value.children.findIndex(
|
|
113
|
+
(item) => item.key === child.key
|
|
114
|
+
);
|
|
115
|
+
innerData.value.children[index] = child;
|
|
116
|
+
}
|
|
112
117
|
};
|
|
113
118
|
watch(
|
|
114
119
|
innerData,
|
|
115
120
|
() => {
|
|
116
|
-
emits("change");
|
|
121
|
+
emits("change", innerData.value);
|
|
117
122
|
},
|
|
118
123
|
{
|
|
119
124
|
deep: true
|
|
@@ -440,11 +445,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
440
445
|
return openBlock(), createBlock(TableRow, {
|
|
441
446
|
key: index,
|
|
442
447
|
"parent-data": innerData.value,
|
|
448
|
+
list: innerData.value.children,
|
|
443
449
|
data: child,
|
|
444
450
|
layer: props.layer + 1,
|
|
445
451
|
"tree-key": props.treeKey + "-" + (index + 1),
|
|
446
452
|
onChange: handleRowChange
|
|
447
|
-
}, null, 8, ["parent-data", "data", "layer", "tree-key"]);
|
|
453
|
+
}, null, 8, ["parent-data", "list", "data", "layer", "tree-key"]);
|
|
448
454
|
}),
|
|
449
455
|
128
|
|
450
456
|
/* KEYED_FRAGMENT */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-xml-table-row.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml-table-row.vue"],"sourcesContent":["<template>\n <a-row :gutter=\"20\" :class=\"bem.e('table-row')\">\n <a-col style=\"display: flex\" :span=\"7\" :class=\"bem.e('table-col')\">\n <p :style=\"{ width: 10 * props.layer + 'px' }\" />\n <div style=\"margin-right: 30px\" :class=\"bem.m('table-row-icon')\">\n <ll-button\n v-if=\"innerData.type === 'object' || innerData.type === 'array'\"\n type=\"link\"\n style=\"width: 10px\"\n :disabled=\"disabled\"\n @click=\"expanded = !expanded\"\n >\n <ll-icon\n v-if=\"!expanded\"\n style=\"font-size: 14px\"\n icon-name=\"icon-list-expand\"\n />\n <ll-icon\n v-else\n style=\"font-size: 14px\"\n icon-name=\"icon-list-retract\"\n />\n </ll-button>\n </div>\n\n <div v-if=\"!props.parentData\" :class=\"bem.m('table-row-tag')\">根节点</div>\n <template v-else>\n <div\n v-if=\"props.parentData.type === 'array'\"\n :class=\"bem.m('table-row-tag')\"\n >\n ITEMS\n </div>\n <ll-input\n v-if=\"props.parentData.type === 'object'\"\n v-model:value=\"innerData.name\"\n :disabled=\"disabled\"\n placeholder=\"添加字段名\"\n :bordered=\"false\"\n ></ll-input>\n </template>\n </a-col>\n <a-col :span=\"3\" :class=\"bem.e('table-col')\">\n <ll-select\n v-model:value=\"innerData.type\"\n :options=\"jsonXmlTypeOptions\"\n :disabled=\"disabled\"\n style=\"width: 100%\"\n @change=\"handleChange\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <click-input\n v-model:value=\"innerData.mock\"\n placeholder=\"Mock\"\n :disabled=\"innerData.type === 'object' || disabled\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <ll-input\n v-model:value=\"innerData.chineseName\"\n :disabled=\"disabled\"\n placeholder=\"中文名\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <click-input\n v-model:value=\"innerData.description\"\n :disabled=\"disabled\"\n placeholder=\"说明\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"2\">\n <div :class=\"bem.e('table-operation')\">\n <ll-tooltip\n v-if=\"\n (props.parentData &&\n props.parentData.type === 'object' &&\n innerData.type !== 'object') ||\n (!props.parentData && innerData.type === 'object')\n \"\n :tip=\"\n getTip(parentData, innerData) === 'child'\n ? '添加子节点'\n : '添加相邻节点'\n \"\n >\n <ll-button\n type=\"link\"\n :disabled=\"disabled\"\n :class=\"bem.m('table-icon')\"\n @click=\"\n handleAdd(\n getTip(parentData, innerData),\n props.parentData,\n innerData\n )\n \"\n >\n <ll-icon icon-name=\"icon-list-add\" />\n </ll-button>\n </ll-tooltip>\n\n <ll-dropdown\n :dropdown-items=\"customOverlay(props.parentData, innerData)\"\n placement=\"bottomRight\"\n @claim-selected=\"handleClaimSelected\"\n >\n <ll-button\n v-if=\"\n props.parentData &&\n props.parentData.type === 'object' &&\n innerData.type === 'object'\n \"\n :class=\"bem.m('table-icon')\"\n :disabled=\"disabled\"\n type=\"link\"\n >\n <ll-icon icon-name=\"icon-list-add\" />\n </ll-button>\n </ll-dropdown>\n\n <a-popconfirm\n v-if=\"props.parentData && props.parentData.type !== 'array'\"\n title=\"你确定要移除吗?\"\n ok-text=\"确认\"\n cancel-text=\"取消\"\n placement=\"topRight\"\n :overlay-class-name=\"bem.e('popconfirm')\"\n :disabled=\"disabled\"\n @confirm=\"handleConfirm(props.parentData, innerData)\"\n >\n <ll-button\n type=\"link\"\n :disabled=\"disabled\"\n :class=\"bem.m('table-icon')\"\n >\n <ll-icon icon-name=\"icon-remove\" />\n </ll-button>\n </a-popconfirm>\n </div>\n </a-col>\n </a-row>\n\n <template v-if=\"expanded\">\n <a-row\n v-if=\"\n innerData.type === 'object' &&\n innerData.children &&\n innerData.children.length === 0\n \"\n :gutter=\"20\"\n :class=\"bem.e('table-row')\"\n >\n <a-col style=\"display: flex\" :span=\"7\" :class=\"bem.e('table-col')\">\n <p :style=\"{ width: 10 * props.layer + 'px' }\" />\n <div style=\"margin-right: 30px\" :class=\"bem.m('table-row-icon')\" />\n <ll-input\n v-model:value=\"addValue\"\n placeholder=\"添加字段名\"\n :bordered=\"false\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n />\n </a-col>\n </a-row>\n\n <template v-if=\"innerData.children && innerData.children.length > 0\">\n <template v-for=\"(child, index) in innerData.children\" :key=\"index\">\n <table-row\n :parent-data=\"innerData\"\n :data=\"child\"\n :layer=\"props.layer + 1\"\n :tree-key=\"props.treeKey + '-' + (index + 1)\"\n @change=\"handleRowChange\"\n />\n </template>\n </template>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport {\n jsonXmlTypeOptions,\n jsonXmlTableRowProps,\n jsonXmlTableRowEmits\n} from '../config'\n\nimport TableRow from './json-xml-table-row.vue'\n\nimport ClickInput from './click-input.vue'\n\ndefineOptions({ name: 'LlJsonXmlTableRow' })\n\nconst bem = createNamespace('json-xml')\n\nconst props = defineProps(jsonXmlTableRowProps)\n\nconst emits = defineEmits(jsonXmlTableRowEmits)\n\nconst disabled = inject('disabled') as boolean\n\nconst innerData = ref(props.data)\n\nconst parentData = ref(props.parentData)\n\nconst expanded = ref(true)\n\nconst addValue = ref('')\n\nconst customOverlay = (parentData, innerData) => [\n {\n label: '添加子节点',\n type: 'child',\n parentData,\n innerData\n },\n {\n label: '添加相邻节点',\n type: 'next',\n parentData,\n innerData\n }\n]\n\nconst getTip = (parentData, innerData) => {\n if (\n !parentData ||\n (parentData.type === 'array' && innerData.type === 'object')\n ) {\n return 'child'\n }\n if (parentData.type === 'object' && innerData.type !== 'object') {\n return 'next'\n }\n}\n\nconst handleChange = () => {\n if (innerData.value.type === 'object' || innerData.value.type === 'array') {\n innerData.value.children = []\n if (innerData.value.type === 'array') {\n innerData.value.children[0] = {\n key: props.treeKey + '-1',\n name: 'ITEMS',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n }\n }\n } else {\n delete innerData.value.children\n }\n}\n\nconst handleConfirm = (parentData, innerData) => {\n const findIndex = parentData.children.findIndex(\n item => item.key === innerData.key\n )\n parentData.children.splice(findIndex, 1)\n}\n\nconst handleInput = () => {\n innerData.value.children = []\n innerData.value.children[0] = {\n key: props.treeKey + '-1',\n name: addValue.value,\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n }\n addValue.value = ''\n}\n\nconst handleAdd = (type, parentData, innerData) => {\n if (type === 'next') {\n parentData.children.push({\n key: `${parentData.children.length + 1}`,\n name: '',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n })\n } else {\n innerData.children.push({\n key: props.treeKey + `${innerData.children.length + 1}`,\n name: '',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n })\n }\n}\nconst handleClaimSelected = item => {\n const { type, parentData, innerData } = item\n handleAdd(type, parentData, innerData)\n}\n\nconst handleRowChange = () => {\n emits('change')\n}\nwatch(\n innerData,\n () => {\n emits('change')\n },\n {\n deep: true\n }\n)\n</script>\n"],"names":["parentData","innerData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-xml-table-row.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml-table-row.vue"],"sourcesContent":["<template>\n <a-row :gutter=\"20\" :class=\"bem.e('table-row')\">\n <a-col style=\"display: flex\" :span=\"7\" :class=\"bem.e('table-col')\">\n <p :style=\"{ width: 10 * props.layer + 'px' }\" />\n <div style=\"margin-right: 30px\" :class=\"bem.m('table-row-icon')\">\n <ll-button\n v-if=\"innerData.type === 'object' || innerData.type === 'array'\"\n type=\"link\"\n style=\"width: 10px\"\n :disabled=\"disabled\"\n @click=\"expanded = !expanded\"\n >\n <ll-icon\n v-if=\"!expanded\"\n style=\"font-size: 14px\"\n icon-name=\"icon-list-expand\"\n />\n <ll-icon\n v-else\n style=\"font-size: 14px\"\n icon-name=\"icon-list-retract\"\n />\n </ll-button>\n </div>\n\n <div v-if=\"!props.parentData\" :class=\"bem.m('table-row-tag')\">根节点</div>\n <template v-else>\n <div\n v-if=\"props.parentData.type === 'array'\"\n :class=\"bem.m('table-row-tag')\"\n >\n ITEMS\n </div>\n <ll-input\n v-if=\"props.parentData.type === 'object'\"\n v-model:value=\"innerData.name\"\n :disabled=\"disabled\"\n placeholder=\"添加字段名\"\n :bordered=\"false\"\n ></ll-input>\n </template>\n </a-col>\n <a-col :span=\"3\" :class=\"bem.e('table-col')\">\n <ll-select\n v-model:value=\"innerData.type\"\n :options=\"jsonXmlTypeOptions\"\n :disabled=\"disabled\"\n style=\"width: 100%\"\n @change=\"handleChange\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <click-input\n v-model:value=\"innerData.mock\"\n placeholder=\"Mock\"\n :disabled=\"innerData.type === 'object' || disabled\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <ll-input\n v-model:value=\"innerData.chineseName\"\n :disabled=\"disabled\"\n placeholder=\"中文名\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"4\" :class=\"bem.e('table-col')\">\n <click-input\n v-model:value=\"innerData.description\"\n :disabled=\"disabled\"\n placeholder=\"说明\"\n style=\"width: 100%\"\n />\n </a-col>\n <a-col :span=\"2\">\n <div :class=\"bem.e('table-operation')\">\n <ll-tooltip\n v-if=\"\n (props.parentData &&\n props.parentData.type === 'object' &&\n innerData.type !== 'object') ||\n (!props.parentData && innerData.type === 'object')\n \"\n :tip=\"\n getTip(parentData, innerData) === 'child'\n ? '添加子节点'\n : '添加相邻节点'\n \"\n >\n <ll-button\n type=\"link\"\n :disabled=\"disabled\"\n :class=\"bem.m('table-icon')\"\n @click=\"\n handleAdd(\n getTip(parentData, innerData),\n props.parentData,\n innerData\n )\n \"\n >\n <ll-icon icon-name=\"icon-list-add\" />\n </ll-button>\n </ll-tooltip>\n\n <ll-dropdown\n :dropdown-items=\"customOverlay(props.parentData, innerData)\"\n placement=\"bottomRight\"\n @claim-selected=\"handleClaimSelected\"\n >\n <ll-button\n v-if=\"\n props.parentData &&\n props.parentData.type === 'object' &&\n innerData.type === 'object'\n \"\n :class=\"bem.m('table-icon')\"\n :disabled=\"disabled\"\n type=\"link\"\n >\n <ll-icon icon-name=\"icon-list-add\" />\n </ll-button>\n </ll-dropdown>\n\n <a-popconfirm\n v-if=\"props.parentData && props.parentData.type !== 'array'\"\n title=\"你确定要移除吗?\"\n ok-text=\"确认\"\n cancel-text=\"取消\"\n placement=\"topRight\"\n :overlay-class-name=\"bem.e('popconfirm')\"\n :disabled=\"disabled\"\n @confirm=\"handleConfirm(props.parentData, innerData)\"\n >\n <ll-button\n type=\"link\"\n :disabled=\"disabled\"\n :class=\"bem.m('table-icon')\"\n >\n <ll-icon icon-name=\"icon-remove\" />\n </ll-button>\n </a-popconfirm>\n </div>\n </a-col>\n </a-row>\n\n <template v-if=\"expanded\">\n <a-row\n v-if=\"\n innerData.type === 'object' &&\n innerData.children &&\n innerData.children.length === 0\n \"\n :gutter=\"20\"\n :class=\"bem.e('table-row')\"\n >\n <a-col style=\"display: flex\" :span=\"7\" :class=\"bem.e('table-col')\">\n <p :style=\"{ width: 10 * props.layer + 'px' }\" />\n <div style=\"margin-right: 30px\" :class=\"bem.m('table-row-icon')\" />\n <ll-input\n v-model:value=\"addValue\"\n placeholder=\"添加字段名\"\n :bordered=\"false\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n />\n </a-col>\n </a-row>\n\n <template v-if=\"innerData.children && innerData.children.length > 0\">\n <template v-for=\"(child, index) in innerData.children\" :key=\"index\">\n <table-row\n :parent-data=\"innerData\"\n :list=\"innerData.children\"\n :data=\"child\"\n :layer=\"props.layer + 1\"\n :tree-key=\"props.treeKey + '-' + (index + 1)\"\n @change=\"handleRowChange\"\n />\n </template>\n </template>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport {\n jsonXmlTypeOptions,\n jsonXmlTableRowProps,\n jsonXmlTableRowEmits\n} from '../config'\n\nimport TableRow from './json-xml-table-row.vue'\n\nimport ClickInput from './click-input.vue'\n\ndefineOptions({ name: 'LlJsonXmlTableRow' })\n\nconst bem = createNamespace('json-xml')\n\nconst props = defineProps(jsonXmlTableRowProps)\n\nconst emits = defineEmits(jsonXmlTableRowEmits)\n\nconst disabled = inject('disabled') as boolean\n\nconst innerData = ref(props.data)\n\nconst parentData = ref(props.parentData)\n\nconst expanded = ref(true)\n\nconst addValue = ref('')\n\nconst customOverlay = (parentData, innerData) => [\n {\n label: '添加子节点',\n type: 'child',\n parentData,\n innerData\n },\n {\n label: '添加相邻节点',\n type: 'next',\n parentData,\n innerData\n }\n]\n\nconst getTip = (parentData, innerData) => {\n if (\n !parentData ||\n (parentData.type === 'array' && innerData.type === 'object')\n ) {\n return 'child'\n }\n if (parentData.type === 'object' && innerData.type !== 'object') {\n return 'next'\n }\n}\n\nconst handleChange = () => {\n if (innerData.value.type === 'object' || innerData.value.type === 'array') {\n innerData.value.children = []\n if (innerData.value.type === 'array') {\n innerData.value.children[0] = {\n key: props.treeKey + '-1',\n name: 'ITEMS',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n }\n }\n } else {\n delete innerData.value.children\n }\n}\n\nconst handleConfirm = (parentData, innerData) => {\n const findIndex = parentData.children.findIndex(\n item => item.key === innerData.key\n )\n parentData.children.splice(findIndex, 1)\n}\n\nconst handleInput = () => {\n innerData.value.children = []\n innerData.value.children[0] = {\n key: props.treeKey + '-1',\n name: addValue.value,\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n }\n addValue.value = ''\n}\n\nconst handleAdd = (type, parentData, innerData) => {\n if (type === 'next') {\n parentData.children.push({\n key: `${parentData.children.length + 1}`,\n name: '',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n })\n } else {\n innerData.children.push({\n key: props.treeKey + `${innerData.children.length + 1}`,\n name: '',\n type: 'string',\n value: '',\n chineseName: '',\n description: '',\n mock: ''\n })\n }\n}\nconst handleClaimSelected = item => {\n const { type, parentData, innerData } = item\n handleAdd(type, parentData, innerData)\n}\n\nconst handleRowChange = child => {\n if (innerData.value.children) {\n const index = innerData.value.children.findIndex(\n item => item.key === child.key\n )\n innerData.value.children[index] = child\n }\n}\nwatch(\n innerData,\n () => {\n emits('change', innerData.value)\n },\n {\n deep: true\n }\n)\n</script>\n"],"names":["parentData","innerData"],"mappings":";;;;;;;;;;;;;;;AA0MA,IAAM,MAAA,GAAA,GAAM,gBAAgB,UAAU,CAAA,CAAA;AAEtC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAEd,IAAM,MAAA,QAAA,GAAW,OAAO,UAAU,CAAA,CAAA;AAElC,IAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAEhC,IAAM,MAAA,UAAA,GAAa,GAAI,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAEvC,IAAM,MAAA,QAAA,GAAW,IAAI,IAAI,CAAA,CAAA;AAEzB,IAAM,MAAA,QAAA,GAAW,IAAI,EAAE,CAAA,CAAA;AAEvB,IAAM,MAAA,aAAA,GAAgB,CAACA,WAAAA,EAAYC,UAAc,KAAA;AAAA,MAC/C;AAAA,QACE,KAAO,EAAA,gCAAA;AAAA,QACP,IAAM,EAAA,OAAA;AAAA,QACN,UAAAD,EAAAA,WAAAA;AAAA,QACA,SAAAC,EAAAA,UAAAA;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAO,EAAA,sCAAA;AAAA,QACP,IAAM,EAAA,MAAA;AAAA,QACN,UAAAD,EAAAA,WAAAA;AAAA,QACA,SAAAC,EAAAA,UAAAA;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,MAAA,GAAS,CAACD,WAAAA,EAAYC,UAAc,KAAA;AACxC,MAAA,IACE,CAACD,WACAA,IAAAA,WAAAA,CAAW,SAAS,OAAWC,IAAAA,UAAAA,CAAU,SAAS,QACnD,EAAA;AACA,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAID,WAAW,CAAA,IAAA,KAAS,QAAYC,IAAAA,UAAAA,CAAU,SAAS,QAAU,EAAA;AAC/D,QAAO,OAAA,MAAA,CAAA;AAAA,OACT;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,UAAU,KAAM,CAAA,IAAA,KAAS,YAAY,SAAU,CAAA,KAAA,CAAM,SAAS,OAAS,EAAA;AACzE,QAAU,SAAA,CAAA,KAAA,CAAM,WAAW,EAAC,CAAA;AAC5B,QAAI,IAAA,SAAA,CAAU,KAAM,CAAA,IAAA,KAAS,OAAS,EAAA;AACpC,UAAU,SAAA,CAAA,KAAA,CAAM,QAAS,CAAA,CAAC,CAAI,GAAA;AAAA,YAC5B,GAAA,EAAK,MAAM,OAAU,GAAA,IAAA;AAAA,YACrB,IAAM,EAAA,OAAA;AAAA,YACN,IAAM,EAAA,QAAA;AAAA,YACN,KAAO,EAAA,EAAA;AAAA,YACP,WAAa,EAAA,EAAA;AAAA,YACb,WAAa,EAAA,EAAA;AAAA,YACb,IAAM,EAAA,EAAA;AAAA,WACR,CAAA;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAA,OAAO,UAAU,KAAM,CAAA,QAAA,CAAA;AAAA,OACzB;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,CAACD,WAAAA,EAAYC,UAAc,KAAA;AAC/C,MAAM,MAAA,SAAA,GAAYD,YAAW,QAAS,CAAA,SAAA;AAAA,QACpC,CAAA,IAAA,KAAQ,IAAK,CAAA,GAAA,KAAQC,UAAU,CAAA,GAAA;AAAA,OACjC,CAAA;AACA,MAAAD,WAAW,CAAA,QAAA,CAAS,MAAO,CAAA,SAAA,EAAW,CAAC,CAAA,CAAA;AAAA,KACzC,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAU,SAAA,CAAA,KAAA,CAAM,WAAW,EAAC,CAAA;AAC5B,MAAU,SAAA,CAAA,KAAA,CAAM,QAAS,CAAA,CAAC,CAAI,GAAA;AAAA,QAC5B,GAAA,EAAK,MAAM,OAAU,GAAA,IAAA;AAAA,QACrB,MAAM,QAAS,CAAA,KAAA;AAAA,QACf,IAAM,EAAA,QAAA;AAAA,QACN,KAAO,EAAA,EAAA;AAAA,QACP,WAAa,EAAA,EAAA;AAAA,QACb,WAAa,EAAA,EAAA;AAAA,QACb,IAAM,EAAA,EAAA;AAAA,OACR,CAAA;AACA,MAAA,QAAA,CAAS,KAAQ,GAAA,EAAA,CAAA;AAAA,KACnB,CAAA;AAEA,IAAA,MAAM,SAAY,GAAA,CAAC,IAAMA,EAAAA,WAAAA,EAAYC,UAAc,KAAA;AACjD,MAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,QAAAD,WAAAA,CAAW,SAAS,IAAK,CAAA;AAAA,UACvB,GAAK,EAAA,CAAA,EAAGA,WAAW,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA,CAAA;AAAA,UACtC,IAAM,EAAA,EAAA;AAAA,UACN,IAAM,EAAA,QAAA;AAAA,UACN,KAAO,EAAA,EAAA;AAAA,UACP,WAAa,EAAA,EAAA;AAAA,UACb,WAAa,EAAA,EAAA;AAAA,UACb,IAAM,EAAA,EAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAAC,UAAAA,CAAU,SAAS,IAAK,CAAA;AAAA,UACtB,KAAK,KAAM,CAAA,OAAA,GAAU,GAAGA,UAAU,CAAA,QAAA,CAAS,SAAS,CAAC,CAAA,CAAA;AAAA,UACrD,IAAM,EAAA,EAAA;AAAA,UACN,IAAM,EAAA,QAAA;AAAA,UACN,KAAO,EAAA,EAAA;AAAA,UACP,WAAa,EAAA,EAAA;AAAA,UACb,WAAa,EAAA,EAAA;AAAA,UACb,IAAM,EAAA,EAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AACA,IAAA,MAAM,sBAAsB,CAAQ,IAAA,KAAA;AAClC,MAAA,MAAM,EAAE,IAAM,EAAA,UAAA,EAAAD,WAAY,EAAA,SAAA,EAAAC,YAAc,GAAA,IAAA,CAAA;AACxC,MAAU,SAAA,CAAA,IAAA,EAAMD,aAAYC,UAAS,CAAA,CAAA;AAAA,KACvC,CAAA;AAEA,IAAA,MAAM,kBAAkB,CAAS,KAAA,KAAA;AAC/B,MAAI,IAAA,SAAA,CAAU,MAAM,QAAU,EAAA;AAC5B,QAAM,MAAA,KAAA,GAAQ,SAAU,CAAA,KAAA,CAAM,QAAS,CAAA,SAAA;AAAA,UACrC,CAAA,IAAA,KAAQ,IAAK,CAAA,GAAA,KAAQ,KAAM,CAAA,GAAA;AAAA,SAC7B,CAAA;AACA,QAAU,SAAA,CAAA,KAAA,CAAM,QAAS,CAAA,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,OACpC;AAAA,KACF,CAAA;AACA,IAAA,KAAA;AAAA,MACE,SAAA;AAAA,MACA,MAAM;AACJ,QAAM,KAAA,CAAA,QAAA,EAAU,UAAU,KAAK,CAAA,CAAA;AAAA,OACjC;AAAA,MACA;AAAA,QACE,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
readonly dataSource: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]) | ((new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
3
|
+
readonly type: {
|
|
4
|
+
readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>>;
|
|
5
|
+
readonly required: false;
|
|
6
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
7
|
+
__epPropKey: true;
|
|
8
|
+
};
|
|
3
9
|
}, {
|
|
4
10
|
bem: {
|
|
5
11
|
b: (blockSuffix?: string) => string;
|
|
@@ -13,15 +19,22 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
13
19
|
};
|
|
14
20
|
props: import("@vue/shared").LooseRequired<{
|
|
15
21
|
readonly dataSource: import("../config").IJsonXmlItem[];
|
|
22
|
+
readonly type?: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown> | undefined;
|
|
16
23
|
readonly onChange?: ((value: any) => any) | undefined;
|
|
17
24
|
} & {}>;
|
|
18
25
|
emits: (event: "change", value: any) => void;
|
|
19
|
-
handleChange: (
|
|
26
|
+
handleChange: (child: any) => void;
|
|
20
27
|
TableRow: any;
|
|
21
28
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
22
29
|
change: (value: any) => boolean;
|
|
23
30
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
24
31
|
readonly dataSource: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]) | ((new (...args: any[]) => import("../config").IJsonXmlItem[]) | (() => import("../config").IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
32
|
+
readonly type: {
|
|
33
|
+
readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>>;
|
|
34
|
+
readonly required: false;
|
|
35
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
36
|
+
__epPropKey: true;
|
|
37
|
+
};
|
|
25
38
|
}>> & {
|
|
26
39
|
onChange?: ((value: any) => any) | undefined;
|
|
27
40
|
}, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, createTextVNode, createElementVNode, Fragment, renderList, createBlock } from 'vue';
|
|
1
|
+
import { defineComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, createCommentVNode, createVNode, withCtx, createTextVNode, createElementVNode, Fragment, renderList, createBlock } from 'vue';
|
|
2
2
|
import TableRow from './json-xml-table-row.vue.mjs';
|
|
3
3
|
import '../../../../utils/index.mjs';
|
|
4
4
|
import '../config/index.mjs';
|
|
@@ -15,8 +15,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15
15
|
const bem = createNamespace("json-xml");
|
|
16
16
|
const props = __props;
|
|
17
17
|
const emits = __emit;
|
|
18
|
-
const handleChange = (
|
|
19
|
-
emits("change",
|
|
18
|
+
const handleChange = (child) => {
|
|
19
|
+
emits("change", [child]);
|
|
20
20
|
};
|
|
21
21
|
return (_ctx, _cache) => {
|
|
22
22
|
const _component_a_col = resolveComponent("a-col");
|
|
@@ -27,6 +27,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
27
27
|
class: normalizeClass(unref(bem).e("table"))
|
|
28
28
|
},
|
|
29
29
|
[
|
|
30
|
+
props.type === "xml" ? (openBlock(), createElementBlock(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
key: 0,
|
|
34
|
+
class: normalizeClass(unref(bem).m("xml"))
|
|
35
|
+
},
|
|
36
|
+
toDisplayString('<?xml version="1.0" encoding="UTF-8"?>'),
|
|
37
|
+
2
|
|
38
|
+
/* CLASS */
|
|
39
|
+
)) : createCommentVNode("v-if", true),
|
|
30
40
|
createVNode(_component_a_row, {
|
|
31
41
|
class: normalizeClass(unref(bem).m("table-header")),
|
|
32
42
|
gutter: 20
|
|
@@ -93,10 +103,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
93
103
|
renderList(props.dataSource, (item, index) => {
|
|
94
104
|
return openBlock(), createBlock(TableRow, {
|
|
95
105
|
key: index,
|
|
106
|
+
list: props.dataSource,
|
|
96
107
|
data: item,
|
|
97
108
|
"tree-key": (index + 1).toString(),
|
|
98
|
-
onChange:
|
|
99
|
-
}, null, 8, ["data", "tree-key"]);
|
|
109
|
+
onChange: handleChange
|
|
110
|
+
}, null, 8, ["list", "data", "tree-key"]);
|
|
100
111
|
}),
|
|
101
112
|
128
|
|
102
113
|
/* KEYED_FRAGMENT */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-xml-table.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml-table.vue"],"sourcesContent":["<template>\n <div :class=\"bem.e('table')\">\n <a-row :class=\"bem.m('table-header')\" :gutter=\"20\">\n <a-col :span=\"7\" style=\"padding-left: 60px\"> 名称 </a-col>\n <a-col :span=\"3\"> 类型 </a-col>\n <a-col :span=\"4\"> Mock </a-col>\n <a-col :span=\"4\"> 中文名 </a-col>\n <a-col :span=\"4\"> 说明 </a-col>\n <a-col :span=\"2\"> 操作 </a-col>\n </a-row>\n <div :class=\"bem.m('table-body')\">\n <table-row\n v-for=\"(item, index) in props.dataSource\"\n :key=\"index\"\n :data=\"item\"\n :tree-key=\"(index + 1).toString()\"\n @change=\"handleChange
|
|
1
|
+
{"version":3,"file":"json-xml-table.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml-table.vue"],"sourcesContent":["<template>\n <div :class=\"bem.e('table')\">\n <div v-if=\"props.type === 'xml'\" :class=\"bem.m('xml')\">\n {{'<?xml version=\"1.0\" encoding=\"UTF-8\"?>'}}\n </div>\n <a-row :class=\"bem.m('table-header')\" :gutter=\"20\">\n <a-col :span=\"7\" style=\"padding-left: 60px\"> 名称 </a-col>\n <a-col :span=\"3\"> 类型 </a-col>\n <a-col :span=\"4\"> Mock </a-col>\n <a-col :span=\"4\"> 中文名 </a-col>\n <a-col :span=\"4\"> 说明 </a-col>\n <a-col :span=\"2\"> 操作 </a-col>\n </a-row>\n <div :class=\"bem.m('table-body')\">\n <table-row\n v-for=\"(item, index) in props.dataSource\"\n :key=\"index\"\n :list=\"props.dataSource\"\n :data=\"item\"\n :tree-key=\"(index + 1).toString()\"\n @change=\"handleChange\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport TableRow from './json-xml-table-row.vue'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport { jsonXmlTableProps, jsonXmlTableEmits } from '../config'\n\ndefineOptions({ name: 'LlJsonXmlTable' })\n\nconst bem = createNamespace('json-xml')\n\nconst props = defineProps(jsonXmlTableProps)\n\nconst emits = defineEmits(jsonXmlTableEmits)\nconst handleChange = child => {\n emits('change', [child])\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmCA,IAAM,MAAA,GAAA,GAAM,gBAAgB,UAAU,CAAA,CAAA;AAEtC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AACd,IAAA,MAAM,eAAe,CAAS,KAAA,KAAA;AAC5B,MAAM,KAAA,CAAA,QAAA,EAAU,CAAC,KAAK,CAAC,CAAA,CAAA;AAAA,KACzB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { type IJsonXmlItem } from '../config';
|
|
2
2
|
declare const _default: import("vue").DefineComponent<{
|
|
3
3
|
readonly value: import("ll-plus/es/utils").EpPropFinalized<ObjectConstructor, unknown, unknown, () => void, boolean>;
|
|
4
|
+
readonly type: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown, "json", boolean>;
|
|
4
5
|
}, {
|
|
5
6
|
props: import("@vue/shared").LooseRequired<{
|
|
7
|
+
readonly type: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>;
|
|
6
8
|
readonly value: Record<string, any>;
|
|
7
9
|
readonly "onUpdate:value"?: ((value: any) => any) | undefined;
|
|
8
10
|
} & {}>;
|
|
@@ -17,7 +19,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
17
19
|
bem: (blockSuffix: string, element: string, modifier: string) => string;
|
|
18
20
|
is: (name?: string) => string;
|
|
19
21
|
};
|
|
20
|
-
disabled:
|
|
22
|
+
disabled: boolean;
|
|
21
23
|
type: import("vue").Ref<string>;
|
|
22
24
|
innerValue: import("vue").Ref<any>;
|
|
23
25
|
dataSource: import("vue").Ref<{
|
|
@@ -45,6 +47,12 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
45
47
|
}[];
|
|
46
48
|
TreeTable: import("vue").DefineComponent<{
|
|
47
49
|
readonly dataSource: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => IJsonXmlItem[]) | (() => IJsonXmlItem[]) | ((new (...args: any[]) => IJsonXmlItem[]) | (() => IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
50
|
+
readonly type: {
|
|
51
|
+
readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>>;
|
|
52
|
+
readonly required: false;
|
|
53
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
54
|
+
__epPropKey: true;
|
|
55
|
+
};
|
|
48
56
|
}, {
|
|
49
57
|
bem: {
|
|
50
58
|
b: (blockSuffix?: string) => string;
|
|
@@ -58,15 +66,22 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
58
66
|
};
|
|
59
67
|
props: import("@vue/shared").LooseRequired<{
|
|
60
68
|
readonly dataSource: IJsonXmlItem[];
|
|
69
|
+
readonly type?: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown> | undefined;
|
|
61
70
|
readonly onChange?: ((value: any) => any) | undefined;
|
|
62
71
|
} & {}>;
|
|
63
72
|
emits: (event: "change", value: any) => void;
|
|
64
|
-
handleChange: (
|
|
73
|
+
handleChange: (child: any) => void;
|
|
65
74
|
TableRow: any;
|
|
66
75
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
67
76
|
change: (value: any) => boolean;
|
|
68
77
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
69
78
|
readonly dataSource: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => IJsonXmlItem[]) | (() => IJsonXmlItem[]) | ((new (...args: any[]) => IJsonXmlItem[]) | (() => IJsonXmlItem[]))[], unknown, unknown, () => never[], boolean>;
|
|
79
|
+
readonly type: {
|
|
80
|
+
readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>>;
|
|
81
|
+
readonly required: false;
|
|
82
|
+
readonly validator: ((val: unknown) => boolean) | undefined;
|
|
83
|
+
__epPropKey: true;
|
|
84
|
+
};
|
|
70
85
|
}>> & {
|
|
71
86
|
onChange?: ((value: any) => any) | undefined;
|
|
72
87
|
}, {
|
|
@@ -76,9 +91,11 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
76
91
|
'update:value': (value: any) => boolean;
|
|
77
92
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
78
93
|
readonly value: import("ll-plus/es/utils").EpPropFinalized<ObjectConstructor, unknown, unknown, () => void, boolean>;
|
|
94
|
+
readonly type: import("ll-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown, "json", boolean>;
|
|
79
95
|
}>> & {
|
|
80
96
|
"onUpdate:value"?: ((value: any) => any) | undefined;
|
|
81
97
|
}, {
|
|
98
|
+
readonly type: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "json" | "xml") | (() => "json" | "xml") | ((new (...args: any[]) => "json" | "xml") | (() => "json" | "xml"))[], unknown, unknown>;
|
|
82
99
|
readonly value: Record<string, any>;
|
|
83
100
|
}, {}>;
|
|
84
101
|
export default _default;
|
|
@@ -160,7 +160,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
160
160
|
}
|
|
161
161
|
];
|
|
162
162
|
}
|
|
163
|
-
console.log(dataSource.value, n);
|
|
164
163
|
},
|
|
165
164
|
{
|
|
166
165
|
deep: true,
|
|
@@ -179,16 +178,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
179
178
|
emits("update:value", n);
|
|
180
179
|
}
|
|
181
180
|
});
|
|
182
|
-
watch(
|
|
183
|
-
() => dataSource.value,
|
|
184
|
-
(n) => {
|
|
185
|
-
console.log({ n });
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
deep: true,
|
|
189
|
-
immediate: true
|
|
190
|
-
}
|
|
191
|
-
);
|
|
192
181
|
return (_ctx, _cache) => {
|
|
193
182
|
const _component_ll_segmented = resolveComponent("ll-segmented");
|
|
194
183
|
const _component_ll_button = resolveComponent("ll-button");
|
|
@@ -232,8 +221,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
232
221
|
{ key: 0 },
|
|
233
222
|
[
|
|
234
223
|
createVNode(_component_ll_button, {
|
|
235
|
-
|
|
236
|
-
|
|
224
|
+
type: "link",
|
|
225
|
+
disabled: unref(disabled)
|
|
237
226
|
}, {
|
|
238
227
|
default: withCtx(() => [
|
|
239
228
|
createCommentVNode(" <ll-icon/> "),
|
|
@@ -243,8 +232,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
243
232
|
/* STABLE */
|
|
244
233
|
}, 8, ["disabled"]),
|
|
245
234
|
createVNode(_component_ll_button, {
|
|
246
|
-
|
|
247
|
-
|
|
235
|
+
type: "link",
|
|
236
|
+
disabled: unref(disabled)
|
|
248
237
|
}, {
|
|
249
238
|
default: withCtx(() => [
|
|
250
239
|
createCommentVNode(" <ll-icon/> "),
|
|
@@ -254,8 +243,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
254
243
|
/* STABLE */
|
|
255
244
|
}, 8, ["disabled"]),
|
|
256
245
|
createVNode(_component_ll_button, {
|
|
257
|
-
|
|
258
|
-
|
|
246
|
+
type: "link",
|
|
247
|
+
disabled: unref(disabled)
|
|
259
248
|
}, {
|
|
260
249
|
default: withCtx(() => [
|
|
261
250
|
createCommentVNode(" <ll-icon/> "),
|
|
@@ -272,8 +261,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
272
261
|
{ key: 1 },
|
|
273
262
|
[
|
|
274
263
|
createVNode(_component_ll_button, {
|
|
275
|
-
|
|
276
|
-
|
|
264
|
+
type: "link",
|
|
265
|
+
disabled: unref(disabled)
|
|
277
266
|
}, {
|
|
278
267
|
default: withCtx(() => [
|
|
279
268
|
createCommentVNode(" <ll-icon/> "),
|
|
@@ -283,8 +272,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
283
272
|
/* STABLE */
|
|
284
273
|
}, 8, ["disabled"]),
|
|
285
274
|
createVNode(_component_ll_button, {
|
|
286
|
-
|
|
287
|
-
|
|
275
|
+
type: "link",
|
|
276
|
+
disabled: unref(disabled)
|
|
288
277
|
}, {
|
|
289
278
|
default: withCtx(() => [
|
|
290
279
|
createCommentVNode(" <ll-icon/> "),
|
|
@@ -324,12 +313,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
324
313
|
value: innerValue.value,
|
|
325
314
|
"onUpdate:value": _cache[1] || (_cache[1] = ($event) => innerValue.value = $event),
|
|
326
315
|
disabled: unref(disabled),
|
|
316
|
+
style: { "height": "200px" },
|
|
317
|
+
options: {
|
|
318
|
+
minimap: {
|
|
319
|
+
enabled: false
|
|
320
|
+
}
|
|
321
|
+
},
|
|
327
322
|
language: "json"
|
|
328
323
|
}, null, 8, ["value", "disabled"])) : (openBlock(), createBlock(TreeTable, {
|
|
329
324
|
key: 1,
|
|
325
|
+
type: props.type,
|
|
330
326
|
"data-source": dataSource.value,
|
|
331
327
|
onChange: handleChange
|
|
332
|
-
}, null, 8, ["data-source"]))
|
|
328
|
+
}, null, 8, ["type", "data-source"]))
|
|
333
329
|
],
|
|
334
330
|
2
|
|
335
331
|
/* CLASS */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-xml.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b('json-xml')\">\n <div :class=\"bem.e('header')\">\n <ll-segmented\n v-model:value=\"type\"\n size=\"middle\"\n :options=\"jsonXmlOptions\"\n @change=\"handleTypeChange\"\n >\n <template #label=\"{ payload }\">\n <div>{{ payload.title }}</div>\n </template>\n </ll-segmented>\n <div class=\"flex\">\n <template v-if=\"type === 'json'\">\n <ll-button :disabled=\"disabled\" type=\"text\">\n <!-- <ll-icon/> -->\n 预览\n </ll-button>\n <ll-button :disabled=\"disabled\" type=\"text\">\n <!-- <ll-icon/> -->\n 生成代码\n </ll-button>\n <ll-button :disabled=\"disabled\" type=\"text\">\n <!-- <ll-icon/> -->\n JSON Schema\n </ll-button>\n </template>\n <template v-else>\n <ll-button :disabled=\"disabled\" type=\"text\">\n <!-- <ll-icon/> -->\n 格式化\n </ll-button>\n <ll-button :disabled=\"disabled\" type=\"text\">\n <!-- <ll-icon/> -->\n 生成代码\n </ll-button>\n <ll-dropdown\n :disabled=\"disabled\"\n :dropdown-items=\"customOverlay\"\n placement=\"bottomRight\"\n >\n <ll-icon icon-name=\"icon-line-arrow-down\" />\n </ll-dropdown>\n </template>\n </div>\n </div>\n <div :class=\"bem.e('body')\">\n <template v-if=\"type === 'json'\">\n <ll-code-editor\n v-model:value=\"innerValue\"\n :disabled=\"disabled\"\n language=\"json\"\n />\n </template>\n <template v-else>\n <tree-table :data-source=\"dataSource\" @change=\"handleChange\" />\n </template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject } from 'vue'\n\nimport { isEmpty } from 'lodash-es'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport {\n DEFAULT_TYPE,\n jsonXmlOptions,\n customOverlay,\n jsonXmlProps,\n jsonXmlEmits,\n type IJsonXmlItem\n} from '../config'\n\nimport TreeTable from './json-xml-table.vue'\n\ndefineOptions({ name: 'LlJsonXml' })\n\nconst props = defineProps(jsonXmlProps)\n\nconst emits = defineEmits(jsonXmlEmits)\n\nconst bem = createNamespace('json-xml')\n\nconst disabled = inject('disabled')\n\nconst type = ref(DEFAULT_TYPE)\n\nconst innerValue = ref<any>(JSON.stringify(props.value))\n\nconst dataSource = ref([\n {\n key: '1',\n name: '根节点',\n type: 'object',\n value: '',\n chineseName: '',\n description: '',\n mock: '',\n children: []\n }\n] as IJsonXmlItem[])\n\nconst parseJson2Array = (\n json: object,\n parentKey: string = '1',\n parentType: string = 'object'\n) => {\n let num = 0\n const result = [] as IJsonXmlItem[]\n for (const key in json) {\n num++\n if (Object.prototype.hasOwnProperty.call(json, key)) {\n const element = json[key]\n if (typeof element === 'object' || Array.isArray(element)) {\n const currentType = Array.isArray(element) ? 'array' : 'object'\n result.push({\n key: `${parentKey}-${num}`,\n name: parentType === 'array' ? 'ITEM' : key,\n type: currentType,\n value:\n parentType === 'array' && currentType !== 'object' ? element : '',\n chineseName: '',\n description: '',\n mock: '',\n children: parseJson2Array(element, `${parentKey}-${num}`, currentType)\n } as IJsonXmlItem)\n } else {\n result.push({\n key: `${parentKey}-${num}`,\n name: parentType === 'array' ? 'ITEM' : key,\n type: typeof element,\n value: '',\n chineseName: '',\n description: '',\n mock: element\n } as IJsonXmlItem)\n }\n }\n }\n return result\n}\n\nconst parseArray2Json = (data: IJsonXmlItem[]) => {\n const result = {} as any\n data.forEach((item: IJsonXmlItem) => {\n if (item.name) {\n if (item.type === 'object' || item.type === 'array') {\n if (item.children && item.children.length) {\n result[item.name] = parseArray2Json(item.children)\n }\n } else {\n result[item.name] = item.mock\n }\n }\n })\n return result\n}\n\nconst handleTypeChange = e => {\n if (e === 'json') {\n innerValue.value = JSON.stringify(parseArray2Json(dataSource.value))\n } else {\n try {\n const value = JSON.parse(innerValue.value)\n if (typeof value === 'object') {\n dataSource.value = parseJson2Array(value)\n } else {\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof value,\n value: '',\n chineseName: '',\n description: '',\n mock: value,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n } catch (error) {\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof innerValue.value,\n value: '',\n chineseName: '',\n description: '',\n mock: innerValue.value,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n }\n}\n\nconst handleChange = arr => {\n dataSource.value = arr\n emits('update:value', parseArray2Json(arr))\n}\n\nwatch(\n () => props.value,\n n => {\n if (!isEmpty(n)) {\n if (typeof n === 'object') {\n innerValue.value = JSON.stringify(n)\n dataSource.value = parseJson2Array(props.value)\n } else {\n innerValue.value = n\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof props.value,\n value: '',\n chineseName: '',\n description: '',\n mock: n,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n } else {\n innerValue.value = ''\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: 'object',\n value: '',\n chineseName: '',\n description: '',\n mock: '',\n children: []\n }\n ] as IJsonXmlItem[]\n }\n console.log(dataSource.value, n)\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(innerValue, n => {\n try {\n const value = JSON.parse(n)\n if (typeof value === 'object') {\n emits('update:value', value)\n } else {\n emits('update:value', value)\n }\n } catch (error) {\n emits('update:value', n)\n }\n})\n\nwatch(\n () => dataSource.value,\n n => {\n console.log({ n })\n },\n {\n deep: true,\n immediate: true\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-xml.vue2.mjs","sources":["../../../../../../packages/components/api-component/src/components/json-xml.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b('json-xml')\">\n <div :class=\"bem.e('header')\">\n <ll-segmented\n v-model:value=\"type\"\n size=\"middle\"\n :options=\"jsonXmlOptions\"\n @change=\"handleTypeChange\"\n >\n <template #label=\"{ payload }\">\n <div>{{ payload.title }}</div>\n </template>\n </ll-segmented>\n <div class=\"flex\">\n <template v-if=\"type === 'json'\">\n <ll-button type=\"link\" :disabled=\"disabled\">\n <!-- <ll-icon/> -->\n 预览\n </ll-button>\n <ll-button type=\"link\" :disabled=\"disabled\">\n <!-- <ll-icon/> -->\n 生成代码\n </ll-button>\n <ll-button type=\"link\" :disabled=\"disabled\">\n <!-- <ll-icon/> -->\n JSON Schema\n </ll-button>\n </template>\n <template v-else>\n <ll-button type=\"link\" :disabled=\"disabled\">\n <!-- <ll-icon/> -->\n 格式化\n </ll-button>\n <ll-button type=\"link\" :disabled=\"disabled\">\n <!-- <ll-icon/> -->\n 生成代码\n </ll-button>\n <ll-dropdown\n :disabled=\"disabled\"\n :dropdown-items=\"customOverlay\"\n placement=\"bottomRight\"\n >\n <ll-icon icon-name=\"icon-line-arrow-down\" />\n </ll-dropdown>\n </template>\n </div>\n </div>\n <div :class=\"bem.e('body')\">\n <template v-if=\"type === 'json'\">\n <ll-code-editor\n v-model:value=\"innerValue\"\n :disabled=\"disabled\"\n style=\"height: 200px\"\n :options=\"{\n minimap: {\n enabled: false\n }\n }\"\n language=\"json\"\n />\n </template>\n <template v-else>\n <tree-table\n :type=\"props.type\"\n :data-source=\"dataSource\"\n @change=\"handleChange\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject } from 'vue'\n\nimport { isEmpty } from 'lodash-es'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport {\n DEFAULT_TYPE,\n jsonXmlOptions,\n customOverlay,\n jsonXmlProps,\n jsonXmlEmits,\n type IJsonXmlItem\n} from '../config'\n\nimport TreeTable from './json-xml-table.vue'\n\ndefineOptions({ name: 'LlJsonXml' })\n\nconst props = defineProps(jsonXmlProps)\n\nconst emits = defineEmits(jsonXmlEmits)\n\nconst bem = createNamespace('json-xml')\n\nconst disabled = inject('disabled') as boolean\n\nconst type = ref(DEFAULT_TYPE)\n\nconst innerValue = ref<any>(JSON.stringify(props.value))\n\nconst dataSource = ref([\n {\n key: '1',\n name: '根节点',\n type: 'object',\n value: '',\n chineseName: '',\n description: '',\n mock: '',\n children: []\n }\n] as IJsonXmlItem[])\n\nconst parseJson2Array = (\n json: object,\n parentKey: string = '1',\n parentType: string = 'object'\n) => {\n let num = 0\n const result = [] as IJsonXmlItem[]\n for (const key in json) {\n num++\n if (Object.prototype.hasOwnProperty.call(json, key)) {\n const element = json[key]\n if (typeof element === 'object' || Array.isArray(element)) {\n const currentType = Array.isArray(element) ? 'array' : 'object'\n result.push({\n key: `${parentKey}-${num}`,\n name: parentType === 'array' ? 'ITEM' : key,\n type: currentType,\n value:\n parentType === 'array' && currentType !== 'object' ? element : '',\n chineseName: '',\n description: '',\n mock: '',\n children: parseJson2Array(element, `${parentKey}-${num}`, currentType)\n } as IJsonXmlItem)\n } else {\n result.push({\n key: `${parentKey}-${num}`,\n name: parentType === 'array' ? 'ITEM' : key,\n type: typeof element,\n value: '',\n chineseName: '',\n description: '',\n mock: element\n } as IJsonXmlItem)\n }\n }\n }\n return result\n}\n\nconst parseArray2Json = (data: IJsonXmlItem[]) => {\n const result = {} as any\n data.forEach((item: IJsonXmlItem) => {\n if (item.name) {\n if (item.type === 'object' || item.type === 'array') {\n if (item.children && item.children.length) {\n result[item.name] = parseArray2Json(item.children)\n }\n } else {\n result[item.name] = item.mock\n }\n }\n })\n return result\n}\n\nconst handleTypeChange = e => {\n if (e === 'json') {\n innerValue.value = JSON.stringify(parseArray2Json(dataSource.value))\n } else {\n try {\n const value = JSON.parse(innerValue.value)\n if (typeof value === 'object') {\n dataSource.value = parseJson2Array(value)\n } else {\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof value,\n value: '',\n chineseName: '',\n description: '',\n mock: value,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n } catch (error) {\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof innerValue.value,\n value: '',\n chineseName: '',\n description: '',\n mock: innerValue.value,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n }\n}\n\nconst handleChange = arr => {\n dataSource.value = arr\n emits('update:value', parseArray2Json(arr))\n}\n\nwatch(\n () => props.value,\n n => {\n if (!isEmpty(n)) {\n if (typeof n === 'object') {\n innerValue.value = JSON.stringify(n)\n dataSource.value = parseJson2Array(props.value)\n } else {\n innerValue.value = n\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: typeof props.value,\n value: '',\n chineseName: '',\n description: '',\n mock: n,\n children: []\n }\n ] as IJsonXmlItem[]\n }\n } else {\n innerValue.value = ''\n dataSource.value = [\n {\n key: '1',\n name: '根节点',\n type: 'object',\n value: '',\n chineseName: '',\n description: '',\n mock: '',\n children: []\n }\n ] as IJsonXmlItem[]\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(innerValue, n => {\n try {\n const value = JSON.parse(n)\n if (typeof value === 'object') {\n emits('update:value', value)\n } else {\n emits('update:value', value)\n }\n } catch (error) {\n emits('update:value', n)\n }\n})\n</script>\n"],"names":[],"mappings":"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"}
|