@backstage-community/plugin-announcements 0.5.7 → 0.5.9

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 (47) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/alpha/entityCards.esm.js +2 -2
  3. package/dist/alpha/entityCards.esm.js.map +1 -1
  4. package/dist/alpha/pages.esm.js +2 -2
  5. package/dist/alpha/pages.esm.js.map +1 -1
  6. package/dist/components/Admin/AdminPortal/AdminPortal.esm.js +32 -21
  7. package/dist/components/Admin/AdminPortal/AdminPortal.esm.js.map +1 -1
  8. package/dist/components/Admin/AnnouncementsContent/AnnouncementsContent.esm.js +79 -67
  9. package/dist/components/Admin/AnnouncementsContent/AnnouncementsContent.esm.js.map +1 -1
  10. package/dist/components/Admin/CategoriesContent/CategoriesContent.esm.js +41 -35
  11. package/dist/components/Admin/CategoriesContent/CategoriesContent.esm.js.map +1 -1
  12. package/dist/components/AnnouncementForm/AnnouncementForm.esm.js +93 -78
  13. package/dist/components/AnnouncementForm/AnnouncementForm.esm.js.map +1 -1
  14. package/dist/components/AnnouncementForm/CategoryInput.esm.js +8 -5
  15. package/dist/components/AnnouncementForm/CategoryInput.esm.js.map +1 -1
  16. package/dist/components/AnnouncementPage/AnnouncementPage.esm.js +19 -10
  17. package/dist/components/AnnouncementPage/AnnouncementPage.esm.js.map +1 -1
  18. package/dist/components/AnnouncementSearchResultListItem/AnnouncementSearchResultListItem.esm.js +29 -20
  19. package/dist/components/AnnouncementSearchResultListItem/AnnouncementSearchResultListItem.esm.js.map +1 -1
  20. package/dist/components/AnnouncementsCard/AnnouncementsCard.esm.js +55 -34
  21. package/dist/components/AnnouncementsCard/AnnouncementsCard.esm.js.map +1 -1
  22. package/dist/components/AnnouncementsPage/AnnouncementsPage.esm.js +140 -100
  23. package/dist/components/AnnouncementsPage/AnnouncementsPage.esm.js.map +1 -1
  24. package/dist/components/AnnouncementsPage/ContextMenu.esm.js +40 -27
  25. package/dist/components/AnnouncementsPage/ContextMenu.esm.js.map +1 -1
  26. package/dist/components/AnnouncementsPage/DeleteAnnouncementDialog.esm.js +16 -10
  27. package/dist/components/AnnouncementsPage/DeleteAnnouncementDialog.esm.js.map +1 -1
  28. package/dist/components/AnnouncementsTimeline/AnnouncementsTimeline.esm.js +26 -15
  29. package/dist/components/AnnouncementsTimeline/AnnouncementsTimeline.esm.js.map +1 -1
  30. package/dist/components/CategoriesForm/CategoriesForm.esm.js +30 -26
  31. package/dist/components/CategoriesForm/CategoriesForm.esm.js.map +1 -1
  32. package/dist/components/CategoriesPage/CategoriesPage.esm.js +50 -42
  33. package/dist/components/CategoriesPage/CategoriesPage.esm.js.map +1 -1
  34. package/dist/components/CategoriesPage/DeleteCategoryDialog.esm.js +8 -2
  35. package/dist/components/CategoriesPage/DeleteCategoryDialog.esm.js.map +1 -1
  36. package/dist/components/CreateAnnouncementPage/CreateAnnouncementPage.esm.js +11 -8
  37. package/dist/components/CreateAnnouncementPage/CreateAnnouncementPage.esm.js.map +1 -1
  38. package/dist/components/EditAnnouncementPage/EditAnnouncementPage.esm.js +10 -7
  39. package/dist/components/EditAnnouncementPage/EditAnnouncementPage.esm.js.map +1 -1
  40. package/dist/components/NewAnnouncementBanner/NewAnnouncementBanner.esm.js +35 -29
  41. package/dist/components/NewAnnouncementBanner/NewAnnouncementBanner.esm.js.map +1 -1
  42. package/dist/components/NewCategoryDialog/NewCategoryDialog.esm.js +22 -14
  43. package/dist/components/NewCategoryDialog/NewCategoryDialog.esm.js.map +1 -1
  44. package/dist/components/Router.esm.js +40 -32
  45. package/dist/components/Router.esm.js.map +1 -1
  46. package/dist/index.d.ts +8 -8
  47. package/package.json +28 -28
@@ -1,4 +1,5 @@
1
- import React__default, { useState } from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
2
3
  import { useNavigate } from 'react-router-dom';
3
4
  import { useRouteRef } from '@backstage/core-plugin-api';
4
5
  import { announcementAdminRouteRef, categoriesListRouteRef } from '../../routes.esm.js';
@@ -25,34 +26,46 @@ function ContextMenu() {
25
26
  const onClose = () => {
26
27
  setAnchorEl(void 0);
27
28
  };
28
- return /* @__PURE__ */ React__default.createElement(Box, { "data-testid": "announcements-context-menu" }, /* @__PURE__ */ React__default.createElement(
29
- IconButton,
30
- {
31
- "aria-label": "more",
32
- "aria-controls": "long-menu",
33
- "aria-haspopup": "true",
34
- onClick: onOpen,
35
- "data-testid": "menu-button",
36
- color: "inherit",
37
- className: classes.button
38
- },
39
- /* @__PURE__ */ React__default.createElement(MoreVert, null)
40
- ), /* @__PURE__ */ React__default.createElement(
41
- Popover,
42
- {
43
- open: Boolean(anchorEl),
44
- onClose,
45
- anchorEl,
46
- anchorOrigin: { vertical: "bottom", horizontal: "right" },
47
- transformOrigin: { vertical: "top", horizontal: "right" }
48
- },
49
- /* @__PURE__ */ React__default.createElement(MenuList, null, /* @__PURE__ */ React__default.createElement(MenuItem, { onClick: () => navigate(announcementsLink()) }, /* @__PURE__ */ React__default.createElement(ListItemIcon, null, /* @__PURE__ */ React__default.createElement(Description, { fontSize: "small" })), /* @__PURE__ */ React__default.createElement(ListItemText, { primary: t("announcementsPage.contextMenu.admin") })), /* @__PURE__ */ React__default.createElement(MenuItem, { onClick: () => navigate(categoriesLink()) }, /* @__PURE__ */ React__default.createElement(ListItemIcon, null, /* @__PURE__ */ React__default.createElement(Description, { fontSize: "small" })), /* @__PURE__ */ React__default.createElement(
50
- ListItemText,
29
+ return /* @__PURE__ */ jsxs(Box, { "data-testid": "announcements-context-menu", children: [
30
+ /* @__PURE__ */ jsx(
31
+ IconButton,
51
32
  {
52
- primary: t("announcementsPage.contextMenu.categories")
33
+ "aria-label": "more",
34
+ "aria-controls": "long-menu",
35
+ "aria-haspopup": "true",
36
+ onClick: onOpen,
37
+ "data-testid": "menu-button",
38
+ color: "inherit",
39
+ className: classes.button,
40
+ children: /* @__PURE__ */ jsx(MoreVert, {})
53
41
  }
54
- )))
55
- ));
42
+ ),
43
+ /* @__PURE__ */ jsx(
44
+ Popover,
45
+ {
46
+ open: Boolean(anchorEl),
47
+ onClose,
48
+ anchorEl,
49
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
50
+ transformOrigin: { vertical: "top", horizontal: "right" },
51
+ children: /* @__PURE__ */ jsxs(MenuList, { children: [
52
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: () => navigate(announcementsLink()), children: [
53
+ /* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(Description, { fontSize: "small" }) }),
54
+ /* @__PURE__ */ jsx(ListItemText, { primary: t("announcementsPage.contextMenu.admin") })
55
+ ] }),
56
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: () => navigate(categoriesLink()), children: [
57
+ /* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(Description, { fontSize: "small" }) }),
58
+ /* @__PURE__ */ jsx(
59
+ ListItemText,
60
+ {
61
+ primary: t("announcementsPage.contextMenu.categories")
62
+ }
63
+ )
64
+ ] })
65
+ ] })
66
+ }
67
+ )
68
+ ] });
56
69
  }
57
70
 
58
71
  export { ContextMenu };
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.esm.js","sources":["../../../src/components/AnnouncementsPage/ContextMenu.tsx"],"sourcesContent":["/*\n * Copyright 2024 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, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n announcementAdminRouteRef,\n categoriesListRouteRef,\n} from '../../routes';\nimport { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';\nimport {\n makeStyles,\n Box,\n IconButton,\n Popover,\n MenuList,\n MenuItem,\n ListItemIcon,\n ListItemText,\n} from '@material-ui/core';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport Description from '@material-ui/icons/Description';\n\nconst useStyles = makeStyles({\n button: {\n color: 'white',\n },\n});\n\nexport function ContextMenu() {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement>();\n const announcementsLink = useRouteRef(announcementAdminRouteRef);\n const categoriesLink = useRouteRef(categoriesListRouteRef);\n const navigate = useNavigate();\n const { t } = useAnnouncementsTranslation();\n\n const onOpen = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const onClose = () => {\n setAnchorEl(undefined);\n };\n\n return (\n <Box data-testid=\"announcements-context-menu\">\n <IconButton\n aria-label=\"more\"\n aria-controls=\"long-menu\"\n aria-haspopup=\"true\"\n onClick={onOpen}\n data-testid=\"menu-button\"\n color=\"inherit\"\n className={classes.button}\n >\n <MoreVert />\n </IconButton>\n <Popover\n open={Boolean(anchorEl)}\n onClose={onClose}\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n >\n <MenuList>\n <MenuItem onClick={() => navigate(announcementsLink())}>\n <ListItemIcon>\n <Description fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText primary={t('announcementsPage.contextMenu.admin')} />\n </MenuItem>\n <MenuItem onClick={() => navigate(categoriesLink())}>\n <ListItemIcon>\n <Description fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText\n primary={t('announcementsPage.contextMenu.categories')}\n />\n </MenuItem>\n </MenuList>\n </Popover>\n </Box>\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;AAoCA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;AAEM,SAAS,WAAc,GAAA;AAC5B,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAA4B,EAAA;AAC5D,EAAM,MAAA,iBAAA,GAAoB,YAAY,yBAAyB,CAAA;AAC/D,EAAM,MAAA,cAAA,GAAiB,YAAY,sBAAsB,CAAA;AACzD,EAAA,MAAM,WAAW,WAAY,EAAA;AAC7B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EAAM,MAAA,MAAA,GAAS,CAAC,KAAmD,KAAA;AACjE,IAAA,WAAA,CAAY,MAAM,aAAa,CAAA;AAAA,GACjC;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,WAAA,CAAY,KAAS,CAAA,CAAA;AAAA,GACvB;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,aAAA,EAAY,4BACf,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,MAAA;AAAA,MACX,eAAc,EAAA,WAAA;AAAA,MACd,eAAc,EAAA,MAAA;AAAA,MACd,OAAS,EAAA,MAAA;AAAA,MACT,aAAY,EAAA,aAAA;AAAA,MACZ,KAAM,EAAA,SAAA;AAAA,MACN,WAAW,OAAQ,CAAA;AAAA,KAAA;AAAA,iDAElB,QAAS,EAAA,IAAA;AAAA,GAEZ,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,QAAQ,QAAQ,CAAA;AAAA,MACtB,OAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAc,EAAA,EAAE,QAAU,EAAA,QAAA,EAAU,YAAY,OAAQ,EAAA;AAAA,MACxD,eAAiB,EAAA,EAAE,QAAU,EAAA,KAAA,EAAO,YAAY,OAAQ;AAAA,KAAA;AAAA,iDAEvD,QACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YAAS,OAAS,EAAA,MAAM,SAAS,iBAAkB,EAAC,CACnD,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,oCACEA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,UAAS,OAAQ,EAAA,CAChC,mBACCA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,OAAS,EAAA,CAAA,CAAE,qCAAqC,CAAG,EAAA,CACnE,mBACCA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,SAAS,MAAM,QAAA,CAAS,gBAAgB,CAAA,EAAA,+CAC/C,YACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,eAAY,QAAS,EAAA,OAAA,EAAQ,CAChC,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,EAAE,0CAA0C;AAAA;AAAA,KAEzD,CACF;AAAA,GAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ContextMenu.esm.js","sources":["../../../src/components/AnnouncementsPage/ContextMenu.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { SyntheticEvent, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n announcementAdminRouteRef,\n categoriesListRouteRef,\n} from '../../routes';\nimport { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';\nimport {\n makeStyles,\n Box,\n IconButton,\n Popover,\n MenuList,\n MenuItem,\n ListItemIcon,\n ListItemText,\n} from '@material-ui/core';\nimport MoreVert from '@material-ui/icons/MoreVert';\nimport Description from '@material-ui/icons/Description';\n\nconst useStyles = makeStyles({\n button: {\n color: 'white',\n },\n});\n\nexport function ContextMenu() {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement>();\n const announcementsLink = useRouteRef(announcementAdminRouteRef);\n const categoriesLink = useRouteRef(categoriesListRouteRef);\n const navigate = useNavigate();\n const { t } = useAnnouncementsTranslation();\n\n const onOpen = (event: SyntheticEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const onClose = () => {\n setAnchorEl(undefined);\n };\n\n return (\n <Box data-testid=\"announcements-context-menu\">\n <IconButton\n aria-label=\"more\"\n aria-controls=\"long-menu\"\n aria-haspopup=\"true\"\n onClick={onOpen}\n data-testid=\"menu-button\"\n color=\"inherit\"\n className={classes.button}\n >\n <MoreVert />\n </IconButton>\n <Popover\n open={Boolean(anchorEl)}\n onClose={onClose}\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n >\n <MenuList>\n <MenuItem onClick={() => navigate(announcementsLink())}>\n <ListItemIcon>\n <Description fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText primary={t('announcementsPage.contextMenu.admin')} />\n </MenuItem>\n <MenuItem onClick={() => navigate(categoriesLink())}>\n <ListItemIcon>\n <Description fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText\n primary={t('announcementsPage.contextMenu.categories')}\n />\n </MenuItem>\n </MenuList>\n </Popover>\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAoCA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;AAEM,SAAS,WAAc,GAAA;AAC5B,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAA4B,EAAA;AAC5D,EAAM,MAAA,iBAAA,GAAoB,YAAY,yBAAyB,CAAA;AAC/D,EAAM,MAAA,cAAA,GAAiB,YAAY,sBAAsB,CAAA;AACzD,EAAA,MAAM,WAAW,WAAY,EAAA;AAC7B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EAAM,MAAA,MAAA,GAAS,CAAC,KAA6C,KAAA;AAC3D,IAAA,WAAA,CAAY,MAAM,aAAa,CAAA;AAAA,GACjC;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,WAAA,CAAY,KAAS,CAAA,CAAA;AAAA,GACvB;AAEA,EACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,aAAA,EAAY,4BACf,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,YAAW,EAAA,MAAA;AAAA,QACX,eAAc,EAAA,WAAA;AAAA,QACd,eAAc,EAAA,MAAA;AAAA,QACd,OAAS,EAAA,MAAA;AAAA,QACT,aAAY,EAAA,aAAA;AAAA,QACZ,KAAM,EAAA,SAAA;AAAA,QACN,WAAW,OAAQ,CAAA,MAAA;AAAA,QAEnB,8BAAC,QAAS,EAAA,EAAA;AAAA;AAAA,KACZ;AAAA,oBACA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,QAAQ,QAAQ,CAAA;AAAA,QACtB,OAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAc,EAAA,EAAE,QAAU,EAAA,QAAA,EAAU,YAAY,OAAQ,EAAA;AAAA,QACxD,eAAiB,EAAA,EAAE,QAAU,EAAA,KAAA,EAAO,YAAY,OAAQ,EAAA;AAAA,QAExD,+BAAC,QACC,EAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,YAAS,OAAS,EAAA,MAAM,QAAS,CAAA,iBAAA,EAAmB,CACnD,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,YACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAS,SAAQ,CAChC,EAAA,CAAA;AAAA,4BACC,GAAA,CAAA,YAAA,EAAA,EAAa,OAAS,EAAA,CAAA,CAAE,qCAAqC,CAAG,EAAA;AAAA,WACnE,EAAA,CAAA;AAAA,+BACC,QAAS,EAAA,EAAA,OAAA,EAAS,MAAM,QAAS,CAAA,cAAA,EAAgB,CAChD,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,YACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAS,SAAQ,CAChC,EAAA,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,EAAE,0CAA0C;AAAA;AAAA;AACvD,WACF,EAAA;AAAA,SACF,EAAA;AAAA;AAAA;AACF,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { usePermission } from '@backstage/plugin-permission-react';
2
3
  import { Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';
3
4
  import { announcementDeletePermission } from '@backstage-community/plugin-announcements-common';
4
5
  import { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';
5
- import React__default from 'react';
6
6
 
7
7
  const DeleteAnnouncementDialog = (props) => {
8
8
  const { open, onConfirm, onCancel } = props;
@@ -10,15 +10,21 @@ const DeleteAnnouncementDialog = (props) => {
10
10
  permission: announcementDeletePermission
11
11
  });
12
12
  const { t } = useAnnouncementsTranslation();
13
- return /* @__PURE__ */ React__default.createElement(Dialog, { open, onClose: onCancel }, /* @__PURE__ */ React__default.createElement(DialogTitle, null, t("deleteDialog.title")), /* @__PURE__ */ React__default.createElement(DialogActions, null, /* @__PURE__ */ React__default.createElement(Button, { onClick: onCancel }, t("deleteDialog.cancel")), /* @__PURE__ */ React__default.createElement(
14
- Button,
15
- {
16
- disabled: loadingDeletePermission || !canDeleteAnnouncement,
17
- onClick: onConfirm,
18
- color: "secondary"
19
- },
20
- t("deleteDialog.delete")
21
- )));
13
+ return /* @__PURE__ */ jsxs(Dialog, { open, onClose: onCancel, children: [
14
+ /* @__PURE__ */ jsx(DialogTitle, { children: t("deleteDialog.title") }),
15
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
16
+ /* @__PURE__ */ jsx(Button, { onClick: onCancel, children: t("deleteDialog.cancel") }),
17
+ /* @__PURE__ */ jsx(
18
+ Button,
19
+ {
20
+ disabled: loadingDeletePermission || !canDeleteAnnouncement,
21
+ onClick: onConfirm,
22
+ color: "secondary",
23
+ children: t("deleteDialog.delete")
24
+ }
25
+ )
26
+ ] })
27
+ ] });
22
28
  };
23
29
 
24
30
  export { DeleteAnnouncementDialog };
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteAnnouncementDialog.esm.js","sources":["../../../src/components/AnnouncementsPage/DeleteAnnouncementDialog.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { usePermission } from '@backstage/plugin-permission-react';\nimport { Button, Dialog, DialogActions, DialogTitle } from '@material-ui/core';\nimport { announcementDeletePermission } from '@backstage-community/plugin-announcements-common';\nimport { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';\nimport React from 'react';\n\ntype DeleteAnnouncementDialogProps = {\n open: boolean;\n onConfirm: () => any;\n onCancel: () => any;\n};\n\nexport const DeleteAnnouncementDialog = (\n props: DeleteAnnouncementDialogProps,\n) => {\n const { open, onConfirm, onCancel } = props;\n\n const { loading: loadingDeletePermission, allowed: canDeleteAnnouncement } =\n usePermission({\n permission: announcementDeletePermission,\n });\n const { t } = useAnnouncementsTranslation();\n\n return (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle>{t('deleteDialog.title')}</DialogTitle>\n <DialogActions>\n <Button onClick={onCancel}>{t('deleteDialog.cancel')}</Button>\n\n <Button\n disabled={loadingDeletePermission || !canDeleteAnnouncement}\n onClick={onConfirm}\n color=\"secondary\"\n >\n {t('deleteDialog.delete')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["React"],"mappings":";;;;;;AA2Ba,MAAA,wBAAA,GAA2B,CACtC,KACG,KAAA;AACH,EAAA,MAAM,EAAE,IAAA,EAAM,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAEtC,EAAA,MAAM,EAAE,OAAS,EAAA,uBAAA,EAAyB,OAAS,EAAA,qBAAA,KACjD,aAAc,CAAA;AAAA,IACZ,UAAY,EAAA;AAAA,GACb,CAAA;AACH,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,IAAY,EAAA,OAAA,EAAS,4BAC1BA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,IAAA,EAAa,EAAE,oBAAoB,CAAE,mBACrCA,cAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAA,+CACE,MAAO,EAAA,EAAA,OAAA,EAAS,YAAW,CAAE,CAAA,qBAAqB,CAAE,CAErD,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,2BAA2B,CAAC,qBAAA;AAAA,MACtC,OAAS,EAAA,SAAA;AAAA,MACT,KAAM,EAAA;AAAA,KAAA;AAAA,IAEL,EAAE,qBAAqB;AAAA,GAE5B,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteAnnouncementDialog.esm.js","sources":["../../../src/components/AnnouncementsPage/DeleteAnnouncementDialog.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { usePermission } from '@backstage/plugin-permission-react';\nimport { Button, Dialog, DialogActions, DialogTitle } from '@material-ui/core';\nimport { announcementDeletePermission } from '@backstage-community/plugin-announcements-common';\nimport { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';\n\ntype DeleteAnnouncementDialogProps = {\n open: boolean;\n onConfirm: () => any;\n onCancel: () => any;\n};\n\nexport const DeleteAnnouncementDialog = (\n props: DeleteAnnouncementDialogProps,\n) => {\n const { open, onConfirm, onCancel } = props;\n\n const { loading: loadingDeletePermission, allowed: canDeleteAnnouncement } =\n usePermission({\n permission: announcementDeletePermission,\n });\n const { t } = useAnnouncementsTranslation();\n\n return (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle>{t('deleteDialog.title')}</DialogTitle>\n <DialogActions>\n <Button onClick={onCancel}>{t('deleteDialog.cancel')}</Button>\n\n <Button\n disabled={loadingDeletePermission || !canDeleteAnnouncement}\n onClick={onConfirm}\n color=\"secondary\"\n >\n {t('deleteDialog.delete')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;AA0Ba,MAAA,wBAAA,GAA2B,CACtC,KACG,KAAA;AACH,EAAA,MAAM,EAAE,IAAA,EAAM,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAEtC,EAAA,MAAM,EAAE,OAAS,EAAA,uBAAA,EAAyB,OAAS,EAAA,qBAAA,KACjD,aAAc,CAAA;AAAA,IACZ,UAAY,EAAA;AAAA,GACb,CAAA;AACH,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EAAA,uBACG,IAAA,CAAA,MAAA,EAAA,EAAO,IAAY,EAAA,OAAA,EAAS,QAC3B,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAa,QAAE,EAAA,CAAA,CAAA,oBAAoB,CAAE,EAAA,CAAA;AAAA,yBACrC,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,OAAA,EAAS,QAAW,EAAA,QAAA,EAAA,CAAA,CAAE,qBAAqB,CAAE,EAAA,CAAA;AAAA,sBAErD,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,2BAA2B,CAAC,qBAAA;AAAA,UACtC,OAAS,EAAA,SAAA;AAAA,UACT,KAAM,EAAA,WAAA;AAAA,UAEL,YAAE,qBAAqB;AAAA;AAAA;AAC1B,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
1
2
  import { useRouteRef } from '@backstage/core-plugin-api';
2
- import React__default from 'react';
3
3
  import { Link } from 'react-router-dom';
4
4
  import { DateTime } from 'luxon';
5
5
  import { announcementViewRouteRef } from '../../routes.esm.js';
@@ -32,28 +32,39 @@ const AnnouncementsTimeline = ({
32
32
  });
33
33
  const { t } = useAnnouncementsTranslation();
34
34
  if (loading) {
35
- return /* @__PURE__ */ React__default.createElement(Progress, null);
35
+ return /* @__PURE__ */ jsx(Progress, {});
36
36
  }
37
37
  if (!announcements || announcements.count === 0)
38
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, t("announcementsTimeline.noAnnouncements"));
38
+ return /* @__PURE__ */ jsx(Fragment, { children: t("announcementsTimeline.noAnnouncements") });
39
39
  if (error)
40
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, `${t("announcementsTimeline.error")}: ${error.message}`);
41
- return /* @__PURE__ */ React__default.createElement(
40
+ return /* @__PURE__ */ jsx(Fragment, { children: `${t("announcementsTimeline.error")}: ${error.message}` });
41
+ return /* @__PURE__ */ jsx(
42
42
  Stack,
43
43
  {
44
44
  direction: "column",
45
45
  justifyContent: "center",
46
46
  alignItems: "center",
47
- spacing: 0
48
- },
49
- /* @__PURE__ */ React__default.createElement(Box, { sx: { minWidth: timelineMinWidth } }, /* @__PURE__ */ React__default.createElement(Timeline, { align: timelineAlignment }, announcements.results.map((a) => /* @__PURE__ */ React__default.createElement(TimelineItem, { key: `ti-${a.id}` }, /* @__PURE__ */ React__default.createElement(
50
- TimelineOppositeContent,
51
- {
52
- key: `toc-${a.id}`,
53
- style: { margin: "auto 0" }
54
- },
55
- DateTime.fromISO(a.created_at).toRelative()
56
- ), /* @__PURE__ */ React__default.createElement(TimelineSeparator, null, /* @__PURE__ */ React__default.createElement(TimelineConnector, null), /* @__PURE__ */ React__default.createElement(TimelineDot, { color: "primary" }), /* @__PURE__ */ React__default.createElement(TimelineConnector, null)), /* @__PURE__ */ React__default.createElement(TimelineContent, { key: `tc-${a.id}` }, /* @__PURE__ */ React__default.createElement(Link, { to: viewAnnouncementLink({ id: a.id }) }, /* @__PURE__ */ React__default.createElement(Typography, { key: `th6-${a.id}`, variant: "h6", component: "span" }, a.title)), /* @__PURE__ */ React__default.createElement(Typography, { key: `te-${a.id}`, variant: "body2" }, a.excerpt))))))
47
+ spacing: 0,
48
+ children: /* @__PURE__ */ jsx(Box, { sx: { minWidth: timelineMinWidth }, children: /* @__PURE__ */ jsx(Timeline, { align: timelineAlignment, children: announcements.results.map((a) => /* @__PURE__ */ jsxs(TimelineItem, { children: [
49
+ /* @__PURE__ */ jsx(
50
+ TimelineOppositeContent,
51
+ {
52
+ style: { margin: "auto 0" },
53
+ children: DateTime.fromISO(a.created_at).toRelative()
54
+ },
55
+ `toc-${a.id}`
56
+ ),
57
+ /* @__PURE__ */ jsxs(TimelineSeparator, { children: [
58
+ /* @__PURE__ */ jsx(TimelineConnector, {}),
59
+ /* @__PURE__ */ jsx(TimelineDot, { color: "primary" }),
60
+ /* @__PURE__ */ jsx(TimelineConnector, {})
61
+ ] }),
62
+ /* @__PURE__ */ jsxs(TimelineContent, { children: [
63
+ /* @__PURE__ */ jsx(Link, { to: viewAnnouncementLink({ id: a.id }), children: /* @__PURE__ */ jsx(Typography, { variant: "h6", component: "span", children: a.title }, `th6-${a.id}`) }),
64
+ /* @__PURE__ */ jsx(Typography, { variant: "body2", children: a.excerpt }, `te-${a.id}`)
65
+ ] }, `tc-${a.id}`)
66
+ ] }, `ti-${a.id}`)) }) })
67
+ }
57
68
  );
58
69
  };
59
70
 
@@ -1 +1 @@
1
- {"version":3,"file":"AnnouncementsTimeline.esm.js","sources":["../../../src/components/AnnouncementsTimeline/AnnouncementsTimeline.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { useRouteRef } from '@backstage/core-plugin-api';\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport { DateTime } from 'luxon';\nimport { announcementViewRouteRef } from '../../routes';\nimport {\n useAnnouncements,\n useAnnouncementsTranslation,\n} from '@backstage-community/plugin-announcements-react';\nimport { Progress } from '@backstage/core-components';\nimport {\n Timeline,\n TimelineItem,\n TimelineConnector,\n TimelineDot,\n TimelineSeparator,\n TimelineOppositeContent,\n TimelineContent,\n} from '@material-ui/lab';\nimport { Box, Typography } from '@material-ui/core';\nimport Stack from '@mui/material/Stack';\n\n/**\n * Props for the AnnouncementsTimeline component.\n *\n * @public\n */\nexport type AnnouncementsTimelineProps = {\n /**\n * The maximum number of results to display.\n * Default: 10\n */\n maxResults?: number;\n /**\n * The alignment of the timeline items. Can be 'left', 'right', or 'alternate'.\n * Default: 'alternate'\n */\n timelineAlignment?: 'left' | 'right' | 'alternate';\n /**\n * The minimum width of the timeline.\n * Default: '425px'\n */\n timelineMinWidth?: string;\n /**\n * Whether to only show active announcements.\n * Default: false\n */\n hideInactive?: boolean;\n /**\n * The field by which date time to sort the announcements.\n * Can be 'created_at' or 'start_at'.\n * Default: 'created_at'\n */\n sortBy?: 'created_at' | 'start_at';\n /**\n * The order in which to sort the announcements.\n * Can be 'asc' for ascending (older first) or 'desc' for descending (new first).\n * Default: 'desc'\n */\n order?: 'asc' | 'desc';\n};\n\n/**\n * Default alignment for the timeline.\n */\nconst DEFAULT_TIMELINE_ALIGNMENT = 'alternate';\n\n/**\n * Default width for the timeline.\n */\nconst DEFAULT_TIMELINE_WIDTH = '425px';\n\n/**\n * Default maximum number of results to display.\n */\nconst DEFAULT_RESULTS_MAX = 10;\n\n/**\n * Default setting for only displaying active annoucenments.\n */\nconst DEFAULT_INACTIVE = false;\n\n/**\n * Default sort by filter\n */\nconst DEFAULT_SORTBY = 'created_at';\n\n/**\n * Default order to display announcments. Newer announcements are display by default\n */\nconst DEFAULT_ORDER = 'desc';\n\n/**\n * Timeline of most recent announcements.\n *\n * @param options - The options for the announcements timeline.\n * @returns The rendered announcements timeline.\n */\nexport const AnnouncementsTimeline = ({\n maxResults = DEFAULT_RESULTS_MAX,\n timelineAlignment = DEFAULT_TIMELINE_ALIGNMENT,\n timelineMinWidth = DEFAULT_TIMELINE_WIDTH,\n hideInactive = DEFAULT_INACTIVE,\n sortBy = DEFAULT_SORTBY,\n order = DEFAULT_ORDER,\n}: AnnouncementsTimelineProps) => {\n const viewAnnouncementLink = useRouteRef(announcementViewRouteRef);\n\n const { announcements, loading, error } = useAnnouncements({\n max: maxResults,\n active: hideInactive,\n sortBy,\n order,\n });\n const { t } = useAnnouncementsTranslation();\n\n if (loading) {\n return <Progress />;\n }\n\n if (!announcements || announcements.count === 0)\n return <>{t('announcementsTimeline.noAnnouncements')}</>;\n\n if (error)\n return <>{`${t('announcementsTimeline.error')}: ${error.message}`}</>;\n\n return (\n <Stack\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n spacing={0}\n >\n <Box sx={{ minWidth: timelineMinWidth }}>\n <Timeline align={timelineAlignment}>\n {announcements.results.map(a => (\n <TimelineItem key={`ti-${a.id}`}>\n <TimelineOppositeContent\n key={`toc-${a.id}`}\n style={{ margin: 'auto 0' }}\n >\n {DateTime.fromISO(a.created_at).toRelative()}\n </TimelineOppositeContent>\n\n <TimelineSeparator>\n <TimelineConnector />\n <TimelineDot color=\"primary\" />\n <TimelineConnector />\n </TimelineSeparator>\n\n <TimelineContent key={`tc-${a.id}`}>\n <Link to={viewAnnouncementLink({ id: a.id })}>\n <Typography key={`th6-${a.id}`} variant=\"h6\" component=\"span\">\n {a.title}\n </Typography>\n </Link>\n <Typography key={`te-${a.id}`} variant=\"body2\">\n {a.excerpt}\n </Typography>\n </TimelineContent>\n </TimelineItem>\n ))}\n </Timeline>\n </Box>\n </Stack>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"AnnouncementsTimeline.esm.js","sources":["../../../src/components/AnnouncementsTimeline/AnnouncementsTimeline.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { useRouteRef } from '@backstage/core-plugin-api';\nimport { Link } from 'react-router-dom';\nimport { DateTime } from 'luxon';\nimport { announcementViewRouteRef } from '../../routes';\nimport {\n useAnnouncements,\n useAnnouncementsTranslation,\n} from '@backstage-community/plugin-announcements-react';\nimport { Progress } from '@backstage/core-components';\nimport {\n Timeline,\n TimelineItem,\n TimelineConnector,\n TimelineDot,\n TimelineSeparator,\n TimelineOppositeContent,\n TimelineContent,\n} from '@material-ui/lab';\nimport { Box, Typography } from '@material-ui/core';\nimport Stack from '@mui/material/Stack';\n\n/**\n * Props for the AnnouncementsTimeline component.\n *\n * @public\n */\nexport type AnnouncementsTimelineProps = {\n /**\n * The maximum number of results to display.\n * Default: 10\n */\n maxResults?: number;\n /**\n * The alignment of the timeline items. Can be 'left', 'right', or 'alternate'.\n * Default: 'alternate'\n */\n timelineAlignment?: 'left' | 'right' | 'alternate';\n /**\n * The minimum width of the timeline.\n * Default: '425px'\n */\n timelineMinWidth?: string;\n /**\n * Whether to only show active announcements.\n * Default: false\n */\n hideInactive?: boolean;\n /**\n * The field by which date time to sort the announcements.\n * Can be 'created_at' or 'start_at'.\n * Default: 'created_at'\n */\n sortBy?: 'created_at' | 'start_at';\n /**\n * The order in which to sort the announcements.\n * Can be 'asc' for ascending (older first) or 'desc' for descending (new first).\n * Default: 'desc'\n */\n order?: 'asc' | 'desc';\n};\n\n/**\n * Default alignment for the timeline.\n */\nconst DEFAULT_TIMELINE_ALIGNMENT = 'alternate';\n\n/**\n * Default width for the timeline.\n */\nconst DEFAULT_TIMELINE_WIDTH = '425px';\n\n/**\n * Default maximum number of results to display.\n */\nconst DEFAULT_RESULTS_MAX = 10;\n\n/**\n * Default setting for only displaying active annoucenments.\n */\nconst DEFAULT_INACTIVE = false;\n\n/**\n * Default sort by filter\n */\nconst DEFAULT_SORTBY = 'created_at';\n\n/**\n * Default order to display announcments. Newer announcements are display by default\n */\nconst DEFAULT_ORDER = 'desc';\n\n/**\n * Timeline of most recent announcements.\n *\n * @param options - The options for the announcements timeline.\n * @returns The rendered announcements timeline.\n */\nexport const AnnouncementsTimeline = ({\n maxResults = DEFAULT_RESULTS_MAX,\n timelineAlignment = DEFAULT_TIMELINE_ALIGNMENT,\n timelineMinWidth = DEFAULT_TIMELINE_WIDTH,\n hideInactive = DEFAULT_INACTIVE,\n sortBy = DEFAULT_SORTBY,\n order = DEFAULT_ORDER,\n}: AnnouncementsTimelineProps) => {\n const viewAnnouncementLink = useRouteRef(announcementViewRouteRef);\n\n const { announcements, loading, error } = useAnnouncements({\n max: maxResults,\n active: hideInactive,\n sortBy,\n order,\n });\n const { t } = useAnnouncementsTranslation();\n\n if (loading) {\n return <Progress />;\n }\n\n if (!announcements || announcements.count === 0)\n return <>{t('announcementsTimeline.noAnnouncements')}</>;\n\n if (error)\n return <>{`${t('announcementsTimeline.error')}: ${error.message}`}</>;\n\n return (\n <Stack\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n spacing={0}\n >\n <Box sx={{ minWidth: timelineMinWidth }}>\n <Timeline align={timelineAlignment}>\n {announcements.results.map(a => (\n <TimelineItem key={`ti-${a.id}`}>\n <TimelineOppositeContent\n key={`toc-${a.id}`}\n style={{ margin: 'auto 0' }}\n >\n {DateTime.fromISO(a.created_at).toRelative()}\n </TimelineOppositeContent>\n\n <TimelineSeparator>\n <TimelineConnector />\n <TimelineDot color=\"primary\" />\n <TimelineConnector />\n </TimelineSeparator>\n\n <TimelineContent key={`tc-${a.id}`}>\n <Link to={viewAnnouncementLink({ id: a.id })}>\n <Typography key={`th6-${a.id}`} variant=\"h6\" component=\"span\">\n {a.title}\n </Typography>\n </Link>\n <Typography key={`te-${a.id}`} variant=\"body2\">\n {a.excerpt}\n </Typography>\n </TimelineContent>\n </TimelineItem>\n ))}\n </Timeline>\n </Box>\n </Stack>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import React__default, { useState } from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
2
3
  import { InfoCard } from '@backstage/core-components';
3
4
  import { useAnnouncementsTranslation } from '@backstage-community/plugin-announcements-react';
4
5
  import { announcementCreatePermission } from '@backstage-community/plugin-announcements-common';
@@ -37,33 +38,36 @@ const CategoriesForm = ({
37
38
  await onSubmit(form);
38
39
  setLoading(false);
39
40
  };
40
- return /* @__PURE__ */ React__default.createElement(
41
+ return /* @__PURE__ */ jsx(
41
42
  InfoCard,
42
43
  {
43
- title: initialData.title ? t("categoriesForm.editCategory") : t("categoriesForm.newCategory")
44
- },
45
- /* @__PURE__ */ React__default.createElement("form", { className: classes.formRoot, onSubmit: handleSubmit }, /* @__PURE__ */ React__default.createElement(
46
- TextField,
47
- {
48
- id: "title",
49
- type: "text",
50
- label: t("categoriesForm.titleLabel"),
51
- value: form.title,
52
- onChange: handleChange,
53
- variant: "outlined",
54
- fullWidth: true,
55
- required: true
56
- }
57
- ), /* @__PURE__ */ React__default.createElement(
58
- Button,
59
- {
60
- variant: "contained",
61
- color: "primary",
62
- type: "submit",
63
- disabled: loading || !form || loadingCreatePermission || !canCreateCategory
64
- },
65
- t("categoriesForm.submit")
66
- ))
44
+ title: initialData.title ? t("categoriesForm.editCategory") : t("categoriesForm.newCategory"),
45
+ children: /* @__PURE__ */ jsxs("form", { className: classes.formRoot, onSubmit: handleSubmit, children: [
46
+ /* @__PURE__ */ jsx(
47
+ TextField,
48
+ {
49
+ id: "title",
50
+ type: "text",
51
+ label: t("categoriesForm.titleLabel"),
52
+ value: form.title,
53
+ onChange: handleChange,
54
+ variant: "outlined",
55
+ fullWidth: true,
56
+ required: true
57
+ }
58
+ ),
59
+ /* @__PURE__ */ jsx(
60
+ Button,
61
+ {
62
+ variant: "contained",
63
+ color: "primary",
64
+ type: "submit",
65
+ disabled: loading || !form || loadingCreatePermission || !canCreateCategory,
66
+ children: t("categoriesForm.submit")
67
+ }
68
+ )
69
+ ] })
70
+ }
67
71
  );
68
72
  };
69
73
 
@@ -1 +1 @@
1
- {"version":3,"file":"CategoriesForm.esm.js","sources":["../../../src/components/CategoriesForm/CategoriesForm.tsx"],"sourcesContent":["/*\n * Copyright 2024 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, { useState } from 'react';\nimport { InfoCard } from '@backstage/core-components';\nimport {\n CreateCategoryRequest,\n useAnnouncementsTranslation,\n} from '@backstage-community/plugin-announcements-react';\nimport {\n announcementCreatePermission,\n Category,\n} from '@backstage-community/plugin-announcements-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { Button, makeStyles, TextField } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => {\n return {\n formRoot: {\n '& > *': {\n margin: theme?.spacing?.(1) ?? '8px',\n },\n },\n };\n});\n\nexport type CategoriesFormProps = {\n initialData: Category;\n onSubmit: (data: CreateCategoryRequest) => Promise<void>;\n};\n\nexport const CategoriesForm = ({\n initialData,\n onSubmit,\n}: CategoriesFormProps) => {\n const classes = useStyles();\n const [form, setForm] = useState(initialData);\n const [loading, setLoading] = useState(false);\n const { t } = useAnnouncementsTranslation();\n\n const { loading: loadingCreatePermission, allowed: canCreateCategory } =\n usePermission({\n permission: announcementCreatePermission,\n });\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setForm({\n ...form,\n [event.target.id]: event.target.value,\n });\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n setLoading(true);\n event.preventDefault();\n\n await onSubmit(form);\n setLoading(false);\n };\n\n return (\n <InfoCard\n title={\n initialData.title\n ? t('categoriesForm.editCategory')\n : t('categoriesForm.newCategory')\n }\n >\n <form className={classes.formRoot} onSubmit={handleSubmit}>\n <TextField\n id=\"title\"\n type=\"text\"\n label={t('categoriesForm.titleLabel')}\n value={form.title}\n onChange={handleChange}\n variant=\"outlined\"\n fullWidth\n required\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n disabled={\n loading || !form || loadingCreatePermission || !canCreateCategory\n }\n >\n {t('categoriesForm.submit')}\n </Button>\n </form>\n </InfoCard>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;AA4BA,MAAM,SAAA,GAAY,WAAW,CAAS,KAAA,KAAA;AACpC,EAAO,OAAA;AAAA,IACL,QAAU,EAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA,EAAO,OAAU,GAAA,CAAC,CAAK,IAAA;AAAA;AACjC;AACF,GACF;AACF,CAAC,CAAA;AAOM,MAAM,iBAAiB,CAAC;AAAA,EAC7B,WAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,WAAW,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EAAA,MAAM,EAAE,OAAS,EAAA,uBAAA,EAAyB,OAAS,EAAA,iBAAA,KACjD,aAAc,CAAA;AAAA,IACZ,UAAY,EAAA;AAAA,GACb,CAAA;AAEH,EAAM,MAAA,YAAA,GAAe,CAAC,KAA+C,KAAA;AACnE,IAAQ,OAAA,CAAA;AAAA,MACN,GAAG,IAAA;AAAA,MACH,CAAC,KAAM,CAAA,MAAA,CAAO,EAAE,GAAG,MAAM,MAAO,CAAA;AAAA,KACjC,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,YAAA,GAAe,OAAO,KAA4C,KAAA;AACtE,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,KAAA,CAAM,cAAe,EAAA;AAErB,IAAA,MAAM,SAAS,IAAI,CAAA;AACnB,IAAA,UAAA,CAAW,KAAK,CAAA;AAAA,GAClB;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OACE,WAAY,CAAA,KAAA,GACR,EAAE,6BAA6B,CAAA,GAC/B,EAAE,4BAA4B;AAAA,KAAA;AAAA,iDAGnC,MAAK,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,QAAA,EAAU,UAAU,YAC3C,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,OAAA;AAAA,QACH,IAAK,EAAA,MAAA;AAAA,QACL,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,QACpC,OAAO,IAAK,CAAA,KAAA;AAAA,QACZ,QAAU,EAAA,YAAA;AAAA,QACV,OAAQ,EAAA,UAAA;AAAA,QACR,SAAS,EAAA,IAAA;AAAA,QACT,QAAQ,EAAA;AAAA;AAAA,KAEV,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,WAAA;AAAA,QACR,KAAM,EAAA,SAAA;AAAA,QACN,IAAK,EAAA,QAAA;AAAA,QACL,QACE,EAAA,OAAA,IAAW,CAAC,IAAA,IAAQ,2BAA2B,CAAC;AAAA,OAAA;AAAA,MAGjD,EAAE,uBAAuB;AAAA,KAE9B;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"CategoriesForm.esm.js","sources":["../../../src/components/CategoriesForm/CategoriesForm.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { ChangeEvent, FormEvent, useState } from 'react';\nimport { InfoCard } from '@backstage/core-components';\nimport {\n CreateCategoryRequest,\n useAnnouncementsTranslation,\n} from '@backstage-community/plugin-announcements-react';\nimport {\n announcementCreatePermission,\n Category,\n} from '@backstage-community/plugin-announcements-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { Button, makeStyles, TextField } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => {\n return {\n formRoot: {\n '& > *': {\n margin: theme?.spacing?.(1) ?? '8px',\n },\n },\n };\n});\n\nexport type CategoriesFormProps = {\n initialData: Category;\n onSubmit: (data: CreateCategoryRequest) => Promise<void>;\n};\n\nexport const CategoriesForm = ({\n initialData,\n onSubmit,\n}: CategoriesFormProps) => {\n const classes = useStyles();\n const [form, setForm] = useState(initialData);\n const [loading, setLoading] = useState(false);\n const { t } = useAnnouncementsTranslation();\n\n const { loading: loadingCreatePermission, allowed: canCreateCategory } =\n usePermission({\n permission: announcementCreatePermission,\n });\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setForm({\n ...form,\n [event.target.id]: event.target.value,\n });\n };\n\n const handleSubmit = async (event: FormEvent<HTMLFormElement>) => {\n setLoading(true);\n event.preventDefault();\n\n await onSubmit(form);\n setLoading(false);\n };\n\n return (\n <InfoCard\n title={\n initialData.title\n ? t('categoriesForm.editCategory')\n : t('categoriesForm.newCategory')\n }\n >\n <form className={classes.formRoot} onSubmit={handleSubmit}>\n <TextField\n id=\"title\"\n type=\"text\"\n label={t('categoriesForm.titleLabel')}\n value={form.title}\n onChange={handleChange}\n variant=\"outlined\"\n fullWidth\n required\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n disabled={\n loading || !form || loadingCreatePermission || !canCreateCategory\n }\n >\n {t('categoriesForm.submit')}\n </Button>\n </form>\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AA4BA,MAAM,SAAA,GAAY,WAAW,CAAS,KAAA,KAAA;AACpC,EAAO,OAAA;AAAA,IACL,QAAU,EAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA,EAAO,OAAU,GAAA,CAAC,CAAK,IAAA;AAAA;AACjC;AACF,GACF;AACF,CAAC,CAAA;AAOM,MAAM,iBAAiB,CAAC;AAAA,EAC7B,WAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,WAAW,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,2BAA4B,EAAA;AAE1C,EAAA,MAAM,EAAE,OAAS,EAAA,uBAAA,EAAyB,OAAS,EAAA,iBAAA,KACjD,aAAc,CAAA;AAAA,IACZ,UAAY,EAAA;AAAA,GACb,CAAA;AAEH,EAAM,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AAC7D,IAAQ,OAAA,CAAA;AAAA,MACN,GAAG,IAAA;AAAA,MACH,CAAC,KAAM,CAAA,MAAA,CAAO,EAAE,GAAG,MAAM,MAAO,CAAA;AAAA,KACjC,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,YAAA,GAAe,OAAO,KAAsC,KAAA;AAChE,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,KAAA,CAAM,cAAe,EAAA;AAErB,IAAA,MAAM,SAAS,IAAI,CAAA;AACnB,IAAA,UAAA,CAAW,KAAK,CAAA;AAAA,GAClB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OACE,WAAY,CAAA,KAAA,GACR,EAAE,6BAA6B,CAAA,GAC/B,EAAE,4BAA4B,CAAA;AAAA,MAGpC,+BAAC,MAAK,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,QAAA,EAAU,UAAU,YAC3C,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,EAAG,EAAA,OAAA;AAAA,YACH,IAAK,EAAA,MAAA;AAAA,YACL,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,YACpC,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,QAAU,EAAA,YAAA;AAAA,YACV,OAAQ,EAAA,UAAA;AAAA,YACR,SAAS,EAAA,IAAA;AAAA,YACT,QAAQ,EAAA;AAAA;AAAA,SACV;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,WAAA;AAAA,YACR,KAAM,EAAA,SAAA;AAAA,YACN,IAAK,EAAA,QAAA;AAAA,YACL,QACE,EAAA,OAAA,IAAW,CAAC,IAAA,IAAQ,2BAA2B,CAAC,iBAAA;AAAA,YAGjD,YAAE,uBAAuB;AAAA;AAAA;AAC5B,OACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1,4 +1,5 @@
1
- import React__default, { useState } from 'react';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
2
3
  import { Page, Header, Content, ErrorPanel, Table } from '@backstage/core-components';
3
4
  import { NewCategoryDialog } from '../NewCategoryDialog/NewCategoryDialog.esm.js';
4
5
  import { useAnnouncementsTranslation, announcementsApiRef, useCategories } from '@backstage-community/plugin-announcements-react';
@@ -22,7 +23,7 @@ const CategoriesTable = () => {
22
23
  } = useDeleteCategoryDialogState();
23
24
  const { t } = useAnnouncementsTranslation();
24
25
  if (error) {
25
- return /* @__PURE__ */ React__default.createElement(ErrorPanel, { error });
26
+ return /* @__PURE__ */ jsx(ErrorPanel, { error });
26
27
  }
27
28
  const onNewCategoryDialogClose = () => {
28
29
  setNewCategoryDialogOpen(false);
@@ -61,52 +62,59 @@ const CategoriesTable = () => {
61
62
  title: t("categoriesTable.actions"),
62
63
  field: "actions",
63
64
  render: (category) => {
64
- return /* @__PURE__ */ React__default.createElement(IconButton, { onClick: () => openDeleteDialog(category) }, /* @__PURE__ */ React__default.createElement(DeleteIcon, null));
65
+ return /* @__PURE__ */ jsx(IconButton, { onClick: () => openDeleteDialog(category), children: /* @__PURE__ */ jsx(DeleteIcon, {}) });
65
66
  }
66
67
  }
67
68
  ];
68
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
69
- Table,
70
- {
71
- options: { paging: false },
72
- data: categories || [],
73
- columns,
74
- isLoading: loading,
75
- title: "Categories",
76
- actions: [
77
- {
78
- icon: () => /* @__PURE__ */ React__default.createElement(AddIcon, null),
79
- tooltip: t("categoriesTable.addTooltip"),
80
- isFreeAction: true,
81
- onClick: (_event) => setNewCategoryDialogOpen(true)
82
- }
83
- ],
84
- emptyContent: /* @__PURE__ */ React__default.createElement(Typography, { style: { padding: 2 } }, t("categoriesTable.noCategoriesFound"))
85
- }
86
- ), /* @__PURE__ */ React__default.createElement(
87
- NewCategoryDialog,
88
- {
89
- open: newCategoryDialogOpen,
90
- onClose: onNewCategoryDialogClose
91
- }
92
- ), /* @__PURE__ */ React__default.createElement(
93
- DeleteCategoryDialog,
94
- {
95
- open: isDeleteDialogOpen,
96
- onCancel: onCancelDelete,
97
- onConfirm: onConfirmDelete
98
- }
99
- ));
69
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
70
+ /* @__PURE__ */ jsx(
71
+ Table,
72
+ {
73
+ options: { paging: false },
74
+ data: categories || [],
75
+ columns,
76
+ isLoading: loading,
77
+ title: "Categories",
78
+ actions: [
79
+ {
80
+ icon: () => /* @__PURE__ */ jsx(AddIcon, {}),
81
+ tooltip: t("categoriesTable.addTooltip"),
82
+ isFreeAction: true,
83
+ onClick: (_event) => setNewCategoryDialogOpen(true)
84
+ }
85
+ ],
86
+ emptyContent: /* @__PURE__ */ jsx(Typography, { style: { padding: 2 }, children: t("categoriesTable.noCategoriesFound") })
87
+ }
88
+ ),
89
+ /* @__PURE__ */ jsx(
90
+ NewCategoryDialog,
91
+ {
92
+ open: newCategoryDialogOpen,
93
+ onClose: onNewCategoryDialogClose
94
+ }
95
+ ),
96
+ /* @__PURE__ */ jsx(
97
+ DeleteCategoryDialog,
98
+ {
99
+ open: isDeleteDialogOpen,
100
+ onCancel: onCancelDelete,
101
+ onConfirm: onConfirmDelete
102
+ }
103
+ )
104
+ ] });
100
105
  };
101
106
  const CategoriesPage = (props) => {
102
107
  const { t } = useAnnouncementsTranslation();
103
- return /* @__PURE__ */ React__default.createElement(Page, { themeId: props.themeId }, /* @__PURE__ */ React__default.createElement(
104
- Header,
105
- {
106
- title: t("categoriesPage.title"),
107
- subtitle: t("categoriesPage.subtitle")
108
- }
109
- ), /* @__PURE__ */ React__default.createElement(Content, null, /* @__PURE__ */ React__default.createElement(CategoriesTable, null)));
108
+ return /* @__PURE__ */ jsxs(Page, { themeId: props.themeId, children: [
109
+ /* @__PURE__ */ jsx(
110
+ Header,
111
+ {
112
+ title: t("categoriesPage.title"),
113
+ subtitle: t("categoriesPage.subtitle")
114
+ }
115
+ ),
116
+ /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(CategoriesTable, {}) })
117
+ ] });
110
118
  };
111
119
 
112
120
  export { CategoriesPage };
@@ -1 +1 @@
1
- {"version":3,"file":"CategoriesPage.esm.js","sources":["../../../src/components/CategoriesPage/CategoriesPage.tsx"],"sourcesContent":["/*\n * Copyright 2024 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, { useState } from 'react';\nimport {\n Page,\n Header,\n Content,\n Table,\n TableColumn,\n ErrorPanel,\n} from '@backstage/core-components';\nimport { NewCategoryDialog } from '../NewCategoryDialog';\nimport {\n useAnnouncementsTranslation,\n useCategories,\n announcementsApiRef,\n} from '@backstage-community/plugin-announcements-react';\nimport { Category } from '@backstage-community/plugin-announcements-common';\nimport { useDeleteCategoryDialogState } from './useDeleteCategoryDialogState';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { DeleteCategoryDialog } from './DeleteCategoryDialog';\nimport { ResponseError } from '@backstage/errors';\nimport { IconButton, Typography } from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nconst CategoriesTable = () => {\n const [newCategoryDialogOpen, setNewCategoryDialogOpen] = useState(false);\n const announcementsApi = useApi(announcementsApiRef);\n const alertApi = useApi(alertApiRef);\n\n const { categories, loading, error, retry: refresh } = useCategories();\n\n const {\n isOpen: isDeleteDialogOpen,\n open: openDeleteDialog,\n close: closeDeleteDialog,\n category: categoryToDelete,\n } = useDeleteCategoryDialogState();\n const { t } = useAnnouncementsTranslation();\n\n if (error) {\n return <ErrorPanel error={error} />;\n }\n\n const onNewCategoryDialogClose = () => {\n setNewCategoryDialogOpen(false);\n refresh();\n };\n\n const onCancelDelete = () => {\n closeDeleteDialog();\n };\n const onConfirmDelete = async () => {\n closeDeleteDialog();\n\n try {\n await announcementsApi.deleteCategory(categoryToDelete!.slug);\n\n alertApi.post({\n message: t('categoriesTable.categoryDeleted'),\n severity: 'success',\n });\n } catch (err) {\n alertApi.post({\n message: (err as ResponseError).body.error.message,\n severity: 'error',\n });\n }\n\n refresh();\n };\n\n const columns: TableColumn<Category>[] = [\n {\n title: t('categoriesTable.slug'),\n field: 'slug',\n highlight: true,\n },\n {\n title: t('categoriesTable.title'),\n field: 'title',\n },\n {\n title: t('categoriesTable.actions'),\n field: 'actions',\n render: category => {\n return (\n <IconButton onClick={() => openDeleteDialog(category)}>\n <DeleteIcon />\n </IconButton>\n );\n },\n },\n ];\n\n return (\n <>\n <Table\n options={{ paging: false }}\n data={categories || []}\n columns={columns}\n isLoading={loading}\n title=\"Categories\"\n actions={[\n {\n icon: () => <AddIcon />,\n tooltip: t('categoriesTable.addTooltip'),\n isFreeAction: true,\n onClick: _event => setNewCategoryDialogOpen(true),\n },\n ]}\n emptyContent={\n <Typography style={{ padding: 2 }}>\n {t('categoriesTable.noCategoriesFound')}\n </Typography>\n }\n />\n <NewCategoryDialog\n open={newCategoryDialogOpen}\n onClose={onNewCategoryDialogClose}\n />\n <DeleteCategoryDialog\n open={isDeleteDialogOpen}\n onCancel={onCancelDelete}\n onConfirm={onConfirmDelete}\n />\n </>\n );\n};\n\ntype CategoriesPageProps = {\n themeId: string;\n};\n\nexport const CategoriesPage = (props: CategoriesPageProps) => {\n const { t } = useAnnouncementsTranslation();\n return (\n <Page themeId={props.themeId}>\n <Header\n title={t('categoriesPage.title')}\n subtitle={t('categoriesPage.subtitle')}\n />\n\n <Content>\n <CategoriesTable />\n </Content>\n </Page>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"CategoriesPage.esm.js","sources":["../../../src/components/CategoriesPage/CategoriesPage.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { useState } from 'react';\nimport {\n Page,\n Header,\n Content,\n Table,\n TableColumn,\n ErrorPanel,\n} from '@backstage/core-components';\nimport { NewCategoryDialog } from '../NewCategoryDialog';\nimport {\n useAnnouncementsTranslation,\n useCategories,\n announcementsApiRef,\n} from '@backstage-community/plugin-announcements-react';\nimport { Category } from '@backstage-community/plugin-announcements-common';\nimport { useDeleteCategoryDialogState } from './useDeleteCategoryDialogState';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { DeleteCategoryDialog } from './DeleteCategoryDialog';\nimport { ResponseError } from '@backstage/errors';\nimport { IconButton, Typography } from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nconst CategoriesTable = () => {\n const [newCategoryDialogOpen, setNewCategoryDialogOpen] = useState(false);\n const announcementsApi = useApi(announcementsApiRef);\n const alertApi = useApi(alertApiRef);\n\n const { categories, loading, error, retry: refresh } = useCategories();\n\n const {\n isOpen: isDeleteDialogOpen,\n open: openDeleteDialog,\n close: closeDeleteDialog,\n category: categoryToDelete,\n } = useDeleteCategoryDialogState();\n const { t } = useAnnouncementsTranslation();\n\n if (error) {\n return <ErrorPanel error={error} />;\n }\n\n const onNewCategoryDialogClose = () => {\n setNewCategoryDialogOpen(false);\n refresh();\n };\n\n const onCancelDelete = () => {\n closeDeleteDialog();\n };\n const onConfirmDelete = async () => {\n closeDeleteDialog();\n\n try {\n await announcementsApi.deleteCategory(categoryToDelete!.slug);\n\n alertApi.post({\n message: t('categoriesTable.categoryDeleted'),\n severity: 'success',\n });\n } catch (err) {\n alertApi.post({\n message: (err as ResponseError).body.error.message,\n severity: 'error',\n });\n }\n\n refresh();\n };\n\n const columns: TableColumn<Category>[] = [\n {\n title: t('categoriesTable.slug'),\n field: 'slug',\n highlight: true,\n },\n {\n title: t('categoriesTable.title'),\n field: 'title',\n },\n {\n title: t('categoriesTable.actions'),\n field: 'actions',\n render: category => {\n return (\n <IconButton onClick={() => openDeleteDialog(category)}>\n <DeleteIcon />\n </IconButton>\n );\n },\n },\n ];\n\n return (\n <>\n <Table\n options={{ paging: false }}\n data={categories || []}\n columns={columns}\n isLoading={loading}\n title=\"Categories\"\n actions={[\n {\n icon: () => <AddIcon />,\n tooltip: t('categoriesTable.addTooltip'),\n isFreeAction: true,\n onClick: _event => setNewCategoryDialogOpen(true),\n },\n ]}\n emptyContent={\n <Typography style={{ padding: 2 }}>\n {t('categoriesTable.noCategoriesFound')}\n </Typography>\n }\n />\n <NewCategoryDialog\n open={newCategoryDialogOpen}\n onClose={onNewCategoryDialogClose}\n />\n <DeleteCategoryDialog\n open={isDeleteDialogOpen}\n onCancel={onCancelDelete}\n onConfirm={onConfirmDelete}\n />\n </>\n );\n};\n\ntype CategoriesPageProps = {\n themeId: string;\n};\n\nexport const CategoriesPage = (props: CategoriesPageProps) => {\n const { t } = useAnnouncementsTranslation();\n return (\n <Page themeId={props.themeId}>\n <Header\n title={t('categoriesPage.title')}\n subtitle={t('categoriesPage.subtitle')}\n />\n\n <Content>\n <CategoriesTable />\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
- import React__default from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';
3
3
 
4
4
  const DeleteCategoryDialog = (props) => {
5
5
  const { open, onConfirm, onCancel } = props;
6
- return /* @__PURE__ */ React__default.createElement(Dialog, { open, onClose: onCancel }, /* @__PURE__ */ React__default.createElement(DialogTitle, null, "Are you sure you want to delete this category?"), /* @__PURE__ */ React__default.createElement(DialogActions, null, /* @__PURE__ */ React__default.createElement(Button, { onClick: onCancel }, "Cancel"), /* @__PURE__ */ React__default.createElement(Button, { onClick: onConfirm, color: "secondary" }, "Delete")));
6
+ return /* @__PURE__ */ jsxs(Dialog, { open, onClose: onCancel, children: [
7
+ /* @__PURE__ */ jsx(DialogTitle, { children: "Are you sure you want to delete this category?" }),
8
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
9
+ /* @__PURE__ */ jsx(Button, { onClick: onCancel, children: "Cancel" }),
10
+ /* @__PURE__ */ jsx(Button, { onClick: onConfirm, color: "secondary", children: "Delete" })
11
+ ] })
12
+ ] });
7
13
  };
8
14
 
9
15
  export { DeleteCategoryDialog };
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteCategoryDialog.esm.js","sources":["../../../src/components/CategoriesPage/DeleteCategoryDialog.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';\n\ntype DeleteCategoryDialogProps = {\n open: boolean;\n onConfirm: () => any;\n onCancel: () => any;\n};\n\nexport const DeleteCategoryDialog = (props: DeleteCategoryDialogProps) => {\n const { open, onConfirm, onCancel } = props;\n\n return (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle>Are you sure you want to delete this category?</DialogTitle>\n <DialogActions>\n <Button onClick={onCancel}>Cancel</Button>\n\n <Button onClick={onConfirm} color=\"secondary\">\n Delete\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["React"],"mappings":";;;AAwBa,MAAA,oBAAA,GAAuB,CAAC,KAAqC,KAAA;AACxE,EAAA,MAAM,EAAE,IAAA,EAAM,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAEtC,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,IAAA,EAAY,OAAS,EAAA,QAAA,EAAA,+CAC1B,WAAY,EAAA,IAAA,EAAA,gDAA8C,CAC3D,kBAAAA,cAAA,CAAA,aAAA,CAAC,aACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,OAAS,EAAA,QAAA,EAAA,EAAU,QAAM,CAAA,kBAEhCA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,OAAS,EAAA,SAAA,EAAW,KAAM,EAAA,WAAA,EAAA,EAAY,QAE9C,CACF,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteCategoryDialog.esm.js","sources":["../../../src/components/CategoriesPage/DeleteCategoryDialog.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';\n\ntype DeleteCategoryDialogProps = {\n open: boolean;\n onConfirm: () => any;\n onCancel: () => any;\n};\n\nexport const DeleteCategoryDialog = (props: DeleteCategoryDialogProps) => {\n const { open, onConfirm, onCancel } = props;\n\n return (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle>Are you sure you want to delete this category?</DialogTitle>\n <DialogActions>\n <Button onClick={onCancel}>Cancel</Button>\n\n <Button onClick={onConfirm} color=\"secondary\">\n Delete\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;AAuBa,MAAA,oBAAA,GAAuB,CAAC,KAAqC,KAAA;AACxE,EAAA,MAAM,EAAE,IAAA,EAAM,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAEtC,EAAA,uBACG,IAAA,CAAA,MAAA,EAAA,EAAO,IAAY,EAAA,OAAA,EAAS,QAC3B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eAAY,QAA8C,EAAA,gDAAA,EAAA,CAAA;AAAA,yBAC1D,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,OAAS,EAAA,QAAA,EAAU,QAAM,EAAA,QAAA,EAAA,CAAA;AAAA,0BAEhC,MAAO,EAAA,EAAA,OAAA,EAAS,SAAW,EAAA,KAAA,EAAM,aAAY,QAE9C,EAAA,QAAA,EAAA;AAAA,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useNavigate } from 'react-router-dom';
3
3
  import slugify from 'slugify';
4
4
  import { Page, Header, Content } from '@backstage/core-components';
@@ -43,13 +43,16 @@ const CreateAnnouncementPage = (props) => {
43
43
  alertApi.post({ message: err.message, severity: "error" });
44
44
  }
45
45
  };
46
- return /* @__PURE__ */ React__default.createElement(Page, { themeId: props.themeId }, /* @__PURE__ */ React__default.createElement(Header, { title: props.title, subtitle: props.subtitle }), /* @__PURE__ */ React__default.createElement(Content, null, /* @__PURE__ */ React__default.createElement(
47
- AnnouncementForm,
48
- {
49
- initialData: {},
50
- onSubmit
51
- }
52
- )));
46
+ return /* @__PURE__ */ jsxs(Page, { themeId: props.themeId, children: [
47
+ /* @__PURE__ */ jsx(Header, { title: props.title, subtitle: props.subtitle }),
48
+ /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(
49
+ AnnouncementForm,
50
+ {
51
+ initialData: {},
52
+ onSubmit
53
+ }
54
+ ) })
55
+ ] });
53
56
  };
54
57
 
55
58
  export { CreateAnnouncementPage };