@mwater/visualization 5.3.1 → 5.4.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 (309) hide show
  1. package/lib/ColorComponent.d.ts +1 -1
  2. package/lib/ColorComponent.js +2 -2
  3. package/lib/CustomColorsContext.d.ts +1 -1
  4. package/lib/DateRangeComponent.js +10 -10
  5. package/lib/LocaleContextInjector.js +2 -2
  6. package/lib/MWaterAddRelatedFormComponent.js +8 -8
  7. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +0 -1
  8. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  9. package/lib/MWaterAssetSystemsListComponent.d.ts +3 -3
  10. package/lib/MWaterAssetSystemsListComponent.js +4 -3
  11. package/lib/MWaterCompleteTableSelectComponent.d.ts +33 -34
  12. package/lib/MWaterCompleteTableSelectComponent.js +39 -38
  13. package/lib/MWaterCustomTablesetListComponent.d.ts +3 -3
  14. package/lib/MWaterCustomTablesetListComponent.js +5 -4
  15. package/lib/MWaterGlobalFiltersComponent.js +4 -4
  16. package/lib/MWaterLoaderComponent.d.ts +5 -5
  17. package/lib/MWaterLoaderComponent.js +1 -1
  18. package/lib/MWaterMetricsTableListComponent.d.ts +3 -3
  19. package/lib/MWaterMetricsTableListComponent.js +4 -3
  20. package/lib/MWaterResponsesFilterComponent.js +4 -4
  21. package/lib/MWaterTableSelectComponent.d.ts +1 -1
  22. package/lib/MWaterTableSelectComponent.js +5 -5
  23. package/lib/PopoverComponent.d.ts +4 -4
  24. package/lib/UIComponents.d.ts +5 -2
  25. package/lib/axes/AxisBuilder.js +42 -43
  26. package/lib/axes/AxisColorEditorComponent.d.ts +4 -4
  27. package/lib/axes/AxisColorEditorComponent.js +25 -60
  28. package/lib/axes/AxisComponent.d.ts +2 -3
  29. package/lib/axes/AxisComponent.js +20 -20
  30. package/lib/axes/BinsComponent.js +6 -6
  31. package/lib/axes/CategoryMapComponent.d.ts +2 -1
  32. package/lib/axes/CategoryMapComponent.js +7 -5
  33. package/lib/axes/ColorPaletteCollectionComponent.js +9 -9
  34. package/lib/axes/RangesComponent.js +12 -12
  35. package/lib/compressJson.js +1 -1
  36. package/lib/dashboards/DashboardComponent.d.ts +2 -0
  37. package/lib/dashboards/DashboardComponent.js +15 -8
  38. package/lib/dashboards/DashboardUtils.js +2 -3
  39. package/lib/dashboards/DashboardViewComponent.js +4 -4
  40. package/lib/dashboards/FontStyleEditor.js +8 -8
  41. package/lib/dashboards/LayoutOptionsComponent.js +102 -75
  42. package/lib/dashboards/SettingsModalComponent.d.ts +3 -4
  43. package/lib/dashboards/SettingsModalComponent.js +54 -40
  44. package/lib/dashboards/WidgetComponent.d.ts +0 -1
  45. package/lib/dashboards/WidgetComponent.js +1 -2
  46. package/lib/dashboards/layoutOptions.js +11 -7
  47. package/lib/datagrids/DatagridComponent.d.ts +1 -8
  48. package/lib/datagrids/DatagridComponent.js +14 -13
  49. package/lib/datagrids/DatagridDesignerComponent.js +18 -18
  50. package/lib/datagrids/DatagridQueryBuilder.d.ts +4 -4
  51. package/lib/datagrids/DatagridUtils.js +2 -2
  52. package/lib/datagrids/DatagridViewComponent.js +4 -4
  53. package/lib/datagrids/ExprCellComponent.js +1 -1
  54. package/lib/datagrids/FindReplaceModalComponent.js +17 -17
  55. package/lib/datagrids/OrderBysDesignerComponent.js +2 -2
  56. package/lib/languages.js +2 -2
  57. package/lib/layouts/DecoratedBlockComponent.js +2 -2
  58. package/lib/layouts/blocks/BlocksDisplayComponent.js +13 -13
  59. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +2 -1
  60. package/lib/layouts/blocks/ClipboardPaletteItemComponent.js +3 -3
  61. package/lib/layouts/blocks/HorizontalBlockComponent.js +3 -3
  62. package/lib/layouts/blocks/blockUtils.js +4 -5
  63. package/lib/mWaterLoader.js +1 -1
  64. package/lib/maps/AddLayerComponent.js +13 -13
  65. package/lib/maps/AdminScopeAndDetailLevelComponent.js +5 -5
  66. package/lib/maps/BaseLayerDesignerComponent.js +2 -2
  67. package/lib/maps/BufferLayer.js +7 -7
  68. package/lib/maps/BufferLayerDesignerComponent.js +8 -8
  69. package/lib/maps/ChoroplethLayer.js +6 -6
  70. package/lib/maps/ChoroplethLayerDesigner.js +16 -16
  71. package/lib/maps/ClusterLayer.js +3 -3
  72. package/lib/maps/ClusterLayerDesignerComponent.js +5 -5
  73. package/lib/maps/DetailLevelSelectComponent.d.ts +11 -1
  74. package/lib/maps/DetailLevelSelectComponent.js +3 -3
  75. package/lib/maps/DirectMapDataSource.js +1 -2
  76. package/lib/maps/EditHoverOver.js +7 -5
  77. package/lib/maps/EditPopupComponent.js +2 -2
  78. package/lib/maps/GridLayer.js +5 -5
  79. package/lib/maps/GridLayerDesigner.js +15 -15
  80. package/lib/maps/LayerSwitcherComponent.js +1 -2
  81. package/lib/maps/LeafletMapComponent.d.ts +1 -1
  82. package/lib/maps/LeafletMapComponent.js +1 -1
  83. package/lib/maps/LegendComponent.js +1 -1
  84. package/lib/maps/MWaterServerLayer.d.ts +0 -1
  85. package/lib/maps/MWaterServerLayer.js +1 -1
  86. package/lib/maps/MapComponent.js +8 -8
  87. package/lib/maps/MapControlComponent.js +1 -1
  88. package/lib/maps/MapDesignerComponent.js +16 -16
  89. package/lib/maps/MapFiltersDesignerComponent.js +2 -2
  90. package/lib/maps/MapLayerViewDesignerComponent.js +8 -8
  91. package/lib/maps/MapUtils.js +6 -7
  92. package/lib/maps/MapViewComponent.js +1 -2
  93. package/lib/maps/MarkerSymbolSelectComponent.js +3 -3
  94. package/lib/maps/MarkersLayer.js +6 -7
  95. package/lib/maps/MarkersLayerDesignerComponent.js +22 -22
  96. package/lib/maps/PopupFilterJoinsEditComponent.js +4 -4
  97. package/lib/maps/PopupFilterJoinsUtils.js +2 -3
  98. package/lib/maps/RasterMapViewComponent.d.ts +3 -3
  99. package/lib/maps/RasterMapViewComponent.js +4 -4
  100. package/lib/maps/RegionSelectComponent.d.ts +1 -3
  101. package/lib/maps/RegionSelectComponent.js +1 -2
  102. package/lib/maps/ScopeAndDetailLevelComponent.js +3 -3
  103. package/lib/maps/TileUrlLayer.d.ts +1 -1
  104. package/lib/maps/TileUrlLayer.js +3 -3
  105. package/lib/maps/VectorMapViewComponent.js +6 -7
  106. package/lib/maps/ZoomLevelsComponent.js +5 -5
  107. package/lib/maps/mapSymbols.d.ts +1 -1
  108. package/lib/maps/mapSymbols.js +51 -50
  109. package/lib/maps/mapboxUtils.js +2 -3
  110. package/lib/maps/maps.d.ts +0 -1
  111. package/lib/maps/vectorMaps.js +14 -15
  112. package/lib/memoizedDebounce.js +1 -2
  113. package/lib/quickfilter/DateExprComponent.d.ts +4 -0
  114. package/lib/quickfilter/DateExprComponent.js +17 -16
  115. package/lib/quickfilter/IdArrayQuickfilterComponent.js +1 -1
  116. package/lib/quickfilter/QuickfilterUtils.js +1 -2
  117. package/lib/quickfilter/QuickfiltersComponent.d.ts +23 -2
  118. package/lib/quickfilter/QuickfiltersComponent.js +2 -2
  119. package/lib/quickfilter/QuickfiltersDesignComponent.js +8 -8
  120. package/lib/quickfilter/TextLiteralComponent.d.ts +35 -2
  121. package/lib/quickfilter/TextLiteralComponent.js +6 -6
  122. package/lib/richtext/DropdownPaletteItem.js +1 -1
  123. package/lib/richtext/ExprItemsHtmlConverter.js +8 -10
  124. package/lib/richtext/FontColorPaletteItem.js +7 -7
  125. package/lib/richtext/ItemsHtmlConverter.js +0 -1
  126. package/lib/richtext/RichTextComponent.d.ts +1 -0
  127. package/lib/richtext/RichTextComponent.js +33 -29
  128. package/lib/valueFormatter.js +18 -19
  129. package/lib/wellknown.js +2 -3
  130. package/lib/widgets/IFrameWidgetComponent.d.ts +9 -1
  131. package/lib/widgets/IFrameWidgetComponent.js +3 -3
  132. package/lib/widgets/ImageUploaderComponent.js +5 -5
  133. package/lib/widgets/ImageWidget.js +2 -2
  134. package/lib/widgets/ImageWidgetComponent.d.ts +9 -1
  135. package/lib/widgets/ImageWidgetComponent.js +20 -20
  136. package/lib/widgets/ImagelistCarouselComponent.js +1 -1
  137. package/lib/widgets/MapWidget.js +2 -2
  138. package/lib/widgets/MarkdownWidget.d.ts +1 -1
  139. package/lib/widgets/MarkdownWidget.js +1 -1
  140. package/lib/widgets/TOCWidget.js +11 -12
  141. package/lib/widgets/WidgetScopesViewComponent.js +1 -1
  142. package/lib/widgets/charts/Chart.js +1 -1
  143. package/lib/widgets/charts/ChartViewComponent.js +9 -9
  144. package/lib/widgets/charts/ChartWidgetComponent.js +4 -4
  145. package/lib/widgets/charts/calendar/CalendarChart.js +4 -4
  146. package/lib/widgets/charts/calendar/CalendarChartDesignerComponent.js +7 -7
  147. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +3 -3
  148. package/lib/widgets/charts/imagemosaic/ImageMosaicChart.d.ts +18 -5
  149. package/lib/widgets/charts/imagemosaic/ImageMosaicChart.js +3 -4
  150. package/lib/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.js +5 -5
  151. package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.d.ts +5 -19
  152. package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.js +66 -70
  153. package/lib/widgets/charts/imagemosaic/ImagePopupComponent.js +1 -1
  154. package/lib/widgets/charts/layered/LayeredChart.d.ts +1 -1
  155. package/lib/widgets/charts/layered/LayeredChart.js +9 -9
  156. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +8 -8
  157. package/lib/widgets/charts/layered/LayeredChartCompiler.js +15 -15
  158. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +33 -33
  159. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +16 -16
  160. package/lib/widgets/charts/layered/LayeredChartUtils.js +1 -2
  161. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +4 -4
  162. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +18 -17
  163. package/lib/widgets/charts/pivot/PivotChart.d.ts +1 -1
  164. package/lib/widgets/charts/pivot/PivotChart.js +12 -4
  165. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +5 -5
  166. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +10 -10
  167. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +5 -5
  168. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +1 -1
  169. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +5 -6
  170. package/lib/widgets/charts/pivot/PivotChartUtils.js +11 -12
  171. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +9 -9
  172. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +30 -30
  173. package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +28 -26
  174. package/lib/widgets/charts/table/OrderingsComponent.js +2 -2
  175. package/lib/widgets/charts/table/TableChart.js +3 -3
  176. package/lib/widgets/charts/table/TableChartDesignerComponent.js +17 -17
  177. package/lib/widgets/charts/table/TableChartViewComponent.js +3 -3
  178. package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -3
  179. package/lib/widgets/text/ExprInsertModalComponent.js +2 -14
  180. package/lib/widgets/text/ExprItemEditorComponent.js +4 -4
  181. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -3
  182. package/lib/widgets/text/ExprUpdateModalComponent.js +3 -15
  183. package/lib/widgets/text/TextComponent.js +3 -3
  184. package/lib/widgets/text/TextWidget.d.ts +1 -1
  185. package/lib/widgets/text/TextWidgetComponent.js +11 -11
  186. package/lib/widgets/text/TextWidgetDesign.d.ts +2 -1
  187. package/lib/widgets/text/TextWidgetDesign.js +1 -2
  188. package/package.json +3 -3
  189. package/src/ColorComponent.tsx +2 -2
  190. package/src/DateRangeComponent.ts +10 -10
  191. package/src/LocaleContextInjector.tsx +1 -1
  192. package/src/MWaterAddRelatedFormComponent.ts +7 -7
  193. package/src/MWaterAddRelatedIndicatorComponent.ts +5 -5
  194. package/src/MWaterAssetSystemsListComponent.tsx +3 -3
  195. package/src/MWaterCompleteTableSelectComponent.tsx +36 -35
  196. package/src/MWaterCustomTablesetListComponent.tsx +4 -4
  197. package/src/MWaterGlobalFiltersComponent.ts +4 -4
  198. package/src/MWaterLoaderComponent.ts +1 -1
  199. package/src/MWaterMetricsTableListComponent.tsx +3 -3
  200. package/src/MWaterResponsesFilterComponent.ts +6 -6
  201. package/src/MWaterTableSelectComponent.tsx +6 -7
  202. package/src/axes/AxisBuilder.ts +42 -44
  203. package/src/axes/AxisColorEditorComponent.tsx +178 -0
  204. package/src/axes/AxisComponent.ts +20 -20
  205. package/src/axes/BinsComponent.tsx +6 -6
  206. package/src/axes/CategoryMapComponent.ts +10 -10
  207. package/src/axes/ColorPaletteCollectionComponent.tsx +3 -3
  208. package/src/axes/RangesComponent.ts +14 -14
  209. package/src/dashboards/DashboardComponent.tsx +21 -9
  210. package/src/dashboards/DashboardViewComponent.tsx +3 -3
  211. package/src/dashboards/FontStyleEditor.tsx +8 -8
  212. package/src/dashboards/LayoutOptionsComponent.tsx +74 -74
  213. package/src/dashboards/SettingsModalComponent.tsx +134 -107
  214. package/src/dashboards/layoutOptions.tsx +5 -1
  215. package/src/datagrids/DatagridComponent.ts +65 -62
  216. package/src/datagrids/DatagridDesignerComponent.tsx +17 -17
  217. package/src/datagrids/DatagridUtils.ts +2 -2
  218. package/src/datagrids/DatagridViewComponent.ts +3 -3
  219. package/src/datagrids/ExprCellComponent.ts +1 -1
  220. package/src/datagrids/FindReplaceModalComponent.ts +13 -13
  221. package/src/datagrids/OrderBysDesignerComponent.tsx +2 -2
  222. package/src/globals.d.ts +7 -1
  223. package/src/languages.ts +2 -2
  224. package/src/layouts/blocks/BlocksDisplayComponent.tsx +13 -13
  225. package/src/layouts/blocks/BlocksLayoutManager.ts +3 -2
  226. package/src/layouts/blocks/ClipboardPaletteItemComponent.ts +3 -3
  227. package/src/maps/AddLayerComponent.ts +13 -13
  228. package/src/maps/AdminScopeAndDetailLevelComponent.ts +5 -5
  229. package/src/maps/BaseLayerDesignerComponent.ts +8 -8
  230. package/src/maps/BufferLayer.ts +5 -5
  231. package/src/maps/BufferLayerDesignerComponent.ts +8 -8
  232. package/src/maps/ChoroplethLayer.ts +3 -3
  233. package/src/maps/ChoroplethLayerDesigner.tsx +16 -16
  234. package/src/maps/ClusterLayer.ts +3 -3
  235. package/src/maps/ClusterLayerDesignerComponent.ts +5 -5
  236. package/src/maps/DetailLevelSelectComponent.ts +3 -3
  237. package/src/maps/EditHoverOver.tsx +5 -5
  238. package/src/maps/EditPopupComponent.ts +2 -2
  239. package/src/maps/GridLayer.ts +5 -5
  240. package/src/maps/GridLayerDesigner.tsx +15 -16
  241. package/src/maps/MWaterServerLayer.ts +1 -1
  242. package/src/maps/MapComponent.ts +6 -6
  243. package/src/maps/MapControlComponent.ts +1 -1
  244. package/src/maps/MapDesignerComponent.tsx +20 -20
  245. package/src/maps/MapFiltersDesignerComponent.tsx +3 -3
  246. package/src/maps/MapLayerViewDesignerComponent.ts +9 -9
  247. package/src/maps/MarkerSymbolSelectComponent.ts +4 -5
  248. package/src/maps/MarkersLayerDesignerComponent.ts +22 -22
  249. package/src/maps/PopupFilterJoinsEditComponent.ts +4 -4
  250. package/src/maps/RasterMapViewComponent.ts +2 -2
  251. package/src/maps/RegionSelectComponent.ts +1 -2
  252. package/src/maps/ScopeAndDetailLevelComponent.ts +3 -3
  253. package/src/maps/TileUrlLayer.tsx +3 -3
  254. package/src/maps/VectorMapViewComponent.tsx +5 -5
  255. package/src/maps/ZoomLevelsComponent.ts +6 -6
  256. package/src/maps/mapSymbols.ts +49 -49
  257. package/src/maps/vectorMaps.tsx +2 -2
  258. package/src/quickfilter/DateExprComponent.ts +19 -18
  259. package/src/quickfilter/IdArrayQuickfilterComponent.ts +1 -1
  260. package/src/quickfilter/QuickfiltersComponent.ts +1 -1
  261. package/src/quickfilter/QuickfiltersDesignComponent.tsx +9 -9
  262. package/src/quickfilter/TextLiteralComponent.ts +4 -4
  263. package/src/richtext/DropdownPaletteItem.tsx +1 -1
  264. package/src/richtext/ExprItemsHtmlConverter.ts +8 -10
  265. package/src/richtext/ItemsHtmlConverter.ts +0 -1
  266. package/src/richtext/RichTextComponent.tsx +31 -31
  267. package/src/valueFormatter.ts +14 -14
  268. package/src/widgets/IFrameWidgetComponent.ts +3 -3
  269. package/src/widgets/ImageUploaderComponent.tsx +5 -5
  270. package/src/widgets/ImageWidget.ts +2 -2
  271. package/src/widgets/ImageWidgetComponent.ts +26 -26
  272. package/src/widgets/ImagelistCarouselComponent.ts +2 -2
  273. package/src/widgets/MapWidget.ts +1 -1
  274. package/src/widgets/MarkdownWidget.ts +1 -1
  275. package/src/widgets/TOCWidget.ts +13 -14
  276. package/src/widgets/WidgetScopesViewComponent.ts +1 -1
  277. package/src/widgets/charts/Chart.ts +1 -1
  278. package/src/widgets/charts/ChartViewComponent.ts +4 -4
  279. package/src/widgets/charts/ChartWidgetComponent.tsx +3 -3
  280. package/src/widgets/charts/calendar/CalendarChart.ts +4 -4
  281. package/src/widgets/charts/calendar/CalendarChartDesignerComponent.ts +7 -7
  282. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +2 -2
  283. package/src/widgets/charts/imagemosaic/ImageMosaicChart.ts +25 -8
  284. package/src/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.ts +5 -5
  285. package/src/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.tsx +128 -0
  286. package/src/widgets/charts/layered/LayeredChart.ts +9 -9
  287. package/src/widgets/charts/layered/LayeredChartCompiler.ts +45 -45
  288. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +39 -39
  289. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +18 -19
  290. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +1 -1
  291. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +22 -23
  292. package/src/widgets/charts/pivot/PivotChart.ts +15 -5
  293. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +12 -12
  294. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +5 -5
  295. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +7 -8
  296. package/src/widgets/charts/pivot/PivotChartViewComponent.tsx +6 -6
  297. package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +30 -30
  298. package/src/widgets/charts/table/OrderingsComponent.tsx +2 -2
  299. package/src/widgets/charts/table/TableChart.ts +3 -3
  300. package/src/widgets/charts/table/TableChartDesignerComponent.ts +16 -16
  301. package/src/widgets/charts/table/TableChartViewComponent.ts +2 -2
  302. package/src/widgets/text/{ExprInsertModalComponent.ts → ExprInsertModalComponent.tsx} +18 -20
  303. package/src/widgets/text/ExprItemEditorComponent.tsx +4 -4
  304. package/src/widgets/text/{ExprUpdateModalComponent.ts → ExprUpdateModalComponent.tsx} +18 -20
  305. package/src/widgets/text/TextComponent.tsx +2 -2
  306. package/src/widgets/text/TextWidgetComponent.tsx +10 -10
  307. package/src/widgets/text/TextWidgetDesign.ts +3 -1
  308. package/src/axes/AxisColorEditorComponent.ts +0 -210
  309. package/src/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.ts +0 -117
@@ -1,11 +1,34 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LayoutOptionsComponent = void 0;
29
+ exports.LayoutOptionsComponent = LayoutOptionsComponent;
7
30
  const lodash_1 = __importDefault(require("lodash"));
8
- const react_1 = __importDefault(require("react"));
31
+ const react_1 = __importStar(require("react"));
9
32
  const react_2 = require("react");
10
33
  const bootstrap_1 = require("@mwater/react-library/lib/bootstrap");
11
34
  const layoutOptions_1 = require("./layoutOptions");
@@ -13,12 +36,6 @@ const ColorComponent_1 = __importDefault(require("../ColorComponent"));
13
36
  const FontStyleEditor_1 = require("./FontStyleEditor");
14
37
  const immer_1 = __importDefault(require("immer"));
15
38
  const file_saver_1 = __importDefault(require("file-saver"));
16
- const sizeOptions = [
17
- { value: { width: 360, height: 640 }, label: "Phone (360x640)" },
18
- { value: { width: 768, height: 1024 }, label: "Tablet (768x1024)" },
19
- { value: { width: 1000, height: 800 }, label: "Laptop (1000x800)" },
20
- { value: { width: 1280, height: 1024 }, label: "Desktop (1280x1024)" }
21
- ];
22
39
  function LayoutOptionsComponent(props) {
23
40
  const [previewSize, setPreviewSize] = (0, react_2.useState)(2);
24
41
  const layoutOptions = (0, layoutOptions_1.getLayoutOptions)(props.design);
@@ -26,21 +43,29 @@ function LayoutOptionsComponent(props) {
26
43
  props.onDesignChange({ ...props.design, layoutOptions });
27
44
  }
28
45
  const isCustomized = !lodash_1.default.isEqual(layoutOptions, (0, layoutOptions_1.getDefaultLayoutOptions)(props.design.style));
46
+ const sizeOptions = (0, react_1.useMemo)(() => [
47
+ { value: { width: 360, height: 640 }, label: T `Phone (360x640)` },
48
+ { value: { width: 768, height: 1024 }, label: T `Tablet (768x1024)` },
49
+ { value: { width: 1000, height: 800 }, label: T `Laptop (1000x800)` },
50
+ { value: { width: 1280, height: 1024 }, label: T `Desktop (1280x1024)` }
51
+ ], []);
29
52
  return (react_1.default.createElement("div", { style: { display: "grid", gridTemplateRows: "auto 1fr", gridTemplateColumns: "360px 1fr", height: "100%" } },
30
53
  react_1.default.createElement("div", { style: { padding: "5px 10px 5px 0px", gridRow: "1 / 3", overflowY: "auto" } },
31
- react_1.default.createElement("h5", null, "Theme"),
54
+ react_1.default.createElement("h5", null, T `Theme`),
32
55
  react_1.default.createElement(ThemeToggle, { theme: props.design.style, onChange: (theme) => {
33
56
  if (isCustomized) {
34
- if (!confirm("Are you sure you want to change the theme? Your customizations will be lost."))
57
+ if (!confirm(T `Are you sure you want to change the theme? Your customizations will be lost.`))
35
58
  return;
36
59
  }
37
60
  props.onDesignChange({ ...props.design, style: theme, layoutOptions: (0, layoutOptions_1.getDefaultLayoutOptions)(theme) });
38
61
  }, isCustomized: isCustomized }),
39
62
  react_1.default.createElement("br", null),
40
- react_1.default.createElement(bootstrap_1.CollapsibleSection, { label: react_1.default.createElement("h5", { style: { display: "inline-block" } }, "Customize Layout"), initiallyOpen: isCustomized },
63
+ react_1.default.createElement(bootstrap_1.CollapsibleSection, { label: react_1.default.createElement("h5", { style: { display: "inline-block" } }, T `Customize Layout`), initiallyOpen: isCustomized },
41
64
  react_1.default.createElement(CustomizeLayout, { layoutOptions: layoutOptions, onLayoutOptionsChange: setLayoutOptions }))),
42
65
  react_1.default.createElement("div", { style: { textAlign: "center", padding: 3 } },
43
- react_1.default.createElement("span", { className: "text-muted" }, "Preview As:\u00A0"),
66
+ react_1.default.createElement("span", { className: "text-muted" },
67
+ T `Preview As:`,
68
+ "\u00A0"),
44
69
  react_1.default.createElement(bootstrap_1.Toggle, { value: previewSize, onChange: setPreviewSize, size: "xs", options: sizeOptions.map((so, index) => ({ value: index, label: so.label })) })),
45
70
  react_1.default.createElement("div", { style: { overflow: "auto" } },
46
71
  react_1.default.createElement("div", { style: {
@@ -61,29 +86,28 @@ function LayoutOptionsComponent(props) {
61
86
  react_1.default.createElement("div", { style: { backgroundColor: "#888" } }),
62
87
  react_1.default.createElement("div", { style: { backgroundColor: "#888", gridColumn: "1 / 4" } })))));
63
88
  }
64
- exports.LayoutOptionsComponent = LayoutOptionsComponent;
65
89
  function ThemeToggle(props) {
66
90
  function renderStyleItem(theme) {
67
91
  const isActive = props.isCustomized ? theme == "custom" : (props.theme || "default") == theme;
68
92
  if (theme == "default") {
69
93
  return (react_1.default.createElement("a", { key: theme, className: isActive ? "list-group-item active" : "list-group-item", onClick: props.onChange.bind(null, "default") },
70
- react_1.default.createElement("div", null, "Classic Dashboard"),
71
- react_1.default.createElement("div", { style: { opacity: 0.6 } }, "Ideal for data display with minimal text")));
94
+ react_1.default.createElement("div", null, T `Classic Dashboard`),
95
+ react_1.default.createElement("div", { style: { opacity: 0.6 } }, T `Ideal for data display with minimal text`)));
72
96
  }
73
97
  if (theme == "greybg") {
74
98
  return (react_1.default.createElement("a", { key: theme, className: isActive ? "list-group-item active" : "list-group-item", onClick: props.onChange.bind(null, "greybg") },
75
- react_1.default.createElement("div", null, "Framed Dashboard"),
76
- react_1.default.createElement("div", { style: { opacity: 0.6 } }, "Each widget is white on a grey background")));
99
+ react_1.default.createElement("div", null, T `Framed Dashboard`),
100
+ react_1.default.createElement("div", { style: { opacity: 0.6 } }, T `Each widget is white on a grey background`)));
77
101
  }
78
102
  if (theme == "story") {
79
103
  return (react_1.default.createElement("a", { key: theme, className: isActive ? "list-group-item active" : "list-group-item", onClick: props.onChange.bind(null, "story") },
80
- react_1.default.createElement("div", null, "Story"),
81
- react_1.default.createElement("div", { style: { opacity: 0.6 } }, "Ideal for data-driven storytelling with lots of text")));
104
+ react_1.default.createElement("div", null, T `Story`),
105
+ react_1.default.createElement("div", { style: { opacity: 0.6 } }, T `Ideal for data-driven storytelling with lots of text`)));
82
106
  }
83
107
  if (theme == "custom") {
84
108
  return (react_1.default.createElement("a", { key: theme, className: isActive ? "list-group-item active" : "list-group-item" },
85
- react_1.default.createElement("div", null, "Custom"),
86
- react_1.default.createElement("div", { style: { opacity: 0.6 } }, "Customized theme")));
109
+ react_1.default.createElement("div", null, T `Custom`),
110
+ react_1.default.createElement("div", { style: { opacity: 0.6 } }, T `Customized theme`)));
87
111
  }
88
112
  return null;
89
113
  }
@@ -109,149 +133,152 @@ function CustomizeLayout(props) {
109
133
  onLayoutOptionsChange(uploadedTheme);
110
134
  }
111
135
  catch (error) {
112
- alert("Invalid theme file");
136
+ alert(T `Invalid theme file`);
113
137
  }
114
138
  };
115
139
  reader.readAsText(file);
116
140
  }
117
141
  };
118
142
  return (react_1.default.createElement("div", null,
119
- react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: "Text" },
120
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Title" },
143
+ react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: T `Text` },
144
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Title` },
121
145
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.titleWidgetFont, onChange: (titleWidgetFont) => {
122
146
  onLayoutOptionsChange({ ...layoutOptions, titleWidgetFont });
123
147
  } })),
124
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Heading H1" },
148
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Heading H1` },
125
149
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.textWidgetH1Font, onChange: (textWidgetH1Font) => {
126
150
  onLayoutOptionsChange({ ...layoutOptions, textWidgetH1Font });
127
151
  } }),
128
152
  react_1.default.createElement("div", { className: "mt-1" },
129
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Top Margin:", horizontal: true, labelMuted: true },
153
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Top Margin:`, horizontal: true, labelMuted: true },
130
154
  react_1.default.createElement(PixelsInput, { value: layoutOptions.textWidgetH1MarginTop, onChange: (textWidgetH1MarginTop) => {
131
155
  onLayoutOptionsChange({ ...layoutOptions, textWidgetH1MarginTop: textWidgetH1MarginTop });
132
156
  } })))),
133
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Heading H2" },
157
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Heading H2` },
134
158
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.textWidgetH2Font, onChange: (textWidgetH2Font) => {
135
159
  onLayoutOptionsChange({ ...layoutOptions, textWidgetH2Font });
136
160
  } }),
137
161
  react_1.default.createElement("div", { className: "mt-1" },
138
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Top Margin:", horizontal: true, labelMuted: true },
162
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Top Margin:`, horizontal: true, labelMuted: true },
139
163
  react_1.default.createElement(PixelsInput, { value: layoutOptions.textWidgetH2MarginTop, onChange: (textWidgetH2MarginTop) => {
140
164
  onLayoutOptionsChange({ ...layoutOptions, textWidgetH2MarginTop: textWidgetH2MarginTop });
141
165
  } })))),
142
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Text" },
166
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Text` },
143
167
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.textWidgetFont, onChange: (textWidgetFont) => {
144
168
  onLayoutOptionsChange({ ...layoutOptions, textWidgetFont });
145
169
  } }),
146
170
  react_1.default.createElement("div", { className: "mt-1" },
147
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Line Height:", horizontal: true, labelMuted: true },
171
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Line Height:`, horizontal: true, labelMuted: true },
148
172
  react_1.default.createElement(PixelsInput, { value: layoutOptions.textWidgetLineHeight, onChange: (textWidgetLineHeight) => {
149
173
  onLayoutOptionsChange({ ...layoutOptions, textWidgetLineHeight: textWidgetLineHeight });
150
- }, allowDefault: true, defaultLabel: "Default" })),
151
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Paragraph Spacing:", horizontal: true, labelMuted: true },
174
+ }, allowDefault: true, defaultLabel: T `Default` })),
175
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Paragraph Spacing:`, horizontal: true, labelMuted: true },
152
176
  react_1.default.createElement(PixelsInput, { value: layoutOptions.textWidgetParagraphSpacing, onChange: (textWidgetParagraphSpacing) => {
153
177
  onLayoutOptionsChange({ ...layoutOptions, textWidgetParagraphSpacing: textWidgetParagraphSpacing });
154
178
  } })))),
155
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "List Line Height:", horizontal: true },
179
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `List Line Height:`, horizontal: true },
156
180
  react_1.default.createElement(PixelsInput, { value: layoutOptions.textWidgetListLineHeight, onChange: (textWidgetListLineHeight) => {
157
181
  onLayoutOptionsChange({ ...layoutOptions, textWidgetListLineHeight: textWidgetListLineHeight });
158
- }, allowDefault: true, defaultLabel: "Default" })),
159
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Chart Header Font" },
182
+ }, allowDefault: true, defaultLabel: T `Default` })),
183
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Chart Header Font` },
160
184
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.widgetHeaderFont, onChange: (widgetHeaderFont) => {
161
185
  onLayoutOptionsChange({ ...layoutOptions, widgetHeaderFont });
162
186
  } })),
163
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Chart Footer Font" },
187
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Chart Footer Font` },
164
188
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.widgetFooterFont, onChange: (widgetFooterFont) => {
165
189
  onLayoutOptionsChange({ ...layoutOptions, widgetFooterFont });
166
190
  } })),
167
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Chart Font" },
191
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Chart Font` },
168
192
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.chartFont, onChange: (chartFont) => {
169
193
  onLayoutOptionsChange({ ...layoutOptions, chartFont });
170
194
  } })),
171
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Table Font" },
195
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Table Font` },
172
196
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.tableFont, onChange: (tableFont) => {
173
197
  onLayoutOptionsChange({ ...layoutOptions, tableFont });
174
198
  } })),
175
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Pivot Table Font" },
199
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Pivot Table Font` },
176
200
  react_1.default.createElement(FontStyleEditor_1.FontStyleEditor, { value: layoutOptions.pivotTableFont, onChange: (pivotTableFont) => {
177
201
  onLayoutOptionsChange({ ...layoutOptions, pivotTableFont });
178
202
  } }))),
179
- react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: "Spacing" },
180
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Outer Padding:", horizontal: true },
203
+ react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: T `Spacing` },
204
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Outer Padding:`, horizontal: true },
181
205
  react_1.default.createElement(PixelsInput, { value: layoutOptions.outerPadding, onChange: (outerPadding) => {
182
206
  onLayoutOptionsChange({ ...layoutOptions, outerPadding: outerPadding });
183
207
  } })),
184
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Block Margins" },
208
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Block Margins` },
185
209
  react_1.default.createElement(SpacingInput, { value: layoutOptions.blockMargin, onChange: (blockMargin) => {
186
210
  onLayoutOptionsChange({ ...layoutOptions, blockMargin });
187
211
  } })),
188
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Block Padding" },
212
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Block Padding` },
189
213
  react_1.default.createElement(SpacingInput, { value: layoutOptions.blockPadding, onChange: (blockPadding) => {
190
214
  onLayoutOptionsChange({ ...layoutOptions, blockPadding });
191
215
  } })),
192
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Block Border Radius:", horizontal: true },
216
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Block Border Radius:`, horizontal: true },
193
217
  react_1.default.createElement(PixelsInput, { value: layoutOptions.blockBorderRadius, onChange: (blockBorderRadius) => {
194
218
  onLayoutOptionsChange({ ...layoutOptions, blockBorderRadius: blockBorderRadius });
195
219
  } }))),
196
- react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: "Colors" },
197
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Background Color:", horizontal: true },
220
+ react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: T `Colors` },
221
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Background Color:`, horizontal: true },
198
222
  react_1.default.createElement(ColorComponent_1.default, { color: layoutOptions.backgroundColor, onChange: (backgroundColor) => {
199
223
  onLayoutOptionsChange({ ...layoutOptions, backgroundColor: backgroundColor ?? "white" });
200
224
  } })),
201
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Block Background Color:", horizontal: true },
225
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Block Background Color:`, horizontal: true },
202
226
  react_1.default.createElement(ColorComponent_1.default, { color: layoutOptions.blockBackgroundColor, onChange: (blockBackgroundColor) => {
203
227
  onLayoutOptionsChange({ ...layoutOptions, blockBackgroundColor: blockBackgroundColor ?? "white" });
204
228
  } })),
205
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Custom Colors" },
206
- react_1.default.createElement("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(6, 1fr)', gap: '5px' } }, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((colorIndex) => (react_1.default.createElement(ColorComponent_1.default, { key: colorIndex, color: layoutOptions.customColors[colorIndex], onChange: (color) => {
229
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Custom Colors` },
230
+ react_1.default.createElement("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(6, 1fr)', gap: '5px' } }, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17].map((colorIndex) => (react_1.default.createElement(ColorComponent_1.default, { key: colorIndex, color: layoutOptions.customColors[colorIndex], onChange: (color) => {
207
231
  onLayoutOptionsChange((0, immer_1.default)(layoutOptions, (draft) => {
208
232
  draft.customColors[colorIndex] = color;
209
233
  }));
210
234
  } })))))),
211
- react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: "Responsive Layout" },
212
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Collapse to Single Column" },
235
+ react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: T `Responsive Layout` },
236
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Collapse to Single Column` },
213
237
  react_1.default.createElement(WidthSelector, { value: layoutOptions.collapseColumnsWidth, onChange: (collapseColumnsWidth) => {
214
238
  onLayoutOptionsChange({ ...layoutOptions, collapseColumnsWidth });
215
239
  }, sign: "< " })),
216
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Hide Quickfilters" },
240
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Hide Quickfilters` },
217
241
  react_1.default.createElement(WidthSelector, { value: layoutOptions.hideQuickfiltersWidth, onChange: (hideQuickfiltersWidth) => {
218
242
  onLayoutOptionsChange({ ...layoutOptions, hideQuickfiltersWidth });
219
243
  }, sign: "< " })),
220
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Minimum Width (before scrolling or scaling)" },
244
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Minimum Width (before scrolling or scaling)` },
221
245
  react_1.default.createElement(WidthSelector, { value: layoutOptions.minimumWidth, onChange: (minimumWidth) => {
222
246
  onLayoutOptionsChange({ ...layoutOptions, minimumWidth });
223
247
  }, sign: "< " }),
224
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "When Below Minimum Width" },
248
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `When Below Minimum Width` },
225
249
  react_1.default.createElement(bootstrap_1.Toggle, { value: layoutOptions.belowMinimumWidth, onChange: (belowMinimumWidth) => {
226
250
  onLayoutOptionsChange({ ...layoutOptions, belowMinimumWidth: belowMinimumWidth });
227
251
  }, size: "sm", options: [
228
- { value: "scroll", label: "Scroll" },
229
- { value: "scale", label: "Scale" }
252
+ { value: "scroll", label: T `Scroll` },
253
+ { value: "scale", label: T `Scale` }
230
254
  ] }))),
231
- react_1.default.createElement(bootstrap_1.FormGroup, { label: "Maximum Width (before padding)" },
255
+ react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Maximum Width (before padding)` },
232
256
  react_1.default.createElement(WidthSelector, { value: layoutOptions.maximumWidth, onChange: (maximumWidth) => {
233
257
  onLayoutOptionsChange({ ...layoutOptions, maximumWidth });
234
258
  }, sign: "> " })),
235
259
  react_1.default.createElement(bootstrap_1.Checkbox, { value: layoutOptions.collapseSpacers, onChange: (collapseSpacers) => {
236
260
  onLayoutOptionsChange({ ...layoutOptions, collapseSpacers });
237
- } }, "Collapse Spacers on Mobile")),
238
- react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: "Download/Upload Theme", initiallyClosed: true },
239
- react_1.default.createElement("div", { className: "mb-2 text-muted" }, "Download or upload a custom theme to use for this dashboard. This saves the current theme as a theme file that you can then use on other dashboards by uploading it there."),
261
+ } }, T `Collapse Spacers on Mobile`)),
262
+ react_1.default.createElement(bootstrap_1.CollapsiblePanel, { title: T `Download/Upload Theme`, initiallyClosed: true },
263
+ react_1.default.createElement("div", { className: "mb-2 text-muted" }, T `Download or upload a custom theme to use for this dashboard.
264
+ This saves the current theme as a theme file that you can then use on other dashboards by uploading it there.`),
240
265
  react_1.default.createElement("div", { style: { display: "flex", flexDirection: "column", marginTop: "10px", gap: "10px" } },
241
266
  react_1.default.createElement("button", { className: "btn btn-sm btn-secondary", onClick: handleDownloadTheme },
242
267
  react_1.default.createElement("i", { className: "fas fa-download" }),
243
- " Download Custom Theme"),
268
+ " ",
269
+ T `Download Custom Theme`),
244
270
  react_1.default.createElement("label", { className: "btn btn-sm btn-secondary" },
245
271
  react_1.default.createElement("i", { className: "fas fa-upload" }),
246
- " Upload Custom Theme",
272
+ " ",
273
+ T `Upload Custom Theme`,
247
274
  react_1.default.createElement("input", { type: "file", accept: ".theme", style: { display: "none" }, onChange: handleUploadTheme }))))));
248
275
  }
249
276
  function SpacingInput(props) {
250
277
  return (react_1.default.createElement("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', width: '100%' } },
251
- react_1.default.createElement("div", null, "Top"),
252
- react_1.default.createElement("div", null, "Bottom"),
253
- react_1.default.createElement("div", null, "Left"),
254
- react_1.default.createElement("div", null, "Right"),
278
+ react_1.default.createElement("div", null, T `Top`),
279
+ react_1.default.createElement("div", null, T `Bottom`),
280
+ react_1.default.createElement("div", null, T `Left`),
281
+ react_1.default.createElement("div", null, T `Right`),
255
282
  react_1.default.createElement(PixelsInput, { value: props.value.top, onChange: (top) => props.onChange({ ...props.value, top: top }) }),
256
283
  react_1.default.createElement(PixelsInput, { value: props.value.bottom, onChange: (bottom) => props.onChange({ ...props.value, bottom: bottom }) }),
257
284
  react_1.default.createElement(PixelsInput, { value: props.value.left, onChange: (left) => props.onChange({ ...props.value, left: left }) }),
@@ -262,13 +289,13 @@ function PixelsInput(props) {
262
289
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40
263
290
  ];
264
291
  return (react_1.default.createElement("div", { className: "dropdown" },
265
- react_1.default.createElement("a", { className: "dropdown-toggle", type: "button", id: "pixelsInputDropdown", "data-bs-toggle": "dropdown", "aria-expanded": "false" }, props.value === null ? (props.defaultLabel || "Default") : `${props.value}px`),
292
+ react_1.default.createElement("a", { className: "dropdown-toggle", type: "button", id: "pixelsInputDropdown", "data-bs-toggle": "dropdown", "aria-expanded": "false" }, props.value === null ? (props.defaultLabel || T `Default`) : `${props.value}px`),
266
293
  react_1.default.createElement("ul", { className: "dropdown-menu", "aria-labelledby": "pixelsInputDropdown" },
267
294
  props.allowDefault && (react_1.default.createElement("li", { key: "default" },
268
295
  react_1.default.createElement("a", { className: "dropdown-item", href: "#", onClick: (e) => {
269
296
  e.preventDefault();
270
297
  props.onChange(null);
271
- } }, props.defaultLabel || "Default"))),
298
+ } }, props.defaultLabel || T `Default`))),
272
299
  options.map(option => (react_1.default.createElement("li", { key: option },
273
300
  react_1.default.createElement("a", { className: "dropdown-item", href: "#", onClick: (e) => {
274
301
  e.preventDefault();
@@ -278,12 +305,12 @@ function PixelsInput(props) {
278
305
  "px")))))));
279
306
  }
280
307
  function WidthSelector(props) {
281
- return (react_1.default.createElement(bootstrap_1.Select, { value: props.value, onChange: props.onChange, nullLabel: "N/A", options: [
282
- { value: 400, label: `${props.sign}400px (Phone)` },
283
- { value: 600, label: `${props.sign}600px (Small tablet)` },
284
- { value: 800, label: `${props.sign}800px (Tablet)` },
285
- { value: 1000, label: `${props.sign}1000px (Laptop)` },
286
- { value: 1200, label: `${props.sign}1200px (Desktop)` },
287
- { value: 1600, label: `${props.sign}1600px (Wide Desktop)` }
308
+ return (react_1.default.createElement(bootstrap_1.Select, { value: props.value, onChange: props.onChange, nullLabel: T `N/A`, options: [
309
+ { value: 400, label: `${props.sign}400px (${T `Phone`})` },
310
+ { value: 600, label: `${props.sign}600px (${T `Small tablet`})` },
311
+ { value: 800, label: `${props.sign}800px (${T `Tablet`})` },
312
+ { value: 1000, label: `${props.sign}1000px (${T `Laptop`})` },
313
+ { value: 1200, label: `${props.sign}1200px (${T `Desktop`})` },
314
+ { value: 1600, label: `${props.sign}1600px (${T `Wide Desktop`})` }
288
315
  ] }));
289
316
  }
@@ -9,14 +9,13 @@ export interface SettingsModalComponentProps {
9
9
  interface SettingsModalComponentState {
10
10
  design: DashboardDesign | null;
11
11
  }
12
+ /** Popup with settings for dashboard */
12
13
  export default class SettingsModalComponent extends React.Component<SettingsModalComponentProps, SettingsModalComponentState> {
13
14
  constructor(props: SettingsModalComponentProps);
14
- show(design: any): void;
15
+ show(design: DashboardDesign): void;
15
16
  handleSave: () => void;
16
17
  handleCancel: () => void;
17
- handleDesignChange: (design: any) => void;
18
- handleFiltersChange: (filters: any) => void;
19
- handleGlobalFiltersChange: (globalFilters: any) => void;
18
+ handleDesignChange: (design: DashboardDesign) => void;
20
19
  render(): React.JSX.Element | null;
21
20
  }
22
21
  export {};
@@ -27,9 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const lodash_1 = __importDefault(require("lodash"));
30
- const react_1 = __importDefault(require("react"));
31
- const R = react_1.default.createElement;
32
- const update_object_1 = __importDefault(require("update-object"));
30
+ const react_1 = __importStar(require("react"));
33
31
  const languages_1 = require("../languages");
34
32
  const ui = __importStar(require("@mwater/react-library/lib/bootstrap"));
35
33
  const react_select_1 = __importDefault(require("react-select"));
@@ -38,7 +36,8 @@ const ActionCancelModalComponent_1 = __importDefault(require("@mwater/react-libr
38
36
  const QuickfiltersDesignComponent_1 = __importDefault(require("../quickfilter/QuickfiltersDesignComponent"));
39
37
  const FiltersDesignerComponent_1 = __importDefault(require("../FiltersDesignerComponent"));
40
38
  const MWaterContextComponent_1 = require("../MWaterContextComponent");
41
- // Popup with settings for dashboard
39
+ const immer_1 = __importDefault(require("immer"));
40
+ /** Popup with settings for dashboard */
42
41
  class SettingsModalComponent extends react_1.default.Component {
43
42
  constructor(props) {
44
43
  super(props);
@@ -59,50 +58,65 @@ class SettingsModalComponent extends react_1.default.Component {
59
58
  handleDesignChange = (design) => {
60
59
  return this.setState({ design });
61
60
  };
62
- handleFiltersChange = (filters) => {
63
- const design = lodash_1.default.extend({}, this.state.design, { filters });
64
- return this.handleDesignChange(design);
65
- };
66
- handleGlobalFiltersChange = (globalFilters) => {
67
- const design = lodash_1.default.extend({}, this.state.design, { globalFilters });
68
- return this.handleDesignChange(design);
69
- };
70
61
  render() {
71
62
  // Don't show if not editing
72
63
  if (!this.state.design) {
73
64
  return null;
74
65
  }
75
- // Get filterable tables
76
- const filterableTables = DashboardUtils.getFilterableTables(this.state.design, this.props.schema);
77
- const localeOptions = lodash_1.default.map(languages_1.languages, (language) => {
66
+ return (react_1.default.createElement(ActionCancelModalComponent_1.default, { size: "large", onCancel: this.handleCancel, onAction: this.handleSave },
67
+ react_1.default.createElement(SettingsComponent, { design: this.state.design, onDesignChange: this.handleDesignChange, schema: this.props.schema, dataSource: this.props.dataSource })));
68
+ }
69
+ }
70
+ exports.default = SettingsModalComponent;
71
+ /** Settings component for dashboard that is used in the settings modal */
72
+ function SettingsComponent(props) {
73
+ const { design, onDesignChange, schema, dataSource } = props;
74
+ // Get filterable tables
75
+ const filterableTables = DashboardUtils.getFilterableTables(design, schema);
76
+ const localeOptions = (0, react_1.useMemo)(() => {
77
+ return lodash_1.default.map(languages_1.languages, (language) => {
78
78
  return {
79
79
  value: language.code,
80
80
  label: language.en + " (" + language.name + ")"
81
81
  };
82
82
  });
83
- return (react_1.default.createElement(ActionCancelModalComponent_1.default, { size: "large", onCancel: this.handleCancel, onAction: this.handleSave },
84
- react_1.default.createElement("div", { style: { paddingBottom: 200 } },
85
- react_1.default.createElement("h4", null, "Quick Filters"),
86
- react_1.default.createElement("div", { className: "text-muted" }, "Quick filters are shown to the user as a dropdown at the top of the dashboard and can be used to filter data of widgets."),
87
- filterableTables.length > 0 ? (react_1.default.createElement(QuickfiltersDesignComponent_1.default, { design: this.state.design.quickfilters || [], onDesignChange: (design) => this.handleDesignChange((0, update_object_1.default)(this.state.design, { quickfilters: { $set: design } })), schema: this.props.schema, dataSource: this.props.dataSource, tables: filterableTables })) : ("Nothing to quickfilter. Add widgets to the dashboard"),
88
- react_1.default.createElement("h4", { style: { paddingTop: 10 } }, "Filters"),
89
- react_1.default.createElement("div", { className: "text-muted" }, "Filters are built in to the dashboard and cannot be changed by viewers of the dashboard."),
90
- filterableTables.length > 0 ? (react_1.default.createElement(FiltersDesignerComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, filters: this.state.design.filters, onFiltersChange: this.handleFiltersChange, filterableTables: filterableTables })) : ("Nothing to filter. Add widgets to the dashboard"),
91
- react_1.default.createElement(MWaterContextComponent_1.GlobalFiltersElementFactoryContext.Consumer, null, globalFiltersElementFactory => globalFiltersElementFactory ? (react_1.default.createElement("div", null,
92
- react_1.default.createElement("h4", { style: { paddingTop: 10 } }, "Global Filters"),
93
- globalFiltersElementFactory({
94
- schema: this.props.schema,
95
- dataSource: this.props.dataSource,
96
- filterableTables,
97
- globalFilters: this.state.design.globalFilters || [],
98
- onChange: this.handleGlobalFiltersChange
99
- }))) : undefined),
100
- react_1.default.createElement("h4", { style: { paddingTop: 10 } }, "Language"),
101
- react_1.default.createElement("div", { className: "text-muted" }, "Controls the preferred language of widgets and uses specified language when available"),
102
- react_1.default.createElement(react_select_1.default, { value: lodash_1.default.findWhere(localeOptions, { value: this.state.design.locale || "en" }) || null, options: localeOptions, onChange: (locale) => this.handleDesignChange((0, update_object_1.default)(this.state.design, { locale: { $set: locale.value } })) }),
103
- this.state.design.implicitFiltersEnabled && (react_1.default.createElement(react_1.default.Fragment, null,
104
- react_1.default.createElement("h4", { style: { paddingTop: 10 } }, "Advanced"),
105
- react_1.default.createElement(ui.Checkbox, { value: this.state.design.implicitFiltersEnabled != null ? this.state.design.implicitFiltersEnabled : true, onChange: (value) => this.handleDesignChange((0, update_object_1.default)(this.state.design, { implicitFiltersEnabled: { $set: value } })) }, "Enable Implicit Filtering (leave unchecked for new dashboards)"))))));
106
- }
83
+ }, [languages_1.languages]);
84
+ return (react_1.default.createElement("div", { style: { paddingBottom: 200 } },
85
+ react_1.default.createElement("h4", null, T `Quick Filters`),
86
+ react_1.default.createElement("div", { className: "text-muted" }, T `Quick filters are shown to the user as a dropdown at the top of the dashboard and can be used to filter data of widgets.`),
87
+ filterableTables.length > 0 ? (react_1.default.createElement(QuickfiltersDesignComponent_1.default, { design: design.quickfilters || [], onDesignChange: (quickfilters) => {
88
+ onDesignChange((0, immer_1.default)(design, draft => {
89
+ draft.quickfilters = quickfilters;
90
+ }));
91
+ }, schema: schema, dataSource: dataSource, tables: filterableTables })) : (T `Nothing to quickfilter. Add widgets to the dashboard`),
92
+ react_1.default.createElement("h4", { style: { paddingTop: 10 } }, T `Filters`),
93
+ react_1.default.createElement("div", { className: "text-muted" }, T `Filters are built in to the dashboard and cannot be changed by viewers of the dashboard.`),
94
+ filterableTables.length > 0 ? (react_1.default.createElement(FiltersDesignerComponent_1.default, { schema: schema, dataSource: dataSource, filters: design.filters, onFiltersChange: (filters) => {
95
+ onDesignChange((0, immer_1.default)(design, draft => {
96
+ draft.filters = filters;
97
+ }));
98
+ }, filterableTables: filterableTables })) : (T `Nothing to filter. Add widgets to the dashboard`),
99
+ react_1.default.createElement(MWaterContextComponent_1.GlobalFiltersElementFactoryContext.Consumer, null, globalFiltersElementFactory => globalFiltersElementFactory ? (react_1.default.createElement("div", null,
100
+ react_1.default.createElement("h4", { style: { paddingTop: 10 } }, T `Global Filters`),
101
+ globalFiltersElementFactory({
102
+ schema,
103
+ dataSource,
104
+ filterableTables,
105
+ globalFilters: design.globalFilters || [],
106
+ onChange: (globalFilters) => {
107
+ onDesignChange((0, immer_1.default)(design, draft => {
108
+ draft.globalFilters = globalFilters;
109
+ }));
110
+ }
111
+ }))) : undefined),
112
+ react_1.default.createElement("h4", { style: { paddingTop: 10 } }, T `Language`),
113
+ react_1.default.createElement("div", { className: "text-muted" }, T `Controls the preferred language of widgets and uses specified language when available`),
114
+ react_1.default.createElement(react_select_1.default, { value: lodash_1.default.findWhere(localeOptions, { value: design.locale || "en" }) || null, options: localeOptions, onChange: (locale) => onDesignChange((0, immer_1.default)(design, draft => {
115
+ draft.locale = locale.value;
116
+ })) }),
117
+ design.implicitFiltersEnabled && (react_1.default.createElement(react_1.default.Fragment, null,
118
+ react_1.default.createElement("h4", { style: { paddingTop: 10 } }, T `Advanced`),
119
+ react_1.default.createElement(ui.Checkbox, { value: design.implicitFiltersEnabled != null ? design.implicitFiltersEnabled : true, onChange: (value) => onDesignChange((0, immer_1.default)(design, draft => {
120
+ draft.implicitFiltersEnabled = value;
121
+ })) }, T `Enable Implicit Filtering (leave unchecked for new dashboards)`)))));
107
122
  }
108
- exports.default = SettingsModalComponent;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Schema, DataSource } from "@mwater/expressions";
3
2
  import { JsonQLFilter } from "../JsonQLFilter";
4
3
  import { WidgetScope } from "../WidgetScope";
@@ -3,7 +3,7 @@ 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.WidgetComponent = void 0;
6
+ exports.WidgetComponent = WidgetComponent;
7
7
  const react_1 = require("react");
8
8
  const WidgetFactory_1 = __importDefault(require("../widgets/WidgetFactory"));
9
9
  /**
@@ -40,7 +40,6 @@ function WidgetComponent(props) {
40
40
  refreshKey: props.refreshKey
41
41
  });
42
42
  }
43
- exports.WidgetComponent = WidgetComponent;
44
43
  /** Always returns the same function to prevent unnecessary re-rendering. Forwards to the real function */
45
44
  function useStabilizeFunction(func) {
46
45
  // Create ref for changing func
@@ -3,7 +3,12 @@ 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.createDashboardStyles = exports.expandFontFamily = exports.DashboardStyleWrapper = exports.getLayoutOptions = exports.getDefaultLayoutOptions = exports.BlocksLayoutOptionsContext = void 0;
6
+ exports.BlocksLayoutOptionsContext = void 0;
7
+ exports.getDefaultLayoutOptions = getDefaultLayoutOptions;
8
+ exports.getLayoutOptions = getLayoutOptions;
9
+ exports.DashboardStyleWrapper = DashboardStyleWrapper;
10
+ exports.expandFontFamily = expandFontFamily;
11
+ exports.createDashboardStyles = createDashboardStyles;
7
12
  const react_1 = require("react");
8
13
  const react_2 = __importDefault(require("react"));
9
14
  const CustomColorsContext_1 = require("../CustomColorsContext");
@@ -22,7 +27,6 @@ function getDefaultLayoutOptions(theme) {
22
27
  }
23
28
  throw new Error(`Unknown theme: ${theme}`);
24
29
  }
25
- exports.getDefaultLayoutOptions = getDefaultLayoutOptions;
26
30
  /** Gets the current layout options for a design */
27
31
  function getLayoutOptions(design) {
28
32
  if (!design.layoutOptions) {
@@ -33,7 +37,6 @@ function getLayoutOptions(design) {
33
37
  ...design.layoutOptions
34
38
  };
35
39
  }
36
- exports.getLayoutOptions = getLayoutOptions;
37
40
  /**
38
41
  * Injects the dashboard style into the child component. Also provides a context for layout options.
39
42
  * This is to allow modals to reinject the layout options when they are opened.
@@ -50,7 +53,6 @@ function DashboardStyleWrapper(props) {
50
53
  react_2.default.createElement(CustomColorsContext_1.CustomColorsContext.Provider, { value: { customColors: mergedCustomColors } },
51
54
  react_2.default.createElement(exports.BlocksLayoutOptionsContext.Provider, { value: props.layoutOptions }, props.children)));
52
55
  }
53
- exports.DashboardStyleWrapper = DashboardStyleWrapper;
54
56
  /** Bootstrap default font color */
55
57
  const defaultFontColor = "#212529";
56
58
  const defaultTheme = {
@@ -210,7 +212,6 @@ function expandFontFamily(fontFamily) {
210
212
  }
211
213
  return `"${fontFamily}", sans-serif`;
212
214
  }
213
- exports.expandFontFamily = expandFontFamily;
214
215
  /**
215
216
  * Create a CSS style string from a LayoutOptions object
216
217
  *
@@ -371,9 +372,13 @@ ${scope} .mwater-visualization-text-widget-style-footer {
371
372
  }
372
373
 
373
374
  /** --- Chart styles --- */
375
+ ${scope} {
376
+ --chart-text-color: ${layoutOptions.chartFont.color};
377
+ }
378
+
374
379
  ${scope} .bb text {
375
380
  font-size: ${layoutOptions.chartFont.size}px;
376
- fill: ${layoutOptions.chartFont.color};
381
+ fill: var(--chart-text-color);
377
382
  font-family: ${expandFontFamily(layoutOptions.chartFont.family)};
378
383
  font-weight: ${layoutOptions.chartFont.weight};
379
384
  }
@@ -442,4 +447,3 @@ ${scope} .mwater-visualization-widget-placeholder-message {
442
447
 
443
448
  `;
444
449
  }
445
- exports.createDashboardStyles = createDashboardStyles;
@@ -95,14 +95,7 @@ export default class DatagridComponent extends React.Component<DatagridComponent
95
95
  }, HTMLElement>;
96
96
  renderEditor(): React.CElement<DatagridEditorComponentProps, DatagridEditorComponent> | undefined;
97
97
  renderFindReplaceModal(filters: any): React.CElement<any, FindReplaceModalComponent>;
98
- render(): React.DetailedReactHTMLElement<{
99
- style: {
100
- width: string;
101
- height: string;
102
- position: "relative";
103
- paddingTop: number;
104
- };
105
- }, HTMLElement>;
98
+ render(): React.FunctionComponentElement<React.ProviderProps<string>>;
106
99
  }
107
100
  interface DatagridEditorComponentProps {
108
101
  schema: Schema;