@backstage-community/plugin-rbac 1.34.0 → 1.36.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 (113) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/components/Administration.esm.js +2 -2
  3. package/dist/components/Administration.esm.js.map +1 -1
  4. package/dist/components/ConditionalAccess/AddNestedConditionButton.esm.js +5 -5
  5. package/dist/components/ConditionalAccess/AddNestedConditionButton.esm.js.map +1 -1
  6. package/dist/components/ConditionalAccess/ComplexConditionRow.esm.js +14 -14
  7. package/dist/components/ConditionalAccess/ComplexConditionRow.esm.js.map +1 -1
  8. package/dist/components/ConditionalAccess/ComplexConditionRowButtons.esm.js +7 -7
  9. package/dist/components/ConditionalAccess/ComplexConditionRowButtons.esm.js.map +1 -1
  10. package/dist/components/ConditionalAccess/ConditionRule.esm.js +3 -3
  11. package/dist/components/ConditionalAccess/ConditionRule.esm.js.map +1 -1
  12. package/dist/components/ConditionalAccess/ConditionalAccessSidebar.esm.js +9 -9
  13. package/dist/components/ConditionalAccess/ConditionalAccessSidebar.esm.js.map +1 -1
  14. package/dist/components/ConditionalAccess/ConditionsForm.esm.js +15 -15
  15. package/dist/components/ConditionalAccess/ConditionsForm.esm.js.map +1 -1
  16. package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js +32 -32
  17. package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js.map +1 -1
  18. package/dist/components/ConditionalAccess/ConditionsFormRowFields.esm.js +11 -11
  19. package/dist/components/ConditionalAccess/ConditionsFormRowFields.esm.js.map +1 -1
  20. package/dist/components/ConditionalAccess/CriteriaToggleButton.esm.js +2 -2
  21. package/dist/components/ConditionalAccess/CriteriaToggleButton.esm.js.map +1 -1
  22. package/dist/components/ConditionalAccess/CustomArrayField.esm.js +5 -5
  23. package/dist/components/ConditionalAccess/CustomArrayField.esm.js.map +1 -1
  24. package/dist/components/ConditionalAccess/RulesDropdownOption.esm.js +4 -4
  25. package/dist/components/ConditionalAccess/RulesDropdownOption.esm.js.map +1 -1
  26. package/dist/components/CreateRole/AddMembersForm.esm.js +14 -14
  27. package/dist/components/CreateRole/AddMembersForm.esm.js.map +1 -1
  28. package/dist/components/CreateRole/AddedMembersTable.esm.js +3 -3
  29. package/dist/components/CreateRole/AddedMembersTable.esm.js.map +1 -1
  30. package/dist/components/CreateRole/AddedMembersTableColumn.esm.js +4 -4
  31. package/dist/components/CreateRole/AddedMembersTableColumn.esm.js.map +1 -1
  32. package/dist/components/CreateRole/CreateRolePage.esm.js +6 -6
  33. package/dist/components/CreateRole/CreateRolePage.esm.js.map +1 -1
  34. package/dist/components/CreateRole/EditRolePage.esm.js +9 -5
  35. package/dist/components/CreateRole/EditRolePage.esm.js.map +1 -1
  36. package/dist/components/CreateRole/MembersDropdownOption.esm.js +4 -4
  37. package/dist/components/CreateRole/MembersDropdownOption.esm.js.map +1 -1
  38. package/dist/components/CreateRole/PermissionPoliciesForm.esm.js +100 -106
  39. package/dist/components/CreateRole/PermissionPoliciesForm.esm.js.map +1 -1
  40. package/dist/components/CreateRole/PermissionPoliciesFormNestedRow.esm.js +125 -0
  41. package/dist/components/CreateRole/PermissionPoliciesFormNestedRow.esm.js.map +1 -0
  42. package/dist/components/CreateRole/PermissionPoliciesFormRow.esm.js +104 -153
  43. package/dist/components/CreateRole/PermissionPoliciesFormRow.esm.js.map +1 -1
  44. package/dist/components/CreateRole/PermissionPoliciesFormTable.esm.js +174 -0
  45. package/dist/components/CreateRole/PermissionPoliciesFormTable.esm.js.map +1 -0
  46. package/dist/components/CreateRole/PluginsDropdown.esm.js +66 -0
  47. package/dist/components/CreateRole/PluginsDropdown.esm.js.map +1 -0
  48. package/dist/components/CreateRole/PluginsDropdownOption.esm.js +52 -0
  49. package/dist/components/CreateRole/PluginsDropdownOption.esm.js.map +1 -0
  50. package/dist/components/CreateRole/ReviewStep.esm.js +5 -5
  51. package/dist/components/CreateRole/ReviewStep.esm.js.map +1 -1
  52. package/dist/components/CreateRole/ReviewStepTable.esm.js +4 -4
  53. package/dist/components/CreateRole/ReviewStepTable.esm.js.map +1 -1
  54. package/dist/components/CreateRole/RoleDetailsForm.esm.js +4 -4
  55. package/dist/components/CreateRole/RoleDetailsForm.esm.js.map +1 -1
  56. package/dist/components/CreateRole/RoleForm.esm.js +18 -17
  57. package/dist/components/CreateRole/RoleForm.esm.js.map +1 -1
  58. package/dist/components/DownloadUserStatistics.esm.js +2 -2
  59. package/dist/components/DownloadUserStatistics.esm.js.map +1 -1
  60. package/dist/components/EditRole.esm.js +3 -3
  61. package/dist/components/EditRole.esm.js.map +1 -1
  62. package/dist/components/RbacPage.esm.js +3 -3
  63. package/dist/components/RbacPage.esm.js.map +1 -1
  64. package/dist/components/RoleOverview/AboutCard.esm.js +9 -9
  65. package/dist/components/RoleOverview/AboutCard.esm.js.map +1 -1
  66. package/dist/components/RoleOverview/MembersCard.esm.js +8 -8
  67. package/dist/components/RoleOverview/MembersCard.esm.js.map +1 -1
  68. package/dist/components/RoleOverview/MembersListColumns.esm.js +2 -2
  69. package/dist/components/RoleOverview/MembersListColumns.esm.js.map +1 -1
  70. package/dist/components/RoleOverview/PermissionsCard.esm.js +8 -8
  71. package/dist/components/RoleOverview/PermissionsCard.esm.js.map +1 -1
  72. package/dist/components/RoleOverview/PermissionsListColumns.esm.js.map +1 -1
  73. package/dist/components/RoleOverview/RoleOverviewPage.esm.js +5 -5
  74. package/dist/components/RoleOverview/RoleOverviewPage.esm.js.map +1 -1
  75. package/dist/components/RolesList/DeleteRole.esm.js +3 -3
  76. package/dist/components/RolesList/DeleteRole.esm.js.map +1 -1
  77. package/dist/components/RolesList/DeleteRoleDialog.esm.js +15 -15
  78. package/dist/components/RolesList/DeleteRoleDialog.esm.js.map +1 -1
  79. package/dist/components/RolesList/RolesList.esm.js +9 -9
  80. package/dist/components/RolesList/RolesList.esm.js.map +1 -1
  81. package/dist/components/RolesList/RolesListColumns.esm.js +5 -5
  82. package/dist/components/RolesList/RolesListColumns.esm.js.map +1 -1
  83. package/dist/components/RolesList/RolesListToolbar.esm.js +5 -5
  84. package/dist/components/RolesList/RolesListToolbar.esm.js.map +1 -1
  85. package/dist/components/Router.esm.js +8 -8
  86. package/dist/components/Router.esm.js.map +1 -1
  87. package/dist/components/SnackbarAlert.esm.js +3 -3
  88. package/dist/components/SnackbarAlert.esm.js.map +1 -1
  89. package/dist/components/ToastContext.esm.js +4 -4
  90. package/dist/components/ToastContext.esm.js.map +1 -1
  91. package/dist/hooks/useConditionRules.esm.js +1 -1
  92. package/dist/hooks/useConditionRules.esm.js.map +1 -1
  93. package/dist/hooks/useMembers.esm.js +4 -4
  94. package/dist/hooks/useMembers.esm.js.map +1 -1
  95. package/dist/hooks/usePermissionPolicies.esm.js +11 -7
  96. package/dist/hooks/usePermissionPolicies.esm.js.map +1 -1
  97. package/dist/hooks/useRole.esm.js +1 -1
  98. package/dist/hooks/useRole.esm.js.map +1 -1
  99. package/dist/hooks/useRoles.esm.js +7 -9
  100. package/dist/hooks/useRoles.esm.js.map +1 -1
  101. package/dist/hooks/useSelectedMembers.esm.js +1 -1
  102. package/dist/hooks/useSelectedMembers.esm.js.map +1 -1
  103. package/dist/utils/conditional-access-utils.esm.js +2 -2
  104. package/dist/utils/conditional-access-utils.esm.js.map +1 -1
  105. package/dist/utils/create-role-utils.esm.js +17 -12
  106. package/dist/utils/create-role-utils.esm.js.map +1 -1
  107. package/dist/utils/rbac-utils.esm.js +22 -11
  108. package/dist/utils/rbac-utils.esm.js.map +1 -1
  109. package/package.json +21 -14
  110. package/dist/components/CreateRole/PoliciesCheckboxGroup.esm.js +0 -76
  111. package/dist/components/CreateRole/PoliciesCheckboxGroup.esm.js.map +0 -1
  112. package/dist/components/CreateRole/const.esm.js +0 -14
  113. package/dist/components/CreateRole/const.esm.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { Progress, WarningPanel, MarkdownContent } from '@backstage/core-components';
3
3
  import { AboutField } from '@backstage/plugin-catalog';
4
4
  import Card from '@mui/material/Card';
@@ -17,7 +17,7 @@ const AboutCard = ({ roleName }) => {
17
17
  const classes = useStyles();
18
18
  const { role, roleError, loading } = useRole(roleName);
19
19
  if (loading) {
20
- return /* @__PURE__ */ React.createElement(Progress, null);
20
+ return /* @__PURE__ */ React__default.createElement(Progress, null);
21
21
  }
22
22
  let lastModified = role?.metadata?.lastModified;
23
23
  if (lastModified) {
@@ -34,7 +34,7 @@ const AboutCard = ({ roleName }) => {
34
34
  } else {
35
35
  lastModified = "No information";
36
36
  }
37
- return /* @__PURE__ */ React.createElement(
37
+ return /* @__PURE__ */ React__default.createElement(
38
38
  Card,
39
39
  {
40
40
  sx: {
@@ -45,34 +45,34 @@ const AboutCard = ({ roleName }) => {
45
45
  marginBottom: "10px"
46
46
  }
47
47
  },
48
- /* @__PURE__ */ React.createElement(CardHeader, { title: "About" }),
49
- /* @__PURE__ */ React.createElement(
48
+ /* @__PURE__ */ React__default.createElement(CardHeader, { title: "About" }),
49
+ /* @__PURE__ */ React__default.createElement(
50
50
  CardContent,
51
51
  {
52
52
  sx: {
53
53
  flex: 1
54
54
  }
55
55
  },
56
- roleError.name ? /* @__PURE__ */ React.createElement("div", { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React.createElement(
56
+ roleError.name ? /* @__PURE__ */ React__default.createElement("div", { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React__default.createElement(
57
57
  WarningPanel,
58
58
  {
59
59
  message: roleError?.message,
60
60
  title: "Something went wrong while fetching role",
61
61
  severity: "error"
62
62
  }
63
- )) : /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React.createElement(AboutField, { label: "Description" }, /* @__PURE__ */ React.createElement(
63
+ )) : /* @__PURE__ */ React__default.createElement(Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React__default.createElement(AboutField, { label: "Description" }, /* @__PURE__ */ React__default.createElement(
64
64
  MarkdownContent,
65
65
  {
66
66
  className: classes.text,
67
67
  content: role?.metadata?.description ?? "No description"
68
68
  }
69
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React.createElement(AboutField, { label: "Modified By" }, /* @__PURE__ */ React.createElement(
69
+ ))), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React__default.createElement(AboutField, { label: "Modified By" }, /* @__PURE__ */ React__default.createElement(
70
70
  MarkdownContent,
71
71
  {
72
72
  className: classes.text,
73
73
  content: role?.metadata?.modifiedBy ?? "No information"
74
74
  }
75
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React.createElement(AboutField, { label: "Last Modified" }, /* @__PURE__ */ React.createElement(
75
+ ))), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4, sm: 8, lg: 4 }, /* @__PURE__ */ React__default.createElement(AboutField, { label: "Last Modified" }, /* @__PURE__ */ React__default.createElement(
76
76
  MarkdownContent,
77
77
  {
78
78
  className: classes.text,
@@ -1 +1 @@
1
- {"version":3,"file":"AboutCard.esm.js","sources":["../../../src/components/RoleOverview/AboutCard.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';\n\nimport {\n MarkdownContent,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\nimport { AboutField } from '@backstage/plugin-catalog';\n\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Grid from '@mui/material/Grid';\nimport { makeStyles } from '@mui/styles';\n\nimport { useRole } from '../../hooks/useRole';\n\nconst useStyles = makeStyles({\n text: {\n wordBreak: 'break-word',\n },\n});\n\ntype AboutCardProps = {\n roleName: string;\n};\n\nexport const AboutCard = ({ roleName }: AboutCardProps) => {\n const classes = useStyles();\n const { role, roleError, loading } = useRole(roleName);\n if (loading) {\n return <Progress />;\n }\n\n let lastModified = role?.metadata?.lastModified;\n if (lastModified) {\n const date = new Date(lastModified);\n const time = date.toLocaleString('en-US', {\n hour: '2-digit' as const,\n minute: '2-digit' as const,\n hour12: false,\n timeZone: 'UTC',\n });\n lastModified = `${date.getUTCDate()} ${date.toLocaleString('default', {\n month: 'short',\n })} ${date.getUTCFullYear()}, ${time}`;\n } else {\n lastModified = 'No information';\n }\n\n return (\n <Card\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - 10px)', // for pages without content header\n marginBottom: '10px',\n }}\n >\n <CardHeader title=\"About\" />\n <CardContent\n sx={{\n flex: 1,\n }}\n >\n {roleError.name ? (\n <div style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={roleError?.message}\n title=\"Something went wrong while fetching role\"\n severity=\"error\"\n />\n </div>\n ) : (\n <Grid container spacing={2}>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Description\">\n <MarkdownContent\n className={classes.text}\n content={role?.metadata?.description ?? 'No description'}\n />\n </AboutField>\n </Grid>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Modified By\">\n <MarkdownContent\n className={classes.text}\n content={role?.metadata?.modifiedBy ?? 'No information'}\n />\n </AboutField>\n </Grid>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Last Modified\">\n <MarkdownContent\n className={classes.text}\n content={lastModified}\n />\n </AboutField>\n </Grid>\n </Grid>\n )}\n </CardContent>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AboutCard.esm.js","sources":["../../../src/components/RoleOverview/AboutCard.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';\n\nimport {\n MarkdownContent,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\nimport { AboutField } from '@backstage/plugin-catalog';\n\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Grid from '@mui/material/Grid';\nimport { makeStyles } from '@mui/styles';\n\nimport { useRole } from '../../hooks/useRole';\n\nconst useStyles = makeStyles({\n text: {\n wordBreak: 'break-word',\n },\n});\n\ntype AboutCardProps = {\n roleName: string;\n};\n\nexport const AboutCard = ({ roleName }: AboutCardProps) => {\n const classes = useStyles();\n const { role, roleError, loading } = useRole(roleName);\n if (loading) {\n return <Progress />;\n }\n\n let lastModified = role?.metadata?.lastModified;\n if (lastModified) {\n const date = new Date(lastModified);\n const time = date.toLocaleString('en-US', {\n hour: '2-digit' as const,\n minute: '2-digit' as const,\n hour12: false,\n timeZone: 'UTC',\n });\n lastModified = `${date.getUTCDate()} ${date.toLocaleString('default', {\n month: 'short',\n })} ${date.getUTCFullYear()}, ${time}`;\n } else {\n lastModified = 'No information';\n }\n\n return (\n <Card\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - 10px)', // for pages without content header\n marginBottom: '10px',\n }}\n >\n <CardHeader title=\"About\" />\n <CardContent\n sx={{\n flex: 1,\n }}\n >\n {roleError.name ? (\n <div style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={roleError?.message}\n title=\"Something went wrong while fetching role\"\n severity=\"error\"\n />\n </div>\n ) : (\n <Grid container spacing={2}>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Description\">\n <MarkdownContent\n className={classes.text}\n content={role?.metadata?.description ?? 'No description'}\n />\n </AboutField>\n </Grid>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Modified By\">\n <MarkdownContent\n className={classes.text}\n content={role?.metadata?.modifiedBy ?? 'No information'}\n />\n </AboutField>\n </Grid>\n <Grid item xs={4} sm={8} lg={4}>\n <AboutField label=\"Last Modified\">\n <MarkdownContent\n className={classes.text}\n content={lastModified}\n />\n </AboutField>\n </Grid>\n </Grid>\n )}\n </CardContent>\n </Card>\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { parseEntityRef } from '@backstage/catalog-model';
3
3
  import { WarningPanel, Table } from '@backstage/core-components';
4
4
  import { usePermission } from '@backstage/plugin-permission-react';
@@ -10,10 +10,10 @@ import { getMembers } from '../../utils/rbac-utils.esm.js';
10
10
  import EditRole from '../EditRole.esm.js';
11
11
  import { columns } from './MembersListColumns.esm.js';
12
12
 
13
- const getRefreshIcon = () => /* @__PURE__ */ React.createElement(CachedIcon, null);
13
+ const getRefreshIcon = () => /* @__PURE__ */ React__default.createElement(CachedIcon, null);
14
14
  const getEditIcon = (isAllowed, roleName) => {
15
15
  const { kind, name, namespace } = parseEntityRef(roleName);
16
- return /* @__PURE__ */ React.createElement(
16
+ return /* @__PURE__ */ React__default.createElement(
17
17
  EditRole,
18
18
  {
19
19
  dataTestId: isAllowed ? "update-members" : "disable-update-members",
@@ -25,7 +25,7 @@ const getEditIcon = (isAllowed, roleName) => {
25
25
  };
26
26
  const MembersCard = ({ roleName, membersInfo }) => {
27
27
  const { data, loading, retry, error, canReadUsersAndGroups } = membersInfo;
28
- const [searchText, setSearchText] = React.useState();
28
+ const [searchText, setSearchText] = React__default.useState();
29
29
  const policyEntityPermissionResult = usePermission({
30
30
  permission: policyEntityUpdatePermission,
31
31
  resourceRef: policyEntityUpdatePermission.resourceType
@@ -51,18 +51,18 @@ const MembersCard = ({ roleName, membersInfo }) => {
51
51
  }
52
52
  }
53
53
  ];
54
- const filteredData = React.useMemo(
54
+ const filteredData = React__default.useMemo(
55
55
  () => filterTableData({ data, columns, searchText }),
56
56
  [data, searchText]
57
57
  );
58
- return /* @__PURE__ */ React.createElement(Box, null, !loading && error && /* @__PURE__ */ React.createElement(Box, { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React.createElement(
58
+ return /* @__PURE__ */ React__default.createElement(Box, null, !loading && error && /* @__PURE__ */ React__default.createElement(Box, { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React__default.createElement(
59
59
  WarningPanel,
60
60
  {
61
61
  message: error?.message || error?.name,
62
62
  title: "Something went wrong while fetching the users and groups",
63
63
  severity: "error"
64
64
  }
65
- )), /* @__PURE__ */ React.createElement(
65
+ )), /* @__PURE__ */ React__default.createElement(
66
66
  Table,
67
67
  {
68
68
  title: !loading && data?.length ? `Users and groups (${getMembers(filteredData)})` : "Users and groups",
@@ -71,7 +71,7 @@ const MembersCard = ({ roleName, membersInfo }) => {
71
71
  data: data ?? [],
72
72
  isLoading: loading,
73
73
  columns,
74
- emptyContent: /* @__PURE__ */ React.createElement(
74
+ emptyContent: /* @__PURE__ */ React__default.createElement(
75
75
  Box,
76
76
  {
77
77
  "data-testid": "members-table-empty",
@@ -1 +1 @@
1
- {"version":3,"file":"MembersCard.esm.js","sources":["../../../src/components/RoleOverview/MembersCard.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';\n\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Table, WarningPanel } from '@backstage/core-components';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport CachedIcon from '@mui/icons-material/Cached';\nimport Box from '@mui/material/Box';\n\nimport { policyEntityUpdatePermission } from '@backstage-community/plugin-rbac-common';\n\nimport { MembersInfo } from '../../hooks/useMembers';\nimport { filterTableData } from '../../utils/filter-table-data';\nimport { getMembers } from '../../utils/rbac-utils';\nimport EditRole from '../EditRole';\nimport { columns } from './MembersListColumns';\n\ntype MembersCardProps = {\n roleName: string;\n membersInfo: MembersInfo;\n};\n\nconst getRefreshIcon = () => <CachedIcon />;\nconst getEditIcon = (isAllowed: boolean, roleName: string) => {\n const { kind, name, namespace } = parseEntityRef(roleName);\n\n return (\n <EditRole\n dataTestId={isAllowed ? 'update-members' : 'disable-update-members'}\n roleName={roleName}\n disable={!isAllowed}\n to={`../../role/${kind}/${namespace}/${name}?activeStep=${1}`}\n />\n );\n};\n\nexport const MembersCard = ({ roleName, membersInfo }: MembersCardProps) => {\n const { data, loading, retry, error, canReadUsersAndGroups } = membersInfo;\n const [searchText, setSearchText] = React.useState<string>();\n const policyEntityPermissionResult = usePermission({\n permission: policyEntityUpdatePermission,\n resourceRef: policyEntityUpdatePermission.resourceType,\n });\n\n const actions = [\n {\n icon: getRefreshIcon,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => {\n retry.roleRetry();\n retry.membersRetry();\n },\n },\n {\n icon: () =>\n getEditIcon(\n policyEntityPermissionResult.allowed && canReadUsersAndGroups,\n roleName,\n ),\n tooltip:\n policyEntityPermissionResult.allowed && canReadUsersAndGroups\n ? 'Edit'\n : 'Unauthorized to edit',\n isFreeAction: true,\n onClick: () => {},\n },\n ];\n\n const filteredData = React.useMemo(\n () => filterTableData({ data, columns, searchText }),\n [data, searchText],\n );\n\n return (\n <Box>\n {!loading && error && (\n <Box style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={(error as Error)?.message || (error as Error)?.name}\n title=\"Something went wrong while fetching the users and groups\"\n severity=\"error\"\n />\n </Box>\n )}\n <Table\n title={\n !loading && data?.length\n ? `Users and groups (${getMembers(filteredData)})`\n : 'Users and groups'\n }\n actions={actions}\n options={{ padding: 'default', search: true, paging: true }}\n data={data ?? []}\n isLoading={loading}\n columns={columns}\n emptyContent={\n <Box\n data-testid=\"members-table-empty\"\n sx={{ display: 'flex', justifyContent: 'center', p: 2 }}\n >\n No records found\n </Box>\n }\n onSearchChange={setSearchText}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MembersCard.esm.js","sources":["../../../src/components/RoleOverview/MembersCard.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';\n\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Table, WarningPanel } from '@backstage/core-components';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport CachedIcon from '@mui/icons-material/Cached';\nimport Box from '@mui/material/Box';\n\nimport { policyEntityUpdatePermission } from '@backstage-community/plugin-rbac-common';\n\nimport { MembersInfo } from '../../hooks/useMembers';\nimport { filterTableData } from '../../utils/filter-table-data';\nimport { getMembers } from '../../utils/rbac-utils';\nimport EditRole from '../EditRole';\nimport { columns } from './MembersListColumns';\n\ntype MembersCardProps = {\n roleName: string;\n membersInfo: MembersInfo;\n};\n\nconst getRefreshIcon = () => <CachedIcon />;\nconst getEditIcon = (isAllowed: boolean, roleName: string) => {\n const { kind, name, namespace } = parseEntityRef(roleName);\n\n return (\n <EditRole\n dataTestId={isAllowed ? 'update-members' : 'disable-update-members'}\n roleName={roleName}\n disable={!isAllowed}\n to={`../../role/${kind}/${namespace}/${name}?activeStep=${1}`}\n />\n );\n};\n\nexport const MembersCard = ({ roleName, membersInfo }: MembersCardProps) => {\n const { data, loading, retry, error, canReadUsersAndGroups } = membersInfo;\n const [searchText, setSearchText] = React.useState<string>();\n const policyEntityPermissionResult = usePermission({\n permission: policyEntityUpdatePermission,\n resourceRef: policyEntityUpdatePermission.resourceType,\n });\n\n const actions = [\n {\n icon: getRefreshIcon,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => {\n retry.roleRetry();\n retry.membersRetry();\n },\n },\n {\n icon: () =>\n getEditIcon(\n policyEntityPermissionResult.allowed && canReadUsersAndGroups,\n roleName,\n ),\n tooltip:\n policyEntityPermissionResult.allowed && canReadUsersAndGroups\n ? 'Edit'\n : 'Unauthorized to edit',\n isFreeAction: true,\n onClick: () => {},\n },\n ];\n\n const filteredData = React.useMemo(\n () => filterTableData({ data, columns, searchText }),\n [data, searchText],\n );\n\n return (\n <Box>\n {!loading && error && (\n <Box style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={(error as Error)?.message || (error as Error)?.name}\n title=\"Something went wrong while fetching the users and groups\"\n severity=\"error\"\n />\n </Box>\n )}\n <Table\n title={\n !loading && data?.length\n ? `Users and groups (${getMembers(filteredData)})`\n : 'Users and groups'\n }\n actions={actions}\n options={{ padding: 'default', search: true, paging: true }}\n data={data ?? []}\n isLoading={loading}\n columns={columns}\n emptyContent={\n <Box\n data-testid=\"members-table-empty\"\n sx={{ display: 'flex', justifyContent: 'center', p: 2 }}\n >\n No records found\n </Box>\n }\n onSearchChange={setSearchText}\n />\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { Link } from '@backstage/core-components';
3
3
 
4
4
  const columns = [
@@ -7,7 +7,7 @@ const columns = [
7
7
  field: "name",
8
8
  type: "string",
9
9
  render: (props) => {
10
- return /* @__PURE__ */ React.createElement(
10
+ return /* @__PURE__ */ React__default.createElement(
11
11
  Link,
12
12
  {
13
13
  to: `/catalog/${props.ref.namespace}/${props.ref.kind}/${props.ref.name}`
@@ -1 +1 @@
1
- {"version":3,"file":"MembersListColumns.esm.js","sources":["../../../src/components/RoleOverview/MembersListColumns.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';\n\nimport { Link, TableColumn } from '@backstage/core-components';\n\nimport { MembersData } from '../../types';\n\nexport const columns: TableColumn<MembersData>[] = [\n {\n title: 'Name',\n field: 'name',\n type: 'string',\n render: props => {\n return (\n <Link\n to={`/catalog/${props.ref.namespace}/${props.ref.kind}/${props.ref.name}`}\n >\n {props.name}\n </Link>\n );\n },\n },\n {\n title: 'Type',\n field: 'type',\n type: 'string',\n },\n {\n title: 'Members',\n field: 'members',\n type: 'numeric',\n align: 'left',\n render: (props: MembersData) => {\n return props.type === 'User' ? '-' : props.members;\n },\n customSort: (a, b) => {\n if (a.members === 0) {\n return -1;\n }\n if (b.members === 0) {\n return 1;\n }\n if (a.members === b.members) {\n return 0;\n }\n return a.members < b.members ? -1 : 1;\n },\n },\n];\n"],"names":[],"mappings":";;;AAqBO,MAAM,OAAsC,GAAA;AAAA,EACjD;AAAA,IACE,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,QAAQ,CAAS,KAAA,KAAA;AACf,MACE,uBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA,CAAA,SAAA,EAAY,KAAM,CAAA,GAAA,CAAI,SAAS,CAAA,CAAA,EAAI,KAAM,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA,EAAI,KAAM,CAAA,GAAA,CAAI,IAAI,CAAA;AAAA,SAAA;AAAA,QAEtE,KAAM,CAAA;AAAA,OACT;AAAA;AAEJ,GACF;AAAA,EACA;AAAA,IACE,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,SAAA;AAAA,IACP,KAAO,EAAA,SAAA;AAAA,IACP,IAAM,EAAA,SAAA;AAAA,IACN,KAAO,EAAA,MAAA;AAAA,IACP,MAAA,EAAQ,CAAC,KAAuB,KAAA;AAC9B,MAAA,OAAO,KAAM,CAAA,IAAA,KAAS,MAAS,GAAA,GAAA,GAAM,KAAM,CAAA,OAAA;AAAA,KAC7C;AAAA,IACA,UAAA,EAAY,CAAC,CAAA,EAAG,CAAM,KAAA;AACpB,MAAI,IAAA,CAAA,CAAE,YAAY,CAAG,EAAA;AACnB,QAAO,OAAA,CAAA,CAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,YAAY,CAAG,EAAA;AACnB,QAAO,OAAA,CAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,OAAY,KAAA,CAAA,CAAE,OAAS,EAAA;AAC3B,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,OAAO,CAAE,CAAA,OAAA,GAAU,CAAE,CAAA,OAAA,GAAU,CAAK,CAAA,GAAA,CAAA;AAAA;AACtC;AAEJ;;;;"}
1
+ {"version":3,"file":"MembersListColumns.esm.js","sources":["../../../src/components/RoleOverview/MembersListColumns.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';\n\nimport { Link, TableColumn } from '@backstage/core-components';\n\nimport { MembersData } from '../../types';\n\nexport const columns: TableColumn<MembersData>[] = [\n {\n title: 'Name',\n field: 'name',\n type: 'string',\n render: props => {\n return (\n <Link\n to={`/catalog/${props.ref.namespace}/${props.ref.kind}/${props.ref.name}`}\n >\n {props.name}\n </Link>\n );\n },\n },\n {\n title: 'Type',\n field: 'type',\n type: 'string',\n },\n {\n title: 'Members',\n field: 'members',\n type: 'numeric',\n align: 'left',\n render: (props: MembersData) => {\n return props.type === 'User' ? '-' : props.members;\n },\n customSort: (a, b) => {\n if (a.members === 0) {\n return -1;\n }\n if (b.members === 0) {\n return 1;\n }\n if (a.members === b.members) {\n return 0;\n }\n return a.members < b.members ? -1 : 1;\n },\n },\n];\n"],"names":["React"],"mappings":";;;AAqBO,MAAM,OAAsC,GAAA;AAAA,EACjD;AAAA,IACE,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,QAAQ,CAAS,KAAA,KAAA;AACf,MACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA,CAAA,SAAA,EAAY,KAAM,CAAA,GAAA,CAAI,SAAS,CAAA,CAAA,EAAI,KAAM,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA,EAAI,KAAM,CAAA,GAAA,CAAI,IAAI,CAAA;AAAA,SAAA;AAAA,QAEtE,KAAM,CAAA;AAAA,OACT;AAAA;AAEJ,GACF;AAAA,EACA;AAAA,IACE,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,SAAA;AAAA,IACP,KAAO,EAAA,SAAA;AAAA,IACP,IAAM,EAAA,SAAA;AAAA,IACN,KAAO,EAAA,MAAA;AAAA,IACP,MAAA,EAAQ,CAAC,KAAuB,KAAA;AAC9B,MAAA,OAAO,KAAM,CAAA,IAAA,KAAS,MAAS,GAAA,GAAA,GAAM,KAAM,CAAA,OAAA;AAAA,KAC7C;AAAA,IACA,UAAA,EAAY,CAAC,CAAA,EAAG,CAAM,KAAA;AACpB,MAAI,IAAA,CAAA,CAAE,YAAY,CAAG,EAAA;AACnB,QAAO,OAAA,EAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,YAAY,CAAG,EAAA;AACnB,QAAO,OAAA,CAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,OAAY,KAAA,CAAA,CAAE,OAAS,EAAA;AAC3B,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,OAAO,CAAE,CAAA,OAAA,GAAU,CAAE,CAAA,OAAA,GAAU,EAAK,GAAA,CAAA;AAAA;AACtC;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { parseEntityRef } from '@backstage/catalog-model';
3
3
  import { WarningPanel, Table } from '@backstage/core-components';
4
4
  import { usePermission } from '@backstage/plugin-permission-react';
@@ -10,10 +10,10 @@ import { filterTableData } from '../../utils/filter-table-data.esm.js';
10
10
  import EditRole from '../EditRole.esm.js';
11
11
  import { columns } from './PermissionsListColumns.esm.js';
12
12
 
13
- const getRefreshIcon = () => /* @__PURE__ */ React.createElement(CachedIcon, null);
13
+ const getRefreshIcon = () => /* @__PURE__ */ React__default.createElement(CachedIcon, null);
14
14
  const getEditIcon = (isAllowed, roleName) => {
15
15
  const { kind, name, namespace } = parseEntityRef(roleName);
16
- return /* @__PURE__ */ React.createElement(
16
+ return /* @__PURE__ */ React__default.createElement(
17
17
  EditRole,
18
18
  {
19
19
  dataTestId: isAllowed ? "update-policies" : "disable-update-policies",
@@ -28,12 +28,12 @@ const PermissionsCard = ({
28
28
  canReadUsersAndGroups
29
29
  }) => {
30
30
  const { data, loading, retry, error } = usePermissionPolicies(entityReference);
31
- const [searchText, setSearchText] = React.useState();
31
+ const [searchText, setSearchText] = React__default.useState();
32
32
  const permissionResult = usePermission({
33
33
  permission: policyEntityUpdatePermission,
34
34
  resourceRef: policyEntityUpdatePermission.resourceType
35
35
  });
36
- const numberOfPolicies = React.useMemo(() => {
36
+ const numberOfPolicies = React__default.useMemo(() => {
37
37
  const filteredPermissions = filterTableData({ data, columns, searchText });
38
38
  let policies = 0;
39
39
  filteredPermissions.forEach((p) => {
@@ -67,14 +67,14 @@ const PermissionsCard = ({
67
67
  }
68
68
  }
69
69
  ];
70
- return /* @__PURE__ */ React.createElement(Box, null, error?.name && error.name !== 404 && /* @__PURE__ */ React.createElement(Box, { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React.createElement(
70
+ return /* @__PURE__ */ React__default.createElement(Box, null, error?.name && error.name !== 404 && /* @__PURE__ */ React__default.createElement(Box, { style: { paddingBottom: "16px" } }, /* @__PURE__ */ React__default.createElement(
71
71
  WarningPanel,
72
72
  {
73
73
  message: error?.message,
74
74
  title: "Something went wrong while fetching the permission policies",
75
75
  severity: "error"
76
76
  }
77
- )), /* @__PURE__ */ React.createElement(
77
+ )), /* @__PURE__ */ React__default.createElement(
78
78
  Table,
79
79
  {
80
80
  title: !loading && data.length > 0 ? `Permission Policies (${numberOfPolicies})` : "Permission Policies",
@@ -83,7 +83,7 @@ const PermissionsCard = ({
83
83
  data,
84
84
  columns,
85
85
  isLoading: loading,
86
- emptyContent: /* @__PURE__ */ React.createElement(
86
+ emptyContent: /* @__PURE__ */ React__default.createElement(
87
87
  Box,
88
88
  {
89
89
  "data-testid": "permission-table-empty",
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsCard.esm.js","sources":["../../../src/components/RoleOverview/PermissionsCard.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';\n\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Table, WarningPanel } from '@backstage/core-components';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport CachedIcon from '@mui/icons-material/Cached';\nimport Box from '@mui/material/Box';\n\nimport { policyEntityUpdatePermission } from '@backstage-community/plugin-rbac-common';\n\nimport { usePermissionPolicies } from '../../hooks/usePermissionPolicies';\nimport { filterTableData } from '../../utils/filter-table-data';\nimport EditRole from '../EditRole';\nimport { columns } from './PermissionsListColumns';\n\ntype PermissionsCardProps = {\n entityReference: string;\n canReadUsersAndGroups: boolean;\n};\n\nconst getRefreshIcon = () => <CachedIcon />;\nconst getEditIcon = (isAllowed: boolean, roleName: string) => {\n const { kind, name, namespace } = parseEntityRef(roleName);\n\n return (\n <EditRole\n dataTestId={isAllowed ? 'update-policies' : 'disable-update-policies'}\n roleName={roleName}\n disable={!isAllowed}\n to={`../../role/${kind}/${namespace}/${name}?activeStep=${2}`}\n />\n );\n};\n\nexport const PermissionsCard = ({\n entityReference,\n canReadUsersAndGroups,\n}: PermissionsCardProps) => {\n const { data, loading, retry, error } =\n usePermissionPolicies(entityReference);\n const [searchText, setSearchText] = React.useState<string>();\n const permissionResult = usePermission({\n permission: policyEntityUpdatePermission,\n resourceRef: policyEntityUpdatePermission.resourceType,\n });\n\n const numberOfPolicies = React.useMemo(() => {\n const filteredPermissions = filterTableData({ data, columns, searchText });\n let policies = 0;\n filteredPermissions.forEach(p => {\n if (p.conditions) {\n policies++;\n return;\n }\n policies += p.policies.filter(pol => pol.effect === 'allow').length;\n });\n return policies;\n }, [data, searchText]);\n\n const actions = [\n {\n icon: getRefreshIcon,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => {\n retry.permissionPoliciesRetry();\n retry.policiesRetry();\n retry.conditionalPoliciesRetry();\n },\n },\n {\n icon: () =>\n getEditIcon(\n permissionResult.allowed && canReadUsersAndGroups,\n entityReference,\n ),\n tooltip:\n permissionResult.allowed && canReadUsersAndGroups\n ? 'Edit'\n : 'Unauthorized to edit',\n isFreeAction: true,\n onClick: () => {},\n },\n ];\n\n return (\n <Box>\n {error?.name && error.name !== 404 && (\n <Box style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={error?.message}\n title=\"Something went wrong while fetching the permission policies\"\n severity=\"error\"\n />\n </Box>\n )}\n <Table\n title={\n !loading && data.length > 0\n ? `Permission Policies (${numberOfPolicies})`\n : 'Permission Policies'\n }\n actions={actions}\n options={{ padding: 'default', search: true, paging: true }}\n data={data}\n columns={columns}\n isLoading={loading}\n emptyContent={\n <Box\n data-testid=\"permission-table-empty\"\n sx={{ display: 'flex', justifyContent: 'center', p: 2 }}\n >\n No records found\n </Box>\n }\n onSearchChange={setSearchText}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAoCA,MAAM,cAAA,GAAiB,sBAAM,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,IAAA,CAAA;AACzC,MAAM,WAAA,GAAc,CAAC,SAAA,EAAoB,QAAqB,KAAA;AAC5D,EAAA,MAAM,EAAE,IAAM,EAAA,IAAA,EAAM,SAAU,EAAA,GAAI,eAAe,QAAQ,CAAA;AAEzD,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY,YAAY,iBAAoB,GAAA,yBAAA;AAAA,MAC5C,QAAA;AAAA,MACA,SAAS,CAAC,SAAA;AAAA,MACV,EAAA,EAAI,cAAc,IAAI,CAAA,CAAA,EAAI,SAAS,CAAI,CAAA,EAAA,IAAI,eAAe,CAAC,CAAA;AAAA;AAAA,GAC7D;AAEJ,CAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,eAAA;AAAA,EACA;AACF,CAA4B,KAAA;AAC1B,EAAA,MAAM,EAAE,IAAM,EAAA,OAAA,EAAS,OAAO,KAAM,EAAA,GAClC,sBAAsB,eAAe,CAAA;AACvC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,MAAM,QAAiB,EAAA;AAC3D,EAAA,MAAM,mBAAmB,aAAc,CAAA;AAAA,IACrC,UAAY,EAAA,4BAAA;AAAA,IACZ,aAAa,4BAA6B,CAAA;AAAA,GAC3C,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmB,KAAM,CAAA,OAAA,CAAQ,MAAM;AAC3C,IAAA,MAAM,sBAAsB,eAAgB,CAAA,EAAE,IAAM,EAAA,OAAA,EAAS,YAAY,CAAA;AACzE,IAAA,IAAI,QAAW,GAAA,CAAA;AACf,IAAA,mBAAA,CAAoB,QAAQ,CAAK,CAAA,KAAA;AAC/B,MAAA,IAAI,EAAE,UAAY,EAAA;AAChB,QAAA,QAAA,EAAA;AACA,QAAA;AAAA;AAEF,MAAA,QAAA,IAAY,EAAE,QAAS,CAAA,MAAA,CAAO,SAAO,GAAI,CAAA,MAAA,KAAW,OAAO,CAAE,CAAA,MAAA;AAAA,KAC9D,CAAA;AACD,IAAO,OAAA,QAAA;AAAA,GACN,EAAA,CAAC,IAAM,EAAA,UAAU,CAAC,CAAA;AAErB,EAAA,MAAM,OAAU,GAAA;AAAA,IACd;AAAA,MACE,IAAM,EAAA,cAAA;AAAA,MACN,OAAS,EAAA,SAAA;AAAA,MACT,YAAc,EAAA,IAAA;AAAA,MACd,SAAS,MAAM;AACb,QAAA,KAAA,CAAM,uBAAwB,EAAA;AAC9B,QAAA,KAAA,CAAM,aAAc,EAAA;AACpB,QAAA,KAAA,CAAM,wBAAyB,EAAA;AAAA;AACjC,KACF;AAAA,IACA;AAAA,MACE,MAAM,MACJ,WAAA;AAAA,QACE,iBAAiB,OAAW,IAAA,qBAAA;AAAA,QAC5B;AAAA,OACF;AAAA,MACF,OACE,EAAA,gBAAA,CAAiB,OAAW,IAAA,qBAAA,GACxB,MACA,GAAA,sBAAA;AAAA,MACN,YAAc,EAAA,IAAA;AAAA,MACd,SAAS,MAAM;AAAA;AAAC;AAClB,GACF;AAEA,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EACE,KAAO,EAAA,IAAA,IAAQ,KAAM,CAAA,IAAA,KAAS,GAC7B,oBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,KAAA,EAAO,EAAE,aAAA,EAAe,QAC3B,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAS,KAAO,EAAA,OAAA;AAAA,MAChB,KAAM,EAAA,6DAAA;AAAA,MACN,QAAS,EAAA;AAAA;AAAA,GAEb,CAEF,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EACE,CAAC,OAAW,IAAA,IAAA,CAAK,SAAS,CACtB,GAAA,CAAA,qBAAA,EAAwB,gBAAgB,CACxC,CAAA,CAAA,GAAA,qBAAA;AAAA,MAEN,OAAA;AAAA,MACA,SAAS,EAAE,OAAA,EAAS,WAAW,MAAQ,EAAA,IAAA,EAAM,QAAQ,IAAK,EAAA;AAAA,MAC1D,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAW,EAAA,OAAA;AAAA,MACX,YACE,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,aAAY,EAAA,wBAAA;AAAA,UACZ,IAAI,EAAE,OAAA,EAAS,QAAQ,cAAgB,EAAA,QAAA,EAAU,GAAG,CAAE;AAAA,SAAA;AAAA,QACvD;AAAA,OAED;AAAA,MAEF,cAAgB,EAAA;AAAA;AAAA,GAEpB,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PermissionsCard.esm.js","sources":["../../../src/components/RoleOverview/PermissionsCard.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';\n\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Table, WarningPanel } from '@backstage/core-components';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport CachedIcon from '@mui/icons-material/Cached';\nimport Box from '@mui/material/Box';\n\nimport { policyEntityUpdatePermission } from '@backstage-community/plugin-rbac-common';\n\nimport { usePermissionPolicies } from '../../hooks/usePermissionPolicies';\nimport { filterTableData } from '../../utils/filter-table-data';\nimport EditRole from '../EditRole';\nimport { columns } from './PermissionsListColumns';\n\ntype PermissionsCardProps = {\n entityReference: string;\n canReadUsersAndGroups: boolean;\n};\n\nconst getRefreshIcon = () => <CachedIcon />;\nconst getEditIcon = (isAllowed: boolean, roleName: string) => {\n const { kind, name, namespace } = parseEntityRef(roleName);\n\n return (\n <EditRole\n dataTestId={isAllowed ? 'update-policies' : 'disable-update-policies'}\n roleName={roleName}\n disable={!isAllowed}\n to={`../../role/${kind}/${namespace}/${name}?activeStep=${2}`}\n />\n );\n};\n\nexport const PermissionsCard = ({\n entityReference,\n canReadUsersAndGroups,\n}: PermissionsCardProps) => {\n const { data, loading, retry, error } =\n usePermissionPolicies(entityReference);\n const [searchText, setSearchText] = React.useState<string>();\n const permissionResult = usePermission({\n permission: policyEntityUpdatePermission,\n resourceRef: policyEntityUpdatePermission.resourceType,\n });\n\n const numberOfPolicies = React.useMemo(() => {\n const filteredPermissions = filterTableData({ data, columns, searchText });\n let policies = 0;\n filteredPermissions.forEach(p => {\n if (p.conditions) {\n policies++;\n return;\n }\n policies += p.policies.filter(pol => pol.effect === 'allow').length;\n });\n return policies;\n }, [data, searchText]);\n\n const actions = [\n {\n icon: getRefreshIcon,\n tooltip: 'Refresh',\n isFreeAction: true,\n onClick: () => {\n retry.permissionPoliciesRetry();\n retry.policiesRetry();\n retry.conditionalPoliciesRetry();\n },\n },\n {\n icon: () =>\n getEditIcon(\n permissionResult.allowed && canReadUsersAndGroups,\n entityReference,\n ),\n tooltip:\n permissionResult.allowed && canReadUsersAndGroups\n ? 'Edit'\n : 'Unauthorized to edit',\n isFreeAction: true,\n onClick: () => {},\n },\n ];\n\n return (\n <Box>\n {error?.name && error.name !== 404 && (\n <Box style={{ paddingBottom: '16px' }}>\n <WarningPanel\n message={error?.message}\n title=\"Something went wrong while fetching the permission policies\"\n severity=\"error\"\n />\n </Box>\n )}\n <Table\n title={\n !loading && data.length > 0\n ? `Permission Policies (${numberOfPolicies})`\n : 'Permission Policies'\n }\n actions={actions}\n options={{ padding: 'default', search: true, paging: true }}\n data={data}\n columns={columns}\n isLoading={loading}\n emptyContent={\n <Box\n data-testid=\"permission-table-empty\"\n sx={{ display: 'flex', justifyContent: 'center', p: 2 }}\n >\n No records found\n </Box>\n }\n onSearchChange={setSearchText}\n />\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsListColumns.esm.js","sources":["../../../src/components/RoleOverview/PermissionsListColumns.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 { TableColumn } from '@backstage/core-components';\n\nimport { PermissionsData } from '../../types';\nimport { getRulesNumber } from '../../utils/create-role-utils';\n\nexport const columns: TableColumn<PermissionsData>[] = [\n {\n title: 'Plugin',\n field: 'plugin',\n type: 'string',\n },\n {\n title: 'Permission',\n field: 'permission',\n type: 'string',\n },\n {\n title: 'Policies',\n field: 'policyString',\n type: 'string',\n customSort: (a, b) => {\n if (a.policies.length === 0) {\n return -1;\n }\n if (b.policies.length === 0) {\n return 1;\n }\n if (a.policies.length === b.policies.length) {\n return 0;\n }\n return a.policies.length < b.policies.length ? -1 : 1;\n },\n },\n {\n title: 'Conditional',\n field: 'conditions',\n type: 'string',\n render: (permissionsData: PermissionsData) => {\n const totalRules = getRulesNumber(permissionsData.conditions);\n return totalRules\n ? `${totalRules} ${totalRules > 1 ? 'rules' : 'rule'}`\n : '-';\n },\n },\n];\n"],"names":[],"mappings":";;AAoBO,MAAM,OAA0C,GAAA;AAAA,EACrD;AAAA,IACE,KAAO,EAAA,QAAA;AAAA,IACP,KAAO,EAAA,QAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,YAAA;AAAA,IACP,KAAO,EAAA,YAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,UAAA;AAAA,IACP,KAAO,EAAA,cAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,UAAA,EAAY,CAAC,CAAA,EAAG,CAAM,KAAA;AACpB,MAAI,IAAA,CAAA,CAAE,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AAC3B,QAAO,OAAA,CAAA,CAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AAC3B,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,IAAI,CAAE,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,CAAE,SAAS,MAAQ,EAAA;AAC3C,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,OAAO,EAAE,QAAS,CAAA,MAAA,GAAS,CAAE,CAAA,QAAA,CAAS,SAAS,CAAK,CAAA,GAAA,CAAA;AAAA;AACtD,GACF;AAAA,EACA;AAAA,IACE,KAAO,EAAA,aAAA;AAAA,IACP,KAAO,EAAA,YAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,MAAA,EAAQ,CAAC,eAAqC,KAAA;AAC5C,MAAM,MAAA,UAAA,GAAa,cAAe,CAAA,eAAA,CAAgB,UAAU,CAAA;AAC5D,MAAO,OAAA,UAAA,GACH,GAAG,UAAU,CAAA,CAAA,EAAI,aAAa,CAAI,GAAA,OAAA,GAAU,MAAM,CAClD,CAAA,GAAA,GAAA;AAAA;AACN;AAEJ;;;;"}
1
+ {"version":3,"file":"PermissionsListColumns.esm.js","sources":["../../../src/components/RoleOverview/PermissionsListColumns.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 { TableColumn } from '@backstage/core-components';\n\nimport { PermissionsData } from '../../types';\nimport { getRulesNumber } from '../../utils/create-role-utils';\n\nexport const columns: TableColumn<PermissionsData>[] = [\n {\n title: 'Plugin',\n field: 'plugin',\n type: 'string',\n },\n {\n title: 'Permission',\n field: 'permission',\n type: 'string',\n },\n {\n title: 'Policies',\n field: 'policyString',\n type: 'string',\n customSort: (a, b) => {\n if (a.policies.length === 0) {\n return -1;\n }\n if (b.policies.length === 0) {\n return 1;\n }\n if (a.policies.length === b.policies.length) {\n return 0;\n }\n return a.policies.length < b.policies.length ? -1 : 1;\n },\n },\n {\n title: 'Conditional',\n field: 'conditions',\n type: 'string',\n render: (permissionsData: PermissionsData) => {\n const totalRules = getRulesNumber(permissionsData.conditions);\n return totalRules\n ? `${totalRules} ${totalRules > 1 ? 'rules' : 'rule'}`\n : '-';\n },\n },\n];\n"],"names":[],"mappings":";;AAoBO,MAAM,OAA0C,GAAA;AAAA,EACrD;AAAA,IACE,KAAO,EAAA,QAAA;AAAA,IACP,KAAO,EAAA,QAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,YAAA;AAAA,IACP,KAAO,EAAA,YAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AAAA,IACE,KAAO,EAAA,UAAA;AAAA,IACP,KAAO,EAAA,cAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,UAAA,EAAY,CAAC,CAAA,EAAG,CAAM,KAAA;AACpB,MAAI,IAAA,CAAA,CAAE,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AAC3B,QAAO,OAAA,EAAA;AAAA;AAET,MAAI,IAAA,CAAA,CAAE,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AAC3B,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,IAAI,CAAE,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,CAAE,SAAS,MAAQ,EAAA;AAC3C,QAAO,OAAA,CAAA;AAAA;AAET,MAAA,OAAO,EAAE,QAAS,CAAA,MAAA,GAAS,CAAE,CAAA,QAAA,CAAS,SAAS,EAAK,GAAA,CAAA;AAAA;AACtD,GACF;AAAA,EACA;AAAA,IACE,KAAO,EAAA,aAAA;AAAA,IACP,KAAO,EAAA,YAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,MAAA,EAAQ,CAAC,eAAqC,KAAA;AAC5C,MAAM,MAAA,UAAA,GAAa,cAAe,CAAA,eAAA,CAAgB,UAAU,CAAA;AAC5D,MAAO,OAAA,UAAA,GACH,GAAG,UAAU,CAAA,CAAA,EAAI,aAAa,CAAI,GAAA,OAAA,GAAU,MAAM,CAClD,CAAA,GAAA,GAAA;AAAA;AACN;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { useParams } from 'react-router-dom';
3
3
  import { Page, Header, TabbedLayout } from '@backstage/core-components';
4
4
  import Grid from '@mui/material/Grid';
@@ -18,25 +18,25 @@ const RoleOverviewPage = () => {
18
18
  const onAlertClose = () => {
19
19
  setToastMessage("");
20
20
  };
21
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(SnackbarAlert, { toastMessage, onAlertClose }), /* @__PURE__ */ React.createElement(Page, { themeId: "tool" }, /* @__PURE__ */ React.createElement(
21
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(SnackbarAlert, { toastMessage, onAlertClose }), /* @__PURE__ */ React__default.createElement(Page, { themeId: "tool" }, /* @__PURE__ */ React__default.createElement(
22
22
  Header,
23
23
  {
24
24
  title: `${roleKind}:${roleNamespace}/${roleName}`,
25
25
  type: "RBAC",
26
26
  typeLink: ".."
27
27
  }
28
- ), /* @__PURE__ */ React.createElement(TabbedLayout, null, /* @__PURE__ */ React.createElement(TabbedLayout.Route, { path: "", title: "Overview" }, /* @__PURE__ */ React.createElement(Grid, { container: true, direction: "row", spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 12, xs: 12 }, /* @__PURE__ */ React.createElement(
28
+ ), /* @__PURE__ */ React__default.createElement(TabbedLayout, null, /* @__PURE__ */ React__default.createElement(TabbedLayout.Route, { path: "", title: "Overview" }, /* @__PURE__ */ React__default.createElement(Grid, { container: true, direction: "row", spacing: 2 }, /* @__PURE__ */ React__default.createElement(Grid, { item: true, lg: 12, xs: 12 }, /* @__PURE__ */ React__default.createElement(
29
29
  AboutCard,
30
30
  {
31
31
  roleName: `${roleKind}:${roleNamespace}/${roleName}`
32
32
  }
33
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 6, xs: 12 }, /* @__PURE__ */ React.createElement(
33
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, lg: 6, xs: 12 }, /* @__PURE__ */ React__default.createElement(
34
34
  MembersCard,
35
35
  {
36
36
  roleName: `${roleKind}:${roleNamespace}/${roleName}`,
37
37
  membersInfo
38
38
  }
39
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 6, xs: 12 }, /* @__PURE__ */ React.createElement(
39
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, lg: 6, xs: 12 }, /* @__PURE__ */ React__default.createElement(
40
40
  PermissionsCard,
41
41
  {
42
42
  entityReference: `${roleKind}:${roleNamespace}/${roleName}`,
@@ -1 +1 @@
1
- {"version":3,"file":"RoleOverviewPage.esm.js","sources":["../../../src/components/RoleOverview/RoleOverviewPage.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 { useParams } from 'react-router-dom';\n\nimport { Header, Page, TabbedLayout } from '@backstage/core-components';\n\nimport Grid from '@mui/material/Grid';\n\nimport { useLocationToast } from '../../hooks/useLocationToast';\nimport { useMembers } from '../../hooks/useMembers';\nimport { SnackbarAlert } from '../SnackbarAlert';\nimport { useToast } from '../ToastContext';\nimport { AboutCard } from './AboutCard';\nimport { MembersCard } from './MembersCard';\nimport { PermissionsCard } from './PermissionsCard';\n\nexport const RoleOverviewPage = () => {\n const { roleName, roleNamespace, roleKind } = useParams();\n const { toastMessage, setToastMessage } = useToast();\n const membersInfo = useMembers(`${roleKind}:${roleNamespace}/${roleName}`);\n\n useLocationToast(setToastMessage);\n\n const onAlertClose = () => {\n setToastMessage('');\n };\n\n return (\n <>\n <SnackbarAlert toastMessage={toastMessage} onAlertClose={onAlertClose} />\n <Page themeId=\"tool\">\n <Header\n title={`${roleKind}:${roleNamespace}/${roleName}`}\n type=\"RBAC\"\n typeLink=\"..\"\n />\n <TabbedLayout>\n <TabbedLayout.Route path=\"\" title=\"Overview\">\n <Grid container direction=\"row\" spacing={2}>\n <Grid item lg={12} xs={12}>\n <AboutCard\n roleName={`${roleKind}:${roleNamespace}/${roleName}`}\n />\n </Grid>\n <Grid item lg={6} xs={12}>\n <MembersCard\n roleName={`${roleKind}:${roleNamespace}/${roleName}`}\n membersInfo={membersInfo}\n />\n </Grid>\n <Grid item lg={6} xs={12}>\n <PermissionsCard\n entityReference={`${roleKind}:${roleNamespace}/${roleName}`}\n canReadUsersAndGroups={membersInfo.canReadUsersAndGroups}\n />\n </Grid>\n </Grid>\n </TabbedLayout.Route>\n </TabbedLayout>\n </Page>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AA8BO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,QAAA,EAAU,aAAe,EAAA,QAAA,KAAa,SAAU,EAAA;AACxD,EAAA,MAAM,EAAE,YAAA,EAAc,eAAgB,EAAA,GAAI,QAAS,EAAA;AACnD,EAAM,MAAA,WAAA,GAAc,WAAW,CAAG,EAAA,QAAQ,IAAI,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAE,CAAA,CAAA;AAEzE,EAAA,gBAAA,CAAiB,eAAe,CAAA;AAEhC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,GACpB;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,aAAc,EAAA,EAAA,YAAA,EAA4B,cAA4B,CACvE,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,OAAA,EAAQ,MACZ,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MAC/C,IAAK,EAAA,MAAA;AAAA,MACL,QAAS,EAAA;AAAA;AAAA,GACX,kBACC,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,YAAA,CAAa,KAAb,EAAA,EAAmB,IAAK,EAAA,EAAA,EAAG,KAAM,EAAA,UAAA,EAAA,kBAC/B,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAS,IAAC,EAAA,SAAA,EAAU,KAAM,EAAA,OAAA,EAAS,CACvC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EACrB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,UAAU,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA;AAAA;AAAA,GAEtD,mBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,EACpB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,UAAU,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MAClD;AAAA;AAAA,GAEJ,mBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,EACpB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,iBAAiB,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MACzD,uBAAuB,WAAY,CAAA;AAAA;AAAA,GAEvC,CACF,CACF,CACF,CACF,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RoleOverviewPage.esm.js","sources":["../../../src/components/RoleOverview/RoleOverviewPage.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 { useParams } from 'react-router-dom';\n\nimport { Header, Page, TabbedLayout } from '@backstage/core-components';\n\nimport Grid from '@mui/material/Grid';\n\nimport { useLocationToast } from '../../hooks/useLocationToast';\nimport { useMembers } from '../../hooks/useMembers';\nimport { SnackbarAlert } from '../SnackbarAlert';\nimport { useToast } from '../ToastContext';\nimport { AboutCard } from './AboutCard';\nimport { MembersCard } from './MembersCard';\nimport { PermissionsCard } from './PermissionsCard';\n\nexport const RoleOverviewPage = () => {\n const { roleName, roleNamespace, roleKind } = useParams();\n const { toastMessage, setToastMessage } = useToast();\n const membersInfo = useMembers(`${roleKind}:${roleNamespace}/${roleName}`);\n\n useLocationToast(setToastMessage);\n\n const onAlertClose = () => {\n setToastMessage('');\n };\n\n return (\n <>\n <SnackbarAlert toastMessage={toastMessage} onAlertClose={onAlertClose} />\n <Page themeId=\"tool\">\n <Header\n title={`${roleKind}:${roleNamespace}/${roleName}`}\n type=\"RBAC\"\n typeLink=\"..\"\n />\n <TabbedLayout>\n <TabbedLayout.Route path=\"\" title=\"Overview\">\n <Grid container direction=\"row\" spacing={2}>\n <Grid item lg={12} xs={12}>\n <AboutCard\n roleName={`${roleKind}:${roleNamespace}/${roleName}`}\n />\n </Grid>\n <Grid item lg={6} xs={12}>\n <MembersCard\n roleName={`${roleKind}:${roleNamespace}/${roleName}`}\n membersInfo={membersInfo}\n />\n </Grid>\n <Grid item lg={6} xs={12}>\n <PermissionsCard\n entityReference={`${roleKind}:${roleNamespace}/${roleName}`}\n canReadUsersAndGroups={membersInfo.canReadUsersAndGroups}\n />\n </Grid>\n </Grid>\n </TabbedLayout.Route>\n </TabbedLayout>\n </Page>\n </>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;AA8BO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,QAAA,EAAU,aAAe,EAAA,QAAA,KAAa,SAAU,EAAA;AACxD,EAAA,MAAM,EAAE,YAAA,EAAc,eAAgB,EAAA,GAAI,QAAS,EAAA;AACnD,EAAM,MAAA,WAAA,GAAc,WAAW,CAAG,EAAA,QAAQ,IAAI,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAE,CAAA,CAAA;AAEzE,EAAA,gBAAA,CAAiB,eAAe,CAAA;AAEhC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,GACpB;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,+CACG,aAAc,EAAA,EAAA,YAAA,EAA4B,cAA4B,CACvE,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,OAAA,EAAQ,MACZ,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MAC/C,IAAK,EAAA,MAAA;AAAA,MACL,QAAS,EAAA;AAAA;AAAA,GACX,kBACCA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,YAAA,CAAa,KAAb,EAAA,EAAmB,IAAK,EAAA,EAAA,EAAG,KAAM,EAAA,UAAA,EAAA,kBAC/BA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAS,IAAC,EAAA,SAAA,EAAU,KAAM,EAAA,OAAA,EAAS,CACvC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EACrB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,UAAU,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA;AAAA;AAAA,GAEtD,mBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,EACpB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,UAAU,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MAClD;AAAA;AAAA,GAEJ,mBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,EACpB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,iBAAiB,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,aAAa,IAAI,QAAQ,CAAA,CAAA;AAAA,MACzD,uBAAuB,WAAY,CAAA;AAAA;AAAA,GAEvC,CACF,CACF,CACF,CACF,CACF,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { useDeleteDialog } from '@janus-idp/shared-react';
3
3
  import Delete from '@mui/icons-material/Delete';
4
4
  import IconButton from '@mui/material/IconButton';
@@ -16,7 +16,7 @@ const DeleteRole = ({
16
16
  setDeleteComponent({ roleName: name });
17
17
  setOpenDialog(true);
18
18
  };
19
- return /* @__PURE__ */ React.createElement(Tooltip, { title: tooltip ?? "" }, /* @__PURE__ */ React.createElement(Typography, { component: "span", "data-testid": dataTestId }, /* @__PURE__ */ React.createElement(
19
+ return /* @__PURE__ */ React__default.createElement(Tooltip, { title: tooltip ?? "" }, /* @__PURE__ */ React__default.createElement(Typography, { component: "span", "data-testid": dataTestId }, /* @__PURE__ */ React__default.createElement(
20
20
  IconButton,
21
21
  {
22
22
  onClick: () => openDialog(roleName),
@@ -26,7 +26,7 @@ const DeleteRole = ({
26
26
  style: { padding: "0.5rem", borderRadius: "50%" },
27
27
  sx: { "&:hover": { borderRadius: "50%" } }
28
28
  },
29
- /* @__PURE__ */ React.createElement(Delete, null)
29
+ /* @__PURE__ */ React__default.createElement(Delete, null)
30
30
  )));
31
31
  };
32
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteRole.esm.js","sources":["../../../src/components/RolesList/DeleteRole.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';\n\nimport { useDeleteDialog } from '@janus-idp/shared-react';\nimport Delete from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\ntype DeleteRoleProps = {\n roleName: string;\n disable: boolean;\n tooltip?: string;\n dataTestId: string;\n};\n\nconst DeleteRole = ({\n roleName,\n tooltip,\n disable,\n dataTestId,\n}: DeleteRoleProps) => {\n const { setDeleteComponent, setOpenDialog } = useDeleteDialog();\n\n const openDialog = (name: string) => {\n setDeleteComponent({ roleName: name });\n setOpenDialog(true);\n };\n\n return (\n <Tooltip title={tooltip ?? ''}>\n <Typography component=\"span\" data-testid={dataTestId}>\n <IconButton\n onClick={() => openDialog(roleName)}\n aria-label=\"Delete\"\n disabled={disable}\n title={tooltip ?? 'Delete Role'}\n style={{ padding: '0.5rem', borderRadius: '50%' }}\n sx={{ '&:hover': { borderRadius: '50%' } }}\n >\n <Delete />\n </IconButton>\n </Typography>\n </Tooltip>\n );\n};\nexport default DeleteRole;\n"],"names":[],"mappings":";;;;;;;AA8BA,MAAM,aAAa,CAAC;AAAA,EAClB,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,EAAE,kBAAA,EAAoB,aAAc,EAAA,GAAI,eAAgB,EAAA;AAE9D,EAAM,MAAA,UAAA,GAAa,CAAC,IAAiB,KAAA;AACnC,IAAmB,kBAAA,CAAA,EAAE,QAAU,EAAA,IAAA,EAAM,CAAA;AACrC,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,GACpB;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,KAAA,EAAO,OAAW,IAAA,EAAA,EAAA,sCACxB,UAAW,EAAA,EAAA,SAAA,EAAU,MAAO,EAAA,aAAA,EAAa,UACxC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,MAAM,UAAA,CAAW,QAAQ,CAAA;AAAA,MAClC,YAAW,EAAA,QAAA;AAAA,MACX,QAAU,EAAA,OAAA;AAAA,MACV,OAAO,OAAW,IAAA,aAAA;AAAA,MAClB,KAAO,EAAA,EAAE,OAAS,EAAA,QAAA,EAAU,cAAc,KAAM,EAAA;AAAA,MAChD,IAAI,EAAE,SAAA,EAAW,EAAE,YAAA,EAAc,OAAQ;AAAA,KAAA;AAAA,wCAExC,MAAO,EAAA,IAAA;AAAA,GAEZ,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteRole.esm.js","sources":["../../../src/components/RolesList/DeleteRole.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';\n\nimport { useDeleteDialog } from '@janus-idp/shared-react';\nimport Delete from '@mui/icons-material/Delete';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\ntype DeleteRoleProps = {\n roleName: string;\n disable: boolean;\n tooltip?: string;\n dataTestId: string;\n};\n\nconst DeleteRole = ({\n roleName,\n tooltip,\n disable,\n dataTestId,\n}: DeleteRoleProps) => {\n const { setDeleteComponent, setOpenDialog } = useDeleteDialog();\n\n const openDialog = (name: string) => {\n setDeleteComponent({ roleName: name });\n setOpenDialog(true);\n };\n\n return (\n <Tooltip title={tooltip ?? ''}>\n <Typography component=\"span\" data-testid={dataTestId}>\n <IconButton\n onClick={() => openDialog(roleName)}\n aria-label=\"Delete\"\n disabled={disable}\n title={tooltip ?? 'Delete Role'}\n style={{ padding: '0.5rem', borderRadius: '50%' }}\n sx={{ '&:hover': { borderRadius: '50%' } }}\n >\n <Delete />\n </IconButton>\n </Typography>\n </Tooltip>\n );\n};\nexport default DeleteRole;\n"],"names":["React"],"mappings":";;;;;;;AA8BA,MAAM,aAAa,CAAC;AAAA,EAClB,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,EAAE,kBAAA,EAAoB,aAAc,EAAA,GAAI,eAAgB,EAAA;AAE9D,EAAM,MAAA,UAAA,GAAa,CAAC,IAAiB,KAAA;AACnC,IAAmB,kBAAA,CAAA,EAAE,QAAU,EAAA,IAAA,EAAM,CAAA;AACrC,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,GACpB;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,KAAA,EAAO,OAAW,IAAA,EAAA,EAAA,+CACxB,UAAW,EAAA,EAAA,SAAA,EAAU,MAAO,EAAA,aAAA,EAAa,UACxC,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,MAAM,UAAA,CAAW,QAAQ,CAAA;AAAA,MAClC,YAAW,EAAA,QAAA;AAAA,MACX,QAAU,EAAA,OAAA;AAAA,MACV,OAAO,OAAW,IAAA,aAAA;AAAA,MAClB,KAAO,EAAA,EAAE,OAAS,EAAA,QAAA,EAAU,cAAc,KAAM,EAAA;AAAA,MAChD,IAAI,EAAE,SAAA,EAAW,EAAE,YAAA,EAAc,OAAQ;AAAA,KAAA;AAAA,iDAExC,MAAO,EAAA,IAAA;AAAA,GAEZ,CACF,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { useApi } from '@backstage/core-plugin-api';
3
3
  import CloseIcon from '@mui/icons-material/Close';
4
4
  import ErrorIcon from '@mui/icons-material/Error';
@@ -24,9 +24,9 @@ const DeleteRoleDialog = ({
24
24
  propOptions
25
25
  }) => {
26
26
  const { setToastMessage } = useToast();
27
- const [deleteRoleValue, setDeleteRoleValue] = React.useState();
28
- const [disableDelete, setDisableDelete] = React.useState(false);
29
- const [error, setError] = React.useState("");
27
+ const [deleteRoleValue, setDeleteRoleValue] = React__default.useState();
28
+ const [disableDelete, setDisableDelete] = React__default.useState(false);
29
+ const [error, setError] = React__default.useState("");
30
30
  const rbacApi = useApi(rbacApiRef);
31
31
  const dialogBackgroundColor = (theme) => theme.palette.mode === "dark" ? "#1b1d21" : "#fff";
32
32
  const deleteRole = async () => {
@@ -64,7 +64,7 @@ const DeleteRoleDialog = ({
64
64
  setDisableDelete(true);
65
65
  }
66
66
  };
67
- return /* @__PURE__ */ React.createElement(Dialog, { maxWidth: "md", open, onClose: closeDialog }, /* @__PURE__ */ React.createElement(
67
+ return /* @__PURE__ */ React__default.createElement(Dialog, { maxWidth: "md", open, onClose: closeDialog }, /* @__PURE__ */ React__default.createElement(
68
68
  DialogTitle,
69
69
  {
70
70
  id: "delete-role",
@@ -74,7 +74,7 @@ const DeleteRoleDialog = ({
74
74
  backgroundColor: dialogBackgroundColor
75
75
  }
76
76
  },
77
- /* @__PURE__ */ React.createElement(
77
+ /* @__PURE__ */ React__default.createElement(
78
78
  Box,
79
79
  {
80
80
  sx: {
@@ -84,7 +84,7 @@ const DeleteRoleDialog = ({
84
84
  gap: (theme) => theme.spacing(1)
85
85
  }
86
86
  },
87
- /* @__PURE__ */ React.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, /* @__PURE__ */ React.createElement(
87
+ /* @__PURE__ */ React__default.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, /* @__PURE__ */ React__default.createElement(
88
88
  ErrorIcon,
89
89
  {
90
90
  style: {
@@ -97,7 +97,7 @@ const DeleteRoleDialog = ({
97
97
  fontSize: "small"
98
98
  }
99
99
  ), " ", "Delete this role?"),
100
- /* @__PURE__ */ React.createElement(
100
+ /* @__PURE__ */ React__default.createElement(
101
101
  IconButton,
102
102
  {
103
103
  "aria-label": "close",
@@ -109,19 +109,19 @@ const DeleteRoleDialog = ({
109
109
  },
110
110
  onClick: closeDialog
111
111
  },
112
- /* @__PURE__ */ React.createElement(CloseIcon, null)
112
+ /* @__PURE__ */ React__default.createElement(CloseIcon, null)
113
113
  )
114
114
  )
115
- ), /* @__PURE__ */ React.createElement(DialogContent, { sx: { backgroundColor: dialogBackgroundColor } }, "Are you sure you want to delete the role", " ", /* @__PURE__ */ React.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, roleName), " ", "?", /* @__PURE__ */ React.createElement("br", null), /* @__PURE__ */ React.createElement("br", null), "Deleting this role is irreversible and will remove its functionality from the system. Proceed with caution.", /* @__PURE__ */ React.createElement("br", null), /* @__PURE__ */ React.createElement("br", null), "The", " ", /* @__PURE__ */ React.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, `${getMembers(
115
+ ), /* @__PURE__ */ React__default.createElement(DialogContent, { sx: { backgroundColor: dialogBackgroundColor } }, "Are you sure you want to delete the role", " ", /* @__PURE__ */ React__default.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, roleName), " ", "?", /* @__PURE__ */ React__default.createElement("br", null), /* @__PURE__ */ React__default.createElement("br", null), "Deleting this role is irreversible and will remove its functionality from the system. Proceed with caution.", /* @__PURE__ */ React__default.createElement("br", null), /* @__PURE__ */ React__default.createElement("br", null), "The", " ", /* @__PURE__ */ React__default.createElement(Typography, { component: "span", sx: { fontWeight: "bold" } }, `${getMembers(
116
116
  propOptions.memberRefs
117
- ).toLocaleLowerCase("en-US")}`), " ", "associated with this role will lose access to all the", " ", /* @__PURE__ */ React.createElement(
117
+ ).toLocaleLowerCase("en-US")}`), " ", "associated with this role will lose access to all the", " ", /* @__PURE__ */ React__default.createElement(
118
118
  Typography,
119
119
  {
120
120
  component: "span",
121
121
  sx: { fontWeight: "bold" }
122
122
  },
123
123
  `${propOptions.permissions} permission policies`
124
- ), " ", "specified in this role.", /* @__PURE__ */ React.createElement("br", null), /* @__PURE__ */ React.createElement(
124
+ ), " ", "specified in this role.", /* @__PURE__ */ React__default.createElement("br", null), /* @__PURE__ */ React__default.createElement(
125
125
  TextField,
126
126
  {
127
127
  name: "delete-role",
@@ -138,7 +138,7 @@ const DeleteRoleDialog = ({
138
138
  onChange: ({ target: { value } }) => onTextInput(value),
139
139
  onBlur: ({ target: { value } }) => onTextInput(value)
140
140
  }
141
- )), error && /* @__PURE__ */ React.createElement(Box, { maxWidth: "650px", marginLeft: "20px" }, /* @__PURE__ */ React.createElement(Alert, { severity: "error" }, error)), /* @__PURE__ */ React.createElement(
141
+ )), error && /* @__PURE__ */ React__default.createElement(Box, { maxWidth: "650px", marginLeft: "20px" }, /* @__PURE__ */ React__default.createElement(Alert, { severity: "error" }, error)), /* @__PURE__ */ React__default.createElement(
142
142
  DialogActions,
143
143
  {
144
144
  sx: {
@@ -149,7 +149,7 @@ const DeleteRoleDialog = ({
149
149
  backgroundColor: dialogBackgroundColor
150
150
  }
151
151
  },
152
- /* @__PURE__ */ React.createElement(
152
+ /* @__PURE__ */ React__default.createElement(
153
153
  Button,
154
154
  {
155
155
  variant: "contained",
@@ -159,7 +159,7 @@ const DeleteRoleDialog = ({
159
159
  },
160
160
  "Delete"
161
161
  ),
162
- /* @__PURE__ */ React.createElement(Button, { variant: "outlined", onClick: closeDialog }, "Cancel")
162
+ /* @__PURE__ */ React__default.createElement(Button, { variant: "outlined", onClick: closeDialog }, "Cancel")
163
163
  ));
164
164
  };
165
165