arengibook 3.1.51-itemWithTooltip → 3.1.52-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 +481 -46
- 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 ? '220px' : _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
|
-
|
|
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'),
|
|
37163
37168
|
_useState14 = _slicedToArray$d(_useState13, 2),
|
|
37164
|
-
|
|
37165
|
-
|
|
37166
|
-
var _useState15 = useState(
|
|
37169
|
+
tooltipMode = _useState14[0],
|
|
37170
|
+
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,94 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37223
37232
|
return observer.disconnect();
|
|
37224
37233
|
};
|
|
37225
37234
|
}, [enableItemTooltip]);
|
|
37235
|
+
|
|
37236
|
+
// --- Détection de la place autour du composant / panel ---
|
|
37237
|
+
useEffect(function () {
|
|
37238
|
+
if (!enableItemTooltip) return undefined;
|
|
37239
|
+
var computeMode = function computeMode() {
|
|
37240
|
+
var container = dropdownRef.current;
|
|
37241
|
+
if (!container) return;
|
|
37242
|
+
var cRect = container.getBoundingClientRect();
|
|
37243
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
37244
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
37245
|
+
if (spaceRight >= tooltipPxWidth + 40) {
|
|
37246
|
+
setTooltipMode('right');
|
|
37247
|
+
return;
|
|
37248
|
+
}
|
|
37249
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
37250
|
+
var anchor = panel || container;
|
|
37251
|
+
var aRect = anchor.getBoundingClientRect();
|
|
37252
|
+
var estimateHeight = 120;
|
|
37253
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
37254
|
+
var spaceTop = aRect.top;
|
|
37255
|
+
if (spaceBottom >= estimateHeight + 16) {
|
|
37256
|
+
setTooltipMode('panelBottom');
|
|
37257
|
+
} else if (spaceTop >= estimateHeight + 16) {
|
|
37258
|
+
setTooltipMode('panelTop');
|
|
37259
|
+
} else {
|
|
37260
|
+
setTooltipMode('panelBottom');
|
|
37261
|
+
}
|
|
37262
|
+
};
|
|
37263
|
+
computeMode();
|
|
37264
|
+
window.addEventListener('resize', computeMode);
|
|
37265
|
+
window.addEventListener('scroll', computeMode, true);
|
|
37266
|
+
return function () {
|
|
37267
|
+
window.removeEventListener('resize', computeMode);
|
|
37268
|
+
window.removeEventListener('scroll', computeMode, true);
|
|
37269
|
+
};
|
|
37270
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
37271
|
+
|
|
37272
|
+
// --- Repositionnement fin du tooltip ---
|
|
37273
|
+
useEffect(function () {
|
|
37274
|
+
if (!enableItemTooltip) return undefined;
|
|
37275
|
+
var hoveredRow = null;
|
|
37276
|
+
var reposition = function reposition() {
|
|
37277
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
37278
|
+
if (!tooltipEl) return;
|
|
37279
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
37280
|
+
if (tooltipMode === 'right') {
|
|
37281
|
+
var _hoveredRow;
|
|
37282
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.dropdown-item-info-icon');
|
|
37283
|
+
if (!iconEl) return;
|
|
37284
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
37285
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
37286
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
37287
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
37288
|
+
if (arrowEl) {
|
|
37289
|
+
arrowEl.style.display = '';
|
|
37290
|
+
arrowEl.style.top = '50%';
|
|
37291
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
37292
|
+
}
|
|
37293
|
+
} else {
|
|
37294
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
37295
|
+
if (!panel) return;
|
|
37296
|
+
var pRect = panel.getBoundingClientRect();
|
|
37297
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
37298
|
+
if (tooltipMode === 'panelBottom') {
|
|
37299
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
37300
|
+
} else {
|
|
37301
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
37302
|
+
}
|
|
37303
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
37304
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
37305
|
+
}
|
|
37306
|
+
};
|
|
37307
|
+
var trackHover = function trackHover(e) {
|
|
37308
|
+
var _e$target, _e$target$closest;
|
|
37309
|
+
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');
|
|
37310
|
+
if (row) {
|
|
37311
|
+
hoveredRow = row;
|
|
37312
|
+
requestAnimationFrame(reposition);
|
|
37313
|
+
requestAnimationFrame(function () {
|
|
37314
|
+
return requestAnimationFrame(reposition);
|
|
37315
|
+
});
|
|
37316
|
+
}
|
|
37317
|
+
};
|
|
37318
|
+
document.addEventListener('mouseover', trackHover);
|
|
37319
|
+
return function () {
|
|
37320
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
37321
|
+
};
|
|
37322
|
+
}, [enableItemTooltip, tooltipMode]);
|
|
37226
37323
|
var optionTemplate = function optionTemplate(option) {
|
|
37227
37324
|
var _ref2 = selectMetaConfig || {},
|
|
37228
37325
|
labelStyle = _ref2.labelStyle,
|
|
@@ -37932,6 +38029,15 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
37932
38029
|
hideDelay: 150,
|
|
37933
38030
|
style: {
|
|
37934
38031
|
zIndex: 9999999
|
|
38032
|
+
},
|
|
38033
|
+
pt: {
|
|
38034
|
+
text: {
|
|
38035
|
+
style: {
|
|
38036
|
+
width: tooltipWidth,
|
|
38037
|
+
maxWidth: tooltipWidth,
|
|
38038
|
+
whiteSpace: 'normal'
|
|
38039
|
+
}
|
|
38040
|
+
}
|
|
37935
38041
|
}
|
|
37936
38042
|
}), /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$J({
|
|
37937
38043
|
ref: dropdownComposantRef,
|
|
@@ -38124,6 +38230,8 @@ var Dropdown = function Dropdown(props) {
|
|
|
38124
38230
|
virtualScrollerOptions = props.virtualScrollerOptions,
|
|
38125
38231
|
_props$enableItemTool = props.enableItemTooltip,
|
|
38126
38232
|
enableItemTooltip = _props$enableItemTool === void 0 ? false : _props$enableItemTool,
|
|
38233
|
+
_props$tooltipWidth = props.tooltipWidth,
|
|
38234
|
+
tooltipWidth = _props$tooltipWidth === void 0 ? '220px' : _props$tooltipWidth,
|
|
38127
38235
|
_props$enableItemLink = props.enableItemLink,
|
|
38128
38236
|
enableItemLink = _props$enableItemLink === void 0 ? false : _props$enableItemLink,
|
|
38129
38237
|
_props$openOnHover = props.openOnHover,
|
|
@@ -38176,14 +38284,21 @@ var Dropdown = function Dropdown(props) {
|
|
|
38176
38284
|
_useState0 = _slicedToArray$d(_useState9, 2),
|
|
38177
38285
|
tooltipKey = _useState0[0],
|
|
38178
38286
|
setTooltipKey = _useState0[1];
|
|
38179
|
-
|
|
38287
|
+
// 'right' : à droite du picto i (comportement par défaut)
|
|
38288
|
+
// 'panelBottom' : sous le panel d'options (si pas assez de place à droite)
|
|
38289
|
+
// 'panelTop' : au-dessus du panel d'options (si pas assez de place en bas non plus)
|
|
38290
|
+
var _useState1 = useState('right'),
|
|
38180
38291
|
_useState10 = _slicedToArray$d(_useState1, 2),
|
|
38181
|
-
|
|
38182
|
-
|
|
38183
|
-
var _useState11 = useState(
|
|
38292
|
+
tooltipMode = _useState10[0],
|
|
38293
|
+
setTooltipMode = _useState10[1];
|
|
38294
|
+
var _useState11 = useState(null),
|
|
38184
38295
|
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
38185
|
-
|
|
38186
|
-
|
|
38296
|
+
sortOrder = _useState12[0],
|
|
38297
|
+
setSortOrder = _useState12[1];
|
|
38298
|
+
var _useState13 = useState(false),
|
|
38299
|
+
_useState14 = _slicedToArray$d(_useState13, 2),
|
|
38300
|
+
showRequiredError = _useState14[0],
|
|
38301
|
+
setShowRequiredError = _useState14[1];
|
|
38187
38302
|
|
|
38188
38303
|
// --- Derived values ---
|
|
38189
38304
|
var hasSelection = options.some(function (opt) {
|
|
@@ -38314,6 +38429,100 @@ var Dropdown = function Dropdown(props) {
|
|
|
38314
38429
|
};
|
|
38315
38430
|
}, [enableItemTooltip]);
|
|
38316
38431
|
|
|
38432
|
+
// --- Détection de la place autour du composant / panel ---
|
|
38433
|
+
// Priorité 1 : à droite du picto i (mode 'right')
|
|
38434
|
+
// Priorité 2 : sous le panel d'options (mode 'panelBottom')
|
|
38435
|
+
// Priorité 3 : au-dessus du panel d'options (mode 'panelTop')
|
|
38436
|
+
useEffect(function () {
|
|
38437
|
+
if (!enableItemTooltip) return undefined;
|
|
38438
|
+
var computeMode = function computeMode() {
|
|
38439
|
+
var container = containerRef.current;
|
|
38440
|
+
if (!container) return;
|
|
38441
|
+
var cRect = container.getBoundingClientRect();
|
|
38442
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
38443
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
38444
|
+
if (spaceRight >= tooltipPxWidth + 40) {
|
|
38445
|
+
setTooltipMode('right');
|
|
38446
|
+
return;
|
|
38447
|
+
}
|
|
38448
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
38449
|
+
var anchor = panel || container;
|
|
38450
|
+
var aRect = anchor.getBoundingClientRect();
|
|
38451
|
+
var estimateHeight = 120; // hauteur approximative du tooltip
|
|
38452
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
38453
|
+
var spaceTop = aRect.top;
|
|
38454
|
+
if (spaceBottom >= estimateHeight + 16) {
|
|
38455
|
+
setTooltipMode('panelBottom');
|
|
38456
|
+
} else if (spaceTop >= estimateHeight + 16) {
|
|
38457
|
+
setTooltipMode('panelTop');
|
|
38458
|
+
} else {
|
|
38459
|
+
setTooltipMode('panelBottom');
|
|
38460
|
+
}
|
|
38461
|
+
};
|
|
38462
|
+
computeMode();
|
|
38463
|
+
window.addEventListener('resize', computeMode);
|
|
38464
|
+
window.addEventListener('scroll', computeMode, true);
|
|
38465
|
+
return function () {
|
|
38466
|
+
window.removeEventListener('resize', computeMode);
|
|
38467
|
+
window.removeEventListener('scroll', computeMode, true);
|
|
38468
|
+
};
|
|
38469
|
+
}, [enableItemTooltip, isDropdownOpen, tooltipWidth]);
|
|
38470
|
+
|
|
38471
|
+
// --- Repositionnement fin du tooltip ---
|
|
38472
|
+
// Mode 'right' : la flèche du tooltip pointe précisément sur le picto i.
|
|
38473
|
+
// Modes 'panelBottom' / 'panelTop' : tooltip ancré sous / au-dessus du panel
|
|
38474
|
+
// (une seule position pour tous les items ; flèche masquée).
|
|
38475
|
+
useEffect(function () {
|
|
38476
|
+
if (!enableItemTooltip) return undefined;
|
|
38477
|
+
var hoveredRow = null;
|
|
38478
|
+
var trackHover = function trackHover(e) {
|
|
38479
|
+
var _e$target, _e$target$closest;
|
|
38480
|
+
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');
|
|
38481
|
+
if (row) {
|
|
38482
|
+
hoveredRow = row;
|
|
38483
|
+
requestAnimationFrame(reposition);
|
|
38484
|
+
requestAnimationFrame(function () {
|
|
38485
|
+
return requestAnimationFrame(reposition);
|
|
38486
|
+
});
|
|
38487
|
+
}
|
|
38488
|
+
};
|
|
38489
|
+
var reposition = function reposition() {
|
|
38490
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
38491
|
+
if (!tooltipEl) return;
|
|
38492
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
38493
|
+
if (tooltipMode === 'right') {
|
|
38494
|
+
var _hoveredRow;
|
|
38495
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.dropdown-item-info-icon');
|
|
38496
|
+
if (!iconEl) return;
|
|
38497
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
38498
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
38499
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
38500
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
38501
|
+
if (arrowEl) {
|
|
38502
|
+
arrowEl.style.display = '';
|
|
38503
|
+
arrowEl.style.top = '50%';
|
|
38504
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
38505
|
+
}
|
|
38506
|
+
} else {
|
|
38507
|
+
var panel = document.querySelector('.p-dropdown-panel.p-component');
|
|
38508
|
+
if (!panel) return;
|
|
38509
|
+
var pRect = panel.getBoundingClientRect();
|
|
38510
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
38511
|
+
if (tooltipMode === 'panelBottom') {
|
|
38512
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
38513
|
+
} else {
|
|
38514
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
38515
|
+
}
|
|
38516
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
38517
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
38518
|
+
}
|
|
38519
|
+
};
|
|
38520
|
+
document.addEventListener('mouseover', trackHover);
|
|
38521
|
+
return function () {
|
|
38522
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
38523
|
+
};
|
|
38524
|
+
}, [enableItemTooltip, tooltipMode]);
|
|
38525
|
+
|
|
38317
38526
|
// --- Event handlers ---
|
|
38318
38527
|
var handleShow = function handleShow() {
|
|
38319
38528
|
return setIsDropdownOpen(true);
|
|
@@ -38849,6 +39058,15 @@ var Dropdown = function Dropdown(props) {
|
|
|
38849
39058
|
hideDelay: 150,
|
|
38850
39059
|
style: {
|
|
38851
39060
|
zIndex: 9999999
|
|
39061
|
+
},
|
|
39062
|
+
pt: {
|
|
39063
|
+
text: {
|
|
39064
|
+
style: {
|
|
39065
|
+
width: tooltipWidth,
|
|
39066
|
+
maxWidth: tooltipWidth,
|
|
39067
|
+
whiteSpace: 'normal'
|
|
39068
|
+
}
|
|
39069
|
+
}
|
|
38852
39070
|
}
|
|
38853
39071
|
}), /*#__PURE__*/React__default.createElement("div", _extends$J({}, cleanAttr, {
|
|
38854
39072
|
style: {
|
|
@@ -41791,6 +42009,8 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
41791
42009
|
isSelectMeta = _ref$isSelectMeta === void 0 ? false : _ref$isSelectMeta,
|
|
41792
42010
|
_ref$enableItemToolti = _ref.enableItemTooltip,
|
|
41793
42011
|
enableItemTooltip = _ref$enableItemToolti === void 0 ? false : _ref$enableItemToolti,
|
|
42012
|
+
_ref$tooltipWidth = _ref.tooltipWidth,
|
|
42013
|
+
tooltipWidth = _ref$tooltipWidth === void 0 ? '220px' : _ref$tooltipWidth,
|
|
41794
42014
|
_ref$enableItemLink = _ref.enableItemLink,
|
|
41795
42015
|
enableItemLink = _ref$enableItemLink === void 0 ? false : _ref$enableItemLink,
|
|
41796
42016
|
_ref$enableSecondaryL = _ref.enableSecondaryLabel,
|
|
@@ -41862,30 +42082,37 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
41862
42082
|
_useState8 = _slicedToArray$d(_useState7, 2),
|
|
41863
42083
|
tooltipKey = _useState8[0],
|
|
41864
42084
|
setTooltipKey = _useState8[1];
|
|
41865
|
-
|
|
42085
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
42086
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
42087
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
42088
|
+
var _useState9 = useState('right'),
|
|
41866
42089
|
_useState0 = _slicedToArray$d(_useState9, 2),
|
|
41867
|
-
|
|
41868
|
-
|
|
41869
|
-
var _useState1 = useState(
|
|
42090
|
+
tooltipMode = _useState0[0],
|
|
42091
|
+
setTooltipMode = _useState0[1];
|
|
42092
|
+
var _useState1 = useState(null),
|
|
41870
42093
|
_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
|
-
|
|
42094
|
+
sortOrder = _useState10[0],
|
|
42095
|
+
setSortOrder = _useState10[1];
|
|
42096
|
+
var _useState11 = useState([]),
|
|
42097
|
+
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
42098
|
+
collapsedGroups = _useState12[0],
|
|
42099
|
+
setCollapsedGroups = _useState12[1];
|
|
42100
|
+
var _useState13 = useState(value !== null && value !== void 0 ? value : []),
|
|
42101
|
+
_useState14 = _slicedToArray$d(_useState13, 2);
|
|
42102
|
+
_useState14[0];
|
|
42103
|
+
_useState14[1];
|
|
42104
|
+
var _useState15 = useState(null),
|
|
42105
|
+
_useState16 = _slicedToArray$d(_useState15, 2),
|
|
42106
|
+
displayValue = _useState16[0],
|
|
42107
|
+
setDisplayValue = _useState16[1];
|
|
41881
42108
|
var isOptionsArray = Array.isArray(options) && !optionsUrl;
|
|
41882
42109
|
var hasMoreRef = useRef(true);
|
|
41883
42110
|
var effectiveReadOnly = Boolean(readOnly);
|
|
41884
42111
|
var applyEnabled = typeof onApply === 'function';
|
|
41885
|
-
var
|
|
41886
|
-
|
|
41887
|
-
showRequiredError =
|
|
41888
|
-
setShowRequiredError =
|
|
42112
|
+
var _useState17 = useState(false),
|
|
42113
|
+
_useState18 = _slicedToArray$d(_useState17, 2),
|
|
42114
|
+
showRequiredError = _useState18[0],
|
|
42115
|
+
setShowRequiredError = _useState18[1];
|
|
41889
42116
|
var hasSelection = Array.isArray(selectedOptions) && selectedOptions.length > 0;
|
|
41890
42117
|
var isError = Boolean(invalid || status === 'error' || showRequiredError);
|
|
41891
42118
|
var isInvalidEffective = Boolean(isError && !hasSelection);
|
|
@@ -42217,6 +42444,94 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
42217
42444
|
return observer.disconnect();
|
|
42218
42445
|
};
|
|
42219
42446
|
}, [enableItemTooltip]);
|
|
42447
|
+
|
|
42448
|
+
// --- Détection de la place autour du composant / panel ---
|
|
42449
|
+
useEffect(function () {
|
|
42450
|
+
if (!enableItemTooltip) return undefined;
|
|
42451
|
+
var computeMode = function computeMode() {
|
|
42452
|
+
var container = containerRef.current;
|
|
42453
|
+
if (!container) return;
|
|
42454
|
+
var cRect = container.getBoundingClientRect();
|
|
42455
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
42456
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
42457
|
+
if (spaceRight >= tooltipPxWidth + 40) {
|
|
42458
|
+
setTooltipMode('right');
|
|
42459
|
+
return;
|
|
42460
|
+
}
|
|
42461
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
42462
|
+
var anchor = panel || container;
|
|
42463
|
+
var aRect = anchor.getBoundingClientRect();
|
|
42464
|
+
var estimateHeight = 120;
|
|
42465
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
42466
|
+
var spaceTop = aRect.top;
|
|
42467
|
+
if (spaceBottom >= estimateHeight + 16) {
|
|
42468
|
+
setTooltipMode('panelBottom');
|
|
42469
|
+
} else if (spaceTop >= estimateHeight + 16) {
|
|
42470
|
+
setTooltipMode('panelTop');
|
|
42471
|
+
} else {
|
|
42472
|
+
setTooltipMode('panelBottom');
|
|
42473
|
+
}
|
|
42474
|
+
};
|
|
42475
|
+
computeMode();
|
|
42476
|
+
window.addEventListener('resize', computeMode);
|
|
42477
|
+
window.addEventListener('scroll', computeMode, true);
|
|
42478
|
+
return function () {
|
|
42479
|
+
window.removeEventListener('resize', computeMode);
|
|
42480
|
+
window.removeEventListener('scroll', computeMode, true);
|
|
42481
|
+
};
|
|
42482
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
42483
|
+
|
|
42484
|
+
// --- Repositionnement fin du tooltip ---
|
|
42485
|
+
useEffect(function () {
|
|
42486
|
+
if (!enableItemTooltip) return undefined;
|
|
42487
|
+
var hoveredRow = null;
|
|
42488
|
+
var reposition = function reposition() {
|
|
42489
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
42490
|
+
if (!tooltipEl) return;
|
|
42491
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
42492
|
+
if (tooltipMode === 'right') {
|
|
42493
|
+
var _hoveredRow;
|
|
42494
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.multiselect-item-info-icon');
|
|
42495
|
+
if (!iconEl) return;
|
|
42496
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
42497
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
42498
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
42499
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
42500
|
+
if (arrowEl) {
|
|
42501
|
+
arrowEl.style.display = '';
|
|
42502
|
+
arrowEl.style.top = '50%';
|
|
42503
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
42504
|
+
}
|
|
42505
|
+
} else {
|
|
42506
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
42507
|
+
if (!panel) return;
|
|
42508
|
+
var pRect = panel.getBoundingClientRect();
|
|
42509
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
42510
|
+
if (tooltipMode === 'panelBottom') {
|
|
42511
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
42512
|
+
} else {
|
|
42513
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
42514
|
+
}
|
|
42515
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
42516
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
42517
|
+
}
|
|
42518
|
+
};
|
|
42519
|
+
var trackHover = function trackHover(e) {
|
|
42520
|
+
var _e$target, _e$target$closest;
|
|
42521
|
+
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');
|
|
42522
|
+
if (row) {
|
|
42523
|
+
hoveredRow = row;
|
|
42524
|
+
requestAnimationFrame(reposition);
|
|
42525
|
+
requestAnimationFrame(function () {
|
|
42526
|
+
return requestAnimationFrame(reposition);
|
|
42527
|
+
});
|
|
42528
|
+
}
|
|
42529
|
+
};
|
|
42530
|
+
document.addEventListener('mouseover', trackHover);
|
|
42531
|
+
return function () {
|
|
42532
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
42533
|
+
};
|
|
42534
|
+
}, [enableItemTooltip, tooltipMode]);
|
|
42220
42535
|
var inverseColor = function inverseColor(hexColor) {
|
|
42221
42536
|
if (!hexColor || !hexColor.startsWith('#')) return '#000000';
|
|
42222
42537
|
var hex = hexColor;
|
|
@@ -42891,11 +43206,20 @@ var MultiSelectMetaAsync = function MultiSelectMetaAsync(_ref) {
|
|
|
42891
43206
|
key: tooltipKey,
|
|
42892
43207
|
target: ".multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger",
|
|
42893
43208
|
appendTo: document.body,
|
|
42894
|
-
position: "
|
|
43209
|
+
position: "right",
|
|
42895
43210
|
autoHide: false,
|
|
42896
43211
|
hideDelay: 150,
|
|
42897
43212
|
style: {
|
|
42898
43213
|
zIndex: '9999999'
|
|
43214
|
+
},
|
|
43215
|
+
pt: {
|
|
43216
|
+
text: {
|
|
43217
|
+
style: {
|
|
43218
|
+
width: tooltipWidth,
|
|
43219
|
+
maxWidth: tooltipWidth,
|
|
43220
|
+
whiteSpace: 'normal'
|
|
43221
|
+
}
|
|
43222
|
+
}
|
|
42899
43223
|
}
|
|
42900
43224
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
42901
43225
|
style: {
|
|
@@ -43236,6 +43560,8 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43236
43560
|
enableGroupSelect = _props$enableGroupSel === void 0 ? false : _props$enableGroupSel,
|
|
43237
43561
|
_props$enableItemTool = props.enableItemTooltip,
|
|
43238
43562
|
enableItemTooltip = _props$enableItemTool === void 0 ? false : _props$enableItemTool,
|
|
43563
|
+
_props$tooltipWidth = props.tooltipWidth,
|
|
43564
|
+
tooltipWidth = _props$tooltipWidth === void 0 ? '220px' : _props$tooltipWidth,
|
|
43239
43565
|
_props$enableItemLink = props.enableItemLink,
|
|
43240
43566
|
enableItemLink = _props$enableItemLink === void 0 ? false : _props$enableItemLink,
|
|
43241
43567
|
_props$openOnHover = props.openOnHover,
|
|
@@ -43289,17 +43615,24 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43289
43615
|
_useState0 = _slicedToArray$d(_useState9, 2),
|
|
43290
43616
|
tooltipKey = _useState0[0],
|
|
43291
43617
|
setTooltipKey = _useState0[1];
|
|
43618
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
43619
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
43620
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
43621
|
+
var _useState1 = useState('right'),
|
|
43622
|
+
_useState10 = _slicedToArray$d(_useState1, 2),
|
|
43623
|
+
tooltipMode = _useState10[0],
|
|
43624
|
+
setTooltipMode = _useState10[1];
|
|
43292
43625
|
var multiSelectRef = useRef(null);
|
|
43293
43626
|
var containerRef = useRef(null);
|
|
43294
43627
|
var didMountRef = useRef(false);
|
|
43295
|
-
var
|
|
43296
|
-
_useState10 = _slicedToArray$d(_useState1, 2),
|
|
43297
|
-
sortOrder = _useState10[0],
|
|
43298
|
-
setSortOrder = _useState10[1];
|
|
43299
|
-
var _useState11 = useState([]),
|
|
43628
|
+
var _useState11 = useState(null),
|
|
43300
43629
|
_useState12 = _slicedToArray$d(_useState11, 2),
|
|
43301
|
-
|
|
43302
|
-
|
|
43630
|
+
sortOrder = _useState12[0],
|
|
43631
|
+
setSortOrder = _useState12[1];
|
|
43632
|
+
var _useState13 = useState([]),
|
|
43633
|
+
_useState14 = _slicedToArray$d(_useState13, 2),
|
|
43634
|
+
collapsedGroups = _useState14[0],
|
|
43635
|
+
setCollapsedGroups = _useState14[1];
|
|
43303
43636
|
useEffect(function () {
|
|
43304
43637
|
if (!didMountRef.current) {
|
|
43305
43638
|
didMountRef.current = true;
|
|
@@ -43743,6 +44076,99 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
43743
44076
|
return observer.disconnect();
|
|
43744
44077
|
};
|
|
43745
44078
|
}, [enableItemTooltip]);
|
|
44079
|
+
|
|
44080
|
+
// --- Détection de la place autour du composant / panel ---
|
|
44081
|
+
// Priorité 1 : à droite du picto i (mode 'right')
|
|
44082
|
+
// Priorité 2 : sous le panel d'options (mode 'panelBottom')
|
|
44083
|
+
// Priorité 3 : au-dessus du panel d'options (mode 'panelTop')
|
|
44084
|
+
useEffect(function () {
|
|
44085
|
+
if (!enableItemTooltip) return undefined;
|
|
44086
|
+
var computeMode = function computeMode() {
|
|
44087
|
+
var container = containerRef.current;
|
|
44088
|
+
if (!container) return;
|
|
44089
|
+
var cRect = container.getBoundingClientRect();
|
|
44090
|
+
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
44091
|
+
var spaceRight = window.innerWidth - cRect.right;
|
|
44092
|
+
if (spaceRight >= tooltipPxWidth + 40) {
|
|
44093
|
+
setTooltipMode('right');
|
|
44094
|
+
return;
|
|
44095
|
+
}
|
|
44096
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
44097
|
+
var anchor = panel || container;
|
|
44098
|
+
var aRect = anchor.getBoundingClientRect();
|
|
44099
|
+
var estimateHeight = 120;
|
|
44100
|
+
var spaceBottom = window.innerHeight - aRect.bottom;
|
|
44101
|
+
var spaceTop = aRect.top;
|
|
44102
|
+
if (spaceBottom >= estimateHeight + 16) {
|
|
44103
|
+
setTooltipMode('panelBottom');
|
|
44104
|
+
} else if (spaceTop >= estimateHeight + 16) {
|
|
44105
|
+
setTooltipMode('panelTop');
|
|
44106
|
+
} else {
|
|
44107
|
+
setTooltipMode('panelBottom');
|
|
44108
|
+
}
|
|
44109
|
+
};
|
|
44110
|
+
computeMode();
|
|
44111
|
+
window.addEventListener('resize', computeMode);
|
|
44112
|
+
window.addEventListener('scroll', computeMode, true);
|
|
44113
|
+
return function () {
|
|
44114
|
+
window.removeEventListener('resize', computeMode);
|
|
44115
|
+
window.removeEventListener('scroll', computeMode, true);
|
|
44116
|
+
};
|
|
44117
|
+
}, [enableItemTooltip, tooltipWidth]);
|
|
44118
|
+
|
|
44119
|
+
// --- Repositionnement fin du tooltip ---
|
|
44120
|
+
// Mode 'right' : la flèche pointe précisément sur le picto i survolé.
|
|
44121
|
+
// Modes 'panelBottom' / 'panelTop' : tooltip unique ancré sous / au-dessus du panel.
|
|
44122
|
+
useEffect(function () {
|
|
44123
|
+
if (!enableItemTooltip) return undefined;
|
|
44124
|
+
var hoveredRow = null;
|
|
44125
|
+
var reposition = function reposition() {
|
|
44126
|
+
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
44127
|
+
if (!tooltipEl) return;
|
|
44128
|
+
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
44129
|
+
if (tooltipMode === 'right') {
|
|
44130
|
+
var _hoveredRow;
|
|
44131
|
+
var iconEl = (_hoveredRow = hoveredRow) === null || _hoveredRow === void 0 ? void 0 : _hoveredRow.querySelector('.multiselect-item-info-icon');
|
|
44132
|
+
if (!iconEl) return;
|
|
44133
|
+
var iconRect = iconEl.getBoundingClientRect();
|
|
44134
|
+
var tt = tooltipEl.getBoundingClientRect();
|
|
44135
|
+
tooltipEl.style.top = "".concat(iconRect.top + iconRect.height / 2 - tt.height / 2 + window.scrollY, "px");
|
|
44136
|
+
tooltipEl.style.left = "".concat(iconRect.right + 12 + window.scrollX, "px");
|
|
44137
|
+
if (arrowEl) {
|
|
44138
|
+
arrowEl.style.display = '';
|
|
44139
|
+
arrowEl.style.top = '50%';
|
|
44140
|
+
arrowEl.style.marginTop = '-0.25rem';
|
|
44141
|
+
}
|
|
44142
|
+
} else {
|
|
44143
|
+
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
44144
|
+
if (!panel) return;
|
|
44145
|
+
var pRect = panel.getBoundingClientRect();
|
|
44146
|
+
var _tt = tooltipEl.getBoundingClientRect();
|
|
44147
|
+
if (tooltipMode === 'panelBottom') {
|
|
44148
|
+
tooltipEl.style.top = "".concat(pRect.bottom + 8 + window.scrollY, "px");
|
|
44149
|
+
} else {
|
|
44150
|
+
tooltipEl.style.top = "".concat(pRect.top - _tt.height - 8 + window.scrollY, "px");
|
|
44151
|
+
}
|
|
44152
|
+
tooltipEl.style.left = "".concat(pRect.left + window.scrollX, "px");
|
|
44153
|
+
if (arrowEl) arrowEl.style.display = 'none';
|
|
44154
|
+
}
|
|
44155
|
+
};
|
|
44156
|
+
var trackHover = function trackHover(e) {
|
|
44157
|
+
var _e$target, _e$target$closest;
|
|
44158
|
+
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');
|
|
44159
|
+
if (row) {
|
|
44160
|
+
hoveredRow = row;
|
|
44161
|
+
requestAnimationFrame(reposition);
|
|
44162
|
+
requestAnimationFrame(function () {
|
|
44163
|
+
return requestAnimationFrame(reposition);
|
|
44164
|
+
});
|
|
44165
|
+
}
|
|
44166
|
+
};
|
|
44167
|
+
document.addEventListener('mouseover', trackHover);
|
|
44168
|
+
return function () {
|
|
44169
|
+
return document.removeEventListener('mouseover', trackHover);
|
|
44170
|
+
};
|
|
44171
|
+
}, [enableItemTooltip, tooltipMode]);
|
|
43746
44172
|
var handleChange = function handleChange(e) {
|
|
43747
44173
|
if (disabled || effectiveReadOnly) return;
|
|
43748
44174
|
var ids = Array.isArray(e.value) ? e.value : [e.value];
|
|
@@ -44197,11 +44623,20 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
44197
44623
|
key: tooltipKey,
|
|
44198
44624
|
target: ".multiselect-tooltip-item, .multiselect-tooltip-trigger, .multiselect-selected-tooltip-trigger",
|
|
44199
44625
|
appendTo: document.body,
|
|
44200
|
-
position: "
|
|
44626
|
+
position: "right",
|
|
44201
44627
|
autoHide: false,
|
|
44202
44628
|
hideDelay: 150,
|
|
44203
44629
|
style: {
|
|
44204
44630
|
zIndex: '9999999'
|
|
44631
|
+
},
|
|
44632
|
+
pt: {
|
|
44633
|
+
text: {
|
|
44634
|
+
style: {
|
|
44635
|
+
width: tooltipWidth,
|
|
44636
|
+
maxWidth: tooltipWidth,
|
|
44637
|
+
whiteSpace: 'normal'
|
|
44638
|
+
}
|
|
44639
|
+
}
|
|
44205
44640
|
}
|
|
44206
44641
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
44207
44642
|
style: {
|