1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getSpaceUntilMaxLength = getSpaceUntilMaxLength;
- var _isElementType = require("../misc/isElementType");
- var _getValue = require("./getValue");
- var maxLengthSupportedTypes;
- (function (maxLengthSupportedTypes) {
- maxLengthSupportedTypes["email"] = "email";
- maxLengthSupportedTypes["password"] = "password";
- maxLengthSupportedTypes["search"] = "search";
- maxLengthSupportedTypes["telephone"] = "telephone";
- maxLengthSupportedTypes["text"] = "text";
- maxLengthSupportedTypes["url"] = "url";
- })(maxLengthSupportedTypes || (maxLengthSupportedTypes = {}));
- function getSpaceUntilMaxLength(element) {
- const value = (0, _getValue.getValue)(element);
- /* istanbul ignore if */
- if (value === null) {
- return undefined;
- }
- const maxLength = getSanitizedMaxLength(element);
- return maxLength ? maxLength - value.length : undefined;
- } // can't use .maxLength property because of a jsdom bug:
- // https://github.com/jsdom/jsdom/issues/2927
- function getSanitizedMaxLength(element) {
- var _element$getAttribute;
- if (!supportsMaxLength(element)) {
- return undefined;
- }
- const attr = (_element$getAttribute = element.getAttribute('maxlength')) != null ? _element$getAttribute : '';
- return /^\d+$/.test(attr) && Number(attr) >= 0 ? Number(attr) : undefined;
- }
- function supportsMaxLength(element) {
- return (0, _isElementType.isElementType)(element, 'textarea') || (0, _isElementType.isElementType)(element, 'input') && Boolean(maxLengthSupportedTypes[element.type]);
- }
|