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