rsuite 5.23.1 → 5.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/FormHelpText/styles/index.less +2 -2
- package/Tooltip/styles/index.less +0 -1
- package/cjs/Menu/Menu.js +1 -0
- package/cjs/Nav/NavDropdownMenu.d.ts +2 -0
- package/cjs/Nav/NavDropdownMenu.js +4 -2
- package/cjs/Picker/utils.js +81 -5
- package/dist/rsuite-rtl.css +2 -3
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +2 -3
- package/dist/rsuite.js +3 -3
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Menu/Menu.js +1 -0
- package/esm/Nav/NavDropdownMenu.d.ts +2 -0
- package/esm/Nav/NavDropdownMenu.js +4 -2
- package/esm/Picker/utils.js +80 -5
- package/package.json +1 -1
package/dist/rsuite.css
CHANGED
|
@@ -7749,8 +7749,8 @@ label:hover .rs-checkbox-wrapper .rs-checkbox-inner::before {
|
|
|
7749
7749
|
color: #8e8e93;
|
|
7750
7750
|
color: var(--rs-text-secondary);
|
|
7751
7751
|
min-height: 20px;
|
|
7752
|
-
line-height: 1.
|
|
7753
|
-
font-size:
|
|
7752
|
+
line-height: 1.66666667;
|
|
7753
|
+
font-size: 12px;
|
|
7754
7754
|
}
|
|
7755
7755
|
.rs-form-help-text-tooltip {
|
|
7756
7756
|
display: -webkit-inline-box;
|
|
@@ -15296,7 +15296,6 @@ textarea.rs-picker-menu .rs-picker-search-bar .rs-picker-search-bar-input {
|
|
|
15296
15296
|
padding: 2px 10px;
|
|
15297
15297
|
color: #fff;
|
|
15298
15298
|
color: var(--rs-tooltip-text);
|
|
15299
|
-
text-align: center;
|
|
15300
15299
|
background-color: #272c36;
|
|
15301
15300
|
background-color: var(--rs-tooltip-bg);
|
|
15302
15301
|
border-radius: 4px;
|
package/dist/rsuite.js
CHANGED
|
@@ -3315,7 +3315,7 @@ eval("\n\nexports.__esModule = true;\nexports.convertMaskToPlaceholder = convert
|
|
|
3315
3315
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3316
3316
|
|
|
3317
3317
|
"use strict";
|
|
3318
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\n\nvar _MenuContext = _interopRequireWildcard(__webpack_require__(/*! ./MenuContext */ \"./src/Menu/MenuContext.ts\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar _useUniqueId = _interopRequireDefault(__webpack_require__(/*! ../utils/useUniqueId */ \"./src/utils/useUniqueId.ts\"));\n\nvar _useMenu = _interopRequireDefault(__webpack_require__(/*! ./useMenu */ \"./src/Menu/useMenu.ts\"));\n\nvar _useFocus2 = _interopRequireDefault(__webpack_require__(/*! ../utils/useFocus */ \"./src/utils/useFocus.ts\"));\n\nvar _useClickOutside = _interopRequireDefault(__webpack_require__(/*! ../utils/useClickOutside */ \"./src/utils/useClickOutside.ts\"));\n\nvar _events = __webpack_require__(/*! ../utils/events */ \"./src/utils/events.ts\");\n\nvar _dom = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Menu/Menu.tsx\";\nvar defaultOpenMenuOn = ['click'];\n/**\n * Headless ARIA `menu`\n * @private\n */\n\nfunction Menu(_ref) {\n var _items$activeItemInde;\n\n var disabled = _ref.disabled,\n children = _ref.children,\n _ref$openMenuOn = _ref.openMenuOn,\n openMenuOn = _ref$openMenuOn === void 0 ? defaultOpenMenuOn : _ref$openMenuOn,\n _ref$defaultOpen = _ref.defaultOpen,\n defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,\n openProp = _ref.open,\n menuButtonText = _ref.menuButtonText,\n renderMenuButton = _ref.renderMenuButton,\n renderMenuPopup = _ref.renderMenuPopup,\n onToggleMenu = _ref.onToggleMenu;\n var buttonElementRef = (0, _react.useRef)(null);\n var menuElementRef = (0, _react.useRef)(null);\n var parentMenu = (0, _react.useContext)(_MenuContext.default);\n var isSubmenu = !!parentMenu;\n var menu = (0, _useMenu.default)({\n open: defaultOpen\n });\n var _menu$ = menu[0],\n openState = _menu$.open,\n items = _menu$.items,\n activeItemIndex = _menu$.activeItemIndex,\n dispatch = menu[1];\n var openControlled = typeof openProp !== 'undefined';\n var open = openControlled ? openProp : openState;\n\n var _useCustom = (0, _utils.useCustom)('Menu'),\n rtl = _useCustom.rtl;\n\n var activeItem = (0, _isNil.default)(activeItemIndex) ? null : (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;\n\n var _useFocus = (0, _useFocus2.default)(menuElementRef),\n grabFocus = _useFocus.grab;\n\n var openMenu = (0, _react.useCallback)(function (event) {\n dispatch({\n type: _MenuContext.MenuActionTypes.OpenMenu\n });\n\n if (!event.isTrusted) {\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n }\n\n onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);\n grabFocus();\n }, [dispatch, onToggleMenu, grabFocus]);\n var closeMenu = (0, _react.useCallback)(function (event, returnFocusToButton) {\n if (returnFocusToButton === void 0) {\n returnFocusToButton = true;\n }\n\n dispatch({\n type: _MenuContext.MenuActionTypes.CloseMenu\n });\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.None\n });\n onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(false, event);\n\n if (returnFocusToButton) {\n var _buttonElementRef$cur;\n\n (_buttonElementRef$cur = buttonElementRef.current) === null || _buttonElementRef$cur === void 0 ? void 0 : _buttonElementRef$cur.focus({\n preventScroll: true\n });\n }\n }, [dispatch, onToggleMenu, buttonElementRef]);\n var toggleMenu = (0, _react.useCallback)(function (event) {\n if (!open) {\n openMenu(event);\n } else {\n closeMenu(event);\n }\n }, [open, openMenu, closeMenu]);\n (0, _useClickOutside.default)({\n enabled: open,\n isOutside: function isOutside(event) {\n var _buttonElementRef$cur2, _menuElementRef$curre;\n\n return !((_buttonElementRef$cur2 = buttonElementRef.current) !== null && _buttonElementRef$cur2 !== void 0 && _buttonElementRef$cur2.contains(event.target)) && !((_menuElementRef$curre = menuElementRef.current) !== null && _menuElementRef$curre !== void 0 && _menuElementRef$curre.contains(event.target));\n },\n // fixme if clicking on a focusable element, don't move focus to menu button\n handle: function handle(event) {\n return closeMenu(event, !(0, _dom.isFocusableElement)(event.target));\n }\n });\n /**\n * Keyboard interaction on menu button\n * @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-13\n */\n\n var handleButtonKeydown = (0, _react.useCallback)(function (e) {\n switch (e.key) {\n // Open the menu\n case _utils.KEY_VALUES.ENTER:\n case _utils.KEY_VALUES.SPACE:\n e.preventDefault();\n e.stopPropagation();\n\n if (!open) {\n openMenu(e);\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n } else {\n closeMenu(e);\n }\n\n break;\n // Open the menu (if closed) and move focus to first item\n // This is mostly useful after opening the menu with click\n\n case _utils.KEY_VALUES.DOWN:\n e.preventDefault();\n e.stopPropagation();\n\n if (!open) {\n openMenu(e);\n }\n\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n break;\n }\n }, [open, openMenu, closeMenu, dispatch]);\n var handleButtonClick = (0, _react.useCallback)(function (event) {\n if (disabled) {\n return;\n }\n\n toggleMenu(event);\n }, [disabled, toggleMenu]);\n var handleButtonContextMenu = (0, _react.useCallback)(function (event) {\n // prevents default contextmenu\n event.preventDefault(); // Only opens menu on right click. Left click can close the menu opened by a right click\n\n if (open) return;\n if (disabled) return;\n openMenu(event);\n }, [open, disabled, openMenu]);\n var buttonEventHandlers = (0, _react.useMemo)(function () {\n var buttonEventHandlers = {\n onKeyDown: handleButtonKeydown\n };\n /**\n * Bind event of trigger,\n * not used in in the expanded state of '<Sidenav>'\n */\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {\n buttonEventHandlers.onClick = handleButtonClick;\n }\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {\n buttonEventHandlers.onContextMenu = handleButtonContextMenu;\n }\n\n return buttonEventHandlers;\n }, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);\n var buttonId = (0, _useUniqueId.default)('menubutton-');\n var menuId = (0, _useUniqueId.default)('menu-');\n var buttonAriaAttributes = (0, _react.useMemo)(function () {\n // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14\n return {\n role: 'button',\n 'aria-haspopup': 'menu',\n 'aria-expanded': open || undefined,\n // it's recommend to remove aria-expanded when menu is hidden\n 'aria-controls': menuId\n };\n }, [open, menuId]);\n var buttonProps = (0, _react.useMemo)(function () {\n return (0, _extends2.default)({\n id: buttonId\n }, buttonAriaAttributes, buttonEventHandlers, {\n // render props\n open: open\n });\n }, [buttonId, buttonAriaAttributes, buttonEventHandlers, open]);\n var customMenuButton = (0, _react.useMemo)(function () {\n return renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);\n }, [renderMenuButton, buttonProps, buttonElementRef]);\n var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/_react.default.createElement(\"button\", (0, _extends2.default)({\n ref: buttonElementRef\n }, buttonProps, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 273,\n columnNumber: 5\n }\n }), menuButtonText);\n /**\n * Keyboard interaction on menu\n * @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12\n */\n\n var handleMenuKeydown = (0, _react.useCallback)(function (e) {\n switch (e.key) {\n // Move focus to previous item\n case _utils.KEY_VALUES.UP:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Prev\n });\n break;\n // Move focus to next item\n\n case _utils.KEY_VALUES.DOWN:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Next\n });\n break;\n // When focus is in a menu and on a menuitem that has a submenu, opens the submenu and places focus on its first item.\n\n case _utils.KEY_VALUES.RIGHT:\n e.preventDefault();\n e.stopPropagation();\n\n if (!rtl) {\n if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {\n activeItem.click();\n }\n } else if (isSubmenu) {\n dispatch({\n type: _MenuContext.MenuActionTypes.CloseMenu\n });\n }\n\n break;\n // When focus is in a submenu of an item in a menu, closes the submenu and returns focus to the parent menuitem.\n\n case _utils.KEY_VALUES.LEFT:\n e.preventDefault();\n e.stopPropagation();\n\n if (!rtl) {\n if (isSubmenu) {\n closeMenu(e);\n }\n } else if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {\n activeItem.click();\n }\n\n break;\n // Move focus to the first item\n\n case _utils.KEY_VALUES.HOME:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n break;\n // Move focus to the last item\n\n case _utils.KEY_VALUES.END:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Last\n });\n break;\n // - When focus is on a menuitem that has a submenu, opens the submenu and places focus on its first item.\n // - Otherwise, activates the item and closes the menu.\n\n case _utils.KEY_VALUES.ENTER:\n case _utils.KEY_VALUES.SPACE:\n if (activeItem) {\n e.preventDefault();\n e.stopPropagation();\n activeItem.click();\n\n if (!activeItem.getAttribute('aria-haspopup')) {\n closeMenu(e);\n }\n }\n\n break;\n // Close the menu that contains focus and return focus to the element or context,\n // e.g., menu button or parent menuitem, from which the menu was opened.\n\n case _utils.KEY_VALUES.ESC:\n closeMenu(e);\n break;\n }\n }, [dispatch, activeItem, isSubmenu, rtl, closeMenu]); // Only used for clicks bubbling from child `menuitem`s.\n\n var handleMenuClick = (0, _react.useCallback)(function (event) {\n var target = event.target; // Only handle clicks on `menuitem`s\n\n if (target.getAttribute('role') !== 'menuitem') return; // Ignore clicks on `menuitem`s that controls a submenu\n\n if (target.getAttribute('aria-haspopup') === 'menu') return; // Ignore disabled `menuitem`s\n\n if (target.getAttribute('aria-disabled') === 'true') return;\n closeMenu(event, !isSubmenu);\n }, [closeMenu, isSubmenu]); // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-13\n\n var menuAriaAttributes = {\n role: 'menu',\n 'aria-labelledby': buttonId,\n 'aria-activedescendant': activeItem === null || activeItem === void 0 ? void 0 : activeItem.id\n };\n var menuEventHandlers = {\n onClick: handleMenuClick,\n onKeyDown: handleMenuKeydown\n };\n var menuProps = (0, _extends2.default)({\n id: menuId\n }, menuAriaAttributes, menuEventHandlers, {\n tabIndex: 0\n });\n var customMenuPopup = renderMenuPopup === null || renderMenuPopup === void 0 ? void 0 : renderMenuPopup((0, _extends2.default)({}, menuProps, {\n open: open\n }), menuElementRef); // fixme Wrong children here\n\n var menuElement = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : /*#__PURE__*/_react.default.createElement(\"ul\", (0, _extends2.default)({\n ref: menuElementRef\n }, menuProps, {\n hidden: !open,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 418,\n columnNumber: 5\n }\n }), children);\n var handleMouseEnter = (0, _react.useCallback)(function (e) {\n if (!disabled) {\n openMenu(e);\n }\n }, [disabled, openMenu]);\n var handleMouseLeave = (0, _react.useCallback)(function (e) {\n if (!disabled) {\n closeMenu(e);\n }\n }, [disabled, closeMenu]);\n var rootElementRef = (0, _react.useRef)(null);\n var handleContainerBlur = (0, _react.useCallback)(function (event) {\n if ((0, _events.isFocusLeaving)(event)) {\n closeMenu(event, false);\n }\n }, [closeMenu]);\n var rootEventHandlers = {\n onBlur: handleContainerBlur\n };\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('mouseover')) {\n rootEventHandlers.onMouseEnter = handleMouseEnter;\n rootEventHandlers.onMouseLeave = handleMouseLeave;\n }\n\n var rootProps = (0, _extends2.default)({}, rootEventHandlers, {\n children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, buttonElement, /*#__PURE__*/_react.default.createElement(_MenuContext.default.Provider, {\n value: menu,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 466,\n columnNumber: 9\n }\n }, menuElement)),\n // render props\n open: open\n });\n\n if (isSubmenu) {\n rootProps.role = 'none presentation';\n }\n\n return children(rootProps, rootElementRef);\n}\n\nMenu.displayName = 'Menu';\nMenu.propTypes = {\n children: _propTypes.default.func.isRequired\n};\nvar _default = Menu;\nexports.default = _default;\n\n//# sourceURL=webpack://rsuite/./src/Menu/Menu.tsx?");
|
|
3318
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\n\nvar _MenuContext = _interopRequireWildcard(__webpack_require__(/*! ./MenuContext */ \"./src/Menu/MenuContext.ts\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar _useUniqueId = _interopRequireDefault(__webpack_require__(/*! ../utils/useUniqueId */ \"./src/utils/useUniqueId.ts\"));\n\nvar _useMenu = _interopRequireDefault(__webpack_require__(/*! ./useMenu */ \"./src/Menu/useMenu.ts\"));\n\nvar _useFocus2 = _interopRequireDefault(__webpack_require__(/*! ../utils/useFocus */ \"./src/utils/useFocus.ts\"));\n\nvar _useClickOutside = _interopRequireDefault(__webpack_require__(/*! ../utils/useClickOutside */ \"./src/utils/useClickOutside.ts\"));\n\nvar _events = __webpack_require__(/*! ../utils/events */ \"./src/utils/events.ts\");\n\nvar _dom = __webpack_require__(/*! ../utils/dom */ \"./src/utils/dom.ts\");\n\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Menu/Menu.tsx\";\nvar defaultOpenMenuOn = ['click'];\n/**\n * Headless ARIA `menu`\n * @private\n */\n\nfunction Menu(_ref) {\n var _items$activeItemInde;\n\n var disabled = _ref.disabled,\n children = _ref.children,\n _ref$openMenuOn = _ref.openMenuOn,\n openMenuOn = _ref$openMenuOn === void 0 ? defaultOpenMenuOn : _ref$openMenuOn,\n _ref$defaultOpen = _ref.defaultOpen,\n defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,\n openProp = _ref.open,\n menuButtonText = _ref.menuButtonText,\n renderMenuButton = _ref.renderMenuButton,\n renderMenuPopup = _ref.renderMenuPopup,\n onToggleMenu = _ref.onToggleMenu;\n var buttonElementRef = (0, _react.useRef)(null);\n var menuElementRef = (0, _react.useRef)(null);\n var parentMenu = (0, _react.useContext)(_MenuContext.default);\n var isSubmenu = !!parentMenu;\n var menu = (0, _useMenu.default)({\n open: defaultOpen\n });\n var _menu$ = menu[0],\n openState = _menu$.open,\n items = _menu$.items,\n activeItemIndex = _menu$.activeItemIndex,\n dispatch = menu[1];\n var openControlled = typeof openProp !== 'undefined';\n var open = openControlled ? openProp : openState;\n\n var _useCustom = (0, _utils.useCustom)('Menu'),\n rtl = _useCustom.rtl;\n\n var activeItem = (0, _isNil.default)(activeItemIndex) ? null : (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;\n\n var _useFocus = (0, _useFocus2.default)(menuElementRef),\n grabFocus = _useFocus.grab;\n\n var openMenu = (0, _react.useCallback)(function (event) {\n dispatch({\n type: _MenuContext.MenuActionTypes.OpenMenu\n });\n\n if (!event.isTrusted) {\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n }\n\n onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);\n grabFocus();\n }, [dispatch, onToggleMenu, grabFocus]);\n var closeMenu = (0, _react.useCallback)(function (event, returnFocusToButton) {\n if (returnFocusToButton === void 0) {\n returnFocusToButton = true;\n }\n\n dispatch({\n type: _MenuContext.MenuActionTypes.CloseMenu\n });\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.None\n });\n onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(false, event);\n\n if (returnFocusToButton) {\n var _buttonElementRef$cur;\n\n (_buttonElementRef$cur = buttonElementRef.current) === null || _buttonElementRef$cur === void 0 ? void 0 : _buttonElementRef$cur.focus({\n preventScroll: true\n });\n }\n }, [dispatch, onToggleMenu, buttonElementRef]);\n var toggleMenu = (0, _react.useCallback)(function (event) {\n if (!open) {\n openMenu(event);\n } else {\n closeMenu(event);\n }\n }, [open, openMenu, closeMenu]);\n (0, _useClickOutside.default)({\n enabled: open,\n isOutside: function isOutside(event) {\n var _buttonElementRef$cur2, _menuElementRef$curre;\n\n return !((_buttonElementRef$cur2 = buttonElementRef.current) !== null && _buttonElementRef$cur2 !== void 0 && _buttonElementRef$cur2.contains(event.target)) && !((_menuElementRef$curre = menuElementRef.current) !== null && _menuElementRef$curre !== void 0 && _menuElementRef$curre.contains(event.target));\n },\n // fixme if clicking on a focusable element, don't move focus to menu button\n handle: function handle(event) {\n return closeMenu(event, !(0, _dom.isFocusableElement)(event.target));\n }\n });\n /**\n * Keyboard interaction on menu button\n * @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-13\n */\n\n var handleButtonKeydown = (0, _react.useCallback)(function (e) {\n switch (e.key) {\n // Open the menu\n case _utils.KEY_VALUES.ENTER:\n case _utils.KEY_VALUES.SPACE:\n e.preventDefault();\n e.stopPropagation();\n\n if (!open) {\n openMenu(e);\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n } else {\n closeMenu(e);\n }\n\n break;\n // Open the menu (if closed) and move focus to first item\n // This is mostly useful after opening the menu with click\n\n case _utils.KEY_VALUES.DOWN:\n e.preventDefault();\n e.stopPropagation();\n\n if (!open) {\n openMenu(e);\n }\n\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n break;\n }\n }, [open, openMenu, closeMenu, dispatch]);\n var handleButtonClick = (0, _react.useCallback)(function (event) {\n if (disabled) {\n return;\n }\n\n toggleMenu(event);\n }, [disabled, toggleMenu]);\n var handleButtonContextMenu = (0, _react.useCallback)(function (event) {\n // prevents default contextmenu\n event.preventDefault(); // Only opens menu on right click. Left click can close the menu opened by a right click\n\n if (open) return;\n if (disabled) return;\n openMenu(event);\n }, [open, disabled, openMenu]);\n var buttonEventHandlers = (0, _react.useMemo)(function () {\n var buttonEventHandlers = {\n onKeyDown: handleButtonKeydown\n };\n /**\n * Bind event of trigger,\n * not used in in the expanded state of '<Sidenav>'\n */\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {\n buttonEventHandlers.onClick = handleButtonClick;\n }\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {\n buttonEventHandlers.onContextMenu = handleButtonContextMenu;\n }\n\n return buttonEventHandlers;\n }, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);\n var buttonId = (0, _useUniqueId.default)('menubutton-');\n var menuId = (0, _useUniqueId.default)('menu-');\n var buttonAriaAttributes = (0, _react.useMemo)(function () {\n // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14\n return {\n role: 'button',\n 'aria-haspopup': 'menu',\n 'aria-expanded': open || undefined,\n // it's recommend to remove aria-expanded when menu is hidden\n 'aria-controls': menuId\n };\n }, [open, menuId]);\n var buttonProps = (0, _react.useMemo)(function () {\n return (0, _extends2.default)({\n id: buttonId\n }, buttonAriaAttributes, buttonEventHandlers, {\n // render props\n open: open\n });\n }, [buttonId, buttonAriaAttributes, buttonEventHandlers, open]);\n var customMenuButton = (0, _react.useMemo)(function () {\n return renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);\n }, [renderMenuButton, buttonProps, buttonElementRef]);\n var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/_react.default.createElement(\"button\", (0, _extends2.default)({\n ref: buttonElementRef\n }, buttonProps, {\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 273,\n columnNumber: 5\n }\n }), menuButtonText);\n /**\n * Keyboard interaction on menu\n * @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12\n */\n\n var handleMenuKeydown = (0, _react.useCallback)(function (e) {\n switch (e.key) {\n // Move focus to previous item\n case _utils.KEY_VALUES.UP:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Prev\n });\n break;\n // Move focus to next item\n\n case _utils.KEY_VALUES.DOWN:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Next\n });\n break;\n // When focus is in a menu and on a menuitem that has a submenu, opens the submenu and places focus on its first item.\n\n case _utils.KEY_VALUES.RIGHT:\n e.preventDefault();\n e.stopPropagation();\n\n if (!rtl) {\n if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {\n activeItem.click();\n }\n } else if (isSubmenu) {\n dispatch({\n type: _MenuContext.MenuActionTypes.CloseMenu\n });\n }\n\n break;\n // When focus is in a submenu of an item in a menu, closes the submenu and returns focus to the parent menuitem.\n\n case _utils.KEY_VALUES.LEFT:\n e.preventDefault();\n e.stopPropagation();\n\n if (!rtl) {\n if (isSubmenu) {\n closeMenu(e);\n }\n } else if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {\n activeItem.click();\n }\n\n break;\n // Move focus to the first item\n\n case _utils.KEY_VALUES.HOME:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.First\n });\n break;\n // Move focus to the last item\n\n case _utils.KEY_VALUES.END:\n e.preventDefault();\n e.stopPropagation();\n dispatch({\n type: _MenuContext.MenuActionTypes.MoveFocus,\n to: _MenuContext.MoveFocusTo.Last\n });\n break;\n // - When focus is on a menuitem that has a submenu, opens the submenu and places focus on its first item.\n // - Otherwise, activates the item and closes the menu.\n\n case _utils.KEY_VALUES.ENTER:\n case _utils.KEY_VALUES.SPACE:\n if (activeItem) {\n e.preventDefault();\n e.stopPropagation();\n activeItem.click();\n\n if (!activeItem.getAttribute('aria-haspopup')) {\n closeMenu(e);\n }\n }\n\n break;\n // Close the menu that contains focus and return focus to the element or context,\n // e.g., menu button or parent menuitem, from which the menu was opened.\n\n case _utils.KEY_VALUES.ESC:\n closeMenu(e);\n break;\n }\n }, [dispatch, activeItem, isSubmenu, rtl, closeMenu]); // Only used for clicks bubbling from child `menuitem`s.\n\n var handleMenuClick = (0, _react.useCallback)(function (event) {\n var target = event.target; // Only handle clicks on `menuitem`s\n\n if (target.getAttribute('role') !== 'menuitem') return; // Ignore clicks on `menuitem`s that controls a submenu\n\n if (target.getAttribute('aria-haspopup') === 'menu') return; // Ignore disabled `menuitem`s\n\n if (target.getAttribute('aria-disabled') === 'true') return;\n closeMenu(event, !isSubmenu);\n }, [closeMenu, isSubmenu]); // Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-13\n\n var menuAriaAttributes = {\n role: 'menu',\n 'aria-labelledby': buttonId,\n 'aria-activedescendant': activeItem === null || activeItem === void 0 ? void 0 : activeItem.id\n };\n var menuEventHandlers = {\n onClick: handleMenuClick,\n onKeyDown: handleMenuKeydown\n };\n var menuProps = (0, _extends2.default)({\n id: menuId\n }, menuAriaAttributes, menuEventHandlers, {\n tabIndex: 0\n });\n var customMenuPopup = renderMenuPopup === null || renderMenuPopup === void 0 ? void 0 : renderMenuPopup((0, _extends2.default)({}, menuProps, {\n open: open\n }), menuElementRef); // fixme Wrong children here\n\n var menuElement = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : /*#__PURE__*/_react.default.createElement(\"ul\", (0, _extends2.default)({\n ref: menuElementRef\n }, menuProps, {\n hidden: !open,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 418,\n columnNumber: 5\n }\n }), children);\n var handleMouseEnter = (0, _react.useCallback)(function (e) {\n if (!disabled) {\n openMenu(e);\n }\n }, [disabled, openMenu]);\n var handleMouseLeave = (0, _react.useCallback)(function (e) {\n if (!disabled) {\n closeMenu(e);\n }\n }, [disabled, closeMenu]);\n var rootElementRef = (0, _react.useRef)(null);\n var handleContainerBlur = (0, _react.useCallback)(function (event) {\n /* istanbul ignore else */\n if ((0, _events.isFocusLeaving)(event)) {\n closeMenu(event, false);\n }\n }, [closeMenu]);\n var rootEventHandlers = {\n onBlur: handleContainerBlur\n };\n\n if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('mouseover')) {\n rootEventHandlers.onMouseEnter = handleMouseEnter;\n rootEventHandlers.onMouseLeave = handleMouseLeave;\n }\n\n var rootProps = (0, _extends2.default)({}, rootEventHandlers, {\n children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, buttonElement, /*#__PURE__*/_react.default.createElement(_MenuContext.default.Provider, {\n value: menu,\n __self: this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 467,\n columnNumber: 9\n }\n }, menuElement)),\n // render props\n open: open\n });\n\n if (isSubmenu) {\n rootProps.role = 'none presentation';\n }\n\n return children(rootProps, rootElementRef);\n}\n\nMenu.displayName = 'Menu';\nMenu.propTypes = {\n children: _propTypes.default.func.isRequired\n};\nvar _default = Menu;\nexports.default = _default;\n\n//# sourceURL=webpack://rsuite/./src/Menu/Menu.tsx?");
|
|
3319
3319
|
|
|
3320
3320
|
/***/ }),
|
|
3321
3321
|
|
|
@@ -3579,7 +3579,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
3579
3579
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
3580
3580
|
|
|
3581
3581
|
"use strict";
|
|
3582
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteralLoose */ \"./node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _omit2 = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\n\nvar _Menu = _interopRequireDefault(__webpack_require__(/*! ../Menu/Menu */ \"./src/Menu/Menu.tsx\"));\n\nvar _MenuItem = _interopRequireDefault(__webpack_require__(/*! ../Menu/MenuItem */ \"./src/Menu/MenuItem.tsx\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _AngleLeft = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/legacy/AngleLeft */ \"./node_modules/@rsuite/icons/legacy/AngleLeft.js\"));\n\nvar _AngleRight = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/legacy/AngleRight */ \"./node_modules/@rsuite/icons/legacy/AngleRight.js\"));\n\nvar _useCustom2 = _interopRequireDefault(__webpack_require__(/*! ../utils/useCustom */ \"./src/utils/useCustom.ts\"));\n\nvar _NavContext = _interopRequireDefault(__webpack_require__(/*! ./NavContext */ \"./src/Nav/NavContext.ts\"));\n\nvar _deprecatePropType = _interopRequireDefault(__webpack_require__(/*! ../utils/deprecatePropType */ \"./src/utils/deprecatePropType.ts\"));\n\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Nav/NavDropdownMenu.tsx\",\n _this = void 0,\n _templateObject,\n _templateObject2;\n\n/**\n * @private\n */\nvar NavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var nav = (0, _react.useContext)(_NavContext.default);\n\n if (!nav) {\n throw new Error('<Nav.Dropdown.Menu> should be used within a <Nav> component.');\n }\n\n var onToggle = props.onToggle,\n eventKey = props.eventKey,\n title = props.title,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,\n children = props.children,\n _props$openDirection = props.openDirection,\n openDirection = _props$openDirection === void 0 ? 'end' : _props$openDirection,\n rest = (0, _objectWithoutPropertiesLoose2.default)(props, [\"onToggle\", \"eventKey\", \"title\", \"classPrefix\", \"children\", \"openDirection\"]);\n\n var _useCustom = (0, _useCustom2.default)('DropdownMenu'),\n rtl = _useCustom.rtl;\n\n var handleToggleSubmenu = (0, _react.useCallback)(function (open, event) {\n onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);\n }, [eventKey, onToggle]);\n\n var _useClassNames = (0, _utils.useClassNames)(classPrefix),\n prefix = _useClassNames.prefix;\n\n var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),\n withMenuClassPrefix = _useClassNames2.withClassPrefix,\n mergeMenuClassName = _useClassNames2.merge;\n\n var _useClassNames3 = (0, _utils.useClassNames)('dropdown-item'),\n mergeItemClassNames = _useClassNames3.merge,\n withItemClassPrefix = _useClassNames3.withClassPrefix,\n prefixItemClassName = _useClassNames3.prefix; // Parent menu exists. This is a submenu.\n // Should render a `menuitem` that controls this submenu.\n\n\n var _omit = (0, _omit2.default)(rest, ['trigger']),\n icon = _omit.icon,\n className = _omit.className,\n disabled = _omit.disabled,\n menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, [\"icon\", \"className\", \"disabled\"]);\n\n var Icon = rtl ? _AngleLeft.default : _AngleRight.default;\n return /*#__PURE__*/_react.default.createElement(_Menu.default, {\n openMenuOn: ['mouseover', 'click'],\n renderMenuButton: function renderMenuButton(_ref, buttonRef) {\n var open = _ref.open,\n menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, [\"open\"]);\n return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {\n disabled: disabled,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber:
|
|
3582
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/taggedTemplateLiteralLoose */ \"./node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _omit2 = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\n\nvar _Menu = _interopRequireDefault(__webpack_require__(/*! ../Menu/Menu */ \"./src/Menu/Menu.tsx\"));\n\nvar _MenuItem = _interopRequireDefault(__webpack_require__(/*! ../Menu/MenuItem */ \"./src/Menu/MenuItem.tsx\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _AngleLeft = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/legacy/AngleLeft */ \"./node_modules/@rsuite/icons/legacy/AngleLeft.js\"));\n\nvar _AngleRight = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/legacy/AngleRight */ \"./node_modules/@rsuite/icons/legacy/AngleRight.js\"));\n\nvar _useCustom2 = _interopRequireDefault(__webpack_require__(/*! ../utils/useCustom */ \"./src/utils/useCustom.ts\"));\n\nvar _NavContext = _interopRequireDefault(__webpack_require__(/*! ./NavContext */ \"./src/Nav/NavContext.ts\"));\n\nvar _deprecatePropType = _interopRequireDefault(__webpack_require__(/*! ../utils/deprecatePropType */ \"./src/utils/deprecatePropType.ts\"));\n\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Nav/NavDropdownMenu.tsx\",\n _this = void 0,\n _templateObject,\n _templateObject2;\n\n/**\n * @private\n */\nvar NavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var nav = (0, _react.useContext)(_NavContext.default);\n\n if (!nav) {\n throw new Error('<Nav.Dropdown.Menu> should be used within a <Nav> component.');\n }\n\n var onToggle = props.onToggle,\n eventKey = props.eventKey,\n title = props.title,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,\n children = props.children,\n _props$openDirection = props.openDirection,\n openDirection = _props$openDirection === void 0 ? 'end' : _props$openDirection,\n noCaret = props.noCaret,\n rest = (0, _objectWithoutPropertiesLoose2.default)(props, [\"onToggle\", \"eventKey\", \"title\", \"classPrefix\", \"children\", \"openDirection\", \"noCaret\"]);\n\n var _useCustom = (0, _useCustom2.default)('DropdownMenu'),\n rtl = _useCustom.rtl;\n\n var handleToggleSubmenu = (0, _react.useCallback)(function (open, event) {\n onToggle === null || onToggle === void 0 ? void 0 : onToggle(open, eventKey, event);\n }, [eventKey, onToggle]);\n\n var _useClassNames = (0, _utils.useClassNames)(classPrefix),\n prefix = _useClassNames.prefix;\n\n var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),\n withMenuClassPrefix = _useClassNames2.withClassPrefix,\n mergeMenuClassName = _useClassNames2.merge;\n\n var _useClassNames3 = (0, _utils.useClassNames)('dropdown-item'),\n mergeItemClassNames = _useClassNames3.merge,\n withItemClassPrefix = _useClassNames3.withClassPrefix,\n prefixItemClassName = _useClassNames3.prefix; // Parent menu exists. This is a submenu.\n // Should render a `menuitem` that controls this submenu.\n\n\n var _omit = (0, _omit2.default)(rest, ['trigger']),\n icon = _omit.icon,\n className = _omit.className,\n disabled = _omit.disabled,\n menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, [\"icon\", \"className\", \"disabled\"]);\n\n var Icon = rtl ? _AngleLeft.default : _AngleRight.default;\n return /*#__PURE__*/_react.default.createElement(_Menu.default, {\n openMenuOn: ['mouseover', 'click'],\n renderMenuButton: function renderMenuButton(_ref, buttonRef) {\n var open = _ref.open,\n menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, [\"open\"]);\n return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {\n disabled: disabled,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106,\n columnNumber: 9\n }\n }, function (_ref2, menuitemRef) {\n var selected = _ref2.selected,\n active = _ref2.active,\n menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref2, [\"selected\", \"active\"]);\n var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)([\"toggle\"]))), withItemClassPrefix({\n 'with-icon': icon,\n open: open,\n active: selected,\n disabled: disabled,\n focus: active\n }));\n return /*#__PURE__*/_react.default.createElement(\"div\", (0, _extends2.default)({\n ref: (0, _utils.mergeRefs)(buttonRef, menuitemRef),\n className: classes,\n \"data-event-key\": eventKey,\n \"data-event-key-type\": typeof eventKey\n }, menuitem, (0, _omit2.default)(menuButtonProps, ['role']), {\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 121,\n columnNumber: 15\n }\n }), icon && /*#__PURE__*/_react.default.cloneElement(icon, {\n className: prefix('menu-icon')\n }), title, !noCaret && /*#__PURE__*/_react.default.createElement(Icon, {\n className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)([\"toggle-icon\"]))),\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131,\n columnNumber: 30\n }\n }));\n });\n },\n renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {\n var open = _ref3.open,\n popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref3, [\"open\"]);\n var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());\n return /*#__PURE__*/_react.default.createElement(\"ul\", (0, _extends2.default)({\n ref: popupRef,\n className: menuClassName,\n hidden: !open,\n \"data-direction\": openDirection\n }, popupProps, menuProps, {\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 11\n }\n }), children);\n },\n onToggleMenu: handleToggleSubmenu,\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 103,\n columnNumber: 5\n }\n }, function (_ref4, menuContainerRef) {\n var open = _ref4.open,\n menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref4, [\"open\"]);\n var classes = mergeItemClassNames(className, withItemClassPrefix({\n disabled: disabled,\n open: open,\n submenu: true\n }));\n return /*#__PURE__*/_react.default.createElement(\"li\", (0, _extends2.default)({\n ref: (0, _utils.mergeRefs)(ref, menuContainerRef),\n className: classes\n }, menuContainer, {\n __self: _this,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 165,\n columnNumber: 11\n }\n }));\n });\n});\n\nNavDropdownMenu.displayName = 'Nav.Dropdown.Menu';\nNavDropdownMenu.propTypes = {\n active: _propTypes.default.bool,\n className: _propTypes.default.string,\n children: _propTypes.default.node,\n icon: _propTypes.default.any,\n classPrefix: _propTypes.default.string,\n pullLeft: (0, _deprecatePropType.default)(_propTypes.default.bool, 'Use openDirection=\"start\" instead.'),\n openDirection: _propTypes.default.oneOf(['start', 'end']),\n noCaret: _propTypes.default.bool,\n title: _propTypes.default.node,\n open: _propTypes.default.bool,\n eventKey: _propTypes.default.any,\n expanded: _propTypes.default.bool,\n collapsible: _propTypes.default.bool,\n onToggle: _propTypes.default.func\n};\nvar _default = NavDropdownMenu;\nexports.default = _default;\n\n//# sourceURL=webpack://rsuite/./src/Nav/NavDropdownMenu.tsx?");
|
|
3583
3583
|
|
|
3584
3584
|
/***/ }),
|
|
3585
3585
|
|
|
@@ -4063,7 +4063,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
4063
4063
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
4064
4064
|
|
|
4065
4065
|
"use strict";
|
|
4066
|
-
eval("\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nexports.__esModule = true;\nexports.createConcatChildrenFunction = createConcatChildrenFunction;\nexports.shouldDisplay = shouldDisplay;\nexports.usePickerClassName = usePickerClassName;\nexports.onMenuKeyDown = onMenuKeyDown;\nexports.useSearch = useSearch;\nexports.usePublicMethods = usePublicMethods;\nexports.useToggleKeyDownEvent = exports.useFocusItemValue = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _kebabCase = _interopRequireDefault(__webpack_require__(/*! lodash/kebabCase */ \"./node_modules/lodash/kebabCase.js\"));\n\nvar _trim = _interopRequireDefault(__webpack_require__(/*! lodash/trim */ \"./node_modules/lodash/trim.js\"));\n\nvar _isFunction = _interopRequireDefault(__webpack_require__(/*! lodash/isFunction */ \"./node_modules/lodash/isFunction.js\"));\n\nvar _isUndefined = _interopRequireDefault(__webpack_require__(/*! lodash/isUndefined */ \"./node_modules/lodash/isUndefined.js\"));\n\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\n\nvar _find = _interopRequireDefault(__webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\"));\n\nvar _treeUtils = __webpack_require__(/*! ../utils/treeUtils */ \"./src/utils/treeUtils.ts\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar defaultNodeKeys = {\n valueKey: 'value',\n childrenKey: 'children'\n};\n\nfunction createConcatChildrenFunction(node, nodeValue, nodeKeys) {\n if (nodeKeys === void 0) {\n nodeKeys = defaultNodeKeys;\n }\n\n var _nodeKeys = nodeKeys,\n valueKey = _nodeKeys.valueKey,\n childrenKey = _nodeKeys.childrenKey;\n return function (data, children) {\n if (nodeValue) {\n node = (0, _treeUtils.findNodeOfTree)(data, function (item) {\n return nodeValue === item[valueKey];\n });\n }\n\n node[childrenKey] = children;\n return data.concat([]);\n };\n}\n\nfunction shouldDisplay(label, searchKeyword) {\n if (!(0, _trim.default)(searchKeyword)) {\n return true;\n }\n\n var keyword = searchKeyword.toLocaleLowerCase();\n\n if (typeof label === 'string' || typeof label === 'number') {\n return (\"\" + label).toLocaleLowerCase().indexOf(keyword) >= 0;\n } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {\n var nodes = (0, _utils.reactToString)(label);\n return nodes.join('').toLocaleLowerCase().indexOf(keyword) >= 0;\n }\n\n return false;\n}\n\n/**\n * The className of the assembled Toggle is on the Picker.\n */\nfunction usePickerClassName(props) {\n var _withClassPrefix;\n\n var name = props.name,\n classPrefix = props.classPrefix,\n className = props.className,\n placement = props.placement,\n appearance = props.appearance,\n cleanable = props.cleanable,\n block = props.block,\n disabled = props.disabled,\n countable = props.countable,\n readOnly = props.readOnly,\n plaintext = props.plaintext,\n hasValue = props.hasValue,\n rest = (0, _objectWithoutPropertiesLoose2.default)(props, [\"name\", \"classPrefix\", \"className\", \"placement\", \"appearance\", \"cleanable\", \"block\", \"disabled\", \"countable\", \"readOnly\", \"plaintext\", \"hasValue\"]);\n\n var _useClassNames = (0, _utils.useClassNames)(classPrefix),\n withClassPrefix = _useClassNames.withClassPrefix,\n merge = _useClassNames.merge;\n\n var classes = merge(className, withClassPrefix(name, appearance, 'toggle-wrapper', (_withClassPrefix = {}, _withClassPrefix[\"placement-\" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = placement, _withClassPrefix['read-only'] = readOnly, _withClassPrefix['has-value'] = hasValue, _withClassPrefix.cleanable = cleanable, _withClassPrefix.block = block, _withClassPrefix.disabled = disabled, _withClassPrefix.countable = countable, _withClassPrefix.plaintext = plaintext, _withClassPrefix)));\n var usedClassNamePropKeys = Object.keys((0, _omit.default)(props, [].concat(Object.keys(rest || {}), ['disabled', 'readOnly', 'plaintext'])));\n return [classes, usedClassNamePropKeys];\n}\n\n/**\n * Handling keyboard events...\n * @param event Keyboard event object\n * @param events Event callback functions\n */\nfunction onMenuKeyDown(event, events) {\n var down = events.down,\n up = events.up,\n enter = events.enter,\n del = events.del,\n esc = events.esc,\n right = events.right,\n left = events.left;\n\n switch (event.key) {\n // down\n case _utils.KEY_VALUES.DOWN:\n down === null || down === void 0 ? void 0 : down(event);\n event.preventDefault();\n break;\n // up\n\n case _utils.KEY_VALUES.UP:\n up === null || up === void 0 ? void 0 : up(event);\n event.preventDefault();\n break;\n // enter\n\n case _utils.KEY_VALUES.ENTER:\n enter === null || enter === void 0 ? void 0 : enter(event);\n event.preventDefault();\n break;\n // delete\n\n case _utils.KEY_VALUES.BACKSPACE:\n del === null || del === void 0 ? void 0 : del(event);\n break;\n // esc | tab\n\n case _utils.KEY_VALUES.ESC:\n case _utils.KEY_VALUES.TAB:\n esc === null || esc === void 0 ? void 0 : esc(event);\n break;\n // left arrow\n\n case _utils.KEY_VALUES.LEFT:\n left === null || left === void 0 ? void 0 : left(event);\n break;\n // right arrow\n\n case _utils.KEY_VALUES.RIGHT:\n right === null || right === void 0 ? void 0 : right(event);\n break;\n\n default:\n }\n}\n\n/**\n * A hook that manages the focus state of the option.\n * @param defaultFocusItemValue\n * @param props\n */\nvar useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props) {\n var _props$valueKey = props.valueKey,\n valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,\n _props$focusableQuery = props.focusableQueryKey,\n focusableQueryKey = _props$focusableQuery === void 0 ? '[data-key][aria-disabled=\"false\"]' : _props$focusableQuery,\n _props$defaultLayer = props.defaultLayer,\n defaultLayer = _props$defaultLayer === void 0 ? 0 : _props$defaultLayer,\n data = props.data,\n target = props.target,\n rtl = props.rtl,\n callback = props.callback;\n\n var _useState = (0, _react.useState)(defaultFocusItemValue),\n focusItemValue = _useState[0],\n setFocusItemValue = _useState[1];\n\n var _useState2 = (0, _react.useState)(defaultLayer),\n layer = _useState2[0],\n setLayer = _useState2[1];\n\n var _useState3 = (0, _react.useState)([]),\n keys = _useState3[0],\n setKeys = _useState3[1];\n /**\n * Get the elements visible in all options.\n */\n\n\n var getFocusableMenuItems = (0, _react.useCallback)(function () {\n if (!target) {\n return [];\n }\n\n var currentKeys = keys;\n\n if (layer < 1) {\n var popup = (0, _isFunction.default)(target) ? target() : target;\n var rootMenu = popup === null || popup === void 0 ? void 0 : popup.querySelector('[data-layer=\"0\"]');\n\n if (rootMenu) {\n var _rootMenu$querySelect;\n\n currentKeys = Array.from((_rootMenu$querySelect = rootMenu.querySelectorAll(focusableQueryKey)) !== null && _rootMenu$querySelect !== void 0 ? _rootMenu$querySelect : []).map(function (item) {\n var _item$dataset;\n\n return (_item$dataset = item.dataset) === null || _item$dataset === void 0 ? void 0 : _item$dataset.key;\n });\n } else {\n var _popup$querySelectorA;\n\n currentKeys = Array.from((_popup$querySelectorA = popup === null || popup === void 0 ? void 0 : popup.querySelectorAll(focusableQueryKey)) !== null && _popup$querySelectorA !== void 0 ? _popup$querySelectorA : []).map(function (item) {\n var _item$dataset2;\n\n return (_item$dataset2 = item.dataset) === null || _item$dataset2 === void 0 ? void 0 : _item$dataset2.key;\n });\n }\n } // 1. It is necessary to traverse the `keys` instead of `data` here to preserve the order of the array.\n // 2. The values in `keys` are all string, so the corresponding value of `data` should also be converted to string\n\n\n return currentKeys.map(function (key) {\n return (0, _find.default)(data, function (i) {\n return \"\" + i[valueKey] === key;\n });\n });\n }, [data, focusableQueryKey, keys, target, valueKey, layer]);\n /**\n * Get the index of the focus item.\n */\n\n var findFocusItemIndex = (0, _react.useCallback)(function (callback) {\n var items = getFocusableMenuItems();\n\n for (var i = 0; i < items.length; i += 1) {\n var _items$i;\n\n if ((0, _utils.shallowEqual)(focusItemValue, (_items$i = items[i]) === null || _items$i === void 0 ? void 0 : _items$i[valueKey])) {\n callback(items, i);\n return;\n }\n }\n\n callback(items, -1);\n }, [focusItemValue, getFocusableMenuItems, valueKey]);\n var focusNextMenuItem = (0, _react.useCallback)(function (event) {\n findFocusItemIndex(function (items, index) {\n var nextIndex = index + 2 > items.length ? 0 : index + 1;\n var focusItem = items[nextIndex];\n\n if (!(0, _isUndefined.default)(focusItem)) {\n setFocusItemValue(focusItem[valueKey]);\n callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);\n }\n });\n }, [callback, findFocusItemIndex, valueKey]);\n var focusPrevMenuItem = (0, _react.useCallback)(function (event) {\n findFocusItemIndex(function (items, index) {\n var nextIndex = index === 0 ? items.length - 1 : index - 1;\n var focusItem = items[nextIndex];\n\n if (!(0, _isUndefined.default)(focusItem)) {\n setFocusItemValue(focusItem[valueKey]);\n callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);\n }\n });\n }, [callback, findFocusItemIndex, valueKey]);\n var getSubMenuKeys = (0, _react.useCallback)(function (nextLayer) {\n var menu = (0, _isFunction.default)(target) ? target() : target;\n var subMenu = menu === null || menu === void 0 ? void 0 : menu.querySelector(\"[data-layer=\\\"\" + nextLayer + \"\\\"]\");\n\n if (subMenu) {\n var _Array$from;\n\n return (_Array$from = Array.from(subMenu.querySelectorAll(focusableQueryKey))) === null || _Array$from === void 0 ? void 0 : _Array$from.map(function (item) {\n var _item$dataset3;\n\n return (_item$dataset3 = item.dataset) === null || _item$dataset3 === void 0 ? void 0 : _item$dataset3.key;\n });\n }\n\n return null;\n }, [focusableQueryKey, target]);\n var focusNextLevelMenu = (0, _react.useCallback)(function (event) {\n var nextLayer = layer + 1;\n var nextKeys = getSubMenuKeys(nextLayer);\n\n if (nextKeys) {\n setKeys(nextKeys);\n setLayer(nextLayer);\n setFocusItemValue(nextKeys[0]);\n callback === null || callback === void 0 ? void 0 : callback(nextKeys[0], event);\n }\n }, [callback, getSubMenuKeys, layer]);\n var focusPrevLevelMenu = (0, _react.useCallback)(function (event) {\n var nextLayer = layer - 1;\n var nextKeys = getSubMenuKeys(nextLayer);\n\n if (nextKeys) {\n var _focusItem$parent;\n\n setKeys(nextKeys);\n setLayer(nextLayer);\n var focusItem = (0, _treeUtils.findNodeOfTree)(data, function (item) {\n return item[valueKey] === focusItemValue;\n });\n var parentItemValue = focusItem === null || focusItem === void 0 ? void 0 : (_focusItem$parent = focusItem.parent) === null || _focusItem$parent === void 0 ? void 0 : _focusItem$parent[valueKey];\n\n if (parentItemValue) {\n setFocusItemValue(parentItemValue);\n callback === null || callback === void 0 ? void 0 : callback(parentItemValue, event);\n }\n }\n }, [callback, data, focusItemValue, getSubMenuKeys, layer, valueKey]);\n var handleKeyDown = (0, _react.useCallback)(function (event) {\n var _onMenuKeyDown;\n\n onMenuKeyDown(event, (_onMenuKeyDown = {\n down: focusNextMenuItem,\n up: focusPrevMenuItem\n }, _onMenuKeyDown[rtl ? 'left' : 'right'] = focusNextLevelMenu, _onMenuKeyDown[rtl ? 'right' : 'left'] = focusPrevLevelMenu, _onMenuKeyDown));\n }, [focusNextLevelMenu, focusNextMenuItem, focusPrevLevelMenu, focusPrevMenuItem, rtl]);\n return {\n focusItemValue: focusItemValue,\n setFocusItemValue: setFocusItemValue,\n layer: layer,\n setLayer: setLayer,\n keys: keys,\n setKeys: setKeys,\n onKeyDown: handleKeyDown\n };\n};\n\nexports.useFocusItemValue = useFocusItemValue;\n\n/**\n * A hook to control the toggle keyboard operation\n * @param props\n */\nvar useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {\n var _props$toggle = props.toggle,\n toggle = _props$toggle === void 0 ? true : _props$toggle,\n triggerRef = props.triggerRef,\n targetRef = props.targetRef,\n overlayRef = props.overlayRef,\n searchInputRef = props.searchInputRef,\n active = props.active,\n onExit = props.onExit,\n onOpen = props.onOpen,\n onClose = props.onClose,\n onKeyDown = props.onKeyDown,\n onMenuKeyDown = props.onMenuKeyDown,\n onMenuPressEnter = props.onMenuPressEnter,\n onMenuPressBackspace = props.onMenuPressBackspace;\n var handleClose = (0, _react.useCallback)(function () {\n var _triggerRef$current, _triggerRef$current$c;\n\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current);\n onClose === null || onClose === void 0 ? void 0 : onClose();\n }, [onClose, triggerRef]);\n var handleOpen = (0, _react.useCallback)(function () {\n var _triggerRef$current2, _triggerRef$current2$;\n\n (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.open) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);\n onOpen === null || onOpen === void 0 ? void 0 : onOpen();\n }, [onOpen, triggerRef]);\n var handleToggleDropdown = (0, _react.useCallback)(function () {\n if (active) {\n handleClose();\n return;\n }\n\n handleOpen();\n }, [active, handleOpen, handleClose]);\n var onToggle = (0, _react.useCallback)(function (event) {\n if (event.target === (targetRef === null || targetRef === void 0 ? void 0 : targetRef.current)) {\n // enter\n if (toggle && event.key === _utils.KEY_VALUES.ENTER) {\n handleToggleDropdown();\n } // delete\n\n\n if (event.key === _utils.KEY_VALUES.BACKSPACE) {\n onExit === null || onExit === void 0 ? void 0 : onExit(event);\n }\n }\n\n if (overlayRef !== null && overlayRef !== void 0 && overlayRef.current) {\n // The keyboard operation callback on the menu.\n onMenuKeyDown === null || onMenuKeyDown === void 0 ? void 0 : onMenuKeyDown(event);\n\n if (event.key === _utils.KEY_VALUES.ENTER) {\n onMenuPressEnter === null || onMenuPressEnter === void 0 ? void 0 : onMenuPressEnter(event);\n }\n /**\n * There is no callback when typing the Backspace key in the search box.\n * The default is to remove search keywords\n */\n\n\n if (event.key === _utils.KEY_VALUES.BACKSPACE && event.target !== (searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current)) {\n onMenuPressBackspace === null || onMenuPressBackspace === void 0 ? void 0 : onMenuPressBackspace(event);\n } // The search box gets focus when typing characters and numbers.\n\n\n if (event.key.length === 1 && /\\w/.test(event.key)) {\n var _event$target;\n\n // Exclude Input\n // eg: <SelectPicker renderExtraFooter={() => <Input />} />\n if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) !== 'INPUT') {\n var _searchInputRef$curre;\n\n searchInputRef === null || searchInputRef === void 0 ? void 0 : (_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 ? void 0 : _searchInputRef$curre.focus();\n }\n }\n }\n\n if (event.key === _utils.KEY_VALUES.ESC || event.key === _utils.KEY_VALUES.TAB) {\n handleClose();\n } // Native event callback\n\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);\n }, [handleClose, handleToggleDropdown, overlayRef, onExit, onKeyDown, onMenuKeyDown, onMenuPressBackspace, onMenuPressEnter, toggle, targetRef, searchInputRef]);\n return onToggle;\n};\n\nexports.useToggleKeyDownEvent = useToggleKeyDownEvent;\n\n/**\n * A hook that handles search filter options\n * @param props\n */\nfunction useSearch(props) {\n var labelKey = props.labelKey,\n data = props.data,\n searchBy = props.searchBy,\n callback = props.callback; // Use search keywords to filter options.\n\n var _useState4 = (0, _react.useState)(''),\n searchKeyword = _useState4[0],\n setSearchKeyword = _useState4[1];\n /**\n * Index of keyword in `label`\n * @param {node} label\n */\n\n\n var checkShouldDisplay = (0, _react.useCallback)(function (item, keyword) {\n var label = item === null || item === void 0 ? void 0 : item[labelKey];\n\n var _keyword = (0, _isUndefined.default)(keyword) ? searchKeyword : keyword;\n\n if (typeof searchBy === 'function') {\n return searchBy(_keyword, label, item);\n }\n\n return shouldDisplay(label, _keyword);\n }, [labelKey, searchBy, searchKeyword]);\n var updateFilteredData = (0, _react.useCallback)(function (nextData) {\n setFilteredData((0, _treeUtils.filterNodesOfTree)(nextData, function (item) {\n return checkShouldDisplay(item);\n }));\n }, [checkShouldDisplay]);\n\n var _useState5 = (0, _react.useState)((0, _treeUtils.filterNodesOfTree)(data, function (item) {\n return checkShouldDisplay(item);\n })),\n filteredData = _useState5[0],\n setFilteredData = _useState5[1];\n\n var handleSearch = function handleSearch(searchKeyword, event) {\n var filteredData = (0, _treeUtils.filterNodesOfTree)(data, function (item) {\n return checkShouldDisplay(item, searchKeyword);\n });\n setFilteredData(filteredData);\n setSearchKeyword(searchKeyword);\n callback === null || callback === void 0 ? void 0 : callback(searchKeyword, filteredData, event);\n };\n\n return {\n searchKeyword: searchKeyword,\n filteredData: filteredData,\n updateFilteredData: updateFilteredData,\n setSearchKeyword: setSearchKeyword,\n checkShouldDisplay: checkShouldDisplay,\n handleSearch: handleSearch\n };\n}\n\n/**\n * A hook of the exposed method of Picker\n */\nfunction usePublicMethods(ref, parmas) {\n var triggerRef = parmas.triggerRef,\n overlayRef = parmas.overlayRef,\n targetRef = parmas.targetRef,\n rootRef = parmas.rootRef,\n listRef = parmas.listRef,\n inline = parmas.inline;\n var handleOpen = (0, _react.useCallback)(function () {\n var _triggerRef$current3;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : _triggerRef$current3.open();\n }, [triggerRef]);\n var handleClose = (0, _react.useCallback)(function () {\n var _triggerRef$current4;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.close();\n }, [triggerRef]);\n var handleUpdatePosition = (0, _react.useCallback)(function () {\n var _triggerRef$current5;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current5 = triggerRef.current) === null || _triggerRef$current5 === void 0 ? void 0 : _triggerRef$current5.updatePosition();\n }, [triggerRef]);\n (0, _react.useImperativeHandle)(ref, function () {\n // Tree and CheckTree\n if (inline) {\n return {\n get root() {\n var _triggerRef$current$r, _triggerRef$current6;\n\n return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current$r = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root) !== null && _triggerRef$current$r !== void 0 ? _triggerRef$current$r : null;\n },\n\n get list() {\n if (!(listRef !== null && listRef !== void 0 && listRef.current)) {\n throw new Error('The list is not found, please set `virtualized` for the component.');\n }\n\n return listRef === null || listRef === void 0 ? void 0 : listRef.current;\n }\n\n };\n }\n\n return {\n get root() {\n var _ref, _triggerRef$current7;\n\n return (_ref = (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) || (triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current7 = triggerRef.current) === null || _triggerRef$current7 === void 0 ? void 0 : _triggerRef$current7.root)) !== null && _ref !== void 0 ? _ref : null;\n },\n\n get overlay() {\n var _overlayRef$current;\n\n if (!(overlayRef !== null && overlayRef !== void 0 && overlayRef.current)) {\n throw new Error('The overlay is not found. Please confirm whether the picker is open.');\n }\n\n return (_overlayRef$current = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) !== null && _overlayRef$current !== void 0 ? _overlayRef$current : null;\n },\n\n get target() {\n var _targetRef$current;\n\n return (_targetRef$current = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) !== null && _targetRef$current !== void 0 ? _targetRef$current : null;\n },\n\n get list() {\n if (!(listRef !== null && listRef !== void 0 && listRef.current)) {\n throw new Error(\"\\n The list is not found.\\n 1.Please set virtualized for the component.\\n 2.Please confirm whether the picker is open.\\n \");\n }\n\n return listRef === null || listRef === void 0 ? void 0 : listRef.current;\n },\n\n updatePosition: handleUpdatePosition,\n open: handleOpen,\n close: handleClose\n };\n });\n}\n\n//# sourceURL=webpack://rsuite/./src/Picker/utils.ts?");
|
|
4066
|
+
eval("\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nexports.__esModule = true;\nexports.createConcatChildrenFunction = createConcatChildrenFunction;\nexports.shouldDisplay = shouldDisplay;\nexports.usePickerClassName = usePickerClassName;\nexports.onMenuKeyDown = onMenuKeyDown;\nexports.useSearch = useSearch;\nexports.usePublicMethods = usePublicMethods;\nexports.useToggleKeyDownEvent = exports.useFocusItemValue = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\n\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\n\nvar _kebabCase = _interopRequireDefault(__webpack_require__(/*! lodash/kebabCase */ \"./node_modules/lodash/kebabCase.js\"));\n\nvar _trim = _interopRequireDefault(__webpack_require__(/*! lodash/trim */ \"./node_modules/lodash/trim.js\"));\n\nvar _isFunction = _interopRequireDefault(__webpack_require__(/*! lodash/isFunction */ \"./node_modules/lodash/isFunction.js\"));\n\nvar _isUndefined = _interopRequireDefault(__webpack_require__(/*! lodash/isUndefined */ \"./node_modules/lodash/isUndefined.js\"));\n\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\n\nvar _find = _interopRequireDefault(__webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\"));\n\nvar _treeUtils = __webpack_require__(/*! ../utils/treeUtils */ \"./src/utils/treeUtils.ts\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\nvar _domLib = __webpack_require__(/*! dom-lib */ \"./node_modules/dom-lib/esm/index.js\");\n\nvar defaultNodeKeys = {\n valueKey: 'value',\n childrenKey: 'children'\n};\n\nfunction createConcatChildrenFunction(node, nodeValue, nodeKeys) {\n if (nodeKeys === void 0) {\n nodeKeys = defaultNodeKeys;\n }\n\n var _nodeKeys = nodeKeys,\n valueKey = _nodeKeys.valueKey,\n childrenKey = _nodeKeys.childrenKey;\n return function (data, children) {\n if (nodeValue) {\n node = (0, _treeUtils.findNodeOfTree)(data, function (item) {\n return nodeValue === item[valueKey];\n });\n }\n\n node[childrenKey] = children;\n return data.concat([]);\n };\n}\n\nfunction shouldDisplay(label, searchKeyword) {\n if (!(0, _trim.default)(searchKeyword)) {\n return true;\n }\n\n var keyword = searchKeyword.toLocaleLowerCase();\n\n if (typeof label === 'string' || typeof label === 'number') {\n return (\"\" + label).toLocaleLowerCase().indexOf(keyword) >= 0;\n } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {\n var nodes = (0, _utils.reactToString)(label);\n return nodes.join('').toLocaleLowerCase().indexOf(keyword) >= 0;\n }\n\n return false;\n}\n\n/**\n * The className of the assembled Toggle is on the Picker.\n */\nfunction usePickerClassName(props) {\n var _withClassPrefix;\n\n var name = props.name,\n classPrefix = props.classPrefix,\n className = props.className,\n placement = props.placement,\n appearance = props.appearance,\n cleanable = props.cleanable,\n block = props.block,\n disabled = props.disabled,\n countable = props.countable,\n readOnly = props.readOnly,\n plaintext = props.plaintext,\n hasValue = props.hasValue,\n rest = (0, _objectWithoutPropertiesLoose2.default)(props, [\"name\", \"classPrefix\", \"className\", \"placement\", \"appearance\", \"cleanable\", \"block\", \"disabled\", \"countable\", \"readOnly\", \"plaintext\", \"hasValue\"]);\n\n var _useClassNames = (0, _utils.useClassNames)(classPrefix),\n withClassPrefix = _useClassNames.withClassPrefix,\n merge = _useClassNames.merge;\n\n var classes = merge(className, withClassPrefix(name, appearance, 'toggle-wrapper', (_withClassPrefix = {}, _withClassPrefix[\"placement-\" + (0, _kebabCase.default)((0, _utils.placementPolyfill)(placement))] = placement, _withClassPrefix['read-only'] = readOnly, _withClassPrefix['has-value'] = hasValue, _withClassPrefix.cleanable = cleanable, _withClassPrefix.block = block, _withClassPrefix.disabled = disabled, _withClassPrefix.countable = countable, _withClassPrefix.plaintext = plaintext, _withClassPrefix)));\n var usedClassNamePropKeys = Object.keys((0, _omit.default)(props, [].concat(Object.keys(rest || {}), ['disabled', 'readOnly', 'plaintext'])));\n return [classes, usedClassNamePropKeys];\n}\n\n/**\n * Handling keyboard events...\n * @param event Keyboard event object\n * @param events Event callback functions\n */\nfunction onMenuKeyDown(event, events) {\n var down = events.down,\n up = events.up,\n enter = events.enter,\n del = events.del,\n esc = events.esc,\n right = events.right,\n left = events.left;\n\n switch (event.key) {\n // down\n case _utils.KEY_VALUES.DOWN:\n down === null || down === void 0 ? void 0 : down(event);\n event.preventDefault();\n break;\n // up\n\n case _utils.KEY_VALUES.UP:\n up === null || up === void 0 ? void 0 : up(event);\n event.preventDefault();\n break;\n // enter\n\n case _utils.KEY_VALUES.ENTER:\n enter === null || enter === void 0 ? void 0 : enter(event);\n event.preventDefault();\n break;\n // delete\n\n case _utils.KEY_VALUES.BACKSPACE:\n del === null || del === void 0 ? void 0 : del(event);\n break;\n // esc | tab\n\n case _utils.KEY_VALUES.ESC:\n case _utils.KEY_VALUES.TAB:\n esc === null || esc === void 0 ? void 0 : esc(event);\n break;\n // left arrow\n\n case _utils.KEY_VALUES.LEFT:\n left === null || left === void 0 ? void 0 : left(event);\n break;\n // right arrow\n\n case _utils.KEY_VALUES.RIGHT:\n right === null || right === void 0 ? void 0 : right(event);\n break;\n\n default:\n }\n}\n\n/**\n * Checks if the element has a vertical scrollbar.\n */\nfunction hasVerticalScroll(element) {\n var scrollHeight = element.scrollHeight,\n clientHeight = element.clientHeight;\n return scrollHeight > clientHeight;\n}\n/**\n * Checks if the element is within the visible area of the container\n */\n\n\nfunction isVisible(element, container, direction) {\n if (!hasVerticalScroll(container)) {\n return true;\n }\n\n var _element$getBoundingC = element.getBoundingClientRect(),\n top = _element$getBoundingC.top,\n bottom = _element$getBoundingC.bottom,\n height = _element$getBoundingC.height;\n\n var _container$getBoundin = container.getBoundingClientRect(),\n containerTop = _container$getBoundin.top,\n containerBottom = _container$getBoundin.bottom;\n\n if (direction === 'top') {\n return top + height > containerTop;\n }\n\n return bottom - height < containerBottom;\n}\n\nfunction scrollTo(container, direction, step) {\n var scrollTop = container.scrollTop;\n container.scrollTop = direction === 'top' ? scrollTop - step : scrollTop + step;\n}\n/**\n * A hook that manages the focus state of the option.\n * @param defaultFocusItemValue\n * @param props\n */\n\n\nvar useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props) {\n var _props$valueKey = props.valueKey,\n valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,\n _props$focusableQuery = props.focusableQueryKey,\n focusableQueryKey = _props$focusableQuery === void 0 ? '[data-key][aria-disabled=\"false\"]' : _props$focusableQuery,\n _props$defaultLayer = props.defaultLayer,\n defaultLayer = _props$defaultLayer === void 0 ? 0 : _props$defaultLayer,\n data = props.data,\n target = props.target,\n rtl = props.rtl,\n callback = props.callback;\n\n var _useState = (0, _react.useState)(defaultFocusItemValue),\n focusItemValue = _useState[0],\n setFocusItemValue = _useState[1];\n\n var _useState2 = (0, _react.useState)(defaultLayer),\n layer = _useState2[0],\n setLayer = _useState2[1];\n\n var _useState3 = (0, _react.useState)([]),\n keys = _useState3[0],\n setKeys = _useState3[1];\n\n var getScrollContainer = (0, _react.useCallback)(function () {\n var menu = (0, _isFunction.default)(target) ? target() : target; // For Cascader and MutiCascader\n\n var subMenu = menu === null || menu === void 0 ? void 0 : menu.querySelector(\"[data-layer=\\\"\" + layer + \"\\\"]\");\n\n if (subMenu) {\n return subMenu;\n } // For SelectPicker、CheckPicker、Autocomplete、InputPicker、TagPicker\n\n\n return menu === null || menu === void 0 ? void 0 : menu.querySelector('[role=\"listbox\"]');\n }, [layer, target]);\n /**\n * Get the elements visible in all options.\n */\n\n var getFocusableMenuItems = (0, _react.useCallback)(function () {\n if (!target) {\n return [];\n }\n\n var currentKeys = keys;\n\n if (layer < 1) {\n var popup = (0, _isFunction.default)(target) ? target() : target;\n var rootMenu = popup === null || popup === void 0 ? void 0 : popup.querySelector('[data-layer=\"0\"]');\n\n if (rootMenu) {\n var _rootMenu$querySelect;\n\n currentKeys = Array.from((_rootMenu$querySelect = rootMenu.querySelectorAll(focusableQueryKey)) !== null && _rootMenu$querySelect !== void 0 ? _rootMenu$querySelect : []).map(function (item) {\n var _item$dataset;\n\n return (_item$dataset = item.dataset) === null || _item$dataset === void 0 ? void 0 : _item$dataset.key;\n });\n } else {\n var _popup$querySelectorA;\n\n currentKeys = Array.from((_popup$querySelectorA = popup === null || popup === void 0 ? void 0 : popup.querySelectorAll(focusableQueryKey)) !== null && _popup$querySelectorA !== void 0 ? _popup$querySelectorA : []).map(function (item) {\n var _item$dataset2;\n\n return (_item$dataset2 = item.dataset) === null || _item$dataset2 === void 0 ? void 0 : _item$dataset2.key;\n });\n }\n } // 1. It is necessary to traverse the `keys` instead of `data` here to preserve the order of the array.\n // 2. The values in `keys` are all string, so the corresponding value of `data` should also be converted to string\n\n\n return currentKeys.map(function (key) {\n return (0, _find.default)(data, function (i) {\n return \"\" + i[valueKey] === key;\n });\n });\n }, [data, focusableQueryKey, keys, target, valueKey, layer]);\n /**\n * Get the index of the focus item.\n */\n\n var findFocusItemIndex = (0, _react.useCallback)(function (callback) {\n var items = getFocusableMenuItems();\n\n for (var i = 0; i < items.length; i += 1) {\n var _items$i;\n\n if ((0, _utils.shallowEqual)(focusItemValue, (_items$i = items[i]) === null || _items$i === void 0 ? void 0 : _items$i[valueKey])) {\n callback(items, i);\n return;\n }\n }\n\n callback(items, -1);\n }, [focusItemValue, getFocusableMenuItems, valueKey]);\n var scrollListItem = (0, _react.useCallback)(function (direction, itemValue, willOverflow) {\n var container = getScrollContainer();\n var item = container === null || container === void 0 ? void 0 : container.querySelector(\"[data-key=\\\"\" + itemValue + \"\\\"]\");\n\n if (willOverflow && container) {\n var scrollHeight = container.scrollHeight,\n clientHeight = container.clientHeight;\n container.scrollTop = direction === 'top' ? scrollHeight - clientHeight : 0;\n return;\n }\n\n if (item && container) {\n if (!isVisible(item, container, direction)) {\n var height = (0, _domLib.getHeight)(item);\n scrollTo(container, direction, height);\n }\n }\n }, [getScrollContainer]);\n var focusNextMenuItem = (0, _react.useCallback)(function (event) {\n findFocusItemIndex(function (items, index) {\n var willOverflow = index + 2 > items.length;\n var nextIndex = willOverflow ? 0 : index + 1;\n var focusItem = items[nextIndex];\n\n if (!(0, _isUndefined.default)(focusItem)) {\n setFocusItemValue(focusItem[valueKey]);\n callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);\n scrollListItem('bottom', focusItem[valueKey], willOverflow);\n }\n });\n }, [callback, findFocusItemIndex, scrollListItem, valueKey]);\n var focusPrevMenuItem = (0, _react.useCallback)(function (event) {\n findFocusItemIndex(function (items, index) {\n var willOverflow = index === 0;\n var nextIndex = willOverflow ? items.length - 1 : index - 1;\n var focusItem = items[nextIndex];\n\n if (!(0, _isUndefined.default)(focusItem)) {\n setFocusItemValue(focusItem[valueKey]);\n callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);\n scrollListItem('top', focusItem[valueKey], willOverflow);\n }\n });\n }, [callback, findFocusItemIndex, scrollListItem, valueKey]);\n var getSubMenuKeys = (0, _react.useCallback)(function (nextLayer) {\n var menu = (0, _isFunction.default)(target) ? target() : target;\n var subMenu = menu === null || menu === void 0 ? void 0 : menu.querySelector(\"[data-layer=\\\"\" + nextLayer + \"\\\"]\");\n\n if (subMenu) {\n var _Array$from;\n\n return (_Array$from = Array.from(subMenu.querySelectorAll(focusableQueryKey))) === null || _Array$from === void 0 ? void 0 : _Array$from.map(function (item) {\n var _item$dataset3;\n\n return (_item$dataset3 = item.dataset) === null || _item$dataset3 === void 0 ? void 0 : _item$dataset3.key;\n });\n }\n\n return null;\n }, [focusableQueryKey, target]);\n var focusNextLevelMenu = (0, _react.useCallback)(function (event) {\n var nextLayer = layer + 1;\n var nextKeys = getSubMenuKeys(nextLayer);\n\n if (nextKeys) {\n setKeys(nextKeys);\n setLayer(nextLayer);\n setFocusItemValue(nextKeys[0]);\n callback === null || callback === void 0 ? void 0 : callback(nextKeys[0], event);\n }\n }, [callback, getSubMenuKeys, layer]);\n var focusPrevLevelMenu = (0, _react.useCallback)(function (event) {\n var nextLayer = layer - 1;\n var nextKeys = getSubMenuKeys(nextLayer);\n\n if (nextKeys) {\n var _focusItem$parent;\n\n setKeys(nextKeys);\n setLayer(nextLayer);\n var focusItem = (0, _treeUtils.findNodeOfTree)(data, function (item) {\n return item[valueKey] === focusItemValue;\n });\n var parentItemValue = focusItem === null || focusItem === void 0 ? void 0 : (_focusItem$parent = focusItem.parent) === null || _focusItem$parent === void 0 ? void 0 : _focusItem$parent[valueKey];\n\n if (parentItemValue) {\n setFocusItemValue(parentItemValue);\n callback === null || callback === void 0 ? void 0 : callback(parentItemValue, event);\n }\n }\n }, [callback, data, focusItemValue, getSubMenuKeys, layer, valueKey]);\n var handleKeyDown = (0, _react.useCallback)(function (event) {\n var _onMenuKeyDown;\n\n onMenuKeyDown(event, (_onMenuKeyDown = {\n down: focusNextMenuItem,\n up: focusPrevMenuItem\n }, _onMenuKeyDown[rtl ? 'left' : 'right'] = focusNextLevelMenu, _onMenuKeyDown[rtl ? 'right' : 'left'] = focusPrevLevelMenu, _onMenuKeyDown));\n }, [focusNextLevelMenu, focusNextMenuItem, focusPrevLevelMenu, focusPrevMenuItem, rtl]);\n return {\n focusItemValue: focusItemValue,\n setFocusItemValue: setFocusItemValue,\n layer: layer,\n setLayer: setLayer,\n keys: keys,\n setKeys: setKeys,\n onKeyDown: handleKeyDown\n };\n};\n\nexports.useFocusItemValue = useFocusItemValue;\n\n/**\n * A hook to control the toggle keyboard operation\n * @param props\n */\nvar useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {\n var _props$toggle = props.toggle,\n toggle = _props$toggle === void 0 ? true : _props$toggle,\n triggerRef = props.triggerRef,\n targetRef = props.targetRef,\n overlayRef = props.overlayRef,\n searchInputRef = props.searchInputRef,\n active = props.active,\n onExit = props.onExit,\n onOpen = props.onOpen,\n onClose = props.onClose,\n onKeyDown = props.onKeyDown,\n onMenuKeyDown = props.onMenuKeyDown,\n onMenuPressEnter = props.onMenuPressEnter,\n onMenuPressBackspace = props.onMenuPressBackspace;\n var handleClose = (0, _react.useCallback)(function () {\n var _triggerRef$current, _triggerRef$current$c;\n\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current);\n onClose === null || onClose === void 0 ? void 0 : onClose();\n }, [onClose, triggerRef]);\n var handleOpen = (0, _react.useCallback)(function () {\n var _triggerRef$current2, _triggerRef$current2$;\n\n (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.open) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);\n onOpen === null || onOpen === void 0 ? void 0 : onOpen();\n }, [onOpen, triggerRef]);\n var handleToggleDropdown = (0, _react.useCallback)(function () {\n if (active) {\n handleClose();\n return;\n }\n\n handleOpen();\n }, [active, handleOpen, handleClose]);\n var onToggle = (0, _react.useCallback)(function (event) {\n if (event.target === (targetRef === null || targetRef === void 0 ? void 0 : targetRef.current)) {\n // enter\n if (toggle && event.key === _utils.KEY_VALUES.ENTER) {\n handleToggleDropdown();\n } // delete\n\n\n if (event.key === _utils.KEY_VALUES.BACKSPACE) {\n onExit === null || onExit === void 0 ? void 0 : onExit(event);\n }\n }\n\n if (overlayRef !== null && overlayRef !== void 0 && overlayRef.current) {\n // The keyboard operation callback on the menu.\n onMenuKeyDown === null || onMenuKeyDown === void 0 ? void 0 : onMenuKeyDown(event);\n\n if (event.key === _utils.KEY_VALUES.ENTER) {\n onMenuPressEnter === null || onMenuPressEnter === void 0 ? void 0 : onMenuPressEnter(event);\n }\n /**\n * There is no callback when typing the Backspace key in the search box.\n * The default is to remove search keywords\n */\n\n\n if (event.key === _utils.KEY_VALUES.BACKSPACE && event.target !== (searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current)) {\n onMenuPressBackspace === null || onMenuPressBackspace === void 0 ? void 0 : onMenuPressBackspace(event);\n } // The search box gets focus when typing characters and numbers.\n\n\n if (event.key.length === 1 && /\\w/.test(event.key)) {\n var _event$target;\n\n // Exclude Input\n // eg: <SelectPicker renderExtraFooter={() => <Input />} />\n if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) !== 'INPUT') {\n var _searchInputRef$curre;\n\n searchInputRef === null || searchInputRef === void 0 ? void 0 : (_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 ? void 0 : _searchInputRef$curre.focus();\n }\n }\n }\n\n if (event.key === _utils.KEY_VALUES.ESC || event.key === _utils.KEY_VALUES.TAB) {\n handleClose();\n } // Native event callback\n\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);\n }, [handleClose, handleToggleDropdown, overlayRef, onExit, onKeyDown, onMenuKeyDown, onMenuPressBackspace, onMenuPressEnter, toggle, targetRef, searchInputRef]);\n return onToggle;\n};\n\nexports.useToggleKeyDownEvent = useToggleKeyDownEvent;\n\n/**\n * A hook that handles search filter options\n * @param props\n */\nfunction useSearch(props) {\n var labelKey = props.labelKey,\n data = props.data,\n searchBy = props.searchBy,\n callback = props.callback; // Use search keywords to filter options.\n\n var _useState4 = (0, _react.useState)(''),\n searchKeyword = _useState4[0],\n setSearchKeyword = _useState4[1];\n /**\n * Index of keyword in `label`\n * @param {node} label\n */\n\n\n var checkShouldDisplay = (0, _react.useCallback)(function (item, keyword) {\n var label = item === null || item === void 0 ? void 0 : item[labelKey];\n\n var _keyword = (0, _isUndefined.default)(keyword) ? searchKeyword : keyword;\n\n if (typeof searchBy === 'function') {\n return searchBy(_keyword, label, item);\n }\n\n return shouldDisplay(label, _keyword);\n }, [labelKey, searchBy, searchKeyword]);\n var updateFilteredData = (0, _react.useCallback)(function (nextData) {\n setFilteredData((0, _treeUtils.filterNodesOfTree)(nextData, function (item) {\n return checkShouldDisplay(item);\n }));\n }, [checkShouldDisplay]);\n\n var _useState5 = (0, _react.useState)((0, _treeUtils.filterNodesOfTree)(data, function (item) {\n return checkShouldDisplay(item);\n })),\n filteredData = _useState5[0],\n setFilteredData = _useState5[1];\n\n var handleSearch = function handleSearch(searchKeyword, event) {\n var filteredData = (0, _treeUtils.filterNodesOfTree)(data, function (item) {\n return checkShouldDisplay(item, searchKeyword);\n });\n setFilteredData(filteredData);\n setSearchKeyword(searchKeyword);\n callback === null || callback === void 0 ? void 0 : callback(searchKeyword, filteredData, event);\n };\n\n return {\n searchKeyword: searchKeyword,\n filteredData: filteredData,\n updateFilteredData: updateFilteredData,\n setSearchKeyword: setSearchKeyword,\n checkShouldDisplay: checkShouldDisplay,\n handleSearch: handleSearch\n };\n}\n\n/**\n * A hook of the exposed method of Picker\n */\nfunction usePublicMethods(ref, parmas) {\n var triggerRef = parmas.triggerRef,\n overlayRef = parmas.overlayRef,\n targetRef = parmas.targetRef,\n rootRef = parmas.rootRef,\n listRef = parmas.listRef,\n inline = parmas.inline;\n var handleOpen = (0, _react.useCallback)(function () {\n var _triggerRef$current3;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : _triggerRef$current3.open();\n }, [triggerRef]);\n var handleClose = (0, _react.useCallback)(function () {\n var _triggerRef$current4;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.close();\n }, [triggerRef]);\n var handleUpdatePosition = (0, _react.useCallback)(function () {\n var _triggerRef$current5;\n\n triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current5 = triggerRef.current) === null || _triggerRef$current5 === void 0 ? void 0 : _triggerRef$current5.updatePosition();\n }, [triggerRef]);\n (0, _react.useImperativeHandle)(ref, function () {\n // Tree and CheckTree\n if (inline) {\n return {\n get root() {\n var _triggerRef$current$r, _triggerRef$current6;\n\n return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current$r = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root) !== null && _triggerRef$current$r !== void 0 ? _triggerRef$current$r : null;\n },\n\n get list() {\n if (!(listRef !== null && listRef !== void 0 && listRef.current)) {\n throw new Error('The list is not found, please set `virtualized` for the component.');\n }\n\n return listRef === null || listRef === void 0 ? void 0 : listRef.current;\n }\n\n };\n }\n\n return {\n get root() {\n var _ref, _triggerRef$current7;\n\n return (_ref = (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) || (triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current7 = triggerRef.current) === null || _triggerRef$current7 === void 0 ? void 0 : _triggerRef$current7.root)) !== null && _ref !== void 0 ? _ref : null;\n },\n\n get overlay() {\n var _overlayRef$current;\n\n if (!(overlayRef !== null && overlayRef !== void 0 && overlayRef.current)) {\n throw new Error('The overlay is not found. Please confirm whether the picker is open.');\n }\n\n return (_overlayRef$current = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) !== null && _overlayRef$current !== void 0 ? _overlayRef$current : null;\n },\n\n get target() {\n var _targetRef$current;\n\n return (_targetRef$current = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) !== null && _targetRef$current !== void 0 ? _targetRef$current : null;\n },\n\n get list() {\n if (!(listRef !== null && listRef !== void 0 && listRef.current)) {\n throw new Error(\"\\n The list is not found.\\n 1.Please set virtualized for the component.\\n 2.Please confirm whether the picker is open.\\n \");\n }\n\n return listRef === null || listRef === void 0 ? void 0 : listRef.current;\n },\n\n updatePosition: handleUpdatePosition,\n open: handleOpen,\n close: handleClose\n };\n });\n}\n\n//# sourceURL=webpack://rsuite/./src/Picker/utils.ts?");
|
|
4067
4067
|
|
|
4068
4068
|
/***/ }),
|
|
4069
4069
|
|