@deephaven/dashboard-core-plugins 0.15.5-beta.3 → 0.15.5-beta.4

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 (182) hide show
  1. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  2. package/dist/ChartBuilderPlugin.js +2 -1
  3. package/dist/ChartBuilderPlugin.js.map +1 -1
  4. package/dist/FilterPlugin.js +1 -1
  5. package/dist/FilterPlugin.js.map +1 -1
  6. package/dist/controls/ControlType.d.ts +1 -1
  7. package/dist/controls/ControlType.d.ts.map +1 -1
  8. package/dist/controls/ControlType.js.map +1 -1
  9. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
  10. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  11. package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
  12. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  13. package/dist/controls/input-filter/InputFilter.d.ts +46 -46
  14. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  15. package/dist/controls/input-filter/InputFilter.js +32 -39
  16. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  17. package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
  18. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
  19. package/dist/controls/markdown/MarkdownContainer.js +5 -8
  20. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  21. package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
  22. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  23. package/dist/controls/markdown/MarkdownEditor.js +5 -8
  24. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  25. package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
  26. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
  27. package/dist/controls/markdown/MarkdownStartPage.js +19 -23
  28. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  29. package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
  30. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
  31. package/dist/controls/markdown/MarkdownUtils.js +2 -2
  32. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  33. package/dist/events/ChartEvent.d.ts +1 -1
  34. package/dist/events/ChartEvent.d.ts.map +1 -1
  35. package/dist/events/ChartEvent.js.map +1 -1
  36. package/dist/events/ConsoleEvent.d.ts +1 -1
  37. package/dist/events/ConsoleEvent.d.ts.map +1 -1
  38. package/dist/events/ConsoleEvent.js.map +1 -1
  39. package/dist/events/InputFilterEvent.d.ts +1 -1
  40. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  41. package/dist/events/InputFilterEvent.js.map +1 -1
  42. package/dist/events/IrisGridEvent.d.ts +1 -1
  43. package/dist/events/IrisGridEvent.d.ts.map +1 -1
  44. package/dist/events/IrisGridEvent.js.map +1 -1
  45. package/dist/events/NotebookEvent.d.ts +1 -1
  46. package/dist/events/NotebookEvent.d.ts.map +1 -1
  47. package/dist/events/NotebookEvent.js.map +1 -1
  48. package/dist/events/PQEvent.d.ts +1 -1
  49. package/dist/events/PQEvent.d.ts.map +1 -1
  50. package/dist/events/PQEvent.js.map +1 -1
  51. package/dist/events/PandasEvent.d.ts +1 -1
  52. package/dist/events/PandasEvent.d.ts.map +1 -1
  53. package/dist/events/PandasEvent.js.map +1 -1
  54. package/dist/events/TabEvent.d.ts +1 -1
  55. package/dist/events/TabEvent.d.ts.map +1 -1
  56. package/dist/events/TabEvent.js.map +1 -1
  57. package/dist/events/index.d.ts +8 -8
  58. package/dist/events/index.d.ts.map +1 -1
  59. package/dist/events/index.js.map +1 -1
  60. package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
  61. package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
  62. package/dist/linker/ColumnSelectionValidator.js +2 -0
  63. package/dist/linker/ColumnSelectionValidator.js.map +1 -0
  64. package/dist/linker/Linker.d.ts +11 -11
  65. package/dist/linker/Linker.js +1 -1
  66. package/dist/linker/Linker.js.map +1 -1
  67. package/dist/linker/LinkerUtils.d.ts +3 -3
  68. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  69. package/dist/linker/LinkerUtils.js.map +1 -1
  70. package/dist/linker/ToolType.d.ts +1 -1
  71. package/dist/linker/ToolType.d.ts.map +1 -1
  72. package/dist/linker/ToolType.js.map +1 -1
  73. package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
  74. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  75. package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
  76. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  77. package/dist/panels/ChartFilterOverlay.d.ts +27 -21
  78. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  79. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  80. package/dist/panels/ChartPanel.d.ts +149 -152
  81. package/dist/panels/ChartPanel.d.ts.map +1 -1
  82. package/dist/panels/ChartPanel.js +65 -73
  83. package/dist/panels/ChartPanel.js.map +1 -1
  84. package/dist/panels/CommandHistoryPanel.d.ts +41 -56
  85. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  86. package/dist/panels/CommandHistoryPanel.js +13 -35
  87. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  88. package/dist/panels/ConsolePanel.d.ts +63 -73
  89. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  90. package/dist/panels/ConsolePanel.js +67 -83
  91. package/dist/panels/ConsolePanel.js.map +1 -1
  92. package/dist/panels/DropdownFilterPanel.d.ts +110 -106
  93. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  94. package/dist/panels/DropdownFilterPanel.js +60 -62
  95. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  96. package/dist/panels/FileExplorerPanel.d.ts +5 -7
  97. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  98. package/dist/panels/FileExplorerPanel.js.map +1 -1
  99. package/dist/panels/FilterSetManager.d.ts +3 -1
  100. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  101. package/dist/panels/FilterSetManager.js.map +1 -1
  102. package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
  103. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  104. package/dist/panels/FilterSetManagerPanel.js +58 -36
  105. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  106. package/dist/panels/InputFilterPanel.d.ts +50 -51
  107. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  108. package/dist/panels/InputFilterPanel.js +35 -34
  109. package/dist/panels/InputFilterPanel.js.map +1 -1
  110. package/dist/panels/IrisGridPanel.d.ts +191 -178
  111. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  112. package/dist/panels/IrisGridPanel.js +150 -179
  113. package/dist/panels/IrisGridPanel.js.map +1 -1
  114. package/dist/panels/LogPanel.d.ts +29 -45
  115. package/dist/panels/LogPanel.d.ts.map +1 -1
  116. package/dist/panels/LogPanel.js +9 -11
  117. package/dist/panels/LogPanel.js.map +1 -1
  118. package/dist/panels/MarkdownNotebook.d.ts +34 -34
  119. package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
  120. package/dist/panels/MarkdownNotebook.js +21 -18
  121. package/dist/panels/MarkdownNotebook.js.map +1 -1
  122. package/dist/panels/MarkdownPanel.d.ts +41 -47
  123. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  124. package/dist/panels/MarkdownPanel.js +17 -19
  125. package/dist/panels/MarkdownPanel.js.map +1 -1
  126. package/dist/panels/NotebookPanel.d.ts +137 -115
  127. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  128. package/dist/panels/NotebookPanel.js +95 -68
  129. package/dist/panels/NotebookPanel.js.map +1 -1
  130. package/dist/panels/PandasPanel.d.ts +20 -17
  131. package/dist/panels/PandasPanel.d.ts.map +1 -1
  132. package/dist/panels/PandasPanel.js +17 -13
  133. package/dist/panels/PandasPanel.js.map +1 -1
  134. package/dist/panels/Panel.d.ts +87 -123
  135. package/dist/panels/Panel.d.ts.map +1 -1
  136. package/dist/panels/Panel.js +29 -54
  137. package/dist/panels/Panel.js.map +1 -1
  138. package/dist/panels/PanelContextMenu.d.ts +16 -31
  139. package/dist/panels/PanelContextMenu.d.ts.map +1 -1
  140. package/dist/panels/PanelContextMenu.js +12 -15
  141. package/dist/panels/PanelContextMenu.js.map +1 -1
  142. package/dist/panels/RenameDialog.d.ts +26 -28
  143. package/dist/panels/RenameDialog.d.ts.map +1 -1
  144. package/dist/panels/RenameDialog.js +15 -19
  145. package/dist/panels/RenameDialog.js.map +1 -1
  146. package/dist/panels/WidgetPanel.d.ts +72 -106
  147. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  148. package/dist/panels/WidgetPanel.js +17 -47
  149. package/dist/panels/WidgetPanel.js.map +1 -1
  150. package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
  151. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  152. package/dist/panels/WidgetPanelTooltip.js +1 -1
  153. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  154. package/dist/prop-types/CommonPropTypes.d.ts +4 -4
  155. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
  156. package/dist/prop-types/CommonPropTypes.js +1 -1
  157. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  158. package/dist/prop-types/UIPropTypes.d.ts +2 -7
  159. package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
  160. package/dist/prop-types/UIPropTypes.js +0 -7
  161. package/dist/prop-types/UIPropTypes.js.map +1 -1
  162. package/dist/prop-types/index.d.ts +2 -2
  163. package/dist/prop-types/index.d.ts.map +1 -1
  164. package/dist/prop-types/index.js.map +1 -1
  165. package/dist/redux/actionTypes.d.ts +1 -1
  166. package/dist/redux/actionTypes.d.ts.map +1 -1
  167. package/dist/redux/actionTypes.js.map +1 -1
  168. package/dist/redux/actions.d.ts +63 -8
  169. package/dist/redux/actions.d.ts.map +1 -1
  170. package/dist/redux/actions.js +17 -17
  171. package/dist/redux/actions.js.map +1 -1
  172. package/dist/redux/reducers/index.d.ts +3 -4
  173. package/dist/redux/reducers/index.d.ts.map +1 -1
  174. package/dist/redux/reducers/index.js.map +1 -1
  175. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  176. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
  177. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  178. package/dist/redux/selectors.d.ts +63 -9
  179. package/dist/redux/selectors.d.ts.map +1 -1
  180. package/dist/redux/selectors.js +24 -24
  181. package/dist/redux/selectors.js.map +1 -1
  182. package/package.json +20 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/dropdown-filter/DropdownFilter.jsx"],"names":["React","Component","PropTypes","FontAwesomeIcon","Button","CardFlip","SocketedButton","vsGear","APIPropTypes","TableUtils","memoizee","memoize","debounce","Log","UIPropTypes","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","source","columns","filter","type","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","forEach","columnItem","index","name","getItemLabel","values","value","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","sendUpdate","dropdownRef","createRef","column","isValueShown","state","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","componentWillUnmount","flush","event","target","debug2","setState","allColumns","getCompatibleColumns","key","preventDefault","stopPropagation","valueIndex","parseInt","error","showSettings","current","handleMouseEnter","onSourceMouseEnter","handleMouseLeave","onSourceMouseLeave","focus","clearFilter","setFilterState","onChange","render","disableLinking","isLinkerActive","onColumnSelected","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","SOURCE_BUTTON_CLASS_NAME","propTypes","Column","arrayOf","isRequired","func","bool","string","LinkPoint","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CardFlip, SocketedButton } from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { UIPropTypes } from '../../prop-types';\nimport './DropdownFilter.scss';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass DropdownFilter extends Component {\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getCompatibleColumns = memoize((source, columns) =>\n source\n ? columns.filter(({ type }) =>\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize((columns, selectedColumn) => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n });\n\n getSelectedOptionIndex = memoize((values, value) => values.indexOf(value));\n\n getValueOptions = memoize(values => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { value } = event.target;\n log.debug2('handleColumnChange', value);\n if (value < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[value],\n });\n }\n\n handleDropdownKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(event) {\n const { value: valueIndex } = event.target;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value = '';\n const { values } = this.props;\n if (index === -1) {\n log.debug2('Selected default item');\n } else if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.error('Invalid index', index, values);\n return;\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave() {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event) {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleMouseEnter() {\n const { onSourceMouseEnter } = this.props;\n onSourceMouseEnter();\n }\n\n handleMouseLeave() {\n const { onSourceMouseLeave } = this.props;\n onSourceMouseLeave();\n }\n\n sourceUpdated() {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput() {\n if (this.dropdownRef.current !== null) {\n this.dropdownRef.current.focus();\n }\n }\n\n resetValue() {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter() {\n this.resetValue();\n }\n\n setFilterState({ name, type, value, isValueShown }) {\n const column = name != null && type != null ? { name, type } : null;\n this.setState({ column, value, isValueShown });\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const {\n column,\n disableCancel,\n isValueShown,\n selectedColumn,\n value,\n } = this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label>Source Column</label>\n <SocketedButton\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label>Filter Column</label>\n <select\n value={selectedIndex}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive ? 'Cancel disabled while linker open' : null\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive ? 'Save disabled while linker open' : null\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <select\n className=\"custom-select\"\n value={selectedOption}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyPress={this.handleDropdownKeyPress}\n >\n {valueOptions}\n </select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nDropdownFilter.propTypes = {\n column: APIPropTypes.Column,\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n onSourceMouseEnter: PropTypes.func,\n onSourceMouseLeave: PropTypes.func,\n disableLinking: PropTypes.bool,\n isLinkerActive: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isValueShown: PropTypes.bool,\n settingsError: PropTypes.string,\n source: UIPropTypes.LinkPoint,\n value: PropTypes.string,\n values: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func.isRequired,\n onColumnSelected: PropTypes.func,\n};\n\nDropdownFilter.defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: () => {},\n onSourceMouseEnter: () => {},\n onSourceMouseLeave: () => {},\n};\n\nexport default DropdownFilter;\n"],"file":"DropdownFilter.js"}
1
+ {"version":3,"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":["React","Component","FontAwesomeIcon","Button","CardFlip","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","Log","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","source","columns","filter","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","forEach","columnItem","index","name","getItemLabel","values","value","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","event","target","debug2","parseInt","setState","allColumns","getCompatibleColumns","key","preventDefault","stopPropagation","valueIndex","error","showSettings","current","handleMouseEnter","onSourceMouseEnter","handleMouseLeave","onSourceMouseLeave","focus","clearFilter","setFilterState","render","disableLinking","isLinkerActive","onColumnSelected","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","SOURCE_BUTTON_CLASS_NAME"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CardFlip, SocketedButton } from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type?: string;\n}\ninterface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string;\n values: (string | null)[];\n onChange: (change: {\n column: Partial<Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n}\n\nclass DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: DropdownFilterColumn[]) =>\n source\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: (string | null)[], value: string | null) => values.indexOf(value)\n );\n\n getValueOptions = memoize((values: (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: valueIndex } = event.target;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index === -1) {\n log.debug2('Selected default item');\n } else if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.error('Invalid index', index, values);\n return;\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleMouseEnter(): void {\n const { onSourceMouseEnter } = this.props;\n onSourceMouseEnter();\n }\n\n handleMouseLeave(): void {\n const { onSourceMouseLeave } = this.props;\n onSourceMouseLeave();\n }\n\n sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n if (this.dropdownRef.current !== null) {\n this.dropdownRef.current.focus();\n }\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name: string;\n type: string;\n value: string;\n isValueShown: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : null;\n this.setState({ column, value, isValueShown });\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const {\n column,\n disableCancel,\n isValueShown,\n selectedColumn,\n value,\n } = this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label>Source Column</label>\n <SocketedButton\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label>Filter Column</label>\n <select\n value={selectedIndex}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <select\n className=\"custom-select\"\n value={selectedOption}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyPress={this.handleDropdownKeyPress}\n >\n {valueOptions}\n </select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"file":"DropdownFilter.js"}
@@ -1,54 +1,54 @@
1
- export default InputFilter;
2
- declare class InputFilter extends React.Component<any, any, any> {
1
+ import { ChangeEvent, Component, RefObject, MouseEvent, KeyboardEvent, ReactElement } from 'react';
2
+ import { Column } from '@deephaven/jsapi-shim';
3
+ import memoizee from 'memoizee';
4
+ import './InputFilter.scss';
5
+ export declare type InputFilterColumn = Pick<Column, 'type' | 'name'>;
6
+ interface InputFilterProps {
7
+ columns: InputFilterColumn[];
8
+ column: InputFilterColumn;
9
+ isValueShown: boolean;
10
+ value: string;
11
+ onChange: (change: {
12
+ column?: InputFilterColumn;
13
+ isValueShown?: boolean;
14
+ value?: string;
15
+ }) => void;
16
+ }
17
+ export interface InputFilterState {
18
+ column?: InputFilterColumn;
19
+ selectedColumn?: InputFilterColumn;
20
+ value?: string;
21
+ isValueShown?: boolean;
22
+ }
23
+ declare class InputFilter extends Component<InputFilterProps, InputFilterState> {
3
24
  static PLACEHOLDER: string;
4
- constructor(props: any);
5
- handleColumnChange(event: any): void;
6
- handleInputKeyPress(event: any): void;
7
- handleValueChange(event: any): void;
25
+ static defaultProps: {
26
+ column: null;
27
+ isValueShown: boolean;
28
+ value: null;
29
+ };
30
+ constructor(props: InputFilterProps);
31
+ componentDidUpdate(prevProps: InputFilterProps, prevState: InputFilterState): void;
32
+ componentWillUnmount(): void;
33
+ inputRef: RefObject<HTMLInputElement>;
34
+ getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
35
+ handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void;
36
+ handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void;
37
+ handleValueChange(event: ChangeEvent<HTMLInputElement>): void;
8
38
  handleSettingsCancel(): void;
9
- handleSettingsClick(event: any): void;
10
39
  handleSettingsSave(): void;
11
- handleBackgroundClick(event: any): void;
12
- sendUpdate(): void;
13
- inputRef: React.RefObject<any>;
14
- getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
40
+ handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void;
41
+ handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void;
15
42
  focusInput(): void;
16
43
  clearFilter(): void;
17
- setFilterState({ name, type, value, isValueShown }: {
18
- name: any;
19
- type: any;
20
- value: any;
21
- isValueShown: any;
44
+ setFilterState({ name, type, value, isValueShown, }: {
45
+ name?: string;
46
+ type?: string;
47
+ value?: string;
48
+ isValueShown?: boolean;
22
49
  }): void;
50
+ sendUpdate: import("lodash").DebouncedFunc<() => void>;
51
+ render(): ReactElement;
23
52
  }
24
- declare namespace InputFilter {
25
- namespace propTypes {
26
- const columns: PropTypes.Validator<(PropTypes.InferProps<{
27
- name: PropTypes.Validator<string>;
28
- type: PropTypes.Validator<string>;
29
- description: PropTypes.Requireable<string>;
30
- constituentType: PropTypes.Requireable<string>;
31
- }> | null | undefined)[]>;
32
- const column: PropTypes.Requireable<PropTypes.InferProps<{
33
- name: PropTypes.Validator<string>;
34
- type: PropTypes.Validator<string>;
35
- description: PropTypes.Requireable<string>;
36
- constituentType: PropTypes.Requireable<string>;
37
- }>>;
38
- const isValueShown: PropTypes.Requireable<boolean>;
39
- const value: PropTypes.Requireable<string>;
40
- const onChange: PropTypes.Validator<(...args: any[]) => any>;
41
- }
42
- namespace defaultProps {
43
- const column_1: null;
44
- export { column_1 as column };
45
- const isValueShown_1: boolean;
46
- export { isValueShown_1 as isValueShown };
47
- const value_1: null;
48
- export { value_1 as value };
49
- }
50
- }
51
- import React from "react";
52
- import memoizee from "memoizee";
53
- import PropTypes from "prop-types";
53
+ export default InputFilter;
54
54
  //# sourceMappingURL=InputFilter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":[],"mappings":";AAkBA;IACE,2BAAsC;IAEtC,wBAqBC;IA0CD,qCAQC;IAED,sCAYC;IAED,oCAMC;IAED,6BAGC;IAOD,sCAIC;IATD,2BAGC;IAQD,wCAKC;IAsBD,mBAIC;IAlIC,+BAAiC;IAqCnC,yGAYG;IAyDH,mBAKC;IAED,oBAEC;IAED;;;;;aAOC;CAsHF"}
1
+ {"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.tsx"],"names":[],"mappings":"AAIA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,oBAAoB,CAAC;AAK5B,oBAAY,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE9D,UAAU,gBAAgB;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,WAAW,SAAoB;IAEtC,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,gBAAgB;IAsBnC,kBAAkB,CAChB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,GAC1B,IAAI;IAsBP,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,YAAY,6FAYT;IAEH,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAcjE,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQ7D,oBAAoB,IAAI,IAAI;IAK5B,kBAAkB,IAAI,IAAI;IAK1B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAM/D,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAO9D,UAAU,IAAI,IAAI;IAOlB,WAAW,IAAI,IAAI;IAInB,cAAc,CAAC,EACb,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE;QACD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,IAAI;IASR,UAAU,6CAIU;IAEpB,MAAM,IAAI,YAAY;CA8GvB;AAED,eAAe,WAAW,CAAC"}
@@ -5,11 +5,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
5
5
  /* eslint-disable jsx-a11y/no-static-element-interactions */
6
6
  // background click is just a convience method, not an actual a11y issue
7
7
  import React, { Component } from 'react';
8
- import PropTypes from 'prop-types';
9
8
  import { CardFlip } from '@deephaven/components';
10
9
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
11
10
  import { vsGear } from '@deephaven/icons';
12
- import { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
13
11
  import memoizee from 'memoizee';
14
12
  import debounce from 'lodash.debounce';
15
13
  import Log from '@deephaven/log';
@@ -21,6 +19,8 @@ class InputFilter extends Component {
21
19
  constructor(props) {
22
20
  super(props);
23
21
 
22
+ _defineProperty(this, "inputRef", void 0);
23
+
24
24
  _defineProperty(this, "getItemLabel", memoizee((columns, index) => {
25
25
  var {
26
26
  name,
@@ -35,6 +35,22 @@ class InputFilter extends Component {
35
35
  return name;
36
36
  }));
37
37
 
38
+ _defineProperty(this, "sendUpdate", debounce(() => {
39
+ var {
40
+ onChange
41
+ } = this.props;
42
+ var {
43
+ column,
44
+ value,
45
+ isValueShown
46
+ } = this.state;
47
+ onChange({
48
+ column,
49
+ isValueShown,
50
+ value
51
+ });
52
+ }, UPDATE_DEBOUNCE));
53
+
38
54
  this.handleColumnChange = this.handleColumnChange.bind(this);
39
55
  this.handleInputKeyPress = this.handleInputKeyPress.bind(this);
40
56
  this.handleValueChange = this.handleValueChange.bind(this);
@@ -42,18 +58,17 @@ class InputFilter extends Component {
42
58
  this.handleSettingsClick = this.handleSettingsClick.bind(this);
43
59
  this.handleSettingsSave = this.handleSettingsSave.bind(this);
44
60
  this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
45
- this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);
46
61
  this.inputRef = /*#__PURE__*/React.createRef();
47
62
  var {
48
- column,
49
- isValueShown,
50
- value
63
+ column: _column,
64
+ isValueShown: _isValueShown,
65
+ value: _value
51
66
  } = props;
52
67
  this.state = {
53
- column,
54
- selectedColumn: column,
55
- value,
56
- isValueShown
68
+ column: _column,
69
+ selectedColumn: _column,
70
+ value: _value,
71
+ isValueShown: _isValueShown
57
72
  };
58
73
  }
59
74
 
@@ -95,11 +110,11 @@ class InputFilter extends Component {
95
110
  var {
96
111
  value
97
112
  } = event.target;
98
- var selectedColumn = columns[value];
113
+ var selectedColumn = columns[parseInt(value, 10)];
99
114
  log.debug2('handleColumnChange', selectedColumn);
100
115
  this.setState({
101
116
  selectedColumn,
102
- value: null
117
+ value: undefined
103
118
  });
104
119
  }
105
120
 
@@ -192,7 +207,7 @@ class InputFilter extends Component {
192
207
  var column = name != null && type != null ? {
193
208
  name,
194
209
  type
195
- } : null;
210
+ } : undefined;
196
211
  var update = isValueShown === undefined ? {
197
212
  column,
198
213
  value
@@ -204,22 +219,6 @@ class InputFilter extends Component {
204
219
  this.setState(update);
205
220
  }
206
221
 
207
- sendUpdate() {
208
- var {
209
- onChange
210
- } = this.props;
211
- var {
212
- column,
213
- value,
214
- isValueShown
215
- } = this.state;
216
- onChange({
217
- column,
218
- isValueShown,
219
- value
220
- });
221
- }
222
-
223
222
  render() {
224
223
  var {
225
224
  columns
@@ -240,7 +239,7 @@ class InputFilter extends Component {
240
239
 
241
240
  return /*#__PURE__*/React.createElement(CardFlip, {
242
241
  className: "input-filter fill-parent-absolute",
243
- isFlipped: isValueShown
242
+ isFlipped: isValueShown !== null && isValueShown !== void 0 ? isValueShown : false
244
243
  }, /*#__PURE__*/React.createElement("div", {
245
244
  className: "input-filter-settings-card"
246
245
  }, /*#__PURE__*/React.createElement("div", {
@@ -309,17 +308,11 @@ class InputFilter extends Component {
309
308
 
310
309
  _defineProperty(InputFilter, "PLACEHOLDER", 'Enter value...');
311
310
 
312
- InputFilter.propTypes = {
313
- columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,
314
- column: APIPropTypes.Column,
315
- isValueShown: PropTypes.bool,
316
- value: PropTypes.string,
317
- onChange: PropTypes.func.isRequired
318
- };
319
- InputFilter.defaultProps = {
311
+ _defineProperty(InputFilter, "defaultProps", {
320
312
  column: null,
321
313
  isValueShown: false,
322
314
  value: null
323
- };
315
+ });
316
+
324
317
  export default InputFilter;
325
318
  //# sourceMappingURL=InputFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":["React","Component","PropTypes","CardFlip","FontAwesomeIcon","vsGear","APIPropTypes","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","sendUpdate","inputRef","createRef","column","isValueShown","value","state","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","focusInput","componentWillUnmount","flush","event","target","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","undefined","onChange","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width","propTypes","arrayOf","Column","isRequired","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass InputFilter extends Component {\n static PLACEHOLDER = 'Enter value...';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[value];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: null });\n }\n\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event) {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave() {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event) {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter() {\n this.setState({ value: '' });\n }\n\n setFilterState({ name, type, value, isValueShown }) {\n const column = name != null && type != null ? { name, type } : null;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nInputFilter.propTypes = {\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n column: APIPropTypes.Column,\n isValueShown: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nInputFilter.defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n};\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
1
+ {"version":3,"sources":["../../../src/controls/input-filter/InputFilter.tsx"],"names":["React","Component","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","undefined","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
@@ -1,19 +1,14 @@
1
- declare class MarkdownContainer extends React.PureComponent<any, any, any> {
2
- constructor(props: any);
3
- constructor(props: any, context: any);
1
+ import { MouseEventHandler, PureComponent, ReactElement, ReactNode } from 'react';
2
+ interface MarkdownContainerProps {
3
+ onDoubleClick: MouseEventHandler;
4
+ children: ReactNode;
5
+ isEditing?: boolean;
4
6
  }
5
- declare namespace MarkdownContainer {
6
- namespace propTypes {
7
- const onDoubleClick: PropTypes.Validator<(...args: any[]) => any>;
8
- const children: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
9
- const isEditing: PropTypes.Requireable<boolean>;
10
- }
11
- namespace defaultProps {
12
- const isEditing_1: boolean;
13
- export { isEditing_1 as isEditing };
14
- }
7
+ export default class MarkdownContainer extends PureComponent<MarkdownContainerProps, Record<string, never>> {
8
+ static defaultProps: {
9
+ isEditing: boolean;
10
+ };
11
+ render(): ReactElement;
15
12
  }
16
- export default MarkdownContainer;
17
- import React from "react";
18
- import PropTypes from "prop-types";
13
+ export {};
19
14
  //# sourceMappingURL=MarkdownContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownContainer.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownContainer.jsx"],"names":[],"mappings":"AAMA;IAiC0zlB,wBAA8C;IAAA,sCAAyJ;CAXhgmB"}
1
+ {"version":3,"file":"MarkdownContainer.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownContainer.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAKf,UAAU,sBAAsB;IAC9B,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa,CAC1D,sBAAsB,EACtB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,IAAI,YAAY;CAqBvB"}
@@ -1,5 +1,6 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
1
3
  import React, { PureComponent } from 'react';
2
- import PropTypes from 'prop-types';
3
4
  import classNames from 'classnames';
4
5
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
6
  import { vsEdit } from '@deephaven/icons';
@@ -23,12 +24,8 @@ export default class MarkdownContainer extends PureComponent {
23
24
  }
24
25
 
25
26
  }
26
- MarkdownContainer.propTypes = {
27
- onDoubleClick: PropTypes.func.isRequired,
28
- children: PropTypes.node.isRequired,
29
- isEditing: PropTypes.bool
30
- };
31
- MarkdownContainer.defaultProps = {
27
+
28
+ _defineProperty(MarkdownContainer, "defaultProps", {
32
29
  isEditing: false
33
- };
30
+ });
34
31
  //# sourceMappingURL=MarkdownContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/markdown/MarkdownContainer.jsx"],"names":["React","PureComponent","PropTypes","classNames","FontAwesomeIcon","vsEdit","MarkdownContainer","render","isEditing","children","onDoubleClick","props","viewing","propTypes","func","isRequired","node","bool","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,QAAuB,kBAAvB;AAEA,eAAe,MAAMC,iBAAN,SAAgCL,aAAhC,CAA8C;AAC3DM,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,SAAF;AAAaC,MAAAA,QAAb;AAAuBC,MAAAA;AAAvB,QAAyC,KAAKC,KAApD;AAEA,wBACE;AACE,MAAA,SAAS,EAAC,uCADZ;AAEE,MAAA,aAAa,EAAED;AAFjB,oBAIE;AACE,MAAA,SAAS,EAAEP,UAAU,CAAC,YAAD,EAAe,WAAf,EAA4B;AAC/CS,QAAAA,OAAO,EAAE,CAACJ;AADqC,OAA5B;AADvB,oBAKE,wEACuB,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEH;AAAvB,MADvB,CALF,CAJF,EAaGI,QAbH,CADF;AAiBD;;AArB0D;AAwB7DH,iBAAiB,CAACO,SAAlB,GAA8B;AAC5BH,EAAAA,aAAa,EAAER,SAAS,CAACY,IAAV,CAAeC,UADF;AAE5BN,EAAAA,QAAQ,EAAEP,SAAS,CAACc,IAAV,CAAeD,UAFG;AAG5BP,EAAAA,SAAS,EAAEN,SAAS,CAACe;AAHO,CAA9B;AAMAX,iBAAiB,CAACY,YAAlB,GAAiC;AAC/BV,EAAAA,SAAS,EAAE;AADoB,CAAjC","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\n\nexport default class MarkdownContainer extends PureComponent {\n render() {\n const { isEditing, children, onDoubleClick } = this.props;\n\n return (\n <div\n className=\"markdown-editor-container h-100 w-100\"\n onDoubleClick={onDoubleClick}\n >\n <div\n className={classNames('text-muted', 'edit-hint', {\n viewing: !isEditing,\n })}\n >\n <span>\n double-click to edit <FontAwesomeIcon icon={vsEdit} />\n </span>\n </div>\n {children}\n </div>\n );\n }\n}\n\nMarkdownContainer.propTypes = {\n onDoubleClick: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n isEditing: PropTypes.bool,\n};\n\nMarkdownContainer.defaultProps = {\n isEditing: false,\n};\n"],"file":"MarkdownContainer.js"}
1
+ {"version":3,"sources":["../../../src/controls/markdown/MarkdownContainer.tsx"],"names":["React","PureComponent","classNames","FontAwesomeIcon","vsEdit","MarkdownContainer","render","isEditing","children","onDoubleClick","props","viewing"],"mappings":";;AAAA,OAAOA,KAAP,IAEEC,aAFF,QAKO,OALP;AAMA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,QAAuB,kBAAvB;AAQA,eAAe,MAAMC,iBAAN,SAAgCJ,aAAhC,CAGb;AAKAK,EAAAA,MAAM,GAAiB;AACrB,QAAM;AAAEC,MAAAA,SAAF;AAAaC,MAAAA,QAAb;AAAuBC,MAAAA;AAAvB,QAAyC,KAAKC,KAApD;AAEA,wBACE;AACE,MAAA,SAAS,EAAC,uCADZ;AAEE,MAAA,aAAa,EAAED;AAFjB,oBAIE;AACE,MAAA,SAAS,EAAEP,UAAU,CAAC,YAAD,EAAe,WAAf,EAA4B;AAC/CS,QAAAA,OAAO,EAAE,CAACJ;AADqC,OAA5B;AADvB,oBAKE,wEACuB,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEH;AAAvB,MADvB,CALF,CAJF,EAaGI,QAbH,CADF;AAiBD;;AAzBD;;gBAHmBH,iB,kBAIG;AACpBE,EAAAA,SAAS,EAAE;AADS,C","sourcesContent":["import React, {\n MouseEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\n\ninterface MarkdownContainerProps {\n onDoubleClick: MouseEventHandler;\n children: ReactNode;\n isEditing?: boolean;\n}\n\nexport default class MarkdownContainer extends PureComponent<\n MarkdownContainerProps,\n Record<string, never>\n> {\n static defaultProps = {\n isEditing: false,\n };\n\n render(): ReactElement {\n const { isEditing, children, onDoubleClick } = this.props;\n\n return (\n <div\n className=\"markdown-editor-container h-100 w-100\"\n onDoubleClick={onDoubleClick}\n >\n <div\n className={classNames('text-muted', 'edit-hint', {\n viewing: !isEditing,\n })}\n >\n <span>\n double-click to edit <FontAwesomeIcon icon={vsEdit} />\n </span>\n </div>\n {children}\n </div>\n );\n }\n}\n"],"file":"MarkdownContainer.js"}
@@ -1,22 +1,20 @@
1
- declare class MarkdownEditor extends React.PureComponent<any, any, any> {
2
- constructor(props: any);
3
- container: HTMLDivElement | null;
4
- renderMarkdown: (props: any) => JSX.Element;
1
+ import { PureComponent, ReactElement } from 'react';
2
+ import { CodeComponent } from 'react-markdown/src/ast-to-react';
3
+ import type * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
4
+ interface MarkdownEditorProps {
5
+ isEditing: boolean;
6
+ content: string;
7
+ onEditorInitialized: (editor: monaco.editor.IStandaloneCodeEditor) => void;
5
8
  }
6
- declare namespace MarkdownEditor {
7
- namespace propTypes {
8
- const isEditing: PropTypes.Requireable<boolean>;
9
- const content: PropTypes.Requireable<string>;
10
- const onEditorInitialized: PropTypes.Validator<(...args: any[]) => any>;
11
- }
12
- namespace defaultProps {
13
- const isEditing_1: boolean;
14
- export { isEditing_1 as isEditing };
15
- const content_1: string;
16
- export { content_1 as content };
17
- }
9
+ export default class MarkdownEditor extends PureComponent<MarkdownEditorProps, Record<string, never>> {
10
+ static defaultProps: {
11
+ isEditing: boolean;
12
+ content: string;
13
+ };
14
+ constructor(props: MarkdownEditorProps);
15
+ container: HTMLDivElement | null;
16
+ renderMarkdown: CodeComponent;
17
+ render(): ReactElement;
18
18
  }
19
- export default MarkdownEditor;
20
- import React from "react";
21
- import PropTypes from "prop-types";
19
+ export {};
22
20
  //# sourceMappingURL=MarkdownEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownEditor.jsx"],"names":[],"mappings":"AAKA;IACE,wBAGC;IADC,iCAAqB;IAGvB,4CAgBE;CA4BH"}
1
+ {"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,KAAK,KAAK,MAAM,MAAM,2CAA2C,CAAC;AAEzE,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC;CAC5E;AACD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,aAAa,CACvD,mBAAmB,EACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,YAAY;;;MAGjB;gBAEU,KAAK,EAAE,mBAAmB;IAKtC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAEjC,cAAc,EAAE,aAAa,CAgB3B;IAEF,MAAM,IAAI,YAAY;CA0BvB"}