@laerdal/life-react-components 3.5.1-dev.12 → 3.5.1-dev.13

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 (655) hide show
  1. package/dist/Accordion/AccordionItem.js +69 -47
  2. package/dist/Accordion/AccordionMenu.js +91 -64
  3. package/dist/Accordion/ContentAccordion.js +154 -105
  4. package/dist/Accordion/index.js +8 -7
  5. package/dist/Accordion/styles.js +16 -12
  6. package/dist/AuthPage/AuthPage.d.ts +1 -1
  7. package/dist/AuthPage/AuthPage.js +36 -29
  8. package/dist/AuthPage/ScreenSetsContainer.js +9 -9
  9. package/dist/AuthPage/index.js +5 -4
  10. package/dist/Banners/Banner.d.ts +2 -2
  11. package/dist/Banners/Banner.js +182 -112
  12. package/dist/Banners/OverviewBanner.d.ts +1 -1
  13. package/dist/Banners/OverviewBanner.js +32 -39
  14. package/dist/Banners/index.js +5 -4
  15. package/dist/Banners/styles.js +53 -55
  16. package/dist/Breadcrumb/Breadcrumb.d.ts +1 -1
  17. package/dist/Breadcrumb/Breadcrumb.js +126 -67
  18. package/dist/Breadcrumb/BreadcrumbItem.js +2 -1
  19. package/dist/Breadcrumb/index.js +5 -4
  20. package/dist/Breadcrumb/styles.js +32 -24
  21. package/dist/Button/BackButton.js +48 -45
  22. package/dist/Button/Button.js +195 -85
  23. package/dist/Button/DualFunctionButton.js +160 -71
  24. package/dist/Button/Iconbutton.js +127 -70
  25. package/dist/Button/index.js +9 -8
  26. package/dist/Card/HorizontalCard/HorizontalCard.js +78 -55
  27. package/dist/Card/HorizontalCard/HorizontalCardActions.d.ts +1 -1
  28. package/dist/Card/HorizontalCard/HorizontalCardActions.js +92 -39
  29. package/dist/Card/HorizontalCard/HorizontalCardBody.d.ts +1 -1
  30. package/dist/Card/HorizontalCard/HorizontalCardBody.js +38 -23
  31. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.d.ts +1 -1
  32. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js +34 -21
  33. package/dist/Card/HorizontalCard/index.js +5 -4
  34. package/dist/Card/HorizontalCard/types.d.ts +5 -5
  35. package/dist/Card/HorizontalCard/types.js +2 -1
  36. package/dist/Card/VerticalCard/Card.js +81 -61
  37. package/dist/Card/VerticalCard/CardBottomSection.js +110 -45
  38. package/dist/Card/VerticalCard/CardMiddleSection.js +66 -32
  39. package/dist/Card/VerticalCard/CardTopSection.js +101 -33
  40. package/dist/Card/VerticalCard/index.js +8 -7
  41. package/dist/Card/index.js +3 -2
  42. package/dist/Chips/ActionChip.js +63 -41
  43. package/dist/Chips/ChipStyles.js +11 -12
  44. package/dist/Chips/ChipTypes.d.ts +1 -1
  45. package/dist/Chips/ChipTypes.js +2 -1
  46. package/dist/Chips/ChoiceChips.js +93 -66
  47. package/dist/Chips/FilterChip.js +64 -43
  48. package/dist/Chips/InputChip.js +106 -65
  49. package/dist/Chips/index.js +7 -6
  50. package/dist/ChipsInput/ChipDropdownInput.js +361 -224
  51. package/dist/ChipsInput/ChipInput.js +124 -95
  52. package/dist/ChipsInput/ChipInputField.js +195 -114
  53. package/dist/ChipsInput/ChipInputTypes.js +2 -1
  54. package/dist/ChipsInput/index.js +3 -2
  55. package/dist/Dropdown/BasicDropdown.d.ts +3 -3
  56. package/dist/Dropdown/BasicDropdown.js +305 -153
  57. package/dist/Dropdown/CommonStyling.js +44 -24
  58. package/dist/Dropdown/DropdownButton.js +206 -103
  59. package/dist/Dropdown/DropdownButtonTypes.d.ts +3 -3
  60. package/dist/Dropdown/DropdownButtonTypes.js +2 -1
  61. package/dist/Dropdown/DropdownContent.js +605 -339
  62. package/dist/Dropdown/DropdownFilter.js +318 -161
  63. package/dist/Dropdown/index.js +9 -8
  64. package/dist/Footer/Components/FooterBottomLinks.js +41 -20
  65. package/dist/Footer/Components/FooterDropdownLinks.js +61 -25
  66. package/dist/Footer/Components/FooterNavSection.js +62 -32
  67. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js +95 -42
  68. package/dist/Footer/Components/FooterTop.js +60 -34
  69. package/dist/Footer/Footer.js +20 -17
  70. package/dist/Footer/SiteFooter.js +89 -51
  71. package/dist/Footer/index.js +3 -2
  72. package/dist/GlobalNavigationBar/GlobalNavigationBar.d.ts +1 -1
  73. package/dist/GlobalNavigationBar/GlobalNavigationBar.js +192 -89
  74. package/dist/GlobalNavigationBar/Logo.d.ts +1 -1
  75. package/dist/GlobalNavigationBar/Logo.js +74 -33
  76. package/dist/GlobalNavigationBar/desktop/DesktopActions.js +146 -88
  77. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.d.ts +1 -1
  78. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +66 -42
  79. package/dist/GlobalNavigationBar/desktop/MainMenu.d.ts +1 -1
  80. package/dist/GlobalNavigationBar/desktop/MainMenu.js +282 -175
  81. package/dist/GlobalNavigationBar/desktop/RightSideNav.d.ts +1 -1
  82. package/dist/GlobalNavigationBar/desktop/RightSideNav.js +64 -46
  83. package/dist/GlobalNavigationBar/desktop/SubMenu.d.ts +1 -1
  84. package/dist/GlobalNavigationBar/desktop/SubMenu.js +248 -131
  85. package/dist/GlobalNavigationBar/desktop/UserMenu.js +155 -90
  86. package/dist/GlobalNavigationBar/index.js +4 -3
  87. package/dist/GlobalNavigationBar/mobile/CommonStyles.js +26 -28
  88. package/dist/GlobalNavigationBar/mobile/MobileActionContainer.js +32 -18
  89. package/dist/GlobalNavigationBar/mobile/MobileMenu.d.ts +1 -1
  90. package/dist/GlobalNavigationBar/mobile/MobileMenu.js +146 -94
  91. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js +145 -89
  92. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.js +152 -108
  93. package/dist/GlobalNavigationBar/types.d.ts +8 -8
  94. package/dist/GlobalNavigationBar/types.js +2 -1
  95. package/dist/GlobalNavigationBar/utils.js +10 -7
  96. package/dist/HyperLink/HyperLink.js +42 -36
  97. package/dist/HyperLink/index.js +4 -3
  98. package/dist/HyperLink/styling.js +7 -9
  99. package/dist/Image/ImageWithFallbacks.d.ts +1 -1
  100. package/dist/Image/ImageWithFallbacks.js +106 -87
  101. package/dist/Image/index.js +3 -2
  102. package/dist/InputFields/Checkbox.js +95 -65
  103. package/dist/InputFields/DatepickerField.d.ts +1 -1
  104. package/dist/InputFields/DatepickerField.js +335 -227
  105. package/dist/InputFields/DatepickerFieldHeader.js +80 -43
  106. package/dist/InputFields/Label.d.ts +1 -1
  107. package/dist/InputFields/Label.js +116 -77
  108. package/dist/InputFields/NumberField.js +304 -194
  109. package/dist/InputFields/PasswordField.d.ts +1 -1
  110. package/dist/InputFields/PasswordField.js +129 -60
  111. package/dist/InputFields/QuickSearch.d.ts +1 -1
  112. package/dist/InputFields/QuickSearch.js +189 -92
  113. package/dist/InputFields/RadioButton.d.ts +1 -1
  114. package/dist/InputFields/RadioButton.js +96 -54
  115. package/dist/InputFields/ResponsiveComponentWrapper.d.ts +1 -1
  116. package/dist/InputFields/ResponsiveComponentWrapper.js +44 -20
  117. package/dist/InputFields/RichTextField.js +111 -83
  118. package/dist/InputFields/SearchBar.d.ts +1 -1
  119. package/dist/InputFields/SearchBar.js +187 -63
  120. package/dist/InputFields/TextField.d.ts +1 -1
  121. package/dist/InputFields/TextField.js +121 -51
  122. package/dist/InputFields/Textarea.js +88 -57
  123. package/dist/InputFields/components/SearchBarInput.d.ts +1 -1
  124. package/dist/InputFields/components/SearchBarInput.js +73 -26
  125. package/dist/InputFields/components/SearchField.js +45 -44
  126. package/dist/InputFields/index.js +14 -13
  127. package/dist/InputFields/styling.js +38 -33
  128. package/dist/InputFields/types.d.ts +2 -2
  129. package/dist/InputFields/types.js +3 -2
  130. package/dist/Layouts/index.js +41 -25
  131. package/dist/LinearProgress/LinearProgress.js +105 -78
  132. package/dist/LinearProgress/index.js +4 -3
  133. package/dist/List/ListRow.js +140 -83
  134. package/dist/List/index.js +3 -2
  135. package/dist/LoadingIndicator/LoadingIndicator.d.ts +1 -1
  136. package/dist/LoadingIndicator/LoadingIndicator.js +46 -26
  137. package/dist/LoadingIndicator/index.js +2 -1
  138. package/dist/LoadingPage/GlobalLoadingPage.js +36 -26
  139. package/dist/LoadingPage/index.js +2 -1
  140. package/dist/MenuItem/MenuItem.d.ts +1 -1
  141. package/dist/MenuItem/MenuItem.js +101 -60
  142. package/dist/MenuItem/index.js +2 -1
  143. package/dist/MiniProductCard/MiniProductCard.d.ts +1 -1
  144. package/dist/MiniProductCard/MiniProductCard.js +47 -30
  145. package/dist/MiniProductCard/index.js +2 -1
  146. package/dist/Modals/Modal.d.ts +1 -1
  147. package/dist/Modals/Modal.js +55 -36
  148. package/dist/Modals/ModalContainer.d.ts +2 -2
  149. package/dist/Modals/ModalContainer.js +185 -130
  150. package/dist/Modals/ModalContent.js +246 -159
  151. package/dist/Modals/ModalDialog.js +339 -166
  152. package/dist/Modals/ModalNote.js +66 -27
  153. package/dist/Modals/ModalStyles.js +94 -53
  154. package/dist/Modals/ModalTypes.d.ts +2 -2
  155. package/dist/Modals/ModalTypes.js +2 -1
  156. package/dist/Modals/index.js +7 -6
  157. package/dist/NavItem/NavItem.d.ts +1 -1
  158. package/dist/NavItem/NavItem.js +18 -26
  159. package/dist/NavItem/NestedNavItem.js +28 -18
  160. package/dist/NavItem/index.js +2 -1
  161. package/dist/NotificationDot/NotificationDot.js +47 -17
  162. package/dist/NotificationDot/index.js +2 -1
  163. package/dist/Paginator/Paginator.js +147 -77
  164. package/dist/Paginator/index.js +3 -2
  165. package/dist/Panel/Panel.d.ts +1 -1
  166. package/dist/Panel/Panel.js +131 -82
  167. package/dist/Panel/index.js +2 -1
  168. package/dist/Popover/Popover.js +226 -101
  169. package/dist/Popover/index.js +2 -1
  170. package/dist/ProfileButton/ProfileButton.d.ts +2 -2
  171. package/dist/ProfileButton/ProfileButton.js +75 -52
  172. package/dist/ProfileButton/index.js +2 -1
  173. package/dist/QuizButton/QuizButton.d.ts +1 -1
  174. package/dist/QuizButton/QuizButton.js +121 -53
  175. package/dist/QuizButton/index.js +2 -1
  176. package/dist/SegmentControl/SegmentControl.js +78 -57
  177. package/dist/SegmentControl/index.js +3 -2
  178. package/dist/Services/functions.js +12 -11
  179. package/dist/SideMenu/SideMenu.js +30 -43
  180. package/dist/SideMenu/SideMenuBody.js +38 -24
  181. package/dist/SideMenu/SideMenuFooter.js +46 -43
  182. package/dist/SideMenu/SideMenuHeader.js +42 -46
  183. package/dist/SideMenu/index.js +3 -2
  184. package/dist/SideMenu/types.d.ts +3 -3
  185. package/dist/SideMenu/types.js +2 -1
  186. package/dist/SkipToContent/SkipToContent.d.ts +1 -1
  187. package/dist/SkipToContent/SkipToContent.js +24 -17
  188. package/dist/SkipToContent/index.js +2 -1
  189. package/dist/Switcher/MobileCustomMenuContent.js +37 -26
  190. package/dist/Switcher/MobileSwitcherMenu.js +55 -21
  191. package/dist/Switcher/SwitcherMenuItem.js +44 -18
  192. package/dist/Switcher/index.js +4 -3
  193. package/dist/Table/Table.js +391 -286
  194. package/dist/Table/TableBody.js +244 -116
  195. package/dist/Table/TableFooter.js +94 -41
  196. package/dist/Table/TableHeaders.js +31 -26
  197. package/dist/Table/TableStyles.js +48 -40
  198. package/dist/Table/TableTypes.d.ts +4 -4
  199. package/dist/Table/TableTypes.js +2 -2
  200. package/dist/Table/index.js +4 -3
  201. package/dist/Tabs/HorizontalTabs.js +161 -116
  202. package/dist/Tabs/TabLink.js +117 -76
  203. package/dist/Tabs/Tabs.d.ts +1 -1
  204. package/dist/Tabs/Tabs.js +80 -62
  205. package/dist/Tabs/VerticalTabs.js +46 -13
  206. package/dist/Tabs/index.js +4 -3
  207. package/dist/Tag/Tag.d.ts +2 -2
  208. package/dist/Tag/Tag.js +49 -41
  209. package/dist/Tag/index.js +2 -1
  210. package/dist/Tile/Tile.js +42 -43
  211. package/dist/Tile/TileBody.js +18 -15
  212. package/dist/Tile/TileCommonItems.js +117 -75
  213. package/dist/Tile/TileFooter.js +28 -19
  214. package/dist/Tile/TileHeader.js +81 -57
  215. package/dist/Tile/TileTypes.d.ts +8 -8
  216. package/dist/Tile/TileTypes.js +2 -1
  217. package/dist/Tile/index.js +4 -3
  218. package/dist/Toasters/Toast.d.ts +2 -2
  219. package/dist/Toasters/Toast.js +241 -166
  220. package/dist/Toasters/ToastContext.d.ts +2 -2
  221. package/dist/Toasters/ToastContext.js +145 -69
  222. package/dist/Toasters/index.js +5 -4
  223. package/dist/Toggles/ToggleButton.js +71 -48
  224. package/dist/Toggles/ToggleSwitch.js +83 -61
  225. package/dist/Toggles/TogglerStyles.js +12 -13
  226. package/dist/Toggles/TogglerTypes.js +2 -1
  227. package/dist/Toggles/index.js +4 -3
  228. package/dist/Tooltips/TooltipOverflow.js +102 -71
  229. package/dist/Tooltips/TooltipStyles.d.ts +1 -1
  230. package/dist/Tooltips/TooltipStyles.js +70 -41
  231. package/dist/Tooltips/TooltipTypes.js +2 -1
  232. package/dist/Tooltips/TooltipWrapper.js +93 -65
  233. package/dist/Tooltips/index.js +4 -3
  234. package/dist/assets/index.d.ts +1 -1
  235. package/dist/assets/index.js +154 -41
  236. package/dist/common/ActionWithin.js +45 -25
  237. package/dist/common/ClickOutside.js +23 -20
  238. package/dist/common/EventHandlers.js +9 -8
  239. package/dist/common/FocusOutside.js +23 -20
  240. package/dist/common/FocusVisible.d.ts +1 -1
  241. package/dist/common/FocusVisible.js +89 -75
  242. package/dist/common/InputStyling.js +6 -8
  243. package/dist/common/NavigationHelper.js +24 -18
  244. package/dist/common/ScrollableContainer.js +25 -22
  245. package/dist/common/StackState.js +29 -10
  246. package/dist/common/index.js +7 -6
  247. package/dist/icons/contenticons/Adaptive.js +37 -31
  248. package/dist/icons/contenticons/Add.js +37 -31
  249. package/dist/icons/contenticons/Adult.js +37 -31
  250. package/dist/icons/contenticons/AedNoShockAdvised.js +37 -31
  251. package/dist/icons/contenticons/AedPads.js +37 -31
  252. package/dist/icons/contenticons/AedPadsCorrect.js +37 -31
  253. package/dist/icons/contenticons/AedPadsError.js +37 -31
  254. package/dist/icons/contenticons/AedShockAdvised.js +37 -31
  255. package/dist/icons/contenticons/Ambulance.js +37 -31
  256. package/dist/icons/contenticons/Assignments.js +37 -31
  257. package/dist/icons/contenticons/Attention.js +37 -31
  258. package/dist/icons/contenticons/AutomaticMode.js +37 -31
  259. package/dist/icons/contenticons/AwardWinningPerson.js +37 -31
  260. package/dist/icons/contenticons/Biohazard.js +37 -31
  261. package/dist/icons/contenticons/Bleeding.js +37 -31
  262. package/dist/icons/contenticons/Book.js +37 -31
  263. package/dist/icons/contenticons/Buildings.js +37 -31
  264. package/dist/icons/contenticons/CPRCall.js +37 -31
  265. package/dist/icons/contenticons/CPRCycles.js +37 -31
  266. package/dist/icons/contenticons/CPRTraining.js +37 -31
  267. package/dist/icons/contenticons/Calendar.js +37 -31
  268. package/dist/icons/contenticons/Call.js +37 -31
  269. package/dist/icons/contenticons/Certificate.js +37 -31
  270. package/dist/icons/contenticons/ChestCompressionFraction.js +37 -31
  271. package/dist/icons/contenticons/Child.js +37 -31
  272. package/dist/icons/contenticons/Cleaning.js +37 -31
  273. package/dist/icons/contenticons/ClinicalFindings.js +37 -31
  274. package/dist/icons/contenticons/Cloud.js +37 -31
  275. package/dist/icons/contenticons/CloudAttension.js +37 -31
  276. package/dist/icons/contenticons/CloudChecked.js +37 -31
  277. package/dist/icons/contenticons/CloudDownload.js +37 -31
  278. package/dist/icons/contenticons/CloudLocked.js +37 -31
  279. package/dist/icons/contenticons/CloudNoConnection.js +37 -31
  280. package/dist/icons/contenticons/CloudSyncing.js +37 -31
  281. package/dist/icons/contenticons/CloudUpload.js +37 -31
  282. package/dist/icons/contenticons/Code.js +37 -31
  283. package/dist/icons/contenticons/CoffeeBreak.js +37 -31
  284. package/dist/icons/contenticons/Contact.js +37 -31
  285. package/dist/icons/contenticons/ContactInfo.js +37 -31
  286. package/dist/icons/contenticons/Cookie.js +37 -31
  287. package/dist/icons/contenticons/CountAloud.js +37 -31
  288. package/dist/icons/contenticons/Dashboard.js +37 -31
  289. package/dist/icons/contenticons/Data.js +37 -31
  290. package/dist/icons/contenticons/DecisionFlow.js +37 -31
  291. package/dist/icons/contenticons/Defribilator.js +37 -31
  292. package/dist/icons/contenticons/DefribilatorMonitor.js +37 -31
  293. package/dist/icons/contenticons/Depth.js +37 -31
  294. package/dist/icons/contenticons/Desktop.js +37 -31
  295. package/dist/icons/contenticons/DeviceChecked.js +37 -31
  296. package/dist/icons/contenticons/Dispatcher.js +37 -31
  297. package/dist/icons/contenticons/Doctor.js +37 -31
  298. package/dist/icons/contenticons/DocumentChecked.js +37 -31
  299. package/dist/icons/contenticons/Download.js +37 -31
  300. package/dist/icons/contenticons/ELearning.js +37 -31
  301. package/dist/icons/contenticons/EMSRescuer.js +37 -31
  302. package/dist/icons/contenticons/ESimulation.js +37 -31
  303. package/dist/icons/contenticons/Edit.js +37 -31
  304. package/dist/icons/contenticons/Educator.js +37 -31
  305. package/dist/icons/contenticons/Elderly.js +37 -31
  306. package/dist/icons/contenticons/Embryo.js +37 -31
  307. package/dist/icons/contenticons/EventLog.js +37 -31
  308. package/dist/icons/contenticons/Faq.js +37 -31
  309. package/dist/icons/contenticons/Female.js +37 -31
  310. package/dist/icons/contenticons/FirstAid.js +37 -31
  311. package/dist/icons/contenticons/Geriatric.js +37 -31
  312. package/dist/icons/contenticons/GiftCard.js +37 -31
  313. package/dist/icons/contenticons/Goals.js +37 -31
  314. package/dist/icons/contenticons/Grid.js +37 -31
  315. package/dist/icons/contenticons/GuidedTour.js +37 -31
  316. package/dist/icons/contenticons/HandPlacement.js +37 -31
  317. package/dist/icons/contenticons/HandPlacementCorrect.js +37 -31
  318. package/dist/icons/contenticons/HandPlacementIncorrect.js +37 -31
  319. package/dist/icons/contenticons/HeadTilt.js +37 -31
  320. package/dist/icons/contenticons/Heart.js +37 -31
  321. package/dist/icons/contenticons/HeartPulse.js +37 -31
  322. package/dist/icons/contenticons/HeartShock.js +37 -31
  323. package/dist/icons/contenticons/Help.js +37 -31
  324. package/dist/icons/contenticons/Hierarchy.js +37 -31
  325. package/dist/icons/contenticons/Hospital.js +37 -31
  326. package/dist/icons/contenticons/Hospitalized.js +37 -31
  327. package/dist/icons/contenticons/House.js +37 -31
  328. package/dist/icons/contenticons/Infant.js +37 -31
  329. package/dist/icons/contenticons/Information.js +37 -31
  330. package/dist/icons/contenticons/Injustice.js +37 -31
  331. package/dist/icons/contenticons/Institute.js +37 -31
  332. package/dist/icons/contenticons/Justice.js +37 -31
  333. package/dist/icons/contenticons/Laptop.js +37 -31
  334. package/dist/icons/contenticons/Leaflet.js +37 -31
  335. package/dist/icons/contenticons/Learner.js +37 -31
  336. package/dist/icons/contenticons/Levels.js +37 -31
  337. package/dist/icons/contenticons/LevelsDecreasing.js +37 -31
  338. package/dist/icons/contenticons/LevelsIncreasing.js +37 -31
  339. package/dist/icons/contenticons/LevelsStarred.js +37 -31
  340. package/dist/icons/contenticons/Maintenance.js +37 -31
  341. package/dist/icons/contenticons/Male.js +37 -31
  342. package/dist/icons/contenticons/Manikin.js +37 -31
  343. package/dist/icons/contenticons/ManikinCorrect.js +37 -31
  344. package/dist/icons/contenticons/ManikinError.js +37 -31
  345. package/dist/icons/contenticons/ManualMode.js +37 -31
  346. package/dist/icons/contenticons/MapPoint.js +37 -31
  347. package/dist/icons/contenticons/MaskLeak.js +37 -31
  348. package/dist/icons/contenticons/MedicalHistory.js +37 -31
  349. package/dist/icons/contenticons/MedicalRecord.js +37 -31
  350. package/dist/icons/contenticons/Medication.js +37 -31
  351. package/dist/icons/contenticons/Metronome.js +37 -31
  352. package/dist/icons/contenticons/MoodHappy.js +37 -31
  353. package/dist/icons/contenticons/MoodIndifferent.js +37 -31
  354. package/dist/icons/contenticons/MoodSad.js +37 -31
  355. package/dist/icons/contenticons/MoodVeryHappy.js +37 -31
  356. package/dist/icons/contenticons/MoodVerySad.js +37 -31
  357. package/dist/icons/contenticons/Newborn.js +37 -31
  358. package/dist/icons/contenticons/NoInterruption.js +37 -31
  359. package/dist/icons/contenticons/Note.js +37 -31
  360. package/dist/icons/contenticons/Pain.js +37 -31
  361. package/dist/icons/contenticons/Patient.js +37 -31
  362. package/dist/icons/contenticons/PatientAssignment.js +37 -31
  363. package/dist/icons/contenticons/PatientMonitor.js +37 -31
  364. package/dist/icons/contenticons/PatientStretcher.js +37 -31
  365. package/dist/icons/contenticons/PatientTransfer.js +37 -31
  366. package/dist/icons/contenticons/PatientTreatment.js +37 -31
  367. package/dist/icons/contenticons/Person.js +37 -31
  368. package/dist/icons/contenticons/PhysiologicalModel.js +37 -31
  369. package/dist/icons/contenticons/PieChart.js +37 -31
  370. package/dist/icons/contenticons/Pill.js +37 -31
  371. package/dist/icons/contenticons/Pregnant.js +37 -31
  372. package/dist/icons/contenticons/Print.js +37 -31
  373. package/dist/icons/contenticons/ProvidersOrders.js +37 -31
  374. package/dist/icons/contenticons/Pulse.js +37 -31
  375. package/dist/icons/contenticons/RQICart.js +37 -31
  376. package/dist/icons/contenticons/Rate.js +37 -31
  377. package/dist/icons/contenticons/RateTooFast.js +37 -31
  378. package/dist/icons/contenticons/RateTooSlow.js +37 -31
  379. package/dist/icons/contenticons/Recoil.js +37 -31
  380. package/dist/icons/contenticons/Ruler.js +37 -31
  381. package/dist/icons/contenticons/Screens.js +37 -31
  382. package/dist/icons/contenticons/Search.js +37 -31
  383. package/dist/icons/contenticons/Sepsis.js +37 -31
  384. package/dist/icons/contenticons/Settings.js +37 -31
  385. package/dist/icons/contenticons/Shock.js +37 -31
  386. package/dist/icons/contenticons/ShockAdvised.js +37 -31
  387. package/dist/icons/contenticons/ShockAutomated.js +37 -31
  388. package/dist/icons/contenticons/ShockNotAdvised.js +37 -31
  389. package/dist/icons/contenticons/Sleep.js +37 -31
  390. package/dist/icons/contenticons/Smartphone.js +37 -31
  391. package/dist/icons/contenticons/Speech.js +37 -31
  392. package/dist/icons/contenticons/SpeechBubble.js +37 -31
  393. package/dist/icons/contenticons/SpeechBubbles.js +37 -31
  394. package/dist/icons/contenticons/Star.js +37 -31
  395. package/dist/icons/contenticons/Stethoscope.js +37 -31
  396. package/dist/icons/contenticons/Stock.js +37 -31
  397. package/dist/icons/contenticons/Stopwatch.js +37 -31
  398. package/dist/icons/contenticons/Suitcase.js +37 -31
  399. package/dist/icons/contenticons/SwitchCamera.js +37 -31
  400. package/dist/icons/contenticons/SwitchRoles.js +37 -31
  401. package/dist/icons/contenticons/Tablet.js +37 -31
  402. package/dist/icons/contenticons/Talking.js +37 -31
  403. package/dist/icons/contenticons/TargetGroup.js +37 -31
  404. package/dist/icons/contenticons/TaskTrainer.js +37 -31
  405. package/dist/icons/contenticons/TeamLead.js +37 -31
  406. package/dist/icons/contenticons/TeamWork.js +37 -31
  407. package/dist/icons/contenticons/Terms.js +37 -31
  408. package/dist/icons/contenticons/TimelineReview.js +37 -31
  409. package/dist/icons/contenticons/Translation.js +37 -31
  410. package/dist/icons/contenticons/Trophy.js +37 -31
  411. package/dist/icons/contenticons/Trophy1st.js +37 -31
  412. package/dist/icons/contenticons/Trophy2nd.js +37 -31
  413. package/dist/icons/contenticons/Trophy3rd.js +37 -31
  414. package/dist/icons/contenticons/TrophyStar.js +37 -31
  415. package/dist/icons/contenticons/Truck.js +37 -31
  416. package/dist/icons/contenticons/TwoRescuerCPR.js +37 -31
  417. package/dist/icons/contenticons/USB.js +37 -31
  418. package/dist/icons/contenticons/Ultrasound.js +37 -31
  419. package/dist/icons/contenticons/VentilationLungs.js +37 -31
  420. package/dist/icons/contenticons/VentilationPressure.js +37 -31
  421. package/dist/icons/contenticons/VentilationVolume.js +37 -31
  422. package/dist/icons/contenticons/Video.js +37 -31
  423. package/dist/icons/contenticons/VideoRecording.js +37 -31
  424. package/dist/icons/contenticons/Visibility.js +37 -31
  425. package/dist/icons/contenticons/VitalSigns.js +37 -31
  426. package/dist/icons/contenticons/index.js +180 -179
  427. package/dist/icons/index.d.ts +1 -1
  428. package/dist/icons/index.js +67 -41
  429. package/dist/icons/systemicons/Accessibility.js +37 -31
  430. package/dist/icons/systemicons/Add.js +37 -31
  431. package/dist/icons/systemicons/AddUser.js +37 -31
  432. package/dist/icons/systemicons/Adult.js +37 -31
  433. package/dist/icons/systemicons/AedPads.js +37 -31
  434. package/dist/icons/systemicons/AedPadsCorrect.js +37 -31
  435. package/dist/icons/systemicons/AedPadsError.js +37 -31
  436. package/dist/icons/systemicons/Archive.js +37 -31
  437. package/dist/icons/systemicons/ArrowCollapse.js +37 -31
  438. package/dist/icons/systemicons/ArrowDropDown.js +37 -31
  439. package/dist/icons/systemicons/ArrowDropLeft.js +37 -31
  440. package/dist/icons/systemicons/ArrowDropRight.js +37 -31
  441. package/dist/icons/systemicons/ArrowDropUp.js +37 -31
  442. package/dist/icons/systemicons/ArrowExpand.js +37 -31
  443. package/dist/icons/systemicons/ArrowLineDown.js +37 -31
  444. package/dist/icons/systemicons/ArrowLineLeft.js +37 -31
  445. package/dist/icons/systemicons/ArrowLineRight.js +37 -31
  446. package/dist/icons/systemicons/ArrowLineUp.js +37 -31
  447. package/dist/icons/systemicons/ArrowStopLeft.js +37 -31
  448. package/dist/icons/systemicons/ArrowStopRight.js +37 -31
  449. package/dist/icons/systemicons/Assignments.js +37 -31
  450. package/dist/icons/systemicons/Asterisk.js +37 -31
  451. package/dist/icons/systemicons/Attachment.js +37 -31
  452. package/dist/icons/systemicons/Attention.js +37 -31
  453. package/dist/icons/systemicons/AudioDescriptionOn.js +37 -31
  454. package/dist/icons/systemicons/BackwardsFiveSec.js +37 -31
  455. package/dist/icons/systemicons/Battery0.js +37 -31
  456. package/dist/icons/systemicons/Battery1.js +37 -31
  457. package/dist/icons/systemicons/Battery2.js +37 -31
  458. package/dist/icons/systemicons/Battery3.js +37 -31
  459. package/dist/icons/systemicons/Battery4.js +37 -31
  460. package/dist/icons/systemicons/Battery5.js +37 -31
  461. package/dist/icons/systemicons/Battery6.js +37 -31
  462. package/dist/icons/systemicons/BatteryFull.js +37 -31
  463. package/dist/icons/systemicons/Bluetooth.js +37 -31
  464. package/dist/icons/systemicons/Book.js +37 -31
  465. package/dist/icons/systemicons/BookmarkAdd.js +37 -31
  466. package/dist/icons/systemicons/BookmarkCollection.js +37 -31
  467. package/dist/icons/systemicons/BookmarkOff.js +37 -31
  468. package/dist/icons/systemicons/BookmarkOn.js +37 -31
  469. package/dist/icons/systemicons/Bullet.js +37 -31
  470. package/dist/icons/systemicons/Calendar.js +37 -31
  471. package/dist/icons/systemicons/CheckMark.js +37 -31
  472. package/dist/icons/systemicons/CheckboxOff.js +37 -31
  473. package/dist/icons/systemicons/CheckboxOn.js +37 -31
  474. package/dist/icons/systemicons/CheckboxSemi.js +37 -31
  475. package/dist/icons/systemicons/ChevronDown.js +37 -31
  476. package/dist/icons/systemicons/ChevronLeft.js +37 -31
  477. package/dist/icons/systemicons/ChevronRight.js +37 -31
  478. package/dist/icons/systemicons/ChevronUp.js +37 -31
  479. package/dist/icons/systemicons/Child.js +37 -31
  480. package/dist/icons/systemicons/Clear.js +37 -31
  481. package/dist/icons/systemicons/Close.js +37 -31
  482. package/dist/icons/systemicons/ClosedCaptionOn.js +37 -31
  483. package/dist/icons/systemicons/Cloud.js +37 -31
  484. package/dist/icons/systemicons/CloudAttention.js +37 -31
  485. package/dist/icons/systemicons/CloudCheck.js +37 -31
  486. package/dist/icons/systemicons/CloudDownload.js +37 -31
  487. package/dist/icons/systemicons/CloudLocked.js +37 -31
  488. package/dist/icons/systemicons/CloudNoConnection.js +37 -31
  489. package/dist/icons/systemicons/CloudSyncing.js +37 -31
  490. package/dist/icons/systemicons/CloudUpload.js +37 -31
  491. package/dist/icons/systemicons/CoffeeBreak.js +37 -31
  492. package/dist/icons/systemicons/Copy.js +37 -31
  493. package/dist/icons/systemicons/Dashboard.js +37 -31
  494. package/dist/icons/systemicons/DecisionFlow.js +37 -31
  495. package/dist/icons/systemicons/Delete.js +37 -31
  496. package/dist/icons/systemicons/Document.js +39 -31
  497. package/dist/icons/systemicons/Download.js +37 -31
  498. package/dist/icons/systemicons/DragHandle.js +37 -31
  499. package/dist/icons/systemicons/DragIndicator.js +37 -31
  500. package/dist/icons/systemicons/Edit.js +37 -31
  501. package/dist/icons/systemicons/Educator.js +37 -31
  502. package/dist/icons/systemicons/Equals.js +37 -31
  503. package/dist/icons/systemicons/EventLog.js +37 -31
  504. package/dist/icons/systemicons/Export.js +37 -31
  505. package/dist/icons/systemicons/ExportCVS.js +37 -31
  506. package/dist/icons/systemicons/ExportDoc.js +37 -31
  507. package/dist/icons/systemicons/ExportEXL.js +37 -31
  508. package/dist/icons/systemicons/ExportJpg.js +37 -31
  509. package/dist/icons/systemicons/ExportPDF.js +37 -31
  510. package/dist/icons/systemicons/ExportPNG.js +37 -31
  511. package/dist/icons/systemicons/ExtendTextArea.js +37 -31
  512. package/dist/icons/systemicons/Facebook.js +37 -31
  513. package/dist/icons/systemicons/Filter.js +37 -31
  514. package/dist/icons/systemicons/Flickr.js +37 -31
  515. package/dist/icons/systemicons/Forward.js +37 -31
  516. package/dist/icons/systemicons/ForwardFiveSec.js +37 -31
  517. package/dist/icons/systemicons/ForwardSlash.js +37 -31
  518. package/dist/icons/systemicons/Fullscreen.js +37 -31
  519. package/dist/icons/systemicons/FullscreenExit.js +37 -31
  520. package/dist/icons/systemicons/GearSettings.js +37 -31
  521. package/dist/icons/systemicons/GridView.js +37 -31
  522. package/dist/icons/systemicons/Group.js +37 -31
  523. package/dist/icons/systemicons/GuidedTour.js +37 -31
  524. package/dist/icons/systemicons/HeartShock.js +37 -31
  525. package/dist/icons/systemicons/Help.js +37 -31
  526. package/dist/icons/systemicons/Hierarchy.js +37 -31
  527. package/dist/icons/systemicons/History.js +37 -31
  528. package/dist/icons/systemicons/Home.js +37 -31
  529. package/dist/icons/systemicons/Image.js +37 -31
  530. package/dist/icons/systemicons/Infant.js +37 -31
  531. package/dist/icons/systemicons/Information.js +37 -31
  532. package/dist/icons/systemicons/Institute.js +37 -31
  533. package/dist/icons/systemicons/Keyboard.js +37 -31
  534. package/dist/icons/systemicons/Language.js +37 -31
  535. package/dist/icons/systemicons/Learner.js +37 -31
  536. package/dist/icons/systemicons/Legend.js +37 -31
  537. package/dist/icons/systemicons/Legend1Circle.js +37 -31
  538. package/dist/icons/systemicons/Legend2Triangle.js +37 -31
  539. package/dist/icons/systemicons/Legend3Star.js +37 -31
  540. package/dist/icons/systemicons/Legend4Square.js +37 -31
  541. package/dist/icons/systemicons/Legend5Diamond.js +37 -31
  542. package/dist/icons/systemicons/Legend6Nabla.js +37 -31
  543. package/dist/icons/systemicons/Legend7Pentagon.js +37 -31
  544. package/dist/icons/systemicons/Legend8Rectangle.js +37 -31
  545. package/dist/icons/systemicons/LegendStrokeDashed.js +37 -31
  546. package/dist/icons/systemicons/LegendStrokeSolid.js +37 -31
  547. package/dist/icons/systemicons/LikeOff.js +37 -31
  548. package/dist/icons/systemicons/LikeOn.js +37 -31
  549. package/dist/icons/systemicons/Link.js +37 -31
  550. package/dist/icons/systemicons/LinkedIn.js +37 -31
  551. package/dist/icons/systemicons/ListView.js +37 -31
  552. package/dist/icons/systemicons/LoadingMedium.js +30 -8
  553. package/dist/icons/systemicons/LoadingSmall.js +30 -8
  554. package/dist/icons/systemicons/LockedOff.js +37 -31
  555. package/dist/icons/systemicons/LockedOn.js +37 -31
  556. package/dist/icons/systemicons/Login.js +37 -31
  557. package/dist/icons/systemicons/Logout.js +37 -31
  558. package/dist/icons/systemicons/Loop.js +37 -31
  559. package/dist/icons/systemicons/Mail.js +37 -31
  560. package/dist/icons/systemicons/Manikin.js +37 -31
  561. package/dist/icons/systemicons/MapPoint.js +37 -31
  562. package/dist/icons/systemicons/Menu.js +37 -31
  563. package/dist/icons/systemicons/Metronome.js +37 -31
  564. package/dist/icons/systemicons/Microphone.js +37 -31
  565. package/dist/icons/systemicons/Minus.js +37 -31
  566. package/dist/icons/systemicons/MoreHorizontal.js +37 -31
  567. package/dist/icons/systemicons/MoreVertical.js +37 -31
  568. package/dist/icons/systemicons/Notification.js +37 -31
  569. package/dist/icons/systemicons/NotificationNew.js +37 -31
  570. package/dist/icons/systemicons/OpenFolder.js +37 -31
  571. package/dist/icons/systemicons/OpenNewWindow.js +37 -31
  572. package/dist/icons/systemicons/OverView.js +37 -31
  573. package/dist/icons/systemicons/Pause.js +37 -31
  574. package/dist/icons/systemicons/PieChart.js +37 -31
  575. package/dist/icons/systemicons/Pin.js +37 -31
  576. package/dist/icons/systemicons/Play.js +37 -31
  577. package/dist/icons/systemicons/PlayList.js +37 -31
  578. package/dist/icons/systemicons/PlayOutline.js +37 -31
  579. package/dist/icons/systemicons/PlaybackSpeed.js +37 -31
  580. package/dist/icons/systemicons/Plus.js +37 -31
  581. package/dist/icons/systemicons/PointDown.js +37 -31
  582. package/dist/icons/systemicons/PointLeft.js +37 -31
  583. package/dist/icons/systemicons/PointRight.js +37 -31
  584. package/dist/icons/systemicons/PointUp.js +37 -31
  585. package/dist/icons/systemicons/Print.js +37 -31
  586. package/dist/icons/systemicons/RadioButtonOff.js +37 -31
  587. package/dist/icons/systemicons/RadioButtonOn.js +37 -31
  588. package/dist/icons/systemicons/Record.js +37 -31
  589. package/dist/icons/systemicons/Refresh.js +37 -31
  590. package/dist/icons/systemicons/Replay.js +37 -31
  591. package/dist/icons/systemicons/Rewind.js +37 -31
  592. package/dist/icons/systemicons/SUN.js +37 -31
  593. package/dist/icons/systemicons/Save.js +37 -31
  594. package/dist/icons/systemicons/Search.js +37 -31
  595. package/dist/icons/systemicons/SendTo.js +37 -31
  596. package/dist/icons/systemicons/Share.js +37 -31
  597. package/dist/icons/systemicons/Shock.js +37 -31
  598. package/dist/icons/systemicons/ShockAdvised.js +37 -31
  599. package/dist/icons/systemicons/ShockAutomated.js +37 -31
  600. package/dist/icons/systemicons/ShockNotAdvised.js +37 -31
  601. package/dist/icons/systemicons/ShoppingCart.js +37 -31
  602. package/dist/icons/systemicons/SkipForward.js +37 -31
  603. package/dist/icons/systemicons/Sort.js +37 -31
  604. package/dist/icons/systemicons/SpeechBuble.js +37 -31
  605. package/dist/icons/systemicons/StarFilled.js +37 -31
  606. package/dist/icons/systemicons/StarOutlined.js +37 -31
  607. package/dist/icons/systemicons/Stop.js +37 -31
  608. package/dist/icons/systemicons/Support.js +37 -31
  609. package/dist/icons/systemicons/SwitchApp.js +37 -31
  610. package/dist/icons/systemicons/Team.js +37 -31
  611. package/dist/icons/systemicons/TechnicalWarning.js +37 -31
  612. package/dist/icons/systemicons/ThumbsDown.js +37 -31
  613. package/dist/icons/systemicons/ThumbsUp.js +37 -31
  614. package/dist/icons/systemicons/Time.js +37 -31
  615. package/dist/icons/systemicons/TimeLimited.js +37 -31
  616. package/dist/icons/systemicons/Timeline.js +37 -31
  617. package/dist/icons/systemicons/Tip.js +37 -31
  618. package/dist/icons/systemicons/Transcript.js +37 -31
  619. package/dist/icons/systemicons/Translation.js +37 -31
  620. package/dist/icons/systemicons/Twitter.js +37 -31
  621. package/dist/icons/systemicons/Upload.js +37 -31
  622. package/dist/icons/systemicons/Usb.js +37 -31
  623. package/dist/icons/systemicons/User.js +37 -31
  624. package/dist/icons/systemicons/Video.js +37 -31
  625. package/dist/icons/systemicons/VisibleOff.js +37 -31
  626. package/dist/icons/systemicons/VisibleOn.js +37 -31
  627. package/dist/icons/systemicons/VolumeDown.js +37 -31
  628. package/dist/icons/systemicons/VolumeOff.js +37 -31
  629. package/dist/icons/systemicons/VolumeUp.js +37 -31
  630. package/dist/icons/systemicons/Youtube.js +37 -31
  631. package/dist/icons/systemicons/Zoom.js +37 -31
  632. package/dist/icons/systemicons/ZoomOut.js +37 -31
  633. package/dist/icons/systemicons/index.js +205 -204
  634. package/dist/index.js +46 -45
  635. package/dist/styles/breakpoints.js +7 -6
  636. package/dist/styles/colors.js +110 -89
  637. package/dist/styles/focus-styles.js +7 -9
  638. package/dist/styles/global.js +25 -13
  639. package/dist/styles/index.cjs +2 -2
  640. package/dist/styles/index.cjs.map +1 -1
  641. package/dist/styles/index.d.ts +1 -1
  642. package/dist/styles/index.js +18 -20
  643. package/dist/styles/index.js.map +1 -1
  644. package/dist/styles/overwritecolors.cjs +2 -2
  645. package/dist/styles/overwritecolors.cjs.map +1 -1
  646. package/dist/styles/overwritecolors.d.ts +2 -1
  647. package/dist/styles/overwritecolors.js +12 -12
  648. package/dist/styles/overwritecolors.js.map +1 -1
  649. package/dist/styles/shadowstyles.js +8 -7
  650. package/dist/styles/typography.d.ts +1 -1
  651. package/dist/styles/typography.js +279 -130
  652. package/dist/styles/z-indexes.js +17 -16
  653. package/dist/types.js +52 -51
  654. package/dist/utils/utils.js +4 -3
  655. package/package.json +1 -1
@@ -1,339 +1,605 @@
1
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
- return cooked;
4
- };
5
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
6
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
7
- if (ar || !(i in from)) {
8
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
9
- ar[i] = from[i];
10
- }
11
- }
12
- return to.concat(ar || Array.prototype.slice.call(from));
13
- };
14
- import React from 'react';
15
- import styled from 'styled-components';
16
- import Button from '../Button/Button';
17
- import { Size } from '../types';
18
- import { DropdownContentButtonStyling } from './CommonStyling';
19
- import { ComponentLStyling, ComponentXLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';
20
- import { COLORS, scrollBarStyling } from '../styles';
21
- import { Checkbox, RadioButton } from '../InputFields';
22
- import { Z_INDEXES } from '../styles/z-indexes';
23
- import MenuItem from '../MenuItem/MenuItem';
24
- var MAX_MENU_HEIGHT = 240;
25
- var AVG_OPTION_HEIGHT = 48;
26
- var OFFSET_BEFORE_SHOW = 1000000;
27
- export var DropdownContentContainer = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: none;\n pointer-events: auto;\n position: absolute;\n background-color: ", ";\n\n z-index: ", ";\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n &.down,\n &.up {\n ", "\n }\n }\n\n transform: translate(-", "px, -", "px);\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n"], ["\n display: none;\n pointer-events: auto;\n position: absolute;\n background-color: ", ";\n\n z-index: ", ";\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n &.down,\n &.up {\n ", "\n }\n }\n\n transform: translate(-", "px, -", "px);\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n"])), COLORS.white, Z_INDEXES.dropdown, function (props) { return (props.isButton ? '-4px' : '4px 0px'); }, function (props) { return "transform: translate(".concat(props.offsetLeft, ", ").concat(props.offsetTop, ");"); }, OFFSET_BEFORE_SHOW, OFFSET_BEFORE_SHOW, function (props) { return (props.isButton ? DropdownContentButtonStyling : ''); }, COLORS.neutral_100, function (props) { return (props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px'); }, function (props) { return (props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px'); }, function (props) { return (!props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px'); });
28
- export var DropdownContentItemsContainer = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n > *:hover {\n z-index: ", ";\n }\n\n > *:active,\n > *.active {\n z-index: ", ";\n }\n\n > *:focus {\n z-index: ", ";\n }\n"], ["\n > *:hover {\n z-index: ", ";\n }\n\n > *:active,\n > *.active {\n z-index: ", ";\n }\n\n > *:focus {\n z-index: ", ";\n }\n"])), Z_INDEXES.hover, Z_INDEXES.active, Z_INDEXES.focus);
29
- export var DropdownContentListContainer = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", "\n ", "\n ", "\n ", "\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n ", " {\n padding-top: ", ";\n padding-bottom: ", ";\n\n word-break: break-word;\n }\n\n *:focus {\n outline: none !important;\n }\n\n ", "\n"], ["\n ", "\n ", "\n ", "\n ", "\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n ", " {\n padding-top: ", ";\n padding-bottom: ", ";\n\n word-break: break-word;\n }\n\n *:focus {\n outline: none !important;\n }\n\n ", "\n"])), function (props) { return (props.scrollable ? 'overflow-y: scroll;' : ''); }, function (props) { return (props.scrollable ? 'margin-right: 6px;' : ''); }, function (props) { return (props.scrollable ? 'padding-right: 6px;' : ''); }, function (props) { return (props.itemsType != 'normal' ? 'margin-left: 4px;' : ''); }, DropdownContentItemsContainer, function (props) { return (props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'); }, function (props) { return (props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'); }, scrollBarStyling(Size.Small));
30
- var DropdownContentMenuContentContainer = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n h1,\n h2,\n h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n"], ["\n h1,\n h2,\n h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n"])), function (props) { return props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500); }, function (props) { return props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500); }, function (props) { return (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500); }, function (props) { return (props.size == Size.Small || !props.size ? '10px 16px 6px' : props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px'); }, function (props) { return props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500); }, function (props) { return props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500); }, function (props) { return (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500); }, function (props) { return (props.size == Size.Small || !props.size ? '8px 16px' : props.size == Size.Medium ? '12px 24px' : '16px 32px'); });
31
- var DividerContainer = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n position: relative;\n\n margin-top: ", ";\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n"], ["\n position: relative;\n\n margin-top: ", ";\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n"])), function (props) { return (props.size == Size.Large ? '16px' : props.size == Size.Medium ? '12px' : props.size == Size.Small || !props.size ? '8px' : '6px'); });
32
- var DropdownContentTopItemContainer = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n border-bottom-style: solid;\n border-bottom-color: ", ";\n border-bottom-width: 1px;\n margin-right: 22px;\n"], ["\n border-bottom-style: solid;\n border-bottom-color: ", ";\n border-bottom-width: 1px;\n margin-right: 22px;\n"])), COLORS.neutral_200);
33
- var DropdownContentActionButtonContainer = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n ", "\n ", "\n\n padding: ", ";\n\n button {\n width: 100%;\n }\n"], ["\n ", "\n ", "\n\n padding: ", ";\n\n button {\n width: 100%;\n }\n"])), function (props) { return (props.scrollable ? "border-top: 1px solid ".concat(COLORS.neutral_200, ";") : ''); }, function (props) { return (props.scrollable ? 'margin-top: 4px;' : ''); }, function (props) { return (props.size === Size.Small || !props.size ? '4px 16px 0px' : props.size === Size.Medium ? '12px 16px 8px' : '16px 16px 12px'); });
34
- var Overlay = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: ", ";\n"], ["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: ", ";\n"])), Z_INDEXES.modal);
35
- var DropdownContent = React.forwardRef(function (_a, ref) {
36
- var _b, _c;
37
- var id = _a.id, customizationProps = _a.customizationProps, alignLeft = _a.alignLeft, isButton = _a.isButton, size = _a.size, isOpen = _a.isOpen, width = _a.width, setIsOpen = _a.setIsOpen, filter = _a.filter, focused = _a.focused, setFocused = _a.setFocused, selectedValues = _a.selectedValues, setSelectedValues = _a.setSelectedValues, messageOnNoResults = _a.messageOnNoResults, outline = _a.outline, containerRef = _a.containerRef, onActiveDescendantChanged = _a.onActiveDescendantChanged, _d = _a.ariaRolesType, ariaRolesType = _d === void 0 ? 'menu' : _d;
38
- var _e = React.useState(false), isUp = _e[0], setIsUp = _e[1];
39
- var _f = React.useState(false), locationDefined = _f[0], setLocationDefined = _f[1];
40
- var _g = React.useState({ top: '0', left: '0' }), offset = _g[0], setOffset = _g[1];
41
- var dropdownContentRef = (_b = ref) !== null && _b !== void 0 ? _b : React.useRef(null);
42
- if (!customizationProps.itemsType)
43
- customizationProps.itemsType = 'normal';
44
- if (!size)
45
- size = Size.Small;
46
- var itemsListRef = React.useRef(null);
47
- var actionButtonRef = React.useRef(null);
48
- var determineDropUp = function () {
49
- var options = customizationProps.items;
50
- var rect = containerRef.current.getBoundingClientRect();
51
- var windowHeight = window.innerHeight;
52
- var menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);
53
- var instOffsetWithMenu = rect.top + rect.height + menuHeight;
54
- var up = instOffsetWithMenu >= windowHeight;
55
- setOffset({
56
- top: up ? "calc(-100% - ".concat(rect.height, "px ").concat(isButton ? '' : '- 8px', ")") : '0',
57
- left: alignLeft ? "calc(-".concat(rect.width, "px)") : "calc(-100%)",
58
- });
59
- setIsUp(up);
60
- setLocationDefined(true);
61
- };
62
- var setNewFocusedElement = function (index) {
63
- var _a, _b, _c, _d;
64
- if (outline)
65
- (_a = dropdownContentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
66
- var newFocusedElement = elRefs[index];
67
- if (onActiveDescendantChanged)
68
- onActiveDescendantChanged(index == 0 ? "".concat(id, "_topitem") : "".concat(id, "_").concat(index));
69
- var oldFocusedElement = focused || focused === 0 ? elRefs[focused] : null;
70
- if (newFocusedElement && newFocusedElement !== oldFocusedElement) {
71
- setFocused(index);
72
- (_b = oldFocusedElement === null || oldFocusedElement === void 0 ? void 0 : oldFocusedElement.current) === null || _b === void 0 ? void 0 : _b.classList.remove('dropdown-hover');
73
- (_c = newFocusedElement.current) === null || _c === void 0 ? void 0 : _c.classList.add('dropdown-hover');
74
- (_d = newFocusedElement.current) === null || _d === void 0 ? void 0 : _d.scrollIntoView({
75
- block: 'nearest',
76
- inline: 'nearest',
77
- });
78
- }
79
- };
80
- var getFilteredItems = function () {
81
- var filtrationString = (filter !== null && filter !== void 0 ? filter : '').toUpperCase();
82
- return customizationProps.items.filter(function (x) { var _a, _b; return ((_a = x === null || x === void 0 ? void 0 : x.value) === null || _a === void 0 ? void 0 : _a.toUpperCase().includes(filtrationString)) || ((_b = x === null || x === void 0 ? void 0 : x.displayLabel) === null || _b === void 0 ? void 0 : _b.toUpperCase().includes(filtrationString)); });
83
- };
84
- var findNextActiveIndex = function (index, direction, items) {
85
- var _a;
86
- for (var i = index + direction; i > 0 && i <= items.length; i += direction) {
87
- if (!((_a = items[i - 1]) === null || _a === void 0 ? void 0 : _a.disabled)) {
88
- return i;
89
- }
90
- }
91
- return index;
92
- };
93
- var handleKeyDown = function (e) {
94
- var _a;
95
- if (isOpen) {
96
- if (e.key === 'ArrowUp' || e.key === 'Up') {
97
- e.preventDefault();
98
- var focusedNow = focused || focused === 0 ? focused : arrLength + 1;
99
- if (!!focusedNow) {
100
- focusedNow = focusedNow === 1 && haveTopItem() ? 0 : findNextActiveIndex(focusedNow, -1, getFilteredItems());
101
- setNewFocusedElement(focusedNow);
102
- }
103
- }
104
- else if (e.key === 'ArrowDown' || e.key === 'Down') {
105
- e.preventDefault();
106
- var focusedNow = focused;
107
- focusedNow = !!focusedNow || focusedNow === 0 ? findNextActiveIndex(focusedNow, 1, getFilteredItems()) : haveTopItem() ? 0 : 1;
108
- setNewFocusedElement(focusedNow);
109
- }
110
- else if (e.key === 'Escape' || e.key === 'Esc') {
111
- setIsOpen(false);
112
- setFocused(null);
113
- if (onActiveDescendantChanged)
114
- onActiveDescendantChanged(undefined);
115
- }
116
- else if ((e.key === 'Enter' || e.key === ' ') && focused !== null && e.target !== (actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.current)) {
117
- e.preventDefault();
118
- var focusedElement = elRefs[focused];
119
- if (focusedElement) {
120
- (_a = focusedElement.current) === null || _a === void 0 ? void 0 : _a.click();
121
- }
122
- if (onActiveDescendantChanged)
123
- onActiveDescendantChanged(undefined);
124
- }
125
- }
126
- };
127
- React.useEffect(function () {
128
- document.addEventListener('keydown', handleKeyDown);
129
- return function () {
130
- document.removeEventListener('keydown', handleKeyDown);
131
- };
132
- }, []);
133
- var scrollPosition = React.useRef(0);
134
- var handleScroll = function () {
135
- var _a;
136
- scrollPosition.current = (_a = itemsListRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop;
137
- };
138
- React.useLayoutEffect(function () {
139
- var _a;
140
- if (itemsListRef.current)
141
- itemsListRef.current.scrollTop = (_a = scrollPosition.current) !== null && _a !== void 0 ? _a : 0;
142
- }, [selectedValues]);
143
- var getCorrectRef = function (ref) {
144
- switch (customizationProps.itemsType) {
145
- case 'normal':
146
- return ref || React.createRef();
147
- default:
148
- return ref || React.createRef();
149
- }
150
- };
151
- var arrLength = getFilteredItems().length;
152
- var _h = React.useState([]), elRefs = _h[0], setElRefs = _h[1];
153
- React.useEffect(function () {
154
- if ((elRefs === null || elRefs === void 0 ? void 0 : elRefs.length) !== arrLength) {
155
- setFocused(null);
156
- }
157
- setElRefs(function (elRefs) {
158
- return Array(arrLength + 1)
159
- .fill(null)
160
- .map(function (_, i) { return getCorrectRef(elRefs[i]); });
161
- });
162
- }, [isOpen, arrLength]);
163
- React.useLayoutEffect(function () {
164
- isOpen && !locationDefined && determineDropUp();
165
- }, [isOpen, locationDefined]);
166
- var haveTopItem = function () {
167
- var _a;
168
- if (!customizationProps.pinTopItem)
169
- return false;
170
- if (customizationProps.itemsType === 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)
171
- return true;
172
- else if (customizationProps.itemsType === 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0))
173
- return true;
174
- else if (customizationProps.itemsType === 'normal' && ((_a = getSuggestions()) === null || _a === void 0 ? void 0 : _a.length) > 0)
175
- return true;
176
- return false;
177
- };
178
- var getSuggestions = function () {
179
- return getFilteredItems().filter(function (x) { return x.suggestion; });
180
- };
181
- /**
182
- * when dropdown opens set correct position of focused item
183
- * */
184
- React.useLayoutEffect(function () {
185
- if (isOpen && (focused || focused === 0)) {
186
- setNewFocusedElement(focused === 0 && !haveTopItem() ? 1 : focused);
187
- }
188
- }, [isOpen, focused]);
189
- /**
190
- * Reset dropdown content state on close
191
- * */
192
- React.useEffect(function () {
193
- var _a, _b, _c, _d, _e;
194
- if (!isOpen) {
195
- setLocationDefined(false);
196
- for (var _i = 0, elRefs_1 = elRefs; _i < elRefs_1.length; _i++) {
197
- var elRef = elRefs_1[_i];
198
- (_a = elRef.current) === null || _a === void 0 ? void 0 : _a.classList.remove('dropdown-hover');
199
- }
200
- setFocused(null);
201
- if (onActiveDescendantChanged)
202
- onActiveDescendantChanged(undefined);
203
- (_b = dropdownContentRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove('outline');
204
- (_c = dropdownContentRef.current) === null || _c === void 0 ? void 0 : _c.blur();
205
- }
206
- else {
207
- if (outline) {
208
- (_d = dropdownContentRef.current) === null || _d === void 0 ? void 0 : _d.classList.add('outline');
209
- (_e = dropdownContentRef.current) === null || _e === void 0 ? void 0 : _e.focus();
210
- }
211
- }
212
- }, [isOpen, dropdownContentRef, focused, outline]);
213
- /**
214
- * Scroll item container to top when dropdown opens
215
- * */
216
- React.useEffect(function () {
217
- if (isOpen && itemsListRef.current) {
218
- itemsListRef.current.scrollTop = 0;
219
- }
220
- }, [isOpen]);
221
- React.useEffect(function () {
222
- if (isOpen) {
223
- var observer_1 = new IntersectionObserver(function (entries) {
224
- var _a;
225
- if (!entries[0].isIntersecting) {
226
- setIsOpen(false);
227
- //@ts-ignore
228
- (_a = document === null || document === void 0 ? void 0 : document.activeElement) === null || _a === void 0 ? void 0 : _a.blur();
229
- }
230
- }, { threshold: [0], rootMargin: '8px' });
231
- observer_1.observe(containerRef.current);
232
- calculateOffset();
233
- window.addEventListener('scroll', calculateOffset, true);
234
- window.addEventListener('resize', calculateOffset);
235
- return function () {
236
- observer_1.disconnect();
237
- window.removeEventListener('scroll', calculateOffset, true);
238
- window.removeEventListener('resize', calculateOffset);
239
- };
240
- }
241
- return function () { };
242
- }, [isOpen]);
243
- var handleItemClick = function (selected, item) {
244
- var newValue = [];
245
- if (customizationProps.multiSelect) {
246
- if (selected)
247
- newValue = __spreadArray(__spreadArray([], selectedValues, true), [item.value], false);
248
- else
249
- newValue = selectedValues.filter(function (x) { return x != item.value; });
250
- }
251
- else
252
- newValue = selected ? [item.value] : [];
253
- setSelectedValues(newValue);
254
- if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValue)) {
255
- setIsOpen(false);
256
- }
257
- };
258
- var getTopItem = function () {
259
- var _a, _b, _c, _d;
260
- if (!customizationProps.pinTopItem)
261
- return;
262
- var visibleItems = getFilteredItems();
263
- var allSelected = (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.filter(function (x) { return visibleItems.some(function (y) { return y.value == x; }); }).length) == visibleItems.length;
264
- var showTopItem = false;
265
- var suggestions = getSuggestions();
266
- var displayLabel = selectedValues[0] ? (_b = (_a = customizationProps.items) === null || _a === void 0 ? void 0 : _a.find(function (c) { return c.value === selectedValues[0]; })) === null || _b === void 0 ? void 0 : _b.displayLabel : undefined;
267
- if (customizationProps.itemsType == 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)
268
- showTopItem = true;
269
- else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0))
270
- showTopItem = true;
271
- else if (customizationProps.itemsType == 'normal' && suggestions.length > 0)
272
- showTopItem = true;
273
- if (!showTopItem)
274
- return;
275
- var selectedFirst = selectedValues.length > 0 ? visibleItems.find(function (x) { return x.value == selectedValues[0]; }) : null;
276
- return (React.createElement(DropdownContentTopItemContainer, { size: size },
277
- customizationProps.itemsType === 'radio' && (React.createElement(RadioButton, { ref: elRefs[0], role: 'menuitemradio', iconPointerEventsTransparent: true, onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem")); }, tabIndexVal: -1, className: "".concat(focused === 0 ? 'dropdown-hover' : ''), select: function () { }, label: (_c = selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.displayLabel) !== null && _c !== void 0 ? _c : selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.value, size: size, id: "".concat(id, "_topitem"), selected: true })),
278
- customizationProps.itemsType === 'checkbox' && (React.createElement(Checkbox, { ref: elRefs[0], role: 'menuitemcheckbox', tabIndexVal: -1, className: "".concat(focused === 0 ? 'dropdown-hover' : ''), select: function (selected) {
279
- if (!customizationProps.multiSelect)
280
- return;
281
- var newValues = selected ? visibleItems.map(function (x) { return x.value; }) : [];
282
- setSelectedValues(newValues);
283
- if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues))
284
- setIsOpen(false);
285
- }, onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem")); }, iconPointerEventsTransparent: true, semiSelected: customizationProps.multiSelect && !allSelected && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0, size: size, id: "".concat(id, "_checkbox_selectall"), label: customizationProps.multiSelect ? 'Select all' : (_d = selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.displayLabel) !== null && _d !== void 0 ? _d : selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.value, selected: !customizationProps.multiSelect || allSelected })),
286
- customizationProps.itemsType === 'normal' && (React.createElement(React.Fragment, null, suggestions.map(function (x) { return (React.createElement(MenuItem, { role: ariaRolesType == 'input' ? 'option' : 'menu', key: "".concat(id, "_topitem_").concat(x.value), item: x, size: size, active: false, tabIndex: -1, onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem")); }, className: "".concat(focused === 0 ? 'dropdown-hover' : ''), ref: elRefs[0], id: "".concat(id, "_topitem"), onClickHandler: function (e) {
287
- e.stopPropagation();
288
- customizationProps.onValueUpdate([x.value]);
289
- setSelectedValues([x.value]);
290
- setIsOpen(false);
291
- setFocused(null);
292
- } })); })))));
293
- };
294
- var getElements = function (messageOnNoResults, size) {
295
- if (getFilteredItems().length === 0) {
296
- return React.createElement(MenuItem, { item: { value: messageOnNoResults, disabled: true }, size: size, id: "noResultsFound", active: false, onClickHandler: function (e) { } });
297
- }
298
- return (React.createElement(DropdownContentItemsContainer, { size: size }, getFilteredItems()
299
- .filter(function (x) { return x && (customizationProps.itemsType != 'normal' || !x.suggestion); })
300
- .map(function (item, index) {
301
- var _a, _b;
302
- return (React.createElement(React.Fragment, { key: "key_".concat(id, "_").concat(item.value) },
303
- item.customContent,
304
- !item.customContent && customizationProps.itemsType == 'radio' && (React.createElement(RadioButton, { role: 'menuitemradio', select: function (selected) { return handleItemClick(selected, item); }, ref: elRefs[index + 1], size: size, tabIndexVal: -1, className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''), iconPointerEventsTransparent: true, disabled: item === null || item === void 0 ? void 0 : item.disabled, key: "key_".concat(id, "_").concat(index + 1), onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1)); }, id: "".concat(id, "_").concat(index + 1), label: (_a = item.displayLabel) !== null && _a !== void 0 ? _a : item.value, selected: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value) })),
305
- !item.customContent && customizationProps.itemsType == 'checkbox' && (React.createElement(Checkbox, { role: 'menuitemcheckbox', select: function (selected) { return handleItemClick(selected, item); }, iconPointerEventsTransparent: true, disabled: item === null || item === void 0 ? void 0 : item.disabled, className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''), ref: elRefs[index + 1], size: size, tabIndexVal: -1, key: "key_".concat(id, "_").concat(index + 1), onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1)); }, id: "".concat(id, "_").concat(index + 1), label: (_b = item.displayLabel) !== null && _b !== void 0 ? _b : item.value, selected: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value) })),
306
- !item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && (React.createElement(MenuItem, { role: ariaRolesType == 'input' ? 'option' : 'menu', key: "key_".concat(id, "_").concat(index + 1), id: "".concat(id, "_").concat(index + 1), item: item, tabIndex: -1, className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''), size: size, onFocus: function (e) { return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1)); }, active: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value), ref: elRefs[index + 1], onClickHandler: function (e) {
307
- e.stopPropagation();
308
- customizationProps.onValueUpdate([item.value]);
309
- setSelectedValues([item.value]);
310
- setIsOpen(false);
311
- setFocused(null);
312
- } }))));
313
- })));
314
- };
315
- var calculateOffset = function () {
316
- var _a;
317
- var rect = (_a = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
318
- if (rect) {
319
- dropdownContentRef.current.style.left = "".concat(rect.x + rect.width, "px");
320
- dropdownContentRef.current.style.top = "".concat(rect.y + rect.height, "px");
321
- dropdownContentRef.current.style.width = width !== null && width !== void 0 ? width : "".concat(rect.width, "px");
322
- }
323
- determineDropUp();
324
- };
325
- var cls = "".concat(isOpen ? 'show' : '', " ").concat(isOpen && outline ? 'outline' : '', " ").concat(locationDefined ? (isUp ? 'up' : 'down') : '');
326
- return (React.createElement(Overlay, null,
327
- React.createElement(DropdownContentContainer, { role: ariaRolesType == "menu" ? "menu" : "optionlist", ref: dropdownContentRef, size: size, offsetTop: offset.top, id: id, offsetLeft: offset.left, tabIndex: -1, isButton: isButton, alignLeft: alignLeft, scrollable: customizationProps.scrollable, maxHeight: customizationProps.maxHeight, className: cls },
328
- React.createElement(DropdownContentListContainer, { role: "group", size: size, itemsType: customizationProps.itemsType, onScroll: handleScroll, ref: itemsListRef, outline: outline, scrollable: customizationProps.scrollable },
329
- customizationProps.menuContent && (React.createElement(DropdownContentMenuContentContainer, { size: size },
330
- customizationProps.menuContent,
331
- React.createElement(DividerContainer, { size: size },
332
- React.createElement("div", { className: "divider" })))),
333
- customizationProps.pinTopItem && getTopItem(),
334
- getElements(messageOnNoResults, size)),
335
- customizationProps.action && customizationProps.actionLabel && (React.createElement(DropdownContentActionButtonContainer, { size: size, scrollable: customizationProps.scrollable },
336
- React.createElement(Button, { width: "100%", role: "menuitem", icon: customizationProps.actionIcon, ref: actionButtonRef, loading: customizationProps.actionLoading, disabled: customizationProps.actionDisabled, variant: (_c = customizationProps.actionVariant) !== null && _c !== void 0 ? _c : 'primary', size: size, onClick: function () { return customizationProps.action() && setIsOpen(false); } }, customizationProps.actionLabel))))));
337
- });
338
- export default DropdownContent;
339
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
4
+ import _pt from "prop-types";
5
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
6
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
+ import React from 'react';
10
+ import styled from 'styled-components';
11
+ import Button from '../Button/Button';
12
+ import { Size } from '../types';
13
+ import { DropdownContentButtonStyling } from './CommonStyling';
14
+ import { ComponentLStyling, ComponentXLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';
15
+ import { COLORS, scrollBarStyling } from '../styles';
16
+ import { Checkbox, RadioButton } from '../InputFields';
17
+ import { Z_INDEXES } from '../styles/z-indexes';
18
+ import MenuItem from '../MenuItem/MenuItem';
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { Fragment as _Fragment } from "react/jsx-runtime";
21
+ import { jsxs as _jsxs } from "react/jsx-runtime";
22
+ var MAX_MENU_HEIGHT = 240;
23
+ var AVG_OPTION_HEIGHT = 48;
24
+ var OFFSET_BEFORE_SHOW = 1000000;
25
+ export var DropdownContentContainer = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n pointer-events: auto;\n position: absolute;\n background-color: ", ";\n\n z-index: ", ";\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n &.down,\n &.up {\n ", "\n }\n }\n\n transform: translate(-", "px, -", "px);\n\n &.outline:focus:after {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n outline: 4px solid black;\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n &:focus {\n outline: none;\n }\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n"])), COLORS.white, Z_INDEXES.dropdown, function (props) {
26
+ return props.isButton ? '-4px' : '4px 0px';
27
+ }, function (props) {
28
+ return "transform: translate(".concat(props.offsetLeft, ", ").concat(props.offsetTop, ");");
29
+ }, OFFSET_BEFORE_SHOW, OFFSET_BEFORE_SHOW, function (props) {
30
+ return props.isButton ? DropdownContentButtonStyling : '';
31
+ }, COLORS.neutral_100, function (props) {
32
+ return props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px';
33
+ }, function (props) {
34
+ return props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px';
35
+ }, function (props) {
36
+ return !props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px';
37
+ });
38
+ export var DropdownContentItemsContainer = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n > *:hover {\n z-index: ", ";\n }\n\n > *:active,\n > *.active {\n z-index: ", ";\n }\n\n > *:focus {\n z-index: ", ";\n }\n"])), Z_INDEXES.hover, Z_INDEXES.active, Z_INDEXES.focus);
39
+ export var DropdownContentListContainer = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", "\n ", "\n ", "\n ", "\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n ", " {\n padding-top: ", ";\n padding-bottom: ", ";\n\n word-break: break-word;\n }\n\n *:focus {\n outline: none !important;\n }\n\n ", "\n"])), function (props) {
40
+ return props.scrollable ? 'overflow-y: scroll;' : '';
41
+ }, function (props) {
42
+ return props.scrollable ? 'margin-right: 6px;' : '';
43
+ }, function (props) {
44
+ return props.scrollable ? 'padding-right: 6px;' : '';
45
+ }, function (props) {
46
+ return props.itemsType != 'normal' ? 'margin-left: 4px;' : '';
47
+ }, DropdownContentItemsContainer, function (props) {
48
+ return props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px';
49
+ }, function (props) {
50
+ return props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px';
51
+ }, scrollBarStyling(Size.Small));
52
+ var DropdownContentMenuContentContainer = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n h1,\n h2,\n h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ", "\n ", "\n ", "\n padding: ", ";\n }\n"])), function (props) {
53
+ return props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500);
54
+ }, function (props) {
55
+ return props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500);
56
+ }, function (props) {
57
+ return (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500);
58
+ }, function (props) {
59
+ return props.size == Size.Small || !props.size ? '10px 16px 6px' : props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px';
60
+ }, function (props) {
61
+ return props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500);
62
+ }, function (props) {
63
+ return props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500);
64
+ }, function (props) {
65
+ return (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500);
66
+ }, function (props) {
67
+ return props.size == Size.Small || !props.size ? '8px 16px' : props.size == Size.Medium ? '12px 24px' : '16px 32px';
68
+ });
69
+ var DividerContainer = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: relative;\n\n margin-top: ", ";\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n"])), function (props) {
70
+ return props.size == Size.Large ? '16px' : props.size == Size.Medium ? '12px' : props.size == Size.Small || !props.size ? '8px' : '6px';
71
+ });
72
+ var DropdownContentTopItemContainer = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n border-bottom-style: solid;\n border-bottom-color: ", ";\n border-bottom-width: 1px;\n margin-right: 22px;\n"])), COLORS.neutral_200);
73
+ var DropdownContentActionButtonContainer = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n ", "\n ", "\n\n padding: ", ";\n\n button {\n width: 100%;\n }\n"])), function (props) {
74
+ return props.scrollable ? "border-top: 1px solid ".concat(COLORS.neutral_200, ";") : '';
75
+ }, function (props) {
76
+ return props.scrollable ? 'margin-top: 4px;' : '';
77
+ }, function (props) {
78
+ return props.size === Size.Small || !props.size ? '4px 16px 0px' : props.size === Size.Medium ? '12px 16px 8px' : '16px 16px 12px';
79
+ });
80
+ var Overlay = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: ", ";\n"])), Z_INDEXES.modal);
81
+ var DropdownContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
82
+ var _ref2, _customizationProps$a;
83
+ var id = _ref.id,
84
+ customizationProps = _ref.customizationProps,
85
+ alignLeft = _ref.alignLeft,
86
+ isButton = _ref.isButton,
87
+ size = _ref.size,
88
+ isOpen = _ref.isOpen,
89
+ width = _ref.width,
90
+ setIsOpen = _ref.setIsOpen,
91
+ filter = _ref.filter,
92
+ focused = _ref.focused,
93
+ setFocused = _ref.setFocused,
94
+ selectedValues = _ref.selectedValues,
95
+ setSelectedValues = _ref.setSelectedValues,
96
+ messageOnNoResults = _ref.messageOnNoResults,
97
+ outline = _ref.outline,
98
+ containerRef = _ref.containerRef,
99
+ onActiveDescendantChanged = _ref.onActiveDescendantChanged,
100
+ _ref$ariaRolesType = _ref.ariaRolesType,
101
+ ariaRolesType = _ref$ariaRolesType === void 0 ? 'menu' : _ref$ariaRolesType;
102
+ var _React$useState = React.useState(false),
103
+ _React$useState2 = _slicedToArray(_React$useState, 2),
104
+ isUp = _React$useState2[0],
105
+ setIsUp = _React$useState2[1];
106
+ var _React$useState3 = React.useState(false),
107
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
108
+ locationDefined = _React$useState4[0],
109
+ setLocationDefined = _React$useState4[1];
110
+ var _React$useState5 = React.useState({
111
+ top: '0',
112
+ left: '0'
113
+ }),
114
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
115
+ offset = _React$useState6[0],
116
+ setOffset = _React$useState6[1];
117
+ var dropdownContentRef = (_ref2 = ref) !== null && _ref2 !== void 0 ? _ref2 : React.useRef(null);
118
+ if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';
119
+ if (!size) size = Size.Small;
120
+ var itemsListRef = React.useRef(null);
121
+ var actionButtonRef = React.useRef(null);
122
+ var determineDropUp = function determineDropUp() {
123
+ var options = customizationProps.items;
124
+ var rect = containerRef.current.getBoundingClientRect();
125
+ var windowHeight = window.innerHeight;
126
+ var menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);
127
+ var instOffsetWithMenu = rect.top + rect.height + menuHeight;
128
+ var up = instOffsetWithMenu >= windowHeight;
129
+ setOffset({
130
+ top: up ? "calc(-100% - ".concat(rect.height, "px ").concat(isButton ? '' : '- 8px', ")") : '0',
131
+ left: alignLeft ? "calc(-".concat(rect.width, "px)") : "calc(-100%)"
132
+ });
133
+ setIsUp(up);
134
+ setLocationDefined(true);
135
+ };
136
+ var setNewFocusedElement = function setNewFocusedElement(index) {
137
+ var _dropdownContentRef$c;
138
+ if (outline) (_dropdownContentRef$c = dropdownContentRef.current) === null || _dropdownContentRef$c === void 0 ? void 0 : _dropdownContentRef$c.focus();
139
+ var newFocusedElement = elRefs[index];
140
+ if (onActiveDescendantChanged) onActiveDescendantChanged(index == 0 ? "".concat(id, "_topitem") : "".concat(id, "_").concat(index));
141
+ var oldFocusedElement = focused || focused === 0 ? elRefs[focused] : null;
142
+ if (newFocusedElement && newFocusedElement !== oldFocusedElement) {
143
+ var _oldFocusedElement$cu, _newFocusedElement$cu, _newFocusedElement$cu2;
144
+ setFocused(index);
145
+ oldFocusedElement === null || oldFocusedElement === void 0 ? void 0 : (_oldFocusedElement$cu = oldFocusedElement.current) === null || _oldFocusedElement$cu === void 0 ? void 0 : _oldFocusedElement$cu.classList.remove('dropdown-hover');
146
+ (_newFocusedElement$cu = newFocusedElement.current) === null || _newFocusedElement$cu === void 0 ? void 0 : _newFocusedElement$cu.classList.add('dropdown-hover');
147
+ (_newFocusedElement$cu2 = newFocusedElement.current) === null || _newFocusedElement$cu2 === void 0 ? void 0 : _newFocusedElement$cu2.scrollIntoView({
148
+ block: 'nearest',
149
+ inline: 'nearest'
150
+ });
151
+ }
152
+ };
153
+ var getFilteredItems = function getFilteredItems() {
154
+ var filtrationString = (filter !== null && filter !== void 0 ? filter : '').toUpperCase();
155
+ return customizationProps.items.filter(function (x) {
156
+ var _x$value, _x$displayLabel;
157
+ return (x === null || x === void 0 ? void 0 : (_x$value = x.value) === null || _x$value === void 0 ? void 0 : _x$value.toUpperCase().includes(filtrationString)) || (x === null || x === void 0 ? void 0 : (_x$displayLabel = x.displayLabel) === null || _x$displayLabel === void 0 ? void 0 : _x$displayLabel.toUpperCase().includes(filtrationString));
158
+ });
159
+ };
160
+ var findNextActiveIndex = function findNextActiveIndex(index, direction, items) {
161
+ for (var i = index + direction; i > 0 && i <= items.length; i += direction) {
162
+ var _items;
163
+ if (!((_items = items[i - 1]) !== null && _items !== void 0 && _items.disabled)) {
164
+ return i;
165
+ }
166
+ }
167
+ return index;
168
+ };
169
+ var handleKeyDown = function handleKeyDown(e) {
170
+ if (isOpen) {
171
+ if (e.key === 'ArrowUp' || e.key === 'Up') {
172
+ e.preventDefault();
173
+ var focusedNow = focused || focused === 0 ? focused : arrLength + 1;
174
+ if (!!focusedNow) {
175
+ focusedNow = focusedNow === 1 && haveTopItem() ? 0 : findNextActiveIndex(focusedNow, -1, getFilteredItems());
176
+ setNewFocusedElement(focusedNow);
177
+ }
178
+ } else if (e.key === 'ArrowDown' || e.key === 'Down') {
179
+ e.preventDefault();
180
+ var _focusedNow = focused;
181
+ _focusedNow = !!_focusedNow || _focusedNow === 0 ? findNextActiveIndex(_focusedNow, 1, getFilteredItems()) : haveTopItem() ? 0 : 1;
182
+ setNewFocusedElement(_focusedNow);
183
+ } else if (e.key === 'Escape' || e.key === 'Esc') {
184
+ setIsOpen(false);
185
+ setFocused(null);
186
+ if (onActiveDescendantChanged) onActiveDescendantChanged(undefined);
187
+ } else if ((e.key === 'Enter' || e.key === ' ') && focused !== null && e.target !== (actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.current)) {
188
+ e.preventDefault();
189
+ var focusedElement = elRefs[focused];
190
+ if (focusedElement) {
191
+ var _focusedElement$curre;
192
+ (_focusedElement$curre = focusedElement.current) === null || _focusedElement$curre === void 0 ? void 0 : _focusedElement$curre.click();
193
+ }
194
+ if (onActiveDescendantChanged) onActiveDescendantChanged(undefined);
195
+ }
196
+ }
197
+ };
198
+ React.useEffect(function () {
199
+ document.addEventListener('keydown', handleKeyDown);
200
+ return function () {
201
+ document.removeEventListener('keydown', handleKeyDown);
202
+ };
203
+ }, []);
204
+ var scrollPosition = React.useRef(0);
205
+ var handleScroll = function handleScroll() {
206
+ var _itemsListRef$current;
207
+ scrollPosition.current = (_itemsListRef$current = itemsListRef.current) === null || _itemsListRef$current === void 0 ? void 0 : _itemsListRef$current.scrollTop;
208
+ };
209
+ React.useLayoutEffect(function () {
210
+ var _scrollPosition$curre;
211
+ if (itemsListRef.current) itemsListRef.current.scrollTop = (_scrollPosition$curre = scrollPosition.current) !== null && _scrollPosition$curre !== void 0 ? _scrollPosition$curre : 0;
212
+ }, [selectedValues]);
213
+ var getCorrectRef = function getCorrectRef(ref) {
214
+ switch (customizationProps.itemsType) {
215
+ case 'normal':
216
+ return ref || /*#__PURE__*/React.createRef();
217
+ default:
218
+ return ref || /*#__PURE__*/React.createRef();
219
+ }
220
+ };
221
+ var arrLength = getFilteredItems().length;
222
+ var _React$useState7 = React.useState([]),
223
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
224
+ elRefs = _React$useState8[0],
225
+ setElRefs = _React$useState8[1];
226
+ React.useEffect(function () {
227
+ if ((elRefs === null || elRefs === void 0 ? void 0 : elRefs.length) !== arrLength) {
228
+ setFocused(null);
229
+ }
230
+ setElRefs(function (elRefs) {
231
+ return Array(arrLength + 1).fill(null).map(function (_, i) {
232
+ return getCorrectRef(elRefs[i]);
233
+ });
234
+ });
235
+ }, [isOpen, arrLength]);
236
+ React.useLayoutEffect(function () {
237
+ isOpen && !locationDefined && determineDropUp();
238
+ }, [isOpen, locationDefined]);
239
+ var haveTopItem = function haveTopItem() {
240
+ var _getSuggestions;
241
+ if (!customizationProps.pinTopItem) return false;
242
+ if (customizationProps.itemsType === 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0) return true;else if (customizationProps.itemsType === 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)) return true;else if (customizationProps.itemsType === 'normal' && ((_getSuggestions = getSuggestions()) === null || _getSuggestions === void 0 ? void 0 : _getSuggestions.length) > 0) return true;
243
+ return false;
244
+ };
245
+ var getSuggestions = function getSuggestions() {
246
+ return getFilteredItems().filter(function (x) {
247
+ return x.suggestion;
248
+ });
249
+ };
250
+
251
+ /**
252
+ * when dropdown opens set correct position of focused item
253
+ * */
254
+ React.useLayoutEffect(function () {
255
+ if (isOpen && (focused || focused === 0)) {
256
+ setNewFocusedElement(focused === 0 && !haveTopItem() ? 1 : focused);
257
+ }
258
+ }, [isOpen, focused]);
259
+
260
+ /**
261
+ * Reset dropdown content state on close
262
+ * */
263
+ React.useEffect(function () {
264
+ if (!isOpen) {
265
+ var _dropdownContentRef$c2, _dropdownContentRef$c3;
266
+ setLocationDefined(false);
267
+ var _iterator = _createForOfIteratorHelper(elRefs),
268
+ _step;
269
+ try {
270
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
271
+ var _elRef$current;
272
+ var elRef = _step.value;
273
+ (_elRef$current = elRef.current) === null || _elRef$current === void 0 ? void 0 : _elRef$current.classList.remove('dropdown-hover');
274
+ }
275
+ } catch (err) {
276
+ _iterator.e(err);
277
+ } finally {
278
+ _iterator.f();
279
+ }
280
+ setFocused(null);
281
+ if (onActiveDescendantChanged) onActiveDescendantChanged(undefined);
282
+ (_dropdownContentRef$c2 = dropdownContentRef.current) === null || _dropdownContentRef$c2 === void 0 ? void 0 : _dropdownContentRef$c2.classList.remove('outline');
283
+ (_dropdownContentRef$c3 = dropdownContentRef.current) === null || _dropdownContentRef$c3 === void 0 ? void 0 : _dropdownContentRef$c3.blur();
284
+ } else {
285
+ if (outline) {
286
+ var _dropdownContentRef$c4, _dropdownContentRef$c5;
287
+ (_dropdownContentRef$c4 = dropdownContentRef.current) === null || _dropdownContentRef$c4 === void 0 ? void 0 : _dropdownContentRef$c4.classList.add('outline');
288
+ (_dropdownContentRef$c5 = dropdownContentRef.current) === null || _dropdownContentRef$c5 === void 0 ? void 0 : _dropdownContentRef$c5.focus();
289
+ }
290
+ }
291
+ }, [isOpen, dropdownContentRef, focused, outline]);
292
+
293
+ /**
294
+ * Scroll item container to top when dropdown opens
295
+ * */
296
+ React.useEffect(function () {
297
+ if (isOpen && itemsListRef.current) {
298
+ itemsListRef.current.scrollTop = 0;
299
+ }
300
+ }, [isOpen]);
301
+ React.useEffect(function () {
302
+ if (isOpen) {
303
+ var observer = new IntersectionObserver(function (entries) {
304
+ if (!entries[0].isIntersecting) {
305
+ var _document, _document$activeEleme;
306
+ setIsOpen(false);
307
+ //@ts-ignore
308
+ (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.blur();
309
+ }
310
+ }, {
311
+ threshold: [0],
312
+ rootMargin: '8px'
313
+ });
314
+ observer.observe(containerRef.current);
315
+ calculateOffset();
316
+ window.addEventListener('scroll', calculateOffset, true);
317
+ window.addEventListener('resize', calculateOffset);
318
+ return function () {
319
+ observer.disconnect();
320
+ window.removeEventListener('scroll', calculateOffset, true);
321
+ window.removeEventListener('resize', calculateOffset);
322
+ };
323
+ }
324
+ return function () {};
325
+ }, [isOpen]);
326
+ var handleItemClick = function handleItemClick(selected, item) {
327
+ var newValue = [];
328
+ if (customizationProps.multiSelect) {
329
+ if (selected) newValue = [].concat(_toConsumableArray(selectedValues), [item.value]);else newValue = selectedValues.filter(function (x) {
330
+ return x != item.value;
331
+ });
332
+ } else newValue = selected ? [item.value] : [];
333
+ setSelectedValues(newValue);
334
+ if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValue)) {
335
+ setIsOpen(false);
336
+ }
337
+ };
338
+ var getTopItem = function getTopItem() {
339
+ var _customizationProps$i, _customizationProps$i2, _selectedFirst$displa, _selectedFirst$displa2;
340
+ if (!customizationProps.pinTopItem) return;
341
+ var visibleItems = getFilteredItems();
342
+ var allSelected = (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.filter(function (x) {
343
+ return visibleItems.some(function (y) {
344
+ return y.value == x;
345
+ });
346
+ }).length) == visibleItems.length;
347
+ var showTopItem = false;
348
+ var suggestions = getSuggestions();
349
+ var displayLabel = selectedValues[0] ? (_customizationProps$i = customizationProps.items) === null || _customizationProps$i === void 0 ? void 0 : (_customizationProps$i2 = _customizationProps$i.find(function (c) {
350
+ return c.value === selectedValues[0];
351
+ })) === null || _customizationProps$i2 === void 0 ? void 0 : _customizationProps$i2.displayLabel : undefined;
352
+ if (customizationProps.itemsType == 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0) showTopItem = true;else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)) showTopItem = true;else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;
353
+ if (!showTopItem) return;
354
+ var selectedFirst = selectedValues.length > 0 ? visibleItems.find(function (x) {
355
+ return x.value == selectedValues[0];
356
+ }) : null;
357
+ return /*#__PURE__*/_jsxs(DropdownContentTopItemContainer, {
358
+ size: size,
359
+ children: [customizationProps.itemsType === 'radio' && /*#__PURE__*/_jsx(RadioButton, {
360
+ ref: elRefs[0],
361
+ role: "menuitemradio",
362
+ iconPointerEventsTransparent: true,
363
+ onFocus: function onFocus(e) {
364
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem"));
365
+ },
366
+ tabIndexVal: -1,
367
+ className: "".concat(focused === 0 ? 'dropdown-hover' : ''),
368
+ select: function select() {},
369
+ label: (_selectedFirst$displa = selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.displayLabel) !== null && _selectedFirst$displa !== void 0 ? _selectedFirst$displa : selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.value,
370
+ size: size,
371
+ id: "".concat(id, "_topitem"),
372
+ selected: true
373
+ }), customizationProps.itemsType === 'checkbox' && /*#__PURE__*/_jsx(Checkbox, {
374
+ ref: elRefs[0],
375
+ role: "menuitemcheckbox",
376
+ tabIndexVal: -1,
377
+ className: "".concat(focused === 0 ? 'dropdown-hover' : ''),
378
+ select: function select(selected) {
379
+ if (!customizationProps.multiSelect) return;
380
+ var newValues = selected ? visibleItems.map(function (x) {
381
+ return x.value;
382
+ }) : [];
383
+ setSelectedValues(newValues);
384
+ if (customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues)) setIsOpen(false);
385
+ },
386
+ onFocus: function onFocus(e) {
387
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem"));
388
+ },
389
+ iconPointerEventsTransparent: true,
390
+ semiSelected: customizationProps.multiSelect && !allSelected && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0,
391
+ size: size,
392
+ id: "".concat(id, "_checkbox_selectall"),
393
+ label: customizationProps.multiSelect ? 'Select all' : (_selectedFirst$displa2 = selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.displayLabel) !== null && _selectedFirst$displa2 !== void 0 ? _selectedFirst$displa2 : selectedFirst === null || selectedFirst === void 0 ? void 0 : selectedFirst.value,
394
+ selected: !customizationProps.multiSelect || allSelected
395
+ }), customizationProps.itemsType === 'normal' && /*#__PURE__*/_jsx(_Fragment, {
396
+ children: suggestions.map(function (x) {
397
+ return /*#__PURE__*/_jsx(MenuItem, {
398
+ role: ariaRolesType == 'input' ? 'option' : 'menu',
399
+ item: x,
400
+ size: size,
401
+ active: false,
402
+ tabIndex: -1,
403
+ onFocus: function onFocus(e) {
404
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_topitem"));
405
+ },
406
+ className: "".concat(focused === 0 ? 'dropdown-hover' : ''),
407
+ ref: elRefs[0],
408
+ id: "".concat(id, "_topitem"),
409
+ onClickHandler: function onClickHandler(e) {
410
+ e.stopPropagation();
411
+ customizationProps.onValueUpdate([x.value]);
412
+ setSelectedValues([x.value]);
413
+ setIsOpen(false);
414
+ setFocused(null);
415
+ }
416
+ }, "".concat(id, "_topitem_").concat(x.value));
417
+ })
418
+ })]
419
+ });
420
+ };
421
+ var getElements = function getElements(messageOnNoResults, size) {
422
+ if (getFilteredItems().length === 0) {
423
+ return /*#__PURE__*/_jsx(MenuItem, {
424
+ item: {
425
+ value: messageOnNoResults,
426
+ disabled: true
427
+ },
428
+ size: size,
429
+ id: "noResultsFound",
430
+ active: false,
431
+ onClickHandler: function onClickHandler(e) {}
432
+ });
433
+ }
434
+ return /*#__PURE__*/_jsx(DropdownContentItemsContainer, {
435
+ size: size,
436
+ children: getFilteredItems().filter(function (x) {
437
+ return x && (customizationProps.itemsType != 'normal' || !x.suggestion);
438
+ }).map(function (item, index) {
439
+ var _item$displayLabel, _item$displayLabel2;
440
+ return /*#__PURE__*/_jsxs(React.Fragment, {
441
+ children: [item.customContent, !item.customContent && customizationProps.itemsType == 'radio' && /*#__PURE__*/_jsx(RadioButton, {
442
+ role: "menuitemradio",
443
+ select: function select(selected) {
444
+ return handleItemClick(selected, item);
445
+ },
446
+ ref: elRefs[index + 1],
447
+ size: size,
448
+ tabIndexVal: -1,
449
+ className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''),
450
+ iconPointerEventsTransparent: true,
451
+ disabled: item === null || item === void 0 ? void 0 : item.disabled,
452
+ onFocus: function onFocus(e) {
453
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1));
454
+ },
455
+ id: "".concat(id, "_").concat(index + 1),
456
+ label: (_item$displayLabel = item.displayLabel) !== null && _item$displayLabel !== void 0 ? _item$displayLabel : item.value,
457
+ selected: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value)
458
+ }, "key_".concat(id, "_").concat(index + 1)), !item.customContent && customizationProps.itemsType == 'checkbox' && /*#__PURE__*/_jsx(Checkbox, {
459
+ role: "menuitemcheckbox",
460
+ select: function select(selected) {
461
+ return handleItemClick(selected, item);
462
+ },
463
+ iconPointerEventsTransparent: true,
464
+ disabled: item === null || item === void 0 ? void 0 : item.disabled,
465
+ className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''),
466
+ ref: elRefs[index + 1],
467
+ size: size,
468
+ tabIndexVal: -1,
469
+ onFocus: function onFocus(e) {
470
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1));
471
+ },
472
+ id: "".concat(id, "_").concat(index + 1),
473
+ label: (_item$displayLabel2 = item.displayLabel) !== null && _item$displayLabel2 !== void 0 ? _item$displayLabel2 : item.value,
474
+ selected: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value)
475
+ }, "key_".concat(id, "_").concat(index + 1)), !item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && /*#__PURE__*/_jsx(MenuItem, {
476
+ role: ariaRolesType == 'input' ? 'option' : 'menu',
477
+ id: "".concat(id, "_").concat(index + 1),
478
+ item: item,
479
+ tabIndex: -1,
480
+ className: "".concat(index + 1 === focused ? 'dropdown-hover' : ''),
481
+ size: size,
482
+ onFocus: function onFocus(e) {
483
+ return onActiveDescendantChanged && onActiveDescendantChanged("".concat(id, "_").concat(index + 1));
484
+ },
485
+ active: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.includes(item.value),
486
+ ref: elRefs[index + 1],
487
+ onClickHandler: function onClickHandler(e) {
488
+ e.stopPropagation();
489
+ customizationProps.onValueUpdate([item.value]);
490
+ setSelectedValues([item.value]);
491
+ setIsOpen(false);
492
+ setFocused(null);
493
+ }
494
+ }, "key_".concat(id, "_").concat(index + 1))]
495
+ }, "key_".concat(id, "_").concat(item.value));
496
+ })
497
+ });
498
+ };
499
+ var calculateOffset = function calculateOffset() {
500
+ var _containerRef$current;
501
+ var rect = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.getBoundingClientRect();
502
+ if (rect) {
503
+ dropdownContentRef.current.style.left = "".concat(rect.x + rect.width, "px");
504
+ dropdownContentRef.current.style.top = "".concat(rect.y + rect.height, "px");
505
+ dropdownContentRef.current.style.width = width !== null && width !== void 0 ? width : "".concat(rect.width, "px");
506
+ }
507
+ determineDropUp();
508
+ };
509
+ var cls = "".concat(isOpen ? 'show' : '', " ").concat(isOpen && outline ? 'outline' : '', " ").concat(locationDefined ? isUp ? 'up' : 'down' : '');
510
+ return /*#__PURE__*/_jsx(Overlay, {
511
+ children: /*#__PURE__*/_jsxs(DropdownContentContainer, {
512
+ role: ariaRolesType == "menu" ? "menu" : "optionlist",
513
+ ref: dropdownContentRef,
514
+ size: size,
515
+ offsetTop: offset.top,
516
+ id: id,
517
+ offsetLeft: offset.left,
518
+ tabIndex: -1,
519
+ isButton: isButton,
520
+ alignLeft: alignLeft,
521
+ scrollable: customizationProps.scrollable,
522
+ maxHeight: customizationProps.maxHeight,
523
+ className: cls,
524
+ children: [/*#__PURE__*/_jsxs(DropdownContentListContainer, {
525
+ role: "group",
526
+ size: size,
527
+ itemsType: customizationProps.itemsType,
528
+ onScroll: handleScroll,
529
+ ref: itemsListRef,
530
+ outline: outline,
531
+ scrollable: customizationProps.scrollable,
532
+ children: [customizationProps.menuContent && /*#__PURE__*/_jsxs(DropdownContentMenuContentContainer, {
533
+ size: size,
534
+ children: [customizationProps.menuContent, /*#__PURE__*/_jsx(DividerContainer, {
535
+ size: size,
536
+ children: /*#__PURE__*/_jsx("div", {
537
+ className: "divider"
538
+ })
539
+ })]
540
+ }), customizationProps.pinTopItem && getTopItem(), getElements(messageOnNoResults, size)]
541
+ }), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/_jsx(DropdownContentActionButtonContainer, {
542
+ size: size,
543
+ scrollable: customizationProps.scrollable,
544
+ children: /*#__PURE__*/_jsx(Button, {
545
+ width: "100%",
546
+ role: "menuitem",
547
+ icon: customizationProps.actionIcon,
548
+ ref: actionButtonRef,
549
+ loading: customizationProps.actionLoading,
550
+ disabled: customizationProps.actionDisabled,
551
+ variant: (_customizationProps$a = customizationProps.actionVariant) !== null && _customizationProps$a !== void 0 ? _customizationProps$a : 'primary',
552
+ size: size,
553
+ onClick: function onClick() {
554
+ return customizationProps.action() && setIsOpen(false);
555
+ },
556
+ children: customizationProps.actionLabel
557
+ })
558
+ })]
559
+ })
560
+ });
561
+ });
562
+ DropdownContent.propTypes = {
563
+ isButton: _pt.bool.isRequired,
564
+ customizationProps: _pt.shape({
565
+ itemsType: _pt.oneOf(['radio', 'checkbox', 'normal']),
566
+ menuContent: _pt.node,
567
+ scrollable: _pt.bool,
568
+ multiSelect: _pt.bool,
569
+ maxHeight: _pt.string,
570
+ actionLabel: _pt.string,
571
+ actionIcon: _pt.node,
572
+ actionLoading: _pt.bool,
573
+ actionDisabled: _pt.bool,
574
+ action: _pt.func.isRequired,
575
+ pinTopItem: _pt.bool,
576
+ onValueUpdate: _pt.func.isRequired,
577
+ items: _pt.arrayOf(_pt.shape({
578
+ value: _pt.string.isRequired,
579
+ displayLabel: _pt.string,
580
+ noteLabel: _pt.string,
581
+ suggestion: _pt.bool,
582
+ showDividerAbove: _pt.bool,
583
+ disabled: _pt.bool,
584
+ locked: _pt.bool,
585
+ icon: _pt.node,
586
+ customContent: _pt.node
587
+ })).isRequired
588
+ }).isRequired,
589
+ alignLeft: _pt.bool,
590
+ isOpen: _pt.bool.isRequired,
591
+ setIsOpen: _pt.func.isRequired,
592
+ id: _pt.string.isRequired,
593
+ filter: _pt.string.isRequired,
594
+ width: _pt.string,
595
+ onActiveDescendantChanged: _pt.func,
596
+ selectedValues: _pt.arrayOf(_pt.string).isRequired,
597
+ setSelectedValues: _pt.func.isRequired,
598
+ messageOnNoResults: _pt.string.isRequired,
599
+ focused: _pt.oneOfType([_pt.number, _pt.oneOf([null])]),
600
+ setFocused: _pt.func.isRequired,
601
+ outline: _pt.bool,
602
+ ariaRolesType: _pt.oneOf(['input', 'menu'])
603
+ };
604
+ export default DropdownContent;
605
+ //# sourceMappingURL=DropdownContent.js.map