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.
Files changed (2) hide show
  1. package/dist/index.js +419 -49
  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 ? '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
- var _useState13 = useState(null),
37163
- _useState14 = _slicedToArray$d(_useState13, 2),
37164
- sortOrder = _useState14[0],
37165
- setSortOrder = _useState14[1];
37166
- var _useState15 = useState(false),
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
- 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,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
- var _useState1 = useState(null),
38180
- _useState10 = _slicedToArray$d(_useState1, 2),
38181
- sortOrder = _useState10[0],
38182
- setSortOrder = _useState10[1];
38183
- var _useState11 = useState(false),
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
- showRequiredError = _useState12[0],
38186
- setShowRequiredError = _useState12[1];
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
- var _useState9 = useState(null),
41866
- _useState0 = _slicedToArray$d(_useState9, 2),
41867
- sortOrder = _useState0[0],
41868
- setSortOrder = _useState0[1];
41869
- var _useState1 = useState([]),
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
- 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];
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 _useState15 = useState(false),
41886
- _useState16 = _slicedToArray$d(_useState15, 2),
41887
- showRequiredError = _useState16[0],
41888
- setShowRequiredError = _useState16[1];
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: "top",
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 _useState1 = useState(null),
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
- collapsedGroups = _useState12[0],
43302
- setCollapsedGroups = _useState12[1];
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: "top",
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: {
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.53-itemWithTooltip",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "exports": {