
* Add Exit form prompt component and change some minor styles in other components to match * Add Exit form prompt provider * Adjust generic form and useform hook to allow using exit form prompt provider * Add exit form prompt provider to index * wip * Fix types * Fix styling * Fix types * Revert warehouse details refactor * Add handling of edge cases to exit prompt * Refactor, add comments, fix some types * Refactor after exit form dialog name change * fix types * Fixes after review * Add default value for useform prop opts so the app doesn't crash * Add missing category prop to getting initial data for category details form * Add exit dialog to everywhere WIP (#1600) * Add Exit form prompt component and change some minor styles in other components to match * Add Exit form prompt provider * Adjust generic form and useform hook to allow using exit form prompt provider * Add exit form prompt provider to index * wip * Fix types * Fix styling * Fix types * Revert warehouse details refactor * Add handling of edge cases to exit prompt * Refactor, add comments, fix some types * Refactor after exit form dialog name change * fix types * Add CommonUseFormResultWithHandlers type for later use and refactor handleFormSubmit util * Refactor login form not to use custom form since it doesn't need to * Add exit form dialog to order refund page * Add exit form dialog to order return page * Add exit form dialog to order order settings page * Add exit form dialog to product variant page * Add exit form dialog to product create page * Add exit form dialog to product update page * Add exit form dialog to product variant create page * Fix confirm leave prop passing in generic Form * Add util function to handle for submit to extract errors * Add confirmLeave prop to generic forms * Move handleChange for custom forms to useForm * Add exit dialog to more forms * Add extract mutation errors util function * Add extracting errors to submit functions that use metadata create handler * Fix typo * Add missing category prop to getting initial data for category details form * Fix types * wip * wip * wip * wip * Fix types & refactor * Fix types & refactor * Fix typescript * Fix unmatching tag * Fixes * Add handling of multiple forms at once to exit dirty form provider * Change all usages of ExitFormDialogContext to designated hook * wip * wip * wip * Fix types wip * Fix types * Remove console logs * Add isSubmitting prop to exit form dialog in order to avoid enabling exit dialog while submit is still in progresS * Replace handleSubmit global util with a hook to use exit form dialog props inside * Move useHandleSubmit to general hooks dir, update imports * Small fixes * Update snapshots * Fix types * Small fixes due to extensive rebase * Update package lock * Fixes after rebase * Remove exit form from customer address dialog * Fix types and update messages * Fix types * Change imports names * Refactor * Remove unnecessary console.log * Update types, snapshots. etc after rebase
95 lines
2.9 KiB
TypeScript
95 lines
2.9 KiB
TypeScript
import { useUser } from "@saleor/auth";
|
|
import { WindowTitle } from "@saleor/components/WindowTitle";
|
|
import useNavigator from "@saleor/hooks/useNavigator";
|
|
import useNotifier from "@saleor/hooks/useNotifier";
|
|
import useShop from "@saleor/hooks/useShop";
|
|
import { extractMutationErrors } from "@saleor/misc";
|
|
import { PermissionData } from "@saleor/permissionGroups/components/PermissionGroupDetailsPage";
|
|
import React from "react";
|
|
import { useIntl } from "react-intl";
|
|
|
|
import PermissionGroupCreatePage, {
|
|
PermissionGroupCreateFormData
|
|
} from "../../components/PermissionGroupCreatePage";
|
|
import { usePermissionGroupCreate } from "../../mutations";
|
|
import { PermissionGroupCreate } from "../../types/PermissionGroupCreate";
|
|
import { permissionGroupDetailsUrl, permissionGroupListUrl } from "../../urls";
|
|
|
|
const PermissionGroupCreateView: React.FC = () => {
|
|
const navigate = useNavigator();
|
|
const notify = useNotifier();
|
|
const intl = useIntl();
|
|
const shop = useShop();
|
|
const user = useUser();
|
|
|
|
const handleSuccess = (data: PermissionGroupCreate) => {
|
|
if (data?.permissionGroupCreate?.errors.length === 0) {
|
|
notify({
|
|
status: "success",
|
|
text: intl.formatMessage({
|
|
defaultMessage: "Permission group created"
|
|
})
|
|
});
|
|
navigate(permissionGroupDetailsUrl(data.permissionGroupCreate.group.id));
|
|
}
|
|
};
|
|
|
|
const [
|
|
createPermissionGroup,
|
|
createPermissionGroupResult
|
|
] = usePermissionGroupCreate({
|
|
onCompleted: handleSuccess
|
|
});
|
|
|
|
const errors =
|
|
createPermissionGroupResult?.data?.permissionGroupCreate?.errors || [];
|
|
|
|
const onSubmit = (formData: PermissionGroupCreateFormData) =>
|
|
extractMutationErrors(
|
|
createPermissionGroup({
|
|
variables: {
|
|
input: {
|
|
addPermissions: formData.hasFullAccess
|
|
? shop.permissions.map(perm => perm.code)
|
|
: formData.permissions,
|
|
addUsers: [],
|
|
name: formData.name
|
|
}
|
|
}
|
|
})
|
|
);
|
|
|
|
const userPermissions = user?.user.userPermissions.map(p => p.code) || [];
|
|
|
|
const permissions: PermissionData[] =
|
|
shop?.permissions.map(
|
|
p =>
|
|
({
|
|
...p,
|
|
disabled: !userPermissions.includes(p.code),
|
|
lastSource: false
|
|
} as PermissionData)
|
|
) || [];
|
|
|
|
return (
|
|
<>
|
|
<WindowTitle
|
|
title={intl.formatMessage({
|
|
defaultMessage: "Create category",
|
|
description: "window title"
|
|
})}
|
|
/>
|
|
<PermissionGroupCreatePage
|
|
errors={errors}
|
|
disabled={createPermissionGroupResult.loading}
|
|
permissions={permissions}
|
|
saveButtonBarState={createPermissionGroupResult.status}
|
|
onSubmit={onSubmit}
|
|
onBack={() => navigate(permissionGroupListUrl())}
|
|
/>
|
|
</>
|
|
);
|
|
};
|
|
PermissionGroupCreateView.displayName = "PermissionGroupCreateView";
|
|
|
|
export default PermissionGroupCreateView;
|