You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.calculateNewValue = calculateNewValue; |
|
|
|
var _selectionRange = require("./selectionRange"); |
|
|
|
var _getValue2 = require("./getValue"); |
|
|
|
var _isValidDateValue = require("./isValidDateValue"); |
|
|
|
var _isValidInputTimeValue = require("./isValidInputTimeValue"); |
|
|
|
function calculateNewValue(newEntry, element, value = (() => { |
|
var _getValue; |
|
|
|
return (_getValue = (0, _getValue2.getValue)(element)) != null ? _getValue : |
|
/* istanbul ignore next */ |
|
''; |
|
})(), selectionRange = (0, _selectionRange.getSelectionRange)(element), deleteContent) { |
|
const selectionStart = selectionRange.selectionStart === null ? value.length : selectionRange.selectionStart; |
|
const selectionEnd = selectionRange.selectionEnd === null ? value.length : selectionRange.selectionEnd; |
|
const prologEnd = Math.max(0, selectionStart === selectionEnd && deleteContent === 'backward' ? selectionStart - 1 : selectionStart); |
|
const prolog = value.substring(0, prologEnd); |
|
const epilogStart = Math.min(value.length, selectionStart === selectionEnd && deleteContent === 'forward' ? selectionEnd + 1 : selectionEnd); |
|
const epilog = value.substring(epilogStart, value.length); |
|
let newValue = `${prolog}${newEntry}${epilog}`; |
|
const newSelectionStart = prologEnd + newEntry.length; |
|
|
|
if (element.type === 'date' && !(0, _isValidDateValue.isValidDateValue)(element, newValue)) { |
|
newValue = value; |
|
} |
|
|
|
if (element.type === 'time' && !(0, _isValidInputTimeValue.isValidInputTimeValue)(element, newValue)) { |
|
if ((0, _isValidInputTimeValue.isValidInputTimeValue)(element, newEntry)) { |
|
newValue = newEntry; |
|
} else { |
|
newValue = value; |
|
} |
|
} |
|
|
|
return { |
|
newValue, |
|
newSelectionStart |
|
}; |
|
} |