UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

48 lines 2.57 kB
import React, { useCallback, useState } from "react"; import { FormHelperText, Stack } from "@mui/material"; import Grid from "@mui/material/Grid2"; import { DatePicker, LocalizationProvider } from "@mui/x-date-pickers"; import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon"; import { DateTime } from "luxon"; import { useCardContext } from "../../contexts/CardContext"; import LabeledValue from "../LabeledValue"; export const CardFieldDate = ({ dateFormatter = (date) => (date.isValid ? date.toISODate() : ""), fallback = "—", fallbackPredicate = (date) => !date?.isValid, formName, helperText, isDisabled = false, isEditable = true, isReadable = true, label, size = "grow", sx, adapterLocale, value: defaultValue, ...props }) => { const { isCompact, isEditing } = useCardContext(); const [value, setValue] = useState(() => { if (defaultValue instanceof Date) { return DateTime.fromJSDate(defaultValue); } else if (defaultValue instanceof DateTime) { return defaultValue; } else if (typeof defaultValue === "string") { try { const date = DateTime.fromISO(defaultValue); if (date.isValid) { return date; } else { console.error(`[CARD_FIELD_DATE] Invalid date string: ${defaultValue}`); return undefined; } } catch (error) { console.error(`[CARD_FIELD_DATE] ${error}`); return undefined; } } else { return undefined; } }); const handleDateChange = useCallback((date) => { if (date != null) setValue(date); }, [setValue]); return (React.createElement(Grid, { size: size }, isEditing && isEditable ? (React.createElement(Stack, { direction: "column", py: 1 }, React.createElement(LocalizationProvider, { adapterLocale: adapterLocale, dateAdapter: AdapterLuxon }, React.createElement(DatePicker, { defaultValue: value, disabled: isDisabled, label: label, name: formName, sx: { width: "100%", ...sx }, onChange: handleDateChange, ...props })), helperText != null && React.createElement(FormHelperText, { sx: { mb: 1 } }, helperText))) : (isReadable && (React.createElement(LabeledValue, { compact: isCompact, label: label, value: fallbackPredicate(value) ? fallback : dateFormatter(value) }))))); }; export default CardFieldDate; //# sourceMappingURL=CardFieldDate.js.map