import AccountPermissions from "@saleor/components/AccountPermissions"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import Container from "@saleor/components/Container"; import Form from "@saleor/components/Form"; import FormSpacer from "@saleor/components/FormSpacer"; import Grid from "@saleor/components/Grid"; import PageHeader from "@saleor/components/PageHeader"; import Savebar from "@saleor/components/Savebar"; import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo"; import { PermissionGroupErrorFragment } from "@saleor/fragments/types/PermissionGroupErrorFragment"; import { SubmitPromise } from "@saleor/hooks/useForm"; import { sectionNames } from "@saleor/intl"; import { Backlink } from "@saleor/macaw-ui"; import { MembersListUrlSortField } from "@saleor/permissionGroups/urls"; import { extractPermissionCodes, isGroupFullAccess } from "@saleor/permissionGroups/utils"; import { ListActions, SortPage } from "@saleor/types"; import { PermissionEnum } from "@saleor/types/globalTypes"; import { getFormErrors } from "@saleor/utils/errors"; import getPermissionGroupErrorMessage from "@saleor/utils/errors/permissionGroups"; import React from "react"; import { useIntl } from "react-intl"; import { PermissionGroupDetails_permissionGroup, PermissionGroupDetails_permissionGroup_users } from "../../types/PermissionGroupDetails"; import PermissionGroupInfo from "../PermissionGroupInfo"; import PermissionGroupMemberList from "../PermissionGroupMemberList"; export interface PermissionGroupDetailsPageFormData { name: string; hasFullAccess: boolean; isActive: boolean; permissions: PermissionEnum[]; users: PermissionGroupDetails_permissionGroup_users[]; } export interface PermissionData extends ShopInfo_shop_permissions { lastSource?: boolean; disabled?: boolean; } export interface PermissionGroupDetailsPageProps extends ListActions, SortPage { disabled: boolean; errors: PermissionGroupErrorFragment[]; members: PermissionGroupDetails_permissionGroup_users[]; membersModified: boolean; permissionGroup: PermissionGroupDetails_permissionGroup; permissions: PermissionData[]; permissionsExceeded: boolean; saveButtonBarState: ConfirmButtonTransitionState; onAssign: () => void; onBack: () => void; onUnassign: (ids: string[]) => void; onSubmit: (data: PermissionGroupDetailsPageFormData) => SubmitPromise; } const PermissionGroupDetailsPage: React.FC = ({ disabled, errors, members, membersModified, onBack, onSubmit, permissionGroup, permissions, permissionsExceeded, saveButtonBarState, ...listProps }) => { const intl = useIntl(); const initialForm: PermissionGroupDetailsPageFormData = { hasFullAccess: isGroupFullAccess(permissionGroup, permissions), isActive: false, name: permissionGroup?.name || "", permissions: extractPermissionCodes(permissionGroup), users: members }; const formErrors = getFormErrors(["addPermissions"], errors); const permissionsError = getPermissionGroupErrorMessage( formErrors.addPermissions, intl ); return (
{({ data, change, submit, hasChanged }) => ( {intl.formatMessage(sectionNames.permissionGroups)}
)}
); }; PermissionGroupDetailsPage.displayName = "PermissionGroupDetailsPage"; export default PermissionGroupDetailsPage;