arengibook 3.1.4-main → 3.1.5-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 +898 -125
  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,
@@ -37028,6 +37033,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37028
37033
  optionLabel = _ref$optionLabel === void 0 ? 'label' : _ref$optionLabel,
37029
37034
  _ref$optionValue = _ref.optionValue,
37030
37035
  optionValue = _ref$optionValue === void 0 ? 'value' : _ref$optionValue,
37036
+ optionsUrl = _ref.optionsUrl,
37031
37037
  _ref$invalid = _ref.invalid,
37032
37038
  invalid = _ref$invalid === void 0 ? false : _ref$invalid,
37033
37039
  _ref$errorMessage = _ref.errorMessage,
@@ -37039,7 +37045,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37039
37045
  _ref$editable = _ref.editable,
37040
37046
  editable = _ref$editable === void 0 ? false : _ref$editable,
37041
37047
  _ref$filter = _ref.filter,
37042
- filter = _ref$filter === void 0 ? filter : _ref$filter,
37048
+ filter = _ref$filter === void 0 ? false : _ref$filter,
37043
37049
  _ref$selectMetaConfig = _ref.selectMetaConfig,
37044
37050
  selectMetaConfig = _ref$selectMetaConfig === void 0 ? {
37045
37051
  labelStyle: null,
@@ -37048,7 +37054,79 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37048
37054
  _ref$objValue = _ref.objValue,
37049
37055
  objValue = _ref$objValue === void 0 ? null : _ref$objValue,
37050
37056
  _ref$required = _ref.required,
37051
- 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;
37052
37130
  var _useState = useState(null),
37053
37131
  _useState2 = _slicedToArray$d(_useState, 2),
37054
37132
  optionSelected = _useState2[0],
@@ -37066,6 +37144,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37066
37144
  inputValue = _useState8[0],
37067
37145
  setInputValue = _useState8[1];
37068
37146
  var dropdownRef = useRef(null);
37147
+ var dropdownComposantRef = useRef(null);
37069
37148
  useRef(null);
37070
37149
  var clickedFromList = useRef(false);
37071
37150
  var _useState9 = useState(''),
@@ -37076,15 +37155,50 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37076
37155
  _useState10 = _slicedToArray$d(_useState1, 2),
37077
37156
  showRequiredError = _useState10[0],
37078
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];
37079
37174
 
37080
37175
  // 🔹 Lazy loading
37081
- var _useState11 = useState(false),
37082
- _useState12 = _slicedToArray$d(_useState11, 2),
37083
- loading = _useState12[0],
37084
- setLoading = _useState12[1];
37176
+ var _useState19 = useState(false),
37177
+ _useState20 = _slicedToArray$d(_useState19, 2),
37178
+ loading = _useState20[0],
37179
+ setLoading = _useState20[1];
37085
37180
  var loadLazyTimeout = useRef();
37086
- useRef(1);
37087
- useRef('');
37181
+ var currentPageRef = useRef(1);
37182
+ var hasMoreRef = useRef(true);
37183
+ var isLoadingRef = useRef(false);
37184
+ var searchTermRef = useRef('');
37185
+ var loadedOptionsRef = useRef([]);
37186
+ var updateLoadedOptions = function updateLoadedOptions(opts) {
37187
+ loadedOptionsRef.current = opts;
37188
+ setLoadedOptions(opts);
37189
+ };
37190
+ var inverseColor = function inverseColor(hexColor) {
37191
+ var r = parseInt(hexColor.substr(1, 2), 16);
37192
+ var g = parseInt(hexColor.substr(3, 2), 16);
37193
+ var b = parseInt(hexColor.substr(5, 2), 16);
37194
+ var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
37195
+ return luminance > 0.18 ? '#000000' : '#FFFFFF';
37196
+ };
37197
+ var truncateLabel = function truncateLabel(label) {
37198
+ if (!label || typeof label !== 'string') return label;
37199
+ if (!truncateAt || label.length <= truncateAt) return label;
37200
+ return label.slice(0, truncateAt) + '…';
37201
+ };
37088
37202
  var optionTemplate = function optionTemplate(option) {
37089
37203
  var _ref2 = selectMetaConfig || {},
37090
37204
  labelStyle = _ref2.labelStyle,
@@ -37092,17 +37206,69 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37092
37206
  var styleLabel = {
37093
37207
  marginLeft: '10px'
37094
37208
  };
37095
- return /*#__PURE__*/React__default.createElement("div", {
37209
+ var tooltipProps = enableItemTooltip ? {
37210
+ 'data-pr-tooltip': (option === null || option === void 0 ? void 0 : option.tooltip) || (option === null || option === void 0 ? void 0 : option.description),
37211
+ 'data-pr-position': 'right'
37212
+ } : {};
37213
+ var secondaryLabel = enableSecondaryLabel ? option === null || option === void 0 ? void 0 : option[secondaryLabelKey] : null;
37214
+ var isLink = enableItemLink && (option === null || option === void 0 ? void 0 : option.link);
37215
+ var handleLinkClick = function handleLinkClick(e) {
37216
+ if (isLink) {
37217
+ e.preventDefault();
37218
+ e.stopPropagation();
37219
+ window.open(option.link, '_blank', 'noopener,noreferrer');
37220
+ }
37221
+ };
37222
+ var optionAttrs = typeof choice_attr === 'function' ? choice_attr(option) : {};
37223
+ var attrStyle = optionAttrs.style,
37224
+ attrClassName = optionAttrs.className,
37225
+ restAttrs = _objectWithoutProperties$1(optionAttrs, _excluded$3);
37226
+ var className = "flex align-items-center dropdown-tooltip-item ".concat(attrClassName || optionClassname || '').trim();
37227
+ if (withIcon || withColor) {
37228
+ var _ref3 = selectConfig || {},
37229
+ cfgLabelStyle = _ref3.labelStyle,
37230
+ cfgGeneralIcon = _ref3.generalIcon;
37231
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({}, tooltipProps, restAttrs, {
37232
+ onClick: function onClick() {
37233
+ clickedFromList.current = true;
37234
+ },
37235
+ className: className,
37236
+ style: _objectSpread2(_objectSpread2({
37237
+ fontSize: '14px',
37238
+ display: 'flex',
37239
+ alignItems: 'center',
37240
+ gap: '8px'
37241
+ }, optionStyle), attrStyle)
37242
+ }), withIcon && cfgGeneralIcon && /*#__PURE__*/React__default.createElement("i", {
37243
+ style: {
37244
+ color: option === null || option === void 0 ? void 0 : option.color
37245
+ },
37246
+ className: cfgGeneralIcon
37247
+ }), withColor && option !== null && option !== void 0 && option.color ? /*#__PURE__*/React__default.createElement("span", {
37248
+ className: "dd-color-badge".concat(optionSelected === (option === null || option === void 0 ? void 0 : option[optionValue]) ? ' is-selected' : ''),
37249
+ style: {
37250
+ '--badge-color': option.color,
37251
+ color: inverseColor(option.color)
37252
+ }
37253
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]) : /*#__PURE__*/React__default.createElement("span", {
37254
+ style: _objectSpread2(_objectSpread2({}, cfgLabelStyle), subItem ? {
37255
+ flex: 1
37256
+ } : {})
37257
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]));
37258
+ }
37259
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({}, tooltipProps, restAttrs, {
37096
37260
  onClick: function onClick() {
37097
37261
  clickedFromList.current = true;
37098
37262
  },
37099
- className: "flex align-items-center",
37100
- style: {
37263
+ className: className,
37264
+ style: _objectSpread2({
37101
37265
  padding: '6px 10px',
37102
37266
  height: 'auto'
37103
- }
37104
- }, /*#__PURE__*/React__default.createElement("div", {
37105
- style: _objectSpread2({
37267
+ }, attrStyle)
37268
+ }), /*#__PURE__*/React__default.createElement("div", {
37269
+ style: _objectSpread2(_objectSpread2({}, subItem ? {
37270
+ flex: 1
37271
+ } : {}), {}, {
37106
37272
  fontSize: '15px',
37107
37273
  fontWeight: 'bold'
37108
37274
  }, labelStyle)
@@ -37113,9 +37279,185 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37113
37279
  className: generalIcon
37114
37280
  }), /*#__PURE__*/React__default.createElement("span", {
37115
37281
  style: styleLabel
37116
- }, option === null || option === void 0 ? void 0 : option[optionLabel])));
37282
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]), secondaryLabel && /*#__PURE__*/React__default.createElement("div", {
37283
+ onClick: isLink ? handleLinkClick : undefined,
37284
+ onMouseDown: isLink ? function (e) {
37285
+ return e.stopPropagation();
37286
+ } : undefined,
37287
+ style: {
37288
+ cursor: isLink ? 'pointer' : 'default',
37289
+ marginTop: '2px',
37290
+ width: 'fit-content'
37291
+ }
37292
+ }, /*#__PURE__*/React__default.createElement("small", {
37293
+ style: {
37294
+ opacity: 0.75,
37295
+ fontSize: '12px',
37296
+ textDecoration: isLink ? 'underline' : 'none',
37297
+ color: isLink ? '#3b82f6' : 'inherit',
37298
+ fontWeight: 'normal'
37299
+ }
37300
+ }, /*#__PURE__*/React__default.createElement("span", {
37301
+ style: subItem ? {} : {
37302
+ marginLeft: '10px'
37303
+ }
37304
+ }, secondaryLabel)))));
37117
37305
  };
37118
- var isInvalidEffective = invalid || showRequiredError;
37306
+ var groupedItemTemplate = function groupedItemTemplate(option) {
37307
+ var _ref4 = groupedItemTemplateConfig || {},
37308
+ showImage = _ref4.showImage,
37309
+ imageKey = _ref4.imageKey,
37310
+ imageStyle = _ref4.imageStyle,
37311
+ showIcon = _ref4.showIcon,
37312
+ iconKey = _ref4.iconKey,
37313
+ labelStyle = _ref4.labelStyle,
37314
+ generalIcon = _ref4.generalIcon,
37315
+ generalImage = _ref4.generalImage;
37316
+ var icon = option.value && option.value[iconKey];
37317
+ var styleLabel = generalIcon || showImage && option[imageKey] || showIcon && icon ? {
37318
+ marginLeft: '10px'
37319
+ } : {};
37320
+ if (option.group) {
37321
+ return /*#__PURE__*/React__default.createElement("div", {
37322
+ className: "flex align-items-center"
37323
+ }, /*#__PURE__*/React__default.createElement("div", {
37324
+ style: _objectSpread2({
37325
+ fontSize: '15px',
37326
+ fontWeight: 'bold'
37327
+ }, labelStyle)
37328
+ }, generalIcon && /*#__PURE__*/React__default.createElement("i", {
37329
+ className: generalIcon,
37330
+ style: _objectSpread2({
37331
+ fontSize: '15px',
37332
+ fontWeight: 'bold'
37333
+ }, labelStyle)
37334
+ }), generalImage && /*#__PURE__*/React__default.createElement("img", {
37335
+ alt: "General",
37336
+ src: generalImage,
37337
+ style: imageStyle || {
37338
+ width: '18px',
37339
+ marginRight: '0.5rem'
37340
+ },
37341
+ className: "mr-2"
37342
+ }), showImage && option[imageKey] && /*#__PURE__*/React__default.createElement("img", {
37343
+ alt: option.label,
37344
+ src: option[imageKey],
37345
+ style: imageStyle || {
37346
+ width: '18px',
37347
+ marginRight: '0.5rem'
37348
+ },
37349
+ className: "mr-2"
37350
+ }), showIcon && icon && /*#__PURE__*/React__default.createElement("i", {
37351
+ className: "mr-2 ".concat(icon),
37352
+ style: _objectSpread2({
37353
+ fontSize: '15px',
37354
+ fontWeight: 'bold'
37355
+ }, labelStyle)
37356
+ }), /*#__PURE__*/React__default.createElement("span", {
37357
+ style: styleLabel
37358
+ }, option.label)));
37359
+ }
37360
+ return null;
37361
+ };
37362
+ var panelFooterTemplate = function panelFooterTemplate() {
37363
+ if (InfoLineValue) {
37364
+ return /*#__PURE__*/React__default.createElement("div", {
37365
+ style: {
37366
+ padding: '8px'
37367
+ }
37368
+ }, /*#__PURE__*/React__default.createElement("b", null, InfoLineValue));
37369
+ }
37370
+ };
37371
+ var isInvalidEffective = invalid || status === 'error' || showRequiredError;
37372
+
37373
+ // 🔹 Chargement des options depuis une URL (même contrat que MultiSelectMetaAsync)
37374
+ var fetchOptionsFromUrl = /*#__PURE__*/function () {
37375
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37376
+ var search,
37377
+ _ref6,
37378
+ _ref6$page,
37379
+ page,
37380
+ length,
37381
+ start,
37382
+ queryParams,
37383
+ response,
37384
+ responseJSON,
37385
+ dataAjax,
37386
+ mappedOptions,
37387
+ hasMore,
37388
+ _args = arguments,
37389
+ _t;
37390
+ return _regenerator().w(function (_context) {
37391
+ while (1) switch (_context.n) {
37392
+ case 0:
37393
+ search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
37394
+ _ref6 = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref6$page = _ref6.page, page = _ref6$page === void 0 ? 1 : _ref6$page;
37395
+ _context.p = 1;
37396
+ length = 25;
37397
+ start = (page - 1) * length;
37398
+ queryParams = new URLSearchParams();
37399
+ if (search) queryParams.append('search[value]', search);
37400
+ queryParams.append('start', start);
37401
+ queryParams.append('length', length);
37402
+ _context.n = 2;
37403
+ return fetch("".concat(optionsUrl, "?").concat(queryParams.toString()));
37404
+ case 2:
37405
+ response = _context.v;
37406
+ if (response.ok) {
37407
+ _context.n = 4;
37408
+ break;
37409
+ }
37410
+ if (!(response.status === 404)) {
37411
+ _context.n = 3;
37412
+ break;
37413
+ }
37414
+ hasMoreRef.current = false;
37415
+ return _context.a(2, {
37416
+ options: [],
37417
+ hasMore: false
37418
+ });
37419
+ case 3:
37420
+ throw new Error("Erreur HTTP: ".concat(response.status));
37421
+ case 4:
37422
+ _context.n = 5;
37423
+ return response.json();
37424
+ case 5:
37425
+ responseJSON = _context.v;
37426
+ dataAjax = responseJSON.data || [];
37427
+ mappedOptions = dataAjax.map(function (opt) {
37428
+ if (opt.hasOwnProperty('color') && opt.color !== null && opt.color.length > 0) {
37429
+ opt.color = opt.color.toLowerCase();
37430
+ } else {
37431
+ delete opt.color;
37432
+ }
37433
+ opt.label = opt.nom !== undefined && opt.nom !== null ? opt.nom : opt.label;
37434
+ opt.value = opt.id;
37435
+ return opt;
37436
+ });
37437
+ hasMore = start + dataAjax.length < responseJSON.recordsTotal;
37438
+ return _context.a(2, {
37439
+ options: mappedOptions,
37440
+ hasMore: hasMore,
37441
+ additional: {
37442
+ page: page + 1
37443
+ }
37444
+ });
37445
+ case 6:
37446
+ _context.p = 6;
37447
+ _t = _context.v;
37448
+ console.error("Erreur lors de la récupération des options :", _t);
37449
+ return _context.a(2, {
37450
+ options: [],
37451
+ hasMore: false
37452
+ });
37453
+ }
37454
+ }, _callee, null, [[1, 6]]);
37455
+ }));
37456
+ return function fetchOptionsFromUrl() {
37457
+ return _ref5.apply(this, arguments);
37458
+ };
37459
+ }();
37460
+ var loadOptions = typeof options === 'function' ? options : fetchOptionsFromUrl;
37119
37461
  var style = {
37120
37462
  border: isInvalidEffective ? '1px solid red' : '1px solid #ccc',
37121
37463
  width: '100%',
@@ -37126,36 +37468,38 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37126
37468
  }, [optionSelected]);
37127
37469
  useEffect(function () {
37128
37470
  setOptionSelected(objValue ? objValue === null || objValue === void 0 ? void 0 : objValue[optionValue] : value !== null && value !== void 0 ? value : null);
37471
+ currentPageRef.current = 1;
37472
+ hasMoreRef.current = true;
37473
+ isLoadingRef.current = false;
37129
37474
  var loadInitialOptions = /*#__PURE__*/function () {
37130
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37131
- var result, _result$options, exists;
37132
- return _regenerator().w(function (_context) {
37133
- while (1) switch (_context.n) {
37475
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
37476
+ var result, initialOpts, exists;
37477
+ return _regenerator().w(function (_context2) {
37478
+ while (1) switch (_context2.n) {
37134
37479
  case 0:
37135
- _context.n = 1;
37136
- return options('', [], {
37480
+ _context2.n = 1;
37481
+ return loadOptions('', [], {
37137
37482
  page: 1
37138
37483
  });
37139
37484
  case 1:
37140
- result = _context.v;
37141
- setLoadedOptions((result === null || result === void 0 ? void 0 : result.options) || []);
37485
+ result = _context2.v;
37486
+ hasMoreRef.current = (result === null || result === void 0 ? void 0 : result.hasMore) !== false;
37487
+ initialOpts = (result === null || result === void 0 ? void 0 : result.options) || [];
37142
37488
  if (objValue) {
37143
- exists = result === null || result === void 0 || (_result$options = result.options) === null || _result$options === void 0 ? void 0 : _result$options.some(function (opt) {
37489
+ exists = initialOpts.some(function (opt) {
37144
37490
  return opt[optionValue] === objValue[optionValue];
37145
37491
  });
37146
- if (!exists) {
37147
- setLoadedOptions(function (prev) {
37148
- return [].concat(_toConsumableArray$a(prev), [objValue]);
37149
- });
37150
- }
37492
+ updateLoadedOptions(exists ? initialOpts : [].concat(_toConsumableArray$a(initialOpts), [objValue]));
37493
+ } else {
37494
+ updateLoadedOptions(initialOpts);
37151
37495
  }
37152
37496
  case 2:
37153
- return _context.a(2);
37497
+ return _context2.a(2);
37154
37498
  }
37155
- }, _callee);
37499
+ }, _callee2);
37156
37500
  }));
37157
37501
  return function loadInitialOptions() {
37158
- return _ref3.apply(this, arguments);
37502
+ return _ref7.apply(this, arguments);
37159
37503
  };
37160
37504
  }();
37161
37505
  loadInitialOptions();
@@ -37163,7 +37507,7 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37163
37507
  return function () {
37164
37508
  document.removeEventListener('mousedown', handleClickOutside);
37165
37509
  };
37166
- }, [options, objValue, value]);
37510
+ }, [options, optionsUrl, objValue, value]);
37167
37511
  var handleClickOutside = function handleClickOutside(event) {
37168
37512
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
37169
37513
  setIsEditing(false);
@@ -37181,7 +37525,39 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37181
37525
  }
37182
37526
  };
37183
37527
  }, [dropdownRef.current]);
37528
+ useEffect(function () {
37529
+ if (enableItemTooltip) {
37530
+ setTooltipKey(function (prevKey) {
37531
+ return prevKey + 1;
37532
+ });
37533
+ }
37534
+ }, [loadedOptions, enableItemTooltip]);
37535
+ var getSelectedGroupLabel = function getSelectedGroupLabel(selectedValue) {
37536
+ if (!isGroupedOption || !selectedValue) return '';
37537
+ var _iterator = _createForOfIteratorHelper$7(loadedOptions),
37538
+ _step;
37539
+ try {
37540
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
37541
+ var group = _step.value;
37542
+ if (showTooltipGroup && group.items && group.items.some(function (item) {
37543
+ return item.value === selectedValue;
37544
+ })) {
37545
+ if (prevTextShowTooltip) return prevTextShowTooltip + ' ' + group.label;
37546
+ return group.label;
37547
+ }
37548
+ }
37549
+ } catch (err) {
37550
+ _iterator.e(err);
37551
+ } finally {
37552
+ _iterator.f();
37553
+ }
37554
+ return '';
37555
+ };
37556
+ useEffect(function () {
37557
+ if (optionSelected) setSelectedGroupLabel(getSelectedGroupLabel(optionSelected));
37558
+ }, [optionSelected, loadedOptions]);
37184
37559
  var handleChange = function handleChange(e) {
37560
+ if (readOnly) return;
37185
37561
  setOptionSelected(e.value);
37186
37562
  if (clickedFromList.current) {
37187
37563
  var _selected$optionLabel;
@@ -37192,69 +37568,92 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37192
37568
  setInputValue((_selected$optionLabel = selected === null || selected === void 0 ? void 0 : selected[optionLabel]) !== null && _selected$optionLabel !== void 0 ? _selected$optionLabel : '');
37193
37569
  }
37194
37570
  clickedFromList.current = false;
37195
- if (onChange) onChange(e.value);
37571
+ if (typeof onChange === 'function') {
37572
+ onChange(e.value);
37573
+ } else if (typeof onChange === 'string' && typeof window[onChange] === 'function') {
37574
+ window[onChange](e.value);
37575
+ }
37196
37576
  };
37197
37577
  var handleClear = function handleClear() {
37198
37578
  setOptionSelected(null);
37199
37579
  setInputValue('');
37200
- if (onChange) onChange(null);
37201
- options('', [], {
37580
+ if (typeof onChange === 'function') {
37581
+ onChange(null);
37582
+ } else if (typeof onChange === 'string' && typeof window[onChange] === 'function') {
37583
+ window[onChange](null);
37584
+ }
37585
+ searchTermRef.current = '';
37586
+ currentPageRef.current = 1;
37587
+ hasMoreRef.current = true;
37588
+ isLoadingRef.current = false;
37589
+ loadOptions('', [], {
37202
37590
  page: 1
37203
37591
  }).then(function (result) {
37204
- setLoadedOptions((result === null || result === void 0 ? void 0 : result.options) || []);
37592
+ hasMoreRef.current = (result === null || result === void 0 ? void 0 : result.hasMore) !== false;
37593
+ updateLoadedOptions((result === null || result === void 0 ? void 0 : result.options) || []);
37205
37594
  });
37206
37595
  };
37207
37596
  var handleInputChange = /*#__PURE__*/function () {
37208
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(e) {
37209
- var search, result, _result$options2, _result, filteredOptions;
37210
- return _regenerator().w(function (_context2) {
37211
- while (1) switch (_context2.n) {
37597
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(e) {
37598
+ var search, result, _result$options, _result, filteredOptions;
37599
+ return _regenerator().w(function (_context3) {
37600
+ while (1) switch (_context3.n) {
37212
37601
  case 0:
37213
37602
  search = e.target.value;
37214
37603
  setInputValue(search);
37604
+ if (typeof onSearch === 'function') onSearch(search);
37605
+ searchTermRef.current = search;
37606
+ currentPageRef.current = 1;
37607
+ hasMoreRef.current = true;
37608
+ isLoadingRef.current = false;
37215
37609
  if (search) {
37216
- _context2.n = 2;
37610
+ _context3.n = 2;
37217
37611
  break;
37218
37612
  }
37219
- _context2.n = 1;
37220
- return options('', [], {
37613
+ _context3.n = 1;
37614
+ return loadOptions('', [], {
37221
37615
  page: 1
37222
37616
  });
37223
37617
  case 1:
37224
- result = _context2.v;
37225
- setLoadedOptions((result === null || result === void 0 ? void 0 : result.options) || []);
37226
- _context2.n = 4;
37618
+ result = _context3.v;
37619
+ hasMoreRef.current = (result === null || result === void 0 ? void 0 : result.hasMore) !== false;
37620
+ updateLoadedOptions((result === null || result === void 0 ? void 0 : result.options) || []);
37621
+ _context3.n = 4;
37227
37622
  break;
37228
37623
  case 2:
37229
- _context2.n = 3;
37230
- return options(search, [], {
37624
+ _context3.n = 3;
37625
+ return loadOptions(search, [], {
37231
37626
  page: 1
37232
37627
  });
37233
37628
  case 3:
37234
- _result = _context2.v;
37235
- filteredOptions = (_result === null || _result === void 0 || (_result$options2 = _result.options) === null || _result$options2 === void 0 ? void 0 : _result$options2.filter(function (opt) {
37629
+ _result = _context3.v;
37630
+ hasMoreRef.current = (_result === null || _result === void 0 ? void 0 : _result.hasMore) !== false;
37631
+ filteredOptions = (_result === null || _result === void 0 || (_result$options = _result.options) === null || _result$options === void 0 ? void 0 : _result$options.filter(function (opt) {
37236
37632
  return opt[optionLabel].toLowerCase().includes(search.toLowerCase());
37237
37633
  })) || [];
37238
- setLoadedOptions(filteredOptions);
37634
+ updateLoadedOptions(filteredOptions);
37239
37635
  case 4:
37240
- return _context2.a(2);
37636
+ return _context3.a(2);
37241
37637
  }
37242
- }, _callee2);
37638
+ }, _callee3);
37243
37639
  }));
37244
37640
  return function handleInputChange(_x) {
37245
- return _ref4.apply(this, arguments);
37641
+ return _ref8.apply(this, arguments);
37246
37642
  };
37247
37643
  }();
37644
+ var handleMouseEnter = function handleMouseEnter() {
37645
+ var _dropdownComposantRef;
37646
+ if (!openOnHover || disabled || readOnly) return;
37647
+ (_dropdownComposantRef = dropdownComposantRef.current) === null || _dropdownComposantRef === void 0 || _dropdownComposantRef.show();
37648
+ };
37649
+ var handleMouseLeave = function handleMouseLeave() {
37650
+ var _dropdownComposantRef2;
37651
+ if (!openOnHover) return;
37652
+ (_dropdownComposantRef2 = dropdownComposantRef.current) === null || _dropdownComposantRef2 === void 0 || _dropdownComposantRef2.hide();
37653
+ };
37248
37654
  var selectedOption = loadedOptions.find(function (opt) {
37249
37655
  return opt[optionValue] === optionSelected;
37250
37656
  });
37251
- var inverseColor = function inverseColor(hexColor) {
37252
- var r = parseInt(hexColor.substr(1, 2), 16);
37253
- var g = parseInt(hexColor.substr(3, 2), 16);
37254
- var b = parseInt(hexColor.substr(5, 2), 16);
37255
- var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
37256
- return luminance > 0.18 ? '#000000' : '#FFFFFF';
37257
- };
37258
37657
  var valueTemplate = function valueTemplate() {
37259
37658
  if (isEditing) return null;
37260
37659
  if (!selectedOption) return /*#__PURE__*/React__default.createElement("span", {
@@ -37262,7 +37661,37 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37262
37661
  color: '#aaa'
37263
37662
  }
37264
37663
  }, placeholder);
37664
+ if (withIcon || withColor) {
37665
+ var _ref9 = selectConfig || {},
37666
+ labelStyle = _ref9.labelStyle,
37667
+ generalIcon = _ref9.generalIcon;
37668
+ return /*#__PURE__*/React__default.createElement("div", {
37669
+ style: _objectSpread2({
37670
+ display: 'flex',
37671
+ alignItems: 'center',
37672
+ gap: '8px',
37673
+ fontFamily: 'Arial',
37674
+ fontSize: '14px'
37675
+ }, valueStyle)
37676
+ }, withIcon && generalIcon && /*#__PURE__*/React__default.createElement("i", {
37677
+ style: {
37678
+ color: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color
37679
+ },
37680
+ className: generalIcon
37681
+ }), withColor && selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? /*#__PURE__*/React__default.createElement("span", {
37682
+ className: "dd-color-badge is-selected",
37683
+ style: {
37684
+ '--badge-color': selectedOption.color,
37685
+ color: inverseColor(selectedOption.color)
37686
+ }
37687
+ }, truncateLabel(selectedOption[optionLabel])) : /*#__PURE__*/React__default.createElement("span", {
37688
+ className: valueClassname,
37689
+ style: labelStyle
37690
+ }, truncateLabel(selectedOption[optionLabel])));
37691
+ }
37265
37692
  return /*#__PURE__*/React__default.createElement("span", {
37693
+ className: valueClassname,
37694
+ title: selectedOption[optionLabel],
37266
37695
  style: _objectSpread2({
37267
37696
  backgroundColor: selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color : '#FFFFFF',
37268
37697
  color: selectedOption !== null && selectedOption !== void 0 && selectedOption.color ? inverseColor(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.color) : '#FFFFFF',
@@ -37273,41 +37702,53 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37273
37702
  display: 'inline-block',
37274
37703
  fontFamily: 'Arial'
37275
37704
  }, valueStyle)
37276
- }, selectedOption[optionLabel]);
37705
+ }, truncateLabel(selectedOption[optionLabel]));
37277
37706
  };
37278
37707
 
37279
- // 🔹 Fonction de lazy loading (simulation d’un backend)
37708
+ // 🔹 Lazy loading paginé au scroll (même logique que MultiSelectMetaAsync)
37280
37709
  var onLazyLoad = function onLazyLoad(event) {
37281
37710
  setLoading(true);
37282
- if (loadLazyTimeout.current) {
37283
- clearTimeout(loadLazyTimeout.current);
37284
- }
37285
- loadLazyTimeout.current = setTimeout(function () {
37286
- var first = event.first,
37287
- last = event.last;
37288
- var _items = _toConsumableArray$a(loadedOptions);
37289
- for (var i = first; i < last; i++) {
37290
- if (!_items[i]) {
37291
- _items[i] = _defineProperty$g(_defineProperty$g({}, optionLabel, "Option #".concat(i)), optionValue, i);
37292
- }
37293
- }
37294
- setLoadedOptions(_items);
37295
- setLoading(false);
37296
- var virtualscroll1 = document.querySelector('.p-virtualscroller.p-dropdown-items-wrapper');
37297
- if (virtualscroll1) {
37298
- virtualscroll1.style.height = "auto";
37299
- }
37300
- var hiddenSelectDiv = document.querySelector('.p-hidden-accessible.p-dropdown-hidden-select');
37301
- if (hiddenSelectDiv) {
37302
- var nextEl = hiddenSelectDiv.nextElementSibling;
37303
- if (nextEl && nextEl.tagName === 'INPUT' && nextEl.value && nextEl.value.trim() !== '') {
37304
- var virtualscroll = document.querySelector('.p-virtualscroller.p-dropdown-items-wrapper');
37305
- if (virtualscroll) {
37306
- virtualscroll.style.height = 'auto';
37307
- }
37711
+ if (event.last < loadedOptionsRef.current.length - 1 || !hasMoreRef.current) {
37712
+ setTimeout(function () {
37713
+ return setLoading(false);
37714
+ }, 0);
37715
+ return;
37716
+ }
37717
+ if (isLoadingRef.current) return;
37718
+ isLoadingRef.current = true;
37719
+ if (loadLazyTimeout.current) clearTimeout(loadLazyTimeout.current);
37720
+ loadLazyTimeout.current = setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
37721
+ var nextPage, result, newOptions;
37722
+ return _regenerator().w(function (_context4) {
37723
+ while (1) switch (_context4.n) {
37724
+ case 0:
37725
+ nextPage = currentPageRef.current + 1;
37726
+ _context4.n = 1;
37727
+ return loadOptions(searchTermRef.current, [], {
37728
+ page: nextPage
37729
+ });
37730
+ case 1:
37731
+ result = _context4.v;
37732
+ newOptions = (result === null || result === void 0 ? void 0 : result.options) || [];
37733
+ if (!(newOptions.length === 0)) {
37734
+ _context4.n = 2;
37735
+ break;
37736
+ }
37737
+ hasMoreRef.current = false;
37738
+ isLoadingRef.current = false;
37739
+ setLoading(false);
37740
+ return _context4.a(2);
37741
+ case 2:
37742
+ updateLoadedOptions([].concat(_toConsumableArray$a(loadedOptionsRef.current), _toConsumableArray$a(newOptions)));
37743
+ hasMoreRef.current = (result === null || result === void 0 ? void 0 : result.hasMore) !== false;
37744
+ currentPageRef.current = nextPage;
37745
+ isLoadingRef.current = false;
37746
+ setLoading(false);
37747
+ case 3:
37748
+ return _context4.a(2);
37308
37749
  }
37309
- }
37310
- }, Math.random() * 1000 + 250);
37750
+ }, _callee4);
37751
+ })), 500);
37311
37752
  };
37312
37753
  useEffect(function () {
37313
37754
  var handleAnyClick = function handleAnyClick(e) {
@@ -37334,20 +37775,103 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37334
37775
  return document.removeEventListener('click', handleAnyClick);
37335
37776
  };
37336
37777
  }, []);
37337
- return /*#__PURE__*/React__default.createElement("div", {
37338
- ref: dropdownRef,
37339
- className: "flex flex-col gap-1",
37340
- onClick: isInvalidEffective || disabled ? null : function () {
37778
+
37779
+ // 🔹 Options calculées (réordonnancement + tri, comme Dropdown)
37780
+ var smartSort = function smartSort(opts, order, labelKey) {
37781
+ if (!order) return opts;
37782
+ var dir = order === 'desc' ? 1 : -1;
37783
+ return _toConsumableArray$a(opts).sort(function (a, b) {
37784
+ var _a$labelKey, _b$labelKey;
37785
+ var aLabel = String((_a$labelKey = a === null || a === void 0 ? void 0 : a[labelKey]) !== null && _a$labelKey !== void 0 ? _a$labelKey : '').trim();
37786
+ var bLabel = String((_b$labelKey = b === null || b === void 0 ? void 0 : b[labelKey]) !== null && _b$labelKey !== void 0 ? _b$labelKey : '').trim();
37787
+ return dir * aLabel.localeCompare(bLabel, 'fr', {
37788
+ sensitivity: 'base',
37789
+ numeric: true
37790
+ });
37791
+ });
37792
+ };
37793
+ var computedOptions = useMemo(function () {
37794
+ var opts = loadedOptions;
37795
+ if (itemsCheckedToTheTop && optionSelected) {
37796
+ var selected = opts.find(function (opt) {
37797
+ return (opt === null || opt === void 0 ? void 0 : opt[optionValue]) === optionSelected;
37798
+ });
37799
+ if (selected) {
37800
+ opts = [selected].concat(_toConsumableArray$a(opts.filter(function (opt) {
37801
+ return (opt === null || opt === void 0 ? void 0 : opt[optionValue]) !== optionSelected;
37802
+ })));
37803
+ }
37804
+ }
37805
+ if (enableSorting) {
37806
+ opts = smartSort(opts, sortOrder, optionLabel);
37807
+ }
37808
+ return opts;
37809
+ }, [loadedOptions, itemsCheckedToTheTop, optionSelected, enableSorting, sortOrder, optionValue, optionLabel]);
37810
+ var toggleSortOrder = function toggleSortOrder() {
37811
+ setSortOrder(function (prev) {
37812
+ if (prev === null) return 'desc';
37813
+ if (prev === 'desc') return 'asc';
37814
+ return null;
37815
+ });
37816
+ requestAnimationFrame(function () {
37817
+ var _dropdownComposantRef3;
37818
+ (_dropdownComposantRef3 = dropdownComposantRef.current) === null || _dropdownComposantRef3 === void 0 || _dropdownComposantRef3.show();
37819
+ });
37820
+ };
37821
+ var customFilterTemplate = function customFilterTemplate(opts) {
37822
+ if (!enableSorting) return opts.element;
37823
+ return /*#__PURE__*/React__default.createElement("div", {
37824
+ className: "dd-search-row"
37825
+ }, opts.element, /*#__PURE__*/React__default.createElement("button", {
37826
+ type: "button",
37827
+ className: "dd-sort-btn",
37828
+ onClick: function onClick(e) {
37829
+ e.stopPropagation();
37830
+ toggleSortOrder();
37831
+ }
37832
+ }, /*#__PURE__*/React__default.createElement("i", {
37833
+ className: sortOrder === 'desc' ? 'pi pi-sort-amount-down' : sortOrder === 'asc' ? 'pi pi-sort-amount-up-alt' : 'pi pi-sort-alt'
37834
+ })));
37835
+ };
37836
+ var mergedClassName = "flex flex-col gap-1 ".concat(attr["class"] || '').trim();
37837
+ attr["class"];
37838
+ var cleanAttr = _objectWithoutProperties$1(attr, _excluded2$2);
37839
+ return /*#__PURE__*/React__default.createElement("div", _extends$J({
37840
+ ref: dropdownRef
37841
+ }, cleanAttr, {
37842
+ className: mergedClassName,
37843
+ style: {
37844
+ width: '100%'
37845
+ },
37846
+ onMouseEnter: handleMouseEnter,
37847
+ onMouseLeave: handleMouseLeave,
37848
+ onClick: isInvalidEffective || disabled || readOnly ? null : function () {
37341
37849
  return setIsEditing(editable);
37342
37850
  }
37343
- }, /*#__PURE__*/React__default.createElement(Dropdown$1, {
37344
- options: loadedOptions,
37851
+ }), enableItemTooltip && /*#__PURE__*/React__default.createElement(Tooltip$1, {
37852
+ key: tooltipKey,
37853
+ target: ".dropdown-tooltip-item",
37854
+ appendTo: document.body,
37855
+ position: "right",
37856
+ style: {
37857
+ zIndex: 9999999
37858
+ }
37859
+ }), /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$J({
37860
+ ref: dropdownComposantRef,
37861
+ options: computedOptions,
37345
37862
  onChange: handleChange,
37863
+ onClick: function onClick(e) {
37864
+ if (readOnly) {
37865
+ e.preventDefault();
37866
+ e.stopPropagation();
37867
+ }
37868
+ },
37346
37869
  filter: filter,
37870
+ filterTemplate: filter ? customFilterTemplate : undefined,
37347
37871
  placeholder: placeholder === "" || placeholder === null ? ' ' : placeholder,
37348
37872
  optionLabel: optionLabel,
37349
37873
  optionValue: optionValue,
37350
- showClear: true,
37874
+ showClear: showClear,
37351
37875
  disabled: disabled,
37352
37876
  editable: isEditing,
37353
37877
  onFocus: function onFocus() {
@@ -37365,16 +37889,38 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37365
37889
  },
37366
37890
  dropdownMode: "current",
37367
37891
  itemTemplate: optionTemplate,
37368
- valueTemplate: valueTemplate,
37369
- virtualScrollerOptions: {
37892
+ valueTemplate: valueTemplate
37893
+ }, hasInfoLine && {
37894
+ panelFooterTemplate: panelFooterTemplate
37895
+ }, {
37896
+ optionGroupTemplate: isGroupedOption ? groupedItemTemplate : null
37897
+ }, isGroupedOption && computedOptions.length > 0 && Array.isArray((_computedOptions$ = computedOptions[0]) === null || _computedOptions$ === void 0 ? void 0 : _computedOptions$.items) && {
37898
+ optionGroupLabel: 'label',
37899
+ optionGroupChildren: 'items'
37900
+ }, {
37901
+ onShow: function onShow() {
37902
+ if (isGroupedOption && showTooltipGroup) setIsDropdownOpen(true);
37903
+ if (enableItemTooltip) setTooltipKey(function (k) {
37904
+ return k + 1;
37905
+ });
37906
+ },
37907
+ onHide: function onHide() {
37908
+ if (isGroupedOption && showTooltipGroup) setIsDropdownOpen(false);
37909
+ },
37910
+ emptyMessage: externalLoading ? 'Chargement…' : 'Aucune option disponible',
37911
+ virtualScrollerOptions: _objectSpread2({
37370
37912
  lazy: true,
37371
37913
  onLazyLoad: onLazyLoad,
37372
37914
  itemSize: 38,
37373
37915
  showLoader: true,
37374
- loading: loading,
37916
+ loading: loading || externalLoading,
37375
37917
  delay: 25
37376
- },
37377
- className: "w-full md:w-14rem"
37918
+ }, virtualScrollerOptions),
37919
+ className: "w-full"
37920
+ })), !isDropdownOpen && selectedGroupLabel && isGroupedOption && /*#__PURE__*/React__default.createElement(Tooltip$1, {
37921
+ target: ".p-dropdown-label.p-inputtext",
37922
+ content: selectedGroupLabel,
37923
+ position: "top"
37378
37924
  }), name && /*#__PURE__*/React__default.createElement("input", {
37379
37925
  type: "hidden",
37380
37926
  name: name,
@@ -37411,9 +37957,6 @@ var DropdownSelectMetaAsync = function DropdownSelectMetaAsync(_ref) {
37411
37957
  }, 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'))));
37412
37958
  };
37413
37959
 
37414
- 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}";
37415
- styleInject(css_248z$5);
37416
-
37417
37960
  var _excluded$2 = ["class"],
37418
37961
  _excluded2$1 = ["style", "className"];
37419
37962
  var Dropdown = function Dropdown(props) {
@@ -37519,10 +38062,11 @@ var Dropdown = function Dropdown(props) {
37519
38062
  _props$subItem = props.subItem,
37520
38063
  subItem = _props$subItem === void 0 ? false : _props$subItem,
37521
38064
  _props$required = props.required,
37522
- required = _props$required === void 0 ? false : _props$required;
38065
+ required = _props$required === void 0 ? false : _props$required,
38066
+ optionsUrl = props.optionsUrl;
37523
38067
 
37524
38068
  // --- Async delegation ---
37525
- var isAsyncOptions = typeof options === 'function';
38069
+ var isAsyncOptions = typeof options === 'function' || optionsUrl;
37526
38070
  if (isAsyncOptions) {
37527
38071
  return /*#__PURE__*/React__default.createElement(DropdownSelectMetaAsync, props);
37528
38072
  }
@@ -44436,24 +44980,118 @@ var createFakeOptions = function createFakeOptions(start, length) {
44436
44980
  }
44437
44981
  return options;
44438
44982
  };
44983
+ var mockPeople = [{
44984
+ label: 'Alice Martin',
44985
+ value: 1,
44986
+ color: '#ff9900',
44987
+ profession: 'Développeuse',
44988
+ tooltip: 'Alice Martin — Développeuse',
44989
+ link: 'https://example.com'
44990
+ }, {
44991
+ label: 'Bruno Lefèvre',
44992
+ value: 2,
44993
+ color: '#3b82f6',
44994
+ profession: 'Chef de projet',
44995
+ tooltip: 'Bruno Lefèvre — Chef de projet',
44996
+ link: 'https://example.com'
44997
+ }, {
44998
+ label: 'Chloé Dubois',
44999
+ value: 3,
45000
+ color: '#10b981',
45001
+ profession: 'Designer',
45002
+ tooltip: 'Chloé Dubois — Designer',
45003
+ link: 'https://example.com'
45004
+ }, {
45005
+ label: 'David Morel',
45006
+ value: 4,
45007
+ color: '#8b5cf6',
45008
+ profession: 'Data analyst',
45009
+ tooltip: 'David Morel — Data analyst',
45010
+ link: 'https://example.com'
45011
+ }, {
45012
+ label: 'Emma Roux',
45013
+ value: 5,
45014
+ color: '#ec4899',
45015
+ profession: 'Product owner',
45016
+ tooltip: 'Emma Roux — Product owner',
45017
+ link: 'https://example.com'
45018
+ }, {
45019
+ label: 'Farid Benali',
45020
+ value: 6,
45021
+ color: '#f59e0b',
45022
+ profession: 'DevOps',
45023
+ tooltip: 'Farid Benali — DevOps',
45024
+ link: 'https://example.com'
45025
+ }, {
45026
+ label: 'Gaëlle Simon',
45027
+ value: 7,
45028
+ color: '#ef4444',
45029
+ profession: 'QA engineer',
45030
+ tooltip: 'Gaëlle Simon — QA engineer',
45031
+ link: 'https://example.com'
45032
+ }, {
45033
+ label: 'Hugo Bernard',
45034
+ value: 8,
45035
+ color: '#10b981',
45036
+ profession: 'Développeur',
45037
+ tooltip: 'Hugo Bernard — Développeur',
45038
+ link: 'https://example.com'
45039
+ }];
45040
+ var asyncPeople = /*#__PURE__*/function () {
45041
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45042
+ var search,
45043
+ _ref2,
45044
+ _ref2$page,
45045
+ page,
45046
+ filtered,
45047
+ pageSize,
45048
+ start,
45049
+ _args = arguments;
45050
+ return _regenerator().w(function (_context) {
45051
+ while (1) switch (_context.n) {
45052
+ case 0:
45053
+ search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
45054
+ _ref2 = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref2$page = _ref2.page, page = _ref2$page === void 0 ? 1 : _ref2$page;
45055
+ _context.n = 1;
45056
+ return simulateNetworkDelay();
45057
+ case 1:
45058
+ filtered = search ? mockPeople.filter(function (opt) {
45059
+ return opt.label.toLowerCase().includes(search.toLowerCase());
45060
+ }) : mockPeople;
45061
+ pageSize = 30;
45062
+ start = (page - 1) * pageSize;
45063
+ return _context.a(2, {
45064
+ options: filtered.slice(start, start + pageSize),
45065
+ hasMore: start + pageSize < filtered.length,
45066
+ additional: {
45067
+ page: page + 1
45068
+ }
45069
+ });
45070
+ }
45071
+ }, _callee);
45072
+ }));
45073
+ return function asyncPeople() {
45074
+ return _ref.apply(this, arguments);
45075
+ };
45076
+ }();
44439
45077
  var DropdownSelectMetaAsyncPresets = {
44440
45078
  SelectMetaAsync: {
44441
45079
  options: function () {
44442
- var _options = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45080
+ var _options = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
44443
45081
  var search,
44444
- _ref,
45082
+ _ref3,
44445
45083
  page,
44446
45084
  allOptions,
44447
45085
  filtered,
44448
45086
  pageSize,
44449
45087
  start,
44450
- _args = arguments;
44451
- return _regenerator().w(function (_context) {
44452
- while (1) switch (_context.n) {
45088
+ _args2 = arguments;
45089
+ return _regenerator().w(function (_context2) {
45090
+ while (1) switch (_context2.n) {
44453
45091
  case 0:
44454
- search = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
44455
- _ref = _args.length > 2 ? _args[2] : undefined, page = _ref.page;
44456
- _context.n = 1;
45092
+ search = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : '';
45093
+ _ref3 = _args2.length > 2 ? _args2[2] : undefined, page = _ref3.page;
45094
+ _context2.n = 1;
44457
45095
  return simulateNetworkDelay();
44458
45096
  case 1:
44459
45097
  allOptions = createFakeOptions(0, 100);
@@ -44462,7 +45100,7 @@ var DropdownSelectMetaAsyncPresets = {
44462
45100
  });
44463
45101
  pageSize = 30;
44464
45102
  start = (page - 1) * pageSize;
44465
- return _context.a(2, {
45103
+ return _context2.a(2, {
44466
45104
  options: filtered.slice(start, start + pageSize),
44467
45105
  hasMore: start + pageSize < filtered.length,
44468
45106
  additional: {
@@ -44470,7 +45108,7 @@ var DropdownSelectMetaAsyncPresets = {
44470
45108
  }
44471
45109
  });
44472
45110
  }
44473
- }, _callee);
45111
+ }, _callee2);
44474
45112
  }));
44475
45113
  function options() {
44476
45114
  return _options.apply(this, arguments);
@@ -44492,6 +45130,141 @@ var DropdownSelectMetaAsyncPresets = {
44492
45130
  fontSize: '14px',
44493
45131
  fontFamily: 'Arial'
44494
45132
  }
45133
+ },
45134
+ Base: {
45135
+ options: asyncPeople,
45136
+ value: null,
45137
+ placeholder: 'Sélectionnez une option',
45138
+ editable: true,
45139
+ filter: false,
45140
+ showClear: true,
45141
+ valueStyle: {
45142
+ backgroundColor: 'transparent',
45143
+ color: 'inherit',
45144
+ padding: '0',
45145
+ borderRadius: '0',
45146
+ boxShadow: 'none',
45147
+ fontFamily: 'inherit'
45148
+ }
45149
+ },
45150
+ AsyncOptions: {
45151
+ options: asyncPeople,
45152
+ value: 3,
45153
+ placeholder: 'Sélectionnez une option',
45154
+ editable: true,
45155
+ showClear: true,
45156
+ selectMetaConfig: {
45157
+ labelStyle: {
45158
+ fontWeight: 'bold'
45159
+ },
45160
+ generalIcon: 'pi pi-tag'
45161
+ }
45162
+ },
45163
+ SearchAjaxLoading: {
45164
+ // En prod : optionsUrl: '/api/options' (pagination start/length, recherche search[value])
45165
+ options: asyncPeople,
45166
+ placeholder: 'Rechercher (Ajax)…',
45167
+ filter: true,
45168
+ showClear: true
45169
+ },
45170
+ Sorting: {
45171
+ options: asyncPeople,
45172
+ placeholder: 'Tri A→Z / Z→A',
45173
+ filter: true,
45174
+ enableSorting: true,
45175
+ showClear: true
45176
+ },
45177
+ ItemsCheckedToTheTop: {
45178
+ options: asyncPeople,
45179
+ value: 5,
45180
+ placeholder: 'Sélection remontée en haut',
45181
+ itemsCheckedToTheTop: true,
45182
+ showClear: true
45183
+ },
45184
+ OpenOnHover: {
45185
+ options: asyncPeople,
45186
+ placeholder: 'Ouverture au survol',
45187
+ openOnHover: true
45188
+ },
45189
+ ItemWithTooltip: {
45190
+ options: asyncPeople,
45191
+ placeholder: 'Tooltip sur les options',
45192
+ enableItemTooltip: true
45193
+ },
45194
+ ItemWithSecondaryLabel: {
45195
+ options: asyncPeople,
45196
+ placeholder: 'Label secondaire',
45197
+ enableSecondaryLabel: true,
45198
+ secondaryLabelKey: 'profession'
45199
+ },
45200
+ ItemWithLink: {
45201
+ options: asyncPeople,
45202
+ placeholder: 'Lien sur le label secondaire',
45203
+ enableSecondaryLabel: true,
45204
+ secondaryLabelKey: 'profession',
45205
+ enableItemLink: true
45206
+ },
45207
+ Badge: {
45208
+ options: asyncPeople,
45209
+ value: 2,
45210
+ placeholder: 'Badges colorés',
45211
+ withColor: true,
45212
+ selectConfig: {
45213
+ labelStyle: null,
45214
+ generalIcon: null
45215
+ }
45216
+ },
45217
+ WithIcon: {
45218
+ options: asyncPeople,
45219
+ value: 1,
45220
+ placeholder: 'Icône devant chaque option',
45221
+ withIcon: true,
45222
+ selectConfig: {
45223
+ labelStyle: {
45224
+ fontWeight: '400'
45225
+ },
45226
+ generalIcon: 'pi pi-user'
45227
+ }
45228
+ },
45229
+ Truncate: {
45230
+ options: asyncPeople,
45231
+ value: 2,
45232
+ placeholder: 'Label tronqué',
45233
+ truncateAt: 8,
45234
+ valueStyle: {
45235
+ backgroundColor: 'transparent',
45236
+ color: 'inherit',
45237
+ padding: '0',
45238
+ borderRadius: '0',
45239
+ boxShadow: 'none',
45240
+ fontFamily: 'inherit'
45241
+ }
45242
+ },
45243
+ ReadOnly: {
45244
+ options: asyncPeople,
45245
+ value: 4,
45246
+ readOnly: true,
45247
+ showClear: false
45248
+ },
45249
+ Disabled: {
45250
+ options: asyncPeople,
45251
+ value: 4,
45252
+ disabled: true
45253
+ },
45254
+ Required: {
45255
+ options: asyncPeople,
45256
+ value: null,
45257
+ placeholder: 'Sélection obligatoire',
45258
+ required: true,
45259
+ name: 'monchamp',
45260
+ status: 'error',
45261
+ errorMessage: 'Une option doit être sélectionnée'
45262
+ },
45263
+ InfoLine: {
45264
+ options: asyncPeople,
45265
+ placeholder: 'Avec pied de panel',
45266
+ hasInfoLine: true,
45267
+ InfoLineValue: '8 utilisateurs disponibles'
44495
45268
  }
44496
45269
  };
44497
45270