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.
Files changed (2) hide show
  1. package/dist/index.js +481 -46
  2. 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
- var _useState13 = useState(null),
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
- sortOrder = _useState14[0],
37165
- setSortOrder = _useState14[1];
37166
- var _useState15 = useState(false),
37169
+ tooltipMode = _useState14[0],
37170
+ setTooltipMode = _useState14[1];
37171
+ var _useState15 = useState(null),
37167
37172
  _useState16 = _slicedToArray$d(_useState15, 2),
37168
- isDropdownOpen = _useState16[0],
37169
- setIsDropdownOpen = _useState16[1];
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
- selectedGroupLabel = _useState18[0],
37173
- setSelectedGroupLabel = _useState18[1];
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 _useState19 = useState(false),
37177
- _useState20 = _slicedToArray$d(_useState19, 2),
37178
- loading = _useState20[0],
37179
- setLoading = _useState20[1];
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
- var _useState1 = useState(null),
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
- sortOrder = _useState10[0],
38182
- setSortOrder = _useState10[1];
38183
- var _useState11 = useState(false),
38292
+ tooltipMode = _useState10[0],
38293
+ setTooltipMode = _useState10[1];
38294
+ var _useState11 = useState(null),
38184
38295
  _useState12 = _slicedToArray$d(_useState11, 2),
38185
- showRequiredError = _useState12[0],
38186
- setShowRequiredError = _useState12[1];
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
- var _useState9 = useState(null),
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
- sortOrder = _useState0[0],
41868
- setSortOrder = _useState0[1];
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
- collapsedGroups = _useState10[0],
41872
- setCollapsedGroups = _useState10[1];
41873
- var _useState11 = useState(value !== null && value !== void 0 ? value : []),
41874
- _useState12 = _slicedToArray$d(_useState11, 2);
41875
- _useState12[0];
41876
- _useState12[1];
41877
- var _useState13 = useState(null),
41878
- _useState14 = _slicedToArray$d(_useState13, 2),
41879
- displayValue = _useState14[0],
41880
- setDisplayValue = _useState14[1];
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 _useState15 = useState(false),
41886
- _useState16 = _slicedToArray$d(_useState15, 2),
41887
- showRequiredError = _useState16[0],
41888
- setShowRequiredError = _useState16[1];
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: "top",
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 _useState1 = useState(null),
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
- collapsedGroups = _useState12[0],
43302
- setCollapsedGroups = _useState12[1];
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: "top",
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: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arengibook",
3
3
  "private": false,
4
- "version": "3.1.51-itemWithTooltip",
4
+ "version": "3.1.52-itemWithTooltip",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "exports": {