@antdv/pro-field
Version:
原子信息组件,统一 ProForm、ProTable、ProList、Filter 等组件里面的字段定义。
233 lines (232 loc) • 8.37 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 { FieldLabel, oneOfType, parseValueToDay, stringType, useState } from "@antdv/pro-utils";
import { RangePicker, TimePicker } from "ant-design-vue";
import dayjs from "dayjs";
import { computed, defineComponent, ref } from "vue";
import { buildProFieldProp, proFieldLightProps } from "../props.mjs";
const fieldTimeRangePickerProps = buildProFieldProp(__spreadValues({
value: oneOfType([String, Number, Array]),
format: stringType()
}, proFieldLightProps));
const FieldTimeRangePicker = defineComponent({
name: "FieldTimeRangePicker",
inheritAttrs: false,
props: fieldTimeRangePickerProps,
emits: {
"update:value": (val) => true
},
setup(props, {
emit
}) {
const intl = useIntl();
const [open, setOpen] = useState(false);
return () => {
const {
text,
value,
light,
label,
mode,
format,
render,
renderFormItem,
plain,
fieldProps
} = props;
const textValue = text != null ? text : value;
const finalFormat = (fieldProps == null ? void 0 : fieldProps.format) || format || "HH:mm:ss";
const [startText, endText] = Array.isArray(textValue) ? textValue : [];
const startTextIsNumberOrMoment = dayjs.isDayjs(startText) || typeof startText === "number";
const endTextIsNumberOrMoment = dayjs.isDayjs(endText) || typeof endText === "number";
const parsedStartText = startText ? dayjs(startText, startTextIsNumberOrMoment ? void 0 : finalFormat).format(finalFormat) : "";
const parsedEndText = endText ? dayjs(endText, endTextIsNumberOrMoment ? void 0 : finalFormat).format(finalFormat) : "";
if (mode === "read") {
const dom = _createVNode("div", null, [_createVNode("div", null, [parsedStartText || "-"]), _createVNode("div", null, [parsedEndText || "-"])]);
if (render) {
return render(textValue, computed(() => __spreadValues({
mode
}, fieldProps)), _createVNode("span", null, [dom]));
}
return dom;
}
if (mode === "edit" || mode === "update") {
const dayValue = parseValueToDay(value, finalFormat);
let dom;
if (light) {
const {
disabled,
placeholder = [intl.getMessage("tableForm.selectPlaceholder", "\u8BF7\u9009\u62E9"), intl.getMessage("tableForm.selectPlaceholder", "\u8BF7\u9009\u62E9")]
} = fieldProps;
dom = _createVNode(FieldLabel, {
"onClick": () => {
var _a;
(_a = fieldProps == null ? void 0 : fieldProps.onOpenChange) == null ? void 0 : _a.call(fieldProps, true);
setOpen(true);
},
"style": dayValue ? {
paddingInlineEnd: 0
} : void 0,
"label": label,
"disabled": disabled,
"placeholder": placeholder,
"value": dayValue || open.value ? _createVNode(RangePicker, _mergeProps({
"bordered": false,
"format": format
}, fieldProps, {
"placeholder": placeholder,
"value": dayValue,
"onUpdate:value": (val) => {
emit("update:value", val);
},
"onOpenChange": (isOpen) => {
var _a;
setOpen(isOpen);
(_a = fieldProps == null ? void 0 : fieldProps.onOpenChange) == null ? void 0 : _a.call(fieldProps, isOpen);
},
"open": open.value
}), null) : null,
"downIcon": dayValue || open.value ? false : void 0,
"allowClear": false
}, null);
} else {
dom = _createVNode(RangePicker, _mergeProps({
"format": format,
"bordered": plain === void 0 ? true : !plain
}, fieldProps, {
"value": dayValue,
"onUpdate:value": (val) => {
emit("update:value", val);
}
}), null);
}
if (renderFormItem) {
return renderFormItem(textValue, computed(() => __spreadValues({
mode,
value
}, fieldProps)), dom);
}
return dom;
}
return null;
};
}
});
var stdin_default = defineComponent({
name: "FieldTimePicker",
props: fieldTimeRangePickerProps,
emits: {
"update:value": (val) => true
},
setup(props, {
emit
}) {
const open = ref(false);
const intl = useIntl();
return () => {
var _a;
const {
text,
value,
mode,
light,
label,
format,
render,
renderFormItem,
plain,
fieldProps
} = props;
const textValue = text != null ? text : value;
const finalFormat = (fieldProps == null ? void 0 : fieldProps.format) || format || "HH:mm:ss";
const isNumberOrMoment = dayjs.isDayjs(textValue) || typeof textValue === "number";
if (mode === "read") {
const dom = _createVNode("span", null, [textValue ? dayjs(textValue, isNumberOrMoment ? void 0 : finalFormat).format(finalFormat) : "-"]);
if (render) {
return render(textValue, computed(() => __spreadValues({
mode
}, fieldProps)), _createVNode("span", null, [dom]));
}
return dom;
}
if (mode === "edit" || mode === "update") {
let dom;
const {
disabled
} = fieldProps;
const dayValue = parseValueToDay(value, finalFormat);
if (light) {
dom = _createVNode(FieldLabel, {
"onClick": () => {
var _a2;
(_a2 = fieldProps == null ? void 0 : fieldProps.onOpenChange) == null ? void 0 : _a2.call(fieldProps, true);
open.value = true;
},
"style": dayValue ? {
paddingInlineEnd: 0
} : void 0,
"label": label,
"disabled": disabled,
"value": dayValue || open.value ? _createVNode(TimePicker, _mergeProps({
"bordered": false,
"format": format
}, fieldProps, {
"placeholder": (_a = fieldProps.placeholder) != null ? _a : intl.getMessage("tableForm.selectPlaceholder", "\u8BF7\u9009\u62E9"),
"value": dayValue,
"onUpdate:value": (val) => {
emit("update:value", val);
},
"onOpenChange": (isOpen) => {
var _a2;
open.value = isOpen;
(_a2 = fieldProps == null ? void 0 : fieldProps.onOpenChange) == null ? void 0 : _a2.call(fieldProps, isOpen);
},
"open": open.value
}), null) : null,
"downIcon": dayValue || open.value ? false : void 0,
"allowClear": false
}, null);
} else {
dom = _createVNode(TimePicker, _mergeProps({
"format": format,
"bordered": plain === void 0 ? true : !plain
}, fieldProps, {
"value": dayValue,
"onUpdate:value": (val) => {
emit("update:value", val);
}
}), null);
}
if (renderFormItem) {
return renderFormItem(textValue, computed(() => __spreadValues({
mode,
value
}, fieldProps)), dom);
}
return dom;
}
return null;
};
}
});
export {
FieldTimeRangePicker,
stdin_default as default,
fieldTimeRangePickerProps
};