UNPKG

native-base

Version:

Essential cross-platform UI components for React Native

71 lines (66 loc) 2.55 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React from 'react'; import { usePropsResolution } from '../../../hooks'; import { Pressable } from '../../primitives/Pressable'; import { CloseIcon } from '../../primitives/Icon/Icons'; import { PopoverContext } from './PopoverContext'; import { useHasResponsiveProps } from '../../../hooks/useHasResponsiveProps'; import { useHover, useFocus, useIsPressed } from '../../primitives/Pressable/Pressable'; import { composeEventHandlers } from '../../../utils'; import { useFocusRing } from '@react-native-aria/focus'; const PopoverCloseButton = (props, ref) => { const { onClose } = React.useContext(PopoverContext); const { hoverProps, isHovered } = useHover(); const { pressableProps, isPressed } = useIsPressed(); const { focusProps, isFocused } = useFocus(); const { isFocusVisible, focusProps: focusRingProps } = useFocusRing(); const { _icon, onPressIn, onPressOut, onHoverIn, onHoverOut, onFocus, onBlur, ...resolvedProps } = usePropsResolution('PopoverCloseButton', props, { isHovered, isPressed, isFocused, isFocusVisible }); //TODO: refactor for responsive prop if (useHasResponsiveProps(props)) { return null; } return /*#__PURE__*/React.createElement(Pressable, _extends({ accessibilityRole: "button", ref: ref, onPressIn: composeEventHandlers(onPressIn, pressableProps.onPressIn), onPressOut: composeEventHandlers(onPressOut, pressableProps.onPressOut) // @ts-ignore - web only , onHoverIn: composeEventHandlers(onHoverIn, hoverProps.onHoverIn) // @ts-ignore - web only , onHoverOut: composeEventHandlers(onHoverOut, hoverProps.onHoverOut) // @ts-ignore - web only , onFocus: composeEventHandlers(composeEventHandlers(onFocus, focusProps.onFocus), focusRingProps.onFocus) // @ts-ignore - web only , onBlur: composeEventHandlers(composeEventHandlers(onBlur, focusProps.onBlur), focusRingProps.onBlur), onPress: onClose }, resolvedProps), /*#__PURE__*/React.createElement(CloseIcon, _icon)); }; export default /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(PopoverCloseButton)); //# sourceMappingURL=PopoverCloseButton.js.map