@coreui/react-pro 5.6.0 → 5.8.0

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 (757) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -3
  3. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -1
  4. package/dist/cjs/_virtual/index.js +8 -2
  5. package/dist/cjs/_virtual/index.js.map +1 -1
  6. package/dist/cjs/_virtual/index2.js +6 -0
  7. package/dist/cjs/_virtual/index2.js.map +1 -0
  8. package/dist/cjs/_virtual/lib.js +4 -2
  9. package/dist/cjs/_virtual/lib.js.map +1 -1
  10. package/dist/cjs/_virtual/lib2.js +6 -0
  11. package/dist/cjs/_virtual/lib2.js.map +1 -0
  12. package/dist/cjs/components/accordion/CAccordion.js +2 -2
  13. package/dist/cjs/components/accordion/CAccordion.js.map +1 -1
  14. package/dist/cjs/components/accordion/CAccordionBody.js +2 -2
  15. package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
  16. package/dist/cjs/components/accordion/CAccordionButton.js +2 -2
  17. package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
  18. package/dist/cjs/components/accordion/CAccordionHeader.js +2 -2
  19. package/dist/cjs/components/accordion/CAccordionHeader.js.map +1 -1
  20. package/dist/cjs/components/accordion/CAccordionItem.js +2 -2
  21. package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
  22. package/dist/cjs/components/alert/CAlert.js +3 -3
  23. package/dist/cjs/components/alert/CAlert.js.map +1 -1
  24. package/dist/cjs/components/alert/CAlertHeading.js +2 -2
  25. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  26. package/dist/cjs/components/alert/CAlertLink.js +2 -2
  27. package/dist/cjs/components/alert/CAlertLink.js.map +1 -1
  28. package/dist/cjs/components/avatar/CAvatar.js +2 -2
  29. package/dist/cjs/components/avatar/CAvatar.js.map +1 -1
  30. package/dist/cjs/components/backdrop/CBackdrop.js +3 -3
  31. package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
  32. package/dist/cjs/components/badge/CBadge.js +2 -2
  33. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  34. package/dist/cjs/components/breadcrumb/CBreadcrumb.js +2 -2
  35. package/dist/cjs/components/breadcrumb/CBreadcrumb.js.map +1 -1
  36. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js +2 -2
  37. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  38. package/dist/cjs/components/button/CButton.js +2 -2
  39. package/dist/cjs/components/button/CButton.js.map +1 -1
  40. package/dist/cjs/components/button-group/CButtonGroup.js +2 -2
  41. package/dist/cjs/components/button-group/CButtonGroup.js.map +1 -1
  42. package/dist/cjs/components/button-group/CButtonToolbar.js +2 -2
  43. package/dist/cjs/components/button-group/CButtonToolbar.js.map +1 -1
  44. package/dist/cjs/components/calendar/CCalendar.js +3 -3
  45. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  46. package/dist/cjs/components/calendar/utils.js +6 -1
  47. package/dist/cjs/components/calendar/utils.js.map +1 -1
  48. package/dist/cjs/components/callout/CCallout.js +2 -2
  49. package/dist/cjs/components/callout/CCallout.js.map +1 -1
  50. package/dist/cjs/components/card/CCard.js +2 -2
  51. package/dist/cjs/components/card/CCard.js.map +1 -1
  52. package/dist/cjs/components/card/CCardBody.js +2 -2
  53. package/dist/cjs/components/card/CCardBody.js.map +1 -1
  54. package/dist/cjs/components/card/CCardFooter.js +2 -2
  55. package/dist/cjs/components/card/CCardFooter.js.map +1 -1
  56. package/dist/cjs/components/card/CCardGroup.js +2 -2
  57. package/dist/cjs/components/card/CCardGroup.js.map +1 -1
  58. package/dist/cjs/components/card/CCardHeader.js +2 -2
  59. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  60. package/dist/cjs/components/card/CCardImage.js +2 -2
  61. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  62. package/dist/cjs/components/card/CCardImageOverlay.js +2 -2
  63. package/dist/cjs/components/card/CCardImageOverlay.js.map +1 -1
  64. package/dist/cjs/components/card/CCardLink.js +2 -2
  65. package/dist/cjs/components/card/CCardLink.js.map +1 -1
  66. package/dist/cjs/components/card/CCardSubtitle.js +2 -2
  67. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  68. package/dist/cjs/components/card/CCardText.js +2 -2
  69. package/dist/cjs/components/card/CCardText.js.map +1 -1
  70. package/dist/cjs/components/card/CCardTitle.js +2 -2
  71. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  72. package/dist/cjs/components/carousel/CCarousel.js +3 -3
  73. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  74. package/dist/cjs/components/carousel/CCarouselCaption.js +2 -2
  75. package/dist/cjs/components/carousel/CCarouselCaption.js.map +1 -1
  76. package/dist/cjs/components/carousel/CCarouselItem.js +3 -3
  77. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  78. package/dist/cjs/components/close-button/CCloseButton.js +2 -2
  79. package/dist/cjs/components/close-button/CCloseButton.js.map +1 -1
  80. package/dist/cjs/components/collapse/CCollapse.js +3 -3
  81. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  82. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  83. package/dist/cjs/components/date-picker/CDatePicker.js +1 -1
  84. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  85. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +14 -14
  86. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  87. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  88. package/dist/cjs/components/dropdown/CDropdown.js +4 -4
  89. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  90. package/dist/cjs/components/dropdown/CDropdownDivider.js +2 -2
  91. package/dist/cjs/components/dropdown/CDropdownDivider.js.map +1 -1
  92. package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
  93. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  94. package/dist/cjs/components/dropdown/CDropdownItem.js +2 -2
  95. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  96. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
  97. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  98. package/dist/cjs/components/dropdown/CDropdownMenu.js +3 -3
  99. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  100. package/dist/cjs/components/dropdown/CDropdownToggle.js +2 -2
  101. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  102. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  103. package/dist/cjs/components/element-cover/CElementCover.js +3 -3
  104. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  105. package/dist/cjs/components/footer/CFooter.js +2 -2
  106. package/dist/cjs/components/footer/CFooter.js.map +1 -1
  107. package/dist/cjs/components/form/CForm.js +2 -2
  108. package/dist/cjs/components/form/CForm.js.map +1 -1
  109. package/dist/cjs/components/form/CFormCheck.js +3 -3
  110. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  111. package/dist/cjs/components/form/CFormControlValidation.js +1 -1
  112. package/dist/cjs/components/form/CFormControlValidation.js.map +1 -1
  113. package/dist/cjs/components/form/CFormControlWrapper.js +1 -1
  114. package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
  115. package/dist/cjs/components/form/CFormFeedback.js +2 -2
  116. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  117. package/dist/cjs/components/form/CFormFloating.js +2 -2
  118. package/dist/cjs/components/form/CFormFloating.js.map +1 -1
  119. package/dist/cjs/components/form/CFormInput.js +2 -2
  120. package/dist/cjs/components/form/CFormInput.js.map +1 -1
  121. package/dist/cjs/components/form/CFormLabel.js +2 -2
  122. package/dist/cjs/components/form/CFormLabel.js.map +1 -1
  123. package/dist/cjs/components/form/CFormRange.js +2 -2
  124. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  125. package/dist/cjs/components/form/CFormSelect.js +2 -2
  126. package/dist/cjs/components/form/CFormSelect.js.map +1 -1
  127. package/dist/cjs/components/form/CFormSwitch.js +2 -2
  128. package/dist/cjs/components/form/CFormSwitch.js.map +1 -1
  129. package/dist/cjs/components/form/CFormText.js +2 -2
  130. package/dist/cjs/components/form/CFormText.js.map +1 -1
  131. package/dist/cjs/components/form/CFormTextarea.js +2 -2
  132. package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
  133. package/dist/cjs/components/form/CInputGroup.js +2 -2
  134. package/dist/cjs/components/form/CInputGroup.js.map +1 -1
  135. package/dist/cjs/components/form/CInputGroupText.js +2 -2
  136. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  137. package/dist/cjs/components/grid/CCol.js +2 -2
  138. package/dist/cjs/components/grid/CCol.js.map +1 -1
  139. package/dist/cjs/components/grid/CContainer.js +2 -2
  140. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  141. package/dist/cjs/components/grid/CRow.js +2 -2
  142. package/dist/cjs/components/grid/CRow.js.map +1 -1
  143. package/dist/cjs/components/header/CHeader.js +2 -2
  144. package/dist/cjs/components/header/CHeader.js.map +1 -1
  145. package/dist/cjs/components/header/CHeaderBrand.js +2 -2
  146. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  147. package/dist/cjs/components/header/CHeaderDivider.js +2 -2
  148. package/dist/cjs/components/header/CHeaderDivider.js.map +1 -1
  149. package/dist/cjs/components/header/CHeaderNav.js +2 -2
  150. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  151. package/dist/cjs/components/header/CHeaderText.js +2 -2
  152. package/dist/cjs/components/header/CHeaderText.js.map +1 -1
  153. package/dist/cjs/components/header/CHeaderToggler.js +2 -2
  154. package/dist/cjs/components/header/CHeaderToggler.js.map +1 -1
  155. package/dist/cjs/components/image/CImage.js +2 -2
  156. package/dist/cjs/components/image/CImage.js.map +1 -1
  157. package/dist/cjs/components/link/CLink.js +2 -2
  158. package/dist/cjs/components/link/CLink.js.map +1 -1
  159. package/dist/cjs/components/list-group/CListGroup.js +5 -4
  160. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  161. package/dist/cjs/components/list-group/CListGroupItem.js +2 -2
  162. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  163. package/dist/cjs/components/loading-button/CLoadingButton.js +2 -2
  164. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  165. package/dist/cjs/components/modal/CModal.js +3 -3
  166. package/dist/cjs/components/modal/CModal.js.map +1 -1
  167. package/dist/cjs/components/modal/CModalBody.js +2 -2
  168. package/dist/cjs/components/modal/CModalBody.js.map +1 -1
  169. package/dist/cjs/components/modal/CModalContent.js +2 -2
  170. package/dist/cjs/components/modal/CModalContent.js.map +1 -1
  171. package/dist/cjs/components/modal/CModalDialog.js +2 -2
  172. package/dist/cjs/components/modal/CModalDialog.js.map +1 -1
  173. package/dist/cjs/components/modal/CModalFooter.js +2 -2
  174. package/dist/cjs/components/modal/CModalFooter.js.map +1 -1
  175. package/dist/cjs/components/modal/CModalHeader.js +2 -2
  176. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  177. package/dist/cjs/components/modal/CModalTitle.js +2 -2
  178. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  179. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +26 -3
  180. package/dist/cjs/components/multi-select/CMultiSelect.js +108 -90
  181. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  182. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  183. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  184. package/dist/cjs/components/multi-select/CMultiSelectOptions.d.ts +1 -1
  185. package/dist/cjs/components/multi-select/CMultiSelectOptions.js +7 -7
  186. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  187. package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +3 -2
  188. package/dist/cjs/components/multi-select/CMultiSelectSelection.js +13 -4
  189. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  190. package/dist/cjs/components/multi-select/types.d.ts +4 -0
  191. package/dist/cjs/components/multi-select/utils.d.ts +5 -2
  192. package/dist/cjs/components/multi-select/utils.js +19 -2
  193. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  194. package/dist/cjs/components/nav/CNav.js +2 -2
  195. package/dist/cjs/components/nav/CNav.js.map +1 -1
  196. package/dist/cjs/components/nav/CNavGroup.js +3 -3
  197. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  198. package/dist/cjs/components/nav/CNavGroupItems.js +2 -2
  199. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  200. package/dist/cjs/components/nav/CNavItem.js +2 -2
  201. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  202. package/dist/cjs/components/nav/CNavLink.js +3 -3
  203. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  204. package/dist/cjs/components/nav/CNavTitle.js +2 -2
  205. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  206. package/dist/cjs/components/navbar/CNavbar.js +2 -2
  207. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  208. package/dist/cjs/components/navbar/CNavbarBrand.js +2 -2
  209. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  210. package/dist/cjs/components/navbar/CNavbarNav.js +2 -2
  211. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  212. package/dist/cjs/components/navbar/CNavbarText.js +2 -2
  213. package/dist/cjs/components/navbar/CNavbarText.js.map +1 -1
  214. package/dist/cjs/components/navbar/CNavbarToggler.js +2 -2
  215. package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
  216. package/dist/cjs/components/offcanvas/COffcanvas.js +3 -3
  217. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  218. package/dist/cjs/components/offcanvas/COffcanvasBody.js +2 -2
  219. package/dist/cjs/components/offcanvas/COffcanvasBody.js.map +1 -1
  220. package/dist/cjs/components/offcanvas/COffcanvasHeader.js +2 -2
  221. package/dist/cjs/components/offcanvas/COffcanvasHeader.js.map +1 -1
  222. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
  223. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  224. package/dist/cjs/components/pagination/CPagination.js +2 -2
  225. package/dist/cjs/components/pagination/CPagination.js.map +1 -1
  226. package/dist/cjs/components/pagination/CPaginationItem.js +2 -2
  227. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  228. package/dist/cjs/components/picker/CPicker.js +3 -2
  229. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  230. package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
  231. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  232. package/dist/cjs/components/popover/CPopover.js +51 -46
  233. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  234. package/dist/cjs/components/progress/CProgress.js +2 -2
  235. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  236. package/dist/cjs/components/progress/CProgressBar.js +2 -2
  237. package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
  238. package/dist/cjs/components/progress/CProgressStacked.js +2 -2
  239. package/dist/cjs/components/progress/CProgressStacked.js.map +1 -1
  240. package/dist/cjs/components/rating/CRating.js +2 -2
  241. package/dist/cjs/components/rating/CRating.js.map +1 -1
  242. package/dist/cjs/components/sidebar/CSidebar.js +3 -3
  243. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  244. package/dist/cjs/components/sidebar/CSidebarBrand.js +2 -2
  245. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  246. package/dist/cjs/components/sidebar/CSidebarFooter.js +2 -2
  247. package/dist/cjs/components/sidebar/CSidebarFooter.js.map +1 -1
  248. package/dist/cjs/components/sidebar/CSidebarHeader.js +2 -2
  249. package/dist/cjs/components/sidebar/CSidebarHeader.js.map +1 -1
  250. package/dist/cjs/components/sidebar/CSidebarNav.js +2 -2
  251. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  252. package/dist/cjs/components/sidebar/CSidebarToggler.js +2 -2
  253. package/dist/cjs/components/sidebar/CSidebarToggler.js.map +1 -1
  254. package/dist/cjs/components/smart-pagination/CSmartPagination.js +2 -2
  255. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  256. package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
  257. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  258. package/dist/cjs/components/smart-table/CSmartTableBody.js +1 -1
  259. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  260. package/dist/cjs/components/smart-table/CSmartTableHead.js +1 -1
  261. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  262. package/dist/cjs/components/smart-table/utils.js +1 -1
  263. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  264. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  265. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  266. package/dist/cjs/components/table/CTable.js +2 -2
  267. package/dist/cjs/components/table/CTable.js.map +1 -1
  268. package/dist/cjs/components/table/CTableBody.js +2 -2
  269. package/dist/cjs/components/table/CTableBody.js.map +1 -1
  270. package/dist/cjs/components/table/CTableCaption.js +1 -1
  271. package/dist/cjs/components/table/CTableCaption.js.map +1 -1
  272. package/dist/cjs/components/table/CTableDataCell.js +2 -2
  273. package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
  274. package/dist/cjs/components/table/CTableFoot.js +2 -2
  275. package/dist/cjs/components/table/CTableFoot.js.map +1 -1
  276. package/dist/cjs/components/table/CTableHead.js +2 -2
  277. package/dist/cjs/components/table/CTableHead.js.map +1 -1
  278. package/dist/cjs/components/table/CTableHeaderCell.js +2 -2
  279. package/dist/cjs/components/table/CTableHeaderCell.js.map +1 -1
  280. package/dist/cjs/components/table/CTableResponsiveWrapper.js +1 -1
  281. package/dist/cjs/components/table/CTableResponsiveWrapper.js.map +1 -1
  282. package/dist/cjs/components/table/CTableRow.js +2 -2
  283. package/dist/cjs/components/table/CTableRow.js.map +1 -1
  284. package/dist/cjs/components/table/utils.js.map +1 -1
  285. package/dist/cjs/components/tabs/CTab.js +2 -2
  286. package/dist/cjs/components/tabs/CTab.js.map +1 -1
  287. package/dist/cjs/components/tabs/CTabContent.js +2 -2
  288. package/dist/cjs/components/tabs/CTabContent.js.map +1 -1
  289. package/dist/cjs/components/tabs/CTabList.js +3 -3
  290. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  291. package/dist/cjs/components/tabs/CTabPane.js +3 -3
  292. package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
  293. package/dist/cjs/components/tabs/CTabPanel.js +3 -3
  294. package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
  295. package/dist/cjs/components/tabs/CTabs.js +1 -1
  296. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  297. package/dist/cjs/components/time-picker/CTimePicker.js +2 -2
  298. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  299. package/dist/cjs/components/time-picker/CTimePickerRollCol.js +3 -2
  300. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  301. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  302. package/dist/cjs/components/toast/CToast.js +3 -3
  303. package/dist/cjs/components/toast/CToast.js.map +1 -1
  304. package/dist/cjs/components/toast/CToastBody.js +2 -2
  305. package/dist/cjs/components/toast/CToastBody.js.map +1 -1
  306. package/dist/cjs/components/toast/CToastClose.js +1 -1
  307. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  308. package/dist/cjs/components/toast/CToastHeader.js +2 -2
  309. package/dist/cjs/components/toast/CToastHeader.js.map +1 -1
  310. package/dist/cjs/components/toast/CToaster.js +2 -2
  311. package/dist/cjs/components/toast/CToaster.js.map +1 -1
  312. package/dist/cjs/components/tooltip/CTooltip.js +51 -46
  313. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  314. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js +7 -7
  315. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  316. package/dist/cjs/components/widgets/CWidgetStatsA.js +2 -2
  317. package/dist/cjs/components/widgets/CWidgetStatsA.js.map +1 -1
  318. package/dist/cjs/components/widgets/CWidgetStatsB.js +1 -1
  319. package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
  320. package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -2
  321. package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
  322. package/dist/cjs/components/widgets/CWidgetStatsD.js +2 -2
  323. package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
  324. package/dist/cjs/components/widgets/CWidgetStatsE.js +2 -2
  325. package/dist/cjs/components/widgets/CWidgetStatsE.js.map +1 -1
  326. package/dist/cjs/components/widgets/CWidgetStatsF.js +1 -1
  327. package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
  328. package/dist/cjs/hooks/index.d.ts +2 -1
  329. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  330. package/dist/cjs/hooks/useDebounce.js.map +1 -1
  331. package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
  332. package/dist/cjs/hooks/useDropdownWithPopper.d.ts +10 -0
  333. package/dist/cjs/hooks/useDropdownWithPopper.js +98 -0
  334. package/dist/cjs/hooks/useDropdownWithPopper.js.map +1 -0
  335. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  336. package/dist/cjs/hooks/useIsVisible.js.map +1 -1
  337. package/dist/cjs/hooks/usePopper.js.map +1 -1
  338. package/dist/cjs/hooks/useStateWithCallback.js.map +1 -1
  339. package/dist/cjs/index.js +2 -0
  340. package/dist/cjs/index.js.map +1 -1
  341. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
  342. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js.map +1 -1
  343. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  344. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
  345. package/dist/cjs/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
  346. package/dist/cjs/node_modules/classnames/index.js +61 -60
  347. package/dist/cjs/node_modules/classnames/index.js.map +1 -1
  348. package/dist/cjs/node_modules/dom-helpers/esm/addClass.js.map +1 -1
  349. package/dist/cjs/node_modules/dom-helpers/esm/hasClass.js.map +1 -1
  350. package/dist/cjs/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
  351. package/dist/cjs/node_modules/react-device-detect/dist/lib.js +1092 -1087
  352. package/dist/cjs/node_modules/react-device-detect/dist/lib.js.map +1 -1
  353. package/dist/cjs/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
  354. package/dist/cjs/node_modules/react-transition-group/esm/Transition.js.map +1 -1
  355. package/dist/cjs/node_modules/react-transition-group/esm/config.js.map +1 -1
  356. package/dist/cjs/node_modules/react-transition-group/esm/utils/PropTypes.js.map +1 -1
  357. package/dist/cjs/node_modules/react-transition-group/esm/utils/reflow.js.map +1 -1
  358. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js +12 -7
  359. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  360. package/dist/cjs/{node_modules → packages/coreui-react-pro/node_modules}/tslib/tslib.es6.js +1 -1
  361. package/dist/cjs/packages/coreui-react-pro/node_modules/tslib/tslib.es6.js.map +1 -0
  362. package/dist/cjs/props.js.map +1 -1
  363. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  364. package/dist/cjs/utils/getNextActiveElement.js +1 -1
  365. package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
  366. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  367. package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
  368. package/dist/cjs/utils/isInViewport.js.map +1 -1
  369. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  370. package/dist/cjs/utils/isRTL.js.map +1 -1
  371. package/dist/esm/_virtual/_commonjsHelpers.js +1 -3
  372. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -1
  373. package/dist/esm/_virtual/index.js +6 -2
  374. package/dist/esm/_virtual/index.js.map +1 -1
  375. package/dist/esm/_virtual/index2.js +4 -0
  376. package/dist/esm/_virtual/index2.js.map +1 -0
  377. package/dist/esm/_virtual/lib.js +4 -2
  378. package/dist/esm/_virtual/lib.js.map +1 -1
  379. package/dist/esm/_virtual/lib2.js +4 -0
  380. package/dist/esm/_virtual/lib2.js.map +1 -0
  381. package/dist/esm/components/accordion/CAccordion.js +2 -2
  382. package/dist/esm/components/accordion/CAccordion.js.map +1 -1
  383. package/dist/esm/components/accordion/CAccordionBody.js +2 -2
  384. package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
  385. package/dist/esm/components/accordion/CAccordionButton.js +2 -2
  386. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  387. package/dist/esm/components/accordion/CAccordionHeader.js +2 -2
  388. package/dist/esm/components/accordion/CAccordionHeader.js.map +1 -1
  389. package/dist/esm/components/accordion/CAccordionItem.js +2 -2
  390. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  391. package/dist/esm/components/alert/CAlert.js +3 -3
  392. package/dist/esm/components/alert/CAlert.js.map +1 -1
  393. package/dist/esm/components/alert/CAlertHeading.js +2 -2
  394. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  395. package/dist/esm/components/alert/CAlertLink.js +2 -2
  396. package/dist/esm/components/alert/CAlertLink.js.map +1 -1
  397. package/dist/esm/components/avatar/CAvatar.js +2 -2
  398. package/dist/esm/components/avatar/CAvatar.js.map +1 -1
  399. package/dist/esm/components/backdrop/CBackdrop.js +3 -3
  400. package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
  401. package/dist/esm/components/badge/CBadge.js +2 -2
  402. package/dist/esm/components/badge/CBadge.js.map +1 -1
  403. package/dist/esm/components/breadcrumb/CBreadcrumb.js +2 -2
  404. package/dist/esm/components/breadcrumb/CBreadcrumb.js.map +1 -1
  405. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js +2 -2
  406. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  407. package/dist/esm/components/button/CButton.js +2 -2
  408. package/dist/esm/components/button/CButton.js.map +1 -1
  409. package/dist/esm/components/button-group/CButtonGroup.js +2 -2
  410. package/dist/esm/components/button-group/CButtonGroup.js.map +1 -1
  411. package/dist/esm/components/button-group/CButtonToolbar.js +2 -2
  412. package/dist/esm/components/button-group/CButtonToolbar.js.map +1 -1
  413. package/dist/esm/components/calendar/CCalendar.js +3 -3
  414. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  415. package/dist/esm/components/calendar/utils.js +6 -1
  416. package/dist/esm/components/calendar/utils.js.map +1 -1
  417. package/dist/esm/components/callout/CCallout.js +2 -2
  418. package/dist/esm/components/callout/CCallout.js.map +1 -1
  419. package/dist/esm/components/card/CCard.js +2 -2
  420. package/dist/esm/components/card/CCard.js.map +1 -1
  421. package/dist/esm/components/card/CCardBody.js +2 -2
  422. package/dist/esm/components/card/CCardBody.js.map +1 -1
  423. package/dist/esm/components/card/CCardFooter.js +2 -2
  424. package/dist/esm/components/card/CCardFooter.js.map +1 -1
  425. package/dist/esm/components/card/CCardGroup.js +2 -2
  426. package/dist/esm/components/card/CCardGroup.js.map +1 -1
  427. package/dist/esm/components/card/CCardHeader.js +2 -2
  428. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  429. package/dist/esm/components/card/CCardImage.js +2 -2
  430. package/dist/esm/components/card/CCardImage.js.map +1 -1
  431. package/dist/esm/components/card/CCardImageOverlay.js +2 -2
  432. package/dist/esm/components/card/CCardImageOverlay.js.map +1 -1
  433. package/dist/esm/components/card/CCardLink.js +2 -2
  434. package/dist/esm/components/card/CCardLink.js.map +1 -1
  435. package/dist/esm/components/card/CCardSubtitle.js +2 -2
  436. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  437. package/dist/esm/components/card/CCardText.js +2 -2
  438. package/dist/esm/components/card/CCardText.js.map +1 -1
  439. package/dist/esm/components/card/CCardTitle.js +2 -2
  440. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  441. package/dist/esm/components/carousel/CCarousel.js +3 -3
  442. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  443. package/dist/esm/components/carousel/CCarouselCaption.js +2 -2
  444. package/dist/esm/components/carousel/CCarouselCaption.js.map +1 -1
  445. package/dist/esm/components/carousel/CCarouselItem.js +3 -3
  446. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  447. package/dist/esm/components/close-button/CCloseButton.js +2 -2
  448. package/dist/esm/components/close-button/CCloseButton.js.map +1 -1
  449. package/dist/esm/components/collapse/CCollapse.js +3 -3
  450. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  451. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  452. package/dist/esm/components/date-picker/CDatePicker.js +1 -1
  453. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  454. package/dist/esm/components/date-range-picker/CDateRangePicker.js +10 -10
  455. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  456. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  457. package/dist/esm/components/dropdown/CDropdown.js +4 -4
  458. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  459. package/dist/esm/components/dropdown/CDropdownDivider.js +2 -2
  460. package/dist/esm/components/dropdown/CDropdownDivider.js.map +1 -1
  461. package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
  462. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  463. package/dist/esm/components/dropdown/CDropdownItem.js +2 -2
  464. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  465. package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
  466. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  467. package/dist/esm/components/dropdown/CDropdownMenu.js +3 -3
  468. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  469. package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
  470. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  471. package/dist/esm/components/dropdown/utils.js.map +1 -1
  472. package/dist/esm/components/element-cover/CElementCover.js +3 -3
  473. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  474. package/dist/esm/components/footer/CFooter.js +2 -2
  475. package/dist/esm/components/footer/CFooter.js.map +1 -1
  476. package/dist/esm/components/form/CForm.js +2 -2
  477. package/dist/esm/components/form/CForm.js.map +1 -1
  478. package/dist/esm/components/form/CFormCheck.js +3 -3
  479. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  480. package/dist/esm/components/form/CFormControlValidation.js +1 -1
  481. package/dist/esm/components/form/CFormControlValidation.js.map +1 -1
  482. package/dist/esm/components/form/CFormControlWrapper.js +1 -1
  483. package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
  484. package/dist/esm/components/form/CFormFeedback.js +2 -2
  485. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  486. package/dist/esm/components/form/CFormFloating.js +2 -2
  487. package/dist/esm/components/form/CFormFloating.js.map +1 -1
  488. package/dist/esm/components/form/CFormInput.js +2 -2
  489. package/dist/esm/components/form/CFormInput.js.map +1 -1
  490. package/dist/esm/components/form/CFormLabel.js +2 -2
  491. package/dist/esm/components/form/CFormLabel.js.map +1 -1
  492. package/dist/esm/components/form/CFormRange.js +2 -2
  493. package/dist/esm/components/form/CFormRange.js.map +1 -1
  494. package/dist/esm/components/form/CFormSelect.js +2 -2
  495. package/dist/esm/components/form/CFormSelect.js.map +1 -1
  496. package/dist/esm/components/form/CFormSwitch.js +2 -2
  497. package/dist/esm/components/form/CFormSwitch.js.map +1 -1
  498. package/dist/esm/components/form/CFormText.js +2 -2
  499. package/dist/esm/components/form/CFormText.js.map +1 -1
  500. package/dist/esm/components/form/CFormTextarea.js +2 -2
  501. package/dist/esm/components/form/CFormTextarea.js.map +1 -1
  502. package/dist/esm/components/form/CInputGroup.js +2 -2
  503. package/dist/esm/components/form/CInputGroup.js.map +1 -1
  504. package/dist/esm/components/form/CInputGroupText.js +2 -2
  505. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  506. package/dist/esm/components/grid/CCol.js +2 -2
  507. package/dist/esm/components/grid/CCol.js.map +1 -1
  508. package/dist/esm/components/grid/CContainer.js +2 -2
  509. package/dist/esm/components/grid/CContainer.js.map +1 -1
  510. package/dist/esm/components/grid/CRow.js +2 -2
  511. package/dist/esm/components/grid/CRow.js.map +1 -1
  512. package/dist/esm/components/header/CHeader.js +2 -2
  513. package/dist/esm/components/header/CHeader.js.map +1 -1
  514. package/dist/esm/components/header/CHeaderBrand.js +2 -2
  515. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  516. package/dist/esm/components/header/CHeaderDivider.js +2 -2
  517. package/dist/esm/components/header/CHeaderDivider.js.map +1 -1
  518. package/dist/esm/components/header/CHeaderNav.js +2 -2
  519. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  520. package/dist/esm/components/header/CHeaderText.js +2 -2
  521. package/dist/esm/components/header/CHeaderText.js.map +1 -1
  522. package/dist/esm/components/header/CHeaderToggler.js +2 -2
  523. package/dist/esm/components/header/CHeaderToggler.js.map +1 -1
  524. package/dist/esm/components/image/CImage.js +2 -2
  525. package/dist/esm/components/image/CImage.js.map +1 -1
  526. package/dist/esm/components/link/CLink.js +2 -2
  527. package/dist/esm/components/link/CLink.js.map +1 -1
  528. package/dist/esm/components/list-group/CListGroup.js +5 -4
  529. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  530. package/dist/esm/components/list-group/CListGroupItem.js +2 -2
  531. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  532. package/dist/esm/components/loading-button/CLoadingButton.js +2 -2
  533. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  534. package/dist/esm/components/modal/CModal.js +3 -3
  535. package/dist/esm/components/modal/CModal.js.map +1 -1
  536. package/dist/esm/components/modal/CModalBody.js +2 -2
  537. package/dist/esm/components/modal/CModalBody.js.map +1 -1
  538. package/dist/esm/components/modal/CModalContent.js +2 -2
  539. package/dist/esm/components/modal/CModalContent.js.map +1 -1
  540. package/dist/esm/components/modal/CModalDialog.js +2 -2
  541. package/dist/esm/components/modal/CModalDialog.js.map +1 -1
  542. package/dist/esm/components/modal/CModalFooter.js +2 -2
  543. package/dist/esm/components/modal/CModalFooter.js.map +1 -1
  544. package/dist/esm/components/modal/CModalHeader.js +2 -2
  545. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  546. package/dist/esm/components/modal/CModalTitle.js +2 -2
  547. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  548. package/dist/esm/components/multi-select/CMultiSelect.d.ts +26 -3
  549. package/dist/esm/components/multi-select/CMultiSelect.js +110 -92
  550. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  551. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  552. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  553. package/dist/esm/components/multi-select/CMultiSelectOptions.d.ts +1 -1
  554. package/dist/esm/components/multi-select/CMultiSelectOptions.js +7 -7
  555. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  556. package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +3 -2
  557. package/dist/esm/components/multi-select/CMultiSelectSelection.js +13 -4
  558. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  559. package/dist/esm/components/multi-select/types.d.ts +4 -0
  560. package/dist/esm/components/multi-select/utils.d.ts +5 -2
  561. package/dist/esm/components/multi-select/utils.js +17 -3
  562. package/dist/esm/components/multi-select/utils.js.map +1 -1
  563. package/dist/esm/components/nav/CNav.js +2 -2
  564. package/dist/esm/components/nav/CNav.js.map +1 -1
  565. package/dist/esm/components/nav/CNavGroup.js +3 -3
  566. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  567. package/dist/esm/components/nav/CNavGroupItems.js +2 -2
  568. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  569. package/dist/esm/components/nav/CNavItem.js +2 -2
  570. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  571. package/dist/esm/components/nav/CNavLink.js +3 -3
  572. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  573. package/dist/esm/components/nav/CNavTitle.js +2 -2
  574. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  575. package/dist/esm/components/navbar/CNavbar.js +2 -2
  576. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  577. package/dist/esm/components/navbar/CNavbarBrand.js +2 -2
  578. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  579. package/dist/esm/components/navbar/CNavbarNav.js +2 -2
  580. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  581. package/dist/esm/components/navbar/CNavbarText.js +2 -2
  582. package/dist/esm/components/navbar/CNavbarText.js.map +1 -1
  583. package/dist/esm/components/navbar/CNavbarToggler.js +2 -2
  584. package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
  585. package/dist/esm/components/offcanvas/COffcanvas.js +3 -3
  586. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  587. package/dist/esm/components/offcanvas/COffcanvasBody.js +2 -2
  588. package/dist/esm/components/offcanvas/COffcanvasBody.js.map +1 -1
  589. package/dist/esm/components/offcanvas/COffcanvasHeader.js +2 -2
  590. package/dist/esm/components/offcanvas/COffcanvasHeader.js.map +1 -1
  591. package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
  592. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  593. package/dist/esm/components/pagination/CPagination.js +2 -2
  594. package/dist/esm/components/pagination/CPagination.js.map +1 -1
  595. package/dist/esm/components/pagination/CPaginationItem.js +2 -2
  596. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  597. package/dist/esm/components/picker/CPicker.js +3 -2
  598. package/dist/esm/components/picker/CPicker.js.map +1 -1
  599. package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
  600. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  601. package/dist/esm/components/popover/CPopover.js +52 -47
  602. package/dist/esm/components/popover/CPopover.js.map +1 -1
  603. package/dist/esm/components/progress/CProgress.js +2 -2
  604. package/dist/esm/components/progress/CProgress.js.map +1 -1
  605. package/dist/esm/components/progress/CProgressBar.js +2 -2
  606. package/dist/esm/components/progress/CProgressBar.js.map +1 -1
  607. package/dist/esm/components/progress/CProgressStacked.js +2 -2
  608. package/dist/esm/components/progress/CProgressStacked.js.map +1 -1
  609. package/dist/esm/components/rating/CRating.js +2 -2
  610. package/dist/esm/components/rating/CRating.js.map +1 -1
  611. package/dist/esm/components/sidebar/CSidebar.js +3 -3
  612. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  613. package/dist/esm/components/sidebar/CSidebarBrand.js +2 -2
  614. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  615. package/dist/esm/components/sidebar/CSidebarFooter.js +2 -2
  616. package/dist/esm/components/sidebar/CSidebarFooter.js.map +1 -1
  617. package/dist/esm/components/sidebar/CSidebarHeader.js +2 -2
  618. package/dist/esm/components/sidebar/CSidebarHeader.js.map +1 -1
  619. package/dist/esm/components/sidebar/CSidebarNav.js +2 -2
  620. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  621. package/dist/esm/components/sidebar/CSidebarToggler.js +2 -2
  622. package/dist/esm/components/sidebar/CSidebarToggler.js.map +1 -1
  623. package/dist/esm/components/smart-pagination/CSmartPagination.js +2 -2
  624. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  625. package/dist/esm/components/smart-table/CSmartTable.js +2 -2
  626. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  627. package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
  628. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  629. package/dist/esm/components/smart-table/CSmartTableHead.js +1 -1
  630. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  631. package/dist/esm/components/smart-table/utils.js +1 -1
  632. package/dist/esm/components/smart-table/utils.js.map +1 -1
  633. package/dist/esm/components/spinner/CSpinner.js +2 -2
  634. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  635. package/dist/esm/components/table/CTable.js +2 -2
  636. package/dist/esm/components/table/CTable.js.map +1 -1
  637. package/dist/esm/components/table/CTableBody.js +2 -2
  638. package/dist/esm/components/table/CTableBody.js.map +1 -1
  639. package/dist/esm/components/table/CTableCaption.js +1 -1
  640. package/dist/esm/components/table/CTableCaption.js.map +1 -1
  641. package/dist/esm/components/table/CTableDataCell.js +2 -2
  642. package/dist/esm/components/table/CTableDataCell.js.map +1 -1
  643. package/dist/esm/components/table/CTableFoot.js +2 -2
  644. package/dist/esm/components/table/CTableFoot.js.map +1 -1
  645. package/dist/esm/components/table/CTableHead.js +2 -2
  646. package/dist/esm/components/table/CTableHead.js.map +1 -1
  647. package/dist/esm/components/table/CTableHeaderCell.js +2 -2
  648. package/dist/esm/components/table/CTableHeaderCell.js.map +1 -1
  649. package/dist/esm/components/table/CTableResponsiveWrapper.js +1 -1
  650. package/dist/esm/components/table/CTableResponsiveWrapper.js.map +1 -1
  651. package/dist/esm/components/table/CTableRow.js +2 -2
  652. package/dist/esm/components/table/CTableRow.js.map +1 -1
  653. package/dist/esm/components/table/utils.js.map +1 -1
  654. package/dist/esm/components/tabs/CTab.js +2 -2
  655. package/dist/esm/components/tabs/CTab.js.map +1 -1
  656. package/dist/esm/components/tabs/CTabContent.js +2 -2
  657. package/dist/esm/components/tabs/CTabContent.js.map +1 -1
  658. package/dist/esm/components/tabs/CTabList.js +3 -3
  659. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  660. package/dist/esm/components/tabs/CTabPane.js +3 -3
  661. package/dist/esm/components/tabs/CTabPane.js.map +1 -1
  662. package/dist/esm/components/tabs/CTabPanel.js +3 -3
  663. package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
  664. package/dist/esm/components/tabs/CTabs.js +1 -1
  665. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  666. package/dist/esm/components/time-picker/CTimePicker.js +2 -2
  667. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  668. package/dist/esm/components/time-picker/CTimePickerRollCol.js +3 -2
  669. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  670. package/dist/esm/components/time-picker/utils.js.map +1 -1
  671. package/dist/esm/components/toast/CToast.js +3 -3
  672. package/dist/esm/components/toast/CToast.js.map +1 -1
  673. package/dist/esm/components/toast/CToastBody.js +2 -2
  674. package/dist/esm/components/toast/CToastBody.js.map +1 -1
  675. package/dist/esm/components/toast/CToastClose.js +1 -1
  676. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  677. package/dist/esm/components/toast/CToastHeader.js +2 -2
  678. package/dist/esm/components/toast/CToastHeader.js.map +1 -1
  679. package/dist/esm/components/toast/CToaster.js +2 -2
  680. package/dist/esm/components/toast/CToaster.js.map +1 -1
  681. package/dist/esm/components/tooltip/CTooltip.js +52 -47
  682. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  683. package/dist/esm/components/virtual-scroller/CVirtualScroller.js +7 -7
  684. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  685. package/dist/esm/components/widgets/CWidgetStatsA.js +2 -2
  686. package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
  687. package/dist/esm/components/widgets/CWidgetStatsB.js +1 -1
  688. package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
  689. package/dist/esm/components/widgets/CWidgetStatsC.js +2 -2
  690. package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
  691. package/dist/esm/components/widgets/CWidgetStatsD.js +2 -2
  692. package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
  693. package/dist/esm/components/widgets/CWidgetStatsE.js +2 -2
  694. package/dist/esm/components/widgets/CWidgetStatsE.js.map +1 -1
  695. package/dist/esm/components/widgets/CWidgetStatsF.js +1 -1
  696. package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
  697. package/dist/esm/hooks/index.d.ts +2 -1
  698. package/dist/esm/hooks/useColorModes.js.map +1 -1
  699. package/dist/esm/hooks/useDebounce.js.map +1 -1
  700. package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
  701. package/dist/esm/hooks/useDropdownWithPopper.d.ts +10 -0
  702. package/dist/esm/hooks/useDropdownWithPopper.js +96 -0
  703. package/dist/esm/hooks/useDropdownWithPopper.js.map +1 -0
  704. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  705. package/dist/esm/hooks/useIsVisible.js.map +1 -1
  706. package/dist/esm/hooks/usePopper.js.map +1 -1
  707. package/dist/esm/hooks/useStateWithCallback.js.map +1 -1
  708. package/dist/esm/index.js +1 -0
  709. package/dist/esm/index.js.map +1 -1
  710. package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
  711. package/dist/esm/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js.map +1 -1
  712. package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  713. package/dist/esm/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
  714. package/dist/esm/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
  715. package/dist/esm/node_modules/classnames/index.js +61 -58
  716. package/dist/esm/node_modules/classnames/index.js.map +1 -1
  717. package/dist/esm/node_modules/dom-helpers/esm/addClass.js.map +1 -1
  718. package/dist/esm/node_modules/dom-helpers/esm/hasClass.js.map +1 -1
  719. package/dist/esm/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
  720. package/dist/esm/node_modules/react-device-detect/dist/lib.js +1094 -1086
  721. package/dist/esm/node_modules/react-device-detect/dist/lib.js.map +1 -1
  722. package/dist/esm/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
  723. package/dist/esm/node_modules/react-transition-group/esm/Transition.js.map +1 -1
  724. package/dist/esm/node_modules/react-transition-group/esm/config.js.map +1 -1
  725. package/dist/esm/node_modules/react-transition-group/esm/utils/PropTypes.js.map +1 -1
  726. package/dist/esm/node_modules/react-transition-group/esm/utils/reflow.js.map +1 -1
  727. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js +12 -7
  728. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  729. package/dist/esm/{node_modules → packages/coreui-react-pro/node_modules}/tslib/tslib.es6.js +1 -1
  730. package/dist/esm/packages/coreui-react-pro/node_modules/tslib/tslib.es6.js.map +1 -0
  731. package/dist/esm/props.js.map +1 -1
  732. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  733. package/dist/esm/utils/getNextActiveElement.js +1 -1
  734. package/dist/esm/utils/getNextActiveElement.js.map +1 -1
  735. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  736. package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
  737. package/dist/esm/utils/isInViewport.js.map +1 -1
  738. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  739. package/dist/esm/utils/isRTL.js.map +1 -1
  740. package/package.json +12 -12
  741. package/src/components/calendar/utils.ts +6 -0
  742. package/src/components/date-range-picker/CDateRangePicker.tsx +8 -5
  743. package/src/components/list-group/CListGroup.tsx +2 -1
  744. package/src/components/multi-select/CMultiSelect.tsx +205 -116
  745. package/src/components/multi-select/CMultiSelectOptions.tsx +8 -5
  746. package/src/components/multi-select/CMultiSelectSelection.tsx +15 -4
  747. package/src/components/multi-select/types.ts +9 -0
  748. package/src/components/multi-select/utils.ts +26 -1
  749. package/src/components/nav/CNavGroup.tsx +1 -1
  750. package/src/components/popover/CPopover.tsx +65 -46
  751. package/src/components/smart-table/CSmartTable.tsx +2 -2
  752. package/src/components/tooltip/CTooltip.tsx +65 -46
  753. package/src/components/virtual-scroller/CVirtualScroller.tsx +3 -2
  754. package/src/hooks/index.ts +2 -0
  755. package/src/hooks/useDropdownWithPopper.ts +123 -0
  756. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +0 -1
  757. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  import React, {
2
- FormEvent,
3
2
  forwardRef,
4
3
  HTMLAttributes,
5
4
  ReactNode,
@@ -12,18 +11,25 @@ import React, {
12
11
  import classNames from 'classnames'
13
12
  import PropTypes from 'prop-types'
14
13
 
15
- import type { Placement } from '@popperjs/core'
16
-
17
14
  import { CFormControlWrapper, CFormControlWrapperProps } from '../form/CFormControlWrapper'
18
15
 
16
+ import { CConditionalPortal } from '../conditional-portal'
19
17
  import { CMultiSelectNativeSelect } from './CMultiSelectNativeSelect'
20
18
  import { CMultiSelectOptions } from './CMultiSelectOptions'
21
19
  import { CMultiSelectSelection } from './CMultiSelectSelection'
22
20
 
23
- import { useForkedRef, usePopper } from '../../hooks'
24
- import { isRTL } from '../../utils'
25
- import { createOption, filterOptionsList, flattenOptionsArray, selectOptions } from './utils'
26
- import type { Option, OptionsGroup, SelectedOption } from './types'
21
+ import { useDropdownWithPopper } from '../../hooks'
22
+ import { getNextActiveElement } from '../../utils'
23
+ import {
24
+ createOption,
25
+ filterOptionsList,
26
+ flattenOptionsArray,
27
+ getOptionsList,
28
+ isExternalSearch,
29
+ isGlobalSearch,
30
+ selectOptions,
31
+ } from './utils'
32
+ import type { Option, OptionsGroup, Search, SelectedOption } from './types'
27
33
 
28
34
  export interface CMultiSelectProps
29
35
  extends Omit<CFormControlWrapperProps, 'floatingClassName' | 'floatingLabel'>,
@@ -34,6 +40,12 @@ export interface CMultiSelectProps
34
40
  * @since 4.11.0
35
41
  */
36
42
  allowCreateOptions?: boolean
43
+ /**
44
+ * A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
45
+ *
46
+ * @since 5.8.0
47
+ */
48
+ ariaCleanerLabel?: string
37
49
  /**
38
50
  * A string of all className you want applied to the base component.
39
51
  */
@@ -48,6 +60,12 @@ export interface CMultiSelectProps
48
60
  * @since 4.11.0
49
61
  */
50
62
  clearSearchOnSelect?: boolean
63
+ /**
64
+ * Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
65
+ *
66
+ * @since 5.8.0
67
+ */
68
+ container?: DocumentFragment | Element | (() => DocumentFragment | Element | null) | null
51
69
  /**
52
70
  * Toggle the disabled state for the component.
53
71
  */
@@ -121,6 +139,12 @@ export interface CMultiSelectProps
121
139
  * Specifies a short hint that is visible in the search input.
122
140
  */
123
141
  placeholder?: string
142
+ /**
143
+ * Generates dropdown menu using createPortal.
144
+ *
145
+ * @since 5.8.0
146
+ */
147
+ portal?: boolean
124
148
  /**
125
149
  * When it is present, it indicates that the user must choose a value before submitting the form.
126
150
  */
@@ -132,9 +156,14 @@ export interface CMultiSelectProps
132
156
  */
133
157
  resetSelectionOnOptionsChange?: boolean
134
158
  /**
135
- * Enables search input element.
159
+ * The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
160
+ *
161
+ * - `true` : Enables the default search input element with standard behavior.
162
+ * - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
163
+ * - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
164
+ * - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
136
165
  */
137
- search?: boolean | 'external'
166
+ search?: Search
138
167
  /**
139
168
  * Sets the label for no results when filtering.
140
169
  */
@@ -181,9 +210,11 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
181
210
  (
182
211
  {
183
212
  allowCreateOptions,
213
+ ariaCleanerLabel = 'Clear all selections',
184
214
  className,
185
215
  cleaner = true,
186
216
  clearSearchOnSelect,
217
+ container,
187
218
  disabled,
188
219
  feedback,
189
220
  feedbackInvalid,
@@ -204,6 +235,7 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
204
235
  optionsTemplate,
205
236
  optionsGroupsTemplate,
206
237
  placeholder = 'Select...',
238
+ portal = false,
207
239
  required,
208
240
  resetSelectionOnOptionsChange = false,
209
241
  search = true,
@@ -223,35 +255,39 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
223
255
  },
224
256
  ref,
225
257
  ) => {
226
- const multiSelectRef = useRef<HTMLDivElement>(null)
227
- const multiSelectForkedRef = useForkedRef(ref, multiSelectRef)
228
-
229
- const dropdownRef = useRef<HTMLDivElement>(null)
258
+ const {
259
+ dropdownMenuElement,
260
+ dropdownRefElement,
261
+ isOpen,
262
+ closeDropdown,
263
+ openDropdown,
264
+ toggleDropdown,
265
+ updatePopper,
266
+ } = useDropdownWithPopper()
230
267
  const nativeSelectRef = useRef<HTMLSelectElement>(null)
231
- const togglerRef = useRef<HTMLDivElement>(null)
232
268
  const searchRef = useRef<HTMLInputElement>(null)
233
269
  const isInitialMount = useRef(true)
234
270
 
235
- const { popper, initPopper, destroyPopper } = usePopper()
236
-
237
- const [_options, setOptions] = useState<(Option | OptionsGroup)[]>(options)
238
- const [_visible, setVisible] = useState(visible)
239
271
  const [searchValue, setSearchValue] = useState('')
240
272
  const [selected, setSelected] = useState<SelectedOption[]>([])
241
273
  const [userOptions, setUserOptions] = useState<Option[]>([])
242
274
 
275
+ useEffect(() => {
276
+ console.log(selected)
277
+ }, [selected])
278
+
243
279
  const filteredOptions = useMemo(
244
280
  () =>
245
281
  flattenOptionsArray(
246
- search === 'external'
247
- ? [..._options, ...filterOptionsList(searchValue, userOptions)]
248
- : filterOptionsList(searchValue, [..._options, ...userOptions]),
282
+ isExternalSearch(search)
283
+ ? [...options, ...filterOptionsList(searchValue, userOptions)]
284
+ : filterOptionsList(searchValue, [...options, ...userOptions]),
249
285
  true,
250
286
  ),
251
- [_options, searchValue, userOptions],
287
+ [options, searchValue, userOptions],
252
288
  )
253
289
 
254
- const flattenedOptions = useMemo(() => flattenOptionsArray(options), [JSON.stringify(options)])
290
+ const flattenedOptions = useMemo(() => flattenOptionsArray(options), [options])
255
291
 
256
292
  const userOption = useMemo(() => {
257
293
  if (
@@ -266,27 +302,7 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
266
302
  return searchRef.current && createOption(String(searchValue), flattenedOptions)
267
303
  }, [filteredOptions, searchValue])
268
304
 
269
- const popperConfig = {
270
- placement: (isRTL(multiSelectRef.current) ? 'bottom-end' : 'bottom-start') as Placement,
271
- modifiers: [
272
- {
273
- name: 'preventOverflow',
274
- options: {
275
- boundary: 'clippingParents',
276
- },
277
- },
278
- {
279
- name: 'offset',
280
- options: {
281
- offset: [0, 2],
282
- },
283
- },
284
- ],
285
- }
286
-
287
305
  useEffect(() => {
288
- setOptions(options)
289
-
290
306
  if (resetSelectionOnOptionsChange) {
291
307
  return setSelected([])
292
308
  }
@@ -296,8 +312,10 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
296
312
  (option: Option) => option.selected === false,
297
313
  ) as Option[]
298
314
 
299
- _selected && setSelected(selectOptions(_selected, selected, deselected))
300
- }, [JSON.stringify(options)])
315
+ if (_selected.length > 0) {
316
+ setSelected(selectOptions(multiple, _selected, selected, deselected))
317
+ }
318
+ }, [flattenedOptions])
301
319
 
302
320
  useEffect(() => {
303
321
  !isInitialMount.current && onFilterChange && onFilterChange(searchValue)
@@ -308,63 +326,67 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
308
326
  nativeSelectRef.current.dispatchEvent(new Event('change', { bubbles: true }))
309
327
  }
310
328
 
311
- if (popper) {
312
- popper.update()
313
- }
329
+ updatePopper()
314
330
  }, [JSON.stringify(selected)])
315
331
 
316
332
  useEffect(() => {
317
- if (_visible) {
318
- onShow && onShow()
333
+ visible ? openDropdown() : closeDropdown()
334
+ }, [visible])
319
335
 
320
- window.addEventListener('mouseup', handleMouseUp)
321
- window.addEventListener('keyup', handleKeyUp)
336
+ useEffect(() => {
337
+ if (isOpen) {
338
+ if (onShow) onShow()
339
+
340
+ if (portal && dropdownMenuElement.current && dropdownRefElement.current) {
341
+ dropdownMenuElement.current.style.minWidth = `${(dropdownRefElement.current as HTMLElement).offsetWidth}px`
342
+ }
322
343
 
323
- togglerRef.current &&
324
- dropdownRef.current &&
325
- initPopper(togglerRef.current, dropdownRef.current, popperConfig)
326
- searchRef.current && searchRef.current.focus()
344
+ searchRef.current?.focus()
327
345
  }
328
346
 
329
347
  return () => {
330
- onHide && onHide()
348
+ if (onHide) onHide()
331
349
 
332
350
  setSearchValue('')
333
351
  if (searchRef.current) {
334
352
  searchRef.current.value = ''
335
353
  }
336
-
337
- window.removeEventListener('mouseup', handleMouseUp)
338
- window.removeEventListener('keyup', handleKeyUp)
339
-
340
- destroyPopper()
341
354
  }
342
- }, [_visible])
355
+ }, [isOpen])
343
356
 
344
357
  useEffect(() => {
345
358
  isInitialMount.current = false
346
359
  }, [])
347
360
 
348
- const handleKeyUp = (event: KeyboardEvent) => {
349
- if (event.key === 'Escape') {
350
- setVisible(false)
351
- }
361
+ const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {
362
+ setSearchValue(event.target.value)
352
363
  }
353
364
 
354
- const handleMouseUp = (event: Event) => {
355
- if (multiSelectRef.current && multiSelectRef.current.contains(event.target as HTMLElement)) {
356
- return
365
+ const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
366
+ if (!isOpen) {
367
+ openDropdown()
357
368
  }
358
369
 
359
- setVisible(false)
360
- }
370
+ if (
371
+ event.key === 'ArrowDown' &&
372
+ dropdownMenuElement.current &&
373
+ searchRef.current &&
374
+ searchRef.current.value.length === searchRef.current.selectionStart
375
+ ) {
376
+ event.preventDefault()
361
377
 
362
- const handleSearchChange = (event: FormEvent<HTMLInputElement>) => {
363
- const value = (event.target as HTMLInputElement).value
364
- setSearchValue(value)
365
- }
378
+ const items = getOptionsList(dropdownMenuElement.current)
379
+ const target = event.target as HTMLDivElement
380
+
381
+ getNextActiveElement(
382
+ items,
383
+ target,
384
+ event.key === 'ArrowDown',
385
+ !items.includes(target),
386
+ ).focus()
387
+ return
388
+ }
366
389
 
367
- const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
368
390
  if (event.key === 'Enter' && searchValue && allowCreateOptions) {
369
391
  event.preventDefault()
370
392
 
@@ -396,14 +418,48 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
396
418
 
397
419
  if (event.key === 'Backspace' || event.key === 'Delete') {
398
420
  const last = selected.filter((option: Option) => !option.disabled).pop()
399
- last && setSelected(selected.filter((option: Option) => option.value !== last.value))
421
+
422
+ if (last) {
423
+ setSelected(selected.filter((option: Option) => option.value !== last.value))
424
+ }
425
+ }
426
+ }
427
+
428
+ const handleTogglerKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
429
+ if (!isOpen && (event.key === 'Enter' || event.key === 'ArrowDown')) {
430
+ event.preventDefault()
431
+ openDropdown()
432
+ return
433
+ }
434
+
435
+ if (isOpen && dropdownMenuElement.current && event.key === 'ArrowDown') {
436
+ event.preventDefault()
437
+ const items = getOptionsList(dropdownMenuElement.current)
438
+ const target = event.target as HTMLDivElement
439
+
440
+ getNextActiveElement(
441
+ items,
442
+ target,
443
+ event.key === 'ArrowDown',
444
+ !items.includes(target),
445
+ ).focus()
400
446
  }
401
447
  }
402
448
 
403
- const handleOptionOnClick = (option: Option) => {
449
+ const handleGlobalSearch = (event: React.KeyboardEvent<HTMLDivElement>) => {
450
+ if (
451
+ isGlobalSearch(search) &&
452
+ searchRef.current &&
453
+ (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete')
454
+ ) {
455
+ searchRef.current.focus()
456
+ }
457
+ }
458
+
459
+ const handleOnOptionClick = (option: Option) => {
404
460
  if (!multiple) {
405
461
  setSelected([option] as SelectedOption[])
406
- setVisible(false)
462
+ closeDropdown()
407
463
  setSearchValue('')
408
464
  if (searchRef.current) {
409
465
  searchRef.current.value = ''
@@ -434,6 +490,7 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
434
490
  const handleSelectAll = () => {
435
491
  setSelected(
436
492
  selectOptions(
493
+ multiple,
437
494
  [...flattenedOptions.filter((option: Option) => !option.disabled), ...userOptions],
438
495
  selected,
439
496
  ),
@@ -479,21 +536,25 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
479
536
  disabled,
480
537
  'is-invalid': invalid,
481
538
  'is-valid': valid,
482
- show: _visible,
539
+ show: isOpen,
483
540
  },
484
541
  className,
485
542
  )}
486
- aria-expanded={_visible}
487
- ref={multiSelectForkedRef}
543
+ onKeyDown={handleGlobalSearch}
544
+ aria-expanded={isOpen}
545
+ ref={ref}
488
546
  >
489
547
  <div
490
548
  className="form-multi-select-input-group"
491
- onClick={() => setVisible(true)}
492
- ref={togglerRef}
549
+ {...(!search && !disabled && { tabIndex: 0 })}
550
+ onClick={() => !disabled && openDropdown()}
551
+ onKeyDown={handleTogglerKeyDown}
552
+ ref={dropdownRefElement}
493
553
  >
494
554
  <CMultiSelectSelection
555
+ disabled={disabled}
495
556
  multiple={multiple}
496
- onRemove={(option) => !disabled && handleOptionOnClick(option)}
557
+ onRemove={(option) => !disabled && handleOnOptionClick(option)}
497
558
  placeholder={placeholder}
498
559
  search={search}
499
560
  selected={selected}
@@ -521,6 +582,9 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
521
582
  ref={searchRef}
522
583
  ></input>
523
584
  )}
585
+ {!search && selected.length === 0 && (
586
+ <span className="form-multi-select-placeholder">{placeholder}</span>
587
+ )}
524
588
  </CMultiSelectSelection>
525
589
  <div className="form-multi-select-buttons">
526
590
  {!disabled && cleaner && selected.length > 0 && (
@@ -528,6 +592,7 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
528
592
  type="button"
529
593
  className="form-multi-select-cleaner"
530
594
  onClick={() => handleDeselectAll()}
595
+ aria-label={ariaCleanerLabel}
531
596
  ></button>
532
597
  )}
533
598
  <button
@@ -536,39 +601,52 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
536
601
  onClick={(event) => {
537
602
  event.preventDefault()
538
603
  event.stopPropagation()
539
- setVisible(!_visible)
604
+
605
+ if (!disabled) {
606
+ toggleDropdown()
607
+ }
540
608
  }}
609
+ {...(disabled && { tabIndex: -1 })}
541
610
  ></button>
542
611
  </div>
543
612
  </div>
544
- <div className="form-multi-select-dropdown" role="menu" ref={dropdownRef}>
545
- {multiple && selectAll && (
546
- <button
547
- type="button"
548
- className="form-multi-select-all"
549
- onClick={() => handleSelectAll()}
550
- >
551
- {selectAllLabel}
552
- </button>
553
- )}
554
- <CMultiSelectOptions
555
- handleOptionOnClick={(option) => !disabled && handleOptionOnClick(option)}
556
- loading={loading}
557
- options={
558
- filteredOptions.length === 0 && allowCreateOptions
559
- ? userOption || []
560
- : filteredOptions
561
- }
562
- optionsMaxHeight={optionsMaxHeight}
563
- optionsStyle={optionsStyle}
564
- optionsTemplate={optionsTemplate}
565
- optionsGroupsTemplate={optionsGroupsTemplate}
566
- searchNoResultsLabel={searchNoResultsLabel}
567
- selected={selected}
568
- virtualScroller={virtualScroller}
569
- visibleItems={visibleItems}
570
- />
571
- </div>
613
+ <CConditionalPortal container={container} portal={portal}>
614
+ <div
615
+ className={classNames('form-multi-select-dropdown', {
616
+ show: portal && isOpen,
617
+ })}
618
+ onKeyDown={handleGlobalSearch}
619
+ role="menu"
620
+ ref={dropdownMenuElement}
621
+ >
622
+ {multiple && selectAll && (
623
+ <button
624
+ type="button"
625
+ className="form-multi-select-all"
626
+ onClick={() => handleSelectAll()}
627
+ >
628
+ {selectAllLabel}
629
+ </button>
630
+ )}
631
+ <CMultiSelectOptions
632
+ loading={loading}
633
+ onOptionOnClick={(option) => !disabled && handleOnOptionClick(option)}
634
+ options={
635
+ filteredOptions.length === 0 && allowCreateOptions
636
+ ? userOption || []
637
+ : filteredOptions
638
+ }
639
+ optionsMaxHeight={optionsMaxHeight}
640
+ optionsStyle={optionsStyle}
641
+ optionsTemplate={optionsTemplate}
642
+ optionsGroupsTemplate={optionsGroupsTemplate}
643
+ searchNoResultsLabel={searchNoResultsLabel}
644
+ selected={selected}
645
+ virtualScroller={virtualScroller}
646
+ visibleItems={visibleItems}
647
+ />
648
+ </div>
649
+ </CConditionalPortal>
572
650
  </div>
573
651
  </CFormControlWrapper>
574
652
  )
@@ -576,9 +654,12 @@ export const CMultiSelect = forwardRef<HTMLDivElement, CMultiSelectProps>(
576
654
  )
577
655
 
578
656
  CMultiSelect.propTypes = {
657
+ allowCreateOptions: PropTypes.bool,
658
+ ariaCleanerLabel: PropTypes.string,
579
659
  className: PropTypes.string,
580
660
  cleaner: PropTypes.bool,
581
661
  clearSearchOnSelect: PropTypes.bool,
662
+ container: PropTypes.any,
582
663
  disabled: PropTypes.bool,
583
664
  loading: PropTypes.bool,
584
665
  multiple: PropTypes.bool,
@@ -593,9 +674,17 @@ CMultiSelect.propTypes = {
593
674
  optionsTemplate: PropTypes.func,
594
675
  optionsGroupsTemplate: PropTypes.func,
595
676
  placeholder: PropTypes.string,
677
+ portal: PropTypes.bool,
596
678
  required: PropTypes.bool,
597
679
  resetSelectionOnOptionsChange: PropTypes.bool,
598
- search: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf<'external'>(['external'])]),
680
+ search: PropTypes.oneOfType([
681
+ PropTypes.bool,
682
+ PropTypes.oneOf<'external' | 'global'>(['external', 'global']),
683
+ PropTypes.shape({
684
+ external: PropTypes.bool.isRequired,
685
+ global: PropTypes.bool.isRequired,
686
+ }),
687
+ ]),
599
688
  searchNoResultsLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
600
689
  selectAll: PropTypes.bool,
601
690
  selectAllLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
@@ -9,8 +9,8 @@ import { getNextSibling, getPreviousSibling } from './utils'
9
9
  import type { Option, OptionsGroup } from './types'
10
10
 
11
11
  export interface CMultiSelectOptionsProps extends HTMLAttributes<HTMLDivElement> {
12
- handleOptionOnClick?: (option: Option) => void
13
12
  loading?: boolean
13
+ onOptionOnClick?: (option: Option) => void
14
14
  options: (Option | OptionsGroup)[]
15
15
  optionsMaxHeight?: number | string
16
16
  optionsStyle?: 'checkbox' | 'text'
@@ -25,8 +25,9 @@ export interface CMultiSelectOptionsProps extends HTMLAttributes<HTMLDivElement>
25
25
  export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOptionsProps>(
26
26
  (
27
27
  {
28
- handleOptionOnClick,
29
28
  loading,
29
+ onKeyDown,
30
+ onOptionOnClick,
30
31
  options,
31
32
  optionsMaxHeight,
32
33
  optionsStyle,
@@ -42,7 +43,7 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
42
43
  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, option: Option) => {
43
44
  if (event.code === 'Space' || event.key === 'Enter') {
44
45
  event.preventDefault()
45
- handleOptionOnClick && handleOptionOnClick(option)
46
+ onOptionOnClick && onOptionOnClick(option)
46
47
  }
47
48
 
48
49
  if (event.key === 'Down' || event.key === 'ArrowDown') {
@@ -73,7 +74,7 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
73
74
  disabled: option.disabled,
74
75
  })}
75
76
  key={index}
76
- onClick={() => handleOptionOnClick && handleOptionOnClick(option as Option)}
77
+ onClick={() => onOptionOnClick && onOptionOnClick(option as Option)}
77
78
  onKeyDown={(event) => handleKeyDown(event, option as Option)}
78
79
  tabIndex={0}
79
80
  >
@@ -94,6 +95,7 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
94
95
  {virtualScroller ? (
95
96
  <CVirtualScroller
96
97
  className="form-multi-select-options"
98
+ onKeyDown={onKeyDown}
97
99
  visibleItems={visibleItems}
98
100
  ref={ref}
99
101
  >
@@ -102,6 +104,7 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
102
104
  ) : (
103
105
  <div
104
106
  className="form-multi-select-options"
107
+ onKeyDown={onKeyDown}
105
108
  {...(optionsMaxHeight !== 'auto' && {
106
109
  style: { maxHeight: optionsMaxHeight, overflow: 'scroll' },
107
110
  })}
@@ -117,8 +120,8 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
117
120
  )
118
121
 
119
122
  CMultiSelectOptions.propTypes = {
120
- handleOptionOnClick: PropTypes.func,
121
123
  loading: PropTypes.bool,
124
+ onOptionOnClick: PropTypes.func,
122
125
  options: PropTypes.array.isRequired,
123
126
  optionsMaxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
124
127
  optionsStyle: PropTypes.oneOf(['checkbox', 'text']),
@@ -3,13 +3,14 @@ import React, { forwardRef, HTMLAttributes } from 'react'
3
3
  import classNames from 'classnames'
4
4
  import PropTypes from 'prop-types'
5
5
 
6
- import type { SelectedOption } from './types'
6
+ import type { Search, SelectedOption } from './types'
7
7
 
8
8
  export interface CMultiSelectSelectionProps extends HTMLAttributes<HTMLSpanElement> {
9
+ disabled?: boolean
9
10
  multiple?: boolean
10
11
  onRemove?: (option: SelectedOption) => void
11
12
  placeholder?: string
12
- search?: boolean | 'external'
13
+ search?: Search
13
14
  selected?: SelectedOption[]
14
15
  selectionType?: 'counter' | 'tags' | 'text'
15
16
  selectionTypeCounterText?: string
@@ -19,6 +20,7 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
19
20
  (
20
21
  {
21
22
  children,
23
+ disabled,
22
24
  multiple,
23
25
  placeholder,
24
26
  onRemove,
@@ -49,7 +51,7 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
49
51
  return (
50
52
  <span className="form-multi-select-tag" key={index}>
51
53
  {option.label}
52
- {!option.disabled && (
54
+ {!disabled && !option.disabled && (
53
55
  <button
54
56
  className="form-multi-select-tag-delete"
55
57
  type="button"
@@ -78,10 +80,19 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
78
80
  )
79
81
 
80
82
  CMultiSelectSelection.propTypes = {
83
+ children: PropTypes.node,
84
+ disabled: PropTypes.bool,
81
85
  multiple: PropTypes.bool,
82
86
  onRemove: PropTypes.func,
83
87
  placeholder: PropTypes.string,
84
- search: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf<'external'>(['external'])]),
88
+ search: PropTypes.oneOfType([
89
+ PropTypes.bool,
90
+ PropTypes.oneOf<'external' | 'global'>(['external', 'global']),
91
+ PropTypes.shape({
92
+ external: PropTypes.bool.isRequired,
93
+ global: PropTypes.bool.isRequired,
94
+ }),
95
+ ]),
85
96
  selected: PropTypes.array,
86
97
  selectionType: PropTypes.oneOf(['counter', 'tags', 'text']),
87
98
  selectionTypeCounterText: PropTypes.string,
@@ -13,6 +13,15 @@ export type OptionsGroup = {
13
13
  [key: string]: number | string | any
14
14
  }
15
15
 
16
+ export type Search =
17
+ | boolean
18
+ | 'external'
19
+ | 'global'
20
+ | {
21
+ external?: boolean
22
+ global?: boolean
23
+ }
24
+
16
25
  export type SelectedOption = {
17
26
  disabled?: boolean
18
27
  label: string