@deephaven/components 0.13.2-beta.2 → 0.13.2-beta.6

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.
@@ -1,4 +1,12 @@
1
+ import React from 'react';
2
+ interface ButtonProps {
3
+ children?: React.ReactNode;
4
+ className?: string;
5
+ disabled?: boolean;
6
+ onClick?: () => void;
7
+ style?: React.CSSProperties;
8
+ id?: string;
9
+ }
10
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
1
11
  export default Button;
2
- declare const Button: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
3
- import React from "react";
4
12
  //# sourceMappingURL=ButtonOld.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonOld.d.ts","sourceRoot":"","sources":["../src/ButtonOld.jsx"],"names":[],"mappings":";AAIA,gFAeG"}
1
+ {"version":3,"file":"ButtonOld.d.ts","sourceRoot":"","sources":["../src/ButtonOld.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AACD,QAAA,MAAM,MAAM,uFAiBX,CAAC;AAsBF,eAAe,MAAM,CAAC"}
package/dist/ButtonOld.js CHANGED
@@ -33,7 +33,7 @@ Button.defaultProps = {
33
33
  children: null,
34
34
  className: '',
35
35
  disabled: false,
36
- onClick: () => {},
36
+ onClick: () => null,
37
37
  style: {},
38
38
  id: ''
39
39
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ButtonOld.jsx"],"names":["React","classNames","PropTypes","Button","forwardRef","props","ref","children","className","disabled","onClick","style","id","displayName","propTypes","node","string","bool","func","shape","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,IAAMC,MAAM,gBAAGH,KAAK,CAACI,UAAN,CAAiB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAC9C,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,SAAZ;AAAuBC,IAAAA,QAAvB;AAAiCC,IAAAA,OAAjC;AAA0CC,IAAAA,KAA1C;AAAiDC,IAAAA;AAAjD,MAAwDP,KAA9D;AACA,sBACE;AACE,IAAA,GAAG,EAAEC,GADP;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,SAAS,EAAEL,UAAU,CAAC,KAAD,EAAQO,SAAR,CAHvB;AAIE,IAAA,OAAO,EAAEE,OAJX;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,IAAA,QAAQ,EAAEF,QANZ;AAOE,IAAA,EAAE,EAAEG;AAPN,KASGL,QATH,CADF;AAaD,CAfc,CAAf;AAiBAJ,MAAM,CAACU,WAAP,GAAqB,QAArB;AAEAV,MAAM,CAACW,SAAP,GAAmB;AACjBP,EAAAA,QAAQ,EAAEL,SAAS,CAACa,IADH;AAEjBP,EAAAA,SAAS,EAAEN,SAAS,CAACc,MAFJ;AAGjBP,EAAAA,QAAQ,EAAEP,SAAS,CAACe,IAHH;AAIjBP,EAAAA,OAAO,EAAER,SAAS,CAACgB,IAJF;AAKjBP,EAAAA,KAAK,EAAET,SAAS,CAACiB,KAAV,CAAgB,EAAhB,CALU;AAMjBP,EAAAA,EAAE,EAAEV,SAAS,CAACc;AANG,CAAnB;AASAb,MAAM,CAACiB,YAAP,GAAsB;AACpBb,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,SAAS,EAAE,EAFS;AAGpBC,EAAAA,QAAQ,EAAE,KAHU;AAIpBC,EAAAA,OAAO,EAAE,MAAM,CAAE,CAJG;AAKpBC,EAAAA,KAAK,EAAE,EALa;AAMpBC,EAAAA,EAAE,EAAE;AANgB,CAAtB;AASA,eAAeT,MAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst Button = React.forwardRef((props, ref) => {\n const { children, className, disabled, onClick, style, id } = props;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('btn', className)}\n onClick={onClick}\n style={style}\n disabled={disabled}\n id={id}\n >\n {children}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n id: PropTypes.string,\n};\n\nButton.defaultProps = {\n children: null,\n className: '',\n disabled: false,\n onClick: () => {},\n style: {},\n id: '',\n};\n\nexport default Button;\n"],"file":"ButtonOld.js"}
1
+ {"version":3,"sources":["../src/ButtonOld.tsx"],"names":["React","classNames","PropTypes","Button","forwardRef","props","ref","children","className","disabled","onClick","style","id","displayName","propTypes","node","string","bool","func","shape","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAUA,IAAMC,MAAM,gBAAGH,KAAK,CAACI,UAAN,CACb,CAACC,KAAD,EAAqBC,GAArB,KAA6B;AAC3B,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,SAAZ;AAAuBC,IAAAA,QAAvB;AAAiCC,IAAAA,OAAjC;AAA0CC,IAAAA,KAA1C;AAAiDC,IAAAA;AAAjD,MAAwDP,KAA9D;AACA,sBACE;AACE,IAAA,GAAG,EAAEC,GADP;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,SAAS,EAAEL,UAAU,CAAC,KAAD,EAAQO,SAAR,CAHvB;AAIE,IAAA,OAAO,EAAEE,OAJX;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,IAAA,QAAQ,EAAEF,QANZ;AAOE,IAAA,EAAE,EAAEG;AAPN,KASGL,QATH,CADF;AAaD,CAhBY,CAAf;AAmBAJ,MAAM,CAACU,WAAP,GAAqB,QAArB;AAEAV,MAAM,CAACW,SAAP,GAAmB;AACjBP,EAAAA,QAAQ,EAAEL,SAAS,CAACa,IADH;AAEjBP,EAAAA,SAAS,EAAEN,SAAS,CAACc,MAFJ;AAGjBP,EAAAA,QAAQ,EAAEP,SAAS,CAACe,IAHH;AAIjBP,EAAAA,OAAO,EAAER,SAAS,CAACgB,IAJF;AAKjBP,EAAAA,KAAK,EAAET,SAAS,CAACiB,KAAV,CAAgB,EAAhB,CALU;AAMjBP,EAAAA,EAAE,EAAEV,SAAS,CAACc;AANG,CAAnB;AASAb,MAAM,CAACiB,YAAP,GAAsB;AACpBb,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,SAAS,EAAE,EAFS;AAGpBC,EAAAA,QAAQ,EAAE,KAHU;AAIpBC,EAAAA,OAAO,EAAE,MAAM,IAJK;AAKpBC,EAAAA,KAAK,EAAE,EALa;AAMpBC,EAAAA,EAAE,EAAE;AANgB,CAAtB;AASA,eAAeT,MAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\ninterface ButtonProps {\n children?: React.ReactNode;\n className?: string;\n disabled?: boolean;\n onClick?: () => void;\n style?: React.CSSProperties;\n id?: string;\n}\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const { children, className, disabled, onClick, style, id } = props;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('btn', className)}\n onClick={onClick}\n style={style}\n disabled={disabled}\n id={id}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n id: PropTypes.string,\n};\n\nButton.defaultProps = {\n children: null,\n className: '',\n disabled: false,\n onClick: () => null,\n style: {},\n id: '',\n};\n\nexport default Button;\n"],"file":"ButtonOld.js"}
@@ -1,7 +1,7 @@
1
1
  import React, { Component } from 'react';
2
2
  import { IconDefinition } from '@deephaven/icons';
3
3
  import './HierarchicalCheckboxMenu.scss';
4
- declare type HierarchicalCheckboxValueMap = Map<string, boolean | Map<string, boolean>>;
4
+ export declare type HierarchicalCheckboxValueMap = Map<string, boolean | Map<string, boolean>>;
5
5
  declare type HierarchicalCheckboxMenuProps = {
6
6
  className: string;
7
7
  menuText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalCheckboxMenu.d.ts","sourceRoot":"","sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAU,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,iCAAiC,CAAC;AAEzC,aAAK,4BAA4B,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhF,aAAK,6BAA6B,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,4BAA4B,CAAC;IACvC,gBAAgB,CAAC,GAAG,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC1D,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,wBAAyB,SAAQ,SAAS,CAC9C,6BAA6B,EAC7B,6BAA6B,CAC9B;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAKzD;IAEF,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,4BAA4B,GACrC,OAAO,GAAG,IAAI;gBAkBL,KAAK,EAAE,6BAA6B;IAahD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAS5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAwCpD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkBlC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,iBAAiB,IAAI,KAAK,CAAC,SAAS;IAkDpC,MAAM,IAAI,GAAG,CAAC,OAAO;CAqCtB;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"HierarchicalCheckboxMenu.d.ts","sourceRoot":"","sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAU,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,iCAAiC,CAAC;AAEzC,oBAAY,4BAA4B,GAAG,GAAG,CAC5C,MAAM,EACN,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAC/B,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,4BAA4B,CAAC;IACvC,gBAAgB,CAAC,GAAG,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC1D,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,wBAAyB,SAAQ,SAAS,CAC9C,6BAA6B,EAC7B,6BAA6B,CAC9B;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAKzD;IAEF,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,4BAA4B,GACrC,OAAO,GAAG,IAAI;gBAkBL,KAAK,EAAE,6BAA6B;IAahD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAS5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAwCpD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkBlC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,iBAAiB,IAAI,KAAK,CAAC,SAAS;IAkDpC,MAAM,IAAI,GAAG,CAAC,OAAO;CAqCtB;AAED,eAAe,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":["React","Component","FontAwesomeIcon","dhSort","classNames","Checkbox","Popper","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","onUpdateValueMap","map","Map","newChildren","set","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","entries","render","menuText","className","icon","id","placement"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhSort, IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\n\ntype HierarchicalCheckboxValueMap = Map<string, boolean | Map<string, boolean>>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap(map: HierarchicalCheckboxValueMap): void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, !children.get(child));\n } else {\n const newChildValue = !HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n if (HierarchicalCheckboxMenu.isParentSelected(parent, valueMap)) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): React.ReactNode {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n data-testid={dataTestId ? `${dataTestId}-btn-select-all` : undefined}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n data-testid={dataTestId ? `${dataTestId}-btn-clear` : undefined}\n >\n Clear\n </button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <FontAwesomeIcon icon={dhSort} className=\"hcm-icon ml-1\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"file":"HierarchicalCheckboxMenu.js"}
1
+ {"version":3,"sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":["React","Component","FontAwesomeIcon","dhSort","classNames","Checkbox","Popper","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","onUpdateValueMap","map","Map","newChildren","set","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","entries","render","menuText","className","icon","id","placement"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhSort, IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\n\nexport type HierarchicalCheckboxValueMap = Map<\n string,\n boolean | Map<string, boolean>\n>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap(map: HierarchicalCheckboxValueMap): void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, !children.get(child));\n } else {\n const newChildValue = !HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n if (HierarchicalCheckboxMenu.isParentSelected(parent, valueMap)) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): React.ReactNode {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n data-testid={dataTestId ? `${dataTestId}-btn-select-all` : undefined}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n data-testid={dataTestId ? `${dataTestId}-btn-clear` : undefined}\n >\n Clear\n </button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <FontAwesomeIcon icon={dhSort} className=\"hcm-icon ml-1\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"file":"HierarchicalCheckboxMenu.js"}
@@ -5,7 +5,7 @@ import React, { Component } from 'react';
5
5
  import type { ContextAction } from './ContextActionUtils';
6
6
  import './ContextActions.scss';
7
7
  interface ContextActionsProps {
8
- actions: ContextAction[] | (() => ContextAction[]);
8
+ actions: ContextAction[] | (() => ContextAction[]) | (() => Promise<ContextAction[]>);
9
9
  ignoreClassNames?: string[];
10
10
  'data-testid'?: string;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContextActions.d.ts","sourceRoot":"","sources":["../../src/context-actions/ContextActions.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,uBAAuB,CAAC;AAI/B,UAAU,mBAAmB;IAC3B,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IACnD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,cAAe,SAAQ,SAAS,CACpC,mBAAmB,EACnB,mBAAmB,CACpB;IACC;;;;;OAKG;IACH,MAAM,CAAC,MAAM;;;;;;;MAQX;IAEF,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,IAAI;gBAmBK,KAAK,EAAE,mBAAmB;IAWtC,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,mBAAmB,GACzB,mBAAmB;IAYtB,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAa5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IA0CtC,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAuBrC,MAAM,IAAI,GAAG,CAAC,OAAO;CAatB;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ContextActions.d.ts","sourceRoot":"","sources":["../../src/context-actions/ContextActions.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,uBAAuB,CAAC;AAI/B,UAAU,mBAAmB;IAC3B,OAAO,EACH,aAAa,EAAE,GACf,CAAC,MAAM,aAAa,EAAE,CAAC,GACvB,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,cAAe,SAAQ,SAAS,CACpC,mBAAmB,EACnB,mBAAmB,CACpB;IACC;;;;;OAKG;IACH,MAAM,CAAC,MAAM;;;;;;;MAQX;IAEF,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,IAAI;gBAmBK,KAAK,EAAE,mBAAmB;IAWtC,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,mBAAmB,GACzB,mBAAmB;IAYtB,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAa5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IA0CtC,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAuBrC,MAAM,IAAI,GAAG,CAAC,OAAO;CAatB;AAED,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context-actions/ContextActions.tsx"],"names":["React","Component","Log","ContextActionUtils","GlobalContextActions","log","module","ContextActions","triggerMenu","element","clientX","clientY","actions","mouseEvent","MouseEvent","bubbles","cancelable","contextActions","dispatchEvent","constructor","props","handleContextMenu","bind","handleKeyDown","container","createRef","state","globalActions","keyboardActions","getDerivedStateFromProps","Array","isArray","filter","action","isGlobal","shortcut","componentDidMount","current","parentElement","addEventListener","componentWillUnmount","removeEventListener","e","ignoreClassNames","length","el","target","classList","ignoredClassName","find","className","contains","undefined","debug2","isContextActionEvent","concat","debug","i","keyboardAction","actionsDisabled","matchesEvent","result","stopPropagation","preventDefault","render","dataTestId","default","high","medium","low","global","edit"],"mappings":"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","sourcesContent":["/**\n * Just a simple utility class for displaying a popup menu.\n */\nimport React, { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\nimport GlobalContextActions from './GlobalContextActions';\nimport './ContextActions.scss';\n\nconst log = Log.module('ContextActions');\n\ninterface ContextActionsProps {\n actions: ContextAction[] | (() => ContextAction[]);\n ignoreClassNames?: string[];\n 'data-testid'?: string;\n}\n\ninterface ContextActionsState {\n globalActions: ContextAction[];\n keyboardActions: ContextAction[];\n}\n\n/**\n * ContextActions that you add onto any component.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action', // Omit the title to hide it from the context menu\n * action: () => { alert('My Action Clicked!') }\n * actions: [] // Submenu of actions\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * iconColor: '#ff0000, // Color to use for the icon\n * shortcut: Shortcut, // Defaults to null\n * isGlobal: false, // Global context action. Defaults to false.\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null, // Int where to order within group\n * disabled: true // disable action\n * menuElement: null // Custom menu element for displaying in context menu. When null, creates a default menu item based on title\n * }];\n *\n * <div>\n * Right click in this container\n * <ContextActions actions={actions}/>\n * </div>\n *\n * Right clicking the container will then build the context menu, bubbling up until an element with a ContextMenuRoot is on it.\n * You should generally have a ContextMenuRoot on the root node of your document.\n */\nclass ContextActions extends Component<\n ContextActionsProps,\n ContextActionsState\n> {\n /**\n * Group you can assign to context menu actions to group them together.\n * Lower group IDs appear at the top of the list.\n * Groups are separated by a separator item.\n * Items within groups are ordered by their order property, then by their title.\n */\n static groups = {\n default: null,\n high: 100,\n medium: 5000,\n low: 10000,\n global: 100000,\n\n edit: 100,\n };\n\n static triggerMenu(\n element: Element,\n clientX: number,\n clientY: number,\n actions: ContextAction[]\n ): void {\n if (!element || !clientX || !clientY || !actions) {\n return;\n }\n\n const mouseEvent: Partial<ContextActionEvent> = new MouseEvent(\n 'contextmenu',\n {\n clientX,\n clientY,\n bubbles: true,\n cancelable: true,\n }\n );\n mouseEvent.contextActions = actions;\n\n element.dispatchEvent(mouseEvent as ContextActionEvent);\n }\n\n constructor(props: ContextActionsProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.container = React.createRef();\n\n this.state = { globalActions: [], keyboardActions: [] };\n }\n\n static getDerivedStateFromProps(\n props: ContextActionsProps\n ): ContextActionsState {\n if (!props.actions || !Array.isArray(props.actions)) {\n return { globalActions: [], keyboardActions: [] };\n }\n const globalActions = props.actions.filter(action => action.isGlobal);\n const keyboardActions = props.actions.filter(\n action => !action.isGlobal && action.shortcut != null\n );\n\n return { globalActions, keyboardActions };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n this.container.current.parentElement.addEventListener(\n 'keydown',\n this.handleKeyDown\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 this.container.current.parentElement.removeEventListener(\n 'keydown',\n this.handleKeyDown\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n handleContextMenu(e: MouseEvent): void {\n const { ignoreClassNames = [] } = this.props;\n if (ignoreClassNames.length > 0) {\n let el = e.target as Element | null;\n while (el != null) {\n const { classList } = el;\n const ignoredClassName = ignoreClassNames.find(className =>\n classList.contains(className)\n );\n if (ignoredClassName !== undefined) {\n log.debug2(\n `Contextmenu event ignored based on the target className \"${ignoredClassName}\"`\n );\n return;\n }\n el = el.parentElement;\n }\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n (e as ContextActionEvent).contextActions = [];\n }\n\n if (!ContextActionUtils.isContextActionEvent(e)) {\n return;\n }\n\n const { actions } = this.props;\n if (actions) {\n let contextActions = actions;\n if (Array.isArray(contextActions)) {\n contextActions = contextActions.filter(action => !action.isGlobal);\n }\n\n e.contextActions = e.contextActions.concat(contextActions);\n }\n\n log.debug(\n 'Received context menu event! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { keyboardActions } = this.state;\n for (let i = 0; i < keyboardActions.length; i += 1) {\n const keyboardAction = keyboardActions[i];\n if (\n !ContextActionUtils.actionsDisabled &&\n keyboardAction.shortcut?.matchesEvent(e)\n ) {\n log.debug('Context hotkey matched!', e);\n\n const result = keyboardAction.action?.(e);\n\n if (result || result === undefined) {\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n\n log.debug2('Matched hotkey returned false, key event not consumed');\n }\n }\n }\n\n render(): JSX.Element {\n const { 'data-testid': dataTestId } = this.props;\n const { globalActions } = this.state;\n return (\n <div\n className=\"context-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <GlobalContextActions actions={globalActions} />\n </div>\n );\n }\n}\n\nexport default ContextActions;\n"],"file":"ContextActions.js"}
1
+ {"version":3,"sources":["../../src/context-actions/ContextActions.tsx"],"names":["React","Component","Log","ContextActionUtils","GlobalContextActions","log","module","ContextActions","triggerMenu","element","clientX","clientY","actions","mouseEvent","MouseEvent","bubbles","cancelable","contextActions","dispatchEvent","constructor","props","handleContextMenu","bind","handleKeyDown","container","createRef","state","globalActions","keyboardActions","getDerivedStateFromProps","Array","isArray","filter","action","isGlobal","shortcut","componentDidMount","current","parentElement","addEventListener","componentWillUnmount","removeEventListener","e","ignoreClassNames","length","el","target","classList","ignoredClassName","find","className","contains","undefined","debug2","isContextActionEvent","concat","debug","i","keyboardAction","actionsDisabled","matchesEvent","result","stopPropagation","preventDefault","render","dataTestId","default","high","medium","low","global","edit"],"mappings":"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","sourcesContent":["/**\n * Just a simple utility class for displaying a popup menu.\n */\nimport React, { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\nimport GlobalContextActions from './GlobalContextActions';\nimport './ContextActions.scss';\n\nconst log = Log.module('ContextActions');\n\ninterface ContextActionsProps {\n actions:\n | ContextAction[]\n | (() => ContextAction[])\n | (() => Promise<ContextAction[]>);\n ignoreClassNames?: string[];\n 'data-testid'?: string;\n}\n\ninterface ContextActionsState {\n globalActions: ContextAction[];\n keyboardActions: ContextAction[];\n}\n\n/**\n * ContextActions that you add onto any component.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action', // Omit the title to hide it from the context menu\n * action: () => { alert('My Action Clicked!') }\n * actions: [] // Submenu of actions\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * iconColor: '#ff0000, // Color to use for the icon\n * shortcut: Shortcut, // Defaults to null\n * isGlobal: false, // Global context action. Defaults to false.\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null, // Int where to order within group\n * disabled: true // disable action\n * menuElement: null // Custom menu element for displaying in context menu. When null, creates a default menu item based on title\n * }];\n *\n * <div>\n * Right click in this container\n * <ContextActions actions={actions}/>\n * </div>\n *\n * Right clicking the container will then build the context menu, bubbling up until an element with a ContextMenuRoot is on it.\n * You should generally have a ContextMenuRoot on the root node of your document.\n */\nclass ContextActions extends Component<\n ContextActionsProps,\n ContextActionsState\n> {\n /**\n * Group you can assign to context menu actions to group them together.\n * Lower group IDs appear at the top of the list.\n * Groups are separated by a separator item.\n * Items within groups are ordered by their order property, then by their title.\n */\n static groups = {\n default: null,\n high: 100,\n medium: 5000,\n low: 10000,\n global: 100000,\n\n edit: 100,\n };\n\n static triggerMenu(\n element: Element,\n clientX: number,\n clientY: number,\n actions: ContextAction[]\n ): void {\n if (!element || !clientX || !clientY || !actions) {\n return;\n }\n\n const mouseEvent: Partial<ContextActionEvent> = new MouseEvent(\n 'contextmenu',\n {\n clientX,\n clientY,\n bubbles: true,\n cancelable: true,\n }\n );\n mouseEvent.contextActions = actions;\n\n element.dispatchEvent(mouseEvent as ContextActionEvent);\n }\n\n constructor(props: ContextActionsProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.container = React.createRef();\n\n this.state = { globalActions: [], keyboardActions: [] };\n }\n\n static getDerivedStateFromProps(\n props: ContextActionsProps\n ): ContextActionsState {\n if (!props.actions || !Array.isArray(props.actions)) {\n return { globalActions: [], keyboardActions: [] };\n }\n const globalActions = props.actions.filter(action => action.isGlobal);\n const keyboardActions = props.actions.filter(\n action => !action.isGlobal && action.shortcut != null\n );\n\n return { globalActions, keyboardActions };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n this.container.current.parentElement.addEventListener(\n 'keydown',\n this.handleKeyDown\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 this.container.current.parentElement.removeEventListener(\n 'keydown',\n this.handleKeyDown\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n handleContextMenu(e: MouseEvent): void {\n const { ignoreClassNames = [] } = this.props;\n if (ignoreClassNames.length > 0) {\n let el = e.target as Element | null;\n while (el != null) {\n const { classList } = el;\n const ignoredClassName = ignoreClassNames.find(className =>\n classList.contains(className)\n );\n if (ignoredClassName !== undefined) {\n log.debug2(\n `Contextmenu event ignored based on the target className \"${ignoredClassName}\"`\n );\n return;\n }\n el = el.parentElement;\n }\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n (e as ContextActionEvent).contextActions = [];\n }\n\n if (!ContextActionUtils.isContextActionEvent(e)) {\n return;\n }\n\n const { actions } = this.props;\n if (actions) {\n let contextActions = actions;\n if (Array.isArray(contextActions)) {\n contextActions = contextActions.filter(action => !action.isGlobal);\n }\n\n e.contextActions = e.contextActions.concat(contextActions);\n }\n\n log.debug(\n 'Received context menu event! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { keyboardActions } = this.state;\n for (let i = 0; i < keyboardActions.length; i += 1) {\n const keyboardAction = keyboardActions[i];\n if (\n !ContextActionUtils.actionsDisabled &&\n keyboardAction.shortcut?.matchesEvent(e)\n ) {\n log.debug('Context hotkey matched!', e);\n\n const result = keyboardAction.action?.(e);\n\n if (result || result === undefined) {\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n\n log.debug2('Matched hotkey returned false, key event not consumed');\n }\n }\n }\n\n render(): JSX.Element {\n const { 'data-testid': dataTestId } = this.props;\n const { globalActions } = this.state;\n return (\n <div\n className=\"context-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <GlobalContextActions actions={globalActions} />\n </div>\n );\n }\n}\n\nexport default ContextActions;\n"],"file":"ContextActions.js"}
package/dist/index.d.ts CHANGED
@@ -25,11 +25,13 @@ export { default as DraggableItemList } from './DraggableItemList';
25
25
  export * from './DraggableItemList';
26
26
  export { default as DragUtils } from './DragUtils';
27
27
  export { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';
28
+ export * from './HierarchicalCheckboxMenu';
28
29
  export * from './ItemList';
29
30
  export { default as ItemListItem } from './ItemListItem';
30
31
  export { default as LoadingOverlay } from './LoadingOverlay';
31
32
  export { default as LoadingSpinner } from './LoadingSpinner';
32
33
  export { default as DropdownMenu } from './menu-actions';
34
+ export * from './menu-actions';
33
35
  export { default as MaskedInput } from './MaskedInput';
34
36
  export * from './navigation';
35
37
  export { default as Option } from './Option';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,11 +20,13 @@ export { default as DraggableItemList } from "./DraggableItemList.js";
20
20
  export * from "./DraggableItemList.js";
21
21
  export { default as DragUtils } from "./DragUtils.js";
22
22
  export { default as HierarchicalCheckboxMenu } from "./HierarchicalCheckboxMenu.js";
23
+ export * from "./HierarchicalCheckboxMenu.js";
23
24
  export * from "./ItemList.js";
24
25
  export { default as ItemListItem } from "./ItemListItem.js";
25
26
  export { default as LoadingOverlay } from "./LoadingOverlay.js";
26
27
  export { default as LoadingSpinner } from "./LoadingSpinner.js";
27
28
  export { default as DropdownMenu } from "./menu-actions/index.js";
29
+ export * from "./menu-actions/index.js";
28
30
  export { default as MaskedInput } from "./MaskedInput.js";
29
31
  export * from "./navigation/index.js";
30
32
  export { default as Option } from "./Option.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"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"],"mappings":"AAAA;AACA,OAAO,KAAKA,CAAZ,MAAmB,QAAnB;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;;SAEXhB,OAAO,IAAIiB,Y;SACXjB,OAAO,IAAIkB,c;SACXlB,OAAO,IAAImB,c;SACXnB,OAAO,IAAIoB,Y;SACXpB,OAAO,IAAIqB,W;;SAEXrB,OAAO,IAAIsB,M;;SAEXtB,OAAO,IAAIuB,U;SACXvB,OAAO,IAAIwB,S;SACXxB,OAAO,IAAIyB,M;SACXzB,OAAO,IAAI0B,W;SACX1B,OAAO,IAAI2B,e;;SAEX3B,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","sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport * as $ 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 './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 { default as MaskedInput } from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\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 './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"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"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"],"mappings":"AAAA;AACA,OAAO,KAAKA,CAAZ,MAAmB,QAAnB;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;;SAEXtB,OAAO,IAAIuB,U;SACXvB,OAAO,IAAIwB,S;SACXxB,OAAO,IAAIyB,M;SACXzB,OAAO,IAAI0B,W;SACX1B,OAAO,IAAI2B,e;;SAEX3B,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","sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport * as $ 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 { 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 './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"],"file":"index.js"}
@@ -34,12 +34,12 @@ import { Popper } from '../popper';
34
34
  import { MenuOptions } from './Menu';
35
35
  import { ContextAction } from '../context-actions/ContextActionUtils';
36
36
  import './DropdownMenu.scss';
37
+ export declare type DropdownAction = ContextAction & {
38
+ actions?: never;
39
+ };
40
+ export declare type DropdownActions = DropdownAction | DropdownAction[];
37
41
  declare type DropdownMenuProps = {
38
- actions: (ContextAction & {
39
- actions?: never;
40
- }) | (ContextAction & {
41
- actions?: never;
42
- })[];
42
+ actions: DropdownActions;
43
43
  isShown: boolean | null;
44
44
  onMenuClosed(): void;
45
45
  onMenuOpened(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/menu-actions/DropdownMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAa,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,qBAAqB,CAAC;AAE7B,aAAK,iBAAiB,GAAG;IAEvB,OAAO,EACH,CAAC,aAAa,GAAG;QAAE,OAAO,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GACrC,CAAC,aAAa,GAAG;QAAE,OAAO,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,IAAI,IAAI,CAAC;IACrB,YAAY,IAAI,IAAI,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,cAAM,YAAa,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACzD,MAAM,CAAC,YAAY;;wBAED,IAAI;wBAGJ,IAAI;;;;;;MAQpB;gBAEU,KAAK,EAAE,iBAAiB;IAcpC,iBAAiB,IAAI,IAAI;IAazB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAetD,oBAAoB,IAAI,IAAI;IAM5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,OAAO,CAAC;IAEhB,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAOhB,cAAc,IAAI,IAAI;IAItB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAO3B,eAAe,IAAI,IAAI;IAIvB,YAAY,IAAI,IAAI;IAOpB,MAAM,IAAI,GAAG,CAAC,OAAO;CAuCtB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/menu-actions/DropdownMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAa,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,qBAAqB,CAAC;AAE7B,oBAAY,cAAc,GAAG,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE,oBAAY,eAAe,GAAG,cAAc,GAAG,cAAc,EAAE,CAAC;AAEhE,aAAK,iBAAiB,GAAG;IAEvB,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,IAAI,IAAI,CAAC;IACrB,YAAY,IAAI,IAAI,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,cAAM,YAAa,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACzD,MAAM,CAAC,YAAY;;wBAED,IAAI;wBAGJ,IAAI;;;;;;MAQpB;gBAEU,KAAK,EAAE,iBAAiB;IAcpC,iBAAiB,IAAI,IAAI;IAazB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAetD,oBAAoB,IAAI,IAAI;IAM5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,OAAO,CAAC;IAEhB,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAOhB,cAAc,IAAI,IAAI;IAItB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAO3B,eAAe,IAAI,IAAI;IAIvB,YAAY,IAAI,IAAI;IAOpB,MAAM,IAAI,GAAG,CAAC,OAAO;CAuCtB;AAED,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/menu-actions/DropdownMenu.tsx"],"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"],"mappings":"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","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\ntype DropdownMenuProps = {\n // Override to prevent nested lists\n actions:\n | (ContextAction & { actions?: never })\n | (ContextAction & { actions?: never })[];\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"],"file":"DropdownMenu.js"}
1
+ {"version":3,"sources":["../../src/menu-actions/DropdownMenu.tsx"],"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"],"mappings":"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","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"],"file":"DropdownMenu.js"}
@@ -1,2 +1,3 @@
1
1
  export { default } from './DropdownMenu';
2
+ export * from './DropdownMenu';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu-actions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu-actions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,cAAc,gBAAgB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  // Note this exports as the default for this module
2
2
  export { default } from "./DropdownMenu.js";
3
+ export * from "./DropdownMenu.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/menu-actions/index.ts"],"names":["default"],"mappings":"AAAA;SACSA,O","sourcesContent":["// Note this exports as the default for this module\nexport { default } from './DropdownMenu';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/menu-actions/index.ts"],"names":["default"],"mappings":"AAAA;SACSA,O","sourcesContent":["// Note this exports as the default for this module\nexport { default } from './DropdownMenu';\nexport * from './DropdownMenu';\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.13.2-beta.2+d54359d",
3
+ "version": "0.13.2-beta.6+8475f01",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -30,10 +30,10 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/icons": "^0.13.2-beta.2+d54359d",
34
- "@deephaven/log": "^0.13.2-beta.2+d54359d",
35
- "@deephaven/react-hooks": "^0.13.2-beta.2+d54359d",
36
- "@deephaven/utils": "^0.13.2-beta.2+d54359d",
33
+ "@deephaven/icons": "^0.13.2-beta.6+8475f01",
34
+ "@deephaven/log": "^0.13.2-beta.6+8475f01",
35
+ "@deephaven/react-hooks": "^0.13.2-beta.6+8475f01",
36
+ "@deephaven/utils": "^0.13.2-beta.6+8475f01",
37
37
  "@fortawesome/fontawesome-svg-core": "1.2.36",
38
38
  "@fortawesome/react-fontawesome": "^0.1.15",
39
39
  "bootstrap": "4.6.1",
@@ -57,8 +57,8 @@
57
57
  "react-dom": "^17.x"
58
58
  },
59
59
  "devDependencies": {
60
- "@deephaven/mocks": "^0.13.2-beta.2+d54359d",
61
- "@deephaven/tsconfig": "^0.13.2-beta.2+d54359d"
60
+ "@deephaven/mocks": "^0.13.2-beta.6+8475f01",
61
+ "@deephaven/tsconfig": "^0.13.2-beta.6+8475f01"
62
62
  },
63
63
  "files": [
64
64
  "dist",
@@ -70,5 +70,5 @@
70
70
  "publishConfig": {
71
71
  "access": "public"
72
72
  },
73
- "gitHead": "d54359d08d9ef59e1e8f2c83b9c1e8bc189f748a"
73
+ "gitHead": "8475f0113564e25b0560050d57072d15fec54546"
74
74
  }