UNPKG

@zohodesk/components

Version:

Dot UI is a customizable React component library built to deliver a clean, accessible, and developer-friendly UI experience. It offers a growing set of reusable components designed to align with modern design systems and streamline application development

677 lines (592 loc) • 34.8 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.AdvancedMultiSelectComponent = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = require("./props/propTypes"); var _defaultProps = require("./props/defaultProps"); var _constants = require("./constants"); var _MultiSelect = require("./MultiSelect"); var _SelectedOptions = _interopRequireDefault(require("./SelectedOptions")); var _Suggestions = _interopRequireDefault(require("./Suggestions")); var _EmptyState = _interopRequireDefault(require("./EmptyState")); var _MultiSelectHeader = _interopRequireDefault(require("./MultiSelectHeader")); var _Popup = _interopRequireDefault(require("../Popup/Popup")); var _TextBoxIcon = _interopRequireDefault(require("../TextBoxIcon/TextBoxIcon")); var _Layout = require("../Layout"); var _Card = _interopRequireWildcard(require("../Card/Card")); var _icons = require("@zohodesk/icons"); var _IdProvider = require("../Provider/IdProvider"); var _ResponsiveDropBox = _interopRequireDefault(require("../ResponsiveDropBox/ResponsiveDropBox")); var _CustomResponsive = require("../Responsive/CustomResponsive"); var _Loader = _interopRequireDefault(require("@zohodesk/svg/lib/Loader/Loader")); var _MultiSelectModule = _interopRequireDefault(require("./MultiSelect.module.css")); var _Common = require("../utils/Common.js"); var _dropDownUtils = require("../utils/dropDownUtils"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable react/sort-prop-types */ /* eslint-disable react/no-unused-prop-types */ /* eslint-disable react/forbid-component-props */ var dummyArray = []; var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent) { _inherits(AdvancedMultiSelectComponent, _MultiSelectComponent); var _super = _createSuper(AdvancedMultiSelectComponent); function AdvancedMultiSelectComponent(props) { var _this; _classCallCheck(this, AdvancedMultiSelectComponent); _this = _super.call(this, props); var _assertThisInitialize = _assertThisInitialized(_this), oldState = _assertThisInitialize.state; var _this$props = _this.props, selectedOptionsLimit = _this$props.selectedOptionsLimit, selectedOptions = _this$props.selectedOptions; var selectedOptionsLen = selectedOptions.length; _this.state = Object.assign({}, oldState, { showedSelectedOptionsCount: !(0, _Common.getIsEmptyValue)(selectedOptionsLimit) && selectedOptionsLen > selectedOptionsLimit ? selectedOptionsLimit : selectedOptionsLen }); _this.getIsShowClearIcon = (0, _dropDownUtils.makeGetIsShowClearIcon)(); _this.handleFilterSuggestions = _this.handleFilterSuggestions.bind(_assertThisInitialized(_this)); _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this)); _this.handleSelectOption = _this.handleSelectOption.bind(_assertThisInitialized(_this)); _this.handleGetSelectedOptions = _this.handleGetSelectedOptions.bind(_assertThisInitialized(_this)); _this.handleFormatSelectedOptions = _this.handleFormatSelectedOptions.bind(_assertThisInitialized(_this)); _this.handleComponentDidUpdate = _this.handleComponentDidUpdate.bind(_assertThisInitialized(_this)); _this.handleMoreClick = _this.handleMoreClick.bind(_assertThisInitialized(_this)); _this.getNextAriaId = (0, _IdProvider.getUniqueId)(_assertThisInitialized(_this)); return _this; } _createClass(AdvancedMultiSelectComponent, [{ key: "handleFilterSuggestions", value: function handleFilterSuggestions() { var _this$state = this.state, _this$state$options = _this$state.options, options = _this$state$options === void 0 ? dummyArray : _this$state$options, searchStr = _this$state.searchStr; var _this$props2 = this.props, needLocalSearch = _this$props2.needLocalSearch, searchFields = _this$props2.searchFields; var _this$getFilterSugges = this.getFilterSuggestions({ options: options, selectedOptions: dummyArray, searchStr: (0, _Common.getSearchString)(searchStr), needSearch: needLocalSearch, searchFields: searchFields }), suggestions = _this$getFilterSugges.suggestions, suggestionIds = _this$getFilterSugges.suggestionIds; this.suggestionsOrder = suggestionIds; return suggestions; } }, { key: "handleChange", value: function handleChange() { var selectedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var e = arguments.length > 1 ? arguments[1] : undefined; var _this$state2 = this.state, optionsNormalize = _this$state2.optionsNormalize, searchStr = _this$state2.searchStr; var _this$props3 = this.props, onChange = _this$props3.onChange, _this$props3$needToCl = _this$props3.needToCloseOnSelect, needToCloseOnSelect = _this$props3$needToCl === void 0 ? false : _this$props3$needToCl, togglePopup = _this$props3.togglePopup, isSearchClearOnSelect = _this$props3.isSearchClearOnSelect, propSelectedOptions = _this$props3.selectedOptions, disabledOptions = _this$props3.disabledOptions; var _filterSelectedOption = (0, _dropDownUtils.filterSelectedOptions)({ selectedOptions: selectedOptions, propSelectedOptions: propSelectedOptions, disabledOptions: disabledOptions }), newSelectedOptions = _filterSelectedOption.newSelectedOptions; var selectedOptionsLen = newSelectedOptions.length; var allSelectedOptionsDetails = []; for (var i = 0; i < selectedOptionsLen; i++) { var id = newSelectedOptions[i]; allSelectedOptionsDetails.push(optionsNormalize[id]); } onChange && onChange(newSelectedOptions, allSelectedOptionsDetails); if (searchStr.trim() !== '' && isSearchClearOnSelect) { this.handleSearch(''); } this.searchInput && this.searchInput.focus({ preventScroll: true }); if (needToCloseOnSelect) { e && togglePopup(e); } } }, { key: "handleSelectOption", value: function handleSelectOption(option, value, index, e) { var selectedOptions = this.props.selectedOptions; if (selectedOptions.indexOf(option) >= 0) { //toggle select option this.handleRemoveOption(option); } else { this.handleChange([].concat(_toConsumableArray(selectedOptions), [option]), e); } } }, { key: "handleFormatOptions", value: function handleFormatOptions(props) { var options = props.options, valueField = props.valueField, textField = props.textField, imageField = props.imageField, iconName = props.iconName, iconSize = props.iconSize, prefixText = props.prefixText, optionType = props.optionType, disabledOptions = props.disabledOptions, allowValueFallback = props.allowValueFallback, searchFields = props.searchFields, secondaryField = props.secondaryField; return this.formatOptions({ options: options, valueField: valueField, textField: textField, imageField: imageField, iconName: iconName, prefixText: prefixText, optionType: optionType, iconSize: iconSize, disabledOptions: disabledOptions, allowValueFallback: allowValueFallback, searchFields: searchFields, secondaryField: secondaryField }); } }, { key: "handleGetSelectedOptions", value: function handleGetSelectedOptions(selectedOptions, normalizedFormatOptions, props) { //handle selectedoptions length var _ref = this.state || {}, showedSelectedOptionsCount = _ref.showedSelectedOptionsCount; var selectedOptionsLimit = props.selectedOptionsLimit, selectedOptionDetails = props.selectedOptionDetails, allowValueFallback = props.allowValueFallback, limit = props.limit; showedSelectedOptionsCount = (0, _Common.getIsEmptyValue)(showedSelectedOptionsCount) ? selectedOptionsLimit : showedSelectedOptionsCount; var _this$handleFormatSel = this.handleFormatSelectedOptions(selectedOptionDetails, props), normalizedSelectedOptions = _this$handleFormatSel.normalizedFormatOptions; var formatOptions = this.objectConcat({ obj1: normalizedFormatOptions, obj2: normalizedSelectedOptions }); return this.getSelectedOptions({ selectedOptions: selectedOptions, normalizedFormatOptions: formatOptions, selectedOptionsLength: showedSelectedOptionsCount, allowValueFallback: allowValueFallback, limit: limit }); } }, { key: "handleFormatSelectedOptions", value: function handleFormatSelectedOptions(selectedOptionDetails, props) { var valueField = props.valueField, textField = props.textField, imageField = props.imageField, optionType = props.optionType, iconName = props.iconName, iconSize = props.iconSize, disabledOptions = props.disabledOptions, allowValueFallback = props.allowValueFallback; return this.formatSelectedOptions({ options: selectedOptionDetails, valueField: valueField, textField: textField, imageField: imageField, optionType: optionType, iconName: iconName, iconSize: iconSize, disabledOptions: disabledOptions, allowValueFallback: allowValueFallback }); } }, { key: "handleComponentDidUpdate", value: function handleComponentDidUpdate(prevProps, prevState) { var _this2 = this; var oldAllSelectedOptionsDetails = this.allSelectedOptionsDetails; var _this$props4 = this.props, selectedOptions = _this$props4.selectedOptions, selectedOptionsLimit = _this$props4.selectedOptionsLimit, id = _this$props4.id, selectedOptionDetails = _this$props4.selectedOptionDetails; var oldSelectedOptions = prevProps.selectedOptions, oldSelectedOptionsLimit = prevProps.selectedOptionsLimit; var oldCount = this.state.showedSelectedOptionsCount; var selectedOptionsLen = selectedOptions.length; var oldSelectedOptionsLen = oldSelectedOptions.length; if (id !== prevProps.id || selectedOptionsLimit !== oldSelectedOptionsLimit) { //handle component update case (New set of options or new selectedOptionsLimit update) this.setState({ showedSelectedOptionsCount: !(0, _Common.getIsEmptyValue)(selectedOptionsLimit) && selectedOptionsLen > selectedOptionsLimit ? selectedOptionsLimit : selectedOptionsLen }); return; } if (oldCount !== prevState.showedSelectedOptionsCount || selectedOptionDetails !== prevProps.selectedOptionDetails) { //When showedSelectedOptionsCount update, setState the updated selected option details var _this$handleFormatOpt = this.handleFormatOptions(this.props), normalizedFormatOptions = _this$handleFormatOpt.normalizedFormatOptions; var optionsDetails = Object.assign({}, oldAllSelectedOptionsDetails, normalizedFormatOptions); var _this$handleGetSelect = this.handleGetSelectedOptions(selectedOptions, optionsDetails, this.props), formatSelectedOptions = _this$handleGetSelect.formatSelectedOptions, normalizedSelectedOptions = _this$handleGetSelect.normalizedSelectedOptions, selectedOptionIds = _this$handleGetSelect.selectedOptionIds; this.allSelectedOptionsDetails = Object.assign(oldAllSelectedOptionsDetails, normalizedSelectedOptions); this.setState({ selectedOptions: formatSelectedOptions, selectedOptionIds: selectedOptionIds }); } if ((0, _Common.getIsEmptyValue)(oldCount) || oldSelectedOptionsLen <= oldCount) { //handle not more options case if (selectedOptionsLen > oldCount) { this.setState({ showedSelectedOptionsCount: selectedOptionsLen }); } } else if (oldSelectedOptionsLen > selectedOptionsLen) { //handle more case and option remove case var showedSelectedOptions = oldSelectedOptions.slice(0, oldCount); var removeSelectedOption = oldCount; selectedOptions.forEach(function (option) { if (showedSelectedOptions.indexOf(option) >= 0) { removeSelectedOption -= 1; } }); var newCount = oldCount - removeSelectedOption; this.setState({ showedSelectedOptionsCount: newCount }, function () { var showedSelectedOptionsCount = _this2.state.showedSelectedOptionsCount; if (showedSelectedOptionsCount === 0) { _this2.handleMoreClick(); } }); } } }, { key: "handleMoreClick", value: function handleMoreClick(e) { var _this3 = this; var showedSelectedOptionsCount = this.state.showedSelectedOptionsCount; var _this$props5 = this.props, selectedOptionsLimit = _this$props5.selectedOptionsLimit, selectedOptions = _this$props5.selectedOptions, getSelectedOptionDetails = _this$props5.getSelectedOptionDetails, removeClose = _this$props5.removeClose; removeClose(e); var selectedOptionsLen = selectedOptions.length; if (showedSelectedOptionsCount < selectedOptionsLen) { var newCount = showedSelectedOptionsCount + selectedOptionsLimit; var newSelectedOptionIds = selectedOptions.slice(showedSelectedOptionsCount, newCount); try { getSelectedOptionDetails(newSelectedOptionIds).then(function () { _this3.setState({ showedSelectedOptionsCount: showedSelectedOptionsCount + newSelectedOptionIds.length }); }); } catch (e) {//console.error('getSelectedOptionDetails is not a promise function.'); } } this.searchInput && this.searchInput.focus({ preventScroll: true }); } }, { key: "responsiveFunc", value: function responsiveFunc(_ref2) { var mediaQueryOR = _ref2.mediaQueryOR; return { tabletMode: mediaQueryOR([{ maxWidth: 700 }]) }; } }, { key: "render", value: function render() { var _this4 = this; var _this$props6 = this.props, isReadOnly = _this$props6.isReadOnly, needSelectAll = _this$props6.needSelectAll, searchEmptyMessage = _this$props6.searchEmptyMessage, emptyMessage = _this$props6.emptyMessage, noMoreOptionsMessage = _this$props6.noMoreOptionsMessage, renderCustomEmptyState = _this$props6.renderCustomEmptyState, dropBoxSize = _this$props6.dropBoxSize, placeHolder = _this$props6.placeHolder, isPopupOpen = _this$props6.isPopupOpen, isPopupReady = _this$props6.isPopupReady, position = _this$props6.position, defaultDropBoxPosition = _this$props6.defaultDropBoxPosition, selectAllText = _this$props6.selectAllText, getContainerRef = _this$props6.getContainerRef, removeClose = _this$props6.removeClose, isAnimate = _this$props6.isAnimate, animationStyle = _this$props6.animationStyle, textBoxSize = _this$props6.textBoxSize, variant = _this$props6.variant, size = _this$props6.size, isDisabled = _this$props6.isDisabled, title = _this$props6.title, dataIdMultiSelectComp = _this$props6.dataIdMultiSelectComp, dataIdClearIcon = _this$props6.dataIdClearIcon, dataIdSelectAllEle = _this$props6.dataIdSelectAllEle, dataIdLoading = _this$props6.dataIdLoading, _this$props6$selected = _this$props6.selectedOptions, allselectedOptionIds = _this$props6$selected === void 0 ? [] : _this$props6$selected, listItemSize = _this$props6.listItemSize, needBorder = _this$props6.needBorder, i18nKeys = _this$props6.i18nKeys, htmlId = _this$props6.htmlId, a11y = _this$props6.a11y, borderColor = _this$props6.borderColor, isBoxPaddingNeed = _this$props6.isBoxPaddingNeed, getFooter = _this$props6.getFooter, customProps = _this$props6.customProps, needEffect = _this$props6.needEffect, disabledOptions = _this$props6.disabledOptions, isLoading = _this$props6.isLoading, shouldUseInternalLoader = _this$props6.shouldUseInternalLoader, dataSelectorId = _this$props6.dataSelectorId, customClass = _this$props6.customClass, isAbsolutePositioningNeeded = _this$props6.isAbsolutePositioningNeeded, positionsOffset = _this$props6.positionsOffset, targetOffset = _this$props6.targetOffset, isRestrictScroll = _this$props6.isRestrictScroll, isFocus = _this$props6.isFocus, limit = _this$props6.limit; var _customProps$Suggesti = customProps.SuggestionsProps, SuggestionsProps = _customProps$Suggesti === void 0 ? {} : _customProps$Suggesti, _customProps$DropBoxP = customProps.DropBoxProps, DropBoxProps = _customProps$DropBoxP === void 0 ? {} : _customProps$DropBoxP; var _customClass$containe = customClass.containerClass, containerClass = _customClass$containe === void 0 ? '' : _customClass$containe; var _i18nKeys = i18nKeys, _i18nKeys$clearText = _i18nKeys.clearText, clearText = _i18nKeys$clearText === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _i18nKeys$clearText, _i18nKeys$limitReache = _i18nKeys.limitReachedMessage, limitReachedMessage = _i18nKeys$limitReache === void 0 ? _constants.MULTISELECT_I18N_KEYS.limitReachedMessage : _i18nKeys$limitReache; var _a11y$clearLabel = a11y.clearLabel, clearLabel = _a11y$clearLabel === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _a11y$clearLabel; i18nKeys = Object.assign({}, i18nKeys, { emptyText: i18nKeys.emptyText || emptyMessage, noMoreText: i18nKeys.noMoreText || noMoreOptionsMessage, searchEmptyText: i18nKeys.searchEmptyText || searchEmptyMessage }); var _this$state3 = this.state, selectedOptions = _this$state3.selectedOptions, searchStr = _this$state3.searchStr, hoverOption = _this$state3.hoverOption, highLightedSelectOptions = _this$state3.highLightedSelectOptions, isFetchingOptions = _this$state3.isFetchingOptions, isActive = _this$state3.isActive, showedSelectedOptionsCount = _this$state3.showedSelectedOptionsCount, options = _this$state3.options; var suggestions = this.handleFilterSuggestions(); var allselectedOptionIdsLen = allselectedOptionIds.length; var moreCount = allselectedOptionIdsLen - showedSelectedOptionsCount; var setAriaId = this.getNextAriaId(); var ariaErrorId = this.getNextAriaId(); var _this$getIsShowClearI = this.getIsShowClearIcon({ selectedOptions: selectedOptions, disabledOptions: disabledOptions }), isShowClear = _this$getIsShowClearI.isShowClearIcon; var isShowClearIcon = !isReadOnly && !isDisabled && isShowClear; var isEditable = !(isReadOnly || isDisabled); var isInitialEmptyOptions = searchStr.length === 0 && options.length === 0; return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(_MultiSelectModule["default"].wrapper, " ").concat(isDisabled ? _MultiSelectModule["default"].disabled : '', " ").concat(borderColor === 'transparent' ? _MultiSelectModule["default"].transparentContainer : '', " ").concat(needEffect && !(isDisabled || isReadOnly) ? _MultiSelectModule["default"].effect : '', " ").concat(containerClass), "data-id": dataIdMultiSelectComp, "data-test-id": dataIdMultiSelectComp, "data-title": isDisabled ? title : null, onClick: this.handleInputFocus, "data-selector-id": dataSelectorId }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, { align: "vertical", alignBox: "row", className: "".concat(_MultiSelectModule["default"].container, " ").concat(_MultiSelectModule["default"][size], " ").concat(isActive && needBorder || isEditable && isFocus && needBorder ? _MultiSelectModule["default"].active : '', " ").concat(needBorder ? _MultiSelectModule["default"].hasBorder : '', " ").concat(needBorder ? !isDisabled ? _MultiSelectModule["default"]["borderColor_".concat(borderColor)] : _MultiSelectModule["default"].borderColor_transparent : ''), eleRef: this.selectedOptionContainerRef, wrap: "wrap" }, /*#__PURE__*/_react["default"].createElement(_SelectedOptions["default"], { selectedOptions: selectedOptions, highLightedSelectOptions: highLightedSelectOptions, isReadOnly: isReadOnly, getRef: this.selectedOptionRef, onRemove: this.handleRemoveOption, onSelect: this.handleClickSelectedOption, dataId: "".concat(dataIdMultiSelectComp, "_selectedOptions") }), moreCount > 0 ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, { className: _MultiSelectModule["default"].more, onClick: this.handleMoreClick, tagName: "button" }, "+ ".concat(moreCount, " More")) : null, /*#__PURE__*/_react["default"].createElement(_Layout.Box, { flexible: true, className: _MultiSelectModule["default"].wrapper, adjust: true, shrink: true, dataId: "".concat(dataIdMultiSelectComp, "_textBox") }, /*#__PURE__*/_react["default"].createElement("span", { className: " ".concat(_MultiSelectModule["default"].custmSpan, " ").concat(textBoxSize === 'xmedium' ? _MultiSelectModule["default"].custmSpanXmedium : _MultiSelectModule["default"].custmSpanMedium, " ").concat(isShowClearIcon ? _MultiSelectModule["default"].clearIconSpace : '', "\n ") }, searchStr), /*#__PURE__*/_react["default"].createElement(_TextBoxIcon["default"], { isDisabled: isDisabled, inputRef: this.searchInputRef, needBorder: false, onBlur: this.handleInactive, onChange: this.handleSearch, onClick: this.handleInputCick, onFocus: this.handleActive, onKeyDown: this.handleKeyDown, placeHolder: selectedOptions.length >= 1 ? '' : placeHolder, size: textBoxSize, value: searchStr, variant: variant, isReadOnly: isReadOnly, tabindex: isDisabled && '-1', customClass: { customTBoxWrap: _MultiSelectModule["default"].custmInputWrapper }, htmlId: htmlId, a11y: { role: 'combobox', ariaOwns: setAriaId, ariaControls: setAriaId, ariaExpanded: !isReadOnly && !isDisabled && isPopupOpen ? true : false, ariaHaspopup: true, ariaDescribedby: ariaErrorId }, autoComplete: false }, isShowClearIcon ? /*#__PURE__*/_react["default"].createElement(_Layout.Container, { alignBox: "row", align: "vertical" }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, { className: "".concat(_MultiSelectModule["default"]["delete"]), dataId: dataIdClearIcon, "data-title": clearText, onClick: this.handleDeselectAll, tagName: "button", "aria-label": clearLabel }, /*#__PURE__*/_react["default"].createElement(_icons.Icon, { name: "ZD-delete", size: "15" }))) : null))), !isReadOnly && !isDisabled && isPopupOpen ? /*#__PURE__*/_react["default"].createElement(_CustomResponsive.ResponsiveReceiver, { query: this.responsiveFunc, responsiveId: "Helmet" }, function (_ref3) { var tabletMode = _ref3.tabletMode; return /*#__PURE__*/_react["default"].createElement(_ResponsiveDropBox["default"], _extends({ animationStyle: animationStyle, boxPosition: position || "".concat(defaultDropBoxPosition, "Center"), getRef: getContainerRef, isActive: isPopupReady, isAnimate: isAnimate, isArrow: false, onClick: removeClose, isPadding: false, isBoxPaddingNeed: isBoxPaddingNeed, htmlId: setAriaId, a11y: { role: 'listbox', ariaMultiselectable: true }, dataId: "".concat(dataIdMultiSelectComp, "_dropbox"), isAbsolutePositioningNeeded: isAbsolutePositioningNeeded, positionsOffset: positionsOffset, targetOffset: targetOffset, isRestrictScroll: isRestrictScroll }, DropBoxProps, { alignBox: "row", isResponsivePadding: getFooter ? false : true }), (shouldUseInternalLoader ? isLoading : isLoading && isInitialEmptyOptions) ? /*#__PURE__*/_react["default"].createElement(_Layout.Container, { align: "both", className: _MultiSelectModule["default"].loader }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null)) : /*#__PURE__*/_react["default"].createElement(_Layout.Box, { flexible: true }, /*#__PURE__*/_react["default"].createElement(_Card["default"], { customClass: _MultiSelectModule["default"].box, onScroll: _this4.handleScroll }, needSelectAll && !(limit >= 0) ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], { onSelect: _this4.handleSelectAll, selectAllText: selectAllText, suggestions: suggestions, dataId: dataIdSelectAllEle })) : null, /*#__PURE__*/_react["default"].createElement(_Card.CardContent, { shrink: true, customClass: !tabletMode && dropBoxSize ? _MultiSelectModule["default"][dropBoxSize] : '', eleRef: _this4.suggestionContainerRef }, suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], _extends({ suggestions: suggestions, selectedOptions: allselectedOptionIds, getRef: _this4.suggestionItemRef, hoverOption: hoverOption, onClick: _this4.handleSelectOption, onMouseEnter: _this4.handleMouseEnter, needTick: true, listItemSize: listItemSize, a11y: { role: 'option' }, dataId: "".concat(dataIdMultiSelectComp, "_Options"), limit: limit, limitReachedMessage: limitReachedMessage }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], { isLoading: isFetchingOptions, options: options, searchString: searchStr, suggestions: suggestions, renderCustomEmptyState: renderCustomEmptyState, dataId: dataIdLoading, i18nKeys: i18nKeys, htmlId: ariaErrorId }), (shouldUseInternalLoader ? isFetchingOptions : isLoading && !isInitialEmptyOptions) && /*#__PURE__*/_react["default"].createElement(_Layout.Container, { isCover: false, align: "both" }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null))), getFooter ? /*#__PURE__*/_react["default"].createElement(_Card.CardFooter, null, getFooter()) : null))); }) : null); } }]); return AdvancedMultiSelectComponent; }(_MultiSelect.MultiSelectComponent); exports.AdvancedMultiSelectComponent = AdvancedMultiSelectComponent; AdvancedMultiSelectComponent.propTypes = _propTypes.AdvancedMultiSelect_propTypes; AdvancedMultiSelectComponent.defaultProps = _defaultProps.AdvancedMultiSelect_defaultProps; AdvancedMultiSelectComponent.displayName = 'AdvancedMultiSelect'; var AdvancedMultiSelect = (0, _Popup["default"])(AdvancedMultiSelectComponent); AdvancedMultiSelect.defaultProps = AdvancedMultiSelectComponent.defaultProps; AdvancedMultiSelect.propTypes = AdvancedMultiSelectComponent.propTypes; // if (__DOCS__) { // AdvancedMultiSelectComponent.docs = { // componentGroup: 'Form Elements', // folderName: 'Style Guide' // }; // // eslint-disable-next-line react/forbid-foreign-prop-types // AdvancedMultiSelect.propTypes = AdvancedMultiSelectComponent.propTypes; // } var _default = AdvancedMultiSelect; exports["default"] = _default;