import { ContentState, convertFromRaw, convertToRaw, RawDraftContentState } from "draft-js"; import React from "react"; import { useIntl } from "react-intl"; 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 SeoForm from "@saleor/components/SeoForm"; import VisibilityCard from "@saleor/components/VisibilityCard"; import { sectionNames } from "@saleor/intl"; import { maybe } from "../../../misc"; import { UserError } from "../../../types"; import { PageDetails_page } from "../../types/PageDetails"; import PageInfo from "../PageInfo"; import PageSlug from "../PageSlug"; export interface FormData { content: RawDraftContentState; isPublished: boolean; publicationDate: string; seoDescription: string; seoTitle: string; slug: string; title: string; } export interface PageDetailsPageProps { disabled: boolean; errors: UserError[]; page: PageDetails_page; saveButtonBarState: ConfirmButtonTransitionState; onBack: () => void; onRemove: () => void; onSubmit: (data: FormData) => void; } const PageDetailsPage: React.StatelessComponent = ({ disabled, errors, page, saveButtonBarState, onBack, onRemove, onSubmit }) => { const intl = useIntl(); const initialForm: FormData = { content: maybe( () => JSON.parse(page.contentJson), convertToRaw(ContentState.createFromText("")) ), isPublished: maybe(() => page.isPublished, false), publicationDate: maybe(() => page.publicationDate, ""), seoDescription: maybe(() => page.seoDescription || "", ""), seoTitle: maybe(() => page.seoTitle || "", ""), slug: maybe(() => page.slug, ""), title: maybe(() => page.title, "") }; return (
{({ change, data, errors: formErrors, hasChanged, submit }) => ( {intl.formatMessage(sectionNames.pages)} page.title) } />
{ return convertFromRaw(data.content) .getPlainText() .slice(0, 300); }, "")} onChange={change} title={data.seoTitle} titlePlaceholder={data.title} helperText={intl.formatMessage({ defaultMessage: "Add search engine title and description to make this page easier to find" })} />
)}
); }; PageDetailsPage.displayName = "PageDetailsPage"; export default PageDetailsPage;