@slickgrid-universal/custom-tooltip-plugin 4.6.0 → 4.6.1
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/cjs/slickCustomTooltip.js +78 -32
- package/dist/cjs/slickCustomTooltip.js.map +1 -1
- package/dist/esm/slickCustomTooltip.js +78 -32
- package/dist/esm/slickCustomTooltip.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/slickCustomTooltip.d.ts +11 -3
- package/dist/types/slickCustomTooltip.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/slickCustomTooltip.ts +84 -35
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SlickCustomTooltip = void 0;
|
|
4
4
|
const common_1 = require("@slickgrid-universal/common");
|
|
5
5
|
const utils_1 = require("@slickgrid-universal/utils");
|
|
6
|
+
const CLOSEST_TOOLTIP_FILLED_ATTR = ['title', 'data-slick-tooltip'];
|
|
7
|
+
const SELECTOR_CLOSEST_TOOLTIP_ATTR = '[title], [data-slick-tooltip]';
|
|
6
8
|
/**
|
|
7
9
|
* A plugin to add Custom Tooltip when hovering a cell, it subscribes to the cell "onMouseEnter" and "onMouseLeave" events.
|
|
8
10
|
* The "customTooltip" is defined in the Column Definition OR Grid Options (the first found will have priority over the second)
|
|
@@ -33,8 +35,12 @@ class SlickCustomTooltip {
|
|
|
33
35
|
this._cellType = 'slick-cell';
|
|
34
36
|
this._rxjs = null;
|
|
35
37
|
this._sharedService = null;
|
|
38
|
+
this._mousePosition = { x: 0, y: 0 };
|
|
39
|
+
this._hasMultipleTooltips = false;
|
|
36
40
|
this._defaultOptions = {
|
|
41
|
+
bodyClassName: 'tooltip-body',
|
|
37
42
|
className: 'slick-custom-tooltip',
|
|
43
|
+
offsetArrow: 3, // same as `$slick-tooltip-arrow-side-margin` CSS/SASS variable
|
|
38
44
|
offsetLeft: 0,
|
|
39
45
|
offsetRight: 0,
|
|
40
46
|
offsetTopBottom: 4,
|
|
@@ -53,6 +59,9 @@ class SlickCustomTooltip {
|
|
|
53
59
|
get cellAddonOptions() {
|
|
54
60
|
return this._cellAddonOptions;
|
|
55
61
|
}
|
|
62
|
+
get bodyClassName() {
|
|
63
|
+
return this._cellAddonOptions?.bodyClassName ?? 'tooltip-body';
|
|
64
|
+
}
|
|
56
65
|
get className() {
|
|
57
66
|
return this._cellAddonOptions?.className ?? 'slick-custom-tooltip';
|
|
58
67
|
}
|
|
@@ -82,12 +91,12 @@ class SlickCustomTooltip {
|
|
|
82
91
|
this._sharedService = containerService.get('SharedService');
|
|
83
92
|
this._addonOptions = { ...this._defaultOptions, ...(this._sharedService?.gridOptions?.customTooltip) };
|
|
84
93
|
this._eventHandler
|
|
85
|
-
.subscribe(grid.onMouseEnter, this.
|
|
86
|
-
.subscribe(grid.
|
|
87
|
-
.subscribe(grid.
|
|
94
|
+
.subscribe(grid.onMouseEnter, this.handleOnMouseOver.bind(this))
|
|
95
|
+
.subscribe(grid.onHeaderMouseOver, (e, args) => this.handleOnHeaderMouseOverByType(e, args, 'slick-header-column'))
|
|
96
|
+
.subscribe(grid.onHeaderRowMouseOver, (e, args) => this.handleOnHeaderMouseOverByType(e, args, 'slick-headerrow-column'))
|
|
88
97
|
.subscribe(grid.onMouseLeave, this.hideTooltip.bind(this))
|
|
89
|
-
.subscribe(grid.
|
|
90
|
-
.subscribe(grid.
|
|
98
|
+
.subscribe(grid.onHeaderMouseOut, this.hideTooltip.bind(this))
|
|
99
|
+
.subscribe(grid.onHeaderRowMouseOut, this.hideTooltip.bind(this));
|
|
91
100
|
}
|
|
92
101
|
dispose() {
|
|
93
102
|
// hide (remove) any tooltip and unsubscribe from all events
|
|
@@ -129,8 +138,10 @@ class SlickCustomTooltip {
|
|
|
129
138
|
}
|
|
130
139
|
}
|
|
131
140
|
/** depending on the selector type, execute the necessary handler code */
|
|
132
|
-
|
|
141
|
+
handleOnHeaderMouseOverByType(event, args, selector) {
|
|
133
142
|
this._cellType = selector;
|
|
143
|
+
this._mousePosition = { x: event.clientX || 0, y: event.clientY || 0 };
|
|
144
|
+
this._mouseTarget = document.elementFromPoint(event.clientX || 0, event.clientY || 0)?.closest(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
134
145
|
// before doing anything, let's remove any previous tooltip before
|
|
135
146
|
// and cancel any opened Promise/Observable when using async
|
|
136
147
|
this.hideTooltip();
|
|
@@ -165,8 +176,10 @@ class SlickCustomTooltip {
|
|
|
165
176
|
}
|
|
166
177
|
}
|
|
167
178
|
}
|
|
168
|
-
async
|
|
179
|
+
async handleOnMouseOver(event) {
|
|
169
180
|
this._cellType = 'slick-cell';
|
|
181
|
+
this._mousePosition = { x: event.clientX || 0, y: event.clientY || 0 };
|
|
182
|
+
this._mouseTarget = document.elementFromPoint(event.clientX || 0, event.clientY || 0)?.closest(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
170
183
|
// before doing anything, let's remove any previous tooltip before
|
|
171
184
|
// and cancel any opened Promise/Observable when using async
|
|
172
185
|
this.hideTooltip();
|
|
@@ -249,33 +262,42 @@ class SlickCustomTooltip {
|
|
|
249
262
|
renderRegularTooltip(formatterOrText, cell, value, columnDef, item) {
|
|
250
263
|
const tmpDiv = document.createElement('div');
|
|
251
264
|
this._grid.applyHtmlCode(tmpDiv, this.parseFormatterAndSanitize(formatterOrText, cell, value, columnDef, item));
|
|
252
|
-
|
|
265
|
+
this._hasMultipleTooltips = (this._cellNodeElm?.querySelectorAll(SELECTOR_CLOSEST_TOOLTIP_ATTR).length || 0) > 1;
|
|
253
266
|
let tmpTitleElm;
|
|
267
|
+
const cellElm = (this._cellAddonOptions?.useRegularTooltipFromCellTextOnly || !this._mouseTarget)
|
|
268
|
+
? this._cellNodeElm
|
|
269
|
+
: this._mouseTarget;
|
|
270
|
+
let tooltipText = columnDef?.toolTip ?? '';
|
|
254
271
|
if (!tooltipText) {
|
|
255
|
-
if (this._cellType === 'slick-cell' &&
|
|
256
|
-
tooltipText =
|
|
272
|
+
if (this._cellType === 'slick-cell' && cellElm && (cellElm.clientWidth < cellElm.scrollWidth) && !this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
273
|
+
tooltipText = cellElm.textContent?.trim() ?? '';
|
|
257
274
|
if (this._cellAddonOptions?.tooltipTextMaxLength && tooltipText.length > this._cellAddonOptions?.tooltipTextMaxLength) {
|
|
258
275
|
tooltipText = tooltipText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...';
|
|
259
276
|
}
|
|
260
|
-
tmpTitleElm =
|
|
277
|
+
tmpTitleElm = cellElm;
|
|
261
278
|
}
|
|
262
279
|
else {
|
|
263
280
|
if (this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
264
|
-
tmpTitleElm = tmpDiv.querySelector(
|
|
281
|
+
tmpTitleElm = tmpDiv.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
265
282
|
}
|
|
266
283
|
else {
|
|
267
|
-
tmpTitleElm = (0, common_1.findFirstAttribute)(
|
|
268
|
-
|
|
269
|
-
|
|
284
|
+
tmpTitleElm = (0, common_1.findFirstAttribute)(cellElm, CLOSEST_TOOLTIP_FILLED_ATTR)
|
|
285
|
+
? cellElm
|
|
286
|
+
: tmpDiv.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
287
|
+
if ((!tmpTitleElm || !(0, common_1.findFirstAttribute)(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR)) && cellElm) {
|
|
288
|
+
tmpTitleElm = cellElm.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
270
289
|
}
|
|
271
290
|
}
|
|
272
|
-
if (
|
|
273
|
-
tooltipText =
|
|
291
|
+
if (tmpTitleElm?.style.display === 'none' || (this._hasMultipleTooltips && (!cellElm || cellElm === this._cellNodeElm))) {
|
|
292
|
+
tooltipText = '';
|
|
293
|
+
}
|
|
294
|
+
else if (!tooltipText || (typeof formatterOrText === 'function' && this._cellAddonOptions?.useRegularTooltipFromFormatterOnly)) {
|
|
295
|
+
tooltipText = (0, common_1.findFirstAttribute)(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR) || '';
|
|
274
296
|
}
|
|
275
297
|
}
|
|
276
298
|
}
|
|
277
299
|
if (tooltipText !== '') {
|
|
278
|
-
this.renderTooltipFormatter(formatterOrText, cell, value, columnDef, item, tooltipText);
|
|
300
|
+
this.renderTooltipFormatter(formatterOrText, cell, value, columnDef, item, tooltipText, tmpTitleElm);
|
|
279
301
|
}
|
|
280
302
|
// also clear any "title" attribute to avoid showing a 2nd browser tooltip
|
|
281
303
|
this.swapAndClearTitleAttribute(tmpTitleElm, tooltipText);
|
|
@@ -283,28 +305,30 @@ class SlickCustomTooltip {
|
|
|
283
305
|
renderTooltipFormatter(formatter, cell, value, columnDef, item, tooltipText, inputTitleElm) {
|
|
284
306
|
// create the tooltip DOM element with the text returned by the Formatter
|
|
285
307
|
this._tooltipElm = (0, common_1.createDomElement)('div', { className: this.className });
|
|
308
|
+
this._tooltipBodyElm = (0, common_1.createDomElement)('div', { className: this.bodyClassName });
|
|
286
309
|
this._tooltipElm.classList.add(this.gridUid);
|
|
287
310
|
this._tooltipElm.classList.add('l' + cell.cell);
|
|
288
311
|
this._tooltipElm.classList.add('r' + cell.cell);
|
|
312
|
+
this.tooltipElm?.appendChild(this._tooltipBodyElm);
|
|
289
313
|
// when cell is currently lock for editing, we'll force a tooltip title search
|
|
290
314
|
// that can happen when user has a formatter but is currently editing and in that case we want the new value
|
|
291
|
-
//
|
|
315
|
+
// e.g.: when user is currently editing and uses the Slider, when dragging its value is changing, so we wish to use the editing value instead of the previous cell value.
|
|
292
316
|
if (value === null || value === undefined) {
|
|
293
|
-
const tmpTitleElm = this._cellNodeElm?.querySelector(
|
|
294
|
-
value = (0, common_1.findFirstAttribute)(tmpTitleElm,
|
|
317
|
+
const tmpTitleElm = this._cellNodeElm?.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
318
|
+
value = (0, common_1.findFirstAttribute)(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR) || value;
|
|
295
319
|
}
|
|
296
320
|
let outputText = tooltipText || this.parseFormatterAndSanitize(formatter, cell, value, columnDef, item) || '';
|
|
297
321
|
outputText = (this._cellAddonOptions?.tooltipTextMaxLength && outputText.length > this._cellAddonOptions.tooltipTextMaxLength) ? outputText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...' : outputText;
|
|
298
322
|
let finalOutputText = '';
|
|
299
323
|
if (!tooltipText || this._cellAddonOptions?.renderRegularTooltipAsHtml) {
|
|
300
324
|
finalOutputText = (0, common_1.sanitizeTextByAvailableSanitizer)(this.gridOptions, outputText);
|
|
301
|
-
this._grid.applyHtmlCode(this.
|
|
302
|
-
this.
|
|
325
|
+
this._grid.applyHtmlCode(this._tooltipBodyElm, finalOutputText);
|
|
326
|
+
this._tooltipBodyElm.style.whiteSpace = this._cellAddonOptions?.whiteSpace ?? this._defaultOptions.whiteSpace;
|
|
303
327
|
}
|
|
304
328
|
else {
|
|
305
329
|
finalOutputText = outputText || '';
|
|
306
|
-
this.
|
|
307
|
-
this.
|
|
330
|
+
this._tooltipBodyElm.textContent = finalOutputText;
|
|
331
|
+
this._tooltipBodyElm.style.whiteSpace = this._cellAddonOptions?.regularTooltipWhiteSpace ?? this._defaultOptions.regularTooltipWhiteSpace; // use `pre` so that sequences of white space are collapsed. Lines are broken at newline characters
|
|
308
332
|
}
|
|
309
333
|
// optional max height/width of the tooltip container
|
|
310
334
|
if (this._cellAddonOptions?.maxHeight) {
|
|
@@ -348,33 +372,46 @@ class SlickCustomTooltip {
|
|
|
348
372
|
// or when using "auto" and we detect not enough available space then we'll position to the "left" of the cell
|
|
349
373
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "left-align", then the arrow will in fact be "arrow-right-align"
|
|
350
374
|
const position = this._cellAddonOptions?.position ?? 'auto';
|
|
375
|
+
let finalTooltipPosition = '';
|
|
351
376
|
if (position === 'center') {
|
|
352
377
|
newPositionLeft += (cellContainerWidth / 2) - (calculatedTooltipWidth / 2) + (this._cellAddonOptions?.offsetRight ?? 0);
|
|
353
|
-
|
|
354
|
-
this._tooltipElm.classList.remove('arrow-right-align');
|
|
378
|
+
finalTooltipPosition = 'top-center';
|
|
379
|
+
this._tooltipElm.classList.remove('arrow-left-align', 'arrow-right-align');
|
|
355
380
|
this._tooltipElm.classList.add('arrow-center-align');
|
|
356
381
|
}
|
|
357
382
|
else if (position === 'right-align' || ((position === 'auto' || position !== 'left-align') && (newPositionLeft + calculatedTooltipWidth) > calculatedBodyWidth)) {
|
|
383
|
+
finalTooltipPosition = 'right';
|
|
358
384
|
newPositionLeft -= (calculatedTooltipWidth - cellContainerWidth - (this._cellAddonOptions?.offsetLeft ?? 0));
|
|
359
|
-
this._tooltipElm.classList.remove('arrow-center-align');
|
|
360
|
-
this._tooltipElm.classList.remove('arrow-left-align');
|
|
385
|
+
this._tooltipElm.classList.remove('arrow-center-align', 'arrow-left-align');
|
|
361
386
|
this._tooltipElm.classList.add('arrow-right-align');
|
|
362
387
|
}
|
|
363
388
|
else {
|
|
364
|
-
|
|
365
|
-
this._tooltipElm.classList.remove('arrow-right-align');
|
|
389
|
+
finalTooltipPosition = 'left';
|
|
390
|
+
this._tooltipElm.classList.remove('arrow-center-align', 'arrow-right-align');
|
|
366
391
|
this._tooltipElm.classList.add('arrow-left-align');
|
|
367
392
|
}
|
|
368
393
|
// do the same calculation/reposition with top/bottom (default is top of the cell or in other word starting from the cell going down)
|
|
369
394
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "bottom", then the arrow will in fact be "arrow-top"
|
|
370
395
|
if (position === 'bottom' || ((position === 'auto' || position !== 'top') && calculatedTooltipHeight > (0, common_1.calculateAvailableSpace)(this._cellNodeElm).top)) {
|
|
371
396
|
newPositionTop = (cellPosition.top || 0) + (this.gridOptions.rowHeight ?? 0) + (this._cellAddonOptions?.offsetTopBottom ?? 0);
|
|
397
|
+
finalTooltipPosition = `bottom-${finalTooltipPosition}`;
|
|
372
398
|
this._tooltipElm.classList.remove('arrow-down');
|
|
373
399
|
this._tooltipElm.classList.add('arrow-up');
|
|
374
400
|
}
|
|
375
401
|
else {
|
|
376
|
-
|
|
402
|
+
finalTooltipPosition = `top-${finalTooltipPosition}`;
|
|
377
403
|
this._tooltipElm.classList.remove('arrow-up');
|
|
404
|
+
this._tooltipElm.classList.add('arrow-down');
|
|
405
|
+
}
|
|
406
|
+
// when having multiple tooltips, we'll try to reposition tooltip to mouse position
|
|
407
|
+
if (this._tooltipElm && (this._hasMultipleTooltips || this.cellAddonOptions?.repositionByMouseOverTarget)) {
|
|
408
|
+
const mouseElmOffset = (0, common_1.getOffset)(this._mouseTarget);
|
|
409
|
+
if (finalTooltipPosition.includes('left') || finalTooltipPosition === 'top-center') {
|
|
410
|
+
newPositionLeft = mouseElmOffset.left - (this._addonOptions?.offsetArrow ?? 3);
|
|
411
|
+
}
|
|
412
|
+
else if (finalTooltipPosition.includes('right')) {
|
|
413
|
+
newPositionLeft = mouseElmOffset.left - calculatedTooltipWidth + (this._mouseTarget?.offsetWidth ?? 0) + (this._addonOptions?.offsetArrow ?? 3);
|
|
414
|
+
}
|
|
378
415
|
}
|
|
379
416
|
// reposition the tooltip over the cell (90% of the time this will end up using a position on the "right" of the cell)
|
|
380
417
|
this._tooltipElm.style.top = `${newPositionTop}px`;
|
|
@@ -388,6 +425,10 @@ class SlickCustomTooltip {
|
|
|
388
425
|
swapAndClearTitleAttribute(inputTitleElm, tooltipText) {
|
|
389
426
|
// the title attribute might be directly on the slick-cell container element (when formatter returns a result object)
|
|
390
427
|
// OR in a child element (most commonly as a custom formatter)
|
|
428
|
+
let cellWithTitleElm;
|
|
429
|
+
if (inputTitleElm) {
|
|
430
|
+
cellWithTitleElm = (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm : this._cellNodeElm?.querySelector('[title]')));
|
|
431
|
+
}
|
|
391
432
|
const titleElm = inputTitleElm || (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm : this._cellNodeElm?.querySelector('[title]')));
|
|
392
433
|
// flip tooltip text from `title` to `data-slick-tooltip`
|
|
393
434
|
if (titleElm) {
|
|
@@ -395,6 +436,11 @@ class SlickCustomTooltip {
|
|
|
395
436
|
if (titleElm.hasAttribute('title')) {
|
|
396
437
|
titleElm.setAttribute('title', '');
|
|
397
438
|
}
|
|
439
|
+
// targeted element might actually not be the cell element,
|
|
440
|
+
// so let's also clear the cell element title attribute to avoid showing native + custom tooltips
|
|
441
|
+
if (cellWithTitleElm?.hasAttribute('title')) {
|
|
442
|
+
cellWithTitleElm.setAttribute('title', '');
|
|
443
|
+
}
|
|
398
444
|
}
|
|
399
445
|
}
|
|
400
446
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slickCustomTooltip.js","sourceRoot":"","sources":["../../src/slickCustomTooltip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slickCustomTooltip.js","sourceRoot":"","sources":["../../src/slickCustomTooltip.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { calculateAvailableSpace, CancelledException, cancellablePromise, createDomElement, findFirstAttribute, getOffset, sanitizeTextByAvailableSanitizer, SlickEventHandler, } from '@slickgrid-universal/common';
|
|
2
2
|
import { isPrimitiveOrHTML } from '@slickgrid-universal/utils';
|
|
3
|
+
const CLOSEST_TOOLTIP_FILLED_ATTR = ['title', 'data-slick-tooltip'];
|
|
4
|
+
const SELECTOR_CLOSEST_TOOLTIP_ATTR = '[title], [data-slick-tooltip]';
|
|
3
5
|
/**
|
|
4
6
|
* A plugin to add Custom Tooltip when hovering a cell, it subscribes to the cell "onMouseEnter" and "onMouseLeave" events.
|
|
5
7
|
* The "customTooltip" is defined in the Column Definition OR Grid Options (the first found will have priority over the second)
|
|
@@ -30,8 +32,12 @@ export class SlickCustomTooltip {
|
|
|
30
32
|
this._cellType = 'slick-cell';
|
|
31
33
|
this._rxjs = null;
|
|
32
34
|
this._sharedService = null;
|
|
35
|
+
this._mousePosition = { x: 0, y: 0 };
|
|
36
|
+
this._hasMultipleTooltips = false;
|
|
33
37
|
this._defaultOptions = {
|
|
38
|
+
bodyClassName: 'tooltip-body',
|
|
34
39
|
className: 'slick-custom-tooltip',
|
|
40
|
+
offsetArrow: 3, // same as `$slick-tooltip-arrow-side-margin` CSS/SASS variable
|
|
35
41
|
offsetLeft: 0,
|
|
36
42
|
offsetRight: 0,
|
|
37
43
|
offsetTopBottom: 4,
|
|
@@ -50,6 +56,9 @@ export class SlickCustomTooltip {
|
|
|
50
56
|
get cellAddonOptions() {
|
|
51
57
|
return this._cellAddonOptions;
|
|
52
58
|
}
|
|
59
|
+
get bodyClassName() {
|
|
60
|
+
return this._cellAddonOptions?.bodyClassName ?? 'tooltip-body';
|
|
61
|
+
}
|
|
53
62
|
get className() {
|
|
54
63
|
return this._cellAddonOptions?.className ?? 'slick-custom-tooltip';
|
|
55
64
|
}
|
|
@@ -79,12 +88,12 @@ export class SlickCustomTooltip {
|
|
|
79
88
|
this._sharedService = containerService.get('SharedService');
|
|
80
89
|
this._addonOptions = { ...this._defaultOptions, ...(this._sharedService?.gridOptions?.customTooltip) };
|
|
81
90
|
this._eventHandler
|
|
82
|
-
.subscribe(grid.onMouseEnter, this.
|
|
83
|
-
.subscribe(grid.
|
|
84
|
-
.subscribe(grid.
|
|
91
|
+
.subscribe(grid.onMouseEnter, this.handleOnMouseOver.bind(this))
|
|
92
|
+
.subscribe(grid.onHeaderMouseOver, (e, args) => this.handleOnHeaderMouseOverByType(e, args, 'slick-header-column'))
|
|
93
|
+
.subscribe(grid.onHeaderRowMouseOver, (e, args) => this.handleOnHeaderMouseOverByType(e, args, 'slick-headerrow-column'))
|
|
85
94
|
.subscribe(grid.onMouseLeave, this.hideTooltip.bind(this))
|
|
86
|
-
.subscribe(grid.
|
|
87
|
-
.subscribe(grid.
|
|
95
|
+
.subscribe(grid.onHeaderMouseOut, this.hideTooltip.bind(this))
|
|
96
|
+
.subscribe(grid.onHeaderRowMouseOut, this.hideTooltip.bind(this));
|
|
88
97
|
}
|
|
89
98
|
dispose() {
|
|
90
99
|
// hide (remove) any tooltip and unsubscribe from all events
|
|
@@ -126,8 +135,10 @@ export class SlickCustomTooltip {
|
|
|
126
135
|
}
|
|
127
136
|
}
|
|
128
137
|
/** depending on the selector type, execute the necessary handler code */
|
|
129
|
-
|
|
138
|
+
handleOnHeaderMouseOverByType(event, args, selector) {
|
|
130
139
|
this._cellType = selector;
|
|
140
|
+
this._mousePosition = { x: event.clientX || 0, y: event.clientY || 0 };
|
|
141
|
+
this._mouseTarget = document.elementFromPoint(event.clientX || 0, event.clientY || 0)?.closest(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
131
142
|
// before doing anything, let's remove any previous tooltip before
|
|
132
143
|
// and cancel any opened Promise/Observable when using async
|
|
133
144
|
this.hideTooltip();
|
|
@@ -162,8 +173,10 @@ export class SlickCustomTooltip {
|
|
|
162
173
|
}
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
|
-
async
|
|
176
|
+
async handleOnMouseOver(event) {
|
|
166
177
|
this._cellType = 'slick-cell';
|
|
178
|
+
this._mousePosition = { x: event.clientX || 0, y: event.clientY || 0 };
|
|
179
|
+
this._mouseTarget = document.elementFromPoint(event.clientX || 0, event.clientY || 0)?.closest(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
167
180
|
// before doing anything, let's remove any previous tooltip before
|
|
168
181
|
// and cancel any opened Promise/Observable when using async
|
|
169
182
|
this.hideTooltip();
|
|
@@ -246,33 +259,42 @@ export class SlickCustomTooltip {
|
|
|
246
259
|
renderRegularTooltip(formatterOrText, cell, value, columnDef, item) {
|
|
247
260
|
const tmpDiv = document.createElement('div');
|
|
248
261
|
this._grid.applyHtmlCode(tmpDiv, this.parseFormatterAndSanitize(formatterOrText, cell, value, columnDef, item));
|
|
249
|
-
|
|
262
|
+
this._hasMultipleTooltips = (this._cellNodeElm?.querySelectorAll(SELECTOR_CLOSEST_TOOLTIP_ATTR).length || 0) > 1;
|
|
250
263
|
let tmpTitleElm;
|
|
264
|
+
const cellElm = (this._cellAddonOptions?.useRegularTooltipFromCellTextOnly || !this._mouseTarget)
|
|
265
|
+
? this._cellNodeElm
|
|
266
|
+
: this._mouseTarget;
|
|
267
|
+
let tooltipText = columnDef?.toolTip ?? '';
|
|
251
268
|
if (!tooltipText) {
|
|
252
|
-
if (this._cellType === 'slick-cell' &&
|
|
253
|
-
tooltipText =
|
|
269
|
+
if (this._cellType === 'slick-cell' && cellElm && (cellElm.clientWidth < cellElm.scrollWidth) && !this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
270
|
+
tooltipText = cellElm.textContent?.trim() ?? '';
|
|
254
271
|
if (this._cellAddonOptions?.tooltipTextMaxLength && tooltipText.length > this._cellAddonOptions?.tooltipTextMaxLength) {
|
|
255
272
|
tooltipText = tooltipText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...';
|
|
256
273
|
}
|
|
257
|
-
tmpTitleElm =
|
|
274
|
+
tmpTitleElm = cellElm;
|
|
258
275
|
}
|
|
259
276
|
else {
|
|
260
277
|
if (this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
261
|
-
tmpTitleElm = tmpDiv.querySelector(
|
|
278
|
+
tmpTitleElm = tmpDiv.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
262
279
|
}
|
|
263
280
|
else {
|
|
264
|
-
tmpTitleElm = findFirstAttribute(
|
|
265
|
-
|
|
266
|
-
|
|
281
|
+
tmpTitleElm = findFirstAttribute(cellElm, CLOSEST_TOOLTIP_FILLED_ATTR)
|
|
282
|
+
? cellElm
|
|
283
|
+
: tmpDiv.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
284
|
+
if ((!tmpTitleElm || !findFirstAttribute(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR)) && cellElm) {
|
|
285
|
+
tmpTitleElm = cellElm.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
267
286
|
}
|
|
268
287
|
}
|
|
269
|
-
if (
|
|
270
|
-
tooltipText =
|
|
288
|
+
if (tmpTitleElm?.style.display === 'none' || (this._hasMultipleTooltips && (!cellElm || cellElm === this._cellNodeElm))) {
|
|
289
|
+
tooltipText = '';
|
|
290
|
+
}
|
|
291
|
+
else if (!tooltipText || (typeof formatterOrText === 'function' && this._cellAddonOptions?.useRegularTooltipFromFormatterOnly)) {
|
|
292
|
+
tooltipText = findFirstAttribute(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR) || '';
|
|
271
293
|
}
|
|
272
294
|
}
|
|
273
295
|
}
|
|
274
296
|
if (tooltipText !== '') {
|
|
275
|
-
this.renderTooltipFormatter(formatterOrText, cell, value, columnDef, item, tooltipText);
|
|
297
|
+
this.renderTooltipFormatter(formatterOrText, cell, value, columnDef, item, tooltipText, tmpTitleElm);
|
|
276
298
|
}
|
|
277
299
|
// also clear any "title" attribute to avoid showing a 2nd browser tooltip
|
|
278
300
|
this.swapAndClearTitleAttribute(tmpTitleElm, tooltipText);
|
|
@@ -280,28 +302,30 @@ export class SlickCustomTooltip {
|
|
|
280
302
|
renderTooltipFormatter(formatter, cell, value, columnDef, item, tooltipText, inputTitleElm) {
|
|
281
303
|
// create the tooltip DOM element with the text returned by the Formatter
|
|
282
304
|
this._tooltipElm = createDomElement('div', { className: this.className });
|
|
305
|
+
this._tooltipBodyElm = createDomElement('div', { className: this.bodyClassName });
|
|
283
306
|
this._tooltipElm.classList.add(this.gridUid);
|
|
284
307
|
this._tooltipElm.classList.add('l' + cell.cell);
|
|
285
308
|
this._tooltipElm.classList.add('r' + cell.cell);
|
|
309
|
+
this.tooltipElm?.appendChild(this._tooltipBodyElm);
|
|
286
310
|
// when cell is currently lock for editing, we'll force a tooltip title search
|
|
287
311
|
// that can happen when user has a formatter but is currently editing and in that case we want the new value
|
|
288
|
-
//
|
|
312
|
+
// e.g.: when user is currently editing and uses the Slider, when dragging its value is changing, so we wish to use the editing value instead of the previous cell value.
|
|
289
313
|
if (value === null || value === undefined) {
|
|
290
|
-
const tmpTitleElm = this._cellNodeElm?.querySelector(
|
|
291
|
-
value = findFirstAttribute(tmpTitleElm,
|
|
314
|
+
const tmpTitleElm = this._cellNodeElm?.querySelector(SELECTOR_CLOSEST_TOOLTIP_ATTR);
|
|
315
|
+
value = findFirstAttribute(tmpTitleElm, CLOSEST_TOOLTIP_FILLED_ATTR) || value;
|
|
292
316
|
}
|
|
293
317
|
let outputText = tooltipText || this.parseFormatterAndSanitize(formatter, cell, value, columnDef, item) || '';
|
|
294
318
|
outputText = (this._cellAddonOptions?.tooltipTextMaxLength && outputText.length > this._cellAddonOptions.tooltipTextMaxLength) ? outputText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...' : outputText;
|
|
295
319
|
let finalOutputText = '';
|
|
296
320
|
if (!tooltipText || this._cellAddonOptions?.renderRegularTooltipAsHtml) {
|
|
297
321
|
finalOutputText = sanitizeTextByAvailableSanitizer(this.gridOptions, outputText);
|
|
298
|
-
this._grid.applyHtmlCode(this.
|
|
299
|
-
this.
|
|
322
|
+
this._grid.applyHtmlCode(this._tooltipBodyElm, finalOutputText);
|
|
323
|
+
this._tooltipBodyElm.style.whiteSpace = this._cellAddonOptions?.whiteSpace ?? this._defaultOptions.whiteSpace;
|
|
300
324
|
}
|
|
301
325
|
else {
|
|
302
326
|
finalOutputText = outputText || '';
|
|
303
|
-
this.
|
|
304
|
-
this.
|
|
327
|
+
this._tooltipBodyElm.textContent = finalOutputText;
|
|
328
|
+
this._tooltipBodyElm.style.whiteSpace = this._cellAddonOptions?.regularTooltipWhiteSpace ?? this._defaultOptions.regularTooltipWhiteSpace; // use `pre` so that sequences of white space are collapsed. Lines are broken at newline characters
|
|
305
329
|
}
|
|
306
330
|
// optional max height/width of the tooltip container
|
|
307
331
|
if (this._cellAddonOptions?.maxHeight) {
|
|
@@ -345,33 +369,46 @@ export class SlickCustomTooltip {
|
|
|
345
369
|
// or when using "auto" and we detect not enough available space then we'll position to the "left" of the cell
|
|
346
370
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "left-align", then the arrow will in fact be "arrow-right-align"
|
|
347
371
|
const position = this._cellAddonOptions?.position ?? 'auto';
|
|
372
|
+
let finalTooltipPosition = '';
|
|
348
373
|
if (position === 'center') {
|
|
349
374
|
newPositionLeft += (cellContainerWidth / 2) - (calculatedTooltipWidth / 2) + (this._cellAddonOptions?.offsetRight ?? 0);
|
|
350
|
-
|
|
351
|
-
this._tooltipElm.classList.remove('arrow-right-align');
|
|
375
|
+
finalTooltipPosition = 'top-center';
|
|
376
|
+
this._tooltipElm.classList.remove('arrow-left-align', 'arrow-right-align');
|
|
352
377
|
this._tooltipElm.classList.add('arrow-center-align');
|
|
353
378
|
}
|
|
354
379
|
else if (position === 'right-align' || ((position === 'auto' || position !== 'left-align') && (newPositionLeft + calculatedTooltipWidth) > calculatedBodyWidth)) {
|
|
380
|
+
finalTooltipPosition = 'right';
|
|
355
381
|
newPositionLeft -= (calculatedTooltipWidth - cellContainerWidth - (this._cellAddonOptions?.offsetLeft ?? 0));
|
|
356
|
-
this._tooltipElm.classList.remove('arrow-center-align');
|
|
357
|
-
this._tooltipElm.classList.remove('arrow-left-align');
|
|
382
|
+
this._tooltipElm.classList.remove('arrow-center-align', 'arrow-left-align');
|
|
358
383
|
this._tooltipElm.classList.add('arrow-right-align');
|
|
359
384
|
}
|
|
360
385
|
else {
|
|
361
|
-
|
|
362
|
-
this._tooltipElm.classList.remove('arrow-right-align');
|
|
386
|
+
finalTooltipPosition = 'left';
|
|
387
|
+
this._tooltipElm.classList.remove('arrow-center-align', 'arrow-right-align');
|
|
363
388
|
this._tooltipElm.classList.add('arrow-left-align');
|
|
364
389
|
}
|
|
365
390
|
// do the same calculation/reposition with top/bottom (default is top of the cell or in other word starting from the cell going down)
|
|
366
391
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "bottom", then the arrow will in fact be "arrow-top"
|
|
367
392
|
if (position === 'bottom' || ((position === 'auto' || position !== 'top') && calculatedTooltipHeight > calculateAvailableSpace(this._cellNodeElm).top)) {
|
|
368
393
|
newPositionTop = (cellPosition.top || 0) + (this.gridOptions.rowHeight ?? 0) + (this._cellAddonOptions?.offsetTopBottom ?? 0);
|
|
394
|
+
finalTooltipPosition = `bottom-${finalTooltipPosition}`;
|
|
369
395
|
this._tooltipElm.classList.remove('arrow-down');
|
|
370
396
|
this._tooltipElm.classList.add('arrow-up');
|
|
371
397
|
}
|
|
372
398
|
else {
|
|
373
|
-
|
|
399
|
+
finalTooltipPosition = `top-${finalTooltipPosition}`;
|
|
374
400
|
this._tooltipElm.classList.remove('arrow-up');
|
|
401
|
+
this._tooltipElm.classList.add('arrow-down');
|
|
402
|
+
}
|
|
403
|
+
// when having multiple tooltips, we'll try to reposition tooltip to mouse position
|
|
404
|
+
if (this._tooltipElm && (this._hasMultipleTooltips || this.cellAddonOptions?.repositionByMouseOverTarget)) {
|
|
405
|
+
const mouseElmOffset = getOffset(this._mouseTarget);
|
|
406
|
+
if (finalTooltipPosition.includes('left') || finalTooltipPosition === 'top-center') {
|
|
407
|
+
newPositionLeft = mouseElmOffset.left - (this._addonOptions?.offsetArrow ?? 3);
|
|
408
|
+
}
|
|
409
|
+
else if (finalTooltipPosition.includes('right')) {
|
|
410
|
+
newPositionLeft = mouseElmOffset.left - calculatedTooltipWidth + (this._mouseTarget?.offsetWidth ?? 0) + (this._addonOptions?.offsetArrow ?? 3);
|
|
411
|
+
}
|
|
375
412
|
}
|
|
376
413
|
// reposition the tooltip over the cell (90% of the time this will end up using a position on the "right" of the cell)
|
|
377
414
|
this._tooltipElm.style.top = `${newPositionTop}px`;
|
|
@@ -385,6 +422,10 @@ export class SlickCustomTooltip {
|
|
|
385
422
|
swapAndClearTitleAttribute(inputTitleElm, tooltipText) {
|
|
386
423
|
// the title attribute might be directly on the slick-cell container element (when formatter returns a result object)
|
|
387
424
|
// OR in a child element (most commonly as a custom formatter)
|
|
425
|
+
let cellWithTitleElm;
|
|
426
|
+
if (inputTitleElm) {
|
|
427
|
+
cellWithTitleElm = (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm : this._cellNodeElm?.querySelector('[title]')));
|
|
428
|
+
}
|
|
388
429
|
const titleElm = inputTitleElm || (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm : this._cellNodeElm?.querySelector('[title]')));
|
|
389
430
|
// flip tooltip text from `title` to `data-slick-tooltip`
|
|
390
431
|
if (titleElm) {
|
|
@@ -392,6 +433,11 @@ export class SlickCustomTooltip {
|
|
|
392
433
|
if (titleElm.hasAttribute('title')) {
|
|
393
434
|
titleElm.setAttribute('title', '');
|
|
394
435
|
}
|
|
436
|
+
// targeted element might actually not be the cell element,
|
|
437
|
+
// so let's also clear the cell element title attribute to avoid showing native + custom tooltips
|
|
438
|
+
if (cellWithTitleElm?.hasAttribute('title')) {
|
|
439
|
+
cellWithTitleElm.setAttribute('title', '');
|
|
440
|
+
}
|
|
395
441
|
}
|
|
396
442
|
}
|
|
397
443
|
}
|