@deephaven/dashboard-core-plugins 0.22.3-beta.15 → 0.22.3-beta.21

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 (174) hide show
  1. package/dist/ChartBuilderPlugin.d.ts +1 -1
  2. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  3. package/dist/ChartBuilderPlugin.js +6 -8
  4. package/dist/ChartBuilderPlugin.js.map +1 -1
  5. package/dist/ChartPlugin.d.ts +1 -1
  6. package/dist/ChartPlugin.d.ts.map +1 -1
  7. package/dist/ChartPlugin.js +4 -8
  8. package/dist/ChartPlugin.js.map +1 -1
  9. package/dist/ConsolePlugin.d.ts +1 -1
  10. package/dist/ConsolePlugin.d.ts.map +1 -1
  11. package/dist/ConsolePlugin.js +16 -62
  12. package/dist/ConsolePlugin.js.map +1 -1
  13. package/dist/FilterPlugin.d.ts +1 -1
  14. package/dist/FilterPlugin.d.ts.map +1 -1
  15. package/dist/FilterPlugin.js +6 -13
  16. package/dist/FilterPlugin.js.map +1 -1
  17. package/dist/GridPlugin.d.ts +1 -1
  18. package/dist/GridPlugin.d.ts.map +1 -1
  19. package/dist/GridPlugin.js +4 -8
  20. package/dist/GridPlugin.js.map +1 -1
  21. package/dist/LinkerPlugin.d.ts +1 -1
  22. package/dist/LinkerPlugin.d.ts.map +1 -1
  23. package/dist/LinkerPlugin.js +2 -2
  24. package/dist/LinkerPlugin.js.map +1 -1
  25. package/dist/MarkdownPlugin.d.ts +1 -1
  26. package/dist/MarkdownPlugin.d.ts.map +1 -1
  27. package/dist/MarkdownPlugin.js +4 -8
  28. package/dist/MarkdownPlugin.js.map +1 -1
  29. package/dist/PandasPlugin.d.ts +1 -1
  30. package/dist/PandasPlugin.d.ts.map +1 -1
  31. package/dist/PandasPlugin.js +4 -8
  32. package/dist/PandasPlugin.js.map +1 -1
  33. package/dist/controls/ControlType.js +0 -6
  34. package/dist/controls/ControlType.js.map +1 -1
  35. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +2 -2
  36. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  37. package/dist/controls/dropdown-filter/DropdownFilter.js +7 -51
  38. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  39. package/dist/controls/input-filter/InputFilter.d.ts +1 -1
  40. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  41. package/dist/controls/input-filter/InputFilter.js +1 -31
  42. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  43. package/dist/controls/markdown/MarkdownContainer.js +0 -3
  44. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  45. package/dist/controls/markdown/MarkdownEditor.d.ts +0 -2
  46. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  47. package/dist/controls/markdown/MarkdownEditor.js +13 -20
  48. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  49. package/dist/controls/markdown/MarkdownStartPage.js +0 -11
  50. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  51. package/dist/controls/markdown/MarkdownUtils.js +0 -7
  52. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  53. package/dist/events/ChartEvent.js +0 -5
  54. package/dist/events/ChartEvent.js.map +1 -1
  55. package/dist/events/ConsoleEvent.js +0 -7
  56. package/dist/events/ConsoleEvent.js.map +1 -1
  57. package/dist/events/InputFilterEvent.js +0 -10
  58. package/dist/events/InputFilterEvent.js.map +1 -1
  59. package/dist/events/IrisGridEvent.js +0 -8
  60. package/dist/events/IrisGridEvent.js.map +1 -1
  61. package/dist/events/MarkdownEvent.js.map +1 -1
  62. package/dist/events/NotebookEvent.js +0 -10
  63. package/dist/events/NotebookEvent.js.map +1 -1
  64. package/dist/events/PQEvent.js +0 -5
  65. package/dist/events/PQEvent.js.map +1 -1
  66. package/dist/events/PandasEvent.js +0 -4
  67. package/dist/events/PandasEvent.js.map +1 -1
  68. package/dist/events/TabEvent.js +0 -8
  69. package/dist/events/TabEvent.js.map +1 -1
  70. package/dist/events/index.js.map +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/linker/Linker.d.ts +3 -0
  73. package/dist/linker/Linker.d.ts.map +1 -1
  74. package/dist/linker/Linker.js +70 -119
  75. package/dist/linker/Linker.js.map +1 -1
  76. package/dist/linker/LinkerLink.css +90 -25
  77. package/dist/linker/LinkerLink.css.map +1 -1
  78. package/dist/linker/LinkerLink.d.ts +20 -2
  79. package/dist/linker/LinkerLink.d.ts.map +1 -1
  80. package/dist/linker/LinkerLink.js +214 -23
  81. package/dist/linker/LinkerLink.js.map +1 -1
  82. package/dist/linker/LinkerOverlayContent.css +0 -4
  83. package/dist/linker/LinkerOverlayContent.css.map +1 -1
  84. package/dist/linker/LinkerOverlayContent.d.ts +11 -0
  85. package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
  86. package/dist/linker/LinkerOverlayContent.js +78 -33
  87. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  88. package/dist/linker/LinkerUtils.d.ts +9 -2
  89. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  90. package/dist/linker/LinkerUtils.js +9 -25
  91. package/dist/linker/LinkerUtils.js.map +1 -1
  92. package/dist/linker/ToolType.js.map +1 -1
  93. package/dist/panels/ChartColumnSelectorOverlay.d.ts +5 -5
  94. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  95. package/dist/panels/ChartColumnSelectorOverlay.js +4 -7
  96. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  97. package/dist/panels/ChartFilterOverlay.d.ts +4 -4
  98. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  99. package/dist/panels/ChartFilterOverlay.js +2 -7
  100. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  101. package/dist/panels/ChartPanel.d.ts.map +1 -1
  102. package/dist/panels/ChartPanel.js +11 -150
  103. package/dist/panels/ChartPanel.js.map +1 -1
  104. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  105. package/dist/panels/CommandHistoryPanel.js +1 -26
  106. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  107. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  108. package/dist/panels/ConsolePanel.js +12 -57
  109. package/dist/panels/ConsolePanel.js.map +1 -1
  110. package/dist/panels/DropdownFilterPanel.d.ts +8 -8
  111. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  112. package/dist/panels/DropdownFilterPanel.js +21 -127
  113. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  114. package/dist/panels/FileExplorerPanel.js +4 -33
  115. package/dist/panels/FileExplorerPanel.js.map +1 -1
  116. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  117. package/dist/panels/FilterSetManager.js +13 -86
  118. package/dist/panels/FilterSetManager.js.map +1 -1
  119. package/dist/panels/FilterSetManagerPanel.js +10 -64
  120. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  121. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  122. package/dist/panels/InputFilterPanel.js +8 -38
  123. package/dist/panels/InputFilterPanel.js.map +1 -1
  124. package/dist/panels/IrisGridPanel.d.ts +9 -9
  125. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  126. package/dist/panels/IrisGridPanel.js +24 -133
  127. package/dist/panels/IrisGridPanel.js.map +1 -1
  128. package/dist/panels/IrisGridPanelTooltip.d.ts +5 -5
  129. package/dist/panels/IrisGridPanelTooltip.d.ts.map +1 -1
  130. package/dist/panels/IrisGridPanelTooltip.js +2 -5
  131. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  132. package/dist/panels/LogPanel.js +4 -22
  133. package/dist/panels/LogPanel.js.map +1 -1
  134. package/dist/panels/MarkdownNotebook.js +3 -30
  135. package/dist/panels/MarkdownNotebook.js.map +1 -1
  136. package/dist/panels/MarkdownPanel.js +2 -30
  137. package/dist/panels/MarkdownPanel.js.map +1 -1
  138. package/dist/panels/MockFileStorage.js +1 -14
  139. package/dist/panels/MockFileStorage.js.map +1 -1
  140. package/dist/panels/MockFileStorageTable.js +11 -30
  141. package/dist/panels/MockFileStorageTable.js.map +1 -1
  142. package/dist/panels/NotebookPanel.js +24 -182
  143. package/dist/panels/NotebookPanel.js.map +1 -1
  144. package/dist/panels/PandasPanel.js +1 -20
  145. package/dist/panels/PandasPanel.js.map +1 -1
  146. package/dist/panels/Panel.d.ts +1 -1
  147. package/dist/panels/Panel.d.ts.map +1 -1
  148. package/dist/panels/Panel.js +2 -38
  149. package/dist/panels/Panel.js.map +1 -1
  150. package/dist/panels/PanelContextMenu.js +7 -29
  151. package/dist/panels/PanelContextMenu.js.map +1 -1
  152. package/dist/panels/RenameDialog.js +2 -17
  153. package/dist/panels/RenameDialog.js.map +1 -1
  154. package/dist/panels/WidgetPanel.js +2 -20
  155. package/dist/panels/WidgetPanel.js.map +1 -1
  156. package/dist/panels/WidgetPanelTooltip.d.ts +5 -5
  157. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  158. package/dist/panels/WidgetPanelTooltip.js +2 -4
  159. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  160. package/dist/panels/index.js.map +1 -1
  161. package/dist/prop-types/CommonPropTypes.js +0 -3
  162. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  163. package/dist/prop-types/UIPropTypes.js.map +1 -1
  164. package/dist/prop-types/index.js.map +1 -1
  165. package/dist/redux/actionTypes.js.map +1 -1
  166. package/dist/redux/actions.js +8 -9
  167. package/dist/redux/actions.js.map +1 -1
  168. package/dist/redux/index.js.map +1 -1
  169. package/dist/redux/reducers/connection.js.map +1 -1
  170. package/dist/redux/reducers/index.js.map +1 -1
  171. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  172. package/dist/redux/selectors.js +10 -15
  173. package/dist/redux/selectors.js.map +1 -1
  174. package/package.json +21 -20
@@ -1,9 +1,9 @@
1
- import React, { useCallback, useEffect } from 'react';
1
+ import { useCallback, useEffect } from 'react';
2
2
  import { assertIsDashboardPluginProps, LayoutUtils, PanelEvent, useListener } from '@deephaven/dashboard';
3
3
  import { IrisGridModelFactory } from '@deephaven/iris-grid';
4
4
  import shortid from 'shortid';
5
5
  import { PandasPanel } from "./panels/index.js";
6
- export var PandasPlugin = props => {
6
+ export function PandasPlugin(props) {
7
7
  assertIsDashboardPluginProps(props);
8
8
  var {
9
9
  hydrate,
@@ -22,18 +22,14 @@ export var PandasPlugin = props => {
22
22
  name,
23
23
  type
24
24
  } = widget;
25
-
26
25
  if (type !== dh.VariableType.PANDAS) {
27
26
  return;
28
27
  }
29
-
30
28
  var metadata = {
31
29
  name,
32
30
  table: name
33
31
  };
34
-
35
32
  var makeModel = () => fetch().then(table => IrisGridModelFactory.makeModel(table));
36
-
37
33
  var config = {
38
34
  type: 'react-component',
39
35
  component: PandasPanel.COMPONENT,
@@ -62,7 +58,7 @@ export var PandasPlugin = props => {
62
58
  };
63
59
  }, [hydrate, registerComponent]);
64
60
  useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);
65
- return /*#__PURE__*/React.createElement(React.Fragment, null);
66
- };
61
+ return null;
62
+ }
67
63
  export default PandasPlugin;
68
64
  //# sourceMappingURL=PandasPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPlugin.js","names":["React","useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","useListener","IrisGridModelFactory","shortid","PandasPanel","PandasPlugin","props","hydrate","id","layout","registerComponent","handlePanelOpen","dragEvent","fetch","panelId","generate","widget","name","type","dh","VariableType","PANDAS","metadata","table","makeModel","then","config","component","COMPONENT","localDashboardId","title","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/PandasPlugin.tsx"],"sourcesContent":["import React, { useCallback, useEffect } from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport { PandasPanel, PandasPanelProps } from './panels';\n\nexport type PandasPluginProps = Partial<DashboardPluginComponentProps> & {\n hydrate: PanelHydrateFunction<PandasPanelProps>;\n};\n\nexport const PandasPlugin = (props: PandasPluginProps): JSX.Element => {\n assertIsDashboardPluginProps(props);\n const { hydrate, id, layout, registerComponent } = props;\n\n const handlePanelOpen = useCallback(\n ({ dragEvent, fetch, panelId = shortid.generate(), widget }) => {\n const { name, type } = widget;\n if (type !== dh.VariableType.PANDAS) {\n return;\n }\n\n const metadata = { name, table: name };\n const makeModel = () =>\n fetch().then((table: Table) => IrisGridModelFactory.makeModel(table));\n const config = {\n type: 'react-component' as const,\n component: PandasPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n },\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(PandasPanel.COMPONENT, PandasPanel, hydrate),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [hydrate, registerComponent]\n );\n\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return <></>;\n};\n\nexport default PandasPlugin;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,QAA8C,OAA9C;AACA,SACEC,4BADF,EAGEC,WAHF,EAIEC,UAJF,EAMEC,WANF,QAOO,sBAPP;AAQA,SAASC,oBAAT,QAAqC,sBAArC;AAEA,OAAOC,OAAP,MAAoB,SAApB;SACSC,W;AAMT,OAAO,IAAMC,YAAY,GAAIC,KAAD,IAA2C;EACrER,4BAA4B,CAACQ,KAAD,CAA5B;EACA,IAAM;IAAEC,OAAF;IAAWC,EAAX;IAAeC,MAAf;IAAuBC;EAAvB,IAA6CJ,KAAnD;EAEA,IAAMK,eAAe,GAAGf,WAAW,CACjC,QAAgE;IAAA,IAA/D;MAAEgB,SAAF;MAAaC,KAAb;MAAoBC,OAAO,GAAGX,OAAO,CAACY,QAAR,EAA9B;MAAkDC;IAAlD,CAA+D;IAC9D,IAAM;MAAEC,IAAF;MAAQC;IAAR,IAAiBF,MAAvB;;IACA,IAAIE,IAAI,KAAKC,EAAE,CAACC,YAAH,CAAgBC,MAA7B,EAAqC;MACnC;IACD;;IAED,IAAMC,QAAQ,GAAG;MAAEL,IAAF;MAAQM,KAAK,EAAEN;IAAf,CAAjB;;IACA,IAAMO,SAAS,GAAG,MAChBX,KAAK,GAAGY,IAAR,CAAcF,KAAD,IAAkBrB,oBAAoB,CAACsB,SAArB,CAA+BD,KAA/B,CAA/B,CADF;;IAEA,IAAMG,MAAM,GAAG;MACbR,IAAI,EAAE,iBADO;MAEbS,SAAS,EAAEvB,WAAW,CAACwB,SAFV;MAGbtB,KAAK,EAAE;QACLuB,gBAAgB,EAAErB,EADb;QAELA,EAAE,EAAEM,OAFC;QAGLQ,QAHK;QAILE;MAJK,CAHM;MASbM,KAAK,EAAEb,IATM;MAUbT,EAAE,EAAEM;IAVS,CAAf;IAaA,IAAM;MAAEiB;IAAF,IAAWtB,MAAjB;IACAV,WAAW,CAACiC,aAAZ,CAA0B;MAAED,IAAF;MAAQL,MAAR;MAAgBd;IAAhB,CAA1B;EACD,CAzBgC,EA0BjC,CAACJ,EAAD,EAAKC,MAAL,CA1BiC,CAAnC;EA6BAZ,SAAS,CACP,SAASoC,kCAAT,GAA8C;IAC5C,IAAMC,QAAQ,GAAG,CACfxB,iBAAiB,CAACN,WAAW,CAACwB,SAAb,EAAwBxB,WAAxB,EAAqCG,OAArC,CADF,CAAjB;IAIA,OAAO,MAAM;MACX2B,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;IACD,CAFD;EAGD,CATM,EAUP,CAAC7B,OAAD,EAAUG,iBAAV,CAVO,CAAT;EAaAT,WAAW,CAACQ,MAAM,CAAC4B,QAAR,EAAkBrC,UAAU,CAACsC,IAA7B,EAAmC3B,eAAnC,CAAX;EAEA,oBAAO,yCAAP;AACD,CAjDM;AAmDP,eAAeN,YAAf"}
1
+ {"version":3,"file":"PandasPlugin.js","names":["useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","useListener","IrisGridModelFactory","shortid","PandasPanel","PandasPlugin","props","hydrate","id","layout","registerComponent","handlePanelOpen","dragEvent","fetch","panelId","generate","widget","name","type","dh","VariableType","PANDAS","metadata","table","makeModel","then","config","component","COMPONENT","localDashboardId","title","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/PandasPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport { PandasPanel, PandasPanelProps } from './panels';\n\nexport type PandasPluginProps = Partial<DashboardPluginComponentProps> & {\n hydrate: PanelHydrateFunction<PandasPanelProps>;\n};\n\nexport function PandasPlugin(props: PandasPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { hydrate, id, layout, registerComponent } = props;\n\n const handlePanelOpen = useCallback(\n ({ dragEvent, fetch, panelId = shortid.generate(), widget }) => {\n const { name, type } = widget;\n if (type !== dh.VariableType.PANDAS) {\n return;\n }\n\n const metadata = { name, table: name };\n const makeModel = () =>\n fetch().then((table: Table) => IrisGridModelFactory.makeModel(table));\n const config = {\n type: 'react-component' as const,\n component: PandasPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n },\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(PandasPanel.COMPONENT, PandasPanel, hydrate),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [hydrate, registerComponent]\n );\n\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return null;\n}\n\nexport default PandasPlugin;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,UAAU,EAEVC,WAAW,QACN,sBAAsB;AAC7B,SAASC,oBAAoB,QAAQ,sBAAsB;AAE3D,OAAOC,OAAO,MAAM,SAAS;AAAC,SACrBC,WAAW;AAMpB,OAAO,SAASC,YAAY,CAACC,KAAwB,EAAsB;EACzER,4BAA4B,CAACQ,KAAK,CAAC;EACnC,IAAM;IAAEC,OAAO;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAkB,CAAC,GAAGJ,KAAK;EAExD,IAAMK,eAAe,GAAGf,WAAW,CACjC,QAAgE;IAAA,IAA/D;MAAEgB,SAAS;MAAEC,KAAK;MAAEC,OAAO,GAAGX,OAAO,CAACY,QAAQ,EAAE;MAAEC;IAAO,CAAC;IACzD,IAAM;MAAEC,IAAI;MAAEC;IAAK,CAAC,GAAGF,MAAM;IAC7B,IAAIE,IAAI,KAAKC,EAAE,CAACC,YAAY,CAACC,MAAM,EAAE;MACnC;IACF;IAEA,IAAMC,QAAQ,GAAG;MAAEL,IAAI;MAAEM,KAAK,EAAEN;IAAK,CAAC;IACtC,IAAMO,SAAS,GAAG,MAChBX,KAAK,EAAE,CAACY,IAAI,CAAEF,KAAY,IAAKrB,oBAAoB,CAACsB,SAAS,CAACD,KAAK,CAAC,CAAC;IACvE,IAAMG,MAAM,GAAG;MACbR,IAAI,EAAE,iBAA0B;MAChCS,SAAS,EAAEvB,WAAW,CAACwB,SAAS;MAChCtB,KAAK,EAAE;QACLuB,gBAAgB,EAAErB,EAAE;QACpBA,EAAE,EAAEM,OAAO;QACXQ,QAAQ;QACRE;MACF,CAAC;MACDM,KAAK,EAAEb,IAAI;MACXT,EAAE,EAAEM;IACN,CAAC;IAED,IAAM;MAAEiB;IAAK,CAAC,GAAGtB,MAAM;IACvBV,WAAW,CAACiC,aAAa,CAAC;MAAED,IAAI;MAAEL,MAAM;MAAEd;IAAU,CAAC,CAAC;EACxD,CAAC,EACD,CAACJ,EAAE,EAAEC,MAAM,CAAC,CACb;EAEDZ,SAAS,CACP,SAASoC,kCAAkC,GAAG;IAC5C,IAAMC,QAAQ,GAAG,CACfxB,iBAAiB,CAACN,WAAW,CAACwB,SAAS,EAAExB,WAAW,EAAEG,OAAO,CAAC,CAC/D;IAED,OAAO,MAAM;MACX2B,QAAQ,CAACC,OAAO,CAACC,OAAO,IAAIA,OAAO,EAAE,CAAC;IACxC,CAAC;EACH,CAAC,EACD,CAAC7B,OAAO,EAAEG,iBAAiB,CAAC,CAC7B;EAEDT,WAAW,CAACQ,MAAM,CAAC4B,QAAQ,EAAErC,UAAU,CAACsC,IAAI,EAAE3B,eAAe,CAAC;EAE9D,OAAO,IAAI;AACb;AAEA,eAAeN,YAAY"}
@@ -1,14 +1,8 @@
1
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
-
3
2
  class ControlType {}
4
-
5
3
  _defineProperty(ControlType, "DROPDOWN_FILTER", 'ControlType.DROPDOWN_FILTER');
6
-
7
4
  _defineProperty(ControlType, "INPUT_FILTER", 'ControlType.INPUT_FILTER');
8
-
9
5
  _defineProperty(ControlType, "MARKDOWN", 'ControlType.MARKDOWN');
10
-
11
6
  _defineProperty(ControlType, "FILTER_SET_MANAGER", 'ControlType.FILTER_SET_MANAGER');
12
-
13
7
  export default ControlType;
14
8
  //# sourceMappingURL=ControlType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlType.js","names":["ControlType"],"sources":["../../src/controls/ControlType.ts"],"sourcesContent":["class ControlType {\n static DROPDOWN_FILTER = 'ControlType.DROPDOWN_FILTER';\n\n static INPUT_FILTER = 'ControlType.INPUT_FILTER';\n\n static MARKDOWN = 'ControlType.MARKDOWN';\n\n static FILTER_SET_MANAGER = 'ControlType.FILTER_SET_MANAGER';\n}\n\nexport default ControlType;\n"],"mappings":";;AAAA,MAAMA,WAAN,CAAkB;;gBAAZA,W,qBACqB,6B;;gBADrBA,W,kBAGkB,0B;;gBAHlBA,W,cAKc,sB;;gBALdA,W,wBAOwB,gC;;AAG9B,eAAeA,WAAf"}
1
+ {"version":3,"file":"ControlType.js","names":["ControlType"],"sources":["../../src/controls/ControlType.ts"],"sourcesContent":["class ControlType {\n static DROPDOWN_FILTER = 'ControlType.DROPDOWN_FILTER';\n\n static INPUT_FILTER = 'ControlType.INPUT_FILTER';\n\n static MARKDOWN = 'ControlType.MARKDOWN';\n\n static FILTER_SET_MANAGER = 'ControlType.FILTER_SET_MANAGER';\n}\n\nexport default ControlType;\n"],"mappings":";AAAA,MAAMA,WAAW,CAAC;AAQjB,gBARKA,WAAW,qBACU,6BAA6B;AAAA,gBADlDA,WAAW,kBAGO,0BAA0B;AAAA,gBAH5CA,WAAW,cAKG,sBAAsB;AAAA,gBALpCA,WAAW,wBAOa,gCAAgC;AAG9D,eAAeA,WAAW"}
@@ -5,7 +5,7 @@ import './DropdownFilter.scss';
5
5
  import { LinkPoint } from '../../linker/LinkerUtils';
6
6
  export interface DropdownFilterColumn {
7
7
  name: string;
8
- type?: string;
8
+ type: string;
9
9
  }
10
10
  interface DropdownFilterProps {
11
11
  column: DropdownFilterColumn;
@@ -60,7 +60,7 @@ declare class DropdownFilter extends Component<DropdownFilterProps, DropdownFilt
60
60
  getColumnOptions: (columns: DropdownFilterColumn[], selectedColumn: DropdownFilterColumn | null) => [JSX.Element[], number];
61
61
  getSelectedOptionIndex: (values: (string | null)[], value: string | null) => number;
62
62
  getValueOptions: (values: (string | null)[]) => JSX.Element[];
63
- getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
63
+ getItemLabel: ((columns: DropdownFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: DropdownFilterColumn[], index: number) => string>;
64
64
  handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void;
65
65
  handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void;
66
66
  handleValueChange(event: ChangeEvent<HTMLSelectElement>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"AAIA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAIhC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAKrD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;IACX,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,cAAM,cAAe,SAAQ,SAAS,CACpC,mBAAmB,EACnB,mBAAmB,CACpB;IACC,MAAM,CAAC,YAAY;;;;;;;;;;gCAWK,IAAI;kCACF,IAAI;kCACJ,IAAI;MAC5B;IAEF,MAAM,CAAC,WAAW,SAAuB;IAEzC,MAAM,CAAC,wBAAwB,SAAkC;IAEjE,MAAM,CAAC,yBAAyB,SAAqB;gBAEzC,KAAK,EAAE,mBAAmB;IAuBtC,kBAAkB,CAChB,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,mBAAmB,GAC7B,IAAI;IAkCP,oBAAoB,IAAI,IAAI;IAI5B,WAAW,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAE1C,oBAAoB,WACT,SAAS,WAAW,oBAAoB,EAAE,4BAQnD;IAEF,gBAAgB,YAEH,oBAAoB,EAAE,kBACf,oBAAoB,GAAG,IAAI,KAC1C,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAwB1B;IAEF,sBAAsB,WACX,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,SAAS,MAAM,GAAG,IAAI,YAChD;IAEF,eAAe,WAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,mBAajD;IAEH,YAAY,6FAYT;IAEH,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAgB/D,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAYrE,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAoB9D,oBAAoB,IAAI,IAAI;IAO5B,kBAAkB,IAAI,IAAI;IAU1B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAK/D,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAO9D,gBAAgB,IAAI,IAAI;IAKxB,gBAAgB,IAAI,IAAI;IAKxB,aAAa,IAAI,IAAI;IAUrB,YAAY,IAAI,IAAI;IAKpB,UAAU,IAAI,IAAI;IAMlB,UAAU,IAAI,IAAI;IAKlB,WAAW,IAAI,IAAI;IAInB,cAAc,CAAC,EACb,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,OAAO,CAAC;KACvB,GAAG,IAAI;IAKR,UAAU,6CAIU;IAEpB,MAAM,IAAI,YAAY;CA2JvB;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
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
-
3
2
  /* eslint-disable jsx-a11y/click-events-have-key-events */
4
-
5
3
  /* eslint-disable jsx-a11y/no-static-element-interactions */
6
4
  // background click is just a convenience method, not an actual a11y issue
5
+
7
6
  import React, { Component } from 'react';
8
7
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
8
  import { Button, CardFlip, SocketedButton } from '@deephaven/components';
@@ -16,20 +15,16 @@ import Log from '@deephaven/log';
16
15
  import "./DropdownFilter.css";
17
16
  var log = Log.module('DropdownFilter');
18
17
  var UPDATE_DEBOUNCE = 150;
19
-
20
18
  class DropdownFilter extends Component {
21
19
  constructor(props) {
22
20
  super(props);
23
-
24
21
  _defineProperty(this, "dropdownRef", void 0);
25
-
26
22
  _defineProperty(this, "getCompatibleColumns", memoize((source, columns) => source != null ? columns.filter(_ref => {
27
23
  var {
28
24
  type
29
25
  } = _ref;
30
26
  return type !== undefined && TableUtils.isCompatibleType(type, source.columnType);
31
27
  }) : []));
32
-
33
28
  _defineProperty(this, "getColumnOptions", memoize((columns, selectedColumn) => {
34
29
  var selectedIndex = -1;
35
30
  var options = [];
@@ -42,39 +37,33 @@ class DropdownFilter extends Component {
42
37
  key: "".concat(columnItem.name, "/").concat(columnItem.type),
43
38
  value: index
44
39
  }, this.getItemLabel(columns, index)));
45
-
46
40
  if (selectedColumn !== null && columnItem.name === selectedColumn.name && columnItem.type === selectedColumn.type) {
47
41
  selectedIndex = index;
48
42
  }
49
43
  });
50
44
  return [options, selectedIndex];
51
45
  }));
52
-
53
46
  _defineProperty(this, "getSelectedOptionIndex", memoize((values, value) => values.indexOf(value)));
54
-
55
47
  _defineProperty(this, "getValueOptions", memoize(values => [/*#__PURE__*/React.createElement("option", {
56
48
  value: "-1",
57
49
  key: "-1"
58
50
  }, DropdownFilter.PLACEHOLDER), ...values.map((val, index) => /*#__PURE__*/React.createElement("option", {
59
- value: index // eslint-disable-next-line react/no-array-index-key
51
+ value: index
52
+ // eslint-disable-next-line react/no-array-index-key
60
53
  ,
61
54
  key: "".concat(index, "/").concat(val)
62
55
  }, val))]));
63
-
64
56
  _defineProperty(this, "getItemLabel", memoizee((columns, index) => {
65
57
  var {
66
58
  name,
67
59
  type
68
60
  } = columns[index];
69
-
70
61
  if (index > 0 && columns[index - 1].name === name || index < columns.length - 1 && columns[index + 1].name === name) {
71
62
  var shortType = type.substring(type.lastIndexOf('.') + 1);
72
63
  return "".concat(name, " (").concat(shortType, ")");
73
64
  }
74
-
75
65
  return name;
76
66
  }));
77
-
78
67
  _defineProperty(this, "sendUpdate", debounce(() => {
79
68
  var {
80
69
  onChange
@@ -90,7 +79,6 @@ class DropdownFilter extends Component {
90
79
  value: value !== null && value !== void 0 ? value : undefined
91
80
  });
92
81
  }, UPDATE_DEBOUNCE));
93
-
94
82
  this.handleColumnChange = this.handleColumnChange.bind(this);
95
83
  this.handleSettingsCancel = this.handleSettingsCancel.bind(this);
96
84
  this.handleSettingsClick = this.handleSettingsClick.bind(this);
@@ -112,7 +100,6 @@ class DropdownFilter extends Component {
112
100
  value: _value
113
101
  };
114
102
  }
115
-
116
103
  componentDidUpdate(prevProps, prevState) {
117
104
  var {
118
105
  source,
@@ -124,46 +111,38 @@ class DropdownFilter extends Component {
124
111
  value,
125
112
  isValueShown
126
113
  } = this.state;
127
-
128
114
  if (isLoaded) {
129
115
  if (source !== prevProps.source) {
130
116
  this.sourceUpdated();
131
117
  }
132
-
133
118
  if (values !== prevProps.values && value !== '' && !values.includes(value)) {
134
119
  // Value list loaded, but doesn't contain the current value
135
120
  this.resetValue();
136
121
  }
137
-
138
122
  if (isValueShown !== prevState.isValueShown) {
139
123
  if (isValueShown) {
140
124
  this.focusInput();
141
125
  }
142
126
  }
143
-
144
127
  if (column !== prevState.column || value !== prevState.value || isValueShown !== prevState.isValueShown) {
145
128
  this.sendUpdate();
146
129
  }
147
130
  }
148
131
  }
149
-
150
132
  componentWillUnmount() {
151
133
  this.sendUpdate.flush();
152
134
  }
153
-
154
135
  handleColumnChange(event) {
155
136
  var {
156
137
  value
157
138
  } = event.target;
158
139
  log.debug2('handleColumnChange', value);
159
-
160
140
  if (value != null && parseInt(value, 10) < 0) {
161
141
  this.setState({
162
142
  selectedColumn: null
163
143
  });
164
144
  return;
165
145
  }
166
-
167
146
  var {
168
147
  columns: allColumns,
169
148
  source
@@ -173,7 +152,6 @@ class DropdownFilter extends Component {
173
152
  selectedColumn: columns[parseInt(value, 10)]
174
153
  });
175
154
  }
176
-
177
155
  handleDropdownKeyPress(event) {
178
156
  if (event.key === 'Enter') {
179
157
  event.preventDefault();
@@ -183,18 +161,16 @@ class DropdownFilter extends Component {
183
161
  this.sendUpdate.flush();
184
162
  }
185
163
  }
186
-
187
164
  handleValueChange(event) {
188
165
  var {
189
166
  value: valueIndex
190
167
  } = event.target;
191
- var index = parseInt(valueIndex, 10); // Default empty string value for 'clear filter'
192
-
168
+ var index = parseInt(valueIndex, 10);
169
+ // Default empty string value for 'clear filter'
193
170
  var value = '';
194
171
  var {
195
172
  values
196
173
  } = this.props;
197
-
198
174
  if (index === -1) {
199
175
  log.debug2('Selected default item');
200
176
  } else if (index >= 0 && index < values.length) {
@@ -203,13 +179,11 @@ class DropdownFilter extends Component {
203
179
  log.error('Invalid index', index, values);
204
180
  return;
205
181
  }
206
-
207
182
  log.debug2('handleValueChange', value);
208
183
  this.setState({
209
184
  value
210
185
  });
211
186
  }
212
-
213
187
  handleSettingsCancel() {
214
188
  this.setState(_ref2 => {
215
189
  var {
@@ -221,7 +195,6 @@ class DropdownFilter extends Component {
221
195
  };
222
196
  });
223
197
  }
224
-
225
198
  handleSettingsSave() {
226
199
  this.setState(_ref3 => {
227
200
  var {
@@ -238,33 +211,28 @@ class DropdownFilter extends Component {
238
211
  };
239
212
  });
240
213
  }
241
-
242
214
  handleSettingsClick(event) {
243
215
  event.stopPropagation();
244
216
  this.showSettings();
245
217
  }
246
-
247
218
  handleBackgroundClick(event) {
248
219
  // allow clicking anywhere in the background to select and focus the input
249
220
  if (event.target !== this.dropdownRef.current) {
250
221
  this.focusInput();
251
222
  }
252
223
  }
253
-
254
224
  handleMouseEnter() {
255
225
  var {
256
226
  onSourceMouseEnter
257
227
  } = this.props;
258
228
  onSourceMouseEnter();
259
229
  }
260
-
261
230
  handleMouseLeave() {
262
231
  var {
263
232
  onSourceMouseLeave
264
233
  } = this.props;
265
234
  onSourceMouseLeave();
266
235
  }
267
-
268
236
  sourceUpdated() {
269
237
  this.setState({
270
238
  column: null,
@@ -274,7 +242,6 @@ class DropdownFilter extends Component {
274
242
  value: ''
275
243
  });
276
244
  }
277
-
278
245
  showSettings() {
279
246
  var {
280
247
  column
@@ -284,24 +251,21 @@ class DropdownFilter extends Component {
284
251
  isValueShown: false
285
252
  });
286
253
  }
287
-
288
254
  focusInput() {
289
255
  if (this.dropdownRef.current !== null) {
290
256
  this.dropdownRef.current.focus();
291
257
  }
292
258
  }
293
-
294
259
  resetValue() {
295
260
  this.setState({
296
261
  value: ''
297
262
  });
298
- } // Called by the parent component via ref
299
-
263
+ }
300
264
 
265
+ // Called by the parent component via ref
301
266
  clearFilter() {
302
267
  this.resetValue();
303
268
  }
304
-
305
269
  setFilterState(_ref4) {
306
270
  var {
307
271
  name,
@@ -319,10 +283,8 @@ class DropdownFilter extends Component {
319
283
  isValueShown
320
284
  });
321
285
  }
322
-
323
286
  render() {
324
287
  var _source$columnName;
325
-
326
288
  var {
327
289
  columns: allColumns,
328
290
  disableLinking,
@@ -426,9 +388,7 @@ class DropdownFilter extends Component {
426
388
  tooltip: "Dropdown Filter Settings"
427
389
  })))));
428
390
  }
429
-
430
391
  }
431
-
432
392
  _defineProperty(DropdownFilter, "defaultProps", {
433
393
  column: null,
434
394
  disableLinking: false,
@@ -443,12 +403,8 @@ _defineProperty(DropdownFilter, "defaultProps", {
443
403
  onSourceMouseEnter: () => undefined,
444
404
  onSourceMouseLeave: () => undefined
445
405
  });
446
-
447
406
  _defineProperty(DropdownFilter, "PLACEHOLDER", 'Select a value...');
448
-
449
407
  _defineProperty(DropdownFilter, "SOURCE_BUTTON_CLASS_NAME", 'btn-dropdown-filter-selector');
450
-
451
408
  _defineProperty(DropdownFilter, "SOURCE_BUTTON_PLACEHOLDER", 'Select a column');
452
-
453
409
  export default DropdownFilter;
454
410
  //# sourceMappingURL=DropdownFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.js","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"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"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 != null\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 kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownFilter.js","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"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"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 != null\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: DropdownFilterColumn[], index: number) => {\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 kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
@@ -31,7 +31,7 @@ declare class InputFilter extends Component<InputFilterProps, InputFilterState>
31
31
  componentDidUpdate(prevProps: InputFilterProps, prevState: InputFilterState): void;
32
32
  componentWillUnmount(): void;
33
33
  inputRef: RefObject<HTMLInputElement>;
34
- getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
34
+ getItemLabel: ((columns: InputFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: InputFilterColumn[], index: number) => string>;
35
35
  handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void;
36
36
  handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void;
37
37
  handleValueChange(event: ChangeEvent<HTMLInputElement>): void;
@@ -1 +1 @@
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;IA0BP,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;CA6GvB;AAED,eAAe,WAAW,CAAC"}
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;IA0BP,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,YAAY,aAAsB,iBAAiB,EAAE,SAAS,MAAM,2CAAlC,iBAAiB,EAAE,SAAS,MAAM,aAYjE;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;CA6GvB;AAED,eAAe,WAAW,CAAC"}