12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 'use strict';
- exports.__esModule = true;
- exports.default = dateValidator;
- exports.correctFormat = correctFormat;
- var _moment = require('moment');
- var _moment2 = _interopRequireDefault(_moment);
- var _date = require('../helpers/date');
- var _editors = require('../editors');
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Date cell validator
- *
- * @private
- * @validator DateValidator
- * @dependencies moment
- * @param {*} value - Value of edited cell
- * @param {Function} callback - Callback called with validation result
- */
- function dateValidator(value, callback) {
- var valid = true;
- var dateEditor = (0, _editors.getEditorInstance)('date', this.instance);
- if (value == null) {
- value = '';
- }
- var isValidDate = (0, _moment2.default)(new Date(value)).isValid() || (0, _moment2.default)(value, dateEditor.defaultDateFormat).isValid();
- // is it in the specified format
- var isValidFormat = (0, _moment2.default)(value, this.dateFormat || dateEditor.defaultDateFormat, true).isValid();
- if (this.allowEmpty && value === '') {
- isValidDate = true;
- isValidFormat = true;
- }
- if (!isValidDate) {
- valid = false;
- }
- if (!isValidDate && isValidFormat) {
- valid = true;
- }
- if (isValidDate && !isValidFormat) {
- if (this.correctFormat === true) {
- // if format correction is enabled
- var correctedValue = correctFormat(value, this.dateFormat);
- var row = this.instance.runHooks('unmodifyRow', this.row);
- var column = this.instance.runHooks('unmodifyCol', this.col);
- this.instance.setDataAtCell(row, column, correctedValue, 'dateValidator');
- valid = true;
- } else {
- valid = false;
- }
- }
- callback(valid);
- };
- /**
- * Format the given string using moment.js' format feature
- *
- * @param {String} value
- * @param {String} dateFormat
- * @returns {String}
- */
- function correctFormat(value, dateFormat) {
- var dateFromDate = (0, _moment2.default)((0, _date.getNormalizedDate)(value));
- var dateFromMoment = (0, _moment2.default)(value, dateFormat);
- var isAlphanumeric = value.search(/[A-z]/g) > -1;
- var date = void 0;
- if (dateFromDate.isValid() && dateFromDate.format('x') === dateFromMoment.format('x') || !dateFromMoment.isValid() || isAlphanumeric) {
- date = dateFromDate;
- } else {
- date = dateFromMoment;
- }
- return date.format(dateFormat);
- };
|