@deephaven/iris-grid 0.43.0 → 0.44.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/AdvancedFilterCreator.css +106 -0
  2. package/dist/AdvancedFilterCreator.css.map +1 -0
  3. package/dist/AdvancedFilterCreator.js +541 -0
  4. package/dist/AdvancedFilterCreator.js.map +1 -0
  5. package/dist/AdvancedFilterCreatorFilterItem.css +9 -0
  6. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -0
  7. package/dist/AdvancedFilterCreatorFilterItem.js +184 -0
  8. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -0
  9. package/dist/AdvancedFilterCreatorSelectValue.css +50 -0
  10. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -0
  11. package/dist/AdvancedFilterCreatorSelectValue.js +301 -0
  12. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -0
  13. package/dist/AdvancedFilterCreatorSelectValueList.js +272 -0
  14. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -0
  15. package/dist/ColumnHeaderGroup.js +61 -0
  16. package/dist/ColumnHeaderGroup.js.map +1 -0
  17. package/dist/ColumnStatistics.css +76 -0
  18. package/dist/ColumnStatistics.css.map +1 -0
  19. package/dist/ColumnStatistics.js +202 -0
  20. package/dist/ColumnStatistics.js.map +1 -0
  21. package/dist/CommonTypes.js +2 -0
  22. package/dist/CommonTypes.js.map +1 -0
  23. package/dist/CrossColumnSearch.css +35 -0
  24. package/dist/CrossColumnSearch.css.map +1 -0
  25. package/dist/CrossColumnSearch.js +199 -0
  26. package/dist/CrossColumnSearch.js.map +1 -0
  27. package/dist/FilterInputField.css +56 -0
  28. package/dist/FilterInputField.css.map +1 -0
  29. package/dist/FilterInputField.js +232 -0
  30. package/dist/FilterInputField.js.map +1 -0
  31. package/dist/GotoRow.css +45 -0
  32. package/dist/GotoRow.css.map +1 -0
  33. package/dist/GotoRow.js +298 -0
  34. package/dist/GotoRow.js.map +1 -0
  35. package/dist/IrisGrid.css +359 -0
  36. package/dist/IrisGrid.css.map +1 -0
  37. package/dist/IrisGrid.js +3651 -0
  38. package/dist/IrisGrid.js.map +1 -0
  39. package/dist/IrisGridBottomBar.css +85 -0
  40. package/dist/IrisGridBottomBar.css.map +1 -0
  41. package/dist/IrisGridBottomBar.js +36 -0
  42. package/dist/IrisGridBottomBar.js.map +1 -0
  43. package/dist/IrisGridCellOverflowModal.css +17 -0
  44. package/dist/IrisGridCellOverflowModal.css.map +1 -0
  45. package/dist/IrisGridCellOverflowModal.js +157 -0
  46. package/dist/IrisGridCellOverflowModal.js.map +1 -0
  47. package/dist/IrisGridCellRendererUtils.js +20 -0
  48. package/dist/IrisGridCellRendererUtils.js.map +1 -0
  49. package/dist/IrisGridCopyHandler.css +64 -0
  50. package/dist/IrisGridCopyHandler.css.map +1 -0
  51. package/dist/IrisGridCopyHandler.js +331 -0
  52. package/dist/IrisGridCopyHandler.js.map +1 -0
  53. package/dist/IrisGridDataBarCellRenderer.js +10 -0
  54. package/dist/IrisGridDataBarCellRenderer.js.map +1 -0
  55. package/dist/IrisGridIcons.js +25 -0
  56. package/dist/IrisGridIcons.js.map +1 -0
  57. package/dist/IrisGridMetricCalculator.js +33 -0
  58. package/dist/IrisGridMetricCalculator.js.map +1 -0
  59. package/dist/IrisGridModel.js +263 -0
  60. package/dist/IrisGridModel.js.map +1 -0
  61. package/dist/IrisGridModelFactory.js +27 -0
  62. package/dist/IrisGridModelFactory.js.map +1 -0
  63. package/dist/IrisGridModelUpdater.js +96 -0
  64. package/dist/IrisGridModelUpdater.js.map +1 -0
  65. package/dist/IrisGridPartitionSelector.css +48 -0
  66. package/dist/IrisGridPartitionSelector.css.map +1 -0
  67. package/dist/IrisGridPartitionSelector.js +198 -0
  68. package/dist/IrisGridPartitionSelector.js.map +1 -0
  69. package/dist/IrisGridProxyModel.js +530 -0
  70. package/dist/IrisGridProxyModel.js.map +1 -0
  71. package/dist/IrisGridRenderer.js +779 -0
  72. package/dist/IrisGridRenderer.js.map +1 -0
  73. package/dist/IrisGridShortcuts.js +59 -0
  74. package/dist/IrisGridShortcuts.js.map +1 -0
  75. package/dist/IrisGridTableModel.js +273 -0
  76. package/dist/IrisGridTableModel.js.map +1 -0
  77. package/dist/IrisGridTableModelTemplate.js +1589 -0
  78. package/dist/IrisGridTableModelTemplate.js.map +1 -0
  79. package/dist/IrisGridTestUtils.js +121 -0
  80. package/dist/IrisGridTestUtils.js.map +1 -0
  81. package/dist/IrisGridTextCellRenderer.js +139 -0
  82. package/dist/IrisGridTextCellRenderer.js.map +1 -0
  83. package/dist/IrisGridTheme.js +96 -0
  84. package/dist/IrisGridTheme.js.map +1 -0
  85. package/dist/IrisGridTheme.module.css +69 -0
  86. package/dist/IrisGridTheme.module.css.map +1 -0
  87. package/dist/IrisGridTreeTableModel.js +145 -0
  88. package/dist/IrisGridTreeTableModel.js.map +1 -0
  89. package/dist/IrisGridUtils.js +1279 -0
  90. package/dist/IrisGridUtils.js.map +1 -0
  91. package/dist/MissingKeyError.js +15 -0
  92. package/dist/MissingKeyError.js.map +1 -0
  93. package/dist/PartitionSelectorSearch.css +22 -0
  94. package/dist/PartitionSelectorSearch.css.map +1 -0
  95. package/dist/PartitionSelectorSearch.js +317 -0
  96. package/dist/PartitionSelectorSearch.js.map +1 -0
  97. package/dist/PendingDataBottomBar.css +13 -0
  98. package/dist/PendingDataBottomBar.css.map +1 -0
  99. package/dist/PendingDataBottomBar.js +98 -0
  100. package/dist/PendingDataBottomBar.js.map +1 -0
  101. package/dist/TableViewportUpdater.js +156 -0
  102. package/dist/TableViewportUpdater.js.map +1 -0
  103. package/dist/ToastBottomBar.js +42 -0
  104. package/dist/ToastBottomBar.js.map +1 -0
  105. package/dist/TreeTableViewportUpdater.js +96 -0
  106. package/dist/TreeTableViewportUpdater.js.map +1 -0
  107. package/dist/declaration.d.js +2 -0
  108. package/dist/declaration.d.js.map +1 -0
  109. package/dist/format-context-menus/CustomFormatAction.css +25 -0
  110. package/dist/format-context-menus/CustomFormatAction.css.map +1 -0
  111. package/dist/format-context-menus/CustomFormatAction.js +132 -0
  112. package/dist/format-context-menus/CustomFormatAction.js.map +1 -0
  113. package/dist/format-context-menus/DateTimeFormatContextMenu.js +53 -0
  114. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -0
  115. package/dist/format-context-menus/DecimalFormatContextMenu.js +59 -0
  116. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -0
  117. package/dist/format-context-menus/FormatContextMenuUtils.js +63 -0
  118. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -0
  119. package/dist/format-context-menus/IntegerFormatContextMenu.js +43 -0
  120. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -0
  121. package/dist/format-context-menus/index.js +4 -0
  122. package/dist/format-context-menus/index.js.map +1 -0
  123. package/dist/index.js +24 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/key-handlers/ClearFilterKeyHandler.js +21 -0
  126. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -0
  127. package/dist/key-handlers/CopyKeyHandler.js +31 -0
  128. package/dist/key-handlers/CopyKeyHandler.js.map +1 -0
  129. package/dist/key-handlers/ReverseKeyHandler.js +32 -0
  130. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -0
  131. package/dist/key-handlers/index.js +4 -0
  132. package/dist/key-handlers/index.js.map +1 -0
  133. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +175 -0
  134. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -0
  135. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +139 -0
  136. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -0
  137. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +83 -0
  138. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -0
  139. package/dist/mousehandlers/IrisGridContextMenuHandler.css +19 -0
  140. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -0
  141. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1220 -0
  142. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -0
  143. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +28 -0
  144. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -0
  145. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +80 -0
  146. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -0
  147. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +126 -0
  148. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -0
  149. package/dist/mousehandlers/IrisGridSortMouseHandler.js +46 -0
  150. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -0
  151. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +151 -0
  152. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -0
  153. package/dist/mousehandlers/PendingMouseHandler.js +39 -0
  154. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -0
  155. package/dist/mousehandlers/index.js +11 -0
  156. package/dist/mousehandlers/index.js.map +1 -0
  157. package/dist/sidebar/AdvancedSettings.js +6 -0
  158. package/dist/sidebar/AdvancedSettings.js.map +1 -0
  159. package/dist/sidebar/AdvancedSettingsMenu.js +29 -0
  160. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -0
  161. package/dist/sidebar/AdvancedSettingsType.js +7 -0
  162. package/dist/sidebar/AdvancedSettingsType.js.map +1 -0
  163. package/dist/sidebar/ChartBuilder.css +56 -0
  164. package/dist/sidebar/ChartBuilder.css.map +1 -0
  165. package/dist/sidebar/ChartBuilder.js +443 -0
  166. package/dist/sidebar/ChartBuilder.js.map +1 -0
  167. package/dist/sidebar/CustomColumnBuilder.css +58 -0
  168. package/dist/sidebar/CustomColumnBuilder.css.map +1 -0
  169. package/dist/sidebar/CustomColumnBuilder.js +384 -0
  170. package/dist/sidebar/CustomColumnBuilder.js.map +1 -0
  171. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  172. package/dist/sidebar/CustomColumnInput.js +91 -0
  173. package/dist/sidebar/CustomColumnInput.js.map +1 -0
  174. package/dist/sidebar/InputEditor.css +35 -0
  175. package/dist/sidebar/InputEditor.css.map +1 -0
  176. package/dist/sidebar/InputEditor.d.ts +4 -2
  177. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  178. package/dist/sidebar/InputEditor.js +180 -0
  179. package/dist/sidebar/InputEditor.js.map +1 -0
  180. package/dist/sidebar/OptionType.js +19 -0
  181. package/dist/sidebar/OptionType.js.map +1 -0
  182. package/dist/sidebar/RollupRows.css +120 -0
  183. package/dist/sidebar/RollupRows.css.map +1 -0
  184. package/dist/sidebar/RollupRows.js +519 -0
  185. package/dist/sidebar/RollupRows.js.map +1 -0
  186. package/dist/sidebar/SelectDistinctBuilder.css +41 -0
  187. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -0
  188. package/dist/sidebar/SelectDistinctBuilder.js +155 -0
  189. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -0
  190. package/dist/sidebar/TableCsvExporter.css +32 -0
  191. package/dist/sidebar/TableCsvExporter.css.map +1 -0
  192. package/dist/sidebar/TableCsvExporter.js +399 -0
  193. package/dist/sidebar/TableCsvExporter.js.map +1 -0
  194. package/dist/sidebar/TableSaver.js +487 -0
  195. package/dist/sidebar/TableSaver.js.map +1 -0
  196. package/dist/sidebar/aggregations/AggregationEdit.css +61 -0
  197. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -0
  198. package/dist/sidebar/aggregations/AggregationEdit.js +155 -0
  199. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -0
  200. package/dist/sidebar/aggregations/AggregationOperation.js +19 -0
  201. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -0
  202. package/dist/sidebar/aggregations/AggregationUtils.js +59 -0
  203. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -0
  204. package/dist/sidebar/aggregations/Aggregations.css +43 -0
  205. package/dist/sidebar/aggregations/Aggregations.css.map +1 -0
  206. package/dist/sidebar/aggregations/Aggregations.js +178 -0
  207. package/dist/sidebar/aggregations/Aggregations.js.map +1 -0
  208. package/dist/sidebar/aggregations/index.js +2 -0
  209. package/dist/sidebar/aggregations/index.js.map +1 -0
  210. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +123 -0
  211. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
  212. package/dist/sidebar/conditional-formatting/ConditionEditor.js +243 -0
  213. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
  214. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +22 -0
  215. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
  216. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +109 -0
  217. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
  218. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +18 -0
  219. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
  220. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +57 -0
  221. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
  222. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +150 -0
  223. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
  224. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +635 -0
  225. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
  226. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +122 -0
  227. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
  228. package/dist/sidebar/conditional-formatting/StyleEditor.css +55 -0
  229. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
  230. package/dist/sidebar/conditional-formatting/StyleEditor.js +150 -0
  231. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
  232. package/dist/sidebar/icons/BarIcon.js +24 -0
  233. package/dist/sidebar/icons/BarIcon.js.map +1 -0
  234. package/dist/sidebar/icons/FormatColumnWhereIcon.js +42 -0
  235. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
  236. package/dist/sidebar/icons/FormatRowWhereIcon.js +36 -0
  237. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
  238. package/dist/sidebar/icons/HistogramIcon.js +24 -0
  239. package/dist/sidebar/icons/HistogramIcon.js.map +1 -0
  240. package/dist/sidebar/icons/LineIcon.js +27 -0
  241. package/dist/sidebar/icons/LineIcon.js.map +1 -0
  242. package/dist/sidebar/icons/PieIcon.js +24 -0
  243. package/dist/sidebar/icons/PieIcon.js.map +1 -0
  244. package/dist/sidebar/icons/ScatterIcon.js +74 -0
  245. package/dist/sidebar/icons/ScatterIcon.js.map +1 -0
  246. package/dist/sidebar/icons/index.js +8 -0
  247. package/dist/sidebar/icons/index.js.map +1 -0
  248. package/dist/sidebar/index.d.ts +1 -0
  249. package/dist/sidebar/index.d.ts.map +1 -1
  250. package/dist/sidebar/index.js +19 -0
  251. package/dist/sidebar/index.js.map +1 -0
  252. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +68 -0
  253. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -0
  254. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +964 -0
  255. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -0
  256. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +132 -0
  257. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -0
  258. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +29 -0
  259. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -0
  260. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +188 -0
  261. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -0
  262. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +81 -0
  263. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -0
  264. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +30 -0
  265. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -0
  266. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +158 -0
  267. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -0
  268. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +146 -0
  269. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -0
  270. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +59 -0
  271. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -0
  272. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +139 -0
  273. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -0
  274. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +44 -0
  275. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -0
  276. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +129 -0
  277. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -0
  278. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +4 -0
  279. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -0
  280. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +261 -0
  281. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -0
  282. package/package.json +15 -15
@@ -0,0 +1,120 @@
1
+ /* stylelint-disable scss/at-import-no-partial-leading-underscore */
2
+ .rollup-rows {
3
+ display: flex;
4
+ flex-direction: column;
5
+ justify-content: flex-start;
6
+ outline: 0;
7
+ margin: 0;
8
+ padding: 0;
9
+ height: 100%;
10
+ }
11
+ .rollup-rows .section-title {
12
+ margin: 0 0.5rem;
13
+ padding-bottom: 0;
14
+ }
15
+ .rollup-rows .top-menu,
16
+ .rollup-rows .bottom-menu {
17
+ display: flex;
18
+ flex-direction: row;
19
+ justify-content: space-between;
20
+ padding: 0.25rem;
21
+ z-index: 2;
22
+ }
23
+ .rollup-rows .top-menu .btn-link-icon,
24
+ .rollup-rows .bottom-menu .btn-link-icon {
25
+ min-width: 1rem;
26
+ padding: 0 0.5rem;
27
+ margin-right: 0.25rem;
28
+ }
29
+ .rollup-rows .top-menu .btn-link-icon:first-of-type,
30
+ .rollup-rows .bottom-menu .btn-link-icon:first-of-type {
31
+ margin-left: 0.25rem;
32
+ }
33
+ .rollup-rows .top-menu .btn-link-icon.active,
34
+ .rollup-rows .bottom-menu .btn-link-icon.active {
35
+ color: #f0f0ee;
36
+ }
37
+ .rollup-rows .top-menu .btn-link-icon:hover,
38
+ .rollup-rows .bottom-menu .btn-link-icon:hover {
39
+ color: #4878ea;
40
+ }
41
+ .rollup-rows .top-menu .label,
42
+ .rollup-rows .bottom-menu .label {
43
+ font-weight: 500;
44
+ }
45
+ .rollup-rows .bottom-menu {
46
+ margin-left: 0;
47
+ padding-left: 0.5rem;
48
+ border-top: 1px solid #1a171a;
49
+ padding-top: 0.5rem;
50
+ }
51
+ .rollup-rows .bottom-menu .custom-checkbox {
52
+ font-size: smaller;
53
+ margin-left: 0.25rem;
54
+ }
55
+ .rollup-rows .bottom-menu .custom-checkbox .custom-control-label {
56
+ padding-top: 2px;
57
+ }
58
+ .rollup-rows .item-list-scroll-pane {
59
+ border: none;
60
+ padding-top: 0;
61
+ padding-bottom: 0;
62
+ }
63
+ .rollup-rows .rollup-rows-group-by {
64
+ display: flex;
65
+ flex-direction: column;
66
+ background-color: #373438;
67
+ }
68
+ .rollup-rows .rollup-rows-group-by .draggable-item-list {
69
+ flex-grow: 1;
70
+ transition: height 0.15s;
71
+ }
72
+ .rollup-rows .rollup-rows-group-by .btn-delete-grouping {
73
+ margin-right: 0.5rem;
74
+ padding: 0 0.5rem;
75
+ }
76
+ .rollup-rows .rollup-rows-group-by .placeholder {
77
+ margin: 0.5rem;
78
+ padding: 1rem;
79
+ text-align: center;
80
+ border: dashed 1px;
81
+ }
82
+ .rollup-rows .rollup-rows-available-columns {
83
+ display: flex;
84
+ flex-direction: column;
85
+ background-color: #403e41;
86
+ flex-grow: 1;
87
+ }
88
+ .rollup-rows .rollup-rows-available-columns .draggable-item-list {
89
+ flex-grow: 1;
90
+ }
91
+ .rollup-rows.is-dragging .rollup-rows-group-by .placeholder {
92
+ border: dashed 1px transparent;
93
+ background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
94
+ background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
95
+ background-position: 0 top, 0 bottom, left 0, right 0;
96
+ background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
97
+ animation: march 0.5s;
98
+ animation-timing-function: linear;
99
+ animation-iteration-count: infinite;
100
+ }
101
+ .rollup-rows.is-dragging .rollup-rows-group-by .item-list-scroll-pane {
102
+ background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
103
+ background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
104
+ background-position: 0 top, 0 bottom, left 0, right 0;
105
+ background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
106
+ animation: march 0.5s;
107
+ animation-timing-function: linear;
108
+ animation-iteration-count: infinite;
109
+ }
110
+ .rollup-rows.is-dragging .rollup-rows-available-columns .draggable-item-list:not(.is-dragging-from-this) .item-list-scroll-pane {
111
+ background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
112
+ background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
113
+ background-position: 0 top, 0 bottom, left 0, right 0;
114
+ background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
115
+ animation: march 0.5s;
116
+ animation-timing-function: linear;
117
+ animation-iteration-count: infinite;
118
+ }
119
+
120
+ /*# sourceMappingURL=RollupRows.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/sidebar/RollupRows.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACQA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA,SCzBO;ED0BP;;AAEA;AAAA;EACE;EACA;EACA,cC/BK;;ADgCL;AAAA;EACE,aCjCG;;ADoCL;AAAA;EACE,OE1BS;;AF6BX;AAAA;EACE,OE/BQ;;AFmCZ;AAAA;EACE;;AAIJ;EACE;EACA,cCnDO;EDoDP;EACA,aCrDO;;ADsDP;EACE;EACA,aCzDK;;AD0DL;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,kBElDO;;AFoDP;EACE;EACA;;AAGF;EACE,cChFK;EDiFL;;AAGF;EACE,QCrFK;EDsFL,SCrFK;EDsFL;EACA;;AAIJ;EACE;EACA;EACA,kBE1EO;EF2EP;;AACA;EACE;;AAMA;EACE;EC1FN;EAIA;EAEA;EACA;EACA;EACA;EACA;;ADoFI;EC9FJ;EAIA;EAEA;EACA;EACA;EACA;EACA;;AD2FI;ECrGJ;EAIA;EAEA;EACA;EACA;EACA;EACA","file":"RollupRows.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$draggable-item-hover-bg: $secondary;\n$draggable-item-selected-bg: rgba($primary, 0.4);\n$draggable-item-selected-hover-bg: $primary;\n$draggable-item-border: $input-border-width solid transparent;\n$row-selected-bg-color: rgba($primary, 0.4);\n\n.rollup-rows {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n outline: 0;\n margin: 0;\n padding: 0;\n height: 100%;\n\n .section-title {\n margin: 0 $spacer-2;\n padding-bottom: 0;\n }\n\n .top-menu,\n .bottom-menu {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: $spacer-1;\n z-index: 2;\n\n .btn-link-icon {\n min-width: 1rem;\n padding: 0 $spacer-2;\n margin-right: $spacer-1;\n &:first-of-type {\n margin-left: $spacer-1;\n }\n\n &.active {\n color: $foreground;\n }\n\n &:hover {\n color: $primary;\n }\n }\n\n .label {\n font-weight: 500;\n }\n }\n\n .bottom-menu {\n margin-left: 0;\n padding-left: $spacer-2;\n border-top: 1px solid $background;\n padding-top: $spacer-2;\n .custom-checkbox {\n font-size: smaller;\n margin-left: $spacer-1;\n .custom-control-label {\n padding-top: 2px;\n }\n }\n }\n\n .item-list-scroll-pane {\n border: none;\n padding-top: 0;\n padding-bottom: 0;\n }\n\n .rollup-rows-group-by {\n display: flex;\n flex-direction: column;\n background-color: $gray-800;\n\n .draggable-item-list {\n flex-grow: 1;\n transition: height $transition;\n }\n\n .btn-delete-grouping {\n margin-right: $spacer-2;\n padding: 0 $spacer-2;\n }\n\n .placeholder {\n margin: $spacer-2;\n padding: $spacer-3;\n text-align: center;\n border: dashed 1px;\n }\n }\n\n .rollup-rows-available-columns {\n display: flex;\n flex-direction: column;\n background-color: $gray-700;\n flex-grow: 1;\n .draggable-item-list {\n flex-grow: 1;\n }\n }\n\n &.is-dragging {\n .rollup-rows-group-by {\n .placeholder {\n border: dashed 1px transparent;\n @include ants-base($foreground, $background);\n }\n\n .item-list-scroll-pane {\n @include ants-base($foreground, $background);\n }\n }\n\n .rollup-rows-available-columns\n .draggable-item-list:not(.is-dragging-from-this) {\n .item-list-scroll-pane {\n @include ants-base($foreground, $background);\n }\n }\n }\n}\n","//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size: $ant-size $ant-thickness, $ant-size $ant-thickness,\n $ant-thickness $ant-size, $ant-thickness $ant-size;\n background-position: 0 top, 0 bottom, left 0, right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 0.12;\n$hover-bg-transparency: 0.14;\n$active-bg-transparency: 0.28;\n$exception-transparency: 0.13;\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -0,0 +1,519 @@
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); }
2
+ 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; }
3
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
4
+ 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); }
5
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
6
+ import React, { Component } from 'react';
7
+ import classNames from 'classnames';
8
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
+ import { DragDropContext, Droppable } from 'react-beautiful-dnd';
10
+ import { Checkbox, DraggableItemList, DragUtils, SearchInput, Tooltip, Button } from '@deephaven/components';
11
+ import { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';
12
+ import { TableUtils } from '@deephaven/jsapi-utils';
13
+ import memoize from 'memoizee';
14
+ import debounce from 'lodash.debounce';
15
+ import Log from '@deephaven/log';
16
+ import { assertNotNull } from '@deephaven/utils';
17
+ import "./RollupRows.css";
18
+ var log = Log.module('RollupRows');
19
+ var DEBOUNCE_SEARCH = 150;
20
+ var GROUPED_LIST_ID = 'grouped-rollup-rows';
21
+ var UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';
22
+ class RollupRows extends Component {
23
+ static renderColumn(_ref) {
24
+ var {
25
+ item,
26
+ isClone,
27
+ selectedCount
28
+ } = _ref;
29
+ var text = item === null || item === void 0 ? void 0 : item.name;
30
+ var badgeText = isClone !== undefined && isClone ? "".concat(selectedCount) : undefined;
31
+ var className = isClone !== undefined && isClone ? 'item-list-item-clone' : '';
32
+ return DraggableItemList.renderTextItem({
33
+ text,
34
+ badgeText,
35
+ className
36
+ });
37
+ }
38
+ static addGroupings(currentGroupings, newGroupings) {
39
+ var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentGroupings.length;
40
+ if (newGroupings == null || newGroupings.length === 0) {
41
+ return currentGroupings;
42
+ }
43
+ var insertIndex = index;
44
+ var groupings = currentGroupings.filter((grouping, i) => {
45
+ if (newGroupings.includes(grouping)) {
46
+ if (i < insertIndex) {
47
+ insertIndex -= 1;
48
+ }
49
+ return false;
50
+ }
51
+ return true;
52
+ });
53
+ groupings.splice(insertIndex, 0, ...newGroupings);
54
+ return groupings;
55
+ }
56
+ static isGroupable(column) {
57
+ return !TableUtils.isDecimalType(column.type);
58
+ }
59
+ constructor(props) {
60
+ super(props);
61
+ _defineProperty(this, "ungroupedList", void 0);
62
+ _defineProperty(this, "groupedList", void 0);
63
+ _defineProperty(this, "search", debounce(searchFilter => {
64
+ var columns = this.getSortedUngroupedColumns();
65
+ var selectedRanges = [];
66
+ var focusIndex = null;
67
+ for (var i = 0; i < columns.length; i += 1) {
68
+ var column = columns[i];
69
+ if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {
70
+ if (focusIndex == null) {
71
+ focusIndex = i;
72
+ }
73
+ selectedRanges.push([i, i]);
74
+ }
75
+ }
76
+ assertNotNull(focusIndex);
77
+ this.setState({
78
+ ungroupedSelectedRanges: selectedRanges
79
+ });
80
+ if (selectedRanges.length > 0 && this.ungroupedList.current) {
81
+ this.ungroupedList.current.scrollToItem(focusIndex);
82
+ }
83
+ }, DEBOUNCE_SEARCH));
84
+ _defineProperty(this, "getCachedUngroupedColumns", memoize((columns, groupedColumns) => columns.filter(column => RollupRows.isGroupable(column) && groupedColumns.find(name => name === column.name) == null)));
85
+ _defineProperty(this, "getCachedSortedColumns", memoize((columns, sort) => sort == null ? [...columns] : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)));
86
+ this.handleDeleteClicked = this.handleDeleteClicked.bind(this);
87
+ this.handleSearchChange = this.handleSearchChange.bind(this);
88
+ this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);
89
+ this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(this);
90
+ this.handleDragStart = this.handleDragStart.bind(this);
91
+ this.handleDragEnd = this.handleDragEnd.bind(this);
92
+ this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(this);
93
+ this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(this);
94
+ this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(this);
95
+ this.handleSortAscending = this.handleSortAscending.bind(this);
96
+ this.handleSortDescending = this.handleSortDescending.bind(this);
97
+ this.renderGroupedItem = this.renderGroupedItem.bind(this);
98
+ this.ungroupedList = /*#__PURE__*/React.createRef();
99
+ this.groupedList = /*#__PURE__*/React.createRef();
100
+ var {
101
+ config
102
+ } = props;
103
+ var {
104
+ columns: _columns = [],
105
+ showConstituents = true,
106
+ showNonAggregatedColumns = true
107
+ } = config !== null && config !== void 0 ? config : {};
108
+ this.state = {
109
+ ungroupedSelectedRanges: [],
110
+ columns: _columns,
111
+ groupedSelectedRanges: [],
112
+ searchFilter: '',
113
+ showConstituents,
114
+ showNonAggregatedColumns,
115
+ dragSource: null,
116
+ sort: null
117
+ };
118
+ }
119
+ componentDidUpdate(prevProps, prevState) {
120
+ var {
121
+ config
122
+ } = this.props;
123
+ var {
124
+ columns,
125
+ showConstituents,
126
+ showNonAggregatedColumns
127
+ } = this.state;
128
+ if (config !== prevProps.config) {
129
+ this.updateFromConfig();
130
+ } else if (columns !== prevState.columns || showConstituents !== prevState.showConstituents || showNonAggregatedColumns !== prevState.showNonAggregatedColumns) {
131
+ if (config == null || columns !== config.columns || showConstituents !== config.showConstituents || showNonAggregatedColumns !== config.showNonAggregatedColumns) {
132
+ this.sendChange();
133
+ }
134
+ }
135
+ }
136
+ componentWillUnmount() {
137
+ this.search.cancel();
138
+ }
139
+ handleSearchChange(event) {
140
+ var searchFilter = event.target.value;
141
+ this.setState({
142
+ searchFilter
143
+ });
144
+ if (!searchFilter) {
145
+ this.search.cancel();
146
+ this.resetSelection();
147
+ return;
148
+ }
149
+ this.search(searchFilter);
150
+ }
151
+ handleSortAscending() {
152
+ this.setState(_ref2 => {
153
+ var {
154
+ sort
155
+ } = _ref2;
156
+ return {
157
+ sort: sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING
158
+ };
159
+ });
160
+ }
161
+ handleSortDescending() {
162
+ this.setState(_ref3 => {
163
+ var {
164
+ sort
165
+ } = _ref3;
166
+ return {
167
+ sort: sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING
168
+ };
169
+ });
170
+ }
171
+ resetSelection() {
172
+ this.setState({
173
+ ungroupedSelectedRanges: [],
174
+ groupedSelectedRanges: []
175
+ });
176
+ }
177
+ handleDragStart(e) {
178
+ log.debug('handleDragStart', e);
179
+ document.documentElement.classList.add('drag-pointer-events-none');
180
+ this.setState({
181
+ dragSource: e.source
182
+ });
183
+ }
184
+ handleDragEnd(e) {
185
+ log.debug('handleDragEnd', e);
186
+ document.documentElement.classList.remove('drag-pointer-events-none');
187
+ this.setState({
188
+ dragSource: null
189
+ });
190
+ var {
191
+ destination,
192
+ source
193
+ } = e;
194
+ if (destination == null || source == null) {
195
+ return;
196
+ }
197
+
198
+ // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,
199
+ // it must have came from the grouped list. Remove those grouped columns.
200
+ if (destination.droppableId === UNGROUPED_LIST_ID) {
201
+ this.setState(_ref4 => {
202
+ var {
203
+ groupedSelectedRanges,
204
+ columns
205
+ } = _ref4;
206
+ var newColumns = [...columns];
207
+ DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);
208
+ return {
209
+ columns: newColumns,
210
+ ungroupedSelectedRanges: [],
211
+ groupedSelectedRanges: []
212
+ };
213
+ });
214
+ return;
215
+ }
216
+
217
+ // Otherwise, it must be dropping into the grouped list, so we just need to check the source
218
+ var isSameList = source.droppableId === GROUPED_LIST_ID;
219
+ var destinationIndex = destination.index;
220
+ if (isSameList && source.index < destination.index) {
221
+ // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection
222
+ // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as
223
+ // we adjust the index based on all the selected ranges, not just the source.index.
224
+ destinationIndex += 1;
225
+ }
226
+ this.setState(_ref5 => {
227
+ var {
228
+ columns,
229
+ ungroupedSelectedRanges,
230
+ groupedSelectedRanges
231
+ } = _ref5;
232
+ var newColumns = [...columns];
233
+ var sourceItems = isSameList ? newColumns : this.getSortedUngroupedColumns().map(c => c.name);
234
+ var sourceRanges = isSameList ? groupedSelectedRanges : ungroupedSelectedRanges;
235
+ var draggedItems = DragUtils.reorder(sourceItems, sourceRanges, newColumns, destinationIndex);
236
+
237
+ // Select the newly dropped items
238
+ var insertIndex = isSameList ? DragUtils.adjustDestinationIndex(destinationIndex, groupedSelectedRanges) : destinationIndex;
239
+ var newSelectedRanges = [[insertIndex, insertIndex + draggedItems.length - 1]];
240
+ return {
241
+ columns: newColumns,
242
+ ungroupedSelectedRanges: [],
243
+ groupedSelectedRanges: newSelectedRanges
244
+ };
245
+ });
246
+ this.resetSelection();
247
+ }
248
+ handleUngroupedSelect(itemIndex) {
249
+ log.debug('handleUngroupedSelect');
250
+ this.setState(_ref6 => {
251
+ var {
252
+ columns
253
+ } = _ref6;
254
+ return {
255
+ columns: RollupRows.addGroupings(columns, [this.getSortedUngroupedColumns()[itemIndex].name]),
256
+ ungroupedSelectedRanges: [],
257
+ groupedSelectedRanges: []
258
+ };
259
+ });
260
+ }
261
+ handleUngroupedSelectionChange(ungroupedSelectedRanges) {
262
+ log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);
263
+ this.setState(_ref7 => {
264
+ var {
265
+ ungroupedSelectedRanges: stateUngroupedSelectedRanges
266
+ } = _ref7;
267
+ if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {
268
+ return null;
269
+ }
270
+ return {
271
+ ungroupedSelectedRanges,
272
+ groupedSelectedRanges: []
273
+ };
274
+ });
275
+ }
276
+ handleGroupedSelectionChange(groupedSelectedRanges) {
277
+ log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);
278
+ this.setState(_ref8 => {
279
+ var {
280
+ groupedSelectedRanges: stateGroupedSelectedRanges
281
+ } = _ref8;
282
+ if (groupedSelectedRanges === stateGroupedSelectedRanges) {
283
+ return null;
284
+ }
285
+ return {
286
+ groupedSelectedRanges,
287
+ ungroupedSelectedRanges: []
288
+ };
289
+ });
290
+ }
291
+ handleDeleteClicked(index) {
292
+ this.setState(_ref9 => {
293
+ var {
294
+ columns
295
+ } = _ref9;
296
+ var newColumns = columns.slice();
297
+ newColumns.splice(index, 1);
298
+ return {
299
+ columns: newColumns
300
+ };
301
+ });
302
+ }
303
+ handleShowConstituentsChange() {
304
+ this.setState(_ref10 => {
305
+ var {
306
+ showConstituents
307
+ } = _ref10;
308
+ return {
309
+ showConstituents: !showConstituents
310
+ };
311
+ });
312
+ }
313
+ handleShowNonAggregatedColumnsChange() {
314
+ this.setState(_ref11 => {
315
+ var {
316
+ showNonAggregatedColumns
317
+ } = _ref11;
318
+ return {
319
+ showNonAggregatedColumns: !showNonAggregatedColumns
320
+ };
321
+ });
322
+ }
323
+ updateFromConfig() {
324
+ var {
325
+ config
326
+ } = this.props;
327
+ var {
328
+ columns = [],
329
+ showConstituents = true,
330
+ showNonAggregatedColumns = true
331
+ } = config !== null && config !== void 0 ? config : {};
332
+ this.setState({
333
+ columns,
334
+ showConstituents,
335
+ showNonAggregatedColumns
336
+ });
337
+ }
338
+ sendChange() {
339
+ var {
340
+ onChange
341
+ } = this.props;
342
+ var {
343
+ columns,
344
+ showConstituents,
345
+ showNonAggregatedColumns
346
+ } = this.state;
347
+ onChange({
348
+ columns,
349
+ showConstituents,
350
+ showNonAggregatedColumns
351
+ });
352
+ }
353
+ getUngroupedColumns() {
354
+ var {
355
+ model
356
+ } = this.props;
357
+ var {
358
+ columns
359
+ } = this.state;
360
+ var {
361
+ originalColumns
362
+ } = model;
363
+ return this.getCachedUngroupedColumns(originalColumns, columns);
364
+ }
365
+ getSortedUngroupedColumns() {
366
+ var {
367
+ sort
368
+ } = this.state;
369
+ var columns = this.getUngroupedColumns();
370
+ return this.getCachedSortedColumns(columns, sort);
371
+ }
372
+ renderGroupedItem(_ref12) {
373
+ var {
374
+ item,
375
+ itemIndex,
376
+ isClone,
377
+ selectedCount
378
+ } = _ref12;
379
+ var indent = isClone !== undefined && isClone ? '' : '\u00A0\u00A0'.repeat(itemIndex);
380
+ var text = "".concat(indent).concat(item);
381
+ var badgeText = isClone !== undefined && isClone ? "".concat(selectedCount) : undefined;
382
+ var className = isClone !== undefined && isClone ? 'item-list-item-clone' : '';
383
+ return /*#__PURE__*/React.createElement(React.Fragment, null, DraggableItemList.renderTextItem({
384
+ text,
385
+ badgeText,
386
+ className
387
+ }), (isClone === undefined || !isClone) && /*#__PURE__*/React.createElement(Button, {
388
+ kind: "ghost",
389
+ className: "btn btn-link btn-link-icon btn-delete-grouping float-right",
390
+ onClick: () => this.handleDeleteClicked(itemIndex)
391
+ }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
392
+ icon: vsTrash
393
+ })));
394
+ }
395
+ render() {
396
+ var {
397
+ columns,
398
+ dragSource,
399
+ searchFilter,
400
+ groupedSelectedRanges,
401
+ ungroupedSelectedRanges,
402
+ showConstituents,
403
+ showNonAggregatedColumns,
404
+ sort
405
+ } = this.state;
406
+ var ungroupedColumns = this.getSortedUngroupedColumns();
407
+ var groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;
408
+ if ((dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) === UNGROUPED_LIST_ID) {
409
+ groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;
410
+ }
411
+ var ungroupMaxListHeight = ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;
412
+ var ungroupMinListHeight = Math.min(3 * DraggableItemList.DEFAULT_ROW_HEIGHT, ungroupMaxListHeight);
413
+ return /*#__PURE__*/React.createElement("div", {
414
+ role: "menu",
415
+ className: classNames('rollup-rows', {
416
+ 'is-dragging': dragSource != null
417
+ }),
418
+ tabIndex: 0
419
+ }, /*#__PURE__*/React.createElement(DragDropContext, {
420
+ onDragEnd: this.handleDragEnd,
421
+ onDragStart: this.handleDragStart
422
+ }, /*#__PURE__*/React.createElement("div", {
423
+ className: "rollup-rows-group-by"
424
+ }, /*#__PURE__*/React.createElement("div", {
425
+ className: "section-title"
426
+ }, "Group By"), columns.length === 0 && /*#__PURE__*/React.createElement(Droppable, {
427
+ droppableId: "placeholder"
428
+ }, (provided, snapshot) => /*#__PURE__*/React.createElement("div", _extends({
429
+ className: classNames('placeholder', 'text-muted', {
430
+ 'is-dragging-from-this': snapshot.draggingFromThisWith,
431
+ 'is-dragging-over': snapshot.isDraggingOver,
432
+ 'is-dropping': snapshot.draggingOverWith
433
+ }),
434
+ ref: provided.innerRef
435
+ // eslint-disable-next-line react/jsx-props-no-spreading
436
+ }, provided.droppableProps), "To create a rollup, drag columns from the list below and drop them into this area.")), columns.length > 0 && /*#__PURE__*/React.createElement(DraggableItemList, {
437
+ draggingItemClassName: "rollup-rows-dragging-grouped-item",
438
+ draggablePrefix: GROUPED_LIST_ID,
439
+ droppableId: GROUPED_LIST_ID,
440
+ itemCount: columns.length,
441
+ items: columns,
442
+ offset: 0,
443
+ onSelectionChange: this.handleGroupedSelectionChange,
444
+ ref: this.groupedList,
445
+ renderItem: this.renderGroupedItem,
446
+ selectedRanges: groupedSelectedRanges,
447
+ style: {
448
+ height: groupListHeight
449
+ },
450
+ isMultiSelect: true
451
+ })), /*#__PURE__*/React.createElement("div", {
452
+ className: "rollup-rows-available-columns"
453
+ }, /*#__PURE__*/React.createElement("div", {
454
+ className: "section-title"
455
+ }, "Available Grouping Columns"), /*#__PURE__*/React.createElement("div", {
456
+ className: "top-menu"
457
+ }, /*#__PURE__*/React.createElement(SearchInput, {
458
+ className: "w-100",
459
+ value: searchFilter,
460
+ matchCount: searchFilter ? ungroupedSelectedRanges.length : undefined,
461
+ placeholder: "Find column...",
462
+ onChange: this.handleSearchChange
463
+ }), /*#__PURE__*/React.createElement(Button, {
464
+ kind: "ghost",
465
+ className: classNames('btn-link btn-link-icon', {
466
+ active: sort === RollupRows.SORT.ASCENDING
467
+ }),
468
+ onClick: this.handleSortAscending
469
+ }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
470
+ icon: dhSortAlphaDown
471
+ }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort ascending")), /*#__PURE__*/React.createElement(Button, {
472
+ kind: "ghost",
473
+ className: classNames('btn-link btn-link-icon', {
474
+ active: sort === RollupRows.SORT.DESCENDING
475
+ }),
476
+ onClick: this.handleSortDescending
477
+ }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
478
+ icon: dhSortAlphaUp
479
+ }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort descending"))), /*#__PURE__*/React.createElement(DraggableItemList, {
480
+ className: "rollup-available-grouping-columns",
481
+ draggablePrefix: UNGROUPED_LIST_ID,
482
+ droppableId: UNGROUPED_LIST_ID,
483
+ itemCount: ungroupedColumns.length,
484
+ items: ungroupedColumns,
485
+ renderItem: RollupRows.renderColumn,
486
+ offset: 0,
487
+ onSelect: this.handleUngroupedSelect,
488
+ onSelectionChange: this.handleUngroupedSelectionChange,
489
+ ref: this.ungroupedList,
490
+ selectedRanges: ungroupedSelectedRanges,
491
+ style: {
492
+ maxHeight: ungroupMaxListHeight,
493
+ minHeight: ungroupMinListHeight
494
+ },
495
+ isDropDisabled: (dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) !== GROUPED_LIST_ID,
496
+ isMultiSelect: true
497
+ }), /*#__PURE__*/React.createElement("div", {
498
+ className: "bottom-menu"
499
+ }, /*#__PURE__*/React.createElement("div", {
500
+ className: "label"
501
+ }, "Show:"), /*#__PURE__*/React.createElement(Checkbox, {
502
+ checked: showConstituents,
503
+ onChange: this.handleShowConstituentsChange
504
+ }, "Constituents"), /*#__PURE__*/React.createElement(Checkbox, {
505
+ checked: showNonAggregatedColumns,
506
+ onChange: this.handleShowNonAggregatedColumnsChange
507
+ }, "Non-Aggregated Columns")))));
508
+ }
509
+ }
510
+ _defineProperty(RollupRows, "SORT", Object.freeze({
511
+ ASCENDING: 'ASC',
512
+ DESCENDING: 'DESC'
513
+ }));
514
+ _defineProperty(RollupRows, "defaultProps", {
515
+ config: null,
516
+ onChange: () => undefined
517
+ });
518
+ export default RollupRows;
519
+ //# sourceMappingURL=RollupRows.js.map