UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

1,198 lines (972 loc) 40 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1182); /***/ }), /***/ 3: /***/ (function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }), /***/ 1010: /***/ (function(module, exports) { module.exports = require("./kendo.dropdownlist"); /***/ }), /***/ 1182: /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1183), __webpack_require__(1010), __webpack_require__(1184) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); })(function(){ var __meta__ = { // jshint ignore:line id: "filebrowser", name: "FileBrowser", category: "web", description: "", hidden: true, depends: [ "selectable", "listview", "dropdownlist", "upload" ] }; (function($, undefined) { var kendo = window.kendo, Widget = kendo.ui.Widget, isPlainObject = $.isPlainObject, proxy = $.proxy, extend = $.extend, placeholderSupported = kendo.support.placeholder, browser = kendo.support.browser, isFunction = kendo.isFunction, trimSlashesRegExp = /(^\/|\/$)/g, CHANGE = "change", APPLY = "apply", ERROR = "error", CLICK = "click", NS = ".kendoFileBrowser", BREADCRUBMSNS = ".kendoBreadcrumbs", SEARCHBOXNS = ".kendoSearchBox", NAMEFIELD = "name", SIZEFIELD = "size", TYPEFIELD = "type", DEFAULTSORTORDER = { field: TYPEFIELD, dir: "asc" }, EMPTYTILE = kendo.template('<li class="k-tile-empty"><strong>${text}</strong></li>'), TOOLBARTMPL = '<div class="k-widget k-filebrowser-toolbar k-header k-floatwrap">' + '<div class="k-toolbar-wrap">' + '# if (showUpload) { # ' + '<div class="k-widget k-upload"><div class="k-button k-button-icontext k-upload-button">' + '<span class="k-icon k-i-plus"></span>#=messages.uploadFile#<input type="file" name="file" /></div></div>' + '# } #' + '# if (showCreate) { #' + '<button type="button" class="k-button k-button-icon"><span class="k-icon k-i-folder-add" /></button>' + '# } #' + '# if (showDelete) { #' + '<button type="button" class="k-button k-button-icon k-state-disabled"><span class="k-icon k-i-close" /></button>&nbsp;' + '# } #' + '</div>' + '<div class="k-tiles-arrange">' + '<label>#=messages.orderBy#: <select /></label>' + '</div>' + '</div>'; extend(true, kendo.data, { schemas: { "filebrowser": { data: function(data) { return data.items || data || []; }, model: { id: "name", fields: { name: "name", size: "size", type: "type" } } } } }); extend(true, kendo.data, { transports: { "filebrowser": kendo.data.RemoteTransport.extend({ init: function(options) { kendo.data.RemoteTransport.fn.init.call(this, $.extend(true, {}, this.options, options)); }, _call: function(type, options) { options.data = $.extend({}, options.data, { path: this.options.path() }); if (isFunction(this.options[type])) { this.options[type].call(this, options); } else { kendo.data.RemoteTransport.fn[type].call(this, options); } }, read: function(options) { this._call("read", options); }, create: function(options) { this._call("create", options); }, destroy: function(options) { this._call("destroy", options); }, update: function() { //updates are handled by the upload }, options: { read: { type: "POST" }, update: { type: "POST" }, create: { type: "POST" }, destroy: { type: "POST" } } }) } }); function bindDragEventWrappers(element, onDragEnter, onDragLeave) { var hideInterval, lastDrag; element .on("dragenter" + NS, function() { onDragEnter(); lastDrag = new Date(); if (!hideInterval) { hideInterval = setInterval(function() { var sinceLastDrag = new Date() - lastDrag; if (sinceLastDrag > 100) { onDragLeave(); clearInterval(hideInterval); hideInterval = null; } }, 100); } }) .on("dragover" + NS, function() { lastDrag = new Date(); }); } var offsetTop; if (browser.msie && browser.version < 8) { offsetTop = function (element) { return element.offsetTop; }; } else { offsetTop = function (element) { return element.offsetTop - $(element).height(); }; } function concatPaths(path, name) { if(path === undefined || !path.match(/\/$/)) { path = (path || "") + "/"; } return path + name; } function sizeFormatter(value) { if(!value) { return ""; } var suffix = " bytes"; if (value >= 1073741824) { suffix = " GB"; value /= 1073741824; } else if (value >= 1048576) { suffix = " MB"; value /= 1048576; } else if (value >= 1024) { suffix = " KB"; value /= 1024; } return Math.round(value * 100) / 100 + suffix; } function fieldName(fields, name) { var descriptor = fields[name]; if (isPlainObject(descriptor)) { return descriptor.from || descriptor.field || name; } return descriptor; } var FileBrowser = Widget.extend({ init: function(element, options) { var that = this; options = options || {}; Widget.fn.init.call(that, element, options); that.element.addClass("k-filebrowser"); that.element .on(CLICK + NS, ".k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-close)", proxy(that._deleteClick, that)) .on(CLICK + NS, ".k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-folder-add)", proxy(that._addClick, that)) .on("keydown" + NS, "li.k-state-selected input", proxy(that._directoryKeyDown, that)) .on("blur" + NS, "li.k-state-selected input", proxy(that._directoryBlur, that)); that._dataSource(); that.refresh(); that.path(that.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: [ERROR, CHANGE, APPLY], destroy: function() { var that = this; Widget.fn.destroy.call(that); that.dataSource .unbind(ERROR, that._errorHandler); that.element .add(that.list) .add(that.toolbar) .off(NS); kendo.destroy(that.element); }, value: function() { var that = this, selected = that._selectedItem(), path, fileUrl = that.options.transport.fileUrl; if (selected && selected.get(TYPEFIELD) === "f") { path = concatPaths(that.path(), selected.get(NAMEFIELD)).replace(trimSlashesRegExp, ""); if (fileUrl) { path = isFunction(fileUrl) ? fileUrl(path) : kendo.format(fileUrl, encodeURIComponent(path)); } return path; } }, _selectedItem: function() { var listView = this.listView, selected = listView.select(); if (selected.length) { return this.dataSource.getByUid(selected.attr(kendo.attr("uid"))); } }, _toolbar: function() { var that = this, template = kendo.template(TOOLBARTMPL), messages = that.options.messages, arrangeBy = [ { text: messages.orderByName, value: "name" }, { text: messages.orderBySize, value: "size" } ]; that.toolbar = $(template({ messages: messages, showUpload: that.options.transport.uploadUrl, showCreate: that.options.transport.create, showDelete: that.options.transport.destroy })) .appendTo(that.element) .find(".k-upload input") .kendoUpload({ multiple: false, localization: { dropFilesHere: messages.dropFilesHere }, async: { saveUrl: that.options.transport.uploadUrl, autoUpload: true }, upload: proxy(that._fileUpload, that), error: function(e) { that._error({ xhr: e.XMLHttpRequest, status: "error" }); } }).end(); that.upload = that.toolbar .find(".k-upload input") .data("kendoUpload"); that.arrangeBy = that.toolbar.find(".k-tiles-arrange select") .kendoDropDownList({ dataSource: arrangeBy, dataTextField: "text", dataValueField: "value", change: function() { that.orderBy(this.value()); } }) .data("kendoDropDownList"); that._attachDropzoneEvents(); }, _attachDropzoneEvents: function() { var that = this; if (that.options.transport.uploadUrl) { bindDragEventWrappers($(document.documentElement), $.proxy(that._dropEnter, that), $.proxy(that._dropLeave, that) ); that._scrollHandler = proxy(that._positionDropzone, that); } }, _dropEnter: function() { this._positionDropzone(); $(document).on("scroll" + NS, this._scrollHandler); }, _dropLeave: function() { this._removeDropzone(); $(document).off("scroll" + NS, this._scrollHandler); }, _positionDropzone: function() { var that = this, element = that.element, offset = element.offset(); that.toolbar.find(".k-dropzone") .addClass("k-filebrowser-dropzone") .offset(offset) .css({ width: element[0].clientWidth, height: element[0].clientHeight, lineHeight: element[0].clientHeight + "px" }); }, _removeDropzone: function() { this.toolbar.find(".k-dropzone") .removeClass("k-filebrowser-dropzone") .css({ width: "", height: "", lineHeight: "", top: "", left: "" }); }, _deleteClick: function() { var that = this, item = that.listView.select(), message = kendo.format(that.options.messages.deleteFile, item.find("strong").text()); if (item.length && that._showMessage(message, "confirm")) { that.listView.remove(item); } }, _addClick: function() { this.createDirectory(); }, _getFieldName: function(name) { return fieldName(this.dataSource.reader.model.fields, name); }, _fileUpload: function(e) { var that = this, options = that.options, fileTypes = options.fileTypes, filterRegExp = new RegExp(("(" + fileTypes.split(",").join(")|(") + ")").replace(/\*\./g , ".*."), "i"), fileName = e.files[0].name, fileSize = e.files[0].size, fileNameField = NAMEFIELD, sizeField = SIZEFIELD, file; if (filterRegExp.test(fileName)) { e.data = { path: that.path() }; file = that._createFile(fileName, fileSize); if (!file) { e.preventDefault(); } else { that.upload.one("success", function(e) { var model = that._insertFileToList(file); if(model._override) { model.set(fileNameField, e.response[that._getFieldName(fileNameField)]); model.set(sizeField, e.response[that._getFieldName(sizeField)]); that.listView.dataSource.pushUpdate(model); } that._tiles = that.listView.items().filter("[" + kendo.attr("type") + "=f]"); }); } } else { e.preventDefault(); that._showMessage(kendo.format(options.messages.invalidFileType, fileName, fileTypes)); } }, _findFile: function(name) { var data = this.dataSource.data(), idx, result, typeField = TYPEFIELD, nameField = NAMEFIELD, length; name = name.toLowerCase(); for (idx = 0, length = data.length; idx < length; idx++) { if (data[idx].get(typeField) === "f" && data[idx].get(nameField).toLowerCase() === name) { result = data[idx]; break; } } return result; }, _createFile: function(fileName, fileSize) { var that = this, model = {}, typeField = TYPEFIELD, file = that._findFile(fileName); if (file) { if (!that._showMessage(kendo.format(that.options.messages.overwriteFile, fileName), "confirm")) { return null; } else { file._override = true; return file; } } model[typeField] = "f"; model[NAMEFIELD] = fileName; model[SIZEFIELD] = fileSize; return model; }, _insertFileToList: function(model) { var index; if(model._override) { return model; } var dataSource = this.dataSource; var view = dataSource.view(); for (var i = 0, length = view.length; i < length; i++) { if (view[i].get(TYPEFIELD) === "f") { index = i; break; } } return dataSource.insert(++index, model); }, createDirectory: function() { var that = this, idx, length, lastDirectoryIdx = 0, typeField = TYPEFIELD, nameField = NAMEFIELD, view = that.dataSource.data(), name = that._nameDirectory(), model = new that.dataSource.reader.model(); for (idx = 0, length = view.length; idx < length; idx++) { if (view[idx].get(typeField) === "d") { lastDirectoryIdx = idx; } } model.set(typeField, "d"); model.set(nameField, name); that.listView.one("dataBound", function() { var selected = that.listView.items() .filter("[" + kendo.attr("uid") + "=" + model.uid + "]"); if (selected.length) { this.edit(selected); } this.element.scrollTop(selected.attr("offsetTop") - this.element[0].offsetHeight); setTimeout(function() { that.listView.element.find('.k-edit-item input').select(); }); }) .one("save", function(e) { var value = e.model.get(nameField); if (!value) { e.model.set(nameField, name); } else { e.model.set(nameField, that._nameExists(value, model.uid) ? that._nameDirectory() : value); } }); that.dataSource.insert(++lastDirectoryIdx, model); }, _directoryKeyDown: function(e) { if (e.keyCode == 13) { e.currentTarget.blur(); } }, _directoryBlur: function() { this.listView.save(); }, _nameExists: function(name, uid) { var data = this.dataSource.data(), typeField = TYPEFIELD, nameField = NAMEFIELD, idx, length; for (idx = 0, length = data.length; idx < length; idx++) { if (data[idx].get(typeField) === "d" && data[idx].get(nameField).toLowerCase() === name.toLowerCase() && data[idx].uid !== uid) { return true; } } return false; }, _nameDirectory: function() { var name = "New folder", data = this.dataSource.data(), directoryNames = [], typeField = TYPEFIELD, nameField = NAMEFIELD, candidate, idx, length; for (idx = 0, length = data.length; idx < length; idx++) { if (data[idx].get(typeField) === "d" && data[idx].get(nameField).toLowerCase().indexOf(name.toLowerCase()) > -1) { directoryNames.push(data[idx].get(nameField)); } } if ($.inArray(name, directoryNames) > -1) { idx = 2; do { candidate = name + " (" + idx + ")"; idx++; } while ($.inArray(candidate, directoryNames) > -1); name = candidate; } return name; }, orderBy: function(field) { this.dataSource.sort([ { field: TYPEFIELD, dir: "asc" }, { field: field, dir: "asc" } ]); }, search: function(name) { this.dataSource.filter({ field: NAMEFIELD, operator: "contains", value: name }); }, _content: function() { var that = this; that.list = $('<ul class="k-reset k-floats k-tiles" />') .appendTo(that.element) .on("dblclick" + NS, "li", proxy(that._dblClick, that)); that.listView = new kendo.ui.ListView(that.list, { dataSource: that.dataSource, template: that._itemTmpl(), editTemplate: that._editTmpl(), selectable: true, autoBind: false, dataBinding: function(e) { that.toolbar.find(".k-i-close").parent().addClass("k-state-disabled"); if (e.action === "remove" || e.action === "sync") { e.preventDefault(); kendo.ui.progress(that.listView.element, false); } }, dataBound: function() { if (that.dataSource.view().length) { that._tiles = this.items().filter("[" + kendo.attr("type") + "=f]"); } else { this.wrapper.append(EMPTYTILE({ text: that.options.messages.emptyFolder })); } }, change: proxy(that._listViewChange, that) }); }, _dblClick: function(e) { var that = this, li = $(e.currentTarget); if (li.hasClass("k-edit-item")) { that._directoryBlur(); } if (li.filter("[" + kendo.attr("type") + "=d]").length) { var folder = that.dataSource.getByUid(li.attr(kendo.attr("uid"))); if (folder) { that.path(concatPaths(that.path(), folder.get(NAMEFIELD))); that.breadcrumbs.value(that.path()); } } else if (li.filter("[" + kendo.attr("type") + "=f]").length) { that.trigger(APPLY); } }, _listViewChange: function() { var selected = this._selectedItem(); if (selected) { this.toolbar.find(".k-i-close").parent().removeClass("k-state-disabled"); this.trigger(CHANGE, { selected: selected }); } }, _dataSource: function() { var that = this, options = that.options, transport = options.transport, typeSortOrder = extend({}, DEFAULTSORTORDER), nameSortOrder = { field: NAMEFIELD, dir: "asc" }, schema, dataSource = { type: transport.type || "filebrowser", sort: [typeSortOrder, nameSortOrder] }; if (isPlainObject(transport)) { transport.path = proxy(that.path, that); dataSource.transport = transport; } if (isPlainObject(options.schema)) { dataSource.schema = options.schema; } else if (transport.type && isPlainObject(kendo.data.schemas[transport.type])) { schema = kendo.data.schemas[transport.type]; } if (that.dataSource && that._errorHandler) { that.dataSource.unbind(ERROR, that._errorHandler); } else { that._errorHandler = proxy(that._error, that); } that.dataSource = kendo.data.DataSource.create(dataSource) .bind(ERROR, that._errorHandler); }, _navigation: function() { var that = this, navigation = $('<div class="k-floatwrap"><input/><input/></div>') .appendTo(this.element); that.breadcrumbs = navigation.find("input:first") .kendoBreadcrumbs({ value: that.options.path, change: function() { that.path(this.value()); } }).data("kendoBreadcrumbs"); that.searchBox = navigation.parent().find("input:last") .kendoSearchBox({ label: that.options.messages.search, change: function() { that.search(this.value()); } }).data("kendoSearchBox"); }, _error: function(e) { var that = this, status; if (!that.trigger(ERROR, e)) { status = e.xhr.status; if (e.status == 'error') { if (status == '404') { that._showMessage(that.options.messages.directoryNotFound); } else if (status != '0') { that._showMessage('Error! The requested URL returned ' + status + ' - ' + e.xhr.statusText); } } else if (status == 'timeout') { that._showMessage('Error! Server timeout.'); } var dataSource = that.dataSource; if (dataSource.hasChanges()) { dataSource.cancelChanges(); } } }, _showMessage: function(message, type) { return window[type || "alert"](message); }, refresh: function() { var that = this; that._navigation(); that._toolbar(); that._content(); }, _editTmpl: function() { var html = '<li class="k-tile k-state-selected" ' + kendo.attr("uid") + '="#=uid#" '; html += kendo.attr("type") + '="${' + TYPEFIELD + '}">'; html += '#if(' + TYPEFIELD + ' == "d") { #'; html += '<div class="k-thumb"><span class="k-icon k-i-folder"></span></div>'; html += "#}else{#"; html += '<div class="k-thumb"><span class="k-icon k-i-loading"></span></div>'; html += "#}#"; html += '#if(' + TYPEFIELD + ' == "d") { #'; html += '<input class="k-input" ' + kendo.attr("bind") + '="value:' + NAMEFIELD + '"/>'; html += "#}#"; html += '</li>'; return proxy(kendo.template(html), { sizeFormatter: sizeFormatter } ); }, _itemTmpl: function() { var html = '<li class="k-tile" ' + kendo.attr("uid") + '="#=uid#" '; html += kendo.attr("type") + '="${' + TYPEFIELD + '}">'; html += '#if(' + TYPEFIELD + ' == "d") { #'; html += '<div class="k-thumb"><span class="k-icon k-i-folder"></span></div>'; html += "#}else{#"; html += '<div class="k-thumb"><span class="k-icon k-i-file"></span></div>'; html += "#}#"; html += '<strong>${' + NAMEFIELD + '}</strong>'; html += '#if(' + TYPEFIELD + ' == "f") { # <span class="k-filesize">${this.sizeFormatter(' + SIZEFIELD + ')}</span> #}#'; html += '</li>'; return proxy(kendo.template(html), { sizeFormatter: sizeFormatter } ); }, path: function(value) { var that = this, path = that._path || ""; if (value !== undefined) { that._path = value.replace(trimSlashesRegExp, "") + "/"; that.dataSource.read({ path: that._path }); return; } if (path) { path = path.replace(trimSlashesRegExp, ""); } return path === "/" || path === "" ? "" : (path + "/"); } }); var SearchBox = Widget.extend({ init: function(element, options) { var that = this; options = options || {}; Widget.fn.init.call(that, element, options); if (placeholderSupported) { that.element.attr("placeholder", that.options.label); } that._wrapper(); that.element .on("keydown" + SEARCHBOXNS, proxy(that._keydown, that)) .on("change" + SEARCHBOXNS, proxy(that._updateValue, that)); that.wrapper .on(CLICK + SEARCHBOXNS, "a", proxy(that._click, that)); if (!placeholderSupported) { that.element.on("focus" + SEARCHBOXNS, proxy(that._focus, that)) .on("blur" + SEARCHBOXNS, proxy(that._blur, that)); } }, options: { name: "SearchBox", label: "Search", value: "" }, events: [ CHANGE ], destroy: function() { var that = this; that.wrapper .add(that.element) .add(that.label) .off(SEARCHBOXNS); Widget.fn.destroy.call(that); }, _keydown: function(e) { if (e.keyCode === 13) { this._updateValue(); } }, _click: function(e) { e.preventDefault(); this._updateValue(); }, _updateValue: function() { var that = this, value = that.element.val(); if (value !== that.value()) { that.value(value); that.trigger(CHANGE); } }, _blur: function() { this._updateValue(); this._toggleLabel(); }, _toggleLabel: function() { if (!placeholderSupported) { this.label.toggle(!this.element.val()); } }, _focus: function() { this.label.hide(); }, _wrapper: function() { var element = this.element, wrapper = element.parents(".k-search-wrap"); element[0].style.width = ""; element.addClass("k-input"); if (!wrapper.length) { wrapper = element.wrap($('<div class="k-widget k-search-wrap k-textbox"/>')).parent(); if (!placeholderSupported) { $('<label style="display:block">' + this.options.label + '</label>').insertBefore(element); } $('<a href="#" class="k-icon k-i-zoom k-search"/>').appendTo(wrapper); } this.wrapper = wrapper; this.label = wrapper.find(">label"); }, value: function(value) { var that = this; if (value !== undefined) { that.options.value = value; that.element.val(value); that._toggleLabel(); return; } return that.options.value; } }); var Breadcrumbs = Widget.extend({ init: function(element, options) { var that = this; options = options || {}; Widget.fn.init.call(that, element, options); that._wrapper(); that.wrapper .on("focus" + BREADCRUBMSNS, "input", proxy(that._focus, that)) .on("blur" + BREADCRUBMSNS, "input", proxy(that._blur, that)) .on("keydown" + BREADCRUBMSNS, "input", proxy(that._keydown, that)) .on(CLICK + BREADCRUBMSNS, "a.k-i-arrow-60-up:first", proxy(that._rootClick, that)) .on(CLICK + BREADCRUBMSNS, "a:not(.k-i-arrow-60-up)", proxy(that._click, that)); that.value(that.options.value); }, options: { name: "Breadcrumbs", gap: 50 }, events: [ CHANGE ], destroy: function() { var that = this; Widget.fn.destroy.call(that); that.wrapper .add(that.wrapper.find("input")) .add(that.wrapper.find("a")) .off(BREADCRUBMSNS); }, _update: function(val) { val = (val || "").charAt(0) === "/" ? val : ("/" + (val || "")); if (val !== this.value()) { this.value(val); this.trigger(CHANGE); } }, _click: function(e) { e.preventDefault(); this._update(this._path($(e.target).prevAll("a:not(.k-i-arrow-60-up)").addBack())); }, _rootClick: function(e) { e.preventDefault(); this._update(""); }, _focus: function() { var that = this, element = that.element; that.overlay.hide(); that.element.val(that.value()); setTimeout(function() { element.select(); }); }, _blur: function() { if (this.overlay.is(":visible")) { return; } var that = this, element = that.element, val = element.val().replace(/\/{2,}/g, "/"); that.overlay.show(); element.val(""); that._update(val); }, _keydown: function(e) { var that = this; if (e.keyCode === 13) { that._blur(); setTimeout(function() { that.overlay.find("a:first").focus(); }); } }, _wrapper: function() { var element = this.element, wrapper = element.parents(".k-breadcrumbs"), overlay; element[0].style.width = ""; element.addClass("k-input"); if (!wrapper.length) { wrapper = element.wrap($('<div class="k-widget k-breadcrumbs k-textbox"/>')).parent(); } overlay = wrapper.find(".k-breadcrumbs-wrap"); if (!overlay.length) { overlay = $('<div class="k-breadcrumbs-wrap"/>').appendTo(wrapper); } this.wrapper = wrapper; this.overlay = overlay; }, refresh: function() { var html = "", value = this.value(), segments, segment, idx, length; if (value === undefined || !value.match(/^\//)) { value = "/" + (value || ""); } segments = value.split("/"); for (idx = 0, length = segments.length; idx < length; idx++) { segment = segments[idx]; if (segment) { if (!html) { html += '<a href="#" class="k-icon k-i-arrow-60-up" title="Go to parent folder"></a>'; } html += '<a class="k-link" href="#">' + segments[idx] + '</a>'; html += '<span class="k-icon k-i-arrow-60-right" title="Go to child folder"></span>'; } } this.overlay.empty().append($(html)); this._adjustSectionWidth(); }, _adjustSectionWidth: function() { var that = this, wrapper = that.wrapper, width = wrapper.width() - that.options.gap, links = that.overlay.find("a"), a; links.each(function(index) { a = $(this); if (a.parent().width() > width) { if (index == links.length - 1) { a.width(width); } else { a.prev().addBack().hide(); } } }); }, value: function(val) { if (val !== undefined) { this._value = val.replace(/\/{2,}/g, "/"); this.refresh(); return; } return this._value; }, _path: function(trail) { return "/" + $.map(trail, function(b) { return $(b).text(); }).join("/"); } }); kendo.ui.plugin(FileBrowser); kendo.ui.plugin(Breadcrumbs); kendo.ui.plugin(SearchBox); })(window.kendo.jQuery); return window.kendo; }, __webpack_require__(3)); /***/ }), /***/ 1183: /***/ (function(module, exports) { module.exports = require("./kendo.listview"); /***/ }), /***/ 1184: /***/ (function(module, exports) { module.exports = require("./kendo.upload"); /***/ }) /******/ });