51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
import $ from 'jquery';
|
|
|
|
export default class UserInternalRegexHandler {
|
|
constructor() {
|
|
this.regexPattern = $('[data-user-internal-regex-pattern]').data('user-internal-regex-pattern');
|
|
if (this.regexPattern && this.regexPattern !== '') {
|
|
this.regexOptions = $('[data-user-internal-regex-options]').data(
|
|
'user-internal-regex-options',
|
|
);
|
|
this.external = $('#user_external');
|
|
this.warningMessage = $('#warning_external_automatically_set');
|
|
this.addListenerToEmailField();
|
|
this.addListenerToUserExternalCheckbox();
|
|
}
|
|
}
|
|
|
|
addListenerToEmailField() {
|
|
$('#user_email').on('input', (event) => {
|
|
this.setExternalCheckbox(event.currentTarget.value);
|
|
});
|
|
}
|
|
|
|
addListenerToUserExternalCheckbox() {
|
|
this.external.on('click', () => {
|
|
this.warningMessage.addClass('hidden');
|
|
});
|
|
}
|
|
|
|
isEmailInternal(email) {
|
|
const regex = new RegExp(this.regexPattern, this.regexOptions);
|
|
return regex.test(email);
|
|
}
|
|
|
|
setExternalCheckbox(email) {
|
|
const isChecked = this.external.prop('checked');
|
|
if (this.isEmailInternal(email)) {
|
|
if (isChecked) {
|
|
this.external.prop('checked', false);
|
|
this.warningMessage.removeClass('hidden');
|
|
}
|
|
} else if (!isChecked) {
|
|
this.external.prop('checked', true);
|
|
this.warningMessage.addClass('hidden');
|
|
}
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// eslint-disable-next-line
|
|
new UserInternalRegexHandler();
|
|
});
|