@deephaven/iris-grid 0.6.3-beta.0 → 0.6.3-beta.9

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.
Files changed (41) hide show
  1. package/dist/IrisGrid.d.ts.map +1 -1
  2. package/dist/IrisGrid.js +67 -18
  3. package/dist/IrisGrid.js.map +1 -1
  4. package/dist/IrisGridBottomBar.js +1 -1
  5. package/dist/IrisGridModelUpdater.js +1 -1
  6. package/dist/IrisGridModelUpdater.js.map +1 -1
  7. package/dist/IrisGridRenderer.js +4 -1
  8. package/dist/IrisGridRenderer.js.map +1 -1
  9. package/dist/IrisGridTableModel.d.ts.map +1 -1
  10. package/dist/IrisGridTableModel.js +2 -1
  11. package/dist/IrisGridTableModel.js.map +1 -1
  12. package/dist/IrisGridTreeTableModel.js +1 -1
  13. package/dist/IrisGridUtils.js +32 -32
  14. package/dist/IrisGridUtils.js.map +1 -1
  15. package/dist/PendingDataBottomBar.js +1 -1
  16. package/dist/PendingDataBottomBar.js.map +1 -1
  17. package/dist/TableUtils.js +1 -1
  18. package/dist/ToastBottomBar.js +1 -1
  19. package/dist/ToastBottomBar.js.map +1 -1
  20. package/dist/memoizeClear.js +1 -1
  21. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  22. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
  23. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  24. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
  25. package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
  26. package/dist/sidebar/CustomColumnBuilder.js +2 -2
  27. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  28. package/dist/sidebar/InputEditor.js +1 -1
  29. package/dist/sidebar/RollupRows.js +10 -10
  30. package/dist/sidebar/RollupRows.js.map +1 -1
  31. package/dist/sidebar/SelectDistinctBuilder.js +5 -5
  32. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  33. package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
  34. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  35. package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
  36. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  37. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  38. package/dist/sidebar/aggregations/Aggregations.js +4 -4
  39. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +13 -12
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
package/dist/IrisGrid.js CHANGED
@@ -2,7 +2,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
2
2
 
3
3
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
4
 
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
6
 
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
8
 
@@ -23,6 +23,7 @@ import dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
23
23
  import { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';
24
24
  import throttle from 'lodash.throttle';
25
25
  import debounce from 'lodash.debounce';
26
+ import clamp from 'lodash.clamp';
26
27
  import PendingDataBottomBar from "./PendingDataBottomBar.js";
27
28
  import IrisGridCopyHandler from "./IrisGridCopyHandler.js";
28
29
  import FilterInputField from "./FilterInputField.js";
@@ -171,7 +172,7 @@ export class IrisGrid extends Component {
171
172
 
172
173
  _defineProperty(this, "getCachedHiddenColumns", memoize(hiddenColumns => hiddenColumns, {
173
174
  max: 1,
174
- normalizer: (_ref2) => {
175
+ normalizer: _ref2 => {
175
176
  var [hiddenColumns] = _ref2;
176
177
  return hiddenColumns.join();
177
178
  }
@@ -179,7 +180,7 @@ export class IrisGrid extends Component {
179
180
 
180
181
  _defineProperty(this, "getAggregationMap", memoize((columns, aggregations) => {
181
182
  var aggregationMap = {};
182
- aggregations.forEach((_ref3) => {
183
+ aggregations.forEach(_ref3 => {
183
184
  var {
184
185
  operation,
185
186
  selected,
@@ -192,7 +193,7 @@ export class IrisGrid extends Component {
192
193
 
193
194
  _defineProperty(this, "getOperationMap", memoize((columns, aggregations) => {
194
195
  var operationMap = {};
195
- aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach((_ref4) => {
196
+ aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref4 => {
196
197
  var {
197
198
  operation,
198
199
  selected,
@@ -656,13 +657,13 @@ export class IrisGrid extends Component {
656
657
  var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);
657
658
  var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);
658
659
  var isChanged = replaceExisting && advancedFilters.size > 0;
659
- inputFilters.forEach((_ref5) => {
660
+ inputFilters.forEach(_ref5 => {
660
661
  var {
661
662
  name,
662
663
  type,
663
664
  value
664
665
  } = _ref5;
665
- var modelIndex = model.columns.findIndex((_ref6) => {
666
+ var modelIndex = model.columns.findIndex(_ref6 => {
666
667
  var {
667
668
  name: columnName,
668
669
  type: columnType
@@ -743,7 +744,7 @@ export class IrisGrid extends Component {
743
744
 
744
745
  log.debug('Setting advanced filter', modelIndex, filter);
745
746
  this.startLoading('Filtering...', true);
746
- this.setState((_ref7) => {
747
+ this.setState(_ref7 => {
747
748
  var {
748
749
  advancedFilters
749
750
  } = _ref7;
@@ -774,7 +775,7 @@ export class IrisGrid extends Component {
774
775
  setQuickFilter(modelIndex, filter, text) {
775
776
  log.debug('Setting quick filter', modelIndex, filter, text);
776
777
  this.startLoading('Filtering...', true);
777
- this.setState((_ref8) => {
778
+ this.setState(_ref8 => {
778
779
  var {
779
780
  quickFilters
780
781
  } = _ref8;
@@ -835,7 +836,7 @@ export class IrisGrid extends Component {
835
836
 
836
837
  removeColumnFilter(modelColumn) {
837
838
  this.startLoading('Filtering...', true);
838
- this.setState((_ref10) => {
839
+ this.setState(_ref10 => {
839
840
  var {
840
841
  advancedFilters,
841
842
  quickFilters
@@ -1722,7 +1723,7 @@ export class IrisGrid extends Component {
1722
1723
 
1723
1724
  handleFilterBarChange(value) {
1724
1725
  this.startLoading('Filtering...', true);
1725
- this.setState((_ref12) => {
1726
+ this.setState(_ref12 => {
1726
1727
  var {
1727
1728
  focusedFilterBarColumn,
1728
1729
  quickFilters
@@ -1800,7 +1801,7 @@ export class IrisGrid extends Component {
1800
1801
  }
1801
1802
 
1802
1803
  handleMenuBack() {
1803
- this.setState((_ref13) => {
1804
+ this.setState(_ref13 => {
1804
1805
  var {
1805
1806
  openOptions
1806
1807
  } = _ref13;
@@ -1813,7 +1814,7 @@ export class IrisGrid extends Component {
1813
1814
  }
1814
1815
 
1815
1816
  handleMenuSelect(option) {
1816
- this.setState((_ref14) => {
1817
+ this.setState(_ref14 => {
1817
1818
  var {
1818
1819
  openOptions
1819
1820
  } = _ref14;
@@ -2063,7 +2064,7 @@ export class IrisGrid extends Component {
2063
2064
  handleAggregationChange(aggregation) {
2064
2065
  log.debug('handleAggregationChange', aggregation);
2065
2066
  this.startLoading("Aggregating ".concat(aggregation.operation, "..."));
2066
- this.setState((_ref15) => {
2067
+ this.setState(_ref15 => {
2067
2068
  var {
2068
2069
  aggregationSettings
2069
2070
  } = _ref15;
@@ -2450,25 +2451,72 @@ export class IrisGrid extends Component {
2450
2451
 
2451
2452
  var columnTooltip = null;
2452
2453
 
2453
- if (shownColumnTooltip != null && metrics) {
2454
+ if (shownColumnTooltip != null && metrics && this.gridWrapper) {
2454
2455
  var {
2455
2456
  columnHeaderHeight,
2456
2457
  visibleColumnXs: _visibleColumnXs,
2457
- visibleColumnWidths: _visibleColumnWidths
2458
+ visibleColumnWidths: _visibleColumnWidths,
2459
+ width
2458
2460
  } = metrics;
2459
2461
 
2460
2462
  var _columnX = _visibleColumnXs.get(shownColumnTooltip);
2461
2463
 
2462
2464
  var _columnWidth = _visibleColumnWidths.get(shownColumnTooltip);
2465
+ /**
2466
+ * Create a wrapper dom element, the size of the column header.
2467
+ * The wrapper acts as tooltip parent, the tooltip component
2468
+ * will trigger hide on mouseleave of wrapper or tooltip.
2469
+ * The wrapper should be bound to within the grid dimensions,
2470
+ * so popper only remains triggered while mouse is inside the panel.
2471
+ */
2472
+
2473
+
2474
+ var boundedLeft = Math.max(0, _columnX);
2475
+ var boundedWidth = _columnWidth;
2476
+
2477
+ if (_columnX + _columnWidth > width) {
2478
+ // column is extending past right edge
2479
+ boundedWidth = width - _columnX;
2480
+ } else if (_columnX < 0) {
2481
+ // column is extending past left edge
2482
+ boundedWidth = _columnWidth - Math.abs(_columnX);
2483
+ }
2463
2484
 
2464
2485
  var wrapperStyle = {
2465
2486
  position: 'absolute',
2466
2487
  top: 0,
2467
- left: _columnX,
2468
- width: _columnWidth,
2488
+ left: boundedLeft,
2489
+ width: boundedWidth,
2469
2490
  height: columnHeaderHeight,
2470
2491
  pointerEvents: 'none'
2471
2492
  };
2493
+ /**
2494
+ * Because the popper parent wrapper center is no longer the same as
2495
+ * the column label center, we create a popper virtual ref, to handle
2496
+ * positioning and keep the popper centered on the label. Creates a
2497
+ * 1px x headerHeight virtual object, placed centered on the column
2498
+ * label, clamped to 0 + margin to width - margin. We add a margin,
2499
+ * otherwise the arrow wants to escape the boundary.
2500
+ */
2501
+
2502
+ var gridRect = this.gridWrapper.getBoundingClientRect();
2503
+ var popperMargin = 20;
2504
+ var virtualReference = {
2505
+ clientWidth: 1,
2506
+ clientHeight: columnHeaderHeight,
2507
+
2508
+ getBoundingClientRect() {
2509
+ return {
2510
+ top: gridRect.top,
2511
+ left: gridRect.left + clamp(_columnX + _columnWidth / 2, popperMargin, width - popperMargin),
2512
+ bottom: gridRect.top + columnHeaderHeight,
2513
+ right: gridRect.left + clamp(_columnX + _columnWidth / 2, popperMargin, width - popperMargin) + 1,
2514
+ width: 1,
2515
+ height: columnHeaderHeight
2516
+ };
2517
+ }
2518
+
2519
+ };
2472
2520
  var popperOptions = {
2473
2521
  placement: 'bottom',
2474
2522
  modifiers: {
@@ -2490,7 +2538,8 @@ export class IrisGrid extends Component {
2490
2538
  timeout: 400,
2491
2539
  interactive: true,
2492
2540
  options: popperOptions,
2493
- ref: this.handleTooltipRef
2541
+ ref: this.handleTooltipRef,
2542
+ referenceObject: virtualReference
2494
2543
  }, /*#__PURE__*/React.createElement(ColumnStatistics, {
2495
2544
  model: model,
2496
2545
  column: column,