@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
38 lines (37 loc) • 1.78 kB
JavaScript
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
};