UNPKG

acud

Version:

acg react 组件库

739 lines (738 loc) • 37.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _get = _interopRequireDefault(require("lodash/get")); var _map = _interopRequireDefault(require("lodash/map")); var _first = _interopRequireDefault(require("lodash/first")); var _isEqual = _interopRequireDefault(require("lodash/isEqual")); var _toLower = _interopRequireDefault(require("lodash/toLower")); var _reduce = _interopRequireDefault(require("lodash/reduce")); var _react = _interopRequireWildcard(require("react")); var _classnames7 = _interopRequireDefault(require("classnames")); var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode")); var _omit = _interopRequireDefault(require("rc-util/lib/omit")); var _arrayTreeFilter = _interopRequireDefault(require("array-tree-filter")); var _OutlinedLeft = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedLeft")); var _OutlinedRight = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedRight")); var _OutlinedLoading = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedLoading")); var _OutlinedDown = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedDown")); var _input = _interopRequireDefault(require("../input")); var _tag = _interopRequireDefault(require("../tag")); var _tooltip = _interopRequireDefault(require("../tooltip")); var _clear = _interopRequireDefault(require("../clear")); var _Cascader = _interopRequireDefault(require("./Cascader")); var _renderEmpty = _interopRequireDefault(require("./renderEmpty")); var _configProvider = require("../config-provider"); var _SizeContext = _interopRequireDefault(require("../config-provider/SizeContext")); var _LocaleReceiver = _interopRequireWildcard(require("../locale-provider/LocaleReceiver")); var _reactNode = require("../_util/reactNode"); var _devWarning = _interopRequireDefault(require("../_util/devWarning")); var _motion = require("../_util/motion"); var _utils = require("./utils"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /* * @author: xuemin02 * @Date: 2021-05-11 15:52:07 */ var __rest = void 0 && (void 0).__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; ; var keepFilteredValueField = '__KEEP_FILTERED_OPTION_VALUE'; // limit the filtered item count by default var defaultLimit = 50; var highlightKeyword = function highlightKeyword(str, keyword, prefixCls) { return str.split(keyword).map(function (node, index) { return index === 0 ? node : [/*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-menu-item-keyword"), key: "seperator" }, keyword), node]; }); }; var _flattenTree = function flattenTree(options, props) { var ancestor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var names = getFilledFieldNames(props); var flattenOptions = []; var childrenName = names.children; options.forEach(function (option) { var path = ancestor.concat(option); if (props.changeOnSelect || !option[childrenName] || !option[childrenName].length) { flattenOptions.push(path); } if (option[childrenName]) { flattenOptions = flattenOptions.concat(_flattenTree(option[childrenName], props, path)); } }); return flattenOptions; }; var defaultDisplayRender = function defaultDisplayRender() { var label = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var labelLength = label.length; return (0, _reduce["default"])(label, function (prev, labelItem, labelIndex) { var isLast = labelIndex === labelLength - 1; var seperator = isLast ? '' : '>'; if ((0, _utils.isPureType)(prev) && (0, _utils.isPureType)(labelItem)) { return prev + labelItem + seperator; } return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, prev, labelItem, seperator); }, ''); }; var defaultFilterOption = function defaultFilterOption(inputValue, path, names) { return path.some(function (option) { if (typeof option[names.label] === 'string') { return (0, _toLower["default"])(option[names.label]).indexOf((0, _toLower["default"])(inputValue)) > -1; } return false; }); }; var defaultRenderFilteredOption = function defaultRenderFilteredOption(inputValue, path, prefixCls, names) { return path.map(function (option, index) { var label = option[names.label]; var node = label; if (typeof label === 'string' && label.indexOf(inputValue) > -1) { node = highlightKeyword(label, inputValue, prefixCls); } return index === 0 ? node : ['>', node]; }); }; var defaultSortFilteredOption = function defaultSortFilteredOption(a, b, inputValue, names) { var callback = function callback(elem) { if (typeof elem[names.label] === 'string') { return elem[names.label].indexOf(inputValue) > -1; } return false; }; return a.findIndex(callback) - b.findIndex(callback); }; var getFieldNames = function getFieldNames(_ref) { var fieldNames = _ref.fieldNames; return fieldNames; }; var getFilledFieldNames = function getFilledFieldNames(props) { var fieldNames = getFieldNames(props) || {}; var names = { children: fieldNames.children || 'children', label: fieldNames.label || 'label', value: fieldNames.value || 'value' }; return names; }; var getEmptyNode = function getEmptyNode(names, notFoundContent) { return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, names.value, 'ACUD_CASCADER_NOT_FOUND'), names.label, notFoundContent), "disabled", true), "isEmptyNode", true); }; var Cascader = function Cascader(props, ref) { var mode = props.mode, popupPlacement = props.popupPlacement, cascaderLocale = props.locale, onClear = props.onClear; var _useLocaleReceiver = (0, _LocaleReceiver.useLocaleReceiver)('Cascader'), _useLocaleReceiver2 = (0, _slicedToArray2["default"])(_useLocaleReceiver, 1), defaultLocale = _useLocaleReceiver2[0]; var locale = (0, _extends2["default"])((0, _extends2["default"])({}, defaultLocale), cascaderLocale); var inputRef = (0, _react.useRef)(); var cachedRef = (0, _react.useRef)({}); var measureRef = (0, _react.useRef)(); var pickerRef = (0, _react.useRef)(); var pickerLabelRef = (0, _react.useRef)(); var tagsRef = (0, _react.useRef)(); var _useState = (0, _react.useState)(props.value || props.defaultValue), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), value = _useState2[0], setValue = _useState2[1]; var _useState3 = (0, _react.useState)(''), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), inputValue = _useState4[0], setInputValue = _useState4[1]; var _useState5 = (0, _react.useState)(0), _useState6 = (0, _slicedToArray2["default"])(_useState5, 2), inputWidth = _useState6[0], setInputWidth = _useState6[1]; var _useState7 = (0, _react.useState)(false), _useState8 = (0, _slicedToArray2["default"])(_useState7, 2), inputFocused = _useState8[0], setInputFocused = _useState8[1]; var _useState9 = (0, _react.useState)(false), _useState0 = (0, _slicedToArray2["default"])(_useState9, 2), inputCompositionStart = _useState0[0], setInputCompositionStart = _useState0[1]; var _useState1 = (0, _react.useState)(props.popupVisible), _useState10 = (0, _slicedToArray2["default"])(_useState1, 2), popupVisible = _useState10[0], setPopupVisible = _useState10[1]; var _useState11 = (0, _react.useState)(false), _useState12 = (0, _slicedToArray2["default"])(_useState11, 2), pickerLabelOverflow = _useState12[0], setPickerLabelOverflow = _useState12[1]; var isMulti = mode === 'multiple'; var flattenOptions = (0, _react.useMemo)(function () { var showSearch = props.showSearch, options = props.options; return showSearch ? _flattenTree(options, props) : undefined; }, [props]); var disabledValue = (0, _react.useMemo)(function () { var options = props.options; var flattenOptions = _flattenTree(options, props); var disabledOptions = flattenOptions.filter(function (options) { return options.some(function (option) { return option.disabled; }); }); var names = getFilledFieldNames(props); return disabledOptions.map(function (options) { return options.map(function (o) { return o[names.value]; }); }); }, [props]); var focus = (0, _react.useCallback)(function () { var _a; (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []); var blur = (0, _react.useCallback)(function () { var _a; (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur(); }, []); var getPopupPlacement = (0, _react.useCallback)(function () { var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'ltr'; if (popupPlacement !== undefined) { return popupPlacement; } return direction === 'rtl' ? 'bottomRight' : 'bottomLeft'; }, [popupPlacement]); var generateFilteredOptions = (0, _react.useCallback)(function (prefixCls, renderEmpty) { var showSearch = props.showSearch, notFoundContent = props.notFoundContent; var names = getFilledFieldNames(props); var _showSearch$filter = showSearch.filter, filter = _showSearch$filter === void 0 ? defaultFilterOption : _showSearch$filter, _showSearch$render = showSearch.render, render = _showSearch$render === void 0 ? defaultRenderFilteredOption : _showSearch$render, _showSearch$sort = showSearch.sort, sort = _showSearch$sort === void 0 ? defaultSortFilteredOption : _showSearch$sort, _showSearch$limit = showSearch.limit, limit = _showSearch$limit === void 0 ? defaultLimit : _showSearch$limit; var filtered; if (limit > 0) { filtered = []; var matchCount = 0; flattenOptions.some(function (path) { var match = filter(inputValue, path, names); if (match) { filtered.push(path); matchCount += 1; } return matchCount >= limit; }); } else { (0, _devWarning["default"])(typeof limit !== 'number', 'Cascader', "'limit' of showSearch should be positive number or false."); filtered = flattenOptions.filter(function (path) { return filter(inputValue, path, names); }); } filtered = filtered.sort(function (a, b) { return sort(a, b, inputValue, names); }); if (filtered.length > 0) { var field = names.value === names.label ? keepFilteredValueField : names.value; return filtered.map(function (path) { return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({ __IS_FILTERED_OPTION: true, path: path }, field, path.map(function (o) { return o[names.value]; })), names.label, render(inputValue, path, prefixCls, names)), "disabled", path.some(function (o) { return !!o.disabled; })), "isEmptyNode", true); }); } return [getEmptyNode(names, notFoundContent || renderEmpty(locale.empty))]; }, [props, inputValue, flattenOptions, locale.empty]); var updateValue = (0, _react.useCallback)(function (value) { var selectedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var _a; if (!('value' in props)) { setValue(value); } (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, value, selectedOptions); }, [props]); var handleMouseDown = (0, _react.useCallback)(function (e) { e.preventDefault(); }, []); var handlePickerLabelHover = (0, _react.useCallback)(function () { var ele = pickerLabelRef.current; var overflow = (ele === null || ele === void 0 ? void 0 : ele.scrollWidth) > (ele === null || ele === void 0 ? void 0 : ele.clientWidth); setPickerLabelOverflow(overflow); }, []); var handleClick = (0, _react.useCallback)(function (e) { if (e.target !== inputRef.current) { var isIE = document.body.style.msTouchAction !== undefined; if (isIE) { window.setTimeout(function () { focus(); }); } else { focus(); } } }, [focus]); var handlePopupVisibleChange = (0, _react.useCallback)(function (popupVisible) { var _a; if (!('popupVisible' in props)) { setPopupVisible(popupVisible); setInputFocused(popupVisible); setInputValue(function (prevInputValue) { return popupVisible ? prevInputValue : ''; }); } (_a = props.onPopupVisibleChange) === null || _a === void 0 ? void 0 : _a.call(props, popupVisible); }, [props]); var handleValueChange = (0, _react.useCallback)(function (value, selectedOptions) { !isMulti && setInputValue(''); var selectedOptionFirst = isMulti ? {} : selectedOptions[0]; if (selectedOptionFirst === null || selectedOptionFirst === void 0 ? void 0 : selectedOptionFirst.__IS_FILTERED_OPTION) { var unwrappedValue = selectedOptionFirst[keepFilteredValueField] === undefined ? (0, _first["default"])(value) : selectedOptionFirst[keepFilteredValueField]; var unwrappedSelectedOptions = selectedOptionFirst.path; updateValue(unwrappedValue, unwrappedSelectedOptions); return; } updateValue(value, selectedOptions); if (isMulti) { window.setTimeout(function () { var _tagsRef$current = tagsRef.current, scrollHeight = _tagsRef$current.scrollHeight, clientHeight = _tagsRef$current.clientHeight; var maxScrollTop = scrollHeight - clientHeight; tagsRef.current.scrollTop = maxScrollTop > 0 ? maxScrollTop : 0; }, 100); } }, [isMulti, updateValue]); var handleInputClick = (0, _react.useCallback)(function (e) { if (inputFocused || popupVisible) { e.stopPropagation(); } }, [inputFocused, popupVisible]); var handleInputBlur = (0, _react.useCallback)(function () { return setInputFocused(false); }, []); var handleInputFocus = (0, _react.useCallback)(function () { return setInputFocused(true); }, []); var handleInputKeyDown = (0, _react.useCallback)(function (e, firstFilteredOptionValue) { if (e.keyCode === _KeyCode["default"].BACKSPACE || e.keyCode === _KeyCode["default"].SPACE) { e.stopPropagation(); } if (e.keyCode === _KeyCode["default"].ENTER && firstFilteredOptionValue) { var options = props.options; var names = getFilledFieldNames(props); var newValue = isMulti ? function () { if ((0, _utils.isIncludeArray)(value, firstFilteredOptionValue)) { return value; } return [].concat((0, _toConsumableArray2["default"])(value), [firstFilteredOptionValue]); }() : firstFilteredOptionValue; var selectedOptions = isMulti ? (0, _map["default"])(newValue, function (valueItem) { return (0, _arrayTreeFilter["default"])(options, function (o, level) { return o[names.value] === valueItem[level]; }, { childrenKeyName: names.children }); }) : (0, _arrayTreeFilter["default"])(options, function (o, level) { return o[names.value] === (0, _get["default"])(firstFilteredOptionValue, level); }, { childrenKeyName: names.children }); updateValue(newValue, selectedOptions); setInputValue(''); handlePopupVisibleChange(false); } }, [isMulti, value, props, updateValue, handlePopupVisibleChange]); var handleInputChange = (0, _react.useCallback)(function (e) { if (!popupVisible) { handlePopupVisibleChange(true); } var inputValue = e.target.value; setInputValue(inputValue); }, [popupVisible, handlePopupVisibleChange]); var handleCompositionStart = (0, _react.useCallback)(function (compositionStart) { setInputCompositionStart(compositionStart); }, []); var handleSelectionItemClear = (0, _react.useCallback)(function (e, valueIndex) { e.preventDefault(); e.stopPropagation(); var newValue = value.filter(function (valueItem) { return !(0, _utils.isEqualArrays)(valueItem, value[valueIndex]); }); var options = props.options; var names = getFilledFieldNames(props); var selectedOptions = (0, _map["default"])(newValue, function (valueItem) { return (0, _arrayTreeFilter["default"])(options, function (o, level) { return o[names.value] === valueItem[level]; }, { childrenKeyName: names.children }); }); updateValue(newValue, selectedOptions); }, [value, updateValue, props]); var handleSelectionClear = (0, _react.useCallback)(function (e) { e.preventDefault(); e.stopPropagation(); if (!inputValue) { handlePopupVisibleChange(false); cachedRef.current.clearSelectionTimer = window.setTimeout(function () { updateValue([]); }, 200); } else { setInputValue(''); } // 调用onClear清空函数 onClear && onClear(); }, [inputValue, updateValue, handlePopupVisibleChange, onClear]); var label = (0, _react.useMemo)(function () { var options = props.options, _props$displayRender = props.displayRender, displayRender = _props$displayRender === void 0 ? defaultDisplayRender : _props$displayRender; var names = getFilledFieldNames(props); if (isMulti) { var _selectedOptions = (0, _map["default"])(value, function (valueItem) { return (0, _arrayTreeFilter["default"])(options, function (o, level) { return o[names.value] === valueItem[level]; }, { childrenKeyName: names.children }); }); var _label = _selectedOptions.length ? _selectedOptions.map(function (o) { return o.map(function (q) { return q[names.label]; }); }) : value; return (0, _map["default"])(_label, function (labelItem) { return displayRender(labelItem, _selectedOptions); }); } var unwrappedValue = Array.isArray((0, _first["default"])(value)) ? (0, _first["default"])(value) : value; var selectedOptions = (0, _arrayTreeFilter["default"])(options, function (o, level) { return o[names.value] === (0, _get["default"])(unwrappedValue, level); }, { childrenKeyName: names.children }); var label = selectedOptions.length ? selectedOptions.map(function (o) { return o[names.label]; }) : value; return displayRender(label, selectedOptions); }, [isMulti, value, props]); var renderCascader = (0, _react.useCallback)(function (context, defaultLocale, size) { var _a, _b; var locale = (0, _extends2["default"])((0, _extends2["default"])({}, defaultLocale), props.locale); var customizePrefixCls = props.prefixCls, customizeInputPrefixCls = props.inputPrefixCls, className = props.className, customizeSize = props.size, _props$disabled = props.disabled, disabled = _props$disabled === void 0 ? false : _props$disabled, _props$bordered = props.bordered, bordered = _props$bordered === void 0 ? true : _props$bordered, _props$allowClear = props.allowClear, allowClear = _props$allowClear === void 0 ? true : _props$allowClear, _props$showSearch = props.showSearch, showSearch = _props$showSearch === void 0 ? false : _props$showSearch, style = props.style, _props$placeholder = props.placeholder, placeholder = _props$placeholder === void 0 ? locale.placeholder || 'Please select' : _props$placeholder, expandIcon = props.expandIcon, suffixIcon = props.suffixIcon, popupClassName = props.popupClassName, notFoundContent = props.notFoundContent, _props$maxTagTextLeng = props.maxTagTextLength, maxTagTextLength = _props$maxTagTextLeng === void 0 ? 8 : _props$maxTagTextLeng, maxTagCount = props.maxTagCount, _props$showCheckAll = props.showCheckAll, showCheckAll = _props$showCheckAll === void 0 ? true : _props$showCheckAll, dropdownRender = props.dropdownRender, children = props.children, otherProps = __rest(props, ["prefixCls", "inputPrefixCls", "className", "size", "disabled", "bordered", "allowClear", "showSearch", "style", "placeholder", "expandIcon", "suffixIcon", "popupClassName", "notFoundContent", "maxTagTextLength", "maxTagCount", "showCheckAll", "dropdownRender", "children"]); var getContextPopupContainer = context.getPopupContainer, getPrefixCls = context.getPrefixCls, direction = context.direction; var isRtlLayout = direction === 'rtl'; var mergedSize = customizeSize || size; var prefixCls = getPrefixCls('cascader', customizePrefixCls); var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls); var sizeCls = (0, _classnames7["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(inputPrefixCls, "-lg"), mergedSize === 'large'), "".concat(inputPrefixCls, "-sm"), mergedSize === 'small')); var pickerCls = (0, _classnames7["default"])("".concat(prefixCls, "-picker"), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-picker-multi"), isMulti), "".concat(prefixCls, "-picker-rtl"), isRtlLayout), "".concat(prefixCls, "-picker-with-input-value"), inputValue), "".concat(prefixCls, "-picker-disabled"), disabled), "".concat(prefixCls, "-picker-lg"), mergedSize === 'large'), "".concat(prefixCls, "-picker-sm"), mergedSize === 'small'), "".concat(prefixCls, "-picker-show-search"), !!showSearch), "".concat(prefixCls, "-picker-focused"), inputFocused), "".concat(prefixCls, "-picker-expand"), popupVisible), "".concat(prefixCls, "-picker-borderless"), !bordered), className); var arrowCls = (0, _classnames7["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-picker-arrow"), true), "".concat(prefixCls, "-picker-arrow-expand"), popupVisible)); var options = props.options; var names = getFilledFieldNames(props); var isOptionsEmpty = !(options && options.length > 0); if (!isOptionsEmpty) { if (inputValue) { options = generateFilteredOptions(prefixCls, function () { return (0, _renderEmpty["default"])(locale.filterEmpty); }); } } else { options = [getEmptyNode(names, notFoundContent || (0, _renderEmpty["default"])(locale.empty))]; } if (!popupVisible) { options = ((_a = cachedRef.current) === null || _a === void 0 ? void 0 : _a.options) || []; } else { cachedRef.current.options = options; } var expandIconNode = expandIcon || (isRtlLayout ? /*#__PURE__*/_react["default"].createElement(_OutlinedLeft["default"], null) : /*#__PURE__*/_react["default"].createElement(_OutlinedRight["default"], null)); var loadingIcon = /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-menu-item-loading-icon") }, /*#__PURE__*/_react["default"].createElement(_OutlinedLoading["default"], { animation: "spin" })); var clearIcon = allowClear && !disabled && (0, _get["default"])(value, 'length') > 0 || inputValue ? /*#__PURE__*/_react["default"].createElement(_clear["default"], { className: "".concat(prefixCls, "-picker-clear"), onClick: handleSelectionClear }) : null; var inputIcon = suffixIcon ? (0, _reactNode.replaceElement)(suffixIcon, /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-picker-arrow"), "aria-disabled": disabled }, suffixIcon), function () { return { className: (0, _classnames7["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, suffixIcon.props.className, suffixIcon.props.className), "".concat(prefixCls, "-picker-arrow"), true)), disabled: disabled }; }) : /*#__PURE__*/_react["default"].createElement(_OutlinedDown["default"], { className: arrowCls, disabled: disabled }); var multiLabelContent = function () { if (!isMulti) { return null; } var multiLabel = label; var extraCount = 0; var extraLabelsTip; if (typeof maxTagCount === 'number' && maxTagCount >= 0) { multiLabel = label.slice(0, maxTagCount); extraCount = label.length - maxTagCount; if (extraCount > 0) { var extraLabels = label.slice(maxTagCount); extraLabelsTip = extraLabels.map(function (label) { return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-tag-tooltip-label-item") }, label); }); } } return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, multiLabel.map(function (labelItem, labelIndex) { var displayLabel = labelItem; var isPure = typeof maxTagTextLength === 'number' && (0, _utils.isPureType)(labelItem); if (isPure) { var strLabel = String(displayLabel); if (strLabel.length > maxTagTextLength) { displayLabel = "".concat(strLabel.slice(0, maxTagTextLength), "..."); } } var tagCls = (0, _classnames7["default"])("".concat(prefixCls, "-tag"), (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-tag-mixed"), !isPure)); var currentItemValue = value[labelIndex]; var closable = !(0, _utils.isIncludeArray)(disabledValue, currentItemValue); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-tag-wrap"), key: labelIndex }, /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: labelItem, overlayClassName: "".concat(prefixCls, "-tag-tooltip") }, /*#__PURE__*/_react["default"].createElement(_tag["default"], { className: tagCls, disabled: disabled, closable: closable, onClose: function onClose(e) { return !disabled && handleSelectionItemClear(e, labelIndex); } }, displayLabel))); }), extraCount > 0 && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: extraLabelsTip, overlayClassName: "".concat(prefixCls, "-tag-tooltip") }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-tag-wrap"), key: "extra" }, /*#__PURE__*/_react["default"].createElement(_tag["default"], { className: "".concat(prefixCls, "-tag") }, "+ ", extraCount, " ...")))); }(); var getPopupContainer = props.getPopupContainer || getContextPopupContainer; var rcCascaderPopupClassName = (0, _classnames7["default"])(popupClassName, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-menu-").concat(direction), direction === 'rtl'), "".concat(prefixCls, "-menu-search"), showSearch && inputValue), "".concat(prefixCls, "-menu-empty"), options.length === 1 && (options[0][names.value] === 'ACUD_CASCADER_NOT_FOUND' || /*#__PURE__*/_react["default"].isValidElement(options[0][names.value])))); var dropdownMenuColumnStyle = {}; var isNotFound = (options || []).length === 1 && options[0].isEmptyNode; if (isNotFound) { dropdownMenuColumnStyle.height = 'auto'; } var resultListMatchInputWidth = showSearch.matchInputWidth !== false; if (resultListMatchInputWidth && (inputValue || isNotFound) && pickerRef.current) { var pickerWidth = (_b = pickerRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth; dropdownMenuColumnStyle.width = pickerWidth; dropdownMenuColumnStyle.maxWidth = pickerWidth; } var inputProps = (0, _omit["default"])( // Not know why these props left otherProps, ['onChange', 'onClear', 'options', 'popupPlacement', 'transitionName', 'displayRender', 'onPopupVisibleChange', 'onDropdownMenuScroll', 'changeOnSelect', 'expandTrigger', 'popupVisible', 'getPopupContainer', 'loadData', 'filterOption', 'renderFilteredOption', 'sortFilteredOption', 'fieldNames', 'mode', 'menusEdgeBuffer', 'dropdownMenuRender', 'virtual']); var firstFilteredOptionValue = function () { var firstOption = (0, _first["default"])(options); var _ref4 = firstOption || {}, isFilteredOption = _ref4.__IS_FILTERED_OPTION, disabled = _ref4.disabled, value = _ref4.value; if (isFilteredOption && !disabled) { return value; } }(); var customInput = isMulti ? /*#__PURE__*/_react["default"].createElement("div", { ref: pickerRef, style: style, className: pickerCls, "aria-disabled": disabled, onClick: showSearch ? handleClick : undefined, onMouseDown: showSearch ? handleMouseDown : undefined }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-tags ").concat(sizeCls), ref: tagsRef }, multiLabelContent, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-input-wrap"), style: { width: value && value.length ? inputWidth : '100%' }, onClick: showSearch ? focus : undefined, onFocus: showSearch ? focus : undefined, onBlur: showSearch ? blur : undefined }, /*#__PURE__*/_react["default"].createElement(_input["default"], (0, _extends2["default"])({}, inputProps, { tabIndex: -1, ref: inputRef, prefixCls: inputPrefixCls, placeholder: value && value.length > 0 ? '' : placeholder, className: "".concat(prefixCls, "-input ").concat(sizeCls), value: inputValue, disabled: disabled, readOnly: !showSearch, autoComplete: inputProps.autoComplete || 'off', onClick: showSearch ? handleInputClick : undefined, onBlur: showSearch ? handleInputBlur : undefined, onFocus: showSearch ? handleInputFocus : undefined, onKeyDown: function onKeyDown(e) { return handleInputKeyDown(e, firstFilteredOptionValue); }, onChange: showSearch ? handleInputChange : undefined })), /*#__PURE__*/_react["default"].createElement("span", { ref: measureRef, className: "".concat(prefixCls, "-mirror"), "aria-hidden": true }, inputValue, "\xA0"))), clearIcon, inputIcon) : /*#__PURE__*/_react["default"].createElement("span", { ref: pickerRef, style: style, className: pickerCls, "aria-disabled": disabled, onClick: showSearch ? handleClick : undefined }, label && !inputValue && !inputCompositionStart && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: pickerLabelOverflow ? label : undefined, overlayClassName: "".concat(prefixCls, "-picker-label-tooltip") }, /*#__PURE__*/_react["default"].createElement("span", { ref: pickerLabelRef, className: "".concat(prefixCls, "-picker-label"), "aria-disabled": disabled, onMouseOver: handlePickerLabelHover }, label)), /*#__PURE__*/_react["default"].createElement(_input["default"], (0, _extends2["default"])({}, inputProps, { tabIndex: -1, ref: inputRef, prefixCls: inputPrefixCls, placeholder: value && value.length > 0 ? '' : placeholder, className: "".concat(prefixCls, "-input ").concat(sizeCls), value: inputValue, disabled: disabled, readOnly: !showSearch, autoComplete: inputProps.autoComplete || 'off', onClick: showSearch ? handleInputClick : undefined, onBlur: showSearch ? handleInputBlur : undefined, onKeyDown: function onKeyDown(e) { return handleInputKeyDown(e, firstFilteredOptionValue); }, onChange: showSearch ? handleInputChange : undefined, onCompositionStart: showSearch ? function () { return handleCompositionStart(true); } : undefined, onCompositionEnd: showSearch ? function () { return handleCompositionStart(false); } : undefined })), clearIcon, inputIcon); var input = children || customInput; var rcCascaderProps = (0, _omit["default"])(props, ['inputIcon', 'expandIcon', 'loadingIcon', 'bordered', 'className']); var rootPrefixCls = getPrefixCls(); var firstOptionValue = (0, _get["default"])(props, 'options[0].value'); var initialActiveValue = firstOptionValue !== undefined ? [firstOptionValue] : undefined; return /*#__PURE__*/_react["default"].createElement(_Cascader["default"], (0, _extends2["default"])({}, rcCascaderProps, { value: value, initialActiveValue: initialActiveValue, options: options, originOptions: props.options, keyword: inputValue, prefixCls: prefixCls, expandIcon: expandIconNode, loadingIcon: loadingIcon, size: mergedSize, withCheckAll: inputValue ? false : showCheckAll, locale: locale, getPopupContainer: getPopupContainer, popupVisible: popupVisible, popupClassName: rcCascaderPopupClassName, popupPlacement: getPopupPlacement(direction), dropdownMenuColumnStyle: dropdownMenuColumnStyle, dropdownRender: dropdownRender, transitionName: (0, _motion.getTransitionName)(rootPrefixCls, 'slide-up', props.transitionName), onPopupVisibleChange: handlePopupVisibleChange, onChange: handleValueChange }), input); }, [props, isMulti, label, value, disabledValue, pickerLabelOverflow, inputValue, inputWidth, inputFocused, inputCompositionStart, popupVisible, blur, focus, getPopupPlacement, generateFilteredOptions, handleClick, handleMouseDown, handlePickerLabelHover, handleInputClick, handleInputBlur, handleInputFocus, handleInputKeyDown, handleInputChange, handleCompositionStart, handleSelectionClear, handleSelectionItemClear, handleValueChange, handlePopupVisibleChange]); (0, _react.useImperativeHandle)(ref, function () { return { focus: focus, blur: blur }; }); (0, _react.useLayoutEffect)(function () { measureRef.current && setInputWidth(measureRef.current.scrollWidth); }, [inputValue]); (0, _react.useEffect)(function () { var _a; var clearSelectionTimer = (_a = cachedRef.current) === null || _a === void 0 ? void 0 : _a.clearSelectionTimer; return function () { if (clearSelectionTimer) { clearTimeout(clearSelectionTimer); } }; }, []); (0, _react.useEffect)(function () { setValue(function (prevValue) { return 'value' in props && !(0, _isEqual["default"])(prevValue, props.value) ? props.value : prevValue; }); }, [props.value]); (0, _react.useEffect)(function () { if ('popupVisible' in props) { setPopupVisible(props.popupVisible); } }, [props.popupVisible]); return /*#__PURE__*/_react["default"].createElement(_configProvider.ConfigConsumer, null, function (context) { return /*#__PURE__*/_react["default"].createElement(_LocaleReceiver["default"], { componentName: "Cascader" }, function (locale) { return /*#__PURE__*/_react["default"].createElement(_SizeContext["default"].Consumer, null, function (size) { return renderCascader(context, locale, size); }); }); }); }; var _default = exports["default"] = /*#__PURE__*/(0, _react.forwardRef)(Cascader);