mirror of
https://github.com/a2nt/webpack-bootstrap-ui-kit.git
synced 2024-09-28 20:29:00 +02:00
72 lines
1.7 KiB
JavaScript
Executable File
72 lines
1.7 KiB
JavaScript
Executable File
import $ from 'jquery';
|
|
import Events from '../_events';
|
|
import Spinner from './_ui.spinner';
|
|
|
|
const NoCaptcha = (($) => {
|
|
// Constants
|
|
const W = window;
|
|
const D = document;
|
|
const $Body = $('body');
|
|
|
|
const NAME = 'NoCaptcha';
|
|
|
|
class NoCaptcha {
|
|
static init() {
|
|
const ui = this;
|
|
ui.dispose();
|
|
|
|
console.log(`Initializing: ${NAME}`);
|
|
this.renderCaptcha();
|
|
}
|
|
|
|
static dispose() {
|
|
console.log(`Destroying: ${NAME}`);
|
|
}
|
|
|
|
static renderCaptcha() {
|
|
console.log(`Rendering Captcha: ${NAME}`);
|
|
|
|
if (typeof grecaptcha === 'undefined') {
|
|
console.log('Captcha API isn\'t available yet');
|
|
}
|
|
|
|
const $_noCaptchaFields = $('.g-recaptcha');
|
|
|
|
const submitListener = (e) => {
|
|
const $field = $(e.currentTarget).find('.g-recaptcha');
|
|
grecaptcha.execute($field.data('widgetid'));
|
|
};
|
|
|
|
$_noCaptchaFields.each((i, field) => {
|
|
const $field = $(field);
|
|
|
|
if ($field.data('widgetid')) {
|
|
return;
|
|
}
|
|
|
|
const $form = $field.data('form') ? $(`#${ $field.data('form')}`) : $field.parents('form');
|
|
|
|
const widget_id = grecaptcha.render(field, $field.data());
|
|
$field.data('widgetid', widget_id);
|
|
|
|
// For the invisible captcha we need to setup some callback listeners
|
|
if ($field.data('size') === 'invisible' && !$field.data('callback')) {
|
|
grecaptcha.execute(widget_id);
|
|
$form.on('submit', submitListener);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
$(W).on(`${Events.AJAX}`, () => {
|
|
NoCaptcha.init();
|
|
});
|
|
|
|
W.NoCaptcha = NoCaptcha;
|
|
W.noCaptchaFieldRender = NoCaptcha.renderCaptcha;
|
|
|
|
return NoCaptcha;
|
|
})($);
|
|
|
|
export default NoCaptcha;
|