UNPKG

@progress/kendo-ui

Version:

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

861 lines (665 loc) 29 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__(1041); /***/ }), /***/ 3: /***/ (function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }), /***/ 965: /***/ (function(module, exports) { module.exports = require("../kendo.treeview"); /***/ }), /***/ 1041: /***/ (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__(1042), __webpack_require__(965)], __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() { (function($, undefined) { var kendo = window.kendo, ui = kendo.ui, Observable = kendo.Observable, extend = $.extend, keys = kendo.keys, NAVIGATE = "navigate", SELECT = "select", EXPAND = "expand", CHANGE = "change", OPEN = "open", LOAD = "load", KEYDOWN = "keydown", KEYDOWNACTION = "keydownAction", NS = ".kendoFileManagerViewComponent", fileManagerDraggables = [], fileManagerDragOrigin = null; var registerViewComponent = function(componentName, component) { ui.filemanager.ViewComponents[componentName] = component; }; var getViewComponent = function(componentName) { return ui.filemanager.ViewComponents[componentName] || null; }; var Component = Observable.extend({ init: function(widget, element, options) { var that = this; that.element = element; that.options = options; if (widget) { that.widgetComponent = new widget(element, options); } else { throw new Error("The widget for the ViewComponent is not available! Please add the corresponding scripts!"); } Observable.fn.init.call(that); }, _bindEvents: function() { this.widgetComponent.bind("dataBinding", this._binding.bind(this)); this.widgetComponent.bind("dataBound", this._bound.bind(this)); }, _binding: function(ev) { if (this.trigger("dataBinding", ev)) { ev.preventDefault(); } }, _bound: function() { this.trigger("dataBound"); }, _setDSOptions: function(options, dataSourceOptions) { if (!options.dataSource && dataSourceOptions) { options.dataSource = dataSourceOptions; } }, _initDragAndDrop: function(element, filter) { var that = this; filter = filter || that.options.dropFilter; element = element || that.element; that.draggable = element.kendoDraggable({ filter: filter, hint: that._hint.bind(that), cursorOffset: { top: -10, left: -50 }, holdToDrag: true, ignore: "input, .k-focusable", hold: that._hold.bind(that) }).data("kendoDraggable"); that.draggable.userEvents.minHold = 150; that.droptarget = element.kendoDropTargetArea({ filter: filter, drop: that._onDrop.bind(that), dragenter: function(ev) { ev.dropTarget.addClass("k-filemanager-drop-target"); }, dragleave: function(ev) { ev.dropTarget.removeClass("k-filemanager-drop-target"); } }).data("kendoDraggable"); }, _hold: function(ev) { var that = this, target = ev.currentTarget; if (!target.is(".k-state-selected")) { if (that.widgetComponent.selectable) { that.widgetComponent.selectable.clear(); } that.widgetComponent.select(target); } if (that.widgetComponent.selectable) { that.widgetComponent.selectable.userEvents.cancel(); } }, _hint: function(target) { var that = this, item = that.widgetComponent.dataItem(target), selectedItems = that.widgetComponent.select(); fileManagerDragOrigin = that.widgetComponent; fileManagerDraggables = selectedItems; if (selectedItems.length > 1) { return kendo.format("<div class='k-filemanager-drag-hint'><span class='k-icon k-i-{0}'></span> <span>{1} {2}</span></div>", "file", selectedItems.length, that.options.messages.items); } return kendo.format("<div class='k-filemanager-drag-hint'><span class='k-icon k-i-{0}'></span> <span>{1}</span></div>", (item.isDirectory ? "folder" : "file"), item.name); }, _onDrop: function(ev) { var that = this, target = that.widgetComponent.dataItem(ev.dropTarget), targetId = target.id, itemIds = []; if (!target.isDirectory) { return; } for (var i = 0; i < fileManagerDraggables.length; i++) { var id = fileManagerDragOrigin.dataItem(fileManagerDraggables[i]).id; itemIds.push(id); } this.trigger("drop",{ target: targetId, items: itemIds }); }, getSelected: function() { throw new Error("Not Implemented!"); }, refresh: function(dataSource) { this.widgetComponent.setDataSource(dataSource); }, destroy: function() { kendo.destroy(this.element); } }); extend(kendo.ui.filemanager, { ViewComponent: Component, ViewComponents: {}, registerViewComponent: registerViewComponent, getViewComponent: getViewComponent } ); var ListView = Component.extend({ init: function(element, options, explicitOptions) { var that = this, dataSourceOptions = explicitOptions.dataSource, messages = explicitOptions.messages; // jshint ignore:line options = extend({}, that.defaultOptions, options, { messages: messages }); that._setDSOptions(options, dataSourceOptions); options.kendoKeydown = options.kendoKeydown || that._kendoKeydown.bind(that); Component.fn.init.call(this, ui.ListView, element, options); that.listView = that.widgetComponent; that._bindEvents(); if (explicitOptions.draggable !== false && !dataSourceOptions.isLocalBinding) { that._initDragAndDrop(); } }, defaultOptions: { layout: "flex", flex: { direction: "row", wrap: "wrap" }, selectable: kendo.support.mobileOS ? "row" : "multiple", template: "<div class='k-listview-item' title='#:name##:extension#'>" + "<div class='k-file-preview'><span class='k-file-icon k-icon k-i-#= !isDirectory ? kendo.getFileGroup(extension, true) : 'folder' #'></span></div>" + "<div class='k-file-name file-name'>#:name##:extension#</div>" + "</div>", editTemplate: "<div class='k-listview-item'>" + "<div class='k-file-preview'><span class='k-file-icon k-icon k-i-#= !isDirectory ? kendo.getFileGroup(extension, true) : 'folder' #'></span></div>" + "<div class='k-file-name'><span class='k-textbox k-input k-input-md k-rounded-md k-input-solid'><input type='text' class='k-input-inner' data-bind='value:name' name='name' required='required' /><span></div>" + "</div>", dropFilter: ".k-listview-item", navigatable: true }, _bindEvents: function() { var that = this, listView = that.listView; listView.bind(CHANGE, that._select.bind(that)); listView.element.on("dblclick" + NS, that._dblClick.bind(that)); listView.element.on("mousedown" + NS, ".k-listview-item:not(.k-edit-item)", that._mousedown.bind(that)); listView.element.on(KEYDOWN + NS, ".k-edit-item", that._keydown.bind(that)); listView.element.on(KEYDOWN + NS, that._keydownAction.bind(that)); listView.bind("edit", function(ev) { var sender = ev.sender; var input = ev.item.find("input"); input.on("blur", function() { var isDirty = sender._modelFromElement(sender.editable.element).dirty; sender._closeEditable(); if (!isDirty) { that.trigger("cancel"); } }); }); listView.bind("cancel", function() { that.trigger("cancel"); }); Component.fn._bindEvents.call(this); }, _select: function() { var that = this, dataItems = that.getSelected(); that.trigger(SELECT, { entries: dataItems }); }, _keydown: function(ev) { var that = this; if (ev.keyCode === kendo.keys.ESC) { that.listView._closeEditable(); that.trigger("cancel"); } }, _keydownAction: function(ev) { var that = this, target = $(ev.target).find(".k-state-focused"); if (target.length && !target.is(".k-edit-item")) { that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode }); } }, _mousedown: function(ev) { var that = this, node = $(ev.target).closest(".k-listview-item"); if (ev.which === 3 && !node.is(".k-state-selected")) { that.listView.selectable.clear(); that.listView.select(node); } }, _kendoKeydown: function(ev) { var that = this; if (ev.keyCode === keys.ENTER && !ev.preventKendoKeydown) { that._handleEnterKey(ev); } }, _handleEnterKey: function(ev) { var that = this, target = $(ev.target), node = that.listView.current(); if (that.widgetComponent.editable && target.is("input")) { // Force blur to update item and close editable (cross browser) target.trigger("blur"); } else if (!that.widgetComponent.editable) { that._triggerOpen(node); } ev.preventKendoKeydown = true; }, _dblClick: function(ev) { var that = this, node = $(ev.target).closest(".k-listview-item"); that._triggerOpen(node); }, _triggerOpen: function(node) { var that = this; if (node.is(".k-edit-item")) { return; } var item = that.listView.dataItem(node); if (item) { that.trigger(OPEN, { entry: item }); } }, addFolder: function() { this.listView.add(); }, edit: function(target) { var that = this, selected = that.listView.select(); that.listView.edit(target || selected); }, getSelected: function() { var that = this, items = that.listView.select(), dataItems = []; for (var i = 0; i < items.length; i++) { var item = that.listView.dataItem(items[i]); if (item) { dataItems.push(item); } } return dataItems; }, destroy: function() { this.listView.element.off(NS); Component.fn.destroy.call(this); } }); ui.filemanager.registerViewComponent("list", ListView); var TreeView = Component.extend({ init: function(element, options, explicitOptions) { var that = this, messages = explicitOptions.messages; // jshint ignore:line options = extend({}, that.defaultOptions, options, { messages: messages }); Component.fn.init.call(this, ui.TreeView, element, options); that.treeView = that.widgetComponent; that._bindEvents(); if (explicitOptions.draggable !== false && !explicitOptions.isLocalBinding) { that._initDragAndDrop(); } }, defaultOptions: { dataTextField: "name", dropFilter: ".k-item" }, _refreshDataSource: function(ev) { var that = this, treeView = that.treeView, action = ev.action, node = ev.node, parentNode = null, treeEl = treeView.element, activeDescendant = treeEl.attr("aria-activedescendant"), items = ev.items.filter(function(item) { return item.isDirectory; }).map(function(item) { return extend({}, item.toJSON(), { id: item.id || kendo.guid(), hasChildren: item.hasChildren, items: [] }); }); if (node) { parentNode = treeView.findByUid(treeView.dataSource.get(node.id).uid); treeView._progress(parentNode, false); } if (!items.length) { return; } if (action == "itemloaded" || (parentNode && action === "sync")) { parentNode.find(".k-item").each(function(index, item) { treeView.remove(item); }); treeView.append(items, parentNode); if (that._shouldFocus) { treeView.current(parentNode); treeView.focus(); } } else if (action == "remove") { this._remove(items[0].id); } else if (action == "itemchange") { var existingItem = treeView.dataSource.get(items[0].id); if (existingItem) { existingItem.set(ev.field, items[0][ev.field]); } else { treeView.append(items[0], parentNode); } } else if (!treeView.dataSource.data().length) { treeView.append(items); } else if (action === "sync" || (action === undefined && !parentNode)) { treeView.items().each(function(index, item) { treeView.remove(item); }); treeView.append(items); if (that._shouldFocus) { treeView.current(treeView._nextVisible($())); treeView.focus(); } } if (!!activeDescendant && treeEl.find("#" + activeDescendant).length === 0) { treeEl.removeAttr("aria-activedescendant"); } }, _remove: function(id) { var that = this, treeView = that.treeView, dataSource = treeView.dataSource, item = dataSource.get(id), node; if (item) { node = treeView.findByUid(item.uid); treeView.remove(node); } }, _bindEvents: function() { var that = this; that.treeView.bind(SELECT, that._navigate.bind(that)); that.treeView.bind(EXPAND, that._expand.bind(that)); that.treeView.element.on(KEYDOWN, that._keydownAction.bind(that)); }, _keydownAction: function(ev) { var that = this, target = $(ev.target).find(".k-focus").closest(".k-item"); that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode }); }, _expand: function(ev) { var that = this, treeView = that.treeView, entry = treeView.dataItem(ev.node); ev.preventDefault(); that.trigger(LOAD, { entryId: entry.id }); }, _navigate: function(ev) { var that = this, node = ev.node, entry = that.treeView.dataItem(node), path = entry.id; ev.preventDefault(); that.trigger(NAVIGATE, { path: path, entry: entry.toJSON() }); }, _hold: $.noop, getSelected: function() { var that = this, selectedItem = that.treeView.element.find(".k-selected").closest(".k-item"), item = that.treeView.dataItem(selectedItem); return item; }, refresh: function(id) { var that = this, treeView = that.treeView, entry = treeView.dataSource.get(id), node = entry && treeView.findByUid(entry.uid); if (entry && node) { treeView.element.find(".k-selected").removeClass("k-selected"); node.find("> div .k-in").removeClass("k-hover").addClass("k-selected"); } }, reload: function() { this.treeView.dataSource.read(); } }); ui.filemanager.registerViewComponent("tree", TreeView); if (kendo.ui.Grid) { var Grid = Component.extend({ init: function(element, options, explicitOptions) { var that = this, dataSourceOptions = explicitOptions.dataSource, messages = explicitOptions.messages; options = extend({}, that.defaultOptions, options, { messages: messages }); that._setDSOptions(options, dataSourceOptions); that._setupColumns(options, messages); options.kendoKeydown = options.kendoKeydown || that._kendoKeydown.bind(that); Component.fn.init.call(this, ui.Grid, element, options); that.grid = that.widgetComponent; that._bindEvents(); if (explicitOptions.draggable !== false && !dataSourceOptions.isLocalBinding) { that._initDragAndDrop(); } }, defaultOptions: { selectable: kendo.support.mobileOS ? "row" : "multiple", editable: { mode: "inline", confirmation: false }, sortable: true, dropFilter: "tr:not(.k-grid-edit-row)", navigatable: true }, _setupColumns: function(options, messages) { if (!options.columns) { options.columns = [ { field: "name", title: messages.nameField || "Name", template: function(item) { var icon = !item.isDirectory ? kendo.getFileGroup(item.extension, true) : "folder"; var template = "<div class='file-group-icon'>" + "<span class='k-icon k-i-" + icon + "'></span>" + "</div>" + "<div class='file-name'>" + kendo.htmlEncode(item.name + item.extension) + "<div>"; return template; } }, { field: "created", title: messages.dateCreatedField , format: "{0:G}" }, { field: "size", title: messages.sizeField, template: function(item) { if (item.size > 0) { return kendo.getFileSizeMessage(item.size); } else { return ""; } } } ]; } }, _bindEvents: function() { var that = this, grid = that.grid; grid.bind(CHANGE, that._select.bind(that)); grid.table.on("dblclick" + NS, that._dblClick.bind(that)); grid.table.on("mousedown" + NS, "tr:not(.k-grid-edit-row)", that._mousedown.bind(that)); grid.table.on(KEYDOWN + NS, ".k-grid-edit-row", that._keydown.bind(that)); grid.table.on(KEYDOWN + NS, that._keydownAction.bind(that)); grid.bind("edit", function() { that._toggleFocusable(true); }); grid.bind("cancel", function() { that.trigger("cancel"); }); grid.saveRow = $.noop; Component.fn._bindEvents.call(this); }, _kendoKeydown: function(ev) { var that = this, current = that.grid.current(), node = current ? current.closest("tr[data-uid]") : null; if (node && ev.keyCode === keys.ENTER && !ev.preventKendoKeydown) { that._triggerOpen(node); ev.preventKendoKeydown = true; } if (ev.keyCode === keys.F2) { ev.preventKendoKeydown = true; } }, _keydownAction: function(ev) { var that = this, target = $(ev.target).find(".k-state-focused").closest("tr"); if (target.length && !target.is(".k-grid-edit-row")) { that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode }); } }, _keydown: function(ev) { var that = this, grid = that.grid; if (!$(ev.target).closest(".k-grid-edit-row").length) { return; } if (ev.keyCode === kendo.keys.ENTER) { setTimeout(function() { var editorContainer = that.grid._editContainer || $(); // force blur event for inputs editorContainer.find("input").trigger("blur"); that._closeEditable(); }); that._tryCancel(); } if (ev.keyCode === kendo.keys.ESC) { grid.cancelChanges(); that.trigger("cancel"); } }, _mousedown: function(ev) { var that = this, node = $(ev.target).closest("tr[data-uid]"); if (ev.which === 1 && that.grid.editable) { setTimeout(function() { that._closeEditable(); }); that._tryCancel(); } if (ev.which === 3 && !node.is(".k-state-selected")) { that.grid.selectable.clear(); that.grid.select(node); } }, _tryCancel: function() { var that = this, grid = that.grid, container; if (grid.editable) { container = grid._editContainer; if (!container.find("input").val()) { grid.cancelChanges(); } } setTimeout(function() { that._toggleFocusable(false); }); }, _toggleFocusable: function(state) { var that = this, grid = that.grid; grid.table.find("tr,td").children().addBack().toggleClass("k-focusable", state); }, _closeEditable: function() { var that = this, container; if (that.grid.editable && !that.grid.editable.options.model.dirty) { container = that.grid._editContainer; that.grid._destroyEditable(); that.grid._displayRow(container); that.trigger("cancel"); } }, _select: function() { var that = this, dataItems = that.getSelected(); that.trigger(SELECT, { entries: dataItems }); }, _dblClick: function(ev) { var that = this, node = $(ev.target).closest("tr[data-uid]"); that._triggerOpen(node); }, _triggerOpen: function(node) { var that = this; if (node.is(".k-grid-edit-row")) { return; } var item = that.grid.dataItem(node); if (item) { that.trigger(OPEN, { entry: item }); } }, getSelected: function() { var that = this, items = that.grid.select(), dataItems = []; for (var i = 0; i < items.length; i++) { dataItems.push(that.grid.dataItem(items[i])); } return dataItems; }, addFolder: function() { this.grid.addRow(); }, edit: function(target) { var that = this, selected = that.grid.select(); that.grid.editRow(target || selected); }, destroy: function() { this.grid.table.off(NS); this.grid.element.off(NS); Component.fn.destroy.call(this); } }); ui.filemanager.registerViewComponent("grid", Grid); } })(window.kendo.jQuery); return window.kendo; }, __webpack_require__(3)); /***/ }), /***/ 1042: /***/ (function(module, exports) { module.exports = require("../kendo.listview"); /***/ }) /******/ });