import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { useIntl } from "react-intl"; import CardTitle from "@saleor/components/CardTitle"; import RadioSwitchField from "@saleor/components/RadioSwitchField"; import { UserError } from "@saleor/types"; import { getFieldError } from "@saleor/utils/errors"; import { DateContext } from "../Date/DateContext"; import FormSpacer from "../FormSpacer"; const useStyles = makeStyles( theme => ({ children: { "& button": { margin: "0 9px" }, "& label": { marginTop: theme.spacing(2.5) } }, date: { "& svg": { fill: theme.palette.primary.main }, marginTop: theme.spacing(3) }, label: { lineHeight: 1, margin: 0 }, secondLabel: { fontSize: 12 }, setPublicationDate: { color: theme.palette.primary.main, cursor: "pointer", fontSize: "14px", paddingTop: "15px", textDecoration: "underline" } }), { name: "VisibilityCard" } ); interface VisibilityCardProps { children?: React.ReactNode | React.ReactNodeArray; data: { isPublished: boolean; publicationDate: string; }; errors: UserError[]; disabled?: boolean; hiddenMessage: string; onChange: (event: React.ChangeEvent) => void; visibleMessage: string; } export const VisibilityCard: React.FC = props => { const { children, data: { isPublished, publicationDate }, errors, disabled, hiddenMessage, onChange, visibleMessage } = props; const classes = useStyles(props); const intl = useIntl(); const [isPublicationDate, setPublicationDate] = React.useState( publicationDate === null ? true : false ); const dateNow = React.useContext(DateContext); const visibleSecondLabel = publicationDate ? isPublished ? visibleMessage : null : null; const hiddenSecondLabel = publicationDate ? isPublished ? null : Date.parse(publicationDate) > dateNow ? hiddenMessage : null : null; return (

{intl.formatMessage({ defaultMessage: "Visible" })}

{visibleSecondLabel} } name={"isPublished" as keyof FormData} secondOptionLabel={ <>

{intl.formatMessage({ defaultMessage: "Hidden" })}

{hiddenSecondLabel} } value={isPublished} onChange={onChange} /> {!isPublished && ( <> {!isPublished && ( setPublicationDate(!isPublicationDate)} > {intl.formatMessage({ defaultMessage: "Set publication date" })} )} {isPublicationDate && ( )} )} {getFieldError(errors, "isPublished") && ( <> {getFieldError(errors, "isPublished")?.message} )}
{children}
); }; VisibilityCard.displayName = "VisibilityCard"; export default VisibilityCard;