UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

82 lines 4.55 kB
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import { __rest } from "tslib"; import React, { createElement, forwardRef } from "react"; import dayjs from 'dayjs'; import Picker from '../picker'; import { useLocale } from '../locale'; import defaultLang from '../locale/lang/zh-cn'; import { getNearestDate, getRangeDate, getRealRange, isValidDate, toDate } from '../utils/date'; import { useValue } from '../utils/hooks'; import { dateToPicker, DEFAULT_FORMAT, getColumns, getTimeOption, pickerToDate } from './utils'; var EmbedPicker = function EmbedPicker(props, ref) { var _props$prefix = props.prefix, prefix = _props$prefix === void 0 ? 'mt-' : _props$prefix, valueProp = props.value, defaultValue = props.defaultValue, onChange = props.onChange, className = props.className, hourStep = props.hourStep, minuteStep = props.minuteStep, secondStep = props.secondStep, _props$format = props.format, format = _props$format === void 0 ? DEFAULT_FORMAT : _props$format, disabledHours = props.disabledHours, disabledMinutes = props.disabledMinutes, disabledSeconds = props.disabledSeconds, validRangeProp = props.validRange, others = __rest(props, ["prefix", "value", "defaultValue", "onChange", "className", "hourStep", "minuteStep", "secondStep", "format", "disabledHours", "disabledMinutes", "disabledSeconds", "validRange"]); var options = getTimeOption(props); var validRange = getRealRange(options, props, validRangeProp); var locale = useLocale('TimePicker', others, defaultLang.TimePicker); var _useValue = useValue(props, new Date(), { fitValue: function fitValue(v) { var d = toDate(v); var x = getRangeDate(isValidDate(d) ? d : new Date(), { time: options }, validRange); if (validRange && (secondStep !== 1 || minuteStep !== 1 || hourStep !== 1)) { var xt = dayjs(x).format(format); if (xt !== dayjs(validRange[0]).format(format) && xt !== dayjs(validRange[1]).format(format)) { return getNearestDate(options, props, x, 'auto'); } } return x; }, compare: function compare(a, b) { return a.getTime() === b.getTime(); } }), _useValue2 = _slicedToArray(_useValue, 3), value = _useValue2[0], setValue = _useValue2[1], isControlled = _useValue2[2]; var dataSource = getColumns(value, options, Object.assign(Object.assign({}, props), { locale: locale })); var handleChange = function handleChange(values) { var d = getRangeDate(pickerToDate(values, options), { time: options }, validRange); if (onChange) { onChange(d); } if (!isControlled) { setValue(d); } }; var pickerValue = dateToPicker(value, options); return /*#__PURE__*/React.createElement(Picker, { ref: ref, className: className, prefix: prefix, value: pickerValue, data: dataSource, onChange: handleChange }); }; export default /*#__PURE__*/forwardRef(EmbedPicker);