@deephaven/iris-grid 0.6.3-alpha.5 → 0.7.0

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.
@@ -2,6 +2,7 @@ export class IrisGrid extends React.Component<any, any, any> {
2
2
  static minDebounce: number;
3
3
  static maxDebounce: number;
4
4
  static loadingSpinnerDelay: number;
5
+ static makeQuickFilter(column: any, text: any, timeZone: any): any;
5
6
  constructor(props: any);
6
7
  handleAdvancedFilterChange(column: any, filter: any, options: any): void;
7
8
  handleAdvancedFilterSortChange(column: any, direction: any, addToExisting?: boolean): void;
@@ -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
@@ -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";
@@ -66,6 +67,16 @@ function isEmptyConfig(_ref) {
66
67
  }
67
68
 
68
69
  export class IrisGrid extends Component {
70
+ static makeQuickFilter(column, text, timeZone) {
71
+ try {
72
+ return TableUtils.makeQuickFilter(column, text, timeZone);
73
+ } catch (err) {
74
+ log.error('Error creating quick filter', err);
75
+ }
76
+
77
+ return null;
78
+ }
79
+
69
80
  constructor(props) {
70
81
  super(props);
71
82
 
@@ -717,17 +728,9 @@ export class IrisGrid extends Component {
717
728
  }
718
729
  }
719
730
 
720
- var filter = null;
721
-
722
- try {
723
- filter = TableUtils.makeQuickFilter(column, value, formatter.timeZone);
724
- } catch (err) {
725
- log.error('Error creating quick filter', err);
726
- }
727
-
728
731
  quickFilters.set(modelIndex, {
729
- filter,
730
- text: value
732
+ text: value,
733
+ filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone)
731
734
  });
732
735
  return true;
733
736
  }
@@ -923,10 +926,9 @@ export class IrisGrid extends Component {
923
926
  text
924
927
  } = value;
925
928
  var column = columns[key];
926
- var filter = TableUtils.makeQuickFilter(column, text, formatter.timeZone);
927
929
  newQuickFilters.set(key, {
928
930
  text,
929
- filter
931
+ filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone)
930
932
  });
931
933
  });
932
934
  this.startLoading('Rebuilding filters...', true);
@@ -2450,25 +2452,72 @@ export class IrisGrid extends Component {
2450
2452
 
2451
2453
  var columnTooltip = null;
2452
2454
 
2453
- if (shownColumnTooltip != null && metrics) {
2455
+ if (shownColumnTooltip != null && metrics && this.gridWrapper) {
2454
2456
  var {
2455
2457
  columnHeaderHeight,
2456
2458
  visibleColumnXs: _visibleColumnXs,
2457
- visibleColumnWidths: _visibleColumnWidths
2459
+ visibleColumnWidths: _visibleColumnWidths,
2460
+ width
2458
2461
  } = metrics;
2459
2462
 
2460
2463
  var _columnX = _visibleColumnXs.get(shownColumnTooltip);
2461
2464
 
2462
2465
  var _columnWidth = _visibleColumnWidths.get(shownColumnTooltip);
2466
+ /**
2467
+ * Create a wrapper dom element, the size of the column header.
2468
+ * The wrapper acts as tooltip parent, the tooltip component
2469
+ * will trigger hide on mouseleave of wrapper or tooltip.
2470
+ * The wrapper should be bound to within the grid dimensions,
2471
+ * so popper only remains triggered while mouse is inside the panel.
2472
+ */
2473
+
2474
+
2475
+ var boundedLeft = Math.max(0, _columnX);
2476
+ var boundedWidth = _columnWidth;
2477
+
2478
+ if (_columnX + _columnWidth > width) {
2479
+ // column is extending past right edge
2480
+ boundedWidth = width - _columnX;
2481
+ } else if (_columnX < 0) {
2482
+ // column is extending past left edge
2483
+ boundedWidth = _columnWidth - Math.abs(_columnX);
2484
+ }
2463
2485
 
2464
2486
  var wrapperStyle = {
2465
2487
  position: 'absolute',
2466
2488
  top: 0,
2467
- left: _columnX,
2468
- width: _columnWidth,
2489
+ left: boundedLeft,
2490
+ width: boundedWidth,
2469
2491
  height: columnHeaderHeight,
2470
2492
  pointerEvents: 'none'
2471
2493
  };
2494
+ /**
2495
+ * Because the popper parent wrapper center is no longer the same as
2496
+ * the column label center, we create a popper virtual ref, to handle
2497
+ * positioning and keep the popper centered on the label. Creates a
2498
+ * 1px x headerHeight virtual object, placed centered on the column
2499
+ * label, clamped to 0 + margin to width - margin. We add a margin,
2500
+ * otherwise the arrow wants to escape the boundary.
2501
+ */
2502
+
2503
+ var gridRect = this.gridWrapper.getBoundingClientRect();
2504
+ var popperMargin = 20;
2505
+ var virtualReference = {
2506
+ clientWidth: 1,
2507
+ clientHeight: columnHeaderHeight,
2508
+
2509
+ getBoundingClientRect() {
2510
+ return {
2511
+ top: gridRect.top,
2512
+ left: gridRect.left + clamp(_columnX + _columnWidth / 2, popperMargin, width - popperMargin),
2513
+ bottom: gridRect.top + columnHeaderHeight,
2514
+ right: gridRect.left + clamp(_columnX + _columnWidth / 2, popperMargin, width - popperMargin) + 1,
2515
+ width: 1,
2516
+ height: columnHeaderHeight
2517
+ };
2518
+ }
2519
+
2520
+ };
2472
2521
  var popperOptions = {
2473
2522
  placement: 'bottom',
2474
2523
  modifiers: {
@@ -2490,7 +2539,8 @@ export class IrisGrid extends Component {
2490
2539
  timeout: 400,
2491
2540
  interactive: true,
2492
2541
  options: popperOptions,
2493
- ref: this.handleTooltipRef
2542
+ ref: this.handleTooltipRef,
2543
+ referenceObject: virtualReference
2494
2544
  }, /*#__PURE__*/React.createElement(ColumnStatistics, {
2495
2545
  model: model,
2496
2546
  column: column,