@deephaven/iris-grid 0.21.2-dhe-vite.5 → 0.22.0

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.
Files changed (45) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +1 -1
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +56 -58
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.js +8 -9
  7. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  8. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValue.js +5 -6
  10. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  11. package/dist/ColumnStatistics.js +12 -11
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/FilterInputField.d.ts.map +1 -1
  14. package/dist/FilterInputField.js +4 -3
  15. package/dist/FilterInputField.js.map +1 -1
  16. package/dist/IrisGrid.d.ts +1 -1
  17. package/dist/IrisGrid.d.ts.map +1 -1
  18. package/dist/IrisGrid.js +30 -22
  19. package/dist/IrisGrid.js.map +1 -1
  20. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  21. package/dist/IrisGridCopyHandler.js +4 -6
  22. package/dist/IrisGridCopyHandler.js.map +1 -1
  23. package/dist/IrisGridShortcuts.js +1 -1
  24. package/dist/IrisGridShortcuts.js.map +1 -1
  25. package/dist/sidebar/ChartBuilder.js +19 -19
  26. package/dist/sidebar/ChartBuilder.js.map +1 -1
  27. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  28. package/dist/sidebar/CustomColumnBuilder.js +14 -17
  29. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  30. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  31. package/dist/sidebar/CustomColumnInput.js +8 -8
  32. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  33. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  34. package/dist/sidebar/SelectDistinctBuilder.js +16 -15
  35. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  36. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  37. package/dist/sidebar/TableCsvExporter.js +4 -4
  38. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  39. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  40. package/dist/sidebar/VisibilityOrderingBuilder.js +48 -41
  41. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  42. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  43. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +7 -7
  44. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  45. package/package.json +17 -25
@@ -6,7 +6,7 @@ import React, { PureComponent } from 'react';
6
6
  import classNames from 'classnames';
7
7
  import { Draggable } from 'react-beautiful-dnd';
8
8
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
- import { Tooltip } from '@deephaven/components';
9
+ import { Button, Tooltip } from '@deephaven/components';
10
10
  import { vsTrash, vsGripper } from '@deephaven/icons';
11
11
  import InputEditor from "./InputEditor.js";
12
12
 
@@ -63,15 +63,15 @@ class CustomColumnInput extends PureComponent {
63
63
  onChange: event => {
64
64
  _onChange(eventKey, CustomColumnInput.INPUT_TYPE.NAME, event.target.value);
65
65
  }
66
- }), /*#__PURE__*/React.createElement("button", {
67
- type: "button",
68
- className: "btn btn-link btn-link-icon ml-1 px-2",
66
+ }), /*#__PURE__*/React.createElement(Button, {
67
+ kind: "ghost",
68
+ className: "ml-1 px-2",
69
69
  onClick: () => {
70
70
  onDeleteColumn(eventKey);
71
- }
72
- }, /*#__PURE__*/React.createElement(Tooltip, null, "Delete custom column"), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
73
- icon: vsTrash
74
- })), /*#__PURE__*/React.createElement("button", _extends({
71
+ },
72
+ icon: vsTrash,
73
+ tooltip: "Delete custom column"
74
+ }), /*#__PURE__*/React.createElement("button", _extends({
75
75
  type: "button",
76
76
  className: "btn btn-link btn-link-icon px-2 btn-drag-handle" // eslint-disable-next-line react/jsx-props-no-spreading
77
77
 
@@ -1 +1 @@
1
- {"version":3,"file":"CustomColumnInput.js","names":["React","PureComponent","classNames","Draggable","FontAwesomeIcon","Tooltip","vsTrash","vsGripper","InputEditor","CustomColumnInput","constructor","props","handleFormulaEditorContentChanged","bind","formulaValue","onChange","eventKey","undefined","replace","INPUT_TYPE","FORMULA","render","name","formula","onDeleteColumn","inputIndex","onTabInEditor","invalid","provided","snapshot","dragging","isDragging","innerRef","draggableProps","event","NAME","target","value","dragHandleProps","language"],"sources":["../../src/sidebar/CustomColumnInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from '@deephaven/components';\nimport { vsTrash, vsGripper } from '@deephaven/icons';\nimport InputEditor from './InputEditor';\nimport { CustomColumnKey } from './CustomColumnBuilder';\n\ninterface CustomColumnInputProps {\n eventKey: string;\n inputIndex: number;\n name: string;\n formula: string;\n onChange: (\n eventKey: string,\n inputType: CustomColumnKey,\n value: string\n ) => void;\n onDeleteColumn: (eventKey: string) => void;\n onTabInEditor: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\nclass CustomColumnInput extends PureComponent<\n CustomColumnInputProps,\n Record<string, never>\n> {\n static INPUT_TYPE = {\n NAME: 'name',\n FORMULA: 'formula',\n };\n\n static defaultProps = {\n name: '',\n inputIndex: 0,\n formula: '',\n onChange: (): void => undefined,\n onDeleteColumn: (): void => undefined,\n onTabInEditor: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: CustomColumnInputProps) {\n super(props);\n this.handleFormulaEditorContentChanged = this.handleFormulaEditorContentChanged.bind(\n this\n );\n }\n\n handleFormulaEditorContentChanged(formulaValue?: string): void {\n const { onChange, eventKey } = this.props;\n if (formulaValue !== undefined && formulaValue !== '') {\n formulaValue.replace(/(\\r\\n|\\n|\\r)/gm, ''); // remove line break\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.FORMULA as CustomColumnKey,\n formulaValue\n );\n }\n }\n\n render(): ReactElement {\n const {\n eventKey,\n name,\n formula,\n onChange,\n onDeleteColumn,\n inputIndex,\n onTabInEditor,\n invalid,\n } = this.props;\n return (\n <Draggable\n draggableId={eventKey}\n index={inputIndex}\n disableInteractiveElementBlocking\n >\n {(provided, snapshot) => (\n <div\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"custom-column-input-container\">\n <div className=\"d-flex flex-row pb-3 custom-column-name\">\n <input\n className={classNames('form-control custom-column-input', {\n 'is-invalid': invalid,\n })}\n placeholder=\"Column Name\"\n value={name}\n onChange={event => {\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.NAME as CustomColumnKey,\n event.target.value\n );\n }}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={() => {\n onDeleteColumn(eventKey);\n }}\n >\n <Tooltip>Delete custom column</Tooltip>\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag column to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n <InputEditor\n editorSettings={{ language: 'deephavenDb' }}\n editorIndex={inputIndex}\n value={formula}\n onContentChanged={this.handleFormulaEditorContentChanged}\n onTab={onTabInEditor}\n invalid={invalid}\n />\n </div>\n <hr />\n </div>\n )}\n </Draggable>\n );\n }\n}\n\nexport default CustomColumnInput;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CustomColumnInput.js","names":["React","PureComponent","classNames","Draggable","FontAwesomeIcon","Button","Tooltip","vsTrash","vsGripper","InputEditor","CustomColumnInput","constructor","props","handleFormulaEditorContentChanged","bind","formulaValue","onChange","eventKey","undefined","replace","INPUT_TYPE","FORMULA","render","name","formula","onDeleteColumn","inputIndex","onTabInEditor","invalid","provided","snapshot","dragging","isDragging","innerRef","draggableProps","event","NAME","target","value","dragHandleProps","language"],"sources":["../../src/sidebar/CustomColumnInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, Tooltip } from '@deephaven/components';\nimport { vsTrash, vsGripper } from '@deephaven/icons';\nimport InputEditor from './InputEditor';\nimport { CustomColumnKey } from './CustomColumnBuilder';\n\ninterface CustomColumnInputProps {\n eventKey: string;\n inputIndex: number;\n name: string;\n formula: string;\n onChange: (\n eventKey: string,\n inputType: CustomColumnKey,\n value: string\n ) => void;\n onDeleteColumn: (eventKey: string) => void;\n onTabInEditor: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\nclass CustomColumnInput extends PureComponent<\n CustomColumnInputProps,\n Record<string, never>\n> {\n static INPUT_TYPE = {\n NAME: 'name',\n FORMULA: 'formula',\n };\n\n static defaultProps = {\n name: '',\n inputIndex: 0,\n formula: '',\n onChange: (): void => undefined,\n onDeleteColumn: (): void => undefined,\n onTabInEditor: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: CustomColumnInputProps) {\n super(props);\n this.handleFormulaEditorContentChanged = this.handleFormulaEditorContentChanged.bind(\n this\n );\n }\n\n handleFormulaEditorContentChanged(formulaValue?: string): void {\n const { onChange, eventKey } = this.props;\n if (formulaValue !== undefined && formulaValue !== '') {\n formulaValue.replace(/(\\r\\n|\\n|\\r)/gm, ''); // remove line break\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.FORMULA as CustomColumnKey,\n formulaValue\n );\n }\n }\n\n render(): ReactElement {\n const {\n eventKey,\n name,\n formula,\n onChange,\n onDeleteColumn,\n inputIndex,\n onTabInEditor,\n invalid,\n } = this.props;\n return (\n <Draggable\n draggableId={eventKey}\n index={inputIndex}\n disableInteractiveElementBlocking\n >\n {(provided, snapshot) => (\n <div\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"custom-column-input-container\">\n <div className=\"d-flex flex-row pb-3 custom-column-name\">\n <input\n className={classNames('form-control custom-column-input', {\n 'is-invalid': invalid,\n })}\n placeholder=\"Column Name\"\n value={name}\n onChange={event => {\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.NAME as CustomColumnKey,\n event.target.value\n );\n }}\n />\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n onDeleteColumn(eventKey);\n }}\n icon={vsTrash}\n tooltip=\"Delete custom column\"\n />\n\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag column to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n <InputEditor\n editorSettings={{ language: 'deephavenDb' }}\n editorIndex={inputIndex}\n value={formula}\n onContentChanged={this.handleFormulaEditorContentChanged}\n onTab={onTabInEditor}\n invalid={invalid}\n />\n </div>\n <hr />\n </div>\n )}\n </Draggable>\n );\n }\n}\n\nexport default CustomColumnInput;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AACD,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,cAAM,qBAAsB,SAAQ,SAAS,CAC3C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;gBAEU,KAAK,EAAE,0BAA0B;IAgB7C,kBAAkB,CAChB,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,0BAA0B,GACpC,IAAI;IAgBP,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS3C,qBAAqB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAUP,YAAY,IAAI,YAAY,EAAE;IAwC9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAuC7B;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AACD,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,cAAM,qBAAsB,SAAQ,SAAS,CAC3C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;gBAEU,KAAK,EAAE,0BAA0B;IAgB7C,kBAAkB,CAChB,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,0BAA0B,GACpC,IAAI;IAgBP,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS3C,qBAAqB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAUP,YAAY,IAAI,YAAY,EAAE;IAuC9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAuC7B;AAED,eAAe,qBAAqB,CAAC"}
@@ -4,7 +4,7 @@ import React, { Component } from 'react';
4
4
  import deepEqual from 'deep-equal';
5
5
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
6
  import { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';
7
- import { Tooltip } from '@deephaven/components';
7
+ import { Button } from '@deephaven/components';
8
8
  import Log from '@deephaven/log';
9
9
  import "./SelectDistinctBuilder.css";
10
10
  var log = Log.module('SelectDistinctBuilder');
@@ -113,16 +113,18 @@ class SelectDistinctBuilder extends Component {
113
113
  onChange: event => this.handleDropdownChanged(index, event)
114
114
  }, /*#__PURE__*/React.createElement("option", {
115
115
  value: ""
116
- }, "Select a column"), options), (inputs.length > 1 || value !== '') && /*#__PURE__*/React.createElement("button", {
117
- type: "button",
118
- className: "btn btn-link btn-link-icon ml-1 px-2",
116
+ }, "Select a column"), options), (inputs.length > 1 || value !== '') && /*#__PURE__*/React.createElement(Button, {
117
+ kind: "ghost",
118
+ className: "ml-1 px-2",
119
119
  onClick: () => {
120
120
  this.handleDeleteColumn(index);
121
- }
122
- }, /*#__PURE__*/React.createElement(Tooltip, null, "Delete column"), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
123
- icon: vsTrash,
124
- transform: "grow-3"
125
- })))
121
+ },
122
+ icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
123
+ icon: vsTrash,
124
+ transform: "grow-3"
125
+ }),
126
+ tooltip: "Delete column"
127
+ }))
126
128
  );
127
129
  });
128
130
  }
@@ -140,14 +142,13 @@ class SelectDistinctBuilder extends Component {
140
142
  className: "select-distinct-title"
141
143
  }, "Display Unique Values From"), this.renderInputs(), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
142
144
  className: "pt-1 px-3"
143
- }, /*#__PURE__*/React.createElement("button", {
144
- type: "button",
145
- className: "btn btn-link btn-add-column",
145
+ }, /*#__PURE__*/React.createElement(Button, {
146
+ kind: "ghost",
147
+ className: "btn-add-column",
146
148
  onClick: this.handleAddColumnClick,
147
- disabled: disableAddButton
148
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
149
+ disabled: disableAddButton,
149
150
  icon: dhNewCircleLargeFilled
150
- }), "Add Additional Column")), /*#__PURE__*/React.createElement("div", {
151
+ }, "Add Additional Column")), /*#__PURE__*/React.createElement("div", {
151
152
  className: "select-distinct-builder-footer"
152
153
  }, /*#__PURE__*/React.createElement("div", {
153
154
  className: "select-distinct-builder-hint"
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Tooltip","Log","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: ColumnName[];\n onChange: (newStr: string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: string[];\n columns: Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(\n index: number,\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n >\n <Tooltip>Delete column</Tooltip>\n <FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />\n </button>\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Additional Column\n </button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Modifies a table to show unique value from a column, same as{' '}\n <span className=\"inline-code-snippet\">\n selectDistinct(&quot;Column&quot;)\n </span>\n . Filters will be reset and the resulting table will contain only\n the selected columns above.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Button","Log","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: ColumnName[];\n onChange: (newStr: string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: string[];\n columns: Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(\n index: number,\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n icon={<FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />}\n tooltip=\"Delete column\"\n />\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n icon={dhNewCircleLargeFilled}\n >\n Add Additional Column\n </Button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Modifies a table to show unique value from a column, same as{' '}\n <span className=\"inline-code-snippet\">\n selectDistinct(&quot;Column&quot;)\n </span>\n . Filters will be reset and the resulting table will contain only\n the selected columns above.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAW,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,yBAAyB,CAAC;AAEjC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0BAA0B,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,EAClB,iBAAiB,EAAE,yBAAyB,EAC5C,cAAc,EAAE,SAAS,EAAE,KACxB,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,EAAE,CAAC;CAC7B;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,oBAAoB,SAAuB;IAElD,MAAM,CAAC,eAAe;;;;;MAKpB;IAEF,MAAM,CAAC,gBAAgB;;;;MAIrB;IAEF,MAAM,CAAC,uBAAuB;;;MAG5B;IAEF,MAAM,CAAC,qBAAqB,SAAO;IAEnC,MAAM,CAAC,YAAY;+BACI,IAAI;;;;;;MAMzB;IAEF,MAAM,CAAC,aAAa,IAAI,MAAM;gBAOlB,KAAK,EAAE,qBAAqB;IA2BxC,iBAAiB,IAAI,SAAS,EAAE;IAqDhC,kBAAkB,IAAI,IAAI;IAIpB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC1C,2BAA2B,CACzB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,qCAAqC,CACnC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAIP,mCAAmC,CACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,mBAAmB,IAAI,OAAO;IAoC9B,MAAM,IAAI,YAAY;CA6LvB;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AASvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAW,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,yBAAyB,CAAC;AAEjC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0BAA0B,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,EAClB,iBAAiB,EAAE,yBAAyB,EAC5C,cAAc,EAAE,SAAS,EAAE,KACxB,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,EAAE,CAAC;CAC7B;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,oBAAoB,SAAuB;IAElD,MAAM,CAAC,eAAe;;;;;MAKpB;IAEF,MAAM,CAAC,gBAAgB;;;;MAIrB;IAEF,MAAM,CAAC,uBAAuB;;;MAG5B;IAEF,MAAM,CAAC,qBAAqB,SAAO;IAEnC,MAAM,CAAC,YAAY;+BACI,IAAI;;;;;;MAMzB;IAEF,MAAM,CAAC,aAAa,IAAI,MAAM;gBAOlB,KAAK,EAAE,qBAAqB;IA2BxC,iBAAiB,IAAI,SAAS,EAAE;IAqDhC,kBAAkB,IAAI,IAAI;IAIpB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC1C,2BAA2B,CACzB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,qCAAqC,CACnC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAIP,mCAAmC,CACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,mBAAmB,IAAI,OAAO;IAoC9B,MAAM,IAAI,YAAY;CA6LvB;AAED,eAAe,gBAAgB,CAAC"}
@@ -7,7 +7,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
7
7
  import React, { Component } from 'react';
8
8
  import ClassNames from 'classnames';
9
9
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
- import { LoadingSpinner, RadioGroup, RadioItem } from '@deephaven/components';
10
+ import { Button, LoadingSpinner, RadioGroup, RadioItem } from '@deephaven/components';
11
11
  import { GridRange } from '@deephaven/grid';
12
12
  import { vsWarning } from '@deephaven/icons';
13
13
  import dh from '@deephaven/jsapi-shim';
@@ -313,10 +313,10 @@ class TableCsvExporter extends Component {
313
313
  style: {
314
314
  width: "".concat(tableDownloadProgress, "%")
315
315
  }
316
- }))), /*#__PURE__*/React.createElement("button", {
317
- type: "button",
316
+ }))), /*#__PURE__*/React.createElement(Button, {
317
+ kind: "primary",
318
318
  "data-testid": "btn-csv-exporter-download",
319
- className: ClassNames('btn btn-primary btn-downloading', {
319
+ className: ClassNames('btn-downloading', {
320
320
  'btn-spinner btn-cancelable': isDownloading
321
321
  }),
322
322
  onClick: this.handleDownloadClick
@@ -1 +1 @@
1
- {"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","LoadingSpinner","RadioGroup","RadioItem","GridRange","vsWarning","dh","TimeUtils","shortid","Log","log","module","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadOptionChanged","handleCustomizedDownloadOptionChanged","handleCustomizedDownloadRowsChanged","name","state","fileName","downloadOption","DOWNLOAD_OPTIONS","ALL_ROWS","customizedDownloadOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","snapshotRanges","push","SELECTED_ROWS","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","event","target","value","parseInt","length","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, RadioGroup, RadioItem } from '@deephaven/components';\nimport { GridRange } from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport dh, { Table, TableViewportSubscription } from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[]\n ) => void;\n onCancel: () => void;\n selectedRanges: GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadOption: string;\n customizedDownloadOption: string;\n customizedDownloadRows: number;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadOptionChanged = this.handleDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadOptionChanged = this.handleCustomizedDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadOption: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS,\n customizedDownloadOption: TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadOption) {\n case TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(null, 0, null, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS:\n snapshotRanges = [...selectedRanges].sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n });\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n null,\n 0,\n null,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n null,\n Math.max(0, rowCount - customizedDownloadRows),\n null,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(fileName, frozenTable, tableSubscription, snapshotRanges);\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadOption: event.target.value });\n }\n\n handleCustomizedDownloadOptionChanged(\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n this.setState({ customizedDownloadOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadOption, customizedDownloadRows } = this.state;\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadOptionChanged}\n value={downloadOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadOption:\n TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n value={customizedDownloadOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <button\n type=\"button\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn btn-primary btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","LoadingSpinner","RadioGroup","RadioItem","GridRange","vsWarning","dh","TimeUtils","shortid","Log","log","module","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadOptionChanged","handleCustomizedDownloadOptionChanged","handleCustomizedDownloadRowsChanged","name","state","fileName","downloadOption","DOWNLOAD_OPTIONS","ALL_ROWS","customizedDownloadOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","snapshotRanges","push","SELECTED_ROWS","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","event","target","value","parseInt","length","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n} from '@deephaven/components';\nimport { GridRange } from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport dh, { Table, TableViewportSubscription } from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[]\n ) => void;\n onCancel: () => void;\n selectedRanges: GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadOption: string;\n customizedDownloadOption: string;\n customizedDownloadRows: number;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadOptionChanged = this.handleDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadOptionChanged = this.handleCustomizedDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadOption: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS,\n customizedDownloadOption: TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadOption) {\n case TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(null, 0, null, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS:\n snapshotRanges = [...selectedRanges].sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n });\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n null,\n 0,\n null,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n null,\n Math.max(0, rowCount - customizedDownloadRows),\n null,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(fileName, frozenTable, tableSubscription, snapshotRanges);\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadOption: event.target.value });\n }\n\n handleCustomizedDownloadOptionChanged(\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n this.setState({ customizedDownloadOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadOption, customizedDownloadRows } = this.state;\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadOptionChanged}\n value={downloadOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadOption:\n TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n value={customizedDownloadOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import { dhEye, dhEyeSlash, dhSortAlphaDown, dhSortAlphaUp, dhArrowToTop, dhArro
12
12
  import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
13
13
  import memoize from 'memoizee';
14
14
  import debounce from 'lodash.debounce';
15
- import { SearchInput, Tooltip } from '@deephaven/components';
15
+ import { Button, SearchInput, Tooltip } from '@deephaven/components';
16
16
  import Log from '@deephaven/log';
17
17
  import "./VisibilityOrderingBuilder.css";
18
18
  var log = Log.module('VisibilityOrderingBuilder');
@@ -65,9 +65,9 @@ class VisibilityOrderingBuilder extends Component {
65
65
  className: "visibility-ordering-list-item",
66
66
  ref: provided.innerRef // eslint-disable-next-line react/jsx-props-no-spreading
67
67
 
68
- }, provided.draggableProps), /*#__PURE__*/React.createElement("button", {
69
- type: "button",
70
- className: "visibility btn btn-link btn-link-icon",
68
+ }, provided.draggableProps), /*#__PURE__*/React.createElement(Button, {
69
+ kind: "ghost",
70
+ className: "btn-link-icon visibility",
71
71
  onMouseDown: event => {
72
72
  this.handleVisibilityDraggingStart(modelIndex, isHidden ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE, event);
73
73
  },
@@ -87,7 +87,8 @@ class VisibilityOrderingBuilder extends Component {
87
87
  event.stopPropagation();
88
88
  event.preventDefault();
89
89
  }
90
- }
90
+ },
91
+ tooltip: isHidden ? 'Show' : 'Hide'
91
92
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
92
93
  icon: isHidden ? dhEyeSlash : dhEye
93
94
  })), /*#__PURE__*/React.createElement("div", _extends({
@@ -693,75 +694,81 @@ class VisibilityOrderingBuilder extends Component {
693
694
  }
694
695
  }, /*#__PURE__*/React.createElement("div", {
695
696
  className: "top-menu"
696
- }, /*#__PURE__*/React.createElement("button", {
697
- type: "button",
698
- className: "btn btn-link",
697
+ }, /*#__PURE__*/React.createElement(Button, {
698
+ kind: "ghost",
699
699
  onClick: () => {
700
700
  onColumnVisibilityChanged(columnsToToggle, toggleToShow ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE);
701
- }
702
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
703
- icon: toggleToShow ? dhEyeSlash : dhEye
704
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Toggle column visibility"), noSelection ? 'Toggle All' : selectedToggleText), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("button", {
705
- type: "button",
706
- className: "btn btn-link text-muted",
701
+ },
702
+ icon: toggleToShow ? dhEyeSlash : dhEye,
703
+ tooltip: "Toggle column visibility"
704
+ }, noSelection ? 'Toggle All' : selectedToggleText), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
705
+ kind: "ghost",
706
+ className: "text-muted",
707
707
  onClick: () => {
708
708
  this.resetVisibilityOrdering();
709
- }
710
- }, "Reset", /*#__PURE__*/React.createElement(Tooltip, null, "Reset to default")), /*#__PURE__*/React.createElement("button", {
711
- type: "button",
712
- className: "btn btn-link btn-link-icon",
709
+ },
710
+ tooltip: "Reset to default"
711
+ }, "Reset"), /*#__PURE__*/React.createElement(Button, {
712
+ kind: "ghost",
713
+ className: "btn-link-icon",
713
714
  onClick: () => {
714
715
  this.handleSortColumns(VisibilityOrderingBuilder.SORTING_OPTIONS.ASC);
715
- }
716
+ },
717
+ tooltip: "Sort ascending"
716
718
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
717
719
  icon: dhSortAlphaDown
718
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort ascending")), /*#__PURE__*/React.createElement("button", {
719
- type: "button",
720
- className: "btn btn-link btn-link-icon",
720
+ })), /*#__PURE__*/React.createElement(Button, {
721
+ kind: "ghost",
722
+ className: "btn-link-icon",
721
723
  onClick: () => {
722
724
  this.handleSortColumns(VisibilityOrderingBuilder.SORTING_OPTIONS.DSC);
723
- }
725
+ },
726
+ tooltip: "Sort descending"
724
727
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
725
728
  icon: dhSortAlphaUp
726
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort descending")), /*#__PURE__*/React.createElement("span", {
729
+ })), /*#__PURE__*/React.createElement("span", {
727
730
  className: "vertical-divider"
728
- }), /*#__PURE__*/React.createElement("button", {
729
- type: "button",
730
- className: "btn btn-link btn-link-icon",
731
+ }), /*#__PURE__*/React.createElement(Button, {
732
+ kind: "ghost",
733
+ className: "btn-link-icon",
731
734
  onClick: () => {
732
735
  this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.UP);
733
736
  },
734
- disabled: noSelection
737
+ disabled: noSelection,
738
+ tooltip: "Move selection up"
735
739
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
736
740
  icon: vsChevronUp
737
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Move selection up")), /*#__PURE__*/React.createElement("button", {
738
- type: "button",
739
- className: "btn btn-link btn-link-icon",
741
+ })), /*#__PURE__*/React.createElement(Button, {
742
+ kind: "ghost",
743
+ className: "btn-link-icon",
740
744
  onClick: () => {
741
745
  this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN);
742
746
  },
743
- disabled: noSelection
747
+ disabled: noSelection,
748
+ tooltip: "Move selection down"
744
749
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
745
750
  icon: vsChevronDown
746
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Move selection down")), /*#__PURE__*/React.createElement("button", {
747
- type: "button",
748
- className: "btn btn-link btn-link-icon",
751
+ })), /*#__PURE__*/React.createElement(Button, {
752
+ kind: "ghost",
753
+ className: "btn-link-icon",
749
754
  onClick: () => {
750
755
  this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.TOP);
751
756
  },
752
- disabled: noSelection
757
+ disabled: noSelection,
758
+ tooltip: "Move selection to top"
753
759
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
754
760
  icon: dhArrowToTop
755
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Move selection to top")), /*#__PURE__*/React.createElement("button", {
756
- type: "button",
757
- className: "btn btn-link btn-link-icon",
761
+ })), /*#__PURE__*/React.createElement(Button, {
762
+ kind: "ghost",
763
+ className: "btn-link-icon",
758
764
  onClick: () => {
759
765
  this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM);
760
766
  },
761
- disabled: noSelection
767
+ disabled: noSelection,
768
+ tooltip: "Move selection to bottom"
762
769
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
763
770
  icon: dhArrowToBottom
764
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Move selection to bottom")))), /*#__PURE__*/React.createElement("div", {
771
+ })))), /*#__PURE__*/React.createElement("div", {
765
772
  className: "top-menu"
766
773
  }, /*#__PURE__*/React.createElement(SearchInput, {
767
774
  className: "w-100",