arengibook 3.3.3-mainTable → 3.3.4-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.
Files changed (2) hide show
  1. package/dist/index.js +983 -513
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -84,10 +84,11 @@ var MESSAGES = {
84
84
  'arengibook.table.column.readOnly': 'Colonne en lecture seule',
85
85
  'arengibook.table.bulk.empty': 'Sélectionnez au moins une ligne',
86
86
  'arengibook.table.bulk.count': '%n% ligne(s) sélectionnée(s)',
87
- 'arengibook.table.selectionFilter.tooltip': 'Filtrer par sélection',
88
- 'arengibook.table.selectionFilter.all': 'Tous',
89
- 'arengibook.table.selectionFilter.checked': 'Cochés',
90
- 'arengibook.table.selectionFilter.unchecked': 'Non cochés',
87
+ 'arengibook.table.selectionFilter.tooltip': 'N\'afficher que les lignes cochées ou non cochées',
88
+ 'arengibook.table.selectionFilter.title': 'Afficher',
89
+ 'arengibook.table.selectionFilter.all': 'Toutes les lignes',
90
+ 'arengibook.table.selectionFilter.checked': 'Lignes cochées uniquement',
91
+ 'arengibook.table.selectionFilter.unchecked': 'Lignes non cochées uniquement',
91
92
  'arengibook.table.tag.create': 'Créer « %name% »'
92
93
  },
93
94
  en: {
@@ -164,10 +165,11 @@ var MESSAGES = {
164
165
  'arengibook.table.column.readOnly': 'Read-only column',
165
166
  'arengibook.table.bulk.empty': 'Select at least one row',
166
167
  'arengibook.table.bulk.count': '%n% row(s) selected',
167
- 'arengibook.table.selectionFilter.tooltip': 'Filter by selection',
168
- 'arengibook.table.selectionFilter.all': 'All',
169
- 'arengibook.table.selectionFilter.checked': 'Checked',
170
- 'arengibook.table.selectionFilter.unchecked': 'Unchecked',
168
+ 'arengibook.table.selectionFilter.tooltip': 'Show only checked or unchecked rows',
169
+ 'arengibook.table.selectionFilter.title': 'Show',
170
+ 'arengibook.table.selectionFilter.all': 'All rows',
171
+ 'arengibook.table.selectionFilter.checked': 'Checked rows only',
172
+ 'arengibook.table.selectionFilter.unchecked': 'Unchecked rows only',
171
173
  'arengibook.table.tag.create': 'Create "%name%"'
172
174
  },
173
175
  es: {
@@ -244,10 +246,11 @@ var MESSAGES = {
244
246
  'arengibook.table.column.readOnly': 'Columna de solo lectura',
245
247
  'arengibook.table.bulk.empty': 'Seleccione al menos una fila',
246
248
  'arengibook.table.bulk.count': '%n% fila(s) seleccionada(s)',
247
- 'arengibook.table.selectionFilter.tooltip': 'Filtrar por selección',
248
- 'arengibook.table.selectionFilter.all': 'Todos',
249
- 'arengibook.table.selectionFilter.checked': 'Marcados',
250
- 'arengibook.table.selectionFilter.unchecked': 'No marcados',
249
+ 'arengibook.table.selectionFilter.tooltip': 'Mostrar solo las filas marcadas o no marcadas',
250
+ 'arengibook.table.selectionFilter.title': 'Mostrar',
251
+ 'arengibook.table.selectionFilter.all': 'Todas las filas',
252
+ 'arengibook.table.selectionFilter.checked': 'Solo filas marcadas',
253
+ 'arengibook.table.selectionFilter.unchecked': 'Solo filas no marcadas',
251
254
  'arengibook.table.tag.create': 'Crear «%name%»'
252
255
  },
253
256
  de: {
@@ -324,10 +327,11 @@ var MESSAGES = {
324
327
  'arengibook.table.column.readOnly': 'Schreibgeschützte Spalte',
325
328
  'arengibook.table.bulk.empty': 'Wählen Sie mindestens eine Zeile aus',
326
329
  'arengibook.table.bulk.count': '%n% Zeile(n) ausgewählt',
327
- 'arengibook.table.selectionFilter.tooltip': 'Nach Auswahl filtern',
328
- 'arengibook.table.selectionFilter.all': 'Alle',
329
- 'arengibook.table.selectionFilter.checked': 'Ausgewählte',
330
- 'arengibook.table.selectionFilter.unchecked': 'Nicht ausgewählte',
330
+ 'arengibook.table.selectionFilter.tooltip': 'Nur markierte oder nicht markierte Zeilen anzeigen',
331
+ 'arengibook.table.selectionFilter.title': 'Anzeigen',
332
+ 'arengibook.table.selectionFilter.all': 'Alle Zeilen',
333
+ 'arengibook.table.selectionFilter.checked': 'Nur markierte Zeilen',
334
+ 'arengibook.table.selectionFilter.unchecked': 'Nur nicht markierte Zeilen',
331
335
  'arengibook.table.tag.create': '„%name%“ erstellen'
332
336
  }
333
337
  };
@@ -48205,7 +48209,7 @@ if (typeof window !== 'undefined') {
48205
48209
  window.ArengibookToastPresets = ToastPresets;
48206
48210
  }
48207
48211
 
48208
- 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\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}";
48212
+ 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\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}";
48209
48213
  styleInject(css_248z$3);
48210
48214
 
48211
48215
  // src/components/react/Table/Table.tokens.js
@@ -53703,7 +53707,7 @@ function cleanEscapedString(input) {
53703
53707
  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, "'");
53704
53708
  }
53705
53709
 
53706
- var css_248z$2 = ".ts-root,\n.ts-panel,\n.ts-backdrop,\n.ts-tooltip {\n box-sizing: border-box;\n font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n font-size: 14px;\n line-height: 1.45;\n color: #1a1d21;\n}\n.ts-root *, .ts-root *::before, .ts-root *::after,\n.ts-panel *,\n.ts-panel *::before,\n.ts-panel *::after,\n.ts-backdrop *,\n.ts-backdrop *::before,\n.ts-backdrop *::after,\n.ts-tooltip *,\n.ts-tooltip *::before,\n.ts-tooltip *::after {\n box-sizing: border-box;\n}\n.ts-root button,\n.ts-panel button,\n.ts-backdrop button,\n.ts-tooltip button {\n appearance: none;\n -webkit-appearance: none;\n margin: 0;\n height: auto;\n min-height: 0;\n max-height: none;\n font: inherit;\n line-height: 1.45;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n overflow: visible;\n white-space: nowrap;\n}\n.ts-root code,\n.ts-panel code,\n.ts-backdrop code,\n.ts-tooltip code {\n font-family: inherit;\n background: none;\n color: inherit;\n}\n\n.ts-field-label {\n display: block;\n font-size: 13px;\n color: #8b909a;\n margin-bottom: 6px;\n}\n\n.ts-trigger {\n width: 100%;\n min-height: 38px;\n position: relative;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n padding: 5px 58px 5px 10px;\n background: #ffffff;\n border: 1px solid #c2c7cf;\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.12s, box-shadow 0.12s;\n}\n.ts-trigger:hover {\n border-color: #1d1f24;\n}\n.ts-trigger:focus-visible, .ts-trigger[aria-expanded=true] {\n outline: none;\n border-color: #1d1f24;\n box-shadow: 0 0 0 3px #eeedea;\n}\n.ts-trigger .ts-placeholder {\n color: #8b909a;\n font-size: 14px;\n}\n.ts-trigger .ts-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n font-weight: 500;\n padding: 2px 4px 2px 8px;\n border-radius: 6px;\n}\n.ts-trigger .ts-chip > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-trigger .ts-chip button {\n border: none;\n background: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.8;\n}\n.ts-trigger .ts-chip button:hover {\n opacity: 1;\n}\n.ts-trigger .ts-more {\n font-size: 12px;\n color: #8b909a;\n}\n.ts-trigger .ts-expand {\n position: absolute;\n right: 34px;\n top: 50%;\n transform: translateY(-50%);\n color: #8b909a;\n cursor: pointer;\n padding: 2px;\n border-radius: 4px;\n}\n.ts-trigger .ts-expand:hover {\n color: #1d1f24;\n background: #f4f5f7;\n}\n.ts-trigger .ts-caret {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n color: #8b909a;\n transition: transform 0.15s;\n}\n.ts-trigger[aria-expanded=true] .ts-caret {\n transform: translateY(-50%) rotate(180deg);\n}\n\n.ts-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(20, 25, 35, 0.42);\n z-index: 1000;\n}\n\n.ts-panel {\n margin-top: 4px;\n background: #ffffff;\n border: 1px solid #c2c7cf;\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(20, 25, 35, 0.12), 0 2px 6px rgba(20, 25, 35, 0.08);\n overflow: hidden;\n}\n.ts-panel .ts-modal-head {\n display: none;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 12px 14px;\n border-bottom: 1px solid #d9dce1;\n font-weight: 500;\n}\n.ts-panel .ts-modal-head > span:first-child {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-panel .ts-modal-head .ts-modal-close {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n min-height: 30px;\n padding: 0;\n border: 1px solid #d9dce1;\n border-radius: 50%;\n background: #ffffff;\n color: #1a1d21;\n cursor: pointer;\n transition: background-color 0.12s, border-color 0.12s;\n}\n.ts-panel .ts-modal-head .ts-modal-close:hover, .ts-panel .ts-modal-head .ts-modal-close:focus-visible {\n outline: none;\n background: #f4f5f7;\n border-color: #c2c7cf;\n}\n.ts-panel .ts-modal-head .ts-modal-close:active {\n background: #eeedea;\n}\n.ts-panel--modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: min(440px, 92vw);\n margin: 0;\n z-index: 1001;\n}\n.ts-panel--modal .ts-modal-head {\n display: flex;\n}\n.ts-panel--modal .ts-tree {\n max-height: min(58vh, 520px);\n}\n.ts-panel .ts-search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n border-bottom: 1px solid #d9dce1;\n}\n.ts-panel .ts-search input {\n flex: 1;\n border: none;\n outline: none;\n font: inherit;\n font-size: 14px;\n background: transparent;\n min-width: 0;\n}\n.ts-panel .ts-search input::placeholder {\n color: #8b909a;\n}\n.ts-panel .ts-search .ts-clr {\n border: none;\n background: none;\n color: #8b909a;\n cursor: pointer;\n}\n.ts-panel .ts-search .ts-clr:hover {\n color: #1a1d21;\n}\n.ts-panel .ts-tree {\n max-height: 288px;\n overflow-y: auto;\n padding: 4px;\n}\n.ts-panel .ts-tree .ts-empty {\n padding: 28px 12px;\n text-align: center;\n color: #8b909a;\n font-size: 13px;\n}\n.ts-panel .ts-tree .ts-row {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 6px;\n margin-bottom: 1px;\n border-left: 3px solid transparent;\n font-size: 14px;\n user-select: none;\n}\n.ts-panel .ts-tree .ts-row:hover {\n background: #f4f5f7;\n}\n.ts-panel .ts-tree .ts-row.focused {\n box-shadow: inset 0 0 0 1px #d9dce1;\n}\n.ts-panel .ts-tree .ts-row.selected {\n background: rgba(29, 31, 36, 0.06);\n border-left-color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell {\n width: 18px;\n color: #8b909a;\n cursor: pointer;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell.leaf {\n visibility: hidden;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell svg {\n transition: transform 0.12s;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell.open svg {\n transform: rotate(90deg);\n}\n.ts-panel .ts-tree .ts-row .ts-check {\n width: 16px;\n height: 16px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1.5px solid #c2c7cf;\n color: #fff;\n cursor: pointer;\n}\n.ts-panel .ts-tree .ts-row .ts-check.on {\n border-color: #1d1f24;\n background: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-check.ind {\n border-color: #1d1f24;\n background: #eeedea;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-check.previewing {\n border-color: #1d1f24;\n background: #eeedea;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 9px;\n border-radius: 6px;\n font-size: 13px;\n min-width: 0;\n transition: opacity 0.12s, box-shadow 0.16s;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb {\n width: 14px;\n height: 14px;\n border-radius: 3px;\n border: 1.5px solid currentColor;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb.ghost svg {\n opacity: 0.55;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-ico {\n font-size: 15px;\n line-height: 1;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-code {\n font-size: 10px;\n opacity: 0.6;\n padding: 0 4px;\n border-radius: 3px;\n border: 1px solid currentColor;\n line-height: 1.4;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-lbl {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-info {\n opacity: 0.65;\n cursor: help;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-info:hover {\n opacity: 1;\n}\n.ts-panel .ts-tree .ts-row .ts-enf {\n margin-left: auto;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 22px;\n padding: 2px 8px;\n border-radius: 6px;\n border: 1px solid #d9dce1;\n color: #8b909a;\n font-size: 11px;\n line-height: 1.45;\n cursor: pointer;\n transition: all 0.12s;\n}\n.ts-panel .ts-tree .ts-row .ts-enf:hover {\n border-color: #1d1f24;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-enf.some {\n border-color: #1d1f24;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-enf.on {\n border-color: #1d1f24;\n background: #1d1f24;\n color: #fff;\n}\n.ts-panel .ts-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-top: 1px solid #d9dce1;\n font-size: 13px;\n}\n.ts-panel .ts-footer .ts-selectall,\n.ts-panel .ts-footer .ts-cancel {\n border: none;\n background: none;\n color: #1d1f24;\n cursor: pointer;\n white-space: nowrap;\n}\n.ts-panel .ts-footer .ts-apply, .ts-panel .ts-footer .ts-apply.ts-apply--off, .ts-panel .ts-footer .ts-apply:disabled {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n border: none;\n color: #fff;\n border-radius: 6px;\n padding: 5px 12px;\n white-space: nowrap;\n}\n.ts-panel .ts-footer .ts-apply {\n background: #101216;\n cursor: pointer;\n}\n.ts-panel .ts-footer .ts-apply:hover {\n background: #000;\n}\n.ts-panel .ts-footer .ts-apply.ts-apply--off, .ts-panel .ts-footer .ts-apply:disabled {\n background: rgba(139, 144, 154, 0.14);\n cursor: default;\n}\n.ts-panel .ts-footer .ts-apply .ts-apply-n {\n opacity: 0.8;\n}\n\n.ts-comma {\n font-size: 14px;\n color: #1a1d21;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ts-count {\n font-size: 13px;\n font-weight: 500;\n color: #1a1d21;\n}\n\n.ts-clear-global {\n position: absolute;\n right: 58px;\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: 1px solid #d9dce1;\n border-radius: 50%;\n background: #eeedea;\n color: #1a1d21;\n cursor: pointer;\n transition: background-color 0.12s, border-color 0.12s, color 0.12s;\n}\n.ts-clear-global:hover, .ts-clear-global:focus-visible {\n outline: none;\n background: #e24c4c;\n border-color: #e24c4c;\n color: #fff;\n}\n.ts-clear-global:active {\n background: #c33c3c;\n border-color: #c33c3c;\n}\n\n.ts-loadmore {\n border: 1px dashed #c2c7cf;\n background: none;\n color: #1d1f24;\n font: inherit;\n font-size: 12px;\n padding: 3px 10px;\n border-radius: 6px;\n cursor: pointer;\n}\n.ts-loadmore:hover {\n background: #f4f5f7;\n border-style: solid;\n}\n\n.ts-error {\n display: block;\n margin-top: 4px;\n font-size: 11px;\n color: #e24c4c;\n}\n\n.ts-spin {\n animation: ts-spin 0.8s linear infinite;\n}\n\n@keyframes ts-spin {\n to {\n transform: rotate(360deg);\n }\n}\n.ts-tooltip {\n position: fixed;\n z-index: 1002;\n max-width: 240px;\n background: #1a1d21;\n color: #fff;\n font-size: 12px;\n line-height: 1.45;\n padding: 8px 10px;\n border-radius: 6px;\n pointer-events: none;\n}\n.ts-tooltip .tt-title {\n font-weight: 500;\n display: block;\n margin-bottom: 2px;\n}\n.ts-tooltip .tt-path {\n display: block;\n color: #9aa0aa;\n font-size: 11px;\n margin-bottom: 4px;\n}\n.ts-tooltip .tt-body {\n color: #c9ccd2;\n}";
53710
+ var css_248z$2 = ".ts-root,\n.ts-panel,\n.ts-backdrop,\n.ts-tooltip {\n box-sizing: border-box;\n font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n font-size: 14px;\n line-height: 1.45;\n color: #1a1d21;\n}\n.ts-root *, .ts-root *::before, .ts-root *::after,\n.ts-panel *,\n.ts-panel *::before,\n.ts-panel *::after,\n.ts-backdrop *,\n.ts-backdrop *::before,\n.ts-backdrop *::after,\n.ts-tooltip *,\n.ts-tooltip *::before,\n.ts-tooltip *::after {\n box-sizing: border-box;\n}\n.ts-root button,\n.ts-panel button,\n.ts-backdrop button,\n.ts-tooltip button {\n appearance: none;\n -webkit-appearance: none;\n margin: 0;\n height: auto;\n min-height: 0;\n max-height: none;\n font: inherit;\n line-height: 1.45;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n overflow: visible;\n white-space: nowrap;\n}\n.ts-root code,\n.ts-panel code,\n.ts-backdrop code,\n.ts-tooltip code {\n font-family: inherit;\n background: none;\n color: inherit;\n}\n\n.ts-field-label {\n display: block;\n font-size: 13px;\n color: #8b909a;\n margin-bottom: 6px;\n}\n\n.ts-trigger {\n width: 100%;\n min-height: 38px;\n position: relative;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n padding: 5px 58px 5px 10px;\n background: #ffffff;\n border: 1px solid #c2c7cf;\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.12s, box-shadow 0.12s;\n}\n.ts-trigger:hover {\n border-color: #1d1f24;\n}\n.ts-trigger:focus-visible, .ts-trigger[aria-expanded=true] {\n outline: none;\n border-color: #1d1f24;\n box-shadow: 0 0 0 3px #eeedea;\n}\n.ts-trigger .ts-placeholder {\n color: #8b909a;\n font-size: 14px;\n}\n.ts-trigger .ts-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n font-weight: 500;\n padding: 2px 4px 2px 8px;\n border-radius: 6px;\n}\n.ts-trigger .ts-chip > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-trigger .ts-chip button {\n border: none;\n background: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.8;\n}\n.ts-trigger .ts-chip button:hover {\n opacity: 1;\n}\n.ts-trigger .ts-more {\n font-size: 12px;\n color: #8b909a;\n}\n.ts-trigger .ts-chip--inf > span:first-child {\n font-weight: 600;\n}\n.ts-trigger .ts-chip-inf {\n display: inline-flex;\n}\n.ts-trigger .ts-chip-inf svg {\n width: 13px;\n height: 13px;\n}\n.ts-trigger .ts-expand {\n position: absolute;\n right: 34px;\n top: 50%;\n transform: translateY(-50%);\n color: #8b909a;\n cursor: pointer;\n padding: 2px;\n border-radius: 4px;\n}\n.ts-trigger .ts-expand:hover {\n color: #1d1f24;\n background: #f4f5f7;\n}\n.ts-trigger .ts-caret {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n color: #8b909a;\n transition: transform 0.15s;\n}\n.ts-trigger[aria-expanded=true] .ts-caret {\n transform: translateY(-50%) rotate(180deg);\n}\n\n.ts-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(20, 25, 35, 0.42);\n z-index: 1000;\n}\n\n.ts-panel {\n margin-top: 4px;\n background: #ffffff;\n border: 1px solid #c2c7cf;\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(20, 25, 35, 0.12), 0 2px 6px rgba(20, 25, 35, 0.08);\n overflow: hidden;\n}\n.ts-panel .ts-modal-head {\n display: none;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 12px 14px;\n border-bottom: 1px solid #d9dce1;\n font-weight: 500;\n}\n.ts-panel .ts-modal-head > span:first-child {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-panel .ts-modal-head .ts-modal-close {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n min-height: 30px;\n padding: 0;\n border: 1px solid #d9dce1;\n border-radius: 50%;\n background: #ffffff;\n color: #1a1d21;\n cursor: pointer;\n transition: background-color 0.12s, border-color 0.12s;\n}\n.ts-panel .ts-modal-head .ts-modal-close:hover, .ts-panel .ts-modal-head .ts-modal-close:focus-visible {\n outline: none;\n background: #f4f5f7;\n border-color: #c2c7cf;\n}\n.ts-panel .ts-modal-head .ts-modal-close:active {\n background: #eeedea;\n}\n.ts-panel--modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: min(440px, 92vw);\n margin: 0;\n z-index: 1001;\n}\n.ts-panel--modal .ts-modal-head {\n display: flex;\n}\n.ts-panel--modal .ts-tree {\n max-height: min(58vh, 520px);\n}\n.ts-panel .ts-search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n border-bottom: 1px solid #d9dce1;\n}\n.ts-panel .ts-search input {\n flex: 1;\n border: none;\n outline: none;\n font: inherit;\n font-size: 14px;\n background: transparent;\n min-width: 0;\n}\n.ts-panel .ts-search input::placeholder {\n color: #8b909a;\n}\n.ts-panel .ts-search .ts-clr {\n border: none;\n background: none;\n color: #8b909a;\n cursor: pointer;\n}\n.ts-panel .ts-search .ts-clr:hover {\n color: #1a1d21;\n}\n.ts-panel .ts-tree {\n max-height: 288px;\n overflow-y: auto;\n padding: 4px;\n}\n.ts-panel .ts-tree .ts-empty {\n padding: 28px 12px;\n text-align: center;\n color: #8b909a;\n font-size: 13px;\n}\n.ts-panel .ts-tree .ts-row {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 6px;\n margin-bottom: 1px;\n border-left: 3px solid transparent;\n font-size: 14px;\n user-select: none;\n}\n.ts-panel .ts-tree .ts-row:hover {\n background: #f4f5f7;\n}\n.ts-panel .ts-tree .ts-row.focused {\n box-shadow: inset 0 0 0 1px #d9dce1;\n}\n.ts-panel .ts-tree .ts-row.selected {\n background: rgba(29, 31, 36, 0.06);\n border-left-color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row.ts-row--shake {\n animation: tsShake 0.4s ease;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell {\n width: 18px;\n color: #8b909a;\n cursor: pointer;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell.leaf {\n visibility: hidden;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell svg {\n transition: transform 0.12s;\n}\n.ts-panel .ts-tree .ts-row .ts-caret-cell.open svg {\n transform: rotate(90deg);\n}\n.ts-panel .ts-tree .ts-row .ts-check {\n width: 16px;\n height: 16px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1.5px solid #c2c7cf;\n color: #fff;\n cursor: pointer;\n}\n.ts-panel .ts-tree .ts-row .ts-check.on {\n border-color: #1d1f24;\n background: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-check.ind {\n border-color: #1d1f24;\n background: #eeedea;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-check.previewing {\n border-color: #1d1f24;\n background: #eeedea;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 9px;\n border-radius: 6px;\n font-size: 13px;\n min-width: 0;\n transition: opacity 0.12s, box-shadow 0.16s;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb {\n width: 14px;\n height: 14px;\n border-radius: 3px;\n border: 1.5px solid currentColor;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb.ghost svg {\n opacity: 0.55;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb.ts-badge-cb--inf {\n border-color: transparent;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-cb.ts-badge-cb--inf svg {\n width: 12px;\n height: 12px;\n}\n.ts-panel .ts-tree .ts-row .ts-badge.ts-badge--sw {\n padding-left: 4px;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw {\n display: inline-flex;\n flex: none;\n height: 20px;\n border: 1.5px solid #c2c7cf;\n border-radius: 5px;\n overflow: hidden;\n background: #ffffff;\n box-shadow: 0 1px 1px rgba(17, 19, 24, 0.1);\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 100%;\n padding: 0;\n border: none;\n background: #ffffff;\n color: #8b909a;\n cursor: pointer;\n transition: color 0.12s, background 0.12s;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b svg {\n width: 13px;\n height: 13px;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b + .ts-sw__b {\n border-left: 1.5px solid #d9dce1;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b:hover, .ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b.some {\n color: #1d1f24;\n background: #eeedea;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b.on {\n color: #fff;\n background: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-sw__b:focus-visible {\n outline: 2px solid #1d1f24;\n outline-offset: -2px;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-ico {\n font-size: 15px;\n line-height: 1;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-code {\n font-size: 10px;\n opacity: 0.6;\n padding: 0 4px;\n border-radius: 3px;\n border: 1px solid currentColor;\n line-height: 1.4;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-lbl {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-info {\n opacity: 0.65;\n cursor: help;\n}\n.ts-panel .ts-tree .ts-row .ts-badge .ts-badge-info:hover {\n opacity: 1;\n}\n.ts-panel .ts-tree .ts-row .ts-enf {\n margin-left: auto;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 22px;\n padding: 2px 8px;\n border-radius: 6px;\n border: 1px solid #d9dce1;\n color: #8b909a;\n font-size: 11px;\n line-height: 1.45;\n cursor: pointer;\n transition: all 0.12s;\n}\n.ts-panel .ts-tree .ts-row .ts-enf:hover {\n border-color: #1d1f24;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-enf.some {\n border-color: #1d1f24;\n color: #1d1f24;\n}\n.ts-panel .ts-tree .ts-row .ts-enf.on {\n border-color: #1d1f24;\n background: #1d1f24;\n color: #fff;\n}\n.ts-panel .ts-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-top: 1px solid #d9dce1;\n font-size: 13px;\n}\n.ts-panel .ts-footer .ts-selectall,\n.ts-panel .ts-footer .ts-cancel {\n border: none;\n background: none;\n color: #1d1f24;\n cursor: pointer;\n white-space: nowrap;\n}\n.ts-panel .ts-footer .ts-footer-count {\n color: #8b909a;\n font-size: 12px;\n white-space: nowrap;\n}\n.ts-panel .ts-footer .ts-footer-count b {\n color: #1a1d21;\n font-weight: 600;\n}\n.ts-panel .ts-footer .ts-apply, .ts-panel .ts-footer .ts-apply.ts-apply--off, .ts-panel .ts-footer .ts-apply:disabled {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n border: none;\n color: #fff;\n border-radius: 6px;\n padding: 5px 12px;\n white-space: nowrap;\n}\n.ts-panel .ts-footer .ts-apply {\n background: #101216;\n cursor: pointer;\n}\n.ts-panel .ts-footer .ts-apply:hover {\n background: #000;\n}\n.ts-panel .ts-footer .ts-apply.ts-apply--off, .ts-panel .ts-footer .ts-apply:disabled {\n background: rgba(139, 144, 154, 0.14);\n cursor: default;\n}\n.ts-panel .ts-footer .ts-apply .ts-apply-n {\n opacity: 0.8;\n}\n\n.ts-comma {\n font-size: 14px;\n color: #1a1d21;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ts-count {\n font-size: 13px;\n font-weight: 500;\n color: #1a1d21;\n}\n\n.ts-clear-global {\n position: absolute;\n right: 58px;\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: 1px solid #d9dce1;\n border-radius: 50%;\n background: #eeedea;\n color: #1a1d21;\n cursor: pointer;\n transition: background-color 0.12s, border-color 0.12s, color 0.12s;\n}\n.ts-clear-global:hover, .ts-clear-global:focus-visible {\n outline: none;\n background: #e24c4c;\n border-color: #e24c4c;\n color: #fff;\n}\n.ts-clear-global:active {\n background: #c33c3c;\n border-color: #c33c3c;\n}\n\n.ts-loadmore {\n border: 1px dashed #c2c7cf;\n background: none;\n color: #1d1f24;\n font: inherit;\n font-size: 12px;\n padding: 3px 10px;\n border-radius: 6px;\n cursor: pointer;\n}\n.ts-loadmore:hover {\n background: #f4f5f7;\n border-style: solid;\n}\n\n.ts-error {\n display: block;\n margin-top: 4px;\n font-size: 11px;\n color: #e24c4c;\n}\n\n.ts-spin {\n animation: ts-spin 0.8s linear infinite;\n}\n\n@keyframes ts-spin {\n to {\n transform: rotate(360deg);\n }\n}\n.ts-tooltip {\n position: fixed;\n z-index: 1002;\n max-width: 280px;\n background: #1a1d21;\n color: #fff;\n font-size: 12px;\n line-height: 1.45;\n padding: 8px 10px;\n border-radius: 6px;\n pointer-events: none;\n}\n.ts-tooltip::before {\n content: \"\";\n position: absolute;\n top: 14px;\n left: -6px;\n border: 6px solid transparent;\n border-right-color: #1a1d21;\n border-left: 0;\n}\n.ts-tooltip--below::before {\n top: -6px;\n left: 16px;\n border: 6px solid transparent;\n border-top: 0;\n border-bottom-color: #1a1d21;\n}\n.ts-tooltip .tt-title {\n font-weight: 500;\n display: block;\n margin-bottom: 2px;\n}\n.ts-tooltip .tt-path {\n display: block;\n color: #9aa0aa;\n font-size: 11px;\n margin-bottom: 4px;\n}\n.ts-tooltip .tt-body {\n color: #c9ccd2;\n}\n\n@keyframes tsShake {\n 20%, 60% {\n transform: translateX(-4px);\n }\n 40%, 80% {\n transform: translateX(4px);\n }\n}";
53707
53711
  styleInject(css_248z$2);
53708
53712
 
53709
53713
  /**
@@ -53712,7 +53716,17 @@ styleInject(css_248z$2);
53712
53716
  * Reproduit la maquette documentée : triple logique de sélection
53713
53717
  * (Tout / Élément / Enfants), états tri-state, chips colorés à contraste auto,
53714
53718
  * dropdown vs pop-in selon la largeur, recherche insensible casse/accents,
53715
- * aperçu au survol, infobulle `desc`, mode validation (brouillon), chrome neutre.
53719
+ * aperçu au survol, infobulle collée au badge, mode validation (brouillon), chrome neutre.
53720
+ *
53721
+ * Mode induit (`induced`, mode checkbox) — le rattachement d'un utilisateur à des organisations :
53722
+ * un parent se rattache soit en EXPLICITE (✓ : le parent et sa descendance d'aujourd'hui, nommés un
53723
+ * par un — chacun est une valeur), soit en INDUIT (∞ : le parent seul est une valeur, ses enfants
53724
+ * présents ET à venir en découlent, le périmètre est recalculé à la lecture). « Le parent seul sans
53725
+ * ses enfants » n'existe pas. La commande vit DANS le badge du parent (commutateur ✓ | ∞), il n'y a
53726
+ * plus de colonne « Tout ». Un enfant induit a le même état actif qu'un enfant coché (badge plein),
53727
+ * seule sa case porte un ∞ ; il n'a pas de chip, n'entre pas dans le compte, et un clic dessus refuse.
53728
+ * Retirer un ∞ rend exactement l'état d'avant sa pose. Sortie : `onChange` (rattachements, parents ∞
53729
+ * compris) + `onInducedChange` (les parents en ∞).
53716
53730
  *
53717
53731
  * Le style (SCSS) ne définit que le chrome neutre : toutes les couleurs de
53718
53732
  * périmètre sont dérivées à l'exécution à partir de `node.color`.
@@ -53902,6 +53916,18 @@ var IconCheck = function IconCheck() {
53902
53916
  strokeLinejoin: "round"
53903
53917
  }));
53904
53918
  };
53919
+ // ∞ (Material `all_inclusive`) : le mode induit.
53920
+ var IconInfinity = function IconInfinity() {
53921
+ return /*#__PURE__*/React__default.createElement("svg", {
53922
+ width: "12",
53923
+ height: "12",
53924
+ viewBox: "0 0 24 24",
53925
+ "aria-hidden": "true"
53926
+ }, /*#__PURE__*/React__default.createElement("path", {
53927
+ d: "M18.6 6.62c-1.44 0-2.8.56-3.77 1.53L12 10.66 10.48 12h.01L7.8 14.39c-.64.64-1.49.99-2.4.99-1.87 0-3.39-1.51-3.39-3.38S3.53 8.62 5.4 8.62c.91 0 1.76.35 2.44 1.03l1.13 1 1.51-1.34L9.22 8.2C8.2 7.18 6.84 6.62 5.4 6.62 2.42 6.62 0 9.04 0 12s2.42 5.38 5.4 5.38c1.44 0 2.8-.56 3.77-1.53l2.83-2.5.01.01L13.52 12h-.01l2.69-2.39c.64-.64 1.49-.99 2.4-.99 1.87 0 3.39 1.51 3.39 3.38s-1.52 3.38-3.39 3.38c-.9 0-1.76-.35-2.44-1.03l-1.14-1.01-1.51 1.34 1.27 1.12c1.02 1.01 2.37 1.57 3.82 1.57 2.98 0 5.4-2.41 5.4-5.38s-2.42-5.37-5.4-5.37z",
53928
+ fill: "currentColor"
53929
+ }));
53930
+ };
53905
53931
  var IconDash = function IconDash() {
53906
53932
  return /*#__PURE__*/React__default.createElement("svg", {
53907
53933
  width: "10",
@@ -54133,6 +54159,12 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54133
54159
  showChildrenCount = _ref2$showChildrenCou === void 0 ? true : _ref2$showChildrenCou,
54134
54160
  _ref2$showExpand = _ref2.showExpand,
54135
54161
  showExpand = _ref2$showExpand === void 0 ? true : _ref2$showExpand,
54162
+ _ref2$induced = _ref2.induced,
54163
+ induced = _ref2$induced === void 0 ? false : _ref2$induced,
54164
+ inducedValue = _ref2.inducedValue,
54165
+ _ref2$defaultInducedV = _ref2.defaultInducedValue,
54166
+ defaultInducedValue = _ref2$defaultInducedV === void 0 ? [] : _ref2$defaultInducedV,
54167
+ onInducedChange = _ref2.onInducedChange,
54136
54168
  _ref2$filter = _ref2.filter,
54137
54169
  filter = _ref2$filter === void 0 ? true : _ref2$filter,
54138
54170
  _ref2$filterPlacehold = _ref2.filterPlaceholder,
@@ -54160,6 +54192,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54160
54192
  metaKeySelection = _ref2$metaKeySelectio === void 0 ? false : _ref2$metaKeySelectio;
54161
54193
  _ref2.appendTo;
54162
54194
  var checkboxMode = selectionMode === 'checkbox';
54195
+ var inducedMode = induced && checkboxMode;
54163
54196
  var inert = disabled || loading; // champ non interactif
54164
54197
 
54165
54198
  // Chargement asynchrone (lazy) : enfants chargés à la demande sur les nœuds `lazy: true`.
@@ -54214,47 +54247,65 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54214
54247
  internal = _useState6[0],
54215
54248
  setInternal = _useState6[1];
54216
54249
  var committed = controlled ? new Set(idsFromValue(value)) : internal;
54250
+ // Mode induit : les parents en ∞ (« règles »). Un parent ∞ est aussi dans la sélection.
54251
+ var rulesControlled = inducedValue !== undefined;
54252
+ var _useState7 = useState(function () {
54253
+ return new Set(defaultInducedValue);
54254
+ }),
54255
+ _useState8 = _slicedToArray$b(_useState7, 2),
54256
+ internalRules = _useState8[0],
54257
+ setInternalRules = _useState8[1];
54258
+ var committedRules = rulesControlled ? new Set(inducedValue) : internalRules;
54217
54259
  var setCommitted = function setCommitted(next) {
54260
+ var nextRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : committedRules;
54218
54261
  if (!controlled) setInternal(next);
54262
+ if (!rulesControlled) setInternalRules(nextRules);
54219
54263
  onChange === null || onChange === void 0 || onChange(emitValue(next));
54264
+ if (inducedMode) onInducedChange === null || onInducedChange === void 0 || onInducedChange(_toConsumableArray$8(nextRules));
54220
54265
  };
54221
- var _useState7 = useState(!!defaultOpen && !(disabled || loading)),
54222
- _useState8 = _slicedToArray$b(_useState7, 2),
54223
- open = _useState8[0],
54224
- setOpen = _useState8[1];
54225
- var _useState9 = useState(popin ? 'popin' : 'dropdown'),
54266
+ var _useState9 = useState(!!defaultOpen && !(disabled || loading)),
54226
54267
  _useState0 = _slicedToArray$b(_useState9, 2),
54227
- mode = _useState0[0],
54228
- setMode = _useState0[1]; // 'dropdown' | 'popin'
54229
- var _useState1 = useState({}),
54268
+ open = _useState0[0],
54269
+ setOpen = _useState0[1];
54270
+ var _useState1 = useState(popin ? 'popin' : 'dropdown'),
54230
54271
  _useState10 = _slicedToArray$b(_useState1, 2),
54231
- branchShown = _useState10[0],
54232
- setBranchShown = _useState10[1]; // pagination par branche : id → nb affiché
54233
- var _useState11 = useState(function () {
54272
+ mode = _useState10[0],
54273
+ setMode = _useState10[1]; // 'dropdown' | 'popin'
54274
+ var _useState11 = useState({}),
54275
+ _useState12 = _slicedToArray$b(_useState11, 2),
54276
+ branchShown = _useState12[0],
54277
+ setBranchShown = _useState12[1]; // pagination par branche : id → nb affiché
54278
+ var _useState13 = useState(function () {
54234
54279
  return new Set(idsFromValue(controlled ? value : defaultValue));
54235
54280
  }),
54236
- _useState12 = _slicedToArray$b(_useState11, 2),
54237
- draft = _useState12[0],
54238
- setDraft = _useState12[1];
54281
+ _useState14 = _slicedToArray$b(_useState13, 2),
54282
+ draft = _useState14[0],
54283
+ setDraft = _useState14[1];
54284
+ var _useState15 = useState(function () {
54285
+ return new Set(rulesControlled ? inducedValue : defaultInducedValue);
54286
+ }),
54287
+ _useState16 = _slicedToArray$b(_useState15, 2),
54288
+ draftRules = _useState16[0],
54289
+ setDraftRules = _useState16[1];
54239
54290
 
54240
54291
  // Mode sans validation : chaque modification du brouillon s'applique immédiatement.
54241
54292
  useEffect(function () {
54242
- if (!validate && !setsEqual(draft, committed)) setCommitted(new Set(draft));
54293
+ if (!validate && (!setsEqual(draft, committed) || !setsEqual(draftRules, committedRules))) setCommitted(new Set(draft), new Set(draftRules));
54243
54294
  // eslint-disable-next-line react-hooks/exhaustive-deps
54244
- }, [draft, validate]);
54245
- var _useState13 = useState(''),
54246
- _useState14 = _slicedToArray$b(_useState13, 2),
54247
- query = _useState14[0],
54248
- setQuery = _useState14[1];
54249
- var _useState15 = useState(null),
54250
- _useState16 = _slicedToArray$b(_useState15, 2),
54251
- preview = _useState16[0],
54252
- setPreview = _useState16[1]; // { kind, id }
54253
- var _useState17 = useState(null),
54295
+ }, [draft, draftRules, validate]);
54296
+ var _useState17 = useState(''),
54254
54297
  _useState18 = _slicedToArray$b(_useState17, 2),
54255
- focusedId = _useState18[0],
54256
- setFocusedId = _useState18[1];
54257
- var _useState19 = useState(function () {
54298
+ query = _useState18[0],
54299
+ setQuery = _useState18[1];
54300
+ var _useState19 = useState(null),
54301
+ _useState20 = _slicedToArray$b(_useState19, 2),
54302
+ preview = _useState20[0],
54303
+ setPreview = _useState20[1]; // { kind, id }
54304
+ var _useState21 = useState(null),
54305
+ _useState22 = _slicedToArray$b(_useState21, 2),
54306
+ focusedId = _useState22[0],
54307
+ setFocusedId = _useState22[1];
54308
+ var _useState23 = useState(function () {
54258
54309
  // Déplie par défaut tous les conteneurs.
54259
54310
  var s = new Set();
54260
54311
  var _walk2 = function walk(nodes) {
@@ -54269,13 +54320,13 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54269
54320
  _walk2(data);
54270
54321
  return s;
54271
54322
  }),
54272
- _useState20 = _slicedToArray$b(_useState19, 2),
54273
- expanded = _useState20[0],
54274
- setExpanded = _useState20[1];
54275
- var _useState21 = useState(null),
54276
- _useState22 = _slicedToArray$b(_useState21, 2),
54277
- tooltip = _useState22[0],
54278
- setTooltip = _useState22[1];
54323
+ _useState24 = _slicedToArray$b(_useState23, 2),
54324
+ expanded = _useState24[0],
54325
+ setExpanded = _useState24[1];
54326
+ var _useState25 = useState(null),
54327
+ _useState26 = _slicedToArray$b(_useState25, 2),
54328
+ tooltip = _useState26[0],
54329
+ setTooltip = _useState26[1];
54279
54330
  var rootRef = useRef(null);
54280
54331
  var triggerRef = useRef(null);
54281
54332
  var searchRef = useRef(null);
@@ -54303,12 +54354,51 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54303
54354
  _walk3(data, []);
54304
54355
  return map;
54305
54356
  }, [data]);
54357
+ // Parent de chaque nœud : id → id du parent (null à la racine).
54358
+ var parentMap = useMemo(function () {
54359
+ var map = {};
54360
+ var _walk4 = function walk(nodes, parent) {
54361
+ return nodes.forEach(function (n) {
54362
+ map[n.id] = parent;
54363
+ if (n.children) _walk4(n.children, n.id);
54364
+ });
54365
+ };
54366
+ _walk4(data, null);
54367
+ return map;
54368
+ }, [data]);
54369
+
54370
+ // --- Mode induit : statut d'un nœud ---
54371
+ // 'rule' : parent en ∞ · 'inh' : sous un ∞ (induit : couvert, pas rattaché) · 'self' : coché en
54372
+ // propre · 'none'. Hors mode induit, seul 'self' / 'none' existe (comportement inchangé).
54373
+ var ruleAbove = function ruleAbove(id) {
54374
+ var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : draftRules;
54375
+ var cur = parentMap[id];
54376
+ while (cur) {
54377
+ if (rules.has(cur)) return cur;
54378
+ cur = parentMap[cur];
54379
+ }
54380
+ return null;
54381
+ };
54382
+ var statusOf = function statusOf(id) {
54383
+ var set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : draft;
54384
+ var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : draftRules;
54385
+ if (inducedMode) {
54386
+ if (rules.has(id)) return 'rule';
54387
+ if (ruleAbove(id, rules)) return 'inh';
54388
+ }
54389
+ return set.has(id) ? 'self' : 'none';
54390
+ };
54391
+ var isIncluded = function isIncluded(id) {
54392
+ var set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : draft;
54393
+ var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : draftRules;
54394
+ return statusOf(id, set, rules) !== 'none';
54395
+ };
54306
54396
 
54307
54397
  // Recherche débouncée (filterDelay).
54308
- var _useState23 = useState(''),
54309
- _useState24 = _slicedToArray$b(_useState23, 2),
54310
- debouncedQuery = _useState24[0],
54311
- setDebouncedQuery = _useState24[1];
54398
+ var _useState27 = useState(''),
54399
+ _useState28 = _slicedToArray$b(_useState27, 2),
54400
+ debouncedQuery = _useState28[0],
54401
+ setDebouncedQuery = _useState28[1];
54312
54402
  useEffect(function () {
54313
54403
  var t = setTimeout(function () {
54314
54404
  return setDebouncedQuery(query);
@@ -54336,7 +54426,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54336
54426
  // Liste aplatie visible (respecte dépliage / recherche / pagination) — rendu + clavier.
54337
54427
  var visibleList = useMemo(function () {
54338
54428
  var out = [];
54339
- var _walk4 = function walk(node, depth) {
54429
+ var _walk5 = function walk(node, depth) {
54340
54430
  var _node$children;
54341
54431
  if (searchActive && !searchVisible.has(node.id)) return;
54342
54432
  out.push({
@@ -54360,7 +54450,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54360
54450
  var kids = node.children;
54361
54451
  var limit = branchPageSize && !searchActive ? (_branchShown$node$id = branchShown[node.id]) !== null && _branchShown$node$id !== void 0 ? _branchShown$node$id : branchPageSize : kids.length;
54362
54452
  kids.slice(0, limit).forEach(function (c) {
54363
- return _walk4(c, depth + 1);
54453
+ return _walk5(c, depth + 1);
54364
54454
  });
54365
54455
  if (limit < kids.length) {
54366
54456
  out.push({
@@ -54373,7 +54463,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54373
54463
  }
54374
54464
  };
54375
54465
  data.forEach(function (n) {
54376
- return _walk4(n, 0);
54466
+ return _walk5(n, 0);
54377
54467
  });
54378
54468
  return out;
54379
54469
  }, [data, expanded, searchActive, searchVisible, branchPageSize, branchShown, loadingIds]);
@@ -54384,17 +54474,32 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54384
54474
  });
54385
54475
  };
54386
54476
 
54387
- // Ids qui SERAIENT ajoutés par le survol courant (aperçu).
54388
- var previewIds = useMemo(function () {
54389
- if (!preview) return new Set();
54390
- var node = findNode(data, preview.id);
54391
- if (!node) return new Set();
54392
- var ids = [];
54393
- if (preview.kind === 'tout') ids = valueIdsInclusive(node, []);else if (preview.kind === 'enfants') ids = descValueIds(node);else ids = node.kind === 'value' ? [node.id] : [];
54394
- return new Set(ids.filter(function (id) {
54395
- return !draft.has(id);
54396
- }));
54397
- }, [preview, draft, data]);
54477
+ // Ids qui SERAIENT ajoutés par le survol courant (aperçu : coche fantôme).
54478
+ // Survol du segment ∞ (`kind: 'inf'`) : les enfants montrent un ∞ fantôme ; ceux déjà cochés en
54479
+ // propre seraient absorbés, leur case passe en écho (`previewEcho`).
54480
+ var _useMemo2 = useMemo(function () {
54481
+ var none = {
54482
+ previewIds: new Set(),
54483
+ previewEcho: new Set()
54484
+ };
54485
+ if (!preview) return none;
54486
+ var node = findNode(data, preview.id);
54487
+ if (!node) return none;
54488
+ var ids = [];
54489
+ if (preview.kind === 'tout' || preview.kind === 'inf') ids = valueIdsInclusive(node, []);else if (preview.kind === 'enfants') ids = descValueIds(node);else ids = node.kind === 'value' ? [node.id] : [];
54490
+ var echo = preview.kind === 'inf' ? new Set(ids.filter(function (id) {
54491
+ return id !== node.id && statusOf(id) === 'self';
54492
+ })) : new Set();
54493
+ return {
54494
+ previewIds: new Set(ids.filter(function (id) {
54495
+ return !isIncluded(id);
54496
+ })),
54497
+ previewEcho: echo
54498
+ };
54499
+ // eslint-disable-next-line react-hooks/exhaustive-deps
54500
+ }, [preview, draft, draftRules, data, inducedMode]),
54501
+ previewIds = _useMemo2.previewIds,
54502
+ previewEcho = _useMemo2.previewEcho;
54398
54503
 
54399
54504
  // --- Ouverture / fermeture ---
54400
54505
 
@@ -54403,6 +54508,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54403
54508
  var forceModal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
54404
54509
  if (inert) return; // disabled/loading : pas d'ouverture
54405
54510
  setDraft(new Set(committed));
54511
+ setDraftRules(new Set(committedRules));
54406
54512
  setQuery('');
54407
54513
  var w = (_triggerRef$current$o = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.offsetWidth) !== null && _triggerRef$current$o !== void 0 ? _triggerRef$current$o : 999;
54408
54514
  setMode(forceModal || popin || w < POPIN_THRESHOLD ? 'popin' : 'dropdown');
@@ -54417,22 +54523,43 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54417
54523
  onPanelHide === null || onPanelHide === void 0 || onPanelHide();
54418
54524
  };
54419
54525
  var apply = function apply() {
54420
- setCommitted(new Set(draft));
54526
+ setCommitted(new Set(draft), new Set(draftRules));
54421
54527
  close();
54422
54528
  };
54423
54529
  // Bascule tout sélectionner / tout désélectionner selon l'état courant.
54424
54530
  var allSelected = allIds.length > 0 && allIds.every(function (id) {
54425
- return draft.has(id);
54531
+ return isIncluded(id);
54426
54532
  });
54427
54533
  var toggleSelectAll = function toggleSelectAll() {
54428
- return setDraft(allSelected ? new Set() : new Set(allIds));
54534
+ if (allSelected) {
54535
+ setDraft(new Set());
54536
+ setDraftRules(new Set());
54537
+ return;
54538
+ }
54539
+ if (!inducedMode) {
54540
+ setDraft(new Set(allIds));
54541
+ return;
54542
+ }
54543
+ // Mode induit : on nomme ce qui ne l'est pas encore, les ∞ posés restent.
54544
+ setDraft(function (prev) {
54545
+ var n = new Set(prev);
54546
+ allIds.forEach(function (id) {
54547
+ if (!isIncluded(id)) n.add(id);
54548
+ });
54549
+ return n;
54550
+ });
54429
54551
  };
54430
- var draftClean = setsEqual(draft, committed); // brouillon == validé → Appliquer off
54552
+ var draftClean = setsEqual(draft, committed) && setsEqual(draftRules, committedRules); // brouillon == validé → Appliquer off
54431
54553
  // Nombre réel d'éléments sélectionnés = nœuds `value` existants présents dans le brouillon
54432
54554
  // (ignore les ids fantômes/inconnus et les ids de groupe → compteur toujours juste).
54555
+ // Mode induit : ce sont les rattachements (parents ∞ compris, enfants induits exclus).
54433
54556
  var draftCount = valueNodes.filter(function (n) {
54434
54557
  return draft.has(n.id);
54435
54558
  }).length;
54559
+ // Mode induit : le périmètre effectif (rattachés + induits) → « droits sur M ».
54560
+ var effectiveCount = inducedMode ? allIds.filter(function (id) {
54561
+ return isIncluded(id);
54562
+ }).length : draftCount;
54436
54563
  var onExpandClick = function onExpandClick(e) {
54437
54564
  e.stopPropagation();
54438
54565
  if (inert) return;
@@ -54490,19 +54617,33 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54490
54617
 
54491
54618
  // --- Actions de sélection (sur le brouillon) ---
54492
54619
 
54493
- var toggleTout = function toggleTout(node) {
54494
- var ids = valueIdsInclusive(node, []);
54620
+ // « Tout » / « Enfants » : on nomme ce qui ne l'est pas encore (un induit l'est déjà) ; si tout
54621
+ // l'est, on retire — les ∞ posés en dessous partent avec (leur parent était nommé par eux).
54622
+ var toggleScope = function toggleScope(ids) {
54623
+ var all = ids.length > 0 && ids.every(function (id) {
54624
+ return isIncluded(id);
54625
+ });
54495
54626
  setDraft(function (prev) {
54496
54627
  var n = new Set(prev);
54497
- var all = ids.length > 0 && ids.every(function (id) {
54498
- return n.has(id);
54628
+ ids.forEach(function (id) {
54629
+ if (all) n["delete"](id);else if (!isIncluded(id)) n.add(id);
54499
54630
  });
54631
+ return n;
54632
+ });
54633
+ if (all && inducedMode) setDraftRules(function (prev) {
54634
+ var n = new Set(prev);
54500
54635
  ids.forEach(function (id) {
54501
- return all ? n["delete"](id) : n.add(id);
54636
+ return n["delete"](id);
54502
54637
  });
54503
54638
  return n;
54504
54639
  });
54505
54640
  };
54641
+ var toggleTout = function toggleTout(node) {
54642
+ return toggleScope(valueIdsInclusive(node, []));
54643
+ };
54644
+ var toggleEnfants = function toggleEnfants(node) {
54645
+ return toggleScope(descValueIds(node));
54646
+ };
54506
54647
  var toggleElement = function toggleElement(node) {
54507
54648
  return setDraft(function (prev) {
54508
54649
  var n = new Set(prev);
@@ -54514,18 +54655,111 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54514
54655
  var selectSingle = function selectSingle(node) {
54515
54656
  return setDraft(new Set([node.id]));
54516
54657
  };
54517
- var toggleEnfants = function toggleEnfants(node) {
54518
- var ids = descValueIds(node);
54519
- setDraft(function (prev) {
54520
- var n = new Set(prev);
54521
- var all = ids.length > 0 && ids.every(function (id) {
54522
- return n.has(id);
54658
+
54659
+ // --- Mode induit : poser / retirer un ∞ ---
54660
+ // Ce que le ∞ a englobé à sa pose (cochés en propre, ∞ en dessous), rendu tel quel à son retrait.
54661
+ var absorbedRef = useRef({});
54662
+ var _useState29 = useState(null),
54663
+ _useState30 = _slicedToArray$b(_useState29, 2),
54664
+ shakeId = _useState30[0],
54665
+ setShakeId = _useState30[1]; // ligne secouée : clic refusé sur un enfant induit
54666
+ var refuseTimer = useRef(null);
54667
+ // Un enfant induit ne se coche pas : on le dit (secousse + bulle « Induit par X »), on ne fait rien.
54668
+ var refuse = function refuse(node, e) {
54669
+ var _e$currentTarget;
54670
+ var parent = findNode(data, ruleAbove(node.id));
54671
+ setShakeId(node.id);
54672
+ var badge = e === null || e === void 0 || (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 || (_e$currentTarget = _e$currentTarget.closest('.ts-row')) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.querySelector('.ts-badge');
54673
+ if (badge && parent) showTooltipAt(badge, "Induit par ".concat(parent.label), "Pas de rattachement propre. Pour nommer un par un, repasse ".concat(parent.label, " en explicite."));
54674
+ clearTimeout(refuseTimer.current);
54675
+ refuseTimer.current = setTimeout(hideTooltip, 2200);
54676
+ };
54677
+ var setInduced = function setInduced(node) {
54678
+ var tIds = valueIdsInclusive(node, []);
54679
+ absorbedRef.current[node.id] = {
54680
+ s: tIds.filter(function (id) {
54681
+ return draft.has(id);
54682
+ }),
54683
+ r: tIds.filter(function (id) {
54684
+ return id !== node.id && draftRules.has(id);
54685
+ })
54686
+ };
54687
+ var nd = new Set(draft);
54688
+ var nr = new Set(draftRules);
54689
+ tIds.forEach(function (id) {
54690
+ nd["delete"](id);
54691
+ nr["delete"](id);
54692
+ });
54693
+ nd.add(node.id);
54694
+ nr.add(node.id);
54695
+ setDraft(nd);
54696
+ setDraftRules(nr);
54697
+ };
54698
+ // Retirer un ∞ rend exactement l'état d'avant sa pose — jamais « tout coché ».
54699
+ var withoutInduced = function withoutInduced(node) {
54700
+ var nd = new Set(draft);
54701
+ var nr = new Set(draftRules);
54702
+ nd["delete"](node.id);
54703
+ nr["delete"](node.id);
54704
+ var a = absorbedRef.current[node.id];
54705
+ delete absorbedRef.current[node.id];
54706
+ if (a) {
54707
+ a.s.forEach(function (id) {
54708
+ if (findNode(data, id)) nd.add(id);
54523
54709
  });
54524
- ids.forEach(function (id) {
54525
- return all ? n["delete"](id) : n.add(id);
54710
+ a.r.forEach(function (id) {
54711
+ if (findNode(data, id)) nr.add(id);
54526
54712
  });
54527
- return n;
54528
- });
54713
+ }
54714
+ return {
54715
+ nd: nd,
54716
+ nr: nr
54717
+ };
54718
+ };
54719
+ // Segment ∞ / touche I.
54720
+ var toggleInduced = function toggleInduced(node, e) {
54721
+ var st = statusOf(node.id);
54722
+ if (st === 'inh') {
54723
+ refuse(node, e);
54724
+ return;
54725
+ }
54726
+ if (st === 'rule') {
54727
+ var _withoutInduced = withoutInduced(node),
54728
+ nd = _withoutInduced.nd,
54729
+ nr = _withoutInduced.nr;
54730
+ setDraft(nd);
54731
+ setDraftRules(nr);
54732
+ return;
54733
+ }
54734
+ setInduced(node);
54735
+ };
54736
+ // Segment ✓ / nom du parent / touche E : EXPLICITE. Induit → explicite : ce qui en découlait est nommé.
54737
+ var toggleExplicit = function toggleExplicit(node, e) {
54738
+ var st = statusOf(node.id);
54739
+ if (st === 'inh') {
54740
+ refuse(node, e);
54741
+ return;
54742
+ }
54743
+ if (st === 'rule') {
54744
+ var _withoutInduced2 = withoutInduced(node),
54745
+ nd = _withoutInduced2.nd,
54746
+ nr = _withoutInduced2.nr;
54747
+ valueIdsInclusive(node, []).forEach(function (id) {
54748
+ if (!isIncluded(id, nd, nr)) nd.add(id);
54749
+ });
54750
+ setDraft(nd);
54751
+ setDraftRules(nr);
54752
+ return;
54753
+ }
54754
+ toggleTout(node);
54755
+ };
54756
+ // Une feuille (ou un parent sans commutateur) en mode induit : refus si elle est induite.
54757
+ var toggleElementSafe = function toggleElementSafe(node, e) {
54758
+ if (inducedMode && statusOf(node.id) === 'inh') {
54759
+ refuse(node, e);
54760
+ return;
54761
+ }
54762
+ toggleElement(node);
54529
54763
  };
54530
54764
  // Charge les enfants d'un nœud `lazy` non encore chargé (une seule fois).
54531
54765
  var loadIfNeeded = function loadIfNeeded(node) {
@@ -54563,25 +54797,65 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54563
54797
  var removeChip = function removeChip(id) {
54564
54798
  var n = new Set(committed);
54565
54799
  n["delete"](id);
54566
- setCommitted(n);
54567
- };
54568
-
54569
- // --- Infobulle `desc` ---
54570
-
54571
- var showTooltip = function showTooltip(e, title, body, path) {
54572
- var r = e.currentTarget.getBoundingClientRect();
54573
- var x = Math.max(8, Math.min(r.left, window.innerWidth - 252));
54800
+ var r = new Set(committedRules);
54801
+ r["delete"](id);
54802
+ setCommitted(n, r);
54803
+ };
54804
+
54805
+ // --- Infobulle (aide contextuelle) ---
54806
+ // Règle de placement, valable pour toutes les variantes : la bulle est COLLÉE au badge de la
54807
+ // ligne survolée — pointe en face du badge, bulle à sa droite. Elle descend sur les lignes
54808
+ // suivantes et ne remonte jamais sur les parents, qui restent lisibles. Sans place à droite
54809
+ // (panneau au bord de l'écran) : sous le badge, alignée à sa gauche, pointe vers le haut.
54810
+ // Hors d'une ligne (chip, compteur…) : collée à l'élément survolé lui-même.
54811
+ // Le placement se fait en deux temps : on mémorise le rectangle de l'ancre, puis, une fois la
54812
+ // bulle rendue (et donc mesurable), `useLayoutEffect` la positionne avant l'affichage.
54813
+
54814
+ var tooltipRef = useRef(null);
54815
+ var showTooltipAt = function showTooltipAt(anchor, title, body, path) {
54816
+ var r = anchor.getBoundingClientRect();
54574
54817
  setTooltip({
54575
- x: x,
54576
- y: r.bottom + 6,
54818
+ rect: {
54819
+ left: r.left,
54820
+ right: r.right,
54821
+ top: r.top,
54822
+ bottom: r.bottom,
54823
+ height: r.height
54824
+ },
54577
54825
  title: title,
54578
54826
  body: body,
54579
54827
  path: path
54580
54828
  });
54581
54829
  };
54830
+ var showTooltip = function showTooltip(e, title, body, path) {
54831
+ var t = e.currentTarget;
54832
+ var row = t.closest('.ts-row');
54833
+ // La case « Tout » (colonne de gauche) explique la ligne : elle s'ancre au badge de la ligne.
54834
+ var anchor = t.closest('.ts-badge') || t.classList.contains('ts-check') && (row === null || row === void 0 ? void 0 : row.querySelector('.ts-badge')) || t;
54835
+ showTooltipAt(anchor, title, body, path);
54836
+ };
54582
54837
  var hideTooltip = function hideTooltip() {
54583
54838
  return setTooltip(null);
54584
54839
  };
54840
+ useLayoutEffect(function () {
54841
+ var el = tooltipRef.current;
54842
+ if (!el || !tooltip) return;
54843
+ var r = tooltip.rect;
54844
+ var b = el.getBoundingClientRect();
54845
+ var left = r.right + 10;
54846
+ var top = r.top + r.height / 2 - 14; // la pointe (à 14 px du haut) en face du centre du badge
54847
+ var below = false;
54848
+ if (left + b.width > window.innerWidth - 8) {
54849
+ below = true;
54850
+ left = Math.max(8, Math.min(r.left, window.innerWidth - b.width - 8));
54851
+ top = r.bottom + 8;
54852
+ }
54853
+ if (top + b.height > window.innerHeight - 8) top = window.innerHeight - b.height - 8;
54854
+ el.style.left = "".concat(left, "px");
54855
+ el.style.top = "".concat(top, "px");
54856
+ el.classList.toggle('ts-tooltip--below', below);
54857
+ el.style.visibility = 'visible';
54858
+ }, [tooltip]);
54585
54859
 
54586
54860
  // --- Clavier dans l'arbre ---
54587
54861
 
@@ -54597,7 +54871,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54597
54871
  setFocusedId((_focusables$next$node = (_focusables$next = focusables[next]) === null || _focusables$next === void 0 ? void 0 : _focusables$next.node.id) !== null && _focusables$next$node !== void 0 ? _focusables$next$node : null);
54598
54872
  };
54599
54873
  var treeKeyDown = function treeKeyDown(e) {
54600
- var _node$children5;
54874
+ var _node$children7, _node$children8;
54601
54875
  var node = focusedId ? findNode(data, focusedId) : null;
54602
54876
  switch (e.key) {
54603
54877
  case 'ArrowDown':
@@ -54630,20 +54904,27 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54630
54904
  case 'Enter':
54631
54905
  case ' ':
54632
54906
  if (node) {
54633
- var _node$children4;
54907
+ var _node$children4, _node$children5;
54634
54908
  e.preventDefault();
54635
54909
  if (!checkboxMode) {
54636
54910
  if (node.kind === 'value') selectionMode === 'single' ? selectSingle(node) : toggleElement(node);
54637
- } else (_node$children4 = node.children) !== null && _node$children4 !== void 0 && _node$children4.length ? toggleTout(node) : node.kind === 'value' && toggleElement(node);
54911
+ } else if (inducedMode) (_node$children4 = node.children) !== null && _node$children4 !== void 0 && _node$children4.length ? toggleExplicit(node) : node.kind === 'value' && toggleElementSafe(node);else (_node$children5 = node.children) !== null && _node$children5 !== void 0 && _node$children5.length ? toggleTout(node) : node.kind === 'value' && toggleElement(node);
54638
54912
  }
54639
54913
  break;
54640
54914
  case 'e':
54641
54915
  case 'E':
54642
- if (checkboxMode && (node === null || node === void 0 ? void 0 : node.kind) === 'value') toggleElement(node);
54916
+ if (checkboxMode && (node === null || node === void 0 ? void 0 : node.kind) === 'value') {
54917
+ var _node$children6;
54918
+ if (inducedMode) (_node$children6 = node.children) !== null && _node$children6 !== void 0 && _node$children6.length ? toggleExplicit(node) : toggleElementSafe(node);else toggleElement(node);
54919
+ }
54920
+ break;
54921
+ case 'i':
54922
+ case 'I':
54923
+ if (inducedMode && (node === null || node === void 0 ? void 0 : node.kind) === 'value' && (_node$children7 = node.children) !== null && _node$children7 !== void 0 && _node$children7.length && node.selectable !== false && !node.locked) toggleInduced(node);
54643
54924
  break;
54644
54925
  case 'n':
54645
54926
  case 'N':
54646
- if (checkboxMode && (node === null || node === void 0 ? void 0 : node.kind) === 'value' && (_node$children5 = node.children) !== null && _node$children5 !== void 0 && _node$children5.length) toggleEnfants(node);
54927
+ if (checkboxMode && (node === null || node === void 0 ? void 0 : node.kind) === 'value' && (_node$children8 = node.children) !== null && _node$children8 !== void 0 && _node$children8.length && statusOf(node.id) !== 'inh' && statusOf(node.id) !== 'rule') toggleEnfants(node);
54647
54928
  break;
54648
54929
  case 'Escape':
54649
54930
  e.preventDefault();
@@ -54667,20 +54948,25 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54667
54948
  // --- Rendu d'une ligne ---
54668
54949
 
54669
54950
  var renderRow = function renderRow(_ref3) {
54670
- var _node$children6;
54951
+ var _node$children9;
54671
54952
  var node = _ref3.node,
54672
54953
  depth = _ref3.depth;
54673
- var hasChildren = ((_node$children6 = node.children) === null || _node$children6 === void 0 ? void 0 : _node$children6.length) > 0 || node.lazy; // lazy : dépliable même sans enfants chargés
54954
+ var hasChildren = ((_node$children9 = node.children) === null || _node$children9 === void 0 ? void 0 : _node$children9.length) > 0 || node.lazy; // lazy : dépliable même sans enfants chargés
54674
54955
  var isValue = node.kind === 'value';
54675
54956
  var color = node[nodeColorField] || TS_MUTED;
54676
- var elementSel = isValue && draft.has(node.id);
54957
+
54958
+ // Mode induit : 'rule' (parent ∞), 'inh' (induit), 'self', 'none'. Un induit est actif comme un coché.
54959
+ var st = statusOf(node.id);
54960
+ var isRule = st === 'rule';
54961
+ var isCov = st === 'inh';
54962
+ var elementSel = isValue && st !== 'none';
54677
54963
  var tIds = valueIdsInclusive(node, []);
54678
54964
  var dIds = descValueIds(node);
54679
54965
  var toutSel = tIds.filter(function (id) {
54680
- return draft.has(id);
54966
+ return isIncluded(id);
54681
54967
  }).length;
54682
54968
  var descSel = dIds.filter(function (id) {
54683
- return draft.has(id);
54969
+ return isIncluded(id);
54684
54970
  }).length;
54685
54971
  var toutState = tIds.length === 0 || toutSel === 0 ? '' : toutSel === tIds.length ? 'on' : 'ind';
54686
54972
  var enfState = dIds.length === 0 || descSel === 0 ? '' : descSel === dIds.length ? 'on' : 'some';
@@ -54692,11 +54978,16 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54692
54978
 
54693
54979
  // « Tout » et « Élément » requièrent un nœud sélectionnable ; « Enfants » reste
54694
54980
  // disponible pour un parent non sélectionnable (on peut cocher ses enfants).
54695
- var showLeftCheck = hasChildren && checkboxMode && !locked && selectableNode; // « Tout »
54696
- var showCounter = isValue && hasChildren && checkboxMode && !locked && showChildrenCount; // « Enfants »
54697
- var showBadgeCheck = isValue && checkboxMode && !locked && selectableNode; // « Élément »
54698
-
54699
- var inPreview = previewIds.has(node.id) && !draft.has(node.id);
54981
+ // Mode induit : plus de colonne « Tout » (la commande vit dans le badge) ; le compteur « Enfants »
54982
+ // s'efface sur un parent induit ou en ∞ ; un enfant induit n'a ni case ni commande.
54983
+ var showLeftCheck = hasChildren && checkboxMode && !locked && selectableNode && !inducedMode; // « Tout »
54984
+ var showCounter = isValue && hasChildren && checkboxMode && !locked && showChildrenCount && !isCov && !isRule; // « Enfants »
54985
+ var showSwitch = inducedMode && isValue && hasChildren && !locked && selectableNode && !isCov; // ✓ | ∞
54986
+ var showBadgeCheck = isValue && checkboxMode && !locked && selectableNode && !showSwitch; // « Élément »
54987
+
54988
+ var inPreview = previewIds.has(node.id) && !isIncluded(node.id);
54989
+ var inEcho = previewEcho.has(node.id);
54990
+ var previewInf = (preview === null || preview === void 0 ? void 0 : preview.kind) === 'inf' && preview.id !== node.id; // aperçu ∞ : les enfants montrent un ∞ fantôme
54700
54991
  var previewingTout = (preview === null || preview === void 0 ? void 0 : preview.kind) === 'tout' && preview.id === node.id;
54701
54992
  var dim = searchActive && !searchSelf.has(node.id);
54702
54993
 
@@ -54736,7 +55027,8 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54736
55027
  cursor: 'default',
54737
55028
  opacity: 0.8
54738
55029
  });
54739
- var rowClass = ['ts-row', focusedId === node.id ? 'focused' : '', elementSel ? 'selected' : ''].filter(Boolean).join(' ');
55030
+ // Mode induit : aucun fond ni liseré de ligne — l'état actif, c'est le badge plein, seul.
55031
+ var rowClass = ['ts-row', focusedId === node.id ? 'focused' : '', elementSel && !inducedMode ? 'selected' : '', shakeId === node.id ? 'ts-row--shake' : ''].filter(Boolean).join(' ');
54740
55032
  return /*#__PURE__*/React__default.createElement("div", {
54741
55033
  key: node.id,
54742
55034
  className: rowClass,
@@ -54748,6 +55040,9 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54748
55040
  },
54749
55041
  onMouseDown: function onMouseDown() {
54750
55042
  return setFocusedId(node.id);
55043
+ },
55044
+ onAnimationEnd: function onAnimationEnd() {
55045
+ if (shakeId === node.id) setShakeId(null);
54751
55046
  }
54752
55047
  }, /*#__PURE__*/React__default.createElement("span", {
54753
55048
  className: "ts-caret-cell ".concat(hasChildren && !locked ? '' : 'leaf', " ").concat(hasChildren && !locked && (searchActive || expanded.has(node.id)) ? 'open' : ''),
@@ -54782,26 +55077,28 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54782
55077
  setPreview(null);
54783
55078
  hideTooltip();
54784
55079
  }
54785
- }, previewingTout ? /*#__PURE__*/React__default.createElement(IconDown, null) : toutState === 'on' ? /*#__PURE__*/React__default.createElement(IconCheck, null) : toutState === 'ind' ? /*#__PURE__*/React__default.createElement(IconDash, null) : null) : /*#__PURE__*/React__default.createElement("span", {
55080
+ }, previewingTout ? /*#__PURE__*/React__default.createElement(IconDown, null) : toutState === 'on' ? /*#__PURE__*/React__default.createElement(IconCheck, null) : toutState === 'ind' ? /*#__PURE__*/React__default.createElement(IconDash, null) : null) : !inducedMode && /*#__PURE__*/React__default.createElement("span", {
54786
55081
  style: {
54787
55082
  width: 16,
54788
55083
  flex: '0 0 16px'
54789
55084
  },
54790
55085
  "aria-hidden": "true"
54791
55086
  }), /*#__PURE__*/React__default.createElement("span", {
54792
- className: "ts-badge",
55087
+ className: "ts-badge ".concat(elementSel ? 'ts-badge--on' : '', " ").concat(showSwitch ? 'ts-badge--sw' : ''),
54793
55088
  style: badgeStyle,
54794
55089
  onClick: function onClick(e) {
54795
55090
  if (!isValue || locked || !selectableNode) return;
54796
55091
  e.stopPropagation();
54797
55092
  if (selectionMode === 'single') selectSingle(node);
54798
55093
  // multiple avec metaKeySelection : clic simple remplace, Ctrl/Cmd cumule
54799
- else if (selectionMode === 'multiple' && metaKeySelection && !e.ctrlKey && !e.metaKey) selectSingle(node);else toggleElement(node); // multiple (libre) & checkbox
55094
+ else if (selectionMode === 'multiple' && metaKeySelection && !e.ctrlKey && !e.metaKey) selectSingle(node);
55095
+ // mode induit : le nom d'un parent = ✓ (explicite) ; une feuille se coche, un induit refuse
55096
+ else if (inducedMode) hasChildren ? toggleExplicit(node, e) : toggleElementSafe(node, e);else toggleElement(node); // multiple (libre) & checkbox
54800
55097
  },
54801
55098
  onMouseEnter: function onMouseEnter(e) {
54802
55099
  // Aperçu de sélection : uniquement pour un nœud « value » sélectionnable.
54803
- if (isValue && !locked && selectableNode) setPreview({
54804
- kind: 'element',
55100
+ if (isValue && !locked && selectableNode && !isCov) setPreview({
55101
+ kind: inducedMode && hasChildren ? 'tout' : 'element',
54805
55102
  id: node.id
54806
55103
  });
54807
55104
  // Fil d'Ariane : sur TOUTES les options (feuilles comprises) quand showChipPath
@@ -54813,15 +55110,74 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54813
55110
  if (showChipPath) showTooltip(e, node.label, undefined, ariane);
54814
55111
  return;
54815
55112
  }
55113
+ if (inducedMode) {
55114
+ if (isCov) {
55115
+ var _p$label, _p$label2;
55116
+ var p = findNode(data, ruleAbove(node.id));
55117
+ showTooltip(e, "Induit par ".concat((_p$label = p === null || p === void 0 ? void 0 : p.label) !== null && _p$label !== void 0 ? _p$label : ''), "Les droits viennent de ".concat((_p$label2 = p === null || p === void 0 ? void 0 : p.label) !== null && _p$label2 !== void 0 ? _p$label2 : '', ". Pas de rattachement propre."), ariane);
55118
+ } else if (isRule) showTooltip(e, "Induit \xB7 ".concat(node.label), "Rattach\xE9 \xE0 ".concat(node.label, " seul. Ses enfants en d\xE9coulent. Cliquer le nom : passe en explicite."), ariane);else if (hasChildren) showTooltip(e, "Explicite \xB7 ".concat(node.label), "".concat(node.label, " et ses enfants d'aujourd'hui, nomm\xE9s un par un."), ariane);else showTooltip(e, node.label, "Rattache ".concat(node.label, "."), ariane);
55119
+ return;
55120
+ }
54816
55121
  if (checkboxMode) showTooltip(e, "\xC9l\xE9ment \xB7 ".concat(node.label), "Coche ".concat(node.label, " seul, comme valeur, sans toucher les enfants."), ariane);else if (selectionMode === 'single') showTooltip(e, node.label, "S\xE9lectionne ".concat(node.label, "."), ariane);else showTooltip(e, node.label, "S\xE9lectionne ou retire ".concat(node.label, "."), ariane);
54817
55122
  },
54818
55123
  onMouseLeave: function onMouseLeave() {
54819
55124
  if (isValue) setPreview(null);
54820
55125
  if (isValue || showChipPath) hideTooltip();
54821
55126
  }
54822
- }, showBadgeCheck && /*#__PURE__*/React__default.createElement("span", {
54823
- className: "ts-badge-cb ".concat(inPreview && !elementSel ? 'ghost' : '')
54824
- }, (elementSel || inPreview && !elementSel) && /*#__PURE__*/React__default.createElement(IconCheck, null)), node.icon && /*#__PURE__*/React__default.createElement("i", {
55127
+ }, inducedMode && isCov && /*#__PURE__*/React__default.createElement("span", {
55128
+ className: "ts-badge-cb ts-badge-cb--inf",
55129
+ "aria-hidden": "true"
55130
+ }, /*#__PURE__*/React__default.createElement(IconInfinity, null)), showSwitch && /*#__PURE__*/React__default.createElement("span", {
55131
+ className: "ts-sw",
55132
+ role: "group",
55133
+ "aria-label": "Rattachement \xB7 ".concat(node.label)
55134
+ }, /*#__PURE__*/React__default.createElement("button", {
55135
+ type: "button",
55136
+ className: "ts-sw__b ".concat(!isRule && toutState === 'on' ? 'on' : !isRule && toutState === 'ind' ? 'some' : ''),
55137
+ "aria-label": "Explicite \xB7 ".concat(node.label),
55138
+ "aria-pressed": !isRule && toutState === 'on',
55139
+ onClick: function onClick(e) {
55140
+ e.stopPropagation();
55141
+ toggleExplicit(node, e);
55142
+ },
55143
+ onMouseEnter: function onMouseEnter(e) {
55144
+ e.stopPropagation();
55145
+ setPreview({
55146
+ kind: 'tout',
55147
+ id: node.id
55148
+ });
55149
+ showTooltip(e, "Explicite \xB7 ".concat(node.label), "".concat(node.label, " et ses enfants d'aujourd'hui, nomm\xE9s un par un."));
55150
+ },
55151
+ onMouseLeave: function onMouseLeave(e) {
55152
+ e.stopPropagation();
55153
+ setPreview(null);
55154
+ hideTooltip();
55155
+ }
55156
+ }, !isRule && toutState === 'ind' ? /*#__PURE__*/React__default.createElement(IconDash, null) : /*#__PURE__*/React__default.createElement(IconCheck, null)), /*#__PURE__*/React__default.createElement("button", {
55157
+ type: "button",
55158
+ className: "ts-sw__b ".concat(isRule ? 'on' : ''),
55159
+ "aria-label": "Induit \xB7 ".concat(node.label),
55160
+ "aria-pressed": isRule,
55161
+ onClick: function onClick(e) {
55162
+ e.stopPropagation();
55163
+ toggleInduced(node, e);
55164
+ },
55165
+ onMouseEnter: function onMouseEnter(e) {
55166
+ e.stopPropagation();
55167
+ if (!isRule) setPreview({
55168
+ kind: 'inf',
55169
+ id: node.id
55170
+ });
55171
+ showTooltip(e, "Induit \xB7 ".concat(node.label), isRule ? "Rattach\xE9 \xE0 ".concat(node.label, " seul. Ses enfants, pr\xE9sents et \xE0 venir, en d\xE9coulent. Cliquer : revient \xE0 l'\xE9tat d'avant.") : "".concat(node.label, " seul, et tout ce qui est dessous en d\xE9coule, aujourd'hui et demain."));
55172
+ },
55173
+ onMouseLeave: function onMouseLeave(e) {
55174
+ e.stopPropagation();
55175
+ setPreview(null);
55176
+ hideTooltip();
55177
+ }
55178
+ }, /*#__PURE__*/React__default.createElement(IconInfinity, null))), showBadgeCheck && !(inducedMode && isCov) && /*#__PURE__*/React__default.createElement("span", {
55179
+ className: "ts-badge-cb ".concat(inPreview && !elementSel || inEcho ? 'ghost' : '', " ").concat(inPreview && previewInf || inEcho ? 'ts-badge-cb--inf' : '')
55180
+ }, inEcho ? /*#__PURE__*/React__default.createElement(IconInfinity, null) : inPreview && !elementSel ? previewInf ? /*#__PURE__*/React__default.createElement(IconInfinity, null) : /*#__PURE__*/React__default.createElement(IconCheck, null) : elementSel ? /*#__PURE__*/React__default.createElement(IconCheck, null) : null), node.icon && /*#__PURE__*/React__default.createElement("i", {
54825
55181
  className: "ts-badge-ico ".concat(node.icon),
54826
55182
  style: {
54827
55183
  color: elementSel ? contrastText(color) : color
@@ -54978,7 +55334,9 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
54978
55334
  type: "button",
54979
55335
  className: "ts-selectall",
54980
55336
  onClick: toggleSelectAll
54981
- }, allSelected ? 'Tout désélectionner' : 'Tout sélectionner') : /*#__PURE__*/React__default.createElement("span", null), validate ? /*#__PURE__*/React__default.createElement("div", {
55337
+ }, allSelected ? 'Tout désélectionner' : 'Tout sélectionner') : /*#__PURE__*/React__default.createElement("span", null), inducedMode && /*#__PURE__*/React__default.createElement("span", {
55338
+ className: "ts-footer-count"
55339
+ }, /*#__PURE__*/React__default.createElement("b", null, draftCount, " rattachement", draftCount > 1 ? 's' : ''), effectiveCount > draftCount ? " \xB7 droits sur ".concat(effectiveCount) : ''), validate ? /*#__PURE__*/React__default.createElement("div", {
54982
55340
  style: {
54983
55341
  display: 'flex',
54984
55342
  gap: 10,
@@ -55065,18 +55423,29 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
55065
55423
  }).join(', ')), useChips && shownChips.map(function (n) {
55066
55424
  var color = n[nodeColorField] || TS_MUTED;
55067
55425
  var ariane = showChipPath ? (pathMap[n.id] || [n.label]).slice(0, -1).join(' / ') : null;
55426
+ // Mode induit : la chip d'un parent ∞ porte le picto ; sa bulle dit le périmètre couvert.
55427
+ var isR = inducedMode && committedRules.has(n.id);
55428
+ var covered = isR ? valueIdsInclusive(n, []).filter(function (id) {
55429
+ return isIncluded(id, committed, committedRules);
55430
+ }).length : 0;
55431
+ var onEnter = isR ? function (e) {
55432
+ return showTooltip(e, "".concat(n.label, " \u221E"), "Un rattachement. Droits sur ".concat(covered, " organisation").concat(covered > 1 ? 's' : '', " aujourd'hui, et sur celles \xE0 venir."), showChipPath ? ariane || 'Racine' : undefined);
55433
+ } : showChipPath ? function (e) {
55434
+ return showTooltip(e, n.label, ariane || 'Racine');
55435
+ } : undefined;
55068
55436
  return /*#__PURE__*/React__default.createElement("span", {
55069
55437
  key: n.id,
55070
- className: "ts-chip",
55438
+ className: "ts-chip ".concat(isR ? 'ts-chip--inf' : ''),
55071
55439
  style: {
55072
55440
  background: color,
55073
55441
  color: contrastText(color)
55074
55442
  },
55075
- onMouseEnter: showChipPath ? function (e) {
55076
- return showTooltip(e, n.label, ariane || 'Racine');
55077
- } : undefined,
55078
- onMouseLeave: showChipPath ? hideTooltip : undefined
55079
- }, /*#__PURE__*/React__default.createElement("span", null, n.label), !inert && /*#__PURE__*/React__default.createElement("button", {
55443
+ onMouseEnter: onEnter,
55444
+ onMouseLeave: onEnter ? hideTooltip : undefined
55445
+ }, /*#__PURE__*/React__default.createElement("span", null, n.label), isR && /*#__PURE__*/React__default.createElement("span", {
55446
+ className: "ts-chip-inf",
55447
+ "aria-label": "induit"
55448
+ }, /*#__PURE__*/React__default.createElement(IconInfinity, null)), !inert && /*#__PURE__*/React__default.createElement("button", {
55080
55449
  type: "button",
55081
55450
  "aria-label": "Retirer ".concat(n.label),
55082
55451
  onClick: function onClick(e) {
@@ -55094,7 +55463,7 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
55094
55463
  title: "Tout effacer",
55095
55464
  onClick: function onClick(e) {
55096
55465
  e.stopPropagation();
55097
- setCommitted(new Set());
55466
+ setCommitted(new Set(), new Set());
55098
55467
  }
55099
55468
  }, /*#__PURE__*/React__default.createElement(IconClear, null)), showExpand && !inert && /*#__PURE__*/React__default.createElement("span", {
55100
55469
  className: "ts-expand",
@@ -55118,10 +55487,10 @@ var TreeSelectMaquette = function TreeSelectMaquette(_ref2) {
55118
55487
  className: "ts-backdrop",
55119
55488
  onClick: dismissOnBackdrop ? close : undefined
55120
55489
  }), panel(true)), document.body), tooltip && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement("div", {
55490
+ ref: tooltipRef,
55121
55491
  className: "ts-tooltip",
55122
55492
  style: {
55123
- left: tooltip.x,
55124
- top: tooltip.y
55493
+ visibility: 'hidden'
55125
55494
  }
55126
55495
  }, /*#__PURE__*/React__default.createElement("span", {
55127
55496
  className: "tt-title"
@@ -56025,10 +56394,74 @@ var RowActionsInlineCell = function RowActionsInlineCell(_ref3) {
56025
56394
  * Elle remplace un <div> de 20px en styles inline (`border: 2px solid #d1d5db`,
56026
56395
  * vert `#1E976A` a la selection) : trois couleurs codees en dur, hors du systeme.
56027
56396
  */
56028
- var CaseACocher = function CaseACocher(_ref4) {
56029
- var etat = _ref4.etat,
56030
- _onClick = _ref4.onClick,
56031
- titre = _ref4.titre;
56397
+ // ─────────────────────────────────────────────────────────────────────────────
56398
+ // PICTO « LIGNES COCHÉES » — trois lignes de tableau, une coche devant celles qui
56399
+ // sont cochées, un tiret devant les autres ; les lignes que le mode masque passent
56400
+ // en transparence. Il dit littéralement ce qu'on va voir. Sert au déclencheur du
56401
+ // picking (où il reflète le mode en cours), à ses entrées de menu, et à l'entrée
56402
+ // « Afficher seulement la sélection » du menu Actions : même sens, même picto.
56403
+ // SVG inline en `currentColor` : la couleur vient du CSS, aucune police d'icônes
56404
+ // requise (primeicons n'est pas chargé dans l'app hôte et la ligature Material ne
56405
+ // se forme pas dans la cellule de filtre du thead).
56406
+ // Décidé le 25/09/2026 (storybook : planches + sandbox « selectionFilter »).
56407
+ // ─────────────────────────────────────────────────────────────────────────────
56408
+ var LIGNES_PICTO = [{
56409
+ y: 4,
56410
+ cochee: true
56411
+ }, {
56412
+ y: 10.5,
56413
+ cochee: false
56414
+ }, {
56415
+ y: 17,
56416
+ cochee: true
56417
+ }];
56418
+ var PictoLignesCochees = function PictoLignesCochees(_ref4) {
56419
+ var _ref4$mode = _ref4.mode,
56420
+ mode = _ref4$mode === void 0 ? 'all' : _ref4$mode,
56421
+ _ref4$taille = _ref4.taille,
56422
+ taille = _ref4$taille === void 0 ? 22 : _ref4$taille;
56423
+ var visible = function visible(l) {
56424
+ return mode === 'all' || (mode === 'checked' ? l.cochee : !l.cochee);
56425
+ };
56426
+ return /*#__PURE__*/React__default.createElement("svg", {
56427
+ className: "ab-picto-lignes",
56428
+ width: taille,
56429
+ height: taille,
56430
+ viewBox: "0 0 24 24",
56431
+ "aria-hidden": "true",
56432
+ focusable: "false"
56433
+ }, LIGNES_PICTO.map(function (l) {
56434
+ return /*#__PURE__*/React__default.createElement("g", {
56435
+ key: l.y,
56436
+ opacity: visible(l) ? 1 : 0.22
56437
+ }, l.cochee ? /*#__PURE__*/React__default.createElement("path", {
56438
+ d: "M2.5 ".concat(l.y + 1.6, " l1.8 1.8 l3.2 -3.4"),
56439
+ fill: "none",
56440
+ stroke: "currentColor",
56441
+ strokeWidth: "1.9",
56442
+ strokeLinecap: "round",
56443
+ strokeLinejoin: "round"
56444
+ }) : /*#__PURE__*/React__default.createElement("rect", {
56445
+ x: "3",
56446
+ y: l.y + 0.6,
56447
+ width: "4.5",
56448
+ height: "1.9",
56449
+ rx: "0.95",
56450
+ fill: "currentColor"
56451
+ }), /*#__PURE__*/React__default.createElement("rect", {
56452
+ x: "10",
56453
+ y: l.y,
56454
+ width: "12",
56455
+ height: "3",
56456
+ rx: "1.5",
56457
+ fill: "currentColor"
56458
+ }));
56459
+ }));
56460
+ };
56461
+ var CaseACocher = function CaseACocher(_ref5) {
56462
+ var etat = _ref5.etat,
56463
+ _onClick = _ref5.onClick,
56464
+ titre = _ref5.titre;
56032
56465
  return /*#__PURE__*/React__default.createElement("button", {
56033
56466
  type: "button",
56034
56467
  className: "ab-checkbox".concat(etat === 'toutes' ? ' checked' : '').concat(etat === 'partielle' ? ' partial' : ''),
@@ -56043,12 +56476,12 @@ var CaseACocher = function CaseACocher(_ref4) {
56043
56476
  className: "material-icons"
56044
56477
  }, "check"));
56045
56478
  };
56046
- var RowActionsCell = function RowActionsCell(_ref5) {
56479
+ var RowActionsCell = function RowActionsCell(_ref6) {
56047
56480
  var _ajuste$top, _ajuste$left;
56048
- var actions = _ref5.actions,
56049
- rowData = _ref5.rowData,
56050
- href = _ref5.href,
56051
- labels = _ref5.labels;
56481
+ var actions = _ref6.actions,
56482
+ rowData = _ref6.rowData,
56483
+ href = _ref6.href,
56484
+ labels = _ref6.labels;
56052
56485
  var _useState3 = useState(false),
56053
56486
  _useState4 = _slicedToArray$b(_useState3, 2),
56054
56487
  open = _useState4[0],
@@ -56265,10 +56698,10 @@ var RowActionsCell = function RowActionsCell(_ref5) {
56265
56698
  } else {
56266
56699
  extraAttrs.href = actionHref;
56267
56700
  }
56268
- if (action.data) Object.entries(action.data).forEach(function (_ref6) {
56269
- var _ref7 = _slicedToArray$b(_ref6, 2),
56270
- k = _ref7[0],
56271
- v = _ref7[1];
56701
+ if (action.data) Object.entries(action.data).forEach(function (_ref7) {
56702
+ var _ref8 = _slicedToArray$b(_ref7, 2),
56703
+ k = _ref8[0],
56704
+ v = _ref8[1];
56272
56705
  extraAttrs[k] = v;
56273
56706
  });
56274
56707
  return /*#__PURE__*/React__default.createElement("a", _extends$G({
@@ -56324,14 +56757,14 @@ var RowActionsCell = function RowActionsCell(_ref5) {
56324
56757
  className: "material-icons"
56325
56758
  }, "more_vert")), dropdown);
56326
56759
  };
56327
- var DeviseBodyCell = function DeviseBodyCell(_ref8) {
56760
+ var DeviseBodyCell = function DeviseBodyCell(_ref9) {
56328
56761
  var _col$devises, _col$decimal, _cellDevise$code;
56329
- var rowData = _ref8.rowData,
56330
- col = _ref8.col,
56331
- editable = _ref8.editable,
56332
- _ref8$isRowEditing = _ref8.isRowEditing,
56333
- isRowEditing = _ref8$isRowEditing === void 0 ? false : _ref8$isRowEditing,
56334
- onSave = _ref8.onSave;
56762
+ var rowData = _ref9.rowData,
56763
+ col = _ref9.col,
56764
+ editable = _ref9.editable,
56765
+ _ref9$isRowEditing = _ref9.isRowEditing,
56766
+ isRowEditing = _ref9$isRowEditing === void 0 ? false : _ref9$isRowEditing,
56767
+ onSave = _ref9.onSave;
56335
56768
  var _useState9 = useState(false),
56336
56769
  _useState0 = _slicedToArray$b(_useState9, 2),
56337
56770
  editing = _useState0[0],
@@ -56358,10 +56791,10 @@ var DeviseBodyCell = function DeviseBodyCell(_ref8) {
56358
56791
  setDevise(val);
56359
56792
  };
56360
56793
  var openEdit = function openEdit() {
56361
- var _displayCell$value, _ref9, _ref0, _displayCell$devise;
56794
+ var _displayCell$value, _ref0, _ref1, _displayCell$devise;
56362
56795
  if (!editable) return;
56363
56796
  setAmount((_displayCell$value = displayCell === null || displayCell === void 0 ? void 0 : displayCell.value) !== null && _displayCell$value !== void 0 ? _displayCell$value : '');
56364
- var initialDevise = (_ref9 = (_ref0 = (_displayCell$devise = displayCell === null || displayCell === void 0 ? void 0 : displayCell.devise) !== null && _displayCell$devise !== void 0 ? _displayCell$devise : col.currency) !== null && _ref0 !== void 0 ? _ref0 : devises[0]) !== null && _ref9 !== void 0 ? _ref9 : null;
56797
+ var initialDevise = (_ref0 = (_ref1 = (_displayCell$devise = displayCell === null || displayCell === void 0 ? void 0 : displayCell.devise) !== null && _displayCell$devise !== void 0 ? _displayCell$devise : col.currency) !== null && _ref1 !== void 0 ? _ref1 : devises[0]) !== null && _ref0 !== void 0 ? _ref0 : null;
56365
56798
  deviseRef.current = initialDevise;
56366
56799
  setDevise(initialDevise);
56367
56800
  setEditing(true);
@@ -56370,9 +56803,9 @@ var DeviseBodyCell = function DeviseBodyCell(_ref8) {
56370
56803
  // Sync avec le mode row edit : auto-ouvrir / fermer
56371
56804
  useEffect(function () {
56372
56805
  if (isRowEditing && !editing) {
56373
- var _displayCell$value2, _ref1, _ref10, _displayCell$devise2;
56806
+ var _displayCell$value2, _ref10, _ref11, _displayCell$devise2;
56374
56807
  setAmount((_displayCell$value2 = displayCell === null || displayCell === void 0 ? void 0 : displayCell.value) !== null && _displayCell$value2 !== void 0 ? _displayCell$value2 : '');
56375
- var initialDevise = (_ref1 = (_ref10 = (_displayCell$devise2 = displayCell === null || displayCell === void 0 ? void 0 : displayCell.devise) !== null && _displayCell$devise2 !== void 0 ? _displayCell$devise2 : col.currency) !== null && _ref10 !== void 0 ? _ref10 : devises[0]) !== null && _ref1 !== void 0 ? _ref1 : null;
56808
+ var initialDevise = (_ref10 = (_ref11 = (_displayCell$devise2 = displayCell === null || displayCell === void 0 ? void 0 : displayCell.devise) !== null && _displayCell$devise2 !== void 0 ? _displayCell$devise2 : col.currency) !== null && _ref11 !== void 0 ? _ref11 : devises[0]) !== null && _ref10 !== void 0 ? _ref10 : null;
56376
56809
  deviseRef.current = initialDevise;
56377
56810
  setDevise(initialDevise);
56378
56811
  setEditing(true);
@@ -56479,14 +56912,14 @@ var DeviseBodyCell = function DeviseBodyCell(_ref8) {
56479
56912
  className: "span-sub"
56480
56913
  }, "".concat(numberWithSpaces(value), " ").concat(cellDevise.code)));
56481
56914
  };
56482
- var TreeSelectBodyCell = function TreeSelectBodyCell(_ref11) {
56915
+ var TreeSelectBodyCell = function TreeSelectBodyCell(_ref12) {
56483
56916
  var _col$selectionMode, _col$clearable;
56484
- var rowData = _ref11.rowData,
56485
- col = _ref11.col,
56486
- editable = _ref11.editable,
56487
- _ref11$isRowEditing = _ref11.isRowEditing,
56488
- isRowEditing = _ref11$isRowEditing === void 0 ? false : _ref11$isRowEditing,
56489
- onSave = _ref11.onSave;
56917
+ var rowData = _ref12.rowData,
56918
+ col = _ref12.col,
56919
+ editable = _ref12.editable,
56920
+ _ref12$isRowEditing = _ref12.isRowEditing,
56921
+ isRowEditing = _ref12$isRowEditing === void 0 ? false : _ref12$isRowEditing,
56922
+ onSave = _ref12.onSave;
56490
56923
  var _useState15 = useState(false),
56491
56924
  _useState16 = _slicedToArray$b(_useState15, 2),
56492
56925
  editing = _useState16[0],
@@ -56681,12 +57114,12 @@ var TreeSelectBodyCell = function TreeSelectBodyCell(_ref11) {
56681
57114
  }, /*#__PURE__*/React__default.createElement(IconCellClear, null)));
56682
57115
  })));
56683
57116
  };
56684
- var DocumentEditorCell = function DocumentEditorCell(_ref12) {
57117
+ var DocumentEditorCell = function DocumentEditorCell(_ref13) {
56685
57118
  var _options$value;
56686
- var options = _ref12.options,
56687
- col = _ref12.col,
56688
- onFilePickerOpen = _ref12.onFilePickerOpen,
56689
- onFilePickerClose = _ref12.onFilePickerClose;
57119
+ var options = _ref13.options,
57120
+ col = _ref13.col,
57121
+ onFilePickerOpen = _ref13.onFilePickerOpen,
57122
+ onFilePickerClose = _ref13.onFilePickerClose;
56690
57123
  var _useState19 = useState(false),
56691
57124
  _useState20 = _slicedToArray$b(_useState19, 2),
56692
57125
  uploading = _useState20[0],
@@ -56694,7 +57127,7 @@ var DocumentEditorCell = function DocumentEditorCell(_ref12) {
56694
57127
  var fileInputRef = useRef(null);
56695
57128
  var docs = (_options$value = options.value) !== null && _options$value !== void 0 ? _options$value : [];
56696
57129
  var handleFileChange = /*#__PURE__*/function () {
56697
- var _ref13 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
57130
+ var _ref14 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
56698
57131
  var file, formData, res, data, _t, _t2;
56699
57132
  return _regenerator().w(function (_context) {
56700
57133
  while (1) switch (_context.n) {
@@ -56749,7 +57182,7 @@ var DocumentEditorCell = function DocumentEditorCell(_ref12) {
56749
57182
  }, _callee, null, [[2,, 7, 8]]);
56750
57183
  }));
56751
57184
  return function handleFileChange(_x) {
56752
- return _ref13.apply(this, arguments);
57185
+ return _ref14.apply(this, arguments);
56753
57186
  };
56754
57187
  }();
56755
57188
  var handlePickerClick = function handlePickerClick() {
@@ -56832,17 +57265,17 @@ var DocumentEditorCell = function DocumentEditorCell(_ref12) {
56832
57265
  onChange: handleFileChange
56833
57266
  }));
56834
57267
  };
56835
- var SelfEditableCell = function SelfEditableCell(_ref14) {
57268
+ var SelfEditableCell = function SelfEditableCell(_ref15) {
56836
57269
  var _col$header;
56837
- var rowData = _ref14.rowData,
56838
- col = _ref14.col,
56839
- editable = _ref14.editable,
56840
- isRowEditing = _ref14.isRowEditing,
56841
- onSave = _ref14.onSave,
56842
- renderDisplay = _ref14.renderDisplay,
56843
- onCreateTag = _ref14.onCreateTag,
56844
- onTagCreated = _ref14.onTagCreated,
56845
- labels = _ref14.labels;
57270
+ var rowData = _ref15.rowData,
57271
+ col = _ref15.col,
57272
+ editable = _ref15.editable,
57273
+ isRowEditing = _ref15.isRowEditing,
57274
+ onSave = _ref15.onSave,
57275
+ renderDisplay = _ref15.renderDisplay,
57276
+ onCreateTag = _ref15.onCreateTag,
57277
+ onTagCreated = _ref15.onTagCreated,
57278
+ labels = _ref15.labels;
56846
57279
  var _useState21 = useState(false),
56847
57280
  _useState22 = _slicedToArray$b(_useState21, 2),
56848
57281
  editing = _useState22[0],
@@ -57402,13 +57835,13 @@ var SelfEditableCell = function SelfEditableCell(_ref14) {
57402
57835
  }));
57403
57836
  }
57404
57837
  };
57405
- var DocumentBodyCell = function DocumentBodyCell(_ref15) {
57838
+ var DocumentBodyCell = function DocumentBodyCell(_ref16) {
57406
57839
  var _rowData$col$field2;
57407
- var rowData = _ref15.rowData,
57408
- col = _ref15.col,
57409
- editable = _ref15.editable,
57410
- isRowEditing = _ref15.isRowEditing,
57411
- onSave = _ref15.onSave;
57840
+ var rowData = _ref16.rowData,
57841
+ col = _ref16.col,
57842
+ editable = _ref16.editable,
57843
+ isRowEditing = _ref16.isRowEditing,
57844
+ onSave = _ref16.onSave;
57412
57845
  var _useState27 = useState(false),
57413
57846
  _useState28 = _slicedToArray$b(_useState27, 2),
57414
57847
  editing = _useState28[0],
@@ -57512,81 +57945,81 @@ var resolveGlobalHandler = function resolveGlobalHandler(chemin) {
57512
57945
  }, window);
57513
57946
  return typeof fn === 'function' ? fn : null;
57514
57947
  };
57515
- var Table$1 = function Table(_ref16) {
57516
- var _ref16$value = _ref16.value,
57517
- value = _ref16$value === void 0 ? [] : _ref16$value,
57518
- _ref16$columns = _ref16.columns,
57519
- columns = _ref16$columns === void 0 ? [] : _ref16$columns,
57520
- _ref16$paginator = _ref16.paginator,
57521
- paginator = _ref16$paginator === void 0 ? true : _ref16$paginator,
57522
- _ref16$rows = _ref16.rows,
57523
- rows = _ref16$rows === void 0 ? 25 : _ref16$rows,
57524
- _ref16$loading = _ref16.loading,
57525
- loading = _ref16$loading === void 0 ? false : _ref16$loading,
57526
- _ref16$stripedRows = _ref16.stripedRows,
57527
- stripedRows = _ref16$stripedRows === void 0 ? false : _ref16$stripedRows,
57528
- _ref16$selectionMode = _ref16.selectionMode,
57529
- selectionMode = _ref16$selectionMode === void 0 ? null : _ref16$selectionMode,
57530
- selection = _ref16.selection,
57531
- onSelectionChange = _ref16.onSelectionChange,
57532
- _ref16$editable = _ref16.editable,
57533
- editable = _ref16$editable === void 0 ? false : _ref16$editable,
57534
- _ref16$lockable = _ref16.lockable,
57535
- lockable = _ref16$lockable === void 0 ? false : _ref16$lockable,
57536
- _ref16$rowEdit = _ref16.rowEdit,
57537
- rowEdit = _ref16$rowEdit === void 0 ? false : _ref16$rowEdit,
57538
- _ref16$columnFilter = _ref16.columnFilter,
57539
- columnFilter = _ref16$columnFilter === void 0 ? true : _ref16$columnFilter,
57540
- onChange = _ref16.onChange,
57541
- onCellChange = _ref16.onCellChange,
57542
- onLoad = _ref16.onLoad,
57543
- tableId = _ref16.tableId,
57544
- onAdd = _ref16.onAdd,
57545
- showAdd = _ref16.showAdd,
57546
- _ref16$addLabel = _ref16.addLabel,
57547
- addLabel = _ref16$addLabel === void 0 ? '+' : _ref16$addLabel,
57548
- addTooltip = _ref16.addTooltip,
57549
- _ref16$addRowPosition = _ref16.addRowPosition,
57550
- addRowPosition = _ref16$addRowPosition === void 0 ? 'end' : _ref16$addRowPosition,
57551
- _ref16$defaultRowHeig = _ref16.defaultRowHeight,
57552
- defaultRowHeight = _ref16$defaultRowHeig === void 0 ? 'small' : _ref16$defaultRowHeig,
57553
- onReorderClick = _ref16.onReorderClick,
57554
- labels = _ref16.labels,
57555
- _ref16$lazy = _ref16.lazy,
57556
- lazy = _ref16$lazy === void 0 ? false : _ref16$lazy,
57557
- totalRecords = _ref16.totalRecords,
57558
- onLazyLoad = _ref16.onLazyLoad,
57559
- _ref16$deletableRows = _ref16.deletableRows,
57560
- deletableRows = _ref16$deletableRows === void 0 ? false : _ref16$deletableRows,
57561
- onDeleteRow = _ref16.onDeleteRow,
57562
- _ref16$confirmDelete = _ref16.confirmDelete,
57563
- confirmDelete = _ref16$confirmDelete === void 0 ? true : _ref16$confirmDelete,
57564
- _ref16$editableRows = _ref16.editableRows,
57565
- editableRows = _ref16$editableRows === void 0 ? false : _ref16$editableRows,
57566
- onEditRow = _ref16.onEditRow,
57567
- onCreateTag = _ref16.onCreateTag,
57568
- _ref16$rowSelection = _ref16.rowSelection,
57569
- rowSelection = _ref16$rowSelection === void 0 ? false : _ref16$rowSelection,
57570
- _ref16$selectionActio = _ref16.selectionActions,
57571
- selectionActions = _ref16$selectionActio === void 0 ? [] : _ref16$selectionActio,
57572
- onSelectionAction = _ref16.onSelectionAction,
57573
- selectionActionHandlers = _ref16.selectionActionHandlers,
57574
- toolbarActionHandlers = _ref16.toolbarActionHandlers,
57575
- _ref16$selectionFilte = _ref16.selectionFilter,
57576
- selectionFilter = _ref16$selectionFilte === void 0 ? false : _ref16$selectionFilte;
57577
- _ref16.bulkActions;
57578
- _ref16.onBulkAction;
57579
- var _ref16$toolbarActions = _ref16.toolbarActions,
57580
- toolbarActions = _ref16$toolbarActions === void 0 ? [] : _ref16$toolbarActions,
57581
- onToolbarAction = _ref16.onToolbarAction,
57582
- _ref16$readOnlyStyle = _ref16.readOnlyStyle,
57583
- readOnlyStyle = _ref16$readOnlyStyle === void 0 ? true : _ref16$readOnlyStyle,
57584
- _ref16$freezableColum = _ref16.freezableColumns,
57585
- freezableColumns = _ref16$freezableColum === void 0 ? true : _ref16$freezableColum,
57586
- _ref16$hideableColumn = _ref16.hideableColumns,
57587
- hideableColumns = _ref16$hideableColumn === void 0 ? true : _ref16$hideableColumn,
57588
- onButtonClick = _ref16.onButtonClick,
57589
- onCellClick = _ref16.onCellClick;
57948
+ var Table$1 = function Table(_ref17) {
57949
+ var _ref17$value = _ref17.value,
57950
+ value = _ref17$value === void 0 ? [] : _ref17$value,
57951
+ _ref17$columns = _ref17.columns,
57952
+ columns = _ref17$columns === void 0 ? [] : _ref17$columns,
57953
+ _ref17$paginator = _ref17.paginator,
57954
+ paginator = _ref17$paginator === void 0 ? true : _ref17$paginator,
57955
+ _ref17$rows = _ref17.rows,
57956
+ rows = _ref17$rows === void 0 ? 25 : _ref17$rows,
57957
+ _ref17$loading = _ref17.loading,
57958
+ loading = _ref17$loading === void 0 ? false : _ref17$loading,
57959
+ _ref17$stripedRows = _ref17.stripedRows,
57960
+ stripedRows = _ref17$stripedRows === void 0 ? false : _ref17$stripedRows,
57961
+ _ref17$selectionMode = _ref17.selectionMode,
57962
+ selectionMode = _ref17$selectionMode === void 0 ? null : _ref17$selectionMode,
57963
+ selection = _ref17.selection,
57964
+ onSelectionChange = _ref17.onSelectionChange,
57965
+ _ref17$editable = _ref17.editable,
57966
+ editable = _ref17$editable === void 0 ? false : _ref17$editable,
57967
+ _ref17$lockable = _ref17.lockable,
57968
+ lockable = _ref17$lockable === void 0 ? false : _ref17$lockable,
57969
+ _ref17$rowEdit = _ref17.rowEdit,
57970
+ rowEdit = _ref17$rowEdit === void 0 ? false : _ref17$rowEdit,
57971
+ _ref17$columnFilter = _ref17.columnFilter,
57972
+ columnFilter = _ref17$columnFilter === void 0 ? true : _ref17$columnFilter,
57973
+ onChange = _ref17.onChange,
57974
+ onCellChange = _ref17.onCellChange,
57975
+ onLoad = _ref17.onLoad,
57976
+ tableId = _ref17.tableId,
57977
+ onAdd = _ref17.onAdd,
57978
+ showAdd = _ref17.showAdd,
57979
+ _ref17$addLabel = _ref17.addLabel,
57980
+ addLabel = _ref17$addLabel === void 0 ? '+' : _ref17$addLabel,
57981
+ addTooltip = _ref17.addTooltip,
57982
+ _ref17$addRowPosition = _ref17.addRowPosition,
57983
+ addRowPosition = _ref17$addRowPosition === void 0 ? 'end' : _ref17$addRowPosition,
57984
+ _ref17$defaultRowHeig = _ref17.defaultRowHeight,
57985
+ defaultRowHeight = _ref17$defaultRowHeig === void 0 ? 'small' : _ref17$defaultRowHeig,
57986
+ onReorderClick = _ref17.onReorderClick,
57987
+ labels = _ref17.labels,
57988
+ _ref17$lazy = _ref17.lazy,
57989
+ lazy = _ref17$lazy === void 0 ? false : _ref17$lazy,
57990
+ totalRecords = _ref17.totalRecords,
57991
+ onLazyLoad = _ref17.onLazyLoad,
57992
+ _ref17$deletableRows = _ref17.deletableRows,
57993
+ deletableRows = _ref17$deletableRows === void 0 ? false : _ref17$deletableRows,
57994
+ onDeleteRow = _ref17.onDeleteRow,
57995
+ _ref17$confirmDelete = _ref17.confirmDelete,
57996
+ confirmDelete = _ref17$confirmDelete === void 0 ? true : _ref17$confirmDelete,
57997
+ _ref17$editableRows = _ref17.editableRows,
57998
+ editableRows = _ref17$editableRows === void 0 ? false : _ref17$editableRows,
57999
+ onEditRow = _ref17.onEditRow,
58000
+ onCreateTag = _ref17.onCreateTag,
58001
+ _ref17$rowSelection = _ref17.rowSelection,
58002
+ rowSelection = _ref17$rowSelection === void 0 ? false : _ref17$rowSelection,
58003
+ _ref17$selectionActio = _ref17.selectionActions,
58004
+ selectionActions = _ref17$selectionActio === void 0 ? [] : _ref17$selectionActio,
58005
+ onSelectionAction = _ref17.onSelectionAction,
58006
+ selectionActionHandlers = _ref17.selectionActionHandlers,
58007
+ toolbarActionHandlers = _ref17.toolbarActionHandlers,
58008
+ _ref17$selectionFilte = _ref17.selectionFilter,
58009
+ selectionFilter = _ref17$selectionFilte === void 0 ? false : _ref17$selectionFilte;
58010
+ _ref17.bulkActions;
58011
+ _ref17.onBulkAction;
58012
+ var _ref17$toolbarActions = _ref17.toolbarActions,
58013
+ toolbarActions = _ref17$toolbarActions === void 0 ? [] : _ref17$toolbarActions,
58014
+ onToolbarAction = _ref17.onToolbarAction,
58015
+ _ref17$readOnlyStyle = _ref17.readOnlyStyle,
58016
+ readOnlyStyle = _ref17$readOnlyStyle === void 0 ? true : _ref17$readOnlyStyle,
58017
+ _ref17$freezableColum = _ref17.freezableColumns,
58018
+ freezableColumns = _ref17$freezableColum === void 0 ? true : _ref17$freezableColum,
58019
+ _ref17$hideableColumn = _ref17.hideableColumns,
58020
+ hideableColumns = _ref17$hideableColumn === void 0 ? true : _ref17$hideableColumn,
58021
+ onButtonClick = _ref17.onButtonClick,
58022
+ onCellClick = _ref17.onCellClick;
57590
58023
  var _useState31 = useState(true),
57591
58024
  _useState32 = _slicedToArray$b(_useState31, 2),
57592
58025
  locked = _useState32[0],
@@ -57698,22 +58131,40 @@ var Table$1 = function Table(_ref16) {
57698
58131
  };
57699
58132
  }, [selectionFilterOpen]);
57700
58133
 
58134
+ // Le menu de picking est calé sur le bord gauche de sa cellule. Il ne peut
58135
+ // pas sortir à gauche (la colonne est gelée au bord du tableau), mais peut
58136
+ // dépasser à droite sur un écran étroit : on le borne après mesure, même
58137
+ // règle que le menu de colonne (marge 8px dans la fenêtre).
58138
+ var _useState41 = useState(null),
58139
+ _useState42 = _slicedToArray$b(_useState41, 2),
58140
+ pickingAjuste = _useState42[0],
58141
+ setPickingAjuste = _useState42[1];
58142
+ useLayoutEffect(function () {
58143
+ if (!selectionFilterOpen || !selectionMenuRef.current) {
58144
+ setPickingAjuste(null);
58145
+ return;
58146
+ }
58147
+ var m = selectionMenuRef.current.getBoundingClientRect();
58148
+ var marge = 8;
58149
+ if (m.right > window.innerWidth - marge) setPickingAjuste(Math.max(marge, window.innerWidth - marge - m.width));else if (m.left < marge) setPickingAjuste(marge);
58150
+ }, [selectionFilterOpen]);
58151
+
57701
58152
  // Pagination contrôlée : indispensable pour amener l'utilisateur sur la page de la
57702
58153
  // ligne insérée par handleAddRow. Initialisation avec la même logique de restauration
57703
58154
  // que customRestoreState (page 1 par défaut, first restauré seulement s'il reste dans
57704
58155
  // la plage de données) — la clé dt-state est recalculée ici car DT_STATE_KEY est
57705
58156
  // déclaré plus bas.
57706
- var _useState41 = useState(function () {
58157
+ var _useState43 = useState(function () {
57707
58158
  try {
57708
58159
  var s = JSON.parse(localStorage.getItem(tableId ? "dt-state:".concat(tableId) : 'dt-state') || '{}');
57709
58160
  if (typeof s.rows === 'number' && s.rows > 0) return s.rows;
57710
58161
  } catch (_unused2) {/* noop */}
57711
58162
  return rows;
57712
58163
  }),
57713
- _useState42 = _slicedToArray$b(_useState41, 2),
57714
- pageRows = _useState42[0],
57715
- setPageRows = _useState42[1];
57716
- var _useState43 = useState(function () {
58164
+ _useState44 = _slicedToArray$b(_useState43, 2),
58165
+ pageRows = _useState44[0],
58166
+ setPageRows = _useState44[1];
58167
+ var _useState45 = useState(function () {
57717
58168
  try {
57718
58169
  var s = JSON.parse(localStorage.getItem(tableId ? "dt-state:".concat(tableId) : 'dt-state') || '{}');
57719
58170
  var len = Array.isArray(data) ? data.length : 0;
@@ -57721,19 +58172,19 @@ var Table$1 = function Table(_ref16) {
57721
58172
  } catch (_unused3) {/* noop */}
57722
58173
  return 0;
57723
58174
  }),
57724
- _useState44 = _slicedToArray$b(_useState43, 2),
57725
- first = _useState44[0],
57726
- setFirst = _useState44[1];
57727
- // Scroll différé du viewport vers le point d'insertion après un ajout de ligne.
57728
- var _useState45 = useState(null),
57729
58175
  _useState46 = _slicedToArray$b(_useState45, 2),
57730
- pendingScroll = _useState46[0],
57731
- setPendingScroll = _useState46[1];
57732
- // Ligne en attente de confirmation de suppression (prop confirmDelete).
58176
+ first = _useState46[0],
58177
+ setFirst = _useState46[1];
58178
+ // Scroll différé du viewport vers le point d'insertion après un ajout de ligne.
57733
58179
  var _useState47 = useState(null),
57734
58180
  _useState48 = _slicedToArray$b(_useState47, 2),
57735
- deleteCandidate = _useState48[0],
57736
- setDeleteCandidate = _useState48[1];
58181
+ pendingScroll = _useState48[0],
58182
+ setPendingScroll = _useState48[1];
58183
+ // Ligne en attente de confirmation de suppression (prop confirmDelete).
58184
+ var _useState49 = useState(null),
58185
+ _useState50 = _slicedToArray$b(_useState49, 2),
58186
+ deleteCandidate = _useState50[0],
58187
+ setDeleteCandidate = _useState50[1];
57737
58188
  var dtRef = useRef(null);
57738
58189
  // « Ajuster au contenu » expose hors de son effet : le menu d'un en-tete doit
57739
58190
  // pouvoir l'appeler SANS passer par la poignee de redimensionnement, qui
@@ -57758,10 +58209,10 @@ var Table$1 = function Table(_ref16) {
57758
58209
  // non avec les autres états, parce que l'effet de redimensionnement juste en
57759
58210
  // dessous le lit dans ses dépendances : un `const` déclaré après serait dans sa
57760
58211
  // zone morte temporelle et lèverait un ReferenceError au rendu.
57761
- var _useState49 = useState(0),
57762
- _useState50 = _slicedToArray$b(_useState49, 2),
57763
- tableKey = _useState50[0],
57764
- setTableKey = _useState50[1];
58212
+ var _useState51 = useState(0),
58213
+ _useState52 = _slicedToArray$b(_useState51, 2),
58214
+ tableKey = _useState52[0],
58215
+ setTableKey = _useState52[1];
57765
58216
 
57766
58217
  // ─── Redimensionnement : en direct, et borné à la butée ──────────────────
57767
58218
  //
@@ -58195,12 +58646,12 @@ var Table$1 = function Table(_ref16) {
58195
58646
  elements.forEach(function (el) {
58196
58647
  max = Math.max(max, el.offsetWidth);
58197
58648
  });
58198
- memo.forEach(function (_ref17) {
58199
- var _ref18 = _slicedToArray$b(_ref17, 4),
58200
- el = _ref18[0],
58201
- w = _ref18[1],
58202
- mw = _ref18[2],
58203
- f = _ref18[3];
58649
+ memo.forEach(function (_ref18) {
58650
+ var _ref19 = _slicedToArray$b(_ref18, 4),
58651
+ el = _ref19[0],
58652
+ w = _ref19[1],
58653
+ mw = _ref19[2],
58654
+ f = _ref19[3];
58204
58655
  el.style.width = w;
58205
58656
  el.style.maxWidth = mw;
58206
58657
  el.style.flex = f;
@@ -58247,10 +58698,10 @@ var Table$1 = function Table(_ref16) {
58247
58698
  }
58248
58699
  ajustees.set(indexCss, large);
58249
58700
  if (!feuilleAjustee) feuilleAjustee = document.createElement('style');
58250
- feuilleAjustee.textContent = Array.from(ajustees, function (_ref19) {
58251
- var _ref20 = _slicedToArray$b(_ref19, 2),
58252
- i = _ref20[0],
58253
- l = _ref20[1];
58701
+ feuilleAjustee.textContent = Array.from(ajustees, function (_ref20) {
58702
+ var _ref21 = _slicedToArray$b(_ref20, 2),
58703
+ i = _ref21[0],
58704
+ l = _ref21[1];
58254
58705
  return reglePourColonne(i, l);
58255
58706
  }).join('\n');
58256
58707
  document.head.appendChild(feuilleAjustee); // remise a la fin : passe devant PrimeReact
@@ -58325,10 +58776,10 @@ var Table$1 = function Table(_ref16) {
58325
58776
  total += large;
58326
58777
  });
58327
58778
  if (!feuilleAjustee) feuilleAjustee = document.createElement('style');
58328
- feuilleAjustee.textContent = Array.from(ajustees, function (_ref21) {
58329
- var _ref22 = _slicedToArray$b(_ref21, 2),
58330
- i = _ref22[0],
58331
- l = _ref22[1];
58779
+ feuilleAjustee.textContent = Array.from(ajustees, function (_ref22) {
58780
+ var _ref23 = _slicedToArray$b(_ref22, 2),
58781
+ i = _ref23[0],
58782
+ l = _ref23[1];
58332
58783
  return reglePourColonne(i, l);
58333
58784
  }).join('\n');
58334
58785
  document.head.appendChild(feuilleAjustee);
@@ -58373,10 +58824,10 @@ var Table$1 = function Table(_ref16) {
58373
58824
  avantAjustement["delete"](indexCss);
58374
58825
  ajustees.set(indexCss, cible);
58375
58826
  if (!feuilleAjustee) feuilleAjustee = document.createElement('style');
58376
- feuilleAjustee.textContent = Array.from(ajustees, function (_ref23) {
58377
- var _ref24 = _slicedToArray$b(_ref23, 2),
58378
- i = _ref24[0],
58379
- l = _ref24[1];
58827
+ feuilleAjustee.textContent = Array.from(ajustees, function (_ref24) {
58828
+ var _ref25 = _slicedToArray$b(_ref24, 2),
58829
+ i = _ref25[0],
58830
+ l = _ref25[1];
58380
58831
  return reglePourColonne(i, l);
58381
58832
  }).join('\n');
58382
58833
  document.head.appendChild(feuilleAjustee);
@@ -58438,10 +58889,10 @@ var Table$1 = function Table(_ref16) {
58438
58889
  onButtonClickRef.current = onButtonClick;
58439
58890
  }, [onButtonClick]);
58440
58891
  var onCellClickRef = useRef(onCellClick);
58441
- var _useState51 = useState(!!onCellClick),
58442
- _useState52 = _slicedToArray$b(_useState51, 2),
58443
- cellClickEnabled = _useState52[0],
58444
- setCellClickEnabled = _useState52[1];
58892
+ var _useState53 = useState(!!onCellClick),
58893
+ _useState54 = _slicedToArray$b(_useState53, 2),
58894
+ cellClickEnabled = _useState54[0],
58895
+ setCellClickEnabled = _useState54[1];
58445
58896
  useEffect(function () {
58446
58897
  onCellClickRef.current = onCellClick;
58447
58898
  setCellClickEnabled(!!onCellClick);
@@ -58562,10 +59013,10 @@ var Table$1 = function Table(_ref16) {
58562
59013
  // Visibilité du bouton « + » : opt-in explicite (`showAdd`), sinon déduite de la
58563
59014
  // présence de `onAdd`. Voir le commentaire de la prop `showAdd`.
58564
59015
  var showAddButton = showAdd === true || showAdd !== false && typeof onAdd === 'function';
58565
- var _useState53 = useState({}),
58566
- _useState54 = _slicedToArray$b(_useState53, 2),
58567
- editingRows = _useState54[0],
58568
- setEditingRows = _useState54[1];
59016
+ var _useState55 = useState({}),
59017
+ _useState56 = _slicedToArray$b(_useState55, 2),
59018
+ editingRows = _useState56[0],
59019
+ setEditingRows = _useState56[1];
58569
59020
  var onRowEditChange = useCallback(function (e) {
58570
59021
  setEditingRows(e.data);
58571
59022
  }, []);
@@ -58665,7 +59116,7 @@ var Table$1 = function Table(_ref16) {
58665
59116
  var FROZEN_KEY = useMemo(function () {
58666
59117
  return tableId ? "Table:frozenColumns:".concat(tableId) : 'Table:frozenColumns';
58667
59118
  }, [tableId]);
58668
- var _useState55 = useState(function () {
59119
+ var _useState57 = useState(function () {
58669
59120
  if (!freezableColumns) return new Set();
58670
59121
  try {
58671
59122
  var v = JSON.parse(localStorage.getItem(FROZEN_KEY) || '[]');
@@ -58674,9 +59125,9 @@ var Table$1 = function Table(_ref16) {
58674
59125
  return new Set();
58675
59126
  }
58676
59127
  }),
58677
- _useState56 = _slicedToArray$b(_useState55, 2),
58678
- colonnesGelees = _useState56[0],
58679
- setColonnesGelees = _useState56[1];
59128
+ _useState58 = _slicedToArray$b(_useState57, 2),
59129
+ colonnesGelees = _useState58[0],
59130
+ setColonnesGelees = _useState58[1];
58680
59131
  var applySavedColumnOrder = useCallback(function (cols) {
58681
59132
  // Les colonnes `index` (N°) sont ÉPINGLÉES en tête, toujours, quel que soit
58682
59133
  // l'ordre sauvegardé (une position figée en localStorage ne doit pas les
@@ -58722,9 +59173,9 @@ var Table$1 = function Table(_ref16) {
58722
59173
  return [c, lastKnownRank + 0.5, natIdx];
58723
59174
  }).sort(function (a, b) {
58724
59175
  return a[1] - b[1] || a[2] - b[2];
58725
- }).map(function (_ref25) {
58726
- var _ref26 = _slicedToArray$b(_ref25, 1),
58727
- c = _ref26[0];
59176
+ }).map(function (_ref26) {
59177
+ var _ref27 = _slicedToArray$b(_ref26, 1),
59178
+ c = _ref27[0];
58728
59179
  return c;
58729
59180
  });
58730
59181
  return parGel([].concat(_toConsumableArray$8(pinned), _toConsumableArray$8(sortedRest)));
@@ -58750,12 +59201,12 @@ var Table$1 = function Table(_ref16) {
58750
59201
  // Init synchrone (préférences + fusion des nouveautés + ordre sauvegardé) :
58751
59202
  // le premier montage du DataTable se fait directement avec les bonnes colonnes,
58752
59203
  // donc customRestoreState reconstruit les largeurs sur la bonne structure.
58753
- var _useState57 = useState(function () {
59204
+ var _useState59 = useState(function () {
58754
59205
  return applySavedColumnOrder(computeVisibleColumns());
58755
59206
  }),
58756
- _useState58 = _slicedToArray$b(_useState57, 2),
58757
- visibleColumns = _useState58[0],
58758
- setVisibleColumns = _useState58[1];
59207
+ _useState60 = _slicedToArray$b(_useState59, 2),
59208
+ visibleColumns = _useState60[0],
59209
+ setVisibleColumns = _useState60[1];
58759
59210
  // Colonnes de tête (frozen) rendues AVANT les colonnes de données : sélection,
58760
59211
  // suppression, actions. PrimeReact applique les largeurs sauvegardées par
58761
59212
  // nth-child(index) sur l'ensemble des <th> — il faut donc que le tableau de
@@ -58763,14 +59214,14 @@ var Table$1 = function Table(_ref16) {
58763
59214
  var leadingColCount = (rowSelection ? 1 : 0) + (deletableRows || onDeleteRow ? 1 : 0) + (editableRows || onEditRow ? 1 : 0) + (columns.some(function (c) {
58764
59215
  return c.actionsField;
58765
59216
  }) ? 1 : 0);
58766
- var _useState59 = useState(''),
58767
- _useState60 = _slicedToArray$b(_useState59, 2),
58768
- globalFilter = _useState60[0],
58769
- setGlobalFilter = _useState60[1];
58770
- var _useState61 = useState(false),
59217
+ var _useState61 = useState(''),
58771
59218
  _useState62 = _slicedToArray$b(_useState61, 2),
58772
- settingsOpen = _useState62[0],
58773
- setSettingsOpen = _useState62[1];
59219
+ globalFilter = _useState62[0],
59220
+ setGlobalFilter = _useState62[1];
59221
+ var _useState63 = useState(false),
59222
+ _useState64 = _slicedToArray$b(_useState63, 2),
59223
+ settingsOpen = _useState64[0],
59224
+ setSettingsOpen = _useState64[1];
58774
59225
 
58775
59226
  // ─────────────────────────────────────────────────────────────────────────────
58776
59227
  // ALIGNEMENT DU CONTENU DES CELLULES
@@ -58786,16 +59237,16 @@ var Table$1 = function Table(_ref16) {
58786
59237
  var LARGEUR_KEY = useMemo(function () {
58787
59238
  return tableId ? "Table:colWidthPreset:".concat(tableId) : 'Table:colWidthPreset';
58788
59239
  }, [tableId]);
58789
- var _useState63 = useState(function () {
59240
+ var _useState65 = useState(function () {
58790
59241
  try {
58791
59242
  return localStorage.getItem(LARGEUR_KEY) || null;
58792
59243
  } catch (_unused8) {
58793
59244
  return null;
58794
59245
  }
58795
59246
  }),
58796
- _useState64 = _slicedToArray$b(_useState63, 2),
58797
- largeurPreset = _useState64[0],
58798
- setLargeurPreset = _useState64[1];
59247
+ _useState66 = _slicedToArray$b(_useState65, 2),
59248
+ largeurPreset = _useState66[0],
59249
+ setLargeurPreset = _useState66[1];
58799
59250
  var changerLargeurColonnes = function changerLargeurColonnes(preset) {
58800
59251
  var _largeurColonnesRef$c2;
58801
59252
  setLargeurPreset(preset);
@@ -58807,7 +59258,7 @@ var Table$1 = function Table(_ref16) {
58807
59258
  var ALIGN_KEY = useMemo(function () {
58808
59259
  return tableId ? "Table:align:".concat(tableId) : 'Table:align';
58809
59260
  }, [tableId]);
58810
- var _useState65 = useState(function () {
59261
+ var _useState67 = useState(function () {
58811
59262
  try {
58812
59263
  var v = localStorage.getItem(ALIGN_KEY);
58813
59264
  return v === 'center' ? 'center' : 'left';
@@ -58815,9 +59266,9 @@ var Table$1 = function Table(_ref16) {
58815
59266
  return 'left';
58816
59267
  }
58817
59268
  }),
58818
- _useState66 = _slicedToArray$b(_useState65, 2),
58819
- alignement = _useState66[0],
58820
- setAlignement = _useState66[1];
59269
+ _useState68 = _slicedToArray$b(_useState67, 2),
59270
+ alignement = _useState68[0],
59271
+ setAlignement = _useState68[1];
58821
59272
  var changerAlignement = function changerAlignement(valeur) {
58822
59273
  setAlignement(valeur);
58823
59274
  try {
@@ -58825,24 +59276,24 @@ var Table$1 = function Table(_ref16) {
58825
59276
  } catch (_unused1) {/* noop */}
58826
59277
  };
58827
59278
  // Menu ⋯ : les actions de donnees occasionnelles (reordonner, verrouiller).
58828
- var _useState67 = useState(false),
58829
- _useState68 = _slicedToArray$b(_useState67, 2),
58830
- menuOpen = _useState68[0],
58831
- setMenuOpen = _useState68[1];
59279
+ var _useState69 = useState(false),
59280
+ _useState70 = _slicedToArray$b(_useState69, 2),
59281
+ menuOpen = _useState70[0],
59282
+ setMenuOpen = _useState70[1];
58832
59283
  // Recherche dans la liste des colonnes du panneau : un tableau metier peut en
58833
59284
  // compter des dizaines, on ne les parcourt pas a la molette.
58834
- var _useState69 = useState(''),
58835
- _useState70 = _slicedToArray$b(_useState69, 2),
58836
- rechercheColonnes = _useState70[0],
58837
- setRechercheColonnes = _useState70[1];
59285
+ var _useState71 = useState(''),
59286
+ _useState72 = _slicedToArray$b(_useState71, 2),
59287
+ rechercheColonnes = _useState72[0],
59288
+ setRechercheColonnes = _useState72[1];
58838
59289
 
58839
59290
  // Menu d'une colonne, ouvert au SURVOL de son picto ⋮. Portalise dans <body> :
58840
59291
  // `.p-column-header-content` est en `overflow: hidden` pour l'ellipse du titre,
58841
59292
  // un panneau rendu dedans serait coupe net.
58842
- var _useState71 = useState(null),
58843
- _useState72 = _slicedToArray$b(_useState71, 2),
58844
- menuColonne = _useState72[0],
58845
- setMenuColonne = _useState72[1]; // { field, th, x, y }
59293
+ var _useState73 = useState(null),
59294
+ _useState74 = _slicedToArray$b(_useState73, 2),
59295
+ menuColonne = _useState74[0],
59296
+ setMenuColonne = _useState74[1]; // { field, th, x, y }
58846
59297
  var menuColTimerRef = useRef(null);
58847
59298
  var menuColRef = useRef(null);
58848
59299
  // ─────────────────────────────────────────────────────────────────────────────
@@ -58866,16 +59317,16 @@ var Table$1 = function Table(_ref16) {
58866
59317
  // remettre d'aplomb — et `updateStickyPosition` ne pose son etat que si la
58867
59318
  // valeur change, donc pas de boucle.
58868
59319
  // ─────────────────────────────────────────────────────────────────────────────
58869
- var _useState73 = useState(0),
58870
- _useState74 = _slicedToArray$b(_useState73, 2),
58871
- recalageGel = _useState74[0],
58872
- setRecalageGel = _useState74[1];
59320
+ var _useState75 = useState(0),
59321
+ _useState76 = _slicedToArray$b(_useState75, 2),
59322
+ recalageGel = _useState76[0],
59323
+ setRecalageGel = _useState76[1];
58873
59324
  // Correction de position appliquee APRES mesure : la largeur du menu depend de
58874
59325
  // ses libelles, on ne la connait pas avant qu'il soit rendu.
58875
- var _useState75 = useState(null),
58876
- _useState76 = _slicedToArray$b(_useState75, 2),
58877
- menuColAjuste = _useState76[0],
58878
- setMenuColAjuste = _useState76[1];
59326
+ var _useState77 = useState(null),
59327
+ _useState78 = _slicedToArray$b(_useState77, 2),
59328
+ menuColAjuste = _useState78[0],
59329
+ setMenuColAjuste = _useState78[1];
58879
59330
 
58880
59331
  // Le survol OUVRE, la sortie ferme apres un delai : sans ce delai, le trajet du
58881
59332
  // picto vers le menu traverse quelques pixels de vide et le menu se refermait
@@ -58928,10 +59379,10 @@ var Table$1 = function Table(_ref16) {
58928
59379
  var garderMenuColonne = function garderMenuColonne() {
58929
59380
  return clearTimeout(menuColTimerRef.current);
58930
59381
  };
58931
- var _useState77 = useState(false),
58932
- _useState78 = _slicedToArray$b(_useState77, 2),
58933
- fullscreen = _useState78[0],
58934
- setFullscreen = _useState78[1];
59382
+ var _useState79 = useState(false),
59383
+ _useState80 = _slicedToArray$b(_useState79, 2),
59384
+ fullscreen = _useState80[0],
59385
+ setFullscreen = _useState80[1];
58935
59386
  useEffect(function () {
58936
59387
  if (!fullscreen) return;
58937
59388
  var onKeyDown = function onKeyDown(e) {
@@ -58948,7 +59399,7 @@ var Table$1 = function Table(_ref16) {
58948
59399
  var FILTERS_VALUES_KEY = useMemo(function () {
58949
59400
  return tableId ? "Table:filters:".concat(tableId) : 'Table:filters';
58950
59401
  }, [tableId]);
58951
- var _useState79 = useState(function () {
59402
+ var _useState81 = useState(function () {
58952
59403
  try {
58953
59404
  var _JSON$parse;
58954
59405
  return (_JSON$parse = JSON.parse(localStorage.getItem(FILTER_KEY))) !== null && _JSON$parse !== void 0 ? _JSON$parse : false;
@@ -58956,9 +59407,9 @@ var Table$1 = function Table(_ref16) {
58956
59407
  return false;
58957
59408
  }
58958
59409
  }),
58959
- _useState80 = _slicedToArray$b(_useState79, 2),
58960
- filterVisible = _useState80[0],
58961
- setFilterVisible = _useState80[1];
59410
+ _useState82 = _slicedToArray$b(_useState81, 2),
59411
+ filterVisible = _useState82[0],
59412
+ setFilterVisible = _useState82[1];
58962
59413
  var toggleFilter = function toggleFilter() {
58963
59414
  setFilterVisible(function (v) {
58964
59415
  var next = !v;
@@ -59024,10 +59475,10 @@ var Table$1 = function Table(_ref16) {
59024
59475
  // Actions groupées : même mécanique de menu que l'engrenage (positionnement absolu
59025
59476
  // dans un conteneur relatif + fermeture au clic extérieur), pour un comportement
59026
59477
  // homogène entre les deux menus voisins de la barre d'outils.
59027
- var _useState81 = useState(false),
59028
- _useState82 = _slicedToArray$b(_useState81, 2),
59029
- bulkOpen = _useState82[0],
59030
- setBulkOpen = _useState82[1];
59478
+ var _useState83 = useState(false),
59479
+ _useState84 = _slicedToArray$b(_useState83, 2),
59480
+ bulkOpen = _useState84[0],
59481
+ setBulkOpen = _useState84[1];
59031
59482
  var bulkRef = useRef(null);
59032
59483
  useEffect(function () {
59033
59484
  if (!bulkOpen) return;
@@ -59042,10 +59493,10 @@ var Table$1 = function Table(_ref16) {
59042
59493
 
59043
59494
  // Un seul menu de `toolbarActions` ouvert à la fois : on mémorise la clé de l'action
59044
59495
  // ouverte plutôt qu'un booléen par bouton (le nombre de boutons est libre).
59045
- var _useState83 = useState(null),
59046
- _useState84 = _slicedToArray$b(_useState83, 2),
59047
- openToolbarKey = _useState84[0],
59048
- setOpenToolbarKey = _useState84[1];
59496
+ var _useState85 = useState(null),
59497
+ _useState86 = _slicedToArray$b(_useState85, 2),
59498
+ openToolbarKey = _useState86[0],
59499
+ setOpenToolbarKey = _useState86[1];
59049
59500
  var toolbarRef = useRef(null);
59050
59501
  useEffect(function () {
59051
59502
  if (openToolbarKey === null) return;
@@ -59087,16 +59538,16 @@ var Table$1 = function Table(_ref16) {
59087
59538
  rowHeightsRef.current = {};
59088
59539
  }
59089
59540
  }
59090
- var _useState85 = useState(function () {
59541
+ var _useState87 = useState(function () {
59091
59542
  try {
59092
59543
  var saved = localStorage.getItem(ROW_PRESET_KEY);
59093
59544
  if (saved === 'fit' || ROW_PRESETS[saved]) return saved;
59094
59545
  } catch (_unused13) {/* noop */}
59095
59546
  return defaultRowHeight === 'fit' || ROW_PRESETS[defaultRowHeight] ? defaultRowHeight : 'small';
59096
59547
  }),
59097
- _useState86 = _slicedToArray$b(_useState85, 2),
59098
- rowPreset = _useState86[0],
59099
- setRowPreset = _useState86[1];
59548
+ _useState88 = _slicedToArray$b(_useState87, 2),
59549
+ rowPreset = _useState88[0],
59550
+ setRowPreset = _useState88[1];
59100
59551
  var tableWrapperRef = useRef(null);
59101
59552
  var applyRowHeights = useCallback(function () {
59102
59553
  if (!tableWrapperRef.current) return;
@@ -59368,10 +59819,10 @@ var Table$1 = function Table(_ref16) {
59368
59819
  var persistFilters = useCallback(function (f) {
59369
59820
  try {
59370
59821
  var values = {};
59371
- Object.entries(f || {}).forEach(function (_ref27) {
59372
- var _ref28 = _slicedToArray$b(_ref27, 2),
59373
- field = _ref28[0],
59374
- meta = _ref28[1];
59822
+ Object.entries(f || {}).forEach(function (_ref28) {
59823
+ var _ref29 = _slicedToArray$b(_ref28, 2),
59824
+ field = _ref29[0],
59825
+ meta = _ref29[1];
59375
59826
  if (meta && meta.value != null && meta.value !== '') {
59376
59827
  // Filtre date : persiste en 'yyyy-MM-dd' local (JSON.stringify(Date) donnerait
59377
59828
  // un ISO horodaté UTC que parseDateAuto ne relit pas — et J±1 selon le fuseau).
@@ -59381,12 +59832,12 @@ var Table$1 = function Table(_ref16) {
59381
59832
  if (Object.keys(values).length) localStorage.setItem(FILTERS_VALUES_KEY, JSON.stringify(values));else localStorage.removeItem(FILTERS_VALUES_KEY);
59382
59833
  } catch (_unused16) {}
59383
59834
  }, [FILTERS_VALUES_KEY]);
59384
- var _useState87 = useState(function () {
59835
+ var _useState89 = useState(function () {
59385
59836
  return hydrateFilters(initialFilters);
59386
59837
  }),
59387
- _useState88 = _slicedToArray$b(_useState87, 2),
59388
- filters = _useState88[0],
59389
- setFilters = _useState88[1];
59838
+ _useState90 = _slicedToArray$b(_useState89, 2),
59839
+ filters = _useState90[0],
59840
+ setFilters = _useState90[1];
59390
59841
 
59391
59842
  // ─────────────────────────────────────────────────────────────────────────────
59392
59843
  // Effacer TOUS les filtres colonnes d'un coup.
@@ -59401,10 +59852,10 @@ var Table$1 = function Table(_ref16) {
59401
59852
  // ─────────────────────────────────────────────────────────────────────────────
59402
59853
  var effacerLesFiltres = useCallback(function () {
59403
59854
  var vides = {};
59404
- Object.entries(filters || {}).forEach(function (_ref29) {
59405
- var _ref30 = _slicedToArray$b(_ref29, 2),
59406
- field = _ref30[0],
59407
- meta = _ref30[1];
59855
+ Object.entries(filters || {}).forEach(function (_ref30) {
59856
+ var _ref31 = _slicedToArray$b(_ref30, 2),
59857
+ field = _ref31[0],
59858
+ meta = _ref31[1];
59408
59859
  vides[field] = _objectSpread2(_objectSpread2({}, meta), {}, {
59409
59860
  value: null
59410
59861
  });
@@ -59427,16 +59878,16 @@ var Table$1 = function Table(_ref16) {
59427
59878
  // Tri actif (pour griser le bouton « Réordonner » : réordonner sous un tri
59428
59879
  // corromprait les positions). Initialisé depuis l'état persisté (le tri restauré
59429
59880
  // au montage ne déclenche pas onSort), mis à jour ensuite via onSort.
59430
- var _useState89 = useState(function () {
59881
+ var _useState91 = useState(function () {
59431
59882
  var s = readDTState();
59432
59883
  return s.sortField ? {
59433
59884
  field: s.sortField,
59434
59885
  order: s.sortOrder
59435
59886
  } : null;
59436
59887
  }),
59437
- _useState90 = _slicedToArray$b(_useState89, 2),
59438
- activeSort = _useState90[0],
59439
- setActiveSort = _useState90[1];
59888
+ _useState92 = _slicedToArray$b(_useState91, 2),
59889
+ activeSort = _useState92[0],
59890
+ setActiveSort = _useState92[1];
59440
59891
  // Un filtre est actif si un filtre de colonne porte une valeur, ou la recherche globale.
59441
59892
  var hasActiveFilter = useMemo(function () {
59442
59893
  if (globalFilter && String(globalFilter).trim() !== '') return true;
@@ -59468,13 +59919,13 @@ var Table$1 = function Table(_ref16) {
59468
59919
  // onLazyLoad({first, rows, sortField, sortOrder, filters, globalFilter}) :
59469
59920
  // l'app requête son endpoint puis re-render avec la nouvelle page.
59470
59921
  // Le tri devient contrôlé en lazy (sinon PrimeReact trierait la page seule).
59471
- var _useState91 = useState({
59922
+ var _useState93 = useState({
59472
59923
  sortField: null,
59473
59924
  sortOrder: null
59474
59925
  }),
59475
- _useState92 = _slicedToArray$b(_useState91, 2),
59476
- lazySort = _useState92[0],
59477
- setLazySort = _useState92[1];
59926
+ _useState94 = _slicedToArray$b(_useState93, 2),
59927
+ lazySort = _useState94[0],
59928
+ setLazySort = _useState94[1];
59478
59929
  var onLazyLoadRef = useRef(onLazyLoad);
59479
59930
  onLazyLoadRef.current = onLazyLoad;
59480
59931
  var fireLazy = useCallback(function () {
@@ -59597,98 +60048,90 @@ var Table$1 = function Table(_ref16) {
59597
60048
  });
59598
60049
  }, []);
59599
60050
 
59600
- // Contrôle du filtre par sélection (« picking »). Rendu dans la LIGNE DE FILTRES de la
59601
- // colonne des coches (pas dans l'en-tête), pour rester homogène avec les autres filtres
59602
- // colonne. Compact (icône + menu) car la colonne est étroite : un vrai <Dropdown> déborderait.
60051
+ // ─────────────────────────────────────────────────────────────────────────
60052
+ // LE PICKING — « Afficher : toutes les lignes / cochées / non cochées »
60053
+ // Rendu dans la LIGNE DE FILTRES de la colonne des coches (pas dans l'en-tête),
60054
+ // homogène avec les autres filtres colonne. Décidé le 25/09/2026 (storybook :
60055
+ // planches 1-2 + sandbox « selectionFilter ») :
60056
+ // - le déclencheur est le picto « lignes » (PictoLignesCochees), PAS un
60057
+ // entonnoir : l'entonnoir dit « filtre » sans dire « sur les coches » et se
60058
+ // confond avec les filtres voisins ;
60059
+ // - il REFLÈTE le mode en cours (le picto de l'entrée choisie reste affiché,
60060
+ // en accent) : on voit d'un coup d'œil pourquoi il manque des lignes ;
60061
+ // - le menu reprend les classes des autres menus du tableau (.ab-toolbar__pop
60062
+ // + .ab-menu) et porte le nombre de lignes de chaque groupe ;
60063
+ // - il est calé sur le BORD GAUCHE de la cellule, borné dans la fenêtre, avec
60064
+ // une flèche vers le déclencheur. Avant : `rect.left - 40` → hors écran, la
60065
+ // colonne des coches étant gelée au bord gauche du tableau.
60066
+ // ─────────────────────────────────────────────────────────────────────────
59603
60067
  var renderSelectionFilterControl = function renderSelectionFilterControl() {
60068
+ var compteurs = {
60069
+ all: data.length,
60070
+ checked: nbSelectionnees,
60071
+ unchecked: data.length - nbSelectionnees
60072
+ };
60073
+ // Position fixe, calculée au rendu (le menu est portalisé dans <body>).
60074
+ // `pickingAjuste` remplace `left` quand le menu a dû être borné ; la flèche
60075
+ // reste sous le centre du déclencheur, où qu'aille le menu.
60076
+ var rect = selectionFilterOpen && selectionFilterRef.current ? selectionFilterRef.current.getBoundingClientRect() : null;
60077
+ var left = rect ? pickingAjuste !== null && pickingAjuste !== void 0 ? pickingAjuste : rect.left : 0;
59604
60078
  return /*#__PURE__*/React__default.createElement("div", {
59605
60079
  ref: selectionFilterRef,
59606
- style: {
59607
- display: 'flex',
59608
- justifyContent: 'center',
59609
- width: '100%',
59610
- minWidth: '24px'
59611
- }
59612
- }, /*#__PURE__*/React__default.createElement("svg", {
59613
- width: "24",
59614
- height: "24",
59615
- viewBox: "0 0 24 24",
60080
+ className: "ab-picking"
60081
+ }, /*#__PURE__*/React__default.createElement("button", {
60082
+ type: "button",
60083
+ className: "ab-picking__btn".concat(selectionFilterMode !== 'all' ? ' is-actif' : ''),
59616
60084
  title: translate('arengibook.table.selectionFilter.tooltip', labels),
60085
+ "aria-label": translate('arengibook.table.selectionFilter.tooltip', labels),
60086
+ "aria-haspopup": "menu",
60087
+ "aria-expanded": selectionFilterOpen,
59617
60088
  onClick: function onClick(e) {
59618
60089
  e.stopPropagation();
59619
60090
  setSelectionFilterOpen(function (o) {
59620
60091
  return !o;
59621
60092
  });
59622
- },
60093
+ }
60094
+ }, /*#__PURE__*/React__default.createElement(PictoLignesCochees, {
60095
+ mode: selectionFilterMode
60096
+ })), rect && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement("div", {
60097
+ ref: selectionMenuRef,
60098
+ className: "ab-toolbar__pop ab-picking__menu",
60099
+ role: "menu",
59623
60100
  style: {
59624
- cursor: 'pointer',
59625
- flex: '0 0 auto'
59626
- },
59627
- fill: selectionFilterMode === 'all' ? '#6b7280' : '#1E976A'
59628
- }, /*#__PURE__*/React__default.createElement("path", {
59629
- d: "M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z"
59630
- })), selectionFilterOpen && selectionFilterRef.current && /*#__PURE__*/createPortal(function () {
59631
- var rect = selectionFilterRef.current.getBoundingClientRect();
59632
- var OPTIONS = [{
59633
- mode: 'all',
59634
- key: 'arengibook.table.selectionFilter.all'
59635
- }, {
59636
- mode: 'checked',
59637
- key: 'arengibook.table.selectionFilter.checked'
59638
- }, {
59639
- mode: 'unchecked',
59640
- key: 'arengibook.table.selectionFilter.unchecked'
59641
- }];
59642
- return /*#__PURE__*/React__default.createElement("div", {
59643
- ref: selectionMenuRef,
59644
- style: {
59645
- position: 'fixed',
59646
- top: "".concat(rect.bottom + 4, "px"),
59647
- left: "".concat(rect.left - 40, "px"),
59648
- zIndex: 10000,
59649
- background: '#fff',
59650
- borderRadius: '6px',
59651
- boxShadow: '0 4px 16px rgba(0,0,0,.18)',
59652
- border: '1px solid #e5e7eb',
59653
- padding: '4px',
59654
- minWidth: '150px'
60101
+ position: 'fixed',
60102
+ top: rect.bottom + 4,
60103
+ left: left,
60104
+ '--ab-picking-fleche': "".concat(rect.left + rect.width / 2 - left, "px")
60105
+ }
60106
+ }, /*#__PURE__*/React__default.createElement("div", {
60107
+ className: "ab-menu"
60108
+ }, /*#__PURE__*/React__default.createElement("div", {
60109
+ className: "ab-menu__titre"
60110
+ }, translate('arengibook.table.selectionFilter.title', labels)), ['all', 'checked', 'unchecked'].map(function (mode) {
60111
+ return /*#__PURE__*/React__default.createElement("button", {
60112
+ key: mode,
60113
+ type: "button",
60114
+ role: "menuitemradio",
60115
+ "aria-checked": selectionFilterMode === mode,
60116
+ className: "ab-menu__item".concat(selectionFilterMode === mode ? ' is-actif' : '')
60117
+ // Retour en page 1 : le jeu de lignes change, la page courante
60118
+ // peut ne plus exister (même geste que dans le menu Actions).
60119
+ ,
60120
+ onClick: function onClick(e) {
60121
+ e.stopPropagation();
60122
+ setSelectionFilterMode(mode);
60123
+ setSelectionFilterOpen(false);
60124
+ setFirst(0);
59655
60125
  }
59656
- }, OPTIONS.map(function (opt) {
59657
- var active = selectionFilterMode === opt.mode;
59658
- return /*#__PURE__*/React__default.createElement("div", {
59659
- key: opt.mode,
59660
- onClick: function onClick(e) {
59661
- e.stopPropagation();
59662
- setSelectionFilterMode(opt.mode);
59663
- setSelectionFilterOpen(false);
59664
- },
59665
- style: {
59666
- display: 'flex',
59667
- alignItems: 'center',
59668
- gap: '8px',
59669
- padding: '6px 10px',
59670
- borderRadius: '4px',
59671
- cursor: 'pointer',
59672
- fontSize: '13px',
59673
- color: active ? '#1E976A' : '#374151',
59674
- fontWeight: active ? 600 : 400,
59675
- background: active ? '#f0fdf7' : 'transparent'
59676
- },
59677
- onMouseEnter: function onMouseEnter(e) {
59678
- if (!active) e.currentTarget.style.background = '#f3f4f6';
59679
- },
59680
- onMouseLeave: function onMouseLeave(e) {
59681
- if (!active) e.currentTarget.style.background = 'transparent';
59682
- }
59683
- }, /*#__PURE__*/React__default.createElement("span", {
59684
- className: "material-icons",
59685
- style: {
59686
- fontSize: '16px',
59687
- visibility: active ? 'visible' : 'hidden'
59688
- }
59689
- }, "check"), translate(opt.key, labels));
59690
- }));
59691
- }(), document.body));
60126
+ }, /*#__PURE__*/React__default.createElement(PictoLignesCochees, {
60127
+ mode: mode,
60128
+ taille: 16
60129
+ }), /*#__PURE__*/React__default.createElement("span", {
60130
+ className: "ab-picking__libelle"
60131
+ }, translate("arengibook.table.selectionFilter.".concat(mode), labels)), /*#__PURE__*/React__default.createElement("span", {
60132
+ className: "ab-picking__compteur"
60133
+ }, compteurs[mode]));
60134
+ }))), document.body));
59692
60135
  };
59693
60136
 
59694
60137
  // Clé stable basée sur les champs — ne change que si la structure des colonnes change.
@@ -59794,10 +60237,10 @@ var Table$1 = function Table(_ref16) {
59794
60237
 
59795
60238
  var linkTemplate = useCallback(function (col) {
59796
60239
  return function (rowData) {
59797
- var _ref32, _col$href2;
60240
+ var _ref33, _col$href2;
59798
60241
  var label = rowData[col.field];
59799
60242
  if (col.type === 'titleLink') {
59800
- var _ref31, _col$href;
60243
+ var _ref32, _col$href;
59801
60244
  // ─────────────────────────────────────────────────────────────────
59802
60245
  // Le titre est un LIEN quand une cible existe.
59803
60246
  //
@@ -59809,7 +60252,7 @@ var Table$1 = function Table(_ref16) {
59809
60252
  // Sans cible, on garde un <span> : un titre en couleur de lien qui ne
59810
60253
  // mene nulle part est un mensonge.
59811
60254
  // ─────────────────────────────────────────────────────────────────
59812
- var cible = typeof col.href === 'function' ? col.href(rowData) : (_ref31 = (_col$href = col.href) !== null && _col$href !== void 0 ? _col$href : rowData[col.field + 'Url']) !== null && _ref31 !== void 0 ? _ref31 : null;
60255
+ var cible = typeof col.href === 'function' ? col.href(rowData) : (_ref32 = (_col$href = col.href) !== null && _col$href !== void 0 ? _col$href : rowData[col.field + 'Url']) !== null && _ref32 !== void 0 ? _ref32 : null;
59813
60256
  return /*#__PURE__*/React__default.createElement("div", {
59814
60257
  className: "ab-titre-box",
59815
60258
  style: {
@@ -59824,7 +60267,7 @@ var Table$1 = function Table(_ref16) {
59824
60267
  className: "table-item-title cell-text"
59825
60268
  }, label));
59826
60269
  }
59827
- var href = typeof col.href === 'function' ? col.href(rowData) : (_ref32 = (_col$href2 = col.href) !== null && _col$href2 !== void 0 ? _col$href2 : rowData[col.field + 'Url']) !== null && _ref32 !== void 0 ? _ref32 : '#';
60270
+ var href = typeof col.href === 'function' ? col.href(rowData) : (_ref33 = (_col$href2 = col.href) !== null && _col$href2 !== void 0 ? _col$href2 : rowData[col.field + 'Url']) !== null && _ref33 !== void 0 ? _ref33 : '#';
59828
60271
  return /*#__PURE__*/React__default.createElement("div", {
59829
60272
  className: "ab-titre-box",
59830
60273
  style: {
@@ -59916,13 +60359,13 @@ var Table$1 = function Table(_ref16) {
59916
60359
  }, []);
59917
60360
  var lienFormulaireTemplate = useCallback(function (col) {
59918
60361
  return function (rowData) {
59919
- var _col$options5, _ref33, _opt$label, _ref34, _col$href3;
60362
+ var _col$options5, _ref34, _opt$label, _ref35, _col$href3;
59920
60363
  var val = rowData[col.field];
59921
60364
  var opt = (_col$options5 = col.options) === null || _col$options5 === void 0 ? void 0 : _col$options5.find(function (o) {
59922
60365
  return o.value === val;
59923
60366
  });
59924
- var label = (_ref33 = (_opt$label = opt === null || opt === void 0 ? void 0 : opt.label) !== null && _opt$label !== void 0 ? _opt$label : val) !== null && _ref33 !== void 0 ? _ref33 : '';
59925
- var href = typeof col.href === 'function' ? col.href(rowData) : (_ref34 = (_col$href3 = col.href) !== null && _col$href3 !== void 0 ? _col$href3 : opt === null || opt === void 0 ? void 0 : opt.href) !== null && _ref34 !== void 0 ? _ref34 : null;
60367
+ var label = (_ref34 = (_opt$label = opt === null || opt === void 0 ? void 0 : opt.label) !== null && _opt$label !== void 0 ? _opt$label : val) !== null && _ref34 !== void 0 ? _ref34 : '';
60368
+ var href = typeof col.href === 'function' ? col.href(rowData) : (_ref35 = (_col$href3 = col.href) !== null && _col$href3 !== void 0 ? _col$href3 : opt === null || opt === void 0 ? void 0 : opt.href) !== null && _ref35 !== void 0 ? _ref35 : null;
59926
60369
  if (!label) return '';
59927
60370
  return /*#__PURE__*/React__default.createElement("div", {
59928
60371
  style: {
@@ -60469,10 +60912,10 @@ var Table$1 = function Table(_ref16) {
60469
60912
  });
60470
60913
  if (option) {
60471
60914
  var extra = {};
60472
- Object.entries(col.updates).forEach(function (_ref35) {
60473
- var _ref36 = _slicedToArray$b(_ref35, 2),
60474
- targetField = _ref36[0],
60475
- optionProp = _ref36[1];
60915
+ Object.entries(col.updates).forEach(function (_ref36) {
60916
+ var _ref37 = _slicedToArray$b(_ref36, 2),
60917
+ targetField = _ref37[0],
60918
+ optionProp = _ref37[1];
60476
60919
  if (option[optionProp] !== undefined) extra[targetField] = option[optionProp];
60477
60920
  });
60478
60921
  enrichedRow = _objectSpread2(_objectSpread2({}, newRowData), extra);
@@ -60661,10 +61104,10 @@ var Table$1 = function Table(_ref16) {
60661
61104
  return opt.value === v;
60662
61105
  });
60663
61106
  if (option) {
60664
- Object.entries(col.updates).forEach(function (_ref37) {
60665
- var _ref38 = _slicedToArray$b(_ref37, 2),
60666
- tf = _ref38[0],
60667
- op = _ref38[1];
61107
+ Object.entries(col.updates).forEach(function (_ref38) {
61108
+ var _ref39 = _slicedToArray$b(_ref38, 2),
61109
+ tf = _ref39[0],
61110
+ op = _ref39[1];
60668
61111
  if (option[op] !== undefined) enrichedFields[tf] = option[op];
60669
61112
  });
60670
61113
  }
@@ -61145,9 +61588,10 @@ var Table$1 = function Table(_ref16) {
61145
61588
  setSelectionFilterMode(filtreSelectionActif ? 'all' : 'checked');
61146
61589
  setFirst(0);
61147
61590
  }
61148
- }, /*#__PURE__*/React__default.createElement("span", {
61149
- className: "material-icons"
61150
- }, filtreSelectionActif ? 'visibility' : 'filter_list'), filtreSelectionActif ? translate('arengibook.table.selection.showAll', labels) : translate('arengibook.table.selection.showOnlySelected', labels)), selectionActions.map(function (a) {
61591
+ }, /*#__PURE__*/React__default.createElement(PictoLignesCochees, {
61592
+ mode: filtreSelectionActif ? 'all' : 'checked',
61593
+ taille: 16
61594
+ }), filtreSelectionActif ? translate('arengibook.table.selection.showAll', labels) : translate('arengibook.table.selection.showOnlySelected', labels)), selectionActions.map(function (a) {
61151
61595
  return /*#__PURE__*/React__default.createElement("button", {
61152
61596
  key: "sel-".concat(a.key),
61153
61597
  type: "button",
@@ -61165,14 +61609,14 @@ var Table$1 = function Table(_ref16) {
61165
61609
  className: "ab-menu__filet"
61166
61610
  })), actionsSecondaires.length > 0 && /*#__PURE__*/React__default.createElement("div", {
61167
61611
  className: "ab-menu__titre"
61168
- }, translate('arengibook.table.selection.onTable', labels)), actionsSecondaires.map(function (_ref39) {
61169
- var key = _ref39.key,
61170
- icon = _ref39.icon,
61171
- label = _ref39.label,
61172
- title = _ref39.title,
61173
- disabled = _ref39.disabled,
61174
- danger = _ref39.danger,
61175
- action = _ref39.action;
61612
+ }, translate('arengibook.table.selection.onTable', labels)), actionsSecondaires.map(function (_ref40) {
61613
+ var key = _ref40.key,
61614
+ icon = _ref40.icon,
61615
+ label = _ref40.label,
61616
+ title = _ref40.title,
61617
+ disabled = _ref40.disabled,
61618
+ danger = _ref40.danger,
61619
+ action = _ref40.action;
61176
61620
  return /*#__PURE__*/React__default.createElement("button", {
61177
61621
  key: key,
61178
61622
  type: "button",
@@ -61340,9 +61784,9 @@ var Table$1 = function Table(_ref16) {
61340
61784
  }, {
61341
61785
  key: 'fit',
61342
61786
  label: translate('arengibook.table.settings.rowHeightFit', labels)
61343
- }].map(function (_ref40) {
61344
- var key = _ref40.key,
61345
- label = _ref40.label;
61787
+ }].map(function (_ref41) {
61788
+ var key = _ref41.key,
61789
+ label = _ref41.label;
61346
61790
  return /*#__PURE__*/React__default.createElement("button", {
61347
61791
  key: key,
61348
61792
  type: "button",
@@ -61381,9 +61825,9 @@ var Table$1 = function Table(_ref16) {
61381
61825
  }, {
61382
61826
  key: 'fit',
61383
61827
  label: translate('arengibook.table.settings.rowHeightFit', labels)
61384
- }].map(function (_ref41) {
61385
- var key = _ref41.key,
61386
- label = _ref41.label;
61828
+ }].map(function (_ref42) {
61829
+ var key = _ref42.key,
61830
+ label = _ref42.label;
61387
61831
  return /*#__PURE__*/React__default.createElement("button", {
61388
61832
  key: key,
61389
61833
  type: "button",
@@ -61414,9 +61858,9 @@ var Table$1 = function Table(_ref16) {
61414
61858
  }, {
61415
61859
  key: 'center',
61416
61860
  label: translate('arengibook.table.settings.alignCenter', labels)
61417
- }].map(function (_ref42) {
61418
- var key = _ref42.key,
61419
- label = _ref42.label;
61861
+ }].map(function (_ref43) {
61862
+ var key = _ref43.key,
61863
+ label = _ref43.label;
61420
61864
  return /*#__PURE__*/React__default.createElement("button", {
61421
61865
  key: key,
61422
61866
  type: "button",
@@ -61634,6 +62078,19 @@ var Table$1 = function Table(_ref16) {
61634
62078
  var renderedKeys = [].concat(_toConsumableArray$8(rowSelection ? ['__select__'] : []), _toConsumableArray$8(deletableRows || onDeleteRow ? ['__delete__'] : []), _toConsumableArray$8(editableRows || onEditRow ? ['__edit__'] : []), _toConsumableArray$8(columns.some(function (c) {
61635
62079
  return c.actionsField;
61636
62080
  }) ? ['__row_actions__'] : []), _toConsumableArray$8(orderFields));
62081
+ // ⚠️ LIGNE DE FILTRES AFFICHÉE = DEUX FOIS PLUS DE LARGEURS.
62082
+ // PrimeReact construit sa chaîne en comptant TOUS les <th> du
62083
+ // thead (`[data-pc-section="thead"] > tr > th`, datatable.cjs.js
62084
+ // saveColumnWidths) : la ligne de filtres en porte autant que la
62085
+ // ligne d'en-têtes. Le compte ne tombait plus juste, et le glissé
62086
+ // n'était JAMAIS enregistré filtres ouverts — la colonne reprenait
62087
+ // sa largeur d'avant au premier remontage (gel, masquage, rechargement).
62088
+ // Constaté le 25/09/2026 : « j'agrandis, je gèle, elle rétrécit ».
62089
+ // Les <th> sont dans l'ordre du document : la ligne d'en-têtes vient
62090
+ // en premier, on ne garde qu'elle.
62091
+ if (widths.length > renderedKeys.length && widths.length % renderedKeys.length === 0) {
62092
+ widths = widths.slice(0, renderedKeys.length);
62093
+ }
61637
62094
  if (widths.length === renderedKeys.length) {
61638
62095
  renderedKeys.forEach(function (f, i) {
61639
62096
  if (!f.startsWith('__') && Number.isFinite(widths[i])) previous[f] = widths[i];
@@ -61910,7 +62367,7 @@ var Table$1 = function Table(_ref16) {
61910
62367
  columnKey: "__row_actions__",
61911
62368
  header: inline ? actionsCol.actionsHeader || '' : '',
61912
62369
  body: function body(rowData) {
61913
- var _ref43, _linkCol$href;
62370
+ var _ref44, _linkCol$href;
61914
62371
  var rowActions = rowData[actionsCol.actionsField] || [];
61915
62372
  if (inline) {
61916
62373
  return /*#__PURE__*/React__default.createElement(RowActionsInlineCell, {
@@ -61924,7 +62381,7 @@ var Table$1 = function Table(_ref16) {
61924
62381
  var linkCol = columns.find(function (c) {
61925
62382
  return c.type === 'titleLink' || c.type === 'link';
61926
62383
  });
61927
- var linkHref = linkCol ? typeof linkCol.href === 'function' ? linkCol.href(rowData) : (_ref43 = (_linkCol$href = linkCol.href) !== null && _linkCol$href !== void 0 ? _linkCol$href : rowData[linkCol.field + 'Url']) !== null && _ref43 !== void 0 ? _ref43 : null : null;
62384
+ var linkHref = linkCol ? typeof linkCol.href === 'function' ? linkCol.href(rowData) : (_ref44 = (_linkCol$href = linkCol.href) !== null && _linkCol$href !== void 0 ? _linkCol$href : rowData[linkCol.field + 'Url']) !== null && _ref44 !== void 0 ? _ref44 : null : null;
61928
62385
  return /*#__PURE__*/React__default.createElement(RowActionsCell, {
61929
62386
  actions: rowActions,
61930
62387
  rowData: rowData,
@@ -63409,6 +63866,11 @@ var maqNode = function maqNode(id) {
63409
63866
  var MAQ_SEL = ['france', 'paris', 'lyon', 'allemagne', 'munich'];
63410
63867
  var SEL_MANY = ['france', 'paris', 'lyon', 'allemagne', 'munich', 'usa', 'canada', 'bresil', 'asie', 'japon', 'chine', 'inde'];
63411
63868
 
63869
+ // Mode induit : Europe en ∞ (une valeur, droits sur toute sa descendance, présente et à venir),
63870
+ // États-Unis et Canada nommés un par un.
63871
+ var INDUCED_SEL = ['europe', 'usa', 'canada'];
63872
+ var INDUCED_RULES = ['europe'];
63873
+
63412
63874
  // ── Presets d'intégration ─────────────────────────────────────────────────────
63413
63875
  // single → value = nœud complet (ou null) ; multiple/checkbox → tableau d'ids.
63414
63876
  var TreeSelectMaquettePresets = {
@@ -63598,6 +64060,14 @@ var TreeSelectMaquettePresets = {
63598
64060
  selectionMode: 'single',
63599
64061
  label: 'Périmètre concerné',
63600
64062
  value: maqNode('paris')
64063
+ },
64064
+ InducedAttachment: {
64065
+ options: perimetresDemo,
64066
+ selectionMode: 'checkbox',
64067
+ label: 'Organisations',
64068
+ value: INDUCED_SEL,
64069
+ induced: true,
64070
+ inducedValue: INDUCED_RULES
63601
64071
  }
63602
64072
  };
63603
64073