@antdv/pro-field
Version:
原子信息组件,统一 ProForm、ProTable、ProList、Filter 等组件里面的字段定义。
119 lines (118 loc) • 4.33 kB
JavaScript
var __defProp = Object.defineProperty;
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;
};
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
import { useIntl } from "@antdv/pro-provider";
import { anyType, isNil, omit } from "@antdv/pro-utils";
import { InputNumber } from "ant-design-vue";
import { computed, defineComponent, ref } from "vue";
import { buildProFieldProp } from "../props.mjs";
const fieldDigitProps = buildProFieldProp({
value: anyType(),
placeholder: String
});
var stdin_default = defineComponent({
name: "FieldDigit",
props: fieldDigitProps,
inheritAttrs: false,
emits: {
"update:value": (val) => true
},
setup(props, {
expose,
emit
}) {
const inputRef = ref(null);
const intl = useIntl();
expose(inputRef.value);
return () => {
var _a;
const {
text,
value,
mode: type,
render,
placeholder,
renderFormItem,
fieldProps
} = props;
const textValue = text != null ? text : value;
const placeholderValue = placeholder || intl.getMessage("tableForm.inputPlaceholder", "\u8BF7\u8F93\u5165");
const proxyChange = (v) => {
let val = v != null ? v : void 0;
if (!fieldProps.stringMode && typeof val === "string") {
val = Number(val);
}
if (typeof val === "number" && !isNil(val) && !isNil(fieldProps.precision)) {
val = Number(val.toFixed(fieldProps.precision));
}
return val;
};
if (type === "read") {
let fractionDigits = {};
if (fieldProps == null ? void 0 : fieldProps.precision) {
fractionDigits = {
minimumFractionDigits: Number(fieldProps.precision),
maximumFractionDigits: Number(fieldProps.precision)
};
}
const digit = new Intl.NumberFormat(void 0, __spreadValues(__spreadValues({}, fractionDigits), (fieldProps == null ? void 0 : fieldProps.intlProps) || {})).format(Number(textValue));
const dom = !(fieldProps == null ? void 0 : fieldProps.stringMode) ? _createVNode("span", {
"ref": inputRef
}, [((_a = fieldProps == null ? void 0 : fieldProps.formatter) == null ? void 0 : _a.call(fieldProps, digit)) || digit]) : _createVNode("span", null, [textValue]);
if (render) {
return render(textValue, computed(() => __spreadValues({
mode: type
}, fieldProps)), dom);
}
return dom;
}
if (type === "edit" || type === "update") {
const dom = _createVNode(InputNumber, _mergeProps({
"ref": inputRef,
"min": 0,
"placeholder": placeholderValue
}, omit(fieldProps, ["onChange", "onBlur", "className"]), {
"class": fieldProps == null ? void 0 : fieldProps.class,
"value": value,
"onUpdate:value": (val) => {
emit("update:value", val);
},
"onChange": (e) => {
var _a2;
return (_a2 = fieldProps == null ? void 0 : fieldProps.onChange) == null ? void 0 : _a2.call(fieldProps, proxyChange(e));
},
"onBlur": (e) => {
var _a2, _b;
return (_b = fieldProps == null ? void 0 : fieldProps.onBlur) == null ? void 0 : _b.call(fieldProps, proxyChange((_a2 = e.target) == null ? void 0 : _a2.value));
}
}), null);
if (renderFormItem) {
return renderFormItem(textValue, computed(() => __spreadValues({
mode: type,
value
}, fieldProps)), dom);
}
return dom;
}
return null;
};
}
});
export {
stdin_default as default,
fieldDigitProps
};