@deephaven/iris-grid 0.46.1-beta.2 → 0.46.1-beta.7

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 (100) hide show
  1. package/dist/AdvancedFilterCreator.js +122 -102
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +47 -38
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +52 -40
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +35 -28
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnStatistics.js +74 -54
  10. package/dist/ColumnStatistics.js.map +1 -1
  11. package/dist/CrossColumnSearch.d.ts.map +1 -1
  12. package/dist/CrossColumnSearch.js +114 -90
  13. package/dist/CrossColumnSearch.js.map +1 -1
  14. package/dist/FilterInputField.js +42 -35
  15. package/dist/FilterInputField.js.map +1 -1
  16. package/dist/GotoRow.js +226 -193
  17. package/dist/GotoRow.js.map +1 -1
  18. package/dist/IrisGrid.js +371 -344
  19. package/dist/IrisGrid.js.map +1 -1
  20. package/dist/IrisGridBottomBar.js +11 -8
  21. package/dist/IrisGridBottomBar.js.map +1 -1
  22. package/dist/IrisGridCellOverflowModal.js +56 -50
  23. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  24. package/dist/IrisGridCopyHandler.js +34 -24
  25. package/dist/IrisGridCopyHandler.js.map +1 -1
  26. package/dist/IrisGridPartitionSelector.js +59 -46
  27. package/dist/IrisGridPartitionSelector.js.map +1 -1
  28. package/dist/PartitionSelectorSearch.js +43 -36
  29. package/dist/PartitionSelectorSearch.js.map +1 -1
  30. package/dist/PendingDataBottomBar.js +34 -22
  31. package/dist/PendingDataBottomBar.js.map +1 -1
  32. package/dist/ToastBottomBar.js +5 -3
  33. package/dist/ToastBottomBar.js.map +1 -1
  34. package/dist/format-context-menus/CustomFormatAction.js +34 -25
  35. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  36. package/dist/format-context-menus/FormatContextMenuUtils.js +2 -1
  37. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  38. package/dist/mousehandlers/IrisGridContextMenuHandler.js +50 -36
  39. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  40. package/dist/sidebar/AdvancedSettingsMenu.js +2 -1
  41. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  42. package/dist/sidebar/ChartBuilder.js +134 -107
  43. package/dist/sidebar/ChartBuilder.js.map +1 -1
  44. package/dist/sidebar/CustomColumnBuilder.js +70 -48
  45. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  46. package/dist/sidebar/CustomColumnInput.js +66 -53
  47. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  48. package/dist/sidebar/InputEditor.js +15 -11
  49. package/dist/sidebar/InputEditor.js.map +1 -1
  50. package/dist/sidebar/RollupRows.js +130 -103
  51. package/dist/sidebar/RollupRows.js.map +1 -1
  52. package/dist/sidebar/SelectDistinctBuilder.js +49 -39
  53. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  54. package/dist/sidebar/TableCsvExporter.js +178 -128
  55. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  56. package/dist/sidebar/aggregations/AggregationEdit.js +67 -57
  57. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  58. package/dist/sidebar/aggregations/Aggregations.js +86 -63
  59. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  60. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +30 -22
  61. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  62. package/dist/sidebar/conditional-formatting/ConditionEditor.js +52 -47
  63. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  64. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +52 -42
  65. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  66. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +90 -67
  67. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  68. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +30 -22
  69. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  70. package/dist/sidebar/conditional-formatting/StyleEditor.js +70 -58
  71. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  72. package/dist/sidebar/icons/BarIcon.js +21 -12
  73. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  74. package/dist/sidebar/icons/FormatColumnWhereIcon.js +38 -30
  75. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  76. package/dist/sidebar/icons/FormatRowWhereIcon.js +32 -24
  77. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  78. package/dist/sidebar/icons/HistogramIcon.js +21 -12
  79. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  80. package/dist/sidebar/icons/LineIcon.js +24 -15
  81. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  82. package/dist/sidebar/icons/PieIcon.js +21 -12
  83. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  84. package/dist/sidebar/icons/ScatterIcon.js +71 -62
  85. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  86. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +129 -121
  87. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  88. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +121 -87
  89. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  90. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +40 -26
  91. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  92. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +17 -14
  93. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  94. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +34 -28
  95. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  96. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +2 -2
  97. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  98. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +8 -7
  99. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  100. package/package.json +15 -15
@@ -2,28 +2,30 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { TableUtils } from '@deephaven/jsapi-utils';
3
3
  import Log from '@deephaven/log';
4
4
  import { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from "./ConditionalFormattingUtils.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
5
7
  var log = Log.module('ConditionEditor');
6
8
  var DEFAULT_CALLBACK = () => undefined;
7
- var numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
8
- key: option,
9
- value: option
10
- }, getLabelForNumberCondition(option)));
11
- var stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
12
- key: option,
13
- value: option
14
- }, getLabelForStringCondition(option)));
15
- var dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
16
- key: option,
17
- value: option
18
- }, getLabelForDateCondition(option)));
19
- var booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
20
- key: option,
21
- value: option
22
- }, getLabelForBooleanCondition(option)));
23
- var charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
24
- key: option,
25
- value: option
26
- }, getLabelForCharCondition(option)));
9
+ var numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx("option", {
10
+ value: option,
11
+ children: getLabelForNumberCondition(option)
12
+ }, option));
13
+ var stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx("option", {
14
+ value: option,
15
+ children: getLabelForStringCondition(option)
16
+ }, option));
17
+ var dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx("option", {
18
+ value: option,
19
+ children: getLabelForDateCondition(option)
20
+ }, option));
21
+ var booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx("option", {
22
+ value: option,
23
+ children: getLabelForBooleanCondition(option)
24
+ }, option));
25
+ var charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx("option", {
26
+ value: option,
27
+ children: getLabelForCharCondition(option)
28
+ }, option));
27
29
  function isNumberConditionValid(condition, value, startValue, endValue) {
28
30
  if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {
29
31
  return true;
@@ -44,7 +46,7 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
44
46
  case NumberCondition.GREATER_THAN_OR_EQUAL:
45
47
  case NumberCondition.LESS_THAN:
46
48
  case NumberCondition.LESS_THAN_OR_EQUAL:
47
- return /*#__PURE__*/React.createElement("input", {
49
+ return /*#__PURE__*/_jsx("input", {
48
50
  type: "number",
49
51
  className: "form-control",
50
52
  placeholder: "Enter value",
@@ -52,21 +54,22 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
52
54
  onChange: handleValueChange
53
55
  });
54
56
  case NumberCondition.IS_BETWEEN:
55
- return /*#__PURE__*/React.createElement("div", {
56
- className: "d-flex flex-row"
57
- }, /*#__PURE__*/React.createElement("input", {
58
- type: "number",
59
- className: "form-control d-flex mr-2",
60
- placeholder: "Start value",
61
- value: startValue !== null && startValue !== void 0 ? startValue : '',
62
- onChange: handleStartValueChange
63
- }), /*#__PURE__*/React.createElement("input", {
64
- type: "number",
65
- className: "form-control d-flex",
66
- placeholder: "End value",
67
- value: endValue !== null && endValue !== void 0 ? endValue : '',
68
- onChange: handleEndValueChange
69
- }));
57
+ return /*#__PURE__*/_jsxs("div", {
58
+ className: "d-flex flex-row",
59
+ children: [/*#__PURE__*/_jsx("input", {
60
+ type: "number",
61
+ className: "form-control d-flex mr-2",
62
+ placeholder: "Start value",
63
+ value: startValue !== null && startValue !== void 0 ? startValue : '',
64
+ onChange: handleStartValueChange
65
+ }), /*#__PURE__*/_jsx("input", {
66
+ type: "number",
67
+ className: "form-control d-flex",
68
+ placeholder: "End value",
69
+ value: endValue !== null && endValue !== void 0 ? endValue : '',
70
+ onChange: handleEndValueChange
71
+ })]
72
+ });
70
73
  case NumberCondition.IS_NULL:
71
74
  case NumberCondition.IS_NOT_NULL:
72
75
  return null;
@@ -78,7 +81,7 @@ function getStringInputs(selectedCondition, handleValueChange, conditionValue) {
78
81
  case StringCondition.IS_NOT_NULL:
79
82
  return null;
80
83
  default:
81
- return /*#__PURE__*/React.createElement("input", {
84
+ return /*#__PURE__*/_jsx("input", {
82
85
  type: "text",
83
86
  className: "form-control",
84
87
  placeholder: "Enter value",
@@ -93,7 +96,7 @@ function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
93
96
  case DateCondition.IS_NOT_NULL:
94
97
  return null;
95
98
  default:
96
- return /*#__PURE__*/React.createElement("input", {
99
+ return /*#__PURE__*/_jsx("input", {
97
100
  type: "text",
98
101
  className: "form-control",
99
102
  placeholder: "Enter value",
@@ -111,7 +114,7 @@ function getCharInputs(selectedCondition, handleValueChange, conditionValue) {
111
114
  case CharCondition.IS_NOT_NULL:
112
115
  return null;
113
116
  default:
114
- return /*#__PURE__*/React.createElement("input", {
117
+ return /*#__PURE__*/_jsx("input", {
115
118
  type: "text",
116
119
  className: "form-control",
117
120
  maxLength: 1,
@@ -230,14 +233,16 @@ function ConditionEditor(props) {
230
233
  return getBooleanInputs();
231
234
  }
232
235
  }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);
233
- return /*#__PURE__*/React.createElement("div", {
234
- className: "condition-editor mb-2"
235
- }, /*#__PURE__*/React.createElement("select", {
236
- value: selectedCondition,
237
- "data-testid": "condition-select",
238
- className: "custom-select mb-2",
239
- onChange: handleConditionChange
240
- }, conditions), conditionInputs);
236
+ return /*#__PURE__*/_jsxs("div", {
237
+ className: "condition-editor mb-2",
238
+ children: [/*#__PURE__*/_jsx("select", {
239
+ value: selectedCondition,
240
+ "data-testid": "condition-select",
241
+ className: "custom-select mb-2",
242
+ onChange: handleConditionChange,
243
+ children: conditions
244
+ }), conditionInputs]
245
+ });
241
246
  }
242
247
  export default ConditionEditor;
243
248
  //# sourceMappingURL=ConditionEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","TableUtils","Log","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","isDateConditionValid","getDefaultValueForType","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","value","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","props","column","config","dh","onChange","selectedColumnType","type","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","e","target","debug","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: DhType;\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n) {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => void,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className=\"form-control d-flex mr-2\"\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className=\"form-control d-flex\"\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs() {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction ConditionEditor(props: ConditionEditorProps): JSX.Element {\n const { column, config, dh, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n\n const handleValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n\n useEffect(\n function changeCondition() {\n let isValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isValid = false;\n } else if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isValid = false;\n } else if (\n TableUtils.isDateType(column.type) &&\n !isDateConditionValid(\n dh,\n selectedCondition as DateCondition,\n conditionValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid date condition',\n conditionValue\n );\n isValid = false;\n }\n\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isValid\n );\n },\n [\n onChange,\n column.type,\n dh,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <select\n value={selectedCondition}\n data-testid=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </select>\n {conditionInputs}\n </div>\n );\n}\n\nexport default ConditionEditor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","TableUtils","Log","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","isDateConditionValid","getDefaultValueForType","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","value","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","props","column","config","dh","onChange","selectedColumnType","type","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","e","target","debug","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: DhType;\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n) {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => void,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className=\"form-control d-flex mr-2\"\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className=\"form-control d-flex\"\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs() {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction ConditionEditor(props: ConditionEditorProps): JSX.Element {\n const { column, config, dh, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n\n const handleValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n\n useEffect(\n function changeCondition() {\n let isValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isValid = false;\n } else if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isValid = false;\n } else if (\n TableUtils.isDateType(column.type) &&\n !isDateConditionValid(\n dh,\n selectedCondition as DateCondition,\n conditionValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid date condition',\n conditionValue\n );\n isValid = false;\n }\n\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isValid\n );\n },\n [\n onChange,\n column.type,\n dh,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <select\n value={selectedCondition}\n data-testid=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </select>\n {conditionInputs}\n </div>\n );\n}\n\nexport default ConditionEditor;\n"],"mappings":"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"}
@@ -7,14 +7,16 @@ import ColumnFormatEditor from "./ColumnFormatEditor.js";
7
7
  import RowFormatEditor from "./RowFormatEditor.js";
8
8
  import { FormatterType, isSupportedColumn } from "./ConditionalFormattingUtils.js";
9
9
  import "./ConditionalFormatEditor.css";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
12
  var log = Log.module('ConditionalFormatEditor');
11
13
  var DEFAULT_CALLBACK = () => undefined;
12
14
  function getFormatterTypeIcon(option) {
13
15
  switch (option) {
14
16
  case FormatterType.CONDITIONAL:
15
- return /*#__PURE__*/React.createElement(FormatColumnWhereIcon, null);
17
+ return /*#__PURE__*/_jsx(FormatColumnWhereIcon, {});
16
18
  case FormatterType.ROWS:
17
- return /*#__PURE__*/React.createElement(FormatRowWhereIcon, null);
19
+ return /*#__PURE__*/_jsx(FormatRowWhereIcon, {});
18
20
  }
19
21
  }
20
22
  function getFormatterTypeLabel(option) {
@@ -64,46 +66,54 @@ function ConditionalFormatEditor(props) {
64
66
  setIsValid(isRuleValid);
65
67
  onUpdate(isRuleValid ? updatedRule : undefined);
66
68
  }, [onUpdate, selectedFormatter]);
67
- return /*#__PURE__*/React.createElement("div", {
68
- className: "conditional-format-editor form"
69
- }, /*#__PURE__*/React.createElement("div", {
70
- className: "mb-2"
71
- }, /*#__PURE__*/React.createElement("label", {
72
- className: "mb-0",
73
- htmlFor: "formatter-select"
74
- }, "Select Formatter"), /*#__PURE__*/React.createElement("div", {
75
- className: "formatter-list"
76
- }, formatterTypes.map((type, index) => /*#__PURE__*/React.createElement("div", {
77
- key: type,
78
- className: "formatter-type"
79
- }, /*#__PURE__*/React.createElement("button", {
80
- type: "button",
81
- className: classNames('btn', 'btn-icon', 'btn-formatter-type', {
82
- active: type === selectedFormatter
83
- }),
84
- "data-index": index,
85
- onClick: () => handleFormatterChange(type)
86
- }, getFormatterTypeIcon(type), getFormatterTypeLabel(type)))))), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/React.createElement(ColumnFormatEditor, {
87
- columns: columns,
88
- dh: dh,
89
- config: rule === null || rule === void 0 ? void 0 : rule.config,
90
- onChange: handleRuleChange
91
- }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/React.createElement(RowFormatEditor, {
92
- columns: columns,
93
- config: rule === null || rule === void 0 ? void 0 : rule.config,
94
- dh: dh,
95
- onChange: handleRuleChange
96
- }), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
97
- className: "d-flex justify-content-end my-3"
98
- }, /*#__PURE__*/React.createElement(Button, {
99
- kind: "secondary",
100
- onClick: handleCancel,
101
- className: "mr-2"
102
- }, "Cancel"), /*#__PURE__*/React.createElement(Button, {
103
- kind: "primary",
104
- onClick: handleSave,
105
- disabled: rule === undefined || !isValid
106
- }, "Done")));
69
+ return /*#__PURE__*/_jsxs("div", {
70
+ className: "conditional-format-editor form",
71
+ children: [/*#__PURE__*/_jsxs("div", {
72
+ className: "mb-2",
73
+ children: [/*#__PURE__*/_jsx("label", {
74
+ className: "mb-0",
75
+ htmlFor: "formatter-select",
76
+ children: "Select Formatter"
77
+ }), /*#__PURE__*/_jsx("div", {
78
+ className: "formatter-list",
79
+ children: formatterTypes.map((type, index) => /*#__PURE__*/_jsx("div", {
80
+ className: "formatter-type",
81
+ children: /*#__PURE__*/_jsxs("button", {
82
+ type: "button",
83
+ className: classNames('btn', 'btn-icon', 'btn-formatter-type', {
84
+ active: type === selectedFormatter
85
+ }),
86
+ "data-index": index,
87
+ onClick: () => handleFormatterChange(type),
88
+ children: [getFormatterTypeIcon(type), getFormatterTypeLabel(type)]
89
+ })
90
+ }, type))
91
+ })]
92
+ }), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/_jsx(ColumnFormatEditor, {
93
+ columns: columns,
94
+ dh: dh,
95
+ config: rule === null || rule === void 0 ? void 0 : rule.config,
96
+ onChange: handleRuleChange
97
+ }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/_jsx(RowFormatEditor, {
98
+ columns: columns,
99
+ config: rule === null || rule === void 0 ? void 0 : rule.config,
100
+ dh: dh,
101
+ onChange: handleRuleChange
102
+ }), /*#__PURE__*/_jsx("hr", {}), /*#__PURE__*/_jsxs("div", {
103
+ className: "d-flex justify-content-end my-3",
104
+ children: [/*#__PURE__*/_jsx(Button, {
105
+ kind: "secondary",
106
+ onClick: handleCancel,
107
+ className: "mr-2",
108
+ children: "Cancel"
109
+ }), /*#__PURE__*/_jsx(Button, {
110
+ kind: "primary",
111
+ onClick: handleSave,
112
+ disabled: rule === undefined || !isValid,
113
+ children: "Done"
114
+ })]
115
+ })]
116
+ });
107
117
  }
108
118
  export default ConditionalFormatEditor;
109
119
  //# sourceMappingURL=ConditionalFormatEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalFormatEditor.js","names":["React","useCallback","useState","classNames","Button","Log","FormatColumnWhereIcon","FormatRowWhereIcon","ColumnFormatEditor","RowFormatEditor","FormatterType","isSupportedColumn","log","module","DEFAULT_CALLBACK","undefined","getFormatterTypeIcon","option","CONDITIONAL","ROWS","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","props","columns","originalColumns","dh","onSave","onUpdate","onCancel","rule","defaultRule","filter","selectedFormatter","setFormatter","type","setRule","isValid","setIsValid","handleCancel","handleSave","error","handleFormatterChange","value","debug","handleRuleChange","ruleConfig","isRuleValid","updatedRule","config","map","index","active"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from '../icons';\nimport ColumnFormatEditor from './ColumnFormatEditor';\nimport RowFormatEditor from './RowFormatEditor';\nimport {\n BaseFormatConfig,\n FormatterType,\n FormattingRule,\n isSupportedColumn,\n ModelColumn,\n} from './ConditionalFormattingUtils';\nimport './ConditionalFormatEditor.scss';\n\nconst log = Log.module('ConditionalFormatEditor');\n\nexport type SaveCallback = (rule: FormattingRule) => void;\n\nexport type UpdateCallback = (rule?: FormattingRule) => void;\n\nexport type CancelCallback = () => void;\n\nexport interface ConditionalFormatEditorProps {\n dh: DhType;\n columns: readonly ModelColumn[];\n rule?: FormattingRule;\n onCancel?: CancelCallback;\n onSave?: SaveCallback;\n onUpdate?: UpdateCallback;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction getFormatterTypeIcon(option: FormatterType): JSX.Element | undefined {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return <FormatColumnWhereIcon />;\n case FormatterType.ROWS:\n return <FormatRowWhereIcon />;\n }\n}\n\nfunction getFormatterTypeLabel(option: FormatterType): string {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\n\nconst formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\n\nfunction ConditionalFormatEditor(\n props: ConditionalFormatEditorProps\n): JSX.Element {\n const {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule,\n } = props;\n\n const columns = originalColumns.filter(isSupportedColumn);\n\n const [selectedFormatter, setFormatter] = useState(\n defaultRule?.type ?? formatterTypes[0]\n );\n const [rule, setRule] = useState(defaultRule);\n const [isValid, setIsValid] = useState(false);\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n\n const handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n\n const handleRuleChange = useCallback(\n (ruleConfig, isRuleValid: boolean) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n const updatedRule = {\n type: selectedFormatter,\n config: ruleConfig as BaseFormatConfig,\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n },\n [onUpdate, selectedFormatter]\n );\n\n return (\n <div className=\"conditional-format-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\" htmlFor=\"formatter-select\">\n Select Formatter\n </label>\n\n <div className=\"formatter-list\">\n {formatterTypes.map((type, index) => (\n <div key={type} className=\"formatter-type\">\n <button\n type=\"button\"\n className={classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter,\n })}\n data-index={index}\n onClick={() => handleFormatterChange(type)}\n >\n {getFormatterTypeIcon(type)}\n {getFormatterTypeLabel(type)}\n </button>\n </div>\n ))}\n </div>\n </div>\n {selectedFormatter === FormatterType.CONDITIONAL && (\n <ColumnFormatEditor\n columns={columns}\n dh={dh}\n config={rule?.config}\n onChange={handleRuleChange}\n />\n )}\n {selectedFormatter === FormatterType.ROWS && (\n <RowFormatEditor\n columns={columns}\n config={rule?.config}\n dh={dh}\n onChange={handleRuleChange}\n />\n )}\n <hr />\n <div className=\"d-flex justify-content-end my-3\">\n <Button kind=\"secondary\" onClick={handleCancel} className=\"mr-2\">\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n onClick={handleSave}\n disabled={rule === undefined || !isValid}\n >\n Done\n </Button>\n </div>\n </div>\n );\n}\n\nexport default ConditionalFormatEditor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConditionalFormatEditor.js","names":["React","useCallback","useState","classNames","Button","Log","FormatColumnWhereIcon","FormatRowWhereIcon","ColumnFormatEditor","RowFormatEditor","FormatterType","isSupportedColumn","log","module","DEFAULT_CALLBACK","undefined","getFormatterTypeIcon","option","CONDITIONAL","ROWS","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","props","columns","originalColumns","dh","onSave","onUpdate","onCancel","rule","defaultRule","filter","selectedFormatter","setFormatter","type","setRule","isValid","setIsValid","handleCancel","handleSave","error","handleFormatterChange","value","debug","handleRuleChange","ruleConfig","isRuleValid","updatedRule","config","map","index","active"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from '../icons';\nimport ColumnFormatEditor from './ColumnFormatEditor';\nimport RowFormatEditor from './RowFormatEditor';\nimport {\n BaseFormatConfig,\n FormatterType,\n FormattingRule,\n isSupportedColumn,\n ModelColumn,\n} from './ConditionalFormattingUtils';\nimport './ConditionalFormatEditor.scss';\n\nconst log = Log.module('ConditionalFormatEditor');\n\nexport type SaveCallback = (rule: FormattingRule) => void;\n\nexport type UpdateCallback = (rule?: FormattingRule) => void;\n\nexport type CancelCallback = () => void;\n\nexport interface ConditionalFormatEditorProps {\n dh: DhType;\n columns: readonly ModelColumn[];\n rule?: FormattingRule;\n onCancel?: CancelCallback;\n onSave?: SaveCallback;\n onUpdate?: UpdateCallback;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction getFormatterTypeIcon(option: FormatterType): JSX.Element | undefined {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return <FormatColumnWhereIcon />;\n case FormatterType.ROWS:\n return <FormatRowWhereIcon />;\n }\n}\n\nfunction getFormatterTypeLabel(option: FormatterType): string {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\n\nconst formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\n\nfunction ConditionalFormatEditor(\n props: ConditionalFormatEditorProps\n): JSX.Element {\n const {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule,\n } = props;\n\n const columns = originalColumns.filter(isSupportedColumn);\n\n const [selectedFormatter, setFormatter] = useState(\n defaultRule?.type ?? formatterTypes[0]\n );\n const [rule, setRule] = useState(defaultRule);\n const [isValid, setIsValid] = useState(false);\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n\n const handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n\n const handleRuleChange = useCallback(\n (ruleConfig, isRuleValid: boolean) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n const updatedRule = {\n type: selectedFormatter,\n config: ruleConfig as BaseFormatConfig,\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n },\n [onUpdate, selectedFormatter]\n );\n\n return (\n <div className=\"conditional-format-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\" htmlFor=\"formatter-select\">\n Select Formatter\n </label>\n\n <div className=\"formatter-list\">\n {formatterTypes.map((type, index) => (\n <div key={type} className=\"formatter-type\">\n <button\n type=\"button\"\n className={classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter,\n })}\n data-index={index}\n onClick={() => handleFormatterChange(type)}\n >\n {getFormatterTypeIcon(type)}\n {getFormatterTypeLabel(type)}\n </button>\n </div>\n ))}\n </div>\n </div>\n {selectedFormatter === FormatterType.CONDITIONAL && (\n <ColumnFormatEditor\n columns={columns}\n dh={dh}\n config={rule?.config}\n onChange={handleRuleChange}\n />\n )}\n {selectedFormatter === FormatterType.ROWS && (\n <RowFormatEditor\n columns={columns}\n config={rule?.config}\n dh={dh}\n onChange={handleRuleChange}\n />\n )}\n <hr />\n <div className=\"d-flex justify-content-end my-3\">\n <Button kind=\"secondary\" onClick={handleCancel} className=\"mr-2\">\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n onClick={handleSave}\n disabled={rule === undefined || !isValid}\n >\n Done\n </Button>\n </div>\n </div>\n );\n}\n\nexport default ConditionalFormatEditor;\n"],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
2
6
  import React, { useCallback } from 'react';
3
7
  import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
4
8
  import classNames from 'classnames';
@@ -9,6 +13,8 @@ import { TableUtils } from '@deephaven/jsapi-utils';
9
13
  import Log from '@deephaven/log';
10
14
  import "./ConditionalFormattingMenu.css";
11
15
  import { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition, DateCondition } from "./ConditionalFormattingUtils.js";
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
12
18
  var log = Log.module('ConditionalFormattingMenu');
13
19
  var DEFAULT_CALLBACK = () => undefined;
14
20
  function getRuleValue(config) {
@@ -79,72 +85,89 @@ function ConditionalFormattingMenu(props) {
79
85
  }, [onChange, rules]);
80
86
 
81
87
  // Display list of rules
82
- return /*#__PURE__*/React.createElement("div", {
83
- className: "conditional-formatting-rules"
84
- }, /*#__PURE__*/React.createElement(DragDropContext, {
85
- onDragStart: DragUtils.startDragging,
86
- onDragEnd: handleDragEnd
87
- }, /*#__PURE__*/React.createElement(Droppable, {
88
- droppableId: "droppable-custom-columns"
89
- }, (provided, snapshot) => /*#__PURE__*/React.createElement("div", _extends({
90
- ref: provided.innerRef
91
- // eslint-disable-next-line react/jsx-props-no-spreading
92
- }, provided.droppableProps, {
93
- className: classNames('droppable-container', {
94
- dragging: snapshot.draggingFromThisWith
95
- })
96
- }), rules.length === 0 && /*#__PURE__*/React.createElement("div", {
97
- className: "text-muted pl-2"
98
- }, "No formats defined"), rules.map((rule, index) => /*#__PURE__*/React.createElement(Draggable
99
- // eslint-disable-next-line react/no-array-index-key
100
- , {
101
- key: "".concat(index, "-").concat(rule.type),
102
- draggableId: "".concat(index, "-").concat(rule.type),
103
- index: index,
104
- disableInteractiveElementBlocking: true
105
- },
106
- // eslint-disable-next-line @typescript-eslint/no-shadow
107
- (provided, snapshot) => /*#__PURE__*/React.createElement("div", _extends({
108
- role: "menuitem",
109
- tabIndex: 0,
110
- onClick: e => handleRuleClick(e, rule, index),
111
- className: classNames('draggable-container', {
112
- dragging: snapshot.isDragging
113
- }),
114
- ref: provided.innerRef
115
- // eslint-disable-next-line react/jsx-props-no-spreading
116
- }, provided.draggableProps), /*#__PURE__*/React.createElement("div", {
117
- className: "conditional-formatting-list-item"
118
- }, /*#__PURE__*/React.createElement("div", {
119
- className: "formatting-item"
120
- }, /*#__PURE__*/React.createElement("div", {
121
- className: "rule-icon"
122
- }, /*#__PURE__*/React.createElement("span", {
123
- className: "rule-icon-bg",
124
- style: {
125
- backgroundColor: getBackgroundForStyleConfig(rule.config.style),
126
- color: getColorForStyleConfig(rule.config.style)
127
- }
128
- }, rule.type === FormatterType.ROWS ? 'row' : 'col')), /*#__PURE__*/React.createElement("div", {
129
- className: "rule-title"
130
- }, getRuleTitle(rule.config)), /*#__PURE__*/React.createElement(Button, {
131
- kind: "ghost",
132
- className: "ml-1 px-2",
133
- onClick: e => handleDeleteClick(e, rule, index),
134
- icon: vsTrash,
135
- tooltip: "Delete rule"
136
- }), /*#__PURE__*/React.createElement("button", _extends({
137
- type: "button",
138
- className: "btn btn-link btn-link-icon px-2 btn-drag-handle",
139
- onClick: handleDragHandlerClick
140
- // eslint-disable-next-line react/jsx-props-no-spreading
141
- }, provided.dragHandleProps), /*#__PURE__*/React.createElement(Tooltip, null, "Drag to re-order"), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
142
- icon: vsGripper
143
- }))))))), provided.placeholder))), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement(Button, {
144
- kind: "ghost",
145
- onClick: onCreate,
146
- icon: dhNewCircleLargeFilled
147
- }, "Add New Rule"));
88
+ return /*#__PURE__*/_jsxs("div", {
89
+ className: "conditional-formatting-rules",
90
+ children: [/*#__PURE__*/_jsx(DragDropContext, {
91
+ onDragStart: DragUtils.startDragging,
92
+ onDragEnd: handleDragEnd,
93
+ children: /*#__PURE__*/_jsx(Droppable, {
94
+ droppableId: "droppable-custom-columns",
95
+ children: (provided, snapshot) => /*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({
96
+ ref: provided.innerRef
97
+ // eslint-disable-next-line react/jsx-props-no-spreading
98
+ }, provided.droppableProps), {}, {
99
+ className: classNames('droppable-container', {
100
+ dragging: snapshot.draggingFromThisWith
101
+ }),
102
+ children: [rules.length === 0 && /*#__PURE__*/_jsx("div", {
103
+ className: "text-muted pl-2",
104
+ children: "No formats defined"
105
+ }), rules.map((rule, index) => /*#__PURE__*/_jsx(Draggable
106
+ // eslint-disable-next-line react/no-array-index-key
107
+ , {
108
+ draggableId: "".concat(index, "-").concat(rule.type),
109
+ index: index,
110
+ disableInteractiveElementBlocking: true,
111
+ children:
112
+ // eslint-disable-next-line @typescript-eslint/no-shadow
113
+ (provided, snapshot) => /*#__PURE__*/_jsx("div", _objectSpread(_objectSpread({
114
+ role: "menuitem",
115
+ tabIndex: 0,
116
+ onClick: e => handleRuleClick(e, rule, index),
117
+ className: classNames('draggable-container', {
118
+ dragging: snapshot.isDragging
119
+ }),
120
+ ref: provided.innerRef
121
+ // eslint-disable-next-line react/jsx-props-no-spreading
122
+ }, provided.draggableProps), {}, {
123
+ children: /*#__PURE__*/_jsx("div", {
124
+ className: "conditional-formatting-list-item",
125
+ children: /*#__PURE__*/_jsxs("div", {
126
+ className: "formatting-item",
127
+ children: [/*#__PURE__*/_jsx("div", {
128
+ className: "rule-icon",
129
+ children: /*#__PURE__*/_jsx("span", {
130
+ className: "rule-icon-bg",
131
+ style: {
132
+ backgroundColor: getBackgroundForStyleConfig(rule.config.style),
133
+ color: getColorForStyleConfig(rule.config.style)
134
+ },
135
+ children: rule.type === FormatterType.ROWS ? 'row' : 'col'
136
+ })
137
+ }), /*#__PURE__*/_jsx("div", {
138
+ className: "rule-title",
139
+ children: getRuleTitle(rule.config)
140
+ }), /*#__PURE__*/_jsx(Button, {
141
+ kind: "ghost",
142
+ className: "ml-1 px-2",
143
+ onClick: e => handleDeleteClick(e, rule, index),
144
+ icon: vsTrash,
145
+ tooltip: "Delete rule"
146
+ }), /*#__PURE__*/_jsxs("button", _objectSpread(_objectSpread({
147
+ type: "button",
148
+ className: "btn btn-link btn-link-icon px-2 btn-drag-handle",
149
+ onClick: handleDragHandlerClick
150
+ // eslint-disable-next-line react/jsx-props-no-spreading
151
+ }, provided.dragHandleProps), {}, {
152
+ children: [/*#__PURE__*/_jsx(Tooltip, {
153
+ children: "Drag to re-order"
154
+ }), /*#__PURE__*/_jsx(FontAwesomeIcon, {
155
+ icon: vsGripper
156
+ })]
157
+ }))]
158
+ })
159
+ })
160
+ }))
161
+ }, "".concat(index, "-").concat(rule.type))), provided.placeholder]
162
+ }))
163
+ })
164
+ }), /*#__PURE__*/_jsx("hr", {}), /*#__PURE__*/_jsx(Button, {
165
+ kind: "ghost",
166
+ onClick: onCreate,
167
+ icon: dhNewCircleLargeFilled,
168
+ children: "Add New Rule"
169
+ })]
170
+ });
148
171
  }
149
172
  export default ConditionalFormattingMenu;
150
173
  //# sourceMappingURL=ConditionalFormattingMenu.js.map