8 lines
13 KiB
JavaScript
8 lines
13 KiB
JavaScript
/**
|
|
* jQuery wizard v0.4.3
|
|
* https://github.com/amazingSurge/jquery-wizard
|
|
*
|
|
* Copyright (c) amazingSurge
|
|
* Released under the LGPL-3.0 license
|
|
*/
|
|
!function(t,e){if("function"==typeof define&&define.amd)define(["jquery"],e);else if("undefined"!=typeof exports)e(require("jquery"));else{var i={exports:{}};e(t.jQuery),t.jqueryWizardEs=i.exports}}(this,function(t){"use strict";function e(t){return t&&t.__esModule?t:{default:t}}function i(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){var i=!1;t.one(l.transition.end,function(){i=!0});var n=function(){i||t.trigger(l.transition.end)};setTimeout(n,e)}var s=e(t),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},o=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),u={step:".wizard-steps > li",getPane:function(t,e){return this.$element.find(".wizard-content").children().eq(t)},buttonsAppendTo:"this",templates:{buttons:function(){var t=this.options;return'<div class="wizard-buttons"><a class="wizard-back" href="#'+this.id+'" data-wizard="back" role="button">'+t.buttonLabels.back+'</a><a class="wizard-next" href="#'+this.id+'" data-wizard="next" role="button">'+t.buttonLabels.next+'</a><a class="wizard-finish" href="#'+this.id+'" data-wizard="finish" role="button">'+t.buttonLabels.finish+"</a></div>"}},classes:{step:{done:"done",error:"error",active:"current",disabled:"disabled",activing:"activing",loading:"loading"},pane:{active:"active",activing:"activing"},button:{hide:"hide",disabled:"disabled"}},autoFocus:!0,keyboard:!0,enableWhenVisited:!1,buttonLabels:{next:"Next",back:"Back",finish:"Finish"},loading:{show:function(t){},hide:function(t){},fail:function(t){}},cacheContent:!1,validator:function(t){return!0},onInit:null,onNext:null,onBack:null,onReset:null,onBeforeShow:null,onAfterShow:null,onBeforeHide:null,onAfterHide:null,onBeforeLoad:null,onAfterLoad:null,onBeforeChange:null,onAfterChange:null,onStateChange:null,onFinish:null},l={};!function(t){var e={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},i=["webkit","Moz","O","ms"],n=(0,s.default)("<support>").get(0).style,a={csstransitions:function(){return Boolean(r("transition"))},cssanimations:function(){return Boolean(r("animation"))}},r=function(t,e){var a=!1,r=t.charAt(0).toUpperCase()+t.slice(1);return void 0!==n[t]&&(a=t),a||s.default.each(i,function(t,e){return void 0===n[e+r]||(a="-"+e.toLowerCase()+"-"+r,!1)}),e?a:!!a},o=function(t){return r(t,!0)};a.csstransitions()&&(t.transition=new String(o("transition")),t.transition.end=e.transition.end[t.transition]),a.cssanimations()&&(t.animation=new String(o("animation")),t.animation.end=e.animation.end[t.animation])}(l);var d=function(){function t(e,i,a){n(this,t),this.TRANSITION_DURATION=200,this.initialize(e,i,a)}return o(t,[{key:"initialize",value:function(t,e,i){this.$element=(0,s.default)(t),this.wizard=e,this.events={},this.loader=null,this.loaded=!1,this.validator=this.wizard.options.validator,this.states={done:!1,error:!1,active:!1,disabled:!1,activing:!1},this.index=i,this.$element.data("wizard-index",i),this.$pane=this.getPaneFromTarget(),this.$pane||(this.$pane=this.wizard.options.getPane.call(this.wizard,i,t)),this.setValidatorFromData(),this.setLoaderFromData()}},{key:"getPaneFromTarget",value:function(){var t=this.$element.data("target");return t||(t=this.$element.attr("href"),t=t&&t.replace(/.*(?=#[^\s]*$)/,"")),t?(0,s.default)(t):null}},{key:"setup",value:function(){var t=this.wizard.currentIndex();this.index===t?(this.enter("active"),this.loader&&this.load()):this.index>t&&this.enter("disabled"),this.$element.attr("aria-expanded",this.is("active")),this.$pane.attr("aria-expanded",this.is("active"));var e=this.wizard.options.classes;this.is("active")?this.$pane.addClass(e.pane.active):this.$pane.removeClass(e.pane.active)}},{key:"show",value:function(t){if(!this.is("activing")&&!this.is("active")){this.trigger("beforeShow"),this.enter("activing");var e=this.wizard.options.classes;this.$element.attr("aria-expanded",!0),this.$pane.addClass(e.pane.activing).addClass(e.pane.active).attr("aria-expanded",!0);var i=function(){this.$pane.removeClass(e.pane.activing),this.leave("activing"),this.enter("active"),this.trigger("afterShow"),s.default.isFunction(t)&&t.call(this)};if(!l.transition)return void i.call(this);this.$pane.one(l.transition.end,s.default.proxy(i,this)),a(this.$pane,this.TRANSITION_DURATION)}}},{key:"hide",value:function(t){if(!this.is("activing")&&this.is("active")){this.trigger("beforeHide"),this.enter("activing");var e=this.wizard.options.classes;this.$element.attr("aria-expanded",!1),this.$pane.addClass(e.pane.activing).removeClass(e.pane.active).attr("aria-expanded",!1);var i=function(){this.$pane.removeClass(e.pane.activing),this.leave("activing"),this.leave("active"),this.trigger("afterHide"),s.default.isFunction(t)&&t.call(this)};if(!l.transition)return void i.call(this);this.$pane.one(l.transition.end,s.default.proxy(i,this)),a(this.$pane,this.TRANSITION_DURATION)}}},{key:"empty",value:function(){this.$pane.empty()}},{key:"load",value:function(t){function e(e){i.$pane.html(e),i.leave("loading"),i.loaded=!0,i.trigger("afterLoad"),s.default.isFunction(t)&&t.call(i)}var i=this,n=this.loader;return s.default.isFunction(n)&&(n=n.call(this.wizard,this)),this.wizard.options.cacheContent&&this.loaded?void(s.default.isFunction(t)&&t.call(this)):(this.trigger("beforeLoad"),this.enter("loading"),void("string"==typeof n?e(n):"object"===("undefined"==typeof n?"undefined":r(n))&&n.hasOwnProperty("url")?(i.wizard.options.loading.show.call(i.wizard,i),s.default.ajax(n.url,n.settings||{}).done(function(t){e(t),i.wizard.options.loading.hide.call(i.wizard,i)}).fail(function(){i.wizard.options.loading.fail.call(i.wizard,i)})):e("")))}},{key:"trigger",value:function(t){for(var e,n=arguments.length,a=Array(n>1?n-1:0),r=1;r<n;r++)a[r-1]=arguments[r];if(s.default.isArray(this.events[t]))for(var o in this.events[t])if({}.hasOwnProperty.call(this.events[t],o)){var u;(u=this.events[t])[o].apply(u,a)}(e=this.wizard).trigger.apply(e,i([t,this].concat(a)))}},{key:"enter",value:function(t){this.states[t]=!0;var e=this.wizard.options.classes;this.$element.addClass(e.step[t]),this.trigger("stateChange",!0,t)}},{key:"leave",value:function(t){if(this.states[t]){this.states[t]=!1;var e=this.wizard.options.classes;this.$element.removeClass(e.step[t]),this.trigger("stateChange",!1,t)}}},{key:"setValidatorFromData",value:function(){var t=this.$pane.data("validator");t&&s.default.isFunction(window[t])&&(this.validator=window[t])}},{key:"setLoaderFromData",value:function(){var t=this.$pane.data("loader");if(t)s.default.isFunction(window[t])&&(this.loader=window[t]);else{var e=this.$pane.data("loader-url");e&&(this.loader={url:e,settings:this.$pane.data("settings")||{}})}}},{key:"active",value:function(){return this.wizard.goTo(this.index)}},{key:"on",value:function(t,e){return s.default.isFunction(e)&&(s.default.isArray(this.events[t])?this.events[t].push(e):this.events[t]=[e]),this}},{key:"off",value:function(t,e){return s.default.isFunction(e)&&s.default.isArray(this.events[t])&&s.default.each(this.events[t],function(i,n){if(n===e)return delete this.events[t][i],!1}),this}},{key:"is",value:function(t){return this.states[t]&&this.states[t]===!0}},{key:"reset",value:function(){for(var t in this.states)({}).hasOwnProperty.call(this.states,t)&&this.leave(t);return this.setup(),this}},{key:"setLoader",value:function(t){return this.loader=t,this.is("active")&&this.load(),this}},{key:"setValidator",value:function(t){return s.default.isFunction(t)&&(this.validator=t),this}},{key:"validate",value:function(){return this.validator.call(this.$pane.get(0),this)}}]),t}(),h=0,f="wizard",c=function(){function t(e){var i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];n(this,t),this.$element=(0,s.default)(e),this.options=s.default.extend(!0,{},u,i),this.$steps=this.$element.find(this.options.step),this.id=this.$element.attr("id"),this.id||(this.id="wizard-"+ ++h,this.$element.attr("id",this.id)),this.trigger("init"),this.initialize()}return o(t,[{key:"initialize",value:function(){this.steps=[];var t=this;this.$steps.each(function(e){t.steps.push(new d(this,t,e))}),this._current=0,this.transitioning=null,s.default.each(this.steps,function(t,e){e.setup()}),this.setup(),this.$element.on("click",this.options.step,function(e){var i=(0,s.default)(this).data("wizard-index");t.get(i).is("disabled")||t.goTo(i),e.preventDefault(),e.stopPropagation()}),this.options.keyboard&&(0,s.default)(document).on("keyup",s.default.proxy(this.keydown,this)),this.trigger("ready")}},{key:"setup",value:function(){this.$buttons=(0,s.default)(this.options.templates.buttons.call(this)),this.updateButtons();var t=this.options.buttonsAppendTo,e=void 0;e="this"===t?this.$element:s.default.isFunction(t)?t.call(this):this.$element.find(t),this.$buttons=this.$buttons.appendTo(e)}},{key:"updateButtons",value:function(){var t=this.options.classes.button,e=this.$buttons.find('[data-wizard="back"]'),i=this.$buttons.find('[data-wizard="next"]'),n=this.$buttons.find('[data-wizard="finish"]');0===this._current?e.addClass(t.disabled):e.removeClass(t.disabled),this._current===this.lastIndex()?(i.addClass(t.hide),n.removeClass(t.hide)):(i.removeClass(t.hide),n.addClass(t.hide))}},{key:"updateSteps",value:function(){var t=this;s.default.each(this.steps,function(e,i){e>t._current&&(i.leave("error"),i.leave("active"),i.leave("done"),t.options.enableWhenVisited||i.enter("disabled"))})}},{key:"keydown",value:function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.back();break;case 39:this.next();break;default:return}t.preventDefault()}}},{key:"trigger",value:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];var a=[this].concat(i);this.$element.trigger(f+"::"+t,a),t=t.replace(/\b\w+\b/g,function(t){return t.substring(0,1).toUpperCase()+t.substring(1)});var s="on"+t;"function"==typeof this.options[s]&&this.options[s].apply(this,i)}},{key:"get",value:function(t){if("string"==typeof t&&"#"===t.substring(0,1)){var e=t.substring(1);for(var i in this.steps)if(this.steps[i].$pane.attr("id")===e)return this.steps[i]}return t<this.length()&&this.steps[t]?this.steps[t]:null}},{key:"goTo",value:function(t,e){if(t===this._current||this.transitioning===!0)return!1;var i=this.current(),n=this.get(t);if(t>this._current){if(!i.validate())return i.leave("done"),i.enter("error"),-1;i.leave("error"),t>this._current&&i.enter("done")}var a=this,r=function(){a.trigger("beforeChange",i,n),a.transitioning=!0,i.hide(),n.show(function(){if(a._current=t,a.transitioning=!1,this.leave("disabled"),a.updateButtons(),a.updateSteps(),a.options.autoFocus){var r=this.$pane.find(":input");r.length>0?r.eq(0).focus():this.$pane.focus()}s.default.isFunction(e)&&e.call(a),a.trigger("afterChange",i,n)})};return n.loader?n.load(function(){r()}):r(),!0}},{key:"length",value:function(){return this.steps.length}},{key:"current",value:function(){return this.get(this._current)}},{key:"currentIndex",value:function(){return this._current}},{key:"lastIndex",value:function(){return this.length()-1}},{key:"next",value:function(){var t=this;return this._current<this.lastIndex()&&!function(){var e=t._current,i=t._current+1;t.goTo(i,function(){this.trigger("next",this.get(e),this.get(i))})}(),!1}},{key:"back",value:function(){var t=this;return this._current>0&&!function(){var e=t._current,i=t._current-1;t.goTo(i,function(){this.trigger("back",this.get(e),this.get(i))})}(),!1}},{key:"first",value:function(){return this.goTo(0)}},{key:"finish",value:function(){if(this._current===this.lastIndex()){var t=this.current();t.validate()?(this.trigger("finish"),t.leave("error"),t.enter("done")):t.enter("error")}}},{key:"reset",value:function(){this._current=0,s.default.each(this.steps,function(t,e){e.reset()}),this.trigger("reset")}}],[{key:"setDefaults",value:function(t){s.default.extend(!0,u,s.default.isPlainObject(t)&&t)}}]),t}();(0,s.default)(document).on("click","[data-wizard]",function(t){var e=void 0,i=(0,s.default)(this),n=(0,s.default)(i.attr("data-target")||(e=i.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")),a=n.data(f);if(a){var r=i.data(f);/^(back|next|first|finish|reset)$/.test(r)&&a[r](),t.preventDefault()}});var v={version:"0.4.3"},p="wizard",g=s.default.fn.wizard,y=function(t){for(var e=this,i=arguments.length,n=Array(i>1?i-1:0),a=1;a<i;a++)n[a-1]=arguments[a];if("string"==typeof t){var o=function(){var i=t;if(/^_/.test(i))return{v:!1};if(!/^(get)/.test(i))return{v:e.each(function(){var t=s.default.data(this,p);t&&"function"==typeof t[i]&&t[i].apply(t,n)})};var a=e.first().data(p);return a&&"function"==typeof a[i]?{v:a[i].apply(a,n)}:void 0}();if("object"===("undefined"==typeof o?"undefined":r(o)))return o.v}return this.each(function(){(0,s.default)(this).data(p)||(0,s.default)(this).data(p,new c(this,t))})};s.default.fn.wizard=y,s.default.wizard=s.default.extend({setDefaults:c.setDefaults,noConflict:function(){return s.default.fn.wizard=g,y}},v)}); |