@danielgindi/dgtable.js 2.0.5 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @danielgindi/dgtable.js 2.0.5
2
+ * @danielgindi/dgtable.js 2.0.7
3
3
  * git://github.com/danielgindi/dgtable.js.git
4
4
  */
5
5
  'use strict';
@@ -2382,6 +2382,7 @@ const HoverOutEventSymbol = Symbol('hover_out');
2382
2382
  const RowClickEventSymbol = Symbol('row_click');
2383
2383
  const PreviewCellSymbol = Symbol('preview_cell');
2384
2384
  const OriginalCellSymbol = Symbol('cell');
2385
+ const RelatedTouch = Symbol('related_touch');
2385
2386
 
2386
2387
  function webkitRenderBugfix(el) {
2387
2388
  // BUGFIX: WebKit has a bug where it does not relayout, and this affects us because scrollbars
@@ -2450,7 +2451,7 @@ class DGTable {
2450
2451
  this.el.classList.add(options.className || 'dgtable-wrapper');
2451
2452
  }
2452
2453
 
2453
- p.eventsSink.add(this.el, 'dragend.colresize', this._onEndDragColumnHeader.bind(this));
2454
+ p.eventsSink.add(this.el, 'dragend.colresize', this._onDragEndColumnHeader.bind(this));
2454
2455
 
2455
2456
  /**
2456
2457
  * @private
@@ -4899,10 +4900,10 @@ class DGTable {
4899
4900
  /**previousElementSibling
4900
4901
  * Reverse-calculate the column to resize from mouse position
4901
4902
  * @private
4902
- * @param {MouseEvent} event mouse event
4903
+ * @param {MouseEvent|TouchEvent} event mouse event
4903
4904
  * @returns {string|null} name of the column which the mouse is over, or null if the mouse is not in resize position
4904
4905
  */
4905
- _getColumnByResizePosition(event) {
4906
+ _getColumnByResizePosition(event) {var _ref, _event$RelatedTouch, _event$changedTouches;
4906
4907
  let o = this._o,
4907
4908
  rtl = this._isTableRtl();
4908
4909
 
@@ -4918,7 +4919,8 @@ class DGTable {
4918
4919
 
4919
4920
  let firstCol = !previousElementSibling;
4920
4921
 
4921
- let mouseX = (event.pageX || event.clientX) - Css_js.getElementOffset(headerCell).left;
4922
+ const positionHost = (_ref = (_event$RelatedTouch = event[RelatedTouch]) !== null && _event$RelatedTouch !== void 0 ? _event$RelatedTouch : (_event$changedTouches = event.changedTouches) === null || _event$changedTouches === void 0 ? void 0 : _event$changedTouches[0]) !== null && _ref !== void 0 ? _ref : event;
4923
+ let mouseX = (positionHost.pageX || positionHost.clientX) - Css_js.getElementOffset(headerCell).left;
4922
4924
 
4923
4925
  if (rtl) {
4924
4926
  if (!firstCol && Css_js.getElementWidth(headerCell, true, true, true) - mouseX <= o.resizeAreaWidth / 2) {
@@ -4962,23 +4964,8 @@ class DGTable {
4962
4964
  clearTimeout(tapAndHoldTimeout);
4963
4965
  };
4964
4966
 
4965
- let fakeMouseEvent = (name, ...args) => {
4966
- for (const k of event)
4967
- event[k];
4968
-
4969
- for (const obj of args) {
4970
- for (const key of ['target', 'clientX', 'clientY', 'offsetX', 'offsetY', 'screenX', 'screenY', 'pageX', 'pageY', 'which']) {
4971
- if (obj[key] != null)
4972
- obj[key];
4973
- }
4974
- }
4975
-
4976
- return new MouseEvent(name, event);
4977
- };
4978
-
4979
- cellEl.dispatchEvent(
4980
- fakeMouseEvent('mousedown', event.changedTouches[0], { button: 0, target: event.target })
4981
- );
4967
+ event[RelatedTouch] = event.changedTouches[0];
4968
+ this._onMouseDownColumnHeader(event);
4982
4969
 
4983
4970
  tapAndHoldTimeout = setTimeout(() => {
4984
4971
  unbind();
@@ -4999,16 +4986,13 @@ class DGTable {
4999
4986
 
5000
4987
  if (distanceTravelled < distanceTreshold) {
5001
4988
  this.cancelColumnResize();
5002
-
5003
- cellEl.dispatchEvent(
5004
- fakeMouseEvent('mouseup', event.changedTouches[0], { button: 2, target: event.target })
5005
- );
4989
+ this._triggerColumnHeaderContextMenu(event);
5006
4990
  }
5007
4991
 
5008
4992
  }, 500);
5009
4993
 
5010
4994
  p.eventsSink.
5011
- add(cellEl, 'touchend.colheader', (event) => {
4995
+ add(cellEl, 'touchend.colheader', (/**TouchEvent*/event) => {
5012
4996
  let touch = find(event.changedTouches, (touch) => touch.identifier === p.currentTouchId);
5013
4997
  if (!touch) return;
5014
4998
 
@@ -5022,18 +5006,13 @@ class DGTable {
5022
5006
  let distanceTravelled = Math.sqrt(Math.pow(Math.abs(currentPos.x - startPos.x), 2) + Math.pow(Math.abs(currentPos.y - startPos.y), 2));
5023
5007
 
5024
5008
  if (distanceTravelled < distanceTreshold || p.resizer) {
5025
- cellEl.dispatchEvent(
5026
- fakeMouseEvent('mouseup', touch, { 0: 2, target: event.target })
5027
- );
5028
-
5029
- cellEl.dispatchEvent(
5030
- fakeMouseEvent('click', touch, { button: 0, target: event.target })
5031
- );
5009
+ event[RelatedTouch] = touch;
5010
+ this._onSortOnColumnHeaderEvent(event);
5032
5011
  }
5033
5012
 
5034
5013
  }).
5035
5014
  add(cellEl, 'touchcancel.colheader', unbind).
5036
- add(cellEl, 'touchmove.colheader', (event) => {
5015
+ add(cellEl, 'touchmove.colheader', (/**TouchEvent*/event) => {
5037
5016
  let touch = find(event.changedTouches, (touch) => touch.identifier === p.currentTouchId);
5038
5017
  if (!touch) return;
5039
5018
 
@@ -5043,18 +5022,18 @@ class DGTable {
5043
5022
  if (p.resizer) {
5044
5023
  event.preventDefault();
5045
5024
 
5046
- cellEl.dispatchEvent(
5047
- fakeMouseEvent('mousemove', touch, { target: event.target })
5048
- );
5025
+ event[RelatedTouch] = touch;
5026
+ this._onMouseMoveColumnHeader(event);
5049
5027
  }
5050
5028
  });
5051
5029
  }
5052
5030
 
5053
5031
  /**
5054
- * @param {MouseEvent} event
5032
+ * @param {MouseEvent|TouchEvent} event
5055
5033
  */
5056
5034
  _onMouseDownColumnHeader(event) {
5057
- if (event.button !== 0) return this; // Only treat left-clicks
5035
+ if (event.type === 'mousedown' && event.button !== 0)
5036
+ return;
5058
5037
 
5059
5038
  let o = this._o,
5060
5039
  p = this._p,
@@ -5121,48 +5100,61 @@ class DGTable {
5121
5100
 
5122
5101
  p.eventsSink.
5123
5102
  add(document, 'mousemove.colresize', this._onMouseMoveResizeArea.bind(this)).
5124
- add(document, 'mouseup.colresize', this._onEndDragColumnHeader.bind(this));
5103
+ add(document, 'touchmove.colresize', this._onMouseMoveResizeArea.bind(this)).
5104
+ add(document, 'mouseup.colresize', this._onResizerPointerUpColumnHeader.bind(this)).
5105
+ add(document, 'touchend.colresize', this._onResizerPointerUpColumnHeader.bind(this));
5125
5106
 
5126
5107
  event.preventDefault();
5127
5108
  }
5128
5109
  }
5129
5110
 
5130
5111
  /**
5131
- * @param {MouseEvent} event event
5112
+ * @param {MouseEvent|TouchEvent} event event
5132
5113
  */
5133
5114
  _onMouseMoveColumnHeader(event) {
5134
- let o = this._o,
5115
+ const o = this._o,
5135
5116
  p = this._p;
5136
5117
 
5137
- if (o.resizableColumns) {
5138
- let col = this._getColumnByResizePosition(event);
5139
- let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5140
- if (!col || !p.columns.get(col).resizable) {
5141
- headerCell.style.cursor = '';
5142
- } else {
5143
- headerCell.style.cursor = 'e-resize';
5144
- }
5118
+ if (!o.resizableColumns)
5119
+ return;
5120
+
5121
+ let col = this._getColumnByResizePosition(event);
5122
+ let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5123
+ if (!col || !p.columns.get(col).resizable) {
5124
+ headerCell.style.cursor = '';
5125
+ } else {
5126
+ headerCell.style.cursor = 'e-resize';
5145
5127
  }
5146
5128
  }
5147
5129
 
5148
5130
  /**
5149
- * @param {MouseEvent} event
5131
+ * @param {MouseEvent|TouchEvent} event
5150
5132
  */
5151
5133
  _onMouseUpColumnHeader(event) {
5152
- if (event.button === 2) {
5153
- let o = this._o;
5154
- let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5155
- let bounds = Css_js.getElementOffset(headerCell);
5156
- bounds['width'] = Css_js.getElementWidth(headerCell, true, true, true);
5157
- bounds['height'] = Css_js.getElementHeight(headerCell, true, true, true);
5158
- this.emit('headercontextmenu', {
5159
- columnName: headerCell['columnName'],
5160
- pageX: event.pageX,
5161
- pageY: event.pageY,
5162
- bounds: bounds
5163
- });
5164
- }
5165
- return this;
5134
+ if (event.button !== 2)
5135
+ return;
5136
+
5137
+ this._triggerColumnHeaderContextMenu(event);
5138
+ }
5139
+
5140
+ /**
5141
+ * @param {MouseEvent|TouchEvent} event
5142
+ */
5143
+ _triggerColumnHeaderContextMenu(event) {var _ref2, _event$RelatedTouch2, _event$changedTouches2;
5144
+ const o = this._o;
5145
+
5146
+ const positionHost = (_ref2 = (_event$RelatedTouch2 = event[RelatedTouch]) !== null && _event$RelatedTouch2 !== void 0 ? _event$RelatedTouch2 : (_event$changedTouches2 = event.changedTouches) === null || _event$changedTouches2 === void 0 ? void 0 : _event$changedTouches2[0]) !== null && _ref2 !== void 0 ? _ref2 : event;
5147
+
5148
+ let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5149
+ let bounds = Css_js.getElementOffset(headerCell);
5150
+ bounds['width'] = Css_js.getElementWidth(headerCell, true, true, true);
5151
+ bounds['height'] = Css_js.getElementHeight(headerCell, true, true, true);
5152
+ this.emit('headercontextmenu', {
5153
+ columnName: headerCell['columnName'],
5154
+ pageX: positionHost.pageX,
5155
+ pageY: positionHost.pageY,
5156
+ bounds: bounds
5157
+ });
5166
5158
  }
5167
5159
 
5168
5160
  /**
@@ -5177,41 +5169,43 @@ class DGTable {
5177
5169
 
5178
5170
  /**
5179
5171
  * @private
5180
- * @param {MouseEvent} event event
5172
+ * @param {MouseEvent|TouchEvent} event event
5181
5173
  */
5182
- _onClickColumnHeader(event) {
5174
+ _onSortOnColumnHeaderEvent(event) {
5183
5175
  if (isInputElementEvent(event))
5184
5176
  return;
5185
5177
 
5186
- if (!this._getColumnByResizePosition(event)) {
5187
- let o = this._o,
5188
- p = this._p;
5178
+ if (this._getColumnByResizePosition(event))
5179
+ return;
5189
5180
 
5190
- let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5191
- if (o.sortableColumns) {
5192
- let column = p.columns.get(headerCell['columnName']);
5193
- let currentSort = p.rows.sortColumn;
5194
- if (column && column.sortable) {
5195
- let shouldAdd = true;
5181
+ const o = this._o,
5182
+ p = this._p;
5183
+
5184
+ let headerCell = event.target.closest(`div.${o.tableClassName}-header-cell,div.${o.cellPreviewClassName}`);
5185
+ if (!o.sortableColumns)
5186
+ return;
5196
5187
 
5197
- let lastSort = currentSort.length ? currentSort[currentSort.length - 1] : null;
5188
+ let column = p.columns.get(headerCell['columnName']);
5189
+ let currentSort = p.rows.sortColumn;
5190
+ if (column && column.sortable) {
5191
+ let shouldAdd = true;
5198
5192
 
5199
- if (lastSort && lastSort.column === column.name) {
5200
- if (!lastSort.descending || !o.allowCancelSort) {
5201
- lastSort.descending = !lastSort.descending;
5202
- } else {
5203
- shouldAdd = false;
5204
- currentSort.splice(currentSort.length - 1, 1);
5205
- }
5206
- }
5193
+ let lastSort = currentSort.length ? currentSort[currentSort.length - 1] : null;
5207
5194
 
5208
- if (shouldAdd) {
5209
- this.sort(column.name, undefined, true).render();
5210
- } else {
5211
- this.sort(); // just refresh current situation
5212
- }
5195
+ if (lastSort && lastSort.column === column.name) {
5196
+ if (!lastSort.descending || !o.allowCancelSort) {
5197
+ lastSort.descending = !lastSort.descending;
5198
+ } else {
5199
+ shouldAdd = false;
5200
+ currentSort.splice(currentSort.length - 1, 1);
5213
5201
  }
5214
5202
  }
5203
+
5204
+ if (shouldAdd) {
5205
+ this.sort(column.name, undefined, true).render();
5206
+ } else {
5207
+ this.sort(); // just refresh current situation
5208
+ }
5215
5209
  }
5216
5210
  }
5217
5211
 
@@ -5242,9 +5236,9 @@ class DGTable {
5242
5236
 
5243
5237
  /**
5244
5238
  * @private
5245
- * @param {MouseEvent} event event
5239
+ * @param {MouseEvent|TouchEvent} event event
5246
5240
  */
5247
- _onMouseMoveResizeArea(event) {
5241
+ _onMouseMoveResizeArea(event) {var _ref3, _event$RelatedTouch3, _event$changedTouches3;
5248
5242
 
5249
5243
  let p = this._p;
5250
5244
 
@@ -5265,7 +5259,8 @@ class DGTable {
5265
5259
 
5266
5260
  let isBoxing = selectedHeaderCellStyle.boxSizing === 'border-box';
5267
5261
 
5268
- let actualX = event.pageX - posRelative.left;
5262
+ const positionHost = (_ref3 = (_event$RelatedTouch3 = event[RelatedTouch]) !== null && _event$RelatedTouch3 !== void 0 ? _event$RelatedTouch3 : (_event$changedTouches3 = event.changedTouches) === null || _event$changedTouches3 === void 0 ? void 0 : _event$changedTouches3[0]) !== null && _ref3 !== void 0 ? _ref3 : event;
5263
+ let actualX = positionHost.pageX - posRelative.left;
5269
5264
  let minX = posCol.left;
5270
5265
 
5271
5266
  minX -= Math.ceil(resizerWidth / 2);
@@ -5302,125 +5297,136 @@ class DGTable {
5302
5297
  * @private
5303
5298
  * @param {DragEvent} event event
5304
5299
  */
5305
- _onEndDragColumnHeader(event) {
5300
+ _onDragEndColumnHeader(event) {
5301
+ let p = this._p;
5302
+
5303
+ if (!p.resizer) {
5304
+ event.target.style.opacity = null;
5305
+ }
5306
+ }
5306
5307
 
5308
+ /**
5309
+ * @private
5310
+ * @param {MouseEvent|TouchEvent} event event
5311
+ */
5312
+ _onResizerPointerUpColumnHeader(event) {var _ref4, _event$RelatedTouch4, _event$changedTouches4;
5307
5313
  let o = this._o,
5308
5314
  p = this._p;
5309
5315
 
5310
- if (!p.resizer) {
5311
- event.target.style.opacity = null;
5312
- } else {
5313
- p.eventsSink.remove(document, '.colresize');
5316
+ if (!p.resizer)
5317
+ return;
5314
5318
 
5315
- let column = p.columns.get(p.resizer['columnName']);
5316
- let rtl = this._isTableRtl();
5319
+ p.eventsSink.remove(document, '.colresize');
5317
5320
 
5318
- let selectedHeaderCell = column.element,
5319
- selectedHeaderCellInner = selectedHeaderCell.firstChild,
5320
- commonAncestor = p.resizer.parentNode;
5321
+ let column = p.columns.get(p.resizer['columnName']);
5322
+ let rtl = this._isTableRtl();
5321
5323
 
5322
- const commonAncestorStyle = getComputedStyle(commonAncestor);
5323
- const selectedHeaderCellStyle = getComputedStyle(selectedHeaderCell);
5324
+ let selectedHeaderCell = column.element,
5325
+ selectedHeaderCellInner = selectedHeaderCell.firstChild,
5326
+ commonAncestor = p.resizer.parentNode;
5324
5327
 
5325
- let posCol = Css_js.getElementOffset(selectedHeaderCell),
5326
- posRelative = Css_js.getElementOffset(commonAncestor);
5327
- posRelative.left += parseFloat(commonAncestorStyle.borderLeftWidth) || 0;
5328
- posCol.left -= posRelative.left;
5329
- let resizerWidth = Css_js.getElementWidth(p.resizer, true, true, true);
5328
+ const commonAncestorStyle = getComputedStyle(commonAncestor);
5329
+ const selectedHeaderCellStyle = getComputedStyle(selectedHeaderCell);
5330
5330
 
5331
- let isBoxing = selectedHeaderCellStyle.boxSizing === 'border-box';
5331
+ let posCol = Css_js.getElementOffset(selectedHeaderCell),
5332
+ posRelative = Css_js.getElementOffset(commonAncestor);
5333
+ posRelative.left += parseFloat(commonAncestorStyle.borderLeftWidth) || 0;
5334
+ posCol.left -= posRelative.left;
5335
+ let resizerWidth = Css_js.getElementWidth(p.resizer, true, true, true);
5332
5336
 
5333
- let actualX = event.pageX - posRelative.left;
5334
- let baseX = posCol.left,minX = posCol.left;
5335
- let width = 0;
5337
+ let isBoxing = selectedHeaderCellStyle.boxSizing === 'border-box';
5336
5338
 
5337
- baseX -= Math.ceil(resizerWidth / 2);
5339
+ const positionHost = (_ref4 = (_event$RelatedTouch4 = event[RelatedTouch]) !== null && _event$RelatedTouch4 !== void 0 ? _event$RelatedTouch4 : (_event$changedTouches4 = event.changedTouches) === null || _event$changedTouches4 === void 0 ? void 0 : _event$changedTouches4[0]) !== null && _ref4 !== void 0 ? _ref4 : event;
5340
+ let actualX = positionHost.pageX - posRelative.left;
5341
+ let baseX = posCol.left,minX = posCol.left;
5342
+ let width = 0;
5338
5343
 
5339
- if (rtl) {
5340
- if (!isBoxing) {
5341
- actualX += this._horizontalPadding(selectedHeaderCell);
5342
- const innerComputedStyle = getComputedStyle(selectedHeaderCellInner || selectedHeaderCell);
5343
- actualX += parseFloat(innerComputedStyle.borderLeftWidth) || 0;
5344
- actualX += parseFloat(innerComputedStyle.borderRightWidth) || 0;
5345
- actualX += column.arrowProposedWidth || 0; // Sort-arrow width
5346
- }
5344
+ baseX -= Math.ceil(resizerWidth / 2);
5347
5345
 
5348
- baseX += Css_js.getElementWidth(selectedHeaderCell, true, true, true);
5346
+ if (rtl) {
5347
+ if (!isBoxing) {
5348
+ actualX += this._horizontalPadding(selectedHeaderCell);
5349
+ const innerComputedStyle = getComputedStyle(selectedHeaderCellInner || selectedHeaderCell);
5350
+ actualX += parseFloat(innerComputedStyle.borderLeftWidth) || 0;
5351
+ actualX += parseFloat(innerComputedStyle.borderRightWidth) || 0;
5352
+ actualX += column.arrowProposedWidth || 0; // Sort-arrow width
5353
+ }
5349
5354
 
5350
- minX = baseX - (column.ignoreMin ? 0 : this._o.minColumnWidth);
5351
- if (actualX > minX) {
5352
- actualX = minX;
5353
- }
5355
+ baseX += Css_js.getElementWidth(selectedHeaderCell, true, true, true);
5354
5356
 
5355
- width = baseX - actualX;
5356
- } else {
5357
- if (!isBoxing) {
5358
- actualX -= this._horizontalPadding(selectedHeaderCell);
5359
- const innerComputedStyle = getComputedStyle(selectedHeaderCellInner || selectedHeaderCell);
5360
- actualX -= parseFloat(innerComputedStyle.borderLeftWidth) || 0;
5361
- actualX -= parseFloat(innerComputedStyle.borderRightWidth) || 0;
5362
- actualX -= column.arrowProposedWidth || 0; // Sort-arrow width
5363
- }
5357
+ minX = baseX - (column.ignoreMin ? 0 : this._o.minColumnWidth);
5358
+ if (actualX > minX) {
5359
+ actualX = minX;
5360
+ }
5364
5361
 
5365
- minX = baseX + (column.ignoreMin ? 0 : this._o.minColumnWidth);
5366
- if (actualX < minX) {
5367
- actualX = minX;
5368
- }
5362
+ width = baseX - actualX;
5363
+ } else {
5364
+ if (!isBoxing) {
5365
+ actualX -= this._horizontalPadding(selectedHeaderCell);
5366
+ const innerComputedStyle = getComputedStyle(selectedHeaderCellInner || selectedHeaderCell);
5367
+ actualX -= parseFloat(innerComputedStyle.borderLeftWidth) || 0;
5368
+ actualX -= parseFloat(innerComputedStyle.borderRightWidth) || 0;
5369
+ actualX -= column.arrowProposedWidth || 0; // Sort-arrow width
5370
+ }
5369
5371
 
5370
- width = actualX - baseX;
5372
+ minX = baseX + (column.ignoreMin ? 0 : this._o.minColumnWidth);
5373
+ if (actualX < minX) {
5374
+ actualX = minX;
5371
5375
  }
5372
5376
 
5373
- p.resizer.remove();
5374
- p.resizer = null;
5377
+ width = actualX - baseX;
5378
+ }
5375
5379
 
5376
- let sizeToSet = width;
5380
+ p.resizer.remove();
5381
+ p.resizer = null;
5377
5382
 
5378
- if (column.widthMode === ColumnWidthMode.RELATIVE) {
5379
- let sizeLeft = this._calculateWidthAvailableForColumns();
5380
- //sizeLeft -= p.table.offsetWidth - p.table.clientWidth;
5383
+ let sizeToSet = width;
5381
5384
 
5382
- let totalRelativePercentage = 0;
5383
- let relatives = 0;
5385
+ if (column.widthMode === ColumnWidthMode.RELATIVE) {
5386
+ let sizeLeft = this._calculateWidthAvailableForColumns();
5387
+ //sizeLeft -= p.table.offsetWidth - p.table.clientWidth;
5384
5388
 
5385
- for (let i = 0; i < p.visibleColumns.length; i++) {
5386
- let col = p.visibleColumns[i];
5387
- if (col.name === column.name) continue;
5389
+ let totalRelativePercentage = 0;
5390
+ let relatives = 0;
5388
5391
 
5389
- if (col.widthMode === ColumnWidthMode.RELATIVE) {
5390
- totalRelativePercentage += col.width;
5391
- relatives++;
5392
- } else {
5393
- sizeLeft -= col.actualWidth;
5394
- }
5392
+ for (let i = 0; i < p.visibleColumns.length; i++) {
5393
+ let col = p.visibleColumns[i];
5394
+ if (col.name === column.name) continue;
5395
+
5396
+ if (col.widthMode === ColumnWidthMode.RELATIVE) {
5397
+ totalRelativePercentage += col.width;
5398
+ relatives++;
5399
+ } else {
5400
+ sizeLeft -= col.actualWidth;
5395
5401
  }
5402
+ }
5396
5403
 
5397
- sizeLeft = Math.max(1, sizeLeft);
5398
- if (sizeLeft === 1)
5399
- sizeLeft = p.table.clientWidth;
5400
- sizeToSet = width / sizeLeft;
5404
+ sizeLeft = Math.max(1, sizeLeft);
5405
+ if (sizeLeft === 1)
5406
+ sizeLeft = p.table.clientWidth;
5407
+ sizeToSet = width / sizeLeft;
5401
5408
 
5402
- if (relatives > 0) {
5403
- // When there's more than one relative overall,
5404
- // we can do relative enlarging/shrinking.
5405
- // Otherwise, we can end up having a 0 width.
5409
+ if (relatives > 0) {
5410
+ // When there's more than one relative overall,
5411
+ // we can do relative enlarging/shrinking.
5412
+ // Otherwise, we can end up having a 0 width.
5406
5413
 
5407
- let unNormalizedSizeToSet = sizeToSet / ((1 - sizeToSet) / totalRelativePercentage);
5414
+ let unNormalizedSizeToSet = sizeToSet / ((1 - sizeToSet) / totalRelativePercentage);
5408
5415
 
5409
- totalRelativePercentage += sizeToSet;
5416
+ totalRelativePercentage += sizeToSet;
5410
5417
 
5411
- // Account for relative widths scaling later
5412
- if (totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth ||
5413
- totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth) {
5414
- sizeToSet = unNormalizedSizeToSet;
5415
- }
5418
+ // Account for relative widths scaling later
5419
+ if (totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth ||
5420
+ totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth) {
5421
+ sizeToSet = unNormalizedSizeToSet;
5416
5422
  }
5417
-
5418
- sizeToSet *= 100;
5419
- sizeToSet += '%';
5420
5423
  }
5421
5424
 
5422
- this.setColumnWidth(column.name, sizeToSet);
5425
+ sizeToSet *= 100;
5426
+ sizeToSet += '%';
5423
5427
  }
5428
+
5429
+ this.setColumnWidth(column.name, sizeToSet);
5424
5430
  }
5425
5431
 
5426
5432
  /**
@@ -5649,7 +5655,7 @@ class DGTable {
5649
5655
  columnEl.addEventListener('mouseleave', this._onMouseLeaveColumnHeader.bind(this));
5650
5656
  columnEl.addEventListener('touchstart', this._onTouchStartColumnHeader.bind(this));
5651
5657
  columnEl.addEventListener('dragstart', this._onStartDragColumnHeader.bind(this));
5652
- columnEl.addEventListener('click', this._onClickColumnHeader.bind(this));
5658
+ columnEl.addEventListener('click', this._onSortOnColumnHeaderEvent.bind(this));
5653
5659
  columnEl.addEventListener('contextmenu', (event) => {event.preventDefault();});
5654
5660
  inner.addEventListener('dragenter', this._onDragEnterColumnHeader.bind(this));
5655
5661
  inner.addEventListener('dragover', this._onDragOverColumnHeader.bind(this));