src/components/DatatableCore/InputTypes/CreateInput.js
import React from "react";
import DatePickerWrapper from "./DatePickerWrapper";
import TimePickerWrapper from "./TimePickerWrapper";
import DateTimePickerWrapper from "./DateTimePickerWrapper";
import TextFieldWrapper from "./TextFieldWrapper";
import SelectWrapper from "./SelectWrapper";
import BooleanWrapper from "./BooleanWrapper";
import {
cellValPropType,
valueVerificationPropType,
rowIdPropType,
columnIdPropType,
setRowEditedPropType,
valuesPropType,
dateFormatPropType,
typePropType,
maskPropType,
inputTypePropType,
labelPropType,
requiredPropType
} from "../../../proptypes";
const CreateInput = ({
cellVal,
valueVerification,
rowId,
columnId,
setRowEdited,
values,
dateFormatIn,
dateFormatOut,
type,
mask,
inputType,
required = false,
label = ""
}) => {
const val =
cellVal ||
(type === "number" && cellVal === 0) ||
(inputType === "boolean" && !cellVal)
? cellVal
: "";
const isNull = cellVal == null;
switch (inputType) {
case "datePicker":
return (
<DatePickerWrapper
cellVal={val}
isNull={isNull}
valueVerification={valueVerification}
rowId={rowId}
columnId={columnId}
dateFormatIn={dateFormatIn}
dateFormatOut={dateFormatOut}
setRowEdited={setRowEdited}
label={label}
required={required}
/>
);
case "timePicker":
return (
<TimePickerWrapper
cellVal={val}
isNull={isNull}
valueVerification={valueVerification}
rowId={rowId}
columnId={columnId}
dateFormatIn={dateFormatIn}
dateFormatOut={dateFormatOut}
setRowEdited={setRowEdited}
label={label}
required={required}
/>
);
case "dateTimePicker":
return (
<DateTimePickerWrapper
cellVal={val}
isNull={isNull}
valueVerification={valueVerification}
rowId={rowId}
columnId={columnId}
dateFormatIn={dateFormatIn}
dateFormatOut={dateFormatOut}
setRowEdited={setRowEdited}
label={label}
required={required}
/>
);
case "select":
return SelectWrapper({
cellVal: val,
isNull,
values,
rowId,
dateFormatIn,
dateFormatOut,
columnId,
setRowEdited,
label,
required
});
case "boolean":
return BooleanWrapper({
cellVal: val,
isNull,
rowId,
columnId,
setRowEdited,
label,
required
});
case "input":
default:
return (
<TextFieldWrapper
cellVal={val}
isNull={isNull}
type={type}
valueVerification={valueVerification}
rowId={rowId}
columnId={columnId}
setRowEdited={setRowEdited}
mask={mask}
label={label}
required={required}
/>
);
}
};
CreateInput.propTypes = {
required: requiredPropType,
cellVal: cellValPropType.isRequired,
label: labelPropType,
valueVerification: valueVerificationPropType,
mask: maskPropType,
rowId: rowIdPropType.isRequired,
columnId: columnIdPropType.isRequired,
setRowEdited: setRowEditedPropType,
values: valuesPropType.isRequired,
dateFormatIn: dateFormatPropType.isRequired,
dateFormatOut: dateFormatPropType.isRequired,
type: typePropType.isRequired,
inputType: inputTypePropType.isRequired
};
export default CreateInput;