UNPKG

@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) 11.3 kB
!function(e){"function"==typeof define&&define.amd?define(["kendo.editable.min","kendo.button.min"],e):e()}((function(){var e,t,i,a,l,n,r,o,d,s,f,p,u,m,c,b,v,g,_,h,y,k;e=window.kendo.jQuery,t=window.kendo,i=t.ui,a=".kendoForm",l=i.Widget,n=e.extend,r=t.htmlEncode,o="validate",d="validateField",s="change",f="submit",p="clear",u="equalSet",m="group",c="aria-describedby",b="data-stop",v="data-role",g=".",_={form:"k-widget k-form",horizontal:"k-form-horizontal",vertical:"",field:"k-form-field",fieldsContainer:"k-form-fields-container",fieldWrap:"k-form-field-wrap",fieldError:"k-form-field-error",fieldHint:"k-form-hint",fieldset:"k-form-fieldset",layout:"k-form-layout",legend:"k-form-legend",label:"k-label k-form-label",emptyLabel:"k-form-label k-label-empty",optional:"k-label-optional",buttonsContainer:"k-form-buttons",buttonsEnd:"k-buttons-end",submit:"k-form-submit",clear:"k-form-clear",invalid:"k-invalid",hidden:"k-hidden"},h="horizontal",y="vertical",k=l.extend({init:function(e,i){var a=this;l.fn.init.call(a,e,i),a.options=t.deepExtend({},a.options,i),i&&i.formData&&(a.options.formData=i.formData),a._wrapper(),a._setFields(),a._setModel(),a._renderContainers(),a.options.renderButtons&&a._renderButtons(),a._editable(),a._renderBoolLabels(),a._renderFieldsHints(),a._setEvents(),a._applyCssClasses()},events:[d,o,s,f,p],options:{name:"Form",orientation:y,validatable:{validateOnBlur:!0,validationSummary:!1,errorTemplate:null},buttonsTemplate:null,messages:{submit:"Submit",clear:"Clear",optional:"(Optional)"},layout:"",grid:{},formData:{},items:[],formatLabel:null,focusFirst:!1,renderButtons:!0,size:"medium"},_noLabelfieldTemplate:function(e){var t=e.styles,i=e.colSpan,a=e.hidden,l=e.field;return"<div class='"+r(t.field)+" "+(i?"k-colspan-"+r(i):"")+" "+(a?r(t.hidden):"")+"'><span class='"+r(t.emptyLabel)+"'></span><div class='k-form-field-wrap' data-container-for='"+r(l)+"'></div></div>"},_fieldTemplate:function(e){var t=e.styles,i=e.colSpan,a=e.hidden,l=e.field,n=e.label,o=e.id,d=e.optional;return"<div class='"+r(t.field)+" "+(i?"k-colspan-"+r(i):"")+" "+(a?""+r(t.hidden):"")+"'>"+(n&&!a?"<label class='"+r(t.label)+"' for='"+r(o)+"' id='"+r(o)+"-form-label'>"+(void 0!==n.encoded&&!1===n.encoded?n.text||n:r(n.text||n))+(n.optional?"<span class='"+r(t.optional)+"'>"+r(d)+"</span>":"")+"</label>":"")+"<div class='k-form-field-wrap' data-container-for='"+r(l)+"'></div></div>"},_boolLabelTemplate:function(e){var t=e.styles,i=(e.colSpan,e.hidden,e.field,e.label),a=e.id,l=e.optional;return"<label class='k-checkbox-label' for='"+r(a)+"' id='"+r(a)+"-form-label'>"+(void 0!==i.encoded&&!1===i.encoded?i.text||i:r(i.text||i))+(i.optional?"<span class='"+r(t.optional)+"'>"+r(l)+"</span>":"")+"</label>"},_groupTemplate:function(e){var t=e.styles,i=e.colSpan,a=e.label;return"<fieldset class='"+r(t.fieldset)+" "+(i?"k-colspan-"+r(i):"")+"'><legend class='"+r(t.legend)+"'>"+r(a.text||a)+"</legend></fieldset>"},_errorTemplate:function(e){return"<span class='k-form-error' id='"+e.field+"-form-error'><div>"+e.message+"</div></span>"},_hintTemplate:function(e){return"<div class='k-form-hint' id='"+e.id+"-form-hint'><span>"+e.message+"</span></div>"},_wrapper:function(){var e=this,t=e.options,i=k.styles,a=t.width,l=t.height;e.wrapper=e.element.addClass(i.form).addClass(i[t.orientation]),l&&e.wrapper.height(l),a&&e.wrapper.css("max-width",a),e.layoutWrapper=e._setupLayoutContainer(e.wrapper,{grid:t.grid,layout:t.layout})},_flattenFields:function(e){for(var t=[].concat(e),i=t.shift(),a=[],l=[].push;i;)i.items?l.apply(t,i.items):l.call(a,i),i=t.shift();return a},_defaultLabel:function(e){var i=this.options.formatLabel;if(e.length)return t.isFunction(i)?i(e):e.split(/(.*[a-z])(?=[A-Z])/).join(" ").trim()+":"},_formatLabel:function(t,i){return void 0!==(e.isPlainObject(i)?i.text:i)?i:this._defaultLabel(t)},_defaultFields:function(){var e,t=this.options,i=Object.keys(t.formData||{}),a=t.items||{},l=[];if(a.length)return a;for(var n=0;n<i.length;n+=1)e=i[n],l.push({field:e,id:e});return l},_setFields:function(){var e,a,l,r,o,d=this,s=d._flattenFields(d._defaultFields()),f=d.options.formData||{};for(var p in d._fields=[],s)a=f[(e=s[p]).field],l="string"==typeof e.editor?e.editor:t.type(a&&t.parseDate(a.toString())||a),r=t.isFunction(e.editor)?e.editor:i.Editable.fn.options.editors[l]?"":e.editor,d._isHidden(e.editor)||(e.label?o={"aria-labelledby":e.id||e.field+"-form-label"}:e.attributes&&e.attributes["aria-label"]||(o={"aria-label":e.name||e.field})),e=n(!0,{label:e.label||e.name||e.field,optionalText:d.options.messages.optional},e,{id:e.id||e.field,name:e.name||e.field,type:l,editor:r,attributes:o,isHidden:d._isHidden(e.editor)||d._isAntiForgeryToken(e.name||e.field)}),d._fields[p]=e},_setModel:function(){var e=this,i=e.options,a=i.formData||{};if(i.formData instanceof t.data.ObservableObject)e._model=a;else{var l=t.data.Model.define({fields:e._fields});e._model=new l(a)}},_editable:function(){var e=this,t=e.options,i=e.options.validatable;e._addEditableMvvmAttributes(),e.editable=e.wrapper.kendoEditable({model:e._model,fields:e._fields||[],validateOnBlur:i.validateOnBlur,validationSummary:i.validationSummary,errorTemplate:i.errorTemplate||e._errorTemplate,clearContainer:!1,skipFocus:!t.focusFirst,target:e,size:t.size}).getKendoEditable(),e.validator=e.editable.validatable,e._removeEditableMvvmAttributes()},_addEditableMvvmAttributes:function(){this.wrapper.attr(v,"editable")},_removeEditableMvvmAttributes:function(){this.wrapper.attr(b,!0).attr(v,"form")},_getItemTemplate:function(e){return e===m?this._groupTemplate:this._fieldTemplate},_isHidden:function(e){return"string"==typeof e&&"hidden"===e},_isAntiForgeryToken:function(e){return e===i.Editable.antiForgeryTokenName},_renderField:function(e){var i,a=this,l=k.styles,n=a.options.orientation===h,r=a._model.fields&&a._model.fields[e.field]&&a._model.fields[e.field].type,o=r&&"boolean"===r;return i=o&&n?a._noLabelfieldTemplate:a._fieldTemplate,t.template(i)({styles:l,id:e.id||e.field||"",field:e.field||"",label:o?null:a._formatLabel(e.field,e.label),colSpan:e.colSpan||"",optional:a.options.messages.optional,hidden:a._isHidden(e.editor)||a._isAntiForgeryToken(e.field)})},_toggleFieldErrorState:function(e,t){var i=e.closest(g+_.field);i.length&&i.toggleClass(_.fieldError,t)},_renderBoolLabels:function(){for(var e,i,a=this,l=k.styles,n=a._fields,r=0;r<n.length;r+=1)e=n[r],(i=a.wrapper.find("[name='"+e.name+"']:not([type='hidden'])"))&&e.label&&!e.isHidden&&"boolean"===e.type&&i.after(t.template(a._boolLabelTemplate)({styles:l,id:e.id||e.field||"",optional:a.options.messages.optional,label:a._formatLabel(e.field,e.label)}))},_renderFieldsHints:function(){for(var i,a,l,n,r,o=this,d=o._fields,s=0;s<d.length;s+=1)i=d[s],(l=o.wrapper.find("[name='"+i.name+"']"))&&i.hint&&!i.isHidden&&(r=e(t.template(o._hintTemplate)({message:i.hint||"",id:i.id})),o._associateHintContainer(l,r.attr("id")),(a=t.widgetInstance(l))&&(l=(n=a.element.next("label[for='"+a.element.attr("id")+"']")).length?n:a.wrapper),o.validator._errorsByName(i.name).length&&(r.toggleClass(_.hidden),t.removeAttribute(l,c,r.attr("id"))),r.insertAfter(l))},_associateHintContainer:function(e,i){var a=t.getWidgetFocusableElement(e);a&&i&&t.toggleAttribute(a,c,i)},_toggleHint:function(e,t){var i,a=e.closest(g+_.field);a.length&&(i=a.find(g+_.fieldHint)).length&&(i.toggleClass(_.hidden,t),this._associateHintContainer(e,i.attr("id")))},_renderGroup:function(i){var a,l,n,r=this,o=i.type;n=l=e(t.template(r._getItemTemplate(o))({styles:_,label:i.label||"",colSpan:i.colSpan})),n=r._setupLayoutContainer(l,{grid:i.grid,layout:i.layout})||l;for(var d=0;d<i.items.length;d+=1)a=i.items[d],n.append(r._renderField(a));return l},_renderContainers:function(){for(var e,t,i=this,a=i._defaultFields(),l="grid"===i.options.layout?i.layoutWrapper:i.wrapper,n=0;n<a.length;n+=1)t=(e=a[n]).type===m?i._renderGroup(e):i._renderField(e),l.append(t)},_buttonsTemplate:function(){var i,a,l,n=this.options,r=n.messages,o=k.styles;return null!==n.buttonsTemplate?i=t.template(n.buttonsTemplate)({styles:o,messages:r}):(a=e("<button class='"+o.submit+"'>"+r.submit+"</button>").kendoButton({type:"submit",themeColor:"primary",size:n.size}),l=e("<button class='"+o.clear+"'>"+r.clear+"</button>").kendoButton({size:n.size}),i=a.add(l)),i},_renderButtons:function(){var t,i=this,a=i.wrapper,l=i.options,n=k.styles,r=l.orientation===h,o=a.find(g+n.buttonsContainer);o.length||(o=e("<div />").addClass(n.buttonsContainer).addClass(r?n.buttonsEnd:"")),t=i._buttonsTemplate(),o.append(t),i.element.append(o)},_setupLayoutContainer:function(t,i){var a,l,n,r=i.layout,o=i.grid,d=[];return"string"==typeof r&&""!==r&&(a=e("<div></div>").appendTo(t).addClass(_.layout),d.push("k-d-"+r)),"grid"===r&&"object"==typeof o&&("number"==typeof o.cols?d.push("k-grid-cols-"+o.cols):"string"==typeof o.cols&&a.css("grid-template-columns",o.cols),"number"==typeof o.gutter||"string"==typeof o.gutter?a.css("grid-gap",o.gutter):e.isPlainObject(o.gutter)&&("number"==typeof(l=o.gutter.rows)&&(l+="px"),"number"==typeof(n=o.gutter.cols)&&(n+="px"),a.css("grid-gap",l+" "+n))),a&&a.addClass(d.join(" ")),a},_setEvents:function(){var e=this;e.validator.bind("validateInput",e._validateField.bind(e)).bind(o,e._validate.bind(e)),e.wrapper.on(f+a,e._submit.bind(e)).on(p+a,e._clear.bind(e)).on("click.kendoForm"+a,g+_.clear,e._clear.bind(e)),e._changeHandler||(e._changeHandler=e._change.bind(e)),e._model.bind(s,e._changeHandler)},_validateField:function(e){var t=this,i={model:t._model.toJSON(),valid:e.valid,field:e.field,error:e.error,input:e.input};t._toggleFieldErrorState(i.input,!i.valid),t._toggleHint(i.input,!i.valid),t.trigger(d,i)&&e.preventDefault()},_validate:function(e){var t={model:this._model.toJSON(),valid:e.valid,errors:e.errors};this.trigger(o,t)},_change:function(e){var t=e.field,i={field:t,value:this._model[t]};this.trigger(s,i)},_submit:function(e){var t=this._model.toJSON();this.trigger(f,{model:t})&&e.preventDefault()},_clear:function(e){e.preventDefault(),this.clear(),this.trigger(p)},validate:function(){var e=this.validator;if(e)return e.validate()},clear:function(){var e=this,i=e._fields,a=e._model,l=e.editable,n=e.validator.options.validateOnBlur;e.validator.reset(),n&&a.unbind("set").unbind(u);for(var r=0;r<i.length;r+=1){var o=i[r].field,d=e.wrapper.find("[name='"+o+"']"),s=t.widgetInstance(d),f=d.is("input[type=hidden]");d.is("[data-role='checkboxgroup']")||d.is("[data-role='radiogroup']")||f||d.val(""),!s&&d.hasClass("k-hidden")&&(s=t.widgetInstance(d.closest(".k-signature"))),s&&(t.ui.Upload&&s instanceof t.ui.Upload?s.clearAllFiles():s.value(null)),e._toggleHint(d,!1),"boolean"==typeof a[o]?(d.val("false"),a.set(o,!1)):f||a.set(o,null)}e.wrapper.find(g+_.fieldError).removeClass(_.fieldError),n&&a.bind("set",l._validateProxy).bind(u,l._validateProxy)},setOptions:function(e){var t=this;t.destroy(),t.wrapper.removeClass(_.horizontal).removeAttr(b).empty(),t.init(t.element,e)},destroy:function(){var e=this;e.wrapper.off(a),e._model&&(e._model.unbind(s,e._changeHandler),e._changeHandler=null),l.fn.destroy.call(e.editable),l.fn.destroy.call(e),e.editable&&(e.editable.destroy(),e.editable=null)}}),t.cssProperties.registerPrefix("Form","k-form-"),i.plugin(k),n(!0,k,{styles:_})})); //# sourceMappingURL=kendo.form.min.js.map