@bootstrap-styled/ra-ui
Version:
UI components for react-admin
118 lines (96 loc) • 3.37 kB
JavaScript
"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;