@deephaven/components 0.11.8-beta.0 → 0.11.9
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/dist/AutoCompleteInput.d.ts +3 -0
- package/dist/AutoCompleteInput.d.ts.map +1 -1
- package/dist/AutoCompleteInput.js +8 -4
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.d.ts +4 -1
- package/dist/AutoResizeTextarea.d.ts.map +1 -1
- package/dist/AutoResizeTextarea.js +8 -4
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.d.ts +1 -0
- package/dist/BasicModal.d.ts.map +1 -1
- package/dist/BasicModal.js +14 -7
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.d.ts +1 -1
- package/dist/ButtonGroup.d.ts +3 -0
- package/dist/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup.js +8 -4
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/CardFlip.d.ts +2 -1
- package/dist/CardFlip.d.ts.map +1 -1
- package/dist/CardFlip.js +4 -2
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.d.ts +1 -0
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +8 -4
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.d.ts +3 -0
- package/dist/Collapse.d.ts.map +1 -1
- package/dist/Collapse.js +8 -4
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.d.ts +3 -0
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +10 -5
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.d.ts +1 -0
- package/dist/CustomTimeSelect.d.ts.map +1 -1
- package/dist/CustomTimeSelect.js +6 -3
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.d.ts +2 -0
- package/dist/DebouncedSearchInput.d.ts.map +1 -1
- package/dist/DebouncedSearchInput.js +6 -3
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.d.ts +2 -1
- package/dist/DeephavenSpinner.d.ts.map +1 -1
- package/dist/DeephavenSpinner.js +4 -2
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DraggableItemList.d.ts +2 -0
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +6 -3
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts +1 -0
- package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +12 -6
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +2 -0
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +6 -3
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.d.ts +2 -0
- package/dist/ItemListItem.d.ts.map +1 -1
- package/dist/ItemListItem.js +5 -2
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.d.ts +2 -1
- package/dist/LoadingOverlay.d.ts.map +1 -1
- package/dist/LoadingOverlay.js +4 -2
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.d.ts +2 -1
- package/dist/LoadingSpinner.d.ts.map +1 -1
- package/dist/LoadingSpinner.js +4 -2
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.d.ts +1 -0
- package/dist/MaskedInput.d.ts.map +1 -1
- package/dist/MaskedInput.js +6 -3
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.d.ts +2 -1
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +4 -2
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.d.ts +1 -0
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +4 -2
- package/dist/RadioGroup.js.map +1 -1
- package/dist/SearchInput.d.ts +2 -0
- package/dist/SearchInput.d.ts.map +1 -1
- package/dist/SearchInput.js +6 -3
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.d.ts +2 -1
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +4 -2
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.d.ts +2 -0
- package/dist/SelectValueList.d.ts.map +1 -1
- package/dist/SelectValueList.js +6 -3
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.d.ts +1 -0
- package/dist/SocketedButton.d.ts.map +1 -1
- package/dist/SocketedButton.js +6 -3
- package/dist/SocketedButton.js.map +1 -1
- package/dist/TimeInput.d.ts +1 -0
- package/dist/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput.js +6 -3
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.d.ts +2 -1
- package/dist/TimeSlider.d.ts.map +1 -1
- package/dist/TimeSlider.js +18 -9
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.d.ts +2 -1
- package/dist/ToastNotification.d.ts.map +1 -1
- package/dist/ToastNotification.js +4 -2
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.d.ts +3 -2
- package/dist/UISwitch.d.ts.map +1 -1
- package/dist/UISwitch.js +4 -2
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActions.d.ts +1 -0
- package/dist/context-actions/ContextActions.d.ts.map +1 -1
- package/dist/context-actions/ContextActions.js +5 -1
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.d.ts +2 -0
- package/dist/context-actions/ContextMenu.d.ts.map +1 -1
- package/dist/context-actions/ContextMenu.js +6 -3
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.d.ts +1 -0
- package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +10 -5
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.d.ts +3 -1
- package/dist/context-actions/ContextMenuRoot.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +5 -1
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.d.ts +1 -0
- package/dist/context-actions/GlobalContextActions.d.ts.map +1 -1
- package/dist/context-actions/GlobalContextActions.js +4 -2
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.d.ts +2 -0
- package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +6 -3
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.d.ts +2 -0
- package/dist/menu-actions/Menu.d.ts.map +1 -1
- package/dist/menu-actions/Menu.js +7 -2
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/navigation/Menu.d.ts +2 -1
- package/dist/navigation/Menu.d.ts.map +1 -1
- package/dist/navigation/Menu.js +4 -2
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.d.ts +2 -1
- package/dist/navigation/MenuItem.d.ts.map +1 -1
- package/dist/navigation/MenuItem.js +4 -2
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.d.ts +2 -1
- package/dist/navigation/Page.d.ts.map +1 -1
- package/dist/navigation/Page.js +4 -2
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.d.ts +2 -1
- package/dist/navigation/Stack.d.ts.map +1 -1
- package/dist/navigation/Stack.js +4 -2
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/popper/Popper.d.ts +3 -0
- package/dist/popper/Popper.d.ts.map +1 -1
- package/dist/popper/Popper.js +9 -3
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.d.ts +2 -0
- package/dist/popper/Tooltip.d.ts.map +1 -1
- package/dist/popper/Tooltip.js +6 -3
- package/dist/popper/Tooltip.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/menu-actions/Menu.tsx"],"names":["React","PureComponent","ContextActionUtils","ContextMenuItem","Menu","constructor","props","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","getNextMenuItem","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","onMenuClosed","menuItem","disabled","action","focusIndex","indexOf","render","menuItemElements","i","group","push","menuItemElement","menuStyle"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: ContextAction | ContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: Menu): void;\n onMenuOpened(menu: Menu): void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (menuItem != null && !menuItem.disabled && menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"file":"Menu.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/menu-actions/Menu.tsx"],"names":["React","PureComponent","ContextActionUtils","ContextMenuItem","Menu","constructor","props","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","getNextMenuItem","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","onMenuClosed","menuItem","disabled","action","focusIndex","indexOf","render","menuItemElements","dataTestId","i","group","push","menuItemElement","menuStyle","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: ContextAction | ContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: Menu): void;\n onMenuOpened(menu: Menu): void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (menuItem != null && !menuItem.disabled && menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { 'data-testid': dataTestId } = this.props;\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"file":"Menu.js"}
|
|
@@ -5,7 +5,8 @@ export declare type MenuSelectCallback = (itemIndex: number) => void;
|
|
|
5
5
|
export declare type MenuProps = {
|
|
6
6
|
items: MenuItemDef[];
|
|
7
7
|
onSelect?: MenuSelectCallback;
|
|
8
|
+
'data-testid'?: string;
|
|
8
9
|
};
|
|
9
|
-
export declare const Menu: ({ items, onSelect, }: MenuProps) => JSX.Element;
|
|
10
|
+
export declare const Menu: ({ items, onSelect, "data-testid": dataTestId, }: MenuProps) => JSX.Element;
|
|
10
11
|
export default Menu;
|
|
11
12
|
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/navigation/Menu.tsx"],"names":[],"mappings":";AACA,OAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,aAAa,CAAC;AAErB,oBAAY,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,oBAAY,SAAS,GAAG;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/navigation/Menu.tsx"],"names":[],"mappings":";AACA,OAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,aAAa,CAAC;AAErB,oBAAY,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,oBAAY,SAAS,GAAG;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,IAAI,oDAId,SAAS,KAAG,WAed,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/navigation/Menu.js
CHANGED
|
@@ -4,10 +4,12 @@ import "./Menu.css";
|
|
|
4
4
|
export var Menu = _ref => {
|
|
5
5
|
var {
|
|
6
6
|
items,
|
|
7
|
-
onSelect: _onSelect = () => undefined
|
|
7
|
+
onSelect: _onSelect = () => undefined,
|
|
8
|
+
'data-testid': dataTestId
|
|
8
9
|
} = _ref;
|
|
9
10
|
return /*#__PURE__*/React.createElement("div", {
|
|
10
|
-
className: "navigation-menu-view"
|
|
11
|
+
className: "navigation-menu-view",
|
|
12
|
+
"data-testid": dataTestId
|
|
11
13
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
12
14
|
className: "navigation-menu-list"
|
|
13
15
|
}, items.map((item, itemIndex) => /*#__PURE__*/React.createElement("li", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/Menu.tsx"],"names":["React","MenuItem","Menu","items","onSelect","undefined","map","item","itemIndex","title"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;OACOC,Q;;
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Menu.tsx"],"names":["React","MenuItem","Menu","items","onSelect","undefined","dataTestId","map","item","itemIndex","title"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;OACOC,Q;;AAWP,OAAO,IAAMC,IAAI,GAAG;AAAA,MAAC;AACnBC,IAAAA,KADmB;AAEnBC,IAAAA,QAAQ,EAARA,SAAQ,GAAG,MAAMC,SAFE;AAGnB,mBAAeC;AAHI,GAAD;AAAA,sBAKlB;AAAK,IAAA,SAAS,EAAC,sBAAf;AAAsC,mBAAaA;AAAnD,kBACE;AAAI,IAAA,SAAS,EAAC;AAAd,KACGH,KAAK,CAACI,GAAN,CAAU,CAACC,IAAD,EAAOC,SAAP,kBACT;AAAI,IAAA,GAAG,EAAED,IAAI,CAACE;AAAd,kBACE,oBAAC,QAAD;AACE,IAAA,IAAI,EAAEF,IADR;AAEE,IAAA,QAAQ,EAAE,MAAM;AACdJ,MAAAA,SAAQ,CAACK,SAAD,CAAR;AACD;AAJH,IADF,CADD,CADH,CADF,CALkB;AAAA,CAAb;AAqBP,eAAeP,IAAf","sourcesContent":["import React from 'react';\nimport MenuItem, { MenuItemDef } from './MenuItem';\nimport './Menu.scss';\n\nexport type MenuSelectCallback = (itemIndex: number) => void;\n\nexport type MenuProps = {\n items: MenuItemDef[];\n onSelect?: MenuSelectCallback;\n 'data-testid'?: string;\n};\n\nexport const Menu = ({\n items,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuProps): JSX.Element => (\n <div className=\"navigation-menu-view\" data-testid={dataTestId}>\n <ul className=\"navigation-menu-list\">\n {items.map((item, itemIndex) => (\n <li key={item.title}>\n <MenuItem\n item={item}\n onSelect={() => {\n onSelect(itemIndex);\n }}\n />\n </li>\n ))}\n </ul>\n </div>\n);\n\nexport default Menu;\n"],"file":"Menu.js"}
|
|
@@ -13,11 +13,12 @@ export declare type SwitchMenuItemDef = MenuItemDef & {
|
|
|
13
13
|
export declare type MenuItemProps = {
|
|
14
14
|
item: MenuItemDef;
|
|
15
15
|
onSelect?: () => void;
|
|
16
|
+
'data-testid'?: string;
|
|
16
17
|
};
|
|
17
18
|
/**
|
|
18
19
|
* @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.
|
|
19
20
|
* @param props.onSelect Called when the menu item is selected
|
|
20
21
|
*/
|
|
21
|
-
export declare const MenuItem: ({ item, onSelect, }: MenuItemProps) => JSX.Element;
|
|
22
|
+
export declare const MenuItem: ({ item, onSelect, "data-testid": dataTestId, }: MenuItemProps) => JSX.Element;
|
|
22
23
|
export default MenuItem;
|
|
23
24
|
//# sourceMappingURL=MenuItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../src/navigation/MenuItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D,OAAO,iBAAiB,CAAC;AAIzB,oBAAY,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,oBAAY,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAMF,oBAAY,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../src/navigation/MenuItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D,OAAO,iBAAiB,CAAC;AAIzB,oBAAY,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,oBAAY,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAMF,oBAAY,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,mDAIlB,aAAa,KAAG,WA2ClB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -15,7 +15,8 @@ function isSwitchMenuItemType(item) {
|
|
|
15
15
|
export var MenuItem = _ref => {
|
|
16
16
|
var {
|
|
17
17
|
item,
|
|
18
|
-
onSelect = () => undefined
|
|
18
|
+
onSelect = () => undefined,
|
|
19
|
+
'data-testid': dataTestId
|
|
19
20
|
} = _ref;
|
|
20
21
|
var {
|
|
21
22
|
icon,
|
|
@@ -51,7 +52,8 @@ export var MenuItem = _ref => {
|
|
|
51
52
|
}, title), subtitle && /*#__PURE__*/React.createElement("div", {
|
|
52
53
|
className: "shortcut"
|
|
53
54
|
}, subtitle), /*#__PURE__*/React.createElement("div", {
|
|
54
|
-
className: "accessory"
|
|
55
|
+
className: "accessory",
|
|
56
|
+
"data-testid": dataTestId
|
|
55
57
|
}, isSwitchMenuItemType(item) && /*#__PURE__*/React.createElement(UISwitch, {
|
|
56
58
|
on: item.isOn,
|
|
57
59
|
onClick: event => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/MenuItem.tsx"],"names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,QAA+B,kBAA/B;;OAGOC,Q;;AAaP,SAASC,oBAAT,CAA8BC,IAA9B,EAA4E;AAC1E,SAAQA,IAAD,CAA4BC,IAA5B,KAAqCC,SAA5C;AACD;;
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/MenuItem.tsx"],"names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","dataTestId","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,QAA+B,kBAA/B;;OAGOC,Q;;AAaP,SAASC,oBAAT,CAA8BC,IAA9B,EAA4E;AAC1E,SAAQA,IAAD,CAA4BC,IAA5B,KAAqCC,SAA5C;AACD;;AAQD;AACA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,QAIU;AAAA,MAJT;AACvBH,IAAAA,IADuB;AAEvBI,IAAAA,QAAQ,GAAG,MAAMF,SAFM;AAGvB,mBAAeG;AAHQ,GAIS;AAChC,MAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,MAA4BR,IAAlC;AACA,MAAMS,YAAY,GAAGd,OAAO,CAAC,MAAM;AACjC,QAAII,oBAAoB,CAACC,IAAD,CAAxB,EAAgC;AAC9B,aAAO,MAAM;AACXA,QAAAA,IAAI,CAACU,QAAL,CAAc,CAACV,IAAI,CAACC,IAApB;AACD,OAFD;AAGD;;AACD,WAAOG,QAAP;AACD,GAP2B,EAOzB,CAACJ,IAAD,EAAOI,QAAP,CAPyB,CAA5B;AAQA,sBACE;AACE,IAAA,SAAS,EAAC,8BADZ;AAEE,uCAA0BI,KAA1B,CAFF;AAGE,IAAA,OAAO,EAAEC,YAHX;AAIE,IAAA,SAAS,EAAEE,KAAK,IAAI;AAClB,UAAIA,KAAK,CAACC,GAAN,KAAc,OAAd,IAAyBD,KAAK,CAACC,GAAN,KAAc,GAA3C,EAAgD;AAC9CH,QAAAA,YAAY;AACb;AACF,KARH;AASE,IAAA,QAAQ,EAAE,CATZ;AAUE,IAAA,IAAI,EAAC;AAVP,KAYGH,IAAI,iBACH;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEA;AAAvB,IADF,CAbJ,eAiBE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAwBE,KAAxB,CAjBF,EAkBGD,QAAQ,iBAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAA2BA,QAA3B,CAlBf,eAmBE;AAAK,IAAA,SAAS,EAAC,WAAf;AAA2B,mBAAaF;AAAxC,KACIN,oBAAoB,CAACC,IAAD,CAApB,iBACA,oBAAC,QAAD;AACE,IAAA,EAAE,EAAEA,IAAI,CAACC,IADX;AAEE,IAAA,OAAO,EAAEU,KAAK,IAAI;AAChBA,MAAAA,KAAK,CAACE,eAAN;AACAJ,MAAAA,YAAY;AACb;AALH,IADD,iBAQK,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEZ;AAAvB,IATR,CAnBF,CADF;AAiCD,CA/CM;AAiDP,eAAeM,QAAf","sourcesContent":["import React, { useMemo } from 'react';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport './MenuItem.scss';\n\nimport UISwitch from '../UISwitch';\n\nexport type MenuItemDef = {\n title: string;\n subtitle?: string;\n icon?: IconProp;\n};\n\nexport type SwitchMenuItemDef = MenuItemDef & {\n isOn: boolean;\n onChange: (isOn: boolean) => void;\n};\n\nfunction isSwitchMenuItemType(item: MenuItemDef): item is SwitchMenuItemDef {\n return (item as SwitchMenuItemDef).isOn !== undefined;\n}\n\nexport type MenuItemProps = {\n item: MenuItemDef;\n onSelect?: () => void;\n 'data-testid'?: string;\n};\n\n/**\n * @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.\n * @param props.onSelect Called when the menu item is selected\n */\nexport const MenuItem = ({\n item,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuItemProps): JSX.Element => {\n const { icon, subtitle, title } = item;\n const handleSelect = useMemo(() => {\n if (isSwitchMenuItemType(item)) {\n return () => {\n item.onChange(!item.isOn);\n };\n }\n return onSelect;\n }, [item, onSelect]);\n return (\n <div\n className=\"btn btn-navigation-menu-item\"\n data-testid={`menu-item-${title}`}\n onClick={handleSelect}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelect();\n }\n }}\n tabIndex={0}\n role=\"menuitem\"\n >\n {icon && (\n <div className=\"icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"title\">{title}</div>\n {subtitle && <div className=\"shortcut\">{subtitle}</div>}\n <div className=\"accessory\" data-testid={dataTestId}>\n {(isSwitchMenuItemType(item) && (\n <UISwitch\n on={item.isOn}\n onClick={event => {\n event.stopPropagation();\n handleSelect();\n }}\n />\n )) || <FontAwesomeIcon icon={vsChevronRight} />}\n </div>\n </div>\n );\n};\n\nexport default MenuItem;\n"],"file":"MenuItem.js"}
|
|
@@ -5,11 +5,12 @@ export declare type PageProps = {
|
|
|
5
5
|
onBack?: () => void;
|
|
6
6
|
onClose?: () => void;
|
|
7
7
|
title: string;
|
|
8
|
+
'data-testid'?: string;
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
10
11
|
* A page view with a back button in the bottom left, a title at the top, and a close button in the top right.
|
|
11
12
|
* Back and close buttons will only appear if `onBack` and/or `onClose` callbacks are set.
|
|
12
13
|
*/
|
|
13
|
-
export declare const Page: ({ children, onBack, onClose, title, }: PageProps) => JSX.Element;
|
|
14
|
+
export declare const Page: ({ children, onBack, onClose, title, "data-testid": dataTestId, }: PageProps) => JSX.Element;
|
|
14
15
|
export default Page;
|
|
15
16
|
//# sourceMappingURL=Page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../src/navigation/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,aAAa,CAAC;AAErB,oBAAY,SAAS,GAAG;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../src/navigation/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,aAAa,CAAC;AAErB,oBAAY,SAAS,GAAG;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,qEAMd,SAAS,KAAG,WAgCd,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/navigation/Page.js
CHANGED
|
@@ -12,10 +12,12 @@ export var Page = _ref => {
|
|
|
12
12
|
children,
|
|
13
13
|
onBack,
|
|
14
14
|
onClose,
|
|
15
|
-
title
|
|
15
|
+
title,
|
|
16
|
+
'data-testid': dataTestId
|
|
16
17
|
} = _ref;
|
|
17
18
|
return /*#__PURE__*/React.createElement("div", {
|
|
18
|
-
className: "navigation-page"
|
|
19
|
+
className: "navigation-page",
|
|
20
|
+
"data-testid": dataTestId
|
|
19
21
|
}, /*#__PURE__*/React.createElement("div", {
|
|
20
22
|
className: "navigation-title-bar"
|
|
21
23
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/Page.tsx"],"names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,kBAAvC;;;
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Page.tsx"],"names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","dataTestId","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,kBAAvC;;;AAWA;AACA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAG;AAAA,MAAC;AACnBC,IAAAA,QADmB;AAEnBC,IAAAA,MAFmB;AAGnBC,IAAAA,OAHmB;AAInBC,IAAAA,KAJmB;AAKnB,mBAAeC;AALI,GAAD;AAAA,sBAOlB;AAAK,IAAA,SAAS,EAAC,iBAAf;AAAiC,mBAAaA;AAA9C,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,MAAM,KAAKI,SAAX,iBACC;AACE,IAAA,SAAS,EAAC,uBADZ;AAEE,mBAAY,eAFd;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,OAAO,EAAEJ;AAJX,kBAME,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEH;AAAvB,IANF,SAFJ,CADF,eAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCK,KAAnC,CAdF,eAeE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGD,OAAO,KAAKG,SAAZ,iBACC;AACE,IAAA,SAAS,EAAC,+CADZ;AAEE,mBAAY,gBAFd;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,OAAO,EAAEH;AAJX,kBAME,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEL;AAAvB,IANF,CAFJ,CAfF,CADF,eA6BE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAqCG,QAArC,CA7BF,CAPkB;AAAA,CAAb;AAwCP,eAAeD,IAAf","sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsChevronLeft } from '@deephaven/icons';\nimport './Page.scss';\n\nexport type PageProps = {\n children: React.ReactNode;\n onBack?: () => void;\n onClose?: () => void;\n title: string;\n 'data-testid'?: string;\n};\n\n/**\n * A page view with a back button in the bottom left, a title at the top, and a close button in the top right.\n * Back and close buttons will only appear if `onBack` and/or `onClose` callbacks are set.\n */\nexport const Page = ({\n children,\n onBack,\n onClose,\n title,\n 'data-testid': dataTestId,\n}: PageProps): JSX.Element => (\n <div className=\"navigation-page\" data-testid={dataTestId}>\n <div className=\"navigation-title-bar\">\n <div className=\"navigation-left-buttons\">\n {onBack !== undefined && (\n <button\n className=\"btn btn-link btn-back\"\n data-testid=\"btn-page-back\"\n type=\"button\"\n onClick={onBack}\n >\n <FontAwesomeIcon icon={vsChevronLeft} />\n Back\n </button>\n )}\n </div>\n <div className=\"navigation-title\">{title}</div>\n <div className=\"navigation-right-buttons\">\n {onClose !== undefined && (\n <button\n className=\"btn btn-link btn-link-icon btn-close px-2 m-1\"\n data-testid=\"btn-page-close\"\n type=\"button\"\n onClick={onClose}\n >\n <FontAwesomeIcon icon={vsClose} />\n </button>\n )}\n </div>\n </div>\n <div className=\"navigation-content\">{children}</div>\n </div>\n);\n\nexport default Page;\n"],"file":"Page.js"}
|
|
@@ -2,11 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import './Stack.scss';
|
|
3
3
|
export declare type StackProps = {
|
|
4
4
|
children: React.ReactNode | React.ReactNode[];
|
|
5
|
+
'data-testid'?: string;
|
|
5
6
|
};
|
|
6
7
|
/**
|
|
7
8
|
* Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.
|
|
8
9
|
* Adding items to the stack will do a "push" animation, and removing items from the stack will do a "pop" animation.
|
|
9
10
|
*/
|
|
10
|
-
export declare const Stack: ({ children }: StackProps) => JSX.Element;
|
|
11
|
+
export declare const Stack: ({ children, "data-testid": dataTestId, }: StackProps) => JSX.Element;
|
|
11
12
|
export default Stack;
|
|
12
13
|
//# sourceMappingURL=Stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAIzE,OAAO,cAAc,CAAC;AAEtB,oBAAY,UAAU,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAIzE,OAAO,cAAc,CAAC;AAEtB,oBAAY,UAAU,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,6CAGf,UAAU,KAAG,WAsFf,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
package/dist/navigation/Stack.js
CHANGED
|
@@ -10,7 +10,8 @@ import "./Stack.css";
|
|
|
10
10
|
*/
|
|
11
11
|
export var Stack = _ref => {
|
|
12
12
|
var {
|
|
13
|
-
children
|
|
13
|
+
children,
|
|
14
|
+
'data-testid': dataTestId
|
|
14
15
|
} = _ref;
|
|
15
16
|
var childrenArray = useMemo(() => React.Children.toArray(children), [children]);
|
|
16
17
|
var prevChildrenArray = usePrevious(childrenArray);
|
|
@@ -62,7 +63,8 @@ export var Stack = _ref => {
|
|
|
62
63
|
return /*#__PURE__*/React.createElement("div", {
|
|
63
64
|
className: "navigation-stack"
|
|
64
65
|
}, /*#__PURE__*/React.createElement("div", {
|
|
65
|
-
className: "main-view"
|
|
66
|
+
className: "main-view",
|
|
67
|
+
"data-testid": dataTestId
|
|
66
68
|
}, mainView), /*#__PURE__*/React.createElement(CSSTransition, {
|
|
67
69
|
in: poppingView != null,
|
|
68
70
|
timeout: ThemeExport.transitionMidMs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/navigation/Stack.tsx"],"names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,OAArC,EAA8CC,WAA9C,QAAiE,OAAjE;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,SAASC,WAAT,QAA4B,wBAA5B;OACOC,W;;;
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Stack.tsx"],"names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport ThemeExport from '../ThemeExport';\nimport './Stack.scss';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n 'data-testid'?: string;\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport const Stack = ({\n children,\n 'data-testid': dataTestId,\n}: StackProps): JSX.Element => {\n const childrenArray = useMemo(() => React.Children.toArray(children), [\n children,\n ]);\n const prevChildrenArray = usePrevious(childrenArray);\n const [mainView, setMainView] = useState<React.ReactNode>(\n childrenArray[childrenArray.length - 1]\n );\n\n const [pushingView, setPushingView] = useState<React.ReactNode>(null);\n const [poppingView, setPoppingView] = useState<React.ReactNode>(null);\n\n /**\n * To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.\n * `mainView` - The main view of the stack, stationary, filling the container.\n * `pushingView` - A view that's currently being pushed. Slides from off screen right to overtop of `mainView`.\n * `poppingView` - A view that's currently being popped. Slides from overtop of `mainView` to right off screen.\n *\n * When the `pushingView` or `poppingView` is set, that will kick off their animation.\n * Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.\n */\n useEffect(() => {\n if (\n prevChildrenArray === undefined ||\n childrenArray === prevChildrenArray\n ) {\n return;\n }\n const topChild = childrenArray[childrenArray.length - 1];\n if (\n childrenArray.length === prevChildrenArray.length ||\n prevChildrenArray.length === 0 ||\n pushingView !== null ||\n poppingView !== null\n ) {\n // 1) Stack is the same size, we've just mounted, or we're already in an animation - just update the view\n if (pushingView !== null && topChild !== pushingView) {\n // Stack was updated mid animation\n setPushingView(topChild);\n } else if (topChild !== poppingView && topChild !== mainView) {\n // Replace the current view\n setMainView(topChild);\n }\n } else if (childrenArray.length > prevChildrenArray.length) {\n // 2) Stack has grown - start the push animation\n setPushingView(topChild);\n } else if (childrenArray.length < prevChildrenArray.length) {\n // 3) Stack has shrunk - start the pop animation\n setMainView(topChild);\n setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);\n }\n }, [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]);\n\n const pushComplete = useCallback(() => {\n setMainView(pushingView);\n setPushingView(null);\n }, [pushingView]);\n\n const popComplete = useCallback(() => {\n setPoppingView(null);\n }, []);\n\n return (\n <div className=\"navigation-stack\">\n <div className=\"main-view\" data-testid={dataTestId}>\n {mainView}\n </div>\n\n <CSSTransition\n in={poppingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-right\"\n onEntered={popComplete}\n >\n <>{poppingView && <div className=\"popping-view\">{poppingView}</div>}</>\n </CSSTransition>\n <CSSTransition\n in={pushingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntered={pushComplete}\n >\n <>{pushingView && <div className=\"pushing-view\">{pushingView}</div>}</>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Stack;\n"],"file":"Stack.js"}
|
package/dist/popper/Popper.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ interface PopperProps {
|
|
|
28
28
|
closeOnBlur: boolean;
|
|
29
29
|
interactive: boolean;
|
|
30
30
|
referenceObject: ReferenceObject | null;
|
|
31
|
+
'data-testid'?: string;
|
|
31
32
|
}
|
|
32
33
|
interface PopperState {
|
|
33
34
|
show: boolean;
|
|
@@ -45,6 +46,7 @@ declare class Popper extends Component<PopperProps, PopperState> {
|
|
|
45
46
|
closeOnBlur: PropTypes.Requireable<boolean>;
|
|
46
47
|
interactive: PropTypes.Requireable<boolean>;
|
|
47
48
|
referenceObject: PropTypes.Requireable<PropTypes.InferProps<{}>>;
|
|
49
|
+
'data-testid': PropTypes.Requireable<string>;
|
|
48
50
|
};
|
|
49
51
|
static defaultProps: {
|
|
50
52
|
options: {};
|
|
@@ -56,6 +58,7 @@ declare class Popper extends Component<PopperProps, PopperState> {
|
|
|
56
58
|
interactive: boolean;
|
|
57
59
|
closeOnBlur: boolean;
|
|
58
60
|
referenceObject: null;
|
|
61
|
+
'data-testid': undefined;
|
|
59
62
|
};
|
|
60
63
|
constructor(props: PopperProps);
|
|
61
64
|
componentDidUpdate(prevProps: PopperProps): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAEvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAEvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,SAAS;;;;;;;;;;;;MAYd;IAEF,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IA2ClB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IAwC5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/popper/Popper.js
CHANGED
|
@@ -258,12 +258,16 @@ class Popper extends Component {
|
|
|
258
258
|
var {
|
|
259
259
|
popper
|
|
260
260
|
} = this.state;
|
|
261
|
+
var {
|
|
262
|
+
'data-testid': dataTestId
|
|
263
|
+
} = this.props;
|
|
261
264
|
return /*#__PURE__*/React.createElement("div", {
|
|
262
265
|
className: "popper-parent-container",
|
|
263
266
|
ref: this.container,
|
|
264
267
|
style: {
|
|
265
268
|
display: 'none'
|
|
266
|
-
}
|
|
269
|
+
},
|
|
270
|
+
"data-testid": dataTestId
|
|
267
271
|
}, popper && /*#__PURE__*/ReactDOM.createPortal(this.renderContent(), this.element));
|
|
268
272
|
}
|
|
269
273
|
|
|
@@ -279,7 +283,8 @@ _defineProperty(Popper, "propTypes", {
|
|
|
279
283
|
isShown: PropTypes.bool,
|
|
280
284
|
closeOnBlur: PropTypes.bool,
|
|
281
285
|
interactive: PropTypes.bool,
|
|
282
|
-
referenceObject: PropTypes.shape({})
|
|
286
|
+
referenceObject: PropTypes.shape({}),
|
|
287
|
+
'data-testid': PropTypes.string
|
|
283
288
|
});
|
|
284
289
|
|
|
285
290
|
_defineProperty(Popper, "defaultProps", {
|
|
@@ -296,7 +301,8 @@ _defineProperty(Popper, "defaultProps", {
|
|
|
296
301
|
isShown: false,
|
|
297
302
|
interactive: false,
|
|
298
303
|
closeOnBlur: false,
|
|
299
|
-
referenceObject: null
|
|
304
|
+
referenceObject: null,
|
|
305
|
+
'data-testid': undefined
|
|
300
306
|
});
|
|
301
307
|
|
|
302
308
|
export default Popper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/popper/Popper.tsx"],"names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"mappings":"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","sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur,\n } = this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"file":"Popper.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/popper/Popper.tsx"],"names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","dataTestId","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,QAAP,MAAqB,WAArB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,OAAOC,QAAP,MAAyD,WAAzD;AACA,OAAOC,SAAP,MAAsB,YAAtB;OACOC,W;;;AAqBP,MAAMC,MAAN,SAAqBP,SAArB,CAAyD;AAgCvDQ,EAAAA,WAAW,CAACC,KAAD,EAAqB;AAC9B,UAAMA,KAAN;;AAD8B;;AAAA;;AAAA;;AAG9B,SAAKC,WAAL,GAAmB,KAAKA,WAAL,CAAiBC,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKC,UAAL,GAAkB,KAAKA,UAAL,CAAgBD,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKE,UAAL,GAAkB,KAAKA,UAAL,CAAgBF,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKG,OAAL,GAAeC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAf;AACA,SAAKF,OAAL,CAAaG,SAAb,GAAyB,kBAAzB;AACA,SAAKC,SAAL,gBAAiBnB,KAAK,CAACoB,SAAN,EAAjB,CAR8B,CAU9B;AACA;;AACA,SAAKC,GAAL,GAAW,CAAX;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAKZ,KAAzB;AAEA,SAAKa,KAAL,GAAa;AACXC,MAAAA,IAAI,EAAEF,OADK;AAEXG,MAAAA,MAAM,EAAE;AAFG,KAAb;AAID;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAA+B;AAC/C,QAAM;AAAEL,MAAAA;AAAF,QAAc,KAAKZ,KAAzB;;AAEA,QAAIiB,SAAS,CAACL,OAAV,KAAsBA,OAA1B,EAAmC;AACjC,UAAIA,OAAJ,EAAa;AACXM,QAAAA,oBAAoB,CAAC,KAAKP,GAAN,CAApB;AACA,aAAKA,GAAL,GAAWQ,MAAM,CAACC,qBAAP,CAA6B,MAAM;AAC5C,eAAKN,IAAL;AACD,SAFU,CAAX;AAGD,OALD,MAKO;AACL,aAAKO,IAAL;AACD;AACF;AACF;;AAEDC,EAAAA,oBAAoB,GAAS;AAC3B,SAAKC,aAAL,CAAmB,KAAnB;AACD;;AASD;AACAC,EAAAA,iBAAiB,CAACnB,OAAD,EAAkD;AACjE,QACEA,OAAO,IAAI,IAAX,IACAA,OAAO,CAACoB,YAAR,GAAuB,CADvB,IAEApB,OAAO,CAACqB,WAAR,GAAsB,CAHxB,EAIE;AACA,aAAOrB,OAAP;AACD;;AAED,WAAO,KAAKmB,iBAAL,CAAuBnB,OAAO,CAACsB,aAA/B,CAAP;AACD;;AAEDC,EAAAA,UAAU,GAAS;AACjB,QAAI;AAAEb,MAAAA;AAAF,QAAa,KAAKF,KAAtB;AACA,QAAM;AAAEgB,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAAmC,KAAK9B,KAA9C;;AAEA,QAAIe,MAAJ,EAAY;AACV;AACD;;AAED,QAAI,KAAKN,SAAL,CAAesB,OAAf,KAA2B,IAA/B,EAAqC;AACnC;AACD;;AAED,QAAI;AAAEC,MAAAA;AAAF,QAAc,KAAKhC,KAAvB;AACAgC,IAAAA,OAAO;AACLC,MAAAA,SAAS,EAAE;AADN,OAEFD,OAFE,CAAP;AAIA1B,IAAAA,QAAQ,CAAC4B,IAAT,CAAcC,WAAd,CAA0B,KAAK9B,OAA/B;AAEA,QAAI+B,MAAM,GAAG,KAAKZ,iBAAL,CAAuB,KAAKf,SAAL,CAAesB,OAAtC,CAAb;;AACA,QAAIK,MAAM,IAAI,IAAd,EAAoB;AAClBA,MAAAA,MAAM,GAAG,KAAK3B,SAAL,CAAesB,OAAxB;AACD;;AAEDhB,IAAAA,MAAM,GAAG,IAAIpB,QAAJ,CAAamC,eAAe,IAAIM,MAAhC,EAAwC,KAAK/B,OAA7C,EAAsD2B,OAAtD,CAAT;AACAjB,IAAAA,MAAM,CAACsB,cAAP,GAzBiB,CA2BjB;;AACAnB,IAAAA,oBAAoB,CAAC,KAAKP,GAAN,CAApB;AACA,SAAKA,GAAL,GAAWQ,MAAM,CAACC,qBAAP,CAA6B,MAAM;AAC5C;AACA,UAAIS,WAAW,IAAI,CAAC,KAAKxB,OAAL,CAAaiC,QAAb,CAAsBhC,QAAQ,CAACiC,aAA/B,CAApB,EAAmE;AACjE;AACA,YAAMC,IAAI,GAAG,KAAKnC,OAAL,CAAaoC,iBAA1B;;AACA,YAAID,IAAI,YAAYE,WAApB,EAAiC;AAC/BF,UAAAA,IAAI,CAACG,KAAL,GAD+B,CACjB;AACf;AACF;AACF,KATU,CAAX;AAWA,SAAKC,QAAL,CAAc;AAAE7B,MAAAA;AAAF,KAAd;AACD;;AAEDQ,EAAAA,aAAa,GAA2B;AAAA,QAA1BsB,WAA0B,uEAAZ,IAAY;AACtC3B,IAAAA,oBAAoB,CAAC,KAAKP,GAAN,CAApB;AAEA,QAAM;AAAEI,MAAAA;AAAF,QAAa,KAAKF,KAAxB;;AACA,QAAI,CAACE,MAAL,EAAa;AACX;AACD;;AAEDA,IAAAA,MAAM,CAAC+B,OAAP,GARsC,CAUtC;AACA;AACA;;AACA,QAAIxC,QAAQ,CAAC4B,IAAT,CAAcI,QAAd,CAAuB,KAAKjC,OAA5B,CAAJ,EAA0C;AACxCC,MAAAA,QAAQ,CAAC4B,IAAT,CAAca,WAAd,CAA0B,KAAK1C,OAA/B;AACD;;AAED,QAAIwC,WAAJ,EAAiB;AACf,WAAKD,QAAL,CAAc;AAAE7B,QAAAA,MAAM,EAAE;AAAV,OAAd;AACD;AACF;;AAEDD,EAAAA,IAAI,GAAS;AACX,SAAKc,UAAL;AACA,SAAKgB,QAAL,CAAc;AAAE9B,MAAAA,IAAI,EAAE;AAAR,KAAd;AACD;;AAEDO,EAAAA,IAAI,GAAS;AACX,SAAKuB,QAAL,CAAc;AAAE9B,MAAAA,IAAI,EAAE;AAAR,KAAd;AACD;;AAEDuB,EAAAA,cAAc,GAAS;AACrB,QAAM;AAAEtB,MAAAA;AAAF,QAAa,KAAKF,KAAxB;AACA,QAAIE,MAAJ,EAAYA,MAAM,CAACsB,cAAP;AACb;;AAEDjC,EAAAA,UAAU,CAAC4C,CAAD,EAA4B;AACpC,QAAI,EAAEA,CAAC,CAACC,aAAF,YAA2BP,WAA7B,CAAJ,EAA+C;AAC7C;AACD;;AACD,QAAI,CAAC,KAAKrC,OAAL,CAAaiC,QAAb,CAAsBU,CAAC,CAACC,aAAxB,CAAL,EAA6C;AAC3C,WAAK5B,IAAL;AACD;AACF;;AAEDpB,EAAAA,WAAW,GAAS;AAClB,QAAM;AAAEiD,MAAAA;AAAF,QAAgB,KAAKlD,KAA3B;AACAkD,IAAAA,SAAS,GAFS,CAEL;AACd;;AAED/C,EAAAA,UAAU,GAAS;AACjB,QAAM;AAAEgD,MAAAA;AAAF,QAAe,KAAKnD,KAA1B;AACA,QAAM;AAAEc,MAAAA;AAAF,QAAW,KAAKD,KAAtB;;AACA,QAAI,CAACC,IAAL,EAAW;AACT,WAAKS,aAAL;AACD;;AACD4B,IAAAA,QAAQ,GANS,CAML;AACb;;AAEDC,EAAAA,aAAa,GAAgB;AAC3B,QAAM;AACJ5C,MAAAA,SADI;AAEJ6C,MAAAA,QAFI;AAGJC,MAAAA,OAHI;AAIJC,MAAAA,WAJI;AAKJ1B,MAAAA;AALI,QAMF,KAAK7B,KANT;AAOA,QAAM;AAAEc,MAAAA;AAAF,QAAW,KAAKD,KAAtB;AAEA,wBACE,oBAAC,aAAD;AACE,MAAA,EAAE,EAAEC,IADN;AAEE,MAAA,OAAO,EAAEwC,OAFX;AAGE,MAAA,UAAU,EAAC,mBAHb;AAIE,MAAA,SAAS,EAAE,KAAKrD,WAJlB;AAKE,MAAA,QAAQ,EAAE,KAAKE;AALjB,oBAOE;AACE,MAAA,OAAO,EAAE6C,CAAC,IAAI;AACZ;AACAA,QAAAA,CAAC,CAACQ,eAAF;AACD,OAJH;AAKE,MAAA,SAAS,EAAER,CAAC,IAAI;AACd,YAAIA,CAAC,CAACS,GAAF,KAAU,QAAd,EAAwB,KAAKpC,IAAL;AACzB,OAPH;AAQE,MAAA,SAAS,EAAE5B,UAAU,CAAC,QAAD,EAAW;AAAE8D,QAAAA;AAAF,OAAX,EAA4B/C,SAA5B,CARvB;AASE,MAAA,MAAM,EAAEqB,WAAW,GAAG,KAAKzB,UAAR,GAAqBsD,SAT1C;AAUE,MAAA,QAAQ,EAAE7B,WAAW,GAAG,CAAC,CAAJ,GAAQ6B,SAV/B;AAWE,MAAA,IAAI,EAAC;AAXP,oBAaE;AAAK,MAAA,SAAS,EAAC;AAAf,OACGL,QADH,eAEE;AAAK,MAAA,SAAS,EAAC,cAAf;AAA8B,iBAAQ;AAAtC,MAFF,CAbF,CAPF,CADF;AA4BD;;AAEDM,EAAAA,MAAM,GAAgB;AACpB,QAAM;AAAE5C,MAAAA;AAAF,QAAa,KAAKF,KAAxB;AACA,QAAM;AAAE,qBAAe+C;AAAjB,QAAgC,KAAK5D,KAA3C;AACA,wBACE;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,GAAG,EAAE,KAAKS,SAFZ;AAGE,MAAA,KAAK,EAAE;AAAEoD,QAAAA,OAAO,EAAE;AAAX,OAHT;AAIE,qBAAaD;AAJf,OAMG7C,MAAM,iBAAIvB,QAAQ,CAACsE,YAAT,CAAsB,KAAKV,aAAL,EAAtB,EAA4C,KAAK/C,OAAjD,CANb,CADF;AAUD;;AAxPsD;;gBAAnDP,M,eACe;AACjBuD,EAAAA,QAAQ,EAAEzD,SAAS,CAACmE,IAAV,CAAeC,UADR;AAEjBhC,EAAAA,OAAO,EAAEpC,SAAS,CAACqE,KAAV,CAAgB,EAAhB,CAFQ;AAGjBzD,EAAAA,SAAS,EAAEZ,SAAS,CAACsE,MAHJ;AAIjBZ,EAAAA,OAAO,EAAE1D,SAAS,CAACuE,MAJF;AAKjBjB,EAAAA,SAAS,EAAEtD,SAAS,CAACwE,IALJ;AAMjBjB,EAAAA,QAAQ,EAAEvD,SAAS,CAACwE,IANH;AAOjBxD,EAAAA,OAAO,EAAEhB,SAAS,CAACyE,IAPF;AAQjBxC,EAAAA,WAAW,EAAEjC,SAAS,CAACyE,IARN;AASjBd,EAAAA,WAAW,EAAE3D,SAAS,CAACyE,IATN;AAUjBvC,EAAAA,eAAe,EAAElC,SAAS,CAACqE,KAAV,CAAgB,EAAhB,CAVA;AAWjB,iBAAerE,SAAS,CAACsE;AAXR,C;;gBADfpE,M,kBAekB;AACpBkC,EAAAA,OAAO,EAAE,EADW;AAEpBxB,EAAAA,SAAS,EAAE,EAFS;AAGpB8C,EAAAA,OAAO,EAAEzD,WAAW,CAACyE,YAHD;;AAIpBpB,EAAAA,SAAS,GAAS,CAChB;AACD,GANmB;;AAOpBC,EAAAA,QAAQ,GAAS,CACf;AACD,GATmB;;AAUpBvC,EAAAA,OAAO,EAAE,KAVW;AAWpB2C,EAAAA,WAAW,EAAE,KAXO;AAYpB1B,EAAAA,WAAW,EAAE,KAZO;AAapBC,EAAAA,eAAe,EAAE,IAbG;AAcpB,iBAAe4B;AAdK,C;;AA4OxB,eAAe5D,MAAf","sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur,\n } = this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"file":"Popper.js"}
|
package/dist/popper/Tooltip.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ declare type TooltipProps = typeof Tooltip.defaultProps & {
|
|
|
9
9
|
timeout?: number;
|
|
10
10
|
referenceObject?: ReferenceObject | null;
|
|
11
11
|
onExited?: () => void;
|
|
12
|
+
'data-testid'?: string;
|
|
12
13
|
};
|
|
13
14
|
interface TooltipState {
|
|
14
15
|
isShown: boolean;
|
|
@@ -39,6 +40,7 @@ declare class Tooltip extends Component<TooltipProps, TooltipState> {
|
|
|
39
40
|
timeout: number;
|
|
40
41
|
referenceObject: null;
|
|
41
42
|
onExited: () => void;
|
|
43
|
+
'data-testid': undefined;
|
|
42
44
|
};
|
|
43
45
|
static handleHidden(): void;
|
|
44
46
|
static handleShown(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlE,aAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlE,aAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,cAAM,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,sBAAsB,SAAO;IAEpC,MAAM,CAAC,iBAAiB,SAAK;IAE7B,MAAM,CAAC,cAAc,SAAc;IAEnC,MAAM,CAAC,YAAY;;;;;;;wBAOH,IAAI;;MAElB;IAEF,MAAM,CAAC,YAAY,IAAI,IAAI;IAQ3B,MAAM,CAAC,WAAW,IAAI,IAAI;gBAId,KAAK,EAAE,YAAY;IAqB/B,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAa1E,oBAAoB,IAAI,IAAI;IAY5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAI3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,cAAc,IAAI,IAAI;IAYtB,aAAa,IAAI,IAAI;IAUrB,oBAAoB,IAAI,IAAI;IAM5B,mBAAmB,IAAI,IAAI;IAM3B,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAanB,gBAAgB,IAAI,IAAI;IAUxB,aAAa,IAAI,IAAI;IAIrB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IA+B9C,UAAU,IAAI,IAAI;IAclB,SAAS,IAAI,IAAI;IAOjB,IAAI,IAAI,IAAI;IAeZ,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAId,YAAY,IAAI,IAAI;IAMpB,kBAAkB,IAAI,IAAI;IAQ1B,MAAM,IAAI,GAAG,CAAC,OAAO;CA6BtB;AAED,eAAe,OAAO,CAAC"}
|
package/dist/popper/Tooltip.js
CHANGED
|
@@ -277,7 +277,8 @@ class Tooltip extends Component {
|
|
|
277
277
|
children,
|
|
278
278
|
options,
|
|
279
279
|
referenceObject,
|
|
280
|
-
popperClassName
|
|
280
|
+
popperClassName,
|
|
281
|
+
'data-testid': dataTestId
|
|
281
282
|
} = this.props;
|
|
282
283
|
var {
|
|
283
284
|
isShown
|
|
@@ -286,7 +287,8 @@ class Tooltip extends Component {
|
|
|
286
287
|
ref: this.container,
|
|
287
288
|
style: {
|
|
288
289
|
display: 'none'
|
|
289
|
-
}
|
|
290
|
+
},
|
|
291
|
+
"data-testid": dataTestId
|
|
290
292
|
}, /*#__PURE__*/React.createElement(Popper, {
|
|
291
293
|
className: classNames(popperClassName),
|
|
292
294
|
options: options,
|
|
@@ -318,7 +320,8 @@ _defineProperty(Tooltip, "defaultProps", {
|
|
|
318
320
|
reshowTimeout: Tooltip.defaultReshowTimeout,
|
|
319
321
|
timeout: Tooltip.defaultTimeout,
|
|
320
322
|
referenceObject: null,
|
|
321
|
-
onExited: () => undefined
|
|
323
|
+
onExited: () => undefined,
|
|
324
|
+
'data-testid': undefined
|
|
322
325
|
});
|
|
323
326
|
|
|
324
327
|
export default Tooltip;
|