arengibook 3.1.51-itemWithTooltip → 3.1.53-itemWithTooltip
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/index.js +419 -49
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -37113,6 +37113,8 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37113
37113
|
var virtualScrollerOptions = _ref.virtualScrollerOptions,
|
|
37114
37114
|
_ref$enableItemToolti = _ref.enableItemTooltip,
|
|
37115
37115
|
enableItemTooltip = _ref$enableItemToolti === void 0 ? false : _ref$enableItemToolti,
|
|
37116
|
+
_ref$tooltipWidth = _ref.tooltipWidth,
|
|
37117
|
+
tooltipWidth = _ref$tooltipWidth === void 0 ? '250px' : _ref$tooltipWidth,
|
|
37116
37118
|
_ref$enableItemLink = _ref.enableItemLink,
|
|
37117
37119
|
enableItemLink = _ref$enableItemLink === void 0 ? false : _ref$enableItemLink,
|
|
37118
37120
|
_ref$openOnHover = _ref.openOnHover,
|
|
@@ -37159,24 +37161,31 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37159
37161
|
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
37160
37162
|
tooltipKey = _useState12[0],
|
|
37161
37163
|
setTooltipKey = _useState12[1];
|
|
37162
|
-
|
|
37163
|
-
|
|
37164
|
-
|
|
37165
|
-
|
|
37166
|
-
|
|
37164
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
37165
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
37166
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
37167
|
+
var _useState13 = useState('right'),
|
|
37168
|
+
_useState14 = _slicedToArray$d(_useState13, 2);
|
|
37169
|
+
_useState14[0];
|
|
37170
|
+
var setTooltipMode = _useState14[1];
|
|
37171
|
+
var _useState15 = useState(null),
|
|
37167
37172
|
_useState16 = _slicedToArray$d(_useState15, 2),
|
|
37168
|
-
|
|
37169
|
-
|
|
37170
|
-
var _useState17 = useState(
|
|
37173
|
+
sortOrder = _useState16[0],
|
|
37174
|
+
setSortOrder = _useState16[1];
|
|
37175
|
+
var _useState17 = useState(false),
|
|
37171
37176
|
_useState18 = _slicedToArray$d(_useState17, 2),
|
|
37172
|
-
|
|
37173
|
-
|
|
37177
|
+
isDropdownOpen = _useState18[0],
|
|
37178
|
+
setIsDropdownOpen = _useState18[1];
|
|
37179
|
+
var _useState19 = useState(''),
|
|
37180
|
+
_useState20 = _slicedToArray$d(_useState19, 2),
|
|
37181
|
+
selectedGroupLabel = _useState20[0],
|
|
37182
|
+
setSelectedGroupLabel = _useState20[1];
|
|
37174
37183
|
|
|
37175
37184
|
// 🔹 Lazy loading
|
|
37176
|
-
var
|
|
37177
|
-
|
|
37178
|
-
loading =
|
|
37179
|
-
setLoading =
|
|
37185
|
+
var _useState21 = useState(false),
|
|
37186
|
+
_useState22 = _slicedToArray$d(_useState21, 2),
|
|
37187
|
+
loading = _useState22[0],
|
|
37188
|
+
setLoading = _useState22[1];
|
|
37180
37189
|
var loadLazyTimeout = useRef();
|
|
37181
37190
|
var currentPageRef = useRef(1);
|
|
37182
37191
|
var hasMoreRef = useRef(true);
|
|
@@ -37223,6 +37232,78 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37223
37232
|
return observer.disconnect();
|
|
37224
37233
|
};
|
|
37225
37234
|
}, [enableItemTooltip]);
|
|
37235
|
+
|
|
37236
|
+
// --- Repositionnement fin du tooltip ---
|
|
37237
|
+
// Le mode est recalculé à chaque survol pour rester à jour en intégration.
|
|
37238
|
+
useEffect(function () {
|
|
37239
|
+
if (!enableItemTooltip) return undefined;
|
|
37240
|
+
var hoveredRow = null;
|
|
37241
|
+
var computeMode = function computeMode() {
|
|
37242
|
+
var container = dropdownRef.current;
|
|
37243
|
+
if (!container) return 'right';
|
|
37244
|
+
var cRect = container.getBoundingClientRect();
|
|
37245
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
37246
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
37247
|
+
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
37248
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
37249
|
+
var anchor = panel || container;
|
|
37250
|
+
var aRect = anchor.getBoundingClientRect();
|
|
37251
|
+
var estimateHeight = 120;
|
|
37252
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
37253
|
+
var spaceTop = aRect.top;
|
|
37254
|
+
if (spaceBottom >= estimateHeight + 16) return 'panelBottom';
|
|
37255
|
+
if (spaceTop >= estimateHeight + 16) return 'panelTop';
|
|
37256
|
+
return 'panelBottom';
|
|
37257
|
+
};
|
|
37258
|
+
var reposition = function reposition() {
|
|
37259
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
37260
|
+
if (!tooltipEl) return;
|
|
37261
|
+
var mode = computeMode();
|
|
37262
|
+
setTooltipMode(mode);
|
|
37263
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
37264
|
+
if (mode === 'right') {
|
|
37265
|
+
var _hoveredRow;
|
|
37266
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.dropdown-item-info-icon');
|
|
37267
|
+
if (!iconEl) return;
|
|
37268
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
37269
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
37270
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
37271
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
37272
|
+
if (arrowEl) {
|
|
37273
|
+
arrowEl.style.display = '';
|
|
37274
|
+
arrowEl.style.top = '50%';
|
|
37275
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
37276
|
+
}
|
|
37277
|
+
} else {
|
|
37278
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
37279
|
+
if (!panel) return;
|
|
37280
|
+
var pRect = panel.getBoundingClientRect();
|
|
37281
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
37282
|
+
if (mode === 'panelBottom') {
|
|
37283
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
37284
|
+
} else {
|
|
37285
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
37286
|
+
}
|
|
37287
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
37288
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
37289
|
+
}
|
|
37290
|
+
};
|
|
37291
|
+
var trackHover = function trackHover(e) {
|
|
37292
|
+
var _e$target, _e$target$closest;
|
|
37293
|
+
var row = (_e$target = e.target) === null || _e$target === void 0 || (_e$target$closest = _e$target.closest) === null || _e$target$closest === void 0 ? void 0 : _e$target$closest.call(_e$target, '.dropdown-tooltip-item, .dropdown-tooltip-trigger');
|
|
37294
|
+
if (row) {
|
|
37295
|
+
hoveredRow = row;
|
|
37296
|
+
requestAnimationFrame(reposition);
|
|
37297
|
+
requestAnimationFrame(function () {
|
|
37298
|
+
return requestAnimationFrame(reposition);
|
|
37299
|
+
});
|
|
37300
|
+
}
|
|
37301
|
+
};
|
|
37302
|
+
document.addEventListener('mouseover', trackHover);
|
|
37303
|
+
return function () {
|
|
37304
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
37305
|
+
};
|
|
37306
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
37226
37307
|
var optionTemplate = function optionTemplate(option) {
|
|
37227
37308
|
var _ref2 = selectMetaConfig || {},
|
|
37228
37309
|
labelStyle = _ref2.labelStyle,
|
|
@@ -37932,6 +38013,16 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37932
38013
|
hideDelay: 150,
|
|
37933
38014
|
style: {
|
|
37934
38015
|
zIndex: 9999999
|
|
38016
|
+
},
|
|
38017
|
+
pt: {
|
|
38018
|
+
text: {
|
|
38019
|
+
style: {
|
|
38020
|
+
width: 'auto',
|
|
38021
|
+
maxWidth: tooltipWidth,
|
|
38022
|
+
whiteSpace: 'normal',
|
|
38023
|
+
wordBreak: 'break-word'
|
|
38024
|
+
}
|
|
38025
|
+
}
|
|
37935
38026
|
}
|
|
37936
38027
|
}), /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$J({
|
|
37937
38028
|
ref: dropdownComposantRef,
|
|
@@ -38124,6 +38215,8 @@ var Dropdown = function Dropdown(props) {
|
|
|
38124
38215
|
virtualScrollerOptions = props.virtualScrollerOptions,
|
|
38125
38216
|
_props$enableItemTool = props.enableItemTooltip,
|
|
38126
38217
|
enableItemTooltip = _props$enableItemTool === void 0 ? false : _props$enableItemTool,
|
|
38218
|
+
_props$tooltipWidth = props.tooltipWidth,
|
|
38219
|
+
tooltipWidth = _props$tooltipWidth === void 0 ? '250px' : _props$tooltipWidth,
|
|
38127
38220
|
_props$enableItemLink = props.enableItemLink,
|
|
38128
38221
|
enableItemLink = _props$enableItemLink === void 0 ? false : _props$enableItemLink,
|
|
38129
38222
|
_props$openOnHover = props.openOnHover,
|
|
@@ -38176,14 +38269,21 @@ var Dropdown = function Dropdown(props) {
|
|
|
38176
38269
|
_useState0 = _slicedToArray$d(_useState9, 2),
|
|
38177
38270
|
tooltipKey = _useState0[0],
|
|
38178
38271
|
setTooltipKey = _useState0[1];
|
|
38179
|
-
|
|
38180
|
-
|
|
38181
|
-
|
|
38182
|
-
|
|
38183
|
-
|
|
38272
|
+
// 'right' : à droite du picto i (comportement par défaut)
|
|
38273
|
+
// 'panelBottom' : sous le panel d'options (si pas assez de place à droite)
|
|
38274
|
+
// 'panelTop' : au-dessus du panel d'options (si pas assez de place en bas non plus)
|
|
38275
|
+
var _useState1 = useState('right'),
|
|
38276
|
+
_useState10 = _slicedToArray$d(_useState1, 2);
|
|
38277
|
+
_useState10[0];
|
|
38278
|
+
var setTooltipMode = _useState10[1];
|
|
38279
|
+
var _useState11 = useState(null),
|
|
38184
38280
|
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
38185
|
-
|
|
38186
|
-
|
|
38281
|
+
sortOrder = _useState12[0],
|
|
38282
|
+
setSortOrder = _useState12[1];
|
|
38283
|
+
var _useState13 = useState(false),
|
|
38284
|
+
_useState14 = _slicedToArray$d(_useState13, 2),
|
|
38285
|
+
showRequiredError = _useState14[0],
|
|
38286
|
+
setShowRequiredError = _useState14[1];
|
|
38187
38287
|
|
|
38188
38288
|
// --- Derived values ---
|
|
38189
38289
|
var hasSelection = options.some(function (opt) {
|
|
@@ -38314,6 +38414,80 @@ var Dropdown = function Dropdown(props) {
|
|
|
38314
38414
|
};
|
|
38315
38415
|
}, [enableItemTooltip]);
|
|
38316
38416
|
|
|
38417
|
+
// --- Repositionnement fin du tooltip ---
|
|
38418
|
+
// La détection du mode ('right' / 'panelBottom' / 'panelTop') est refaite
|
|
38419
|
+
// à chaque survol : la mesure reste à jour en intégration réelle même si
|
|
38420
|
+
// le layout a changé après le montage (scroll ancêtre, resize parent…).
|
|
38421
|
+
useEffect(function () {
|
|
38422
|
+
if (!enableItemTooltip) return undefined;
|
|
38423
|
+
var hoveredRow = null;
|
|
38424
|
+
var computeMode = function computeMode() {
|
|
38425
|
+
var container = containerRef.current;
|
|
38426
|
+
if (!container) return 'right';
|
|
38427
|
+
var cRect = container.getBoundingClientRect();
|
|
38428
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
38429
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
38430
|
+
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
38431
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
38432
|
+
var anchor = panel || container;
|
|
38433
|
+
var aRect = anchor.getBoundingClientRect();
|
|
38434
|
+
var estimateHeight = 120;
|
|
38435
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
38436
|
+
var spaceTop = aRect.top;
|
|
38437
|
+
if (spaceBottom >= estimateHeight + 16) return 'panelBottom';
|
|
38438
|
+
if (spaceTop >= estimateHeight + 16) return 'panelTop';
|
|
38439
|
+
return 'panelBottom';
|
|
38440
|
+
};
|
|
38441
|
+
var reposition = function reposition() {
|
|
38442
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
38443
|
+
if (!tooltipEl) return;
|
|
38444
|
+
var mode = computeMode();
|
|
38445
|
+
setTooltipMode(mode);
|
|
38446
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
38447
|
+
if (mode === 'right') {
|
|
38448
|
+
var _hoveredRow;
|
|
38449
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.dropdown-item-info-icon');
|
|
38450
|
+
if (!iconEl) return;
|
|
38451
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
38452
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
38453
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
38454
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
38455
|
+
if (arrowEl) {
|
|
38456
|
+
arrowEl.style.display = '';
|
|
38457
|
+
arrowEl.style.top = '50%';
|
|
38458
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
38459
|
+
}
|
|
38460
|
+
} else {
|
|
38461
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
38462
|
+
if (!panel) return;
|
|
38463
|
+
var pRect = panel.getBoundingClientRect();
|
|
38464
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
38465
|
+
if (mode === 'panelBottom') {
|
|
38466
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
38467
|
+
} else {
|
|
38468
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
38469
|
+
}
|
|
38470
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
38471
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
38472
|
+
}
|
|
38473
|
+
};
|
|
38474
|
+
var trackHover = function trackHover(e) {
|
|
38475
|
+
var _e$target, _e$target$closest;
|
|
38476
|
+
var row = (_e$target = e.target) === null || _e$target === void 0 || (_e$target$closest = _e$target.closest) === null || _e$target$closest === void 0 ? void 0 : _e$target$closest.call(_e$target, '.dropdown-tooltip-item, .dropdown-tooltip-trigger');
|
|
38477
|
+
if (row) {
|
|
38478
|
+
hoveredRow = row;
|
|
38479
|
+
requestAnimationFrame(reposition);
|
|
38480
|
+
requestAnimationFrame(function () {
|
|
38481
|
+
return requestAnimationFrame(reposition);
|
|
38482
|
+
});
|
|
38483
|
+
}
|
|
38484
|
+
};
|
|
38485
|
+
document.addEventListener('mouseover', trackHover);
|
|
38486
|
+
return function () {
|
|
38487
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
38488
|
+
};
|
|
38489
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
38490
|
+
|
|
38317
38491
|
// --- Event handlers ---
|
|
38318
38492
|
var handleShow = function handleShow() {
|
|
38319
38493
|
return setIsDropdownOpen(true);
|
|
@@ -38849,6 +39023,16 @@ var Dropdown = function Dropdown(props) {
|
|
|
38849
39023
|
hideDelay: 150,
|
|
38850
39024
|
style: {
|
|
38851
39025
|
zIndex: 9999999
|
|
39026
|
+
},
|
|
39027
|
+
pt: {
|
|
39028
|
+
text: {
|
|
39029
|
+
style: {
|
|
39030
|
+
width: 'auto',
|
|
39031
|
+
maxWidth: tooltipWidth,
|
|
39032
|
+
whiteSpace: 'normal',
|
|
39033
|
+
wordBreak: 'break-word'
|
|
39034
|
+
}
|
|
39035
|
+
}
|
|
38852
39036
|
}
|
|
38853
39037
|
}), /*#__PURE__*/React__default.createElement("div", _extends$J({}, cleanAttr, {
|
|
38854
39038
|
style: {
|
|
@@ -41791,6 +41975,8 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
41791
41975
|
isSelectMeta = _ref$isSelectMeta === void 0 ? false : _ref$isSelectMeta,
|
|
41792
41976
|
_ref$enableItemToolti = _ref.enableItemTooltip,
|
|
41793
41977
|
enableItemTooltip = _ref$enableItemToolti === void 0 ? false : _ref$enableItemToolti,
|
|
41978
|
+
_ref$tooltipWidth = _ref.tooltipWidth,
|
|
41979
|
+
tooltipWidth = _ref$tooltipWidth === void 0 ? '250px' : _ref$tooltipWidth,
|
|
41794
41980
|
_ref$enableItemLink = _ref.enableItemLink,
|
|
41795
41981
|
enableItemLink = _ref$enableItemLink === void 0 ? false : _ref$enableItemLink,
|
|
41796
41982
|
_ref$enableSecondaryL = _ref.enableSecondaryLabel,
|
|
@@ -41862,30 +42048,37 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
41862
42048
|
_useState8 = _slicedToArray$d(_useState7, 2),
|
|
41863
42049
|
tooltipKey = _useState8[0],
|
|
41864
42050
|
setTooltipKey = _useState8[1];
|
|
41865
|
-
|
|
41866
|
-
|
|
41867
|
-
|
|
41868
|
-
|
|
41869
|
-
|
|
42051
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
42052
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
42053
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
42054
|
+
var _useState9 = useState('right'),
|
|
42055
|
+
_useState0 = _slicedToArray$d(_useState9, 2);
|
|
42056
|
+
_useState0[0];
|
|
42057
|
+
var setTooltipMode = _useState0[1];
|
|
42058
|
+
var _useState1 = useState(null),
|
|
41870
42059
|
_useState10 = _slicedToArray$d(_useState1, 2),
|
|
41871
|
-
|
|
41872
|
-
|
|
41873
|
-
var _useState11 = useState(
|
|
41874
|
-
_useState12 = _slicedToArray$d(_useState11, 2)
|
|
41875
|
-
_useState12[0]
|
|
41876
|
-
_useState12[1];
|
|
41877
|
-
var _useState13 = useState(null),
|
|
41878
|
-
_useState14 = _slicedToArray$d(_useState13, 2)
|
|
41879
|
-
|
|
41880
|
-
|
|
42060
|
+
sortOrder = _useState10[0],
|
|
42061
|
+
setSortOrder = _useState10[1];
|
|
42062
|
+
var _useState11 = useState([]),
|
|
42063
|
+
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
42064
|
+
collapsedGroups = _useState12[0],
|
|
42065
|
+
setCollapsedGroups = _useState12[1];
|
|
42066
|
+
var _useState13 = useState(value !== null && value !== void 0 ? value : []),
|
|
42067
|
+
_useState14 = _slicedToArray$d(_useState13, 2);
|
|
42068
|
+
_useState14[0];
|
|
42069
|
+
_useState14[1];
|
|
42070
|
+
var _useState15 = useState(null),
|
|
42071
|
+
_useState16 = _slicedToArray$d(_useState15, 2),
|
|
42072
|
+
displayValue = _useState16[0],
|
|
42073
|
+
setDisplayValue = _useState16[1];
|
|
41881
42074
|
var isOptionsArray = Array.isArray(options) && !optionsUrl;
|
|
41882
42075
|
var hasMoreRef = useRef(true);
|
|
41883
42076
|
var effectiveReadOnly = Boolean(readOnly);
|
|
41884
42077
|
var applyEnabled = typeof onApply === 'function';
|
|
41885
|
-
var
|
|
41886
|
-
|
|
41887
|
-
showRequiredError =
|
|
41888
|
-
setShowRequiredError =
|
|
42078
|
+
var _useState17 = useState(false),
|
|
42079
|
+
_useState18 = _slicedToArray$d(_useState17, 2),
|
|
42080
|
+
showRequiredError = _useState18[0],
|
|
42081
|
+
setShowRequiredError = _useState18[1];
|
|
41889
42082
|
var hasSelection = Array.isArray(selectedOptions) && selectedOptions.length > 0;
|
|
41890
42083
|
var isError = Boolean(invalid || status === 'error' || showRequiredError);
|
|
41891
42084
|
var isInvalidEffective = Boolean(isError && !hasSelection);
|
|
@@ -42217,6 +42410,79 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
42217
42410
|
return observer.disconnect();
|
|
42218
42411
|
};
|
|
42219
42412
|
}, [enableItemTooltip]);
|
|
42413
|
+
|
|
42414
|
+
// --- Repositionnement fin du tooltip ---
|
|
42415
|
+
// Le mode est recalculé à chaque survol pour rester à jour même après
|
|
42416
|
+
// intégration dans une page dynamique (scroll ancêtre, resize parent…).
|
|
42417
|
+
useEffect(function () {
|
|
42418
|
+
if (!enableItemTooltip) return undefined;
|
|
42419
|
+
var hoveredRow = null;
|
|
42420
|
+
var computeMode = function computeMode() {
|
|
42421
|
+
var container = containerRef.current;
|
|
42422
|
+
if (!container) return 'right';
|
|
42423
|
+
var cRect = container.getBoundingClientRect();
|
|
42424
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
42425
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
42426
|
+
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
42427
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
42428
|
+
var anchor = panel || container;
|
|
42429
|
+
var aRect = anchor.getBoundingClientRect();
|
|
42430
|
+
var estimateHeight = 120;
|
|
42431
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
42432
|
+
var spaceTop = aRect.top;
|
|
42433
|
+
if (spaceBottom >= estimateHeight + 16) return 'panelBottom';
|
|
42434
|
+
if (spaceTop >= estimateHeight + 16) return 'panelTop';
|
|
42435
|
+
return 'panelBottom';
|
|
42436
|
+
};
|
|
42437
|
+
var reposition = function reposition() {
|
|
42438
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
42439
|
+
if (!tooltipEl) return;
|
|
42440
|
+
var mode = computeMode();
|
|
42441
|
+
setTooltipMode(mode);
|
|
42442
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
42443
|
+
if (mode === 'right') {
|
|
42444
|
+
var _hoveredRow;
|
|
42445
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.multiselect-item-info-icon');
|
|
42446
|
+
if (!iconEl) return;
|
|
42447
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
42448
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
42449
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
42450
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
42451
|
+
if (arrowEl) {
|
|
42452
|
+
arrowEl.style.display = '';
|
|
42453
|
+
arrowEl.style.top = '50%';
|
|
42454
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
42455
|
+
}
|
|
42456
|
+
} else {
|
|
42457
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
42458
|
+
if (!panel) return;
|
|
42459
|
+
var pRect = panel.getBoundingClientRect();
|
|
42460
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
42461
|
+
if (mode === 'panelBottom') {
|
|
42462
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
42463
|
+
} else {
|
|
42464
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
42465
|
+
}
|
|
42466
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
42467
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
42468
|
+
}
|
|
42469
|
+
};
|
|
42470
|
+
var trackHover = function trackHover(e) {
|
|
42471
|
+
var _e$target, _e$target$closest;
|
|
42472
|
+
var row = (_e$target = e.target) === null || _e$target === void 0 || (_e$target$closest = _e$target.closest) === null || _e$target$closest === void 0 ? void 0 : _e$target$closest.call(_e$target, '.multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger');
|
|
42473
|
+
if (row) {
|
|
42474
|
+
hoveredRow = row;
|
|
42475
|
+
requestAnimationFrame(reposition);
|
|
42476
|
+
requestAnimationFrame(function () {
|
|
42477
|
+
return requestAnimationFrame(reposition);
|
|
42478
|
+
});
|
|
42479
|
+
}
|
|
42480
|
+
};
|
|
42481
|
+
document.addEventListener('mouseover', trackHover);
|
|
42482
|
+
return function () {
|
|
42483
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
42484
|
+
};
|
|
42485
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
42220
42486
|
var inverseColor = function inverseColor(hexColor) {
|
|
42221
42487
|
if (!hexColor || !hexColor.startsWith('#')) return '#000000';
|
|
42222
42488
|
var hex = hexColor;
|
|
@@ -42891,11 +43157,21 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
42891
43157
|
key: tooltipKey,
|
|
42892
43158
|
target: ".multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger",
|
|
42893
43159
|
appendTo: document.body,
|
|
42894
|
-
position: "
|
|
43160
|
+
position: "right",
|
|
42895
43161
|
autoHide: false,
|
|
42896
43162
|
hideDelay: 150,
|
|
42897
43163
|
style: {
|
|
42898
43164
|
zIndex: '9999999'
|
|
43165
|
+
},
|
|
43166
|
+
pt: {
|
|
43167
|
+
text: {
|
|
43168
|
+
style: {
|
|
43169
|
+
width: 'auto',
|
|
43170
|
+
maxWidth: tooltipWidth,
|
|
43171
|
+
whiteSpace: 'normal',
|
|
43172
|
+
wordBreak: 'break-word'
|
|
43173
|
+
}
|
|
43174
|
+
}
|
|
42899
43175
|
}
|
|
42900
43176
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
42901
43177
|
style: {
|
|
@@ -43236,6 +43512,8 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43236
43512
|
enableGroupSelect = _props$enableGroupSel === void 0 ? false : _props$enableGroupSel,
|
|
43237
43513
|
_props$enableItemTool = props.enableItemTooltip,
|
|
43238
43514
|
enableItemTooltip = _props$enableItemTool === void 0 ? false : _props$enableItemTool,
|
|
43515
|
+
_props$tooltipWidth = props.tooltipWidth,
|
|
43516
|
+
tooltipWidth = _props$tooltipWidth === void 0 ? '250px' : _props$tooltipWidth,
|
|
43239
43517
|
_props$enableItemLink = props.enableItemLink,
|
|
43240
43518
|
enableItemLink = _props$enableItemLink === void 0 ? false : _props$enableItemLink,
|
|
43241
43519
|
_props$openOnHover = props.openOnHover,
|
|
@@ -43289,17 +43567,24 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43289
43567
|
_useState0 = _slicedToArray$d(_useState9, 2),
|
|
43290
43568
|
tooltipKey = _useState0[0],
|
|
43291
43569
|
setTooltipKey = _useState0[1];
|
|
43570
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
43571
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
43572
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
43573
|
+
var _useState1 = useState('right'),
|
|
43574
|
+
_useState10 = _slicedToArray$d(_useState1, 2);
|
|
43575
|
+
_useState10[0];
|
|
43576
|
+
var setTooltipMode = _useState10[1];
|
|
43292
43577
|
var multiSelectRef = useRef(null);
|
|
43293
43578
|
var containerRef = useRef(null);
|
|
43294
43579
|
var didMountRef = useRef(false);
|
|
43295
|
-
var
|
|
43296
|
-
_useState10 = _slicedToArray$d(_useState1, 2),
|
|
43297
|
-
sortOrder = _useState10[0],
|
|
43298
|
-
setSortOrder = _useState10[1];
|
|
43299
|
-
var _useState11 = useState([]),
|
|
43580
|
+
var _useState11 = useState(null),
|
|
43300
43581
|
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
43301
|
-
|
|
43302
|
-
|
|
43582
|
+
sortOrder = _useState12[0],
|
|
43583
|
+
setSortOrder = _useState12[1];
|
|
43584
|
+
var _useState13 = useState([]),
|
|
43585
|
+
_useState14 = _slicedToArray$d(_useState13, 2),
|
|
43586
|
+
collapsedGroups = _useState14[0],
|
|
43587
|
+
setCollapsedGroups = _useState14[1];
|
|
43303
43588
|
useEffect(function () {
|
|
43304
43589
|
if (!didMountRef.current) {
|
|
43305
43590
|
didMountRef.current = true;
|
|
@@ -43743,6 +44028,81 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43743
44028
|
return observer.disconnect();
|
|
43744
44029
|
};
|
|
43745
44030
|
}, [enableItemTooltip]);
|
|
44031
|
+
|
|
44032
|
+
// --- Repositionnement fin du tooltip ---
|
|
44033
|
+
// La détection du mode ('right' / 'panelBottom' / 'panelTop') est refaite à
|
|
44034
|
+
// chaque survol : ainsi la mesure de position est toujours à jour même si
|
|
44035
|
+
// le layout a changé après le montage (intégration dans une page réelle,
|
|
44036
|
+
// scroll d'un ancêtre, resize du parent, etc.).
|
|
44037
|
+
useEffect(function () {
|
|
44038
|
+
if (!enableItemTooltip) return undefined;
|
|
44039
|
+
var hoveredRow = null;
|
|
44040
|
+
var computeMode = function computeMode() {
|
|
44041
|
+
var container = containerRef.current;
|
|
44042
|
+
if (!container) return 'right';
|
|
44043
|
+
var cRect = container.getBoundingClientRect();
|
|
44044
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
44045
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
44046
|
+
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
44047
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
44048
|
+
var anchor = panel || container;
|
|
44049
|
+
var aRect = anchor.getBoundingClientRect();
|
|
44050
|
+
var estimateHeight = 120;
|
|
44051
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
44052
|
+
var spaceTop = aRect.top;
|
|
44053
|
+
if (spaceBottom >= estimateHeight + 16) return 'panelBottom';
|
|
44054
|
+
if (spaceTop >= estimateHeight + 16) return 'panelTop';
|
|
44055
|
+
return 'panelBottom';
|
|
44056
|
+
};
|
|
44057
|
+
var reposition = function reposition() {
|
|
44058
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
44059
|
+
if (!tooltipEl) return;
|
|
44060
|
+
var mode = computeMode();
|
|
44061
|
+
setTooltipMode(mode);
|
|
44062
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
44063
|
+
if (mode === 'right') {
|
|
44064
|
+
var _hoveredRow;
|
|
44065
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.multiselect-item-info-icon');
|
|
44066
|
+
if (!iconEl) return;
|
|
44067
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
44068
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
44069
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
44070
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
44071
|
+
if (arrowEl) {
|
|
44072
|
+
arrowEl.style.display = '';
|
|
44073
|
+
arrowEl.style.top = '50%';
|
|
44074
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
44075
|
+
}
|
|
44076
|
+
} else {
|
|
44077
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
44078
|
+
if (!panel) return;
|
|
44079
|
+
var pRect = panel.getBoundingClientRect();
|
|
44080
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
44081
|
+
if (mode === 'panelBottom') {
|
|
44082
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
44083
|
+
} else {
|
|
44084
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
44085
|
+
}
|
|
44086
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
44087
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
44088
|
+
}
|
|
44089
|
+
};
|
|
44090
|
+
var trackHover = function trackHover(e) {
|
|
44091
|
+
var _e$target, _e$target$closest;
|
|
44092
|
+
var row = (_e$target = e.target) === null || _e$target === void 0 || (_e$target$closest = _e$target.closest) === null || _e$target$closest === void 0 ? void 0 : _e$target$closest.call(_e$target, '.multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger');
|
|
44093
|
+
if (row) {
|
|
44094
|
+
hoveredRow = row;
|
|
44095
|
+
requestAnimationFrame(reposition);
|
|
44096
|
+
requestAnimationFrame(function () {
|
|
44097
|
+
return requestAnimationFrame(reposition);
|
|
44098
|
+
});
|
|
44099
|
+
}
|
|
44100
|
+
};
|
|
44101
|
+
document.addEventListener('mouseover', trackHover);
|
|
44102
|
+
return function () {
|
|
44103
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
44104
|
+
};
|
|
44105
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
43746
44106
|
var handleChange = function handleChange(e) {
|
|
43747
44107
|
if (disabled || effectiveReadOnly) return;
|
|
43748
44108
|
var ids = Array.isArray(e.value) ? e.value : [e.value];
|
|
@@ -44197,11 +44557,21 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
44197
44557
|
key: tooltipKey,
|
|
44198
44558
|
target: ".multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger",
|
|
44199
44559
|
appendTo: document.body,
|
|
44200
|
-
position: "
|
|
44560
|
+
position: "right",
|
|
44201
44561
|
autoHide: false,
|
|
44202
44562
|
hideDelay: 150,
|
|
44203
44563
|
style: {
|
|
44204
44564
|
zIndex: '9999999'
|
|
44565
|
+
},
|
|
44566
|
+
pt: {
|
|
44567
|
+
text: {
|
|
44568
|
+
style: {
|
|
44569
|
+
width: 'auto',
|
|
44570
|
+
maxWidth: tooltipWidth,
|
|
44571
|
+
whiteSpace: 'normal',
|
|
44572
|
+
wordBreak: 'break-word'
|
|
44573
|
+
}
|
|
44574
|
+
}
|
|
44205
44575
|
}
|
|
44206
44576
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
44207
44577
|
style: {
|