UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

760 lines (740 loc) 27.6 kB
import * as React from 'react'; import PrimeReact, { localeOption } from 'primereact/api'; import { useOverlayListener, useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks'; import { OverlayService } from 'primereact/overlayservice'; import { Ripple } from 'primereact/ripple'; import { Tree } from 'primereact/tree'; import { ObjectUtils, classNames, DomHandler, ZIndexUtils } from 'primereact/utils'; import { CSSTransition } from 'primereact/csstransition'; import { Portal } from 'primereact/portal'; 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 _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); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } function _arrayLikeToArray$1(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 _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(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$1(o, minLen); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest(); } var TreeSelectBase = { defaultProps: { __TYPE: 'TreeSelect', appendTo: null, ariaLabel: null, ariaLabelledBy: null, className: null, disabled: false, display: 'comma', dropdownIcon: 'pi pi-chevron-down', emptyMessage: null, expandedKeys: null, filter: false, filterBy: 'label', filterInputAutoFocus: true, filterLocale: undefined, filterMode: 'lenient', filterPlaceholder: null, filterTemplate: null, filterValue: null, inputId: null, inputRef: null, metaKeySelection: true, name: null, onChange: null, onFilterValueChange: null, onHide: null, onNodeCollapse: null, onNodeExpand: null, onNodeSelect: null, onNodeUnselect: null, onShow: null, options: null, panelClassName: null, panelFooterTemplate: null, panelHeaderTemplate: null, panelStyle: null, placeholder: null, resetFilterOnHide: false, scrollHeight: '400px', selectionMode: 'single', style: null, tabIndex: null, transitionOptions: null, value: null, valueTemplate: null, children: undefined }, getProps: function getProps(props) { return ObjectUtils.getMergedProps(props, TreeSelectBase.defaultProps); }, getOtherProps: function getOtherProps(props) { return ObjectUtils.getDiffProps(props, TreeSelectBase.defaultProps); } }; var TreeSelectPanel = /*#__PURE__*/React.forwardRef(function (props, ref) { var createElement = function createElement() { var wrapperStyle = { maxHeight: props.scrollHeight || 'auto' }; var className = classNames('p-treeselect-panel p-component', props.panelClassName, { 'p-input-filled': PrimeReact.inputStyle === 'filled', 'p-ripple-disabled': PrimeReact.ripple === false }); return /*#__PURE__*/React.createElement(CSSTransition, { nodeRef: ref, classNames: "p-connected-overlay", "in": props["in"], timeout: { enter: 120, exit: 100 }, options: props.transitionOptions, unmountOnExit: true, onEnter: props.onEnter, onEntering: props.onEntering, onEntered: props.onEntered, onExit: props.onExit, onExited: props.onExited }, /*#__PURE__*/React.createElement("div", { ref: ref, className: className, style: props.panelStyle, onClick: props.onClick }, props.header, /*#__PURE__*/React.createElement("div", { className: "p-treeselect-items-wrapper", style: wrapperStyle }, props.children), props.footer)); }; var element = createElement(); return /*#__PURE__*/React.createElement(Portal, { element: element, appendTo: props.appendTo }); }); TreeSelectPanel.displayName = 'TreeSelectPanel'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } 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 _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; } var TreeSelect = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (inProps, ref) { var props = TreeSelectBase.getProps(inProps); var _React$useState = React.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), focusedState = _React$useState2[0], setFocusedState = _React$useState2[1]; var _React$useState3 = React.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), overlayVisibleState = _React$useState4[0], setOverlayVisibleState = _React$useState4[1]; var _React$useState5 = React.useState(props.expandedKeys), _React$useState6 = _slicedToArray(_React$useState5, 2), expandedKeysState = _React$useState6[0], setExpandedKeysState = _React$useState6[1]; var _React$useState7 = React.useState(''), _React$useState8 = _slicedToArray(_React$useState7, 2), filterValueState = _React$useState8[0], setFilterValueState = _React$useState8[1]; var elementRef = React.useRef(null); var overlayRef = React.useRef(null); var filterInputRef = React.useRef(null); var focusInputRef = React.useRef(props.inputRef); var triggerRef = React.useRef(null); var selfChange = React.useRef(null); var expandedKeys = props.onToggle ? props.expandedKeys : expandedKeysState; var filteredValue = props.onFilterValueChange ? props.filterValue : filterValueState; var isValueEmpty = ObjectUtils.isEmpty(props.value); var hasNoOptions = ObjectUtils.isEmpty(props.options); var isSingleSelectionMode = props.selectionMode === 'single'; var isCheckboxSelectionMode = props.selectionMode === 'checkbox'; var filterOptions = { filter: function filter(e) { return onFilterInputChange(e); }, reset: function reset() { return resetFilter(); } }; var _useOverlayListener = useOverlayListener({ target: elementRef, overlay: overlayRef, listener: function listener(event, _ref) { var valid = _ref.valid; valid && hide(); }, when: overlayVisibleState }), _useOverlayListener2 = _slicedToArray(_useOverlayListener, 2), bindOverlayListener = _useOverlayListener2[0], unbindOverlayListener = _useOverlayListener2[1]; var getLabel = function getLabel() { return selectedNodes.length ? selectedNodes.map(function (node) { return node.label; }).join(', ') : props.placeholder; }; var show = function show() { setOverlayVisibleState(true); }; var hide = function hide() { setOverlayVisibleState(false); }; var onInputFocus = function onInputFocus() { setFocusedState(true); }; var onInputBlur = function onInputBlur() { setFocusedState(false); }; var onClick = function onClick(event) { if (!props.disabled && (!overlayRef.current || !overlayRef.current.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) { DomHandler.focus(focusInputRef.current); overlayVisibleState ? hide() : show(); } }; var onSelectionChange = function onSelectionChange(event) { if (props.onChange) { selfChange.current = true; props.onChange({ originalEvent: event.originalEvent, value: event.value, stopPropagation: function stopPropagation() {}, preventDefault: function preventDefault() {}, target: { name: props.name, id: props.id, value: event.value } }); } }; var onNodeSelect = function onNodeSelect(node) { props.onNodeSelect && props.onNodeSelect(node); isSingleSelectionMode && hide(); }; var onNodeUnselect = function onNodeUnselect(node) { props.onNodeUnselect && props.onNodeUnselect(node); }; var onNodeToggle = function onNodeToggle(e) { if (props.onToggle) { props.onToggle(e); } else { setExpandedKeysState(e.value); } }; var onFilterValueChange = function onFilterValueChange(e) { setFilterValueState(e.value); }; var onOverlayClick = function onOverlayClick(event) { OverlayService.emit('overlay-click', { originalEvent: event, target: elementRef.current }); }; var onInputKeyDown = function onInputKeyDown(event) { switch (event.which) { //down case 40: if (!overlayVisibleState && event.altKey) { show(); } break; //space case 32: if (!overlayVisibleState) { show(); event.preventDefault(); } break; //enter and escape case 13: case 27: if (overlayVisibleState) { hide(); event.preventDefault(); } break; //tab case 9: hide(); break; } }; var onFilterInputKeyDown = function onFilterInputKeyDown(event) { //enter if (event.which === 13) { event.preventDefault(); } }; var onFilterInputChange = function onFilterInputChange(event) { var value = event.target.value; if (props.onFilterValueChange) { props.onFilterValueChange({ originalEvent: event, value: value }); } else { setFilterValueState(value); } }; var resetFilter = function resetFilter() { setFilterValueState(''); }; var onOverlayEnter = function onOverlayEnter() { ZIndexUtils.set('overlay', overlayRef.current, PrimeReact.autoZIndex, PrimeReact.zIndex['overlay']); alignOverlay(); scrollInView(); }; var onOverlayEntered = function onOverlayEntered() { bindOverlayListener(); if (props.filter && props.filterInputAutoFocus) { DomHandler.focus(filterInputRef.current, props.filterInputAutoFocus); } props.onShow && props.onShow(); }; var onOverlayExit = function onOverlayExit() { unbindOverlayListener(); }; var onOverlayExited = function onOverlayExited() { if (props.filter && props.resetFilterOnHide) { resetFilter(); } ZIndexUtils.clear(overlayRef.current); props.onHide && props.onHide(); }; var alignOverlay = function alignOverlay() { DomHandler.alignOverlay(overlayRef.current, triggerRef.current.parentElement, props.appendTo || PrimeReact.appendTo); }; var scrollInView = function scrollInView() { var highlightItem = DomHandler.findSingle(overlayRef.current, '.p-treenode-content.p-highlight'); if (highlightItem && highlightItem.scrollIntoView) { highlightItem.scrollIntoView({ block: 'nearest', inline: 'start' }); } }; var findSelectedNodes = function findSelectedNodes(node, keys, selectedNodes) { if (node) { if (isSelected(node, keys)) { selectedNodes.push(node); delete keys[node.key]; } if (Object.keys(keys).length && node.children) { var _iterator = _createForOfIteratorHelper(node.children), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var childNode = _step.value; findSelectedNodes(childNode, keys, selectedNodes); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } } else { var _iterator2 = _createForOfIteratorHelper(props.options), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var _childNode = _step2.value; findSelectedNodes(_childNode, keys, selectedNodes); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } }; var isSelected = function isSelected(node, keys) { return isCheckboxSelectionMode ? keys[node.key] && keys[node.key].checked : keys[node.key]; }; var updateTreeState = function updateTreeState() { var keys = isSingleSelectionMode ? _defineProperty({}, "".concat(props.value), true) : _objectSpread({}, props.value); setExpandedKeysState({}); if (keys && props.options) { updateTreeBranchState(null, null, keys); } }; var updateTreeBranchState = function updateTreeBranchState(node, path, keys) { if (node) { if (isSelected(node, keys)) { expandPath(path); delete keys[node.key]; } if (Object.keys(keys).length && node.children) { var _iterator3 = _createForOfIteratorHelper(node.children), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var childNode = _step3.value; path.push(node.key); updateTreeBranchState(childNode, path, keys); } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } } } else { var _iterator4 = _createForOfIteratorHelper(props.options), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var _childNode2 = _step4.value; updateTreeBranchState(_childNode2, [], keys); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } } }; var expandPath = function expandPath(path) { if (path.length > 0) { var _expandedKeys = _objectSpread({}, expandedKeysState || {}); var _iterator5 = _createForOfIteratorHelper(path), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var key = _step5.value; _expandedKeys[key] = true; } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } setExpandedKeysState(_expandedKeys); } }; var getSelectedNodes = function getSelectedNodes() { var selectedNodes = []; if (ObjectUtils.isNotEmpty(props.value) && props.options) { var keys = isSingleSelectionMode ? _defineProperty({}, "".concat(props.value), true) : _objectSpread({}, props.value); findSelectedNodes(null, keys, selectedNodes); } return selectedNodes; }; React.useImperativeHandle(ref, function () { return { props: props, focus: function focus() { return DomHandler.focus(focusInputRef.current); }, getElement: function getElement() { return elementRef.current; } }; }); React.useEffect(function () { ObjectUtils.combinedRefs(focusInputRef, props.inputRef); }, [focusInputRef, props.inputRef]); useMountEffect(function () { updateTreeState(); }); useUpdateEffect(function () { if (overlayVisibleState && props.filter) { alignOverlay(); } }); useUpdateEffect(function () { updateTreeState(); }, [props.options]); useUpdateEffect(function () { if (overlayVisibleState && expandedKeysState) { alignOverlay(); } }, [expandedKeysState]); useUpdateEffect(function () { if (overlayVisibleState) { if (!selfChange.current) { updateTreeState(); } selfChange.current = false; } }, [props.value]); useUnmountEffect(function () { ZIndexUtils.clear(overlayRef.current); }); var createKeyboardHelper = function createKeyboardHelper() { return /*#__PURE__*/React.createElement("div", { className: "p-hidden-accessible" }, /*#__PURE__*/React.createElement("input", _extends({ ref: focusInputRef, role: "listbox", id: props.inputId, type: "text", readOnly: true, "aria-expanded": overlayVisibleState, onFocus: onInputFocus, onBlur: onInputBlur, onKeyDown: onInputKeyDown, disabled: props.disabled, tabIndex: props.tabIndex }, ariaProps))); }; var createLabel = function createLabel() { var labelClassName = classNames('p-treeselect-label', { 'p-placeholder': getLabel() === props.placeholder, 'p-treeselect-label-empty': !props.placeholder && isValueEmpty }); var content = null; if (props.valueTemplate) { content = ObjectUtils.getJSXElement(props.valueTemplate, selectedNodes, props); } else { if (props.display === 'comma') { content = getLabel() || 'empty'; } else if (props.display === 'chip') { content = /*#__PURE__*/React.createElement(React.Fragment, null, selectedNodes && selectedNodes.map(function (node, index) { return /*#__PURE__*/React.createElement("div", { className: "p-treeselect-token", key: "".concat(node.key, "_").concat(index) }, /*#__PURE__*/React.createElement("span", { className: "p-treeselect-token-label" }, node.label)); }), isValueEmpty && (props.placeholder || 'empty')); } } return /*#__PURE__*/React.createElement("div", { className: "p-treeselect-label-container" }, /*#__PURE__*/React.createElement("div", { className: labelClassName }, content)); }; var createDropdownIcon = function createDropdownIcon() { var iconClassName = classNames('p-treeselect-trigger-icon p-clickable', props.dropdownIcon); return /*#__PURE__*/React.createElement("div", { ref: triggerRef, className: "p-treeselect-trigger", role: "button", "aria-haspopup": "listbox", "aria-expanded": overlayVisibleState }, /*#__PURE__*/React.createElement("span", { className: iconClassName })); }; var createContent = function createContent() { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tree, { value: props.options, selectionMode: props.selectionMode, selectionKeys: props.value, metaKeySelection: props.metaKeySelection, onSelectionChange: onSelectionChange, onSelect: onNodeSelect, onUnselect: onNodeUnselect, expandedKeys: expandedKeys, onToggle: onNodeToggle, onExpand: props.onNodeExpand, onCollapse: props.onNodeCollapse, filter: props.filter, filterValue: filteredValue, filterBy: props.filterBy, filterMode: props.filterMode, filterPlaceholder: props.filterPlaceholder, filterLocale: props.filterLocale, showHeader: false, onFilterValueChange: onFilterValueChange }), hasNoOptions && /*#__PURE__*/React.createElement("div", { className: "p-treeselect-empty-message" }, props.emptyMessage || localeOption('emptyMessage'))); }; var createFilterElement = function createFilterElement() { if (props.filter) { var filterValue = ObjectUtils.isNotEmpty(filteredValue) ? filteredValue : ''; var filterContent = /*#__PURE__*/React.createElement("div", { className: "p-treeselect-filter-container" }, /*#__PURE__*/React.createElement("input", { ref: filterInputRef, type: "text", value: filterValue, autoComplete: "off", className: "p-treeselect-filter p-inputtext p-component", placeholder: props.filterPlaceholder, onKeyDown: onFilterInputKeyDown, onChange: onFilterInputChange, disabled: props.disabled }), /*#__PURE__*/React.createElement("span", { className: "p-treeselect-filter-icon pi pi-search" })); if (props.filterTemplate) { var defaultContentOptions = { className: 'p-treeselect-filter-container', element: filterContent, filterOptions: filterOptions, filterInputKeyDown: onFilterInputKeyDown, filterInputChange: onFilterInputChange, filterIconClassName: 'p-dropdown-filter-icon pi pi-search', props: props }; filterContent = ObjectUtils.getJSXElement(props.filterTemplate, defaultContentOptions); } return /*#__PURE__*/React.createElement(React.Fragment, null, filterContent); } }; var createHeader = function createHeader() { var filterElement = createFilterElement(); var closeElement = /*#__PURE__*/React.createElement("button", { type: "button", className: "p-treeselect-close p-link", onClick: hide, "aria-label": localeOption('close') }, /*#__PURE__*/React.createElement("span", { className: "p-treeselect-close-icon pi pi-times", "aria-hidden": "true" }), /*#__PURE__*/React.createElement(Ripple, null)); var content = /*#__PURE__*/React.createElement("div", { className: "p-treeselect-header" }, filterElement, closeElement); if (props.panelHeaderTemplate) { var defaultOptions = { className: 'p-treeselect-header', filterElement: filterElement, closeElement: closeElement, closeElementClassName: 'p-treeselect-close p-link', closeIconClassName: 'p-treeselect-close-icon pi pi-times', onCloseClick: hide, element: content, props: props }; return ObjectUtils.getJSXElement(props.panelHeaderTemplate, defaultOptions); } return content; }; var createFooter = function createFooter() { return ObjectUtils.getJSXElement(props.panelFooterTemplate, props); }; var selectedNodes = getSelectedNodes(); var otherProps = TreeSelectBase.getOtherProps(props); var ariaProps = ObjectUtils.reduceKeys(otherProps, DomHandler.ARIA_PROPS); var className = classNames('p-treeselect p-component p-inputwrapper', { 'p-treeselect-chip': props.display === 'chip', 'p-disabled': props.disabled, 'p-focus': focusedState, 'p-inputwrapper-filled': !isValueEmpty, 'p-inputwrapper-focus': focusedState || overlayVisibleState }, props.className); var keyboardHelper = createKeyboardHelper(); var labelElement = createLabel(); var dropdownIcon = createDropdownIcon(); var content = createContent(); var header = createHeader(); var footer = createFooter(); return /*#__PURE__*/React.createElement("div", _extends({ ref: elementRef, className: className, style: props.style }, otherProps, { onClick: onClick }), keyboardHelper, labelElement, dropdownIcon, /*#__PURE__*/React.createElement(TreeSelectPanel, { ref: overlayRef, appendTo: props.appendTo, panelStyle: props.panelStyle, panelClassName: props.panelClassName, scrollHeight: props.scrollHeight, onClick: onOverlayClick, header: header, footer: footer, transitionOptions: props.transitionOptions, "in": overlayVisibleState, onEnter: onOverlayEnter, onEntered: onOverlayEntered, onExit: onOverlayExit, onExited: onOverlayExited }, content)); })); TreeSelect.displayName = 'TreeSelect'; export { TreeSelect };