mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
106 lines (105 loc) • 4.68 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var React = _interopRequireWildcard(require("react"));
var _SuperDatePicker = _interopRequireDefault(require("./SuperDatePicker"));
var _FormItem = _interopRequireDefault(require("../FormItem"));
var _BizConfigProvider = require("../../BizConfigProvider");
var _getDefaultPopupTitle = _interopRequireDefault(require("../utils/getDefaultPopupTitle"));
var _dayjs = require("../../../utils/dayjs.util");
var _excluded = ["precision", "format", "renderLabel", "readOnly", "placeholder", "datePickerProps", "disabled", "onClick", "title", "required", "transform"];
var BizFormItemDatePicker = function BizFormItemDatePicker(props) {
var _useConfig = (0, _BizConfigProvider.useConfig)(),
locale = _useConfig.locale;
var _props$precision = props.precision,
precision = _props$precision === void 0 ? 'day' : _props$precision,
outFormat = props.format,
renderLabel = props.renderLabel,
_props$readOnly = props.readOnly,
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
_props$placeholder = props.placeholder,
placeholder = _props$placeholder === void 0 ? locale.form.common.selectPlaceholder : _props$placeholder,
datePickerProps = props.datePickerProps,
disabled = props.disabled,
onClick = props.onClick,
_props$title = props.title,
title = _props$title === void 0 ? (0, _getDefaultPopupTitle.default)(props, locale) : _props$title,
required = props.required,
outTransform = props.transform,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var _React$useState = React.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
visible = _React$useState2[0],
setVisible = _React$useState2[1];
var defaultFormat = React.useMemo(function () {
return {
year: 'YYYY',
quarter: 'YYYY-Q',
month: 'YYYY-MM',
day: 'YYYY-MM-DD',
hour: 'YYYY-MM-DD HH',
minute: 'YYYY-MM-DD HH:mm',
second: 'YYYY-MM-DD HH:mm:ss',
week: function week(date) {
var d = (0, _dayjs.dayjs)(date);
return d.format('YYYY-W') + locale.form.date.unit.week;
},
'week-day': function weekDay(date) {
var d = (0, _dayjs.dayjs)(date);
var fmtStr = d.format('YYYY-W') + locale.form.date.unit.week;
var day = d.day();
day = day === 0 ? 7 : day; // fix: 兼容处理
return "".concat(fmtStr, " ").concat(locale.form.date.weekday(day));
}
};
}, [locale.form.date]);
var format = React.useMemo(function () {
return outFormat || defaultFormat[precision] || defaultFormat.day;
}, [outFormat, precision, defaultFormat]);
var transform = React.useCallback(function (value) {
if (typeof outTransform === 'function') {
return outTransform(value);
}
if (precision !== 'week' && precision !== 'week-day' && format && value) {
return typeof format === 'function' ? format(value, precision) : (0, _dayjs.dayjs)(value).format(format);
}
return value;
}, [format, outTransform, precision]);
var handleClick = React.useCallback(function (e, widgetRef) {
if (!readOnly && !disabled) {
setVisible(true);
}
onClick === null || onClick === void 0 ? void 0 : onClick(e, widgetRef);
}, [disabled, onClick, readOnly]);
return /*#__PURE__*/React.createElement(_FormItem.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({
transform: transform,
disabled: disabled,
required: required,
rules: [{
required: required,
message: locale.form.common.selectRequired
}],
onClick: handleClick
}, restProps), {}, {
trigger: "onConfirm",
validateTrigger: "onConfirm"
}), /*#__PURE__*/React.createElement(_SuperDatePicker.default, (0, _objectSpread2.default)({
visible: visible,
onClose: function onClose() {
setVisible(false);
},
renderLabel: renderLabel,
placeholder: placeholder,
format: format,
precision: precision,
title: title
}, datePickerProps)));
};
var _default = exports.default = BizFormItemDatePicker;