UNPKG

test-nut-ui

Version:

<p align="center"> <img alt="logo" src="https://img11.360buyimg.com/imagetools/jfs/t1/211965/25/7152/22022/61b16785E433119bb/aa41d7a9f7e823f3.png" width="150" style="margin-bottom: 10px;"> </p>

143 lines (142 loc) 6.53 kB
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; var _excluded = ["visible", "className", "style", "title", "defaultValue", "options", "optionKey", "multiple", "onSelect", "onDateChange", "onTimeChange"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), true).forEach(function(key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import React__default, { useState } from "react"; import classNames from "classnames"; import Popup from "./Popup.js"; import TimeDetail from "./TimeDetail.js"; import { C as ComponentDefaults } from "./typings.js"; import { useConfig } from "./ConfigProvider.js"; var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, { visible: false, multiple: false, defaultValue: [], options: [], optionKey: { valueKey: "value", textKey: "text", childrenKey: "children" } }); var TimeSelect = function TimeSelect2(props) { var _useConfig = useConfig(), locale = _useConfig.locale; var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), visible = _defaultProps$props.visible, className = _defaultProps$props.className, style = _defaultProps$props.style, title = _defaultProps$props.title, defaultValue = _defaultProps$props.defaultValue, options = _defaultProps$props.options, optionKey = _defaultProps$props.optionKey, multiple = _defaultProps$props.multiple, onSelect = _defaultProps$props.onSelect, onDateChange = _defaultProps$props.onDateChange, onTimeChange = _defaultProps$props.onTimeChange, rest = _objectWithoutProperties(_defaultProps$props, _excluded); var _useState = useState(function() { if (defaultValue !== null && defaultValue !== void 0 && defaultValue.length) { return defaultValue[0][optionKey.valueKey]; } if (options !== null && options !== void 0 && options.length) { return options[0][optionKey.valueKey]; } return ""; }), _useState2 = _slicedToArray(_useState, 2), activeDate = _useState2[0], setActiveDate = _useState2[1]; var _useState3 = useState(function() { return defaultValue || []; }), _useState4 = _slicedToArray(_useState3, 2), activeTime = _useState4[0], setActiveTime = _useState4[1]; var classPrefix = "nut-timeselect"; var closeFun = function closeFun2() { onSelect && onSelect(activeTime); }; var handleSelectTime = function handleSelectTime2(selectTime) { var newActiveTime = _toConsumableArray(activeTime); var date = newActiveTime.find(function(item) { return item[optionKey.valueKey] === activeDate; }); if (date) { var timeIndex = date[optionKey.childrenKey].findIndex(function(time) { return time[optionKey.valueKey] === selectTime[optionKey.valueKey]; }); if (timeIndex > -1) { if (multiple) { date[optionKey.childrenKey].splice(timeIndex, 1); } else { newActiveTime = []; } } else if (multiple) { date[optionKey.childrenKey].push(_objectSpread({}, selectTime)); } else { var _ref; newActiveTime = [(_ref = {}, _defineProperty(_ref, optionKey.valueKey, activeDate), _defineProperty(_ref, optionKey.childrenKey, [_objectSpread({}, selectTime)]), _ref)]; } } else if (multiple) { var _newActiveTime$push; newActiveTime.push((_newActiveTime$push = {}, _defineProperty(_newActiveTime$push, optionKey.valueKey, activeDate), _defineProperty(_newActiveTime$push, optionKey.childrenKey, [_objectSpread({}, selectTime)]), _newActiveTime$push)); } else { var _ref2; newActiveTime = [(_ref2 = {}, _defineProperty(_ref2, optionKey.valueKey, activeDate), _defineProperty(_ref2, optionKey.childrenKey, [_objectSpread({}, selectTime)]), _ref2)]; } newActiveTime = newActiveTime.filter(function(item) { var _item$optionKey$child; return ((_item$optionKey$child = item[optionKey.childrenKey]) === null || _item$optionKey$child === void 0 ? void 0 : _item$optionKey$child.length) > 0; }); setActiveTime(newActiveTime); onTimeChange && onTimeChange(selectTime, newActiveTime); }; var handleChange = function handleChange2(date) { setActiveDate(date[optionKey.valueKey]); onDateChange && onDateChange(date, activeTime); }; return React__default.createElement(Popup, _objectSpread({ closeable: true, round: true, visible, position: "bottom", style: _objectSpread({ width: "100%", height: "20%" }, style), onClose: closeFun }, rest), React__default.createElement("div", { className: classNames(classPrefix, className) }, React__default.createElement("div", { className: "".concat(classPrefix, "__title") }, title || locale.timeselect.pickupTime), React__default.createElement("div", { className: "".concat(classPrefix, "__content") }, React__default.createElement("div", { className: "".concat(classPrefix, "__content-left") }, options.map(function(item) { return React__default.createElement("div", { key: item[optionKey.valueKey], className: classNames("nut-timepannel", { active: item[optionKey.valueKey] === activeDate }), onClick: function onClick() { return handleChange(item); } }, item[optionKey.textKey]); })), React__default.createElement(TimeDetail, { options, optionKey, activeDate, activeTime, onSelect: handleSelectTime })))); }; TimeSelect.defaultProps = defaultProps; TimeSelect.displayName = "NutTimeSelect"; export { TimeSelect as default };