arengibook 3.3.6-table-required → 3.3.8-main
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/README.md +1 -1
- package/dist/index.js +188 -186
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ généré automatiquement.
|
|
|
22
22
|
| [`docs/integration-symfony.md`](docs/integration-symfony.md) | intégrateurs (arengibox) | Montage des composants depuis Twig, helpers `arengibookEnhance`/`arengibookRemount`, pièges connus |
|
|
23
23
|
| [`CHANGELOG.md`](CHANGELOG.md) | tous | Ce que contient chaque version publiée |
|
|
24
24
|
| [`TODO_DESIGN.md`](TODO_DESIGN.md) | devs de la bibliothèque | Backlog des améliorations de composants |
|
|
25
|
-
| `Table
|
|
25
|
+
| Page Docs du `Table` (Storybook) | chefs de projet, intégrateurs | Documentation complète du composant `Table` (le plus utilisé) : onglets Doc, Implémentation, Intégration Symfony |
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
package/dist/index.js
CHANGED
|
@@ -83,7 +83,6 @@ var MESSAGES = {
|
|
|
83
83
|
'arengibook.table.reorder.disabledSort': 'Réordonnancement indisponible : tri actif sur « %col% ». Retirez le tri pour réordonner.',
|
|
84
84
|
'arengibook.table.reorder.disabledFilter': 'Réordonnancement indisponible : un filtre est actif. Retirez le filtre pour réordonner.',
|
|
85
85
|
'arengibook.table.bulk.button': 'Actions groupées',
|
|
86
|
-
'arengibook.table.column.readOnly': 'Colonne en lecture seule',
|
|
87
86
|
'arengibook.table.bulk.empty': 'Sélectionnez au moins une ligne',
|
|
88
87
|
'arengibook.table.bulk.count': '%n% ligne(s) sélectionnée(s)',
|
|
89
88
|
'arengibook.table.selectionFilter.tooltip': 'N\'afficher que les lignes cochées ou non cochées',
|
|
@@ -166,7 +165,6 @@ var MESSAGES = {
|
|
|
166
165
|
'arengibook.table.reorder.disabledSort': 'Reordering unavailable: sorted by "%col%". Remove the sort to reorder.',
|
|
167
166
|
'arengibook.table.reorder.disabledFilter': 'Reordering unavailable: a filter is active. Remove the filter to reorder.',
|
|
168
167
|
'arengibook.table.bulk.button': 'Bulk actions',
|
|
169
|
-
'arengibook.table.column.readOnly': 'Read-only column',
|
|
170
168
|
'arengibook.table.bulk.empty': 'Select at least one row',
|
|
171
169
|
'arengibook.table.bulk.count': '%n% row(s) selected',
|
|
172
170
|
'arengibook.table.selectionFilter.tooltip': 'Show only checked or unchecked rows',
|
|
@@ -249,7 +247,6 @@ var MESSAGES = {
|
|
|
249
247
|
'arengibook.table.reorder.disabledSort': 'Reordenamiento no disponible: ordenado por «%col%». Quite el orden para reordenar.',
|
|
250
248
|
'arengibook.table.reorder.disabledFilter': 'Reordenamiento no disponible: hay un filtro activo. Quite el filtro para reordenar.',
|
|
251
249
|
'arengibook.table.bulk.button': 'Acciones masivas',
|
|
252
|
-
'arengibook.table.column.readOnly': 'Columna de solo lectura',
|
|
253
250
|
'arengibook.table.bulk.empty': 'Seleccione al menos una fila',
|
|
254
251
|
'arengibook.table.bulk.count': '%n% fila(s) seleccionada(s)',
|
|
255
252
|
'arengibook.table.selectionFilter.tooltip': 'Mostrar solo las filas marcadas o no marcadas',
|
|
@@ -332,7 +329,6 @@ var MESSAGES = {
|
|
|
332
329
|
'arengibook.table.reorder.disabledSort': 'Neuordnen nicht möglich: sortiert nach „%col%". Sortierung entfernen zum Neuordnen.',
|
|
333
330
|
'arengibook.table.reorder.disabledFilter': 'Neuordnen nicht möglich: ein Filter ist aktiv. Filter entfernen zum Neuordnen.',
|
|
334
331
|
'arengibook.table.bulk.button': 'Sammelaktionen',
|
|
335
|
-
'arengibook.table.column.readOnly': 'Schreibgeschützte Spalte',
|
|
336
332
|
'arengibook.table.bulk.empty': 'Wählen Sie mindestens eine Zeile aus',
|
|
337
333
|
'arengibook.table.bulk.count': '%n% Zeile(n) ausgewählt',
|
|
338
334
|
'arengibook.table.selectionFilter.tooltip': 'Nur markierte oder nicht markierte Zeilen anzeigen',
|
|
@@ -38978,6 +38974,89 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
|
|
|
38978
38974
|
}, errorMessage || (showRequiredError ? ((_window$Translator = window.Translator) === null || _window$Translator === void 0 ? void 0 : _window$Translator.trans('error.required')) || 'Veuillez renseigner ce champ' : ((_window$Translator2 = window.Translator) === null || _window$Translator2 === void 0 ? void 0 : _window$Translator2.trans('error.invalid_selection')) || 'Sélection invalide'))));
|
|
38979
38975
|
};
|
|
38980
38976
|
|
|
38977
|
+
// Outils communs aux infobulles des selects (Dropdown, MultiSelect).
|
|
38978
|
+
//
|
|
38979
|
+
// Une page peut monter plus d'une centaine de selects (questionnaire d'évaluation :
|
|
38980
|
+
// 136). Tout ce qu'un select installe au niveau du document est donc multiplié
|
|
38981
|
+
// d'autant : un MutationObserver par instance sur document.body suffisait à faire
|
|
38982
|
+
// coûter ~50 ms à la moindre modification du DOM. Ce qui est global est ici partagé,
|
|
38983
|
+
// et ce qui est propre à une instance est restreint à ses propres éléments.
|
|
38984
|
+
|
|
38985
|
+
var scopeCounter = 0;
|
|
38986
|
+
|
|
38987
|
+
// Classe CSS unique par instance, posée sur la racine du composant et sur son panneau
|
|
38988
|
+
// (rattaché au body) : les `<Tooltip target>` ne visent plus que les éléments de
|
|
38989
|
+
// l'instance, au lieu de tous ceux de la page (une infobulle par select pour la même
|
|
38990
|
+
// option, et autant d'écouteurs posés sur chaque élément).
|
|
38991
|
+
var useTooltipScope = function useTooltipScope(prefix) {
|
|
38992
|
+
var ref = useRef(null);
|
|
38993
|
+
if (ref.current === null) {
|
|
38994
|
+
scopeCounter += 1;
|
|
38995
|
+
ref.current = "".concat(prefix, "-").concat(scopeCounter);
|
|
38996
|
+
}
|
|
38997
|
+
return ref.current;
|
|
38998
|
+
};
|
|
38999
|
+
|
|
39000
|
+
// `.scope .a, .scope .b` à partir de ['.a', '.b'].
|
|
39001
|
+
var scopeSelector = function scopeSelector(scope, selectors) {
|
|
39002
|
+
return selectors.map(function (s) {
|
|
39003
|
+
return ".".concat(scope, " ").concat(s);
|
|
39004
|
+
}).join(', ');
|
|
39005
|
+
};
|
|
39006
|
+
|
|
39007
|
+
// --- Tooltip HTML support ---
|
|
39008
|
+
// PrimeReact 10 ignore la prop `escape` : sa Tooltip écrit toujours via
|
|
39009
|
+
// createTextNode. Un MutationObserver convertit le texte contenant du HTML en
|
|
39010
|
+
// innerHTML rendu — nécessaire car le tooltip est réutilisé (onShow ne se déclenche
|
|
39011
|
+
// pas lors du changement de cible pendant que le tooltip est déjà visible).
|
|
39012
|
+
// Un seul observer pour toute la page, quel que soit le nombre de selects, et il
|
|
39013
|
+
// n'examine que les nœuds touchés au lieu de rescanner tout le document.
|
|
39014
|
+
var HTML_RE = /<[a-z][\s\S]*>/i;
|
|
39015
|
+
var rewriteTooltipText = function rewriteTooltipText(el) {
|
|
39016
|
+
var raw = el.textContent;
|
|
39017
|
+
if (raw && HTML_RE.test(raw) && el.innerHTML !== raw) {
|
|
39018
|
+
el.innerHTML = raw;
|
|
39019
|
+
}
|
|
39020
|
+
};
|
|
39021
|
+
var handleMutations = function handleMutations(mutations) {
|
|
39022
|
+
mutations.forEach(function (mutation) {
|
|
39023
|
+
var _target$closest;
|
|
39024
|
+
var target = mutation.target.nodeType === 1 ? mutation.target : mutation.target.parentElement;
|
|
39025
|
+
var text = target === null || target === void 0 || (_target$closest = target.closest) === null || _target$closest === void 0 ? void 0 : _target$closest.call(target, '.p-tooltip-text');
|
|
39026
|
+
if (text) {
|
|
39027
|
+
rewriteTooltipText(text);
|
|
39028
|
+
return;
|
|
39029
|
+
}
|
|
39030
|
+
mutation.addedNodes.forEach(function (node) {
|
|
39031
|
+
if (node.nodeType !== 1) return;
|
|
39032
|
+
if (node.matches('.p-tooltip-text')) rewriteTooltipText(node);else node.querySelectorAll('.p-tooltip-text').forEach(rewriteTooltipText);
|
|
39033
|
+
});
|
|
39034
|
+
});
|
|
39035
|
+
};
|
|
39036
|
+
var htmlObserver = null;
|
|
39037
|
+
var htmlObserverUsers = 0;
|
|
39038
|
+
var useTooltipHtmlRewrite = function useTooltipHtmlRewrite(enabled) {
|
|
39039
|
+
useEffect(function () {
|
|
39040
|
+
if (!enabled) return undefined;
|
|
39041
|
+
htmlObserverUsers += 1;
|
|
39042
|
+
if (!htmlObserver) {
|
|
39043
|
+
htmlObserver = new MutationObserver(handleMutations);
|
|
39044
|
+
htmlObserver.observe(document.body, {
|
|
39045
|
+
childList: true,
|
|
39046
|
+
subtree: true,
|
|
39047
|
+
characterData: true
|
|
39048
|
+
});
|
|
39049
|
+
}
|
|
39050
|
+
return function () {
|
|
39051
|
+
htmlObserverUsers -= 1;
|
|
39052
|
+
if (htmlObserverUsers === 0 && htmlObserver) {
|
|
39053
|
+
htmlObserver.disconnect();
|
|
39054
|
+
htmlObserver = null;
|
|
39055
|
+
}
|
|
39056
|
+
};
|
|
39057
|
+
}, [enabled]);
|
|
39058
|
+
};
|
|
39059
|
+
|
|
38981
39060
|
var _excluded$1 = ["class"],
|
|
38982
39061
|
_excluded2$1 = ["style", "className"];
|
|
38983
39062
|
var Dropdown = function Dropdown(props) {
|
|
@@ -39140,13 +39219,12 @@ var Dropdown = function Dropdown(props) {
|
|
|
39140
39219
|
_useState10 = _slicedToArray$b(_useState1, 2),
|
|
39141
39220
|
tooltipKey = _useState10[0],
|
|
39142
39221
|
setTooltipKey = _useState10[1];
|
|
39143
|
-
//
|
|
39144
|
-
|
|
39145
|
-
|
|
39146
|
-
|
|
39147
|
-
|
|
39148
|
-
_useState12[
|
|
39149
|
-
var setTooltipMode = _useState12[1];
|
|
39222
|
+
// Portée des infobulles : cf. useTooltipScope
|
|
39223
|
+
var tooltipScope = useTooltipScope('ab-dd');
|
|
39224
|
+
var _useState11 = useState(false),
|
|
39225
|
+
_useState12 = _slicedToArray$b(_useState11, 2),
|
|
39226
|
+
isPanelOpen = _useState12[0],
|
|
39227
|
+
setIsPanelOpen = _useState12[1];
|
|
39150
39228
|
var _useState13 = useState(null),
|
|
39151
39229
|
_useState14 = _slicedToArray$b(_useState13, 2),
|
|
39152
39230
|
sortOrder = _useState14[0],
|
|
@@ -39262,40 +39340,20 @@ var Dropdown = function Dropdown(props) {
|
|
|
39262
39340
|
return label.slice(0, truncateAt) + '…';
|
|
39263
39341
|
};
|
|
39264
39342
|
|
|
39265
|
-
// --- Tooltip HTML support ---
|
|
39266
|
-
|
|
39267
|
-
// createTextNode. Un MutationObserver global rescande les `.p-tooltip-text`
|
|
39268
|
-
// pour convertir le texte contenant du HTML en innerHTML rendu.
|
|
39269
|
-
// On l'installe une seule fois côté document.body, indépendamment du montage
|
|
39270
|
-
// des composants — car onShow ne se déclenche pas lors du changement de
|
|
39271
|
-
// cible pendant que le tooltip est déjà visible.
|
|
39272
|
-
useEffect(function () {
|
|
39273
|
-
if (!enableItemTooltip) return undefined;
|
|
39274
|
-
var rewrite = function rewrite() {
|
|
39275
|
-
document.querySelectorAll('.p-tooltip .p-tooltip-text').forEach(function (el) {
|
|
39276
|
-
var raw = el.textContent;
|
|
39277
|
-
if (raw && /<[a-z][\s\S]*>/i.test(raw) && el.innerHTML !== raw) {
|
|
39278
|
-
el.innerHTML = raw;
|
|
39279
|
-
}
|
|
39280
|
-
});
|
|
39281
|
-
};
|
|
39282
|
-
var observer = new MutationObserver(rewrite);
|
|
39283
|
-
observer.observe(document.body, {
|
|
39284
|
-
childList: true,
|
|
39285
|
-
subtree: true,
|
|
39286
|
-
characterData: true
|
|
39287
|
-
});
|
|
39288
|
-
return function () {
|
|
39289
|
-
return observer.disconnect();
|
|
39290
|
-
};
|
|
39291
|
-
}, [enableItemTooltip]);
|
|
39343
|
+
// --- Tooltip HTML support --- (un seul observer pour toute la page)
|
|
39344
|
+
useTooltipHtmlRewrite(enableItemTooltip);
|
|
39292
39345
|
|
|
39293
39346
|
// --- Repositionnement fin du tooltip ---
|
|
39294
39347
|
// La détection du mode ('right' / 'panelBottom' / 'panelTop') est refaite
|
|
39295
39348
|
// à chaque survol : la mesure reste à jour en intégration réelle même si
|
|
39296
39349
|
// le layout a changé après le montage (scroll ancêtre, resize parent…).
|
|
39350
|
+
// Écouteur posé seulement panneau ouvert : sinon chaque select de la page
|
|
39351
|
+
// recalculait la position à chaque survol de n'importe quel élément.
|
|
39352
|
+
// 'right' : à droite du picto i (comportement par défaut)
|
|
39353
|
+
// 'panelBottom' : sous le panel d'options (si pas assez de place à droite)
|
|
39354
|
+
// 'panelTop' : au-dessus du panel d'options (si pas assez de place en bas non plus)
|
|
39297
39355
|
useEffect(function () {
|
|
39298
|
-
if (!enableItemTooltip) return undefined;
|
|
39356
|
+
if (!enableItemTooltip || !isPanelOpen) return undefined;
|
|
39299
39357
|
var hoveredRow = null;
|
|
39300
39358
|
var computeMode = function computeMode() {
|
|
39301
39359
|
var container = containerRef.current;
|
|
@@ -39304,7 +39362,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
39304
39362
|
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
39305
39363
|
var spaceRight = window.innerWidth - cRect.right;
|
|
39306
39364
|
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
39307
|
-
var panel =
|
|
39365
|
+
var panel = getPanel();
|
|
39308
39366
|
var anchor = panel || container;
|
|
39309
39367
|
var aRect = anchor.getBoundingClientRect();
|
|
39310
39368
|
var estimateHeight = 120;
|
|
@@ -39318,7 +39376,6 @@ var Dropdown = function Dropdown(props) {
|
|
|
39318
39376
|
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
39319
39377
|
if (!tooltipEl) return;
|
|
39320
39378
|
var mode = computeMode();
|
|
39321
|
-
setTooltipMode(mode);
|
|
39322
39379
|
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
39323
39380
|
if (mode === 'right') {
|
|
39324
39381
|
var _hoveredRow;
|
|
@@ -39334,7 +39391,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
39334
39391
|
arrowEl.style.marginTop = '-0.25rem';
|
|
39335
39392
|
}
|
|
39336
39393
|
} else {
|
|
39337
|
-
var panel =
|
|
39394
|
+
var panel = getPanel();
|
|
39338
39395
|
if (!panel) return;
|
|
39339
39396
|
var pRect = panel.getBoundingClientRect();
|
|
39340
39397
|
var _tt = tooltipEl.getBoundingClientRect();
|
|
@@ -39349,7 +39406,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
39349
39406
|
};
|
|
39350
39407
|
var trackHover = function trackHover(e) {
|
|
39351
39408
|
var _e$target, _e$target$closest;
|
|
39352
|
-
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');
|
|
39409
|
+
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, scopeSelector(tooltipScope, ['.dropdown-tooltip-item', '.dropdown-tooltip-trigger']));
|
|
39353
39410
|
if (row) {
|
|
39354
39411
|
hoveredRow = row;
|
|
39355
39412
|
requestAnimationFrame(reposition);
|
|
@@ -39362,7 +39419,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
39362
39419
|
return function () {
|
|
39363
39420
|
return document.removeEventListener('mouseover', trackHover);
|
|
39364
39421
|
};
|
|
39365
|
-
}, [enableItemTooltip, tooltipWidth]);
|
|
39422
|
+
}, [enableItemTooltip, tooltipWidth, isPanelOpen]);
|
|
39366
39423
|
|
|
39367
39424
|
// --- Event handlers ---
|
|
39368
39425
|
var handleShow = function handleShow() {
|
|
@@ -39967,12 +40024,13 @@ var Dropdown = function Dropdown(props) {
|
|
|
39967
40024
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
39968
40025
|
onMouseEnter: handleMouseEnter,
|
|
39969
40026
|
onMouseLeave: handleMouseLeave,
|
|
40027
|
+
className: tooltipScope,
|
|
39970
40028
|
style: {
|
|
39971
40029
|
width: '100%'
|
|
39972
40030
|
}
|
|
39973
40031
|
}, enableItemTooltip && /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
39974
40032
|
key: tooltipKey,
|
|
39975
|
-
target:
|
|
40033
|
+
target: scopeSelector(tooltipScope, ['.dropdown-tooltip-item', '.dropdown-tooltip-trigger']),
|
|
39976
40034
|
appendTo: document.body,
|
|
39977
40035
|
position: "right",
|
|
39978
40036
|
autoHide: false,
|
|
@@ -40036,7 +40094,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
40036
40094
|
'--ab-panel-min-width': panelMinWidth,
|
|
40037
40095
|
width: undefined
|
|
40038
40096
|
} : {}),
|
|
40039
|
-
panelClassName:
|
|
40097
|
+
panelClassName: "dropdownbook ".concat(tooltipScope) + (panelMinWidth ? ' dropdownbook--min-width' : ''),
|
|
40040
40098
|
itemTemplate: optionTemplate
|
|
40041
40099
|
}, (hasInfoLine || creatable) && {
|
|
40042
40100
|
panelFooterTemplate: panelFooterTemplate
|
|
@@ -40051,6 +40109,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
40051
40109
|
}, {
|
|
40052
40110
|
onShow: function onShow() {
|
|
40053
40111
|
var _containerRef$current;
|
|
40112
|
+
setIsPanelOpen(true);
|
|
40054
40113
|
var el = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.parentElement;
|
|
40055
40114
|
while (el) {
|
|
40056
40115
|
var _style3 = window.getComputedStyle(el);
|
|
@@ -40087,6 +40146,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
40087
40146
|
},
|
|
40088
40147
|
onHide: function onHide() {
|
|
40089
40148
|
var _dropdownComposantRef8;
|
|
40149
|
+
setIsPanelOpen(false);
|
|
40090
40150
|
panelListenersRef.current.forEach(function (_ref6) {
|
|
40091
40151
|
var element = _ref6.element,
|
|
40092
40152
|
handler = _ref6.handler,
|
|
@@ -40109,7 +40169,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
40109
40169
|
delay: 200
|
|
40110
40170
|
}, virtualScrollerOptions) : undefined
|
|
40111
40171
|
}))), !isDropdownOpen && selectedGroupLabel && isGroupedOption && /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
40112
|
-
target:
|
|
40172
|
+
target: scopeSelector(tooltipScope, ['.p-dropdown-label.p-inputtext']),
|
|
40113
40173
|
content: selectedGroupLabel,
|
|
40114
40174
|
position: "top"
|
|
40115
40175
|
}), name && /*#__PURE__*/React__default.createElement("input", {
|
|
@@ -44546,13 +44606,12 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
44546
44606
|
_useState0 = _slicedToArray$b(_useState9, 2),
|
|
44547
44607
|
tooltipKey = _useState0[0],
|
|
44548
44608
|
setTooltipKey = _useState0[1];
|
|
44549
|
-
//
|
|
44550
|
-
|
|
44551
|
-
|
|
44552
|
-
|
|
44553
|
-
|
|
44554
|
-
_useState10[
|
|
44555
|
-
var setTooltipMode = _useState10[1];
|
|
44609
|
+
// Portée des infobulles : cf. useTooltipScope
|
|
44610
|
+
var tooltipScope = useTooltipScope('ab-ms');
|
|
44611
|
+
var _useState1 = useState(false),
|
|
44612
|
+
_useState10 = _slicedToArray$b(_useState1, 2),
|
|
44613
|
+
isPanelOpen = _useState10[0],
|
|
44614
|
+
setIsPanelOpen = _useState10[1];
|
|
44556
44615
|
var multiSelectRef = useRef(null);
|
|
44557
44616
|
var containerRef = useRef(null);
|
|
44558
44617
|
var didMountRef = useRef(false);
|
|
@@ -44619,21 +44678,6 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
44619
44678
|
setSelectedOptions(next);
|
|
44620
44679
|
setAppliedOptions(next);
|
|
44621
44680
|
}, [value, objValue, optionValue]);
|
|
44622
|
-
useEffect(function () {
|
|
44623
|
-
var observer = new MutationObserver(function () {
|
|
44624
|
-
var panel = document.querySelector('.p-multiselect-panel.p-component');
|
|
44625
|
-
if (panel) {
|
|
44626
|
-
panel.style.zIndex = '10000';
|
|
44627
|
-
}
|
|
44628
|
-
});
|
|
44629
|
-
observer.observe(document.body, {
|
|
44630
|
-
childList: true,
|
|
44631
|
-
subtree: true
|
|
44632
|
-
});
|
|
44633
|
-
return function () {
|
|
44634
|
-
return observer.disconnect();
|
|
44635
|
-
};
|
|
44636
|
-
}, []);
|
|
44637
44681
|
useEffect(function () {}, []);
|
|
44638
44682
|
|
|
44639
44683
|
// Panneau de CE composant (cf. Dropdown.getPanel) : un querySelector global renvoyait
|
|
@@ -44988,38 +45032,21 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
44988
45032
|
}
|
|
44989
45033
|
};
|
|
44990
45034
|
|
|
44991
|
-
//
|
|
44992
|
-
|
|
44993
|
-
// convertir le texte contenant du HTML en innerHTML rendu — nécessaire car
|
|
44994
|
-
// le tooltip est réutilisé (pas de callback à chaque changement de cible).
|
|
44995
|
-
useEffect(function () {
|
|
44996
|
-
if (!enableItemTooltip) return undefined;
|
|
44997
|
-
var rewrite = function rewrite() {
|
|
44998
|
-
document.querySelectorAll('.p-tooltip .p-tooltip-text').forEach(function (el) {
|
|
44999
|
-
var raw = el.textContent;
|
|
45000
|
-
if (raw && /<[a-z][\s\S]*>/i.test(raw) && el.innerHTML !== raw) {
|
|
45001
|
-
el.innerHTML = raw;
|
|
45002
|
-
}
|
|
45003
|
-
});
|
|
45004
|
-
};
|
|
45005
|
-
var observer = new MutationObserver(rewrite);
|
|
45006
|
-
observer.observe(document.body, {
|
|
45007
|
-
childList: true,
|
|
45008
|
-
subtree: true,
|
|
45009
|
-
characterData: true
|
|
45010
|
-
});
|
|
45011
|
-
return function () {
|
|
45012
|
-
return observer.disconnect();
|
|
45013
|
-
};
|
|
45014
|
-
}, [enableItemTooltip]);
|
|
45035
|
+
// --- Tooltip HTML support --- (un seul observer pour toute la page)
|
|
45036
|
+
useTooltipHtmlRewrite(enableItemTooltip);
|
|
45015
45037
|
|
|
45016
45038
|
// --- Repositionnement fin du tooltip ---
|
|
45017
45039
|
// La détection du mode ('right' / 'panelBottom' / 'panelTop') est refaite à
|
|
45018
45040
|
// chaque survol : ainsi la mesure de position est toujours à jour même si
|
|
45019
45041
|
// le layout a changé après le montage (intégration dans une page réelle,
|
|
45020
45042
|
// scroll d'un ancêtre, resize du parent, etc.).
|
|
45043
|
+
// Écouteur posé seulement panneau ouvert : sinon chaque select de la page
|
|
45044
|
+
// recalculait la position à chaque survol de n'importe quel élément.
|
|
45045
|
+
// 'right' : flèche du tooltip sur le picto i
|
|
45046
|
+
// 'panelBottom' : tooltip sous le panel d'options
|
|
45047
|
+
// 'panelTop' : tooltip au-dessus du panel d'options
|
|
45021
45048
|
useEffect(function () {
|
|
45022
|
-
if (!enableItemTooltip) return undefined;
|
|
45049
|
+
if (!enableItemTooltip || !isPanelOpen) return undefined;
|
|
45023
45050
|
var hoveredRow = null;
|
|
45024
45051
|
var computeMode = function computeMode() {
|
|
45025
45052
|
var container = containerRef.current;
|
|
@@ -45028,7 +45055,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45028
45055
|
var tooltipPxWidth = parseInt(String(tooltipWidth), 10) || 220;
|
|
45029
45056
|
var spaceRight = window.innerWidth - cRect.right;
|
|
45030
45057
|
if (spaceRight >= tooltipPxWidth + 40) return 'right';
|
|
45031
|
-
var panel =
|
|
45058
|
+
var panel = getPanel();
|
|
45032
45059
|
var anchor = panel || container;
|
|
45033
45060
|
var aRect = anchor.getBoundingClientRect();
|
|
45034
45061
|
var estimateHeight = 120;
|
|
@@ -45042,7 +45069,6 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45042
45069
|
var tooltipEl = document.querySelector('.p-tooltip.p-component');
|
|
45043
45070
|
if (!tooltipEl) return;
|
|
45044
45071
|
var mode = computeMode();
|
|
45045
|
-
setTooltipMode(mode);
|
|
45046
45072
|
var arrowEl = tooltipEl.querySelector('.p-tooltip-arrow');
|
|
45047
45073
|
if (mode === 'right') {
|
|
45048
45074
|
var _hoveredRow;
|
|
@@ -45058,7 +45084,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45058
45084
|
arrowEl.style.marginTop = '-0.25rem';
|
|
45059
45085
|
}
|
|
45060
45086
|
} else {
|
|
45061
|
-
var panel =
|
|
45087
|
+
var panel = getPanel();
|
|
45062
45088
|
if (!panel) return;
|
|
45063
45089
|
var pRect = panel.getBoundingClientRect();
|
|
45064
45090
|
var _tt = tooltipEl.getBoundingClientRect();
|
|
@@ -45073,7 +45099,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45073
45099
|
};
|
|
45074
45100
|
var trackHover = function trackHover(e) {
|
|
45075
45101
|
var _e$target, _e$target$closest;
|
|
45076
|
-
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');
|
|
45102
|
+
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, scopeSelector(tooltipScope, ['.multiselect-tooltip-item', '.multiselect-tooltip-trigger', '.multiselect-selected-tooltip-trigger']));
|
|
45077
45103
|
if (row) {
|
|
45078
45104
|
hoveredRow = row;
|
|
45079
45105
|
requestAnimationFrame(reposition);
|
|
@@ -45086,7 +45112,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45086
45112
|
return function () {
|
|
45087
45113
|
return document.removeEventListener('mouseover', trackHover);
|
|
45088
45114
|
};
|
|
45089
|
-
}, [enableItemTooltip, tooltipWidth]);
|
|
45115
|
+
}, [enableItemTooltip, tooltipWidth, isPanelOpen]);
|
|
45090
45116
|
var handleChange = function handleChange(e) {
|
|
45091
45117
|
if (disabled || effectiveReadOnly) return;
|
|
45092
45118
|
var ids = Array.isArray(e.value) ? e.value : [e.value];
|
|
@@ -45562,12 +45588,13 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45562
45588
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
45563
45589
|
onMouseEnter: handleMouseEnter,
|
|
45564
45590
|
onMouseLeave: handleMouseLeave,
|
|
45591
|
+
className: tooltipScope,
|
|
45565
45592
|
style: {
|
|
45566
45593
|
width: '100%'
|
|
45567
45594
|
}
|
|
45568
45595
|
}, enableItemTooltip && /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
45569
45596
|
key: tooltipKey,
|
|
45570
|
-
target:
|
|
45597
|
+
target: scopeSelector(tooltipScope, ['.multiselect-tooltip-item', '.multiselect-tooltip-trigger', '.multiselect-selected-tooltip-trigger']),
|
|
45571
45598
|
appendTo: document.body,
|
|
45572
45599
|
position: "right",
|
|
45573
45600
|
autoHide: false,
|
|
@@ -45590,10 +45617,10 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45590
45617
|
width: '100%'
|
|
45591
45618
|
}
|
|
45592
45619
|
}, displayCounter && /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
45593
|
-
target:
|
|
45620
|
+
target: scopeSelector(tooltipScope, ['.custom-target-icon'])
|
|
45594
45621
|
}), /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
45595
45622
|
key: "counter-".concat(tooltipKey),
|
|
45596
|
-
target:
|
|
45623
|
+
target: scopeSelector(tooltipScope, ['.ms-counter-label', '.ab-mini-badge']),
|
|
45597
45624
|
appendTo: document.body,
|
|
45598
45625
|
position: "top",
|
|
45599
45626
|
showDelay: 0,
|
|
@@ -45601,7 +45628,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45601
45628
|
zIndex: 9999999
|
|
45602
45629
|
}
|
|
45603
45630
|
}), /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
45604
|
-
target:
|
|
45631
|
+
target: scopeSelector(tooltipScope, ['.p-multiselect-token']),
|
|
45605
45632
|
appendTo: document.body,
|
|
45606
45633
|
position: "top",
|
|
45607
45634
|
showDelay: 200,
|
|
@@ -45620,7 +45647,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45620
45647
|
}, /*#__PURE__*/React__default.createElement(MultiSelect$1, _extends$G({
|
|
45621
45648
|
ref: multiSelectRef,
|
|
45622
45649
|
className: isInvalidEffective ? 'is-error' : undefined,
|
|
45623
|
-
panelClassName: !useCheckbox ? 'ms-no-checkbox' : ''
|
|
45650
|
+
panelClassName: "".concat(tooltipScope).concat(!useCheckbox ? ' ms-no-checkbox' : '')
|
|
45624
45651
|
}, displayBadge && selectedOptions.length <= maxSelectedLabels ? {
|
|
45625
45652
|
display: 'chip',
|
|
45626
45653
|
pt: {
|
|
@@ -45692,6 +45719,11 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45692
45719
|
}), {
|
|
45693
45720
|
onShow: function onShow() {
|
|
45694
45721
|
var _containerRef$current;
|
|
45722
|
+
setIsPanelOpen(true);
|
|
45723
|
+
// Au-dessus des surcouches de l'hôte (était posé par un MutationObserver
|
|
45724
|
+
// global par instance, rejoué à chaque modification du DOM)
|
|
45725
|
+
var panel = getPanel();
|
|
45726
|
+
if (panel) panel.style.zIndex = '10000';
|
|
45695
45727
|
var el = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.parentElement;
|
|
45696
45728
|
while (el) {
|
|
45697
45729
|
var _style = window.getComputedStyle(el);
|
|
@@ -45721,6 +45753,7 @@ var MultiSelect = function MultiSelect(props) {
|
|
|
45721
45753
|
if (_onShow) _onShow();
|
|
45722
45754
|
},
|
|
45723
45755
|
onHide: function onHide() {
|
|
45756
|
+
setIsPanelOpen(false);
|
|
45724
45757
|
panelListenersRef.current.forEach(function (_ref5) {
|
|
45725
45758
|
var element = _ref5.element,
|
|
45726
45759
|
handler = _ref5.handler,
|
|
@@ -48270,7 +48303,7 @@ if (typeof window !== 'undefined') {
|
|
|
48270
48303
|
window.ArengibookToastPresets = ToastPresets;
|
|
48271
48304
|
}
|
|
48272
48305
|
|
|
48273
|
-
var css_248z$3 = "@charset \"UTF-8\";\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: scale(0.85);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes toastSlideIn {\n from {\n opacity: 0;\n transform: translateX(40px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes toastIconPop {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 60% {\n transform: scale(1.2);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n@keyframes toastTextSlide {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.p-paginator {\n font-size: 14px;\n}\n.p-paginator .p-paginator-first,\n.p-paginator .p-paginator-prev,\n.p-paginator .p-paginator-next,\n.p-paginator .p-paginator-last,\n.p-paginator .p-paginator-pages .p-paginator-page,\n.p-paginator .p-paginator-current,\n.p-paginator .p-dropdown .p-dropdown-label,\n.p-paginator .p-dropdown-item,\n.p-paginator .p-paginator-page-input .p-inputtext {\n font-size: 14px;\n}\n\n.p-datatable .p-datatable-tbody > tr.air-row--selected > td {\n background-color: #f0fdf8 !important;\n}\n\n.p-datatable .p-datatable-tbody > tr > td.ab-col--readonly {\n background-color: #f4f4f5;\n cursor: not-allowed;\n}\n.p-datatable .p-datatable-tbody > tr > td.ab-col--readonly a,\n.p-datatable .p-datatable-tbody > tr > td.ab-col--readonly button,\n.p-datatable .p-datatable-tbody > tr > td.ab-col--readonly [role=button] {\n cursor: pointer;\n}\n\n.ab-col-header--readonly .material-icons {\n display: inline-block;\n vertical-align: middle;\n margin-left: 4px;\n font-size: 13px;\n line-height: 1;\n color: #a1a1aa;\n width: 13px;\n overflow: hidden;\n}\n\ntable.ab-table {\n background-color: #ffffff;\n font-family: \"Roboto\", sans-serif;\n table-layout: fixed;\n}\ntable.ab-table thead {\n border: 1px solid #e0e3e8;\n}\ntable.ab-table thead th {\n position: sticky;\n top: 0;\n z-index: 800;\n background-color: #e8eaee;\n border-bottom: 1px solid #e0e3e8;\n padding-top: 10px;\n padding-bottom: 10px;\n font-size: 14px;\n}\ntable.ab-table tbody tr {\n background-color: transparent;\n}\n\n.ab-table td {\n overflow: hidden;\n padding-top: 8px;\n padding-bottom: 8px;\n text-align: left;\n border-right: 1px solid #e8eaee;\n border-bottom: 1px solid #e8eaee;\n}\n\n.ab-table .cell-text {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr > td.p-frozen-column {\n z-index: 1;\n background: #fff !important;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td.p-frozen-column {\n background: #f4f5f6 !important;\n}\n\ntable.ab-table thead th.p-frozen-column:not(.row-actions-cell) {\n background: #fff !important;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr > td.p-frozen-column.row-actions-cell,\n.p-datatable-scrollable .p-datatable-tbody > tr.p-row-odd > td.p-frozen-column.row-actions-cell {\n background: #ffffff !important;\n box-shadow: none !important;\n padding: 0 !important;\n border-right: 1px solid #e8eaee !important;\n}\n\n.p-datatable .p-datatable-thead > tr > th.row-actions-cell {\n background: #e8eaee !important;\n border: none !important;\n border-right: 1px solid #e0e3e8 !important;\n box-shadow: none !important;\n padding: 0 !important;\n}\n\ntable.ab-table td input.p-inputtext {\n box-sizing: border-box;\n min-height: 26px;\n padding: 0 8px;\n border: 1px solid #e0e3e8;\n border-radius: 3px;\n background: #ffffff;\n box-shadow: none;\n font-family: inherit;\n font-size: 13px;\n font-weight: 300;\n}\ntable.ab-table td input.p-inputtext:enabled:hover {\n border-color: #c8cdd6;\n}\ntable.ab-table td input.p-inputtext:enabled:focus {\n border-color: #3f3f3f;\n box-shadow: none;\n outline: none;\n}\n\n.ab-table .p-cell-editing input,\n.ab-table .p-cell-editing .p-inputtext,\n.ab-table .p-cell-editing .p-dropdown,\n.ab-table .p-cell-editing .p-multiselect,\n.ab-table .p-cell-editing .p-calendar {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.ab-table .cell-devise {\n display: flex;\n flex-direction: column;\n gap: 1.4px;\n font-size: 12.25px;\n}\n.ab-table .cell-devise--editable {\n cursor: pointer;\n}\n.ab-table .cell-devise--empty {\n display: block;\n width: 100%;\n height: 21px;\n cursor: pointer;\n}\n.ab-table .cell-devise .span-sub {\n font-size: 10.5px;\n color: #71717a;\n}\n\n.ab-table .devise-editor {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n padding: 3.5px 0;\n}\n.ab-table .devise-editor-fields {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n width: 100%;\n position: relative;\n}\n.ab-table .devise-editor-fields .p-dropdown-panel {\n position: absolute;\n z-index: 1000;\n top: 100%;\n left: 0;\n width: 100%;\n}\n.ab-table .devise-editor-save {\n align-self: flex-end;\n}\n\n.ab-table .p-cell-editing .devise-editor-fields input,\n.ab-table .p-cell-editing .devise-editor-fields .p-inputtext,\n.ab-table .p-cell-editing .devise-editor-fields .p-dropdown {\n width: 100%;\n min-width: 0;\n}\n\n.ab-table .select-editor .p-dropdown-label > div {\n min-width: 0;\n}\n.ab-table .select-editor .dd-color-badge.is-selected {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ab-table .select-editor .p-multiselect .p-multiselect-label-container {\n margin-right: 1.75rem;\n}\n\n.ab-table .div-col-select .ab-color-badge.is-selected,\n.ab-table .div-col-select-multiple .ab-color-badge.is-selected {\n animation: none;\n}\n.ab-table .div-col-select .ab-chips-lecture,\n.ab-table .div-col-select .p-multiselect .p-multiselect-label,\n.ab-table .div-col-select .p-dropdown .p-dropdown-label,\n.ab-table .div-col-select-multiple .ab-chips-lecture,\n.ab-table .div-col-select-multiple .p-multiselect .p-multiselect-label,\n.ab-table .div-col-select-multiple .p-dropdown .p-dropdown-label {\n overflow: clip visible !important;\n}\n.ab-table .div-col-select > div:not(.select-editor),\n.ab-table .div-col-select-multiple > div:not(.select-editor) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: 40px !important;\n padding: 0 20px 0 12px;\n border: 1.5px solid transparent;\n}\n.ab-table .div-col-select > div:not(.select-editor):focus-visible,\n.ab-table .div-col-select-multiple > div:not(.select-editor):focus-visible {\n outline: 2px solid #3f3f3f;\n outline-offset: -2px;\n}\n.ab-table .div-col-select > div:not(.select-editor) > *,\n.ab-table .div-col-select-multiple > div:not(.select-editor) > * {\n min-width: 0;\n max-width: 100%;\n}\n.ab-table .div-col-select .p-dropdown-trigger,\n.ab-table .div-col-select .p-multiselect-trigger,\n.ab-table .div-col-select-multiple .p-dropdown-trigger,\n.ab-table .div-col-select-multiple .p-multiselect-trigger {\n display: none;\n}\n.ab-table .div-col-select [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple [data-pc-section=clearicon] {\n right: 12px;\n opacity: 0;\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-table .div-col-select .ab-chips-lecture,\n.ab-table .div-col-select-multiple .ab-chips-lecture {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: 6px;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n}\n.ab-table .div-col-select .ab-chip-lecture,\n.ab-table .div-col-select-multiple .ab-chip-lecture {\n padding: 4px 4px 4px 8px;\n gap: 2px;\n margin: 0;\n flex: 0 1 auto;\n width: max-content;\n min-width: 0;\n}\n.ab-table .div-col-select .ab-chip-lecture .p-multiselect-token-icon,\n.ab-table .div-col-select-multiple .ab-chip-lecture .p-multiselect-token-icon {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n}\n.ab-table .div-col-select .p-multiselect .p-multiselect-label-container,\n.ab-table .div-col-select-multiple .p-multiselect .p-multiselect-label-container {\n margin-right: 34px;\n}\n.ab-table .div-col-select .dropdown-container .p-dropdown,\n.ab-table .div-col-select .multiselect-container .p-multiselect,\n.ab-table .div-col-select-multiple .dropdown-container .p-dropdown,\n.ab-table .div-col-select-multiple .multiselect-container .p-multiselect {\n border-color: transparent;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-table .div-col-select .p-dropdown.p-focus,\n.ab-table .div-col-select .p-multiselect.p-focus,\n.ab-table .div-col-select-multiple .p-dropdown.p-focus,\n.ab-table .div-col-select-multiple .p-multiselect.p-focus {\n border-color: #3f3f3f;\n}\n.ab-table .div-col-select .p-dropdown.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select .p-multiselect.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple .p-dropdown.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple .p-multiselect.p-focus [data-pc-section=clearicon] {\n opacity: 1;\n}\n\n.ab-table .div-col-select-multiple > div:not(.select-editor) {\n padding-right: 46px;\n}\n\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select .dropdown-container .p-dropdown,\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select-multiple .multiselect-container .p-multiselect {\n border-color: #c8cdd6;\n}\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select [data-pc-section=clearicon],\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select-multiple [data-pc-section=clearicon] {\n opacity: 1;\n}\n\n.ab-table .doc-cell-empty {\n color: #aaa;\n font-size: 11.9px;\n}\n\n.ab-table .doc-cell {\n display: flex;\n flex-direction: column;\n gap: 3.5px;\n min-width: 0;\n overflow: hidden;\n}\n.ab-table .doc-cell-summary {\n display: flex;\n align-items: center;\n gap: 4.9px;\n font-size: 12.25px;\n min-width: 0;\n}\n.ab-table .doc-cell-summary .pi-paperclip {\n color: #71717a;\n font-size: 11.2px;\n flex-shrink: 0;\n}\n.ab-table .doc-cell-summary span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.ab-table .doc-cell-list {\n display: flex;\n flex-direction: column;\n gap: 2.1px;\n padding-left: 15.4px;\n font-size: 11.2px;\n}\n.ab-table .doc-cell-list div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ab-table .doc-cell-list a {\n color: #3b82f6;\n text-decoration: none;\n}\n.ab-table .doc-cell-list a:hover {\n text-decoration: underline;\n}\n\n.ab-table .doc-editor {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n padding: 3.5px 0;\n}\n.ab-table .doc-editor-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 11.2px;\n}\n.ab-table .doc-editor-table td {\n padding: 2.8px 4.9px;\n vertical-align: middle;\n}\n.ab-table .doc-editor-table td a {\n color: #3b82f6;\n text-decoration: none;\n word-break: break-all;\n}\n.ab-table .doc-editor-table td a:hover {\n text-decoration: underline;\n}\n.ab-table .doc-editor-table td:last-child {\n width: 28px;\n text-align: center;\n}\n.ab-table .doc-editor-add {\n display: inline-flex;\n align-items: center;\n gap: 4.2px;\n cursor: pointer;\n align-self: center;\n}\n\n.ab-table .ab-titre-box {\n overflow: hidden;\n min-width: 0;\n}\n\n.ab-table .table-item-title {\n display: -webkit-box !important;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--ab-title-lines, 1);\n line-height: 16px;\n min-width: 0 !important;\n white-space: normal;\n overflow-wrap: anywhere;\n overflow: hidden;\n max-height: var(--ab-content-max, none);\n}\n\n.p-datatable .p-column-header-content {\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n min-width: 0;\n padding: 0 1rem;\n overflow: hidden;\n container-type: inline-size;\n}\n\n.p-datatable .p-column-header-content .p-column-title {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.p-datatable .p-column-header-content [data-pc-section=sort] {\n flex: 0 0 auto;\n}\n\n@container (max-width: 77px) {\n .p-datatable .p-column-header-content [data-pc-section=sort] {\n display: none;\n }\n}\n.ab-table .tab_label {\n display: inline-block;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: 600;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n border-radius: 5px;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n height: initial;\n}\n.ab-table .tab_label .tab_label-clear {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n min-height: 0;\n margin-left: 3px;\n margin-right: -3px;\n padding: 0;\n border: none;\n border-radius: 3px;\n background: none;\n color: inherit;\n opacity: 0.55;\n cursor: pointer;\n transition: opacity 0.12s, background-color 0.12s;\n}\n.ab-table .tab_label .tab_label-clear:hover, .ab-table .tab_label .tab_label-clear:focus-visible {\n outline: none;\n opacity: 1;\n background: rgba(0, 0, 0, 0.14);\n}\n\n.ab-table .badge,\n.ab-select-badge {\n padding: 8px 12px;\n border-radius: 5px;\n height: auto;\n margin: 2px;\n font-weight: 400;\n box-shadow: 2px 4px 5px grey;\n white-space: inherit;\n min-width: 90px;\n}\n.ab-table .badge:not(.badge-small),\n.ab-select-badge:not(.badge-small) {\n width: 100%;\n}\n\ntable.ab-table a.table-item-title {\n color: #2563eb;\n font-weight: 500;\n text-decoration: none;\n}\ntable.ab-table a.table-item-title:hover {\n color: #1d4ed8;\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.ab-table .RiskNumber-table div {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ab-table .RiskNumber-table div span {\n width: 30px;\n height: 30px;\n min-width: 30px;\n min-height: 30px;\n max-width: 30px;\n max-height: 30px;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.ab-table .RiskLabel-table .etiquetteMatrix-risque {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n min-height: 26px;\n width: fit-content;\n max-width: 190px;\n display: flex;\n justify-content: flex-start;\n border-radius: 3px;\n background-color: #fff;\n color: black;\n margin: 0;\n padding: 0;\n border: 0;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabelColor {\n min-width: 20px;\n max-width: 20px;\n margin-right: 5px;\n border-right: 1px solid rgba(0, 0, 0, 0.3607843137);\n border-radius: 3px 0 0 3px;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabel {\n font-size: 13px;\n font-weight: 300;\n padding: 3px 10px 3px 5px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabel > p {\n margin: 0;\n display: inline;\n font: inherit;\n}\n\n.ab-table .RiskOwner-table .risk_owner {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: max-content;\n}\n.ab-table .RiskOwner-table .risk_owner a {\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n padding: 5px 10px;\n border-radius: 5px;\n background-color: white;\n opacity: 1;\n margin: 2px;\n position: relative;\n}\n.ab-table .RiskOwner-table .risk_owner a:hover {\n z-index: 9999;\n}\n\n.ab-table .ab-cell-display--html {\n display: block !important;\n}\n\n.ab-table .ab-texte-limite {\n min-width: 0 !important;\n max-width: 100% !important;\n min-height: 0 !important;\n max-height: var(--ab-content-max, none) !important;\n margin: 0;\n overflow: hidden;\n text-align: left;\n white-space: normal;\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--ab-html-lines, none);\n line-height: 17px !important;\n font-size: 14px;\n}\n.ab-table .ab-texte-limite p {\n line-height: 17px !important;\n font-size: 14px;\n margin: 0;\n}\n.ab-table .ab-texte-limite p,\n.ab-table .ab-texte-limite div,\n.ab-table .ab-texte-limite ul,\n.ab-table .ab-texte-limite ol,\n.ab-table .ab-texte-limite li,\n.ab-table .ab-texte-limite blockquote,\n.ab-table .ab-texte-limite h1,\n.ab-table .ab-texte-limite h2,\n.ab-table .ab-texte-limite h3,\n.ab-table .ab-texte-limite h4,\n.ab-table .ab-texte-limite h5,\n.ab-table .ab-texte-limite h6 {\n display: inline;\n margin: 0;\n padding: 0;\n font-size: 14px;\n line-height: 17px !important;\n}\n.ab-table .ab-texte-limite h1,\n.ab-table .ab-texte-limite h2,\n.ab-table .ab-texte-limite h3,\n.ab-table .ab-texte-limite h4,\n.ab-table .ab-texte-limite h5,\n.ab-table .ab-texte-limite h6,\n.ab-table .ab-texte-limite strong,\n.ab-table .ab-texte-limite b {\n font-weight: 600;\n}\n.ab-table .ab-texte-limite p::after,\n.ab-table .ab-texte-limite div::after,\n.ab-table .ab-texte-limite blockquote::after,\n.ab-table .ab-texte-limite h1::after,\n.ab-table .ab-texte-limite h2::after,\n.ab-table .ab-texte-limite h3::after,\n.ab-table .ab-texte-limite h4::after,\n.ab-table .ab-texte-limite h5::after,\n.ab-table .ab-texte-limite h6::after {\n content: \" \";\n}\n.ab-table .ab-texte-limite li + li::before {\n content: \" · \";\n color: #6b7280;\n}\n\n.ab-table .action-picto .picto {\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n padding: 5px 10px;\n border-radius: 5px;\n margin: 5px;\n}\n\n.ab-table .RiskClusters-table .RiskClusters {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n padding: 5px 19px;\n background-color: rgba(255, 255, 255, 0.5098039216);\n border-radius: 5px;\n opacity: 1;\n position: relative;\n margin: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ab-table .RiskClusters-table .RiskClusters .material-icons {\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3137254902);\n}\n\n.ab-table .progress_bar_menu {\n position: relative;\n height: 20px;\n margin: 0;\n}\n\n.ab-table .progress_bar_menu_black {\n width: 100%;\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n height: 6px;\n background-color: #b0bec5;\n border-radius: 3px;\n text-align: left;\n}\n\n.ab-table .progress_bar_menu_load {\n border-radius: 3px;\n height: 6px;\n background-color: #136b89;\n}\n\n.ab-table .progress_bar_menu_info {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n z-index: 1;\n padding: 1px 7px;\n border: 1px solid #e0e3e8;\n border-radius: 999px;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n color: #3f535f;\n font-weight: bold;\n font-size: 11px;\n line-height: 1.45;\n white-space: nowrap;\n}\n.ab-table .progress_bar_menu_info a {\n color: inherit;\n text-decoration: none;\n}\n\n.ab-table .div-col {\n width: 100%;\n}\n\n.ab-table .div-col:not(.div-col-select):not(.div-col-select-multiple) {\n max-height: var(--ab-content-max, none);\n overflow: clip;\n overflow-clip-margin: 6px;\n}\n\n.ab-table .ab-cell-scroll {\n max-height: var(--ab-cell-max, none);\n overflow-y: auto;\n}\n\n.ab-table .tab_label {\n max-width: 100%;\n}\n\ntable.ab-table thead th {\n background-color: #e8eaee !important;\n border-right: 1px solid #e0e3e8 !important;\n border-bottom: 1px solid #e0e3e8 !important;\n}\ntable.ab-table thead th:hover {\n background-color: #e8eaee !important;\n}\ntable.ab-table thead th:last-child {\n border-right: 0 !important;\n}\n\ntable.ab-table .p-column-resizer {\n width: 15px;\n cursor: col-resize;\n border: 0;\n height: auto;\n top: 0;\n bottom: -1px;\n}\n\ntable.ab-table thead th:not(.row-actions-cell):not(:has(> .p-column-filter)) {\n overflow: visible;\n padding-left: 0;\n padding-right: 0;\n}\n\ntable.ab-table thead th:nth-child(1) {\n z-index: 839 !important;\n}\n\ntable.ab-table thead th:nth-child(2) {\n z-index: 838 !important;\n}\n\ntable.ab-table thead th:nth-child(3) {\n z-index: 837 !important;\n}\n\ntable.ab-table thead th:nth-child(4) {\n z-index: 836 !important;\n}\n\ntable.ab-table thead th:nth-child(5) {\n z-index: 835 !important;\n}\n\ntable.ab-table thead th:nth-child(6) {\n z-index: 834 !important;\n}\n\ntable.ab-table thead th:nth-child(7) {\n z-index: 833 !important;\n}\n\ntable.ab-table thead th:nth-child(8) {\n z-index: 832 !important;\n}\n\ntable.ab-table thead th:nth-child(9) {\n z-index: 831 !important;\n}\n\ntable.ab-table thead th:nth-child(10) {\n z-index: 830 !important;\n}\n\ntable.ab-table thead th:nth-child(11) {\n z-index: 829 !important;\n}\n\ntable.ab-table thead th:nth-child(12) {\n z-index: 828 !important;\n}\n\ntable.ab-table thead th:nth-child(13) {\n z-index: 827 !important;\n}\n\ntable.ab-table thead th:nth-child(14) {\n z-index: 826 !important;\n}\n\ntable.ab-table thead th:nth-child(15) {\n z-index: 825 !important;\n}\n\ntable.ab-table thead th:nth-child(16) {\n z-index: 824 !important;\n}\n\ntable.ab-table thead th:nth-child(17) {\n z-index: 823 !important;\n}\n\ntable.ab-table thead th:nth-child(18) {\n z-index: 822 !important;\n}\n\ntable.ab-table thead th:nth-child(19) {\n z-index: 821 !important;\n}\n\ntable.ab-table thead th:nth-child(20) {\n z-index: 820 !important;\n}\n\ntable.ab-table thead th:nth-child(21) {\n z-index: 819 !important;\n}\n\ntable.ab-table thead th:nth-child(22) {\n z-index: 818 !important;\n}\n\ntable.ab-table thead th:nth-child(23) {\n z-index: 817 !important;\n}\n\ntable.ab-table thead th:nth-child(24) {\n z-index: 816 !important;\n}\n\ntable.ab-table thead th:nth-child(25) {\n z-index: 815 !important;\n}\n\ntable.ab-table thead th:nth-child(26) {\n z-index: 814 !important;\n}\n\ntable.ab-table thead th:nth-child(27) {\n z-index: 813 !important;\n}\n\ntable.ab-table thead th:nth-child(28) {\n z-index: 812 !important;\n}\n\ntable.ab-table thead th:nth-child(29) {\n z-index: 811 !important;\n}\n\ntable.ab-table thead th:nth-child(30) {\n z-index: 810 !important;\n}\n\ntable.ab-table thead th:nth-child(31) {\n z-index: 809 !important;\n}\n\ntable.ab-table thead th:nth-child(32) {\n z-index: 808 !important;\n}\n\ntable.ab-table thead th:nth-child(33) {\n z-index: 807 !important;\n}\n\ntable.ab-table thead th:nth-child(34) {\n z-index: 806 !important;\n}\n\ntable.ab-table thead th:nth-child(35) {\n z-index: 805 !important;\n}\n\ntable.ab-table thead th:nth-child(36) {\n z-index: 804 !important;\n}\n\ntable.ab-table thead th:nth-child(37) {\n z-index: 803 !important;\n}\n\ntable.ab-table thead th:nth-child(38) {\n z-index: 802 !important;\n}\n\ntable.ab-table thead th:nth-child(39) {\n z-index: 801 !important;\n}\n\ntable.ab-table thead th:nth-child(40) {\n z-index: 800 !important;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: -15px;\n background: linear-gradient(to right, transparent calc(50% - 1px), #000 calc(50% - 1px), #000 calc(50% + 1px), transparent calc(50% + 1px));\n opacity: 0;\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer::after {\n content: \"\";\n position: absolute;\n top: 50%;\n right: calc(-16px - 2px * 0.5);\n width: 30px;\n height: 30px;\n transform: translateY(-50%);\n border-radius: 50%;\n background: #000 url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='8'%3E%3Cpath d='M5 0v8L0 4z' fill='%23fff'/%3E%3Cpath d='M11 0v8l5-4z' fill='%23fff'/%3E%3C/svg%3E\") center/16px 8px no-repeat;\n opacity: 0;\n transform: translateY(-50%) scale(0.35);\n transition: opacity 240ms cubic-bezier(0.4, 0, 0.2, 1), transform 240ms cubic-bezier(0.34, 1.3, 0.64, 1);\n}\n\ntable.ab-table thead th:not(.row-actions-cell):hover .p-column-resizer::before {\n opacity: 1;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer:hover::before {\n opacity: 0;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer:hover::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n}\n\n.p-datatable.p-component .p-column-resizer-helper {\n width: 2px;\n top: var(--ab-th-top, 0px) !important;\n height: var(--ab-trait-h, calc(100% - var(--ab-th-top, 0px))) !important;\n background: transparent;\n pointer-events: none;\n transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-datatable.p-component .p-column-resizer-helper::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: #000;\n transform-origin: center calc(var(--ab-thead-h, 42px) / 2);\n transform: scaleY(1);\n transition: transform 300ms cubic-bezier(0.2, 0.75, 0.2, 1) 70ms, background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque {\n opacity: 0;\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque::after {\n transform: scaleY(0);\n transition-delay: 0s;\n}\n.p-datatable.p-component .p-column-resizer-helper::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n right: 100%;\n width: 90px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 160ms cubic-bezier(0.4, 0, 0.2, 1);\n background: linear-gradient(to left, color-mix(in srgb, #dc2626 13%, transparent), color-mix(in srgb, #dc2626 5%, transparent) 45%, transparent);\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--butee::after {\n background: #dc2626;\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--butee::before {\n opacity: 1;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .p-datatable.p-component .p-column-resizer-helper,\n .p-datatable.p-component .p-column-resizer-helper::before,\n .p-datatable.p-component .p-column-resizer-helper::after,\n table.ab-table thead th .p-column-resizer::before,\n table.ab-table thead th .p-column-resizer::after {\n transition: none;\n }\n table.ab-table thead th .p-column-resizer::after,\n table.ab-table thead th .p-column-resizer:hover::after {\n transform: translateY(-50%) scale(1);\n }\n .p-datatable.p-component .p-column-resizer-helper::after,\n .p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque::after {\n transform: scaleY(1);\n }\n}\n.ab-row-resizer-helper {\n position: absolute;\n height: 1px;\n margin-top: calc(1px * -0.5);\n z-index: 10;\n pointer-events: none;\n transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-row-resizer-helper::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: #000;\n transform-origin: center center;\n transform: scaleX(1);\n transition: transform 300ms cubic-bezier(0.2, 0.75, 0.2, 1) 70ms;\n}\n.ab-row-resizer-helper.ab-resizer--masque {\n opacity: 0;\n}\n.ab-row-resizer-helper.ab-resizer--masque::after {\n transform: scaleX(0);\n transition-delay: 0s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ab-row-resizer-helper,\n .ab-row-resizer-helper::after {\n transition: none;\n }\n .ab-row-resizer-helper.ab-resizer--masque::after {\n transform: scaleX(1);\n }\n}\ntable.ab-table thead th {\n text-align: left;\n cursor: grab;\n}\ntable.ab-table thead th:active {\n cursor: grabbing;\n}\n\ntable.ab-table thead th [data-pc-section=sort] {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border-radius: 5px;\n background: #f4f5f6;\n color: #b0b8c4;\n cursor: pointer;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\ntable.ab-table thead th [data-pc-section=sort]:hover {\n background: #e0e3e8;\n color: #1a1e26;\n}\ntable.ab-table thead th [data-pc-section=sort] .p-sortable-column-icon {\n margin: 0;\n background: none;\n}\n\ntable.ab-table thead th.p-highlight [data-pc-section=sort] {\n background: color-mix(in srgb, #3f3f3f 12%, transparent);\n color: #3f3f3f;\n}\n\n.p-datatable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td {\n background-color: #f4f5f6;\n}\n\n.p-datatable .p-datatable-tbody > tr:hover > td.ab-td--editable:hover {\n background-color: color-mix(in srgb, #c8cdd6 55%, #f4f5f6);\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td.p-frozen-column:not(.row-actions-cell) {\n background: #f4f5f6 !important;\n}\n\n.ab-row-actions-menu {\n transform: translateY(-50%);\n}\n\n.ab-table .p-datatable-header {\n background: none;\n border: 0;\n}\n\n.ab-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-family: \"Roboto\", sans-serif;\n}\n\n.ab-toolbar__zone {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.ab-toolbar__rule {\n flex: 0 0 1px;\n width: 1px;\n height: 22px;\n background: #c8cdd6;\n margin: 0 2px;\n}\n\n.ab-toolbar__search {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 8px;\n padding: 7px 12px;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-toolbar__search:hover {\n border-color: #c8cdd6;\n}\n.ab-toolbar__search:focus-within {\n border-color: #3f3f3f;\n}\n.ab-toolbar__search > i {\n color: #6b7280;\n font-size: 12px;\n}\n.ab-toolbar__search > i.pi-times {\n cursor: pointer;\n font-size: 10.5px;\n}\n.ab-toolbar__search input.p-inputtext {\n border: 0;\n background: transparent;\n outline: none;\n box-shadow: none;\n padding: 0;\n height: auto;\n font-size: 12.5px;\n width: 200px;\n}\n\n.ab-tbtn {\n font-weight: 400;\n font-family: \"Roboto\", sans-serif;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n height: 32px;\n padding: 0 9px;\n background: #ffffff;\n color: #1a1e26;\n border: 1px solid #e0e3e8;\n border-radius: 6px;\n font-size: 12.5px;\n cursor: pointer;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-tbtn .material-icons {\n font-size: 18px;\n line-height: 1;\n color: #6b7280;\n}\n.ab-tbtn:hover:not(:disabled) {\n border-color: #c8cdd6;\n background: #f4f5f6;\n}\n.ab-tbtn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ab-picto-menu:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.ab-tbtn--icon {\n width: 32px;\n padding: 0;\n}\n\n.ab-tbtn--primary {\n background: #3f3f3f;\n border-color: #3f3f3f;\n color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n}\n.ab-tbtn--primary .material-icons {\n color: #ffffff;\n}\n.ab-tbtn--primary:hover:not(:disabled) {\n background: #1a1e26;\n border-color: #1a1e26;\n}\n\n.ab-tbtn--on {\n background: #e8eaee;\n border-color: #c8cdd6;\n}\n\n.ab-tbtn__chevron {\n font-size: 15px !important;\n margin-left: -2px;\n opacity: 0.7;\n}\n\n.ab-menu__item--danger {\n color: #dc2626;\n}\n.ab-menu__item--danger .material-icons {\n color: #dc2626;\n}\n.ab-menu__item--danger:hover:not(:disabled) {\n background: rgba(220, 38, 38, 0.08);\n}\n\n@keyframes abCountPulse {\n 0% {\n transform: scale(1);\n box-shadow: 0 0 0 0 rgba(63, 63, 63, 0.5);\n }\n 35% {\n transform: scale(1.28);\n box-shadow: 0 0 0 5px rgba(63, 63, 63, 0);\n }\n 100% {\n transform: scale(1);\n box-shadow: 0 0 0 0 rgba(63, 63, 63, 0);\n }\n}\n.ab-tbtn__count--pulse {\n animation: abCountPulse 420ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ab-tbtn__count--pulse {\n animation: none;\n }\n}\n.ab-tbtn__count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 17px;\n height: 17px;\n padding: 0 4px;\n border-radius: 9px;\n background: #3f3f3f;\n color: #ffffff;\n font-size: 10.5px;\n font-weight: 500;\n}\n\n.ab-toolbar__anchor {\n position: relative;\n display: inline-flex;\n}\n\n.ab-toolbar__pop {\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n z-index: 1000;\n background: #ffffff;\n border: 1px solid #e0e3e8;\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1215686275), 0 2px 6px rgba(0, 0, 0, 0.2392156863);\n overflow: hidden;\n text-align: left;\n}\n\n.ab-menu {\n min-width: 208px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.ab-menu__item {\n font-family: \"Roboto\", sans-serif;\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 10px;\n background: none;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-menu__item .material-icons {\n font-size: 16px;\n line-height: 1;\n color: #6b7280;\n flex: 0 0 16px;\n width: 16px;\n overflow: hidden;\n}\n.ab-menu__item:hover:not(:disabled) {\n background: #f4f5f6;\n}\n.ab-menu__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ab-brain {\n width: 580px;\n font-size: 13px;\n color: #1a1e26;\n}\n\n.ab-brain__corps {\n display: flex;\n align-items: stretch;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.ab-brain__sec--cols {\n flex: 0 0 288px;\n border-right: 1px solid #e0e3e8;\n border-bottom: 0;\n}\n\n.ab-brain__reglages {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-width: 0;\n}\n.ab-brain__reglages .ab-brain__foot {\n margin-top: auto;\n}\n.ab-brain__reglages .ab-brain__sec:last-of-type {\n border-bottom: 0;\n}\n\n.ab-brain__head {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 14px;\n background: #e8eaee;\n border-bottom: 1px solid #e0e3e8;\n font-weight: 500;\n font-size: 12.5px;\n}\n.ab-brain__head .material-icons {\n font-size: 17px;\n color: #6b7280;\n}\n\n.ab-brain__close {\n margin-left: auto;\n display: grid;\n place-items: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: none;\n color: #6b7280;\n cursor: pointer;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__close:hover {\n background: rgba(63, 63, 63, 0.08);\n color: #1a1e26;\n}\n.ab-brain__close:focus-visible {\n outline: 2px solid #3f3f3f;\n outline-offset: 1px;\n}\n.ab-brain__close .material-icons {\n font-size: 16px;\n color: inherit;\n}\n\n.ab-brain__sec {\n border-bottom: 1px solid #e0e3e8;\n padding: 12px 14px;\n}\n.ab-brain__sec:last-child {\n border-bottom: 0;\n}\n\n.ab-brain__sec-head {\n display: flex;\n align-items: baseline;\n gap: 10px;\n margin-bottom: 10px;\n}\n.ab-brain__sec-head .ab-brain__title {\n margin-bottom: 0;\n}\n\n.ab-brain__reinit {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 2px 4px;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 10.5px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: #6b7280;\n white-space: nowrap;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__reinit .material-icons {\n font-size: 13px;\n}\n.ab-brain__reinit:hover {\n color: #dc2626;\n background: rgba(220, 38, 38, 0.08);\n}\n\n.ab-brain__title {\n font-size: 10.5px;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: #6b7280;\n margin-bottom: 10px;\n}\n\n.ab-brain__cols {\n max-height: 216px;\n overflow-y: auto;\n margin: 0 -4px;\n}\n.ab-brain__cols::-webkit-scrollbar {\n width: 8px;\n}\n.ab-brain__cols::-webkit-scrollbar-thumb {\n background: #c8cdd6;\n border-radius: 4px;\n}\n\n.ab-col-row {\n display: flex;\n align-items: center;\n gap: 9px;\n width: 100%;\n padding: 6px 8px;\n border: 0;\n border-radius: 5px;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-col-row:hover {\n background: #f4f5f6;\n}\n.ab-col-row .ab-col-row__name {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ab-col-row:not(.is-on) .ab-col-row__name {\n color: #6b7280;\n}\n\n.ab-col-row__tick {\n flex: 0 0 15px;\n width: 15px;\n height: 15px;\n border: 1.5px solid #c8cdd6;\n border-radius: 3px;\n display: grid;\n place-items: center;\n}\n.ab-col-row__tick .material-icons {\n font-size: 13px;\n color: #ffffff;\n visibility: hidden;\n}\n.is-on .ab-col-row__tick {\n background: #3f3f3f;\n border-color: #3f3f3f;\n}\n.is-on .ab-col-row__tick .material-icons {\n visibility: visible;\n}\n\n.ab-seg {\n display: flex;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 7px;\n padding: 2px;\n gap: 2px;\n}\n\n.ab-seg__opt {\n flex: 1;\n font-family: \"Roboto\", sans-serif;\n font-size: 11.5px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 5px 4px;\n border: 0;\n border-radius: 5px;\n background: transparent;\n color: #6b7280;\n cursor: pointer;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-seg__opt[aria-pressed=true] {\n background: #ffffff;\n color: #1a1e26;\n font-weight: 500;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n}\n\n.ab-switch-row {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 6px 0;\n border: 0;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n}\n.ab-switch-row .ab-switch-row__label {\n flex: 1;\n}\n\n.ab-switch {\n position: relative;\n flex: 0 0 32px;\n width: 32px;\n height: 18px;\n border-radius: 9px;\n background: #c8cdd6;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.is-on .ab-switch {\n background: #3f3f3f;\n}\n.is-on .ab-switch::after {\n transform: translateX(14px);\n}\n\n.ab-brain__foot {\n padding: 10px 14px 12px;\n background: #f4f5f6;\n border-top: 1px solid #e0e3e8;\n}\n\n.ab-brain__reset {\n font-family: \"Roboto\", sans-serif;\n display: flex;\n align-items: center;\n gap: 7px;\n width: 100%;\n padding: 5px 0;\n background: none;\n border: 0;\n cursor: pointer;\n font-size: 12px;\n color: #dc2626;\n text-align: left;\n}\n.ab-brain__reset .material-icons {\n font-size: 15px;\n}\n.ab-brain__reset:hover {\n text-decoration: underline;\n}\n\n.ab-brain__reset--minor {\n color: #6b7280;\n font-size: 11.5px;\n padding: 3px 0 3px 22px;\n}\n\n.ab-brain__persist {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid #e0e3e8;\n font-size: 11px;\n color: #6b7280;\n}\n.ab-brain__persist .material-icons {\n font-size: 13px;\n}\n\n.ab-brain {\n max-height: min(72vh, 660px);\n display: flex;\n flex-direction: column;\n}\n\n.ab-brain__sec--cols {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n\n.ab-brain__cols {\n max-height: none;\n flex: 1 1 auto;\n min-height: 120px;\n}\n\n.ab-brain__title-note {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n margin-left: 8px;\n letter-spacing: 0;\n color: #3f3f3f;\n}\n.ab-brain__title-note .material-icons {\n font-size: 13px;\n}\n\n.ab-brain__search {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n padding: 5px 8px;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 6px;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__search:focus-within {\n border-color: #3f3f3f;\n}\n.ab-brain__search > .material-icons {\n font-size: 15px;\n color: #6b7280;\n}\n.ab-brain__search input {\n flex: 1;\n min-width: 0;\n border: 0;\n background: transparent;\n outline: none;\n font-family: \"Roboto\", sans-serif;\n font-size: 12.5px;\n color: #1a1e26;\n}\n.ab-brain__search input::placeholder {\n color: #b0b8c4;\n}\n\n.ab-brain__cols-legende {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 9px 5px 4px;\n border-bottom: 1px solid #e0e3e8;\n margin-bottom: 4px;\n font-size: 9.5px;\n font-weight: 500;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #6b7280;\n}\n\n.ab-brain__cols-legende__gauche {\n display: flex;\n align-items: center;\n gap: 7px;\n}\n\n.ab-brain__search-clear {\n display: inline-flex;\n padding: 0;\n border: 0;\n background: none;\n cursor: pointer;\n color: #6b7280;\n}\n.ab-brain__search-clear .material-icons {\n font-size: 14px;\n}\n.ab-brain__search-clear:hover {\n color: #1a1e26;\n}\n\n.ab-brain__vide {\n padding: 14px 8px;\n font-size: 12px;\n color: #6b7280;\n text-align: center;\n}\n\n.ab-col-row {\n padding: 0;\n background: none;\n}\n.ab-col-row:hover {\n background: #f4f5f6;\n}\n\n.ab-col-row__main {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 6px 4px 6px 8px;\n border: 0;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: inherit;\n text-align: left;\n}\n\n.ab-col-row__pin {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n padding: 5px 7px;\n border: 0;\n border-radius: 5px;\n background: none;\n cursor: pointer;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-col-row__pin .material-icons {\n font-size: 16px;\n}\n.ab-col-row__pin:hover:not(:disabled) {\n color: #1a1e26;\n background: #e8eaee;\n}\n.ab-col-row__pin:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.ab-col-row.is-pinned .ab-col-row__pin {\n color: #3f3f3f;\n}\n.ab-col-row.is-pinned .ab-col-row__pin .material-icons {\n transform: rotate(45deg);\n}\n\n.ab-th {\n display: flex;\n align-items: center;\n gap: 2px;\n width: 100%;\n min-width: 0;\n}\n\n.ab-th__label {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ab-th__btn,\n.ab-picto-menu {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-th__btn .material-icons,\n.ab-picto-menu .material-icons {\n font-size: 15px;\n}\n.ab-th__btn:hover,\n.ab-picto-menu:hover {\n color: #1a1e26;\n background: #ffffff;\n}\n\n@container (max-width: 77px) {\n .p-column-title {\n margin-left: -10px;\n margin-right: -10px;\n }\n .ab-th__btn {\n width: 18px;\n height: 18px;\n }\n .ab-th__btn .material-icons {\n font-size: 14px;\n }\n}\n.ab-menu__item.is-actif {\n background: rgba(63, 63, 63, 0.08);\n color: #1a1e26;\n font-weight: 500;\n}\n.ab-menu__item.is-actif .material-icons {\n color: #1a1e26;\n}\n.ab-menu__item.is-actif:hover {\n background: rgba(63, 63, 63, 0.14);\n}\n\n.ab-menu__item--gele .material-icons {\n transform: rotate(45deg);\n}\n\n.ab-menu__filet {\n height: 1px;\n margin: 3px 6px;\n background: #e0e3e8;\n}\n\ntable.ab-table thead th .p-column-header-content > [data-pc-section=sort] {\n display: none;\n}\n\n.ab-col-menu {\n right: auto;\n top: auto;\n z-index: 1200;\n}\n\n.ab-align--left .ab-table td {\n text-align: left;\n}\n.ab-align--left .ab-table td .div-col,\n.ab-align--left .ab-table td .div-col > * {\n justify-content: flex-start;\n}\n.ab-align--left .ab-th__label {\n text-align: left;\n}\n\n.ab-align--center .ab-table td {\n text-align: center;\n}\n.ab-align--center .ab-table td .div-col,\n.ab-align--center .ab-table td .div-col > * {\n justify-content: safe center;\n}\n.ab-align--center .ab-table td .div-col-select .p-dropdown-label,\n.ab-align--center .ab-table td .div-col-select-multiple .p-multiselect-label {\n justify-content: safe center;\n}\n.ab-align--center .ab-table td .div-col-select > div:not(.select-editor),\n.ab-align--center .ab-table td .div-col-select .p-dropdown-label {\n padding-left: 20px;\n padding-right: 20px;\n}\n.ab-align--center .ab-table td .div-col .ab-texte-limite,\n.ab-align--center .ab-table td .div-col .cell-text,\n.ab-align--center .ab-table td .div-col .tab_label,\n.ab-align--center .ab-table td .div-col p,\n.ab-align--center .ab-table td .div-col ul,\n.ab-align--center .ab-table td .div-col li {\n text-align: left;\n}\n.ab-align--center .ab-th__label {\n text-align: center;\n}\n.ab-align--center .ab-table td.row-actions-cell {\n text-align: center;\n}\n\n.ab-checkbox {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n border: 1.5px solid #e0e3e8;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: #ffffff;\n color: #ffffff;\n font-size: 10px;\n cursor: pointer;\n transition: all 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-checkbox.checked, .ab-checkbox.p-highlight {\n background-color: #3f3f3f;\n border-color: #3f3f3f;\n}\n.ab-checkbox.partial {\n background: linear-gradient(to top right, #3f3f3f 50%, transparent 50%);\n border-color: #3f3f3f;\n}\n.ab-checkbox {\n margin: auto;\n padding: 0;\n}\n.ab-checkbox .material-icons {\n font-size: 12px;\n line-height: 1;\n color: #ffffff;\n}\n.ab-checkbox:hover:not(.checked):not(.partial) {\n border-color: #c8cdd6;\n}\n\n.ab-menu__titre {\n padding: 7px 10px 4px;\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: #6b7280;\n}\n\n/* ═══════════════════════════════════════════════════════════════════════════\n LIGNE DE FILTRES — une seule épaisseur\n ═══════════════════════════════════════════════════════════════════════════\n Mesuré le 08/09/2026 sur la story `columnFilter` : la rangée alignait DEUX\n hauteurs de champ (40px et 45,5px), DEUX bordures (1px et 1,5px) et DEUX\n rayons (6px et 7px) — et un troisième format, 25,5px, dès qu'une colonne\n `index` était présente.\n\n La cause n'est pas un réglage oublié, c'est une origine différente pour\n chaque champ : les selects et le calendrier passent par le design system,\n donc par `@include field` (40px, bordure 1,5px, rayon 7px), alors que les\n champs texte sont des `InputText` NUS — ils prennent le `padding: 12px` du\n thème PrimeReact, d'où leurs 45,5px. Tous passent désormais par le même\n gabarit, et la hauteur est posée explicitement pour qu'aucune ne dérive.\n ═══════════════════════════════════════════════════════════════════════════ */\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label) {\n font-family: \"Roboto\", sans-serif;\n min-height: 40px;\n padding: 0 12px;\n background: #ffffff;\n border: 1.5px solid #e0e3e8;\n border-radius: 7px;\n color: #1a1e26;\n outline: none;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled) {\n border-color: #c8cdd6;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):focus, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):focus-within, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-open {\n border-color: #3f3f3f;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[disabled], table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[readonly], table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-readonly {\n background: #f4f5f6;\n cursor: default;\n box-shadow: none;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[readonly]:hover, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-readonly:hover {\n border-color: #e0e3e8;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-error {\n border-color: #dc2626;\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-success {\n border-color: #15803d;\n box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.12);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label) {\n height: 40px;\n font-size: 14px;\n width: 100%;\n min-width: 0;\n}\ntable.ab-table thead th.p-filter-column .p-dropdown,\ntable.ab-table thead th.p-filter-column .p-calendar {\n width: 100%;\n min-width: 0;\n font-size: 14px;\n}\ntable.ab-table thead th.p-filter-column .p-calendar > .p-inputtext {\n height: 40px !important;\n width: 100% !important;\n min-width: 0 !important;\n padding: 0 12px !important;\n border-width: 1.5px !important;\n border-radius: 7px !important;\n}\ntable.ab-table thead th.p-filter-column .p-calendar > .p-inputtext:not(.p-invalid) {\n border-color: #e0e3e8 !important;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext.ab-filtre-compact {\n padding-left: 4px;\n padding-right: 4px;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button {\n width: 32px;\n height: 32px;\n color: #6b7280;\n transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button.p-hidden-space {\n visibility: visible;\n opacity: 0.38;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button:hover {\n opacity: 1;\n color: #1a1e26;\n background: rgba(26, 30, 38, 0.06);\n}\n\ntable.ab-table thead th.ab-th--editable:not(.p-frozen-column) {\n background-color: color-mix(in srgb, #c8cdd6 70%, #e8eaee) !important;\n}\ntable.ab-table thead th.ab-th--editable:not(.p-frozen-column):hover {\n background-color: color-mix(in srgb, #c8cdd6 70%, #e8eaee) !important;\n}\n\ntd.ab-td--editable:not(.p-frozen-column) {\n position: relative;\n}\n\ntd.ab-td--editable::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-bottom: 5px solid #c8cdd6;\n pointer-events: none;\n}\n\ntd.ab-td--editable {\n cursor: pointer;\n}\n\ntd.ab-td--lecture {\n cursor: default;\n}\n\ntd.ab-td--obligatoire {\n box-shadow: inset 3px 0 0 #dc2626, inset 0 0 0 100vmax rgba(220, 38, 38, 0.06);\n}\ntd.ab-td--obligatoire .div-col > :first-child:not(:has(input, textarea, [contenteditable]))::before {\n content: \"warning\";\n font-family: \"Material Icons\";\n font-size: 16px;\n line-height: 1;\n font-style: normal;\n font-weight: normal;\n font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n color: #dc2626;\n align-self: center;\n vertical-align: middle;\n flex: none;\n margin-right: 4px;\n pointer-events: none;\n}\n\ntd.ab-td--facultatif {\n box-shadow: inset 3px 0 0 #d97706, inset 0 0 0 100vmax rgba(217, 119, 6, 0.06);\n}\ntd.ab-td--facultatif .div-col > :first-child:not(:has(input, textarea, [contenteditable]))::before {\n content: \"info\";\n font-family: \"Material Icons\";\n font-size: 16px;\n line-height: 1;\n font-style: normal;\n font-weight: normal;\n font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n color: #d97706;\n align-self: center;\n vertical-align: middle;\n flex: none;\n margin-right: 4px;\n pointer-events: none;\n}\n\ntr[style*=row-resize] > td {\n cursor: row-resize;\n}\n\ntable.ab-table thead tr th:has(> .p-column-filter) {\n background-color: #ffffff !important;\n}\n\ntable.ab-table:has(td.ab-td--editable) tbody td:not(.ab-td--editable):not(.row-actions-cell) {\n background-image: linear-gradient(135deg, rgba(200, 205, 214, 0.45) 0 12.5%, transparent 12.5% 50%, rgba(200, 205, 214, 0.45) 50% 62.5%, transparent 62.5% 100%);\n background-size: 8px 8px;\n background-origin: border-box;\n}\n\n.div-col {\n width: 100%;\n}\n\n.ab-picking {\n display: flex;\n justify-content: center;\n width: 100%;\n min-width: 24px;\n}\n\n.ab-picking__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n line-height: 0;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-picking__btn:hover {\n color: #1a1e26;\n background: #f4f5f6;\n}\n.ab-picking__btn.is-actif {\n color: #1a1e26;\n}\n\n.ab-picking__menu {\n right: auto;\n top: auto;\n z-index: 1200;\n overflow: visible;\n}\n.ab-picking__menu::before {\n content: \"\";\n position: absolute;\n top: -6px;\n left: var(--ab-picking-fleche, 17px);\n width: 10px;\n height: 10px;\n transform: translateX(-50%) rotate(45deg);\n background: #ffffff;\n border-left: 1px solid #e0e3e8;\n border-top: 1px solid #e0e3e8;\n}\n\n.ab-picking__libelle {\n flex: 1;\n white-space: nowrap;\n}\n\n.ab-picking__compteur {\n margin-left: 12px;\n font-size: 12px;\n color: #6b7280;\n font-variant-numeric: tabular-nums;\n}\n\n.ab-menu__item .ab-picto-lignes {\n flex: 0 0 16px;\n width: 16px;\n height: 16px;\n color: #6b7280;\n}\n\n.ab-menu__item.is-actif .ab-picto-lignes {\n color: #1a1e26;\n}";
|
|
48306
|
+
var css_248z$3 = "@charset \"UTF-8\";\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: scale(0.85);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes toastSlideIn {\n from {\n opacity: 0;\n transform: translateX(40px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes toastIconPop {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 60% {\n transform: scale(1.2);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n }\n}\n@keyframes toastTextSlide {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.p-paginator {\n font-size: 14px;\n}\n.p-paginator .p-paginator-first,\n.p-paginator .p-paginator-prev,\n.p-paginator .p-paginator-next,\n.p-paginator .p-paginator-last,\n.p-paginator .p-paginator-pages .p-paginator-page,\n.p-paginator .p-paginator-current,\n.p-paginator .p-dropdown .p-dropdown-label,\n.p-paginator .p-dropdown-item,\n.p-paginator .p-paginator-page-input .p-inputtext {\n font-size: 14px;\n}\n\n.p-datatable .p-datatable-tbody > tr.air-row--selected > td {\n background-color: #f0fdf8 !important;\n}\n\ntable.ab-table {\n background-color: #ffffff;\n font-family: \"Roboto\", sans-serif;\n table-layout: fixed;\n}\ntable.ab-table thead {\n border: 1px solid #e0e3e8;\n}\ntable.ab-table thead th {\n position: sticky;\n top: 0;\n z-index: 800;\n background-color: #e8eaee;\n border-bottom: 1px solid #e0e3e8;\n padding-top: 10px;\n padding-bottom: 10px;\n font-size: 14px;\n}\ntable.ab-table tbody tr {\n background-color: transparent;\n}\n\n.ab-table td {\n overflow: hidden;\n padding-top: 8px;\n padding-bottom: 8px;\n text-align: left;\n border-right: 1px solid #e8eaee;\n border-bottom: 1px solid #e8eaee;\n}\n\n.ab-table .cell-text {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr > td.p-frozen-column {\n z-index: 1;\n background: #fff !important;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td.p-frozen-column {\n background: #f4f5f6 !important;\n}\n\ntable.ab-table thead th.p-frozen-column:not(.row-actions-cell) {\n background: #fff !important;\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr > td.p-frozen-column.row-actions-cell,\n.p-datatable-scrollable .p-datatable-tbody > tr.p-row-odd > td.p-frozen-column.row-actions-cell {\n background: #ffffff !important;\n box-shadow: none !important;\n padding: 0 !important;\n border-right: 1px solid #e8eaee !important;\n}\n\n.p-datatable .p-datatable-thead > tr > th.row-actions-cell {\n background: #e8eaee !important;\n border: none !important;\n border-right: 1px solid #e0e3e8 !important;\n box-shadow: none !important;\n padding: 0 !important;\n}\n\ntable.ab-table td input.p-inputtext {\n box-sizing: border-box;\n min-height: 26px;\n padding: 0 8px;\n border: 1px solid #e0e3e8;\n border-radius: 3px;\n background: #ffffff;\n box-shadow: none;\n font-family: inherit;\n font-size: 13px;\n font-weight: 300;\n}\ntable.ab-table td input.p-inputtext:enabled:hover {\n border-color: #c8cdd6;\n}\ntable.ab-table td input.p-inputtext:enabled:focus {\n border-color: #3f3f3f;\n box-shadow: none;\n outline: none;\n}\n\n.ab-table .p-cell-editing input,\n.ab-table .p-cell-editing .p-inputtext,\n.ab-table .p-cell-editing .p-dropdown,\n.ab-table .p-cell-editing .p-multiselect,\n.ab-table .p-cell-editing .p-calendar {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.ab-table .cell-devise {\n display: flex;\n flex-direction: column;\n gap: 1.4px;\n font-size: 12.25px;\n}\n.ab-table .cell-devise--editable {\n cursor: pointer;\n}\n.ab-table .cell-devise--empty {\n display: block;\n width: 100%;\n height: 21px;\n cursor: pointer;\n}\n.ab-table .cell-devise .span-sub {\n font-size: 10.5px;\n color: #71717a;\n}\n\n.ab-table .devise-editor {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n padding: 3.5px 0;\n}\n.ab-table .devise-editor-fields {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n width: 100%;\n position: relative;\n}\n.ab-table .devise-editor-fields .p-dropdown-panel {\n position: absolute;\n z-index: 1000;\n top: 100%;\n left: 0;\n width: 100%;\n}\n.ab-table .devise-editor-save {\n align-self: flex-end;\n}\n\n.ab-table .p-cell-editing .devise-editor-fields input,\n.ab-table .p-cell-editing .devise-editor-fields .p-inputtext,\n.ab-table .p-cell-editing .devise-editor-fields .p-dropdown {\n width: 100%;\n min-width: 0;\n}\n\n.ab-table .select-editor .p-dropdown-label > div {\n min-width: 0;\n}\n.ab-table .select-editor .p-multiselect .p-multiselect-label-container {\n margin-right: 1.75rem;\n}\n\n.ab-table .div-col-select .ab-color-badge.is-selected,\n.ab-table .div-col-select-multiple .ab-color-badge.is-selected {\n animation: none;\n}\n.ab-table .div-col-select .ab-chips-lecture,\n.ab-table .div-col-select .p-multiselect .p-multiselect-label,\n.ab-table .div-col-select .p-dropdown .p-dropdown-label,\n.ab-table .div-col-select-multiple .ab-chips-lecture,\n.ab-table .div-col-select-multiple .p-multiselect .p-multiselect-label,\n.ab-table .div-col-select-multiple .p-dropdown .p-dropdown-label {\n overflow: clip visible !important;\n}\n.ab-table .div-col-select > div:not(.select-editor),\n.ab-table .div-col-select-multiple > div:not(.select-editor) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: 40px !important;\n padding: 0 20px 0 12px;\n border: 1.5px solid transparent;\n}\n.ab-table .div-col-select > div:not(.select-editor):focus-visible,\n.ab-table .div-col-select-multiple > div:not(.select-editor):focus-visible {\n outline: 2px solid #3f3f3f;\n outline-offset: -2px;\n}\n.ab-table .div-col-select > div:not(.select-editor) > *,\n.ab-table .div-col-select-multiple > div:not(.select-editor) > * {\n min-width: 0;\n max-width: 100%;\n}\n.ab-table .div-col-select .p-dropdown-trigger,\n.ab-table .div-col-select .p-multiselect-trigger,\n.ab-table .div-col-select-multiple .p-dropdown-trigger,\n.ab-table .div-col-select-multiple .p-multiselect-trigger {\n display: none;\n}\n.ab-table .div-col-select [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple [data-pc-section=clearicon] {\n right: 12px;\n opacity: 0;\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-table .div-col-select .ab-chips-lecture,\n.ab-table .div-col-select-multiple .ab-chips-lecture {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: 6px;\n width: 100%;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n}\n.ab-table .div-col-select .ab-chip-lecture,\n.ab-table .div-col-select-multiple .ab-chip-lecture {\n padding: 4px 4px 4px 8px;\n gap: 2px;\n margin: 0;\n flex: 0 1 auto;\n width: max-content;\n min-width: 0;\n}\n.ab-table .div-col-select .ab-chip-lecture .p-multiselect-token-icon,\n.ab-table .div-col-select-multiple .ab-chip-lecture .p-multiselect-token-icon {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n}\n.ab-table .div-col-select .p-multiselect .p-multiselect-label-container,\n.ab-table .div-col-select-multiple .p-multiselect .p-multiselect-label-container {\n margin-right: 34px;\n}\n.ab-table .div-col-select .dropdown-container .p-dropdown,\n.ab-table .div-col-select .multiselect-container .p-multiselect,\n.ab-table .div-col-select-multiple .dropdown-container .p-dropdown,\n.ab-table .div-col-select-multiple .multiselect-container .p-multiselect {\n border-color: transparent;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-table .div-col-select .p-dropdown.p-focus,\n.ab-table .div-col-select .p-multiselect.p-focus,\n.ab-table .div-col-select-multiple .p-dropdown.p-focus,\n.ab-table .div-col-select-multiple .p-multiselect.p-focus {\n border-color: #3f3f3f;\n}\n.ab-table .div-col-select .p-dropdown.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select .p-multiselect.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple .p-dropdown.p-focus [data-pc-section=clearicon],\n.ab-table .div-col-select-multiple .p-multiselect.p-focus [data-pc-section=clearicon] {\n opacity: 1;\n}\n\n.ab-table .div-col-select-multiple > div:not(.select-editor) {\n padding-right: 46px;\n}\n\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select .dropdown-container .p-dropdown,\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select-multiple .multiselect-container .p-multiselect {\n border-color: #c8cdd6;\n}\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select [data-pc-section=clearicon],\n.p-datatable .p-datatable-tbody > tr > td:hover .div-col-select-multiple [data-pc-section=clearicon] {\n opacity: 1;\n}\n\n.ab-table .doc-cell-empty {\n color: #aaa;\n font-size: 11.9px;\n}\n\n.ab-table .doc-cell {\n display: flex;\n flex-direction: column;\n gap: 3.5px;\n min-width: 0;\n overflow: hidden;\n}\n.ab-table .doc-cell-summary {\n display: flex;\n align-items: center;\n gap: 4.9px;\n font-size: 12.25px;\n min-width: 0;\n}\n.ab-table .doc-cell-summary .pi-paperclip {\n color: #71717a;\n font-size: 11.2px;\n flex-shrink: 0;\n}\n.ab-table .doc-cell-summary span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.ab-table .doc-cell-list {\n display: flex;\n flex-direction: column;\n gap: 2.1px;\n padding-left: 15.4px;\n font-size: 11.2px;\n}\n.ab-table .doc-cell-list div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ab-table .doc-cell-list a {\n color: #3b82f6;\n text-decoration: none;\n}\n.ab-table .doc-cell-list a:hover {\n text-decoration: underline;\n}\n\n.ab-table .doc-editor {\n display: flex;\n flex-direction: column;\n gap: 5.6px;\n padding: 3.5px 0;\n}\n.ab-table .doc-editor-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 11.2px;\n}\n.ab-table .doc-editor-table td {\n padding: 2.8px 4.9px;\n vertical-align: middle;\n}\n.ab-table .doc-editor-table td a {\n color: #3b82f6;\n text-decoration: none;\n word-break: break-all;\n}\n.ab-table .doc-editor-table td a:hover {\n text-decoration: underline;\n}\n.ab-table .doc-editor-table td:last-child {\n width: 28px;\n text-align: center;\n}\n.ab-table .doc-editor-add {\n display: inline-flex;\n align-items: center;\n gap: 4.2px;\n cursor: pointer;\n align-self: center;\n}\n\n.ab-table .ab-titre-box {\n overflow: hidden;\n min-width: 0;\n}\n\n.ab-table .table-item-title {\n display: -webkit-box !important;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--ab-title-lines, 1);\n line-height: 16px;\n min-width: 0 !important;\n white-space: normal;\n overflow-wrap: anywhere;\n overflow: hidden;\n max-height: var(--ab-content-max, none);\n}\n\n.p-datatable .p-column-header-content {\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n min-width: 0;\n padding: 0 1rem;\n overflow: hidden;\n container-type: inline-size;\n}\n\n.p-datatable .p-column-header-content .p-column-title {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.p-datatable .p-column-header-content [data-pc-section=sort] {\n flex: 0 0 auto;\n}\n\n@container (max-width: 77px) {\n .p-datatable .p-column-header-content [data-pc-section=sort] {\n display: none;\n }\n}\n.ab-table .tab_label {\n display: inline-block;\n padding: 5px 10px;\n font-size: 14px;\n font-weight: 600;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n border-radius: 5px;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n height: initial;\n}\n.ab-table .tab_label .tab_label-clear {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n min-height: 0;\n margin-left: 3px;\n margin-right: -3px;\n padding: 0;\n border: none;\n border-radius: 3px;\n background: none;\n color: inherit;\n opacity: 0.55;\n cursor: pointer;\n transition: opacity 0.12s, background-color 0.12s;\n}\n.ab-table .tab_label .tab_label-clear:hover, .ab-table .tab_label .tab_label-clear:focus-visible {\n outline: none;\n opacity: 1;\n background: rgba(0, 0, 0, 0.14);\n}\n\n.ab-table .badge,\n.ab-select-badge {\n padding: 8px 12px;\n border-radius: 5px;\n height: auto;\n margin: 2px;\n font-weight: 400;\n box-shadow: 2px 4px 5px grey;\n white-space: inherit;\n min-width: 90px;\n}\n.ab-table .badge:not(.badge-small),\n.ab-select-badge:not(.badge-small) {\n width: 100%;\n}\n\ntable.ab-table a.table-item-title {\n color: #2563eb;\n font-weight: 500;\n text-decoration: none;\n}\ntable.ab-table a.table-item-title:hover {\n color: #1d4ed8;\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.ab-table .RiskNumber-table div {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ab-table .RiskNumber-table div span {\n width: 30px;\n height: 30px;\n min-width: 30px;\n min-height: 30px;\n max-width: 30px;\n max-height: 30px;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.ab-table .RiskLabel-table .etiquetteMatrix-risque {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n min-height: 26px;\n width: fit-content;\n max-width: 190px;\n display: flex;\n justify-content: flex-start;\n border-radius: 3px;\n background-color: #fff;\n color: black;\n margin: 0;\n padding: 0;\n border: 0;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabelColor {\n min-width: 20px;\n max-width: 20px;\n margin-right: 5px;\n border-right: 1px solid rgba(0, 0, 0, 0.3607843137);\n border-radius: 3px 0 0 3px;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabel {\n font-size: 13px;\n font-weight: 300;\n padding: 3px 10px 3px 5px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: flex;\n align-items: center;\n}\n.ab-table .RiskLabel-table .etiquetteMatrix-risque .matrix-RisqueLabel > p {\n margin: 0;\n display: inline;\n font: inherit;\n}\n\n.ab-table .RiskOwner-table .risk_owner {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: max-content;\n}\n.ab-table .RiskOwner-table .risk_owner a {\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n padding: 5px 10px;\n border-radius: 5px;\n background-color: white;\n opacity: 1;\n margin: 2px;\n position: relative;\n}\n.ab-table .RiskOwner-table .risk_owner a:hover {\n z-index: 9999;\n}\n\n.ab-table .ab-cell-display--html {\n display: block !important;\n}\n\n.ab-table .ab-texte-limite {\n min-width: 0 !important;\n max-width: 100% !important;\n min-height: 0 !important;\n max-height: var(--ab-content-max, none) !important;\n margin: 0;\n overflow: hidden;\n text-align: left;\n white-space: normal;\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--ab-html-lines, none);\n line-height: 17px !important;\n font-size: 14px;\n}\n.ab-table .ab-texte-limite p {\n line-height: 17px !important;\n font-size: 14px;\n margin: 0;\n}\n.ab-table .ab-texte-limite p,\n.ab-table .ab-texte-limite div,\n.ab-table .ab-texte-limite ul,\n.ab-table .ab-texte-limite ol,\n.ab-table .ab-texte-limite li,\n.ab-table .ab-texte-limite blockquote,\n.ab-table .ab-texte-limite h1,\n.ab-table .ab-texte-limite h2,\n.ab-table .ab-texte-limite h3,\n.ab-table .ab-texte-limite h4,\n.ab-table .ab-texte-limite h5,\n.ab-table .ab-texte-limite h6 {\n display: inline;\n margin: 0;\n padding: 0;\n font-size: 14px;\n line-height: 17px !important;\n}\n.ab-table .ab-texte-limite h1,\n.ab-table .ab-texte-limite h2,\n.ab-table .ab-texte-limite h3,\n.ab-table .ab-texte-limite h4,\n.ab-table .ab-texte-limite h5,\n.ab-table .ab-texte-limite h6,\n.ab-table .ab-texte-limite strong,\n.ab-table .ab-texte-limite b {\n font-weight: 600;\n}\n.ab-table .ab-texte-limite p::after,\n.ab-table .ab-texte-limite div::after,\n.ab-table .ab-texte-limite blockquote::after,\n.ab-table .ab-texte-limite h1::after,\n.ab-table .ab-texte-limite h2::after,\n.ab-table .ab-texte-limite h3::after,\n.ab-table .ab-texte-limite h4::after,\n.ab-table .ab-texte-limite h5::after,\n.ab-table .ab-texte-limite h6::after {\n content: \" \";\n}\n.ab-table .ab-texte-limite li + li::before {\n content: \" · \";\n color: #6b7280;\n}\n\n.ab-table .action-picto .picto {\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4705882353);\n padding: 5px 10px;\n border-radius: 5px;\n margin: 5px;\n}\n\n.ab-table .RiskClusters-table .RiskClusters {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n padding: 5px 19px;\n background-color: rgba(255, 255, 255, 0.5098039216);\n border-radius: 5px;\n opacity: 1;\n position: relative;\n margin: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ab-table .RiskClusters-table .RiskClusters .material-icons {\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3137254902);\n}\n\n.ab-table .progress_bar_menu {\n position: relative;\n height: 20px;\n margin: 0;\n}\n\n.ab-table .progress_bar_menu_black {\n width: 100%;\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n height: 6px;\n background-color: #b0bec5;\n border-radius: 3px;\n text-align: left;\n}\n\n.ab-table .progress_bar_menu_load {\n border-radius: 3px;\n height: 6px;\n background-color: #136b89;\n}\n\n.ab-table .progress_bar_menu_info {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n z-index: 1;\n padding: 1px 7px;\n border: 1px solid #e0e3e8;\n border-radius: 999px;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n color: #3f535f;\n font-weight: bold;\n font-size: 11px;\n line-height: 1.45;\n white-space: nowrap;\n}\n.ab-table .progress_bar_menu_info a {\n color: inherit;\n text-decoration: none;\n}\n\n.ab-table .div-col {\n width: 100%;\n}\n\n.ab-table .div-col:not(.div-col-select):not(.div-col-select-multiple) {\n max-height: var(--ab-content-max, none);\n overflow: clip;\n overflow-clip-margin: 6px;\n}\n\n.ab-table .ab-cell-scroll {\n max-height: var(--ab-cell-max, none);\n overflow-y: auto;\n}\n\n.ab-table .tab_label {\n max-width: 100%;\n}\n\ntable.ab-table thead th {\n background-color: #e8eaee !important;\n border-right: 1px solid #e0e3e8 !important;\n border-bottom: 1px solid #e0e3e8 !important;\n}\ntable.ab-table thead th:hover {\n background-color: #e8eaee !important;\n}\ntable.ab-table thead th:last-child {\n border-right: 0 !important;\n}\n\ntable.ab-table .p-column-resizer {\n width: 15px;\n cursor: col-resize;\n border: 0;\n height: auto;\n top: 0;\n bottom: -1px;\n}\n\ntable.ab-table thead th:not(.row-actions-cell):not(:has(> .p-column-filter)) {\n overflow: visible;\n padding-left: 0;\n padding-right: 0;\n}\n\ntable.ab-table thead th:nth-child(1) {\n z-index: 839 !important;\n}\n\ntable.ab-table thead th:nth-child(2) {\n z-index: 838 !important;\n}\n\ntable.ab-table thead th:nth-child(3) {\n z-index: 837 !important;\n}\n\ntable.ab-table thead th:nth-child(4) {\n z-index: 836 !important;\n}\n\ntable.ab-table thead th:nth-child(5) {\n z-index: 835 !important;\n}\n\ntable.ab-table thead th:nth-child(6) {\n z-index: 834 !important;\n}\n\ntable.ab-table thead th:nth-child(7) {\n z-index: 833 !important;\n}\n\ntable.ab-table thead th:nth-child(8) {\n z-index: 832 !important;\n}\n\ntable.ab-table thead th:nth-child(9) {\n z-index: 831 !important;\n}\n\ntable.ab-table thead th:nth-child(10) {\n z-index: 830 !important;\n}\n\ntable.ab-table thead th:nth-child(11) {\n z-index: 829 !important;\n}\n\ntable.ab-table thead th:nth-child(12) {\n z-index: 828 !important;\n}\n\ntable.ab-table thead th:nth-child(13) {\n z-index: 827 !important;\n}\n\ntable.ab-table thead th:nth-child(14) {\n z-index: 826 !important;\n}\n\ntable.ab-table thead th:nth-child(15) {\n z-index: 825 !important;\n}\n\ntable.ab-table thead th:nth-child(16) {\n z-index: 824 !important;\n}\n\ntable.ab-table thead th:nth-child(17) {\n z-index: 823 !important;\n}\n\ntable.ab-table thead th:nth-child(18) {\n z-index: 822 !important;\n}\n\ntable.ab-table thead th:nth-child(19) {\n z-index: 821 !important;\n}\n\ntable.ab-table thead th:nth-child(20) {\n z-index: 820 !important;\n}\n\ntable.ab-table thead th:nth-child(21) {\n z-index: 819 !important;\n}\n\ntable.ab-table thead th:nth-child(22) {\n z-index: 818 !important;\n}\n\ntable.ab-table thead th:nth-child(23) {\n z-index: 817 !important;\n}\n\ntable.ab-table thead th:nth-child(24) {\n z-index: 816 !important;\n}\n\ntable.ab-table thead th:nth-child(25) {\n z-index: 815 !important;\n}\n\ntable.ab-table thead th:nth-child(26) {\n z-index: 814 !important;\n}\n\ntable.ab-table thead th:nth-child(27) {\n z-index: 813 !important;\n}\n\ntable.ab-table thead th:nth-child(28) {\n z-index: 812 !important;\n}\n\ntable.ab-table thead th:nth-child(29) {\n z-index: 811 !important;\n}\n\ntable.ab-table thead th:nth-child(30) {\n z-index: 810 !important;\n}\n\ntable.ab-table thead th:nth-child(31) {\n z-index: 809 !important;\n}\n\ntable.ab-table thead th:nth-child(32) {\n z-index: 808 !important;\n}\n\ntable.ab-table thead th:nth-child(33) {\n z-index: 807 !important;\n}\n\ntable.ab-table thead th:nth-child(34) {\n z-index: 806 !important;\n}\n\ntable.ab-table thead th:nth-child(35) {\n z-index: 805 !important;\n}\n\ntable.ab-table thead th:nth-child(36) {\n z-index: 804 !important;\n}\n\ntable.ab-table thead th:nth-child(37) {\n z-index: 803 !important;\n}\n\ntable.ab-table thead th:nth-child(38) {\n z-index: 802 !important;\n}\n\ntable.ab-table thead th:nth-child(39) {\n z-index: 801 !important;\n}\n\ntable.ab-table thead th:nth-child(40) {\n z-index: 800 !important;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: -15px;\n background: linear-gradient(to right, transparent calc(50% - 1px), #000 calc(50% - 1px), #000 calc(50% + 1px), transparent calc(50% + 1px));\n opacity: 0;\n transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer::after {\n content: \"\";\n position: absolute;\n top: 50%;\n right: calc(-16px - 2px * 0.5);\n width: 30px;\n height: 30px;\n transform: translateY(-50%);\n border-radius: 50%;\n background: #000 url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='8'%3E%3Cpath d='M5 0v8L0 4z' fill='%23fff'/%3E%3Cpath d='M11 0v8l5-4z' fill='%23fff'/%3E%3C/svg%3E\") center/16px 8px no-repeat;\n opacity: 0;\n transform: translateY(-50%) scale(0.35);\n transition: opacity 240ms cubic-bezier(0.4, 0, 0.2, 1), transform 240ms cubic-bezier(0.34, 1.3, 0.64, 1);\n}\n\ntable.ab-table thead th:not(.row-actions-cell):hover .p-column-resizer::before {\n opacity: 1;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer:hover::before {\n opacity: 0;\n}\n\ntable.ab-table thead th:not(.row-actions-cell) .p-column-resizer:hover::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n}\n\n.p-datatable.p-component .p-column-resizer-helper {\n width: 2px;\n top: var(--ab-th-top, 0px) !important;\n height: var(--ab-trait-h, calc(100% - var(--ab-th-top, 0px))) !important;\n background: transparent;\n pointer-events: none;\n transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-datatable.p-component .p-column-resizer-helper::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: #000;\n transform-origin: center calc(var(--ab-thead-h, 42px) / 2);\n transform: scaleY(1);\n transition: transform 300ms cubic-bezier(0.2, 0.75, 0.2, 1) 70ms, background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque {\n opacity: 0;\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque::after {\n transform: scaleY(0);\n transition-delay: 0s;\n}\n.p-datatable.p-component .p-column-resizer-helper::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n right: 100%;\n width: 90px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 160ms cubic-bezier(0.4, 0, 0.2, 1);\n background: linear-gradient(to left, color-mix(in srgb, #dc2626 13%, transparent), color-mix(in srgb, #dc2626 5%, transparent) 45%, transparent);\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--butee::after {\n background: #dc2626;\n}\n.p-datatable.p-component .p-column-resizer-helper.ab-resizer--butee::before {\n opacity: 1;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .p-datatable.p-component .p-column-resizer-helper,\n .p-datatable.p-component .p-column-resizer-helper::before,\n .p-datatable.p-component .p-column-resizer-helper::after,\n table.ab-table thead th .p-column-resizer::before,\n table.ab-table thead th .p-column-resizer::after {\n transition: none;\n }\n table.ab-table thead th .p-column-resizer::after,\n table.ab-table thead th .p-column-resizer:hover::after {\n transform: translateY(-50%) scale(1);\n }\n .p-datatable.p-component .p-column-resizer-helper::after,\n .p-datatable.p-component .p-column-resizer-helper.ab-resizer--masque::after {\n transform: scaleY(1);\n }\n}\n.ab-row-resizer-helper {\n position: absolute;\n height: 1px;\n margin-top: calc(1px * -0.5);\n z-index: 10;\n pointer-events: none;\n transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-row-resizer-helper::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: #000;\n transform-origin: center center;\n transform: scaleX(1);\n transition: transform 300ms cubic-bezier(0.2, 0.75, 0.2, 1) 70ms;\n}\n.ab-row-resizer-helper.ab-resizer--masque {\n opacity: 0;\n}\n.ab-row-resizer-helper.ab-resizer--masque::after {\n transform: scaleX(0);\n transition-delay: 0s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ab-row-resizer-helper,\n .ab-row-resizer-helper::after {\n transition: none;\n }\n .ab-row-resizer-helper.ab-resizer--masque::after {\n transform: scaleX(1);\n }\n}\ntable.ab-table thead th {\n text-align: left;\n cursor: grab;\n}\ntable.ab-table thead th:active {\n cursor: grabbing;\n}\n\ntable.ab-table thead th [data-pc-section=sort] {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border-radius: 5px;\n background: #f4f5f6;\n color: #b0b8c4;\n cursor: pointer;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\ntable.ab-table thead th [data-pc-section=sort]:hover {\n background: #e0e3e8;\n color: #1a1e26;\n}\ntable.ab-table thead th [data-pc-section=sort] .p-sortable-column-icon {\n margin: 0;\n background: none;\n}\n\ntable.ab-table thead th.p-highlight [data-pc-section=sort] {\n background: color-mix(in srgb, #3f3f3f 12%, transparent);\n color: #3f3f3f;\n}\n\n.p-datatable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td {\n background-color: #f4f5f6;\n}\n\n.p-datatable .p-datatable-tbody > tr:hover > td.ab-td--editable:hover {\n background-color: color-mix(in srgb, #c8cdd6 55%, #f4f5f6);\n}\n\n.p-datatable-scrollable .p-datatable-tbody > tr:has(> td.ab-td--editable):hover > td.p-frozen-column:not(.row-actions-cell) {\n background: #f4f5f6 !important;\n}\n\n.ab-row-actions-menu {\n transform: translateY(-50%);\n}\n\n.ab-table .p-datatable-header {\n background: none;\n border: 0;\n}\n\n.ab-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-family: \"Roboto\", sans-serif;\n}\n\n.ab-toolbar__zone {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.ab-toolbar__rule {\n flex: 0 0 1px;\n width: 1px;\n height: 22px;\n background: #c8cdd6;\n margin: 0 2px;\n}\n\n.ab-toolbar__search {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 8px;\n padding: 7px 12px;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-toolbar__search:hover {\n border-color: #c8cdd6;\n}\n.ab-toolbar__search:focus-within {\n border-color: #3f3f3f;\n}\n.ab-toolbar__search > i {\n color: #6b7280;\n font-size: 12px;\n}\n.ab-toolbar__search > i.pi-times {\n cursor: pointer;\n font-size: 10.5px;\n}\n.ab-toolbar__search input.p-inputtext {\n border: 0;\n background: transparent;\n outline: none;\n box-shadow: none;\n padding: 0;\n height: auto;\n font-size: 12.5px;\n width: 200px;\n}\n\n.ab-tbtn {\n font-weight: 400;\n font-family: \"Roboto\", sans-serif;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n height: 32px;\n padding: 0 9px;\n background: #ffffff;\n color: #1a1e26;\n border: 1px solid #e0e3e8;\n border-radius: 6px;\n font-size: 12.5px;\n cursor: pointer;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-tbtn .material-icons {\n font-size: 18px;\n line-height: 1;\n color: #6b7280;\n}\n.ab-tbtn:hover:not(:disabled) {\n border-color: #c8cdd6;\n background: #f4f5f6;\n}\n.ab-tbtn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ab-picto-menu:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.ab-tbtn--icon {\n width: 32px;\n padding: 0;\n}\n\n.ab-tbtn--primary {\n background: #3f3f3f;\n border-color: #3f3f3f;\n color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n}\n.ab-tbtn--primary .material-icons {\n color: #ffffff;\n}\n.ab-tbtn--primary:hover:not(:disabled) {\n background: #1a1e26;\n border-color: #1a1e26;\n}\n\n.ab-tbtn--on {\n background: #e8eaee;\n border-color: #c8cdd6;\n}\n\n.ab-tbtn__chevron {\n font-size: 15px !important;\n margin-left: -2px;\n opacity: 0.7;\n}\n\n.ab-menu__item--danger {\n color: #dc2626;\n}\n.ab-menu__item--danger .material-icons {\n color: #dc2626;\n}\n.ab-menu__item--danger:hover:not(:disabled) {\n background: rgba(220, 38, 38, 0.08);\n}\n\n@keyframes abCountPulse {\n 0% {\n transform: scale(1);\n box-shadow: 0 0 0 0 rgba(63, 63, 63, 0.5);\n }\n 35% {\n transform: scale(1.28);\n box-shadow: 0 0 0 5px rgba(63, 63, 63, 0);\n }\n 100% {\n transform: scale(1);\n box-shadow: 0 0 0 0 rgba(63, 63, 63, 0);\n }\n}\n.ab-tbtn__count--pulse {\n animation: abCountPulse 420ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ab-tbtn__count--pulse {\n animation: none;\n }\n}\n.ab-tbtn__count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 17px;\n height: 17px;\n padding: 0 4px;\n border-radius: 9px;\n background: #3f3f3f;\n color: #ffffff;\n font-size: 10.5px;\n font-weight: 500;\n}\n\n.ab-toolbar__anchor {\n position: relative;\n display: inline-flex;\n}\n\n.ab-toolbar__pop {\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n z-index: 1000;\n background: #ffffff;\n border: 1px solid #e0e3e8;\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1215686275), 0 2px 6px rgba(0, 0, 0, 0.2392156863);\n overflow: hidden;\n text-align: left;\n}\n\n.ab-menu {\n min-width: 208px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.ab-menu__item {\n font-family: \"Roboto\", sans-serif;\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 10px;\n background: none;\n border: 0;\n border-radius: 5px;\n cursor: pointer;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-menu__item .material-icons {\n font-size: 16px;\n line-height: 1;\n color: #6b7280;\n flex: 0 0 16px;\n width: 16px;\n overflow: hidden;\n}\n.ab-menu__item:hover:not(:disabled) {\n background: #f4f5f6;\n}\n.ab-menu__item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ab-brain {\n width: 580px;\n font-size: 13px;\n color: #1a1e26;\n}\n\n.ab-brain__corps {\n display: flex;\n align-items: stretch;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.ab-brain__sec--cols {\n flex: 0 0 288px;\n border-right: 1px solid #e0e3e8;\n border-bottom: 0;\n}\n\n.ab-brain__reglages {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-width: 0;\n}\n.ab-brain__reglages .ab-brain__foot {\n margin-top: auto;\n}\n.ab-brain__reglages .ab-brain__sec:last-of-type {\n border-bottom: 0;\n}\n\n.ab-brain__head {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 14px;\n background: #e8eaee;\n border-bottom: 1px solid #e0e3e8;\n font-weight: 500;\n font-size: 12.5px;\n}\n.ab-brain__head .material-icons {\n font-size: 17px;\n color: #6b7280;\n}\n\n.ab-brain__close {\n margin-left: auto;\n display: grid;\n place-items: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: none;\n color: #6b7280;\n cursor: pointer;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__close:hover {\n background: rgba(63, 63, 63, 0.08);\n color: #1a1e26;\n}\n.ab-brain__close:focus-visible {\n outline: 2px solid #3f3f3f;\n outline-offset: 1px;\n}\n.ab-brain__close .material-icons {\n font-size: 16px;\n color: inherit;\n}\n\n.ab-brain__sec {\n border-bottom: 1px solid #e0e3e8;\n padding: 12px 14px;\n}\n.ab-brain__sec:last-child {\n border-bottom: 0;\n}\n\n.ab-brain__sec-head {\n display: flex;\n align-items: baseline;\n gap: 10px;\n margin-bottom: 10px;\n}\n.ab-brain__sec-head .ab-brain__title {\n margin-bottom: 0;\n}\n\n.ab-brain__reinit {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 2px 4px;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 10.5px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: #6b7280;\n white-space: nowrap;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__reinit .material-icons {\n font-size: 13px;\n}\n.ab-brain__reinit:hover {\n color: #dc2626;\n background: rgba(220, 38, 38, 0.08);\n}\n\n.ab-brain__title {\n font-size: 10.5px;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: #6b7280;\n margin-bottom: 10px;\n}\n\n.ab-brain__cols {\n max-height: 216px;\n overflow-y: auto;\n margin: 0 -4px;\n}\n.ab-brain__cols::-webkit-scrollbar {\n width: 8px;\n}\n.ab-brain__cols::-webkit-scrollbar-thumb {\n background: #c8cdd6;\n border-radius: 4px;\n}\n\n.ab-col-row {\n display: flex;\n align-items: center;\n gap: 9px;\n width: 100%;\n padding: 6px 8px;\n border: 0;\n border-radius: 5px;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-col-row:hover {\n background: #f4f5f6;\n}\n.ab-col-row .ab-col-row__name {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ab-col-row:not(.is-on) .ab-col-row__name {\n color: #6b7280;\n}\n\n.ab-col-row__tick {\n flex: 0 0 15px;\n width: 15px;\n height: 15px;\n border: 1.5px solid #c8cdd6;\n border-radius: 3px;\n display: grid;\n place-items: center;\n}\n.ab-col-row__tick .material-icons {\n font-size: 13px;\n color: #ffffff;\n visibility: hidden;\n}\n.is-on .ab-col-row__tick {\n background: #3f3f3f;\n border-color: #3f3f3f;\n}\n.is-on .ab-col-row__tick .material-icons {\n visibility: visible;\n}\n\n.ab-seg {\n display: flex;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 7px;\n padding: 2px;\n gap: 2px;\n}\n\n.ab-seg__opt {\n flex: 1;\n font-family: \"Roboto\", sans-serif;\n font-size: 11.5px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 5px 4px;\n border: 0;\n border-radius: 5px;\n background: transparent;\n color: #6b7280;\n cursor: pointer;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-seg__opt[aria-pressed=true] {\n background: #ffffff;\n color: #1a1e26;\n font-weight: 500;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n}\n\n.ab-switch-row {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 6px 0;\n border: 0;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: #1a1e26;\n text-align: left;\n}\n.ab-switch-row .ab-switch-row__label {\n flex: 1;\n}\n\n.ab-switch {\n position: relative;\n flex: 0 0 32px;\n width: 32px;\n height: 18px;\n border-radius: 9px;\n background: #c8cdd6;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1215686275), 0 1px 2px rgba(0, 0, 0, 0.2392156863);\n transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.is-on .ab-switch {\n background: #3f3f3f;\n}\n.is-on .ab-switch::after {\n transform: translateX(14px);\n}\n\n.ab-brain__foot {\n padding: 10px 14px 12px;\n background: #f4f5f6;\n border-top: 1px solid #e0e3e8;\n}\n\n.ab-brain__reset {\n font-family: \"Roboto\", sans-serif;\n display: flex;\n align-items: center;\n gap: 7px;\n width: 100%;\n padding: 5px 0;\n background: none;\n border: 0;\n cursor: pointer;\n font-size: 12px;\n color: #dc2626;\n text-align: left;\n}\n.ab-brain__reset .material-icons {\n font-size: 15px;\n}\n.ab-brain__reset:hover {\n text-decoration: underline;\n}\n\n.ab-brain__reset--minor {\n color: #6b7280;\n font-size: 11.5px;\n padding: 3px 0 3px 22px;\n}\n\n.ab-brain__persist {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid #e0e3e8;\n font-size: 11px;\n color: #6b7280;\n}\n.ab-brain__persist .material-icons {\n font-size: 13px;\n}\n\n.ab-brain {\n max-height: min(72vh, 660px);\n display: flex;\n flex-direction: column;\n}\n\n.ab-brain__sec--cols {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n}\n\n.ab-brain__cols {\n max-height: none;\n flex: 1 1 auto;\n min-height: 120px;\n}\n\n.ab-brain__title-note {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n margin-left: 8px;\n letter-spacing: 0;\n color: #3f3f3f;\n}\n.ab-brain__title-note .material-icons {\n font-size: 13px;\n}\n\n.ab-brain__search {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n padding: 5px 8px;\n background: #f4f5f6;\n border: 1px solid #e0e3e8;\n border-radius: 6px;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-brain__search:focus-within {\n border-color: #3f3f3f;\n}\n.ab-brain__search > .material-icons {\n font-size: 15px;\n color: #6b7280;\n}\n.ab-brain__search input {\n flex: 1;\n min-width: 0;\n border: 0;\n background: transparent;\n outline: none;\n font-family: \"Roboto\", sans-serif;\n font-size: 12.5px;\n color: #1a1e26;\n}\n.ab-brain__search input::placeholder {\n color: #b0b8c4;\n}\n\n.ab-brain__cols-legende {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 9px 5px 4px;\n border-bottom: 1px solid #e0e3e8;\n margin-bottom: 4px;\n font-size: 9.5px;\n font-weight: 500;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #6b7280;\n}\n\n.ab-brain__cols-legende__gauche {\n display: flex;\n align-items: center;\n gap: 7px;\n}\n\n.ab-brain__search-clear {\n display: inline-flex;\n padding: 0;\n border: 0;\n background: none;\n cursor: pointer;\n color: #6b7280;\n}\n.ab-brain__search-clear .material-icons {\n font-size: 14px;\n}\n.ab-brain__search-clear:hover {\n color: #1a1e26;\n}\n\n.ab-brain__vide {\n padding: 14px 8px;\n font-size: 12px;\n color: #6b7280;\n text-align: center;\n}\n\n.ab-col-row {\n padding: 0;\n background: none;\n}\n.ab-col-row:hover {\n background: #f4f5f6;\n}\n\n.ab-col-row__main {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 6px 4px 6px 8px;\n border: 0;\n background: none;\n cursor: pointer;\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n color: inherit;\n text-align: left;\n}\n\n.ab-col-row__pin {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n padding: 5px 7px;\n border: 0;\n border-radius: 5px;\n background: none;\n cursor: pointer;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-col-row__pin .material-icons {\n font-size: 16px;\n}\n.ab-col-row__pin:hover:not(:disabled) {\n color: #1a1e26;\n background: #e8eaee;\n}\n.ab-col-row__pin:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.ab-col-row.is-pinned .ab-col-row__pin {\n color: #3f3f3f;\n}\n.ab-col-row.is-pinned .ab-col-row__pin .material-icons {\n transform: rotate(45deg);\n}\n\n.ab-th {\n display: flex;\n align-items: center;\n gap: 2px;\n width: 100%;\n min-width: 0;\n}\n\n.ab-th__label {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ab-th__btn,\n.ab-picto-menu {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-th__btn .material-icons,\n.ab-picto-menu .material-icons {\n font-size: 15px;\n}\n.ab-th__btn:hover,\n.ab-picto-menu:hover {\n color: #1a1e26;\n background: #ffffff;\n}\n\n@container (max-width: 77px) {\n .p-column-title {\n margin-left: -10px;\n margin-right: -10px;\n }\n .ab-th__btn {\n width: 18px;\n height: 18px;\n }\n .ab-th__btn .material-icons {\n font-size: 14px;\n }\n}\n.ab-menu__item.is-actif {\n background: rgba(63, 63, 63, 0.08);\n color: #1a1e26;\n font-weight: 500;\n}\n.ab-menu__item.is-actif .material-icons {\n color: #1a1e26;\n}\n.ab-menu__item.is-actif:hover {\n background: rgba(63, 63, 63, 0.14);\n}\n\n.ab-menu__item--gele .material-icons {\n transform: rotate(45deg);\n}\n\n.ab-menu__filet {\n height: 1px;\n margin: 3px 6px;\n background: #e0e3e8;\n}\n\ntable.ab-table thead th .p-column-header-content > [data-pc-section=sort] {\n display: none;\n}\n\n.ab-col-menu {\n right: auto;\n top: auto;\n z-index: 1200;\n}\n\n.ab-align--left .ab-table td {\n text-align: left;\n}\n.ab-align--left .ab-table td .div-col,\n.ab-align--left .ab-table td .div-col > * {\n justify-content: flex-start;\n}\n.ab-align--left .ab-th__label {\n text-align: left;\n}\n\n.ab-align--center .ab-table td {\n text-align: center;\n}\n.ab-align--center .ab-table td .div-col,\n.ab-align--center .ab-table td .div-col > * {\n justify-content: safe center;\n}\n.ab-align--center .ab-table td .div-col-select .p-dropdown-label,\n.ab-align--center .ab-table td .div-col-select-multiple .p-multiselect-label {\n justify-content: safe center;\n}\n.ab-align--center .ab-table td .div-col-select > div:not(.select-editor),\n.ab-align--center .ab-table td .div-col-select .p-dropdown-label {\n padding-left: 20px;\n padding-right: 20px;\n}\n.ab-align--center .ab-table td .div-col .ab-texte-limite,\n.ab-align--center .ab-table td .div-col .cell-text,\n.ab-align--center .ab-table td .div-col .tab_label,\n.ab-align--center .ab-table td .div-col p,\n.ab-align--center .ab-table td .div-col ul,\n.ab-align--center .ab-table td .div-col li {\n text-align: left;\n}\n.ab-align--center .ab-th__label {\n text-align: center;\n}\n.ab-align--center .ab-table td.row-actions-cell {\n text-align: center;\n}\n\n.ab-checkbox {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n border: 1.5px solid #e0e3e8;\n border-radius: 3px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: #ffffff;\n color: #ffffff;\n font-size: 10px;\n cursor: pointer;\n transition: all 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-checkbox.checked, .ab-checkbox.p-highlight {\n background-color: #3f3f3f;\n border-color: #3f3f3f;\n}\n.ab-checkbox.partial {\n background: linear-gradient(to top right, #3f3f3f 50%, transparent 50%);\n border-color: #3f3f3f;\n}\n.ab-checkbox {\n margin: auto;\n padding: 0;\n}\n.ab-checkbox .material-icons {\n font-size: 12px;\n line-height: 1;\n color: #ffffff;\n}\n.ab-checkbox:hover:not(.checked):not(.partial) {\n border-color: #c8cdd6;\n}\n\n.ab-menu__titre {\n padding: 7px 10px 4px;\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 0.09em;\n text-transform: uppercase;\n color: #6b7280;\n}\n\n/* ═══════════════════════════════════════════════════════════════════════════\n LIGNE DE FILTRES — une seule épaisseur\n ═══════════════════════════════════════════════════════════════════════════\n Mesuré le 08/09/2026 sur la story `columnFilter` : la rangée alignait DEUX\n hauteurs de champ (40px et 45,5px), DEUX bordures (1px et 1,5px) et DEUX\n rayons (6px et 7px) — et un troisième format, 25,5px, dès qu'une colonne\n `index` était présente.\n\n La cause n'est pas un réglage oublié, c'est une origine différente pour\n chaque champ : les selects et le calendrier passent par le design system,\n donc par `@include field` (40px, bordure 1,5px, rayon 7px), alors que les\n champs texte sont des `InputText` NUS — ils prennent le `padding: 12px` du\n thème PrimeReact, d'où leurs 45,5px. Tous passent désormais par le même\n gabarit, et la hauteur est posée explicitement pour qu'aucune ne dérive.\n ═══════════════════════════════════════════════════════════════════════════ */\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label) {\n font-family: \"Roboto\", sans-serif;\n min-height: 40px;\n padding: 0 12px;\n background: #ffffff;\n border: 1.5px solid #e0e3e8;\n border-radius: 7px;\n color: #1a1e26;\n outline: none;\n transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled) {\n border-color: #c8cdd6;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):focus, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label):focus-within, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-open {\n border-color: #3f3f3f;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[disabled], table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[readonly], table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-readonly {\n background: #f4f5f6;\n cursor: default;\n box-shadow: none;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label)[readonly]:hover, table.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-readonly:hover {\n border-color: #e0e3e8;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-error {\n border-color: #dc2626;\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label).is-success {\n border-color: #15803d;\n box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.12);\n}\ntable.ab-table thead th.p-filter-column .p-inputtext:not(.p-dropdown-label):not(.p-multiselect-label) {\n height: 40px;\n font-size: 14px;\n width: 100%;\n min-width: 0;\n}\ntable.ab-table thead th.p-filter-column .p-dropdown,\ntable.ab-table thead th.p-filter-column .p-calendar {\n width: 100%;\n min-width: 0;\n font-size: 14px;\n}\ntable.ab-table thead th.p-filter-column .p-calendar > .p-inputtext {\n height: 40px !important;\n width: 100% !important;\n min-width: 0 !important;\n padding: 0 12px !important;\n border-width: 1.5px !important;\n border-radius: 7px !important;\n}\ntable.ab-table thead th.p-filter-column .p-calendar > .p-inputtext:not(.p-invalid) {\n border-color: #e0e3e8 !important;\n}\ntable.ab-table thead th.p-filter-column .p-inputtext.ab-filtre-compact {\n padding-left: 4px;\n padding-right: 4px;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button {\n width: 32px;\n height: 32px;\n color: #6b7280;\n transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button.p-hidden-space {\n visibility: visible;\n opacity: 0.38;\n}\ntable.ab-table thead th.p-filter-column .p-column-filter-clear-button:hover {\n opacity: 1;\n color: #1a1e26;\n background: rgba(26, 30, 38, 0.06);\n}\n\ntable.ab-table thead th.ab-th--editable:not(.p-frozen-column) {\n background-color: color-mix(in srgb, #c8cdd6 70%, #e8eaee) !important;\n}\ntable.ab-table thead th.ab-th--editable:not(.p-frozen-column):hover {\n background-color: color-mix(in srgb, #c8cdd6 70%, #e8eaee) !important;\n}\n\ntd.ab-td--editable:not(.p-frozen-column) {\n position: relative;\n}\n\ntd.ab-td--editable::after {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-bottom: 5px solid #c8cdd6;\n pointer-events: none;\n}\n\ntd.ab-td--editable {\n cursor: pointer;\n}\n\ntd.ab-td--lecture {\n cursor: default;\n}\n\ntd.ab-td--obligatoire {\n box-shadow: inset 3px 0 0 #dc2626, inset 0 0 0 100vmax rgba(220, 38, 38, 0.06);\n}\ntd.ab-td--obligatoire .div-col > :first-child:not(:has(input, textarea, [contenteditable]))::before {\n content: \"warning\";\n font-family: \"Material Icons\";\n font-size: 16px;\n line-height: 1;\n font-style: normal;\n font-weight: normal;\n font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n color: #dc2626;\n align-self: center;\n vertical-align: middle;\n flex: none;\n margin-right: 4px;\n pointer-events: none;\n}\n\ntd.ab-td--facultatif {\n box-shadow: inset 3px 0 0 #d97706, inset 0 0 0 100vmax rgba(217, 119, 6, 0.06);\n}\ntd.ab-td--facultatif .div-col > :first-child:not(:has(input, textarea, [contenteditable]))::before {\n content: \"info\";\n font-family: \"Material Icons\";\n font-size: 16px;\n line-height: 1;\n font-style: normal;\n font-weight: normal;\n font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n color: #d97706;\n align-self: center;\n vertical-align: middle;\n flex: none;\n margin-right: 4px;\n pointer-events: none;\n}\n\ntr[style*=row-resize] > td {\n cursor: row-resize;\n}\n\ntable.ab-table thead tr th:has(> .p-column-filter) {\n background-color: #ffffff !important;\n}\n\ntable.ab-table:has(td.ab-td--editable) tbody td:not(.ab-td--editable):not(.row-actions-cell) {\n background-image: linear-gradient(135deg, rgba(200, 205, 214, 0.45) 0 12.5%, transparent 12.5% 50%, rgba(200, 205, 214, 0.45) 50% 62.5%, transparent 62.5% 100%);\n background-size: 8px 8px;\n background-origin: border-box;\n}\n\n.div-col {\n width: 100%;\n}\n\n.ab-picking {\n display: flex;\n justify-content: center;\n width: 100%;\n min-width: 24px;\n}\n\n.ab-picking__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px;\n border: 0;\n border-radius: 4px;\n background: none;\n cursor: pointer;\n line-height: 0;\n color: #6b7280;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ab-picking__btn:hover {\n color: #1a1e26;\n background: #f4f5f6;\n}\n.ab-picking__btn.is-actif {\n color: #1a1e26;\n}\n\n.ab-picking__menu {\n right: auto;\n top: auto;\n z-index: 1200;\n overflow: visible;\n}\n.ab-picking__menu::before {\n content: \"\";\n position: absolute;\n top: -6px;\n left: var(--ab-picking-fleche, 17px);\n width: 10px;\n height: 10px;\n transform: translateX(-50%) rotate(45deg);\n background: #ffffff;\n border-left: 1px solid #e0e3e8;\n border-top: 1px solid #e0e3e8;\n}\n\n.ab-picking__libelle {\n flex: 1;\n white-space: nowrap;\n}\n\n.ab-picking__compteur {\n margin-left: 12px;\n font-size: 12px;\n color: #6b7280;\n font-variant-numeric: tabular-nums;\n}\n\n.ab-menu__item .ab-picto-lignes {\n flex: 0 0 16px;\n width: 16px;\n height: 16px;\n color: #6b7280;\n}\n\n.ab-menu__item.is-actif .ab-picto-lignes {\n color: #1a1e26;\n}\n\nbody.ab-table-plein-ecran .datepickerbook,\nbody.ab-table-plein-ecran .p-dialog-mask,\nbody.ab-table-plein-ecran .p-overlaypanel,\nbody.ab-table-plein-ecran .ts-backdrop,\nbody.ab-table-plein-ecran .ts-panel--modal,\nbody.ab-table-plein-ecran .ts-tooltip {\n z-index: 10000 !important;\n}\nbody.ab-table-plein-ecran .ts-panel--modal,\nbody.ab-table-plein-ecran .ts-tooltip {\n z-index: 10001 !important;\n}";
|
|
48274
48307
|
styleInject(css_248z$3);
|
|
48275
48308
|
|
|
48276
48309
|
// src/components/react/Table/Table.tokens.js
|
|
@@ -58100,6 +58133,7 @@ var Table$1 = function Table(_ref17) {
|
|
|
58100
58133
|
addTooltip = _ref17.addTooltip,
|
|
58101
58134
|
_ref17$addRowPosition = _ref17.addRowPosition,
|
|
58102
58135
|
addRowPosition = _ref17$addRowPosition === void 0 ? 'end' : _ref17$addRowPosition,
|
|
58136
|
+
newRowDefaults = _ref17.newRowDefaults,
|
|
58103
58137
|
_ref17$defaultRowHeig = _ref17.defaultRowHeight,
|
|
58104
58138
|
defaultRowHeight = _ref17$defaultRowHeig === void 0 ? 'small' : _ref17$defaultRowHeig,
|
|
58105
58139
|
onReorderClick = _ref17.onReorderClick,
|
|
@@ -58125,14 +58159,10 @@ var Table$1 = function Table(_ref17) {
|
|
|
58125
58159
|
selectionActionHandlers = _ref17.selectionActionHandlers,
|
|
58126
58160
|
toolbarActionHandlers = _ref17.toolbarActionHandlers,
|
|
58127
58161
|
_ref17$selectionFilte = _ref17.selectionFilter,
|
|
58128
|
-
selectionFilter = _ref17$selectionFilte === void 0 ? false : _ref17$selectionFilte
|
|
58129
|
-
_ref17.
|
|
58130
|
-
_ref17.onBulkAction;
|
|
58131
|
-
var _ref17$toolbarActions = _ref17.toolbarActions,
|
|
58162
|
+
selectionFilter = _ref17$selectionFilte === void 0 ? false : _ref17$selectionFilte,
|
|
58163
|
+
_ref17$toolbarActions = _ref17.toolbarActions,
|
|
58132
58164
|
toolbarActions = _ref17$toolbarActions === void 0 ? [] : _ref17$toolbarActions,
|
|
58133
58165
|
onToolbarAction = _ref17.onToolbarAction,
|
|
58134
|
-
_ref17$readOnlyStyle = _ref17.readOnlyStyle,
|
|
58135
|
-
readOnlyStyle = _ref17$readOnlyStyle === void 0 ? true : _ref17$readOnlyStyle,
|
|
58136
58166
|
_ref17$requiredKey = _ref17.requiredKey,
|
|
58137
58167
|
requiredKey = _ref17$requiredKey === void 0 ? '_required' : _ref17$requiredKey,
|
|
58138
58168
|
_ref17$optionalKey = _ref17.optionalKey,
|
|
@@ -59095,9 +59125,7 @@ var Table$1 = function Table(_ref17) {
|
|
|
59095
59125
|
});
|
|
59096
59126
|
}, [onChange]);
|
|
59097
59127
|
var handleAddRow = useCallback(function () {
|
|
59098
|
-
// id temporaire négatif pour éviter les collisions avec les id BDD positifs
|
|
59099
59128
|
var newRow = {
|
|
59100
|
-
id: -Date.now(),
|
|
59101
59129
|
attributeData: buildAttributeData()
|
|
59102
59130
|
};
|
|
59103
59131
|
columns.forEach(function (col) {
|
|
@@ -59110,7 +59138,18 @@ var Table$1 = function Table(_ref17) {
|
|
|
59110
59138
|
default:
|
|
59111
59139
|
newRow[col.field] = null;
|
|
59112
59140
|
}
|
|
59141
|
+
// Copie profonde : une valeur objet/tableau partagée entre les lignes neuves
|
|
59142
|
+
// serait modifiée dans toutes à la fois.
|
|
59143
|
+
if (newRowDefaults && col.field !== 'id' && col.field !== 'attributeData' && Object.prototype.hasOwnProperty.call(newRowDefaults, col.field)) {
|
|
59144
|
+
var def = newRowDefaults[col.field];
|
|
59145
|
+
newRow[col.field] = def !== null && _typeof$e(def) === 'object' ? JSON.parse(JSON.stringify(def)) : def;
|
|
59146
|
+
}
|
|
59113
59147
|
});
|
|
59148
|
+
// id temporaire négatif pour éviter les collisions avec les id BDD positifs.
|
|
59149
|
+
// Posé APRÈS les colonnes : une colonne `field: 'id'` (ex. tableau de saisie du
|
|
59150
|
+
// mapper d'import) le remettait à null, et toutes les lignes ajoutées partageaient
|
|
59151
|
+
// alors le même id — modifier une cellule modifiait toutes ces lignes (updateRow).
|
|
59152
|
+
newRow.id = -Date.now();
|
|
59114
59153
|
// En lazy, l'insertion optimiste n'a pas de sens (la page cible n'est pas
|
|
59115
59154
|
// forcément chargée) : tout est délégué à l'app via onAdd(newRow, null) —
|
|
59116
59155
|
// charge à elle de créer côté serveur puis de recharger la page voulue.
|
|
@@ -59131,7 +59170,7 @@ var Table$1 = function Table(_ref17) {
|
|
|
59131
59170
|
setFirst(Math.floor(index / pageRows) * pageRows);
|
|
59132
59171
|
}
|
|
59133
59172
|
setPendingScroll(addRowPosition === 'start' ? 'top' : 'bottom');
|
|
59134
|
-
}, [columns, data, onChange, onAdd, buildAttributeData, addRowPosition, paginator, pageRows, lazy]);
|
|
59173
|
+
}, [columns, data, onChange, onAdd, buildAttributeData, addRowPosition, newRowDefaults, paginator, pageRows, lazy]);
|
|
59135
59174
|
|
|
59136
59175
|
// Visibilité du bouton « + » : opt-in explicite (`showAdd`), sinon déduite de la
|
|
59137
59176
|
// présence de `onAdd`. Voir le commentaire de la prop `showAdd`.
|
|
@@ -59544,8 +59583,13 @@ var Table$1 = function Table(_ref17) {
|
|
|
59544
59583
|
if (e.key === 'Escape') setFullscreen(false);
|
|
59545
59584
|
};
|
|
59546
59585
|
document.addEventListener('keydown', onKeyDown);
|
|
59586
|
+
// En plein écran le tableau est `fixed` à z-index 9999 : les surcouches portées
|
|
59587
|
+
// au body sous ce seuil (calendrier, pop-in html, TreeSelect…) s'ouvraient
|
|
59588
|
+
// DERRIÈRE lui. La classe les fait passer devant (cf. Table.scss).
|
|
59589
|
+
document.body.classList.add('ab-table-plein-ecran');
|
|
59547
59590
|
return function () {
|
|
59548
|
-
|
|
59591
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
59592
|
+
document.body.classList.remove('ab-table-plein-ecran');
|
|
59549
59593
|
};
|
|
59550
59594
|
}, [fullscreen]);
|
|
59551
59595
|
var FILTER_KEY = useMemo(function () {
|
|
@@ -59627,31 +59671,12 @@ var Table$1 = function Table(_ref17) {
|
|
|
59627
59671
|
};
|
|
59628
59672
|
}, [settingsOpen, menuOpen]);
|
|
59629
59673
|
|
|
59630
|
-
// Actions groupées : même mécanique de menu que l'engrenage (positionnement absolu
|
|
59631
|
-
// dans un conteneur relatif + fermeture au clic extérieur), pour un comportement
|
|
59632
|
-
// homogène entre les deux menus voisins de la barre d'outils.
|
|
59633
|
-
var _useState85 = useState(false),
|
|
59634
|
-
_useState86 = _slicedToArray$b(_useState85, 2),
|
|
59635
|
-
bulkOpen = _useState86[0],
|
|
59636
|
-
setBulkOpen = _useState86[1];
|
|
59637
|
-
var bulkRef = useRef(null);
|
|
59638
|
-
useEffect(function () {
|
|
59639
|
-
if (!bulkOpen) return;
|
|
59640
|
-
var onClickOutside = function onClickOutside(e) {
|
|
59641
|
-
if (bulkRef.current && !bulkRef.current.contains(e.target)) setBulkOpen(false);
|
|
59642
|
-
};
|
|
59643
|
-
document.addEventListener('mousedown', onClickOutside);
|
|
59644
|
-
return function () {
|
|
59645
|
-
return document.removeEventListener('mousedown', onClickOutside);
|
|
59646
|
-
};
|
|
59647
|
-
}, [bulkOpen]);
|
|
59648
|
-
|
|
59649
59674
|
// Un seul menu de `toolbarActions` ouvert à la fois : on mémorise la clé de l'action
|
|
59650
59675
|
// ouverte plutôt qu'un booléen par bouton (le nombre de boutons est libre).
|
|
59651
|
-
var
|
|
59652
|
-
|
|
59653
|
-
openToolbarKey =
|
|
59654
|
-
setOpenToolbarKey =
|
|
59676
|
+
var _useState85 = useState(null),
|
|
59677
|
+
_useState86 = _slicedToArray$b(_useState85, 2),
|
|
59678
|
+
openToolbarKey = _useState86[0],
|
|
59679
|
+
setOpenToolbarKey = _useState86[1];
|
|
59655
59680
|
var toolbarRef = useRef(null);
|
|
59656
59681
|
useEffect(function () {
|
|
59657
59682
|
if (openToolbarKey === null) return;
|
|
@@ -59693,16 +59718,16 @@ var Table$1 = function Table(_ref17) {
|
|
|
59693
59718
|
rowHeightsRef.current = {};
|
|
59694
59719
|
}
|
|
59695
59720
|
}
|
|
59696
|
-
var
|
|
59721
|
+
var _useState87 = useState(function () {
|
|
59697
59722
|
try {
|
|
59698
59723
|
var saved = localStorage.getItem(ROW_PRESET_KEY);
|
|
59699
59724
|
if (saved === 'fit' || ROW_PRESETS[saved]) return saved;
|
|
59700
59725
|
} catch (_unused13) {/* noop */}
|
|
59701
59726
|
return defaultRowHeight === 'fit' || ROW_PRESETS[defaultRowHeight] ? defaultRowHeight : 'small';
|
|
59702
59727
|
}),
|
|
59703
|
-
|
|
59704
|
-
rowPreset =
|
|
59705
|
-
setRowPreset =
|
|
59728
|
+
_useState88 = _slicedToArray$b(_useState87, 2),
|
|
59729
|
+
rowPreset = _useState88[0],
|
|
59730
|
+
setRowPreset = _useState88[1];
|
|
59706
59731
|
var tableWrapperRef = useRef(null);
|
|
59707
59732
|
var applyRowHeights = useCallback(function () {
|
|
59708
59733
|
if (!tableWrapperRef.current) return;
|
|
@@ -59987,12 +60012,12 @@ var Table$1 = function Table(_ref17) {
|
|
|
59987
60012
|
if (Object.keys(values).length) localStorage.setItem(FILTERS_VALUES_KEY, JSON.stringify(values));else localStorage.removeItem(FILTERS_VALUES_KEY);
|
|
59988
60013
|
} catch (_unused16) {}
|
|
59989
60014
|
}, [FILTERS_VALUES_KEY]);
|
|
59990
|
-
var
|
|
60015
|
+
var _useState89 = useState(function () {
|
|
59991
60016
|
return hydrateFilters(initialFilters);
|
|
59992
60017
|
}),
|
|
59993
|
-
|
|
59994
|
-
filters =
|
|
59995
|
-
setFilters =
|
|
60018
|
+
_useState90 = _slicedToArray$b(_useState89, 2),
|
|
60019
|
+
filters = _useState90[0],
|
|
60020
|
+
setFilters = _useState90[1];
|
|
59996
60021
|
|
|
59997
60022
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
59998
60023
|
// Effacer TOUS les filtres colonnes d'un coup.
|
|
@@ -60033,16 +60058,16 @@ var Table$1 = function Table(_ref17) {
|
|
|
60033
60058
|
// Tri actif (pour griser le bouton « Réordonner » : réordonner sous un tri
|
|
60034
60059
|
// corromprait les positions). Initialisé depuis l'état persisté (le tri restauré
|
|
60035
60060
|
// au montage ne déclenche pas onSort), mis à jour ensuite via onSort.
|
|
60036
|
-
var
|
|
60061
|
+
var _useState91 = useState(function () {
|
|
60037
60062
|
var s = readDTState();
|
|
60038
60063
|
return s.sortField ? {
|
|
60039
60064
|
field: s.sortField,
|
|
60040
60065
|
order: s.sortOrder
|
|
60041
60066
|
} : null;
|
|
60042
60067
|
}),
|
|
60043
|
-
|
|
60044
|
-
activeSort =
|
|
60045
|
-
setActiveSort =
|
|
60068
|
+
_useState92 = _slicedToArray$b(_useState91, 2),
|
|
60069
|
+
activeSort = _useState92[0],
|
|
60070
|
+
setActiveSort = _useState92[1];
|
|
60046
60071
|
// Un filtre est actif si un filtre de colonne porte une valeur, ou la recherche globale.
|
|
60047
60072
|
var hasActiveFilter = useMemo(function () {
|
|
60048
60073
|
if (globalFilter && String(globalFilter).trim() !== '') return true;
|
|
@@ -60074,13 +60099,13 @@ var Table$1 = function Table(_ref17) {
|
|
|
60074
60099
|
// onLazyLoad({first, rows, sortField, sortOrder, filters, globalFilter}) :
|
|
60075
60100
|
// l'app requête son endpoint puis re-render avec la nouvelle page.
|
|
60076
60101
|
// Le tri devient contrôlé en lazy (sinon PrimeReact trierait la page seule).
|
|
60077
|
-
var
|
|
60102
|
+
var _useState93 = useState({
|
|
60078
60103
|
sortField: null,
|
|
60079
60104
|
sortOrder: null
|
|
60080
60105
|
}),
|
|
60081
|
-
|
|
60082
|
-
lazySort =
|
|
60083
|
-
setLazySort =
|
|
60106
|
+
_useState94 = _slicedToArray$b(_useState93, 2),
|
|
60107
|
+
lazySort = _useState94[0],
|
|
60108
|
+
setLazySort = _useState94[1];
|
|
60084
60109
|
var onLazyLoadRef = useRef(onLazyLoad);
|
|
60085
60110
|
onLazyLoadRef.current = onLazyLoad;
|
|
60086
60111
|
var fireLazy = useCallback(function () {
|
|
@@ -60719,6 +60744,9 @@ var Table$1 = function Table(_ref17) {
|
|
|
60719
60744
|
if (val === null || val === undefined || val === '') return '';
|
|
60720
60745
|
var num = parseFloat(val);
|
|
60721
60746
|
if (isNaN(num)) return val;
|
|
60747
|
+
// id provisoire (négatif) d'une ligne ajoutée par handleAddRow : interne au
|
|
60748
|
+
// composant, sans signification pour l'utilisateur tant que la ligne n'est pas créée.
|
|
60749
|
+
if (col.field === 'id' && num < 0) return '';
|
|
60722
60750
|
var outOfRange = col.min != null && num < col.min || col.max != null && num > col.max;
|
|
60723
60751
|
var message = col.min != null && num < col.min ? "Min : ".concat(col.min) : col.max != null && num > col.max ? "Max : ".concat(col.max) : null;
|
|
60724
60752
|
if (outOfRange) return /*#__PURE__*/React__default.createElement("span", {
|
|
@@ -61088,35 +61116,6 @@ var Table$1 = function Table(_ref17) {
|
|
|
61088
61116
|
});
|
|
61089
61117
|
}, [data, onChange, columns]);
|
|
61090
61118
|
|
|
61091
|
-
// ─── Repère « colonne en lecture seule » ──────────────────────────────────
|
|
61092
|
-
// La colonne peut-elle être éditée un jour, VERROU MIS À PART ? Le verrou
|
|
61093
|
-
// (`lockable`) est volontairement ignoré : il est temporaire — l'utilisateur
|
|
61094
|
-
// déverrouille — alors que la lecture seule d'une colonne est définitive. Sans
|
|
61095
|
-
// ça, un tableau verrouillé afficherait des cadenas partout puis les perdrait
|
|
61096
|
-
// tous au déverrouillage, ce qui en ferait un indicateur d'état du verrou et
|
|
61097
|
-
// non de la colonne.
|
|
61098
|
-
var columnCanEverBeEdited = useCallback(function (col) {
|
|
61099
|
-
return lockable ? editable && col.editable === true : editable ? col.editable !== false : col.editable === true;
|
|
61100
|
-
}, [lockable, editable]);
|
|
61101
|
-
|
|
61102
|
-
// Le repère n'a de sens que si QUELQUE CHOSE est éditable dans le tableau :
|
|
61103
|
-
// sur un tableau entièrement en lecture seule (le cas le plus courant), il
|
|
61104
|
-
// n'aurait rien à distinguer et teinterait simplement toutes les cellules.
|
|
61105
|
-
var readOnlyHintActive = useMemo(function () {
|
|
61106
|
-
if (readOnlyStyle === false) return false;
|
|
61107
|
-
return rowEdit ? columns.some(function (c) {
|
|
61108
|
-
return c.editable !== false;
|
|
61109
|
-
}) : columns.some(columnCanEverBeEdited);
|
|
61110
|
-
}, [readOnlyStyle, rowEdit, columns, columnCanEverBeEdited]);
|
|
61111
|
-
var isReadOnlyColumn = useCallback(function (col) {
|
|
61112
|
-
if (!readOnlyHintActive || col.readOnlyStyle === false) return false;
|
|
61113
|
-
// Colonnes techniques : ce ne sont pas des données qu'on chercherait à
|
|
61114
|
-
// éditer, un cadenas y serait du bruit.
|
|
61115
|
-
if (col.actionsField || col.type === 'button' || col.type === 'index') return false;
|
|
61116
|
-
// En édition par ligne, seule `editable: false` exclut la colonne.
|
|
61117
|
-
return rowEdit ? col.editable === false : !columnCanEverBeEdited(col);
|
|
61118
|
-
}, [readOnlyHintActive, rowEdit, columnCanEverBeEdited]);
|
|
61119
|
-
|
|
61120
61119
|
/** Get the body renderer for a column based on its type */
|
|
61121
61120
|
var getBodyTemplate = useCallback(function (col) {
|
|
61122
61121
|
// colCanEdit: is this column capable of being editable (ignoring lock state)?
|
|
@@ -61502,6 +61501,10 @@ var Table$1 = function Table(_ref17) {
|
|
|
61502
61501
|
}
|
|
61503
61502
|
} : null]).filter(Boolean);
|
|
61504
61503
|
|
|
61504
|
+
// Le bouton « Actions » n'existe que s'il a quelque chose à montrer : une action
|
|
61505
|
+
// déclarée, des lignes cochées, ou le filtre « cochées » à relâcher.
|
|
61506
|
+
var menuActionsVisible = actionsSecondaires.length > 0 || rowSelection && nbSelectionnees > 0 || filtreSelectionActif;
|
|
61507
|
+
|
|
61505
61508
|
// ── Reinitialisations, une par objet + une globale ───────────────────────────
|
|
61506
61509
|
var reinitColonnes = function reinitColonnes() {
|
|
61507
61510
|
localStorage.removeItem(STORAGE_KEY);
|
|
@@ -61709,7 +61712,7 @@ var Table$1 = function Table(_ref17) {
|
|
|
61709
61712
|
title: addTooltip !== null && addTooltip !== void 0 ? addTooltip : translate('arengibook.table.toolbar.add', labels)
|
|
61710
61713
|
}, /*#__PURE__*/React__default.createElement("span", {
|
|
61711
61714
|
className: "material-icons"
|
|
61712
|
-
}, "add"), addLabel && addLabel !== '+' ? addLabel : translate('arengibook.table.toolbar.add', labels)),
|
|
61715
|
+
}, "add"), addLabel && addLabel !== '+' ? addLabel : translate('arengibook.table.toolbar.add', labels)), menuActionsVisible && /*#__PURE__*/React__default.createElement("div", {
|
|
61713
61716
|
className: "ab-toolbar__anchor",
|
|
61714
61717
|
ref: menuRef
|
|
61715
61718
|
}, /*#__PURE__*/React__default.createElement("button", {
|
|
@@ -61786,7 +61789,7 @@ var Table$1 = function Table(_ref17) {
|
|
|
61786
61789
|
}, /*#__PURE__*/React__default.createElement("span", {
|
|
61787
61790
|
className: "material-icons"
|
|
61788
61791
|
}, icon), label);
|
|
61789
|
-
})))), /*#__PURE__*/React__default.createElement("span", {
|
|
61792
|
+
})))), (showAddButton || menuActionsVisible) && /*#__PURE__*/React__default.createElement("span", {
|
|
61790
61793
|
className: "ab-toolbar__rule",
|
|
61791
61794
|
"aria-hidden": "true"
|
|
61792
61795
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -62583,7 +62586,6 @@ var Table$1 = function Table(_ref17) {
|
|
|
62583
62586
|
var _col$field, _col$options9;
|
|
62584
62587
|
// Fusionne les options créées à la volée (tag) → cellule, éditeur ET filtre à jour.
|
|
62585
62588
|
var col = withCreatedOptions(rawCol);
|
|
62586
|
-
isReadOnlyColumn(col);
|
|
62587
62589
|
return /*#__PURE__*/React__default.createElement(Column, {
|
|
62588
62590
|
key: (_col$field = col.field) !== null && _col$field !== void 0 ? _col$field : index
|
|
62589
62591
|
// ─────────────────────────────────────────────────────
|