diff --git a/src/services/components/ServiceCreatePage/ServiceCreatePage.stories.tsx b/src/services/components/ServiceCreatePage/ServiceCreatePage.stories.tsx new file mode 100644 index 000000000..b4e1884ec --- /dev/null +++ b/src/services/components/ServiceCreatePage/ServiceCreatePage.stories.tsx @@ -0,0 +1,26 @@ +import { storiesOf } from "@storybook/react"; +import React from "react"; + +import { permissions } from "@saleor/fixtures"; +import Decorator from "@saleor/storybook/Decorator"; +import { formError } from "@saleor/storybook/misc"; +import ServiceCreatePage, { ServiceCreatePageProps } from "./ServiceCreatePage"; + +const props: ServiceCreatePageProps = { + disabled: false, + errors: [], + onBack: () => undefined, + onSubmit: () => undefined, + permissions, + saveButtonBarState: "default" +}; +storiesOf("Views / Services / Create service", module) + .addDecorator(Decorator) + .add("default", () => ) + .add("loading", () => ) + .add("form errors", () => ( + formError(field))} + /> + )); diff --git a/src/services/components/ServiceCreatePage/ServiceCreatePage.tsx b/src/services/components/ServiceCreatePage/ServiceCreatePage.tsx new file mode 100644 index 000000000..9105526f8 --- /dev/null +++ b/src/services/components/ServiceCreatePage/ServiceCreatePage.tsx @@ -0,0 +1,101 @@ +import React from "react"; +import { useIntl } from "react-intl"; + +import AccountPermissions from "@saleor/components/AccountPermissions"; +import AccountStatus from "@saleor/components/AccountStatus"; +import AppHeader from "@saleor/components/AppHeader"; +import CardSpacer from "@saleor/components/CardSpacer"; +import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; +import Container from "@saleor/components/Container"; +import Form from "@saleor/components/Form"; +import Grid from "@saleor/components/Grid"; +import PageHeader from "@saleor/components/PageHeader"; +import SaveButtonBar from "@saleor/components/SaveButtonBar"; +import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo"; +import { sectionNames } from "@saleor/intl"; +import { UserError } from "@saleor/types"; +import { PermissionEnum } from "@saleor/types/globalTypes"; +import ServiceInfo from "../ServiceInfo"; + +export interface ServiceDetailsPageFormData { + hasFullAccess: boolean; + isActive: boolean; + name: string; + permissions: PermissionEnum[]; +} +export interface ServiceCreatePageProps { + disabled: boolean; + errors: UserError[]; + permissions: ShopInfo_shop_permissions[]; + saveButtonBarState: ConfirmButtonTransitionState; + onBack: () => void; + onSubmit: (data: ServiceDetailsPageFormData) => void; +} + +const ServiceCreatePage: React.FC = props => { + const { + disabled, + errors: formErrors, + permissions, + saveButtonBarState, + onBack, + onSubmit + } = props; + const intl = useIntl(); + + const initialForm: ServiceDetailsPageFormData = { + hasFullAccess: false, + isActive: false, + name: "", + permissions: [] + }; + return ( +
+ {({ data, change, errors, hasChanged, submit }) => ( + + + {intl.formatMessage(sectionNames.serviceAccounts)} + + + +
+ +
+ + + +
+ +
+ )} +
+ ); +}; + +ServiceCreatePage.displayName = "ServiceCreatePage"; +export default ServiceCreatePage; diff --git a/src/services/components/ServiceCreatePage/index.ts b/src/services/components/ServiceCreatePage/index.ts new file mode 100644 index 000000000..c02c29357 --- /dev/null +++ b/src/services/components/ServiceCreatePage/index.ts @@ -0,0 +1,2 @@ +export { default } from "./ServiceCreatePage"; +export * from "./ServiceCreatePage";