UNPKG

32.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["Menu.tsx"],"names":["React","Platform","StyleSheet","Animated","BackHandler","Dimensions","Easing","I18nManager","TouchableWithoutFeedback","View","ScrollView","findNodeHandle","withTheme","Portal","Surface","MenuItem","APPROX_STATUSBAR_HEIGHT","addEventListener","SCREEN_INDENT","ANIMATION_DURATION","EASING","bezier","Menu","Component","rendered","props","visible","top","left","menuLayout","width","height","anchorLayout","opacityAnimation","Value","scaleAnimation","ValueXY","x","y","anchor","isValidElement","Promise","resolve","menu","measureInWindow","isCoordinate","show","hide","OS","global","el","isBrowser","node","focusableNode","querySelector","focus","onDismiss","e","key","backHandlerSubscription","handleDismiss","dimensionsSubscription","document","handleKeypress","remove","removeEventListener","windowLayout","get","all","measureMenuLayout","measureAnchorLayout","requestAnimationFrame","setState","attachListeners","animation","theme","parallel","timing","state","toValue","duration","scale","easing","useNativeDriver","start","finished","focusFirstDOMNode","removeListeners","setValue","getDerivedStateFromProps","nextProps","prevState","componentDidUpdate","prevProps","updateVisibility","componentWillUnmount","render","contentStyle","style","children","statusBarHeight","overlayAccessibilityLabel","additionalVerticalValue","select","android","default","scaleTransforms","scaleX","interpolate","inputRange","outputRange","scaleY","positionTransforms","push","translateX","right","scrollableMenuHeight","translateY","bottom","shadowMenuContainerStyle","opacity","transform","borderRadius","roundness","positionStyle","isRTL","ref","absoluteFill","styles","wrapper","shadowMenuContainer","create","position","paddingVertical","elevation"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n StyleProp,\n StyleSheet,\n Animated,\n BackHandler,\n Dimensions,\n Easing,\n I18nManager,\n LayoutRectangle,\n TouchableWithoutFeedback,\n View,\n ViewStyle,\n ScrollView,\n findNodeHandle,\n NativeEventSubscription,\n} from 'react-native';\n\nimport { withTheme } from '../../core/theming';\nimport type { $Omit } from '../../types';\nimport Portal from '../Portal/Portal';\nimport Surface from '../Surface';\nimport MenuItem from './MenuItem';\nimport { APPROX_STATUSBAR_HEIGHT } from '../../constants';\nimport { addEventListener } from '../../utils/addEventListener';\n\ntype Props = {\n /**\n * Whether the Menu is currently visible.\n */\n visible: boolean;\n /**\n * The anchor to open the menu from. In most cases, it will be a button that opens the menu.\n */\n anchor: React.ReactNode | { x: number; y: number };\n /**\n * Extra margin to add at the top of the menu to account for translucent status bar on Android.\n * If you are using Expo, we assume translucent status bar and set a height for status bar automatically.\n * Pass `0` or a custom value to and customize it.\n * This is automatically handled on iOS.\n */\n statusBarHeight?: number;\n /**\n * Callback called when Menu is dismissed. The `visible` prop needs to be updated when this is called.\n */\n onDismiss: () => void;\n /**\n * Accessibility label for the overlay. This is read by the screen reader when the user taps outside the menu.\n */\n overlayAccessibilityLabel?: string;\n /**\n * Content of the `Menu`.\n */\n children: React.ReactNode;\n /**\n * Style of menu's inner content.\n */\n contentStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<ViewStyle>;\n /**\n * @optional\n */\n theme: ReactNativePaper.Theme;\n};\n\ntype Layout = $Omit<$Omit<LayoutRectangle, 'x'>, 'y'>;\n\ntype State = {\n rendered: boolean;\n top: number;\n left: number;\n menuLayout: Layout;\n anchorLayout: Layout;\n opacityAnimation: Animated.Value;\n scaleAnimation: Animated.ValueXY;\n};\n\n// Minimum padding between the edge of the screen and the menu\nconst SCREEN_INDENT = 8;\n// From https://material.io/design/motion/speed.html#duration\nconst ANIMATION_DURATION = 250;\n// From the 'Standard easing' section of https://material.io/design/motion/speed.html#easing\nconst EASING = Easing.bezier(0.4, 0, 0.2, 1);\n\n/**\n * Menus display a list of choices on temporary elevated surfaces. Their placement varies based on the element that opens them.\n *\n * <div class=\"screenshots\">\n * <img class=\"medium\" src=\"screenshots/menu-1.png\" />\n * <img class=\"medium\" src=\"screenshots/menu-2.png\" />\n * </div>\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { View } from 'react-native';\n * import { Button, Menu, Divider, Provider } from 'react-native-paper';\n *\n * const MyComponent = () => {\n * const [visible, setVisible] = React.useState(false);\n *\n * const openMenu = () => setVisible(true);\n *\n * const closeMenu = () => setVisible(false);\n *\n * return (\n * <Provider>\n * <View\n * style={{\n * paddingTop: 50,\n * flexDirection: 'row',\n * justifyContent: 'center',\n * }}>\n * <Menu\n * visible={visible}\n * onDismiss={closeMenu}\n * anchor={<Button onPress={openMenu}>Show menu</Button>}>\n * <Menu.Item onPress={() => {}} title=\"Item 1\" />\n * <Menu.Item onPress={() => {}} title=\"Item 2\" />\n * <Divider />\n * <Menu.Item onPress={() => {}} title=\"Item 3\" />\n * </Menu>\n * </View>\n * </Provider>\n * );\n * };\n *\n * export default MyComponent;\n * ```\n */\nclass Menu extends React.Component<Props, State> {\n // @component ./MenuItem.tsx\n static Item = MenuItem;\n\n static defaultProps = {\n statusBarHeight: APPROX_STATUSBAR_HEIGHT,\n overlayAccessibilityLabel: 'Close menu',\n };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.visible && !prevState.rendered) {\n return { rendered: true };\n }\n\n return null;\n }\n\n state = {\n rendered: this.props.visible,\n top: 0,\n left: 0,\n menuLayout: { width: 0, height: 0 },\n anchorLayout: { width: 0, height: 0 },\n opacityAnimation: new Animated.Value(0),\n scaleAnimation: new Animated.ValueXY({ x: 0, y: 0 }),\n };\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.visible !== this.props.visible) {\n this.updateVisibility();\n }\n }\n\n componentWillUnmount() {\n this.removeListeners();\n }\n\n private anchor?: View | null = null;\n private menu?: View | null = null;\n private backHandlerSubscription: NativeEventSubscription | undefined;\n private dimensionsSubscription: NativeEventSubscription | undefined;\n\n private isCoordinate = (anchor: any): anchor is { x: number; y: number } =>\n !React.isValidElement(anchor) &&\n typeof anchor?.x === 'number' &&\n typeof anchor?.y === 'number';\n\n private measureMenuLayout = () =>\n new Promise<LayoutRectangle>((resolve) => {\n if (this.menu) {\n this.menu.measureInWindow((x, y, width, height) => {\n resolve({ x, y, width, height });\n });\n }\n });\n\n private measureAnchorLayout = () =>\n new Promise<LayoutRectangle>((resolve) => {\n const { anchor } = this.props;\n if (this.isCoordinate(anchor)) {\n resolve({ x: anchor.x, y: anchor.y, width: 0, height: 0 });\n return;\n }\n\n if (this.anchor) {\n this.anchor.measureInWindow((x, y, width, height) => {\n resolve({ x, y, width, height });\n });\n }\n });\n\n private updateVisibility = async () => {\n // Menu is rendered in Portal, which updates items asynchronously\n // We need to do the same here so that the ref is up-to-date\n await Promise.resolve();\n\n if (this.props.visible) {\n this.show();\n } else {\n this.hide();\n }\n };\n\n private isBrowser = () => Platform.OS === 'web' && 'document' in global;\n\n private focusFirstDOMNode = (el: View | null | undefined) => {\n if (el && this.isBrowser()) {\n // When in the browser, we want to focus the first focusable item on toggle\n // For example, when menu is shown, focus the first item in the menu\n // And when menu is dismissed, send focus back to the button to resume tabbing\n const node: any = findNodeHandle(el);\n const focusableNode = node.querySelector(\n // This is a rough list of selectors that can be focused\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n focusableNode?.focus();\n }\n };\n\n private handleDismiss = () => {\n if (this.props.visible) {\n this.props.onDismiss();\n }\n return true;\n };\n\n private handleKeypress = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.props.onDismiss();\n }\n };\n\n private attachListeners = () => {\n this.backHandlerSubscription = addEventListener(\n BackHandler,\n 'hardwareBackPress',\n this.handleDismiss\n );\n this.dimensionsSubscription = addEventListener(\n Dimensions,\n 'change',\n this.handleDismiss\n );\n this.isBrowser() && document.addEventListener('keyup', this.handleKeypress);\n };\n\n private removeListeners = () => {\n this.backHandlerSubscription?.remove();\n this.dimensionsSubscription?.remove();\n this.isBrowser() &&\n document.removeEventListener('keyup', this.handleKeypress);\n };\n\n private show = async () => {\n const windowLayout = Dimensions.get('window');\n const [menuLayout, anchorLayout] = await Promise.all([\n this.measureMenuLayout(),\n this.measureAnchorLayout(),\n ]);\n\n // When visible is true for first render\n // native views can be still not rendered and\n // measureMenuLayout/measureAnchorLayout functions\n // return wrong values e.g { x:0, y: 0, width: 0, height: 0 }\n // so we have to wait until views are ready\n // and rerun this function to show menu\n if (\n !windowLayout.width ||\n !windowLayout.height ||\n !menuLayout.width ||\n !menuLayout.height ||\n (!anchorLayout.width && !this.isCoordinate(this.props.anchor)) ||\n (!anchorLayout.height && !this.isCoordinate(this.props.anchor))\n ) {\n requestAnimationFrame(this.show);\n return;\n }\n\n this.setState(\n () => ({\n left: anchorLayout.x,\n top: anchorLayout.y,\n anchorLayout: {\n height: anchorLayout.height,\n width: anchorLayout.width,\n },\n menuLayout: {\n width: menuLayout.width,\n height: menuLayout.height,\n },\n }),\n () => {\n this.attachListeners();\n\n const { animation } = this.props.theme;\n Animated.parallel([\n Animated.timing(this.state.scaleAnimation, {\n toValue: { x: menuLayout.width, y: menuLayout.height },\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }),\n Animated.timing(this.state.opacityAnimation, {\n toValue: 1,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n this.focusFirstDOMNode(this.menu);\n }\n });\n }\n );\n };\n\n private hide = () => {\n this.removeListeners();\n\n const { animation } = this.props.theme;\n Animated.timing(this.state.opacityAnimation, {\n toValue: 0,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished) {\n this.setState({ menuLayout: { width: 0, height: 0 }, rendered: false });\n this.state.scaleAnimation.setValue({ x: 0, y: 0 });\n this.focusFirstDOMNode(this.anchor);\n }\n });\n };\n\n render() {\n const {\n visible,\n anchor,\n contentStyle,\n style,\n children,\n theme,\n statusBarHeight,\n onDismiss,\n overlayAccessibilityLabel,\n } = this.props;\n\n const {\n rendered,\n menuLayout,\n anchorLayout,\n opacityAnimation,\n scaleAnimation,\n } = this.state;\n\n let { left, top } = this.state;\n\n // I don't know why but on Android measure function is wrong by 24\n const additionalVerticalValue = Platform.select({\n android: statusBarHeight,\n default: 0,\n });\n\n const scaleTransforms = [\n {\n scaleX: scaleAnimation.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [0, 1],\n }),\n },\n {\n scaleY: scaleAnimation.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [0, 1],\n }),\n },\n ];\n\n const windowLayout = Dimensions.get('window');\n\n // We need to translate menu while animating scale to imitate transform origin for scale animation\n const positionTransforms = [];\n\n // Check if menu fits horizontally and if not align it to right.\n if (left <= windowLayout.width - menuLayout.width - SCREEN_INDENT) {\n positionTransforms.push({\n translateX: scaleAnimation.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [-(menuLayout.width / 2), 0],\n }),\n });\n\n // Check if menu position has enough space from left side\n if (left < SCREEN_INDENT) {\n left = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateX: scaleAnimation.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [menuLayout.width / 2, 0],\n }),\n });\n\n left += anchorLayout.width - menuLayout.width;\n\n const right = left + menuLayout.width;\n // Check if menu position has enough space from right side\n if (right > windowLayout.width - SCREEN_INDENT) {\n left = windowLayout.width - SCREEN_INDENT - menuLayout.width;\n }\n }\n\n // If the menu is larger than available vertical space,\n // calculate the height of scrollable view\n let scrollableMenuHeight = 0;\n\n // Check if the menu should be scrollable\n if (\n // Check if the menu overflows from bottom side\n top >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And bottom side of the screen has more space than top side\n top <= windowLayout.height - top\n ) {\n // Scrollable menu should be below the anchor (expands downwards)\n scrollableMenuHeight =\n windowLayout.height - top - SCREEN_INDENT - additionalVerticalValue;\n } else if (\n // Check if the menu overflows from bottom side\n top >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And top side of the screen has more space than bottom side\n top >= windowLayout.height - top &&\n // And menu overflows from top side\n top <=\n menuLayout.height -\n anchorLayout.height +\n SCREEN_INDENT -\n additionalVerticalValue\n ) {\n // Scrollable menu should be above the anchor (expands upwards)\n scrollableMenuHeight =\n top + anchorLayout.height - SCREEN_INDENT + additionalVerticalValue;\n }\n\n // Scrollable menu max height\n scrollableMenuHeight =\n scrollableMenuHeight > windowLayout.height - 2 * SCREEN_INDENT\n ? windowLayout.height - 2 * SCREEN_INDENT\n : scrollableMenuHeight;\n\n // Menu is typically positioned below the element that generates it\n // So first check if it fits below the anchor (expands downwards)\n if (\n // Check if menu fits vertically\n top <=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue ||\n // Or if the menu overflows from bottom side\n (top >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And bottom side of the screen has more space than top side\n top <= windowLayout.height - top)\n ) {\n positionTransforms.push({\n translateY: scaleAnimation.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [-((scrollableMenuHeight || menuLayout.height) / 2), 0],\n }),\n });\n\n // Check if menu position has enough space from top side\n if (top < SCREEN_INDENT) {\n top = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateY: scaleAnimation.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [(scrollableMenuHeight || menuLayout.height) / 2, 0],\n }),\n });\n\n top += anchorLayout.height - (scrollableMenuHeight || menuLayout.height);\n\n const bottom =\n top +\n (scrollableMenuHeight || menuLayout.height) +\n additionalVerticalValue;\n\n // Check if menu position has enough space from bottom side\n if (bottom > windowLayout.height - SCREEN_INDENT) {\n top =\n scrollableMenuHeight === windowLayout.height - 2 * SCREEN_INDENT\n ? -SCREEN_INDENT * 2\n : windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue;\n }\n }\n\n const shadowMenuContainerStyle = {\n opacity: opacityAnimation,\n transform: scaleTransforms,\n borderRadius: theme.roundness,\n ...(scrollableMenuHeight ? { height: scrollableMenuHeight } : {}),\n };\n\n const positionStyle = {\n top: this.isCoordinate(anchor) ? top : top + additionalVerticalValue,\n ...(I18nManager.isRTL ? { right: left } : { left }),\n };\n\n return (\n <View\n ref={(ref) => {\n this.anchor = ref;\n }}\n collapsable={false}\n >\n {this.isCoordinate(anchor) ? null : anchor}\n {rendered ? (\n <Portal>\n <TouchableWithoutFeedback\n accessibilityLabel={overlayAccessibilityLabel}\n accessibilityRole=\"button\"\n onPress={onDismiss}\n >\n <View style={StyleSheet.absoluteFill} />\n </TouchableWithoutFeedback>\n <View\n ref={(ref) => {\n this.menu = ref;\n }}\n collapsable={false}\n accessibilityViewIsModal={visible}\n style={[styles.wrapper, positionStyle, style]}\n pointerEvents={visible ? 'box-none' : 'none'}\n onAccessibilityEscape={onDismiss}\n >\n <Animated.View style={{ transform: positionTransforms }}>\n <Surface\n style={\n [\n styles.shadowMenuContainer,\n shadowMenuContainerStyle,\n contentStyle,\n ] as StyleProp<ViewStyle>\n }\n >\n {(scrollableMenuHeight && (\n <ScrollView>{children}</ScrollView>\n )) || <React.Fragment>{children}</React.Fragment>}\n </Surface>\n </Animated.View>\n </View>\n </Portal>\n ) : null}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: 'absolute',\n },\n shadowMenuContainer: {\n opacity: 0,\n paddingVertical: 8,\n elevation: 8,\n },\n});\n\nexport default withTheme(Menu);\n"]}
\No newline at end of file