@strapi/plugin-users-permissions 5.33.4 → 5.34.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 (26) hide show
  1. package/admin/src/pages/AdvancedSettings/index.jsx +1 -0
  2. package/admin/src/pages/Roles/pages/CreatePage.jsx +6 -1
  3. package/admin/src/pages/Roles/pages/EditPage.jsx +1 -0
  4. package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -0
  5. package/admin/src/translations/de.json +27 -2
  6. package/dist/admin/pages/AdvancedSettings/index.js +1 -0
  7. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
  8. package/dist/admin/pages/AdvancedSettings/index.mjs +1 -0
  9. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
  10. package/dist/admin/pages/Roles/pages/CreatePage.js +1 -0
  11. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  12. package/dist/admin/pages/Roles/pages/CreatePage.mjs +1 -0
  13. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
  14. package/dist/admin/pages/Roles/pages/EditPage.js +1 -0
  15. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  16. package/dist/admin/pages/Roles/pages/EditPage.mjs +1 -0
  17. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  18. package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -0
  19. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  20. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -0
  21. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  22. package/dist/admin/translations/de.json.js +27 -2
  23. package/dist/admin/translations/de.json.js.map +1 -1
  24. package/dist/admin/translations/de.json.mjs +27 -2
  25. package/dist/admin/translations/de.json.mjs.map +1 -1
  26. package/package.json +4 -4
@@ -135,6 +135,7 @@ const AdvancedSettingsPage = () => {
135
135
  disabled={!modified || !canUpdate}
136
136
  startIcon={<Check />}
137
137
  size="S"
138
+ fullWidth
138
139
  >
139
140
  {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
140
141
  </Button>
@@ -93,7 +93,12 @@ export const CreatePage = () => {
93
93
  <Layouts.Header
94
94
  primaryAction={
95
95
  !isLoadingPlugins && (
96
- <Button type="submit" loading={mutation.isLoading} startIcon={<Check />}>
96
+ <Button
97
+ type="submit"
98
+ loading={mutation.isLoading}
99
+ startIcon={<Check />}
100
+ fullWidth
101
+ >
97
102
  {formatMessage({
98
103
  id: 'global.save',
99
104
  defaultMessage: 'Save',
@@ -109,6 +109,7 @@ export const EditPage = () => {
109
109
  type="submit"
110
110
  loading={mutation.isLoading}
111
111
  startIcon={<Check />}
112
+ fullWidth
112
113
  >
113
114
  {formatMessage({
114
115
  id: 'global.save',
@@ -177,6 +177,7 @@ export const RolesListPage = () => {
177
177
  onClick={() => trackUsage('willCreateRole')}
178
178
  startIcon={<Plus />}
179
179
  size="S"
180
+ fullWidth
180
181
  >
181
182
  {formatMessage({
182
183
  id: getTrad('List.button.roles'),
@@ -4,15 +4,25 @@
4
4
  "EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
5
5
  "EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
6
6
  "EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
7
- "EditForm.inputToggle.description.email-confirmation-redirection": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.",
8
- "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
8
+ "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
9
9
  "EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
10
10
  "EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
11
11
  "EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
12
12
  "EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
13
13
  "EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
14
14
  "EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
17
+ "EditPage.form.roles": "Rollen-Details",
18
+ "Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
15
19
  "Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
20
+ "Email.template.reset_password": "Passwort zurücksetzen",
21
+ "Email.template.form.edit.label": "Vorlage bearbeiten",
22
+ "Email.template.table.action.label": "Aktion",
23
+ "Email.template.table.icon.label": "Icon",
24
+ "Email.template.table.name.label": "Name",
25
+ "Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
16
26
  "HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
17
27
  "HeaderNav.link.emailTemplates": "E-Mail-Templates",
18
28
  "HeaderNav.link.providers": "Methoden",
@@ -44,10 +54,25 @@
44
54
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
45
55
  "PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
46
56
  "PopUpForm.header.edit.providers": "Anbieter bearbeiten",
57
+ "Providers.data.loaded": "Anbieter wurden geladen",
58
+ "Providers.status": "Status",
59
+ "Roles.empty": "Du hast noch keine Rollen.",
60
+ "Roles.empty.search": "Keine Rollen entsprechen der Suche.",
47
61
  "Settings.roles.deleted": "Rolle gelöscht",
48
62
  "Settings.roles.edited": "Rolle bearbeitet",
49
63
  "Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
64
+ "components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
65
+ "components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
66
+ "components.Input.error.validation.max": "Der Wert ist zu hoch.",
67
+ "components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
68
+ "components.Input.error.validation.min": "Der Wert ist zu niedrig.",
69
+ "components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
70
+ "components.Input.error.validation.minSupMax": "Kann nicht größer sein",
71
+ "components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
72
+ "components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
73
+ "components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
50
74
  "notification.success.submit": "Einstellungen aktualisiert",
75
+ "page.title": "Einstellungen - Rollen",
51
76
  "plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
52
77
  "plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
53
78
  "plugin.name": "Nutzer- & Berechtigungen-Plugin",
@@ -115,6 +115,7 @@ const AdvancedSettingsPage = ()=>{
115
115
  disabled: !modified || !canUpdate,
116
116
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
117
117
  size: "S",
118
+ fullWidth: true,
118
119
  children: formatMessage({
119
120
  id: 'global.save',
120
121
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n useAPIErrorHandler,\n Page,\n Form,\n InputRenderer,\n useNotification,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </Page.Protect>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.error'),\n defaultMessage: 'An error occured',\n }),\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('notification.success.saved'),\n defaultMessage: 'Saved',\n }),\n });\n },\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n }),\n }\n )}\n </Page.Title>\n <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>\n {({ values, isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified || !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={6}>\n {[\n {\n label: {\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n },\n hint: {\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n },\n options: data.roles.map((role) => ({\n label: role.name,\n value: role.type,\n })),\n name: 'default_role',\n size: 6,\n type: 'enumeration',\n },\n ...layout,\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={\n field.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n label={formatMessage(field.label)}\n hint={field.hint ? formatMessage(field.hint) : undefined}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n </Box>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\nexport { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };\n"],"names":["ProtectedAdvancedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","readAdvancedSettings","AdvancedSettingsPage","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","queryClient","useQueryClient","get","put","useFetchClient","formatAPIError","useAPIErrorHandler","isLoading","isLoadingForPermissions","allowedActions","canUpdate","useRBAC","update","updateAdvancedSettings","isLoadingData","data","useQuery","onSuccess","id","getTrad","defaultMessage","onError","type","message","submitMutation","useMutation","body","invalidateQueries","error","refetchActive","isSubmittingForm","handleSubmit","mutate","email_confirmation_redirection","email_confirmation","Loading","_jsxs","Main","aria-busy","Title","name","Form","onSubmit","initialValues","settings","validationSchema","schema","values","isSubmitting","modified","_Fragment","Layouts","Header","title","primaryAction","Button","loading","disabled","startIcon","Check","size","Content","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","label","hint","options","roles","map","role","value","layout","field","Item","col","InputRenderer","undefined","placeholder"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n useAPIErrorHandler,\n Page,\n Form,\n InputRenderer,\n useNotification,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </Page.Protect>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.error'),\n defaultMessage: 'An error occured',\n }),\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('notification.success.saved'),\n defaultMessage: 'Saved',\n }),\n });\n },\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n }),\n }\n )}\n </Page.Title>\n <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>\n {({ values, isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified || !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={6}>\n {[\n {\n label: {\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n },\n hint: {\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n },\n options: data.roles.map((role) => ({\n label: role.name,\n value: role.type,\n })),\n name: 'default_role',\n size: 6,\n type: 'enumeration',\n },\n ...layout,\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={\n field.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n label={formatMessage(field.label)}\n hint={field.hint ? formatMessage(field.hint) : undefined}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n </Box>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\nexport { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };\n"],"names":["ProtectedAdvancedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","readAdvancedSettings","AdvancedSettingsPage","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","queryClient","useQueryClient","get","put","useFetchClient","formatAPIError","useAPIErrorHandler","isLoading","isLoadingForPermissions","allowedActions","canUpdate","useRBAC","update","updateAdvancedSettings","isLoadingData","data","useQuery","onSuccess","id","getTrad","defaultMessage","onError","type","message","submitMutation","useMutation","body","invalidateQueries","error","refetchActive","isSubmittingForm","handleSubmit","mutate","email_confirmation_redirection","email_confirmation","Loading","_jsxs","Main","aria-busy","Title","name","Form","onSubmit","initialValues","settings","validationSchema","schema","values","isSubmitting","modified","_Fragment","Layouts","Header","title","primaryAction","Button","loading","disabled","startIcon","Check","size","fullWidth","Content","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","label","hint","options","roles","map","role","value","layout","field","Item","col","InputRenderer","undefined","placeholder"],"mappings":"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"}
@@ -113,6 +113,7 @@ const AdvancedSettingsPage = ()=>{
113
113
  disabled: !modified || !canUpdate,
114
114
  startIcon: /*#__PURE__*/ jsx(Check, {}),
115
115
  size: "S",
116
+ fullWidth: true,
116
117
  children: formatMessage({
117
118
  id: 'global.save',
118
119
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n useAPIErrorHandler,\n Page,\n Form,\n InputRenderer,\n useNotification,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </Page.Protect>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.error'),\n defaultMessage: 'An error occured',\n }),\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('notification.success.saved'),\n defaultMessage: 'Saved',\n }),\n });\n },\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n }),\n }\n )}\n </Page.Title>\n <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>\n {({ values, isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified || !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={6}>\n {[\n {\n label: {\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n },\n hint: {\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n },\n options: data.roles.map((role) => ({\n label: role.name,\n value: role.type,\n })),\n name: 'default_role',\n size: 6,\n type: 'enumeration',\n },\n ...layout,\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={\n field.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n label={formatMessage(field.label)}\n hint={field.hint ? formatMessage(field.hint) : undefined}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n </Box>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\nexport { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };\n"],"names":["ProtectedAdvancedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","readAdvancedSettings","AdvancedSettingsPage","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","queryClient","useQueryClient","get","put","useFetchClient","formatAPIError","useAPIErrorHandler","isLoading","isLoadingForPermissions","allowedActions","canUpdate","useRBAC","update","updateAdvancedSettings","isLoadingData","data","useQuery","onSuccess","id","getTrad","defaultMessage","onError","type","message","submitMutation","useMutation","body","invalidateQueries","error","refetchActive","isSubmittingForm","handleSubmit","mutate","email_confirmation_redirection","email_confirmation","Loading","_jsxs","Main","aria-busy","Title","name","Form","onSubmit","initialValues","settings","validationSchema","schema","values","isSubmitting","modified","_Fragment","Layouts","Header","title","primaryAction","Button","loading","disabled","startIcon","Check","size","Content","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","label","hint","options","roles","map","role","value","layout","field","Item","col","InputRenderer","undefined","placeholder"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n useAPIErrorHandler,\n Page,\n Form,\n InputRenderer,\n useNotification,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </Page.Protect>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.error'),\n defaultMessage: 'An error occured',\n }),\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('notification.success.saved'),\n defaultMessage: 'Saved',\n }),\n });\n },\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n }),\n }\n )}\n </Page.Title>\n <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>\n {({ values, isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified || !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={6}>\n {[\n {\n label: {\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n },\n hint: {\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n },\n options: data.roles.map((role) => ({\n label: role.name,\n value: role.type,\n })),\n name: 'default_role',\n size: 6,\n type: 'enumeration',\n },\n ...layout,\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={\n field.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n label={formatMessage(field.label)}\n hint={field.hint ? formatMessage(field.hint) : undefined}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n </Box>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\nexport { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };\n"],"names":["ProtectedAdvancedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","readAdvancedSettings","AdvancedSettingsPage","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","queryClient","useQueryClient","get","put","useFetchClient","formatAPIError","useAPIErrorHandler","isLoading","isLoadingForPermissions","allowedActions","canUpdate","useRBAC","update","updateAdvancedSettings","isLoadingData","data","useQuery","onSuccess","id","getTrad","defaultMessage","onError","type","message","submitMutation","useMutation","body","invalidateQueries","error","refetchActive","isSubmittingForm","handleSubmit","mutate","email_confirmation_redirection","email_confirmation","Loading","_jsxs","Main","aria-busy","Title","name","Form","onSubmit","initialValues","settings","validationSchema","schema","values","isSubmitting","modified","_Fragment","Layouts","Header","title","primaryAction","Button","loading","disabled","startIcon","Check","size","fullWidth","Content","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","label","hint","options","roles","map","role","value","layout","field","Item","col","InputRenderer","undefined","placeholder"],"mappings":"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"}
@@ -103,6 +103,7 @@ const CreatePage = ()=>{
103
103
  type: "submit",
104
104
  loading: mutation.isLoading,
105
105
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
106
+ fullWidth: true,
106
107
  children: formatMessage({
107
108
  id: 'global.save',
108
109
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage.js","sources":["../../../../../admin/src/pages/Roles/pages/CreatePage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n useTracking,\n useNotification,\n useFetchClient,\n Layouts,\n BackButton,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useNavigate } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const CreatePage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();\n const { trackUsage } = useTracking();\n const permissionsRef = React.useRef();\n const { post } = useFetchClient();\n const mutation = useMutation((body) => post(`/users-permissions/roles`, body), {\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n },\n\n onSuccess() {\n trackUsage('didCreateRole');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role created',\n }),\n });\n\n // Forcing redirecting since we don't have the id in the response\n navigate(-1);\n },\n });\n\n const handleCreateRoleSubmit = async (data) => {\n // TODO: refactor. Child -> parent component communication is evil;\n // We should either move the provider one level up or move the state\n // straight into redux.\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: '', description: '' }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins && (\n <Button type=\"submit\" loading={mutation.isLoading} startIcon={<Check />}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({ id: errors.name, defaultMessage: 'Name is required' })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesCreatePage = () => (\n <Page.Protect permissions={PERMISSIONS.createRole}>\n <CreatePage />\n </Page.Protect>\n);\n"],"names":["CreatePage","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","isLoading","isLoadingPlugins","permissions","routes","usePlugins","trackUsage","useTracking","permissionsRef","React","useRef","post","useFetchClient","mutation","useMutation","body","onError","type","message","id","defaultMessage","onSuccess","getTrad","handleCreateRoleSubmit","data","current","getPermissions","mutate","users","_jsxs","Page","Main","_jsx","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","error","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesCreatePage","Protect","PERMISSIONS","createRole"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage.js","sources":["../../../../../admin/src/pages/Roles/pages/CreatePage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n useTracking,\n useNotification,\n useFetchClient,\n Layouts,\n BackButton,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useNavigate } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const CreatePage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();\n const { trackUsage } = useTracking();\n const permissionsRef = React.useRef();\n const { post } = useFetchClient();\n const mutation = useMutation((body) => post(`/users-permissions/roles`, body), {\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n },\n\n onSuccess() {\n trackUsage('didCreateRole');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role created',\n }),\n });\n\n // Forcing redirecting since we don't have the id in the response\n navigate(-1);\n },\n });\n\n const handleCreateRoleSubmit = async (data) => {\n // TODO: refactor. Child -> parent component communication is evil;\n // We should either move the provider one level up or move the state\n // straight into redux.\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: '', description: '' }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins && (\n <Button\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({ id: errors.name, defaultMessage: 'Name is required' })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesCreatePage = () => (\n <Page.Protect permissions={PERMISSIONS.createRole}>\n <CreatePage />\n </Page.Protect>\n);\n"],"names":["CreatePage","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","isLoading","isLoadingPlugins","permissions","routes","usePlugins","trackUsage","useTracking","permissionsRef","React","useRef","post","useFetchClient","mutation","useMutation","body","onError","type","message","id","defaultMessage","onSuccess","getTrad","handleCreateRoleSubmit","data","current","getPermissions","mutate","users","_jsxs","Page","Main","_jsx","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","error","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesCreatePage","Protect","PERMISSIONS","createRole"],"mappings":"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"}
@@ -82,6 +82,7 @@ const CreatePage = ()=>{
82
82
  type: "submit",
83
83
  loading: mutation.isLoading,
84
84
  startIcon: /*#__PURE__*/ jsx(Check, {}),
85
+ fullWidth: true,
85
86
  children: formatMessage({
86
87
  id: 'global.save',
87
88
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/CreatePage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n useTracking,\n useNotification,\n useFetchClient,\n Layouts,\n BackButton,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useNavigate } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const CreatePage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();\n const { trackUsage } = useTracking();\n const permissionsRef = React.useRef();\n const { post } = useFetchClient();\n const mutation = useMutation((body) => post(`/users-permissions/roles`, body), {\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n },\n\n onSuccess() {\n trackUsage('didCreateRole');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role created',\n }),\n });\n\n // Forcing redirecting since we don't have the id in the response\n navigate(-1);\n },\n });\n\n const handleCreateRoleSubmit = async (data) => {\n // TODO: refactor. Child -> parent component communication is evil;\n // We should either move the provider one level up or move the state\n // straight into redux.\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: '', description: '' }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins && (\n <Button type=\"submit\" loading={mutation.isLoading} startIcon={<Check />}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({ id: errors.name, defaultMessage: 'Name is required' })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesCreatePage = () => (\n <Page.Protect permissions={PERMISSIONS.createRole}>\n <CreatePage />\n </Page.Protect>\n);\n"],"names":["CreatePage","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","isLoading","isLoadingPlugins","permissions","routes","usePlugins","trackUsage","useTracking","permissionsRef","React","useRef","post","useFetchClient","mutation","useMutation","body","onError","type","message","id","defaultMessage","onSuccess","getTrad","handleCreateRoleSubmit","data","current","getPermissions","mutate","users","_jsxs","Page","Main","_jsx","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","error","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesCreatePage","Protect","PERMISSIONS","createRole"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/CreatePage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n useTracking,\n useNotification,\n useFetchClient,\n Layouts,\n BackButton,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useNavigate } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const CreatePage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();\n const { trackUsage } = useTracking();\n const permissionsRef = React.useRef();\n const { post } = useFetchClient();\n const mutation = useMutation((body) => post(`/users-permissions/roles`, body), {\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n },\n\n onSuccess() {\n trackUsage('didCreateRole');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role created',\n }),\n });\n\n // Forcing redirecting since we don't have the id in the response\n navigate(-1);\n },\n });\n\n const handleCreateRoleSubmit = async (data) => {\n // TODO: refactor. Child -> parent component communication is evil;\n // We should either move the provider one level up or move the state\n // straight into redux.\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: '', description: '' }}\n onSubmit={handleCreateRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins && (\n <Button\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n )\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({ id: errors.name, defaultMessage: 'Name is required' })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesCreatePage = () => (\n <Page.Protect permissions={PERMISSIONS.createRole}>\n <CreatePage />\n </Page.Protect>\n);\n"],"names":["CreatePage","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","isLoading","isLoadingPlugins","permissions","routes","usePlugins","trackUsage","useTracking","permissionsRef","React","useRef","post","useFetchClient","mutation","useMutation","body","onError","type","message","id","defaultMessage","onSuccess","getTrad","handleCreateRoleSubmit","data","current","getPermissions","mutate","users","_jsxs","Page","Main","_jsx","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","error","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesCreatePage","Protect","PERMISSIONS","createRole"],"mappings":"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"}
@@ -109,6 +109,7 @@ const EditPage = ()=>{
109
109
  type: "submit",
110
110
  loading: mutation.isLoading,
111
111
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
112
+ fullWidth: true,
112
113
  children: formatMessage({
113
114
  id: 'global.save',
114
115
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage.js","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage.js","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
@@ -88,6 +88,7 @@ const EditPage = ()=>{
88
88
  type: "submit",
89
89
  loading: mutation.isLoading,
90
90
  startIcon: /*#__PURE__*/ jsx(Check, {}),
91
+ fullWidth: true,
91
92
  children: formatMessage({
92
93
  id: 'global.save',
93
94
  defaultMessage: 'Save'
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
@@ -129,6 +129,7 @@ const RolesListPage = ()=>{
129
129
  onClick: ()=>trackUsage('willCreateRole'),
130
130
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
131
131
  size: "S",
132
+ fullWidth: true,
132
133
  children: formatMessage({
133
134
  id: getTrad('List.button.roles'),
134
135
  defaultMessage: 'Add new role'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":";;;;;;;;;;;;;;;MAqCaA,aAAgB,GAAA,IAAA;IAC3B,MAAM,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;IAClC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,qBAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,wBAAAA,EAAAA;AACzB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,oBAAAA,EAAAA;IACpB,MAAMC,EAAAA,GAAKF,OAAOE,EAAM,IAAA,EAAA;AACxB,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAGC,cAAS,CAAA,KAAA,CAAA;IAC3D,MAAM,CAACC,YAAcC,EAAAA,eAAAA,CAAgB,GAAGF,cAAAA,EAAAA;AACxC,IAAA,MAAM,EAAEG,GAAG,EAAEC,GAAG,EAAE,GAAGC,oBAAAA,EAAAA;AAErB,IAAA,MAAM,EACJC,SAAWC,EAAAA,uBAAuB,EAClCC,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,aAAQ,CAAA;AACVC,QAAAA,MAAAA,EAAQC,sBAAYC,UAAU;AAC9BC,QAAAA,IAAAA,EAAMF,sBAAYG,SAAS;AAC3BC,QAAAA,MAAAA,EAAQJ,sBAAYK,UAAU;AAC9BC,QAAAA,MAAAA,EAAQN,sBAAYO;AACtB,KAAA,CAAA;IAEA,MAAM,EACJhB,WAAWiB,gBAAgB,EAC3BC,MAAM,EAAEC,KAAK,EAAE,EACfC,UAAU,EACVC,OAAO,EACR,GAAGC,mBAAS,CAAA,WAAA,EAAa,IAAMC,SAAUtC,CAAAA,kBAAAA,EAAoBH,eAAeK,YAAe,CAAA,EAAA;AAC1FqC,QAAAA,WAAAA,EAAa,EAAC;QACdC,OAAStB,EAAAA;AACX,KAAA,CAAA;AAEA,IAAA,MAAM,EAAEuB,QAAQ,EAAE,GAAGC,uBAAU5C,MAAQ,EAAA;QACrC6C,WAAa,EAAA;AACf,KAAA,CAAA;AAEA;;MAGA,MAAMC,SAAYC,GAAAA,wBAAAA,CAAY/C,MAAQ,EAAA;QACpC6C,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAM5B,SAAAA,GAAYiB,oBAAoBG,UAAcnB,IAAAA,uBAAAA;AAEpD,IAAA,MAAM8B,uBAA0B,GAAA,IAAA;AAC9BtC,QAAAA,oBAAAA,CAAqB,CAACD,iBAAAA,CAAAA;AACxB,KAAA;IAEA,MAAMwC,UAAAA,GAAa,OAAOC,EAAAA,EAAInD,aAAeG,EAAAA,kBAAAA,GAAAA;QAC3C,IAAI;AACF,YAAA,MAAMY,GAAI,CAAA,CAAC,yBAAyB,EAAEoC,EAAI,CAAA,CAAA,CAAA;AAC5C,SAAA,CAAE,OAAOC,KAAO,EAAA;YACdjD,kBAAmB,CAAA;gBACjBkD,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStD,aAAc,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;AAAmB,iBAAA;AACxF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAMd,SAAAA,GAAY,OAAOtC,kBAAAA,EAAoBH,aAAeK,EAAAA,YAAAA,GAAAA;QAC1D,IAAI;AACF,YAAA,MAAM,EAAE+B,IAAI,EAAE,GAAG,MAAMpB,GAAI,CAAA,0BAAA,CAAA;YAC3BX,YAAa,CAAA,oCAAA,CAAA;YAEb,OAAO+B,IAAAA;AACT,SAAA,CAAE,OAAOoB,GAAK,EAAA;YACZrD,kBAAmB,CAAA;gBACjBkD,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStD,aAAc,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AAEA,YAAA,MAAM,IAAIE,KAAMD,CAAAA,GAAAA,CAAAA;AAClB;AACF,KAAA;AAEA,IAAA,MAAME,WAAc,GAAA;QAClBrB,KAAO,EAAA;AACLc,YAAAA,EAAAA,EAAIQ,OAAQ,CAAA,aAAA,CAAA;YACZJ,cAAgB,EAAA;AAClB,SAAA;QACAK,MAAQ,EAAA;AACNT,YAAAA,EAAAA,EAAIQ,OAAQ,CAAA,oBAAA,CAAA;YACZJ,cAAgB,EAAA;AAClB;AACF,KAAA;AAEA,IAAA,MAAMM,YAAY7D,aAAc,CAAA;QAC9BmD,EAAI,EAAA,cAAA;QACJI,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMO,iBAAiBC,sBAAY,CAAA,CAACZ,KAAOD,UAAWC,CAAAA,EAAAA,EAAInD,eAAeG,kBAAqB,CAAA,EAAA;QAC5F,MAAM6D,SAAAA,CAAAA,GAAAA;YACJ,MAAMzB,OAAAA,EAAAA;AACR;AACF,KAAA,CAAA;AAEA,IAAA,MAAM0B,mBAAsB,GAAA,UAAA;QAC1B,MAAMH,cAAAA,CAAeI,WAAW,CAACrD,YAAAA,CAAAA;AACjCF,QAAAA,oBAAAA,CAAqB,CAACD,iBAAAA,CAAAA;AACxB,KAAA;AAEA,IAAA,MAAMyD,cAAc,CAAC9B,SAAS,EAAC,EAC5B+B,MAAM,CAAC,CAACC,IAASzB,GAAAA,QAAAA,CAASyB,KAAKC,IAAI,EAAE7D,OAAOmC,QAASyB,CAAAA,IAAAA,CAAKE,WAAW,EAAE9D,EAAAA,CAAAA,CAAAA,CACvE+D,IAAI,CACH,CAACC,CAAGC,EAAAA,CAAAA,GAAM3B,UAAU4B,OAAO,CAACF,EAAEH,IAAI,EAAEI,EAAEJ,IAAI,CAAA,IAAKvB,UAAU4B,OAAO,CAACF,EAAEF,WAAW,EAAEG,EAAEH,WAAW,CAAA,CAAA;AAGjG,IAAA,MAAMK,eAAenE,EAAM,IAAA,CAAC0D,WAAYU,CAAAA,MAAM,GAAG,QAAW,GAAA,OAAA;AAE5D,IAAA,MAAMC,QAAW,GAAA,CAAA;AACjB,IAAA,MAAMC,WAAW,CAAC1C,KAAOwC,EAAAA,MAAAA,IAAU,CAAA,IAAK,CAAA;AAExC,IAAA,IAAI3D,SAAW,EAAA;QACb,qBAAO8D,cAAA,CAACC,WAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,qBACEC,eAAA,CAACF,WAAKG,IAAI,EAAA;;AACR,0BAAAJ,cAAA,CAACC,WAAKI,KAAK,EAAA;0BACRrF,aACC,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;iBAC5C,EAAA;oBAAEe,IAAMT,EAAAA;AAAU,iBAAA;;AAGtB,0BAAAmB,cAAA,CAACM,cAAQC,MAAM,EAAA;AACbC,gBAAAA,KAAAA,EAAOxF,aAAc,CAAA;oBACnBmD,EAAI,EAAA,cAAA;oBACJI,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAkC,gBAAAA,QAAAA,EAAUzF,aAAc,CAAA;oBACtBmD,EAAI,EAAA,iCAAA;oBACJI,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAmC,gBAAAA,aAAAA,EACEnE,0BACEyD,cAACW,CAAAA,uBAAAA,EAAAA;oBACCC,EAAG,EAAA,KAAA;oBACHC,GAAKC,EAAAA,sBAAAA;AACLC,oBAAAA,OAAAA,EAAS,IAAMjG,UAAW,CAAA,gBAAA,CAAA;AAC1BkG,oBAAAA,SAAAA,gBAAWhB,cAACiB,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;oBACZC,IAAK,EAAA,GAAA;oBACLC,SAAS,EAAA,IAAA;8BAERnG,aAAc,CAAA;AACbmD,wBAAAA,EAAAA,EAAIQ,OAAQ,CAAA,mBAAA,CAAA;wBACZJ,cAAgB,EAAA;AAClB,qBAAA;AAEA,iBAAA,CAAA,GAAA;;AAIR,0BAAAyB,cAAA,CAACM,cAAQc,MAAM,EAAA;AACbC,gBAAAA,YAAAA,gBACErB,cAACsB,CAAAA,iBAAAA,EAAAA;AACCC,oBAAAA,KAAAA,EAAOvG,aAAc,CAAA;wBACnBmD,EAAI,EAAA,4BAAA;wBACJI,cAAgB,EAAA;AAClB,qBAAA;;;AAKN,0BAAA4B,eAAA,CAACG,cAAQkB,OAAO,EAAA;;oBACb,CAACnF,OAAAA,kBAAW2D,cAACC,CAAAA,UAAAA,CAAKwB,aAAa,EAAA,EAAA,CAAA;oBAC/BpF,OAAW8C,IAAAA,WAAAA,IAAeA,WAAaU,EAAAA,MAAAA,iBACtCM,eAACuB,CAAAA,kBAAAA,EAAAA;wBAAM5B,QAAUA,EAAAA,QAAAA;wBAAUC,QAAUA,EAAAA,QAAAA;;0CACnCC,cAAC2B,CAAAA,kBAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAAxB,eAACyB,CAAAA,eAAAA,EAAAA;;sDACC5B,cAAC6B,CAAAA,eAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnChH,aAAc,CAAA;oDAAEmD,EAAI,EAAA,aAAA;oDAAeI,cAAgB,EAAA;AAAO,iDAAA;;;sDAG/DyB,cAAC6B,CAAAA,eAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnChH,aAAc,CAAA;oDACbmD,EAAI,EAAA,oBAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJyB,cAAC6B,CAAAA,eAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,uBAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnChH,aAAc,CAAA;oDACbmD,EAAI,EAAA,cAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJyB,cAAC6B,CAAAA,eAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA7B,cAACiC,CAAAA,2BAAAA,EAAAA;0DACEjH,aAAc,CAAA;oDACbmD,EAAI,EAAA,gBAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;;;;0CAKRyB,cAACkC,CAAAA,SAAAA,EAAAA;gCACC/C,WAAaA,EAAAA,WAAAA;gCACb7C,SAAWA,EAAAA,SAAAA;gCACXE,SAAWA,EAAAA,SAAAA;gCACX2F,WAAaxF,EAAAA,qBAAAA;gCACbb,eAAiBA,EAAAA,eAAAA;gCACjBsG,QAAU,EAAA;AAAC1G,oCAAAA,iBAAAA;AAAmBC,oCAAAA;AAAqB;;;uCAIvDqE,cAACqC,CAAAA,6BAAAA,EAAAA;wBAAiBC,OAAStH,EAAAA,aAAAA,CAAc0D,WAAW,CAACkB,YAAa,CAAA;;;;AAGtE,0BAAAI,cAAA,CAACuC,oBAAOC,IAAI,EAAA;gBAACC,IAAM/G,EAAAA,iBAAAA;gBAAmBgH,YAAczE,EAAAA,uBAAAA;AAClD,gBAAA,QAAA,gBAAA+B,cAAC2C,CAAAA,mBAAAA,EAAAA;oBAAcC,SAAW3D,EAAAA;;;;;AAIlC;MAEa4D,sBAAyB,GAAA,IAAA;IACpC,qBACE7C,cAAA,CAACC,WAAK6C,OAAO,EAAA;AAACX,QAAAA,WAAAA,EAAaxF,sBAAYoG,WAAW;AAChD,QAAA,QAAA,gBAAA/C,cAACnF,CAAAA,aAAAA,EAAAA,EAAAA;;AAGP;;;;;"}
@@ -127,6 +127,7 @@ const RolesListPage = ()=>{
127
127
  onClick: ()=>trackUsage('willCreateRole'),
128
128
  startIcon: /*#__PURE__*/ jsx(Plus, {}),
129
129
  size: "S",
130
+ fullWidth: true,
130
131
  children: formatMessage({
131
132
  id: getTrad('List.button.roles'),
132
133
  defaultMessage: 'Add new role'
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":";;;;;;;;;;;;;MAqCaA,aAAgB,GAAA,IAAA;IAC3B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;IAClC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,WAAAA,EAAAA;AACzB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IACpB,MAAMC,EAAAA,GAAKF,OAAOE,EAAM,IAAA,EAAA;AACxB,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAqB,CAAA,GAAGC,QAAS,CAAA,KAAA,CAAA;IAC3D,MAAM,CAACC,YAAcC,EAAAA,eAAAA,CAAgB,GAAGF,QAAAA,EAAAA;AACxC,IAAA,MAAM,EAAEG,GAAG,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAErB,IAAA,MAAM,EACJC,SAAWC,EAAAA,uBAAuB,EAClCC,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,OAAQ,CAAA;AACVC,QAAAA,MAAAA,EAAQC,YAAYC,UAAU;AAC9BC,QAAAA,IAAAA,EAAMF,YAAYG,SAAS;AAC3BC,QAAAA,MAAAA,EAAQJ,YAAYK,UAAU;AAC9BC,QAAAA,MAAAA,EAAQN,YAAYO;AACtB,KAAA,CAAA;IAEA,MAAM,EACJhB,WAAWiB,gBAAgB,EAC3BC,MAAM,EAAEC,KAAK,EAAE,EACfC,UAAU,EACVC,OAAO,EACR,GAAGC,QAAS,CAAA,WAAA,EAAa,IAAMC,SAAUtC,CAAAA,kBAAAA,EAAoBH,eAAeK,YAAe,CAAA,EAAA;AAC1FqC,QAAAA,WAAAA,EAAa,EAAC;QACdC,OAAStB,EAAAA;AACX,KAAA,CAAA;AAEA,IAAA,MAAM,EAAEuB,QAAQ,EAAE,GAAGC,UAAU5C,MAAQ,EAAA;QACrC6C,WAAa,EAAA;AACf,KAAA,CAAA;AAEA;;MAGA,MAAMC,SAAYC,GAAAA,WAAAA,CAAY/C,MAAQ,EAAA;QACpC6C,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAM5B,SAAAA,GAAYiB,oBAAoBG,UAAcnB,IAAAA,uBAAAA;AAEpD,IAAA,MAAM8B,uBAA0B,GAAA,IAAA;AAC9BtC,QAAAA,oBAAAA,CAAqB,CAACD,iBAAAA,CAAAA;AACxB,KAAA;IAEA,MAAMwC,UAAAA,GAAa,OAAOC,EAAAA,EAAInD,aAAeG,EAAAA,kBAAAA,GAAAA;QAC3C,IAAI;AACF,YAAA,MAAMY,GAAI,CAAA,CAAC,yBAAyB,EAAEoC,EAAI,CAAA,CAAA,CAAA;AAC5C,SAAA,CAAE,OAAOC,KAAO,EAAA;YACdjD,kBAAmB,CAAA;gBACjBkD,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStD,aAAc,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;AAAmB,iBAAA;AACxF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAMd,SAAAA,GAAY,OAAOtC,kBAAAA,EAAoBH,aAAeK,EAAAA,YAAAA,GAAAA;QAC1D,IAAI;AACF,YAAA,MAAM,EAAE+B,IAAI,EAAE,GAAG,MAAMpB,GAAI,CAAA,0BAAA,CAAA;YAC3BX,YAAa,CAAA,oCAAA,CAAA;YAEb,OAAO+B,IAAAA;AACT,SAAA,CAAE,OAAOoB,GAAK,EAAA;YACZrD,kBAAmB,CAAA;gBACjBkD,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAAStD,aAAc,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;AAAoB,iBAAA;AACzF,aAAA,CAAA;AAEA,YAAA,MAAM,IAAIE,KAAMD,CAAAA,GAAAA,CAAAA;AAClB;AACF,KAAA;AAEA,IAAA,MAAME,WAAc,GAAA;QAClBrB,KAAO,EAAA;AACLc,YAAAA,EAAAA,EAAIQ,OAAQ,CAAA,aAAA,CAAA;YACZJ,cAAgB,EAAA;AAClB,SAAA;QACAK,MAAQ,EAAA;AACNT,YAAAA,EAAAA,EAAIQ,OAAQ,CAAA,oBAAA,CAAA;YACZJ,cAAgB,EAAA;AAClB;AACF,KAAA;AAEA,IAAA,MAAMM,YAAY7D,aAAc,CAAA;QAC9BmD,EAAI,EAAA,cAAA;QACJI,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMO,iBAAiBC,WAAY,CAAA,CAACZ,KAAOD,UAAWC,CAAAA,EAAAA,EAAInD,eAAeG,kBAAqB,CAAA,EAAA;QAC5F,MAAM6D,SAAAA,CAAAA,GAAAA;YACJ,MAAMzB,OAAAA,EAAAA;AACR;AACF,KAAA,CAAA;AAEA,IAAA,MAAM0B,mBAAsB,GAAA,UAAA;QAC1B,MAAMH,cAAAA,CAAeI,WAAW,CAACrD,YAAAA,CAAAA;AACjCF,QAAAA,oBAAAA,CAAqB,CAACD,iBAAAA,CAAAA;AACxB,KAAA;AAEA,IAAA,MAAMyD,cAAc,CAAC9B,SAAS,EAAC,EAC5B+B,MAAM,CAAC,CAACC,IAASzB,GAAAA,QAAAA,CAASyB,KAAKC,IAAI,EAAE7D,OAAOmC,QAASyB,CAAAA,IAAAA,CAAKE,WAAW,EAAE9D,EAAAA,CAAAA,CAAAA,CACvE+D,IAAI,CACH,CAACC,CAAGC,EAAAA,CAAAA,GAAM3B,UAAU4B,OAAO,CAACF,EAAEH,IAAI,EAAEI,EAAEJ,IAAI,CAAA,IAAKvB,UAAU4B,OAAO,CAACF,EAAEF,WAAW,EAAEG,EAAEH,WAAW,CAAA,CAAA;AAGjG,IAAA,MAAMK,eAAenE,EAAM,IAAA,CAAC0D,WAAYU,CAAAA,MAAM,GAAG,QAAW,GAAA,OAAA;AAE5D,IAAA,MAAMC,QAAW,GAAA,CAAA;AACjB,IAAA,MAAMC,WAAW,CAAC1C,KAAOwC,EAAAA,MAAAA,IAAU,CAAA,IAAK,CAAA;AAExC,IAAA,IAAI3D,SAAW,EAAA;QACb,qBAAO8D,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,qBACEC,IAAA,CAACF,KAAKG,IAAI,EAAA;;AACR,0BAAAJ,GAAA,CAACC,KAAKI,KAAK,EAAA;0BACRrF,aACC,CAAA;oBAAEmD,EAAI,EAAA,oBAAA;oBAAsBI,cAAgB,EAAA;iBAC5C,EAAA;oBAAEe,IAAMT,EAAAA;AAAU,iBAAA;;AAGtB,0BAAAmB,GAAA,CAACM,QAAQC,MAAM,EAAA;AACbC,gBAAAA,KAAAA,EAAOxF,aAAc,CAAA;oBACnBmD,EAAI,EAAA,cAAA;oBACJI,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAkC,gBAAAA,QAAAA,EAAUzF,aAAc,CAAA;oBACtBmD,EAAI,EAAA,iCAAA;oBACJI,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAmC,gBAAAA,aAAAA,EACEnE,0BACEyD,GAACW,CAAAA,UAAAA,EAAAA;oBACCC,EAAG,EAAA,KAAA;oBACHC,GAAKC,EAAAA,OAAAA;AACLC,oBAAAA,OAAAA,EAAS,IAAMjG,UAAW,CAAA,gBAAA,CAAA;AAC1BkG,oBAAAA,SAAAA,gBAAWhB,GAACiB,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;oBACZC,IAAK,EAAA,GAAA;8BAEJlG,aAAc,CAAA;AACbmD,wBAAAA,EAAAA,EAAIQ,OAAQ,CAAA,mBAAA,CAAA;wBACZJ,cAAgB,EAAA;AAClB,qBAAA;AAEA,iBAAA,CAAA,GAAA;;AAIR,0BAAAyB,GAAA,CAACM,QAAQa,MAAM,EAAA;AACbC,gBAAAA,YAAAA,gBACEpB,GAACqB,CAAAA,WAAAA,EAAAA;AACCC,oBAAAA,KAAAA,EAAOtG,aAAc,CAAA;wBACnBmD,EAAI,EAAA,4BAAA;wBACJI,cAAgB,EAAA;AAClB,qBAAA;;;AAKN,0BAAA4B,IAAA,CAACG,QAAQiB,OAAO,EAAA;;oBACb,CAAClF,OAAAA,kBAAW2D,GAACC,CAAAA,IAAAA,CAAKuB,aAAa,EAAA,EAAA,CAAA;oBAC/BnF,OAAW8C,IAAAA,WAAAA,IAAeA,WAAaU,EAAAA,MAAAA,iBACtCM,IAACsB,CAAAA,KAAAA,EAAAA;wBAAM3B,QAAUA,EAAAA,QAAAA;wBAAUC,QAAUA,EAAAA,QAAAA;;0CACnCC,GAAC0B,CAAAA,KAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAAvB,IAACwB,CAAAA,EAAAA,EAAAA;;sDACC3B,GAAC4B,CAAAA,EAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnC/G,aAAc,CAAA;oDAAEmD,EAAI,EAAA,aAAA;oDAAeI,cAAgB,EAAA;AAAO,iDAAA;;;sDAG/DyB,GAAC4B,CAAAA,EAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnC/G,aAAc,CAAA;oDACbmD,EAAI,EAAA,oBAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJyB,GAAC4B,CAAAA,EAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQC,SAAU,EAAA,YAAA;0DACnC/G,aAAc,CAAA;oDACbmD,EAAI,EAAA,cAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJyB,GAAC4B,CAAAA,EAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAA5B,GAACgC,CAAAA,cAAAA,EAAAA;0DACEhH,aAAc,CAAA;oDACbmD,EAAI,EAAA,gBAAA;oDACJI,cAAgB,EAAA;AAClB,iDAAA;;;;;;0CAKRyB,GAACiC,CAAAA,SAAAA,EAAAA;gCACC9C,WAAaA,EAAAA,WAAAA;gCACb7C,SAAWA,EAAAA,SAAAA;gCACXE,SAAWA,EAAAA,SAAAA;gCACX0F,WAAavF,EAAAA,WAAAA;gCACbb,eAAiBA,EAAAA,eAAAA;gCACjBqG,QAAU,EAAA;AAACzG,oCAAAA,iBAAAA;AAAmBC,oCAAAA;AAAqB;;;uCAIvDqE,GAACoC,CAAAA,gBAAAA,EAAAA;wBAAiBC,OAASrH,EAAAA,aAAAA,CAAc0D,WAAW,CAACkB,YAAa,CAAA;;;;AAGtE,0BAAAI,GAAA,CAACsC,OAAOC,IAAI,EAAA;gBAACC,IAAM9G,EAAAA,iBAAAA;gBAAmB+G,YAAcxE,EAAAA,uBAAAA;AAClD,gBAAA,QAAA,gBAAA+B,GAAC0C,CAAAA,aAAAA,EAAAA;oBAAcC,SAAW1D,EAAAA;;;;;AAIlC;MAEa2D,sBAAyB,GAAA,IAAA;IACpC,qBACE5C,GAAA,CAACC,KAAK4C,OAAO,EAAA;AAACX,QAAAA,WAAAA,EAAavF,YAAYmG,WAAW;AAChD,QAAA,QAAA,gBAAA9C,GAACnF,CAAAA,aAAAA,EAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
@@ -6,15 +6,25 @@ var de = {
6
6
  "EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
7
7
  "EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
8
8
  "EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
9
- "EditForm.inputToggle.description.email-confirmation-redirection": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.",
10
- "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung",
9
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
10
+ "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
11
11
  "EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
12
12
  "EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
13
13
  "EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
14
14
  "EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
15
15
  "EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
16
16
  "EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
17
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
18
+ "EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
19
+ "EditPage.form.roles": "Rollen-Details",
20
+ "Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
17
21
  "Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
22
+ "Email.template.reset_password": "Passwort zurücksetzen",
23
+ "Email.template.form.edit.label": "Vorlage bearbeiten",
24
+ "Email.template.table.action.label": "Aktion",
25
+ "Email.template.table.icon.label": "Icon",
26
+ "Email.template.table.name.label": "Name",
27
+ "Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
18
28
  "HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
19
29
  "HeaderNav.link.emailTemplates": "E-Mail-Templates",
20
30
  "HeaderNav.link.providers": "Methoden",
@@ -46,10 +56,25 @@ var de = {
46
56
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
47
57
  "PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
48
58
  "PopUpForm.header.edit.providers": "Anbieter bearbeiten",
59
+ "Providers.data.loaded": "Anbieter wurden geladen",
60
+ "Providers.status": "Status",
61
+ "Roles.empty": "Du hast noch keine Rollen.",
62
+ "Roles.empty.search": "Keine Rollen entsprechen der Suche.",
49
63
  "Settings.roles.deleted": "Rolle gelöscht",
50
64
  "Settings.roles.edited": "Rolle bearbeitet",
51
65
  "Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
66
+ "components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
67
+ "components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
68
+ "components.Input.error.validation.max": "Der Wert ist zu hoch.",
69
+ "components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
70
+ "components.Input.error.validation.min": "Der Wert ist zu niedrig.",
71
+ "components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
72
+ "components.Input.error.validation.minSupMax": "Kann nicht größer sein",
73
+ "components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
74
+ "components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
75
+ "components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
52
76
  "notification.success.submit": "Einstellungen aktualisiert",
77
+ "page.title": "Einstellungen - Rollen",
53
78
  "plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
54
79
  "plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
55
80
  "plugin.name": "Nutzer- & Berechtigungen-Plugin",
@@ -1 +1 @@
1
- {"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,15 +4,25 @@ var de = {
4
4
  "EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
5
5
  "EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
6
6
  "EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
7
- "EditForm.inputToggle.description.email-confirmation-redirection": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.",
8
- "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
8
+ "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
9
9
  "EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
10
10
  "EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
11
11
  "EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
12
12
  "EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
13
13
  "EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
14
14
  "EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
17
+ "EditPage.form.roles": "Rollen-Details",
18
+ "Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
15
19
  "Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
20
+ "Email.template.reset_password": "Passwort zurücksetzen",
21
+ "Email.template.form.edit.label": "Vorlage bearbeiten",
22
+ "Email.template.table.action.label": "Aktion",
23
+ "Email.template.table.icon.label": "Icon",
24
+ "Email.template.table.name.label": "Name",
25
+ "Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
16
26
  "HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
17
27
  "HeaderNav.link.emailTemplates": "E-Mail-Templates",
18
28
  "HeaderNav.link.providers": "Methoden",
@@ -44,10 +54,25 @@ var de = {
44
54
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
45
55
  "PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
46
56
  "PopUpForm.header.edit.providers": "Anbieter bearbeiten",
57
+ "Providers.data.loaded": "Anbieter wurden geladen",
58
+ "Providers.status": "Status",
59
+ "Roles.empty": "Du hast noch keine Rollen.",
60
+ "Roles.empty.search": "Keine Rollen entsprechen der Suche.",
47
61
  "Settings.roles.deleted": "Rolle gelöscht",
48
62
  "Settings.roles.edited": "Rolle bearbeitet",
49
63
  "Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
64
+ "components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
65
+ "components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
66
+ "components.Input.error.validation.max": "Der Wert ist zu hoch.",
67
+ "components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
68
+ "components.Input.error.validation.min": "Der Wert ist zu niedrig.",
69
+ "components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
70
+ "components.Input.error.validation.minSupMax": "Kann nicht größer sein",
71
+ "components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
72
+ "components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
73
+ "components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
50
74
  "notification.success.submit": "Einstellungen aktualisiert",
75
+ "page.title": "Einstellungen - Rollen",
51
76
  "plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
52
77
  "plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
53
78
  "plugin.name": "Nutzer- & Berechtigungen-Plugin",
@@ -1 +1 @@
1
- {"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/plugin-users-permissions",
3
- "version": "5.33.4",
3
+ "version": "5.34.0",
4
4
  "description": "Protect your API with a full-authentication process based on JWT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@strapi/design-system": "2.1.2",
52
52
  "@strapi/icons": "2.1.2",
53
- "@strapi/utils": "5.33.4",
53
+ "@strapi/utils": "5.34.0",
54
54
  "bcryptjs": "2.4.3",
55
55
  "formik": "2.4.5",
56
56
  "grant": "^5.4.8",
@@ -59,7 +59,7 @@
59
59
  "jwk-to-pem": "2.0.5",
60
60
  "koa": "2.16.3",
61
61
  "koa2-ratelimit": "^1.1.3",
62
- "lodash": "4.17.21",
62
+ "lodash": "4.17.23",
63
63
  "prop-types": "^15.8.1",
64
64
  "purest": "4.0.2",
65
65
  "react-intl": "6.6.2",
@@ -70,7 +70,7 @@
70
70
  "zod": "3.25.67"
71
71
  },
72
72
  "devDependencies": {
73
- "@strapi/strapi": "5.33.4",
73
+ "@strapi/strapi": "5.34.0",
74
74
  "@testing-library/dom": "10.4.1",
75
75
  "@testing-library/react": "16.3.0",
76
76
  "@testing-library/user-event": "14.6.1",