blob: 17acad10bc1bbd096f7f6d32c459eb2b1b1a2d6e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import InputValidator from '../../../validators/input_validator';
const errorMessageClass = 'gl-field-error';
export default class LengthValidator extends InputValidator {
constructor(opts = {}) {
super();
const container = opts.container || '';
const validateLengthElements = document.querySelectorAll(`${container} .js-validate-length`);
validateLengthElements.forEach((element) =>
element.addEventListener('input', this.eventHandler.bind(this)),
);
}
eventHandler(event) {
this.inputDomElement = event.target;
this.inputErrorMessage = this.inputDomElement.parentElement.querySelector(
`.${errorMessageClass}`,
);
const { value } = this.inputDomElement;
const {
minLength,
minLengthMessage,
maxLengthMessage,
maxLength,
} = this.inputDomElement.dataset;
this.invalidInput = false;
if (value.length > parseInt(maxLength, 10)) {
this.invalidInput = true;
this.errorMessage = maxLengthMessage;
}
if (value.length < parseInt(minLength, 10)) {
this.invalidInput = true;
this.errorMessage = minLengthMessage;
}
this.setValidationStateAndMessage();
}
}
|