UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

38 lines (37 loc) 1.78 kB
import React__default, { useMemo, useCallback } from "react"; import classNames from "classnames"; import { C as ComponentDefaults } from "./typings.js"; const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { activeDate: "", activeTime: [], options: [], optionKey: { valueKey: "value", textKey: "text", childrenKey: "children" }, onSelect: () => { } }); const TimeDetail = (props) => { const { options, optionKey, className, activeDate, activeTime, onSelect } = Object.assign(Object.assign({}, defaultProps), props); const classPrefix = "nut-timedetail"; const timeList = useMemo(() => { return (options === null || options === void 0 ? void 0 : options.find((item) => item[optionKey.valueKey] === activeDate)) || { [optionKey.childrenKey]: [] }; }, [options, optionKey, activeDate]); const isActive = useCallback((timeKey) => { const date = activeTime.find((item) => { return item[optionKey.valueKey] === activeDate; }); if (date === null || date === void 0 ? void 0 : date[optionKey.childrenKey]) { const time = date === null || date === void 0 ? void 0 : date[optionKey.childrenKey].find((time2) => { return time2[optionKey.valueKey] === timeKey; }); return time; } return false; }, [activeTime, optionKey, activeDate]); return React__default.createElement("div", { className: classNames(classPrefix, className) }, timeList[optionKey.childrenKey].map((item) => React__default.createElement("span", { className: classNames(`${classPrefix}-item`, { active: isActive(item[optionKey.valueKey]) }), key: item[optionKey.valueKey], onClick: () => onSelect(item) }, item[optionKey.textKey]))); }; TimeDetail.displayName = "NutTimeDetail"; export { TimeDetail as default };