/* Copyright (c) 2018-2020 Uber Technologies, Inc. This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree. */ // @flow import * as React from 'react'; import {NestedMenuContext} from './nested-menus.js'; import {Popover} from '../popover/index.js'; import type {OverrideT} from '../helpers/overrides.js'; import {getOverrides, mergeOverrides} from '../helpers/overrides.js'; type PropsT = { children: React.Node, getChildMenu: ?(item: *) => React.Node, isOpen: boolean, item: *, resetParentMenu: () => void, renderAll?: boolean, overrides?: { ChildMenuPopover?: OverrideT, }, }; export default function MaybeChildMenu(props: PropsT) { if (!props.getChildMenu) { return props.children; } const ChildMenu = props.getChildMenu(props.item); if (!ChildMenu) { return props.children; } const {overrides = {}} = props; const [PopoverOverride, popoverProps] = getOverrides( overrides.ChildMenuPopover, Popover, ); return ( {ctx => { return ( { if (e.keyCode === 9) { e.preventDefault(); } }, }, }, }, // $FlowFixMe - getOverrides' return type for props is {} popoverProps.overrides, )} > {props.children} ); }} ); } declare var __DEV__: boolean; declare var __NODE__: boolean; declare var __BROWSER__: boolean;