saleor-dashboard/src/components/AccountPermissionGroups/AccountPermissionGroups.tsx
Krzysztof Wolski a82de30309
Add circleci config and enhance our linters (#519)
* Add circleci config

* Season linting config

* Apply code style
2020-05-14 11:30:32 +02:00

82 lines
2.4 KiB
TypeScript

import Typography from "@material-ui/core/Typography";
import { FormChange } from "@saleor/hooks/useForm";
import { SearchPermissionGroups_search_edges_node } from "@saleor/searches/types/SearchPermissionGroups";
import { StaffErrorFragment } from "@saleor/staff/types/StaffErrorFragment";
import { FetchMoreProps, SearchPageProps } from "@saleor/types";
import { getFormErrors } from "@saleor/utils/errors";
import getStaffErrorMessage from "@saleor/utils/errors/staff";
import React from "react";
import { useIntl } from "react-intl";
import MultiAutocompleteSelectField, {
MultiAutocompleteChoiceType
} from "../MultiAutocompleteSelectField";
export interface AccountPermissionGroupsProps
extends FetchMoreProps,
SearchPageProps {
formData: {
permissionGroups: string[];
};
disabled: boolean;
errors: StaffErrorFragment[];
availablePermissionGroups: SearchPermissionGroups_search_edges_node[];
onChange: FormChange;
displayValues: MultiAutocompleteChoiceType[];
}
const AccountPermissionGroups: React.FC<AccountPermissionGroupsProps> = props => {
const {
availablePermissionGroups,
disabled,
displayValues,
errors,
formData,
hasMore,
loading,
onChange,
onFetchMore,
onSearchChange
} = props;
const intl = useIntl();
const choices = availablePermissionGroups?.map(pg => ({
disabled: !pg.userCanManage,
label: pg.name,
value: pg.id
}));
const formErrors = getFormErrors(["addGroups", "removeGroups"], errors);
return (
<>
<MultiAutocompleteSelectField
displayValues={displayValues}
label={intl.formatMessage({
defaultMessage: "Permission groups"
})}
choices={disabled ? [] : choices}
name="permissionGroups"
value={formData?.permissionGroups}
onChange={onChange}
fetchChoices={onSearchChange}
data-tc="permissionGroups"
onFetchMore={onFetchMore}
hasMore={hasMore}
loading={loading}
/>
{!!formErrors.addGroups && (
<Typography color="error">
{getStaffErrorMessage(formErrors.addGroups, intl)}
</Typography>
)}
{!!formErrors.removeGroups && (
<Typography color="error">
{getStaffErrorMessage(formErrors.removeGroups, intl)}
</Typography>
)}
</>
);
};
AccountPermissionGroups.displayName = "AccountPermissionGroups";
export default AccountPermissionGroups;