@mwater/visualization 5.1.0 → 5.3.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 (305) hide show
  1. package/lib/ColorComponent.d.ts +10 -11
  2. package/lib/ColorComponent.js +78 -29
  3. package/lib/ColorSchemeFactory.d.ts +13 -2
  4. package/lib/ColorSchemeFactory.js +7 -5
  5. package/lib/CustomColorsContext.d.ts +6 -0
  6. package/lib/CustomColorsContext.js +6 -0
  7. package/lib/FiltersDesignerComponent.d.ts +1 -4
  8. package/lib/FiltersDesignerComponent.js +2 -3
  9. package/lib/GlobalFilter.d.ts +13 -0
  10. package/lib/GlobalFilter.js +2 -0
  11. package/lib/LocaleContextInjector.d.ts +5 -11
  12. package/lib/LocaleContextInjector.js +4 -12
  13. package/lib/MWaterAddRelatedFormComponent.js +3 -3
  14. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
  15. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  16. package/lib/MWaterCompleteTableSelectComponent.d.ts +7 -25
  17. package/lib/MWaterCompleteTableSelectComponent.js +36 -36
  18. package/lib/MWaterContextComponent.d.ts +19 -9
  19. package/lib/MWaterContextComponent.js +38 -22
  20. package/lib/MWaterCustomTablesetListComponent.js +9 -3
  21. package/lib/MWaterGlobalFiltersComponent.d.ts +6 -5
  22. package/lib/MWaterGlobalFiltersComponent.js +4 -4
  23. package/lib/MWaterLoaderComponent.d.ts +15 -3
  24. package/lib/MWaterLoaderComponent.js +11 -2
  25. package/lib/MWaterTableSelectComponent.d.ts +1 -4
  26. package/lib/MWaterTableSelectComponent.js +10 -12
  27. package/lib/UIComponents.d.ts +2 -2
  28. package/lib/UIComponents.js +4 -12
  29. package/lib/axes/Axis.d.ts +20 -25
  30. package/lib/axes/AxisBuilder.d.ts +7 -4
  31. package/lib/axes/AxisBuilder.js +12 -8
  32. package/lib/axes/AxisComponent.d.ts +6 -9
  33. package/lib/axes/AxisComponent.js +1 -2
  34. package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
  35. package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
  36. package/lib/dashboards/DashboardComponent.d.ts +4 -17
  37. package/lib/dashboards/DashboardComponent.js +20 -67
  38. package/lib/dashboards/DashboardDesign.d.ts +5 -20
  39. package/lib/dashboards/DashboardUpgrader.js +36 -1
  40. package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
  41. package/lib/dashboards/DashboardViewComponent.js +112 -136
  42. package/lib/dashboards/FontStyleEditor.d.ts +8 -0
  43. package/lib/dashboards/FontStyleEditor.js +130 -0
  44. package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
  45. package/lib/dashboards/LayoutOptionsComponent.js +209 -39
  46. package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
  47. package/lib/dashboards/ServerDashboardDataSource.js +52 -33
  48. package/lib/dashboards/SettingsModalComponent.d.ts +4 -15
  49. package/lib/dashboards/SettingsModalComponent.js +24 -38
  50. package/lib/dashboards/WidgetComponent.d.ts +3 -3
  51. package/lib/dashboards/WidgetComponent.js +3 -6
  52. package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
  53. package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
  54. package/lib/dashboards/layoutOptions.d.ts +83 -0
  55. package/lib/dashboards/layoutOptions.js +436 -10
  56. package/lib/datagrids/DatagridComponent.d.ts +2 -9
  57. package/lib/datagrids/DatagridDataSource.d.ts +3 -3
  58. package/lib/datagrids/DatagridDataSource.js +0 -14
  59. package/lib/datagrids/DatagridDesign.d.ts +7 -6
  60. package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -93
  61. package/lib/datagrids/DatagridDesignerComponent.js +8 -6
  62. package/lib/datagrids/DatagridViewComponent.js +1 -1
  63. package/lib/datagrids/FindReplaceModalComponent.d.ts +4 -20
  64. package/lib/datagrids/FindReplaceModalComponent.js +27 -13
  65. package/lib/datagrids/ServerDatagridDataSource.d.ts +8 -7
  66. package/lib/datagrids/ServerDatagridDataSource.js +88 -36
  67. package/lib/demo.js +4 -4
  68. package/lib/index.css +5 -0
  69. package/lib/index.d.ts +2 -1
  70. package/lib/index.js +0 -1
  71. package/lib/layouts/LayoutManager.d.ts +33 -29
  72. package/lib/layouts/LayoutManager.js +2 -8
  73. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -56
  74. package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
  75. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
  76. package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
  77. package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
  78. package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
  79. package/lib/layouts/grid/GridLayoutManager.d.ts +2 -1
  80. package/lib/mWaterLoader.d.ts +2 -0
  81. package/lib/mWaterLoader.js +2 -1
  82. package/lib/maps/AddLayerComponent.d.ts +6 -8
  83. package/lib/maps/AddLayerComponent.js +6 -6
  84. package/lib/maps/BingLayer.js +10 -20
  85. package/lib/maps/BufferLayer.js +5 -2
  86. package/lib/maps/ChoroplethLayer.js +2 -1
  87. package/lib/maps/ClusterLayer.js +3 -1
  88. package/lib/maps/DirectMapDataSource.d.ts +5 -2
  89. package/lib/maps/DirectMapDataSource.js +2 -1
  90. package/lib/maps/EditPopupComponent.js +2 -1
  91. package/lib/maps/GridLayer.js +5 -3
  92. package/lib/maps/GridLayerDesigner.js +0 -1
  93. package/lib/maps/LayerSwitcherComponent.js +1 -1
  94. package/lib/maps/MapComponent.d.ts +3 -11
  95. package/lib/maps/MapComponent.js +3 -3
  96. package/lib/maps/MapDesign.d.ts +2 -13
  97. package/lib/maps/MapFiltersDesignerComponent.d.ts +0 -4
  98. package/lib/maps/MapFiltersDesignerComponent.js +4 -5
  99. package/lib/maps/MarkersLayer.js +30 -25
  100. package/lib/maps/RasterMapViewComponent.d.ts +3 -13
  101. package/lib/maps/RasterMapViewComponent.js +3 -3
  102. package/lib/maps/RegionSelectComponent.d.ts +2 -1
  103. package/lib/maps/ServerMapDataSource.d.ts +3 -4
  104. package/lib/maps/ServerMapDataSource.js +5 -5
  105. package/lib/maps/VectorMapViewComponent.js +2 -1
  106. package/lib/maps/mapSymbols.js +2 -0
  107. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  108. package/lib/maps/vectorMaps.d.ts +1 -0
  109. package/lib/maps/vectorMaps.js +70 -56
  110. package/lib/quickfilter/QuickfilterCompiler.d.ts +1 -1
  111. package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
  112. package/lib/quickfilter/QuickfiltersComponent.js +3 -3
  113. package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
  114. package/lib/richtext/DropdownPaletteItem.js +82 -0
  115. package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
  116. package/lib/richtext/FontColorPaletteItem.js +32 -27
  117. package/lib/richtext/ItemsHtmlConverter.js +12 -3
  118. package/lib/richtext/RichTextComponent.d.ts +26 -52
  119. package/lib/richtext/RichTextComponent.js +166 -128
  120. package/lib/valueFormatter.js +6 -1
  121. package/lib/wellknown.d.ts +5 -0
  122. package/lib/wellknown.js +288 -0
  123. package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
  124. package/lib/widgets/DropdownWidgetComponent.js +48 -25
  125. package/lib/widgets/IFrameWidgetComponent.d.ts +3 -11
  126. package/lib/widgets/ImageWidgetComponent.d.ts +8 -27
  127. package/lib/widgets/MapWidget.d.ts +4 -7
  128. package/lib/widgets/MapWidget.js +2 -1
  129. package/lib/widgets/MarkdownWidget.d.ts +2 -7
  130. package/lib/widgets/TOCWidget.d.ts +2 -9
  131. package/lib/widgets/TOCWidget.js +2 -1
  132. package/lib/widgets/Widget.d.ts +2 -0
  133. package/lib/widgets/WidgetDataSource.d.ts +3 -1
  134. package/lib/widgets/charts/Chart.d.ts +0 -1
  135. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  136. package/lib/widgets/charts/ChartViewComponent.js +11 -3
  137. package/lib/widgets/charts/ChartWidget.d.ts +1 -74
  138. package/lib/widgets/charts/ChartWidget.js +4 -183
  139. package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
  140. package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
  141. package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
  142. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
  143. package/lib/widgets/charts/imagemosaic/ImagePopupComponent.d.ts +2 -7
  144. package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
  145. package/lib/widgets/charts/layered/LayeredChart.js +6 -7
  146. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
  147. package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
  148. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
  149. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +5 -31
  150. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
  151. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -7
  152. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
  153. package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
  154. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
  155. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -105
  156. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
  157. package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
  158. package/lib/widgets/charts/pivot/PivotChart.js +47 -17
  159. package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
  160. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +11 -7
  161. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
  162. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
  163. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
  164. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
  165. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
  166. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
  167. package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
  168. package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -47
  169. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
  170. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +55 -58
  171. package/lib/widgets/charts/table/TableChart.js +8 -4
  172. package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
  173. package/lib/widgets/charts/table/TableChartViewComponent.js +30 -16
  174. package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -13
  175. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -13
  176. package/lib/widgets/text/TextComponent.d.ts +5 -12
  177. package/lib/widgets/text/TextComponent.js +19 -39
  178. package/lib/widgets/text/TextWidget.d.ts +2 -1
  179. package/lib/widgets/text/TextWidget.js +5 -1
  180. package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
  181. package/lib/widgets/text/TextWidgetComponent.js +76 -19
  182. package/lib/widgets/text/TextWidgetDesign.d.ts +16 -2
  183. package/lib/widgets/text/TextWidgetDesign.js +6 -0
  184. package/package.json +4 -4
  185. package/src/ColorComponent.tsx +177 -0
  186. package/src/ColorSchemeFactory.ts +12 -6
  187. package/src/CustomColorsContext.tsx +8 -0
  188. package/src/FiltersDesignerComponent.ts +3 -4
  189. package/src/GlobalFilter.ts +17 -0
  190. package/src/LocaleContextInjector.tsx +14 -13
  191. package/src/MWaterAddRelatedFormComponent.ts +3 -3
  192. package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
  193. package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
  194. package/src/MWaterContextComponent.tsx +42 -33
  195. package/src/MWaterCustomTablesetListComponent.tsx +21 -3
  196. package/src/MWaterGlobalFiltersComponent.ts +8 -8
  197. package/src/MWaterLoaderComponent.ts +14 -4
  198. package/src/MWaterTableSelectComponent.tsx +11 -12
  199. package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
  200. package/src/axes/Axis.ts +24 -25
  201. package/src/axes/AxisBuilder.ts +16 -13
  202. package/src/axes/AxisComponent.ts +3 -4
  203. package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
  204. package/src/dashboards/DashboardComponent.tsx +73 -147
  205. package/src/dashboards/DashboardDesign.ts +5 -25
  206. package/src/dashboards/DashboardUpgrader.ts +41 -1
  207. package/src/dashboards/DashboardViewComponent.tsx +313 -0
  208. package/src/dashboards/FontStyleEditor.tsx +166 -0
  209. package/src/dashboards/LayoutOptionsComponent.tsx +377 -71
  210. package/src/dashboards/ServerDashboardDataSource.ts +52 -33
  211. package/src/dashboards/SettingsModalComponent.tsx +170 -0
  212. package/src/dashboards/WidgetComponent.tsx +6 -12
  213. package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
  214. package/src/dashboards/layoutOptions.tsx +581 -0
  215. package/src/datagrids/DatagridDataSource.ts +6 -12
  216. package/src/datagrids/DatagridDesign.ts +8 -3
  217. package/src/datagrids/DatagridDesignerComponent.tsx +22 -18
  218. package/src/datagrids/DatagridViewComponent.ts +3 -3
  219. package/src/datagrids/ExprCellComponent.ts +0 -1
  220. package/src/datagrids/FindReplaceModalComponent.ts +39 -22
  221. package/src/datagrids/ServerDatagridDataSource.ts +107 -45
  222. package/src/demo.ts +4 -4
  223. package/src/index.css +5 -0
  224. package/src/index.ts +2 -1
  225. package/src/layouts/LayoutManager.ts +44 -42
  226. package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
  227. package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
  228. package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
  229. package/src/mWaterLoader.ts +4 -1
  230. package/src/maps/AddLayerComponent.ts +9 -9
  231. package/src/maps/BingLayer.ts +16 -26
  232. package/src/maps/BufferLayer.ts +5 -2
  233. package/src/maps/ChoroplethLayer.ts +2 -1
  234. package/src/maps/ClusterLayer.ts +3 -1
  235. package/src/maps/DirectMapDataSource.ts +12 -3
  236. package/src/maps/EditPopupComponent.ts +2 -1
  237. package/src/maps/GridLayer.ts +5 -3
  238. package/src/maps/GridLayerDesigner.tsx +0 -1
  239. package/src/maps/LayerSwitcherComponent.tsx +1 -1
  240. package/src/maps/MapComponent.ts +3 -3
  241. package/src/maps/MapDesign.ts +2 -17
  242. package/src/maps/{MapFiltersDesignerComponent.ts → MapFiltersDesignerComponent.tsx} +25 -25
  243. package/src/maps/MarkersLayer.ts +38 -41
  244. package/src/maps/RasterMapViewComponent.ts +3 -3
  245. package/src/maps/ServerMapDataSource.ts +8 -8
  246. package/src/maps/VectorMapViewComponent.tsx +2 -2
  247. package/src/maps/mapSymbols.ts +2 -0
  248. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  249. package/src/maps/vectorMaps.tsx +88 -74
  250. package/src/quickfilter/QuickfilterCompiler.ts +1 -1
  251. package/src/quickfilter/QuickfiltersComponent.ts +3 -3
  252. package/src/richtext/DropdownPaletteItem.tsx +144 -0
  253. package/src/richtext/FontColorPaletteItem.tsx +160 -0
  254. package/src/richtext/ItemsHtmlConverter.ts +15 -5
  255. package/src/richtext/RichTextComponent.tsx +274 -232
  256. package/src/valueFormatter.ts +5 -1
  257. package/src/wellknown.ts +286 -0
  258. package/src/widgets/DropdownWidgetComponent.tsx +75 -0
  259. package/src/widgets/MapWidget.ts +5 -2
  260. package/src/widgets/TOCWidget.ts +2 -1
  261. package/src/widgets/Widget.ts +3 -0
  262. package/src/widgets/WidgetDataSource.ts +3 -1
  263. package/src/widgets/charts/Chart.ts +1 -1
  264. package/src/widgets/charts/ChartViewComponent.ts +16 -3
  265. package/src/widgets/charts/ChartWidget.ts +3 -275
  266. package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
  267. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
  268. package/src/widgets/charts/layered/LayeredChart.ts +4 -6
  269. package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
  270. package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
  271. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
  272. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
  273. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
  274. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
  275. package/src/widgets/charts/pivot/PivotChart.ts +56 -18
  276. package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
  277. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
  278. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
  279. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
  280. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
  281. package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
  282. package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
  283. package/src/widgets/charts/table/TableChart.ts +8 -4
  284. package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
  285. package/src/widgets/charts/table/TableChartViewComponent.ts +32 -19
  286. package/src/widgets/text/TextComponent.tsx +47 -49
  287. package/src/widgets/text/TextWidget.ts +8 -3
  288. package/src/widgets/text/TextWidgetComponent.tsx +249 -0
  289. package/src/widgets/text/TextWidgetDesign.ts +26 -2
  290. package/src/ColorComponent.ts +0 -117
  291. package/src/dashboards/DashboardViewComponent.ts +0 -304
  292. package/src/dashboards/SettingsModalComponent.ts +0 -169
  293. package/src/dashboards/layoutOptions.ts +0 -40
  294. package/src/layout-styles.css +0 -263
  295. package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
  296. package/src/layouts/grid/GridLayoutComponent.ts +0 -67
  297. package/src/layouts/grid/GridLayoutManager.ts +0 -185
  298. package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
  299. package/src/layouts/grid/PaletteItemComponent.ts +0 -28
  300. package/src/layouts/grid/README.md +0 -14
  301. package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
  302. package/src/richtext/FontColorPaletteItem.ts +0 -172
  303. package/src/richtext/FontSizePaletteItem.ts +0 -110
  304. package/src/widgets/DropdownWidgetComponent.ts +0 -78
  305. package/src/widgets/text/TextWidgetComponent.ts +0 -120
@@ -37,6 +37,7 @@ const mapboxUtils_1 = require("./mapboxUtils");
37
37
  const LayerLegendComponent_1 = __importDefault(require("./LayerLegendComponent"));
38
38
  const PopupFilterJoinsUtils = __importStar(require("./PopupFilterJoinsUtils"));
39
39
  const HoverContent_1 = __importDefault(require("./HoverContent"));
40
+ const layoutOptions_1 = require("../dashboards/layoutOptions");
40
41
  class MarkersLayer extends Layer_1.default {
41
42
  /** Gets the type of layer definition */
42
43
  getLayerDefinitionType() {
@@ -71,11 +72,7 @@ class MarkersLayer extends Layer_1.default {
71
72
  "fill-color": color,
72
73
  "fill-opacity": (design.polygonFillOpacity ?? 0.25) * opacity
73
74
  },
74
- filter: addFilter([
75
- "any",
76
- ["==", ["geometry-type"], "Polygon"],
77
- ["==", ["geometry-type"], "MultiPolygon"]
78
- ])
75
+ filter: addFilter(["any", ["==", ["geometry-type"], "Polygon"], ["==", ["geometry-type"], "MultiPolygon"]])
79
76
  });
80
77
  // Add polygon outlines and lines
81
78
  mapLayers.push({
@@ -88,11 +85,7 @@ class MarkersLayer extends Layer_1.default {
88
85
  "line-width": design.lineWidth != null ? design.lineWidth : 3,
89
86
  "line-opacity": opacity
90
87
  },
91
- filter: addFilter([
92
- "any",
93
- ["==", ["geometry-type"], "Polygon"],
94
- ["==", ["geometry-type"], "MultiPolygon"]
95
- ])
88
+ filter: addFilter(["any", ["==", ["geometry-type"], "Polygon"], ["==", ["geometry-type"], "MultiPolygon"]])
96
89
  });
97
90
  // Add lines
98
91
  mapLayers.push({
@@ -105,11 +98,7 @@ class MarkersLayer extends Layer_1.default {
105
98
  "line-width": design.lineWidth != null ? design.lineWidth : 3,
106
99
  "line-opacity": opacity
107
100
  },
108
- filter: addFilter([
109
- "any",
110
- ["==", ["geometry-type"], "LineString"],
111
- ["==", ["geometry-type"], "MultiLineString"]
112
- ])
101
+ filter: addFilter(["any", ["==", ["geometry-type"], "LineString"], ["==", ["geometry-type"], "MultiLineString"]])
113
102
  });
114
103
  if (!design.symbol) {
115
104
  mapLayers.push({
@@ -165,7 +154,7 @@ class MarkersLayer extends Layer_1.default {
165
154
  const exprCompiler = new expressions_1.ExprCompiler(schema);
166
155
  // Compile geometry axis
167
156
  const geometryExpr = axisBuilder.compileAxis({ axis: design.axes.geometry, tableAlias: "basequery" });
168
- // Select _id, location
157
+ // Select _id, location
169
158
  const basequery = {
170
159
  type: "query",
171
160
  selects: [
@@ -174,7 +163,7 @@ class MarkersLayer extends Layer_1.default {
174
163
  expr: { type: "field", tableAlias: "basequery", column: schema.getTable(design.table).primaryKey },
175
164
  alias: "id"
176
165
  },
177
- { type: "select", expr: geometryExpr, alias: "the_geom_webmercator" }, // geometry as the_geom_webmercator
166
+ { type: "select", expr: geometryExpr, alias: "the_geom_webmercator" } // geometry as the_geom_webmercator
178
167
  ],
179
168
  from: exprCompiler.compileTable(design.table, "basequery")
180
169
  };
@@ -440,7 +429,7 @@ line-width: ` +
440
429
  JSON.stringify(item.value) +
441
430
  "][geometry_type='ST_Polygon'],#layer0[color=" +
442
431
  JSON.stringify(item.value) +
443
- `][geometry_type='ST_MultiPolygon'] {
432
+ `][geometry_type='ST_MultiPolygon'] {
444
433
  polygon-fill: ` +
445
434
  item.color +
446
435
  `;\
@@ -459,15 +448,25 @@ ${design.polygonBorderColor ? "line-color: " + design.polygonBorderColor + ";" :
459
448
  const results = {};
460
449
  // Popup
461
450
  if (hoverOptions.design.hoverOver) {
462
- // Create filter using popupFilterJoins
463
- const popupFilterJoins = hoverOptions.design.popupFilterJoins || PopupFilterJoinsUtils.createDefaultPopupFilterJoins(table);
464
- const popupFilters = PopupFilterJoinsUtils.createPopupFilters(popupFilterJoins, hoverOptions.schema, table, ev.data.id);
451
+ const exprCompiler = new expressions_1.ExprCompiler(hoverOptions.schema);
465
452
  results.hoverOver = react_1.default.createElement(HoverContent_1.default, {
466
453
  key: ev.data.id,
467
454
  schema: hoverOptions.schema,
468
455
  dataSource: hoverOptions.dataSource,
469
456
  design: hoverOptions.design,
470
- filters: popupFilters
457
+ filters: [
458
+ {
459
+ table,
460
+ jsonql: {
461
+ type: "op",
462
+ op: "=",
463
+ exprs: [
464
+ exprCompiler.compileExpr({ expr: { type: "id", table }, tableAlias: "{alias}" }),
465
+ { type: "literal", value: ev.data.id }
466
+ ]
467
+ }
468
+ }
469
+ ]
471
470
  });
472
471
  }
473
472
  return results;
@@ -543,7 +542,7 @@ ${design.polygonBorderColor ? "line-color: " + design.polygonBorderColor + ";" :
543
542
  const WidgetFactory = require("../widgets/WidgetFactory").default;
544
543
  results.popup = new BlocksLayoutManager().renderLayout({
545
544
  items: clickOptions.design.popup.items,
546
- style: "popup",
545
+ layoutOptions: (0, layoutOptions_1.getDefaultLayoutOptions)("default"),
547
546
  renderWidget: (options) => {
548
547
  const widget = WidgetFactory.createWidget(options.type);
549
548
  const filters = clickOptions.filters.concat(popupFilters);
@@ -806,7 +805,13 @@ function createMarkersVectorQuery(baseQuery) {
806
805
  }
807
806
  });
808
807
  // Bubble up selects that are not cluster or geometry to the outer query
809
- const innerSelects = baseQuery.selects.filter(select => select.alias !== "the_geom_webmercator").map(select => ({ type: "select", expr: { type: "field", tableAlias: "innerquery", column: select.alias }, alias: select.alias }));
808
+ const innerSelects = baseQuery.selects
809
+ .filter(select => select.alias !== "the_geom_webmercator")
810
+ .map(select => ({
811
+ type: "select",
812
+ expr: { type: "field", tableAlias: "innerquery", column: select.alias },
813
+ alias: select.alias
814
+ }));
810
815
  // Create outer query which takes where r <= 3 to limit # of points in a cluster
811
816
  // Wrap geometry in ST_Force2D to avoid https://trac.osgeo.org/postgis/ticket/4690 (https://github.com/mWater/mwater-server/issues/495)
812
817
  const outerquery = {
@@ -828,7 +833,7 @@ function createMarkersVectorQuery(baseQuery) {
828
833
  ]
829
834
  },
830
835
  alias: "the_geom_webmercator"
831
- }, // innerquery.the_geom_webmercator as the_geom_webmercator
836
+ } // innerquery.the_geom_webmercator as the_geom_webmercator
832
837
  ],
833
838
  from: { type: "subquery", query: innerquery, alias: "innerquery" },
834
839
  where: { type: "op", op: "<=", exprs: [{ type: "field", tableAlias: "innerquery", column: "r" }, 3] }
@@ -1,7 +1,7 @@
1
- import PropTypes from "prop-types";
2
1
  import React, { ReactNode } from "react";
3
2
  import LeafletMapComponent from "./LeafletMapComponent";
4
3
  import { Schema, DataSource } from "@mwater/expressions";
4
+ import ModalPopupComponent from "@mwater/react-library/lib/ModalPopupComponent";
5
5
  import { JsonQLFilter } from "../JsonQLFilter";
6
6
  import { MapDesign } from "./MapDesign";
7
7
  import { MapDataSource } from "./MapDataSource";
@@ -42,9 +42,7 @@ export default class RasterMapViewComponent extends React.Component<RasterMapVie
42
42
  popupContents: ReactNode;
43
43
  legendHidden: boolean;
44
44
  }> {
45
- static contextTypes: {
46
- locale: PropTypes.Requireable<string>;
47
- };
45
+ static contextType: React.Context<string>;
48
46
  leafletMap?: LeafletMapComponent | null;
49
47
  constructor(props: any);
50
48
  componentDidMount(): void;
@@ -64,15 +62,7 @@ export default class RasterMapViewComponent extends React.Component<RasterMapVie
64
62
  locale: string;
65
63
  onHide: () => void;
66
64
  }>;
67
- renderPopup(): React.CElement<{
68
- onClose: () => void;
69
- showCloseX: boolean;
70
- size: string;
71
- }, React.Component<{
72
- onClose: () => void;
73
- showCloseX: boolean;
74
- size: string;
75
- }, any, any>> | null;
65
+ renderPopup(): React.CElement<import("@mwater/react-library/lib/ModalPopupComponent").ModalPopupComponentProps, ModalPopupComponent> | null;
76
66
  render(): React.DetailedReactHTMLElement<{
77
67
  style: {
78
68
  width: number;
@@ -26,7 +26,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const prop_types_1 = __importDefault(require("prop-types"));
30
29
  const lodash_1 = __importDefault(require("lodash"));
31
30
  const react_1 = __importDefault(require("react"));
32
31
  const R = react_1.default.createElement;
@@ -36,9 +35,10 @@ const ModalPopupComponent_1 = __importDefault(require("@mwater/react-library/lib
36
35
  const MapUtils = __importStar(require("./MapUtils"));
37
36
  const LayerSwitcherComponent_1 = require("./LayerSwitcherComponent");
38
37
  const LegendComponent_1 = __importDefault(require("./LegendComponent"));
38
+ const contexts_1 = require("@mwater/expressions-ui/lib/contexts");
39
39
  /** Component that displays just the map, using raster tile technology */
40
40
  class RasterMapViewComponent extends react_1.default.Component {
41
- static contextTypes = { locale: prop_types_1.default.string };
41
+ static contextType = contexts_1.LocaleContext;
42
42
  leafletMap;
43
43
  constructor(props) {
44
44
  super(props);
@@ -154,7 +154,7 @@ class RasterMapViewComponent extends react_1.default.Component {
154
154
  layerViews: this.props.design.layerViews,
155
155
  filters: this.getCompiledFilters(),
156
156
  dataSource: this.props.dataSource,
157
- locale: this.context.locale,
157
+ locale: this.context,
158
158
  onHide: () => this.setState({ legendHidden: true }),
159
159
  zoom: null
160
160
  });
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { IdLiteralComponent } from "@mwater/expressions-ui";
2
3
  import { DataSource, Schema } from "@mwater/expressions";
3
4
  export interface RegionSelectComponentProps {
4
5
  schema: Schema;
@@ -19,5 +20,5 @@ export default class RegionSelectComponent extends React.Component<RegionSelectC
19
20
  regionsTable: string;
20
21
  };
21
22
  handleChange: (id: any) => void;
22
- render(): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
23
+ render(): React.CElement<import("@mwater/expressions-ui/lib/IdLiteralComponent").IdLiteralComponentProps, IdLiteralComponent>;
23
24
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="jquery" />
2
1
  import { DataSource, Expr, Schema } from "@mwater/expressions";
3
2
  import { JsonQLFilter } from "../JsonQLFilter";
4
3
  import { MapDesign, MapLayerView } from "./MapDesign";
@@ -22,7 +21,7 @@ interface ServerMapDataSourceOptions {
22
21
  /** map id to use on server */
23
22
  mapId: string;
24
23
  /** revision to use to allow caching */
25
- rev: string;
24
+ rev: number;
26
25
  }
27
26
  interface ServerMapLayerDataSourceOptions extends ServerMapDataSourceOptions {
28
27
  layerView: MapLayerView;
@@ -66,7 +65,7 @@ interface ServerMapLayerPopupWidgetDataSourceOptions {
66
65
  /** map id to use on server */
67
66
  mapId: string;
68
67
  /** revision to use to allow caching */
69
- rev: string;
68
+ rev: number;
70
69
  /** Layer id to use */
71
70
  layerId: string;
72
71
  /** Popup widget id to use */
@@ -75,7 +74,7 @@ interface ServerMapLayerPopupWidgetDataSourceOptions {
75
74
  declare class ServerMapLayerPopupWidgetDataSource implements WidgetDataSource {
76
75
  options: ServerMapLayerPopupWidgetDataSourceOptions;
77
76
  constructor(options: ServerMapLayerPopupWidgetDataSourceOptions);
78
- getData(design: any, filters: JsonQLFilter[], callback: (error: any, data?: any) => void): JQuery.jqXHR<any>;
77
+ getData(design: any, filters: JsonQLFilter[], callback: (error: any, data?: any) => void): void;
79
78
  getImageUrl(imageId: string, height?: number): string;
80
79
  }
81
80
  declare class ServerQuickfilterDataSource implements QuickfiltersDataSource {
@@ -208,11 +208,11 @@ class ServerMapLayerPopupWidgetDataSource {
208
208
  const url = this.options.apiUrl +
209
209
  `maps/${this.options.mapId}/layers/${this.options.layerId}/widgets/${this.options.popupWidgetId}/data?` +
210
210
  querystring_1.default.stringify(query);
211
- return jquery_1.default.getJSON(url, (data) => {
212
- return callback(null, data);
211
+ jquery_1.default.getJSON(url, (data) => {
212
+ callback(null, data);
213
213
  }).fail((xhr) => {
214
214
  console.log(xhr.responseText);
215
- return callback(new Error(xhr.responseText));
215
+ callback(new Error(xhr.responseText));
216
216
  });
217
217
  }
218
218
  // Get the url to download an image (by id from an image or imagelist column)
@@ -263,11 +263,11 @@ class ServerQuickfilterDataSource {
263
263
  headers
264
264
  })
265
265
  .done((data) => {
266
- return callback(null, data);
266
+ callback(null, data);
267
267
  })
268
268
  .fail((xhr) => {
269
269
  console.log(xhr.responseText);
270
- return callback(new Error(xhr.responseText));
270
+ callback(new Error(xhr.responseText));
271
271
  });
272
272
  }
273
273
  }
@@ -391,7 +391,7 @@ function VectorMapViewComponent(props) {
391
391
  props.mapDataSource.getBounds(props.design, getCompiledFilters(), (error, bounds) => {
392
392
  setBusy(b => b - 1);
393
393
  if (bounds) {
394
- map.fitBounds([bounds.w, bounds.s, bounds.e, bounds.n], { padding: 20, duration: 2500 });
394
+ map.fitBounds([bounds.w, bounds.s, bounds.e, bounds.n], { padding: 30, duration: 2500 });
395
395
  // Also record if editable as part of bounds
396
396
  setBounds(bounds);
397
397
  }
@@ -420,6 +420,7 @@ function VectorMapViewComponent(props) {
420
420
  props.design.bounds.s != boundsRef.current.s ||
421
421
  props.design.bounds.w != boundsRef.current.w) {
422
422
  map.fitBounds([props.design.bounds.w, props.design.bounds.s, props.design.bounds.e, props.design.bounds.n]);
423
+ boundsRef.current = props.design.bounds;
423
424
  }
424
425
  }
425
426
  }, [map, props.design.autoBounds, props.design.bounds]);
@@ -51,6 +51,7 @@ const chevron_circle_down_png_1 = __importDefault(require("./symbols/font-awesom
51
51
  const medkit_png_1 = __importDefault(require("./symbols/font-awesome/medkit.png"));
52
52
  const cloud_png_1 = __importDefault(require("./symbols/font-awesome/cloud.png"));
53
53
  const beer_png_1 = __importDefault(require("./symbols/font-awesome/beer.png"));
54
+ const cloud_rain_png_1 = __importDefault(require("./symbols/font-awesome/cloud-rain.png"));
54
55
  /** Symbols used on the map */
55
56
  exports.mapSymbols = [
56
57
  {
@@ -163,5 +164,6 @@ exports.mapSymbols = [
163
164
  },
164
165
  { url: medkit_png_1.default, value: "font-awesome/medkit", label: "Medkit" },
165
166
  { url: cloud_png_1.default, value: "font-awesome/cloud", label: "Cloud" },
167
+ { url: cloud_rain_png_1.default, value: "font-awesome/cloud-rain", label: "Cloud Rain" },
166
168
  { url: beer_png_1.default, value: "font-awesome/beer", label: "Cup" }
167
169
  ];
@@ -2,6 +2,7 @@ import { Map, LngLatBoundsLike } from "maplibre-gl";
2
2
  import "maplibre-gl/dist/maplibre-gl.css";
3
3
  import "./VectorMapViewComponent.css";
4
4
  import React from "react";
5
+ export declare function setPrintingModeEnabled(val: boolean): void;
5
6
  /** This must be called to set the appropriate key before use. If it is not set, vector maps will not function.
6
7
  * Maps will fall back to leaflet if the key is not set or if set to ""
7
8
  */
@@ -3,13 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.usePersistedMapBounds = exports.VectorMapLogo = exports.AttributionControl = exports.mergeBaseAndUserStyle = exports.useBaseStyle = exports.useStyleMap = exports.useHoverCursor = exports.useVectorMap = exports.areVectorMapsEnabled = exports.getMapTilerApiKey = exports.setMapTilerApiKey = void 0;
6
+ exports.usePersistedMapBounds = exports.VectorMapLogo = exports.AttributionControl = exports.mergeBaseAndUserStyle = exports.useBaseStyle = exports.useStyleMap = exports.useHoverCursor = exports.useVectorMap = exports.areVectorMapsEnabled = exports.getMapTilerApiKey = exports.setMapTilerApiKey = exports.setPrintingModeEnabled = void 0;
7
7
  const maplibre_gl_1 = __importDefault(require("maplibre-gl"));
8
8
  const react_1 = require("react");
9
9
  const mapSymbols_1 = require("./mapSymbols");
10
10
  require("maplibre-gl/dist/maplibre-gl.css");
11
11
  require("./VectorMapViewComponent.css");
12
12
  const react_2 = __importDefault(require("react"));
13
+ /** Set to true to enable printing by preserving the drawing buffer */
14
+ let printingModeEnabled = false;
15
+ function setPrintingModeEnabled(val) {
16
+ printingModeEnabled = val;
17
+ }
18
+ exports.setPrintingModeEnabled = setPrintingModeEnabled;
13
19
  /* Hooks and functions related to displaying a vector map */
14
20
  let mapTilerApiKey = "";
15
21
  /** This must be called to set the appropriate key before use. If it is not set, vector maps will not function.
@@ -45,7 +51,8 @@ function useVectorMap(options) {
45
51
  return;
46
52
  }
47
53
  const observer = new IntersectionObserver(function (entries) {
48
- setMapDivVisible(entries[0].isIntersecting);
54
+ // When in printing mode, always visible as we need to render the map
55
+ setMapDivVisible(entries[0].isIntersecting || printingModeEnabled);
49
56
  });
50
57
  observer.observe(divRef);
51
58
  return () => {
@@ -64,57 +71,64 @@ function useVectorMap(options) {
64
71
  if (!mapDivVisible || !divRef) {
65
72
  return;
66
73
  }
67
- const m = new maplibre_gl_1.default.Map({
68
- container: divRef,
69
- bounds: bounds,
70
- scrollZoom: scrollZoom === false ? false : true,
71
- dragPan: dragPan === false ? false : true,
72
- touchZoomRotate: touchZoomRotate === false ? false : true,
73
- attributionControl: false,
74
- boxZoom: false,
75
- style: {
76
- version: 8,
77
- layers: [],
78
- sources: {}
79
- },
80
- // Prevent scrolling outside of world bounds
81
- maxBounds: [
82
- [-179.9, -85],
83
- [179.9, 85] // Northeast coordinates
84
- ],
85
- });
86
- setHasWebGLContext(true);
87
- // Add listener for losing context
88
- m.on("webglcontextlost", () => {
89
- console.warn("Lost WebGL context");
90
- setHasWebGLContext(false);
91
- });
92
- // Add zoom controls to the map.
93
- m.addControl(new maplibre_gl_1.default.NavigationControl({}), "top-left");
94
- // Add scale control
95
- const scale = new maplibre_gl_1.default.ScaleControl({
96
- unit: "metric"
97
- });
98
- m.addControl(scale);
99
- // Speed up wheel scrolling
100
- m.scrollZoom.setWheelZoomRate(1 / 250);
101
- // Dynamically load symbols
102
- m.on("styleimagemissing", function (ev) {
103
- // Check if known
104
- const mapSymbol = mapSymbols_1.mapSymbols.find((s) => s.value == ev.id);
105
- if (mapSymbol) {
106
- m.loadImage(mapSymbol.url, (err, image) => {
107
- if (image && !m.hasImage(mapSymbol.value)) {
108
- m.addImage(mapSymbol.value, image, { sdf: true });
109
- }
110
- });
111
- }
112
- });
113
- setMap(m);
114
- return () => {
115
- m.remove();
116
- setHasWebGLContext(false);
117
- };
74
+ try {
75
+ const m = new maplibre_gl_1.default.Map({
76
+ container: divRef,
77
+ bounds: bounds,
78
+ scrollZoom: scrollZoom === false ? false : true,
79
+ dragPan: dragPan === false ? false : true,
80
+ touchZoomRotate: touchZoomRotate === false ? false : true,
81
+ attributionControl: false,
82
+ boxZoom: false,
83
+ style: {
84
+ version: 8,
85
+ layers: [],
86
+ sources: {}
87
+ },
88
+ // Prevent scrolling outside of world bounds
89
+ maxBounds: [
90
+ [-179.9, -85],
91
+ [179.9, 85] // Northeast coordinates
92
+ ],
93
+ preserveDrawingBuffer: printingModeEnabled
94
+ });
95
+ setHasWebGLContext(true);
96
+ // Add listener for losing context
97
+ m.on("webglcontextlost", () => {
98
+ console.warn("Lost WebGL context");
99
+ setHasWebGLContext(false);
100
+ });
101
+ // Add zoom controls to the map.
102
+ m.addControl(new maplibre_gl_1.default.NavigationControl({}), "top-left");
103
+ // Add scale control
104
+ const scale = new maplibre_gl_1.default.ScaleControl({
105
+ unit: "metric"
106
+ });
107
+ m.addControl(scale);
108
+ // Speed up wheel scrolling
109
+ m.scrollZoom.setWheelZoomRate(1 / 250);
110
+ // Dynamically load symbols
111
+ m.on("styleimagemissing", function (ev) {
112
+ // Check if known
113
+ const mapSymbol = mapSymbols_1.mapSymbols.find((s) => s.value == ev.id);
114
+ if (mapSymbol) {
115
+ m.loadImage(mapSymbol.url, (err, image) => {
116
+ if (image && !m.hasImage(mapSymbol.value)) {
117
+ m.addImage(mapSymbol.value, image, { sdf: true });
118
+ }
119
+ });
120
+ }
121
+ });
122
+ setMap(m);
123
+ return () => {
124
+ m.remove();
125
+ setHasWebGLContext(false);
126
+ };
127
+ }
128
+ catch (e) {
129
+ console.error("Error loading map", e);
130
+ alert(T `Error loading map. Please check that your browser and drivers are updated.`);
131
+ }
118
132
  }, [mapReloadCount]);
119
133
  return map;
120
134
  }
@@ -183,13 +197,13 @@ function useBaseStyle(baseLayer) {
183
197
  });
184
198
  }
185
199
  if (baseLayer == "cartodb_positron") {
186
- loadStyle(`https://api.maptiler.com/maps/positron/style.json?key=${mapTilerApiKey}`);
200
+ loadStyle(`https://api.maptiler.com/maps/5f972163-6078-4341-982a-5c8bc4447e68/style.json?key=${mapTilerApiKey}`);
187
201
  }
188
202
  else if (baseLayer == "cartodb_dark_matter") {
189
- loadStyle(`https://api.maptiler.com/maps/darkmatter/style.json?key=${mapTilerApiKey}`);
203
+ loadStyle(`https://api.maptiler.com/maps/1d3e957b-c546-4791-b9de-dce203538429/style.json?key=${mapTilerApiKey}`);
190
204
  }
191
205
  else if (baseLayer == "bing_road") {
192
- loadStyle(`https://api.maptiler.com/maps/streets/style.json?key=${mapTilerApiKey}`);
206
+ loadStyle(`https://api.maptiler.com/maps/streets-v2/style.json?key=${mapTilerApiKey}`);
193
207
  }
194
208
  else if (baseLayer == "bing_aerial") {
195
209
  // Switched to Bing for superior aerial imagery
@@ -12,5 +12,5 @@ export default class QuickfilterCompiler {
12
12
  * See README for values
13
13
  */
14
14
  compile(design: Quickfilter[] | undefined, values: any[] | null, locks: QuickfilterLock[] | null | undefined): JsonQLFilter[];
15
- compileToFilterExpr(expr: any, value: any, multi: any): OpExpr | null;
15
+ compileToFilterExpr(expr: any, value: any, multi?: boolean): OpExpr | null;
16
16
  }
@@ -1,4 +1,3 @@
1
- import PropTypes from "prop-types";
2
1
  import React from "react";
3
2
  import { DataSource, LocalizedString, Schema } from "@mwater/expressions";
4
3
  import IdArrayQuickfilterComponent from "./IdArrayQuickfilterComponent";
@@ -52,9 +51,7 @@ interface EnumQuickfilterComponentProps {
52
51
  }
53
52
  /** Quickfilter for an enum */
54
53
  declare class EnumQuickfilterComponent extends React.Component<EnumQuickfilterComponentProps> {
55
- static contextTypes: {
56
- locale: PropTypes.Requireable<string>;
57
- };
54
+ static contextType: React.Context<string>;
58
55
  handleSingleChange: (val: any) => any;
59
56
  handleMultiChange: (val: any) => any;
60
57
  renderSingleSelect(options: any[]): React.FunctionComponentElement<Omit<import("react-select/dist/declarations/src/Select").PublicBaseSelectProps<unknown, boolean, import("react-select").GroupBase<unknown>>, "value" | "onChange" | "inputValue" | "menuIsOpen" | "onInputChange" | "onMenuOpen" | "onMenuClose"> & Partial<import("react-select/dist/declarations/src/Select").PublicBaseSelectProps<unknown, boolean, import("react-select").GroupBase<unknown>>> & import("react-select/dist/declarations/src/useStateManager").StateManagerAdditionalProps<unknown> & React.RefAttributes<import("react-select/dist/declarations/src/Select").default<unknown, boolean, import("react-select").GroupBase<unknown>>>>;
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
- const prop_types_1 = __importDefault(require("prop-types"));
8
7
  const react_1 = __importDefault(require("react"));
9
8
  const R = react_1.default.createElement;
10
9
  const react_select_1 = __importDefault(require("react-select"));
@@ -14,6 +13,7 @@ const TextLiteralComponent_1 = __importDefault(require("./TextLiteralComponent")
14
13
  const DateExprComponent_1 = __importDefault(require("./DateExprComponent"));
15
14
  const QuickfilterCompiler_1 = __importDefault(require("./QuickfilterCompiler"));
16
15
  const IdArrayQuickfilterComponent_1 = __importDefault(require("./IdArrayQuickfilterComponent"));
16
+ const contexts_1 = require("@mwater/expressions-ui/lib/contexts");
17
17
  /** Displays quick filters and allows their value to be modified */
18
18
  class QuickfiltersComponent extends react_1.default.Component {
19
19
  renderQuickfilter(item, index) {
@@ -153,7 +153,7 @@ class QuickfiltersComponent extends react_1.default.Component {
153
153
  exports.default = QuickfiltersComponent;
154
154
  /** Quickfilter for an enum */
155
155
  class EnumQuickfilterComponent extends react_1.default.Component {
156
- static contextTypes = { locale: prop_types_1.default.string };
156
+ static contextType = contexts_1.LocaleContext;
157
157
  handleSingleChange = (val) => {
158
158
  if (val) {
159
159
  return this.props.onValueChange(val);
@@ -206,7 +206,7 @@ class EnumQuickfilterComponent extends react_1.default.Component {
206
206
  render() {
207
207
  const options = lodash_1.default.map(this.props.options, (opt) => ({
208
208
  value: opt.id,
209
- label: expressions_1.ExprUtils.localizeString(opt.name, this.context.locale)
209
+ label: expressions_1.ExprUtils.localizeString(opt.name, this.context)
210
210
  }));
211
211
  // Determine width, estimating about 8 px per letter with 120px padding
212
212
  let width = lodash_1.default.max(options, (o) => o.label.length)?.label?.length;
@@ -0,0 +1,32 @@
1
+ import React, { ReactNode } from "react";
2
+ export interface DropdownItem {
3
+ label: ReactNode;
4
+ value: string;
5
+ /** If true, this item will be rendered only when "More..." is clicked. */
6
+ more?: boolean;
7
+ }
8
+ export interface DropdownPaletteItemProps {
9
+ label: ReactNode;
10
+ items: DropdownItem[];
11
+ /** Called with clicked item */
12
+ onSelect: (value: string) => void;
13
+ /** should the popup be under or over? */
14
+ position?: "under" | "over";
15
+ }
16
+ interface DropdownPaletteItemState {
17
+ open: boolean;
18
+ moreOpen: boolean;
19
+ }
20
+ /** Palette item that allows picking from dropdown */
21
+ export default class DropdownPaletteItem extends React.Component<DropdownPaletteItemProps, DropdownPaletteItemState> {
22
+ static defaultProps: {
23
+ position: string;
24
+ };
25
+ constructor(props: DropdownPaletteItemProps);
26
+ handleMouseDown: (ev: React.MouseEvent) => void;
27
+ handleMoreClick: (ev: React.MouseEvent) => void;
28
+ renderItem(item: DropdownItem): React.JSX.Element;
29
+ renderItems(): React.JSX.Element;
30
+ render(): React.JSX.Element;
31
+ }
32
+ export {};