UNPKG

@bootstrap-styled/ra-ui

Version:
118 lines (96 loc) 3.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.DateTimeInput = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _TextField = _interopRequireDefault(require("@material-ui/core/TextField")); var _raCore = require("ra-core"); var _sanitizeRestProps = _interopRequireDefault(require("./sanitizeRestProps")); var leftPad = function leftPad() { var nb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2; return function (value) { return ('0'.repeat(nb) + value).slice(-nb); }; }; var leftPad4 = leftPad(4); var leftPad2 = leftPad(2); var convertDateToString = function convertDateToString(v) { if (!(v instanceof Date) || isNaN(v)) return ''; var yyyy = leftPad4(v.getFullYear()); var MM = leftPad2(v.getMonth() + 1); var dd = leftPad2(v.getDate()); var hh = leftPad2(v.getHours()); var mm = leftPad2(v.getMinutes()); return "".concat(yyyy, "-").concat(MM, "-").concat(dd, "T").concat(hh, ":").concat(mm); }; var dateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/; var format = function format(value) { if (value == null || value === '') { return ''; } if (value instanceof Date) { return convertDateToString(value); } if (dateTimeRegex.test(value)) { return value; } return convertDateToString(new Date(value)); }; var parse = function parse(value) { return new Date(value); }; var DateTimeInput = function DateTimeInput(_ref) { var className = _ref.className, _ref$meta = _ref.meta, touched = _ref$meta.touched, error = _ref$meta.error, input = _ref.input, isRequired = _ref.isRequired, label = _ref.label, options = _ref.options, source = _ref.source, resource = _ref.resource, rest = (0, _objectWithoutProperties2.default)(_ref, ["className", "meta", "input", "isRequired", "label", "options", "source", "resource"]); return _react.default.createElement(_TextField.default, (0, _extends2.default)({}, input, { className: className, type: "datetime-local", margin: "normal", error: !!(touched && error), helperText: touched && error, label: _react.default.createElement(_raCore.FieldTitle, { label: label, source: source, resource: resource, isRequired: isRequired }), InputLabelProps: { shrink: true } }, options, (0, _sanitizeRestProps.default)(rest), { value: input.value })); }; exports.DateTimeInput = DateTimeInput; DateTimeInput.propTypes = { className: _propTypes.default.string, input: _propTypes.default.object, isRequired: _propTypes.default.bool, label: _propTypes.default.string, meta: _propTypes.default.object, options: _propTypes.default.object, resource: _propTypes.default.string, source: _propTypes.default.string }; DateTimeInput.defaultProps = { options: {} }; var _default = (0, _raCore.addField)(DateTimeInput, { format: format, parse: parse }); exports.default = _default;