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