@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 13.5 kB
JavaScript
!function(t){"function"==typeof define&&define.amd?define(["kendo.stepper.min","kendo.button.min","kendo.form.min"],t):t()}((function(){var t,e,n,r,s,i,o,a,p,d,l,u,h,c,f,m,g,_,v,b,w,S,k,x,C,B,z,y,A,E,j,F,N,T,I,H,K,L,O,U,D,P,W;t=window.kendo.jQuery,n=window.kendo,r=n.ui.Widget,s=t.extend,i=n.htmlEncode,o=".kendoWizard",a="click",p="activate",d="select",l="reset",u="submit",h="previous",c="next",f="done",m="error",g="contentLoad",_="formValidateFailed",v="k-hidden",b="aria-selected",w="aria-hidden",S="aria-label",k="bottom",x="right",C="left",B=".",z="id",y="role",A="data-wizard-",E="k-widget k-wizard",j="k-wizard-horizontal",F="k-wizard-vertical",N="k-wizard-right",T="k-wizard-left",I="k-wizard-steps",H="k-wizard-step",K="k-wizard-content",L="k-wizard-buttons",O="k-wizard-buttons-left",U="k-wizard-buttons-right",D="k-wizard-pager",P=n.Class.extend({init:function(t){this.options=s({},this.options,t),this.options.actionBar&&this._processButtons(),this._render()},options:{name:"WizardStep",index:0,content:"",contentUrl:null,contentId:null,markupContainer:null,form:null,actionBar:!0,buttons:[],pager:!0,selected:!1,enabled:!0,className:"",totalSteps:1,wizardId:"wizard",formTag:"form",messages:{}},_defaultButtonsConfiguration:{first:[l,c],middle:[l,h,c],last:[l,h,f]},_pagerTemplate:function(t){var e=t.step,n=t.currentStep,r=t.of,s=t.totalSteps;return'<span class="k-wizard-pager">'+i(e)+" "+i(n)+" "+i(r)+" "+i(s)+"</span>"},buttons:function(){return this._buttons},load:function(){this.options.contentUrl&&this._ajaxRequest()},resetButtons:function(){var t=this.element.find(B+L);n.destroy(t),t.remove(),this.options.buttons=[],this._processButtons(),this._buttonsContainer()},_ajaxRequest:function(e,r){var s=this,i=s.options.contentUrl,o=s.element,a={type:"GET",cache:!1,url:i,dataType:"html",data:{},error:function(t,n){e&&e._triggerError(t,n,s)},complete:function(){e&&r&&e._triggerActivate(s)},success:function(t){var r=o.find(B+K);try{e&&e.angular("cleanup",(function(){return{elements:o.get()}})),n.destroy(r),r.html(t),e&&e._triggerContentLoad(s)}catch(t){this.error(this.xhr,"error")}e&&e.angular("compile",(function(){return{elements:o.get()}}))}};"object"==typeof i&&(a=t.extend(!0,{},a,i)),t.ajax(a)},_ariaAttributes:function(){var t=this.element,e=this.options,n=e.messages,r=n.step+" "+(e.index+1)+" "+n.of+" "+e.totalSteps;t.attr(y,"tabpanel").attr("tabindex",0).attr(z,e.wizardId+"-"+e.index).attr(S,r)},_buttonFactory:function(e){var n=t("<button type='button'>").kendoButton({themeColor:e.primary?"primary":"base"}).getKendoButton(),r=n.element;r.attr(A+e.name,""),r.text(e.text),e.click&&n.bind(a,e.click),!1===e.enabled&&n.enable(!1),e.position===C?this._leftButtonsContainer.append(r):this._rightButtonsContainer.append(r),"done"===e.name&&"form"!==this.options.formTag&&n.element.attr("type",u),this._buttons.push(n)},_buttonsContainer:function(){var e=t("<div>").addClass(L);this._leftButtonsContainer=t("<span>").addClass(O),this._rightButtonsContainer=t("<span>").addClass(U),e.append(this._leftButtonsContainer),e.append(this._rightButtonsContainer),this.element.append(e),this._buttons=[],this.options.buttons.map(this._buttonFactory.bind(this)),this.options.pager&&this._pager()},_content:function(){var e=this.options,r=!!e.contentUrl,s=t("<div>").addClass(K);!r&&e.contentId?s.html(t("#"+e.contentId).html()):!r&&e.content&&s.append(e.content),e.markupContainer&&(r||e.contentId||e.content||s.append(e.markupContainer.html()),n.destroy(e.markupContainer),e.markupContainer.remove()),this.element.prepend(s)},_form:function(){var e="<"+this.options.formTag+">",n=t(e).hide(),r=t("<div>").addClass(K),s=this.options.form;t("body").append(n),this.element.prepend(r),s.buttonsTemplate=s.buttonsTemplate||function(){return""},this.form=n.kendoForm(s).getKendoForm(),r.append(n.show())},_iterateButton:function(t){var e=this.options.messages;return"string"==typeof t&&(t={name:t}),t.text||(t.text=e[t.name]||t.name.charAt(0).toUpperCase()+t.name.slice(1)),!1===t.primary||t.name!==f&&t.name!==c||(t.primary=!0),t.position||t.name!==l?t.position||(t.position=x):t.position=C,t},_pager:function(){var t=this.options,e=t.messages,r={step:e.step,currentStep:t.index+1,of:e.of,totalSteps:t.totalSteps},s=n.template(this._pagerTemplate)(r);this._leftButtonsContainer.append(s)},_processButtons:function(){var t=this.options,e=t.buttons,n=this._defaultButtonsConfiguration;e&&e.length&&0!==e.length||(this.options.defaultButtons=!0,e=0===t.index?n.first:t.index+1===t.totalSteps?n.last:n.middle),this.options.buttons=e.map(this._iterateButton.bind(this))},_render:function(){this.element=t("<div>").addClass(H),this.options.className&&this.element.addClass(this.options.className),this._ariaAttributes(),this.options.selected||(this.element.addClass(v),this.element.attr(w,!0)),this.options.actionBar&&this._buttonsContainer(),this.options.form?this._form():this._content()}}),W=r.extend({init:function(t,e){var n=this;e=e||{},r.fn.init.call(n,t,e),n._wrapper(),n._createSteps(),n._stepper(),n._attachEvents()},options:{name:"Wizard",contentPosition:k,actionBar:!0,pager:!0,loadOnDemand:!1,reloadOnSelect:!1,validateForms:!0,stepper:{},steps:[],messages:{reset:"Reset",previous:"Previous",next:"Next",done:"Done",step:"Step",of:"of"}},events:[p,d,l,f,m,g,_],destroy:function(){var t=this;r.fn.destroy.call(t.stepper),r.fn.destroy.call(t),t.wrapper.off(o)},activeStep:function(){return this.currentStep},enableStep:function(t,n){var r,s=this;t===e||null===t||isNaN(t)||t>=s._steps.length||t<0||(t=Number(t),(r=s._steps[t]).options.enabled!==n&&(r.options.enabled=n,s.stepper.steps()[t].enable(n)))},insertAt:function(t,n){var r,s,i,o=this._steps,a=o.length,p=this.options.messages;null===t||t===e||isNaN(t)||t<0||t>a||n&&(s=this._mapStepForStepper(n),this.stepper.insertAt(t,s),n.totalSteps=a+1,n.messages=p,n.index=t,n.formTag=this.wrapper.is("form")?"div":"form",!1===this.options.pager&&!0!==n.pager&&(n.pager=!1),r=new P(n),o.forEach((function(e,n){var r;n>=t&&(e.options.index+=1),e.options.totalSteps+=1,e.element.find(B+D).remove(),e._pager(),r=p.step+" "+(e.options.index+1)+" "+p.of+" "+(a+1),e.element.attr(S,r)})),o.splice(t,0,r),0!==t&&t!==a||(i=o[0===t?1:a-1]).options.defaultButtons&&i.resetButtons(),this._insertStepElementAtIndex(t,r.element),this._stepperAriaAttributes(),this._steps.forEach(this._iterateAriaStep))},next:function(){var t=this,e=t._steps.length,n=t.currentStep.options.index;n+1!==e&&t.steps()[n+1].options.enabled&&(t._select(n+1),t._selectStepper(n+1))},previous:function(){var t=this,e=t.currentStep.options.index;0!==e&&t.steps()[e-1].options.enabled&&(t._select(e-1),t._selectStepper(e-1))},removeAt:function(r){var s,i,o,a,p,d=this._steps,l=d.length,u=t(this.element.find(B+H).get(r)),h=this.options.messages;if(!(null===r||r===e||isNaN(r)||r<0||r>l||1===l)){for(this.stepper.removeAt(r),d.splice(r,1)[0],u.hasClass(v)||(s=0===r?0:r-1,this.select(s)),n.destroy(u),u.remove(),o=0;o<l-1;o+=1)(a=d[o]).options.index=o,a.options.totalSteps=l-1,a.element.find(B+D).remove(),a._pager(),p=h.step+" "+(o+1)+" "+h.of+" "+(l-1),a.element.attr(S,p);0!==r&&r!==l-1||(i=d[0===r?0:l-2]).options.defaultButtons&&i.resetButtons(),this._stepperAriaAttributes(),this._steps.forEach(this._iterateAriaStep)}},select:function(t){var n=this;t===e||null===t||isNaN(t)||t>=n._steps.length||t<0||(t=Number(t),n._steps[t].options.enabled&&(n._select(t),n._selectStepper(t)))},steps:function(){return this._steps},_attachEvents:function(){var t=this,e=function(){t._doneClicked=!0};t.stepper.bind(d,t._stepperSelectHandler.bind(t)),t.wrapper.on(a+o,"[data-wizard-reset]",t._resetClickHandler.bind(t)).on(a+o,"[data-wizard-previous]",t._previousClickHandler.bind(t)).on(a+o,"[data-wizard-next]",t._nextClickHandler.bind(t)),t.wrapper.is("form")?(t.wrapper.on(a+o,"[data-wizard-done]",e),t.wrapper.on(u+o,t._doneHandler.bind(t))):(t.wrapper.on(a+o,"[data-wizard-done]",e),t.wrapper.on(a+o,"[data-wizard-done]",t._doneHandler.bind(t)))},_changeStep:function(t){var e=this.wrapper.find(B+H);this.currentStep=t,e.addClass(v),e.attr(w,!0),t.element.removeClass(v),t.element.removeAttr(w)},_createStep:function(e,n,r,i){var o=this.wrapper,a=this.wrapper.children("ol, ul").children("li");return"string"==typeof e&&(e={title:e}),e.totalSteps=i,e.messages=this.options.messages,e.index=n,e.formTag=this.wrapper.is("form")?"div":"form",0===n&&(e.selected=!0),!1===this.options.actionBar&&(e.actionBar=!1),r.length>0&&r[n]&&(e.markupContainer=t(r[n]),e.title||(e.title=a[n]?a[n].textContent:(n+1).toString(),this.options.steps||(this.options.steps=[]))),o.attr(z)&&(e.wizardId=o.attr(z)),!1===this.options.pager&&!0!==e.pager&&(e.pager=!1),this.options.steps[n]=s(!0,{},e),new P(e)},_createSteps:function(){var e,r,s,i,o=this,a=o.wrapper,p=o.options.steps,d=a.children("div");if(e=t("<div>").addClass(I),o._steps=[],!p||0===p.length)for(p=[],r=0;r<d.length;r+=1)p.push({});for(r=0;r<p.length;r+=1)s=p[r],i=o._createStep(s,r,d,p.length),!s.contentUrl||0!==r&&o.options.loadOnDemand||(n.ui.progress(o.wrapper,!0),i._ajaxRequest(o)),e.append(i.element),o._steps.push(i);a.children("ol, ul").remove(),a.empty(),a.append(e),o._refreshEditorWidgets(),o.currentStep=o._steps[0]},_doneHandler:function(e){var n,r,s=this._steps,i=this.currentStep,o=[];if(this._doneClicked){if(this._doneClicked=!1,this.options.validateForms&&i.form&&!i.form.validator.validate())return e.preventDefault(),void this.trigger(_,{sender:this,step:i,form:i.form});for(r=0;r<s.length;r+=1)(n=s[r].form)&&o.push(n);this.trigger(f,{sender:this,forms:o,originalEvent:e,button:t(e.target).getKendoButton()})}},_insertStepElementAtIndex:function(t,e){var n=this.wrapper.find(B+I);0===t?n.prepend(e):n.find(B+H+":nth-child("+t+")").after(e)},_isEmpty:function(t){return!n.trim(t.html())},_iterateAriaStep:function(t){t._ariaAttributes()},_mapStepForStepper:function(t){var e=s(!0,{},t);return e.label=e.title,delete e.buttons,delete e.pager,delete e.content,delete e.contentUrl,delete e.contentId,delete e.formTag,delete e.wizardId,delete e.messages,e},_select:function(t){var e=this._steps[t],r=this.options;e.options.contentUrl&&(r.reloadOnSelect||r.loadOnDemand&&this._isEmpty(e.element.find(B+K)))?(this.ajaxLoad=!0,n.ui.progress(this.wrapper,!0),e._ajaxRequest(this,!0)):this._changeStep(e)},_nextClickHandler:function(e){var n=this,r=n._steps,s=n._steps.length,i=n.currentStep,o=i.options.index,a=t(e.target).getKendoButton(),l=r[o+1];s!==o+1&&l.options.enabled&&(n.options.validateForms&&i.form&&!i.form.validator.validate()?n.trigger(_,{sender:n,step:i,form:i.form}):n.trigger(d,{sender:n,originalEvent:e.originalEvent,step:l,button:a})||(n._select(o+1),n._selectStepper(o+1),n.ajaxLoad||n.trigger(p,{sender:n,step:l}),n.ajaxLoad=!1))},_previousClickHandler:function(e){var n=this,r=n.options.validateForms,s=n._steps,i=n.currentStep,o=i.options.index,a=t(e.target).getKendoButton(),l=s[o-1];0!==o&&l.options.enabled&&(r&&!1!==r.validateOnPrevious&&i.form&&!i.form.validator.validate()?n.trigger(_,{sender:n,step:i,form:i.form}):n.trigger(d,{sender:n,originalEvent:e.originalEvent,step:l,button:a})||(n._select(o-1),n._selectStepper(o-1),n.ajaxLoad||n.trigger(p,{sender:n,step:l}),n.ajaxLoad=!1))},_refreshEditorWidgets:function(){var e,n=this.wrapper.find("[data-role='editor']");for(e=0;e<n.length;e+=1)t(n[e]).getKendoEditor().refresh()},_resetClickHandler:function(e){this.trigger(l,{sender:this,originalEvent:e,button:t(e.target).getKendoButton()})},_selectStepper:function(t){var e=this.stepper,n=e.steps()[t].element.find(".k-step-link");e.select(t),e.wrapper.find(".k-step-link").attr(b,!1),n.attr(b,!0).trigger("focus")},_stepper:function(){var e=this.wrapper,r=t("<div>").prependTo(e),s=this.options,i=s.stepper,o=s.steps.map(this._mapStepForStepper);i.steps=o,i.orientation=s.contentPosition===k?"horizontal":"vertical",i.selectOnFocus=!0,i.kendoKeydown=function(t){t.keyCode===n.keys.TAB&&(t.preventKendoKeydown=!0)},this.stepper=r.kendoStepper(i).getKendoStepper(),this._stepperAriaAttributes()},_stepperAriaAttributes:function(){var t,e,n=this.stepper,r=this.wrapper.attr(z)||"wizard",s=n.steps();if(s)for(n.element.find(".k-step-list").attr(y,"tablist"),e=0;e<s.length;e+=1)t=!1,0===e&&(t=!0),s[e].element.attr(y,"none").find("a").attr(y,"tab").attr("aria-controls",r+"-"+e).attr(b,t)},_stepperSelectHandler:function(t){var e=this,n=e.options.validateForms,r=t.sender,s=t.step,i=e.currentStep.options.index,o=s.getIndex(),a=e._steps[o],l=e.currentStep;return o>i&&n&&l.form&&!l.form.validator.validate()||o<i&&n&&!1!==n.validateOnPrevious&&l.form&&!l.form.validator.validate()?(t.preventDefault(),void e.trigger(_,{sender:e,step:l,form:l.form})):void(e.trigger(d,{sender:e,originalEvent:t.originalEvent,step:a,stepper:r})?t.preventDefault():(e._select(o),r.wrapper.find(".k-step-link").attr(b,!1),s.element.find(".k-step-link").attr(b,!0),e.ajaxLoad||e.trigger(p,{sender:e,step:a}),e.ajaxLoad=!1))},_triggerActivate:function(t){this._changeStep(t),this.trigger(p,{sender:this,step:t})},_triggerError:function(t,e,r){n.ui.progress(this.wrapper,!1),this.trigger(m,{sender:this,xhr:t,status:e,step:r})},_triggerContentLoad:function(t){n.ui.progress(this.wrapper,!1),this.trigger(g,{sender:this,step:t})},_wrapper:function(){var t=this,e=t.element,n=t.options.contentPosition;t.wrapper=e,t.wrapper.addClass(E),n===x?t.wrapper.addClass(F+" "+N):n===C?t.wrapper.addClass(F+" "+T):t.wrapper.addClass(j)}}),n.wizard={Step:P},n.ui.plugin(W)}));
//# sourceMappingURL=kendo.wizard.min.js.map