UNPKG

@antdv/pro-field

Version:

原子信息组件,统一 ProForm、ProTable、ProList、Filter 等组件里面的字段定义。

512 lines (511 loc) 19.3 kB
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)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue"; import ProConfigContext from "@antdv/pro-provider"; import { boolType, cloneElement, funcType, isValidElement, omit, omitUndefined, oneOfType, pickProProps, vNodeType } from "@antdv/pro-utils"; import { Avatar } from "ant-design-vue"; import dayjs from "dayjs"; import advancedFormat from "dayjs/plugin/advancedFormat"; import isoWeek from "dayjs/plugin/isoWeek"; import localeData from "dayjs/plugin/localeData"; import localizedFormat from "dayjs/plugin/localizedFormat"; import weekday from "dayjs/plugin/weekday"; import weekOfYear from "dayjs/plugin/weekOfYear"; import { computed, defineComponent, unref } from "vue"; import FieldCascader from "./components/Cascader/index.mjs"; import FieldCheckbox from "./components/Checkbox/index.mjs"; import FieldCode from "./components/Code/index.mjs"; import FieldDatePicker from "./components/DatePicker/index.mjs"; import FieldDigit from "./components/Digit/index.mjs"; import FieldDigitRange from "./components/DigitRange/index.mjs"; import FieldFromNow from "./components/FromNow/index.mjs"; import FieldImage from "./components/Image/index.mjs"; import FieldIndexColumn from "./components/IndexColumn/index.mjs"; import FieldMoney from "./components/Money/index.mjs"; import FieldOptions from "./components/Options/index.mjs"; import FieldPassword from "./components/Password/index.mjs"; import FieldPercent from "./components/Percent/index.mjs"; import FieldProgress from "./components/Progress/index.mjs"; import { proFieldFCRenderProps, proRenderFieldProps } from "./components/props.mjs"; import FieldRadio from "./components/Radio/index.mjs"; import FieldRangePicker from "./components/RangePicker/index.mjs"; import FieldRate from "./components/Rate/index.mjs"; import FieldSecond from "./components/Second/index.mjs"; import FieldSegmented from "./components/Segmented/index.mjs"; import FieldSelect, { proFieldParsingValueEnumToArray } from "./components/Select/index.mjs"; import FieldSlider from "./components/Slider/index.mjs"; import FieldStatus from "./components/Status/index.mjs"; import FieldSwitch from "./components/Switch/index.mjs"; import FieldText from "./components/Text/index.mjs"; import FieldTextArea from "./components/TextArea/index.mjs"; import FieldTimePicker, { FieldTimeRangePicker } from "./components/TimePicker/index.mjs"; import FieldTreeSelect from "./components/TreeSelect/index.mjs"; import FieldHOC from "./FieldHOC/index.mjs"; dayjs.extend(localeData); dayjs.extend(advancedFormat); dayjs.extend(isoWeek); dayjs.extend(weekOfYear); dayjs.extend(weekday); dayjs.extend(localizedFormat); function defaultRenderTextByObject(text, valueType, props) { } const renderProps = __spreadProps(__spreadValues(__spreadValues({}, omit(proFieldFCRenderProps, ["placeholder"])), proRenderFieldProps), { request: funcType(), emptyText: vNodeType(), open: boolType(), onOpenChange: funcType() }); const proFieldProps = __spreadValues({ value: oneOfType([String, Number, Boolean, Object, Array]).def(void 0), valueType: oneOfType([String, Object]) }, renderProps); var stdin_default = defineComponent({ name: "ProField", inheritAttrs: false, props: proFieldProps, slots: Object, emits: { "update:value": (value) => true }, setup(props, { slots, emit, attrs }) { const { valueTypeMap } = ProConfigContext.useContext(); const onChangeCallBack = (...restParams) => { var _a, _b, _c; (_b = (_a = props.fieldProps) == null ? void 0 : _a.onChange) == null ? void 0 : _b.call(_a, ...restParams); (_c = props.onChange) == null ? void 0 : _c.call(props, ...restParams); }; const fieldProps = computed(() => { return props.fieldProps && __spreadProps(__spreadValues({}, omitUndefined(props.fieldProps)), { onChange: onChangeCallBack }); }); return () => { var _a, _c, _d, _e, _f; const _b = __spreadValues(__spreadValues({}, props), attrs), { text, value, valueType = "text", mode = "read", onChange, renderFormItem, readonly, fieldProps: restFieldProps, emptyText = (_a = slots.emptyText) == null ? void 0 : _a.call(slots) } = _b, rest = __objRest(_b, [ "text", "value", "valueType", "mode", "onChange", "renderFormItem", "readonly", "fieldProps", "emptyText" ]); const fieldMode = readonly ? "read" : mode; const getFieldProps = pickProProps(omitUndefined(__spreadProps(__spreadValues({}, unref(fieldProps)), { placeholder: renderFormItem ? void 0 : (_c = unref(fieldProps)) == null ? void 0 : _c.placeholder }))); const getRenderProps = omitUndefined(__spreadProps(__spreadValues({}, rest), { emptyText, "value": value, "onUpdate:value": (val) => emit("update:value", val), "mode": readonly ? "read" : mode, "renderFormItem": renderFormItem ? (curText, _props, dom) => { const _a2 = _props.value, { placeholder: _placeholder } = _a2, restProps = __objRest(_a2, [ "placeholder" ]); const newDom = renderFormItem(curText, computed(() => restProps), dom); if (newDom && isValidElement(newDom)) { return cloneElement(newDom, __spreadValues(__spreadValues({}, unref(fieldProps)), newDom.props || {})); } return newDom; } : void 0, "placeholder": renderFormItem ? void 0 : (_d = unref(fieldProps)) == null ? void 0 : _d.placeholder, "fieldProps": getFieldProps })); const textValue = text != null ? text : value; if (emptyText !== false && fieldMode === "read" && valueType !== "option" && valueType !== "switch") { if (typeof textValue !== "boolean" && typeof textValue !== "number" && !textValue) { if (props.render) { return props.render(textValue, computed(() => __spreadValues({ mode }, getFieldProps)), _createVNode(_Fragment, null, [emptyText])); } return _createVNode(_Fragment, null, [emptyText]); } } if (typeof valueType === "object") { const pickFormItemProps = pickProProps(getFieldProps); if (valueType.type === "progress") { return _createVNode(FieldProgress, _mergeProps(getRenderProps, { "text": text, "fieldProps": __spreadValues({ status: valueType.status ? valueType.status : void 0 }, pickFormItemProps) }), null); } if (valueType.type === "money") { return _createVNode(FieldMoney, _mergeProps({ "locale": valueType.locale }, getRenderProps, { "text": text, "fieldProps": pickFormItemProps, "moneySymbol": valueType.moneySymbol }), null); } if (valueType.type === "percent") { return _createVNode(FieldPercent, _mergeProps(getRenderProps, { "text": text, "showSymbol": valueType.showSymbol, "precision": valueType.precision, "fieldProps": pickFormItemProps, "showColor": valueType.showColor }), null); } if (valueType.type === "image") { return _createVNode(FieldImage, _mergeProps(getRenderProps, { "text": text, "width": valueType.width }), null); } return text; } const customValueTypeConfig = valueTypeMap && valueTypeMap[valueType]; if (customValueTypeConfig) { if (fieldMode === "read") { return ((_e = customValueTypeConfig.render) == null ? void 0 : _e.call(customValueTypeConfig, text, computed(() => __spreadProps(__spreadValues({ text }, getRenderProps), { mode: fieldMode || "read" })), _createVNode(_Fragment, null, [text]))) || null; } if (fieldMode === "update" || fieldMode === "edit") { return ((_f = customValueTypeConfig.renderFormItem) == null ? void 0 : _f.call(customValueTypeConfig, text, computed(() => __spreadValues({ text }, getRenderProps)), _createVNode(_Fragment, null, [text]))) || null; } } if (valueType === "avatar" && typeof text === "string" && fieldMode === "read") { return _createVNode(Avatar, { "src": text, "size": 22, "shape": "circle" }, null); } if (valueType === "select" || valueType === "text" && (props.valueEnum || props.request)) { return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldSelect, _mergeProps({ "text": text }, getRenderProps), null)] }); } switch (valueType) { case "money": return _createVNode(FieldMoney, _mergeProps(getRenderProps, { "text": text }), null); case "date": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY-MM-DD" }, getRenderProps), null)] }); case "dateWeek": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY-wo", "picker": "week" }, getRenderProps), null)] }); case "dateWeekRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY-W", "showTime": true, "fieldProps": __spreadValues({ picker: "week" }, getFieldProps) }, omit(getRenderProps, ["fieldProps"])), null)] }); case "dateMonthRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY-MM", "showTime": true, "fieldProps": __spreadValues({ picker: "month" }, getFieldProps) }, omit(getRenderProps, ["fieldProps"])), null)] }); case "dateQuarterRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY-Q", "showTime": true, "fieldProps": __spreadValues({ picker: "quarter" }, getFieldProps) }, omit(getRenderProps, ["fieldProps"])), null)] }); case "dateYearRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY", "showTime": true, "fieldProps": __spreadValues({ picker: "year" }, getFieldProps) }, omit(getRenderProps, ["fieldProps"])), null)] }); case "dateMonth": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY-MM", "picker": "month" }, getRenderProps), null)] }); case "dateQuarter": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY-[Q]Q", "picker": "quarter" }, getRenderProps), null)] }); case "dateYear": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY", "picker": "year" }, getRenderProps), null)] }); case "dateRange": return _createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY-MM-DD" }, getRenderProps), null); case "dateTime": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldDatePicker, _mergeProps({ "text": text, "format": "YYYY-MM-DD HH:mm:ss", "showTime": true }, getRenderProps), null)] }); case "dateTimeRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldRangePicker, _mergeProps({ "text": text, "format": "YYYY-MM-DD HH:mm:ss", "showTime": true }, getRenderProps), null)] }); case "time": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldTimePicker, _mergeProps({ "text": text, "format": "HH:mm:ss" }, getRenderProps), null)] }); case "timeRange": return _createVNode(FieldHOC, { "isLight": props.light }, { default: () => [_createVNode(FieldTimeRangePicker, _mergeProps({ "text": text != null ? text : [], "format": "HH:mm:ss" }, getRenderProps), null)] }); case "fromNow": return _createVNode(FieldFromNow, _mergeProps({ "text": text }, getRenderProps), null); case "index": return _createVNode(FieldIndexColumn, { "index": text + 1 }, null); case "indexBorder": return _createVNode(FieldIndexColumn, { "border": true, "index": text + 1 }, null); case "progress": return _createVNode(FieldProgress, _mergeProps(getRenderProps, { "text": text }), null); case "percent": return _createVNode(FieldPercent, _mergeProps({ "text": text }, getRenderProps), null); case "code": return _createVNode(FieldCode, _mergeProps({ "text": text }, getRenderProps), null); case "jsonCode": return _createVNode(FieldCode, _mergeProps({ "text": text, "language": "json" }, getRenderProps), null); case "textarea": return _createVNode(FieldTextArea, _mergeProps({ "text": text }, getRenderProps), null); case "digit": return _createVNode(FieldDigit, _mergeProps({ "text": text }, getRenderProps), null); case "digitRange": return _createVNode(FieldDigitRange, _mergeProps({ "text": text != null ? text : [] }, getRenderProps), null); case "second": return _createVNode(FieldSecond, _mergeProps({ "text": text }, getRenderProps), null); case "checkbox": return _createVNode(FieldCheckbox, _mergeProps({ "text": text }, getRenderProps), null); case "radio": return _createVNode(FieldRadio, _mergeProps({ "text": text }, getRenderProps), null); case "radioButton": return _createVNode(FieldRadio, _mergeProps({ "radioType": "button", "text": text }, getRenderProps), null); case "rate": return _createVNode(FieldRate, _mergeProps({ "text": text }, getRenderProps), null); case "slider": return _createVNode(FieldSlider, _mergeProps({ "text": text }, getRenderProps), null); case "switch": return _createVNode(FieldSwitch, _mergeProps({ "text": text }, getRenderProps), null); case "option": return _createVNode(FieldOptions, _mergeProps({ "text": text }, getRenderProps), null); case "password": return _createVNode(FieldPassword, _mergeProps({ "text": text }, getRenderProps), null); case "image": return _createVNode(FieldImage, _mergeProps({ "text": text }, getRenderProps), null); case "cascader": return _createVNode(FieldCascader, _mergeProps({ "text": text }, getRenderProps), null); case "treeSelect": return _createVNode(FieldTreeSelect, _mergeProps({ "text": text }, getRenderProps), null); case "segmented": return _createVNode(FieldSegmented, _mergeProps({ "text": text }, getRenderProps), null); case "avatar": case "text": default: return _createVNode(FieldText, _mergeProps({ "text": text }, getRenderProps), null); } }; } }); export { FieldCode, FieldDatePicker, FieldIndexColumn, FieldMoney, FieldPercent, FieldProgress, FieldRangePicker, FieldSelect, FieldStatus, FieldText, FieldTimePicker, stdin_default as default, proFieldParsingValueEnumToArray, proFieldProps };