@antdv/pro-field
Version:
原子信息组件,统一 ProForm、ProTable、ProList、Filter 等组件里面的字段定义。
131 lines (130 loc) • 3.85 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
import { proTheme } from "@antdv/pro-provider";
import { oneOf, stringType } from "@antdv/pro-utils";
import { Input } from "ant-design-vue";
import { computed, defineComponent, ref } from "vue";
import { buildProFieldProp } from "../props.mjs";
function languageFormat(text, language) {
if (typeof text !== "string") {
return text;
}
try {
if (language === "json") {
return JSON.stringify(JSON.parse(text), null, 2);
}
} catch (error) {
}
return text;
}
var stdin_default = defineComponent({
name: "FieldCode",
inheritAttrs: false,
props: buildProFieldProp({
value: stringType().def(""),
language: oneOf(["json", "text"])
}),
emits: {
"update:value": (val) => true
},
setup(props, {
expose,
emit
}) {
const codeRef = ref(null);
const {
token
} = proTheme.useToken();
expose(codeRef.value);
return () => {
var _a;
const {
text,
value,
mode,
render,
language = "text",
renderFormItem,
plain,
fieldProps
} = props;
const textValue = text != null ? text : value;
const code = languageFormat(textValue, language);
if (mode === "read") {
const dom = _createVNode("pre", _mergeProps({
"ref": codeRef
}, fieldProps, {
"style": __spreadValues({
padding: `16px`,
overflow: "auto",
fontSize: "85%",
lineHeight: 1.45,
color: token.value.colorTextSecondary,
backgroundColor: "rgba(150, 150, 150, 0.1)",
borderRadius: `3px`,
width: "min-content"
}, fieldProps.style)
}), [_createVNode("code", null, [code])]);
if (render) {
return render(code, computed(() => __spreadProps(__spreadValues({
mode
}, fieldProps), {
domRef: codeRef
})), dom);
}
return dom;
}
if (mode === "edit" || mode === "update") {
let dom = _createVNode(Input.TextArea, _mergeProps({
"value": value,
"onUpdate:value": (val) => {
emit("update:value", val);
},
"rows": 5
}, fieldProps, {
"ref": codeRef
}), null);
if (plain) {
dom = _createVNode(Input, _mergeProps(fieldProps, {
"value": value,
"onUpdate:value": (val) => {
emit("update:value", val);
},
"ref": codeRef
}), null);
}
if (renderFormItem) {
return (_a = renderFormItem(code, computed(() => __spreadProps(__spreadValues({
mode,
value
}, fieldProps), {
domRef: codeRef
})), dom)) != null ? _a : null;
}
return dom;
}
return null;
};
}
});
export {
stdin_default as default
};