UNPKG

@etsoo/materialui

Version:

TypeScript Material-UI Implementation

51 lines (50 loc) 2.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldDateInput = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const shared_1 = require("@etsoo/shared"); const react_1 = __importDefault(require("react")); const InputField_1 = require("../InputField"); const Typography_1 = __importDefault(require("@mui/material/Typography")); /** * Date input field creator * type: date * @returns Component */ const FieldDateInput = ({ field, mref, onChange, defaultValue }) => { // Ref const inputRef = react_1.default.useRef(); const getValue = () => inputRef.current == null ? undefined : shared_1.DateUtils.parse(inputRef.current.value); const setValue = (value) => { if (inputRef.current == null) return; const date = value instanceof Date ? value : typeof value === "string" ? shared_1.DateUtils.parse(value) : undefined; inputRef.current.value = shared_1.DateUtils.formatForInput(date, inputRef.current.type === "date" ? undefined : false) ?? ""; }; react_1.default.useImperativeHandle(mref, () => ({ getValue, setValue })); react_1.default.useEffect(() => { if (defaultValue == null) return; setValue(defaultValue); }, [defaultValue]); // Name const name = field.name; if (!name) { return ((0, jsx_runtime_1.jsxs)(Typography_1.default, { children: ["No name for FieldDateInput ", JSON.stringify(field)] })); } return ((0, jsx_runtime_1.jsx)(InputField_1.InputField, { label: field.label ?? "", helperText: field.helperText, inputRef: inputRef, type: "date", name: name, fullWidth: true, onChange: () => onChange(name, getValue()), ...field.mainSlotProps })); }; exports.FieldDateInput = FieldDateInput;