UNPKG

tdesign-react

Version:
169 lines (165 loc) 7.67 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ import { _ as _defineProperty } from '../../_chunks/dep-cb0a3966.js'; import { _ as _slicedToArray } from '../../_chunks/dep-48805ab8.js'; import React, { forwardRef, useMemo } from 'react'; import classNames from 'classnames'; import { ChevronRightIcon } from 'tdesign-icons-react'; import { isFunction } from 'lodash-es'; import { Loading } from '../../loading/index.js'; import { Checkbox } from '../../checkbox/index.js'; import useConfig from '../../hooks/useConfig.js'; import useGlobalIcon from '../../hooks/useGlobalIcon.js'; import useDomRefCallback from '../../hooks/useDomRefCallback.js'; import useCommonClassName from '../../hooks/useCommonClassName.js'; import { getFullPathLabel } from '../core/helper.js'; import { getCascaderItemClass, getCascaderItemIconClass } from '../core/className.js'; import '../../_chunks/dep-eca3a3de.js'; import '../../_chunks/dep-026a4c6b.js'; import '../../loading/Loading.js'; import '../../_chunks/dep-3a09424a.js'; import '../../common/Portal.js'; import 'react-dom'; import '../../hooks/useLayoutEffect.js'; import '../../config-provider/ConfigContext.js'; import '../../locale/zh_CN.js'; import '../../_chunks/dep-e29214cb.js'; import 'dayjs'; import '../../_chunks/dep-3c9ab31a.js'; import '../../loading/gradient.js'; import '../../_chunks/dep-c48e2ca1.js'; import '../../_chunks/dep-1630b9b4.js'; import '../../_chunks/dep-87d110df.js'; import '../../_chunks/dep-6b660ef0.js'; import '../../loading/defaultProps.js'; import '../../hooks/useDefaultProps.js'; import '../../loading/plugin.js'; import '../../_util/react-render.js'; import '../../_chunks/dep-a74cc5e4.js'; import '../../common/PluginContainer.js'; import '../../config-provider/index.js'; import '../../config-provider/ConfigProvider.js'; import '../../config-provider/type.js'; import '../../loading/style/css.js'; import '../../loading/type.js'; import '../../_chunks/dep-0030a252.js'; import '../../_util/forwardRefWithStatics.js'; import 'hoist-non-react-statics'; import '../../common/Check.js'; import '../../_util/helper.js'; import '../../hooks/useControlled.js'; import '../../_util/noop.js'; import '../../checkbox/defaultProps.js'; import '../../checkbox/style/css.js'; import '../../checkbox/type.js'; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var Item = /*#__PURE__*/forwardRef(function (props, ref) { var node = props.node, optionChild = props.optionChild, multiple = props.cascaderContext.multiple, _onClick = props.onClick, _onChange = props.onChange, _onMouseEnter = props.onMouseEnter, cascaderContext = props.cascaderContext; var _useConfig = useConfig(), prefix = _useConfig.classPrefix; var _useGlobalIcon = useGlobalIcon({ ChevronRightIcon: ChevronRightIcon }), ChevronRightIcon$1 = _useGlobalIcon.ChevronRightIcon; var COMPONENT_NAME = "".concat(prefix, "-cascader__item"); var _useDomRefCallback = useDomRefCallback(), _useDomRefCallback2 = _slicedToArray(_useDomRefCallback, 2), itemDom = _useDomRefCallback2[0], setRefCurrent = _useDomRefCallback2[1]; var _useCommonClassName = useCommonClassName(), STATUS = _useCommonClassName.STATUS, SIZE = _useCommonClassName.SIZE; var itemClass = useMemo(function () { return classNames(getCascaderItemClass(prefix, node, SIZE, STATUS, cascaderContext)); }, [prefix, node, SIZE, STATUS, cascaderContext]); var iconClass = useMemo(function () { return classNames(getCascaderItemIconClass(prefix, node, STATUS, cascaderContext)); }, [prefix, node, STATUS, cascaderContext]); var RenderLabelInner = function RenderLabelInner(node2, cascaderContext2) { var inputVal = cascaderContext2.inputVal; if (!inputVal && optionChild) { return optionChild; } var labelText = inputVal ? getFullPathLabel(node2) : node2.label; if (inputVal) { var texts = labelText.split(inputVal); var doms = []; for (var index = 0; index < texts.length; index++) { doms.push(/* @__PURE__ */React.createElement("span", { key: index }, texts[index])); if (index === texts.length - 1) break; doms.push(/* @__PURE__ */React.createElement("span", { key: "".concat(index, "filter"), className: "".concat(COMPONENT_NAME, "-label--filter") }, inputVal)); } return doms; } return labelText; }; var RenderLabelContent = function RenderLabelContent(node2, cascaderContext2) { var label = RenderLabelInner(node2, cascaderContext2); var labelCont = /* @__PURE__ */React.createElement("span", { title: cascaderContext2.inputVal ? getFullPathLabel(node2) : node2.label, className: classNames("".concat(COMPONENT_NAME, "-label"), "".concat(COMPONENT_NAME, "-label--ellipsis")), role: "label" }, label); return labelCont; }; var RenderCheckBox = function RenderCheckBox(node2, cascaderContext2) { var checkProps = cascaderContext2.checkProps, value = cascaderContext2.value, max = cascaderContext2.max, inputVal = cascaderContext2.inputVal; var label = RenderLabelInner(node2, cascaderContext2); return /* @__PURE__ */React.createElement(Checkbox, _objectSpread({ checked: node2.checked, indeterminate: node2.indeterminate, disabled: node2.isDisabled() || value && value.length >= max && max !== 0, name: String(node2.value), stopLabelTrigger: !!node2.children, title: inputVal ? getFullPathLabel(node2) : node2.label, onChange: function onChange() { _onChange(node2); } }, checkProps), label); }; var isFiltering = useMemo(function () { return Boolean(cascaderContext.filterable) || isFunction(cascaderContext.filter); }, [cascaderContext.filterable, cascaderContext.filter]); return /* @__PURE__ */React.createElement("li", { ref: ref, className: itemClass, onClick: function onClick(e) { var _e$nativeEvent, _e$nativeEvent$stopIm; e.stopPropagation(); e === null || e === void 0 || (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 || (_e$nativeEvent$stopIm = _e$nativeEvent.stopImmediatePropagation) === null || _e$nativeEvent$stopIm === void 0 || _e$nativeEvent$stopIm.call(_e$nativeEvent); if (multiple && cascaderContext.inputVal && isFiltering) return; _onClick(node); }, onMouseEnter: function onMouseEnter(e) { e.stopPropagation(); if (cascaderContext.inputVal && isFiltering) return; _onMouseEnter(node); } }, multiple ? RenderCheckBox(node, cascaderContext) : RenderLabelContent(node, cascaderContext), !cascaderContext.inputVal && node.children && (node.loading ? /* @__PURE__ */React.createElement(Loading, { className: iconClass, loading: true, size: "small" }) : /* @__PURE__ */React.createElement(ChevronRightIcon$1, { className: iconClass }))); }); export { Item as default }; //# sourceMappingURL=Item.js.map