UNPKG

formiojs

Version:

Common js library for client side interaction with <form.io>

756 lines (602 loc) • 30.8 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } require("core-js/modules/es.reflect.construct.js"); require("core-js/modules/es.reflect.get.js"); require("core-js/modules/es.object.get-own-property-descriptor.js"); require("core-js/modules/es.reflect.set.js"); require("core-js/modules/es.object.keys.js"); require("core-js/modules/es.symbol.js"); require("core-js/modules/web.dom-collections.for-each.js"); require("core-js/modules/es.object.get-own-property-descriptors.js"); require("core-js/modules/es.symbol.description.js"); require("core-js/modules/es.symbol.iterator.js"); require("core-js/modules/es.array.iterator.js"); require("core-js/modules/es.string.iterator.js"); require("core-js/modules/web.dom-collections.iterator.js"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.string.replace.js"); require("core-js/modules/es.array.filter.js"); require("core-js/modules/es.object.to-string.js"); require("core-js/modules/es.string.split.js"); require("core-js/modules/es.array.map.js"); require("core-js/modules/es.string.match.js"); require("core-js/modules/es.array.find.js"); require("core-js/modules/es.regexp.to-string.js"); require("core-js/modules/es.object.get-prototype-of.js"); var _Formio = require("../Formio"); var _InputWidget2 = _interopRequireDefault(require("./InputWidget")); var _utils = require("../utils/utils"); var _moment = _interopRequireDefault(require("moment")); var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function set(target, property, value, receiver) { if (typeof Reflect !== "undefined" && Reflect.set) { set = Reflect.set; } else { set = function set(target, property, value, receiver) { var base = _superPropBase(target, property); var desc; if (base) { desc = Object.getOwnPropertyDescriptor(base, property); if (desc.set) { desc.set.call(receiver, value); return true; } else if (!desc.writable) { return false; } } desc = Object.getOwnPropertyDescriptor(receiver, property); if (desc) { if (!desc.writable) { return false; } desc.value = value; Object.defineProperty(receiver, property, desc); } else { _defineProperty(receiver, property, value); } return true; }; } return set(target, property, value, receiver); } function _set(target, property, value, receiver, isStrict) { var s = set(target, property, value, receiver || target); if (!s && isStrict) { throw new Error('failed to set property'); } return value; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var DEFAULT_FORMAT = 'yyyy-MM-dd hh:mm a'; var ISO_8601_FORMAT = 'yyyy-MM-ddTHH:mm:ssZ'; var CDN_URL = 'https://cdn.form.io/'; var JSDELIVR_CDN_URL = 'https://cdn.jsdelivr.net'; var CDN_FLATPICKR_LOCALE_URL = 'https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.9/l10n'; var SHORTCUT_BUTTONS_PLUGIN_URL = '/npm/shortcut-buttons-flatpickr@0.1.0/dist/'; var SHORTCUT_BUTTONS_CSS = "".concat(JSDELIVR_CDN_URL).concat(SHORTCUT_BUTTONS_PLUGIN_URL, "themes/light.min.css"); var SHORTCUT_BUTTONS_PLUGIN = "".concat(JSDELIVR_CDN_URL).concat(SHORTCUT_BUTTONS_PLUGIN_URL, "shortcut-buttons-flatpickr.min.js"); var isIEBrowser = (0, _utils.getBrowserInfo)().ie; var CalendarWidget = /*#__PURE__*/function (_InputWidget) { _inherits(CalendarWidget, _InputWidget); var _super = _createSuper(CalendarWidget); /* eslint-enable camelcase */ function CalendarWidget(settings, component, instance, index) { var _this; _classCallCheck(this, CalendarWidget); _this = _super.call(this, settings, component, instance, index); // Change the format to map to the settings. if (_this.settings.noCalendar) { _this.settings.format = _this.settings.format.replace(/yyyy-MM-dd /g, ''); } if (!_this.settings.enableTime) { _this.settings.format = _this.settings.format.replace(/ hh:mm a$/g, ''); _this.settings.dateFormat = _this.settings.format; } else if (_this.settings.time_24hr) { _this.settings.format = _this.settings.format.replace(/hh:mm a$/g, 'HH:mm'); } return _this; } /** * Load the timezones. * * @return {boolean} TRUE if the zones are loading, FALSE otherwise. */ _createClass(CalendarWidget, [{ key: "loadZones", value: function loadZones() { var _this2 = this; var timezone = this.timezone; if (!(0, _utils.zonesLoaded)() && (0, _utils.shouldLoadZones)(timezone)) { (0, _utils.loadZones)(timezone).then(function () { return _this2.emit('redraw'); }); // Return zones are loading. return true; } // Zones are already loaded. return false; } }, { key: "attach", value: function attach(input) { var _this3 = this, _this$component$short; var superAttach = _get(_getPrototypeOf(CalendarWidget.prototype), "attach", this).call(this, input); var dateFormatInfo = (0, _utils.getLocaleDateFormatInfo)(this.settings.language); this.defaultFormat = { date: dateFormatInfo.dayFirst ? 'd/m/Y ' : 'm/d/Y ', time: 'G:i K' }; this.closedOn = 0; this.valueFormat = this.settings.saveAs === 'date' ? ISO_8601_FORMAT : this.settings.dateFormat || ISO_8601_FORMAT; this.valueMomentFormat = (0, _utils.convertFormatToMoment)(this.valueFormat); var isReadOnly = this.settings.readOnly; this.settings.minDate = isReadOnly ? null : (0, _utils.getDateSetting)(this.settings.minDate); this.settings.maxDate = isReadOnly ? null : (0, _utils.getDateSetting)(this.settings.maxDate); this.settings.disable = this.disabledDates; this.settings.disableWeekends ? this.settings.disable.push(this.disableWeekends) : ''; this.settings.disableWeekdays ? this.settings.disable.push(this.disableWeekdays) : ''; this.settings.disableFunction ? this.settings.disable.push(this.disableFunction) : ''; this.settings.wasDefaultValueChanged = false; this.settings.defaultValue = ''; this.settings.manualInputValue = ''; this.settings.isManuallyOverriddenValue = false; this.settings.currentValue = ''; this.settings.altFormat = (0, _utils.convertFormatToFlatpickr)(this.settings.format); this.settings.dateFormat = (0, _utils.convertFormatToFlatpickr)(this.settings.dateFormat); this.settings.position = 'auto center'; this.settings.onChange = function () { if (_this3.settings.allowInput) { if (_this3.settings.isManuallyOverriddenValue && _this3.settings.enableTime) { _this3.calendar._input.value = _this3.settings.manualInputValue; } else { _this3.settings.manualInputValue = ''; } _this3.settings.isManuallyOverriddenValue = false; } _this3.emit('update'); }; this.settings.onOpen = function () { return _this3.hook('onCalendarOpen'); }; this.settings.onClose = function () { _this3.hook('onCalendarClose'); _this3.closedOn = Date.now(); if (_this3.settings.allowInput && _this3.settings.enableTime) { _this3.calendar._input.value = _this3.settings.manualInputValue || _this3.calendar._input.value; _this3.settings.isManuallyOverriddenValue = false; _this3.emit('update'); } if (_this3.settings.wasDefaultValueChanged) { _this3.calendar._input.value = _this3.settings.defaultValue; _this3.settings.wasDefaultValueChanged = false; } if (_this3.calendar) { _this3.emit('blur'); } }; _Formio.GlobalFormio.requireLibrary('flatpickr-css', 'flatpickr', [{ type: 'styles', src: "".concat(CDN_URL).concat(this.flatpickrType, "/flatpickr.min.css") }], true); if (this.component.shortcutButtons) { this.component.shortcutButtons = this.component.shortcutButtons.filter(function (btn) { return btn.label && btn.onClick; }); } if ((_this$component$short = this.component.shortcutButtons) !== null && _this$component$short !== void 0 && _this$component$short.length) { _Formio.GlobalFormio.requireLibrary('shortcut-buttons-flatpickr-css', 'ShortcutButtonsPlugin', [{ type: 'styles', src: SHORTCUT_BUTTONS_CSS }], true); } return superAttach.then(function () { var _this3$component$shor; if ((_this3$component$shor = _this3.component.shortcutButtons) !== null && _this3$component$shor !== void 0 && _this3$component$shor.length) { return _Formio.GlobalFormio.requireLibrary('shortcut-buttons-flatpickr', 'ShortcutButtonsPlugin', SHORTCUT_BUTTONS_PLUGIN, true); } }).then(function (ShortcutButtonsPlugin) { return _Formio.GlobalFormio.requireLibrary('flatpickr', 'flatpickr', "".concat(CDN_URL).concat(_this3.flatpickrType, "/flatpickr.min.js"), true).then(function (Flatpickr) { var _this3$component$shor2; if ((_this3$component$shor2 = _this3.component.shortcutButtons) !== null && _this3$component$shor2 !== void 0 && _this3$component$shor2.length && ShortcutButtonsPlugin) { _this3.initShortcutButtonsPlugin(ShortcutButtonsPlugin); } _this3.settings.formatDate = _this3.getFlatpickrFormatDate(Flatpickr); if (_this3._input) { var locale = _this3.settings.locale; if (locale && locale.length >= 2 && locale !== 'en') { return _Formio.GlobalFormio.requireLibrary("flatpickr-".concat(locale), "flatpickr-".concat(locale), "".concat(CDN_FLATPICKR_LOCALE_URL, "/").concat(locale, ".min.js"), false, function () { return _this3.initFlatpickr(Flatpickr); }); } else { _this3.initFlatpickr(Flatpickr); } } }); }).catch(function (err) { console.warn(err); }); } }, { key: "disableWeekends", get: function get() { return function (date) { return date.getDay() === 0 || date.getDay() === 6; }; } }, { key: "disableWeekdays", get: function get() { var _this4 = this; return function (date) { return !_this4.disableWeekends(date); }; } }, { key: "disableFunction", get: function get() { var _this5 = this; return function (date) { return _this5.evaluate("return ".concat(_this5.settings.disableFunction), { date: date }); }; } }, { key: "defineTimezone", value: function defineTimezone() { if (this.settings.timezone) { return this.settings.timezone; } if (this.settings.displayInTimezone === 'submission' && this.settings.submissionTimezone) { return this.settings.submissionTimezone; } if (this.settings.displayInTimezone === 'utc') { return 'UTC'; } // Return current timezone if none are provided. return (0, _utils.currentTimezone)(); } }, { key: "timezone", get: function get() { return this.defineTimezone(); } }, { key: "defaultSettings", get: function get() { return CalendarWidget.defaultSettings; } }, { key: "addSuffix", value: function addSuffix(suffix) { var _this6 = this; this.addEventListener(suffix, 'click', function (event) { event.stopPropagation(); if (_this6.calendar) { if (!_this6.calendar.isOpen && Date.now() - _this6.closedOn > 200) { _this6.calendar.open(); } else if (_this6.calendar.isOpen) { _this6.calendar.close(); } } }); return suffix; } }, { key: "disabled", set: function set(disabled) { _set(_getPrototypeOf(CalendarWidget.prototype), "disabled", disabled, this, true); if (this.calendar) { if (disabled) { this.calendar._input.setAttribute('disabled', 'disabled'); } else { this.calendar._input.removeAttribute('disabled'); } this.calendar.close(); this.calendar.redraw(); } } }, { key: "input", get: function get() { return this.calendar ? this.calendar.altInput : null; } }, { key: "disabledDates", get: function get() { if (this.settings.disabledDates) { var disabledDates = this.settings.disabledDates.split(','); return disabledDates.map(function (item) { var dateMask = /\d{4}-\d{2}-\d{2}/g; var dates = item.match(dateMask); if (dates && dates.length) { return dates.length === 1 ? item.match(dateMask)[0] : { from: item.match(dateMask)[0], to: item.match(dateMask)[1] }; } }); } return []; } }, { key: "localeFormat", get: function get() { var format = ''; if (this.settings.enableDate) { format += this.defaultFormat.date; } if (this.settings.enableTime) { format += this.defaultFormat.time; } return format; } }, { key: "dateTimeFormat", get: function get() { return this.settings.useLocaleSettings ? this.localeFormat : (0, _utils.convertFormatToFlatpickr)(this.dateFormat); } }, { key: "dateFormat", get: function get() { return _lodash.default.get(this.settings, 'format', DEFAULT_FORMAT); } /** * Return the date value. * * @param date * @param format * @return {string} */ }, { key: "getDateValue", value: function getDateValue(date, format, useTimezone) { if (useTimezone) { return (0, _utils.momentDate)(date, this.valueFormat, this.timezone).format((0, _utils.convertFormatToMoment)(format)); } return (0, _moment.default)(date).format((0, _utils.convertFormatToMoment)(format)); } }, { key: "flatpickrType", get: function get() { return 'flatpickr'; } /** * Return the value of the selected date. * * @return {*} */ }, { key: "getValue", value: function getValue() { // Standard output format. if (!this.calendar) { return _get(_getPrototypeOf(CalendarWidget.prototype), "getValue", this).call(this); } // Get the selected dates from the calendar widget. var dates = this.calendar.selectedDates; if (!dates || !dates.length) { return _get(_getPrototypeOf(CalendarWidget.prototype), "getValue", this).call(this); } if (!(dates[0] instanceof Date)) { return 'Invalid Date'; } return this.getDateValue(dates[0], this.valueFormat, this.settings.saveAs === 'date'); } }, { key: "isValueISO8601", value: function isValueISO8601(value) { return value && typeof value === 'string' && value.match(/-[0-9]{2}T[0-9]{2}:/); } /** * Set the selected date value. * * @param value */ }, { key: "setValue", value: function setValue(value) { var saveAsText = this.settings.saveAs === 'text'; if (!this.calendar) { value = value ? (0, _utils.formatDate)(value, (0, _utils.convertFormatToMoment)(this.settings.format), this.timezone, (0, _utils.convertFormatToMoment)(this.valueMomentFormat)) : value; return _get(_getPrototypeOf(CalendarWidget.prototype), "setValue", this).call(this, value); } if (this.isValueISO8601(value)) { this.calendar.setDate((0, _moment.default)(value).toDate(), false); } else if (value) { var zonesLoading = this.loadZones(); if (!saveAsText && this.settings.readOnly && !zonesLoading) { this.calendar.setDate((0, _utils.momentDate)(value, this.valueFormat, this.timezone).toDate(), false); } else { this.calendar.setDate((0, _moment.default)(value, this.valueMomentFormat).toDate(), false); } } else { this.calendar.clear(false); } } }, { key: "getValueAsString", value: function getValueAsString(value, format) { var inputFormat = format || this.dateFormat; var valueFormat = this.calendar ? this.valueFormat : this.settings.dateFormat; if (this.settings.saveAs === 'text' && this.componentInstance.parent && !this.settings.readOnly) { return (0, _moment.default)(value, (0, _utils.convertFormatToMoment)(valueFormat)).format((0, _utils.convertFormatToMoment)(valueFormat)); } return (0, _utils.formatDate)(value, inputFormat, this.timezone, (0, _utils.convertFormatToMoment)(valueFormat)); } }, { key: "setErrorClasses", value: function setErrorClasses(hasErrors) { if (!this.input) { return; } if (hasErrors) { this.addClass(this.input, 'is-invalid'); this.input.setAttribute('aria-invalid', 'true'); } else { this.removeClass(this.input, 'is-invalid'); this.input.setAttribute('aria-invalid', 'false'); } } }, { key: "validationValue", value: function validationValue(value) { if (typeof value === 'string') { return new Date(value); } return value.map(function (val) { return new Date(val); }); } }, { key: "isCalendarElement", value: function isCalendarElement(element) { var _this$calendar, _this$calendar$config, _this$calendar$config2, _this$calendar2, _this$calendar2$calen; if (!element) { return true; } if ((_this$calendar = this.calendar) !== null && _this$calendar !== void 0 && (_this$calendar$config = _this$calendar.config) !== null && _this$calendar$config !== void 0 && (_this$calendar$config2 = _this$calendar$config.appendTo) !== null && _this$calendar$config2 !== void 0 && _this$calendar$config2.contains(element)) { return true; } return (_this$calendar2 = this.calendar) === null || _this$calendar2 === void 0 ? void 0 : (_this$calendar2$calen = _this$calendar2.calendarContainer) === null || _this$calendar2$calen === void 0 ? void 0 : _this$calendar2$calen.contains(element); } }, { key: "initFlatpickr", value: function initFlatpickr(Flatpickr) { var _this7 = this; var dateValue = this._input.value; // Create a new flatpickr. this.calendar = new Flatpickr(this._input, _objectSpread(_objectSpread({}, this.settings), {}, { disableMobile: true })); if (dateValue) { if (this.isValueISO8601(dateValue)) { this.calendar.setDate((0, _moment.default)(dateValue).toDate(), false, this.settings.altFormat); } else { this.calendar.setDate((0, _moment.default)(dateValue, (0, _utils.convertFormatToMoment)(this.dateFormat)).toDate(), false, this.settings.altFormat); } } this.calendar.altInput.addEventListener('input', function (event) { if (_this7.settings.allowInput && _this7.settings.currentValue !== event.target.value) { _this7.settings.manualInputValue = event.target.value; _this7.settings.isManuallyOverriddenValue = true; _this7.settings.currentValue = event.target.value; } if (event.target.value === '' && _this7.calendar.selectedDates.length > 0) { _this7.settings.wasDefaultValueChanged = true; _this7.settings.defaultValue = event.target.value; _this7.calendar.clear(); } else { _this7.settings.wasDefaultValueChanged = false; } }); if (!this.settings.readOnly) { // Enforce the input mask of the format. this.setInputMask(this.calendar._input, (0, _utils.convertFormatToMask)(this.settings.format)); } // Fixes an issue with IE11 where value is set only after the second click // TODO: Remove when the issue is solved in the flatpickr library if (isIEBrowser) { // Remove the original blur listener, because value will be set to empty since relatedTarget is null in IE11 var originalBlurListener = this.calendar._handlers.find(function (_ref) { var event = _ref.event, element = _ref.element; return event === 'blur' && element === _this7.calendar._input; }); this.calendar._input.removeEventListener('blur', originalBlurListener.handler); // Add the same event listener as in the original library, but with workaround for IE11 issue this.addEventListener(this.calendar._input, 'blur', function (event) { var activeElement = _this7.settings.shadowRoot ? _this7.settings.shadowRoot.activeElement : document.activeElement; var relatedTarget = event.relatedTarget ? event.relatedTarget : activeElement; var isInput = event.target === _this7.calendar._input; if (isInput && !_this7.isCalendarElement(relatedTarget)) { _this7.calendar.setDate(_this7.calendar._input.value, true, event.target === _this7.calendar.altInput ? _this7.calendar.config.altFormat : _this7.calendar.config.dateFormat); } }); } // Make sure we commit the value after a blur event occurs. this.addEventListener(this.calendar._input, 'blur', function (event) { var activeElement = _this7.settings.shadowRoot ? _this7.settings.shadowRoot.activeElement : document.activeElement; var relatedTarget = event.relatedTarget ? event.relatedTarget : activeElement; if (!(isIEBrowser && !relatedTarget) && !_this7.isCalendarElement(relatedTarget)) { var inputValue = _this7.calendar.input.value; var _dateValue = inputValue && _this7.settings.enableTime ? (0, _moment.default)(_this7.calendar.input.value, (0, _utils.convertFormatToMoment)(_this7.valueFormat)).toDate() : inputValue; _this7.calendar.setDate(_dateValue, true, _this7.settings.altFormat); } else if (!_this7.calendar.input.value && _this7.calendar.config.noCalendar) { var _this7$calendar, _this7$calendar$confi, _this7$calendar2, _this7$calendar2$conf; var value = (0, _moment.default)({ hour: (_this7$calendar = _this7.calendar) === null || _this7$calendar === void 0 ? void 0 : (_this7$calendar$confi = _this7$calendar.config) === null || _this7$calendar$confi === void 0 ? void 0 : _this7$calendar$confi.defaultHour, minute: (_this7$calendar2 = _this7.calendar) === null || _this7$calendar2 === void 0 ? void 0 : (_this7$calendar2$conf = _this7$calendar2.config) === null || _this7$calendar2$conf === void 0 ? void 0 : _this7$calendar2$conf.defaultMinute }).toDate(); _this7.calendar.setDate(value, true, _this7.settings.format); } }); // FJS-1103: When hit the enter button, the field not saving the year correctly this.addEventListener(this.calendar.altInput, 'keydown', function (event) { if (event.keyCode === 13) { if (_this7.calendar.isOpen) { _this7.calendar.close(); event.stopPropagation(); } } }); } }, { key: "initShortcutButtonsPlugin", value: function initShortcutButtonsPlugin(ShortcutButtonsPlugin) { var _this8 = this; this.settings.plugins = [// eslint-disable-next-line new-cap ShortcutButtonsPlugin({ button: this.component.shortcutButtons.map(function (btn) { return { label: btn.label, attributes: btn.attribute }; }), onClick: function onClick(index) { var getValue = _this8.component.shortcutButtons[index].onClick; var date = _this8.evaluate(getValue, { date: new Date() }, 'date'); _this8.calendar.setDate(date, true); } })]; } }, { key: "getFlatpickrFormatDate", value: function getFlatpickrFormatDate(Flatpickr) { var _this9 = this; return function (date, format) { // Only format this if this is the altFormat and the form is readOnly. if (_this9.settings.readOnly && format === _this9.settings.altFormat) { if (!_this9.settings.enableTime || _this9.loadZones()) { return Flatpickr.formatDate(date, format); } var currentValue = new Date(_this9.getValue()); if (currentValue.toString() === date.toString()) { var compValue = _this9.componentInstance.dataValue; if (Array.isArray(compValue)) { compValue = compValue[_this9.valueIndex]; } return (0, _utils.formatOffset)(Flatpickr.formatDate.bind(Flatpickr), new Date(compValue), format, _this9.timezone); } return (0, _utils.formatOffset)(Flatpickr.formatDate.bind(Flatpickr), date, format, _this9.timezone); } return Flatpickr.formatDate(date, format); }; } }, { key: "destroy", value: function destroy() { _get(_getPrototypeOf(CalendarWidget.prototype), "destroy", this).call(this); if (this.calendar) { this.calendar.destroy(); } } }], [{ key: "defaultSettings", get: /* eslint-disable camelcase */ function get() { return { type: 'calendar', altInput: true, allowInput: true, clickOpens: true, enableDate: true, enableTime: true, mode: 'single', noCalendar: false, format: DEFAULT_FORMAT, dateFormat: ISO_8601_FORMAT, useLocaleSettings: false, language: 'us-en', hourIncrement: 1, minuteIncrement: 5, time_24hr: false, saveAs: 'date', displayInTimezone: '', timezone: '', disable: [], minDate: '', maxDate: '' }; } }]); return CalendarWidget; }(_InputWidget2.default); exports.default = CalendarWidget;