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) 13.5 kB
!function(e){"function"==typeof define&&define.amd?define(["kendo.data.min","kendo.editable.min","kendo.selectable.min","kendo.pager.min"],e):e()}((function(){var e,t,n,a,i,r,o,l,s,c,d,u,p,m,g,f,h,b,_,v,w,S,y,k,E,C,x,T,H,I,P;e=window.kendo.jQuery,n=window.kendo,a="change",i="cancel",r="dataBound",o="dataBinding",l=n.ui.Widget,s=n.keys,c=function(){return""},d="> *:not(.k-loading-mask)",u="progress",p="error",m="k-focus",g="k-selected",f="k-edit-item",h="k-listview-pager",b="k-listview-item",_="role",v="aria-label",w="aria-multiselectable",S="aria-activedescendant",y="edit",k="remove",E="save",C="touchstart",x=".kendoListView",T=n._activeElement,H=n.ui.progress,I=n.data.DataSource,P=n.ui.DataBoundWidget.extend({init:function(e,t){var a=this;t=Array.isArray(t)?{dataSource:t}:t,l.fn.init.call(a,e,t),t=a.options,a.wrapper=e=a.element,e[0].id?a._itemId=e[0].id+"_lv_active":a._itemId=n.guid()+"_lv_active",a._element(),a._layout(),a._dataSource(),a._setContentHeight(),a._templates(),a._navigatable(),a._selectable(),a._pageable(),a._crudHandlers(),a._scrollable(),a.options.autoBind&&a.dataSource.fetch(),n.notify(a)},events:[a,i,o,r,y,k,E,"kendoKeydown"],options:{name:"ListView",ariaLabel:null,autoBind:!0,selectable:!1,navigatable:!1,pageable:!1,height:null,template:c,altTemplate:null,editTemplate:null,contentTemplate:function(){return"<div data-content='true' />"},contentElement:"div",bordered:!0,borders:"",layout:"",flex:{direction:"row",wrap:"nowrap"},grid:{},scrollable:!1},setOptions:function(e){l.fn.setOptions.call(this,e),this._layout(),this._templates(),this.selectable&&(this.selectable.destroy(),this.selectable=null),this._selectable()},_templates:function(){var e=this.options;this.template=n.template(e.template||c),this.altTemplate=n.template(e.altTemplate||e.template||c),this.editTemplate=n.template(e.editTemplate||c)},_item:function(e){return this.content.children()[e]()},items:function(){return this.content.children(":not(.k-loading-mask)")},dataItem:function(t){var a=n.attr("uid"),i=e(t).closest("["+a+"]").attr(a);return this.dataSource.getByUid(i)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.options.autoBind&&e.fetch(),"endless"===this.options.scrollable&&this._bindScrollable()},_unbindDataSource:function(){var e=this;e.dataSource.unbind(a,e._refreshHandler).unbind(u,e._progressHandler).unbind(p,e._errorHandler)},_dataSource:function(){var n=this,i=n.options.pageable,r=n.options.dataSource;e.isPlainObject(i)&&i.pageSize!==t&&(r.pageSize=i.pageSize),n.dataSource&&n._refreshHandler?n._unbindDataSource():(n._refreshHandler=n.refresh.bind(n),n._progressHandler=n._progress.bind(n),n._errorHandler=n._error.bind(n)),n.dataSource=I.create(r).bind(a,n._refreshHandler).bind(u,n._progressHandler).bind(p,n._errorHandler)},_progress:function(e){var t=this.wrapper;e&&this.content.height()&&(t=this.content),H(t,e,{opacity:!0})},_error:function(){H(this.content,!1)},_element:function(){var t=this.options,n=t.height;this.element.addClass("k-listview"),t.contentElement?this.content=e(document.createElement(t.contentElement)).appendTo(this.element):this.content=this.element,n&&this.element.css("height",n)},_layout:function(){var e=this,n=e.options,a=n.flex,i=n.grid,r=e.element,o=["k-listview"],l=e.content,s=["k-listview-content"];r.add(l).removeClass((function(e,t){if(t.indexOf("k-")>=0)return!0})),!0===n.bordered&&o.push("k-listview-bordered"),"string"==typeof n.borders&&""!==n.borders&&o.push("k-listview-borders-"+n.borders),"string"==typeof n.contentPadding&&""!==n.contentPadding&&s.push("k-listview-content-padding-"+n.contentPadding),"string"==typeof n.layout&&""!==n.layout&&s.push("k-d-"+n.layout),"flex"===n.layout&&"object"==typeof a&&("string"==typeof a.direction&&""!==a.direction&&s.push("k-flex-"+a.direction),"string"==typeof a.wrap&&""!==a.wrap&&s.push("k-flex-"+a.wrap)),"grid"===n.layout&&"object"==typeof i&&("number"==typeof i.cols?l.css("grid-template-columns","repeat("+i.cols+", 1fr)"):"string"==typeof i.cols&&l.css("grid-template-columns",i.cols),"number"==typeof i.rows?l.css("grid-template-rows","repeat("+i.rows+", "+(i.rowHeight!==t?i.rowHeight:"1fr")+")"):"string"==typeof i.rows&&l.css("grid-template-rows",i.rows),("number"==typeof i.gutter||"string"==typeof i.gutter)&&l.css("grid-gap",i.gutter)),e.element.addClass(o.join(" ")),e.content.addClass(s.join(" "))},_setContentHeight:function(){var e,t=this;t.options.scrollable&&t.wrapper.is(":visible")&&(e=t.wrapper.innerHeight(),t.content.height(e))},refresh:function(e){var t,a,i,l,s,c=this,d=c.dataSource.view(),u="",p=c.template,m=c.altTemplate,g=c.options.selectable?"option":"listitem",f=T(),h=c._endlessFetchInProgress,v=h?c._skipRerenderItemsCount:0,w=c.options.scrollable;if("itemchange"!==(e=e||{}).action){if(!c.trigger(o,{action:e.action||"rebind",items:e.items,index:e.index})){for(c._angularItems("cleanup"),h||c._destroyEditable(),l=v,s=d.length;l<s;l++)u+=l%2?m(d[l]):p(d[l]);for(h?c.content.append(u):c.content.html(u),a=c.items().not(".k-loading-mask"),c._ariaAttributes(d.length),l=v,s=d.length;l<s;l++)(i=a.eq(l)).addClass(b),i.attr(n.attr("uid"),d[l].uid).attr(_,g),c.options.selectable&&i.attr("aria-selected","false"),c.options.pageable&&(i.attr("aria-setsize",c.dataSource.total()),i.attr("aria-posinset",c.dataSource.indexOf(c.dataItem(i))+1));c.content[0]===f&&c.options.navigatable&&(c._focusNext?c.current(c.current().next()):w||c.current(a.eq(0))),c.element.attr(S)&&0===c.element.find("#"+c.element.attr(S)).length&&c.element.removeAttr(S),c._setContentHeight(),c._angularItems("compile"),c._progress(!1),c._endlessFetchInProgress=null,c.trigger(r,{action:e.action||"rebind",items:e.items,index:e.index})}}else c._hasBindingTarget()||c.editable||(t=e.items[0],(i=c.items().filter("["+n.attr("uid")+"="+t.uid+"]")).length>0&&(l=i.index(),c.angular("cleanup",(function(){return{elements:[i]}})),i.replaceWith(p(t)),(i=c.items().eq(l)).attr(n.attr("uid"),t.uid),c.angular("compile",(function(){return{elements:[i],data:[{dataItem:t}]}})),c.trigger("itemChange",{item:i,data:t})))},_ariaAttributes:function(e){var t=this.content,a=this.options.selectable;this._ariaLabelValue=this._ariaLabelValue||this.options.ariaLabel,0===e?(t.removeAttr(_),t.removeAttr(w),t.attr(v)&&(this._ariaLabelValue=t.attr(v),t.removeAttr(v))):(t.attr(_,a?"listbox":"list"),a&&n.ui.Selectable.parseOptions(a).multiple&&t.attr(w,!0),this._ariaLabelValue&&t.attr(v,this._ariaLabelValue))},_pageable:function(){var t,a,i=this,r=i.options.pageable,o=i.options.navigatable;r&&((t=i.wrapper.find("."+h)).length||(t=e("<div />").addClass(h)),"top"===r.position?t.addClass(n.format("{0}-{1}",h,r.position)).prependTo(i.wrapper):t.appendTo(i.wrapper),i.pager&&i.pager.destroy(),"object"==typeof r&&r instanceof n.ui.Pager?i.pager=r:(t=r.pagerId?e("#"+r.pagerId):t,a=e.extend({},r,{dataSource:i.dataSource,navigatable:o,pagerId:null}),i.pager=new n.ui.Pager(t,a)))},_selectable:function(){var t,i,r=this,o=r.options.selectable,l=r.options.navigatable;o&&(t=n.ui.Selectable.parseOptions(o).multiple,r.selectable=new n.ui.Selectable(r.element,{aria:!0,multiple:t,filter:r.options.contentElement?".k-listview-content "+d:d,change:function(){r.trigger(a)}}),l&&r.element.on("keydown"+x,(function(n){if(e(n.target).is(r.element)&&n.keyCode===s.SPACEBAR){if(i=r.current(),n.target==n.currentTarget&&n.preventDefault(),t)if(n.ctrlKey){if(i&&i.hasClass(g))return i.removeClass(g),void r.trigger(a)}else r.selectable.clear();else r.selectable.clear();r.selectable.value(i),r.trigger(a)}})))},_scrollable:function(){var e=this,t=e.options.scrollable;t&&(e.content.css({"overflow-y":"scroll",position:"relative","-webkit-overflow-scrolling":"touch"}),"endless"===t&&e._bindScrollable())},_bindScrollable:function(){var e=this,t=e._endlessPageSize=e.dataSource.options.pageSize;e.content.off("scroll"+x).on("scroll"+x,(function(){this.scrollTop+this.clientHeight-this.scrollHeight>=-15&&!e._endlessFetchInProgress&&e._endlessPageSize<e.dataSource.total()&&(e._skipRerenderItemsCount=e._endlessPageSize,e._endlessPageSize=e._skipRerenderItemsCount+t,e.dataSource.options.endless=!0,e._endlessFetchInProgress=!0,e.dataSource.pageSize(e._endlessPageSize))}))},current:function(e){var n=this,a=n.element,i=n._current,r=n._itemId;if(e===t)return i;i&&i[0]&&(i[0].id===r&&i.removeAttr("id"),i.removeClass(m),a.removeAttr(S)),e&&e[0]&&(r=e[0].id||r,n._scrollTo(e[0]),a.attr(S,r),e.addClass(m).attr("id",r)),n._current=e},_scrollTo:function(t){var n,a=this.content,i=!1,r="scroll";"auto"===a.css("overflow")||a.css("overflow")===r||a.css("overflow-y")===r?n=a[0]:(n=window,i=!0);var o=function(a,o){var l=i?e(t).offset()[a.toLowerCase()]:t["offset"+a],s=t["client"+o],c=e(n)[r+a](),d=e(n)[o.toLowerCase()]();l+s>c+d?e(n)[r+a](l+s-d):l<c&&e(n)[r+a](l)};o("Top","Height"),o("Left","Width")},_navigatable:function(){var t=this,a=t.options.navigatable,i=t.element,r=t.content;a&&(t._tabindex(),i.on("focus"+x,(function(){var e=t._current;e&&e.is(":visible")||(e=t._item("first")),t.current(e)})).on("focusout"+x,(function(){t._current&&t._current.removeClass(m)})).on("keydown"+x,t,(function(a){var i,o=a.keyCode,l=t.current(),c=e(a.target),d=!c.is(":button, textarea, a, a > .t-icon, input"),u=c.is(":text, :password"),p=n.preventDefault,m=r.find("."+f),g=T(),b=t.options.scrollable;if(!(c.hasClass(h)||!d&&!u&&o!==s.ESC||u&&o!==s.ESC&&o!==s.ENTER)&&(o!==s.UP&&o!==s.LEFT||(l&&l[0]&&(l=l.prev()),l&&l[0]?t.current(l):b||t.current(t._item("last")),p(a)),o!==s.DOWN&&o!==s.RIGHT||(b?"endless"!==t.options.scrollable||l.next().length?(l=l.next())&&l[0]&&t.current(l):(t.content[0].scrollTop=t.content[0].scrollHeight,t._focusNext=!0):(l=l.next(),t.current(l&&l[0]?l:t._item("first"))),p(a)),o===s.PAGEUP&&(t.current(null),t.dataSource.page(t.dataSource.page()-1),p(a)),o===s.PAGEDOWN&&(t.current(null),t.dataSource.page(t.dataSource.page()+1),p(a)),o===s.HOME&&(t.current(t._item("first")),p(a)),o===s.END&&(t.current(t._item("last")),p(a)),o===s.ENTER&&(0!==m.length&&(d||u)?(i=t.items().index(m),g&&g.blur(),t.save(),t.one("dataBound",(function(){t.element.trigger("focus"),t.current(t.items().eq(i))}))):t.options.editTemplate&&t.edit(l)),o===s.ESC)){if(0===(m=r.find("."+f)).length)return;i=t.items().index(m),t.cancel(),t.element.trigger("focus"),t.current(t.items().eq(i))}})),i.on("mousedown"+x+" "+C+x,t.options.contentElement?".k-listview-content "+d:d,function(a){t.current(e(a.currentTarget)),e(a.target).is(":button, a, :input, a > .k-icon, a > k-svg-icon, textarea")||n.focusElement(i)}.bind(t)))},clearSelection:function(){this.selectable.clear()},select:function(t){var n=this.selectable;return(t=e(t)).length?(n.options.multiple||(n.clear(),t=t.first()),void n.value(t)):n.value()},_destroyEditable:function(){var e=this;e.editable&&(e.editable.destroy(),delete e.editable)},_modelFromElement:function(e){var t=e.attr(n.attr("uid"));return this.dataSource.getByUid(t)},_closeEditable:function(){var e,t,a,i=this,r=i.editable,o=i.options.selectable?"option":"listitem",l=i.template;return r&&(r.element.index()%2&&(l=i.altTemplate),i.angular("cleanup",(function(){return{elements:[r.element]}})),e=i._modelFromElement(r.element),i._destroyEditable(),a=r.element.index(),r.element.replaceWith(l(e)),(t=i.items().eq(a)).addClass(b),t.attr(n.attr("uid"),e.uid),t.attr(_,o),i._hasBindingTarget()&&n.bind(t,e),i.angular("compile",(function(){return{elements:[t],data:[{dataItem:e}]}}))),!0},edit:function(e){var t,a,i=this,r=i._modelFromElement(e),o=r.uid;i.cancel(),a=(e=i.items().filter("["+n.attr("uid")+"="+o+"]")).index(),e.replaceWith(i.editTemplate(r)),t=i.items().eq(a).addClass(f).attr(n.attr("uid"),r.uid),i.editable=t.kendoEditable({model:r,clearContainer:!1,errorTemplate:!1,target:i}).data("kendoEditable"),i.trigger(y,{model:r,item:t})},save:function(){var e,t=this,n=t.editable;if(n){var a=n.element;e=t._modelFromElement(a),n.end()&&!t.trigger(E,{model:e,item:a})&&(t._closeEditable(),t.dataSource.sync())}},remove:function(e){var t=this,n=t.dataSource,a=t._modelFromElement(e);t.editable&&(n.cancelChanges(t._modelFromElement(t.editable.element)),t._closeEditable()),t.trigger(k,{model:a,item:e})||(e.attr("id")===t.element.attr(S)&&t.element.removeAttr(S),e.hide(),n.remove(a),n.sync())},add:function(){var e,t=this,n=t.dataSource,a=n.indexOf((n.view()||[])[0]);a<0&&(a=0),t.cancel(),e=n.insert(a,{}),t.edit(t.element.find("[data-uid='"+e.uid+"']"))},cancel:function(){var e=this,t=e.dataSource;if(e.editable){var n=e.editable.element,a=e._modelFromElement(n);e.trigger(i,{model:a,container:n})||(t.cancelChanges(a),e._closeEditable())}},_crudHandlers:function(){var t=this,a=C+x,i="click"+x;t.content.on(a+" "+i,".k-edit-button",(function(a){a.preventDefault();var i=e(this).closest("["+n.attr("uid")+"]");setTimeout((function(){t.edit(i)}))})),t.content.on(a+" "+i,".k-delete-button",(function(a){a.preventDefault();var i=e(this).closest("["+n.attr("uid")+"]");setTimeout((function(){t.remove(i)}))})),t.content.on(i,".k-update-button",(function(e){t.save(),e.preventDefault()})),t.content.on(i,".k-cancel-button",(function(e){t.cancel(),e.preventDefault()}))},destroy:function(){var e=this;l.fn.destroy.call(e),e._unbindDataSource(),e._destroyEditable(),e.element.off(x),e.content.off(x),e._endlessFetchInProgress=e._endlessPageSize=e._skipRerenderItemsCount=e._focusNext=null,e.pager&&e.pager.destroy(),n.destroy(e.element)}}),n.ui.plugin(P)})); //# sourceMappingURL=kendo.listview.min.js.map