@perses-dev/dashboards 0.38.0 → 0.40.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 (303) hide show
  1. package/dist/cjs/components/AddGroupButton/AddGroupButton.js +9 -7
  2. package/dist/cjs/components/AddGroupButton/index.js +10 -8
  3. package/dist/cjs/components/AddPanelButton/AddPanelButton.js +9 -7
  4. package/dist/cjs/components/AddPanelButton/index.js +10 -8
  5. package/dist/cjs/components/Dashboard/Dashboard.js +14 -11
  6. package/dist/cjs/components/Dashboard/index.js +10 -8
  7. package/dist/cjs/components/DashboardStickyToolbar/DashboardStickyToolbar.js +18 -16
  8. package/dist/cjs/components/DashboardStickyToolbar/index.js +10 -8
  9. package/dist/cjs/components/DashboardToolbar/DashboardToolbar.js +43 -41
  10. package/dist/cjs/components/DashboardToolbar/index.js +10 -8
  11. package/dist/cjs/components/DeletePanelDialog/DeletePanelDialog.js +12 -10
  12. package/dist/cjs/components/DeletePanelDialog/index.js +10 -8
  13. package/dist/cjs/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +17 -15
  14. package/dist/cjs/components/DeletePanelGroupDialog/index.js +10 -8
  15. package/dist/cjs/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.js +5 -3
  16. package/dist/cjs/components/DiscardChangesConfirmationDialog/index.js +10 -8
  17. package/dist/cjs/components/DownloadButton/DownloadButton.js +12 -10
  18. package/dist/cjs/components/DownloadButton/index.js +10 -8
  19. package/dist/cjs/components/EditButton/EditButton.js +8 -6
  20. package/dist/cjs/components/EditButton/index.js +10 -8
  21. package/dist/cjs/components/EditJsonButton/EditJsonButton.js +10 -8
  22. package/dist/cjs/components/EditJsonButton/index.js +10 -8
  23. package/dist/cjs/components/EditJsonDialog/EditJsonDialog.js +29 -23
  24. package/dist/cjs/components/EditJsonDialog/index.js +10 -8
  25. package/dist/cjs/components/EmptyDashboard/EmptyDashboard.js +18 -16
  26. package/dist/cjs/components/EmptyDashboard/index.js +10 -8
  27. package/dist/cjs/components/GridLayout/GridContainer.js +5 -3
  28. package/dist/cjs/components/GridLayout/GridItemContent.js +33 -12
  29. package/dist/cjs/components/GridLayout/GridLayout.js +19 -16
  30. package/dist/cjs/components/GridLayout/GridTitle.js +35 -33
  31. package/dist/cjs/components/GridLayout/index.js +13 -11
  32. package/dist/cjs/components/Panel/Panel.js +21 -21
  33. package/dist/cjs/components/Panel/PanelContent.js +8 -6
  34. package/dist/cjs/components/Panel/PanelHeader.js +39 -33
  35. package/dist/cjs/components/Panel/index.js +10 -8
  36. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +25 -77
  37. package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +269 -141
  38. package/dist/cjs/components/PanelDrawer/PanelPreview.js +11 -9
  39. package/dist/cjs/components/PanelDrawer/index.js +10 -8
  40. package/dist/cjs/components/PanelDrawer/usePanelEditor.js +3 -1
  41. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.js +18 -16
  42. package/dist/cjs/components/PanelGroupDialog/PanelGroupEditorForm.js +15 -11
  43. package/dist/cjs/components/PanelGroupDialog/index.js +10 -8
  44. package/dist/cjs/components/QuerySummaryTable/QuerySummaryTable.js +46 -44
  45. package/dist/cjs/components/QuerySummaryTable/index.js +10 -8
  46. package/dist/cjs/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +23 -21
  47. package/dist/cjs/components/SaveChangesConfirmationDialog/index.js +10 -8
  48. package/dist/cjs/components/SaveDashboardButton/SaveDashboardButton.js +11 -9
  49. package/dist/cjs/components/SaveDashboardButton/index.js +10 -8
  50. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +40 -16
  51. package/dist/cjs/components/TimeRangeControls/index.js +10 -8
  52. package/dist/cjs/components/ToolbarIconButton/ToolbarIconButton.js +5 -3
  53. package/dist/cjs/components/ToolbarIconButton/index.js +10 -8
  54. package/dist/cjs/components/Variables/BuiltinVariableAccordions.js +140 -0
  55. package/dist/cjs/components/Variables/EditVariablesButton.js +18 -11
  56. package/dist/cjs/components/Variables/TemplateVariable.js +127 -76
  57. package/dist/cjs/components/Variables/VariableEditor.js +356 -117
  58. package/dist/cjs/components/Variables/VariableList.js +45 -21
  59. package/dist/cjs/components/Variables/index.js +14 -11
  60. package/dist/cjs/components/index.js +31 -29
  61. package/dist/cjs/constants/grid-layout-config.js +6 -2
  62. package/dist/cjs/constants/index.js +11 -9
  63. package/dist/cjs/constants/user-interface-text.js +6 -2
  64. package/dist/cjs/context/DashboardProvider/DashboardProvider.js +40 -34
  65. package/dist/cjs/context/DashboardProvider/common.js +6 -2
  66. package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +70 -38
  67. package/dist/cjs/context/DashboardProvider/delete-panel-group-slice.js +3 -1
  68. package/dist/cjs/context/DashboardProvider/delete-panel-slice.js +5 -3
  69. package/dist/cjs/context/DashboardProvider/discard-changes-dialog-slice.js +3 -1
  70. package/dist/cjs/context/DashboardProvider/duplicate-panel-slice.js +3 -1
  71. package/dist/cjs/context/DashboardProvider/edit-json-dialog-slice.js +3 -1
  72. package/dist/cjs/context/DashboardProvider/index.js +12 -10
  73. package/dist/cjs/context/DashboardProvider/panel-editor-slice.js +13 -11
  74. package/dist/cjs/context/DashboardProvider/panel-group-editor-slice.js +8 -6
  75. package/dist/cjs/context/DashboardProvider/panel-group-slice.js +15 -7
  76. package/dist/cjs/context/DashboardProvider/panel-slice.js +3 -1
  77. package/dist/cjs/context/DashboardProvider/save-changes-dialog-slice.js +3 -1
  78. package/dist/cjs/context/DatasourceStoreProvider.js +114 -45
  79. package/dist/cjs/context/TemplateVariableProvider/TemplateVariableProvider.js +189 -51
  80. package/dist/cjs/context/TemplateVariableProvider/hydrationUtils.js +65 -13
  81. package/dist/cjs/context/TemplateVariableProvider/index.js +10 -8
  82. package/dist/cjs/context/TemplateVariableProvider/query-params.js +17 -7
  83. package/dist/cjs/context/TemplateVariableProvider/utils.js +49 -9
  84. package/dist/cjs/context/index.js +13 -11
  85. package/dist/cjs/context/useDashboard.js +8 -6
  86. package/dist/cjs/index.js +12 -10
  87. package/dist/cjs/stories/decorators/WithDashboard.js +6 -4
  88. package/dist/cjs/stories/decorators/WithDatasourceStore.js +6 -4
  89. package/dist/cjs/stories/decorators/WithTemplateVariables.js +6 -4
  90. package/dist/cjs/stories/decorators/constants.js +5 -3
  91. package/dist/cjs/stories/decorators/index.js +13 -11
  92. package/dist/cjs/test/dashboard-provider.js +8 -4
  93. package/dist/cjs/test/datasource-provider.js +16 -12
  94. package/dist/cjs/test/index.js +13 -11
  95. package/dist/cjs/test/plugin-registry.js +6 -4
  96. package/dist/cjs/test/render.js +27 -20
  97. package/dist/cjs/test/setup-tests.js +2 -2
  98. package/dist/cjs/test/testDashboard.js +13 -11
  99. package/dist/cjs/utils/index.js +11 -9
  100. package/dist/cjs/utils/panelUtils.js +9 -3
  101. package/dist/cjs/utils/time.js +5 -3
  102. package/dist/cjs/validation/index.js +30 -0
  103. package/dist/cjs/validation/panel.js +29 -0
  104. package/dist/cjs/views/ViewDashboard/DashboardApp.js +24 -15
  105. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +64 -19
  106. package/dist/cjs/views/ViewDashboard/index.js +10 -8
  107. package/dist/cjs/views/index.js +10 -8
  108. package/dist/components/AddGroupButton/AddGroupButton.js.map +1 -1
  109. package/dist/components/AddGroupButton/index.js.map +1 -1
  110. package/dist/components/AddPanelButton/AddPanelButton.js.map +1 -1
  111. package/dist/components/AddPanelButton/index.js.map +1 -1
  112. package/dist/components/Dashboard/Dashboard.d.ts +3 -1
  113. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -1
  114. package/dist/components/Dashboard/Dashboard.js +3 -2
  115. package/dist/components/Dashboard/Dashboard.js.map +1 -1
  116. package/dist/components/Dashboard/index.js.map +1 -1
  117. package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.js.map +1 -1
  118. package/dist/components/DashboardStickyToolbar/index.js.map +1 -1
  119. package/dist/components/DashboardToolbar/DashboardToolbar.js +1 -1
  120. package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -1
  121. package/dist/components/DashboardToolbar/index.js.map +1 -1
  122. package/dist/components/DeletePanelDialog/DeletePanelDialog.js.map +1 -1
  123. package/dist/components/DeletePanelDialog/index.js.map +1 -1
  124. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +2 -2
  125. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js.map +1 -1
  126. package/dist/components/DeletePanelGroupDialog/index.js.map +1 -1
  127. package/dist/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.js.map +1 -1
  128. package/dist/components/DiscardChangesConfirmationDialog/index.js.map +1 -1
  129. package/dist/components/DownloadButton/DownloadButton.js.map +1 -1
  130. package/dist/components/DownloadButton/index.js.map +1 -1
  131. package/dist/components/EditButton/EditButton.js.map +1 -1
  132. package/dist/components/EditButton/index.js.map +1 -1
  133. package/dist/components/EditJsonButton/EditJsonButton.js.map +1 -1
  134. package/dist/components/EditJsonButton/index.js.map +1 -1
  135. package/dist/components/EditJsonDialog/EditJsonDialog.d.ts +4 -1
  136. package/dist/components/EditJsonDialog/EditJsonDialog.d.ts.map +1 -1
  137. package/dist/components/EditJsonDialog/EditJsonDialog.js +12 -8
  138. package/dist/components/EditJsonDialog/EditJsonDialog.js.map +1 -1
  139. package/dist/components/EditJsonDialog/index.js.map +1 -1
  140. package/dist/components/EmptyDashboard/EmptyDashboard.js.map +1 -1
  141. package/dist/components/EmptyDashboard/index.js.map +1 -1
  142. package/dist/components/GridLayout/GridContainer.js.map +1 -1
  143. package/dist/components/GridLayout/GridItemContent.d.ts +2 -0
  144. package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
  145. package/dist/components/GridLayout/GridItemContent.js +27 -8
  146. package/dist/components/GridLayout/GridItemContent.js.map +1 -1
  147. package/dist/components/GridLayout/GridLayout.d.ts +2 -0
  148. package/dist/components/GridLayout/GridLayout.d.ts.map +1 -1
  149. package/dist/components/GridLayout/GridLayout.js +3 -2
  150. package/dist/components/GridLayout/GridLayout.js.map +1 -1
  151. package/dist/components/GridLayout/GridTitle.js.map +1 -1
  152. package/dist/components/GridLayout/index.js.map +1 -1
  153. package/dist/components/Panel/Panel.d.ts +20 -0
  154. package/dist/components/Panel/Panel.d.ts.map +1 -1
  155. package/dist/components/Panel/Panel.js +8 -10
  156. package/dist/components/Panel/Panel.js.map +1 -1
  157. package/dist/components/Panel/PanelContent.js.map +1 -1
  158. package/dist/components/Panel/PanelHeader.d.ts +2 -1
  159. package/dist/components/Panel/PanelHeader.d.ts.map +1 -1
  160. package/dist/components/Panel/PanelHeader.js +7 -3
  161. package/dist/components/Panel/PanelHeader.js.map +1 -1
  162. package/dist/components/Panel/index.js.map +1 -1
  163. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -1
  164. package/dist/components/PanelDrawer/PanelDrawer.js +22 -76
  165. package/dist/components/PanelDrawer/PanelDrawer.js.map +1 -1
  166. package/dist/components/PanelDrawer/PanelEditorForm.d.ts +4 -1
  167. package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -1
  168. package/dist/components/PanelDrawer/PanelEditorForm.js +223 -138
  169. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
  170. package/dist/components/PanelDrawer/PanelPreview.d.ts.map +1 -1
  171. package/dist/components/PanelDrawer/PanelPreview.js +2 -2
  172. package/dist/components/PanelDrawer/PanelPreview.js.map +1 -1
  173. package/dist/components/PanelDrawer/index.js.map +1 -1
  174. package/dist/components/PanelDrawer/usePanelEditor.js.map +1 -1
  175. package/dist/components/PanelGroupDialog/PanelGroupDialog.js.map +1 -1
  176. package/dist/components/PanelGroupDialog/PanelGroupEditorForm.js.map +1 -1
  177. package/dist/components/PanelGroupDialog/index.js.map +1 -1
  178. package/dist/components/QuerySummaryTable/QuerySummaryTable.js +4 -4
  179. package/dist/components/QuerySummaryTable/QuerySummaryTable.js.map +1 -1
  180. package/dist/components/QuerySummaryTable/index.js.map +1 -1
  181. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +4 -4
  182. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js.map +1 -1
  183. package/dist/components/SaveChangesConfirmationDialog/index.js.map +1 -1
  184. package/dist/components/SaveDashboardButton/SaveDashboardButton.js +4 -4
  185. package/dist/components/SaveDashboardButton/SaveDashboardButton.js.map +1 -1
  186. package/dist/components/SaveDashboardButton/index.js.map +1 -1
  187. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +1 -1
  188. package/dist/components/TimeRangeControls/TimeRangeControls.js +19 -1
  189. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -1
  190. package/dist/components/TimeRangeControls/index.js.map +1 -1
  191. package/dist/components/ToolbarIconButton/ToolbarIconButton.js.map +1 -1
  192. package/dist/components/ToolbarIconButton/index.js.map +1 -1
  193. package/dist/components/Variables/BuiltinVariableAccordions.d.ts +8 -0
  194. package/dist/components/Variables/BuiltinVariableAccordions.d.ts.map +1 -0
  195. package/dist/components/Variables/BuiltinVariableAccordions.js +127 -0
  196. package/dist/components/Variables/BuiltinVariableAccordions.js.map +1 -0
  197. package/dist/components/Variables/EditVariablesButton.d.ts.map +1 -1
  198. package/dist/components/Variables/EditVariablesButton.js +6 -1
  199. package/dist/components/Variables/EditVariablesButton.js.map +1 -1
  200. package/dist/components/Variables/TemplateVariable.d.ts +12 -2
  201. package/dist/components/Variables/TemplateVariable.d.ts.map +1 -1
  202. package/dist/components/Variables/TemplateVariable.js +102 -61
  203. package/dist/components/Variables/TemplateVariable.js.map +1 -1
  204. package/dist/components/Variables/VariableEditor.d.ts +9 -1
  205. package/dist/components/Variables/VariableEditor.d.ts.map +1 -1
  206. package/dist/components/Variables/VariableEditor.js +326 -97
  207. package/dist/components/Variables/VariableEditor.js.map +1 -1
  208. package/dist/components/Variables/VariableList.d.ts +5 -0
  209. package/dist/components/Variables/VariableList.d.ts.map +1 -1
  210. package/dist/components/Variables/VariableList.js +32 -18
  211. package/dist/components/Variables/VariableList.js.map +1 -1
  212. package/dist/components/Variables/index.d.ts +1 -0
  213. package/dist/components/Variables/index.d.ts.map +1 -1
  214. package/dist/components/Variables/index.js +1 -0
  215. package/dist/components/Variables/index.js.map +1 -1
  216. package/dist/components/index.js.map +1 -1
  217. package/dist/constants/grid-layout-config.js.map +1 -1
  218. package/dist/constants/index.js.map +1 -1
  219. package/dist/constants/user-interface-text.js.map +1 -1
  220. package/dist/context/DashboardProvider/DashboardProvider.js +5 -5
  221. package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
  222. package/dist/context/DashboardProvider/common.js.map +1 -1
  223. package/dist/context/DashboardProvider/dashboard-provider-api.js +2 -2
  224. package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
  225. package/dist/context/DashboardProvider/delete-panel-group-slice.js.map +1 -1
  226. package/dist/context/DashboardProvider/delete-panel-slice.js +2 -2
  227. package/dist/context/DashboardProvider/delete-panel-slice.js.map +1 -1
  228. package/dist/context/DashboardProvider/discard-changes-dialog-slice.js.map +1 -1
  229. package/dist/context/DashboardProvider/duplicate-panel-slice.js.map +1 -1
  230. package/dist/context/DashboardProvider/edit-json-dialog-slice.js.map +1 -1
  231. package/dist/context/DashboardProvider/index.js.map +1 -1
  232. package/dist/context/DashboardProvider/panel-editor-slice.d.ts +2 -1
  233. package/dist/context/DashboardProvider/panel-editor-slice.d.ts.map +1 -1
  234. package/dist/context/DashboardProvider/panel-editor-slice.js +7 -7
  235. package/dist/context/DashboardProvider/panel-editor-slice.js.map +1 -1
  236. package/dist/context/DashboardProvider/panel-group-editor-slice.js +2 -2
  237. package/dist/context/DashboardProvider/panel-group-editor-slice.js.map +1 -1
  238. package/dist/context/DashboardProvider/panel-group-slice.js +3 -3
  239. package/dist/context/DashboardProvider/panel-group-slice.js.map +1 -1
  240. package/dist/context/DashboardProvider/panel-slice.js.map +1 -1
  241. package/dist/context/DashboardProvider/save-changes-dialog-slice.js.map +1 -1
  242. package/dist/context/DatasourceStoreProvider.d.ts +14 -10
  243. package/dist/context/DatasourceStoreProvider.d.ts.map +1 -1
  244. package/dist/context/DatasourceStoreProvider.js +107 -40
  245. package/dist/context/DatasourceStoreProvider.js.map +1 -1
  246. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts +48 -13
  247. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts.map +1 -1
  248. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js +165 -41
  249. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js.map +1 -1
  250. package/dist/context/TemplateVariableProvider/hydrationUtils.d.ts +9 -2
  251. package/dist/context/TemplateVariableProvider/hydrationUtils.d.ts.map +1 -1
  252. package/dist/context/TemplateVariableProvider/hydrationUtils.js +67 -12
  253. package/dist/context/TemplateVariableProvider/hydrationUtils.js.map +1 -1
  254. package/dist/context/TemplateVariableProvider/index.js.map +1 -1
  255. package/dist/context/TemplateVariableProvider/query-params.js.map +1 -1
  256. package/dist/context/TemplateVariableProvider/utils.d.ts +27 -2
  257. package/dist/context/TemplateVariableProvider/utils.d.ts.map +1 -1
  258. package/dist/context/TemplateVariableProvider/utils.js +48 -6
  259. package/dist/context/TemplateVariableProvider/utils.js.map +1 -1
  260. package/dist/context/index.js.map +1 -1
  261. package/dist/context/useDashboard.js +1 -1
  262. package/dist/context/useDashboard.js.map +1 -1
  263. package/dist/index.js.map +1 -1
  264. package/dist/stories/decorators/WithDashboard.js.map +1 -1
  265. package/dist/stories/decorators/WithDatasourceStore.js.map +1 -1
  266. package/dist/stories/decorators/WithTemplateVariables.js.map +1 -1
  267. package/dist/stories/decorators/constants.js +2 -2
  268. package/dist/stories/decorators/constants.js.map +1 -1
  269. package/dist/stories/decorators/index.js.map +1 -1
  270. package/dist/test/dashboard-provider.js.map +1 -1
  271. package/dist/test/datasource-provider.d.ts.map +1 -1
  272. package/dist/test/datasource-provider.js +5 -7
  273. package/dist/test/datasource-provider.js.map +1 -1
  274. package/dist/test/index.js.map +1 -1
  275. package/dist/test/plugin-registry.js.map +1 -1
  276. package/dist/test/render.d.ts.map +1 -1
  277. package/dist/test/render.js +8 -3
  278. package/dist/test/render.js.map +1 -1
  279. package/dist/test/setup-tests.js.map +1 -1
  280. package/dist/test/testDashboard.js +10 -10
  281. package/dist/test/testDashboard.js.map +1 -1
  282. package/dist/utils/index.js.map +1 -1
  283. package/dist/utils/panelUtils.js.map +1 -1
  284. package/dist/utils/time.js.map +1 -1
  285. package/dist/validation/index.d.ts +2 -0
  286. package/dist/validation/index.d.ts.map +1 -0
  287. package/dist/validation/index.js +15 -0
  288. package/dist/validation/index.js.map +1 -0
  289. package/dist/validation/panel.d.ts +19 -0
  290. package/dist/validation/panel.d.ts.map +1 -0
  291. package/dist/validation/panel.js +21 -0
  292. package/dist/validation/panel.js.map +1 -0
  293. package/dist/views/ViewDashboard/DashboardApp.d.ts +1 -0
  294. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  295. package/dist/views/ViewDashboard/DashboardApp.js +11 -4
  296. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
  297. package/dist/views/ViewDashboard/ViewDashboard.d.ts +3 -1
  298. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  299. package/dist/views/ViewDashboard/ViewDashboard.js +51 -8
  300. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -1
  301. package/dist/views/ViewDashboard/index.js.map +1 -1
  302. package/dist/views/index.js.map +1 -1
  303. package/package.json +8 -7
@@ -12,18 +12,24 @@
12
12
  // limitations under the License.
13
13
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
14
  import { useState, useMemo } from 'react';
15
- import { Button, Stack, Box, TableContainer, TableBody, TableRow, TableCell as MuiTableCell, Table, TableHead, Switch, Typography, IconButton, Alert, styled } from '@mui/material';
15
+ import { Button, Stack, Box, TableContainer, TableBody, TableRow, TableCell as MuiTableCell, Table, TableHead, Switch, Typography, IconButton, Alert, styled, capitalize, Tooltip, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
16
16
  import AddIcon from 'mdi-material-ui/Plus';
17
17
  import { useImmer } from 'use-immer';
18
18
  import PencilIcon from 'mdi-material-ui/Pencil';
19
19
  import TrashIcon from 'mdi-material-ui/TrashCan';
20
20
  import ArrowUp from 'mdi-material-ui/ArrowUp';
21
21
  import ArrowDown from 'mdi-material-ui/ArrowDown';
22
- import { VariableEditForm, VARIABLE_TYPES } from '@perses-dev/plugin-system';
22
+ import ContentDuplicate from 'mdi-material-ui/ContentDuplicate';
23
+ import OpenInNewIcon from 'mdi-material-ui/OpenInNew';
24
+ import ExpandMoreIcon from 'mdi-material-ui/ChevronUp';
25
+ import { VariableEditorForm, VARIABLE_TYPES } from '@perses-dev/plugin-system';
26
+ import { InfoTooltip } from '@perses-dev/components';
23
27
  import { useDiscardChangesConfirmationDialog } from '../../context';
28
+ import { hydrateTemplateVariableStates } from '../../context/TemplateVariableProvider/hydrationUtils';
29
+ import { BuiltinVariableAccordions } from './BuiltinVariableAccordions';
24
30
  function getVariableLabelByKind(kind) {
25
- var ref;
26
- return (ref = VARIABLE_TYPES.find((variableType)=>variableType.kind === kind)) === null || ref === void 0 ? void 0 : ref.label;
31
+ var _VARIABLE_TYPES_find;
32
+ return (_VARIABLE_TYPES_find = VARIABLE_TYPES.find((variableType)=>variableType.kind === kind)) === null || _VARIABLE_TYPES_find === void 0 ? void 0 : _VARIABLE_TYPES_find.label;
27
33
  }
28
34
  function getValidation(variableDefinitions) {
29
35
  const errors = [];
@@ -41,9 +47,19 @@ export function VariableEditor(props) {
41
47
  const [variableDefinitions, setVariableDefinitions] = useImmer(props.variableDefinitions);
42
48
  const [variableEditIdx, setVariableEditIdx] = useState(null);
43
49
  const [variableFormAction, setVariableFormAction] = useState('update');
50
+ const externalVariableDefinitions = props.externalVariableDefinitions;
51
+ const builtinVariableDefinitions = props.builtinVariableDefinitions;
44
52
  const validation = useMemo(()=>getValidation(variableDefinitions), [
45
53
  variableDefinitions
46
54
  ]);
55
+ const [variableState] = useMemo(()=>{
56
+ return [
57
+ hydrateTemplateVariableStates(variableDefinitions, {}, externalVariableDefinitions)
58
+ ];
59
+ }, [
60
+ externalVariableDefinitions,
61
+ variableDefinitions
62
+ ]);
47
63
  const currentEditingVariableDefinition = typeof variableEditIdx === 'number' && variableDefinitions[variableEditIdx];
48
64
  const { openDiscardChangesConfirmationDialog , closeDiscardChangesConfirmationDialog } = useDiscardChangesConfirmationDialog();
49
65
  const handleCancel = ()=>{
@@ -111,33 +127,39 @@ export function VariableEditor(props) {
111
127
  draft[index] = prevElement;
112
128
  } else {
113
129
  const nextElement = draft[index + 1];
114
- const currentElement1 = draft[index];
115
- if (index === draft.length - 1 || !nextElement || !currentElement1) {
130
+ const currentElement = draft[index];
131
+ if (index === draft.length - 1 || !nextElement || !currentElement) {
116
132
  return;
117
133
  }
118
- draft[index + 1] = currentElement1;
134
+ draft[index + 1] = currentElement;
119
135
  draft[index] = nextElement;
120
136
  }
121
137
  });
122
138
  };
123
- var ref;
139
+ const overrideVariable = (v)=>{
140
+ setVariableDefinitions((draft)=>{
141
+ draft.push(v);
142
+ });
143
+ };
144
+ var _getVariableLabelByKind, _v_spec_display_description, _getVariableLabelByKind1, _v_spec_display_description1;
124
145
  return /*#__PURE__*/ _jsxs(_Fragment, {
125
146
  children: [
126
- currentEditingVariableDefinition && /*#__PURE__*/ _jsx(VariableEditForm, {
147
+ currentEditingVariableDefinition && /*#__PURE__*/ _jsx(VariableEditorForm, {
127
148
  initialVariableDefinition: currentEditingVariableDefinition,
128
- onChange: (definition)=>{
149
+ initialAction: variableFormAction,
150
+ isDraft: true,
151
+ onSave: (definition)=>{
129
152
  setVariableDefinitions((draft)=>{
130
153
  draft[variableEditIdx] = definition;
131
154
  setVariableEditIdx(null);
132
155
  });
133
156
  },
134
- onCancel: ()=>{
157
+ onClose: ()=>{
135
158
  if (variableFormAction === 'create') {
136
159
  removeVariable(variableEditIdx);
137
160
  }
138
161
  setVariableEditIdx(null);
139
- },
140
- action: variableFormAction
162
+ }
141
163
  }),
142
164
  !currentEditingVariableDefinition && /*#__PURE__*/ _jsxs(_Fragment, {
143
165
  children: [
@@ -151,7 +173,7 @@ export function VariableEditor(props) {
151
173
  children: [
152
174
  /*#__PURE__*/ _jsx(Typography, {
153
175
  variant: "h2",
154
- children: "Variables"
176
+ children: "Edit Dashboard Variables"
155
177
  }),
156
178
  /*#__PURE__*/ _jsxs(Stack, {
157
179
  direction: "row",
@@ -184,102 +206,283 @@ export function VariableEditor(props) {
184
206
  children: /*#__PURE__*/ _jsxs(Stack, {
185
207
  spacing: 2,
186
208
  children: [
187
- !validation.isValid && validation.errors.map((error)=>/*#__PURE__*/ _jsx(Alert, {
188
- severity: "error",
189
- children: error
190
- }, error)),
191
- /*#__PURE__*/ _jsx(TableContainer, {
192
- children: /*#__PURE__*/ _jsxs(Table, {
193
- sx: {
194
- minWidth: 650
195
- },
196
- "aria-label": "table of variables",
197
- children: [
198
- /*#__PURE__*/ _jsx(TableHead, {
199
- children: /*#__PURE__*/ _jsxs(TableRow, {
200
- children: [
201
- /*#__PURE__*/ _jsx(TableCell, {
202
- children: "Visibility"
203
- }),
204
- /*#__PURE__*/ _jsx(TableCell, {
205
- children: "Name"
206
- }),
207
- /*#__PURE__*/ _jsx(TableCell, {
208
- children: "Type"
209
- }),
210
- /*#__PURE__*/ _jsx(TableCell, {
211
- align: "right"
212
- })
213
- ]
214
- })
215
- }),
216
- /*#__PURE__*/ _jsx(TableBody, {
217
- children: variableDefinitions.map((v, idx)=>{
218
- var ref1;
219
- /*#__PURE__*/ return _jsxs(TableRow, {
220
- children: [
221
- /*#__PURE__*/ _jsx(TableCell, {
222
- component: "th",
223
- scope: "row",
224
- children: /*#__PURE__*/ _jsx(Switch, {
225
- checked: ((ref1 = v.spec.display) === null || ref1 === void 0 ? void 0 : ref1.hidden) !== true,
226
- onChange: (e)=>{
227
- toggleVariableVisibility(idx, e.target.checked);
228
- }
209
+ /*#__PURE__*/ _jsxs(Stack, {
210
+ spacing: 2,
211
+ children: [
212
+ !validation.isValid && validation.errors.map((error)=>/*#__PURE__*/ _jsx(Alert, {
213
+ severity: "error",
214
+ children: error
215
+ }, error)),
216
+ /*#__PURE__*/ _jsx(TableContainer, {
217
+ children: /*#__PURE__*/ _jsxs(Table, {
218
+ sx: {
219
+ minWidth: 650
220
+ },
221
+ "aria-label": "table of variables",
222
+ children: [
223
+ /*#__PURE__*/ _jsx(TableHead, {
224
+ children: /*#__PURE__*/ _jsxs(TableRow, {
225
+ children: [
226
+ /*#__PURE__*/ _jsx(TableCell, {
227
+ children: "Visibility"
228
+ }),
229
+ /*#__PURE__*/ _jsx(TableCell, {
230
+ children: "Name"
231
+ }),
232
+ /*#__PURE__*/ _jsx(TableCell, {
233
+ children: "Type"
234
+ }),
235
+ /*#__PURE__*/ _jsx(TableCell, {
236
+ children: "Description"
237
+ }),
238
+ /*#__PURE__*/ _jsx(TableCell, {
239
+ align: "right",
240
+ children: "Actions"
229
241
  })
230
- }),
231
- /*#__PURE__*/ _jsx(TableCell, {
232
- component: "th",
233
- scope: "row",
234
- sx: {
235
- fontWeight: 'bold'
236
- },
237
- children: v.spec.name
238
- }),
239
- /*#__PURE__*/ _jsx(TableCell, {
240
- children: (ref = getVariableLabelByKind(v.kind)) !== null && ref !== void 0 ? ref : v.kind
241
- }),
242
- /*#__PURE__*/ _jsxs(TableCell, {
243
- align: "right",
242
+ ]
243
+ })
244
+ }),
245
+ /*#__PURE__*/ _jsx(TableBody, {
246
+ children: variableDefinitions.map((v, idx)=>{
247
+ var _v_spec_display, _v_spec_display1;
248
+ /*#__PURE__*/ return _jsxs(TableRow, {
244
249
  children: [
245
- /*#__PURE__*/ _jsx(IconButton, {
246
- onClick: ()=>changeVariableOrder(idx, 'up'),
247
- disabled: idx === 0,
248
- children: /*#__PURE__*/ _jsx(ArrowUp, {})
250
+ /*#__PURE__*/ _jsx(TableCell, {
251
+ component: "th",
252
+ scope: "row",
253
+ children: /*#__PURE__*/ _jsx(Switch, {
254
+ checked: ((_v_spec_display = v.spec.display) === null || _v_spec_display === void 0 ? void 0 : _v_spec_display.hidden) !== true,
255
+ onChange: (e)=>{
256
+ toggleVariableVisibility(idx, e.target.checked);
257
+ }
258
+ })
249
259
  }),
250
- /*#__PURE__*/ _jsx(IconButton, {
251
- onClick: ()=>changeVariableOrder(idx, 'down'),
252
- disabled: idx === variableDefinitions.length - 1,
253
- children: /*#__PURE__*/ _jsx(ArrowDown, {})
260
+ /*#__PURE__*/ _jsx(TableCell, {
261
+ component: "th",
262
+ scope: "row",
263
+ sx: {
264
+ fontWeight: 'bold'
265
+ },
266
+ children: /*#__PURE__*/ _jsx(VariableName, {
267
+ name: v.spec.name,
268
+ state: variableState.get({
269
+ name: v.spec.name
270
+ })
271
+ })
254
272
  }),
255
- /*#__PURE__*/ _jsx(IconButton, {
256
- onClick: ()=>editVariable(idx),
257
- children: /*#__PURE__*/ _jsx(PencilIcon, {})
273
+ /*#__PURE__*/ _jsx(TableCell, {
274
+ children: (_getVariableLabelByKind = getVariableLabelByKind(v.kind)) !== null && _getVariableLabelByKind !== void 0 ? _getVariableLabelByKind : v.kind
258
275
  }),
259
- /*#__PURE__*/ _jsx(IconButton, {
260
- onClick: ()=>removeVariable(idx),
261
- children: /*#__PURE__*/ _jsx(TrashIcon, {})
276
+ /*#__PURE__*/ _jsx(TableCell, {
277
+ children: (_v_spec_display_description = (_v_spec_display1 = v.spec.display) === null || _v_spec_display1 === void 0 ? void 0 : _v_spec_display1.description) !== null && _v_spec_display_description !== void 0 ? _v_spec_display_description : ''
278
+ }),
279
+ /*#__PURE__*/ _jsxs(TableCell, {
280
+ align: "right",
281
+ sx: {
282
+ display: 'flex',
283
+ flexDirection: 'row',
284
+ flexGrow: 1
285
+ },
286
+ children: [
287
+ /*#__PURE__*/ _jsx(IconButton, {
288
+ onClick: ()=>changeVariableOrder(idx, 'up'),
289
+ disabled: idx === 0,
290
+ children: /*#__PURE__*/ _jsx(ArrowUp, {})
291
+ }),
292
+ /*#__PURE__*/ _jsx(IconButton, {
293
+ onClick: ()=>changeVariableOrder(idx, 'down'),
294
+ disabled: idx === variableDefinitions.length - 1,
295
+ children: /*#__PURE__*/ _jsx(ArrowDown, {})
296
+ }),
297
+ /*#__PURE__*/ _jsx(IconButton, {
298
+ onClick: ()=>editVariable(idx),
299
+ children: /*#__PURE__*/ _jsx(PencilIcon, {})
300
+ }),
301
+ /*#__PURE__*/ _jsx(IconButton, {
302
+ onClick: ()=>removeVariable(idx),
303
+ children: /*#__PURE__*/ _jsx(TrashIcon, {})
304
+ })
305
+ ]
306
+ })
307
+ ]
308
+ }, v.spec.name);
309
+ })
310
+ })
311
+ ]
312
+ })
313
+ }),
314
+ /*#__PURE__*/ _jsx(Box, {
315
+ display: "flex",
316
+ children: /*#__PURE__*/ _jsx(Button, {
317
+ variant: "contained",
318
+ startIcon: /*#__PURE__*/ _jsx(AddIcon, {}),
319
+ sx: {
320
+ marginLeft: 'auto'
321
+ },
322
+ onClick: addVariable,
323
+ children: "Add Variable"
324
+ })
325
+ })
326
+ ]
327
+ }),
328
+ externalVariableDefinitions && !externalVariableDefinitions.every((v)=>v.definitions.length === 0) && externalVariableDefinitions.map((extVar)=>{
329
+ return extVar.definitions.length > 0 && /*#__PURE__*/ _jsxs(Accordion, {
330
+ sx: (theme)=>({
331
+ '.MuiAccordionSummary-root': {
332
+ backgroundColor: theme.palette.background.lighter
333
+ },
334
+ '.MuiAccordionDetails-root': {
335
+ backgroundColor: theme.palette.background.lighter
336
+ }
337
+ }),
338
+ children: [
339
+ /*#__PURE__*/ _jsx(AccordionSummary, {
340
+ expandIcon: /*#__PURE__*/ _jsx(ExpandMoreIcon, {}),
341
+ "aria-controls": extVar.source,
342
+ id: extVar.source,
343
+ children: /*#__PURE__*/ _jsx(Stack, {
344
+ flexDirection: "row",
345
+ alignItems: "center",
346
+ justifyContent: "start",
347
+ children: /*#__PURE__*/ _jsxs(_Fragment, {
348
+ children: [
349
+ extVar.tooltip ? /*#__PURE__*/ _jsx(Typography, {
350
+ variant: "h2",
351
+ children: /*#__PURE__*/ _jsx(InfoTooltip, {
352
+ title: extVar.tooltip.title || '',
353
+ description: extVar.tooltip.description || '',
354
+ children: /*#__PURE__*/ _jsxs("span", {
355
+ children: [
356
+ capitalize(extVar.source),
357
+ " Variables"
358
+ ]
262
359
  })
360
+ })
361
+ }) : /*#__PURE__*/ _jsxs(Typography, {
362
+ variant: "h2",
363
+ children: [
364
+ capitalize(extVar.source),
365
+ " Variables"
263
366
  ]
367
+ }),
368
+ extVar.editLink && /*#__PURE__*/ _jsx(IconButton, {
369
+ href: extVar.editLink,
370
+ target: "_blank",
371
+ children: /*#__PURE__*/ _jsx(OpenInNewIcon, {
372
+ fontSize: "small"
373
+ })
264
374
  })
265
375
  ]
266
- }, v.spec.name);
376
+ })
377
+ })
378
+ }),
379
+ /*#__PURE__*/ _jsx(AccordionDetails, {
380
+ children: /*#__PURE__*/ _jsx(TableContainer, {
381
+ children: /*#__PURE__*/ _jsxs(Table, {
382
+ sx: {
383
+ minWidth: 650
384
+ },
385
+ "aria-label": "table of external variables",
386
+ children: [
387
+ /*#__PURE__*/ _jsx(TableHead, {
388
+ children: /*#__PURE__*/ _jsxs(TableRow, {
389
+ children: [
390
+ /*#__PURE__*/ _jsx(TableCell, {
391
+ children: "Visibility"
392
+ }),
393
+ /*#__PURE__*/ _jsx(TableCell, {
394
+ children: "Name"
395
+ }),
396
+ /*#__PURE__*/ _jsx(TableCell, {
397
+ children: "Type"
398
+ }),
399
+ /*#__PURE__*/ _jsx(TableCell, {
400
+ children: "Description"
401
+ }),
402
+ /*#__PURE__*/ _jsx(TableCell, {
403
+ align: "right",
404
+ children: "Actions"
405
+ })
406
+ ]
407
+ })
408
+ }),
409
+ /*#__PURE__*/ _jsx(TableBody, {
410
+ children: extVar.definitions.map((v)=>{
411
+ var _v_spec_display, _v_spec_display1;
412
+ /*#__PURE__*/ return _jsxs(TableRow, {
413
+ children: [
414
+ /*#__PURE__*/ _jsx(TableCell, {
415
+ component: "th",
416
+ scope: "row",
417
+ children: /*#__PURE__*/ _jsx(Switch, {
418
+ checked: ((_v_spec_display = v.spec.display) === null || _v_spec_display === void 0 ? void 0 : _v_spec_display.hidden) !== true,
419
+ disabled: true
420
+ })
421
+ }),
422
+ /*#__PURE__*/ _jsx(TableCell, {
423
+ component: "th",
424
+ scope: "row",
425
+ sx: {
426
+ fontWeight: 'bold'
427
+ },
428
+ children: /*#__PURE__*/ _jsx(VariableName, {
429
+ name: v.spec.name,
430
+ state: variableState.get({
431
+ name: v.spec.name,
432
+ source: extVar.source
433
+ })
434
+ })
435
+ }),
436
+ /*#__PURE__*/ _jsx(TableCell, {
437
+ children: (_getVariableLabelByKind1 = getVariableLabelByKind(v.kind)) !== null && _getVariableLabelByKind1 !== void 0 ? _getVariableLabelByKind1 : v.kind
438
+ }),
439
+ /*#__PURE__*/ _jsx(TableCell, {
440
+ children: (_v_spec_display_description1 = (_v_spec_display1 = v.spec.display) === null || _v_spec_display1 === void 0 ? void 0 : _v_spec_display1.description) !== null && _v_spec_display_description1 !== void 0 ? _v_spec_display_description1 : ''
441
+ }),
442
+ /*#__PURE__*/ _jsxs(TableCell, {
443
+ align: "right",
444
+ children: [
445
+ /*#__PURE__*/ _jsx(Tooltip, {
446
+ title: "Override",
447
+ children: /*#__PURE__*/ _jsx(IconButton, {
448
+ onClick: ()=>overrideVariable(v),
449
+ disabled: !!variableState.get({
450
+ name: v.spec.name
451
+ }),
452
+ children: /*#__PURE__*/ _jsx(ContentDuplicate, {})
453
+ })
454
+ }),
455
+ /*#__PURE__*/ _jsx(IconButton, {
456
+ disabled: true,
457
+ children: /*#__PURE__*/ _jsx(ArrowUp, {})
458
+ }),
459
+ /*#__PURE__*/ _jsx(IconButton, {
460
+ disabled: true,
461
+ children: /*#__PURE__*/ _jsx(ArrowDown, {})
462
+ }),
463
+ /*#__PURE__*/ _jsx(IconButton, {
464
+ disabled: true,
465
+ children: /*#__PURE__*/ _jsx(PencilIcon, {})
466
+ }),
467
+ /*#__PURE__*/ _jsx(IconButton, {
468
+ disabled: true,
469
+ children: /*#__PURE__*/ _jsx(TrashIcon, {})
470
+ })
471
+ ]
472
+ })
473
+ ]
474
+ }, v.spec.name);
475
+ })
476
+ })
477
+ ]
478
+ })
267
479
  })
268
480
  })
269
481
  ]
270
- })
482
+ });
271
483
  }),
272
- /*#__PURE__*/ _jsx(Box, {
273
- display: "flex",
274
- children: /*#__PURE__*/ _jsx(Button, {
275
- variant: "contained",
276
- startIcon: /*#__PURE__*/ _jsx(AddIcon, {}),
277
- sx: {
278
- marginLeft: 'auto'
279
- },
280
- onClick: addVariable,
281
- children: "Add Variable"
282
- })
484
+ builtinVariableDefinitions && /*#__PURE__*/ _jsx(BuiltinVariableAccordions, {
485
+ builtinVariableDefinitions: builtinVariableDefinitions
283
486
  })
284
487
  ]
285
488
  })
@@ -292,5 +495,31 @@ export function VariableEditor(props) {
292
495
  const TableCell = styled(MuiTableCell)(({ theme })=>({
293
496
  borderBottom: `solid 1px ${theme.palette.divider}`
294
497
  }));
498
+ export function VariableName(props) {
499
+ const { name , state } = props;
500
+ return /*#__PURE__*/ _jsxs(_Fragment, {
501
+ children: [
502
+ !(state === null || state === void 0 ? void 0 : state.overridden) && `${name} `,
503
+ !(state === null || state === void 0 ? void 0 : state.overridden) && (state === null || state === void 0 ? void 0 : state.overriding) && /*#__PURE__*/ _jsx(Box, {
504
+ fontWeight: "normal",
505
+ color: (theme)=>theme.palette.primary.main,
506
+ children: "(overriding)"
507
+ }),
508
+ (state === null || state === void 0 ? void 0 : state.overridden) && /*#__PURE__*/ _jsxs(_Fragment, {
509
+ children: [
510
+ /*#__PURE__*/ _jsx(Box, {
511
+ color: (theme)=>theme.palette.grey[500],
512
+ children: name
513
+ }),
514
+ /*#__PURE__*/ _jsx(Box, {
515
+ fontWeight: "normal",
516
+ color: (theme)=>theme.palette.grey[500],
517
+ children: "(overridden)"
518
+ })
519
+ ]
520
+ })
521
+ ]
522
+ });
523
+ }
295
524
 
296
525
  //# sourceMappingURL=VariableEditor.js.map