@backstage-community/plugin-ilert 0.7.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 (95) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ILertIcon.esm.js +63 -56
  3. package/dist/ILertIcon.esm.js.map +1 -1
  4. package/dist/components/Alert/AlertActionsMenu.esm.js +49 -42
  5. package/dist/components/Alert/AlertActionsMenu.esm.js.map +1 -1
  6. package/dist/components/Alert/AlertAssignModal.esm.js +68 -60
  7. package/dist/components/Alert/AlertAssignModal.esm.js.map +1 -1
  8. package/dist/components/Alert/AlertLink.esm.js +5 -2
  9. package/dist/components/Alert/AlertLink.esm.js.map +1 -1
  10. package/dist/components/Alert/AlertNewModal.esm.js +109 -87
  11. package/dist/components/Alert/AlertNewModal.esm.js.map +1 -1
  12. package/dist/components/AlertSource/AlertSourceLink.esm.js +19 -16
  13. package/dist/components/AlertSource/AlertSourceLink.esm.js.map +1 -1
  14. package/dist/components/AlertsPage/AlertsPage.esm.js +44 -36
  15. package/dist/components/AlertsPage/AlertsPage.esm.js.map +1 -1
  16. package/dist/components/AlertsPage/AlertsTable.esm.js +15 -15
  17. package/dist/components/AlertsPage/AlertsTable.esm.js.map +1 -1
  18. package/dist/components/AlertsPage/StatusChip.esm.js +5 -5
  19. package/dist/components/AlertsPage/StatusChip.esm.js.map +1 -1
  20. package/dist/components/AlertsPage/TableTitle.esm.js +30 -24
  21. package/dist/components/AlertsPage/TableTitle.esm.js.map +1 -1
  22. package/dist/components/Errors/MissingAuthorizationHeaderError.esm.js +6 -6
  23. package/dist/components/Errors/MissingAuthorizationHeaderError.esm.js.map +1 -1
  24. package/dist/components/ILertCard/ILertCard.esm.js +63 -51
  25. package/dist/components/ILertCard/ILertCard.esm.js.map +1 -1
  26. package/dist/components/ILertCard/ILertCardActionsHeader.esm.js +42 -33
  27. package/dist/components/ILertCard/ILertCardActionsHeader.esm.js.map +1 -1
  28. package/dist/components/ILertCard/ILertCardEmptyState.esm.js +28 -20
  29. package/dist/components/ILertCard/ILertCardEmptyState.esm.js.map +1 -1
  30. package/dist/components/ILertCard/ILertCardHeaderStatus.esm.js +3 -3
  31. package/dist/components/ILertCard/ILertCardHeaderStatus.esm.js.map +1 -1
  32. package/dist/components/ILertCard/ILertCardMaintenanceModal.esm.js +36 -27
  33. package/dist/components/ILertCard/ILertCardMaintenanceModal.esm.js.map +1 -1
  34. package/dist/components/ILertCard/ILertCardOnCall.esm.js +34 -28
  35. package/dist/components/ILertCard/ILertCardOnCall.esm.js.map +1 -1
  36. package/dist/components/ILertCard/ILertCardOnCallEmptyState.esm.js +6 -6
  37. package/dist/components/ILertCard/ILertCardOnCallEmptyState.esm.js.map +1 -1
  38. package/dist/components/ILertCard/ILertCardOnCallItem.esm.js +41 -31
  39. package/dist/components/ILertCard/ILertCardOnCallItem.esm.js.map +1 -1
  40. package/dist/components/ILertPage/ILertPage.esm.js +25 -17
  41. package/dist/components/ILertPage/ILertPage.esm.js.map +1 -1
  42. package/dist/components/OnCallSchedulesPage/OnCallSchedulesGrid.esm.js +45 -35
  43. package/dist/components/OnCallSchedulesPage/OnCallSchedulesGrid.esm.js.map +1 -1
  44. package/dist/components/OnCallSchedulesPage/OnCallSchedulesPage.esm.js +14 -11
  45. package/dist/components/OnCallSchedulesPage/OnCallSchedulesPage.esm.js.map +1 -1
  46. package/dist/components/OnCallSchedulesPage/OnCallShiftItem.esm.js +31 -23
  47. package/dist/components/OnCallSchedulesPage/OnCallShiftItem.esm.js.map +1 -1
  48. package/dist/components/Service/ServiceActionsMenu.esm.js +29 -25
  49. package/dist/components/Service/ServiceActionsMenu.esm.js.map +1 -1
  50. package/dist/components/Service/ServiceLink.esm.js +5 -2
  51. package/dist/components/Service/ServiceLink.esm.js.map +1 -1
  52. package/dist/components/ServicesPage/ServicesPage.esm.js +17 -14
  53. package/dist/components/ServicesPage/ServicesPage.esm.js.map +1 -1
  54. package/dist/components/ServicesPage/ServicesTable.esm.js +9 -9
  55. package/dist/components/ServicesPage/ServicesTable.esm.js.map +1 -1
  56. package/dist/components/ServicesPage/StatusChip.esm.js +7 -7
  57. package/dist/components/ServicesPage/StatusChip.esm.js.map +1 -1
  58. package/dist/components/Shift/ShiftOverrideModal.esm.js +83 -74
  59. package/dist/components/Shift/ShiftOverrideModal.esm.js.map +1 -1
  60. package/dist/components/StatusPage/StatusPageActionsMenu.esm.js +32 -26
  61. package/dist/components/StatusPage/StatusPageActionsMenu.esm.js.map +1 -1
  62. package/dist/components/StatusPage/StatusPageLink.esm.js +5 -2
  63. package/dist/components/StatusPage/StatusPageLink.esm.js.map +1 -1
  64. package/dist/components/StatusPage/StatusPageURL.esm.js +2 -2
  65. package/dist/components/StatusPage/StatusPageURL.esm.js.map +1 -1
  66. package/dist/components/StatusPagePage/StatusChip.esm.js +7 -7
  67. package/dist/components/StatusPagePage/StatusChip.esm.js.map +1 -1
  68. package/dist/components/StatusPagePage/StatusPagesPage.esm.js +17 -14
  69. package/dist/components/StatusPagePage/StatusPagesPage.esm.js.map +1 -1
  70. package/dist/components/StatusPagePage/StatusPagesTable.esm.js +10 -10
  71. package/dist/components/StatusPagePage/StatusPagesTable.esm.js.map +1 -1
  72. package/dist/components/StatusPagePage/VisibilityChip.esm.js +4 -4
  73. package/dist/components/StatusPagePage/VisibilityChip.esm.js.map +1 -1
  74. package/dist/hooks/useAlertActions.esm.js +3 -5
  75. package/dist/hooks/useAlertActions.esm.js.map +1 -1
  76. package/dist/hooks/useAlertSource.esm.js +3 -5
  77. package/dist/hooks/useAlertSource.esm.js.map +1 -1
  78. package/dist/hooks/useAlertSourceOnCalls.esm.js +3 -3
  79. package/dist/hooks/useAlertSourceOnCalls.esm.js.map +1 -1
  80. package/dist/hooks/useAlerts.esm.js +6 -9
  81. package/dist/hooks/useAlerts.esm.js.map +1 -1
  82. package/dist/hooks/useAssignAlert.esm.js +6 -4
  83. package/dist/hooks/useAssignAlert.esm.js.map +1 -1
  84. package/dist/hooks/useNewAlert.esm.js +6 -10
  85. package/dist/hooks/useNewAlert.esm.js.map +1 -1
  86. package/dist/hooks/useOnCallSchedules.esm.js +5 -3
  87. package/dist/hooks/useOnCallSchedules.esm.js.map +1 -1
  88. package/dist/hooks/useServices.esm.js +4 -4
  89. package/dist/hooks/useServices.esm.js.map +1 -1
  90. package/dist/hooks/useShiftOverride.esm.js +4 -4
  91. package/dist/hooks/useShiftOverride.esm.js.map +1 -1
  92. package/dist/hooks/useStatusPages.esm.js +4 -6
  93. package/dist/hooks/useStatusPages.esm.js.map +1 -1
  94. package/dist/index.d.ts +6 -8
  95. package/package.json +14 -7
@@ -1,3 +1,4 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { parseEntityRef, DEFAULT_NAMESPACE } from '@backstage/catalog-model';
2
3
  import { useApi, alertApiRef, identityApiRef } from '@backstage/core-plugin-api';
3
4
  import Typography from '@material-ui/core/Typography';
@@ -11,7 +12,6 @@ import TextField from '@material-ui/core/TextField';
11
12
  import useMediaQuery from '@material-ui/core/useMediaQuery';
12
13
  import Alert from '@material-ui/lab/Alert';
13
14
  import Autocomplete from '@material-ui/lab/Autocomplete';
14
- import React from 'react';
15
15
  import { ilertApiRef } from '../../api/client.esm.js';
16
16
  import { useNewAlert } from '../../hooks/useNewAlert.esm.js';
17
17
 
@@ -94,97 +94,119 @@ const AlertNewModal = ({
94
94
  }, 250);
95
95
  };
96
96
  const canCreate = !!integrationKey && !!summary;
97
- return /* @__PURE__ */ React.createElement(
97
+ return /* @__PURE__ */ jsxs(
98
98
  Dialog,
99
99
  {
100
100
  open: isModalOpened,
101
101
  onClose: handleClose,
102
- "aria-labelledby": "create-alert-form-title"
103
- },
104
- /* @__PURE__ */ React.createElement(DialogTitle, { id: "create-alert-form-title" }, entityName ? /* @__PURE__ */ React.createElement("div", null, "This action will trigger an alert for", " ", /* @__PURE__ */ React.createElement("strong", null, '"', entityName, '"'), ".") : "New alert"),
105
- /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(Alert, { severity: "info" }, /* @__PURE__ */ React.createElement(Typography, { variant: "body1", gutterBottom: true, align: "justify" }, "Please describe the problem you want to report. Be as descriptive as possible. Your signed in user and a reference to the current page will automatically be amended to the alarm so that the receiver can reach out to you if necessary.")), !initialAlertSource ? /* @__PURE__ */ React.createElement(
106
- Autocomplete,
107
- {
108
- disabled: isLoading,
109
- options: alertSources,
110
- value: alertSource,
111
- classes: {
112
- root: classes.formControl,
113
- option: classes.option
114
- },
115
- onChange: (_event, newValue) => {
116
- setAlertSource(newValue);
117
- },
118
- autoHighlight: true,
119
- getOptionLabel: (a) => a.name,
120
- renderOption: (a) => /* @__PURE__ */ React.createElement("div", { className: classes.optionWrapper }, /* @__PURE__ */ React.createElement(
121
- "img",
122
- {
123
- src: prefersDarkMode ? a.lightIconUrl : a.iconUrl,
124
- alt: a.name,
125
- className: classes.sourceImage
126
- }
127
- ), /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, a.name)),
128
- renderInput: (params) => /* @__PURE__ */ React.createElement(
129
- TextField,
130
- {
131
- ...params,
132
- label: "Alert Source",
133
- variant: "outlined",
134
- margin: "normal",
135
- inputProps: {
136
- ...params.inputProps,
137
- autoComplete: "new-password"
138
- // disable autocomplete and autofill
102
+ "aria-labelledby": "create-alert-form-title",
103
+ children: [
104
+ /* @__PURE__ */ jsx(DialogTitle, { id: "create-alert-form-title", children: entityName ? /* @__PURE__ */ jsxs("div", { children: [
105
+ "This action will trigger an alert for",
106
+ " ",
107
+ /* @__PURE__ */ jsxs("strong", { children: [
108
+ '"',
109
+ entityName,
110
+ '"'
111
+ ] }),
112
+ "."
113
+ ] }) : "New alert" }),
114
+ /* @__PURE__ */ jsxs(DialogContent, { children: [
115
+ /* @__PURE__ */ jsx(Alert, { severity: "info", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", gutterBottom: true, align: "justify", children: "Please describe the problem you want to report. Be as descriptive as possible. Your signed in user and a reference to the current page will automatically be amended to the alarm so that the receiver can reach out to you if necessary." }) }),
116
+ !initialAlertSource ? /* @__PURE__ */ jsx(
117
+ Autocomplete,
118
+ {
119
+ disabled: isLoading,
120
+ options: alertSources,
121
+ value: alertSource,
122
+ classes: {
123
+ root: classes.formControl,
124
+ option: classes.option
125
+ },
126
+ onChange: (_event, newValue) => {
127
+ setAlertSource(newValue);
128
+ },
129
+ autoHighlight: true,
130
+ getOptionLabel: (a) => a.name,
131
+ renderOption: (a) => /* @__PURE__ */ jsxs("div", { className: classes.optionWrapper, children: [
132
+ /* @__PURE__ */ jsx(
133
+ "img",
134
+ {
135
+ src: prefersDarkMode ? a.lightIconUrl : a.iconUrl,
136
+ alt: a.name,
137
+ className: classes.sourceImage
138
+ }
139
+ ),
140
+ /* @__PURE__ */ jsx(Typography, { noWrap: true, children: a.name })
141
+ ] }),
142
+ renderInput: (params) => /* @__PURE__ */ jsx(
143
+ TextField,
144
+ {
145
+ ...params,
146
+ label: "Alert Source",
147
+ variant: "outlined",
148
+ margin: "normal",
149
+ inputProps: {
150
+ ...params.inputProps,
151
+ autoComplete: "new-password"
152
+ // disable autocomplete and autofill
153
+ }
154
+ }
155
+ )
139
156
  }
140
- }
141
- )
142
- }
143
- ) : null, /* @__PURE__ */ React.createElement(
144
- TextField,
145
- {
146
- disabled: isLoading,
147
- label: "Summary",
148
- fullWidth: true,
149
- margin: "normal",
150
- variant: "outlined",
151
- classes: {
152
- root: classes.formControl
153
- },
154
- value: summary,
155
- onChange: (event) => {
156
- setSummary(event.target.value);
157
- }
158
- }
159
- ), /* @__PURE__ */ React.createElement(
160
- TextField,
161
- {
162
- disabled: isLoading,
163
- label: "Details",
164
- fullWidth: true,
165
- multiline: true,
166
- rows: 4,
167
- margin: "normal",
168
- variant: "outlined",
169
- classes: {
170
- root: classes.formControl
171
- },
172
- value: details,
173
- onChange: (event) => {
174
- setDetails(event.target.value);
175
- }
176
- }
177
- )),
178
- /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(
179
- Button,
180
- {
181
- disabled: !canCreate,
182
- onClick: handleCreate,
183
- color: "secondary",
184
- variant: "contained"
185
- },
186
- "Create"
187
- ), /* @__PURE__ */ React.createElement(Button, { onClick: handleClose, color: "primary" }, "Cancel"))
157
+ ) : null,
158
+ /* @__PURE__ */ jsx(
159
+ TextField,
160
+ {
161
+ disabled: isLoading,
162
+ label: "Summary",
163
+ fullWidth: true,
164
+ margin: "normal",
165
+ variant: "outlined",
166
+ classes: {
167
+ root: classes.formControl
168
+ },
169
+ value: summary,
170
+ onChange: (event) => {
171
+ setSummary(event.target.value);
172
+ }
173
+ }
174
+ ),
175
+ /* @__PURE__ */ jsx(
176
+ TextField,
177
+ {
178
+ disabled: isLoading,
179
+ label: "Details",
180
+ fullWidth: true,
181
+ multiline: true,
182
+ rows: 4,
183
+ margin: "normal",
184
+ variant: "outlined",
185
+ classes: {
186
+ root: classes.formControl
187
+ },
188
+ value: details,
189
+ onChange: (event) => {
190
+ setDetails(event.target.value);
191
+ }
192
+ }
193
+ )
194
+ ] }),
195
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
196
+ /* @__PURE__ */ jsx(
197
+ Button,
198
+ {
199
+ disabled: !canCreate,
200
+ onClick: handleCreate,
201
+ color: "secondary",
202
+ variant: "contained",
203
+ children: "Create"
204
+ }
205
+ ),
206
+ /* @__PURE__ */ jsx(Button, { onClick: handleClose, color: "primary", children: "Cancel" })
207
+ ] })
208
+ ]
209
+ }
188
210
  );
189
211
  };
190
212
 
@@ -1 +1 @@
1
- {"version":3,"file":"AlertNewModal.esm.js","sources":["../../../src/components/Alert/AlertNewModal.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DEFAULT_NAMESPACE, parseEntityRef } from '@backstage/catalog-model';\nimport {\n alertApiRef,\n identityApiRef,\n useApi,\n} from '@backstage/core-plugin-api';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Alert from '@material-ui/lab/Alert';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport React from 'react';\nimport { ilertApiRef } from '../../api';\nimport { useNewAlert } from '../../hooks/useNewAlert';\nimport { AlertSource } from '../../types';\n\nconst useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n minWidth: 120,\n width: '100%',\n },\n option: {\n fontSize: 15,\n '& > span': {\n marginRight: 10,\n fontSize: 18,\n },\n },\n optionWrapper: {\n display: 'flex',\n width: '100%',\n },\n sourceImage: {\n height: 22,\n paddingRight: 4,\n },\n}));\n\nexport const AlertNewModal = ({\n isModalOpened,\n setIsModalOpened,\n refetchAlerts,\n initialAlertSource,\n entityName,\n}: {\n isModalOpened: boolean;\n setIsModalOpened: (open: boolean) => void;\n refetchAlerts: () => void;\n initialAlertSource?: AlertSource | null;\n entityName?: string;\n}) => {\n const [\n { alertSources, alertSource, summary, details, isLoading },\n { setAlertSource, setSummary, setDetails, setIsLoading },\n ] = useNewAlert(isModalOpened, initialAlertSource);\n const ilertApi = useApi(ilertApiRef);\n const alertApi = useApi(alertApiRef);\n const identityApi = useApi(identityApiRef);\n const source = window.location.toString();\n const classes = useStyles();\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n\n const handleClose = () => {\n setIsModalOpened(false);\n };\n\n let integrationKey = '';\n if (initialAlertSource && initialAlertSource.integrationKey) {\n integrationKey = initialAlertSource.integrationKey;\n } else if (alertSource && alertSource.integrationKey) {\n integrationKey = alertSource.integrationKey;\n }\n const handleCreate = () => {\n if (!integrationKey) {\n return;\n }\n setIsLoading(true);\n setTimeout(async () => {\n try {\n const { userEntityRef } = await identityApi.getBackstageIdentity();\n const { name: userName } = parseEntityRef(userEntityRef, {\n defaultKind: 'User',\n defaultNamespace: DEFAULT_NAMESPACE,\n });\n await ilertApi.createAlert({\n integrationKey,\n summary,\n details,\n userName,\n source,\n });\n alertApi.post({ message: 'Alert created.' });\n refetchAlerts();\n } catch (err) {\n alertApi.post({ message: err, severity: 'error' });\n }\n setIsModalOpened(false);\n }, 250);\n };\n\n const canCreate = !!integrationKey && !!summary;\n\n return (\n <Dialog\n open={isModalOpened}\n onClose={handleClose}\n aria-labelledby=\"create-alert-form-title\"\n >\n <DialogTitle id=\"create-alert-form-title\">\n {entityName ? (\n <div>\n This action will trigger an alert for{' '}\n <strong>\"{entityName}\"</strong>.\n </div>\n ) : (\n 'New alert'\n )}\n </DialogTitle>\n <DialogContent>\n <Alert severity=\"info\">\n <Typography variant=\"body1\" gutterBottom align=\"justify\">\n Please describe the problem you want to report. Be as descriptive as\n possible. Your signed in user and a reference to the current page\n will automatically be amended to the alarm so that the receiver can\n reach out to you if necessary.\n </Typography>\n </Alert>\n {!initialAlertSource ? (\n <Autocomplete\n disabled={isLoading}\n options={alertSources}\n value={alertSource}\n classes={{\n root: classes.formControl,\n option: classes.option,\n }}\n onChange={(_event: any, newValue: any) => {\n setAlertSource(newValue);\n }}\n autoHighlight\n getOptionLabel={a => a.name}\n renderOption={a => (\n <div className={classes.optionWrapper}>\n <img\n src={prefersDarkMode ? a.lightIconUrl : a.iconUrl}\n alt={a.name}\n className={classes.sourceImage}\n />\n <Typography noWrap>{a.name}</Typography>\n </div>\n )}\n renderInput={params => (\n <TextField\n {...params}\n label=\"Alert Source\"\n variant=\"outlined\"\n margin=\"normal\"\n inputProps={{\n ...params.inputProps,\n autoComplete: 'new-password', // disable autocomplete and autofill\n }}\n />\n )}\n />\n ) : null}\n <TextField\n disabled={isLoading}\n label=\"Summary\"\n fullWidth\n margin=\"normal\"\n variant=\"outlined\"\n classes={{\n root: classes.formControl,\n }}\n value={summary}\n onChange={event => {\n setSummary(event.target.value);\n }}\n />\n <TextField\n disabled={isLoading}\n label=\"Details\"\n fullWidth\n multiline\n rows={4}\n margin=\"normal\"\n variant=\"outlined\"\n classes={{\n root: classes.formControl,\n }}\n value={details}\n onChange={event => {\n setDetails(event.target.value);\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button\n disabled={!canCreate}\n onClick={handleCreate}\n color=\"secondary\"\n variant=\"contained\"\n >\n Create\n </Button>\n <Button onClick={handleClose} color=\"primary\">\n Cancel\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqCA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,SAAW,EAAA;AAAA,IACT,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,WAAa,EAAA;AAAA,IACX,QAAU,EAAA,GAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA;AAAA,MACV,WAAa,EAAA,EAAA;AAAA,MACb,QAAU,EAAA;AAAA;AACZ,GACF;AAAA,EACA,aAAe,EAAA;AAAA,IACb,OAAS,EAAA,MAAA;AAAA,IACT,KAAO,EAAA;AAAA,GACT;AAAA,EACA,WAAa,EAAA;AAAA,IACX,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA;AAAA;AAElB,CAAE,CAAA,CAAA;AAEK,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAMM,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ,EAAE,YAAA,EAAc,WAAa,EAAA,OAAA,EAAS,SAAS,SAAU,EAAA;AAAA,IACzD,EAAE,cAAA,EAAgB,UAAY,EAAA,UAAA,EAAY,YAAa;AAAA,GACzD,GAAI,WAAY,CAAA,aAAA,EAAe,kBAAkB,CAAA;AACjD,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAM,MAAA,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAM,MAAA,MAAA,GAAS,MAAO,CAAA,QAAA,CAAS,QAAS,EAAA;AACxC,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAM,MAAA,eAAA,GAAkB,cAAc,8BAA8B,CAAA;AAEpE,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,GACxB;AAEA,EAAA,IAAI,cAAiB,GAAA,EAAA;AACrB,EAAI,IAAA,kBAAA,IAAsB,mBAAmB,cAAgB,EAAA;AAC3D,IAAA,cAAA,GAAiB,kBAAmB,CAAA,cAAA;AAAA,GACtC,MAAA,IAAW,WAAe,IAAA,WAAA,CAAY,cAAgB,EAAA;AACpD,IAAA,cAAA,GAAiB,WAAY,CAAA,cAAA;AAAA;AAE/B,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAA;AAAA;AAEF,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,UAAA,CAAW,YAAY;AACrB,MAAI,IAAA;AACF,QAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,YAAY,oBAAqB,EAAA;AACjE,QAAA,MAAM,EAAE,IAAA,EAAM,QAAS,EAAA,GAAI,eAAe,aAAe,EAAA;AAAA,UACvD,WAAa,EAAA,MAAA;AAAA,UACb,gBAAkB,EAAA;AAAA,SACnB,CAAA;AACD,QAAA,MAAM,SAAS,WAAY,CAAA;AAAA,UACzB,cAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,QAAA,CAAS,IAAK,CAAA,EAAE,OAAS,EAAA,gBAAA,EAAkB,CAAA;AAC3C,QAAc,aAAA,EAAA;AAAA,eACP,GAAK,EAAA;AACZ,QAAA,QAAA,CAAS,KAAK,EAAE,OAAA,EAAS,GAAK,EAAA,QAAA,EAAU,SAAS,CAAA;AAAA;AAEnD,MAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,OACrB,GAAG,CAAA;AAAA,GACR;AAEA,EAAA,MAAM,SAAY,GAAA,CAAC,CAAC,cAAA,IAAkB,CAAC,CAAC,OAAA;AAExC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA,WAAA;AAAA,MACT,iBAAgB,EAAA;AAAA,KAAA;AAAA,wCAEf,WAAY,EAAA,EAAA,EAAA,EAAG,yBACb,EAAA,EAAA,UAAA,uCACE,KAAI,EAAA,IAAA,EAAA,uCAAA,EACmC,GACtC,kBAAA,KAAA,CAAA,aAAA,CAAC,gBAAO,GAAE,EAAA,UAAA,EAAW,GAAC,CAAS,EAAA,GACjC,IAEA,WAEJ,CAAA;AAAA,wCACC,aACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAM,QAAS,EAAA,MAAA,EAAA,sCACb,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,YAAA,EAAY,MAAC,KAAM,EAAA,SAAA,EAAA,EAAU,2OAKzD,CACF,CAAA,EACC,CAAC,kBACA,mBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,QAAU,EAAA,SAAA;AAAA,QACV,OAAS,EAAA,YAAA;AAAA,QACT,KAAO,EAAA,WAAA;AAAA,QACP,OAAS,EAAA;AAAA,UACP,MAAM,OAAQ,CAAA,WAAA;AAAA,UACd,QAAQ,OAAQ,CAAA;AAAA,SAClB;AAAA,QACA,QAAA,EAAU,CAAC,MAAA,EAAa,QAAkB,KAAA;AACxC,UAAA,cAAA,CAAe,QAAQ,CAAA;AAAA,SACzB;AAAA,QACA,aAAa,EAAA,IAAA;AAAA,QACb,cAAA,EAAgB,OAAK,CAAE,CAAA,IAAA;AAAA,QACvB,cAAc,CACZ,CAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,QAAQ,aACtB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,eAAA,GAAkB,CAAE,CAAA,YAAA,GAAe,CAAE,CAAA,OAAA;AAAA,YAC1C,KAAK,CAAE,CAAA,IAAA;AAAA,YACP,WAAW,OAAQ,CAAA;AAAA;AAAA,2BAEpB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,QAAM,IAAE,EAAA,EAAA,CAAA,CAAE,IAAK,CAC7B,CAAA;AAAA,QAEF,aAAa,CACX,MAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACE,GAAG,MAAA;AAAA,YACJ,KAAM,EAAA,cAAA;AAAA,YACN,OAAQ,EAAA,UAAA;AAAA,YACR,MAAO,EAAA,QAAA;AAAA,YACP,UAAY,EAAA;AAAA,cACV,GAAG,MAAO,CAAA,UAAA;AAAA,cACV,YAAc,EAAA;AAAA;AAAA;AAChB;AAAA;AACF;AAAA,QAGF,IACJ,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,QAAU,EAAA,SAAA;AAAA,QACV,KAAM,EAAA,SAAA;AAAA,QACN,SAAS,EAAA,IAAA;AAAA,QACT,MAAO,EAAA,QAAA;AAAA,QACP,OAAQ,EAAA,UAAA;AAAA,QACR,OAAS,EAAA;AAAA,UACP,MAAM,OAAQ,CAAA;AAAA,SAChB;AAAA,QACA,KAAO,EAAA,OAAA;AAAA,QACP,UAAU,CAAS,KAAA,KAAA;AACjB,UAAW,UAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA;AAC/B;AAAA,KAEF,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,QAAU,EAAA,SAAA;AAAA,QACV,KAAM,EAAA,SAAA;AAAA,QACN,SAAS,EAAA,IAAA;AAAA,QACT,SAAS,EAAA,IAAA;AAAA,QACT,IAAM,EAAA,CAAA;AAAA,QACN,MAAO,EAAA,QAAA;AAAA,QACP,OAAQ,EAAA,UAAA;AAAA,QACR,OAAS,EAAA;AAAA,UACP,MAAM,OAAQ,CAAA;AAAA,SAChB;AAAA,QACA,KAAO,EAAA,OAAA;AAAA,QACP,UAAU,CAAS,KAAA,KAAA;AACjB,UAAW,UAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA;AAC/B;AAAA,KAEJ,CAAA;AAAA,wCACC,aACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAU,CAAC,SAAA;AAAA,QACX,OAAS,EAAA,YAAA;AAAA,QACT,KAAM,EAAA,WAAA;AAAA,QACN,OAAQ,EAAA;AAAA,OAAA;AAAA,MACT;AAAA,KAED,sCACC,MAAO,EAAA,EAAA,OAAA,EAAS,aAAa,KAAM,EAAA,SAAA,EAAA,EAAU,QAE9C,CACF;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"AlertNewModal.esm.js","sources":["../../../src/components/Alert/AlertNewModal.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DEFAULT_NAMESPACE, parseEntityRef } from '@backstage/catalog-model';\nimport {\n alertApiRef,\n identityApiRef,\n useApi,\n} from '@backstage/core-plugin-api';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Alert from '@material-ui/lab/Alert';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { ilertApiRef } from '../../api';\nimport { useNewAlert } from '../../hooks/useNewAlert';\nimport { AlertSource } from '../../types';\n\nconst useStyles = makeStyles(() => ({\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n minWidth: 120,\n width: '100%',\n },\n option: {\n fontSize: 15,\n '& > span': {\n marginRight: 10,\n fontSize: 18,\n },\n },\n optionWrapper: {\n display: 'flex',\n width: '100%',\n },\n sourceImage: {\n height: 22,\n paddingRight: 4,\n },\n}));\n\nexport const AlertNewModal = ({\n isModalOpened,\n setIsModalOpened,\n refetchAlerts,\n initialAlertSource,\n entityName,\n}: {\n isModalOpened: boolean;\n setIsModalOpened: (open: boolean) => void;\n refetchAlerts: () => void;\n initialAlertSource?: AlertSource | null;\n entityName?: string;\n}) => {\n const [\n { alertSources, alertSource, summary, details, isLoading },\n { setAlertSource, setSummary, setDetails, setIsLoading },\n ] = useNewAlert(isModalOpened, initialAlertSource);\n const ilertApi = useApi(ilertApiRef);\n const alertApi = useApi(alertApiRef);\n const identityApi = useApi(identityApiRef);\n const source = window.location.toString();\n const classes = useStyles();\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n\n const handleClose = () => {\n setIsModalOpened(false);\n };\n\n let integrationKey = '';\n if (initialAlertSource && initialAlertSource.integrationKey) {\n integrationKey = initialAlertSource.integrationKey;\n } else if (alertSource && alertSource.integrationKey) {\n integrationKey = alertSource.integrationKey;\n }\n const handleCreate = () => {\n if (!integrationKey) {\n return;\n }\n setIsLoading(true);\n setTimeout(async () => {\n try {\n const { userEntityRef } = await identityApi.getBackstageIdentity();\n const { name: userName } = parseEntityRef(userEntityRef, {\n defaultKind: 'User',\n defaultNamespace: DEFAULT_NAMESPACE,\n });\n await ilertApi.createAlert({\n integrationKey,\n summary,\n details,\n userName,\n source,\n });\n alertApi.post({ message: 'Alert created.' });\n refetchAlerts();\n } catch (err) {\n alertApi.post({ message: err, severity: 'error' });\n }\n setIsModalOpened(false);\n }, 250);\n };\n\n const canCreate = !!integrationKey && !!summary;\n\n return (\n <Dialog\n open={isModalOpened}\n onClose={handleClose}\n aria-labelledby=\"create-alert-form-title\"\n >\n <DialogTitle id=\"create-alert-form-title\">\n {entityName ? (\n <div>\n This action will trigger an alert for{' '}\n <strong>\"{entityName}\"</strong>.\n </div>\n ) : (\n 'New alert'\n )}\n </DialogTitle>\n <DialogContent>\n <Alert severity=\"info\">\n <Typography variant=\"body1\" gutterBottom align=\"justify\">\n Please describe the problem you want to report. Be as descriptive as\n possible. Your signed in user and a reference to the current page\n will automatically be amended to the alarm so that the receiver can\n reach out to you if necessary.\n </Typography>\n </Alert>\n {!initialAlertSource ? (\n <Autocomplete\n disabled={isLoading}\n options={alertSources}\n value={alertSource}\n classes={{\n root: classes.formControl,\n option: classes.option,\n }}\n onChange={(_event: any, newValue: any) => {\n setAlertSource(newValue);\n }}\n autoHighlight\n getOptionLabel={a => a.name}\n renderOption={a => (\n <div className={classes.optionWrapper}>\n <img\n src={prefersDarkMode ? a.lightIconUrl : a.iconUrl}\n alt={a.name}\n className={classes.sourceImage}\n />\n <Typography noWrap>{a.name}</Typography>\n </div>\n )}\n renderInput={params => (\n <TextField\n {...params}\n label=\"Alert Source\"\n variant=\"outlined\"\n margin=\"normal\"\n inputProps={{\n ...params.inputProps,\n autoComplete: 'new-password', // disable autocomplete and autofill\n }}\n />\n )}\n />\n ) : null}\n <TextField\n disabled={isLoading}\n label=\"Summary\"\n fullWidth\n margin=\"normal\"\n variant=\"outlined\"\n classes={{\n root: classes.formControl,\n }}\n value={summary}\n onChange={event => {\n setSummary(event.target.value);\n }}\n />\n <TextField\n disabled={isLoading}\n label=\"Details\"\n fullWidth\n multiline\n rows={4}\n margin=\"normal\"\n variant=\"outlined\"\n classes={{\n root: classes.formControl,\n }}\n value={details}\n onChange={event => {\n setDetails(event.target.value);\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button\n disabled={!canCreate}\n onClick={handleCreate}\n color=\"secondary\"\n variant=\"contained\"\n >\n Create\n </Button>\n <Button onClick={handleClose} color=\"primary\">\n Cancel\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import Grid from '@material-ui/core/Grid';
3
3
  import { ilertApiRef } from '../../api/client.esm.js';
4
4
  import { makeStyles } from '@material-ui/core/styles';
@@ -28,21 +28,24 @@ const AlertSourceLink = ({
28
28
  if (!alertSource) {
29
29
  return null;
30
30
  }
31
- return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 0 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 2 }, /* @__PURE__ */ React.createElement(
32
- "img",
33
- {
34
- src: prefersDarkMode ? alertSource.lightIconUrl : alertSource.iconUrl,
35
- alt: alertSource.name,
36
- className: classes.image
37
- }
38
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 10 }, /* @__PURE__ */ React.createElement(
39
- Link,
40
- {
41
- className: classes.link,
42
- to: ilertApi.getAlertSourceDetailsURL(alertSource)
43
- },
44
- alertSource.name
45
- )));
31
+ return /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 0, children: [
32
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 2, children: /* @__PURE__ */ jsx(
33
+ "img",
34
+ {
35
+ src: prefersDarkMode ? alertSource.lightIconUrl : alertSource.iconUrl,
36
+ alt: alertSource.name,
37
+ className: classes.image
38
+ }
39
+ ) }),
40
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 10, children: /* @__PURE__ */ jsx(
41
+ Link,
42
+ {
43
+ className: classes.link,
44
+ to: ilertApi.getAlertSourceDetailsURL(alertSource),
45
+ children: alertSource.name
46
+ }
47
+ ) })
48
+ ] });
46
49
  };
47
50
 
48
51
  export { AlertSourceLink };
@@ -1 +1 @@
1
- {"version":3,"file":"AlertSourceLink.esm.js","sources":["../../../src/components/AlertSource/AlertSourceLink.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { AlertSource } from '../../types';\nimport { ilertApiRef } from '../../api';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { Link } from '@backstage/core-components';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n maxWidth: '100%',\n },\n image: {\n height: 22,\n paddingRight: 4,\n },\n link: {\n lineHeight: '22px',\n },\n});\n\nexport const AlertSourceLink = ({\n alertSource,\n}: {\n alertSource: AlertSource | null;\n}) => {\n const ilertApi = useApi(ilertApiRef);\n const classes = useStyles();\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n\n if (!alertSource) {\n return null;\n }\n\n return (\n <Grid container spacing={0}>\n <Grid item xs={2}>\n <img\n src={prefersDarkMode ? alertSource.lightIconUrl : alertSource.iconUrl}\n alt={alertSource.name}\n className={classes.image}\n />\n </Grid>\n <Grid item xs={10}>\n <Link\n className={classes.link}\n to={ilertApi.getAlertSourceDetailsURL(alertSource)}\n >\n {alertSource.name}\n </Link>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAyBA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,KAAO,EAAA;AAAA,IACL,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,UAAY,EAAA;AAAA;AAEhB,CAAC,CAAA;AAEM,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AACF,CAEM,KAAA;AACJ,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAM,MAAA,eAAA,GAAkB,cAAc,8BAA8B,CAAA;AAEpE,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IAAC,EAAA,OAAA,EAAS,CACvB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,eAAA,GAAkB,WAAY,CAAA,YAAA,GAAe,WAAY,CAAA,OAAA;AAAA,MAC9D,KAAK,WAAY,CAAA,IAAA;AAAA,MACjB,WAAW,OAAQ,CAAA;AAAA;AAAA,GAEvB,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAW,OAAQ,CAAA,IAAA;AAAA,MACnB,EAAA,EAAI,QAAS,CAAA,wBAAA,CAAyB,WAAW;AAAA,KAAA;AAAA,IAEhD,WAAY,CAAA;AAAA,GAEjB,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"AlertSourceLink.esm.js","sources":["../../../src/components/AlertSource/AlertSourceLink.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Grid from '@material-ui/core/Grid';\nimport { AlertSource } from '../../types';\nimport { ilertApiRef } from '../../api';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { Link } from '@backstage/core-components';\n\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n maxWidth: '100%',\n },\n image: {\n height: 22,\n paddingRight: 4,\n },\n link: {\n lineHeight: '22px',\n },\n});\n\nexport const AlertSourceLink = ({\n alertSource,\n}: {\n alertSource: AlertSource | null;\n}) => {\n const ilertApi = useApi(ilertApiRef);\n const classes = useStyles();\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n\n if (!alertSource) {\n return null;\n }\n\n return (\n <Grid container spacing={0}>\n <Grid item xs={2}>\n <img\n src={prefersDarkMode ? alertSource.lightIconUrl : alertSource.iconUrl}\n alt={alertSource.name}\n className={classes.image}\n />\n </Grid>\n <Grid item xs={10}>\n <Link\n className={classes.link}\n to={ilertApi.getAlertSourceDetailsURL(alertSource)}\n >\n {alertSource.name}\n </Link>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAwBA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,KAAO,EAAA;AAAA,IACL,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,UAAY,EAAA;AAAA;AAEhB,CAAC,CAAA;AAEM,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AACF,CAEM,KAAA;AACJ,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAM,MAAA,eAAA,GAAkB,cAAc,8BAA8B,CAAA;AAEpE,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CACvB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,eAAA,GAAkB,WAAY,CAAA,YAAA,GAAe,WAAY,CAAA,OAAA;AAAA,QAC9D,KAAK,WAAY,CAAA,IAAA;AAAA,QACjB,WAAW,OAAQ,CAAA;AAAA;AAAA,KAEvB,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAQ,CAAA,IAAA;AAAA,QACnB,EAAA,EAAI,QAAS,CAAA,wBAAA,CAAyB,WAAW,CAAA;AAAA,QAEhD,QAAY,EAAA,WAAA,CAAA;AAAA;AAAA,KAEjB,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,7 +1,8 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
1
2
  import { Content, ResponseErrorPanel, ContentHeader, SupportButton } from '@backstage/core-components';
2
3
  import Button from '@material-ui/core/Button';
3
4
  import AddIcon from '@material-ui/icons/Add';
4
- import React from 'react';
5
+ import { useState } from 'react';
5
6
  import { useAlerts } from '../../hooks/useAlerts.esm.js';
6
7
  import { AlertNewModal } from '../Alert/AlertNewModal.esm.js';
7
8
  import { MissingAuthorizationHeaderError } from '../Errors/MissingAuthorizationHeaderError.esm.js';
@@ -19,48 +20,55 @@ const AlertsPage = () => {
19
20
  setIsLoading
20
21
  }
21
22
  ] = useAlerts(true);
22
- const [isModalOpened, setIsModalOpened] = React.useState(false);
23
+ const [isModalOpened, setIsModalOpened] = useState(false);
23
24
  const handleCreateNewAlertClick = () => {
24
25
  setIsModalOpened(true);
25
26
  };
26
27
  if (error) {
27
28
  if (error.name === "AuthenticationError") {
28
- return /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(MissingAuthorizationHeaderError, null));
29
+ return /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(MissingAuthorizationHeaderError, {}) });
29
30
  }
30
- return /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error }));
31
+ return /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(ResponseErrorPanel, { error }) });
31
32
  }
32
- return /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(ContentHeader, { title: "Alerts" }, /* @__PURE__ */ React.createElement(
33
- Button,
34
- {
35
- variant: "contained",
36
- color: "primary",
37
- size: "small",
38
- startIcon: /* @__PURE__ */ React.createElement(AddIcon, null),
39
- onClick: handleCreateNewAlertClick
40
- },
41
- "Create Alert"
42
- ), /* @__PURE__ */ React.createElement(
43
- AlertNewModal,
44
- {
45
- isModalOpened,
46
- setIsModalOpened,
47
- refetchAlerts
48
- }
49
- ), /* @__PURE__ */ React.createElement(SupportButton, null, "This helps you to bring iLert into your developer portal.")), /* @__PURE__ */ React.createElement(
50
- AlertsTable,
51
- {
52
- alerts,
53
- alertsCount,
54
- tableState,
55
- states,
56
- onAlertChanged,
57
- onAlertStatesChange,
58
- onChangePage,
59
- onChangeRowsPerPage,
60
- isLoading,
61
- setIsLoading
62
- }
63
- ));
33
+ return /* @__PURE__ */ jsxs(Content, { children: [
34
+ /* @__PURE__ */ jsxs(ContentHeader, { title: "Alerts", children: [
35
+ /* @__PURE__ */ jsx(
36
+ Button,
37
+ {
38
+ variant: "contained",
39
+ color: "primary",
40
+ size: "small",
41
+ startIcon: /* @__PURE__ */ jsx(AddIcon, {}),
42
+ onClick: handleCreateNewAlertClick,
43
+ children: "Create Alert"
44
+ }
45
+ ),
46
+ /* @__PURE__ */ jsx(
47
+ AlertNewModal,
48
+ {
49
+ isModalOpened,
50
+ setIsModalOpened,
51
+ refetchAlerts
52
+ }
53
+ ),
54
+ /* @__PURE__ */ jsx(SupportButton, { children: "This helps you to bring iLert into your developer portal." })
55
+ ] }),
56
+ /* @__PURE__ */ jsx(
57
+ AlertsTable,
58
+ {
59
+ alerts,
60
+ alertsCount,
61
+ tableState,
62
+ states,
63
+ onAlertChanged,
64
+ onAlertStatesChange,
65
+ onChangePage,
66
+ onChangeRowsPerPage,
67
+ isLoading,
68
+ setIsLoading
69
+ }
70
+ )
71
+ ] });
64
72
  };
65
73
 
66
74
  export { AlertsPage };
@@ -1 +1 @@
1
- {"version":3,"file":"AlertsPage.esm.js","sources":["../../../src/components/AlertsPage/AlertsPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Content,\n ContentHeader,\n ResponseErrorPanel,\n SupportButton,\n} from '@backstage/core-components';\nimport Button from '@material-ui/core/Button';\nimport AddIcon from '@material-ui/icons/Add';\nimport React from 'react';\nimport { useAlerts } from '../../hooks/useAlerts';\nimport { AlertNewModal } from '../Alert/AlertNewModal';\nimport { MissingAuthorizationHeaderError } from '../Errors';\nimport { AlertsTable } from './AlertsTable';\n\nexport const AlertsPage = () => {\n const [\n { tableState, states, alerts, alertsCount, isLoading, error },\n {\n onAlertStatesChange,\n onChangePage,\n onChangeRowsPerPage,\n onAlertChanged,\n refetchAlerts,\n setIsLoading,\n },\n ] = useAlerts(true);\n\n const [isModalOpened, setIsModalOpened] = React.useState(false);\n\n const handleCreateNewAlertClick = () => {\n setIsModalOpened(true);\n };\n\n if (error) {\n if (error.name === 'AuthenticationError') {\n return (\n <Content>\n <MissingAuthorizationHeaderError />\n </Content>\n );\n }\n\n return (\n <Content>\n <ResponseErrorPanel error={error} />\n </Content>\n );\n }\n\n return (\n <Content>\n <ContentHeader title=\"Alerts\">\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={handleCreateNewAlertClick}\n >\n Create Alert\n </Button>\n <AlertNewModal\n isModalOpened={isModalOpened}\n setIsModalOpened={setIsModalOpened}\n refetchAlerts={refetchAlerts}\n />\n <SupportButton>\n This helps you to bring iLert into your developer portal.\n </SupportButton>\n </ContentHeader>\n <AlertsTable\n alerts={alerts}\n alertsCount={alertsCount}\n tableState={tableState}\n states={states}\n onAlertChanged={onAlertChanged}\n onAlertStatesChange={onAlertStatesChange}\n onChangePage={onChangePage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n />\n </Content>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA6BO,MAAM,aAAa,MAAM;AAC9B,EAAM,MAAA;AAAA,IACJ,EAAE,UAAY,EAAA,MAAA,EAAQ,MAAQ,EAAA,WAAA,EAAa,WAAW,KAAM,EAAA;AAAA,IAC5D;AAAA,MACE,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF,GAAI,UAAU,IAAI,CAAA;AAElB,EAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAE9D,EAAA,MAAM,4BAA4B,MAAM;AACtC,IAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,GACvB;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAI,IAAA,KAAA,CAAM,SAAS,qBAAuB,EAAA;AACxC,MAAA,uBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,+BAAA,EAAA,IAAgC,CACnC,CAAA;AAAA;AAIJ,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,OAAc,CACpC,CAAA;AAAA;AAIJ,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,OAAM,QACnB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,WAAA;AAAA,MACR,KAAM,EAAA,SAAA;AAAA,MACN,IAAK,EAAA,OAAA;AAAA,MACL,SAAA,sCAAY,OAAQ,EAAA,IAAA,CAAA;AAAA,MACpB,OAAS,EAAA;AAAA,KAAA;AAAA,IACV;AAAA,GAGD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,aAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AAAA,GAEF,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAc,EAAA,IAAA,EAAA,2DAEf,CACF,CACA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AAAA,GAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"AlertsPage.esm.js","sources":["../../../src/components/AlertsPage/AlertsPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Content,\n ContentHeader,\n ResponseErrorPanel,\n SupportButton,\n} from '@backstage/core-components';\nimport Button from '@material-ui/core/Button';\nimport AddIcon from '@material-ui/icons/Add';\nimport { useState } from 'react';\nimport { useAlerts } from '../../hooks/useAlerts';\nimport { AlertNewModal } from '../Alert/AlertNewModal';\nimport { MissingAuthorizationHeaderError } from '../Errors';\nimport { AlertsTable } from './AlertsTable';\n\nexport const AlertsPage = () => {\n const [\n { tableState, states, alerts, alertsCount, isLoading, error },\n {\n onAlertStatesChange,\n onChangePage,\n onChangeRowsPerPage,\n onAlertChanged,\n refetchAlerts,\n setIsLoading,\n },\n ] = useAlerts(true);\n\n const [isModalOpened, setIsModalOpened] = useState(false);\n\n const handleCreateNewAlertClick = () => {\n setIsModalOpened(true);\n };\n\n if (error) {\n if (error.name === 'AuthenticationError') {\n return (\n <Content>\n <MissingAuthorizationHeaderError />\n </Content>\n );\n }\n\n return (\n <Content>\n <ResponseErrorPanel error={error} />\n </Content>\n );\n }\n\n return (\n <Content>\n <ContentHeader title=\"Alerts\">\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={handleCreateNewAlertClick}\n >\n Create Alert\n </Button>\n <AlertNewModal\n isModalOpened={isModalOpened}\n setIsModalOpened={setIsModalOpened}\n refetchAlerts={refetchAlerts}\n />\n <SupportButton>\n This helps you to bring iLert into your developer portal.\n </SupportButton>\n </ContentHeader>\n <AlertsTable\n alerts={alerts}\n alertsCount={alertsCount}\n tableState={tableState}\n states={states}\n onAlertChanged={onAlertChanged}\n onAlertStatesChange={onAlertStatesChange}\n onChangePage={onChangePage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n />\n </Content>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA6BO,MAAM,aAAa,MAAM;AAC9B,EAAM,MAAA;AAAA,IACJ,EAAE,UAAY,EAAA,MAAA,EAAQ,MAAQ,EAAA,WAAA,EAAa,WAAW,KAAM,EAAA;AAAA,IAC5D;AAAA,MACE,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF,GAAI,UAAU,IAAI,CAAA;AAElB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA;AAExD,EAAA,MAAM,4BAA4B,MAAM;AACtC,IAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,GACvB;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAI,IAAA,KAAA,CAAM,SAAS,qBAAuB,EAAA;AACxC,MAAA,uBACG,GAAA,CAAA,OAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,+BAAA,EAAA,EAAgC,CACnC,EAAA,CAAA;AAAA;AAIJ,IAAA,uBACG,GAAA,CAAA,OAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,kBAAA,EAAA,EAAmB,OAAc,CACpC,EAAA,CAAA;AAAA;AAIJ,EAAA,4BACG,OACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,aAAA,EAAA,EAAc,OAAM,QACnB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,WAAA;AAAA,UACR,KAAM,EAAA,SAAA;AAAA,UACN,IAAK,EAAA,OAAA;AAAA,UACL,SAAA,sBAAY,OAAQ,EAAA,EAAA,CAAA;AAAA,UACpB,OAAS,EAAA,yBAAA;AAAA,UACV,QAAA,EAAA;AAAA;AAAA,OAED;AAAA,sBACA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,aAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACA,GAAA,CAAC,iBAAc,QAEf,EAAA,2DAAA,EAAA;AAAA,KACF,EAAA,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,mBAAA;AAAA,QACA,YAAA;AAAA,QACA,mBAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA;AAAA;AACF,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { makeStyles } from '@material-ui/core/styles';
2
3
  import Typography from '@material-ui/core/Typography';
3
4
  import humanizeDuration from 'humanize-duration';
4
5
  import { Interval, DateTime } from 'luxon';
5
- import React from 'react';
6
6
  import { ilertApiRef } from '../../api/client.esm.js';
7
7
  import { AlertActionsMenu } from '../Alert/AlertActionsMenu.esm.js';
8
8
  import { AlertLink } from '../Alert/AlertLink.esm.js';
@@ -60,21 +60,21 @@ const AlertsTable = ({
60
60
  highlight: true,
61
61
  cellStyle: smColumnStyle,
62
62
  headerStyle: smColumnStyle,
63
- render: (rowData) => /* @__PURE__ */ React.createElement(AlertLink, { alert: rowData })
63
+ render: (rowData) => /* @__PURE__ */ jsx(AlertLink, { alert: rowData })
64
64
  };
65
65
  const summaryColumn = {
66
66
  title: "Summary",
67
67
  field: "summary",
68
68
  cellStyle: !compact ? xlColumnStyle : void 0,
69
69
  headerStyle: !compact ? xlColumnStyle : void 0,
70
- render: (rowData) => /* @__PURE__ */ React.createElement(Typography, null, rowData.summary)
70
+ render: (rowData) => /* @__PURE__ */ jsx(Typography, { children: rowData.summary })
71
71
  };
72
72
  const sourceColumn = {
73
73
  title: "Source",
74
74
  field: "source",
75
75
  cellStyle: mdColumnStyle,
76
76
  headerStyle: mdColumnStyle,
77
- render: (rowData) => /* @__PURE__ */ React.createElement(AlertSourceLink, { alertSource: rowData.alertSource })
77
+ render: (rowData) => /* @__PURE__ */ jsx(AlertSourceLink, { alertSource: rowData.alertSource })
78
78
  };
79
79
  const durationColumn = {
80
80
  title: "Duration",
@@ -82,7 +82,7 @@ const AlertsTable = ({
82
82
  type: "datetime",
83
83
  cellStyle: smColumnStyle,
84
84
  headerStyle: smColumnStyle,
85
- render: (rowData) => /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, rowData.status !== "RESOLVED" ? humanizeDuration(
85
+ render: (rowData) => /* @__PURE__ */ jsx(Typography, { noWrap: true, children: rowData.status !== "RESOLVED" ? humanizeDuration(
86
86
  Interval.fromDateTimes(DateTime.fromISO(rowData.reportTime), DateTime.now()).toDuration().valueOf(),
87
87
  { units: ["h", "m", "s"], largest: 2, round: true }
88
88
  ) : humanizeDuration(
@@ -91,37 +91,37 @@ const AlertsTable = ({
91
91
  DateTime.fromISO(rowData.resolvedOn)
92
92
  ).toDuration().valueOf(),
93
93
  { units: ["h", "m", "s"], largest: 2, round: true }
94
- ))
94
+ ) })
95
95
  };
96
96
  const respondersColumn = {
97
97
  title: "Responders",
98
98
  field: "responders",
99
99
  cellStyle: !compact ? mdColumnStyle : lgColumnStyle,
100
100
  headerStyle: !compact ? mdColumnStyle : lgColumnStyle,
101
- render: (rowData) => /* @__PURE__ */ React.createElement(Typography, null, rowData.responders.map((value, i, arr) => {
101
+ render: (rowData) => /* @__PURE__ */ jsx(Typography, { children: rowData.responders.map((value, i, arr) => {
102
102
  return ilertApi.getUserInitials(value.user) + (arr.length - 1 !== i ? ", " : "");
103
- }))
103
+ }) })
104
104
  };
105
105
  const priorityColumn = {
106
106
  title: "Priority",
107
107
  field: "priority",
108
108
  cellStyle: smColumnStyle,
109
109
  headerStyle: smColumnStyle,
110
- render: (rowData) => /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, rowData.priority === "HIGH" ? "High" : "Low")
110
+ render: (rowData) => /* @__PURE__ */ jsx(Typography, { noWrap: true, children: rowData.priority === "HIGH" ? "High" : "Low" })
111
111
  };
112
112
  const statusColumn = {
113
113
  title: "Status",
114
114
  field: "status",
115
115
  cellStyle: xsColumnStyle,
116
116
  headerStyle: xsColumnStyle,
117
- render: (rowData) => /* @__PURE__ */ React.createElement(StatusChip, { alert: rowData })
117
+ render: (rowData) => /* @__PURE__ */ jsx(StatusChip, { alert: rowData })
118
118
  };
119
119
  const actionsColumn = {
120
120
  title: "",
121
121
  field: "",
122
122
  cellStyle: xsColumnStyle,
123
123
  headerStyle: xsColumnStyle,
124
- render: (rowData) => /* @__PURE__ */ React.createElement(
124
+ render: (rowData) => /* @__PURE__ */ jsx(
125
125
  AlertActionsMenu,
126
126
  {
127
127
  alert: rowData,
@@ -146,7 +146,7 @@ const AlertsTable = ({
146
146
  statusColumn,
147
147
  actionsColumn
148
148
  ];
149
- return /* @__PURE__ */ React.createElement(
149
+ return /* @__PURE__ */ jsx(
150
150
  Table,
151
151
  {
152
152
  options: {
@@ -162,14 +162,14 @@ const AlertsTable = ({
162
162
  showTitle: true,
163
163
  toolbar: true
164
164
  },
165
- emptyContent: /* @__PURE__ */ React.createElement(Typography, { color: "textSecondary", className: classes.empty }, "No alerts right now"),
166
- title: !compact ? /* @__PURE__ */ React.createElement(
165
+ emptyContent: /* @__PURE__ */ jsx(Typography, { color: "textSecondary", className: classes.empty, children: "No alerts right now" }),
166
+ title: !compact ? /* @__PURE__ */ jsx(
167
167
  TableTitle,
168
168
  {
169
169
  alertStates: states,
170
170
  onAlertStatesChange
171
171
  }
172
- ) : /* @__PURE__ */ React.createElement(Typography, { variant: "button", color: "textSecondary" }, "ALERTS"),
172
+ ) : /* @__PURE__ */ jsx(Typography, { variant: "button", color: "textSecondary", children: "ALERTS" }),
173
173
  page: tableState.page,
174
174
  totalCount: alertsCount,
175
175
  onPageChange: onChangePage,