UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

105 lines (104 loc) 4.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _SuperDatePicker = _interopRequireDefault(require("./SuperDatePicker")); var _FormItem = _interopRequireDefault(require("../FormItem")); var _BizConfigProvider = require("../../BizConfigProvider"); var _getDefaultPopupTitle = _interopRequireDefault(require("../utils/getDefaultPopupTitle")); var _dayjsUtil = require("../../../utils/dayjsUtil"); 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.default.useState(false), _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2), visible = _React$useState2[0], setVisible = _React$useState2[1]; var defaultFormat = _react.default.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, _dayjsUtil.dayjs)(date); return d.format('YYYY-W') + locale.form.date.unit.week; }, 'week-day': function weekDay(date) { var d = (0, _dayjsUtil.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.default.useMemo(function () { return outFormat || defaultFormat[precision] || defaultFormat.day; }, [outFormat, precision, defaultFormat]); var transform = _react.default.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, _dayjsUtil.dayjs)(value).format(format); } return value; }, [format, outTransform, precision]); var handleClick = _react.default.useCallback(function (e, widgetRef) { if (!readOnly && !disabled) { setVisible(true); } onClick === null || onClick === void 0 || onClick(e, widgetRef); }, [disabled, onClick, readOnly]); return /*#__PURE__*/_react.default.createElement(_FormItem.default, (0, _extends2.default)({ transform: transform, disabled: disabled, required: required, rules: [{ required: required, message: locale.form.common.selectRequired }], onClick: handleClick }, restProps, { trigger: "onConfirm", validateTrigger: "onConfirm" }), /*#__PURE__*/_react.default.createElement(_SuperDatePicker.default, (0, _extends2.default)({ visible: visible, onClose: function onClose() { setVisible(false); }, renderLabel: renderLabel, placeholder: placeholder, format: format, precision: precision, title: title }, datePickerProps))); }; var _default = exports.default = BizFormItemDatePicker;