saleor-dashboard/src/webhooks/components/WebhookEvents/WebhookEvents.tsx

87 lines
2.3 KiB
TypeScript
Raw Normal View History

2019-10-09 06:01:52 +00:00
import Card from "@material-ui/core/Card";
import CardContent from "@material-ui/core/CardContent";
2019-10-09 20:50:03 +00:00
import Typography from "@material-ui/core/Typography";
2019-10-09 06:01:52 +00:00
import makeStyles from "@material-ui/styles/makeStyles";
import CardTitle from "@saleor/components/CardTitle";
import ControlledCheckbox from "@saleor/components/ControlledCheckbox";
import React from "react";
import { useIntl } from "react-intl";
2019-10-09 20:50:03 +00:00
import { WebhookEventTypeEnum } from "../../../types/globalTypes";
import { FormData } from "../WebhooksDetailsPage";
2019-10-09 06:01:52 +00:00
interface WebhookEventsProps {
data: FormData;
disabled: boolean;
onChange: (event: React.ChangeEvent<any>) => void;
}
const useStyles = makeStyles(() => ({
item: {
paddingBottom: 10,
paddingTop: 10
}
}));
const WebhookEvents: React.StatelessComponent<WebhookEventsProps> = ({
data,
disabled,
2019-10-09 20:50:03 +00:00
onChange
2019-10-09 06:01:52 +00:00
}) => {
const intl = useIntl();
2019-10-10 05:38:21 +00:00
const [events, setEvents] = React.useState(data.events);
2019-10-09 20:50:03 +00:00
const eventsEnum = Object.values(WebhookEventTypeEnum);
const addOrRemove = (array, value) => {
const index = array.indexOf(value);
if (index === -1) {
array.push(value);
} else {
array.splice(index, 1);
}
};
2019-10-10 05:38:21 +00:00
console.log(data.events);
2019-10-09 20:50:03 +00:00
const eventsOnChange = event => {
2019-10-10 05:38:21 +00:00
const newData = events;
addOrRemove(newData, event.target.name);
2019-10-09 20:50:03 +00:00
setEvents(newData);
2019-10-10 05:38:21 +00:00
console.log(events.indexOf(event.target.name));
2019-10-09 20:50:03 +00:00
};
2019-10-09 06:01:52 +00:00
return (
<Card>
<CardTitle
title={intl.formatMessage({
defaultMessage: "Events",
description: "section header"
})}
/>
2019-10-09 20:50:03 +00:00
<CardContent>
<Typography>
{intl.formatMessage({
defaultMessage:
"Expand or restrict webhooks permissions to register certain events in Saleor system.",
description: "webhook events"
})}
</Typography>
{eventsEnum.map((event, index) => (
<div key={index}>
<ControlledCheckbox
name={event}
label={event}
2019-10-10 05:38:21 +00:00
checked={events.includes(WebhookEventTypeEnum[event])}
2019-10-09 20:50:03 +00:00
onChange={eventsOnChange}
disabled={disabled}
/>
</div>
))}
</CardContent>
2019-10-09 06:01:52 +00:00
</Card>
);
};
WebhookEvents.displayName = "WebhookEvents";
export default WebhookEvents;