@pinuts/bsr-uikit-relaunch
Version:
BSR UI-KIT Relaunch
105 lines (103 loc) • 5.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var dayjs = _interopRequireWildcard(require("dayjs"));
var _formBuilder = require("@pinuts/form-builder");
var _getUikitClassNames = require("../../utils/getUikitClassNames.js");
var _FormFieldChildPropTypes = _interopRequireDefault(require("../FormFieldWrapper/FormFieldChildPropTypes.jsx"));
var _FormFieldWrapper = _interopRequireDefault(require("../FormFieldWrapper/FormFieldWrapper.jsx"));
var _withFieldGroup = _interopRequireDefault(require("../../hooks/withFieldGroup.jsx"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // form-builder
// Ansonsten setzt dateJs das Jahr auf 1900
const isValidDate = value => value?.split('-')?.[0] > 1900 && dayjs(value).isValid();
const getToday = () => dayjs().format('YYYY-MM-DD');
const DateInputField = _ref => {
let {
minDate,
maxDate,
className,
readOnly,
inputProps,
onChange = () => {},
field = {},
value,
isRequired,
isInvalid,
ariaAttributes,
disabled,
viewMode,
dateFormat,
monthView = false,
dayOfMonth = 'first',
valueFormat = 'YYYY-MM-DD'
} = _ref;
const handleChange = event => {
if (monthView && isValidDate(event.target.value)) {
const selectedDate = dayjs(event.target.value);
onChange((dayOfMonth === 'first' ? selectedDate.startOf('month') : selectedDate.endOf('month')).format(valueFormat));
} else {
onChange(event.target.value);
}
};
const formControlClassNames = (0, _getUikitClassNames.getFormControlClassNames)(isInvalid, readOnly, disabled, className);
const usedValue = (0, _react.useMemo)(() => {
if (monthView && isValidDate(value)) {
return dayjs(value).format('YYYY-MM');
}
return value;
}, [value, monthView]);
if (viewMode) {
if (!value) {
return '';
}
return DateInputField.formFieldConfig.formatViewMode(value, dateFormat);
}
const maxDateToUse = maxDate === 'today' ? getToday() : maxDate;
const minDateToUse = minDate === 'today' ? getToday() : minDate;
return /*#__PURE__*/_react.default.createElement("div", {
className: "date-input-container"
}, /*#__PURE__*/_react.default.createElement("input", _extends({
type: monthView ? 'month' : 'date',
className: formControlClassNames,
required: isRequired,
pattern: monthView ? '' : '\\d{4}-\\d{2}-\\d{2}',
max: maxDateToUse,
min: minDateToUse
}, field, ariaAttributes, inputProps, {
value: usedValue || '',
onChange: handleChange
})));
};
DateInputField.propTypes = {
..._FormFieldChildPropTypes.default,
minDate: _propTypes.default.string,
maxDate: _propTypes.default.string,
monthView: _propTypes.default.bool,
dayOfMonth: _propTypes.default.oneOf(['first', 'last']),
valueFormat: _propTypes.default.string,
className: _propTypes.default.string,
onChange: _propTypes.default.func,
key: _propTypes.default.string,
dateFormat: _propTypes.default.string
};
DateInputField.formFieldConfig = {
formatViewMode: function (value) {
let dateFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'DD.MM.YYYY';
return value ? dayjs(value).format(dateFormat) : '';
}
};
const HigherOrderDateInputField = (0, _withFieldGroup.default)(DateInputField);
// wrap the field label, error message help text and more
const WrappedDateInputField = props => {
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(HigherOrderDateInputField, props));
};
(0, _formBuilder.registerComponent)('DateInputField', WrappedDateInputField);
(0, _formBuilder.registerComponent)('DateInputFieldbasic', HigherOrderDateInputField);
var _default = exports.default = HigherOrderDateInputField;