@deephaven/components 0.15.5-beta.0 → 0.15.5-vite.12
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.js.map +1 -1
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonOld.js.map +1 -1
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.js +1 -1
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.js +1 -1
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.js.map +1 -1
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.js.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/context-actions/index.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/menu-actions/index.js.map +1 -1
- package/dist/modal/Modal.js.map +1 -1
- package/dist/modal/ModalBody.js.map +1 -1
- package/dist/modal/ModalFooter.js.map +1 -1
- package/dist/modal/ModalHeader.js.map +1 -1
- package/dist/modal/index.js.map +1 -1
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/popper/index.js.map +1 -1
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/shortcuts/index.js.map +1 -1
- package/package.json +9 -9
- package/scss/BaseStyleSheet.scss +847 -0
- package/dist/BaseStyleSheet.css +0 -11560
- package/dist/BaseStyleSheet.css.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ContextMenuRoot.js","names":["React","Component","classNames","ContextMenu","ContextActionUtils","ContextMenuRoot","constructor","props","handleMenuClose","bind","handleContextMenu","container","createRef","openMenu","state","actions","left","top","componentDidMount","current","parentElement","addEventListener","componentWillUnmount","removeEventListener","e","isContextActionEvent","metaKey","ctrlKey","contextActions","getMenuItems","parentRect","getBoundingClientRect","clientY","clientX","length","target","preventDefault","setState","element","document","elementFromPoint","mouseEvent","MouseEvent","bubbles","cancelable","dispatchEvent","menu","render","dataTestId","verifiedTop","verifiedLeft","active"],"sources":["../../src/context-actions/ContextMenuRoot.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from './ContextMenu';\nimport ContextActionUtils, { MenuItem } from './ContextActionUtils';\n\ntype ContextMenuRootProps = Record<string, never> & {\n 'data-testid'?: string;\n};\n\ninterface ContextMenuRootState {\n actions: MenuItem[] | null;\n left: number;\n top: number;\n}\n\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component<\n ContextMenuRootProps,\n ContextMenuRootState\n> {\n constructor(props: ContextMenuRootProps) {\n super(props);\n\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = React.createRef();\n this.openMenu = React.createRef();\n\n this.state = {\n actions: null,\n left: 0,\n top: 0,\n };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n componentWillUnmount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.removeEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n openMenu: React.RefObject<ContextMenu>;\n\n handleContextMenu(e: MouseEvent): void {\n if (!ContextActionUtils.isContextActionEvent(e)) {\n return;\n }\n\n if (!this.container.current) {\n return;\n }\n\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n\n const contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n\n const parentRect = this.container.current.getBoundingClientRect();\n const top = e.clientY - parentRect.top;\n const left = e.clientX - parentRect.left;\n\n if (contextActions.length === 0) {\n // This code path seems to only exist for Chrome on Mac\n // Mac appears to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({ actions: null }, () => {\n const element = document.elementFromPoint(left, top); // x y\n\n const mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true,\n });\n\n element?.dispatchEvent(mouseEvent);\n });\n return;\n }\n\n // target was a menu item\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left,\n });\n }\n\n handleMenuClose(menu: ContextMenu): void {\n if (menu === this.openMenu.current) {\n this.setState({ actions: null });\n }\n }\n\n render(): JSX.Element {\n let menu = null;\n const { 'data-testid': dataTestId } = this.props;\n const { actions, top, left } = this.state;\n if (actions) {\n menu = (\n <ContextMenu\n ref={this.openMenu}\n actions={actions}\n onMenuClosed={this.handleMenuClose}\n top={top}\n left={left}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({ top: verifiedTop, left: verifiedLeft });\n }}\n data-testid={dataTestId}\n />\n );\n }\n return (\n <div\n className={classNames('context-menu-root', { active: actions })}\n ref={this.container}\n >\n {menu}\n </div>\n );\n }\n}\n\nexport default ContextMenuRoot;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;OACOC,W;OACAC,kB;;AAYP;AACA;AACA;AACA,MAAMC,eAAN,SAA8BJ,SAA9B,CAGE;EACAK,WAAW,CAACC,KAAD,EAA8B;IACvC,MAAMA,KAAN;;IADuC;;IAAA;;IAGvC,KAAKC,eAAL,GAAuB,KAAKA,eAAL,CAAqBC,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKE,SAAL,gBAAiBX,KAAK,CAACY,SAAN,EAAjB;IACA,KAAKC,QAAL,gBAAgBb,KAAK,CAACY,SAAN,EAAhB;IAEA,KAAKE,KAAL,GAAa;MACXC,OAAO,EAAE,IADE;MAEXC,IAAI,EAAE,CAFK;MAGXC,GAAG,EAAE;IAHM,CAAb;EAKD;;EAEDC,iBAAiB,GAAS;IAAA;;IACxB,6BAAI,KAAKP,SAAL,CAAeQ,OAAnB,kDAAI,sBAAwBC,aAA5B,EAA2C;MACzC,KAAKT,SAAL,CAAeQ,OAAf,CAAuBC,aAAvB,CAAqCC,gBAArC,CACE,aADF,EAEE,KAAKX,iBAFP;IAID;EACF;;EAEDY,oBAAoB,GAAS;IAAA;;IAC3B,8BAAI,KAAKX,SAAL,CAAeQ,OAAnB,mDAAI,uBAAwBC,aAA5B,EAA2C;MACzC,KAAKT,SAAL,CAAeQ,OAAf,CAAuBC,aAAvB,CAAqCG,mBAArC,CACE,aADF,EAEE,KAAKb,iBAFP;IAID;EACF;;EAMDA,iBAAiB,CAACc,CAAD,EAAsB;IACrC,IAAI,CAACpB,kBAAkB,CAACqB,oBAAnB,CAAwCD,CAAxC,CAAL,EAAiD;MAC/C;IACD;;IAED,IAAI,CAAC,KAAKb,SAAL,CAAeQ,OAApB,EAA6B;MAC3B;IACD;;IAED,IAAIK,CAAC,CAACE,OAAF,IAAaF,CAAC,CAACG,OAAnB,EAA4B;MAC1B;MACA;IACD;;IAED,IAAMC,cAAc,GAAGxB,kBAAkB,CAACyB,YAAnB,CAAgCL,CAAC,CAACI,cAAlC,CAAvB;IAEA,IAAME,UAAU,GAAG,KAAKnB,SAAL,CAAeQ,OAAf,CAAuBY,qBAAvB,EAAnB;IACA,IAAMd,GAAG,GAAGO,CAAC,CAACQ,OAAF,GAAYF,UAAU,CAACb,GAAnC;IACA,IAAMD,IAAI,GAAGQ,CAAC,CAACS,OAAF,GAAYH,UAAU,CAACd,IAApC;;IAEA,IAAIY,cAAc,CAACM,MAAf,KAA0B,CAA9B,EAAiC;MAC/B;MACA;MACA;MACA,IAAIV,CAAC,CAACW,MAAF,KAAa,KAAKxB,SAAL,CAAeQ,OAAhC,EAAyC;QACvC;QACAK,CAAC,CAACY,cAAF,GAFuC,CAIvC;QACA;QACA;QACA;;QACA,KAAKC,QAAL,CAAc;UAAEtB,OAAO,EAAE;QAAX,CAAd,EAAiC,MAAM;UACrC,IAAMuB,OAAO,GAAGC,QAAQ,CAACC,gBAAT,CAA0BxB,IAA1B,EAAgCC,GAAhC,CAAhB,CADqC,CACiB;;UAEtD,IAAMwB,UAAU,GAAG,IAAIC,UAAJ,CAAe,aAAf,EAA8B;YAC/CT,OAAO,EAAET,CAAC,CAACS,OADoC;YAE/CD,OAAO,EAAER,CAAC,CAACQ,OAFoC;YAG/CW,OAAO,EAAE,IAHsC;YAI/CC,UAAU,EAAE;UAJmC,CAA9B,CAAnB;UAOAN,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,aAAT,CAAuBJ,UAAvB;QACD,CAXD;QAYA;MACD,CAzB8B,CA2B/B;;;MACA;IACD,CAjDoC,CAmDrC;;;IACAjB,CAAC,CAACY,cAAF;IACA,KAAKC,QAAL,CAAc;MACZtB,OAAO,EAAEa,cADG;MAEZX,GAFY;MAGZD;IAHY,CAAd;EAKD;;EAEDR,eAAe,CAACsC,IAAD,EAA0B;IACvC,IAAIA,IAAI,KAAK,KAAKjC,QAAL,CAAcM,OAA3B,EAAoC;MAClC,KAAKkB,QAAL,CAAc;QAAEtB,OAAO,EAAE;MAAX,CAAd;IACD;EACF;;EAEDgC,MAAM,GAAgB;IACpB,IAAID,IAAI,GAAG,IAAX;IACA,IAAM;MAAE,eAAeE;IAAjB,IAAgC,KAAKzC,KAA3C;IACA,IAAM;MAAEQ,OAAF;MAAWE,GAAX;MAAgBD;IAAhB,IAAyB,KAAKF,KAApC;;IACA,IAAIC,OAAJ,EAAa;MACX+B,IAAI,gBACF,oBAAC,WAAD;QACE,GAAG,EAAE,KAAKjC,QADZ;QAEE,OAAO,EAAEE,OAFX;QAGE,YAAY,EAAE,KAAKP,eAHrB;QAIE,GAAG,EAAES,GAJP;QAKE,IAAI,EAAED,IALR;QAME,cAAc,EAAE,CAACiC,WAAD,EAAcC,YAAd,KAA+B;UAC7C,KAAKb,QAAL,CAAc;YAAEpB,GAAG,EAAEgC,WAAP;YAAoBjC,IAAI,EAAEkC;UAA1B,CAAd;QACD,CARH;QASE,eAAaF;MATf,EADF;IAaD;;IACD,oBACE;MACE,SAAS,EAAE9C,UAAU,CAAC,mBAAD,EAAsB;QAAEiD,MAAM,EAAEpC;MAAV,CAAtB,CADvB;MAEE,GAAG,EAAE,KAAKJ;IAFZ,GAIGmC,IAJH,CADF;EAQD;;AAnID;;AAsIF,eAAezC,eAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"GlobalContextAction.js","names":["Component","Log","ContextActionUtils","log","module","GlobalContextAction","constructor","props","handleContextMenu","bind","handleKeyDown","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","evt","e","contextActions","action","title","menuElement","push","debug","actionsDisabled","shortcut","matchesEvent","result","undefined","preventDefault","stopPropagation","render"],"sources":["../../src/context-actions/GlobalContextAction.tsx"],"sourcesContent":["import { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\n\nconst log = Log.module('GlobalContextAction');\n\ninterface GlobalContextActionProps {\n action: ContextAction;\n}\n\nclass GlobalContextAction extends Component<GlobalContextActionProps> {\n constructor(props: GlobalContextActionProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentDidMount(): void {\n document.body.addEventListener('contextmenu', this.handleContextMenu);\n document.body.addEventListener('keydown', this.handleKeyDown);\n }\n\n componentWillUnmount(): void {\n document.body.removeEventListener('contextmenu', this.handleContextMenu);\n document.body.removeEventListener('keydown', this.handleKeyDown);\n }\n\n handleContextMenu(evt: MouseEvent): void {\n const e = evt as ContextActionEvent;\n if (!e.contextActions) {\n e.contextActions = [];\n }\n\n const { action } = this.props;\n\n if (!action.title && !action.menuElement) {\n return;\n }\n\n if (!e.contextActions) {\n e.contextActions = [];\n }\n\n e.contextActions.push(action);\n\n log.debug(\n 'Received context menu event at global action! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { action } = this.props;\n if (\n !ContextActionUtils.actionsDisabled &&\n action.shortcut?.matchesEvent(e)\n ) {\n log.debug('Global hotkey matched!', e);\n\n const result = action.action?.(e);\n\n if (result || result === undefined) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default GlobalContextAction;\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,kB;AAGP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,qBAAX,CAAZ;;AAMA,MAAMC,mBAAN,SAAkCL,SAAlC,CAAsE;EACpEM,WAAW,CAACC,KAAD,EAAkC;IAC3C,MAAMA,KAAN;IAEA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBD,IAAnB,CAAwB,IAAxB,CAArB;EACD;;EAEDE,iBAAiB,GAAS;IACxBC,QAAQ,CAACC,IAAT,CAAcC,gBAAd,CAA+B,aAA/B,EAA8C,KAAKN,iBAAnD;IACAI,QAAQ,CAACC,IAAT,CAAcC,gBAAd,CAA+B,SAA/B,EAA0C,KAAKJ,aAA/C;EACD;;EAEDK,oBAAoB,GAAS;IAC3BH,QAAQ,CAACC,IAAT,CAAcG,mBAAd,CAAkC,aAAlC,EAAiD,KAAKR,iBAAtD;IACAI,QAAQ,CAACC,IAAT,CAAcG,mBAAd,CAAkC,SAAlC,EAA6C,KAAKN,aAAlD;EACD;;EAEDF,iBAAiB,CAACS,GAAD,EAAwB;IACvC,IAAMC,CAAC,GAAGD,GAAV;;IACA,IAAI,CAACC,CAAC,CAACC,cAAP,EAAuB;MACrBD,CAAC,CAACC,cAAF,GAAmB,EAAnB;IACD;;IAED,IAAM;MAAEC;IAAF,IAAa,KAAKb,KAAxB;;IAEA,IAAI,CAACa,MAAM,CAACC,KAAR,IAAiB,CAACD,MAAM,CAACE,WAA7B,EAA0C;MACxC;IACD;;IAED,IAAI,CAACJ,CAAC,CAACC,cAAP,EAAuB;MACrBD,CAAC,CAACC,cAAF,GAAmB,EAAnB;IACD;;IAEDD,CAAC,CAACC,cAAF,CAAiBI,IAAjB,CAAsBH,MAAtB;IAEAjB,GAAG,CAACqB,KAAJ,CACE,oEADF,EAEEN,CAAC,CAACC,cAFJ;EAID;;EAEDT,aAAa,CAACQ,CAAD,EAAyB;IAAA;;IACpC,IAAM;MAAEE;IAAF,IAAa,KAAKb,KAAxB;;IACA,IACE,CAACL,kBAAkB,CAACuB,eAApB,wBACAL,MAAM,CAACM,QADP,6CACA,iBAAiBC,YAAjB,CAA8BT,CAA9B,CAFF,EAGE;MAAA;;MACAf,GAAG,CAACqB,KAAJ,CAAU,wBAAV,EAAoCN,CAApC;MAEA,IAAMU,MAAM,qBAAGR,MAAM,CAACA,MAAV,mDAAG,oBAAAA,MAAM,EAAUF,CAAV,CAArB;;MAEA,IAAIU,MAAM,IAAIA,MAAM,KAAKC,SAAzB,EAAoC;QAClCX,CAAC,CAACY,cAAF;QACAZ,CAAC,CAACa,eAAF;MACD;IACF;EACF;;EAEDC,MAAM,GAAS;IACb,OAAO,IAAP;EACD;;AA7DmE;;AAgEtE,eAAe3B,mBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"GlobalContextActions.js","names":["React","Component","GlobalContextAction","GlobalContextActions","render","actions","dataTestId","props","actionElements","i","length","action","shortcut","title","menuElement","actionElement","id","push"],"sources":["../../src/context-actions/GlobalContextActions.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport GlobalContextAction from './GlobalContextAction';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface GlobalContextActionsProps {\n actions: ContextAction[];\n 'data-testid'?: string;\n}\n\nclass GlobalContextActions extends Component<GlobalContextActionsProps> {\n render(): React.ReactNode {\n const { actions, 'data-testid': dataTestId } = this.props;\n const actionElements = [];\n for (let i = 0; i < actions.length; i += 1) {\n const action = actions[i];\n const { shortcut } = action;\n if (action.title || action.menuElement || shortcut) {\n const actionElement = (\n <GlobalContextAction\n key={`${action.title}.${shortcut?.id}`}\n action={action}\n data-testid={dataTestId}\n />\n );\n actionElements.push(actionElement);\n }\n }\n return actionElements;\n }\n}\n\nexport default GlobalContextActions;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;OACOC,mB;;AAQP,MAAMC,oBAAN,SAAmCF,SAAnC,CAAwE;EACtEG,MAAM,GAAoB;IACxB,IAAM;MAAEC,OAAF;MAAW,eAAeC;IAA1B,IAAyC,KAAKC,KAApD;IACA,IAAMC,cAAc,GAAG,EAAvB;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,OAAO,CAACK,MAA5B,EAAoCD,CAAC,IAAI,CAAzC,EAA4C;MAC1C,IAAME,MAAM,GAAGN,OAAO,CAACI,CAAD,CAAtB;MACA,IAAM;QAAEG;MAAF,IAAeD,MAArB;;MACA,IAAIA,MAAM,CAACE,KAAP,IAAgBF,MAAM,CAACG,WAAvB,IAAsCF,QAA1C,EAAoD;QAClD,IAAMG,aAAa,gBACjB,oBAAC,mBAAD;UACE,GAAG,YAAKJ,MAAM,CAACE,KAAZ,cAAqBD,QAArB,aAAqBA,QAArB,uBAAqBA,QAAQ,CAAEI,EAA/B,CADL;UAEE,MAAM,EAAEL,MAFV;UAGE,eAAaL;QAHf,EADF;QAOAE,cAAc,CAACS,IAAf,CAAoBF,aAApB;MACD;IACF;;IACD,OAAOP,cAAP;EACD;;AAnBqE;;AAsBxE,eAAeL,oBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","ContextActions","ContextActionUtils","ContextMenuItem","ContextMenuRoot"],"sources":["../../src/context-actions/index.ts"],"sourcesContent":["export { default as ContextActions } from './ContextActions';\nexport { default as ContextActionUtils } from './ContextActionUtils';\nexport type { ContextAction } from './ContextActionUtils';\nexport { default as ContextMenuItem } from './ContextMenuItem';\nexport { default as ContextMenuRoot } from './ContextMenuRoot';\n"],"mappings":"SAASA,OAAO,IAAIC,c;SACXD,OAAO,IAAIE,kB;SAEXF,OAAO,IAAIG,e;SACXH,OAAO,IAAII,e"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["$","window","jQuery","default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DebouncedSearchInput","DeephavenSpinner","DraggableItemList","DragUtils","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"sources":["../src/index.ts"],"sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport $ from 'jquery';\n\ndeclare global {\n interface Window {\n $: typeof $;\n jQuery: typeof $;\n }\n}\n\nwindow.$ = $;\nwindow.jQuery = $;\n\nexport type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DeephavenSpinner } from './DeephavenSpinner';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\n"],"mappings":"AAAA;AACA,OAAOA,CAAP,MAAc,QAAd;AASAC,MAAM,CAACD,CAAP,GAAWA,CAAX;AACAC,MAAM,CAACC,MAAP,GAAgBF,CAAhB;SAGSG,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,oB;SACXZ,OAAO,IAAIa,gB;SACXb,OAAO,IAAIc,iB;;SAEXd,OAAO,IAAIe,S;SACXf,OAAO,IAAIgB,wB;;;SAGXhB,OAAO,IAAIiB,Y;SACXjB,OAAO,IAAIkB,c;SACXlB,OAAO,IAAImB,c;SACXnB,OAAO,IAAIoB,Y;;SAEXpB,OAAO,IAAIqB,W;;SAEXrB,OAAO,IAAIsB,M;;;SAGXtB,OAAO,IAAIuB,U;SACXvB,OAAO,IAAIwB,S;SACXxB,OAAO,IAAIyB,M;SACXzB,OAAO,IAAI0B,W;SACX1B,OAAO,IAAI2B,e;;;SAGX3B,OAAO,IAAI4B,c;SACX5B,OAAO,IAAI6B,W;SACX7B,OAAO,IAAI8B,S;SACX9B,OAAO,IAAI+B,U;SACX/B,OAAO,IAAIgC,iB;SACXhC,OAAO,IAAIiC,Q"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","names":["React","PureComponent","classNames","Popper","Menu","DropdownMenu","constructor","props","handleClick","bind","handleCloseMenu","handleExited","container","createRef","parent","popper","isOpen","componentDidMount","isShown","current","parentElement","addEventListener","openMenu","componentDidUpdate","prevProps","window","requestAnimationFrame","closeMenu","componentWillUnmount","removeEventListener","hide","show","scheduleUpdate","e","preventDefault","stopPropagation","onMenuClosed","render","actions","onMenuOpened","popperClassName","dataTestId","menuStyle","options","popperOptions","placement","separateKeyboardMouse","undefined"],"sources":["../../src/menu-actions/DropdownMenu.tsx"],"sourcesContent":["/**\n * Add dropdown menu that you add onto any component.\n *\n * Similar to the context-actions package, accepts list of actions to create a dropdown menu.\n * Note: Does not support nested sub-menus.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action',\n * action: () => { alert('My Action Clicked!') }\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * shortcut: Shortcut, // Shortcut class instance\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null // Int where to order within group\n * }];\n *\n * Usage:\n * 1. Auto bind click to open event to parent\n * <div>\n * Click in this container\n * <DropdownMenu actions={actions}/>\n * </div>\n *\n * 2. Control via prop\n * <div>\n * DropdownMenu will not react to the click event if isShown prop is used\n * <DropdownMenu actions={actions} isShown={isShown} />\n * </div>\n *\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from '../popper';\nimport Menu, { MenuOptions } from './Menu';\nimport { ContextAction } from '../context-actions/ContextActionUtils';\nimport './DropdownMenu.scss';\n\nexport type DropdownAction = ContextAction & { actions?: never };\n\nexport type DropdownActions = DropdownAction | DropdownAction[];\n\ntype DropdownMenuProps = {\n // Override to prevent nested lists\n actions: DropdownActions;\n isShown: boolean | null;\n onMenuClosed(): void;\n onMenuOpened(): void;\n options: MenuOptions;\n popperOptions: PopperOptions;\n popperClassName: string;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\nclass DropdownMenu extends PureComponent<DropdownMenuProps> {\n static defaultProps = {\n isShown: null,\n onMenuClosed(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n options: {},\n popperOptions: {},\n popperClassName: '',\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.handleExited = this.handleExited.bind(this);\n\n this.container = React.createRef();\n this.parent = null;\n this.popper = React.createRef();\n\n this.isOpen = false;\n }\n\n componentDidMount(): void {\n const { isShown } = this.props;\n\n if (isShown === null) {\n if (this.container.current?.parentElement) {\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('click', this.handleClick);\n }\n } else if (isShown) {\n this.openMenu();\n }\n }\n\n componentDidUpdate(prevProps: DropdownMenuProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.openMenu();\n });\n } else {\n this.closeMenu();\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.parent) {\n this.parent.removeEventListener('click', this.handleClick);\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n parent: Element | null;\n\n popper: React.RefObject<Popper>;\n\n isOpen: boolean;\n\n closeMenu(): void {\n this.popper.current?.hide();\n }\n\n openMenu(): void {\n if (this.popper.current && !this.isOpen) {\n this.popper.current.show();\n this.isOpen = true;\n }\n }\n\n scheduleUpdate(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n\n this.openMenu();\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleExited(): void {\n this.isOpen = false;\n\n const { onMenuClosed } = this.props;\n onMenuClosed();\n }\n\n render(): JSX.Element {\n const {\n actions,\n onMenuOpened,\n popperClassName,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuStyle } = this.props;\n let { options, popperOptions } = this.props;\n popperOptions = { placement: 'bottom', ...popperOptions };\n options = {\n separateKeyboardMouse: true,\n ...options,\n };\n return (\n <div\n className=\"menu-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('menu-popper', popperClassName)}\n onExited={this.handleExited}\n closeOnBlur\n interactive\n >\n <Menu\n actions={actions}\n closeMenu={this.handleCloseMenu}\n onMenuOpened={onMenuOpened}\n options={options}\n menuStyle={menuStyle}\n />\n </Popper>\n </div>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"mappings":"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"}
|
|
@@ -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","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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","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"],"sources":["../../src/menu-actions/Menu.tsx"],"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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default"],"sources":["../../src/menu-actions/index.ts"],"sourcesContent":["// Note this exports as the default for this module\nexport { default } from './DropdownMenu';\nexport * from './DropdownMenu';\n"],"mappings":"AAAA;SACSA,O"}
|
package/dist/modal/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Modal.js","names":["classNames","React","useCallback","useEffect","useRef","ReactDOM","CSSTransition","ThemeExport","Modal","className","children","role","keyboard","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","appearActive","appearDone","transitionMs","zIndex","display","e","stopPropagation"],"sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, {\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nconst Modal = ({\n className = 'theme-bg-light',\n children,\n role = 'role',\n keyboard = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): ReactElement => {\n const element = useRef<HTMLElement>();\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = () => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current ? (\n ReactDOM.createPortal(\n <>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className=\"modal fade\"\n onClick={toggle}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames(`modal-dialog ${className}`, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n onClick={e => e.stopPropagation()}\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </>,\n element.current\n )\n ) : (\n <></>\n );\n};\n\nexport default Modal;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ModalBody.js","names":["React","ModalBody","className","style","children","dataTestId"],"sources":["../../src/modal/ModalBody.tsx"],"sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\n\ninterface ModalBodyProps {\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nconst ModalBody = ({\n className = 'modal-body',\n style,\n children,\n 'data-testid': dataTestId,\n}: ModalBodyProps): ReactElement => (\n <div className={className} data-testid={dataTestId} style={style}>\n {children}\n </div>\n);\n\nexport default ModalBody;\n"],"mappings":"AAAA,OAAOA,KAAP,MAA8D,OAA9D;;AASA,IAAMC,SAAS,GAAG;EAAA,IAAC;IACjBC,SAAS,GAAG,YADK;IAEjBC,KAFiB;IAGjBC,QAHiB;IAIjB,eAAeC;EAJE,CAAD;EAAA,oBAMhB;IAAK,SAAS,EAAEH,SAAhB;IAA2B,eAAaG,UAAxC;IAAoD,KAAK,EAAEF;EAA3D,GACGC,QADH,CANgB;AAAA,CAAlB;;AAWA,eAAeH,SAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ModalFooter.js","names":["React","ModalFooter","className","children","dataTestId"],"sources":["../../src/modal/ModalFooter.tsx"],"sourcesContent":["import React, { ReactElement, ReactNode } from 'react';\n\ninterface ModalFooterProps {\n className?: string;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nconst ModalFooter = ({\n className = 'modal-footer',\n children,\n 'data-testid': dataTestId,\n}: ModalFooterProps): ReactElement => (\n <div className={className} data-testid={dataTestId}>\n {children}\n </div>\n);\n\nexport default ModalFooter;\n"],"mappings":"AAAA,OAAOA,KAAP,MAA+C,OAA/C;;AAQA,IAAMC,WAAW,GAAG;EAAA,IAAC;IACnBC,SAAS,GAAG,cADO;IAEnBC,QAFmB;IAGnB,eAAeC;EAHI,CAAD;EAAA,oBAKlB;IAAK,SAAS,EAAEF,SAAhB;IAA2B,eAAaE;EAAxC,GACGD,QADH,CALkB;AAAA,CAApB;;AAUA,eAAeF,WAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ModalHeader.js","names":["React","ModalHeader","className","children","closeButton","style","toggle","dataTestId"],"sources":["../../src/modal/ModalHeader.tsx"],"sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\n\ninterface ModalHeaderProps {\n className?: string;\n children?: ReactNode;\n closeButton?: boolean;\n style?: CSSProperties;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nconst ModalHeader = ({\n className,\n children,\n closeButton = true,\n style,\n toggle,\n 'data-testid': dataTestId,\n}: ModalHeaderProps): ReactElement => (\n <div className={`modal-header ${className}`} style={style}>\n <h5 className=\"modal-title\">{children}</h5>\n {closeButton && (\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n onClick={toggle}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n )}\n </div>\n);\n\nexport default ModalHeader;\n"],"mappings":"AAAA,OAAOA,KAAP,MAA8D,OAA9D;;AAWA,IAAMC,WAAW,GAAG;EAAA,IAAC;IACnBC,SADmB;IAEnBC,QAFmB;IAGnBC,WAAW,GAAG,IAHK;IAInBC,KAJmB;IAKnBC,MALmB;IAMnB,eAAeC;EANI,CAAD;EAAA,oBAQlB;IAAK,SAAS,yBAAkBL,SAAlB,CAAd;IAA6C,KAAK,EAAEG;EAApD,gBACE;IAAI,SAAS,EAAC;EAAd,GAA6BF,QAA7B,CADF,EAEGC,WAAW,iBACV;IACE,IAAI,EAAC,QADP;IAEE,SAAS,EAAC,OAFZ;IAGE,gBAAa,OAHf;IAIE,cAAW,OAJb;IAKE,OAAO,EAAEE;EALX,gBAOE;IAAM,eAAY;EAAlB,UAPF,CAHJ,CARkB;AAAA,CAApB;;AAwBA,eAAeL,WAAf"}
|
package/dist/modal/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","Modal","ModalBody","ModalHeader","ModalFooter"],"sources":["../../src/modal/index.ts"],"sourcesContent":["export { default as Modal } from './Modal';\nexport { default as ModalBody } from './ModalBody';\nexport { default as ModalHeader } from './ModalHeader';\nexport { default as ModalFooter } from './ModalFooter';\n"],"mappings":"SAASA,OAAO,IAAIC,K;SACXD,OAAO,IAAIE,S;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,W"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["React","MenuItem","Menu","items","onSelect","undefined","dataTestId","map","item","itemIndex","title"],"sources":["../../src/navigation/Menu.tsx"],"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"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;OACOC,Q;;AAWP,OAAO,IAAMC,IAAI,GAAG;EAAA,IAAC;IACnBC,KADmB;IAEnBC,QAAQ,EAARA,SAAQ,GAAG,MAAMC,SAFE;IAGnB,eAAeC;EAHI,CAAD;EAAA,oBAKlB;IAAK,SAAS,EAAC,sBAAf;IAAsC,eAAaA;EAAnD,gBACE;IAAI,SAAS,EAAC;EAAd,GACGH,KAAK,CAACI,GAAN,CAAU,CAACC,IAAD,EAAOC,SAAP,kBACT;IAAI,GAAG,EAAED,IAAI,CAACE;EAAd,gBACE,oBAAC,QAAD;IACE,IAAI,EAAEF,IADR;IAEE,QAAQ,EAAE,MAAM;MACdJ,SAAQ,CAACK,SAAD,CAAR;IACD;EAJH,EADF,CADD,CADH,CADF,CALkB;AAAA,CAAb;AAqBP,eAAeP,IAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"MenuItem.js","names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","dataTestId","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"sources":["../../src/navigation/MenuItem.tsx"],"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"],"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;EAC1E,OAAQA,IAAD,CAA4BC,IAA5B,KAAqCC,SAA5C;AACD;;AAQD;AACA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,QAIU;EAAA,IAJT;IACvBH,IADuB;IAEvBI,QAAQ,GAAG,MAAMF,SAFM;IAGvB,eAAeG;EAHQ,CAIS;EAChC,IAAM;IAAEC,IAAF;IAAQC,QAAR;IAAkBC;EAAlB,IAA4BR,IAAlC;EACA,IAAMS,YAAY,GAAGd,OAAO,CAAC,MAAM;IACjC,IAAII,oBAAoB,CAACC,IAAD,CAAxB,EAAgC;MAC9B,OAAO,MAAM;QACXA,IAAI,CAACU,QAAL,CAAc,CAACV,IAAI,CAACC,IAApB;MACD,CAFD;IAGD;;IACD,OAAOG,QAAP;EACD,CAP2B,EAOzB,CAACJ,IAAD,EAAOI,QAAP,CAPyB,CAA5B;EAQA,oBACE;IACE,SAAS,EAAC,8BADZ;IAEE,mCAA0BI,KAA1B,CAFF;IAGE,OAAO,EAAEC,YAHX;IAIE,SAAS,EAAEE,KAAK,IAAI;MAClB,IAAIA,KAAK,CAACC,GAAN,KAAc,OAAd,IAAyBD,KAAK,CAACC,GAAN,KAAc,GAA3C,EAAgD;QAC9CH,YAAY;MACb;IACF,CARH;IASE,QAAQ,EAAE,CATZ;IAUE,IAAI,EAAC;EAVP,GAYGH,IAAI,iBACH;IAAK,SAAS,EAAC;EAAf,gBACE,oBAAC,eAAD;IAAiB,IAAI,EAAEA;EAAvB,EADF,CAbJ,eAiBE;IAAK,SAAS,EAAC;EAAf,GAAwBE,KAAxB,CAjBF,EAkBGD,QAAQ,iBAAI;IAAK,SAAS,EAAC;EAAf,GAA2BA,QAA3B,CAlBf,eAmBE;IAAK,SAAS,EAAC,WAAf;IAA2B,eAAaF;EAAxC,GACIN,oBAAoB,CAACC,IAAD,CAApB,iBACA,oBAAC,QAAD;IACE,EAAE,EAAEA,IAAI,CAACC,IADX;IAEE,OAAO,EAAEU,KAAK,IAAI;MAChBA,KAAK,CAACE,eAAN;MACAJ,YAAY;IACb;EALH,EADD,iBAQK,oBAAC,eAAD;IAAiB,IAAI,EAAEZ;EAAvB,EATR,CAnBF,CADF;AAiCD,CA/CM;AAiDP,eAAeM,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Page.js","names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","dataTestId","undefined"],"sources":["../../src/navigation/Page.tsx"],"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"],"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;EAAA,IAAC;IACnBC,QADmB;IAEnBC,MAFmB;IAGnBC,OAHmB;IAInBC,KAJmB;IAKnB,eAAeC;EALI,CAAD;EAAA,oBAOlB;IAAK,SAAS,EAAC,iBAAf;IAAiC,eAAaA;EAA9C,gBACE;IAAK,SAAS,EAAC;EAAf,gBACE;IAAK,SAAS,EAAC;EAAf,GACGH,MAAM,KAAKI,SAAX,iBACC;IACE,SAAS,EAAC,uBADZ;IAEE,eAAY,eAFd;IAGE,IAAI,EAAC,QAHP;IAIE,OAAO,EAAEJ;EAJX,gBAME,oBAAC,eAAD;IAAiB,IAAI,EAAEH;EAAvB,EANF,SAFJ,CADF,eAcE;IAAK,SAAS,EAAC;EAAf,GAAmCK,KAAnC,CAdF,eAeE;IAAK,SAAS,EAAC;EAAf,GACGD,OAAO,KAAKG,SAAZ,iBACC;IACE,SAAS,EAAC,+CADZ;IAEE,eAAY,gBAFd;IAGE,IAAI,EAAC,QAHP;IAIE,OAAO,EAAEH;EAJX,gBAME,oBAAC,eAAD;IAAiB,IAAI,EAAEL;EAAvB,EANF,CAFJ,CAfF,CADF,eA6BE;IAAK,SAAS,EAAC;EAAf,GAAqCG,QAArC,CA7BF,CAPkB;AAAA,CAAb;AAwCP,eAAeD,IAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Stack.js","names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","initAnimation","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"sources":["../../src/navigation/Stack.tsx"],"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 function initAnimation() {\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 },\n [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]\n );\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","Menu","MenuItem","Page","Stack"],"sources":["../../src/navigation/index.ts"],"sourcesContent":["export { default as Menu } from './Menu';\nexport type { MenuProps } from './Menu';\nexport { default as MenuItem } from './MenuItem';\nexport type { SwitchMenuItemDef, MenuItemDef, MenuItemProps } from './MenuItem';\nexport { default as Page } from './Page';\nexport type { PageProps } from './Page';\nexport { default as Stack } from './Stack';\n"],"mappings":"SAASA,OAAO,IAAIC,I;SAEXD,OAAO,IAAIE,Q;SAEXF,OAAO,IAAIG,I;SAEXH,OAAO,IAAII,K"}
|
|
@@ -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","dataTestId","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 '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"}
|
|
1
|
+
{"version":3,"file":"Popper.js","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"],"sources":["../../src/popper/Popper.tsx"],"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"],"mappings":"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"}
|