@coreui/react-pro 5.24.1 → 5.26.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 (416) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  3. package/dist/cjs/components/carousel/CCarousel.js +44 -33
  4. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  5. package/dist/cjs/components/carousel/CCarouselItem.js +19 -28
  6. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  7. package/dist/cjs/components/chip/CChip.d.ts +12 -0
  8. package/dist/cjs/components/chip/CChip.js +16 -63
  9. package/dist/cjs/components/chip/CChip.js.map +1 -1
  10. package/dist/cjs/components/chip/const.d.ts +1 -0
  11. package/dist/cjs/components/chip/const.js +8 -0
  12. package/dist/cjs/components/chip/const.js.map +1 -0
  13. package/dist/cjs/components/chip-set/CChipSet.d.ts +73 -0
  14. package/dist/cjs/components/chip-set/CChipSet.js +66 -0
  15. package/dist/cjs/components/chip-set/CChipSet.js.map +1 -0
  16. package/dist/cjs/components/chip-set/index.d.ts +2 -0
  17. package/dist/cjs/components/chip-set/useChipSet.d.ts +48 -0
  18. package/dist/cjs/components/chip-set/useChipSet.js +163 -0
  19. package/dist/cjs/components/chip-set/useChipSet.js.map +1 -0
  20. package/dist/cjs/components/chip-set/utils.d.ts +7 -0
  21. package/dist/cjs/components/chip-set/utils.js +18 -0
  22. package/dist/cjs/components/chip-set/utils.js.map +1 -0
  23. package/dist/cjs/components/collapse/CCollapse.js +14 -6
  24. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  25. package/dist/cjs/components/conditional-portal/CConditionalPortal.js +3 -1
  26. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  27. package/dist/cjs/components/date-picker/CDatePicker.d.ts +1 -1
  28. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  29. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +2 -0
  30. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  31. package/dist/cjs/components/dropdown/CDropdown.js +23 -30
  32. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  33. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  34. package/dist/cjs/components/form/CChipInput.d.ts +14 -2
  35. package/dist/cjs/components/form/CChipInput.js +77 -49
  36. package/dist/cjs/components/form/CChipInput.js.map +1 -1
  37. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  38. package/dist/cjs/components/form/CFormInput.js.map +1 -1
  39. package/dist/cjs/components/form/CFormSelect.js.map +1 -1
  40. package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
  41. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  42. package/dist/cjs/components/grid/CContainer.js +3 -1
  43. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  44. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  45. package/dist/cjs/components/index.d.ts +2 -0
  46. package/dist/cjs/components/link/CLink.js +4 -2
  47. package/dist/cjs/components/link/CLink.js.map +1 -1
  48. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  49. package/dist/cjs/components/modal/CModal.js +14 -2
  50. package/dist/cjs/components/modal/CModal.js.map +1 -1
  51. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +73 -1
  52. package/dist/cjs/components/multi-select/CMultiSelect.js +157 -18
  53. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  54. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  55. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  56. package/dist/cjs/components/multi-select/CMultiSelectOptions.d.ts +3 -0
  57. package/dist/cjs/components/multi-select/CMultiSelectOptions.js +45 -2
  58. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  59. package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +1 -0
  60. package/dist/cjs/components/multi-select/CMultiSelectSelection.js +4 -3
  61. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  62. package/dist/cjs/components/multi-select/types.d.ts +12 -0
  63. package/dist/cjs/components/multi-select/utils.js +1 -4
  64. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  65. package/dist/cjs/components/nav/CNav.js.map +1 -1
  66. package/dist/cjs/components/nav/CNavGroup.d.ts +13 -6
  67. package/dist/cjs/components/nav/CNavGroup.js +86 -23
  68. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  69. package/dist/cjs/components/nav/CNavGroupContext.d.ts +25 -0
  70. package/dist/cjs/components/nav/CNavGroupContext.js +13 -0
  71. package/dist/cjs/components/nav/CNavGroupContext.js.map +1 -0
  72. package/dist/cjs/components/nav/CNavLink.d.ts +1 -5
  73. package/dist/cjs/components/nav/CNavLink.js +21 -8
  74. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  75. package/dist/cjs/components/one-time-password-input/COneTimePassword.js +3 -3
  76. package/dist/cjs/components/one-time-password-input/COneTimePassword.js.map +1 -1
  77. package/dist/cjs/components/popover/CPopover.js +69 -24
  78. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  79. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  80. package/dist/cjs/components/rating/CRating.d.ts +1 -1
  81. package/dist/cjs/components/rating/CRating.js.map +1 -1
  82. package/dist/cjs/components/search-button/CSearchButton.d.ts +32 -0
  83. package/dist/cjs/components/search-button/CSearchButton.js +77 -0
  84. package/dist/cjs/components/search-button/CSearchButton.js.map +1 -0
  85. package/dist/cjs/components/search-button/index.d.ts +2 -0
  86. package/dist/cjs/components/search-button/types.d.ts +10 -0
  87. package/dist/cjs/components/search-button/utils.d.ts +11 -0
  88. package/dist/cjs/components/search-button/utils.js +115 -0
  89. package/dist/cjs/components/search-button/utils.js.map +1 -0
  90. package/dist/cjs/components/sidebar/CSidebar.js +40 -23
  91. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  92. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +12 -0
  93. package/dist/cjs/components/sidebar/CSidebarNav.js +12 -36
  94. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  95. package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
  96. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  97. package/dist/cjs/components/smart-table/CSmartTableInterface.d.ts +2 -2
  98. package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
  99. package/dist/cjs/components/table/types.d.ts +2 -1
  100. package/dist/cjs/components/table/utils.js +4 -4
  101. package/dist/cjs/components/table/utils.js.map +1 -1
  102. package/dist/cjs/components/tabs/CTabPanel.js +3 -1
  103. package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
  104. package/dist/cjs/components/time-picker/CTimePicker.d.ts +1 -1
  105. package/dist/cjs/components/time-picker/CTimePicker.js +1 -1
  106. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  107. package/dist/cjs/components/tooltip/CTooltip.js +69 -24
  108. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  109. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js +11 -8
  110. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  111. package/dist/cjs/helpers/polymorphicComponent.d.ts +1 -2
  112. package/dist/cjs/hooks/useDebouncedCallback.d.ts +1 -1
  113. package/dist/cjs/hooks/useDebouncedCallback.js +1 -1
  114. package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
  115. package/dist/cjs/hooks/useForkedRef.d.ts +1 -1
  116. package/dist/cjs/hooks/useForkedRef.js +6 -3
  117. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  118. package/dist/cjs/hooks/usePopper.js +8 -6
  119. package/dist/cjs/hooks/usePopper.js.map +1 -1
  120. package/dist/cjs/index.js +4 -0
  121. package/dist/cjs/index.js.map +1 -1
  122. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +1 -1
  123. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  124. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  125. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  126. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  127. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  128. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  129. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  130. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  131. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  132. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js +4 -4
  133. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  134. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  135. package/dist/cjs/utils/index.d.ts +2 -1
  136. package/dist/cjs/utils/swipe.d.ts +26 -0
  137. package/dist/cjs/utils/swipe.js +94 -0
  138. package/dist/cjs/utils/swipe.js.map +1 -0
  139. package/dist/esm/components/card/CCardImage.js.map +1 -1
  140. package/dist/esm/components/carousel/CCarousel.js +44 -33
  141. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  142. package/dist/esm/components/carousel/CCarouselItem.js +19 -28
  143. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  144. package/dist/esm/components/chip/CChip.d.ts +12 -0
  145. package/dist/esm/components/chip/CChip.js +16 -63
  146. package/dist/esm/components/chip/CChip.js.map +1 -1
  147. package/dist/esm/components/chip/const.d.ts +1 -0
  148. package/dist/esm/components/chip/const.js +6 -0
  149. package/dist/esm/components/chip/const.js.map +1 -0
  150. package/dist/esm/components/chip-set/CChipSet.d.ts +73 -0
  151. package/dist/esm/components/chip-set/CChipSet.js +64 -0
  152. package/dist/esm/components/chip-set/CChipSet.js.map +1 -0
  153. package/dist/esm/components/chip-set/index.d.ts +2 -0
  154. package/dist/esm/components/chip-set/useChipSet.d.ts +48 -0
  155. package/dist/esm/components/chip-set/useChipSet.js +161 -0
  156. package/dist/esm/components/chip-set/useChipSet.js.map +1 -0
  157. package/dist/esm/components/chip-set/utils.d.ts +7 -0
  158. package/dist/esm/components/chip-set/utils.js +16 -0
  159. package/dist/esm/components/chip-set/utils.js.map +1 -0
  160. package/dist/esm/components/collapse/CCollapse.js +14 -6
  161. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  162. package/dist/esm/components/conditional-portal/CConditionalPortal.js +3 -1
  163. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  164. package/dist/esm/components/date-picker/CDatePicker.d.ts +1 -1
  165. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  166. package/dist/esm/components/date-range-picker/CDateRangePicker.js +2 -0
  167. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  168. package/dist/esm/components/dropdown/CDropdown.js +23 -30
  169. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  170. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  171. package/dist/esm/components/form/CChipInput.d.ts +14 -2
  172. package/dist/esm/components/form/CChipInput.js +78 -50
  173. package/dist/esm/components/form/CChipInput.js.map +1 -1
  174. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  175. package/dist/esm/components/form/CFormInput.js.map +1 -1
  176. package/dist/esm/components/form/CFormSelect.js.map +1 -1
  177. package/dist/esm/components/form/CFormTextarea.js.map +1 -1
  178. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  179. package/dist/esm/components/grid/CContainer.js +3 -1
  180. package/dist/esm/components/grid/CContainer.js.map +1 -1
  181. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  182. package/dist/esm/components/index.d.ts +2 -0
  183. package/dist/esm/components/link/CLink.js +4 -2
  184. package/dist/esm/components/link/CLink.js.map +1 -1
  185. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  186. package/dist/esm/components/modal/CModal.js +14 -2
  187. package/dist/esm/components/modal/CModal.js.map +1 -1
  188. package/dist/esm/components/multi-select/CMultiSelect.d.ts +73 -1
  189. package/dist/esm/components/multi-select/CMultiSelect.js +158 -19
  190. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  191. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  192. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  193. package/dist/esm/components/multi-select/CMultiSelectOptions.d.ts +3 -0
  194. package/dist/esm/components/multi-select/CMultiSelectOptions.js +45 -2
  195. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  196. package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +1 -0
  197. package/dist/esm/components/multi-select/CMultiSelectSelection.js +4 -3
  198. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  199. package/dist/esm/components/multi-select/types.d.ts +12 -0
  200. package/dist/esm/components/multi-select/utils.js +1 -4
  201. package/dist/esm/components/multi-select/utils.js.map +1 -1
  202. package/dist/esm/components/nav/CNav.js.map +1 -1
  203. package/dist/esm/components/nav/CNavGroup.d.ts +13 -6
  204. package/dist/esm/components/nav/CNavGroup.js +87 -24
  205. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  206. package/dist/esm/components/nav/CNavGroupContext.d.ts +25 -0
  207. package/dist/esm/components/nav/CNavGroupContext.js +11 -0
  208. package/dist/esm/components/nav/CNavGroupContext.js.map +1 -0
  209. package/dist/esm/components/nav/CNavLink.d.ts +1 -5
  210. package/dist/esm/components/nav/CNavLink.js +21 -8
  211. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  212. package/dist/esm/components/one-time-password-input/COneTimePassword.js +3 -3
  213. package/dist/esm/components/one-time-password-input/COneTimePassword.js.map +1 -1
  214. package/dist/esm/components/popover/CPopover.js +69 -24
  215. package/dist/esm/components/popover/CPopover.js.map +1 -1
  216. package/dist/esm/components/progress/CProgress.js.map +1 -1
  217. package/dist/esm/components/rating/CRating.d.ts +1 -1
  218. package/dist/esm/components/rating/CRating.js.map +1 -1
  219. package/dist/esm/components/search-button/CSearchButton.d.ts +32 -0
  220. package/dist/esm/components/search-button/CSearchButton.js +75 -0
  221. package/dist/esm/components/search-button/CSearchButton.js.map +1 -0
  222. package/dist/esm/components/search-button/index.d.ts +2 -0
  223. package/dist/esm/components/search-button/types.d.ts +10 -0
  224. package/dist/esm/components/search-button/utils.d.ts +11 -0
  225. package/dist/esm/components/search-button/utils.js +104 -0
  226. package/dist/esm/components/search-button/utils.js.map +1 -0
  227. package/dist/esm/components/sidebar/CSidebar.js +40 -23
  228. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  229. package/dist/esm/components/sidebar/CSidebarNav.d.ts +12 -0
  230. package/dist/esm/components/sidebar/CSidebarNav.js +13 -37
  231. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  232. package/dist/esm/components/smart-table/CSmartTable.js +2 -2
  233. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  234. package/dist/esm/components/smart-table/CSmartTableInterface.d.ts +2 -2
  235. package/dist/esm/components/table/CTableDataCell.js.map +1 -1
  236. package/dist/esm/components/table/types.d.ts +2 -1
  237. package/dist/esm/components/table/utils.js +4 -4
  238. package/dist/esm/components/table/utils.js.map +1 -1
  239. package/dist/esm/components/tabs/CTabPanel.js +3 -1
  240. package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
  241. package/dist/esm/components/time-picker/CTimePicker.d.ts +1 -1
  242. package/dist/esm/components/time-picker/CTimePicker.js +1 -1
  243. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  244. package/dist/esm/components/tooltip/CTooltip.js +69 -24
  245. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  246. package/dist/esm/components/virtual-scroller/CVirtualScroller.js +11 -8
  247. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  248. package/dist/esm/helpers/polymorphicComponent.d.ts +1 -2
  249. package/dist/esm/hooks/useDebouncedCallback.d.ts +1 -1
  250. package/dist/esm/hooks/useDebouncedCallback.js +1 -1
  251. package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
  252. package/dist/esm/hooks/useForkedRef.d.ts +1 -1
  253. package/dist/esm/hooks/useForkedRef.js +6 -3
  254. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  255. package/dist/esm/hooks/usePopper.js +9 -7
  256. package/dist/esm/hooks/usePopper.js.map +1 -1
  257. package/dist/esm/index.js +2 -0
  258. package/dist/esm/index.js.map +1 -1
  259. package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +1 -1
  260. package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  261. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  262. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  263. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  264. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  265. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  266. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  267. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  268. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  269. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js +4 -4
  270. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  271. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  272. package/dist/esm/utils/index.d.ts +2 -1
  273. package/dist/esm/utils/swipe.d.ts +26 -0
  274. package/dist/esm/utils/swipe.js +90 -0
  275. package/dist/esm/utils/swipe.js.map +1 -0
  276. package/package.json +8 -6
  277. package/src/components/autocomplete/CAutocompleteOptions.tsx +1 -1
  278. package/src/components/autocomplete/__tests__/CAutocomplete.spec.tsx +18 -16
  279. package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.tsx +37 -28
  280. package/src/components/autocomplete/__tests__/__snapshots__/CAutocomplete.spec.tsx.snap +129 -0
  281. package/src/components/autocomplete/__tests__/__snapshots__/CAutocompleteOptions.spec.tsx.snap +36 -0
  282. package/src/components/calendar/__tests__/CCalendar.spec.tsx +40 -45
  283. package/src/components/calendar/__tests__/__snapshots__/CCalendar.spec.tsx.snap +99 -75
  284. package/src/components/calendar/__tests__/utils.spec.tsx +8 -18
  285. package/src/components/card/CCardImage.tsx +3 -2
  286. package/src/components/carousel/CCarousel.tsx +48 -51
  287. package/src/components/carousel/CCarouselContext.ts +1 -1
  288. package/src/components/carousel/CCarouselItem.tsx +25 -26
  289. package/src/components/carousel/__tests__/CCarousel.spec.tsx +47 -4
  290. package/src/components/carousel/__tests__/CCarouselItem.spec.tsx +37 -0
  291. package/src/components/chip/CChip.tsx +45 -78
  292. package/src/components/chip/__tests__/CChip.spec.tsx +26 -19
  293. package/src/components/chip/const.ts +3 -0
  294. package/src/components/chip-set/CChipSet.tsx +183 -0
  295. package/src/components/chip-set/__tests__/CChipSet.spec.tsx +215 -0
  296. package/src/components/chip-set/__tests__/__snapshots__/CChipSet.spec.tsx.snap +22 -0
  297. package/src/components/chip-set/index.ts +3 -0
  298. package/src/components/chip-set/useChipSet.ts +243 -0
  299. package/src/components/chip-set/utils.ts +19 -0
  300. package/src/components/collapse/CCollapse.tsx +18 -6
  301. package/src/components/conditional-portal/CConditionalPortal.tsx +4 -2
  302. package/src/components/date-picker/CDatePicker.tsx +12 -13
  303. package/src/components/date-picker/__tests__/CDatePicker.spec.tsx +1 -1
  304. package/src/components/date-picker/__tests__/__snapshots__/CDatePicker.spec.tsx.snap +12 -640
  305. package/src/components/date-range-picker/CDateRangePicker.tsx +2 -0
  306. package/src/components/date-range-picker/__tests__/CDateRangePicker.spec.tsx +1 -1
  307. package/src/components/date-range-picker/__tests__/__snapshots__/CDateRangePicker.spec.tsx.snap +21 -1259
  308. package/src/components/dropdown/CDropdown.tsx +29 -34
  309. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  310. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +56 -1
  311. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.tsx.snap +2 -2
  312. package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.tsx.snap +1 -1
  313. package/src/components/focus-trap/__tests__/CFocusTrap.spec.tsx +1 -1
  314. package/src/components/form/CChipInput.tsx +105 -67
  315. package/src/components/form/CFormCheck.tsx +1 -2
  316. package/src/components/form/CFormInput.tsx +1 -2
  317. package/src/components/form/CFormSelect.tsx +1 -2
  318. package/src/components/form/CFormTextarea.tsx +1 -2
  319. package/src/components/form/CInputGroupText.tsx +3 -2
  320. package/src/components/form/__tests__/CChipInput.spec.tsx +67 -1
  321. package/src/components/form/__tests__/CFormInput.spec.tsx +17 -20
  322. package/src/components/form/__tests__/__snapshots__/CChipInput.spec.tsx.snap +7 -0
  323. package/src/components/form/__tests__/__snapshots__/CFormInput.spec.tsx.snap +12 -3
  324. package/src/components/grid/CContainer.tsx +3 -1
  325. package/src/components/header/CHeaderBrand.tsx +3 -2
  326. package/src/components/index.ts +2 -0
  327. package/src/components/link/CLink.tsx +7 -4
  328. package/src/components/list-group/CListGroupItem.tsx +3 -2
  329. package/src/components/loading-button/__tests__/CLoadingButton.spec.tsx +1 -1
  330. package/src/components/loading-button/__tests__/__snapshots__/CLoadingButton.spec.tsx.snap +4 -4
  331. package/src/components/modal/CModal.tsx +19 -2
  332. package/src/components/modal/__tests__/CModal.spec.tsx +43 -0
  333. package/src/components/multi-select/CMultiSelect.tsx +341 -46
  334. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +1 -1
  335. package/src/components/multi-select/CMultiSelectOptions.tsx +74 -3
  336. package/src/components/multi-select/CMultiSelectSelection.tsx +5 -1
  337. package/src/components/multi-select/__tests__/CMultiSelect.spec.tsx +27 -69
  338. package/src/components/multi-select/__tests__/CMultiSelectNativeSelect.spec.tsx +4 -5
  339. package/src/components/multi-select/__tests__/CMultiSelectOptions.spec.tsx +4 -4
  340. package/src/components/multi-select/__tests__/CMultiSelectSelection.spec.tsx +7 -24
  341. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelect.spec.tsx.snap +108 -61
  342. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectNativeSelect.spec.tsx.snap +2 -4
  343. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectOptions.spec.tsx.snap +7 -0
  344. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelection.spec.tsx.snap +16 -9
  345. package/src/components/multi-select/types.ts +14 -0
  346. package/src/components/nav/CNav.tsx +3 -2
  347. package/src/components/nav/CNavGroup.tsx +196 -105
  348. package/src/components/nav/CNavGroupContext.ts +27 -0
  349. package/src/components/nav/CNavLink.tsx +26 -12
  350. package/src/components/nav/__tests__/CNavGroup.spec.tsx +207 -4
  351. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.tsx.snap +3 -1
  352. package/src/components/offcanvas/__tests__/COffcanvas.spec.tsx +1 -0
  353. package/src/components/one-time-password-input/COneTimePassword.tsx +10 -11
  354. package/src/components/picker/__tests__/CPicker.spec.tsx +1 -1
  355. package/src/components/picker/__tests__/__snapshots__/CPicker.spec.tsx.snap +2 -16
  356. package/src/components/popover/CPopover.tsx +71 -26
  357. package/src/components/popover/__tests__/CPopover.spec.tsx +85 -4
  358. package/src/components/progress/CProgress.tsx +1 -2
  359. package/src/components/rating/CRating.tsx +1 -0
  360. package/src/components/search-button/CSearchButton.tsx +195 -0
  361. package/src/components/search-button/__tests__/CSearchButton.spec.tsx +95 -0
  362. package/src/components/search-button/__tests__/__snapshots__/CSearchButton.spec.tsx.snap +87 -0
  363. package/src/components/search-button/index.ts +3 -0
  364. package/src/components/search-button/types.ts +10 -0
  365. package/src/components/search-button/utils.ts +140 -0
  366. package/src/components/sidebar/CSidebar.tsx +51 -26
  367. package/src/components/sidebar/CSidebarNav.tsx +39 -53
  368. package/src/components/sidebar/__tests__/CSidebar.spec.tsx +26 -0
  369. package/src/components/smart-table/CSmartTable.tsx +5 -4
  370. package/src/components/smart-table/CSmartTableInterface.tsx +2 -2
  371. package/src/components/smart-table/__tests__/CSmartTable.spec.tsx +3 -2
  372. package/src/components/smart-table/__tests__/__snapshots__/CSmartTable.spec.tsx.snap +7 -15
  373. package/src/components/stepper/__tests__/CStepper.spec.tsx +24 -21
  374. package/src/components/stepper/__tests__/__snapshots__/CStepper.spec.tsx.snap +295 -0
  375. package/src/components/table/CTableDataCell.tsx +2 -1
  376. package/src/components/table/types.ts +3 -1
  377. package/src/components/table/utils.ts +4 -4
  378. package/src/components/tabs/CTabPanel.tsx +3 -1
  379. package/src/components/tabs/CTabsContext.ts +1 -1
  380. package/src/components/tabs/__tests__/CTabContent.spec.tsx +1 -0
  381. package/src/components/tabs/__tests__/CTabPane.spec.tsx +1 -0
  382. package/src/components/time-picker/CTimePicker.tsx +6 -7
  383. package/src/components/time-picker/__tests__/CTimePicker.spec.tsx +10 -1
  384. package/src/components/time-picker/__tests__/__snapshots__/CTimePicker.spec.tsx.snap +599 -315
  385. package/src/components/tooltip/CTooltip.tsx +72 -27
  386. package/src/components/tooltip/__tests__/CTooltip.spec.tsx +102 -1
  387. package/src/components/virtual-scroller/CVirtualScroller.tsx +13 -14
  388. package/src/helpers/polymorphicComponent.ts +1 -1
  389. package/src/hooks/useColorModes.ts +2 -2
  390. package/src/hooks/useDebouncedCallback.ts +7 -4
  391. package/src/hooks/useForkedRef.ts +20 -15
  392. package/src/hooks/usePopper.ts +13 -9
  393. package/src/utils/__tests__/swipe.spec.ts +82 -0
  394. package/src/utils/executeAfterTransition.ts +1 -1
  395. package/src/utils/index.ts +2 -0
  396. package/src/utils/mergeClassNames.ts +1 -1
  397. package/src/utils/swipe.ts +114 -0
  398. package/dist/cjs/components/accordion/CAccordionCollapse.d.ts +0 -3
  399. package/dist/cjs/components/sidebar/CSidebarNavContext.d.ts +0 -5
  400. package/dist/cjs/components/sidebar/CSidebarNavContext.js +0 -8
  401. package/dist/cjs/components/sidebar/CSidebarNavContext.js.map +0 -1
  402. package/dist/esm/components/accordion/CAccordionCollapse.d.ts +0 -3
  403. package/dist/esm/components/sidebar/CSidebarNavContext.d.ts +0 -5
  404. package/dist/esm/components/sidebar/CSidebarNavContext.js +0 -6
  405. package/dist/esm/components/sidebar/CSidebarNavContext.js.map +0 -1
  406. package/src/components/accordion/CAccordionCollapse.tsx +0 -20
  407. package/src/components/accordion/__tests__/CAccordionCollapse.spec.tsx +0 -10
  408. package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.tsx.snap +0 -11
  409. package/src/components/button/__tests__/__snapshots__/CButtonClose.spec.tsx.snap +0 -26
  410. package/src/components/calendar/__tests__/CCalendar.accessibility.spec.tsx +0 -595
  411. package/src/components/calendar/__tests__/CCalendar.comprehensive.spec.tsx +0 -402
  412. package/src/components/calendar/__tests__/CCalendar.edge-cases.spec.tsx +0 -416
  413. package/src/components/calendar/__tests__/CCalendar.interactions.spec.tsx +0 -593
  414. package/src/components/header/CHeaderBrand.tsx~HEAD +0 -36
  415. package/src/components/sidebar/CSidebarNavContext.ts +0 -8
  416. /package/src/components/calendar/__tests__/{test-setup.ts → setup.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
1
+ import React, { forwardRef, HTMLAttributes, JSX, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
@@ -10,11 +10,14 @@ import type { Option, OptionsGroup } from './types'
10
10
 
11
11
  export interface CMultiSelectOptionsProps extends HTMLAttributes<HTMLDivElement> {
12
12
  loading?: boolean
13
+ onGroupOnClick?: (group: OptionsGroup) => void
13
14
  onOptionOnClick?: (option: Option) => void
14
15
  options: (Option | OptionsGroup)[]
15
16
  optionsMaxHeight?: number | string
16
17
  optionsStyle?: 'checkbox' | 'text'
17
18
  optionsTemplate?: (option: Option) => ReactNode
19
+ optionsGroupsSelectable?: boolean
20
+ optionsGroupsStyle?: 'checkbox' | 'text'
18
21
  optionsGroupsTemplate?: (option: OptionsGroup) => ReactNode
19
22
  searchNoResultsLabel?: string | ReactNode
20
23
  selected: Option[]
@@ -26,12 +29,15 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
26
29
  (
27
30
  {
28
31
  loading,
32
+ onGroupOnClick,
29
33
  onKeyDown,
30
34
  onOptionOnClick,
31
35
  options,
32
36
  optionsMaxHeight,
33
37
  optionsStyle,
34
38
  optionsTemplate,
39
+ optionsGroupsSelectable,
40
+ optionsGroupsStyle,
35
41
  optionsGroupsTemplate,
36
42
  searchNoResultsLabel,
37
43
  selected,
@@ -63,6 +69,44 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
63
69
  }
64
70
  }
65
71
 
72
+ const handleGroupKeyDown = (
73
+ event: React.KeyboardEvent<HTMLDivElement>,
74
+ group: OptionsGroup
75
+ ) => {
76
+ if (event.code === 'Space' || event.key === 'Enter') {
77
+ event.preventDefault()
78
+ onGroupOnClick?.(group)
79
+ return
80
+ }
81
+
82
+ if (event.key === 'Down' || event.key === 'ArrowDown') {
83
+ event.preventDefault()
84
+ const next = getNextSibling(event.target as HTMLElement, '.form-multi-select-option')
85
+
86
+ next && (next as HTMLElement).focus()
87
+ }
88
+
89
+ if (event.key === 'Up' || event.key === 'ArrowUp') {
90
+ event.preventDefault()
91
+ const prev = getPreviousSibling(event.target as HTMLElement, '.form-multi-select-option')
92
+
93
+ prev && (prev as HTMLElement).focus()
94
+ }
95
+ }
96
+
97
+ const getGroupCheckboxState = (group: OptionsGroup) => {
98
+ const groupOptions = (group.options ?? []).filter((option) => !option.disabled)
99
+ const selectedCount = groupOptions.filter((option) =>
100
+ selected.some((_option) => _option.value === option.value)
101
+ ).length
102
+
103
+ if (groupOptions.length > 0 && selectedCount >= groupOptions.length) {
104
+ return 'all'
105
+ }
106
+
107
+ return selectedCount === 0 ? 'none' : 'indeterminate'
108
+ }
109
+
66
110
  const createOptions = (options: (Option | OptionsGroup)[]): JSX.Element | JSX.Element[] =>
67
111
  options.length > 0 ? (
68
112
  options.map((option: Option | OptionsGroup, index: number) =>
@@ -84,13 +128,37 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
84
128
  {optionsTemplate ? optionsTemplate(option as Option) : option.label}
85
129
  </div>
86
130
  ) : (
87
- <div className="form-multi-select-optgroup-label" key={index}>
131
+ <div
132
+ className={classNames('form-multi-select-optgroup-label', {
133
+ 'form-multi-select-optgroup-label-with-checkbox':
134
+ optionsGroupsSelectable && optionsGroupsStyle === 'checkbox',
135
+ 'form-multi-selected':
136
+ optionsGroupsSelectable &&
137
+ optionsGroupsStyle === 'checkbox' &&
138
+ getGroupCheckboxState(option as OptionsGroup) === 'all',
139
+ 'form-multi-select-indeterminate':
140
+ optionsGroupsSelectable &&
141
+ optionsGroupsStyle === 'checkbox' &&
142
+ getGroupCheckboxState(option as OptionsGroup) === 'indeterminate',
143
+ })}
144
+ key={index}
145
+ {...(optionsGroupsSelectable &&
146
+ optionsGroupsStyle === 'checkbox' && {
147
+ onClick: () => onGroupOnClick?.(option as OptionsGroup),
148
+ onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) =>
149
+ handleGroupKeyDown(event, option as OptionsGroup),
150
+ tabIndex: 0,
151
+ role: 'button',
152
+ })}
153
+ >
88
154
  {optionsGroupsTemplate ? optionsGroupsTemplate(option as OptionsGroup) : option.label}
89
155
  </div>
90
156
  )
91
157
  )
92
158
  ) : (
93
- <div className="form-multi-select-options-empty">{searchNoResultsLabel}</div>
159
+ <div className="form-multi-select-options-empty" role="status">
160
+ {searchNoResultsLabel}
161
+ </div>
94
162
  )
95
163
 
96
164
  return (
@@ -124,11 +192,14 @@ export const CMultiSelectOptions = forwardRef<HTMLDivElement, CMultiSelectOption
124
192
 
125
193
  CMultiSelectOptions.propTypes = {
126
194
  loading: PropTypes.bool,
195
+ onGroupOnClick: PropTypes.func,
127
196
  onOptionOnClick: PropTypes.func,
128
197
  options: PropTypes.array.isRequired,
129
198
  optionsMaxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
130
199
  optionsStyle: PropTypes.oneOf(['checkbox', 'text']),
131
200
  optionsTemplate: PropTypes.func,
201
+ optionsGroupsSelectable: PropTypes.bool,
202
+ optionsGroupsStyle: PropTypes.oneOf(['checkbox', 'text']),
132
203
  optionsGroupsTemplate: PropTypes.func,
133
204
  searchNoResultsLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
134
205
  virtualScroller: PropTypes.bool,
@@ -6,6 +6,7 @@ import PropTypes from 'prop-types'
6
6
  import type { Search, SelectedOption } from './types'
7
7
 
8
8
  export interface CMultiSelectSelectionProps extends HTMLAttributes<HTMLSpanElement> {
9
+ ariaTagDeleteLabel?: string
9
10
  disabled?: boolean
10
11
  multiple?: boolean
11
12
  onRemove?: (option: SelectedOption) => void
@@ -19,6 +20,7 @@ export interface CMultiSelectSelectionProps extends HTMLAttributes<HTMLSpanEleme
19
20
  export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSelectionProps>(
20
21
  (
21
22
  {
23
+ ariaTagDeleteLabel = 'Remove',
22
24
  children,
23
25
  disabled,
24
26
  multiple,
@@ -36,6 +38,7 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
36
38
  className={classNames('form-multi-select-selection', {
37
39
  'form-multi-select-selection-tags': multiple && selectionType === 'tags',
38
40
  })}
41
+ aria-live="polite"
39
42
  ref={ref}
40
43
  >
41
44
  {multiple && selectionType === 'counter' && !search && selected.length === 0 && placeholder}
@@ -55,7 +58,7 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
55
58
  <button
56
59
  className="form-multi-select-tag-delete"
57
60
  type="button"
58
- aria-label="Close"
61
+ aria-label={`${ariaTagDeleteLabel} ${option.label}`.trim()}
59
62
  onClick={() => onRemove?.(option)}
60
63
  />
61
64
  )}
@@ -80,6 +83,7 @@ export const CMultiSelectSelection = forwardRef<HTMLSpanElement, CMultiSelectSel
80
83
  )
81
84
 
82
85
  CMultiSelectSelection.propTypes = {
86
+ ariaTagDeleteLabel: PropTypes.string,
83
87
  children: PropTypes.node,
84
88
  disabled: PropTypes.bool,
85
89
  multiple: PropTypes.bool,
@@ -1,25 +1,25 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelect } from '../index'
5
5
 
6
6
  const options = [
7
7
  {
8
8
  value: 0,
9
- text: 'Angular',
9
+ label: 'Angular',
10
10
  },
11
11
  {
12
12
  value: 1,
13
- text: 'Bootstrap',
13
+ label: 'Bootstrap',
14
14
  selected: true,
15
15
  },
16
16
  {
17
17
  value: 2,
18
- text: 'React.js',
18
+ label: 'React.js',
19
19
  },
20
20
  {
21
21
  value: 3,
22
- text: 'Vue.js',
22
+ label: 'Vue.js',
23
23
  selected: true,
24
24
  },
25
25
  {
@@ -27,15 +27,15 @@ const options = [
27
27
  options: [
28
28
  {
29
29
  value: 4,
30
- text: 'Django',
30
+ label: 'Django',
31
31
  },
32
32
  {
33
33
  value: 5,
34
- text: 'Laravel',
34
+ label: 'Laravel',
35
35
  },
36
36
  {
37
37
  value: 6,
38
- text: 'Node.js',
38
+ label: 'Node.js',
39
39
  disabled: true,
40
40
  selected: true,
41
41
  },
@@ -68,74 +68,32 @@ test('CMultiSelect customize', async () => {
68
68
  />,
69
69
  )
70
70
  expect(container).toMatchSnapshot()
71
- expect(container.firstChild).toHaveAttribute('multiple', '')
72
- expect(container.firstChild).toHaveAttribute('style', 'display: none;')
73
- expect(container.firstChild).toHaveAttribute('tabindex', '-1')
74
- if (container.firstChild === null) {
71
+ const nativeSelect = container.querySelector('select')
72
+ expect(nativeSelect).toBeInTheDocument()
73
+ expect(nativeSelect).toHaveAttribute('multiple', '')
74
+ expect(nativeSelect).not.toHaveStyle('display: none')
75
+ expect(nativeSelect).toHaveAttribute('tabindex', '-1')
76
+ expect(nativeSelect).toHaveClass('form-multi-select')
77
+ expect(nativeSelect?.parentElement).toHaveClass('form-multi-select')
78
+ if (nativeSelect === null) {
75
79
  expect(true).toBe(false)
76
80
  } else {
77
- expect(container.firstChild.firstChild).toHaveAttribute('value', '1')
78
- expect(container.firstChild.firstChild).toHaveTextContent('Bootstrap')
79
- expect(container.firstChild.lastChild).toHaveAttribute('value', '6')
80
- expect(container.firstChild.lastChild).toHaveTextContent('Node.js')
81
+ expect(nativeSelect.firstChild).toHaveAttribute('value', '1')
82
+ expect(nativeSelect.firstChild).toHaveTextContent('Bootstrap')
83
+ expect(nativeSelect.lastChild).toHaveAttribute('value', '6')
84
+ expect(nativeSelect.lastChild).toHaveTextContent('Node.js')
81
85
  }
82
86
  expect(container.lastChild).toHaveClass('form-multi-select')
83
87
  expect(container.lastChild).toHaveClass('show')
84
88
  expect(container.lastChild).toHaveClass('bazinga')
85
89
 
86
- if (container.lastChild === null) {
87
- expect(true).toBe(false)
88
- } else {
89
- expect(container.lastChild.firstChild).toHaveClass('form-multi-select-toggler')
90
- if (container.lastChild.firstChild === null) {
91
- expect(true).toBe(false)
92
- } else {
93
- expect(container.lastChild.firstChild.firstChild).toHaveClass(
94
- 'form-multi-select-selection-tags',
95
- )
96
- if (container.lastChild.firstChild.firstChild === null) {
97
- expect(true).toBe(false)
98
- } else {
99
- expect(container.lastChild.firstChild.firstChild.firstChild).toHaveClass(
100
- 'form-multi-select-tag',
101
- )
102
- expect(container.lastChild.firstChild.firstChild.firstChild).toHaveTextContent('Bootstrap')
103
- }
104
- }
105
- expect(container.lastChild.lastChild).toHaveClass('form-multi-select-dropdown')
106
- if (container.lastChild.lastChild === null) {
107
- expect(true).toBe(false)
108
- } else {
109
- expect(container.lastChild.lastChild.firstChild).toHaveClass('form-multi-select-all')
110
- expect(container.lastChild.lastChild.firstChild).toHaveAttribute('type', 'button')
111
- expect(container.lastChild.lastChild.firstChild).toHaveTextContent('selectAllLabel')
112
- expect(container.lastChild.lastChild.lastChild).toHaveClass('form-multi-select-options')
113
- expect(container.lastChild.lastChild.lastChild).toHaveAttribute(
114
- 'style',
115
- 'max-height: 150px; overflow: scroll;',
116
- )
117
- if (container.lastChild.lastChild.lastChild === null) {
118
- expect(true).toBe(false)
119
- } else {
120
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveClass(
121
- 'form-multi-select-option',
122
- )
123
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveClass(
124
- 'form-multi-select-option-with-checkbox',
125
- )
126
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveTextContent('Angular')
127
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass(
128
- 'form-multi-select-option',
129
- )
130
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass(
131
- 'form-multi-select-option-with-checkbox',
132
- )
133
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass('form-multi-selected')
134
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass('disabled')
135
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveTextContent('Node.js')
136
- }
137
- }
138
- }
90
+ expect(container.querySelector('.form-multi-select-tag')).toBeInTheDocument()
91
+ expect(container.querySelector('.form-multi-select-tag')).toHaveTextContent('Bootstrap')
92
+ expect(container.querySelector('.form-multi-select-dropdown')).toBeInTheDocument()
93
+ expect(container.querySelector('.form-multi-select-all')).toHaveTextContent('selectAllLabel')
94
+ expect(container.querySelector('.form-multi-select-options')).toBeInTheDocument()
95
+ const firstOption = container.querySelector('.form-multi-select-option')
96
+ expect(firstOption).toHaveClass('form-multi-select-option-with-checkbox')
139
97
  })
140
98
 
141
99
  test('CMultiSelect fire events', async () => {
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react'
2
2
  import { render } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectNativeSelect } from '../CMultiSelectNativeSelect'
5
5
  import { Option } from '../types'
6
6
 
@@ -12,19 +12,18 @@ test('loads and displays CMultiSelectNativeSelect component', async () => {
12
12
  test('CMultiSelectNativeSelect customize', async () => {
13
13
  const options: Option[] = [
14
14
  {
15
- text: 'text1',
15
+ label: 'text1',
16
16
  value: 'value1',
17
17
  },
18
18
  {
19
- text: 'text2',
19
+ label: 'text2',
20
20
  value: 'value2',
21
21
  disabled: true,
22
- label: 'label2',
23
22
  order: 4,
24
23
  selected: true,
25
24
  },
26
25
  {
27
- text: 'text3',
26
+ label: 'text3',
28
27
  value: 'value3',
29
28
  order: 3,
30
29
  },
@@ -1,18 +1,18 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectOptions } from '../CMultiSelectOptions'
5
5
  import { Option } from '../types'
6
6
 
7
7
  const options: Option[] = [
8
8
  {
9
- text: 'text1',
9
+ label: 'text1',
10
10
  value: 'value1',
11
11
  selected: true,
12
12
  disabled: true,
13
13
  },
14
14
  {
15
- text: 'text3',
15
+ label: 'text3',
16
16
  value: 'value3',
17
17
  },
18
18
  ]
@@ -59,7 +59,7 @@ test('CMultiSelectOptions customize', async () => {
59
59
 
60
60
  test('CMultiSelectOptions handle on click', async () => {
61
61
  const onClick = jest.fn()
62
- render(<CMultiSelectOptions options={options} handleOptionOnClick={onClick} selected={[]} />)
62
+ render(<CMultiSelectOptions options={options} onOptionOnClick={onClick} selected={[]} />)
63
63
  expect(onClick).toHaveBeenCalledTimes(0)
64
64
  const option = document.querySelector('.form-multi-select-option')
65
65
  if (option !== null) {
@@ -1,15 +1,15 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectSelection } from '../CMultiSelectSelection'
5
5
 
6
6
  const selected = [
7
7
  {
8
- text: 'text1',
8
+ label: 'text1',
9
9
  value: 'value1',
10
10
  },
11
11
  {
12
- text: 'text2',
12
+ label: 'text2',
13
13
  value: 'value2',
14
14
  disabled: true,
15
15
  },
@@ -32,27 +32,10 @@ test('CMultiSelectSelection customize tags', async () => {
32
32
  )
33
33
  expect(container).toMatchSnapshot()
34
34
  expect(container.firstChild).toHaveClass('form-multi-select-selection')
35
- if (container.firstChild === null) {
36
- expect(true).toBe(false)
37
- } else {
38
- expect(container.firstChild.firstChild).toHaveClass('form-multi-select-tag')
39
- expect(container.firstChild.lastChild).toHaveClass('form-multi-select-tag')
40
- if (container.firstChild.firstChild === null) {
41
- expect(true).toBe(false)
42
- } else {
43
- expect(container.firstChild.firstChild.lastChild).toHaveClass('form-multi-select-tag-delete')
44
- expect(container.firstChild.firstChild.lastChild).toHaveAttribute('aria-label', 'Close')
45
- if (container.firstChild.firstChild.lastChild === null) {
46
- expect(true).toBe(false)
47
- } else {
48
- expect(container.firstChild.firstChild.lastChild.firstChild).toHaveAttribute(
49
- 'aria-hidden',
50
- 'true',
51
- )
52
- expect(container.firstChild.firstChild.lastChild.firstChild).toHaveTextContent('×')
53
- }
54
- }
55
- }
35
+ const tags = container.querySelectorAll('.form-multi-select-tag')
36
+ expect(tags.length).toBeGreaterThanOrEqual(2)
37
+ const deleteBtn = container.querySelector('.form-multi-select-tag-delete')
38
+ expect(deleteBtn).toBeInTheDocument()
56
39
  })
57
40
 
58
41
  test('CMultiSelectSelection customize counter', async () => {