@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 10.5 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`),require(`kendo.slider.min.js`),require(`kendo.textbox.min.js`),require(`kendo.skeletoncontainer.min.js`),require(`kendo.icons.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`,`kendo.slider.min`,`kendo.textbox.min`,`kendo.skeletoncontainer.min`,`kendo.icons.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Captcha={}),e.kendo._globals.Core,e.kendo._globals.Slider,e.kendo._globals.Textbox,e.kendo._globals.Skeletoncontainer,e.kendo._globals.Icons))})(this,function(e,t,n,r,i,a){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let o={id:`captcha`,name:`Captcha`,category:`web`,description:`The Captcha widget displays captcha validation image and an input so that user case be validated against captcha value.`,depends:[`core`,`slider`,`textbox`,`skeletoncontainer`,`icons`]};(function(e,t){var n=window.kendo,r=n.ui.Widget,i=e.extend,a=e.ajax,o=n.isFunction,s=`string`,c=`.kendoCaptcha`,l=`click`,u=`blur`,d=`change`,f=`requestStart`,p=`requestEnd`,m=`error`,h={wrapper:`k-captcha`,textbox:`k-textbox`,button:`k-button`,buttonIcon:`k-button-icon`,iconButton:`k-icon-button`,resetIcon:`arrow-rotate-cw`,audioIcon:`volume-up`,disabled:`k-disabled`,inputWrapper:`k-captcha-input k-vstack`,imageWrapper:`k-captcha-image-wrap k-hstack`,captchaImage:`k-captcha-image`,buttonsWrapper:`k-captcha-image-controls k-vstack`,volumeControlWrapper:`k-captcha-volume-control k-vstack k-pos-absolute`,hidden:`k-hidden`,success:`k-captcha-validation-message k-text-success`,loading:`k-captcha-loading`},g=r.extend({init:function(e,t){var i=this;r.fn.init.call(i,e,t),i._captchaField=i.options.dataCaptchaField,i._valueField=i.element.attr(`name`)||`captcha`,i._captchaIdField=i.options.dataCaptchaIdField,i._wrapper(),i._idInput(),i._captchaImage(),(i.options.audioButton||i.options.resetButton)&&i._buttons(),(!i.options.captcha||!i.options.captchaId)&&i._resetHandler(),i.options.validateOnBlur&&i.element.on(u+c,function(){i._validationHandler()}),i.element.on(d+c,function(e){delete i._isValid,i.trigger(d,{value:i.element.val(),originalEvent:e})}),n.notify(i)},events:[d,f,p,m],options:{name:`Captcha`,dataCaptchaField:`captcha`,dataCaptchaIdField:`captchaId`,captchaId:``,captcha:null,handler:null,audioHandler:null,validationHandler:null,validateOnBlur:!1,resetButton:!0,audioButton:!0,volumeControl:!0,messages:{reset:`Reset captcha`,audio:`Speak captcha`,imageAlt:`Type the Captcha code from the image`,success:`Verification successful`}},destroy:function(){var e=this;e.textbox.destroy(),e.resetButton&&e.resetButton.off(c),e.audioButton&&e.audioButton.off(c),e.element.off(c),e._audioEnded(),r.fn.destroy.call(e)},_wrapper:function(){var t=this,n=g.styles,r=`<div class='`+n.wrapper+`'><div class='`+n.inputWrapper+`'></div></div>`,i=`<div class='`+n.imageWrapper+`'></div>`,a=t.element[0].style.cssText;t.element.css(`width`,`auto`),t.element.css(`height`,`auto`),t.textbox=t.element.kendoTextBox({clearButton:!0}).data(`kendoTextBox`),t._inputWrapper=t.textbox.wrapper,t.wrapper=t._inputWrapper.wrap(r).parent().parent(),t.wrapper[0].style.cssText=a,t.imageWrapper=e(i),t.wrapper.prepend(t.imageWrapper)},_captchaImage:function(){var t=this,n=t.options,r=n.messages,i=g.styles;t.captchaImage=e(`<div class="`+i.captchaImage+`"><img alt="`+r.imageAlt+`" src= "`+(n.captcha||``)+`"/></div>`).find(`img`),t.imageWrapper.append(t.captchaImage.parent()),t._tabindex(t.captchaImage),t._attachImageErrorHandler()},_attachImageErrorHandler:function(){var e=this;e.captchaImage.off(`error`),e.captchaImage.one(`error`,function(t){e.trigger(m,{type:`image`,originalEvent:t})})},_idInput:function(){var t=this,r=t.options,i=t._captchaIdField;t.idInput=e(`<input type="hidden" name="`+i+`" value="`+r.captchaId+`" data-`+n.ns+`stop="true" />`),t._inputWrapper.after(t.idInput)},_buttons:function(){var t=this,n=g.styles;t.buttonsWrapper=e(`<div class="`+n.buttonsWrapper+`"></div>`),t.imageWrapper.append(t.buttonsWrapper),t.options.audioButton&&t._audioButton(),t.options.resetButton&&t._resetButton()},_resetButton:function(){var t=this,r=t.options.messages,i=g.styles;t.resetButton=e(`<button type="button" title="`+r.reset+`" class="`+i.button+` `+i.iconButton+`">`+n.ui.icon({icon:i.resetIcon,iconClass:`k-button-icon`})+`</button>`),t.buttonsWrapper.append(t.resetButton),t.resetButton.on(l+c,t._resetHandler.bind(t,!0))},_audioButton:function(){var t=this,r=t.options.messages,i=g.styles;t.audioButton=e(`<button type="button" title="`+r.audio+`" class="`+i.button+` `+i.iconButton+`">`+n.ui.icon({icon:i.audioIcon,iconClass:`k-button-icon`})+`</button>`),t.buttonsWrapper.append(t.audioButton),t.audioButton.on(l+c,t._audioHandler.bind(t))},_resetHandler:function(t){var n=this,r=n.options.handler,i=e.Deferred(),a=n._resetCaptcha.bind(n,i);return delete n._isValid,n._toggleSuccessMessage(!1),n._audioEnded(),n._progress(!0),r?(n._callHandler(`reset`,r,a).done(function(){t&&n.resetButton.trigger(`focus`)}).fail(function(e){n._progress(!1),i.reject(e)}),i.promise()):(window.console.error(`Captcha's handler option is not defined!`),i.reject({msg:`Captcha's handler option is not defined!`,error:`handler_not_defined`}),n._progress(!1),i.promise())},_audioHandler:function(){var t=this,n=t.options.audioHandler,r=e.Deferred(),i=t._playAudio.bind(t,r),a={};return a[t._captchaIdField]=t.idInput.val(),n?(t._callHandler(`audio`,n,i,a).fail(r.reject),r.promise()):(window.console.error(`Captcha's audioHandler option is not defined!`),r.reject({msg:`Captcha's audioHandler option is not defined!`,error:`handler_not_defined`}),r.promise())},_validationHandler:function(){var t=this,n=t.options.validationHandler,r=e.Deferred(),i=t._validate.bind(t,r),a={};return delete t._isValid,a[t._captchaIdField]=t.idInput.val(),a[t._valueField]=t.element.val(),n?(t._callHandler(`validation`,n,i,a).fail(r.reject),r.promise()):(window.console.error(`Captcha's validationHandler option is not defined!`),r.reject({msg:`Captcha's validationHandler option is not defined!`,error:`handler_not_defined`}),r.promise())},_callHandler:function(t,n,r,c){var l=this,u=l._error.bind(l,t),d=l._requestEnd.bind(l,t),p;if(o(n))return n({success:r,data:c}),e.Deferred().promise();if(p=typeof n===s?{url:n,cache:!1}:i({},n),p.success=r,p.data=i({},c,p.data),!l.trigger(f,{type:t,data:c}))return a(p).done(d).fail(u)},_requestEnd:function(e,t){this.trigger(p,{type:e,data:t})},_error:function(e,t,n,r){this.trigger(m,{type:e,jqXHR:t,textStatus:n,errorThrown:r})},_resetCaptcha:function(e,t){var n=this,r=t[n._captchaIdField],i=t[n._captchaField];n.idInput.val(r),n.captchaImage.attr(`src`,i||``),n.captchaImage.off(`load`),n.captchaImage.one(`load`,function(){n._progress(!1)}),n._attachImageErrorHandler(),e.resolve(t)},_playAudio:function(t,n){var r=this;if(r._canPlayWav()){if(r.audioElement)return;r.audioElement=new Audio(n),r.audioElement.volume=r._audioVolume||r.audioElement.volume,r.options.volumeControl&&e(r.audioElement).on(`loadeddata`+c,function(){r._showVolumeControl(r.audioElement.volume)}),e(r.audioElement).on(`ended`+c+` error`+c,r._audioEnded.bind(r,t)),r.audioElement.play()}},_showVolumeControl:function(t){var n=this,r=g.styles,i=e(`<div class="`+r.volumeControlWrapper+`"></div>`);n.volumeControl||=(n.volumeControlElm=e(`<input />`),n.volumeControlWrapper=i.append(n.volumeControlElm),n.imageWrapper.append(i),n.volumeControlWrapper.css(n._isRtl()?`right`:`left`,n.wrapper.width()),n.volumeControlElm.kendoSlider({min:0,max:1,smallStep:.1,largeStep:.5,orientation:`vertical`,showButtons:!1,tickPlacement:`none`,value:t,tooltip:{enabled:!1},change:function(e){n._audioVolume=n.audioElement.volume=e.value}}).data(`kendoSlider`))},_audioEnded:function(t){var n=this;e(document.activeElement).is(`a.k-draghandle`)&&n.audioButton.trigger(`focus`),n.volumeControl&&(n.volumeControl.destroy(),n.volumeControl.wrapper.remove(),delete n.volumeControl,n.volumeControlElm.remove(),n.volumeControlWrapper.remove(),delete n.volumeControlElm,delete n.volumeControlWrapper),n.audioElement&&n.audioElement.pause(),e(n.audioElement).off(c),e(n.audioElement).remove(),delete n.audioElement,t&&t.resolve&&t.resolve()},_canPlayWav:function(){var e=this,t;return e._canPlayAudio?e._canPlayAudio:(t=new Audio,e._canPlayAudio=t.canPlayType(`audio/wav`).replace(/no/gi,``)!==``,e._canPlayAudio)},_validate:function(e,t){var n=this;n._isValid=t,n._toggleSuccessMessage(n._isValid),e.resolve(t)},_toggleSuccessMessage:function(t){var r=this,i=(r.element.attr(`id`)||r.element.attr(`name`))+`-success`,a=r.options.messages;e(r.successMessage).remove(),r.element.removeAttr(`aria-describedby`),t&&(r.successMessage=e(`<span id="`+i+`" class="`+g.styles.success+`">`+n.htmlEncode(a.success)+`</span>`),r._inputWrapper.after(r.successMessage),r.element.attr(`aria-describedby`,i))},_toggleButtons:function(e){var t=this;t.resetButton&&t.resetButton.prop(`disabled`,!e),t.audioButton&&t.audioButton.prop(`disabled`,!e)},_progress:function(e){var t=this;t.wrapper.toggleClass(g.styles.loading,e),t._inputWrapper.toggleClass(g.styles.disabled,e),t._toggleButtons(!e),t._toggleSkeleton(e)},_toggleSkeleton:function(t){var n=this;n.skeleton&&n.skeleton.remove(),t&&(n.skeleton=e(`<span class='k-skeleton k-skeleton-rect k-skeleton-pulse'></span>`).css({width:`100%`,height:`100%`}),n.captchaImage.before(n.skeleton))},_isRtl:function(){return n.support.isRtl(this.wrapper)},value:function(){return this.element.val()},getCaptchaId:function(){return this.idInput.val()},toJSON:function(){var e=this,t={};return t[e._valueField]=e.value(),t[e._captchaIdField]=e.getCaptchaId(),t},validate:function(){return this._validationHandler()},isValid:function(){return this._isValid},enable:function(e){var t=this;e=e!==!1,t._toggleButtons(e),t.textbox.enable(e),e?(t.captchaImage.removeAttr(`tabIndex`),t._tabindex(t.captchaImage)):t.captchaImage.attr(`tabIndex`,`-1`),t.captchaImage.toggleClass(g.styles.disabled,!e),t.wrapper.toggleClass(g.styles.disabled,!e)},readonly:function(e){var t=this;e=e!==!1,t.resetButton&&t.resetButton.prop(`disabled`,e),t.textbox.readonly(e)},speak:function(){return this._audioHandler()},reset:function(){return this._resetHandler()}});n.ui.plugin(g),i(!0,g,{styles:h})})(window.kendo.jQuery);var s=kendo;e.__meta__=o,e.default=s});
//# sourceMappingURL=kendo.captcha.min.js.map