rc-dropdown
Advanced tools
Comparing version 3.2.2 to 3.2.3
import * as React from 'react'; | ||
import { TriggerProps } from 'rc-trigger'; | ||
import { AnimationType, AlignType, BuildInPlacements, ActionType } from 'rc-trigger/lib/interface'; | ||
import type { TriggerProps } from 'rc-trigger'; | ||
import type { AnimationType, AlignType, BuildInPlacements, ActionType } from 'rc-trigger/lib/interface'; | ||
export interface DropdownProps extends Pick<TriggerProps, 'getPopupContainer' | 'children' | 'mouseEnterDelay' | 'mouseLeaveDelay' | 'onPopupAlign' | 'builtinPlacements'> { | ||
@@ -5,0 +5,0 @@ minOverlayWidthMatchTrigger?: boolean; |
@@ -10,2 +10,3 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; | ||
import Placements from './placements'; | ||
import useAccessibility from './hooks/useAccessibility'; | ||
@@ -44,3 +45,15 @@ function Dropdown(props, ref) { | ||
}); | ||
var menuRef = React.useRef(null); | ||
var menuClassName = "".concat(prefixCls, "-menu"); | ||
var _useAccessibility = useAccessibility({ | ||
visible: mergedVisible, | ||
setTriggerVisible: setTriggerVisible, | ||
triggerRef: triggerRef, | ||
menuRef: menuRef, | ||
menuClassName: menuClassName, | ||
onVisibleChange: props.onVisibleChange | ||
}), | ||
returnFocus = _useAccessibility.returnFocus; | ||
var getOverlayElement = function getOverlayElement() { | ||
@@ -71,10 +84,12 @@ var overlay = props.overlay; | ||
} | ||
returnFocus(); | ||
}; | ||
var onVisibleChange = function onVisibleChange(visible) { | ||
var onVisibleChange = props.onVisibleChange; | ||
setTriggerVisible(visible); | ||
var onVisibleChange = function onVisibleChange(newVisible) { | ||
var onVisibleChangeProp = props.onVisibleChange; | ||
setTriggerVisible(newVisible); | ||
if (typeof onVisibleChange === 'function') { | ||
onVisibleChange(visible); | ||
if (typeof onVisibleChangeProp === 'function') { | ||
onVisibleChangeProp(newVisible); | ||
} | ||
@@ -86,3 +101,3 @@ }; | ||
var extraOverlayProps = { | ||
prefixCls: "".concat(prefixCls, "-menu"), | ||
prefixCls: menuClassName, | ||
onClick: onClick | ||
@@ -97,3 +112,5 @@ }; | ||
className: "".concat(prefixCls, "-arrow") | ||
}), /*#__PURE__*/React.cloneElement(overlayElement, extraOverlayProps)); | ||
}), /*#__PURE__*/React.createElement("div", { | ||
ref: menuRef | ||
}, /*#__PURE__*/React.cloneElement(overlayElement, extraOverlayProps))); | ||
}; | ||
@@ -136,3 +153,3 @@ | ||
var childClassName = classNames(childrenProps.className, getOpenClassName()); | ||
return triggerVisible && children ? /*#__PURE__*/React.cloneElement(children, { | ||
return mergedVisible && children ? /*#__PURE__*/React.cloneElement(children, { | ||
className: childClassName | ||
@@ -139,0 +156,0 @@ }) : children; |
import * as React from 'react'; | ||
import { TriggerProps } from 'rc-trigger'; | ||
import { AnimationType, AlignType, BuildInPlacements, ActionType } from 'rc-trigger/lib/interface'; | ||
import type { TriggerProps } from 'rc-trigger'; | ||
import type { AnimationType, AlignType, BuildInPlacements, ActionType } from 'rc-trigger/lib/interface'; | ||
export interface DropdownProps extends Pick<TriggerProps, 'getPopupContainer' | 'children' | 'mouseEnterDelay' | 'mouseLeaveDelay' | 'onPopupAlign' | 'builtinPlacements'> { | ||
@@ -5,0 +5,0 @@ minOverlayWidthMatchTrigger?: boolean; |
@@ -28,2 +28,4 @@ "use strict"; | ||
var _useAccessibility2 = _interopRequireDefault(require("./hooks/useAccessibility")); | ||
var _excluded = ["arrow", "prefixCls", "transitionName", "animation", "align", "placement", "placements", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "visible", "trigger"]; | ||
@@ -63,3 +65,15 @@ | ||
}); | ||
var menuRef = React.useRef(null); | ||
var menuClassName = "".concat(prefixCls, "-menu"); | ||
var _useAccessibility = (0, _useAccessibility2.default)({ | ||
visible: mergedVisible, | ||
setTriggerVisible: setTriggerVisible, | ||
triggerRef: triggerRef, | ||
menuRef: menuRef, | ||
menuClassName: menuClassName, | ||
onVisibleChange: props.onVisibleChange | ||
}), | ||
returnFocus = _useAccessibility.returnFocus; | ||
var getOverlayElement = function getOverlayElement() { | ||
@@ -90,10 +104,12 @@ var overlay = props.overlay; | ||
} | ||
returnFocus(); | ||
}; | ||
var onVisibleChange = function onVisibleChange(visible) { | ||
var onVisibleChange = props.onVisibleChange; | ||
setTriggerVisible(visible); | ||
var onVisibleChange = function onVisibleChange(newVisible) { | ||
var onVisibleChangeProp = props.onVisibleChange; | ||
setTriggerVisible(newVisible); | ||
if (typeof onVisibleChange === 'function') { | ||
onVisibleChange(visible); | ||
if (typeof onVisibleChangeProp === 'function') { | ||
onVisibleChangeProp(newVisible); | ||
} | ||
@@ -105,3 +121,3 @@ }; | ||
var extraOverlayProps = { | ||
prefixCls: "".concat(prefixCls, "-menu"), | ||
prefixCls: menuClassName, | ||
onClick: onClick | ||
@@ -116,3 +132,5 @@ }; | ||
className: "".concat(prefixCls, "-arrow") | ||
}), /*#__PURE__*/React.cloneElement(overlayElement, extraOverlayProps)); | ||
}), /*#__PURE__*/React.createElement("div", { | ||
ref: menuRef | ||
}, /*#__PURE__*/React.cloneElement(overlayElement, extraOverlayProps))); | ||
}; | ||
@@ -155,3 +173,3 @@ | ||
var childClassName = (0, _classnames.default)(childrenProps.className, getOpenClassName()); | ||
return triggerVisible && children ? /*#__PURE__*/React.cloneElement(children, { | ||
return mergedVisible && children ? /*#__PURE__*/React.cloneElement(children, { | ||
className: childClassName | ||
@@ -158,0 +176,0 @@ }) : children; |
{ | ||
"name": "rc-dropdown", | ||
"version": "3.2.2", | ||
"version": "3.2.3", | ||
"description": "dropdown ui component for react", | ||
@@ -50,2 +50,3 @@ "keywords": [ | ||
"enzyme-adapter-react-16": "^1.0.2", | ||
"enzyme-to-json": "^3.4.0", | ||
"father": "^2.13.2", | ||
@@ -55,3 +56,3 @@ "jquery": "^3.3.1", | ||
"np": "^6.0.0", | ||
"rc-menu": "^8.0.0-alpha.2", | ||
"rc-menu": "^9.2.1", | ||
"rc-util": "^5.2.0", | ||
@@ -58,0 +59,0 @@ "react": "^16.11.0", |
40921
20
990
20