arengibook 3.1.313-main → 3.1.314-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 +713 -63
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13488,7 +13488,7 @@ var LOCALES = {
13488
13488
  var css_248z$6 = "@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/* Force une largeur à 100% de l'input Calendar */\n.datepicker-fullwidth {\n width: 100%;\n}\n\n.datepicker-fullwidth > .dp-input-wrapper {\n width: 100%;\n}\n.datepicker-fullwidth > .dp-input-wrapper > .p-calendar {\n width: 100%;\n}\n\n.dp-input-wrapper {\n position: relative;\n display: inline-flex;\n}\n.dp-input-wrapper .dp-clear-btn {\n position: absolute;\n right: 7px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n cursor: pointer;\n padding: 2.8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #b0b8c4;\n z-index: 1;\n border-radius: 50%;\n line-height: 1;\n}\n.dp-input-wrapper .dp-clear-btn:hover {\n color: #1a1e26;\n background-color: rgba(0, 0, 0, 0.06);\n}\n.dp-input-wrapper .dp-clear-btn .pi {\n font-size: 9.1px;\n}\n\n/* Application du mixin field sur l'input du Calendar */\n.p-calendar > .p-inputtext {\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}\n.p-calendar > .p-inputtext:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled) {\n border-color: #c8cdd6;\n}\n.p-calendar > .p-inputtext:focus, .p-calendar > .p-inputtext:focus-within, .p-calendar > .p-inputtext.is-open {\n border-color: #3f3f3f;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\n}\n.p-calendar > .p-inputtext[disabled], .p-calendar > .p-inputtext.is-disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\n.p-calendar > .p-inputtext[readonly], .p-calendar > .p-inputtext.is-readonly {\n background: #f4f5f6;\n cursor: default;\n box-shadow: none;\n}\n.p-calendar > .p-inputtext[readonly]:hover, .p-calendar > .p-inputtext.is-readonly:hover {\n border-color: #e0e3e8;\n}\n.p-calendar > .p-inputtext.is-error {\n border-color: #dc2626;\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n}\n.p-calendar > .p-inputtext.is-success {\n border-color: #15803d;\n box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.12);\n}\n.p-calendar > .p-inputtext:hover {\n border-color: #c8cdd6 !important;\n}\n.p-calendar > .p-inputtext:focus, .p-calendar > .p-inputtext.p-focus {\n border-color: #3f3f3f !important;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1) !important;\n outline: none;\n}\n\n/* Panel invisible jusqu'au repositionnement (évite le flash position basse → haute) */\n.datepickerbook:not(.dp-ready) {\n visibility: hidden !important;\n}\n\n/* Neutralise les styles hérités */\n.datepickerbook table,\n.datepickerbook tbody,\n.datepickerbook tr,\n.datepickerbook td,\n.datepickerbook th {\n background-color: unset !important;\n color: inherit !important;\n border: none;\n}\n\n/* Restaure les couleurs et l'entete du calendrier */\n.datepickerbook .p-datepicker {\n background-color: #ffffff !important;\n color: #1a1e26 !important;\n border-radius: 7px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n}\n\n.datepickerbook .datepicker-custom-header {\n display: flex;\n flex-direction: column;\n gap: 7px;\n padding: 7px 10.5px;\n}\n\n.datepickerbook .datepicker-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n font-size: 11.9px;\n}\n\n.datepickerbook .dp-label {\n margin: 3.5px 0;\n font-weight: 500;\n}\n\n.p-datepicker .p-datepicker-title,\n.p-datepicker .p-datepicker-prev,\n.p-datepicker .p-datepicker-next {\n display: none !important;\n}\n\n.datepickerbook .p-datepicker-header {\n justify-content: center;\n}\n\n.datepickerbook .dp-popup {\n position: absolute;\n top: 100%;\n margin-top: 3.5px;\n background: #ffffff;\n border: 1px solid #e0e3e8;\n border-radius: 4px;\n padding: 3.5px;\n z-index: 10;\n}\n\n.datepickerbook .dp-popup-months,\n.datepickerbook .dp-popup-years {\n display: grid;\n grid-template-columns: repeat(3, auto);\n gap: 3.5px;\n}\n\n.datepickerbook .dp-popup-item {\n border: none;\n background: transparent;\n padding: 2.1px 5.6px;\n cursor: pointer;\n font-size: 11.2px;\n}\n\n.datepickerbook .dp-popup-item:hover {\n background: #f4f5f6;\n}\n\n/*.datepickerbook .dp-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 10.5px;\n}*/\n.datepickerbook .dp-header-part {\n display: flex;\n align-items: center;\n gap: 3.5px;\n}\n\n.datepickerbook .dp-label-button {\n border: none;\n background: transparent;\n cursor: pointer;\n font-weight: 800;\n font-size: 16px;\n margin: 3.5px 0;\n}\n\n.datepickerbook.dp-monthyear-mode .dp-monthyear-header {\n padding-bottom: 3.5px;\n}\n\n.datepickerbook {\n display: flex;\n align-items: center;\n gap: 7px;\n margin-bottom: 3.5px;\n}\n\n.datepickerbook .dp-back-button {\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 12.6px;\n}\n\n.datepickerbook .dp-title {\n font-weight: 600;\n font-size: 12.6px;\n}\n\n/* Colonnes mois / années */\n.datepickerbook .dp-header-lists {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 7px;\n}\n\n.datepickerbook .dp-month-list,\n.datepickerbook .dp-year-list {\n padding-right: 3.5px;\n display: flex;\n flex-direction: column;\n gap: 2.1px;\n}\n\n.datepickerbook .dp-list-item:hover {\n background: #f4f5f6;\n}\n\n.p-datepicker-header.datepicker-custom-header.dp-monthyear-header {\n margin: auto;\n}\n\n/*.p-monthpicker*/\n.p-datepicker.dp-monthyear-mode {\n box-shadow: none !important;\n border-radius: 0px;\n}\n.p-datepicker.dp-monthyear-mode .dp-header-top-alt {\n display: none !important;\n}\n\n.p-datepicker-monthpicker.dp-monthyear-mode {\n box-shadow: none !important;\n border-radius: 0px;\n}\n.p-datepicker-monthpicker.dp-monthyear-mode .dp-header-top-alt {\n display: none !important;\n}\n\n.p-datepicker {\n width: 331px !important;\n min-width: 331px !important;\n max-width: 331px !important;\n}\n.p-datepicker .dp-arrow {\n border: none;\n background-color: transparent;\n color: #b0b8c4;\n cursor: pointer;\n transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-datepicker .dp-arrow:hover {\n color: #3f3f3f;\n background-color: rgba(63, 63, 63, 0.08);\n}\n.p-datepicker.dp-year-only {\n box-shadow: none !important;\n width: auto !important;\n min-width: unset !important;\n max-width: unset !important;\n}\n.p-datepicker.dp-year-only .dp-header-top-alt {\n display: none !important;\n}\n.p-datepicker.dp-year-only .dp-monthyear-header {\n width: 205px;\n min-width: 205px;\n max-width: 205px;\n}\n.p-datepicker.dp-year-only .dp-monthyear-header .dp-year-container {\n width: 100%;\n}\n.p-datepicker.dp-year-only .dp-year-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container {\n width: 100%;\n border-top: 1px solid #e0e3e8;\n height: 51px;\n display: flex;\n align-items: center;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-up {\n border-right: 1px solid #e0e3e8;\n border-radius: 0px 0px 0px 5px !important;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-down {\n border-radius: 0px 0px 5px 0px !important;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 49%;\n border-radius: 0px;\n flex: 1;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year:hover {\n background-color: rgba(63, 63, 63, 0.08);\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-year-list {\n width: 100%;\n gap: 0px;\n padding: 0px;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-list-item-active {\n width: 100%;\n color: #ffffff !important;\n background-color: #3f3f3f !important;\n border-bottom: 1px solid #3f3f3f !important;\n font-weight: 600;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-list-item {\n background-color: transparent;\n border: none;\n color: #1a1e26;\n transition: 0s !important;\n height: 25px;\n font-size: 16px;\n border-radius: 0px;\n border-bottom: 1px solid #e0e3e8;\n width: 100%;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big) {\n padding: 3px 10px !important;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big):hover {\n background-color: rgba(63, 63, 63, 0.08) !important;\n color: #3f3f3f;\n}\n.p-datepicker.dp-year-only .dp-year-container .dp-list-item {\n padding: 3px 10px;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.dp-monthyear-mode .p-datepicker-group, .p-datepicker-monthpicker .p-datepicker-group, .dp-year-only .p-datepicker-group {\n padding: 0px !important;\n border: 0px solid transparent !important;\n}\n.dp-monthyear-mode .dp-monthyear-header, .p-datepicker-monthpicker .dp-monthyear-header, .dp-year-only .dp-monthyear-header {\n justify-content: flex-start;\n gap: 0;\n background: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.33);\n border-radius: 8px;\n position: absolute;\n top: 0;\n left: 0;\n padding: 0px !important;\n width: 331px;\n min-width: 331px;\n max-width: 331px;\n}\n.dp-monthyear-mode .dp-header-top-alt, .p-datepicker-monthpicker .dp-header-top-alt, .dp-year-only .dp-header-top-alt {\n width: 100%;\n height: 50px !important;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid #e0e3e8;\n}\n.dp-monthyear-mode .dp-header-top-alt .dp-header-top-alt-part:first-child, .p-datepicker-monthpicker .dp-header-top-alt .dp-header-top-alt-part:first-child, .dp-year-only .dp-header-top-alt .dp-header-top-alt-part:first-child {\n border-right: 1px solid #e0e3e8;\n}\n.dp-monthyear-mode .dp-header-top-alt .dp-header-top-alt-part, .p-datepicker-monthpicker .dp-header-top-alt .dp-header-top-alt-part, .dp-year-only .dp-header-top-alt .dp-header-top-alt-part {\n width: 49%;\n height: 50px;\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n color: #1a1e26;\n font-size: 16px;\n text-transform: capitalize;\n}\n.dp-monthyear-mode .p-datepicker-calendar-container, .p-datepicker-monthpicker .p-datepicker-calendar-container, .dp-year-only .p-datepicker-calendar-container {\n display: none;\n}\n.dp-monthyear-mode .dp-actions, .p-datepicker-monthpicker .dp-actions, .dp-year-only .dp-actions {\n width: 100%;\n background-color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 0px 0px 5px 5px;\n padding: 0px 10px 10px 10px;\n}\n.dp-monthyear-mode .dp-actions .p-button:first-child, .p-datepicker-monthpicker .dp-actions .p-button:first-child, .dp-year-only .dp-actions .p-button:first-child {\n border: 0px solid transparent;\n color: #3f3f3f;\n}\n.dp-monthyear-mode .dp-actions .p-button:last-child, .p-datepicker-monthpicker .dp-actions .p-button:last-child, .dp-year-only .dp-actions .p-button:last-child {\n background-color: #ffffff;\n border: 1px solid #3f3f3f;\n color: #3f3f3f;\n}\n.dp-monthyear-mode .dp-actions .p-button:last-child:hover, .p-datepicker-monthpicker .dp-actions .p-button:last-child:hover, .dp-year-only .dp-actions .p-button:last-child:hover {\n background-color: #3f3f3f;\n color: #ffffff;\n}\n.dp-monthyear-mode .dp-actions .p-button, .p-datepicker-monthpicker .dp-actions .p-button, .dp-year-only .dp-actions .p-button {\n padding: 10px 15px;\n}\n.dp-monthyear-mode .dp-actions .p-button .p-button-icon, .p-datepicker-monthpicker .dp-actions .p-button .p-button-icon, .dp-year-only .dp-actions .p-button .p-button-icon {\n display: none;\n}\n.dp-monthyear-mode .dp-header-lists, .p-datepicker-monthpicker .dp-header-lists, .dp-year-only .dp-header-lists {\n width: calc(100% - 20px);\n height: 300px;\n display: flex;\n align-items: flex-start;\n gap: initial;\n padding: 0px;\n margin: 10px;\n}\n.dp-monthyear-mode .dp-month-list, .p-datepicker-monthpicker .dp-month-list, .dp-year-only .dp-month-list {\n transition: none !important;\n border: 1px solid #e0e3e8;\n margin: 0px 10px 0px 0px !important;\n gap: 0px;\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item-active, .p-datepicker-monthpicker .dp-month-list .dp-list-item-active, .dp-year-only .dp-month-list .dp-list-item-active {\n width: 100%;\n color: #ffffff !important;\n background-color: #3f3f3f !important;\n border-bottom: 1px solid #3f3f3f !important;\n font-weight: 600;\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item, .p-datepicker-monthpicker .dp-month-list .dp-list-item, .dp-year-only .dp-month-list .dp-list-item {\n border: none;\n height: 25px;\n background-color: transparent;\n font-size: 16px;\n text-transform: capitalize;\n border-radius: 0px;\n margin: 0px;\n padding: 3px;\n width: calc(100% - 0px);\n border-bottom: 1px solid #e0e3e8;\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item:hover, .p-datepicker-monthpicker .dp-month-list .dp-list-item:hover, .dp-year-only .dp-month-list .dp-list-item:hover {\n background-color: rgba(63, 63, 63, 0.08);\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item:last-child, .p-datepicker-monthpicker .dp-month-list .dp-list-item:last-child, .dp-year-only .dp-month-list .dp-list-item:last-child {\n border: none;\n}\n.dp-monthyear-mode .dp-year-container, .p-datepicker-monthpicker .dp-year-container, .dp-year-only .dp-year-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n border: 1px solid #e0e3e8;\n}\n.dp-monthyear-mode .dp-year-container .dp-arrow-container, .p-datepicker-monthpicker .dp-year-container .dp-arrow-container, .dp-year-only .dp-year-container .dp-arrow-container {\n width: 100%;\n border-top: 1px solid #e0e3e8;\n height: 51px;\n display: flex;\n align-items: center;\n}\n.dp-monthyear-mode .dp-year-container .dp-arrow-container .dp-arrow-up, .p-datepicker-monthpicker .dp-year-container .dp-arrow-container .dp-arrow-up, .dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-up {\n border-right: 1px solid #e0e3e8;\n}\n.dp-monthyear-mode .dp-year-container .dp-arrow-container .dp-arrow-year, .p-datepicker-monthpicker .dp-year-container .dp-arrow-container .dp-arrow-year, .dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 49%;\n border-radius: 0px;\n flex: 1;\n}\n.dp-monthyear-mode .dp-year-container .dp-year-list, .p-datepicker-monthpicker .dp-year-container .dp-year-list, .dp-year-only .dp-year-container .dp-year-list {\n width: 100%;\n gap: 0px;\n padding: 0px;\n}\n.dp-monthyear-mode .dp-year-container .dp-list-item-active, .p-datepicker-monthpicker .dp-year-container .dp-list-item-active, .dp-year-only .dp-year-container .dp-list-item-active {\n width: 100%;\n color: #ffffff !important;\n background-color: #3f3f3f !important;\n border-bottom: 1px solid #3f3f3f !important;\n font-weight: 600;\n}\n.dp-monthyear-mode .dp-year-container .dp-list-item, .p-datepicker-monthpicker .dp-year-container .dp-list-item, .dp-year-only .dp-year-container .dp-list-item {\n background-color: transparent;\n border: none;\n color: #1a1e26;\n transition: 0s !important;\n height: 25px;\n font-size: 16px;\n border-radius: 0px;\n border-bottom: 1px solid #e0e3e8;\n width: 100%;\n padding: 3px 10px;\n}\n.dp-monthyear-mode .dp-year-container .dp-list-item:not(.dp-list-item-big), .p-datepicker-monthpicker .dp-year-container .dp-list-item:not(.dp-list-item-big), .dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big) {\n padding: 3px 10px !important;\n}\n.dp-monthyear-mode .dp-year-container .dp-list-item:not(.dp-list-item-big):hover, .p-datepicker-monthpicker .dp-year-container .dp-list-item:not(.dp-list-item-big):hover, .dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big):hover {\n background-color: rgba(63, 63, 63, 0.08) !important;\n color: #3f3f3f;\n}\n.dp-monthyear-mode .dp-month-list, .dp-monthyear-mode .dp-year-container, .p-datepicker-monthpicker .dp-month-list, .p-datepicker-monthpicker .dp-year-container, .dp-year-only .dp-month-list, .dp-year-only .dp-year-container {\n width: 49%;\n flex: 1;\n margin: 0px;\n background-color: transparent;\n padding: 0px;\n height: 100%;\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item, .dp-monthyear-mode .dp-year-container .dp-list-item, .p-datepicker-monthpicker .dp-month-list .dp-list-item, .p-datepicker-monthpicker .dp-year-container .dp-list-item, .dp-year-only .dp-month-list .dp-list-item, .dp-year-only .dp-year-container .dp-list-item {\n cursor: pointer;\n}\n.dp-monthyear-mode .dp-month-list .dp-list-item:hover, .dp-monthyear-mode .dp-year-container .dp-list-item:hover, .p-datepicker-monthpicker .dp-month-list .dp-list-item:hover, .p-datepicker-monthpicker .dp-year-container .dp-list-item:hover, .dp-year-only .dp-month-list .dp-list-item:hover, .dp-year-only .dp-year-container .dp-list-item:hover {\n color: #3f3f3f;\n border-bottom: 1px solid rgba(63, 63, 63, 0.08);\n}\n.dp-monthyear-mode .dp-month-list:hover, .dp-monthyear-mode .dp-year-container:hover, .p-datepicker-monthpicker .dp-month-list:hover, .p-datepicker-monthpicker .dp-year-container:hover, .dp-year-only .dp-month-list:hover, .dp-year-only .dp-year-container:hover {\n background-color: rgba(255, 255, 255, 0.31);\n}\n\n.p-datepicker {\n padding: 0px;\n background-color: #ffffff;\n box-shadow: 1px 2px 26px rgba(0, 0, 0, 0.21);\n width: 321px;\n}\n.p-datepicker .p-datepicker-group-container {\n width: 100%;\n}\n.p-datepicker .p-datepicker-group {\n background: #ffffff;\n border-radius: 8px;\n padding-bottom: 1px;\n}\n.p-datepicker .p-datepicker-header {\n padding: 0px;\n /*position: fixed;\n left: 0;*/\n height: 50px;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid #e0e3e8;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-month {\n border-right: 1px solid #e0e3e8;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-month .dp-arrow-left {\n border-radius: 7px 0px 0px 0px;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-year .dp-arrow-right {\n border-radius: 0px 7px 0px 0px;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part {\n width: 49%;\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-arrow {\n width: 30px;\n height: 49px;\n min-width: 30px;\n min-height: 49px;\n max-width: 30px;\n max-height: 49px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-arrow:hover {\n background-color: rgba(63, 63, 63, 0.08);\n color: #3f3f3f;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-label-button {\n width: calc(100% - 60px);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 50px;\n margin: 0px;\n text-transform: capitalize;\n color: #3f3f3f;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-label-button:hover {\n background-color: rgba(63, 63, 63, 0.08);\n font-weight: 800;\n}\n.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part:hover {\n background-color: rgba(255, 255, 255, 0.31);\n}\n.p-datepicker .p-datepicker-calendar-container {\n padding: 10px;\n /* margin-top: 50px;*/\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar {\n margin: 0px;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar thead tr th {\n padding: 2px;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar thead tr th span {\n color: #1a1e26;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr .p-datepicker-today {\n background-color: transparent;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr .p-datepicker-today span {\n background-color: transparent;\n font-weight: 600;\n color: #3f3f3f;\n border: 1px solid #3f3f3f;\n text-decoration: underline;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td {\n padding: 0px;\n border: 1px solid #f4f5f6;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td .p-highlight {\n color: #ffffff !important;\n background-color: #3f3f3f !important;\n box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.31);\n font-weight: 600;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td .p-disabled {\n opacity: 0.3;\n cursor: not-allowed;\n background-color: transparent !important;\n font-size: 12px;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td span {\n margin: 0;\n width: 100%;\n border-radius: 0px;\n}\n.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td span:hover {\n background-color: rgba(63, 63, 63, 0.08) !important;\n color: #3f3f3f;\n box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.31);\n}\n\n/* WRAPPER GLOBAL */\n.dp-monthyear-header {\n width: 360px;\n background: #ffffff;\n border-radius: 18px;\n padding: 24px 26px;\n box-shadow: 0 8px 26px rgba(0, 0, 0, 0.1);\n display: flex;\n flex-direction: column;\n font-family: Inter, sans-serif;\n gap: 22px;\n}\n\n/* TITRE */\n.dp-header-top-alt .dp-title {\n font-size: 21.7px;\n font-weight: 700;\n text-align: center;\n color: #1a1e26;\n margin-bottom: 2px;\n}\n\n/* HOVER ANNÉES */\n.datepickerbook .dp-year-list .dp-list-item:hover {\n background: rgba(63, 63, 63, 0.15);\n}\n\n.dp-month-list .dp-list-item-active {\n background: #ffffff;\n font-weight: 600;\n}\n\n/* Centrage parfait */\n.dp-year-list {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 0;\n}\n\n/* Année normale */\n.dp-year-list .dp-list-item {\n font-size: 16.8px;\n color: #b0b8c4;\n padding: 4px 0;\n cursor: pointer;\n transition: 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.dp-year-list .dp-list-item:hover {\n color: #1a1e26;\n}\n\n/* FLECHES */\n.dp-arrow-up,\n.dp-arrow-down {\n font-size: 21px;\n color: #1a1e26;\n padding: 6px;\n border: none;\n background: none;\n cursor: pointer;\n margin: 4px 0;\n}\n\n/* ACTIONS BAS – GROS BOUTONS */\n.dp-actions {\n display: flex;\n justify-content: center;\n gap: 20px;\n padding-top: 5px;\n padding-bottom: 10px;\n}\n\n/* TITRE MOIS ANNEE */\n.dp-header-top {\n margin: auto;\n}\n\n/*DATEPICKER MENSUEL CUSTOMISE*/\n.p-monthpicker {\n display: none !important;\n margin: auto;\n}\n\n.datepickerbook .p-datepicker-header {\n border: none !important;\n border-bottom: none !important;\n box-shadow: none !important;\n background: transparent !important;\n}\n\n.datepickerbook.p-datepicker {\n padding: 0 !important;\n margin: 0 !important;\n}\n\n/*DATEPICKER ANNUEL CUSTOMISE*/\n.p-yearpicker {\n display: none !important;\n}\n\n.datepickerbook .p-datepicker-footer {\n margin-bottom: 20px;\n}\n\n.dp-error-message {\n color: red !important;\n font-style: italic !important;\n display: block !important;\n width: 100% !important;\n max-width: 100% !important;\n white-space: normal !important;\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n line-height: 1.4 !important;\n font-size: 12.25px !important;\n margin-top: 2px !important;\n float: none !important;\n position: static !important;\n}";
13489
13489
  styleInject(css_248z$6);
13490
13490
 
13491
- var _excluded$4 = ["value", "onChange", "placeholder", "dateFormat", "displayMask", "view", "invalid", "errorMessage", "disabled", "locale", "showTime", "showIcon", "icon", "iconBgButton", "iconPos", "name", "id", "fullWidth", "inputProps", "onBlur", "onSelect", "onClick", "showClear", "reopenOnClick", "invalidDateMessage", "onPanelShow", "onPanelHide"];
13491
+ var _excluded$5 = ["value", "onChange", "placeholder", "dateFormat", "displayMask", "view", "invalid", "errorMessage", "disabled", "locale", "showTime", "showIcon", "icon", "iconBgButton", "iconPos", "name", "id", "fullWidth", "inputProps", "onBlur", "onSelect", "onClick", "showClear", "reopenOnClick", "invalidDateMessage", "onPanelShow", "onPanelHide"];
13492
13492
  var normalizeDate = function normalizeDate(v) {
13493
13493
  if (!v) return null;
13494
13494
  return v instanceof Date ? v : new Date(v);
@@ -13542,7 +13542,7 @@ var DatePicker = function DatePicker(_ref) {
13542
13542
  _ref.invalidDateMessage;
13543
13543
  var onPanelShow = _ref.onPanelShow,
13544
13544
  onPanelHide = _ref.onPanelHide,
13545
- rest = _objectWithoutProperties$1(_ref, _excluded$4);
13545
+ rest = _objectWithoutProperties$1(_ref, _excluded$5);
13546
13546
  var _useState = useState(function () {
13547
13547
  return normalizeDate(value);
13548
13548
  }),
@@ -33444,7 +33444,7 @@ var HeaderCell = /*#__PURE__*/React.memo(function (props) {
33444
33444
  });
33445
33445
  HeaderCell.displayName = 'HeaderCell';
33446
33446
 
33447
- var _excluded$3 = ["unstyled", "__TYPE", "ptOptions"];
33447
+ var _excluded$4 = ["unstyled", "__TYPE", "ptOptions"];
33448
33448
  function ownKeys$1$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
33449
33449
  function _objectSpread$1$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1$4(Object(t), true).forEach(function (r) { _defineProperty$7(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33450
33450
  var TableHeader = /*#__PURE__*/React.memo(function (props) {
@@ -33675,7 +33675,7 @@ var TableHeader = /*#__PURE__*/React.memo(function (props) {
33675
33675
  unstyled = _RowBase$getProps.unstyled;
33676
33676
  _RowBase$getProps.__TYPE;
33677
33677
  _RowBase$getProps.ptOptions;
33678
- var rest = _objectWithoutProperties(_RowBase$getProps, _excluded$3);
33678
+ var rest = _objectWithoutProperties(_RowBase$getProps, _excluded$4);
33679
33679
  var headerRowProps = mergeProps({
33680
33680
  role: 'row'
33681
33681
  }, unstyled ? _objectSpread$1$4({
@@ -37016,8 +37016,13 @@ var PopupPresets = {
37016
37016
  }
37017
37017
  };
37018
37018
 
37019
+ var css_248z$5 = "@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.dropdownbook.p-dropdown-panel {\n z-index: 999999 !important;\n}\n\n.p-tooltip {\n z-index: 1000000 !important;\n}\n\n.dropdown-tooltip-item {\n position: relative;\n width: 100%;\n cursor: pointer;\n}\n\n/* Application du mixin field sur le wrapper du Dropdown */\n.dropdown-container .p-dropdown {\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}\n.dropdown-container .p-dropdown:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled) {\n border-color: #c8cdd6;\n}\n.dropdown-container .p-dropdown:focus, .dropdown-container .p-dropdown:focus-within, .dropdown-container .p-dropdown.is-open {\n border-color: #3f3f3f;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\n}\n.dropdown-container .p-dropdown[disabled], .dropdown-container .p-dropdown.is-disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\n.dropdown-container .p-dropdown[readonly], .dropdown-container .p-dropdown.is-readonly {\n background: #f4f5f6;\n cursor: default;\n box-shadow: none;\n}\n.dropdown-container .p-dropdown[readonly]:hover, .dropdown-container .p-dropdown.is-readonly:hover {\n border-color: #e0e3e8;\n}\n.dropdown-container .p-dropdown.is-error {\n border-color: #dc2626;\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n}\n.dropdown-container .p-dropdown.is-success {\n border-color: #15803d;\n box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.12);\n}\n.dropdown-container .p-dropdown {\n padding: 0;\n display: flex;\n align-items: center;\n}\n\n.dd-search-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid #e0e3e8;\n}\n.dd-search-row [class*=-filter-container] {\n flex: 1;\n min-width: 0;\n position: relative;\n}\n.dd-search-row [class*=-filter-container] .p-inputtext {\n width: 100%;\n height: 32px;\n padding: 0 24.5px 0 12px;\n font-size: 14px;\n box-sizing: border-box;\n}\n.dd-search-row [class*=-filter-container] [class*=-filter-icon] {\n right: 10.5px;\n color: #b0b8c4;\n}\n\n.dd-sort-btn {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid #e0e3e8;\n border-radius: 7px;\n background: #ffffff;\n cursor: pointer;\n color: #b0b8c4;\n font-size: 14px;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.dd-sort-btn:hover {\n background: #f4f5f6;\n color: #1a1e26;\n}\n\n.dropdownbook .p-dropdown-header:has(.dd-search-row) {\n padding: 0;\n}\n\n/* ===== Badge couleur dans les items ===== */\n.dd-color-badge {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 4px 10px;\n border-radius: 14px;\n font-size: 12.25px;\n font-family: \"Roboto\", sans-serif;\n white-space: nowrap;\n cursor: default;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n background-color: #f4f5f6;\n color: #1a1e26;\n border: 1px solid #e0e3e8;\n border-color: var(--badge-color, #e0e3e8);\n background-color: color-mix(in srgb, var(--badge-color, #f4f5f6) 50%, transparent);\n}\n.dd-color-badge.is-selected {\n background-color: var(--badge-color, #f4f5f6);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.p-dropdown-item:hover .dd-color-badge {\n background-color: var(--badge-color) !important;\n}\n\n/* ===== Override PrimeReact default item colors ===== */\n.dropdownbook .p-dropdown-items .p-dropdown-item:not(.p-highlight):hover {\n background: #f4f5f6 !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight {\n background: rgba(63, 63, 63, 0.08) !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight.p-focus {\n background: rgba(63, 63, 63, 0.12) !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-focus {\n background: #f4f5f6 !important;\n color: #1a1e26 !important;\n}\n\n/* ===== Override PrimeReact filter input focus ===== */\n.dropdownbook .p-dropdown-filter.p-inputtext:hover {\n border-color: #c8cdd6 !important;\n}\n.dropdownbook .p-dropdown-filter.p-inputtext:focus, .dropdownbook .p-dropdown-filter.p-inputtext.p-focus {\n border-color: #3f3f3f !important;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1) !important;\n outline: none;\n}";
37020
+ styleInject(css_248z$5);
37021
+
37022
+ var _excluded$3 = ["style", "className"],
37023
+ _excluded2$2 = ["class"];
37019
37024
  var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37020
- var _window$Translator, _window$Translator2;
37025
+ var _computedOptions$, _window$Translator, _window$Translator2;
37021
37026
  var value = _ref.value,
37022
37027
  options = _ref.options,
37023
37028
  _ref$placeholder = _ref.placeholder,
@@ -37040,7 +37045,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37040
37045
  _ref$editable = _ref.editable,
37041
37046
  editable = _ref$editable === void 0 ? false : _ref$editable,
37042
37047
  _ref$filter = _ref.filter,
37043
- filter = _ref$filter === void 0 ? filter : _ref$filter,
37048
+ filter = _ref$filter === void 0 ? false : _ref$filter,
37044
37049
  _ref$selectMetaConfig = _ref.selectMetaConfig,
37045
37050
  selectMetaConfig = _ref$selectMetaConfig === void 0 ? {
37046
37051
  labelStyle: null,
@@ -37049,7 +37054,79 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37049
37054
  _ref$objValue = _ref.objValue,
37050
37055
  objValue = _ref$objValue === void 0 ? null : _ref$objValue,
37051
37056
  _ref$required = _ref.required,
37052
- required = _ref$required === void 0 ? false : _ref$required;
37057
+ required = _ref$required === void 0 ? false : _ref$required,
37058
+ _ref$attr = _ref.attr,
37059
+ attr = _ref$attr === void 0 ? {} : _ref$attr,
37060
+ _ref$choice_attr = _ref.choice_attr,
37061
+ choice_attr = _ref$choice_attr === void 0 ? function () {
37062
+ return {};
37063
+ } : _ref$choice_attr,
37064
+ _ref$optionClassname = _ref.optionClassname,
37065
+ optionClassname = _ref$optionClassname === void 0 ? null : _ref$optionClassname,
37066
+ _ref$valueClassname = _ref.valueClassname,
37067
+ valueClassname = _ref$valueClassname === void 0 ? null : _ref$valueClassname,
37068
+ _ref$isGroupedOption = _ref.isGroupedOption,
37069
+ isGroupedOption = _ref$isGroupedOption === void 0 ? false : _ref$isGroupedOption,
37070
+ _ref$showTooltipGroup = _ref.showTooltipGroup,
37071
+ showTooltipGroup = _ref$showTooltipGroup === void 0 ? false : _ref$showTooltipGroup,
37072
+ _ref$prevTextShowTool = _ref.prevTextShowTooltip,
37073
+ prevTextShowTooltip = _ref$prevTextShowTool === void 0 ? null : _ref$prevTextShowTool,
37074
+ onSearch = _ref.onSearch,
37075
+ _ref$readOnly = _ref.readOnly,
37076
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
37077
+ _ref$loading = _ref.loading,
37078
+ externalLoading = _ref$loading === void 0 ? false : _ref$loading,
37079
+ status = _ref.status,
37080
+ _ref$optionStyle = _ref.optionStyle,
37081
+ optionStyle = _ref$optionStyle === void 0 ? {
37082
+ maxWidth: '250px',
37083
+ overflow: 'hidden',
37084
+ textOverflow: 'ellipsis',
37085
+ whiteSpace: 'nowrap'
37086
+ } : _ref$optionStyle,
37087
+ _ref$showClear = _ref.showClear,
37088
+ showClear = _ref$showClear === void 0 ? true : _ref$showClear,
37089
+ _ref$groupedItemTempl = _ref.groupedItemTemplateConfig,
37090
+ groupedItemTemplateConfig = _ref$groupedItemTempl === void 0 ? {
37091
+ showIcon: false,
37092
+ iconKey: 'icon',
37093
+ showImage: false,
37094
+ imageKey: 'image',
37095
+ imageStyle: null,
37096
+ labelStyle: null,
37097
+ generalIcon: null,
37098
+ generalImage: null
37099
+ } : _ref$groupedItemTempl;
37100
+ _ref.isSelectMeta;
37101
+ var hasInfoLine = _ref.hasInfoLine,
37102
+ InfoLineValue = _ref.InfoLineValue,
37103
+ _ref$selectConfig = _ref.selectConfig,
37104
+ selectConfig = _ref$selectConfig === void 0 ? {
37105
+ labelStyle: null,
37106
+ generalIcon: null
37107
+ } : _ref$selectConfig,
37108
+ withIcon = _ref.withIcon,
37109
+ withColor = _ref.withColor,
37110
+ _ref$truncateAt = _ref.truncateAt,
37111
+ truncateAt = _ref$truncateAt === void 0 ? null : _ref$truncateAt;
37112
+ _ref.virtualScroll;
37113
+ var virtualScrollerOptions = _ref.virtualScrollerOptions,
37114
+ _ref$enableItemToolti = _ref.enableItemTooltip,
37115
+ enableItemTooltip = _ref$enableItemToolti === void 0 ? false : _ref$enableItemToolti,
37116
+ _ref$enableItemLink = _ref.enableItemLink,
37117
+ enableItemLink = _ref$enableItemLink === void 0 ? false : _ref$enableItemLink,
37118
+ _ref$openOnHover = _ref.openOnHover,
37119
+ openOnHover = _ref$openOnHover === void 0 ? false : _ref$openOnHover,
37120
+ _ref$itemsCheckedToTh = _ref.itemsCheckedToTheTop,
37121
+ itemsCheckedToTheTop = _ref$itemsCheckedToTh === void 0 ? false : _ref$itemsCheckedToTh,
37122
+ _ref$enableSorting = _ref.enableSorting,
37123
+ enableSorting = _ref$enableSorting === void 0 ? false : _ref$enableSorting,
37124
+ _ref$enableSecondaryL = _ref.enableSecondaryLabel,
37125
+ enableSecondaryLabel = _ref$enableSecondaryL === void 0 ? false : _ref$enableSecondaryL,
37126
+ _ref$secondaryLabelKe = _ref.secondaryLabelKey,
37127
+ secondaryLabelKey = _ref$secondaryLabelKe === void 0 ? 'profession' : _ref$secondaryLabelKe,
37128
+ _ref$subItem = _ref.subItem,
37129
+ subItem = _ref$subItem === void 0 ? false : _ref$subItem;
37053
37130
  var _useState = useState(null),
37054
37131
  _useState2 = _slicedToArray$d(_useState, 2),
37055
37132
  optionSelected = _useState2[0],
@@ -37067,6 +37144,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37067
37144
  inputValue = _useState8[0],
37068
37145
  setInputValue = _useState8[1];
37069
37146
  var dropdownRef = useRef(null);
37147
+ var dropdownComposantRef = useRef(null);
37070
37148
  useRef(null);
37071
37149
  var clickedFromList = useRef(false);
37072
37150
  var _useState9 = useState(''),
@@ -37077,15 +37155,43 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37077
37155
  _useState10 = _slicedToArray$d(_useState1, 2),
37078
37156
  showRequiredError = _useState10[0],
37079
37157
  setShowRequiredError = _useState10[1];
37158
+ var _useState11 = useState(0),
37159
+ _useState12 = _slicedToArray$d(_useState11, 2),
37160
+ tooltipKey = _useState12[0],
37161
+ setTooltipKey = _useState12[1];
37162
+ var _useState13 = useState(null),
37163
+ _useState14 = _slicedToArray$d(_useState13, 2),
37164
+ sortOrder = _useState14[0],
37165
+ setSortOrder = _useState14[1];
37166
+ var _useState15 = useState(false),
37167
+ _useState16 = _slicedToArray$d(_useState15, 2),
37168
+ isDropdownOpen = _useState16[0],
37169
+ setIsDropdownOpen = _useState16[1];
37170
+ var _useState17 = useState(''),
37171
+ _useState18 = _slicedToArray$d(_useState17, 2),
37172
+ selectedGroupLabel = _useState18[0],
37173
+ setSelectedGroupLabel = _useState18[1];
37080
37174
 
37081
37175
  // 🔹 Lazy loading
37082
- var _useState11 = useState(false),
37083
- _useState12 = _slicedToArray$d(_useState11, 2),
37084
- loading = _useState12[0],
37085
- setLoading = _useState12[1];
37176
+ var _useState19 = useState(false),
37177
+ _useState20 = _slicedToArray$d(_useState19, 2),
37178
+ loading = _useState20[0],
37179
+ setLoading = _useState20[1];
37086
37180
  var loadLazyTimeout = useRef();
37087
37181
  useRef(1);
37088
37182
  useRef('');
37183
+ var inverseColor = function inverseColor(hexColor) {
37184
+ var r = parseInt(hexColor.substr(1, 2), 16);
37185
+ var g = parseInt(hexColor.substr(3, 2), 16);
37186
+ var b = parseInt(hexColor.substr(5, 2), 16);
37187
+ var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
37188
+ return luminance > 0.18 ? '#000000' : '#FFFFFF';
37189
+ };
37190
+ var truncateLabel = function truncateLabel(label) {
37191
+ if (!label || typeof label !== 'string') return label;
37192
+ if (!truncateAt || label.length <= truncateAt) return label;
37193
+ return label.slice(0, truncateAt) + '…';
37194
+ };
37089
37195
  var optionTemplate = function optionTemplate(option) {
37090
37196
  var _ref2 = selectMetaConfig || {},
37091
37197
  labelStyle = _ref2.labelStyle,
@@ -37093,17 +37199,69 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37093
37199
  var styleLabel = {
37094
37200
  marginLeft: '10px'
37095
37201
  };
37096
- return /*#__PURE__*/React__default.createElement("div", {
37202
+ var tooltipProps = enableItemTooltip ? {
37203
+ 'data-pr-tooltip': (option === null || option === void 0 ? void 0 : option.tooltip) || (option === null || option === void 0 ? void 0 : option.description),
37204
+ 'data-pr-position': 'right'
37205
+ } : {};
37206
+ var secondaryLabel = enableSecondaryLabel ? option === null || option === void 0 ? void 0 : option[secondaryLabelKey] : null;
37207
+ var isLink = enableItemLink && (option === null || option === void 0 ? void 0 : option.link);
37208
+ var handleLinkClick = function handleLinkClick(e) {
37209
+ if (isLink) {
37210
+ e.preventDefault();
37211
+ e.stopPropagation();
37212
+ window.open(option.link, '_blank', 'noopener,noreferrer');
37213
+ }
37214
+ };
37215
+ var optionAttrs = typeof choice_attr === 'function' ? choice_attr(option) : {};
37216
+ var attrStyle = optionAttrs.style,
37217
+ attrClassName = optionAttrs.className,
37218
+ restAttrs = _objectWithoutProperties$1(optionAttrs, _excluded$3);
37219
+ var className = "flex align-items-center dropdown-tooltip-item ".concat(attrClassName || optionClassname || '').trim();
37220
+ if (withIcon || withColor) {
37221
+ var _ref3 = selectConfig || {},
37222
+ cfgLabelStyle = _ref3.labelStyle,
37223
+ cfgGeneralIcon = _ref3.generalIcon;
37224
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({}, tooltipProps, restAttrs, {
37225
+ onClick: function onClick() {
37226
+ clickedFromList.current = true;
37227
+ },
37228
+ className: className,
37229
+ style: _objectSpread2(_objectSpread2({
37230
+ fontSize: '14px',
37231
+ display: 'flex',
37232
+ alignItems: 'center',
37233
+ gap: '8px'
37234
+ }, optionStyle), attrStyle)
37235
+ }), withIcon && cfgGeneralIcon && /*#__PURE__*/React__default.createElement("i", {
37236
+ style: {
37237
+ color: option === null || option === void 0 ? void 0 : option.color
37238
+ },
37239
+ className: cfgGeneralIcon
37240
+ }), withColor && option !== null && option !== void 0 && option.color ? /*#__PURE__*/React__default.createElement("span", {
37241
+ className: "dd-color-badge".concat(optionSelected === (option === null || option === void 0 ? void 0 : option[optionValue]) ? ' is-selected' : ''),
37242
+ style: {
37243
+ '--badge-color': option.color,
37244
+ color: inverseColor(option.color)
37245
+ }
37246
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]) : /*#__PURE__*/React__default.createElement("span", {
37247
+ style: _objectSpread2(_objectSpread2({}, cfgLabelStyle), subItem ? {
37248
+ flex: 1
37249
+ } : {})
37250
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]));
37251
+ }
37252
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({}, tooltipProps, restAttrs, {
37097
37253
  onClick: function onClick() {
37098
37254
  clickedFromList.current = true;
37099
37255
  },
37100
- className: "flex align-items-center",
37101
- style: {
37256
+ className: className,
37257
+ style: _objectSpread2({
37102
37258
  padding: '6px 10px',
37103
37259
  height: 'auto'
37104
- }
37105
- }, /*#__PURE__*/React__default.createElement("div", {
37106
- style: _objectSpread2({
37260
+ }, attrStyle)
37261
+ }), /*#__PURE__*/React__default.createElement("div", {
37262
+ style: _objectSpread2(_objectSpread2({}, subItem ? {
37263
+ flex: 1
37264
+ } : {}), {}, {
37107
37265
  fontSize: '15px',
37108
37266
  fontWeight: 'bold'
37109
37267
  }, labelStyle)
@@ -37114,15 +37272,103 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37114
37272
  className: generalIcon
37115
37273
  }), /*#__PURE__*/React__default.createElement("span", {
37116
37274
  style: styleLabel
37117
- }, option === null || option === void 0 ? void 0 : option[optionLabel])));
37275
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]), secondaryLabel && /*#__PURE__*/React__default.createElement("div", {
37276
+ onClick: isLink ? handleLinkClick : undefined,
37277
+ onMouseDown: isLink ? function (e) {
37278
+ return e.stopPropagation();
37279
+ } : undefined,
37280
+ style: {
37281
+ cursor: isLink ? 'pointer' : 'default',
37282
+ marginTop: '2px',
37283
+ width: 'fit-content'
37284
+ }
37285
+ }, /*#__PURE__*/React__default.createElement("small", {
37286
+ style: {
37287
+ opacity: 0.75,
37288
+ fontSize: '12px',
37289
+ textDecoration: isLink ? 'underline' : 'none',
37290
+ color: isLink ? '#3b82f6' : 'inherit',
37291
+ fontWeight: 'normal'
37292
+ }
37293
+ }, /*#__PURE__*/React__default.createElement("span", {
37294
+ style: subItem ? {} : {
37295
+ marginLeft: '10px'
37296
+ }
37297
+ }, secondaryLabel)))));
37298
+ };
37299
+ var groupedItemTemplate = function groupedItemTemplate(option) {
37300
+ var _ref4 = groupedItemTemplateConfig || {},
37301
+ showImage = _ref4.showImage,
37302
+ imageKey = _ref4.imageKey,
37303
+ imageStyle = _ref4.imageStyle,
37304
+ showIcon = _ref4.showIcon,
37305
+ iconKey = _ref4.iconKey,
37306
+ labelStyle = _ref4.labelStyle,
37307
+ generalIcon = _ref4.generalIcon,
37308
+ generalImage = _ref4.generalImage;
37309
+ var icon = option.value && option.value[iconKey];
37310
+ var styleLabel = generalIcon || showImage && option[imageKey] || showIcon && icon ? {
37311
+ marginLeft: '10px'
37312
+ } : {};
37313
+ if (option.group) {
37314
+ return /*#__PURE__*/React__default.createElement("div", {
37315
+ className: "flex align-items-center"
37316
+ }, /*#__PURE__*/React__default.createElement("div", {
37317
+ style: _objectSpread2({
37318
+ fontSize: '15px',
37319
+ fontWeight: 'bold'
37320
+ }, labelStyle)
37321
+ }, generalIcon && /*#__PURE__*/React__default.createElement("i", {
37322
+ className: generalIcon,
37323
+ style: _objectSpread2({
37324
+ fontSize: '15px',
37325
+ fontWeight: 'bold'
37326
+ }, labelStyle)
37327
+ }), generalImage && /*#__PURE__*/React__default.createElement("img", {
37328
+ alt: "General",
37329
+ src: generalImage,
37330
+ style: imageStyle || {
37331
+ width: '18px',
37332
+ marginRight: '0.5rem'
37333
+ },
37334
+ className: "mr-2"
37335
+ }), showImage && option[imageKey] && /*#__PURE__*/React__default.createElement("img", {
37336
+ alt: option.label,
37337
+ src: option[imageKey],
37338
+ style: imageStyle || {
37339
+ width: '18px',
37340
+ marginRight: '0.5rem'
37341
+ },
37342
+ className: "mr-2"
37343
+ }), showIcon && icon && /*#__PURE__*/React__default.createElement("i", {
37344
+ className: "mr-2 ".concat(icon),
37345
+ style: _objectSpread2({
37346
+ fontSize: '15px',
37347
+ fontWeight: 'bold'
37348
+ }, labelStyle)
37349
+ }), /*#__PURE__*/React__default.createElement("span", {
37350
+ style: styleLabel
37351
+ }, option.label)));
37352
+ }
37353
+ return null;
37118
37354
  };
37355
+ var panelFooterTemplate = function panelFooterTemplate() {
37356
+ if (InfoLineValue) {
37357
+ return /*#__PURE__*/React__default.createElement("div", {
37358
+ style: {
37359
+ padding: '8px'
37360
+ }
37361
+ }, /*#__PURE__*/React__default.createElement("b", null, InfoLineValue));
37362
+ }
37363
+ };
37364
+ var isInvalidEffective = invalid || status === 'error' || showRequiredError;
37119
37365
 
37120
37366
  // 🔹 Chargement des options depuis une URL (même contrat que MultiSelectMetaAsync)
37121
37367
  var fetchOptionsFromUrl = /*#__PURE__*/function () {
37122
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37368
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37123
37369
  var search,
37124
- _ref4,
37125
- _ref4$page,
37370
+ _ref6,
37371
+ _ref6$page,
37126
37372
  page,
37127
37373
  length,
37128
37374
  start,
@@ -37138,7 +37384,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37138
37384
  while (1) switch (_context.n) {
37139
37385
  case 0:
37140
37386
  search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
37141
- _ref4 = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref4$page = _ref4.page, page = _ref4$page === void 0 ? 1 : _ref4$page;
37387
+ _ref6 = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref6$page = _ref6.page, page = _ref6$page === void 0 ? 1 : _ref6$page;
37142
37388
  _context.p = 1;
37143
37389
  length = 25;
37144
37390
  start = (page - 1) * length;
@@ -37200,11 +37446,10 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37200
37446
  }, _callee, null, [[1, 6]]);
37201
37447
  }));
37202
37448
  return function fetchOptionsFromUrl() {
37203
- return _ref3.apply(this, arguments);
37449
+ return _ref5.apply(this, arguments);
37204
37450
  };
37205
37451
  }();
37206
37452
  var loadOptions = typeof options === 'function' ? options : fetchOptionsFromUrl;
37207
- var isInvalidEffective = invalid || showRequiredError;
37208
37453
  var style = {
37209
37454
  border: isInvalidEffective ? '1px solid red' : '1px solid #ccc',
37210
37455
  width: '100%',
@@ -37216,7 +37461,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37216
37461
  useEffect(function () {
37217
37462
  setOptionSelected(objValue ? objValue === null || objValue === void 0 ? void 0 : objValue[optionValue] : value !== null && value !== void 0 ? value : null);
37218
37463
  var loadInitialOptions = /*#__PURE__*/function () {
37219
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
37464
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
37220
37465
  var result, _result$options, exists;
37221
37466
  return _regenerator().w(function (_context2) {
37222
37467
  while (1) switch (_context2.n) {
@@ -37244,7 +37489,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37244
37489
  }, _callee2);
37245
37490
  }));
37246
37491
  return function loadInitialOptions() {
37247
- return _ref5.apply(this, arguments);
37492
+ return _ref7.apply(this, arguments);
37248
37493
  };
37249
37494
  }();
37250
37495
  loadInitialOptions();
@@ -37270,7 +37515,39 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37270
37515
  }
37271
37516
  };
37272
37517
  }, [dropdownRef.current]);
37518
+ useEffect(function () {
37519
+ if (enableItemTooltip) {
37520
+ setTooltipKey(function (prevKey) {
37521
+ return prevKey + 1;
37522
+ });
37523
+ }
37524
+ }, [loadedOptions, enableItemTooltip]);
37525
+ var getSelectedGroupLabel = function getSelectedGroupLabel(selectedValue) {
37526
+ if (!isGroupedOption || !selectedValue) return '';
37527
+ var _iterator = _createForOfIteratorHelper$7(loadedOptions),
37528
+ _step;
37529
+ try {
37530
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
37531
+ var group = _step.value;
37532
+ if (showTooltipGroup && group.items && group.items.some(function (item) {
37533
+ return item.value === selectedValue;
37534
+ })) {
37535
+ if (prevTextShowTooltip) return prevTextShowTooltip + ' ' + group.label;
37536
+ return group.label;
37537
+ }
37538
+ }
37539
+ } catch (err) {
37540
+ _iterator.e(err);
37541
+ } finally {
37542
+ _iterator.f();
37543
+ }
37544
+ return '';
37545
+ };
37546
+ useEffect(function () {
37547
+ if (optionSelected) setSelectedGroupLabel(getSelectedGroupLabel(optionSelected));
37548
+ }, [optionSelected, loadedOptions]);
37273
37549
  var handleChange = function handleChange(e) {
37550
+ if (readOnly) return;
37274
37551
  setOptionSelected(e.value);
37275
37552
  if (clickedFromList.current) {
37276
37553
  var _selected$optionLabel;
@@ -37281,12 +37558,20 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37281
37558
  setInputValue((_selected$optionLabel = selected === null || selected === void 0 ? void 0 : selected[optionLabel]) !== null && _selected$optionLabel !== void 0 ? _selected$optionLabel : '');
37282
37559
  }
37283
37560
  clickedFromList.current = false;
37284
- if (onChange) onChange(e.value);
37561
+ if (typeof onChange === 'function') {
37562
+ onChange(e.value);
37563
+ } else if (typeof onChange === 'string' && typeof window[onChange] === 'function') {
37564
+ window[onChange](e.value);
37565
+ }
37285
37566
  };
37286
37567
  var handleClear = function handleClear() {
37287
37568
  setOptionSelected(null);
37288
37569
  setInputValue('');
37289
- if (onChange) onChange(null);
37570
+ if (typeof onChange === 'function') {
37571
+ onChange(null);
37572
+ } else if (typeof onChange === 'string' && typeof window[onChange] === 'function') {
37573
+ window[onChange](null);
37574
+ }
37290
37575
  loadOptions('', [], {
37291
37576
  page: 1
37292
37577
  }).then(function (result) {
@@ -37294,13 +37579,14 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37294
37579
  });
37295
37580
  };
37296
37581
  var handleInputChange = /*#__PURE__*/function () {
37297
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(e) {
37582
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(e) {
37298
37583
  var search, result, _result$options2, _result, filteredOptions;
37299
37584
  return _regenerator().w(function (_context3) {
37300
37585
  while (1) switch (_context3.n) {
37301
37586
  case 0:
37302
37587
  search = e.target.value;
37303
37588
  setInputValue(search);
37589
+ if (typeof onSearch === 'function') onSearch(search);
37304
37590
  if (search) {
37305
37591
  _context3.n = 2;
37306
37592
  break;
@@ -37331,19 +37617,22 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37331
37617
  }, _callee3);
37332
37618
  }));
37333
37619
  return function handleInputChange(_x) {
37334
- return _ref6.apply(this, arguments);
37620
+ return _ref8.apply(this, arguments);
37335
37621
  };
37336
37622
  }();
37623
+ var handleMouseEnter = function handleMouseEnter() {
37624
+ var _dropdownComposantRef;
37625
+ if (!openOnHover || disabled || readOnly) return;
37626
+ (_dropdownComposantRef = dropdownComposantRef.current) === null || _dropdownComposantRef === void 0 || _dropdownComposantRef.show();
37627
+ };
37628
+ var handleMouseLeave = function handleMouseLeave() {
37629
+ var _dropdownComposantRef2;
37630
+ if (!openOnHover) return;
37631
+ (_dropdownComposantRef2 = dropdownComposantRef.current) === null || _dropdownComposantRef2 === void 0 || _dropdownComposantRef2.hide();
37632
+ };
37337
37633
  var selectedOption = loadedOptions.find(function (opt) {
37338
37634
  return opt[optionValue] === optionSelected;
37339
37635
  });
37340
- var inverseColor = function inverseColor(hexColor) {
37341
- var r = parseInt(hexColor.substr(1, 2), 16);
37342
- var g = parseInt(hexColor.substr(3, 2), 16);
37343
- var b = parseInt(hexColor.substr(5, 2), 16);
37344
- var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
37345
- return luminance > 0.18 ? '#000000' : '#FFFFFF';
37346
- };
37347
37636
  var valueTemplate = function valueTemplate() {
37348
37637
  if (isEditing) return null;
37349
37638
  if (!selectedOption) return /*#__PURE__*/React__default.createElement("span", {
@@ -37351,7 +37640,37 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37351
37640
  color: '#aaa'
37352
37641
  }
37353
37642
  }, placeholder);
37643
+ if (withIcon || withColor) {
37644
+ var _ref9 = selectConfig || {},
37645
+ labelStyle = _ref9.labelStyle,
37646
+ generalIcon = _ref9.generalIcon;
37647
+ return /*#__PURE__*/React__default.createElement("div", {
37648
+ style: _objectSpread2({
37649
+ display: 'flex',
37650
+ alignItems: 'center',
37651
+ gap: '8px',
37652
+ fontFamily: 'Arial',
37653
+ fontSize: '14px'
37654
+ }, valueStyle)
37655
+ }, withIcon && generalIcon && /*#__PURE__*/React__default.createElement("i", {
37656
+ style: {
37657
+ color: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color
37658
+ },
37659
+ className: generalIcon
37660
+ }), withColor && selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? /*#__PURE__*/React__default.createElement("span", {
37661
+ className: "dd-color-badge is-selected",
37662
+ style: {
37663
+ '--badge-color': selectedOption.color,
37664
+ color: inverseColor(selectedOption.color)
37665
+ }
37666
+ }, truncateLabel(selectedOption[optionLabel])) : /*#__PURE__*/React__default.createElement("span", {
37667
+ className: valueClassname,
37668
+ style: labelStyle
37669
+ }, truncateLabel(selectedOption[optionLabel])));
37670
+ }
37354
37671
  return /*#__PURE__*/React__default.createElement("span", {
37672
+ className: valueClassname,
37673
+ title: selectedOption[optionLabel],
37355
37674
  style: _objectSpread2({
37356
37675
  backgroundColor: selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color : '#FFFFFF',
37357
37676
  color: selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? inverseColor(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color) : '#FFFFFF',
@@ -37362,7 +37681,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37362
37681
  display: 'inline-block',
37363
37682
  fontFamily: 'Arial'
37364
37683
  }, valueStyle)
37365
- }, selectedOption[optionLabel]);
37684
+ }, truncateLabel(selectedOption[optionLabel]));
37366
37685
  };
37367
37686
 
37368
37687
  // 🔹 Fonction de lazy loading (simulation d’un backend)
@@ -37423,20 +37742,103 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37423
37742
  return document.removeEventListener('click', handleAnyClick);
37424
37743
  };
37425
37744
  }, []);
37426
- return /*#__PURE__*/React__default.createElement("div", {
37427
- ref: dropdownRef,
37428
- className: "flex flex-col gap-1",
37429
- onClick: isInvalidEffective || disabled ? null : function () {
37745
+
37746
+ // 🔹 Options calculées (réordonnancement + tri, comme Dropdown)
37747
+ var smartSort = function smartSort(opts, order, labelKey) {
37748
+ if (!order) return opts;
37749
+ var dir = order === 'desc' ? 1 : -1;
37750
+ return _toConsumableArray$a(opts).sort(function (a, b) {
37751
+ var _a$labelKey, _b$labelKey;
37752
+ var aLabel = String((_a$labelKey = a === null || a === void 0 ? void 0 : a[labelKey]) !== null && _a$labelKey !== void 0 ? _a$labelKey : '').trim();
37753
+ var bLabel = String((_b$labelKey = b === null || b === void 0 ? void 0 : b[labelKey]) !== null && _b$labelKey !== void 0 ? _b$labelKey : '').trim();
37754
+ return dir * aLabel.localeCompare(bLabel, 'fr', {
37755
+ sensitivity: 'base',
37756
+ numeric: true
37757
+ });
37758
+ });
37759
+ };
37760
+ var computedOptions = useMemo(function () {
37761
+ var opts = loadedOptions;
37762
+ if (itemsCheckedToTheTop && optionSelected) {
37763
+ var selected = opts.find(function (opt) {
37764
+ return (opt === null || opt === void 0 ? void 0 : opt[optionValue]) === optionSelected;
37765
+ });
37766
+ if (selected) {
37767
+ opts = [selected].concat(_toConsumableArray$a(opts.filter(function (opt) {
37768
+ return (opt === null || opt === void 0 ? void 0 : opt[optionValue]) !== optionSelected;
37769
+ })));
37770
+ }
37771
+ }
37772
+ if (enableSorting) {
37773
+ opts = smartSort(opts, sortOrder, optionLabel);
37774
+ }
37775
+ return opts;
37776
+ }, [loadedOptions, itemsCheckedToTheTop, optionSelected, enableSorting, sortOrder, optionValue, optionLabel]);
37777
+ var toggleSortOrder = function toggleSortOrder() {
37778
+ setSortOrder(function (prev) {
37779
+ if (prev === null) return 'desc';
37780
+ if (prev === 'desc') return 'asc';
37781
+ return null;
37782
+ });
37783
+ requestAnimationFrame(function () {
37784
+ var _dropdownComposantRef3;
37785
+ (_dropdownComposantRef3 = dropdownComposantRef.current) === null || _dropdownComposantRef3 === void 0 || _dropdownComposantRef3.show();
37786
+ });
37787
+ };
37788
+ var customFilterTemplate = function customFilterTemplate(opts) {
37789
+ if (!enableSorting) return opts.element;
37790
+ return /*#__PURE__*/React__default.createElement("div", {
37791
+ className: "dd-search-row"
37792
+ }, opts.element, /*#__PURE__*/React__default.createElement("button", {
37793
+ type: "button",
37794
+ className: "dd-sort-btn",
37795
+ onClick: function onClick(e) {
37796
+ e.stopPropagation();
37797
+ toggleSortOrder();
37798
+ }
37799
+ }, /*#__PURE__*/React__default.createElement("i", {
37800
+ className: sortOrder === 'desc' ? 'pi pi-sort-amount-down' : sortOrder === 'asc' ? 'pi pi-sort-amount-up-alt' : 'pi pi-sort-alt'
37801
+ })));
37802
+ };
37803
+ var mergedClassName = "flex flex-col gap-1 ".concat(attr["class"] || '').trim();
37804
+ attr["class"];
37805
+ var cleanAttr = _objectWithoutProperties$1(attr, _excluded2$2);
37806
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({
37807
+ ref: dropdownRef
37808
+ }, cleanAttr, {
37809
+ className: mergedClassName,
37810
+ style: {
37811
+ width: '100%'
37812
+ },
37813
+ onMouseEnter: handleMouseEnter,
37814
+ onMouseLeave: handleMouseLeave,
37815
+ onClick: isInvalidEffective || disabled || readOnly ? null : function () {
37430
37816
  return setIsEditing(editable);
37431
37817
  }
37432
- }, /*#__PURE__*/React__default.createElement(Dropdown$1, {
37433
- options: loadedOptions,
37818
+ }), enableItemTooltip && /*#__PURE__*/React__default.createElement(Tooltip$1, {
37819
+ key: tooltipKey,
37820
+ target: ".dropdown-tooltip-item",
37821
+ appendTo: document.body,
37822
+ position: "right",
37823
+ style: {
37824
+ zIndex: 9999999
37825
+ }
37826
+ }), /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$J({
37827
+ ref: dropdownComposantRef,
37828
+ options: computedOptions,
37434
37829
  onChange: handleChange,
37830
+ onClick: function onClick(e) {
37831
+ if (readOnly) {
37832
+ e.preventDefault();
37833
+ e.stopPropagation();
37834
+ }
37835
+ },
37435
37836
  filter: filter,
37837
+ filterTemplate: filter ? customFilterTemplate : undefined,
37436
37838
  placeholder: placeholder === "" || placeholder === null ? ' ' : placeholder,
37437
37839
  optionLabel: optionLabel,
37438
37840
  optionValue: optionValue,
37439
- showClear: true,
37841
+ showClear: showClear,
37440
37842
  disabled: disabled,
37441
37843
  editable: isEditing,
37442
37844
  onFocus: function onFocus() {
@@ -37454,16 +37856,38 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37454
37856
  },
37455
37857
  dropdownMode: "current",
37456
37858
  itemTemplate: optionTemplate,
37457
- valueTemplate: valueTemplate,
37458
- virtualScrollerOptions: {
37859
+ valueTemplate: valueTemplate
37860
+ }, hasInfoLine && {
37861
+ panelFooterTemplate: panelFooterTemplate
37862
+ }, {
37863
+ optionGroupTemplate: isGroupedOption ? groupedItemTemplate : null
37864
+ }, isGroupedOption && computedOptions.length > 0 && Array.isArray((_computedOptions$ = computedOptions[0]) === null || _computedOptions$ === void 0 ? void 0 : _computedOptions$.items) && {
37865
+ optionGroupLabel: 'label',
37866
+ optionGroupChildren: 'items'
37867
+ }, {
37868
+ onShow: function onShow() {
37869
+ if (isGroupedOption && showTooltipGroup) setIsDropdownOpen(true);
37870
+ if (enableItemTooltip) setTooltipKey(function (k) {
37871
+ return k + 1;
37872
+ });
37873
+ },
37874
+ onHide: function onHide() {
37875
+ if (isGroupedOption && showTooltipGroup) setIsDropdownOpen(false);
37876
+ },
37877
+ emptyMessage: externalLoading ? 'Chargement…' : 'Aucune option disponible',
37878
+ virtualScrollerOptions: _objectSpread2({
37459
37879
  lazy: true,
37460
37880
  onLazyLoad: onLazyLoad,
37461
37881
  itemSize: 38,
37462
37882
  showLoader: true,
37463
- loading: loading,
37883
+ loading: loading || externalLoading,
37464
37884
  delay: 25
37465
- },
37466
- className: "w-full md:w-14rem"
37885
+ }, virtualScrollerOptions),
37886
+ className: "w-full"
37887
+ })), !isDropdownOpen && selectedGroupLabel && isGroupedOption && /*#__PURE__*/React__default.createElement(Tooltip$1, {
37888
+ target: ".p-dropdown-label.p-inputtext",
37889
+ content: selectedGroupLabel,
37890
+ position: "top"
37467
37891
  }), name && /*#__PURE__*/React__default.createElement("input", {
37468
37892
  type: "hidden",
37469
37893
  name: name,
@@ -37500,9 +37924,6 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37500
37924
  }, errorMessage || (showRequiredError ? ((_window$Translator = window.Translator) === null || _window$Translator === void 0 ? void 0 : _window$Translator.trans('error.required')) || 'Veuillez renseigner ce champ' : ((_window$Translator2 = window.Translator) === null || _window$Translator2 === void 0 ? void 0 : _window$Translator2.trans('error.invalid_selection')) || 'Sélection invalide'))));
37501
37925
  };
37502
37926
 
37503
- var css_248z$5 = "@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.dropdownbook.p-dropdown-panel {\n z-index: 999999 !important;\n}\n\n.p-tooltip {\n z-index: 1000000 !important;\n}\n\n.dropdown-tooltip-item {\n position: relative;\n width: 100%;\n cursor: pointer;\n}\n\n/* Application du mixin field sur le wrapper du Dropdown */\n.dropdown-container .p-dropdown {\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}\n.dropdown-container .p-dropdown:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled) {\n border-color: #c8cdd6;\n}\n.dropdown-container .p-dropdown:focus, .dropdown-container .p-dropdown:focus-within, .dropdown-container .p-dropdown.is-open {\n border-color: #3f3f3f;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);\n}\n.dropdown-container .p-dropdown[disabled], .dropdown-container .p-dropdown.is-disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n}\n.dropdown-container .p-dropdown[readonly], .dropdown-container .p-dropdown.is-readonly {\n background: #f4f5f6;\n cursor: default;\n box-shadow: none;\n}\n.dropdown-container .p-dropdown[readonly]:hover, .dropdown-container .p-dropdown.is-readonly:hover {\n border-color: #e0e3e8;\n}\n.dropdown-container .p-dropdown.is-error {\n border-color: #dc2626;\n box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);\n}\n.dropdown-container .p-dropdown.is-success {\n border-color: #15803d;\n box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.12);\n}\n.dropdown-container .p-dropdown {\n padding: 0;\n display: flex;\n align-items: center;\n}\n\n.dd-search-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid #e0e3e8;\n}\n.dd-search-row [class*=-filter-container] {\n flex: 1;\n min-width: 0;\n position: relative;\n}\n.dd-search-row [class*=-filter-container] .p-inputtext {\n width: 100%;\n height: 32px;\n padding: 0 24.5px 0 12px;\n font-size: 14px;\n box-sizing: border-box;\n}\n.dd-search-row [class*=-filter-container] [class*=-filter-icon] {\n right: 10.5px;\n color: #b0b8c4;\n}\n\n.dd-sort-btn {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid #e0e3e8;\n border-radius: 7px;\n background: #ffffff;\n cursor: pointer;\n color: #b0b8c4;\n font-size: 14px;\n transition: background 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.dd-sort-btn:hover {\n background: #f4f5f6;\n color: #1a1e26;\n}\n\n.dropdownbook .p-dropdown-header:has(.dd-search-row) {\n padding: 0;\n}\n\n/* ===== Badge couleur dans les items ===== */\n.dd-color-badge {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 4px 10px;\n border-radius: 14px;\n font-size: 12.25px;\n font-family: \"Roboto\", sans-serif;\n white-space: nowrap;\n cursor: default;\n transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);\n background-color: #f4f5f6;\n color: #1a1e26;\n border: 1px solid #e0e3e8;\n border-color: var(--badge-color, #e0e3e8);\n background-color: color-mix(in srgb, var(--badge-color, #f4f5f6) 50%, transparent);\n}\n.dd-color-badge.is-selected {\n background-color: var(--badge-color, #f4f5f6);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.p-dropdown-item:hover .dd-color-badge {\n background-color: var(--badge-color) !important;\n}\n\n/* ===== Override PrimeReact default item colors ===== */\n.dropdownbook .p-dropdown-items .p-dropdown-item:not(.p-highlight):hover {\n background: #f4f5f6 !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight {\n background: rgba(63, 63, 63, 0.08) !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight.p-focus {\n background: rgba(63, 63, 63, 0.12) !important;\n color: #1a1e26 !important;\n}\n.dropdownbook .p-dropdown-items .p-dropdown-item.p-focus {\n background: #f4f5f6 !important;\n color: #1a1e26 !important;\n}\n\n/* ===== Override PrimeReact filter input focus ===== */\n.dropdownbook .p-dropdown-filter.p-inputtext:hover {\n border-color: #c8cdd6 !important;\n}\n.dropdownbook .p-dropdown-filter.p-inputtext:focus, .dropdownbook .p-dropdown-filter.p-inputtext.p-focus {\n border-color: #3f3f3f !important;\n box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1) !important;\n outline: none;\n}";
37504
- styleInject(css_248z$5);
37505
-
37506
37927
  var _excluded$2 = ["class"],
37507
37928
  _excluded2$1 = ["style", "className"];
37508
37929
  var Dropdown = function Dropdown(props) {
@@ -44526,24 +44947,118 @@ var createFakeOptions = function createFakeOptions(start, length) {
44526
44947
  }
44527
44948
  return options;
44528
44949
  };
44950
+ var mockPeople = [{
44951
+ label: 'Alice Martin',
44952
+ value: 1,
44953
+ color: '#ff9900',
44954
+ profession: 'Développeuse',
44955
+ tooltip: 'Alice Martin — Développeuse',
44956
+ link: 'https://example.com'
44957
+ }, {
44958
+ label: 'Bruno Lefèvre',
44959
+ value: 2,
44960
+ color: '#3b82f6',
44961
+ profession: 'Chef de projet',
44962
+ tooltip: 'Bruno Lefèvre — Chef de projet',
44963
+ link: 'https://example.com'
44964
+ }, {
44965
+ label: 'Chloé Dubois',
44966
+ value: 3,
44967
+ color: '#10b981',
44968
+ profession: 'Designer',
44969
+ tooltip: 'Chloé Dubois — Designer',
44970
+ link: 'https://example.com'
44971
+ }, {
44972
+ label: 'David Morel',
44973
+ value: 4,
44974
+ color: '#8b5cf6',
44975
+ profession: 'Data analyst',
44976
+ tooltip: 'David Morel — Data analyst',
44977
+ link: 'https://example.com'
44978
+ }, {
44979
+ label: 'Emma Roux',
44980
+ value: 5,
44981
+ color: '#ec4899',
44982
+ profession: 'Product owner',
44983
+ tooltip: 'Emma Roux — Product owner',
44984
+ link: 'https://example.com'
44985
+ }, {
44986
+ label: 'Farid Benali',
44987
+ value: 6,
44988
+ color: '#f59e0b',
44989
+ profession: 'DevOps',
44990
+ tooltip: 'Farid Benali — DevOps',
44991
+ link: 'https://example.com'
44992
+ }, {
44993
+ label: 'Gaëlle Simon',
44994
+ value: 7,
44995
+ color: '#ef4444',
44996
+ profession: 'QA engineer',
44997
+ tooltip: 'Gaëlle Simon — QA engineer',
44998
+ link: 'https://example.com'
44999
+ }, {
45000
+ label: 'Hugo Bernard',
45001
+ value: 8,
45002
+ color: '#10b981',
45003
+ profession: 'Développeur',
45004
+ tooltip: 'Hugo Bernard — Développeur',
45005
+ link: 'https://example.com'
45006
+ }];
45007
+ var asyncPeople = /*#__PURE__*/function () {
45008
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45009
+ var search,
45010
+ _ref2,
45011
+ _ref2$page,
45012
+ page,
45013
+ filtered,
45014
+ pageSize,
45015
+ start,
45016
+ _args = arguments;
45017
+ return _regenerator().w(function (_context) {
45018
+ while (1) switch (_context.n) {
45019
+ case 0:
45020
+ search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
45021
+ _ref2 = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref2$page = _ref2.page, page = _ref2$page === void 0 ? 1 : _ref2$page;
45022
+ _context.n = 1;
45023
+ return simulateNetworkDelay();
45024
+ case 1:
45025
+ filtered = search ? mockPeople.filter(function (opt) {
45026
+ return opt.label.toLowerCase().includes(search.toLowerCase());
45027
+ }) : mockPeople;
45028
+ pageSize = 30;
45029
+ start = (page - 1) * pageSize;
45030
+ return _context.a(2, {
45031
+ options: filtered.slice(start, start + pageSize),
45032
+ hasMore: start + pageSize < filtered.length,
45033
+ additional: {
45034
+ page: page + 1
45035
+ }
45036
+ });
45037
+ }
45038
+ }, _callee);
45039
+ }));
45040
+ return function asyncPeople() {
45041
+ return _ref.apply(this, arguments);
45042
+ };
45043
+ }();
44529
45044
  var DropdownSelectMetaAsyncPresets = {
44530
45045
  SelectMetaAsync: {
44531
45046
  options: function () {
44532
- var _options = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45047
+ var _options = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
44533
45048
  var search,
44534
- _ref,
45049
+ _ref3,
44535
45050
  page,
44536
45051
  allOptions,
44537
45052
  filtered,
44538
45053
  pageSize,
44539
45054
  start,
44540
- _args = arguments;
44541
- return _regenerator().w(function (_context) {
44542
- while (1) switch (_context.n) {
45055
+ _args2 = arguments;
45056
+ return _regenerator().w(function (_context2) {
45057
+ while (1) switch (_context2.n) {
44543
45058
  case 0:
44544
- search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
44545
- _ref = _args.length > 2 ? _args[2] : undefined, page = _ref.page;
44546
- _context.n = 1;
45059
+ search = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : '';
45060
+ _ref3 = _args2.length > 2 ? _args2[2] : undefined, page = _ref3.page;
45061
+ _context2.n = 1;
44547
45062
  return simulateNetworkDelay();
44548
45063
  case 1:
44549
45064
  allOptions = createFakeOptions(0, 100);
@@ -44552,7 +45067,7 @@ var DropdownSelectMetaAsyncPresets = {
44552
45067
  });
44553
45068
  pageSize = 30;
44554
45069
  start = (page - 1) * pageSize;
44555
- return _context.a(2, {
45070
+ return _context2.a(2, {
44556
45071
  options: filtered.slice(start, start + pageSize),
44557
45072
  hasMore: start + pageSize < filtered.length,
44558
45073
  additional: {
@@ -44560,7 +45075,7 @@ var DropdownSelectMetaAsyncPresets = {
44560
45075
  }
44561
45076
  });
44562
45077
  }
44563
- }, _callee);
45078
+ }, _callee2);
44564
45079
  }));
44565
45080
  function options() {
44566
45081
  return _options.apply(this, arguments);
@@ -44582,6 +45097,141 @@ var DropdownSelectMetaAsyncPresets = {
44582
45097
  fontSize: '14px',
44583
45098
  fontFamily: 'Arial'
44584
45099
  }
45100
+ },
45101
+ Base: {
45102
+ options: asyncPeople,
45103
+ value: null,
45104
+ placeholder: 'Sélectionnez une option',
45105
+ editable: true,
45106
+ filter: false,
45107
+ showClear: true,
45108
+ valueStyle: {
45109
+ backgroundColor: 'transparent',
45110
+ color: 'inherit',
45111
+ padding: '0',
45112
+ borderRadius: '0',
45113
+ boxShadow: 'none',
45114
+ fontFamily: 'inherit'
45115
+ }
45116
+ },
45117
+ AsyncOptions: {
45118
+ options: asyncPeople,
45119
+ value: 3,
45120
+ placeholder: 'Sélectionnez une option',
45121
+ editable: true,
45122
+ showClear: true,
45123
+ selectMetaConfig: {
45124
+ labelStyle: {
45125
+ fontWeight: 'bold'
45126
+ },
45127
+ generalIcon: 'pi pi-tag'
45128
+ }
45129
+ },
45130
+ SearchAjaxLoading: {
45131
+ // En prod : optionsUrl: '/api/options' (pagination start/length, recherche search[value])
45132
+ options: asyncPeople,
45133
+ placeholder: 'Rechercher (Ajax)…',
45134
+ filter: true,
45135
+ showClear: true
45136
+ },
45137
+ Sorting: {
45138
+ options: asyncPeople,
45139
+ placeholder: 'Tri A→Z / Z→A',
45140
+ filter: true,
45141
+ enableSorting: true,
45142
+ showClear: true
45143
+ },
45144
+ ItemsCheckedToTheTop: {
45145
+ options: asyncPeople,
45146
+ value: 5,
45147
+ placeholder: 'Sélection remontée en haut',
45148
+ itemsCheckedToTheTop: true,
45149
+ showClear: true
45150
+ },
45151
+ OpenOnHover: {
45152
+ options: asyncPeople,
45153
+ placeholder: 'Ouverture au survol',
45154
+ openOnHover: true
45155
+ },
45156
+ ItemWithTooltip: {
45157
+ options: asyncPeople,
45158
+ placeholder: 'Tooltip sur les options',
45159
+ enableItemTooltip: true
45160
+ },
45161
+ ItemWithSecondaryLabel: {
45162
+ options: asyncPeople,
45163
+ placeholder: 'Label secondaire',
45164
+ enableSecondaryLabel: true,
45165
+ secondaryLabelKey: 'profession'
45166
+ },
45167
+ ItemWithLink: {
45168
+ options: asyncPeople,
45169
+ placeholder: 'Lien sur le label secondaire',
45170
+ enableSecondaryLabel: true,
45171
+ secondaryLabelKey: 'profession',
45172
+ enableItemLink: true
45173
+ },
45174
+ Badge: {
45175
+ options: asyncPeople,
45176
+ value: 2,
45177
+ placeholder: 'Badges colorés',
45178
+ withColor: true,
45179
+ selectConfig: {
45180
+ labelStyle: null,
45181
+ generalIcon: null
45182
+ }
45183
+ },
45184
+ WithIcon: {
45185
+ options: asyncPeople,
45186
+ value: 1,
45187
+ placeholder: 'Icône devant chaque option',
45188
+ withIcon: true,
45189
+ selectConfig: {
45190
+ labelStyle: {
45191
+ fontWeight: '400'
45192
+ },
45193
+ generalIcon: 'pi pi-user'
45194
+ }
45195
+ },
45196
+ Truncate: {
45197
+ options: asyncPeople,
45198
+ value: 2,
45199
+ placeholder: 'Label tronqué',
45200
+ truncateAt: 8,
45201
+ valueStyle: {
45202
+ backgroundColor: 'transparent',
45203
+ color: 'inherit',
45204
+ padding: '0',
45205
+ borderRadius: '0',
45206
+ boxShadow: 'none',
45207
+ fontFamily: 'inherit'
45208
+ }
45209
+ },
45210
+ ReadOnly: {
45211
+ options: asyncPeople,
45212
+ value: 4,
45213
+ readOnly: true,
45214
+ showClear: false
45215
+ },
45216
+ Disabled: {
45217
+ options: asyncPeople,
45218
+ value: 4,
45219
+ disabled: true
45220
+ },
45221
+ Required: {
45222
+ options: asyncPeople,
45223
+ value: null,
45224
+ placeholder: 'Sélection obligatoire',
45225
+ required: true,
45226
+ name: 'monchamp',
45227
+ status: 'error',
45228
+ errorMessage: 'Une option doit être sélectionnée'
45229
+ },
45230
+ InfoLine: {
45231
+ options: asyncPeople,
45232
+ placeholder: 'Avec pied de panel',
45233
+ hasInfoLine: true,
45234
+ InfoLineValue: '8 utilisateurs disponibles'
44585
45235
  }
44586
45236
  };
44587
45237
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arengibook",
3
3
  "private": false,
4
- "version": "3.1.313-main",
4
+ "version": "3.1.314-main",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "exports": {