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