import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, Theme, withStyles, WithStyles } 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 { DateContext } from "../Date/DateContext"; const styles = (theme: Theme) => createStyles({ date: { "& svg": { fill: theme.palette.primary.main }, marginTop: theme.spacing.unit * 3 }, label: { lineHeight: 1, margin: 0 }, secondLabel: { fontSize: 12 }, setPublicationDate: { color: theme.palette.primary.main, cursor: "pointer", fontSize: "14px", paddingTop: "15px", textDecoration: "underline" } }); interface VisibilityCardProps extends WithStyles { children?: React.ReactNode | React.ReactNodeArray; data: { isPublished: boolean; publicationDate: string; }; errors: { [key: string]: string }; disabled?: boolean; hiddenMessage: string; onChange: (event: React.ChangeEvent) => void; visibleMessage: string; } export const VisibilityCard = withStyles(styles, { name: "VisibilityCard" })( ({ children, classes, data: { isPublished, publicationDate }, errors, disabled, hiddenMessage, onChange, visibleMessage }: VisibilityCardProps) => { 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 && ( )} )} {children}
); } ); VisibilityCard.displayName = "VisibilityCard"; export default VisibilityCard;