@dnanpm/styleguide 4.0.8 → 4.0.10

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 (427) hide show
  1. package/build/cjs/_virtual/_virtual_inject.js +5 -0
  2. package/build/cjs/assets/fonts/fonts.css.js +3 -1
  3. package/build/cjs/components/Accordion/Accordion.js +66 -54
  4. package/build/cjs/components/AccordionItem/AccordionItem.js +94 -73
  5. package/build/cjs/components/AmountSelector/AmountSelector.js +121 -134
  6. package/build/cjs/components/Box/Box.js +38 -13
  7. package/build/cjs/components/Breadcrumb/Breadcrumb.js +73 -71
  8. package/build/cjs/components/Button/Button.d.ts +1 -1
  9. package/build/cjs/components/Button/Button.js +131 -127
  10. package/build/cjs/components/ButtonArrow/ButtonArrow.js +47 -49
  11. package/build/cjs/components/ButtonCard/ButtonCard.d.ts +2 -2
  12. package/build/cjs/components/ButtonCard/ButtonCard.js +97 -112
  13. package/build/cjs/components/ButtonClose/ButtonClose.d.ts +1 -1
  14. package/build/cjs/components/ButtonClose/ButtonClose.js +25 -14
  15. package/build/cjs/components/ButtonIcon/ButtonIcon.d.ts +44 -3
  16. package/build/cjs/components/ButtonIcon/ButtonIcon.js +105 -67
  17. package/build/cjs/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  18. package/build/cjs/components/ButtonPrimary/ButtonPrimary.js +7 -35
  19. package/build/cjs/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  20. package/build/cjs/components/ButtonSecondary/ButtonSecondary.js +7 -35
  21. package/build/cjs/components/Carousel/Carousel.d.ts +8 -2
  22. package/build/cjs/components/Carousel/Carousel.js +315 -346
  23. package/build/cjs/components/Checkbox/Checkbox.js +49 -108
  24. package/build/cjs/components/Chip/Chip.js +40 -34
  25. package/build/cjs/components/DateTimePicker/DateTimePicker.js +198 -334
  26. package/build/cjs/components/Divider/Divider.js +29 -15
  27. package/build/cjs/components/DnaLogo/DnaLogo.js +87 -51
  28. package/build/cjs/components/Drawer/Drawer.js +172 -167
  29. package/build/cjs/components/EmptyState/EmptyState.js +24 -12
  30. package/build/cjs/components/EnergyLabel/EnergyLabel.js +77 -73
  31. package/build/cjs/components/Expander/Expander.js +43 -38
  32. package/build/cjs/components/Floater/Floater.js +36 -14
  33. package/build/cjs/components/Footer/Components/FooterComponents.d.ts +4 -2
  34. package/build/cjs/components/Footer/Components/FooterComponents.js +305 -346
  35. package/build/cjs/components/Footer/Footer.js +51 -80
  36. package/build/cjs/components/Footer/context/FooterContext.js +9 -9
  37. package/build/cjs/components/Hero/Hero.js +101 -149
  38. package/build/cjs/components/Icon/Icon.js +41 -22
  39. package/build/cjs/components/Icons/Small/hlArrowBackSmall.js +12 -4
  40. package/build/cjs/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  41. package/build/cjs/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  42. package/build/cjs/components/Icons/Small/hlCalendarSmall.js +12 -4
  43. package/build/cjs/components/Icons/Small/hlChevronDownSmall.js +12 -4
  44. package/build/cjs/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  45. package/build/cjs/components/Icons/Small/hlChevronRightSmall.js +12 -4
  46. package/build/cjs/components/Icons/Small/hlChevronUpSmall.js +12 -4
  47. package/build/cjs/components/Icons/Small/hlClockSmall.js +14 -5
  48. package/build/cjs/components/Icons/Small/hlDownloadSmall.js +18 -6
  49. package/build/cjs/components/Icons/Small/hlExternalSmall.js +12 -4
  50. package/build/cjs/components/Icons/Small/hlUploadSmall.js +18 -6
  51. package/build/cjs/components/Icons/Social/facebook.js +13 -4
  52. package/build/cjs/components/Icons/Social/instagram.js +13 -4
  53. package/build/cjs/components/Icons/Social/linkedin.js +13 -4
  54. package/build/cjs/components/Icons/Social/tiktok.js +12 -4
  55. package/build/cjs/components/Icons/Social/twitter.js +13 -4
  56. package/build/cjs/components/Icons/Social/youtube.js +12 -4
  57. package/build/cjs/components/Icons/hl404.js +12 -4
  58. package/build/cjs/components/Icons/hl4gSim.js +12 -4
  59. package/build/cjs/components/Icons/hl5gSim.js +12 -4
  60. package/build/cjs/components/Icons/hlBattery.js +16 -6
  61. package/build/cjs/components/Icons/hlBell.js +12 -4
  62. package/build/cjs/components/Icons/hlCableTVCard.js +12 -4
  63. package/build/cjs/components/Icons/hlCalendar.js +56 -15
  64. package/build/cjs/components/Icons/hlCall.js +12 -4
  65. package/build/cjs/components/Icons/hlCameraBack.js +18 -6
  66. package/build/cjs/components/Icons/hlCameraFront.js +14 -5
  67. package/build/cjs/components/Icons/hlCart.js +16 -6
  68. package/build/cjs/components/Icons/hlCartEmpty.js +16 -6
  69. package/build/cjs/components/Icons/hlChat.js +24 -7
  70. package/build/cjs/components/Icons/hlCheck.js +12 -4
  71. package/build/cjs/components/Icons/hlChevronDown.js +12 -4
  72. package/build/cjs/components/Icons/hlChevronLeft.js +12 -4
  73. package/build/cjs/components/Icons/hlChevronRight.js +12 -4
  74. package/build/cjs/components/Icons/hlChevronUp.js +12 -4
  75. package/build/cjs/components/Icons/hlCompensation.js +12 -4
  76. package/build/cjs/components/Icons/hlCookie.js +12 -4
  77. package/build/cjs/components/Icons/hlCopy.js +14 -5
  78. package/build/cjs/components/Icons/hlCoupon.js +16 -6
  79. package/build/cjs/components/Icons/hlDelivery.js +14 -4
  80. package/build/cjs/components/Icons/hlDigiturva.js +14 -4
  81. package/build/cjs/components/Icons/hlDisplaySize.js +19 -6
  82. package/build/cjs/components/Icons/hlDocument.js +14 -5
  83. package/build/cjs/components/Icons/hlDownload.js +18 -6
  84. package/build/cjs/components/Icons/hlEnvelope.js +12 -4
  85. package/build/cjs/components/Icons/hlError.js +22 -6
  86. package/build/cjs/components/Icons/hlEuro.js +12 -4
  87. package/build/cjs/components/Icons/hlExclamationMark.js +12 -4
  88. package/build/cjs/components/Icons/hlExpand.js +12 -4
  89. package/build/cjs/components/Icons/hlExternal.js +12 -4
  90. package/build/cjs/components/Icons/hlEyeClosed.js +12 -4
  91. package/build/cjs/components/Icons/hlEyeOpen.js +14 -5
  92. package/build/cjs/components/Icons/hlFaceId.js +12 -4
  93. package/build/cjs/components/Icons/hlFastDelivery.js +12 -4
  94. package/build/cjs/components/Icons/hlFingerprint.js +20 -8
  95. package/build/cjs/components/Icons/hlGlobe.js +12 -4
  96. package/build/cjs/components/Icons/hlHeadphones.js +12 -4
  97. package/build/cjs/components/Icons/hlHeadset.js +18 -6
  98. package/build/cjs/components/Icons/hlHeart.js +12 -4
  99. package/build/cjs/components/Icons/hlHome.js +12 -4
  100. package/build/cjs/components/Icons/hlHub.js +14 -5
  101. package/build/cjs/components/Icons/hlImage.js +12 -4
  102. package/build/cjs/components/Icons/hlInfo.js +18 -6
  103. package/build/cjs/components/Icons/hlInstallment.js +14 -5
  104. package/build/cjs/components/Icons/hlIotSim.js +14 -5
  105. package/build/cjs/components/Icons/hlLaptop.js +13 -4
  106. package/build/cjs/components/Icons/hlLink.js +16 -5
  107. package/build/cjs/components/Icons/hlLiveVideo.js +12 -4
  108. package/build/cjs/components/Icons/hlLock.js +18 -6
  109. package/build/cjs/components/Icons/hlMagnifyingGlass.js +14 -5
  110. package/build/cjs/components/Icons/hlMarker.js +14 -5
  111. package/build/cjs/components/Icons/hlMemory.js +14 -5
  112. package/build/cjs/components/Icons/hlMenu.js +12 -4
  113. package/build/cjs/components/Icons/hlMinimize.js +12 -4
  114. package/build/cjs/components/Icons/hlMinus.js +12 -4
  115. package/build/cjs/components/Icons/hlMobileData.js +12 -4
  116. package/build/cjs/components/Icons/hlMobilePayment.js +19 -6
  117. package/build/cjs/components/Icons/hlModem.js +26 -8
  118. package/build/cjs/components/Icons/hlMore.js +22 -6
  119. package/build/cjs/components/Icons/hlOs.js +14 -5
  120. package/build/cjs/components/Icons/hlPackage.js +12 -4
  121. package/build/cjs/components/Icons/hlPaperclip.js +12 -4
  122. package/build/cjs/components/Icons/hlPaytime.js +12 -4
  123. package/build/cjs/components/Icons/hlPen.js +12 -4
  124. package/build/cjs/components/Icons/hlPerson.js +12 -4
  125. package/build/cjs/components/Icons/hlPhone.js +17 -5
  126. package/build/cjs/components/Icons/hlPlaylist.js +13 -4
  127. package/build/cjs/components/Icons/hlPlus.js +14 -5
  128. package/build/cjs/components/Icons/hlPrepaid.js +12 -4
  129. package/build/cjs/components/Icons/hlProcessor.js +14 -5
  130. package/build/cjs/components/Icons/hlServices.js +12 -4
  131. package/build/cjs/components/Icons/hlSettings.js +12 -4
  132. package/build/cjs/components/Icons/hlShield.js +14 -5
  133. package/build/cjs/components/Icons/hlSim.js +14 -5
  134. package/build/cjs/components/Icons/hlSimSimple.js +18 -6
  135. package/build/cjs/components/Icons/hlSmile.js +22 -7
  136. package/build/cjs/components/Icons/hlSpeechBubble.js +14 -5
  137. package/build/cjs/components/Icons/hlSquaretrade.js +13 -4
  138. package/build/cjs/components/Icons/hlStar.js +12 -4
  139. package/build/cjs/components/Icons/hlStarFilled.js +12 -4
  140. package/build/cjs/components/Icons/hlTrash.js +14 -5
  141. package/build/cjs/components/Icons/hlTv.js +12 -4
  142. package/build/cjs/components/Icons/hlUnlock.js +14 -6
  143. package/build/cjs/components/Icons/hlUpload.js +18 -6
  144. package/build/cjs/components/Icons/hlWarning.js +18 -6
  145. package/build/cjs/components/Icons/hlWifi.js +18 -6
  146. package/build/cjs/components/Icons/hlWrench.js +12 -4
  147. package/build/cjs/components/Icons/hlX.js +12 -4
  148. package/build/cjs/components/InfoDialog/InfoDialog.js +31 -46
  149. package/build/cjs/components/Input/Input.js +143 -159
  150. package/build/cjs/components/Label/Label.js +22 -22
  151. package/build/cjs/components/LabelText/LabelText.js +24 -17
  152. package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  153. package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  154. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  155. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  156. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  157. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  158. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  159. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  160. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  161. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  162. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  163. package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  164. package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  165. package/build/cjs/components/MainHeaderNavigation/context/NavContext.js +61 -49
  166. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  167. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  168. package/build/cjs/components/Modal/Modal.js +127 -145
  169. package/build/cjs/components/Notification/Notification.js +74 -54
  170. package/build/cjs/components/NotificationBadge/NotificationBadge.js +29 -32
  171. package/build/cjs/components/Overlay/Overlay.js +70 -68
  172. package/build/cjs/components/Pill/Pill.js +91 -82
  173. package/build/cjs/components/PillGroup/PillGroup.js +50 -33
  174. package/build/cjs/components/PixelLoader/PixelLoader.js +37 -34
  175. package/build/cjs/components/PriorityNavigation/PriorityNavigation.js +281 -303
  176. package/build/cjs/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  177. package/build/cjs/components/ProgressIndicator/ProgressIndicator.js +140 -109
  178. package/build/cjs/components/RadioButton/RadioButton.js +91 -114
  179. package/build/cjs/components/ReadMore/ReadMore.js +86 -69
  180. package/build/cjs/components/Search/Search.js +52 -64
  181. package/build/cjs/components/Selectbox/Selectbox.js +279 -94
  182. package/build/cjs/components/Skeleton/Skeleton.js +69 -56
  183. package/build/cjs/components/Switch/Switch.js +62 -76
  184. package/build/cjs/components/Tab/Tab.js +55 -53
  185. package/build/cjs/components/Tabs/Tabs.js +93 -71
  186. package/build/cjs/components/Textarea/Textarea.js +76 -73
  187. package/build/cjs/components/Toaster/Toaster.js +59 -44
  188. package/build/cjs/components/Tooltip/Tooltip.js +74 -87
  189. package/build/cjs/hooks/useCloseOutsideOrElementClicked.js +23 -21
  190. package/build/cjs/hooks/useDebounce.js +9 -9
  191. package/build/cjs/hooks/useDocHeight.js +13 -13
  192. package/build/cjs/hooks/useOutsideClick.js +10 -10
  193. package/build/cjs/hooks/useResizeObserver.js +37 -24
  194. package/build/cjs/hooks/useScrollPosition.js +55 -54
  195. package/build/cjs/hooks/useWindowSize.js +20 -20
  196. package/build/cjs/themes/globalStyles.js +4 -4
  197. package/build/cjs/themes/gridTheme.js +1 -1
  198. package/build/cjs/themes/theme.js +12 -12
  199. package/build/cjs/themes/themeComponents/base.js +9 -8
  200. package/build/cjs/themes/themeComponents/breakpoints.js +6 -6
  201. package/build/cjs/themes/themeComponents/color.js +76 -74
  202. package/build/cjs/themes/themeComponents/fontFamily.js +3 -3
  203. package/build/cjs/themes/themeComponents/fontSize.js +31 -15
  204. package/build/cjs/themes/themeComponents/fontWeight.js +16 -16
  205. package/build/cjs/themes/themeComponents/forms.js +3 -2
  206. package/build/cjs/themes/themeComponents/layout.js +27 -27
  207. package/build/cjs/themes/themeComponents/lineHeight.js +32 -16
  208. package/build/cjs/themes/themeComponents/navigation.js +13 -13
  209. package/build/cjs/themes/themeComponents/radius.js +26 -26
  210. package/build/cjs/utils/common.js +15 -19
  211. package/build/cjs/utils/createStyled.d.ts +154 -134
  212. package/build/cjs/utils/createStyled.js +16 -2
  213. package/build/cjs/utils/styledUtils.js +2 -6
  214. package/build/es/_virtual/_virtual_inject.js +3 -0
  215. package/build/es/assets/fonts/fonts.css.js +3 -1
  216. package/build/es/components/Accordion/Accordion.js +66 -54
  217. package/build/es/components/AccordionItem/AccordionItem.js +94 -73
  218. package/build/es/components/AmountSelector/AmountSelector.js +121 -134
  219. package/build/es/components/Box/Box.js +38 -13
  220. package/build/es/components/Breadcrumb/Breadcrumb.js +73 -71
  221. package/build/es/components/Button/Button.d.ts +1 -1
  222. package/build/es/components/Button/Button.js +131 -127
  223. package/build/es/components/ButtonArrow/ButtonArrow.js +47 -49
  224. package/build/es/components/ButtonCard/ButtonCard.d.ts +2 -2
  225. package/build/es/components/ButtonCard/ButtonCard.js +97 -112
  226. package/build/es/components/ButtonClose/ButtonClose.d.ts +1 -1
  227. package/build/es/components/ButtonClose/ButtonClose.js +25 -14
  228. package/build/es/components/ButtonIcon/ButtonIcon.d.ts +44 -3
  229. package/build/es/components/ButtonIcon/ButtonIcon.js +105 -67
  230. package/build/es/components/ButtonPrimary/ButtonPrimary.d.ts +43 -2
  231. package/build/es/components/ButtonPrimary/ButtonPrimary.js +7 -35
  232. package/build/es/components/ButtonSecondary/ButtonSecondary.d.ts +43 -2
  233. package/build/es/components/ButtonSecondary/ButtonSecondary.js +7 -35
  234. package/build/es/components/Carousel/Carousel.d.ts +8 -2
  235. package/build/es/components/Carousel/Carousel.js +315 -346
  236. package/build/es/components/Checkbox/Checkbox.js +49 -108
  237. package/build/es/components/Chip/Chip.js +40 -34
  238. package/build/es/components/DateTimePicker/DateTimePicker.js +198 -334
  239. package/build/es/components/Divider/Divider.js +29 -15
  240. package/build/es/components/DnaLogo/DnaLogo.js +87 -51
  241. package/build/es/components/Drawer/Drawer.js +172 -167
  242. package/build/es/components/EmptyState/EmptyState.js +24 -12
  243. package/build/es/components/EnergyLabel/EnergyLabel.js +77 -73
  244. package/build/es/components/Expander/Expander.js +43 -38
  245. package/build/es/components/Floater/Floater.js +36 -14
  246. package/build/es/components/Footer/Components/FooterComponents.d.ts +4 -2
  247. package/build/es/components/Footer/Components/FooterComponents.js +305 -346
  248. package/build/es/components/Footer/Footer.js +51 -80
  249. package/build/es/components/Footer/context/FooterContext.js +9 -9
  250. package/build/es/components/Hero/Hero.js +101 -149
  251. package/build/es/components/Icon/Icon.js +41 -22
  252. package/build/es/components/Icons/Small/hlArrowBackSmall.js +12 -4
  253. package/build/es/components/Icons/Small/hlArrowForwardSmall.js +12 -4
  254. package/build/es/components/Icons/Small/hlArrowUnderSmall.js +12 -4
  255. package/build/es/components/Icons/Small/hlCalendarSmall.js +12 -4
  256. package/build/es/components/Icons/Small/hlChevronDownSmall.js +12 -4
  257. package/build/es/components/Icons/Small/hlChevronLeftSmall.js +12 -4
  258. package/build/es/components/Icons/Small/hlChevronRightSmall.js +12 -4
  259. package/build/es/components/Icons/Small/hlChevronUpSmall.js +12 -4
  260. package/build/es/components/Icons/Small/hlClockSmall.js +14 -5
  261. package/build/es/components/Icons/Small/hlDownloadSmall.js +18 -6
  262. package/build/es/components/Icons/Small/hlExternalSmall.js +12 -4
  263. package/build/es/components/Icons/Small/hlUploadSmall.js +18 -6
  264. package/build/es/components/Icons/Social/facebook.js +13 -4
  265. package/build/es/components/Icons/Social/instagram.js +13 -4
  266. package/build/es/components/Icons/Social/linkedin.js +13 -4
  267. package/build/es/components/Icons/Social/tiktok.js +12 -4
  268. package/build/es/components/Icons/Social/twitter.js +13 -4
  269. package/build/es/components/Icons/Social/youtube.js +12 -4
  270. package/build/es/components/Icons/hl404.js +12 -4
  271. package/build/es/components/Icons/hl4gSim.js +12 -4
  272. package/build/es/components/Icons/hl5gSim.js +12 -4
  273. package/build/es/components/Icons/hlBattery.js +16 -6
  274. package/build/es/components/Icons/hlBell.js +12 -4
  275. package/build/es/components/Icons/hlCableTVCard.js +12 -4
  276. package/build/es/components/Icons/hlCalendar.js +56 -15
  277. package/build/es/components/Icons/hlCall.js +12 -4
  278. package/build/es/components/Icons/hlCameraBack.js +18 -6
  279. package/build/es/components/Icons/hlCameraFront.js +14 -5
  280. package/build/es/components/Icons/hlCart.js +16 -6
  281. package/build/es/components/Icons/hlCartEmpty.js +16 -6
  282. package/build/es/components/Icons/hlChat.js +24 -7
  283. package/build/es/components/Icons/hlCheck.js +12 -4
  284. package/build/es/components/Icons/hlChevronDown.js +12 -4
  285. package/build/es/components/Icons/hlChevronLeft.js +12 -4
  286. package/build/es/components/Icons/hlChevronRight.js +12 -4
  287. package/build/es/components/Icons/hlChevronUp.js +12 -4
  288. package/build/es/components/Icons/hlCompensation.js +12 -4
  289. package/build/es/components/Icons/hlCookie.js +12 -4
  290. package/build/es/components/Icons/hlCopy.js +14 -5
  291. package/build/es/components/Icons/hlCoupon.js +16 -6
  292. package/build/es/components/Icons/hlDelivery.js +14 -4
  293. package/build/es/components/Icons/hlDigiturva.js +14 -4
  294. package/build/es/components/Icons/hlDisplaySize.js +19 -6
  295. package/build/es/components/Icons/hlDocument.js +14 -5
  296. package/build/es/components/Icons/hlDownload.js +18 -6
  297. package/build/es/components/Icons/hlEnvelope.js +12 -4
  298. package/build/es/components/Icons/hlError.js +22 -6
  299. package/build/es/components/Icons/hlEuro.js +12 -4
  300. package/build/es/components/Icons/hlExclamationMark.js +12 -4
  301. package/build/es/components/Icons/hlExpand.js +12 -4
  302. package/build/es/components/Icons/hlExternal.js +12 -4
  303. package/build/es/components/Icons/hlEyeClosed.js +12 -4
  304. package/build/es/components/Icons/hlEyeOpen.js +14 -5
  305. package/build/es/components/Icons/hlFaceId.js +12 -4
  306. package/build/es/components/Icons/hlFastDelivery.js +12 -4
  307. package/build/es/components/Icons/hlFingerprint.js +20 -8
  308. package/build/es/components/Icons/hlGlobe.js +12 -4
  309. package/build/es/components/Icons/hlHeadphones.js +12 -4
  310. package/build/es/components/Icons/hlHeadset.js +18 -6
  311. package/build/es/components/Icons/hlHeart.js +12 -4
  312. package/build/es/components/Icons/hlHome.js +12 -4
  313. package/build/es/components/Icons/hlHub.js +14 -5
  314. package/build/es/components/Icons/hlImage.js +12 -4
  315. package/build/es/components/Icons/hlInfo.js +18 -6
  316. package/build/es/components/Icons/hlInstallment.js +14 -5
  317. package/build/es/components/Icons/hlIotSim.js +14 -5
  318. package/build/es/components/Icons/hlLaptop.js +13 -4
  319. package/build/es/components/Icons/hlLink.js +16 -5
  320. package/build/es/components/Icons/hlLiveVideo.js +12 -4
  321. package/build/es/components/Icons/hlLock.js +18 -6
  322. package/build/es/components/Icons/hlMagnifyingGlass.js +14 -5
  323. package/build/es/components/Icons/hlMarker.js +14 -5
  324. package/build/es/components/Icons/hlMemory.js +14 -5
  325. package/build/es/components/Icons/hlMenu.js +12 -4
  326. package/build/es/components/Icons/hlMinimize.js +12 -4
  327. package/build/es/components/Icons/hlMinus.js +12 -4
  328. package/build/es/components/Icons/hlMobileData.js +12 -4
  329. package/build/es/components/Icons/hlMobilePayment.js +19 -6
  330. package/build/es/components/Icons/hlModem.js +26 -8
  331. package/build/es/components/Icons/hlMore.js +22 -6
  332. package/build/es/components/Icons/hlOs.js +14 -5
  333. package/build/es/components/Icons/hlPackage.js +12 -4
  334. package/build/es/components/Icons/hlPaperclip.js +12 -4
  335. package/build/es/components/Icons/hlPaytime.js +12 -4
  336. package/build/es/components/Icons/hlPen.js +12 -4
  337. package/build/es/components/Icons/hlPerson.js +12 -4
  338. package/build/es/components/Icons/hlPhone.js +17 -5
  339. package/build/es/components/Icons/hlPlaylist.js +13 -4
  340. package/build/es/components/Icons/hlPlus.js +14 -5
  341. package/build/es/components/Icons/hlPrepaid.js +12 -4
  342. package/build/es/components/Icons/hlProcessor.js +14 -5
  343. package/build/es/components/Icons/hlServices.js +12 -4
  344. package/build/es/components/Icons/hlSettings.js +12 -4
  345. package/build/es/components/Icons/hlShield.js +14 -5
  346. package/build/es/components/Icons/hlSim.js +14 -5
  347. package/build/es/components/Icons/hlSimSimple.js +18 -6
  348. package/build/es/components/Icons/hlSmile.js +22 -7
  349. package/build/es/components/Icons/hlSpeechBubble.js +14 -5
  350. package/build/es/components/Icons/hlSquaretrade.js +13 -4
  351. package/build/es/components/Icons/hlStar.js +12 -4
  352. package/build/es/components/Icons/hlStarFilled.js +12 -4
  353. package/build/es/components/Icons/hlTrash.js +14 -5
  354. package/build/es/components/Icons/hlTv.js +12 -4
  355. package/build/es/components/Icons/hlUnlock.js +14 -6
  356. package/build/es/components/Icons/hlUpload.js +18 -6
  357. package/build/es/components/Icons/hlWarning.js +18 -6
  358. package/build/es/components/Icons/hlWifi.js +18 -6
  359. package/build/es/components/Icons/hlWrench.js +12 -4
  360. package/build/es/components/Icons/hlX.js +12 -4
  361. package/build/es/components/InfoDialog/InfoDialog.js +31 -46
  362. package/build/es/components/Input/Input.js +143 -159
  363. package/build/es/components/Label/Label.js +22 -22
  364. package/build/es/components/LabelText/LabelText.js +24 -17
  365. package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +29 -44
  366. package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +167 -153
  367. package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +34 -20
  368. package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +50 -32
  369. package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +17 -5
  370. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -2
  371. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +100 -95
  372. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +6 -2
  373. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -58
  374. package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +20 -4
  375. package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +187 -159
  376. package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -5
  377. package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +305 -272
  378. package/build/es/components/MainHeaderNavigation/context/NavContext.js +61 -49
  379. package/build/es/components/MainHeaderNavigation/globalNavStyles.d.ts +31 -16
  380. package/build/es/components/MainHeaderNavigation/globalNavStyles.js +39 -172
  381. package/build/es/components/Modal/Modal.js +127 -145
  382. package/build/es/components/Notification/Notification.js +74 -54
  383. package/build/es/components/NotificationBadge/NotificationBadge.js +29 -32
  384. package/build/es/components/Overlay/Overlay.js +70 -68
  385. package/build/es/components/Pill/Pill.js +91 -82
  386. package/build/es/components/PillGroup/PillGroup.js +50 -33
  387. package/build/es/components/PixelLoader/PixelLoader.js +37 -34
  388. package/build/es/components/PriorityNavigation/PriorityNavigation.js +281 -303
  389. package/build/es/components/PriorityNavigationItem/PriorityNavigationItem.js +27 -49
  390. package/build/es/components/ProgressIndicator/ProgressIndicator.js +140 -109
  391. package/build/es/components/RadioButton/RadioButton.js +91 -114
  392. package/build/es/components/ReadMore/ReadMore.js +86 -69
  393. package/build/es/components/Search/Search.js +52 -64
  394. package/build/es/components/Selectbox/Selectbox.js +279 -94
  395. package/build/es/components/Skeleton/Skeleton.js +69 -56
  396. package/build/es/components/Switch/Switch.js +62 -76
  397. package/build/es/components/Tab/Tab.js +55 -53
  398. package/build/es/components/Tabs/Tabs.js +93 -71
  399. package/build/es/components/Textarea/Textarea.js +76 -73
  400. package/build/es/components/Toaster/Toaster.js +59 -44
  401. package/build/es/components/Tooltip/Tooltip.js +74 -87
  402. package/build/es/hooks/useCloseOutsideOrElementClicked.js +23 -21
  403. package/build/es/hooks/useDebounce.js +9 -9
  404. package/build/es/hooks/useDocHeight.js +13 -13
  405. package/build/es/hooks/useOutsideClick.js +10 -10
  406. package/build/es/hooks/useResizeObserver.js +37 -24
  407. package/build/es/hooks/useScrollPosition.js +55 -54
  408. package/build/es/hooks/useWindowSize.js +20 -20
  409. package/build/es/themes/globalStyles.js +4 -4
  410. package/build/es/themes/gridTheme.js +1 -1
  411. package/build/es/themes/theme.js +12 -12
  412. package/build/es/themes/themeComponents/base.js +9 -8
  413. package/build/es/themes/themeComponents/breakpoints.js +6 -6
  414. package/build/es/themes/themeComponents/color.js +76 -74
  415. package/build/es/themes/themeComponents/fontFamily.js +3 -3
  416. package/build/es/themes/themeComponents/fontSize.js +31 -15
  417. package/build/es/themes/themeComponents/fontWeight.js +16 -16
  418. package/build/es/themes/themeComponents/forms.js +3 -2
  419. package/build/es/themes/themeComponents/layout.js +27 -27
  420. package/build/es/themes/themeComponents/lineHeight.js +32 -16
  421. package/build/es/themes/themeComponents/navigation.js +13 -13
  422. package/build/es/themes/themeComponents/radius.js +26 -26
  423. package/build/es/utils/common.js +15 -19
  424. package/build/es/utils/createStyled.d.ts +154 -134
  425. package/build/es/utils/createStyled.js +16 -2
  426. package/build/es/utils/styledUtils.js +2 -6
  427. package/package.json +19 -17
@@ -29,301 +29,334 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
29
29
 
30
30
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
31
31
 
32
- const GlobalStyle = styledComponents.createGlobalStyle `
33
- body.overflow-hidden {
34
- overflow: hidden;
35
- }
36
- `;
32
+ const GlobalStyle = styledComponents.createGlobalStyle(["body.overflow-hidden{overflow:hidden;}"]);
37
33
  // detect common touch screen devices
38
34
  const isIosDevice = () => {
39
- const validate = /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator/i;
40
- if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
41
- return (validate.test(navigator.userAgent) &&
42
- !window.MSStream);
43
- }
44
- return false;
35
+ const validate = /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator/i;
36
+ if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
37
+ return validate.test(navigator.userAgent) && !window.MSStream;
38
+ }
39
+ return false;
45
40
  };
46
41
  const iosDevice = isIosDevice();
47
- const fadeIn = styledComponents.keyframes `
48
- 0% {
49
- opacity: 0;
50
- transform: translateY(-5px);
51
- }
52
- 5% {
53
- opacity: 0;
54
- transform: translateY(-5px);
55
- }
56
- 100% {
57
- opacity: 1;
58
- transform: translateY(0px);
59
- }
60
- `;
42
+ const fadeIn = styledComponents.keyframes(["0%{opacity:0;transform:translateY(-5px);}5%{opacity:0;transform:translateY(-5px);}100%{opacity:1;transform:translateY(0px);}"]);
61
43
  const preventBodyScroll = () => {
62
- const { scrollY } = window;
63
- document.body.style.position = 'fixed';
64
- document.body.style.top = `-${scrollY}px`;
44
+ const {
45
+ scrollY
46
+ } = window;
47
+ document.body.style.position = 'fixed';
48
+ document.body.style.top = `-${scrollY}px`;
65
49
  };
66
50
  const resumeBodyScroll = () => {
67
- const scrollY = document.body.style.top;
68
- document.body.style.position = '';
69
- document.body.style.top = '';
70
- // if the call to close overlay is done multiple times, scroll only the first time
71
- if (scrollY) {
72
- setTimeout(() => {
73
- window.scrollTo(0, parseInt(scrollY, 10) * -1);
74
- });
75
- }
51
+ const scrollY = document.body.style.top;
52
+ document.body.style.position = '';
53
+ document.body.style.top = '';
54
+ // if the call to close overlay is done multiple times, scroll only the first time
55
+ if (scrollY) {
56
+ setTimeout(() => {
57
+ window.scrollTo(0, parseInt(scrollY, 10) * -1);
58
+ });
59
+ }
76
60
  };
77
- const PageOverlay = styledComponents.styled.div `
78
- position: fixed;
79
- animation: ${fadeIn} 0.2s ease-in-out;
80
- top: 0;
81
- left: 0;
82
- width: 100%;
83
- height: 100%;
84
- background: ${theme.default.color.background.plum.default + theme.default.color.transparency.T10};
85
- z-index: ${({ $navZIndex }) => $navZIndex - 1};
86
- `;
61
+ const PageOverlay = styledComponents.styled.div.withConfig({
62
+ displayName: "MainHeaderNavigation__PageOverlay",
63
+ componentId: "sc-v3v2bk-0"
64
+ })(["position:fixed;animation:", " 0.2s ease-in-out;top:0;left:0;width:100%;height:100%;background:", ";z-index:", ";"], fadeIn, theme.default.color.background.plum.default + theme.default.color.transparency.T10, ({
65
+ $navZIndex
66
+ }) => $navZIndex - 1);
87
67
  const scrollThreshold = 82;
88
68
  const checkThreshold = (prevPos, currPos) => {
89
- if (prevPos >= currPos) {
90
- return prevPos - currPos > scrollThreshold;
91
- }
92
- return currPos - prevPos > scrollThreshold;
69
+ if (prevPos >= currPos) {
70
+ return prevPos - currPos > scrollThreshold;
71
+ }
72
+ return currPos - prevPos > scrollThreshold;
93
73
  };
94
- const GlobalNavigationContainer = styledComponents.styled.header `
95
- z-index: ${({ $navZIndex }) => $navZIndex};
96
- position: sticky;
97
- top: 0;
98
- left: 0;
99
- right: 0;
100
- width: 100%;
101
- background-color: ${theme.default.color.background.white.default};
102
- color: ${theme.default.color.text.black};
103
- max-width: ${theme.default.layout.page.maxWidth}px;
104
- margin: 0 auto;
105
- > nav {
106
- background-color: ${theme.default.color.background.plum.E02};
107
- }
108
- `;
109
- const NavigationWrapper = styledComponents.styled.div `
110
- display: flex;
111
- width: 100%;
112
- max-width: ${theme.default.layout.page.maxWidth}px;
113
- margin: 0 auto;
114
- height: ${navigation.navMaxHeight};
115
- position: relative;
116
- flex-wrap: nowrap;
117
- gap: 0;
118
- background-color: ${theme.default.color.background.white.default};
119
- border-bottom: 1px solid ${theme.default.color.line.L04};
120
- @media (min-width: ${p => p.$collapseSize + 1}px) {
121
- flex-wrap: nowrap;
122
- gap: 0 ${styledUtils.getMultipliedSize(theme.default.base.baseWidth, 1.5)};
123
- }
124
- `;
74
+ const GlobalNavigationContainer = styledComponents.styled.header.withConfig({
75
+ displayName: "MainHeaderNavigation__GlobalNavigationContainer",
76
+ componentId: "sc-v3v2bk-1"
77
+ })(["z-index:", ";position:sticky;top:0;left:0;right:0;width:100%;background-color:", ";color:", ";max-width:", "px;margin:0 auto;> nav{background-color:", ";}"], ({
78
+ $navZIndex
79
+ }) => $navZIndex, theme.default.color.background.white.default, theme.default.color.text.black, theme.default.layout.page.maxWidth, theme.default.color.background.plum.E02);
80
+ const NavigationWrapper = styledComponents.styled.div.withConfig({
81
+ displayName: "MainHeaderNavigation__NavigationWrapper",
82
+ componentId: "sc-v3v2bk-2"
83
+ })(["display:flex;width:100%;max-width:", "px;margin:0 auto;height:", ";position:relative;flex-wrap:nowrap;gap:0;background-color:", ";border-bottom:1px solid ", ";@media (min-width:", "px){flex-wrap:nowrap;gap:0 ", ";}"], theme.default.layout.page.maxWidth, navigation.navMaxHeight, theme.default.color.background.white.default, theme.default.color.line.L04, p => p.$collapseSize + 1, styledUtils.getMultipliedSize(theme.default.base.baseWidth, 1.5));
125
84
  let previousValue = false;
126
- const isStickySupported = typeof CSS !== 'undefined' &&
127
- typeof CSS.supports !== 'undefined' &&
128
- (CSS.supports('position', 'sticky') || CSS.supports('position', '-webkit-sticky'));
129
- const initiateScrollToHeader = (componentRef) => {
130
- if ((componentRef === null || componentRef === void 0 ? void 0 : componentRef.current) && isStickySupported && typeof window !== 'undefined') {
131
- window.scrollTo({ top: componentRef.current.offsetTop, left: 0 });
132
- }
85
+ const isStickySupported = typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && (CSS.supports('position', 'sticky') || CSS.supports('position', '-webkit-sticky'));
86
+ const initiateScrollToHeader = componentRef => {
87
+ if ((componentRef === null || componentRef === void 0 ? void 0 : componentRef.current) && isStickySupported && typeof window !== 'undefined') {
88
+ window.scrollTo({
89
+ top: componentRef.current.offsetTop,
90
+ left: 0
91
+ });
92
+ }
133
93
  };
134
94
  /** @visibleName MainHeaderNavigation */
135
- const MainHeaderNavigation = (_a) => {
136
- var _b, _c, _d;
137
- var { backToPreviousCategoryLabel = '', businessMenuAriaLabel = 'Sivustot', categoryCollectionText = 'Muut kategoriat', closeMainMenuAriaLabel, className, collapseSize = 767, currentUrl = '', dnaLogoLinkAriaLabel, featuredItemsAriaLabel = '', isLoggedIn = false, items = {}, language = 'fi', languageSelector = false, languageSelectorText = 'Vaihda kieltä', login = true, loginComponent, loginText = 'Kirjaudu', mainMenuAriaLabel = 'Päänavigaatio', minicart = true, minicartAmount = 0, minicartAmountLabel, minicartText = 'Ostoskori', nextJSLinkComponent = false, nextJSLinkLegacyBehavior = true, notificationText = '', openMainMenuAriaLabel, search = true, searchComponent = false, searchText = 'Haku', showLoginTooltip = false, showMinicart = false, zIndex = 1030 } = _a, props = tslib.__rest(_a, ["backToPreviousCategoryLabel", "businessMenuAriaLabel", "categoryCollectionText", "closeMainMenuAriaLabel", "className", "collapseSize", "currentUrl", "dnaLogoLinkAriaLabel", "featuredItemsAriaLabel", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartAmountLabel", "minicartText", "nextJSLinkComponent", "nextJSLinkLegacyBehavior", "notificationText", "openMainMenuAriaLabel", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
138
- const { isMobile } = useWindowSize.default(collapseSize);
139
- const navigationEl = React.useRef(null);
140
- const key = ramda.prop('id');
141
- // Index & memoize menu levels
142
- const level1 = React.useMemo(() => { var _a, _b; return (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : []; }, [items.mainNavigation]);
143
- const level1Items = React.useMemo(() => ramda.indexBy(key, level1), [level1, key]);
144
- const level2 = React.useMemo(() => level1.map(item => ramda.indexBy(key, item.pages)), [level1, key]);
145
- const level2Items = Object.assign({}, ...level2);
146
- // All states to for handling menus
147
- const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false);
148
- const [menuLevel, setMenuLevel] = React.useState({
149
- level1: null,
150
- animate1: true,
95
+ const MainHeaderNavigation = _a => {
96
+ var _b, _c, _d;
97
+ var {
98
+ backToPreviousCategoryLabel = '',
99
+ businessMenuAriaLabel = 'Sivustot',
100
+ categoryCollectionText = 'Muut kategoriat',
101
+ closeMainMenuAriaLabel,
102
+ className,
103
+ collapseSize = 767,
104
+ currentUrl = '',
105
+ dnaLogoLinkAriaLabel,
106
+ featuredItemsAriaLabel = '',
107
+ isLoggedIn = false,
108
+ items = {},
109
+ language = 'fi',
110
+ languageSelector = false,
111
+ languageSelectorText = 'Vaihda kieltä',
112
+ login = true,
113
+ loginComponent,
114
+ loginText = 'Kirjaudu',
115
+ mainMenuAriaLabel = 'Päänavigaatio',
116
+ minicart = true,
117
+ minicartAmount = 0,
118
+ minicartAmountLabel,
119
+ minicartText = 'Ostoskori',
120
+ nextJSLinkComponent = false,
121
+ nextJSLinkLegacyBehavior = true,
122
+ notificationText = '',
123
+ openMainMenuAriaLabel,
124
+ search = true,
125
+ searchComponent = false,
126
+ searchText = 'Haku',
127
+ showLoginTooltip = false,
128
+ showMinicart = false,
129
+ zIndex = 1030
130
+ } = _a,
131
+ props = tslib.__rest(_a, ["backToPreviousCategoryLabel", "businessMenuAriaLabel", "categoryCollectionText", "closeMainMenuAriaLabel", "className", "collapseSize", "currentUrl", "dnaLogoLinkAriaLabel", "featuredItemsAriaLabel", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartAmountLabel", "minicartText", "nextJSLinkComponent", "nextJSLinkLegacyBehavior", "notificationText", "openMainMenuAriaLabel", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
132
+ const {
133
+ isMobile
134
+ } = useWindowSize.default(collapseSize);
135
+ const navigationEl = React.useRef(null);
136
+ const key = ramda.prop('id');
137
+ // Index & memoize menu levels
138
+ const level1 = React.useMemo(() => {
139
+ var _a, _b;
140
+ return (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : [];
141
+ }, [items.mainNavigation]);
142
+ const level1Items = React.useMemo(() => ramda.indexBy(key, level1), [level1, key]);
143
+ const level2 = React.useMemo(() => level1.map(item => ramda.indexBy(key, item.pages)), [level1, key]);
144
+ const level2Items = Object.assign({}, ...level2);
145
+ // All states to for handling menus
146
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false);
147
+ const [menuLevel, setMenuLevel] = React.useState({
148
+ level1: null,
149
+ animate1: true,
150
+ level2: null,
151
+ animate2: true,
152
+ level1Mobile: null,
153
+ level2Mobile: null,
154
+ scrollPosition: 0,
155
+ hideOnScroll: false
156
+ });
157
+ const [lang] = React.useState(language);
158
+ // As scroll position cannot be always retained, close mobile menu when orientation changes
159
+ const initRotation = () => {
160
+ setIsMobileMenuOpen(false);
161
+ };
162
+ React.useEffect(() => {
163
+ if (iosDevice && isMobileMenuOpen) {
164
+ window.addEventListener('orientationchange', initRotation, false);
165
+ preventBodyScroll();
166
+ }
167
+ if (iosDevice && !isMobileMenuOpen) {
168
+ window.removeEventListener('orientationchange', initRotation, false);
169
+ resumeBodyScroll();
170
+ }
171
+ return () => {
172
+ window.removeEventListener('orientationchange', initRotation, false);
173
+ resumeBodyScroll();
174
+ };
175
+ }, [isMobileMenuOpen]);
176
+ const [tooltipItems, setTooltipItems] = React.useState(React.useMemo(() => ({
177
+ minicart: false,
178
+ login: false,
179
+ search: false
180
+ }), []));
181
+ const tooltipMenuActive = tooltipItems.minicart || tooltipItems.login || tooltipItems.search;
182
+ const freezeOverflow = isMobileMenuOpen || tooltipMenuActive && isMobile;
183
+ const isPageOverlay = isMobileMenuOpen || tooltipMenuActive || menuLevel.level1 || menuLevel.level2;
184
+ React.useEffect(() => {
185
+ const bodyClasses = ['overflow-shown', 'overflow-hidden'];
186
+ document.body.classList.remove(...bodyClasses);
187
+ document.body.classList.add(bodyClasses[Number(Boolean(freezeOverflow))]);
188
+ }, [freezeOverflow]);
189
+ const navigationContext = React.useMemo(() => {
190
+ const handleNavMenuClick = (newValue, updatedLevel) => {
191
+ let clickedItself = false;
192
+ switch (updatedLevel) {
193
+ case 'level1':
194
+ clickedItself = newValue === menuLevel.level1;
195
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
196
+ level1: !clickedItself ? newValue : null,
197
+ animate1: !clickedItself,
198
+ level2: null,
199
+ animate2: true
200
+ }));
201
+ break;
202
+ case 'level2':
203
+ clickedItself = newValue === menuLevel.level2;
204
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
205
+ level2: newValue !== menuLevel.level2 ? newValue : null,
206
+ animate1: false,
207
+ animate2: !clickedItself
208
+ }));
209
+ break;
210
+ case 'level1Mobile':
211
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
212
+ level1Mobile: newValue || menuLevel.level1Mobile,
213
+ scrollPosition: newValue ? 1 : 0
214
+ }));
215
+ break;
216
+ case 'level2Mobile':
217
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
218
+ level2Mobile: newValue || menuLevel.level2Mobile,
219
+ scrollPosition: newValue ? 2 : 1
220
+ }));
221
+ break;
222
+ }
223
+ };
224
+ const resetMenuEvents = () => {
225
+ setMenuLevel({
151
226
  level2: null,
152
227
  animate2: true,
228
+ level1: null,
229
+ animate1: true,
153
230
  level1Mobile: null,
154
231
  level2Mobile: null,
155
232
  scrollPosition: 0,
156
- hideOnScroll: false,
157
- });
158
- const [lang] = React.useState(language);
159
- // As scroll position cannot be always retained, close mobile menu when orientation changes
160
- const initRotation = () => {
233
+ hideOnScroll: false
234
+ });
235
+ if (isMobileMenuOpen) {
161
236
  setIsMobileMenuOpen(false);
162
- };
163
- React.useEffect(() => {
164
- if (iosDevice && isMobileMenuOpen) {
165
- window.addEventListener('orientationchange', initRotation, false);
166
- preventBodyScroll();
167
- }
168
- if (iosDevice && !isMobileMenuOpen) {
169
- window.removeEventListener('orientationchange', initRotation, false);
170
- resumeBodyScroll();
171
- }
172
- return () => {
173
- window.removeEventListener('orientationchange', initRotation, false);
174
- resumeBodyScroll();
175
- };
176
- }, [isMobileMenuOpen]);
177
- const [tooltipItems, setTooltipItems] = React.useState(React.useMemo(() => ({
237
+ }
238
+ setTooltipItems({
178
239
  minicart: false,
179
240
  login: false,
180
- search: false,
181
- }), []));
182
- const tooltipMenuActive = tooltipItems.minicart || tooltipItems.login || tooltipItems.search;
183
- const freezeOverflow = isMobileMenuOpen || (tooltipMenuActive && isMobile);
184
- const isPageOverlay = isMobileMenuOpen || tooltipMenuActive || menuLevel.level1 || menuLevel.level2;
185
- React.useEffect(() => {
186
- const bodyClasses = ['overflow-shown', 'overflow-hidden'];
187
- document.body.classList.remove(...bodyClasses);
188
- document.body.classList.add(bodyClasses[Number(Boolean(freezeOverflow))]);
189
- }, [freezeOverflow]);
190
- const navigationContext = React.useMemo(() => {
191
- const handleNavMenuClick = (newValue, updatedLevel) => {
192
- let clickedItself = false;
193
- switch (updatedLevel) {
194
- case 'level1':
195
- clickedItself = newValue === menuLevel.level1;
196
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1: !clickedItself ? newValue : null, animate1: !clickedItself, level2: null, animate2: true }));
197
- break;
198
- case 'level2':
199
- clickedItself = newValue === menuLevel.level2;
200
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2: newValue !== menuLevel.level2 ? newValue : null, animate1: false, animate2: !clickedItself }));
201
- break;
202
- case 'level1Mobile':
203
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1Mobile: newValue || menuLevel.level1Mobile, scrollPosition: newValue ? 1 : 0 }));
204
- break;
205
- case 'level2Mobile':
206
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2Mobile: newValue || menuLevel.level2Mobile, scrollPosition: newValue ? 2 : 1 }));
207
- break;
208
- }
209
- };
210
- const resetMenuEvents = () => {
211
- setMenuLevel({
212
- level2: null,
213
- animate2: true,
214
- level1: null,
215
- animate1: true,
216
- level1Mobile: null,
217
- level2Mobile: null,
218
- scrollPosition: 0,
219
- hideOnScroll: false,
220
- });
221
- if (isMobileMenuOpen) {
222
- setIsMobileMenuOpen(false);
223
- }
224
- setTooltipItems({
225
- minicart: false,
226
- login: false,
227
- search: false,
228
- });
229
- };
230
- const getBackLink = (menuElements, i) => {
231
- const idValue = menuLevel[`level${i}Mobile`];
232
- return menuElements[idValue];
233
- };
234
- // Resets menu states when menu content alters between mobile and desktop
235
- const menuChanged = previousValue !== isMobile;
236
- if (menuChanged) {
237
- resetMenuEvents();
238
- previousValue = isMobile;
239
- }
240
- return {
241
- backToPreviousCategoryLabel,
242
- categoryCollectionText,
243
- collapseSize,
244
- currentUrl,
245
- getBackLink,
246
- featuredItemsAriaLabel,
247
- handleNavMenuClick,
248
- isLoggedIn,
249
- isMobileMenu: isMobile,
250
- isMobileMenuOpen,
251
- items,
252
- lang,
253
- level1Items,
254
- level2Items,
255
- loginComponent,
256
- menuLevel,
257
- navZIndex: zIndex,
258
- nextJSLinkComponent,
259
- nextJSLinkLegacyBehavior,
260
- resetMenuEvents,
261
- searchComponent,
262
- setTooltipItems,
263
- showLoginTooltip,
264
- showMinicart,
265
- tooltipItems,
266
- };
267
- }, [
268
- backToPreviousCategoryLabel,
269
- categoryCollectionText,
270
- collapseSize,
271
- currentUrl,
272
- featuredItemsAriaLabel,
273
- isLoggedIn,
274
- isMobile,
275
- isMobileMenuOpen,
276
- items,
277
- lang,
278
- level1Items,
279
- level2Items,
280
- loginComponent,
281
- menuLevel,
282
- nextJSLinkComponent,
283
- nextJSLinkLegacyBehavior,
284
- searchComponent,
285
- showLoginTooltip,
286
- showMinicart,
287
- tooltipItems,
288
- zIndex,
289
- ]);
290
- useScrollPosition.default(({ prevPos, currPos }) => {
291
- const overThreshold = checkThreshold(prevPos.y, currPos.y);
292
- const isShow = currPos.y < prevPos.y;
293
- if (isShow !== menuLevel.hideOnScroll && overThreshold && !menuLevel.level1) {
294
- setMenuLevel(Object.assign(Object.assign({}, menuLevel), { animate1: false, animate2: false, hideOnScroll: isShow }));
295
- }
296
- }, undefined, false, 200);
297
- const currentBusinessSite = (_b = items === null || items === void 0 ? void 0 : items.businessSelector) === null || _b === void 0 ? void 0 : _b.items.find(item => item.businessId === items.businessId);
298
- const languagesObject = (_c = items === null || items === void 0 ? void 0 : items.languageSelector) === null || _c === void 0 ? void 0 : _c.urls;
299
- const { resetMenuEvents } = navigationContext;
300
- const handleToggleClick = () => {
301
- resetMenuEvents();
302
- initiateScrollToHeader(navigationEl);
303
- setIsMobileMenuOpen(!isMobileMenuOpen);
241
+ search: false
242
+ });
243
+ };
244
+ const getBackLink = (menuElements, i) => {
245
+ const idValue = menuLevel[`level${i}Mobile`];
246
+ return menuElements[idValue];
304
247
  };
305
- return (React__default.default.createElement(React__default.default.Fragment, null,
306
- isPageOverlay && React__default.default.createElement(PageOverlay, { "data-testid": "navigation-overlay", "$navZIndex": zIndex }),
307
- React__default.default.createElement(GlobalNavigationContainer, { className: className, "$collapseSize": collapseSize, "data-testid": "dna-main-header", "$navZIndex": zIndex, ref: navigationEl },
308
- React__default.default.createElement(NavContext.default.Provider, { value: navigationContext },
309
- React__default.default.createElement(GlobalStyle, null),
310
- !items.mainNavigation && notificationText && (React__default.default.createElement(Notification.default, { type: "info" }, notificationText)),
311
- React__default.default.createElement(BusinessMenu.default, { ariaLabel: businessMenuAriaLabel, currentBusinessId: items.businessId, items: (_d = items.businessSelector) === null || _d === void 0 ? void 0 : _d.items, lang: language }),
312
- React__default.default.createElement(NavigationWrapper, { "$collapseSize": collapseSize },
313
- React__default.default.createElement(globalNavStyles.LogoLink, { "data-testid": "dna-logo-link", href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language], "aria-label": dnaLogoLinkAriaLabel },
314
- React__default.default.createElement(DnaLogo.default, { size: navigation.headerLogoSize })),
315
- React__default.default.createElement(globalNavStyles.DesktopMenuContainer, { "aria-label": mainMenuAriaLabel, "$collapseSize": collapseSize },
316
- React__default.default.createElement(DesktopMenu.default, null)),
317
- React__default.default.createElement(globalNavStyles.HeaderIconContainer, { "$collapseSize": collapseSize },
318
- languagesObject && languageSelector && (React__default.default.createElement(LanguageSelector.default, { currentLanguage: language, languagesObject: languagesObject, languageSelectorLabel: languageSelectorText })),
319
- search && React__default.default.createElement(PageSearch.default, { searchLabel: searchText }),
320
- minicart && (React__default.default.createElement(MinicartTooltip.default, { minicartAmount: minicartAmount, minicartAmountLabel: minicartAmountLabel !== null && minicartAmountLabel !== void 0 ? minicartAmountLabel : '', minicartLabel: minicartText, onCartButtonClick: props.onCartButtonClick })),
321
- login && React__default.default.createElement(LoginTooltip.default, { loginLabel: loginText, isLogged: isLoggedIn }),
322
- React__default.default.createElement(MainNavTooltipMenu.IconContainer, { "$collapseSize": collapseSize, "data-testid": "header-mobile-menu-container" },
323
- React__default.default.createElement(globalNavStyles.MobileMenuButton, { "aria-expanded": isMobileMenuOpen, "aria-label": isMobileMenuOpen
324
- ? closeMainMenuAriaLabel
325
- : openMainMenuAriaLabel, "data-testid": "header-mobile-menu-toggle", onClick: handleToggleClick }, isMobileMenuOpen ? React__default.default.createElement(icons.Close, null) : React__default.default.createElement(icons.Menu, null)))),
326
- isMobile && React__default.default.createElement(MobileMenu.default, null))))));
248
+ // Resets menu states when menu content alters between mobile and desktop
249
+ const menuChanged = previousValue !== isMobile;
250
+ if (menuChanged) {
251
+ resetMenuEvents();
252
+ previousValue = isMobile;
253
+ }
254
+ return {
255
+ backToPreviousCategoryLabel,
256
+ categoryCollectionText,
257
+ collapseSize,
258
+ currentUrl,
259
+ getBackLink,
260
+ featuredItemsAriaLabel,
261
+ handleNavMenuClick,
262
+ isLoggedIn,
263
+ isMobileMenu: isMobile,
264
+ isMobileMenuOpen,
265
+ items,
266
+ lang,
267
+ level1Items,
268
+ level2Items,
269
+ loginComponent,
270
+ menuLevel,
271
+ navZIndex: zIndex,
272
+ nextJSLinkComponent,
273
+ nextJSLinkLegacyBehavior,
274
+ resetMenuEvents,
275
+ searchComponent,
276
+ setTooltipItems,
277
+ showLoginTooltip,
278
+ showMinicart,
279
+ tooltipItems
280
+ };
281
+ }, [backToPreviousCategoryLabel, categoryCollectionText, collapseSize, currentUrl, featuredItemsAriaLabel, isLoggedIn, isMobile, isMobileMenuOpen, items, lang, level1Items, level2Items, loginComponent, menuLevel, nextJSLinkComponent, nextJSLinkLegacyBehavior, searchComponent, showLoginTooltip, showMinicart, tooltipItems, zIndex]);
282
+ useScrollPosition.default(({
283
+ prevPos,
284
+ currPos
285
+ }) => {
286
+ const overThreshold = checkThreshold(prevPos.y, currPos.y);
287
+ const isShow = currPos.y < prevPos.y;
288
+ if (isShow !== menuLevel.hideOnScroll && overThreshold && !menuLevel.level1) {
289
+ setMenuLevel(Object.assign(Object.assign({}, menuLevel), {
290
+ animate1: false,
291
+ animate2: false,
292
+ hideOnScroll: isShow
293
+ }));
294
+ }
295
+ }, undefined, false, 200);
296
+ const currentBusinessSite = (_b = items === null || items === void 0 ? void 0 : items.businessSelector) === null || _b === void 0 ? void 0 : _b.items.find(item => item.businessId === items.businessId);
297
+ const languagesObject = (_c = items === null || items === void 0 ? void 0 : items.languageSelector) === null || _c === void 0 ? void 0 : _c.urls;
298
+ const {
299
+ resetMenuEvents
300
+ } = navigationContext;
301
+ const handleToggleClick = () => {
302
+ resetMenuEvents();
303
+ initiateScrollToHeader(navigationEl);
304
+ setIsMobileMenuOpen(!isMobileMenuOpen);
305
+ };
306
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, isPageOverlay && /*#__PURE__*/React__default.default.createElement(PageOverlay, {
307
+ "data-testid": "navigation-overlay",
308
+ "$navZIndex": zIndex
309
+ }), /*#__PURE__*/React__default.default.createElement(GlobalNavigationContainer, {
310
+ className: className,
311
+ "$collapseSize": collapseSize,
312
+ "data-testid": "dna-main-header",
313
+ "$navZIndex": zIndex,
314
+ ref: navigationEl
315
+ }, /*#__PURE__*/React__default.default.createElement(NavContext.default.Provider, {
316
+ value: navigationContext
317
+ }, /*#__PURE__*/React__default.default.createElement(GlobalStyle, null), !items.mainNavigation && notificationText && (/*#__PURE__*/React__default.default.createElement(Notification.default, {
318
+ type: "info"
319
+ }, notificationText)), /*#__PURE__*/React__default.default.createElement(BusinessMenu.default, {
320
+ ariaLabel: businessMenuAriaLabel,
321
+ currentBusinessId: items.businessId,
322
+ items: (_d = items.businessSelector) === null || _d === void 0 ? void 0 : _d.items,
323
+ lang: language
324
+ }), /*#__PURE__*/React__default.default.createElement(NavigationWrapper, {
325
+ "$collapseSize": collapseSize
326
+ }, /*#__PURE__*/React__default.default.createElement(globalNavStyles.LogoLink, {
327
+ "data-testid": "dna-logo-link",
328
+ href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language],
329
+ "aria-label": dnaLogoLinkAriaLabel
330
+ }, /*#__PURE__*/React__default.default.createElement(DnaLogo.default, {
331
+ size: navigation.headerLogoSize
332
+ })), /*#__PURE__*/React__default.default.createElement(globalNavStyles.DesktopMenuContainer, {
333
+ "aria-label": mainMenuAriaLabel,
334
+ "$collapseSize": collapseSize
335
+ }, /*#__PURE__*/React__default.default.createElement(DesktopMenu.default, null)), /*#__PURE__*/React__default.default.createElement(globalNavStyles.HeaderIconContainer, {
336
+ "$collapseSize": collapseSize
337
+ }, languagesObject && languageSelector && (/*#__PURE__*/React__default.default.createElement(LanguageSelector.default, {
338
+ currentLanguage: language,
339
+ languagesObject: languagesObject,
340
+ languageSelectorLabel: languageSelectorText
341
+ })), search && /*#__PURE__*/React__default.default.createElement(PageSearch.default, {
342
+ searchLabel: searchText
343
+ }), minicart && (/*#__PURE__*/React__default.default.createElement(MinicartTooltip.default, {
344
+ minicartAmount: minicartAmount,
345
+ minicartAmountLabel: minicartAmountLabel !== null && minicartAmountLabel !== void 0 ? minicartAmountLabel : '',
346
+ minicartLabel: minicartText,
347
+ onCartButtonClick: props.onCartButtonClick
348
+ })), login && /*#__PURE__*/React__default.default.createElement(LoginTooltip.default, {
349
+ loginLabel: loginText,
350
+ isLogged: isLoggedIn
351
+ }), /*#__PURE__*/React__default.default.createElement(MainNavTooltipMenu.IconContainer, {
352
+ "$collapseSize": collapseSize,
353
+ "data-testid": "header-mobile-menu-container"
354
+ }, /*#__PURE__*/React__default.default.createElement(globalNavStyles.MobileMenuButton, {
355
+ "aria-expanded": isMobileMenuOpen,
356
+ "aria-label": isMobileMenuOpen ? closeMainMenuAriaLabel : openMainMenuAriaLabel,
357
+ "data-testid": "header-mobile-menu-toggle",
358
+ onClick: handleToggleClick
359
+ }, isMobileMenuOpen ? /*#__PURE__*/React__default.default.createElement(icons.Close, null) : /*#__PURE__*/React__default.default.createElement(icons.Menu, null)))), isMobile && /*#__PURE__*/React__default.default.createElement(MobileMenu.default, null)))));
327
360
  };
328
361
 
329
362
  exports.default = MainHeaderNavigation;