UNPKG

strapi-plugin-publisher

Version:

A plugin for Strapi Headless CMS that provides the ability to schedule publishing for any content type.

77 lines (66 loc) 2.04 kB
import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import { useIntl } from 'react-intl'; import { DateTimePicker, Typography, Stack } from '@strapi/design-system'; import { getTrad } from '../../../utils/getTrad'; import { useSettings } from '../../../hooks/useSettings'; import './ActionDateTimerPicker.css'; const ActionDateTimePicker = ({ executeAt, mode, isCreating, isEditing, onChange }) => { const { formatMessage, locale: browserLocale } = useIntl(); const [locale, setLocale] = useState(browserLocale); const [step, setStep] = useState(1); const { getSettings } = useSettings(); function handleDateChange(date) { if (onChange) { onChange(date); } } const { isLoading, data, isRefetching } = getSettings(); useEffect(() => { if (!isLoading && !isRefetching) { if (data) { setStep(data.components.dateTimePicker.step); const customLocale = data.components.dateTimePicker.locale; try { Intl.DateTimeFormat(customLocale); setLocale(customLocale); } catch (error) { console.log( `'${customLocale}' is not a valid format, using browser locale: '${browserLocale}'` ); } } } }, [isLoading, isRefetching]); if (!isCreating && !isEditing) { return null; } return ( <div id="action-date-time-picker"> <Stack spacing={2}> <Typography variant="sigma" textColor="neutral600" merginBottom={1}> {formatMessage({ id: getTrad(`action.header.${mode}.title`), defaultMessage: `${mode} Date`, })} </Typography> <DateTimePicker ariaLabel="datetime picker" onChange={handleDateChange} value={executeAt ? new Date(executeAt) : null} disabled={!isCreating} step={step} locale={locale} /> </Stack> </div> ); }; ActionDateTimePicker.propTypes = { executeAt: PropTypes.string, onChange: PropTypes.func, mode: PropTypes.string.isRequired, isCreating: PropTypes.bool.isRequired, isEditing: PropTypes.bool.isRequired, }; export default ActionDateTimePicker;