@strapi/plugin-users-permissions 5.25.0 → 5.27.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.
@@ -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 Main,\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\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 <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={<BackButton fallback=\"..\" />}\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} 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 value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} 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 </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","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","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 { Button, Flex, TextInput, Textarea, Typography, Grid, Field } 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={<BackButton fallback=\"..\" />}\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} 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 value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} 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","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { Main, Button, Flex, Typography, Grid, Field, TextInput, Textarea } from '@strapi/design-system';
3
+ import { Button, Flex, Typography, Grid, Field, TextInput, Textarea } from '@strapi/design-system';
4
4
  import { Check } from '@strapi/icons';
5
5
  import { Page, useNotification, useFetchClient, useAPIErrorHandler, Layouts, BackButton } from '@strapi/strapi/admin';
6
6
  import { Formik, Form } from 'formik';
@@ -60,7 +60,7 @@ const EditPage = ()=>{
60
60
  if (isLoadingRole) {
61
61
  return /*#__PURE__*/ jsx(Page.Loading, {});
62
62
  }
63
- return /*#__PURE__*/ jsxs(Main, {
63
+ return /*#__PURE__*/ jsxs(Page.Main, {
64
64
  children: [
65
65
  /*#__PURE__*/ jsx(Page.Title, {
66
66
  children: formatMessage({
@@ -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 Main,\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\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 <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={<BackButton fallback=\"..\" />}\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} 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 value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} 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 </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","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","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 { Button, Flex, TextInput, Textarea, Typography, Grid, Field } 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={<BackButton fallback=\"..\" />}\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} 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 value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} 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","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
@@ -104,7 +104,7 @@ const RolesListPage = ()=>{
104
104
  if (isLoading) {
105
105
  return /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Loading, {});
106
106
  }
107
- return /*#__PURE__*/ jsxRuntime.jsxs(admin.Layouts.Root, {
107
+ return /*#__PURE__*/ jsxRuntime.jsxs(admin.Page.Main, {
108
108
  children: [
109
109
  /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Title, {
110
110
  children: formatMessage({
@@ -114,113 +114,109 @@ const RolesListPage = ()=>{
114
114
  name: pageTitle
115
115
  })
116
116
  }),
117
- /*#__PURE__*/ jsxRuntime.jsxs(admin.Page.Main, {
117
+ /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Header, {
118
+ title: formatMessage({
119
+ id: 'global.roles',
120
+ defaultMessage: 'Roles'
121
+ }),
122
+ subtitle: formatMessage({
123
+ id: 'Settings.roles.list.description',
124
+ defaultMessage: 'List of roles'
125
+ }),
126
+ primaryAction: canCreate ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
127
+ to: "new",
128
+ tag: reactRouterDom.NavLink,
129
+ onClick: ()=>trackUsage('willCreateRole'),
130
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
131
+ size: "S",
132
+ children: formatMessage({
133
+ id: getTrad('List.button.roles'),
134
+ defaultMessage: 'Add new role'
135
+ })
136
+ }) : null
137
+ }),
138
+ /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Action, {
139
+ startActions: /*#__PURE__*/ jsxRuntime.jsx(admin.SearchInput, {
140
+ label: formatMessage({
141
+ id: 'app.component.search.label',
142
+ defaultMessage: 'Search'
143
+ })
144
+ })
145
+ }),
146
+ /*#__PURE__*/ jsxRuntime.jsxs(admin.Layouts.Content, {
118
147
  children: [
119
- /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Header, {
120
- title: formatMessage({
121
- id: 'global.roles',
122
- defaultMessage: 'Roles'
123
- }),
124
- subtitle: formatMessage({
125
- id: 'Settings.roles.list.description',
126
- defaultMessage: 'List of roles'
127
- }),
128
- primaryAction: canCreate ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
129
- to: "new",
130
- tag: reactRouterDom.NavLink,
131
- onClick: ()=>trackUsage('willCreateRole'),
132
- startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
133
- size: "S",
134
- children: formatMessage({
135
- id: getTrad('List.button.roles'),
136
- defaultMessage: 'Add new role'
137
- })
138
- }) : null
139
- }),
140
- /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Action, {
141
- startActions: /*#__PURE__*/ jsxRuntime.jsx(admin.SearchInput, {
142
- label: formatMessage({
143
- id: 'app.component.search.label',
144
- defaultMessage: 'Search'
145
- })
146
- })
147
- }),
148
- /*#__PURE__*/ jsxRuntime.jsxs(admin.Layouts.Content, {
148
+ !canRead && /*#__PURE__*/ jsxRuntime.jsx(admin.Page.NoPermissions, {}),
149
+ canRead && sortedRoles && sortedRoles?.length ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Table, {
150
+ colCount: colCount,
151
+ rowCount: rowCount,
149
152
  children: [
150
- !canRead && /*#__PURE__*/ jsxRuntime.jsx(admin.Page.NoPermissions, {}),
151
- canRead && sortedRoles && sortedRoles?.length ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Table, {
152
- colCount: colCount,
153
- rowCount: rowCount,
154
- children: [
155
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Thead, {
156
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
157
- children: [
158
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
159
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
160
- variant: "sigma",
161
- textColor: "neutral600",
162
- children: formatMessage({
163
- id: 'global.name',
164
- defaultMessage: 'Name'
165
- })
166
- })
167
- }),
168
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
169
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
170
- variant: "sigma",
171
- textColor: "neutral600",
172
- children: formatMessage({
173
- id: 'global.description',
174
- defaultMessage: 'Description'
175
- })
176
- })
177
- }),
178
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
179
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
180
- variant: "sigma",
181
- textColor: "neutral600",
182
- children: formatMessage({
183
- id: 'global.users',
184
- defaultMessage: 'Users'
185
- })
186
- })
187
- }),
188
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
189
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
190
- children: formatMessage({
191
- id: 'global.actions',
192
- defaultMessage: 'Actions'
193
- })
194
- })
153
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Thead, {
154
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
155
+ children: [
156
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
157
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
158
+ variant: "sigma",
159
+ textColor: "neutral600",
160
+ children: formatMessage({
161
+ id: 'global.name',
162
+ defaultMessage: 'Name'
163
+ })
164
+ })
165
+ }),
166
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
167
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
168
+ variant: "sigma",
169
+ textColor: "neutral600",
170
+ children: formatMessage({
171
+ id: 'global.description',
172
+ defaultMessage: 'Description'
173
+ })
174
+ })
175
+ }),
176
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
177
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
178
+ variant: "sigma",
179
+ textColor: "neutral600",
180
+ children: formatMessage({
181
+ id: 'global.users',
182
+ defaultMessage: 'Users'
195
183
  })
196
- ]
184
+ })
185
+ }),
186
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Th, {
187
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
188
+ children: formatMessage({
189
+ id: 'global.actions',
190
+ defaultMessage: 'Actions'
191
+ })
192
+ })
197
193
  })
198
- }),
199
- /*#__PURE__*/ jsxRuntime.jsx(TableBody, {
200
- sortedRoles: sortedRoles,
201
- canDelete: canDelete,
202
- canUpdate: canUpdate,
203
- permissions: constants.PERMISSIONS,
204
- setRoleToDelete: setRoleToDelete,
205
- onDelete: [
206
- showConfirmDelete,
207
- setShowConfirmDelete
208
- ]
209
- })
194
+ ]
195
+ })
196
+ }),
197
+ /*#__PURE__*/ jsxRuntime.jsx(TableBody, {
198
+ sortedRoles: sortedRoles,
199
+ canDelete: canDelete,
200
+ canUpdate: canUpdate,
201
+ permissions: constants.PERMISSIONS,
202
+ setRoleToDelete: setRoleToDelete,
203
+ onDelete: [
204
+ showConfirmDelete,
205
+ setShowConfirmDelete
210
206
  ]
211
- }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
212
- content: formatMessage(emptyLayout[emptyContent])
213
207
  })
214
208
  ]
215
- }),
216
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
217
- open: showConfirmDelete,
218
- onOpenChange: handleShowConfirmDelete,
219
- children: /*#__PURE__*/ jsxRuntime.jsx(admin.ConfirmDialog, {
220
- onConfirm: handleConfirmDelete
221
- })
209
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
210
+ content: formatMessage(emptyLayout[emptyContent])
222
211
  })
223
212
  ]
213
+ }),
214
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
215
+ open: showConfirmDelete,
216
+ onOpenChange: handleShowConfirmDelete,
217
+ children: /*#__PURE__*/ jsxRuntime.jsx(admin.ConfirmDialog, {
218
+ onConfirm: handleConfirmDelete
219
+ })
224
220
  })
225
221
  ]
226
222
  });
@@ -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 <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Page.Main>\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 </Layouts.Root>\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","Layouts","Root","Title","Main","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","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 >\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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"}