@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
7 lines • 14.9 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.listview.min.js`),require(`kendo.dropdownlist.min.js`),require(`kendo.upload.min.js`),require(`kendo.breadcrumb.min.js`),require(`kendo.icons.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.listview.min`,`kendo.dropdownlist.min`,`kendo.upload.min`,`kendo.breadcrumb.min`,`kendo.icons.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Filebrowser={}),e.kendo._globals.Listview,e.kendo._globals.Dropdownlist,e.kendo._globals.Upload,e.kendo._globals.Breadcrumb,e.kendo._globals.Icons))})(this,function(e,t,n,r,i,a){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let o={id:`filebrowser`,name:`FileBrowser`,category:`web`,description:``,hidden:!0,depends:[`selectable`,`listview`,`dropdownlist`,`upload`,`breadcrumb`,`icons`]};(function(e,t){var n=window.kendo,r=n.ui.Widget,i=e.isPlainObject,a=e.extend,o=n.htmlEncode,s=n.isFunction,c=/(^\/|\/$)/g,l=`change`,u=`apply`,d=`error`,f=`click`,p=`.kendoFileBrowser`,m=`.kendoSearchBox`,h=`name`,g=`size`,_=`type`,v={field:_,dir:`asc`},y=n.template(({text:e})=>`<div class="k-listview-item k-listview-item-empty"><span class="k-file-preview"><span class="k-file-icon k-icon k-svg-icon k-i-none"></span></span><span class="k-file-name">${n.htmlEncode(e)}</span></div>`),b=({messages:e})=>`<div class="k-upload k-upload-button-wrap"><div class="k-button k-upload-button">`+n.ui.icon({icon:`plus`,iconClass:`k-button-icon`})+`<span class="k-button-text">${n.htmlEncode(e.uploadFile)}</span></div><input type="file" name="file" /></div>`,x=({showCreate:e,showUpload:t,showDelete:r,messages:i})=>`<div class="k-widget k-filebrowser-toolbar k-toolbar k-floatwrap">${e?`<button type="button" class="k-button k-icon-button">`+n.ui.icon({icon:`folder-add`,iconClass:`k-button-icon`})+`</button>`:``}${t?b({messages:i}):``}${r?`<button type="button" class="k-button k-icon-button k-disabled">`+n.ui.icon({icon:`x`,iconClass:`k-button-icon`})+`</button>`:``}<div class="k-tiles-arrange"><label>${n.htmlEncode(i.orderBy)}: <select></select></label></div><span class="k-toolbar-spacer"></span><input data-role="searchbox" /></div>`;a(!0,n.data,{schemas:{filebrowser:{data:function(e){return e.items||e||[]},model:{id:`name`,fields:{name:`name`,size:`size`,type:`type`}}}}}),a(!0,n.data,{transports:{filebrowser:n.data.RemoteTransport.extend({init:function(t){n.data.RemoteTransport.fn.init.call(this,e.extend(!0,{},this.options,t))},_call:function(t,r){r.data=e.extend({},r.data,{path:this.options.path()}),s(this.options[t])?this.options[t].call(this,r):n.data.RemoteTransport.fn[t].call(this,r)},read:function(e){this._call(`read`,e)},create:function(e){this._call(`create`,e)},destroy:function(e){this._call(`destroy`,e)},update:function(){},options:{read:{type:`POST`},update:{type:`POST`},create:{type:`POST`},destroy:{type:`POST`}}})}});function S(e,t,n){var r,i;e.on(`dragenter`+p,function(){t(),i=new Date,r||=setInterval(function(){new Date-i>100&&(n(),clearInterval(r),r=null)},100)}).on(`dragover`+p,function(){i=new Date})}function C(e,n){return(e===t||!e.match(/\/$/))&&(e=(e||``)+`/`),e+n}function w(e){if(!e)return``;var t=` bytes`;return e>=1073741824?(t=` GB`,e/=1073741824):e>=1048576?(t=` MB`,e/=1048576):e>=1024&&(t=` KB`,e/=1024),Math.round(e*100)/100+t}function T(e,t){var n=e[t];return i(n)?n.from||n.field||t:n}var E=r.extend({init:function(e,t){var n=this;t||={},r.fn.init.call(n,e,t),n.element.addClass(`k-filebrowser`),n.element.on(f+p,`.k-filebrowser-toolbar button:not(.k-disabled):has(.k-i-x,.k-svg-i-x)`,n._deleteClick.bind(n)).on(f+p,`.k-filebrowser-toolbar button:not(.k-disabled):has(.k-i-folder-add,.k-svg-i-folder-add)`,n._addClick.bind(n)).on(`keydown`+p,`.k-listview-item.k-selected input`,n._directoryKeyDown.bind(n)).on(`blur`+p,`.k-listview-item.k-selected input`,n._directoryBlur.bind(n)),n._dataSource(),n.refresh(),n.path(n.options.path)},options:{name:`FileBrowser`,messages:{uploadFile:`Upload`,orderBy:`Arrange by`,orderByName:`Name`,orderBySize:`Size`,directoryNotFound:`A directory with this name was not found.`,emptyFolder:`Empty Folder`,deleteFile:`Are you sure you want to delete {0}?`,invalidFileType:`The selected file {0} is not valid. Supported file types are {1}.`,overwriteFile:`A file with name {0} already exists in the current directory. Do you want to overwrite it?`,dropFilesHere:`drop file here to upload`,search:`Search`},transport:{},path:`/`,fileTypes:`*.*`},events:[d,l,u],destroy:function(){var e=this;r.fn.destroy.call(e),e.dataSource.unbind(d,e._errorHandler),e.element.add(e.list).add(e.toolbar).off(p),n.destroy(e.element)},value:function(){var e=this,t=e._selectedItem(),r,i=e.options.transport.fileUrl;if(t&&t.get(_)===`f`)return r=C(e.path(),t.get(h)).replace(c,``),i&&(r=s(i)?i(r):n.format(i,encodeURIComponent(r))),r},_selectedItem:function(){var e=this.listView.select();if(e.length)return this.dataSource.getByUid(e.attr(n.attr(`uid`)))},_toolbar:function(){var t=this,r=n.template(x),i=t.options.messages,a=[{text:i.orderByName,value:`name`},{text:i.orderBySize,value:`size`}];t.toolbar=e(r({messages:i,showUpload:t.options.transport.uploadUrl,showCreate:t.options.transport.create,showDelete:t.options.transport.destroy})).appendTo(t.element).find(`.k-upload input`).kendoUpload({multiple:!1,localization:{dropFilesHere:i.dropFilesHere},async:{saveUrl:t.options.transport.uploadUrl,autoUpload:!0},upload:t._fileUpload.bind(t),error:function(e){t._error({xhr:e.XMLHttpRequest,status:`error`})}}).end(),t.upload=t.toolbar.find(`.k-upload input`).data(`kendoUpload`),t.arrangeBy=t.toolbar.find(`.k-tiles-arrange select`).kendoDropDownList({dataSource:a,dataTextField:`text`,dataValueField:`value`,change:function(){t.orderBy(this.value())}}).data(`kendoDropDownList`),t.searchBox=t.toolbar.find(`input[data-role='searchbox']`).kendoSearchBox({label:t.options.messages.search,change:function(){t.search(this.value())}}).data(`kendoSearchBox`),t._attachDropzoneEvents()},_attachDropzoneEvents:function(){var t=this;t.options.transport.uploadUrl&&(S(e(document.documentElement),t._dropEnter.bind(t),t._dropLeave.bind(t)),t._scrollHandler=t._positionDropzone.bind(t))},_dropEnter:function(){this._positionDropzone(),e(document).on(`scroll`+p,this._scrollHandler)},_dropLeave:function(){this._removeDropzone(),e(document).off(`scroll`+p,this._scrollHandler)},_positionDropzone:function(){var e=this,t=e.element,n=t.offset();e.toolbar.find(`.k-dropzone`).addClass(`k-filebrowser-dropzone`).offset(n).css({width:t[0].clientWidth,height:t[0].clientHeight,lineHeight:t[0].clientHeight+`px`})},_removeDropzone:function(){this.toolbar.find(`.k-dropzone`).removeClass(`k-filebrowser-dropzone`).css({width:``,height:``,lineHeight:``,top:``,left:``})},_deleteClick:function(){var e=this,t=e.listView.select(),r=o(n.format(e.options.messages.deleteFile,t.find(`.k-file-name`).text()));t.length&&e._showMessage(r,`confirm`)&&e.listView.remove(t)},_addClick:function(){this.createDirectory()},_getFieldName:function(e){return T(this.dataSource.reader.model.fields,e)},_fileUpload:function(e){var t=this,r=t.options,i=r.fileTypes,a=new RegExp((`(`+i.split(`,`).join(`)|(`)+`)`).replace(/\*\./g,`.*.`),`i`),s=e.files[0].name,c=e.files[0].size,l=h,u=g,d;a.test(s)?(e.data={path:t.path()},d=t._createFile(s,c),d?t.upload.one(`success`,function(e){var r=t._insertFileToList(d);r._override&&(r.set(l,e.response[t._getFieldName(l)]),r.set(u,e.response[t._getFieldName(u)]),t.listView.dataSource.pushUpdate(r)),t._tiles=t.listView.items().filter(`[`+n.attr(`type`)+`=f]`)}):e.preventDefault()):(e.preventDefault(),t._showMessage(o(n.format(r.messages.invalidFileType,s,i))))},_findFile:function(e){var t=this.dataSource.data(),n,r,i=_,a=h,o;for(e=e.toLowerCase(),n=0,o=t.length;n<o;n++)if(t[n].get(i)===`f`&&t[n].get(a).toLowerCase()===e){r=t[n];break}return r},_createFile:function(e,t){var r=this,i={},a=_,s=r._findFile(e);return s?r._showMessage(o(n.format(r.options.messages.overwriteFile,e)),`confirm`)?(s._override=!0,s):null:(i[a]=`f`,i[h]=e,i[g]=t,i)},_insertFileToList:function(e){var t;if(e._override)return e;for(var n=this.dataSource,r=n.view(),i=0,a=r.length;i<a;i++)if(r[i].get(_)===`f`){t=i;break}return n.insert(++t,e)},createDirectory:function(){var e=this,t,r,i=0,a=_,o=h,s=e.dataSource.data(),c=e._nameDirectory(),l=new e.dataSource.reader.model;for(t=0,r=s.length;t<r;t++)s[t].get(a)===`d`&&(i=t);l.set(a,`d`),l.set(o,c),e.listView.one(`dataBound`,function(){var t=e.listView.items().filter(`[`+n.attr(`uid`)+`=`+l.uid+`]`);t.length&&this.edit(t),this.element.scrollTop(t.attr(`offsetTop`)-this.element[0].offsetHeight),setTimeout(function(){e.listView.element.find(`.k-edit-item input`).select()})}).one(`save`,function(t){var n=t.model.get(o);n?t.model.set(o,e._nameExists(n,l.uid)?e._nameDirectory():n):t.model.set(o,c)}),e.dataSource.insert(++i,l)},_directoryKeyDown:function(e){e.keyCode==13&&e.currentTarget.blur()},_directoryBlur:function(){this.listView.save()},_nameExists:function(e,t){var n=this.dataSource.data(),r=_,i=h,a,o;for(a=0,o=n.length;a<o;a++)if(n[a].get(r)===`d`&&n[a].get(i).toLowerCase()===e.toLowerCase()&&n[a].uid!==t)return!0;return!1},_nameDirectory:function(){var t=`New folder`,n=this.dataSource.data(),r=[],i=_,a=h,o,s,c;for(s=0,c=n.length;s<c;s++)n[s].get(i)===`d`&&n[s].get(a).toLowerCase().indexOf(t.toLowerCase())>-1&&r.push(n[s].get(a));if(e.inArray(t,r)>-1){s=2;do o=t+` (`+s+`)`,s++;while(e.inArray(o,r)>-1);t=o}return t},orderBy:function(e){this.dataSource.sort([{field:_,dir:`asc`},{field:e,dir:`asc`}])},search:function(e){this.dataSource.filter({field:h,operator:`contains`,value:e})},_content:function(){var t=this;t.list=e(`<div class="k-filemanager-listview" />`).appendTo(t.element).on(`dblclick`+p,`.k-listview-item`,t._dblClick.bind(t)),t.listView=new n.ui.ListView(t.list,{layout:`flex`,flex:{direction:`row`,wrap:`wrap`},dataSource:t.dataSource,template:t._itemTmpl(),editTemplate:t._editTmpl(),selectable:!0,autoBind:!1,dataBinding:function(e){t.toolbar.find(`.k-i-x,.k-svg-i-x`).parent().addClass(`k-disabled`),(e.action===`remove`||e.action===`sync`)&&(e.preventDefault(),n.ui.progress(t.listView.content,!1),n.ui.progress(t.listView.wrapper,!1))},dataBound:function(){t.dataSource.view().length?t._tiles=this.items().filter(`[`+n.attr(`type`)+`=f]`):this.content.append(y({text:t.options.messages.emptyFolder}))},change:t._listViewChange.bind(t)})},_dblClick:function(t){var r=this,i=e(t.currentTarget);if(i.hasClass(`k-edit-item`)&&r._directoryBlur(),i.filter(`[`+n.attr(`type`)+`=d]`).length){var a=r.dataSource.getByUid(i.attr(n.attr(`uid`)));a&&(r.path(C(r.path(),a.get(h))),r.breadcrumbs.value(`/`+r.path()))}else i.filter(`[`+n.attr(`type`)+`=f]`).length&&r.trigger(u)},_listViewChange:function(){var e=this._selectedItem();e&&(this.toolbar.find(`.k-i-x,.k-svg-i-x`).parent().removeClass(`k-disabled`),this.trigger(l,{selected:e}))},_dataSource:function(){var e=this,t=e.options,r=t.transport,o=a({},v),s={field:h,dir:`asc`},c={type:r.type||`filebrowser`,sort:[o,s]};i(r)&&(r.path=e.path.bind(e),c.transport=r),i(t.schema)?c.schema=t.schema:r.type&&i(n.data.schemas[r.type])&&n.data.schemas[r.type],e.dataSource&&e._errorHandler?e.dataSource.unbind(d,e._errorHandler):e._errorHandler=e._error.bind(e),e.dataSource=n.data.DataSource.create(c).bind(d,e._errorHandler)},_navigation:function(){var t=this;t.breadcrumbs=e(`<div class="k-floatwrap"><nav></nav></div>`).appendTo(this.element).find(`nav`).first().kendoBreadcrumb({editable:!0,gap:50,value:t.options.path||`/`,change:function(){t.path(this.value())}}).data(`kendoBreadcrumb`)},_error:function(e){var t=this,r;if(!t.trigger(d,e)){r=e.xhr.status,e.status==`error`?r==`404`?t._showMessage(n.htmlEncode(t.options.messages.directoryNotFound)):r!=`0`&&t._showMessage(`Error! The requested URL returned `+r+` - `+e.xhr.statusText):r==`timeout`&&t._showMessage(`Error! Server timeout.`);var i=t.dataSource;i.hasChanges()&&i.cancelChanges()}},_showMessage:function(e,t){return window[t||`alert`](e)},refresh:function(){var e=this;e._navigation(),e._toolbar(),e._content()},_editTmpl:function(){return n.template(e=>`<div class="k-listview-item k-selected" ${n.attr(`uid`)}="${e.uid}">${e[_]===`d`?`<div class="k-file-preview">`+n.ui.icon({icon:`folder`,iconClass:`k-file-icon`,size:`xxxlarge`})+`</div>`:`<div class="k-file-preview"><span class="k-file-icon k-icon k-i-loading"></span></div>`}${e[_]===`d`?`<span class="k-file-name">
<span class="k-textbox k-input">
<input class="k-input-inner" ${n.attr(`bind`)}="value:${h}"/>
</span>
</span>`:``}</div>`)},_itemTmpl:function(){return n.template(e=>`<div class="k-listview-item" ${n.attr(`uid`)}="${e.uid}" ${n.attr(`type`)}="${e[_]}">${e[_]===`d`?`<div class="k-file-preview">`+n.ui.icon({icon:`folder`,iconClass:`k-file-icon`,size:`xxxlarge`})+`</div>`:`<div class="k-file-preview">`+n.ui.icon({icon:`file`,iconClass:`k-file-icon`,size:`xxxlarge`})+`</div>`}<span class="k-file-name">${e[h]}</span>${e[_]===`f`?`<span class="k-file-size">${w(e[g])}</span>`:``}</div>`)},path:function(e){var n=this,r=n._path||``;if(e!==t){n._path=e.replace(c,``)+`/`,n.dataSource.read({path:n._path});return}return r&&=r.replace(c,``),r===`/`||r===``?``:r+`/`}}),D=r.extend({init:function(e,t){var n=this;t||={},r.fn.init.call(n,e,t),n.element.attr(`placeholder`,n.options.label),n._wrapper(),n.element.on(`keydown`+m,n._keydown.bind(n)).on(`change`+m,n._updateValue.bind(n)),n.wrapper.on(f+m,`a`,n._click.bind(n))},options:{name:`SearchBox`,label:`Search`,value:``},events:[l],destroy:function(){var e=this;e.wrapper.add(e.element).add(e.label).off(m),r.fn.destroy.call(e)},_keydown:function(e){e.keyCode===13&&this._updateValue()},_click:function(e){e.preventDefault(),this._updateValue()},_updateValue:function(){var e=this,t=e.element.val();t!==e.value()&&(e.value(t),e.trigger(l))},_blur:function(){this._updateValue()},_focus:function(){this.label.hide()},_wrapper:function(){var t=this.element,r=t.parents(`.k-search-wrap`);t[0].style.width=``,t.addClass(`k-input-inner`),r.length||(r=t.wrap(e(`<div class="k-widget k-search-wrap"><span class="k-textbox k-input"></span></div>`)).parents(`.k-search-wrap`),e(`<span class="k-input-suffix">`+n.ui.icon(e(`<a href="#" />`),{icon:`search`,iconClass:`k-search`})+`</span>`).appendTo(r.find(`.k-textbox`))),this.wrapper=r,this.label=r.find(`>label`)},value:function(e){var n=this;if(e!==t){n.options.value=e,n.element.val(e);return}return n.options.value}});n.ui.plugin(E),n.ui.plugin(D)})(window.kendo.jQuery);var s=kendo;e.__meta__=o,e.default=s});
//# sourceMappingURL=kendo.filebrowser.min.js.map