@perses-dev/dashboards 0.8.1 → 0.9.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 (186) hide show
  1. package/dist/cjs/components/Dashboard.js +29 -14
  2. package/dist/cjs/components/DashboardToolbar.js +148 -20
  3. package/dist/cjs/components/GridLayout/GridItemContent.js +24 -18
  4. package/dist/cjs/components/GridLayout/GridLayout.js +88 -26
  5. package/dist/cjs/components/GridLayout/GridTitle.js +69 -31
  6. package/dist/cjs/components/GridLayout/index.js +18 -19
  7. package/dist/cjs/components/Panel/Panel.js +145 -55
  8. package/dist/cjs/components/Panel/Panel.test.js +50 -41
  9. package/dist/cjs/components/Panel/PanelContent.js +40 -12
  10. package/dist/cjs/components/Panel/index.js +16 -17
  11. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +82 -107
  12. package/dist/cjs/components/PanelDrawer/PanelDrawer.test.js +91 -92
  13. package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +152 -0
  14. package/dist/cjs/components/PanelDrawer/PanelSpecEditor.js +40 -0
  15. package/dist/cjs/components/PanelDrawer/PanelTypeSelect.js +38 -0
  16. package/dist/cjs/components/PanelDrawer/index.js +28 -0
  17. package/dist/cjs/components/PanelDrawer/panel-editor-model.js +140 -0
  18. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.js +120 -31
  19. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.test.js +90 -83
  20. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +120 -38
  21. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.test.js +42 -27
  22. package/dist/cjs/components/TimeRangeControls/index.js +16 -17
  23. package/dist/cjs/components/Variables/Variable.js +186 -35
  24. package/dist/cjs/components/Variables/VariableList.js +100 -13
  25. package/dist/cjs/components/Variables/index.js +17 -18
  26. package/dist/cjs/components/index.js +21 -21
  27. package/dist/cjs/context/DashboardAppSlice.js +43 -31
  28. package/dist/cjs/context/DashboardProvider.js +88 -58
  29. package/dist/cjs/context/DatasourceStoreProvider.js +68 -0
  30. package/dist/cjs/context/LayoutsSlice.js +40 -27
  31. package/dist/cjs/context/QueryStringProvider.js +69 -15
  32. package/dist/cjs/context/TemplateVariableProvider.js +128 -136
  33. package/dist/cjs/context/TimeRangeProvider.js +79 -30
  34. package/dist/cjs/context/index.js +22 -22
  35. package/dist/cjs/css/styles.js +43 -39
  36. package/dist/cjs/index.js +19 -20
  37. package/dist/cjs/test/dashboard-provider.js +51 -0
  38. package/dist/cjs/test/index.js +18 -18
  39. package/dist/cjs/test/plugin-registry.js +52 -25
  40. package/dist/cjs/test/render.js +25 -22
  41. package/dist/cjs/test/setup-tests.js +4 -2
  42. package/dist/cjs/test/testDashboard.js +193 -109
  43. package/dist/cjs/utils/functions.js +9 -5
  44. package/dist/cjs/views/ViewDashboard/DashboardApp.js +50 -23
  45. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +62 -31
  46. package/dist/cjs/views/ViewDashboard/index.js +16 -17
  47. package/dist/cjs/views/index.js +16 -17
  48. package/dist/components/Dashboard.js +38 -1
  49. package/dist/components/Dashboard.js.map +1 -0
  50. package/dist/components/DashboardToolbar.d.ts.map +1 -1
  51. package/dist/components/DashboardToolbar.js +154 -1
  52. package/dist/components/DashboardToolbar.js.map +1 -0
  53. package/dist/components/GridLayout/GridItemContent.js +35 -1
  54. package/dist/components/GridLayout/GridItemContent.js.map +1 -0
  55. package/dist/components/GridLayout/GridLayout.js +99 -1
  56. package/dist/components/GridLayout/GridLayout.js.map +1 -0
  57. package/dist/components/GridLayout/GridTitle.js +77 -1
  58. package/dist/components/GridLayout/GridTitle.js.map +1 -0
  59. package/dist/components/GridLayout/index.js +16 -1
  60. package/dist/components/GridLayout/index.js.map +1 -0
  61. package/dist/components/Panel/Panel.d.ts.map +1 -1
  62. package/dist/components/Panel/Panel.js +170 -1
  63. package/dist/components/Panel/Panel.js.map +1 -0
  64. package/dist/components/Panel/Panel.test.js +71 -1
  65. package/dist/components/Panel/Panel.test.js.map +1 -0
  66. package/dist/components/Panel/PanelContent.d.ts +2 -4
  67. package/dist/components/Panel/PanelContent.d.ts.map +1 -1
  68. package/dist/components/Panel/PanelContent.js +40 -1
  69. package/dist/components/Panel/PanelContent.js.map +1 -0
  70. package/dist/components/Panel/index.js +15 -1
  71. package/dist/components/Panel/index.js.map +1 -0
  72. package/dist/components/PanelDrawer/PanelDrawer.d.ts +4 -2
  73. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -1
  74. package/dist/components/PanelDrawer/PanelDrawer.js +95 -1
  75. package/dist/components/PanelDrawer/PanelDrawer.js.map +1 -0
  76. package/dist/components/PanelDrawer/PanelDrawer.test.js +103 -1
  77. package/dist/components/PanelDrawer/PanelDrawer.test.js.map +1 -0
  78. package/dist/components/PanelDrawer/PanelEditorForm.d.ts +12 -0
  79. package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -0
  80. package/dist/components/PanelDrawer/PanelEditorForm.js +142 -0
  81. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -0
  82. package/dist/components/PanelDrawer/PanelSpecEditor.d.ts +7 -0
  83. package/dist/components/PanelDrawer/PanelSpecEditor.d.ts.map +1 -0
  84. package/dist/components/PanelDrawer/PanelSpecEditor.js +34 -0
  85. package/dist/components/PanelDrawer/PanelSpecEditor.js.map +1 -0
  86. package/dist/components/PanelDrawer/PanelTypeSelect.d.ts +8 -0
  87. package/dist/components/PanelDrawer/PanelTypeSelect.d.ts.map +1 -0
  88. package/dist/components/PanelDrawer/PanelTypeSelect.js +34 -0
  89. package/dist/components/PanelDrawer/PanelTypeSelect.js.map +1 -0
  90. package/dist/components/PanelDrawer/index.d.ts +2 -0
  91. package/dist/components/PanelDrawer/index.d.ts.map +1 -0
  92. package/dist/components/PanelDrawer/index.js +15 -0
  93. package/dist/components/PanelDrawer/index.js.map +1 -0
  94. package/dist/components/PanelDrawer/panel-editor-model.d.ts +27 -0
  95. package/dist/components/PanelDrawer/panel-editor-model.d.ts.map +1 -0
  96. package/dist/components/PanelDrawer/panel-editor-model.js +133 -0
  97. package/dist/components/PanelDrawer/panel-editor-model.js.map +1 -0
  98. package/dist/components/PanelGroupDialog/PanelGroupDialog.d.ts.map +1 -1
  99. package/dist/components/PanelGroupDialog/PanelGroupDialog.js +138 -1
  100. package/dist/components/PanelGroupDialog/PanelGroupDialog.js.map +1 -0
  101. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.js +95 -1
  102. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.js.map +1 -0
  103. package/dist/components/TimeRangeControls/TimeRangeControls.js +137 -1
  104. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -0
  105. package/dist/components/TimeRangeControls/TimeRangeControls.test.js +59 -1
  106. package/dist/components/TimeRangeControls/TimeRangeControls.test.js.map +1 -0
  107. package/dist/components/TimeRangeControls/index.js +15 -1
  108. package/dist/components/TimeRangeControls/index.js.map +1 -0
  109. package/dist/components/Variables/Variable.d.ts.map +1 -1
  110. package/dist/components/Variables/Variable.js +202 -1
  111. package/dist/components/Variables/Variable.js.map +1 -0
  112. package/dist/components/Variables/VariableList.js +108 -1
  113. package/dist/components/Variables/VariableList.js.map +1 -0
  114. package/dist/components/Variables/index.js +16 -1
  115. package/dist/components/Variables/index.js.map +1 -0
  116. package/dist/components/index.d.ts +1 -0
  117. package/dist/components/index.d.ts.map +1 -1
  118. package/dist/components/index.js +20 -1
  119. package/dist/components/index.js.map +1 -0
  120. package/dist/context/DashboardAppSlice.js +45 -1
  121. package/dist/context/DashboardAppSlice.js.map +1 -0
  122. package/dist/context/DashboardProvider.d.ts +4 -2
  123. package/dist/context/DashboardProvider.d.ts.map +1 -1
  124. package/dist/context/DashboardProvider.js +107 -1
  125. package/dist/context/DashboardProvider.js.map +1 -0
  126. package/dist/context/DatasourceStoreProvider.d.ts +16 -0
  127. package/dist/context/DatasourceStoreProvider.d.ts.map +1 -0
  128. package/dist/context/DatasourceStoreProvider.js +64 -0
  129. package/dist/context/DatasourceStoreProvider.js.map +1 -0
  130. package/dist/context/LayoutsSlice.js +43 -1
  131. package/dist/context/LayoutsSlice.js.map +1 -0
  132. package/dist/context/QueryStringProvider.js +40 -1
  133. package/dist/context/QueryStringProvider.js.map +1 -0
  134. package/dist/context/TemplateVariableProvider.d.ts +6 -3
  135. package/dist/context/TemplateVariableProvider.d.ts.map +1 -1
  136. package/dist/context/TemplateVariableProvider.js +192 -1
  137. package/dist/context/TemplateVariableProvider.js.map +1 -0
  138. package/dist/context/TimeRangeProvider.js +72 -1
  139. package/dist/context/TimeRangeProvider.js.map +1 -0
  140. package/dist/context/index.d.ts +3 -2
  141. package/dist/context/index.d.ts.map +1 -1
  142. package/dist/context/index.js +21 -1
  143. package/dist/context/index.js.map +1 -0
  144. package/dist/css/styles.js +186 -1
  145. package/dist/css/styles.js.map +1 -0
  146. package/dist/index.js +17 -1
  147. package/dist/index.js.map +1 -0
  148. package/dist/test/dashboard-provider.d.ts +19 -0
  149. package/dist/test/dashboard-provider.d.ts.map +1 -0
  150. package/dist/test/dashboard-provider.js +40 -0
  151. package/dist/test/dashboard-provider.js.map +1 -0
  152. package/dist/test/index.d.ts +1 -0
  153. package/dist/test/index.d.ts.map +1 -1
  154. package/dist/test/index.js +17 -1
  155. package/dist/test/index.js.map +1 -0
  156. package/dist/test/plugin-registry.d.ts +2 -3
  157. package/dist/test/plugin-registry.d.ts.map +1 -1
  158. package/dist/test/plugin-registry.js +74 -1
  159. package/dist/test/plugin-registry.js.map +1 -0
  160. package/dist/test/render.d.ts +1 -2
  161. package/dist/test/render.d.ts.map +1 -1
  162. package/dist/test/render.js +34 -1
  163. package/dist/test/render.js.map +1 -0
  164. package/dist/test/setup-tests.js +18 -1
  165. package/dist/test/setup-tests.js.map +1 -0
  166. package/dist/test/testDashboard.d.ts.map +1 -1
  167. package/dist/test/testDashboard.js +274 -1
  168. package/dist/test/testDashboard.js.map +1 -0
  169. package/dist/utils/functions.js +17 -1
  170. package/dist/utils/functions.js.map +1 -0
  171. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  172. package/dist/views/ViewDashboard/DashboardApp.js +56 -1
  173. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -0
  174. package/dist/views/ViewDashboard/ViewDashboard.d.ts +2 -0
  175. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  176. package/dist/views/ViewDashboard/ViewDashboard.js +79 -1
  177. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -0
  178. package/dist/views/ViewDashboard/index.js +15 -1
  179. package/dist/views/ViewDashboard/index.js.map +1 -0
  180. package/dist/views/index.js +15 -1
  181. package/dist/views/index.js.map +1 -0
  182. package/package.json +13 -7
  183. package/dist/cjs/components/PanelDrawer/PanelOptionsEditor.js +0 -19
  184. package/dist/components/PanelDrawer/PanelOptionsEditor.d.ts +0 -9
  185. package/dist/components/PanelDrawer/PanelOptionsEditor.d.ts.map +0 -1
  186. package/dist/components/PanelDrawer/PanelOptionsEditor.js +0 -1
@@ -1,10 +1,3 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Panel = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
1
  // Copyright 2022 The Perses Authors
9
2
  // Licensed under the Apache License, Version 2.0 (the "License");
10
3
  // you may not use this file except in compliance with the License.
@@ -17,73 +10,170 @@ const jsx_runtime_1 = require("react/jsx-runtime");
17
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
11
  // See the License for the specific language governing permissions and
19
12
  // limitations under the License.
20
- const react_1 = require("react");
21
- const use_resize_observer_1 = __importDefault(require("use-resize-observer"));
22
- const react_intersection_observer_1 = require("react-intersection-observer");
23
- const plugin_system_1 = require("@perses-dev/plugin-system");
24
- const components_1 = require("@perses-dev/components");
25
- const material_1 = require("@mui/material");
26
- const InformationOutline_1 = __importDefault(require("mdi-material-ui/InformationOutline"));
27
- const Pencil_1 = __importDefault(require("mdi-material-ui/Pencil"));
28
- const DragVertical_1 = __importDefault(require("mdi-material-ui/DragVertical"));
29
- const context_1 = require("../../context");
30
- const PanelContent_1 = require("./PanelContent");
31
- /**
32
- * Renders a PanelDefinition's content inside of a Card.
33
- */
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ Object.defineProperty(exports, "Panel", {
18
+ enumerable: true,
19
+ get: ()=>Panel
20
+ });
21
+ const _jsxRuntime = require("react/jsx-runtime");
22
+ const _react = require("react");
23
+ const _useResizeObserver = /*#__PURE__*/ _interopRequireDefault(require("use-resize-observer"));
24
+ const _reactIntersectionObserver = require("react-intersection-observer");
25
+ const _components = require("@perses-dev/components");
26
+ const _material = require("@mui/material");
27
+ const _informationOutline = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/InformationOutline"));
28
+ const _pencil = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/Pencil"));
29
+ const _dragVertical = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/DragVertical"));
30
+ const _context = require("../../context");
31
+ const _panelContent = require("./PanelContent");
32
+ function _interopRequireDefault(obj) {
33
+ return obj && obj.__esModule ? obj : {
34
+ default: obj
35
+ };
36
+ }
34
37
  function Panel(props) {
35
- const { definition, groupIndex, panelKey, ...others } = props;
36
- const [contentElement, setContentElement] = (0, react_1.useState)(null);
37
- const [isHovered, setIsHovered] = (0, react_1.useState)(false);
38
- const { width, height } = (0, use_resize_observer_1.default)({ ref: contentElement });
39
- const contentDimensions = (0, react_1.useMemo)(() => {
40
- if (width === undefined || height === undefined)
41
- return undefined;
42
- return { width, height };
43
- }, [width, height]);
44
- const { ref, inView } = (0, react_intersection_observer_1.useInView)({
38
+ const { definition , groupIndex , panelKey , ...others } = props;
39
+ const [contentElement, setContentElement] = (0, _react.useState)(null);
40
+ const [isHovered, setIsHovered] = (0, _react.useState)(false);
41
+ const { width , height } = (0, _useResizeObserver.default)({
42
+ ref: contentElement
43
+ });
44
+ const contentDimensions = (0, _react.useMemo)(()=>{
45
+ if (width === undefined || height === undefined) return undefined;
46
+ return {
47
+ width,
48
+ height
49
+ };
50
+ }, [
51
+ width,
52
+ height
53
+ ]);
54
+ const { ref , inView } = (0, _reactIntersectionObserver.useInView)({
45
55
  threshold: 0.3,
46
56
  initialInView: false,
47
- triggerOnce: true,
57
+ triggerOnce: true
48
58
  });
49
59
  // TODO: adjust padding for small panels, consistent way to determine isLargePanel here and in StatChart
50
60
  const panelPadding = 1.5;
51
- const { isEditMode } = (0, context_1.useEditMode)();
52
- const { openPanelDrawer } = (0, context_1.useDashboardApp)();
53
- const handleEditButtonClick = () => {
54
- openPanelDrawer({ groupIndex, panelKey });
61
+ const { isEditMode } = (0, _context.useEditMode)();
62
+ const { openPanelDrawer } = (0, _context.useDashboardApp)();
63
+ const handleEditButtonClick = ()=>{
64
+ openPanelDrawer({
65
+ groupIndex,
66
+ panelKey
67
+ });
55
68
  };
56
- return ((0, jsx_runtime_1.jsxs)(material_1.Card, { ref: ref, sx: {
69
+ return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Card, {
70
+ ref: ref,
71
+ sx: {
57
72
  ...others.sx,
58
73
  width: '100%',
59
74
  height: '100%',
60
75
  display: 'flex',
61
- flexFlow: 'column nowrap',
62
- }, variant: "outlined", ...others, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [(0, jsx_runtime_1.jsx)(material_1.CardHeader, { title: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
76
+ flexFlow: 'column nowrap'
77
+ },
78
+ variant: "outlined",
79
+ ...others,
80
+ onMouseEnter: ()=>setIsHovered(true),
81
+ onMouseLeave: ()=>setIsHovered(false),
82
+ children: [
83
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.CardHeader, {
84
+ title: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Box, {
85
+ sx: {
63
86
  display: 'flex',
64
87
  alignItems: 'center',
65
- minHeight: '24px',
66
- }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { component: "h2", variant: "body2", fontWeight: (theme) => theme.typography.fontWeightMedium, whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis", children: definition.display.name }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
88
+ minHeight: '24px'
89
+ },
90
+ children: [
91
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
92
+ component: "h2",
93
+ variant: "body2",
94
+ fontWeight: (theme)=>theme.typography.fontWeightMedium,
95
+ whiteSpace: "nowrap",
96
+ overflow: "hidden",
97
+ textOverflow: "ellipsis",
98
+ children: definition.spec.display.name
99
+ }),
100
+ /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Box, {
101
+ sx: {
67
102
  display: 'flex',
68
103
  alignItems: 'center',
69
- marginLeft: 'auto',
70
- }, children: [!isEditMode && isHovered && definition.display.description && ((0, jsx_runtime_1.jsx)(components_1.InfoTooltip, { id: "info-tooltip", description: definition.display.description, placement: components_1.TooltipPlacement.Bottom, children: (0, jsx_runtime_1.jsx)(InformationOutline_1.default, { "aria-describedby": "info-tooltip", "aria-hidden": false, fontSize: "small", sx: { cursor: 'pointer' } }) })), isEditMode && isHovered && ((0, jsx_runtime_1.jsxs)(material_1.Stack, { direction: "row", alignItems: "center", spacing: 0.5, children: [(0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "edit panel", size: "small", onClick: handleEditButtonClick, children: (0, jsx_runtime_1.jsx)(Pencil_1.default, {}) }), (0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "drag handle", size: "small", children: (0, jsx_runtime_1.jsx)(DragVertical_1.default, { className: "drag-handle", sx: { cursor: 'grab' } }) })] }))] })] }), sx: {
104
+ marginLeft: 'auto'
105
+ },
106
+ children: [
107
+ !isEditMode && isHovered && definition.spec.display.description && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.InfoTooltip, {
108
+ id: "info-tooltip",
109
+ description: definition.spec.display.description,
110
+ placement: _components.TooltipPlacement.Bottom,
111
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_informationOutline.default, {
112
+ "aria-describedby": "info-tooltip",
113
+ "aria-hidden": false,
114
+ fontSize: "small",
115
+ sx: {
116
+ cursor: 'pointer'
117
+ }
118
+ })
119
+ }),
120
+ isEditMode && isHovered && /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
121
+ direction: "row",
122
+ alignItems: "center",
123
+ spacing: 0.5,
124
+ children: [
125
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(IconButton, {
126
+ "aria-label": "edit panel",
127
+ size: "small",
128
+ onClick: handleEditButtonClick,
129
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_pencil.default, {})
130
+ }),
131
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(IconButton, {
132
+ "aria-label": "drag handle",
133
+ size: "small",
134
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_dragVertical.default, {
135
+ className: "drag-handle",
136
+ sx: {
137
+ cursor: 'grab'
138
+ }
139
+ })
140
+ })
141
+ ]
142
+ })
143
+ ]
144
+ })
145
+ ]
146
+ }),
147
+ sx: {
71
148
  display: 'block',
72
- padding: (theme) => theme.spacing(1, panelPadding),
73
- borderBottom: (theme) => `solid 1px ${theme.palette.divider}`,
74
- } }), (0, jsx_runtime_1.jsx)(material_1.CardContent, { sx: {
149
+ padding: (theme)=>theme.spacing(1, panelPadding),
150
+ borderBottom: (theme)=>`solid 1px ${theme.palette.divider}`
151
+ }
152
+ }),
153
+ /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.CardContent, {
154
+ sx: {
75
155
  position: 'relative',
76
156
  overflow: 'hidden',
77
157
  flexGrow: 1,
78
- padding: (theme) => theme.spacing(panelPadding),
158
+ padding: (theme)=>theme.spacing(panelPadding),
79
159
  // Override MUI default style for last-child
80
160
  ':last-child': {
81
- padding: (theme) => theme.spacing(panelPadding),
82
- },
83
- }, ref: setContentElement, children: (0, jsx_runtime_1.jsx)(plugin_system_1.PluginBoundary, { loadingFallback: "Loading...", ErrorFallbackComponent: components_1.ErrorAlert, children: inView === true && (0, jsx_runtime_1.jsx)(PanelContent_1.PanelContent, { definition: definition, contentDimensions: contentDimensions }) }) })] }));
161
+ padding: (theme)=>theme.spacing(panelPadding)
162
+ }
163
+ },
164
+ ref: setContentElement,
165
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.ErrorBoundary, {
166
+ FallbackComponent: _components.ErrorAlert,
167
+ children: inView === true && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_panelContent.PanelContent, {
168
+ definition: definition,
169
+ contentDimensions: contentDimensions
170
+ })
171
+ })
172
+ })
173
+ ]
174
+ });
84
175
  }
85
- exports.Panel = Panel;
86
- const IconButton = (0, material_1.styled)(material_1.IconButton)(({ theme }) => ({
87
- borderRadius: theme.shape.borderRadius,
88
- padding: '4px',
89
- }));
176
+ const IconButton = (0, _material.styled)(_material.IconButton)(({ theme })=>({
177
+ borderRadius: theme.shape.borderRadius,
178
+ padding: '4px'
179
+ }));
@@ -1,9 +1,3 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
1
  // Copyright 2022 The Perses Authors
8
2
  // Licensed under the Apache License, Version 2.0 (the "License");
9
3
  // you may not use this file except in compliance with the License.
@@ -16,49 +10,64 @@ const jsx_runtime_1 = require("react/jsx-runtime");
16
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
11
  // See the License for the specific language governing permissions and
18
12
  // limitations under the License.
19
- const plugin_system_1 = require("@perses-dev/plugin-system");
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ const _jsxRuntime = require("react/jsx-runtime");
18
+ const _pluginSystem = require("@perses-dev/plugin-system");
20
19
  require("intersection-observer");
21
- const react_1 = require("@testing-library/react");
22
- const test_1 = require("../../test");
23
- const testDashboard_1 = __importDefault(require("../../test/testDashboard"));
24
- const Panel_1 = require("./Panel");
25
- describe('Panel', () => {
26
- let props;
27
- let initialState;
28
- beforeEach(() => {
29
- props = {
20
+ const _react = require("@testing-library/react");
21
+ const _test = require("../../test");
22
+ const _context = require("../../context");
23
+ const _panel = require("./Panel");
24
+ describe('Panel', ()=>{
25
+ // Helper to create panel props for rendering tests
26
+ const createPanelProps = ()=>{
27
+ return {
30
28
  definition: {
31
- display: {
32
- name: 'Fake Panel',
33
- description: 'This is a fake panel',
34
- },
35
- kind: 'FakePanel',
36
- options: {},
29
+ kind: 'Panel',
30
+ spec: {
31
+ display: {
32
+ name: 'Fake Panel',
33
+ description: 'This is a fake panel'
34
+ },
35
+ plugin: {
36
+ kind: 'FakePanel',
37
+ spec: {}
38
+ }
39
+ }
37
40
  },
38
41
  groupIndex: 0,
39
- panelKey: 'panelRef',
42
+ panelKey: 'panelRef'
40
43
  };
41
- initialState = {
42
- isEditMode: false,
43
- dashboardSpec: testDashboard_1.default.spec,
44
- };
45
- });
44
+ };
46
45
  // Helper to render the panel with some context set
47
- const renderPanel = (initialState) => {
48
- const { addMockPlugin, pluginRegistryProps } = (0, test_1.mockPluginRegistryProps)();
49
- addMockPlugin('Panel', 'FakePanel', test_1.FAKE_PANEL_PLUGIN);
50
- (0, test_1.renderWithContext)((0, jsx_runtime_1.jsx)(plugin_system_1.PluginRegistry, { ...pluginRegistryProps, children: (0, jsx_runtime_1.jsx)(Panel_1.Panel, { ...props }) }), initialState);
46
+ const renderPanel = (isEditMode = false)=>{
47
+ const { addMockPlugin , pluginRegistryProps } = (0, _test.mockPluginRegistryProps)();
48
+ addMockPlugin('Panel', 'FakePanel', _test.FAKE_PANEL_PLUGIN);
49
+ (0, _test.renderWithContext)(/*#__PURE__*/ (0, _jsxRuntime.jsx)(_pluginSystem.PluginRegistry, {
50
+ ...pluginRegistryProps,
51
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_context.DashboardProvider, {
52
+ initialState: {
53
+ dashboardSpec: (0, _test.getTestDashboard)().spec,
54
+ isEditMode
55
+ },
56
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_panel.Panel, {
57
+ ...createPanelProps()
58
+ })
59
+ })
60
+ }));
51
61
  };
52
- it('should render name and info icon', async () => {
62
+ it('should render name and info icon', async ()=>{
53
63
  renderPanel();
54
- await react_1.screen.findByText('Fake Panel');
55
- react_1.screen.queryByLabelText('info-tooltip');
64
+ await _react.screen.findByText('Fake Panel');
65
+ _react.screen.queryByLabelText('info-tooltip');
56
66
  });
57
- it('should render edit icons when in edit mode', async () => {
58
- initialState.isEditMode = true;
59
- renderPanel(initialState);
60
- await react_1.screen.queryByLabelText('drag handle');
61
- react_1.screen.queryByLabelText('edit panel');
62
- react_1.screen.queryByLabelText('more');
67
+ it('should render edit icons when in edit mode', ()=>{
68
+ renderPanel(true);
69
+ _react.screen.queryByLabelText('drag handle');
70
+ _react.screen.queryByLabelText('edit panel');
71
+ _react.screen.queryByLabelText('more');
63
72
  });
64
73
  });
@@ -1,15 +1,43 @@
1
+ // Copyright 2022 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
1
13
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PanelContent = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const plugin_system_1 = require("@perses-dev/plugin-system");
6
- /**
7
- * A small wrapper component that renders the appropriate PanelComponent from a Panel plugin based on the panel
8
- * definition's kind. Used so that a PluginLoadingBoundary can be wrapped around this for fallback UI while
9
- * the plugin is loading.
10
- */
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ Object.defineProperty(exports, "PanelContent", {
18
+ enumerable: true,
19
+ get: ()=>PanelContent
20
+ });
21
+ const _jsxRuntime = require("react/jsx-runtime");
22
+ const _pluginSystem = require("@perses-dev/plugin-system");
23
+ const _material = require("@mui/material");
11
24
  function PanelContent(props) {
12
- const { PanelComponent } = (0, plugin_system_1.usePanelPlugin)(props.definition.kind);
13
- return (0, jsx_runtime_1.jsx)(PanelComponent, { ...props });
25
+ const { definition: { spec: { plugin: { kind: panelPluginKind } , } , } , contentDimensions , } = props;
26
+ const { data: plugin , isLoading } = (0, _pluginSystem.usePlugin)('Panel', panelPluginKind, {
27
+ useErrorBoundary: true
28
+ });
29
+ const PanelComponent = plugin === null || plugin === void 0 ? void 0 : plugin.PanelComponent;
30
+ if (isLoading) {
31
+ return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Skeleton, {
32
+ variant: "rectangular",
33
+ width: contentDimensions === null || contentDimensions === void 0 ? void 0 : contentDimensions.width,
34
+ height: contentDimensions === null || contentDimensions === void 0 ? void 0 : contentDimensions.height
35
+ });
36
+ }
37
+ if (PanelComponent === undefined) {
38
+ throw new Error(`Missing PanelComponent from panel plugin for kind '${panelPluginKind}'`);
39
+ }
40
+ return /*#__PURE__*/ (0, _jsxRuntime.jsx)(PanelComponent, {
41
+ ...props
42
+ });
14
43
  }
15
- exports.PanelContent = PanelContent;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  // Copyright 2022 The Perses Authors
3
2
  // Licensed under the Apache License, Version 2.0 (the "License");
4
3
  // you may not use this file except in compliance with the License.
@@ -11,19 +10,19 @@
11
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
11
  // See the License for the specific language governing permissions and
13
12
  // limitations under the License.
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- __exportStar(require("./Panel"), exports);
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ _exportStar(require("./Panel"), exports);
18
+ function _exportStar(from, to) {
19
+ Object.keys(from).forEach(function(k) {
20
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
21
+ enumerable: true,
22
+ get: function() {
23
+ return from[k];
24
+ }
25
+ });
26
+ });
27
+ return from;
28
+ }