@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
363 lines (290 loc) • 13.6 kB
JavaScript
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__(974);
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/***/ 948:
/***/ (function(module, exports) {
module.exports = require("../main");
/***/ }),
/***/ 974:
/***/ (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__(948), __webpack_require__(975), __webpack_require__(976)], __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(kendo, undefined) {
var global = window;
var math = global.Math;
var abs = math.abs;
var $ = kendo.jQuery;
var extend = $.extend;
var Editor = kendo.ui.editor;
var TableElementResizing = Editor.TableElementResizing;
var ResizingUtils = Editor.ResizingUtils;
var constrain = ResizingUtils.constrain;
var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;
var getScrollBarWidth = ResizingUtils.getScrollBarWidth;
var inPercentages = ResizingUtils.inPercentages;
var toPercentages = ResizingUtils.toPercentages;
var toPixels = ResizingUtils.toPixels;
var outerWidth = kendo._outerWidth;
var NS = ".kendoEditorColumnResizing";
var RESIZE_HANDLE_CLASS = "k-column-resize-handle";
var RESIZE_MARKER_CLASS = "k-column-resize-marker";
var BODY = "body";
var TBODY = "tbody";
var TD = "td";
var TH = "th";
var TR = "tr";
var COMMA = ",";
var WIDTH = "width";
var ColumnResizing = TableElementResizing.extend({
options: {
tags: [TD, TH],
min: 20,
rootElement: null,
eventNamespace: NS,
rtl: false,
handle: {
dataAttribute: "column",
width: 10,
height: 0,
classNames: {
handle: RESIZE_HANDLE_CLASS,
marker: RESIZE_MARKER_CLASS
},
template:
'<div class="k-column-resize-handle-wrapper" unselectable="on" contenteditable="false">' +
'<div class="' + RESIZE_HANDLE_CLASS + '">' +
'<div class="' + RESIZE_MARKER_CLASS + '"></div>' +
'</div>' +
'</div>'
}
},
elementBorderHovered: function(column, e) {
var that = this;
var options = that.options;
var handleWidth = options.handle.width;
var borderOffset = column.offset().left + (options.rtl ? 0 : outerWidth(column));
var mousePosition = e.clientX + $(column[0].ownerDocument).scrollLeft();
if ((mousePosition > (borderOffset - handleWidth)) && (mousePosition < (borderOffset + handleWidth))) {
return true;
}
else {
return false;
}
},
setResizeHandlePosition: function(column) {
var that = this;
var tableBody = $(that.element).children(TBODY);
var options = that.options;
var rtl = options.rtl;
var handleWidth = options.handle.width;
var rootElement = $(options.rootElement);
var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();
var scrollLeftOffset = rootElement.is(BODY) ? 0 : rootElement.scrollLeft();
var columnWidthOffset = rtl ? 0 : outerWidth(column);
var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;
var columnOffsetLeft = column.offset().left -
(rootElement.offset().left + parseFloat(rootElement.css("borderLeftWidth"))) -
parseFloat(column.css("marginLeft"));
var tBodyOffsetTop = tableBody.offset().top -
(rootElement.offset().top + parseFloat(rootElement.css("borderTopWidth"))) -
parseFloat(tableBody.css("marginTop"));
that.resizeHandle.css({
top: tBodyOffsetTop + scrollTopOffset,
left: columnOffsetLeft + columnWidthOffset + (scrollLeftOffset - scrollBarWidth) - (handleWidth / 2),
position: "absolute"
});
},
setResizeHandleDimensions: function() {
var that = this;
var tableBody = $(that.element).children(TBODY);
that.resizeHandle.css({
width: that.options.handle.width,
height: tableBody.height()
});
},
setResizeHandleDragPosition: function(e) {
var that = this;
var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));
var options = that.options;
var rootElement = $(options.rootElement);
var handleWidth = options.handle ? options.handle.width : 0;
var min = options.min;
var rtl = options.rtl;
var columnWidth = outerWidth(column);
var columnLeftOffset = column.offset().left -
(rootElement.offset().left + parseFloat(rootElement.css("borderLeftWidth"))) -
parseFloat(column.css("marginLeft"));
var adjacentColumnWidth = outerWidth(column.next());
var resizeHandle = $(that.resizeHandle);
var scrollLeftOffset = rootElement.is(BODY) ? 0 : rootElement.scrollLeft();
var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;
var resizeHandleOffsetLeft = resizeHandle.offset().left -
(rootElement.offset().left + parseFloat(rootElement.css("borderLeftWidth"))) -
parseFloat(resizeHandle.css("marginLeft"));
var handleOffset = constrain({
value: resizeHandleOffsetLeft + (scrollLeftOffset - scrollBarWidth) + e.x.delta,
min: columnLeftOffset + (scrollLeftOffset - scrollBarWidth) - (rtl ? adjacentColumnWidth : 0) + min,
max: columnLeftOffset + columnWidth + (scrollLeftOffset - scrollBarWidth) + (rtl ? 0 : adjacentColumnWidth) - handleWidth - min
});
resizeHandle.css({ left: handleOffset });
},
resize: function(e) {
var that = this;
var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));
var options = that.options;
var rtlModifier = options.rtl ? (-1) : 1;
var min = options.min;
var initialDeltaX = rtlModifier * e.x.initialDelta;
var newWidth;
var initialAdjacentColumnWidth;
var initialColumnWidth;
that._setTableComputedWidth();
that._setColumnsComputedWidth();
initialColumnWidth = outerWidth(column);
initialAdjacentColumnWidth = outerWidth(column.next());
newWidth = constrain({
value: initialColumnWidth + initialDeltaX,
min: min,
max: initialColumnWidth + initialAdjacentColumnWidth - min
});
that._resizeColumn(column[0], newWidth);
that._resizeTopAndBottomColumns(column[0], newWidth);
that._resizeAdjacentColumns(column.index(), initialAdjacentColumnWidth, initialColumnWidth, (initialColumnWidth - newWidth));
},
_setTableComputedWidth: function() {
var element = this.element;
if (element.style[WIDTH] === "") {
element.style[WIDTH] = toPixels(outerWidth($(element)));
}
},
_setColumnsComputedWidth: function() {
var that = this;
var tableBody = $(that.element).children(TBODY);
var tableBodyWidth = outerWidth(tableBody);
var columns = tableBody.children(TR).children(TD);
var length = columns.length;
var currentColumnsWidths = columns.map(function() {
return outerWidth($(this));
});
var i;
for (i = 0; i < length; i++) {
if (inPercentages(columns[i].style[WIDTH])) {
columns[i].style[WIDTH] = toPercentages(calculatePercentageRatio(currentColumnsWidths[i], tableBodyWidth));
}
else {
columns[i].style[WIDTH] = toPixels(currentColumnsWidths[i]);
}
}
},
_resizeTopAndBottomColumns: function(column, newWidth) {
var that = this;
var columnIndex = $(column).index();
var topAndBottomColumns = $(that.element).children(TBODY).children(TR).children(that.options.tags.join(COMMA))
.filter(function() {
var cell = this;
return ($(cell).index() === columnIndex && cell !== column);
});
var length = topAndBottomColumns.length;
var i;
for (i = 0; i < length; i++) {
that._resizeColumn(topAndBottomColumns[i], newWidth);
}
},
_resizeColumn: function(column, newWidth) {
if (inPercentages(column.style[WIDTH])) {
column.style[WIDTH] = toPercentages(calculatePercentageRatio(newWidth, outerWidth($(this.element).children(TBODY))));
}
else {
column.style[WIDTH] = toPixels(newWidth);
}
},
_resizeAdjacentColumns: function(columnIndex, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {
var that = this;
var adjacentColumns = $(that.element).children(TBODY).children(TR).children(that.options.tags.join(COMMA))
.filter(function() {
return ($(this).index() === (columnIndex + 1));
});
var length = adjacentColumns.length;
var i;
for (i = 0; i < length; i++) {
that._resizeAdjacentColumn(adjacentColumns[i], initialAdjacentColumnWidth, initialColumnWidth, deltaWidth);
}
},
_resizeAdjacentColumn: function(adjacentColumn, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {
var that = this;
var min = that.options.min;
var newWidth;
newWidth = constrain({
value: initialAdjacentColumnWidth + deltaWidth,
min: min,
max: abs(initialColumnWidth + initialAdjacentColumnWidth - min)
});
that._resizeColumn(adjacentColumn, newWidth);
}
});
ColumnResizing.create = function(editor) {
TableElementResizing.create(editor, {
name: "columnResizing",
type: ColumnResizing,
eventNamespace: NS
});
};
ColumnResizing.dispose = function(editor) {
TableElementResizing.dispose(editor, {
eventNamespace: NS
});
};
extend(Editor, {
ColumnResizing: ColumnResizing
});
})(window.kendo);
}, __webpack_require__(3));
/***/ }),
/***/ 975:
/***/ (function(module, exports) {
module.exports = require("./resizing-utils");
/***/ }),
/***/ 976:
/***/ (function(module, exports) {
module.exports = require("./table-element-resizing");
/***/ })
/******/ });