@reykjavik/hanna-react 0.10.53

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 (357) hide show
  1. package/CHANGELOG.md +795 -0
  2. package/README.md +69 -0
  3. package/lib/AccordionList.cjs +91 -0
  4. package/lib/AccordionList.mjs +69 -0
  5. package/lib/ActionCards.cjs +57 -0
  6. package/lib/ActionCards.mjs +35 -0
  7. package/lib/Alert.cjs +159 -0
  8. package/lib/Alert.mjs +139 -0
  9. package/lib/ArticleCarousel/_ArticleCarouselCard.cjs +75 -0
  10. package/lib/ArticleCarousel/_ArticleCarouselCard.mjs +51 -0
  11. package/lib/ArticleCarousel.cjs +43 -0
  12. package/lib/ArticleCarousel.mjs +21 -0
  13. package/lib/ArticleMeta.cjs +46 -0
  14. package/lib/ArticleMeta.mjs +22 -0
  15. package/lib/Attention.cjs +33 -0
  16. package/lib/Attention.mjs +9 -0
  17. package/lib/BasicTable.cjs +72 -0
  18. package/lib/BasicTable.mjs +50 -0
  19. package/lib/Bling.cjs +76 -0
  20. package/lib/Bling.mjs +52 -0
  21. package/lib/BlockBreak.cjs +32 -0
  22. package/lib/BlockBreak.mjs +8 -0
  23. package/lib/BlockQuote.cjs +47 -0
  24. package/lib/BlockQuote.mjs +25 -0
  25. package/lib/BreadCrumbs.cjs +67 -0
  26. package/lib/BreadCrumbs.mjs +43 -0
  27. package/lib/ButtonBack.cjs +47 -0
  28. package/lib/ButtonBack.mjs +25 -0
  29. package/lib/ButtonBar.cjs +45 -0
  30. package/lib/ButtonBar.mjs +18 -0
  31. package/lib/ButtonPrimary.cjs +47 -0
  32. package/lib/ButtonPrimary.mjs +25 -0
  33. package/lib/ButtonSecondary.cjs +47 -0
  34. package/lib/ButtonSecondary.mjs +25 -0
  35. package/lib/ButtonTertiary.cjs +64 -0
  36. package/lib/ButtonTertiary.mjs +42 -0
  37. package/lib/Carousel.cjs +52 -0
  38. package/lib/Carousel.mjs +30 -0
  39. package/lib/CarouselStepper.cjs +51 -0
  40. package/lib/CarouselStepper.mjs +29 -0
  41. package/lib/CenterColumn.cjs +40 -0
  42. package/lib/CenterColumn.mjs +16 -0
  43. package/lib/Checkbox.cjs +52 -0
  44. package/lib/Checkbox.mjs +30 -0
  45. package/lib/CheckboxButtonsGroup.cjs +65 -0
  46. package/lib/CheckboxButtonsGroup.mjs +43 -0
  47. package/lib/CheckboxGroup.cjs +55 -0
  48. package/lib/CheckboxGroup.mjs +33 -0
  49. package/lib/CityBlock.cjs +49 -0
  50. package/lib/CityBlock.mjs +25 -0
  51. package/lib/ContactBubble.cjs +200 -0
  52. package/lib/ContactBubble.mjs +173 -0
  53. package/lib/ContentArticle.cjs +63 -0
  54. package/lib/ContentArticle.mjs +41 -0
  55. package/lib/ContentImage.cjs +58 -0
  56. package/lib/ContentImage.mjs +36 -0
  57. package/lib/Datepicker.cjs +164 -0
  58. package/lib/Datepicker.mjs +142 -0
  59. package/lib/ExtraLinks.cjs +96 -0
  60. package/lib/ExtraLinks.mjs +74 -0
  61. package/lib/FeatureList.cjs +53 -0
  62. package/lib/FeatureList.mjs +29 -0
  63. package/lib/FieldGroup.cjs +40 -0
  64. package/lib/FieldGroup.mjs +16 -0
  65. package/lib/FileInput.cjs +256 -0
  66. package/lib/FileInput.mjs +234 -0
  67. package/lib/Foonote.cjs +30 -0
  68. package/lib/Foonote.mjs +6 -0
  69. package/lib/FooterBadges.cjs +49 -0
  70. package/lib/FooterBadges.mjs +25 -0
  71. package/lib/FooterInfo.cjs +47 -0
  72. package/lib/FooterInfo.mjs +23 -0
  73. package/lib/Footnote.cjs +32 -0
  74. package/lib/Footnote.mjs +8 -0
  75. package/lib/Form.cjs +56 -0
  76. package/lib/Form.mjs +34 -0
  77. package/lib/FormField.cjs +153 -0
  78. package/lib/FormField.mjs +131 -0
  79. package/lib/Gallery/_GalleryItem.cjs +83 -0
  80. package/lib/Gallery/_GalleryItem.mjs +61 -0
  81. package/lib/Gallery/_GalleryModal.cjs +104 -0
  82. package/lib/Gallery/_GalleryModal.mjs +82 -0
  83. package/lib/Gallery/_GalleryModalContext.cjs +30 -0
  84. package/lib/Gallery/_GalleryModalContext.mjs +6 -0
  85. package/lib/Gallery/_GalleryModalItem.cjs +59 -0
  86. package/lib/Gallery/_GalleryModalItem.mjs +36 -0
  87. package/lib/Gallery.cjs +79 -0
  88. package/lib/Gallery.mjs +57 -0
  89. package/lib/GridBlocks.cjs +81 -0
  90. package/lib/GridBlocks.mjs +59 -0
  91. package/lib/Heading.cjs +45 -0
  92. package/lib/Heading.mjs +21 -0
  93. package/lib/HeroBlock.cjs +74 -0
  94. package/lib/HeroBlock.mjs +52 -0
  95. package/lib/IframeBlock.cjs +48 -0
  96. package/lib/IframeBlock.mjs +24 -0
  97. package/lib/Illustration.cjs +51 -0
  98. package/lib/Illustration.mjs +31 -0
  99. package/lib/ImageCards.cjs +72 -0
  100. package/lib/ImageCards.mjs +52 -0
  101. package/lib/InfoBlock.cjs +51 -0
  102. package/lib/InfoBlock.mjs +27 -0
  103. package/lib/InfoHero.cjs +150 -0
  104. package/lib/InfoHero.mjs +128 -0
  105. package/lib/IslandBlock.cjs +63 -0
  106. package/lib/IslandBlock.mjs +41 -0
  107. package/lib/IslandPageBlock.cjs +49 -0
  108. package/lib/IslandPageBlock.mjs +25 -0
  109. package/lib/LabeledTextBlock.cjs +60 -0
  110. package/lib/LabeledTextBlock.mjs +38 -0
  111. package/lib/Layout.cjs +113 -0
  112. package/lib/Layout.mjs +87 -0
  113. package/lib/MainMenu/_Auxiliary.cjs +54 -0
  114. package/lib/MainMenu/_Auxiliary.mjs +28 -0
  115. package/lib/MainMenu/_PrimaryPanel.cjs +74 -0
  116. package/lib/MainMenu/_PrimaryPanel.mjs +48 -0
  117. package/lib/MainMenu.cjs +209 -0
  118. package/lib/MainMenu.mjs +187 -0
  119. package/lib/MiniMetrics.cjs +56 -0
  120. package/lib/MiniMetrics.mjs +34 -0
  121. package/lib/Modal.cjs +70 -0
  122. package/lib/Modal.mjs +48 -0
  123. package/lib/NameCard.cjs +115 -0
  124. package/lib/NameCard.mjs +91 -0
  125. package/lib/NameCards.cjs +52 -0
  126. package/lib/NameCards.mjs +30 -0
  127. package/lib/NewsHero.cjs +136 -0
  128. package/lib/NewsHero.mjs +114 -0
  129. package/lib/PageFilter.cjs +48 -0
  130. package/lib/PageFilter.mjs +24 -0
  131. package/lib/PageHeading.cjs +42 -0
  132. package/lib/PageHeading.mjs +18 -0
  133. package/lib/ProcessOverview.cjs +52 -0
  134. package/lib/ProcessOverview.mjs +28 -0
  135. package/lib/PullQuote.cjs +47 -0
  136. package/lib/PullQuote.mjs +25 -0
  137. package/lib/RadioButtonsGroup.cjs +64 -0
  138. package/lib/RadioButtonsGroup.mjs +42 -0
  139. package/lib/RadioGroup.cjs +58 -0
  140. package/lib/RadioGroup.mjs +36 -0
  141. package/lib/RelatedLinks.cjs +61 -0
  142. package/lib/RelatedLinks.mjs +37 -0
  143. package/lib/RowBlock.cjs +39 -0
  144. package/lib/RowBlock.mjs +15 -0
  145. package/lib/RowBlockColumn.cjs +40 -0
  146. package/lib/RowBlockColumn.mjs +16 -0
  147. package/lib/SearchInput.cjs +136 -0
  148. package/lib/SearchInput.mjs +114 -0
  149. package/lib/SearchResults/_SearchResultsItem.cjs +54 -0
  150. package/lib/SearchResults/_SearchResultsItem.mjs +30 -0
  151. package/lib/SearchResults.cjs +172 -0
  152. package/lib/SearchResults.mjs +150 -0
  153. package/lib/SeenEffect.cjs +66 -0
  154. package/lib/SeenEffect.mjs +44 -0
  155. package/lib/Selectbox.cjs +144 -0
  156. package/lib/Selectbox.mjs +122 -0
  157. package/lib/ShareButtons.cjs +101 -0
  158. package/lib/ShareButtons.mjs +83 -0
  159. package/lib/Sharpie.cjs +51 -0
  160. package/lib/Sharpie.mjs +27 -0
  161. package/lib/SiteSearchAutocomplete.cjs +150 -0
  162. package/lib/SiteSearchAutocomplete.mjs +126 -0
  163. package/lib/SiteSearchCurtain.cjs +78 -0
  164. package/lib/SiteSearchCurtain.mjs +56 -0
  165. package/lib/SiteSearchInput.cjs +119 -0
  166. package/lib/SiteSearchInput.mjs +97 -0
  167. package/lib/Skeleton.cjs +63 -0
  168. package/lib/Skeleton.mjs +39 -0
  169. package/lib/SubHeading.cjs +43 -0
  170. package/lib/SubHeading.mjs +19 -0
  171. package/lib/Tabs.cjs +166 -0
  172. package/lib/Tabs.mjs +144 -0
  173. package/lib/TagPill.cjs +113 -0
  174. package/lib/TagPill.mjs +91 -0
  175. package/lib/TextBlock.cjs +45 -0
  176. package/lib/TextBlock.mjs +21 -0
  177. package/lib/TextButton.cjs +55 -0
  178. package/lib/TextButton.mjs +33 -0
  179. package/lib/TextInput.cjs +136 -0
  180. package/lib/TextInput.mjs +114 -0
  181. package/lib/VSpacer.cjs +70 -0
  182. package/lib/VSpacer.mjs +46 -0
  183. package/lib/VerticalTabsTOC.cjs +123 -0
  184. package/lib/VerticalTabsTOC.mjs +101 -0
  185. package/lib/WizardLayout.cjs +79 -0
  186. package/lib/WizardLayout.mjs +55 -0
  187. package/lib/WizardLayoutClose.cjs +47 -0
  188. package/lib/WizardLayoutClose.mjs +25 -0
  189. package/lib/WizardStepper.cjs +55 -0
  190. package/lib/WizardStepper.mjs +31 -0
  191. package/lib/_abstract/Button.cjs +114 -0
  192. package/lib/_abstract/Button.mjs +92 -0
  193. package/lib/_abstract/CardList.cjs +100 -0
  194. package/lib/_abstract/CardList.mjs +76 -0
  195. package/lib/_abstract/Image.cjs +75 -0
  196. package/lib/_abstract/Image.mjs +51 -0
  197. package/lib/_abstract/Link.cjs +37 -0
  198. package/lib/_abstract/Link.mjs +10 -0
  199. package/lib/_abstract/TogglerGroup.cjs +92 -0
  200. package/lib/_abstract/TogglerGroup.mjs +70 -0
  201. package/lib/_abstract/TogglerGroupField.cjs +121 -0
  202. package/lib/_abstract/TogglerGroupField.mjs +99 -0
  203. package/lib/_abstract/TogglerInput.cjs +105 -0
  204. package/lib/_abstract/TogglerInput.mjs +83 -0
  205. package/lib/_abstract/_AbstractCarousel.cjs +170 -0
  206. package/lib/_abstract/_AbstractCarousel.mjs +152 -0
  207. package/lib/_abstract/_Blings.cjs +47 -0
  208. package/lib/_abstract/_Blings.mjs +23 -0
  209. package/lib/_abstract/_Block.cjs +73 -0
  210. package/lib/_abstract/_Block.mjs +51 -0
  211. package/lib/_abstract/_Quote.cjs +43 -0
  212. package/lib/_abstract/_Quote.mjs +17 -0
  213. package/lib/_abstract/breakOnNL.cjs +30 -0
  214. package/lib/_abstract/breakOnNL.mjs +6 -0
  215. package/lib/assets.cjs +77 -0
  216. package/lib/assets.mjs +53 -0
  217. package/lib/constants.cjs +49 -0
  218. package/lib/constants.mjs +24 -0
  219. package/lib/focus-visible.cjs +1 -0
  220. package/lib/focus-visible.mjs +1 -0
  221. package/lib/utils/config.cjs +27 -0
  222. package/lib/utils/config.mjs +4 -0
  223. package/lib/utils/detectEdgeScroll.cjs +95 -0
  224. package/lib/utils/detectEdgeScroll.mjs +71 -0
  225. package/lib/utils/env.cjs +31 -0
  226. package/lib/utils/env.mjs +5 -0
  227. package/lib/utils/seenEffect.cjs +93 -0
  228. package/lib/utils/seenEffect.mjs +65 -0
  229. package/lib/utils/useFormatMonitor.cjs +29 -0
  230. package/lib/utils/useFormatMonitor.mjs +6 -0
  231. package/lib/utils/useGetSVGtext.cjs +44 -0
  232. package/lib/utils/useGetSVGtext.mjs +21 -0
  233. package/lib/utils/useMenuToggling.cjs +83 -0
  234. package/lib/utils/useMenuToggling.mjs +60 -0
  235. package/lib/utils/useScrollbarWidthCSSVar.cjs +32 -0
  236. package/lib/utils/useScrollbarWidthCSSVar.mjs +6 -0
  237. package/lib/utils.cjs +18 -0
  238. package/lib/utils.mjs +2 -0
  239. package/package.json +491 -0
  240. package/types/AccordionList.d.ts +17 -0
  241. package/types/ActionCards.d.ts +5 -0
  242. package/types/Alert.d.ts +49 -0
  243. package/types/ArticleCarousel/_ArticleCarouselCard.d.ts +27 -0
  244. package/types/ArticleCarousel.d.ts +12 -0
  245. package/types/ArticleMeta.d.ts +9 -0
  246. package/types/Attention.d.ts +7 -0
  247. package/types/BasicTable.d.ts +12 -0
  248. package/types/Bling.d.ts +81 -0
  249. package/types/BlockBreak.d.ts +2 -0
  250. package/types/BlockQuote.d.ts +4 -0
  251. package/types/BreadCrumbs.d.ts +11 -0
  252. package/types/ButtonBack.d.ts +7 -0
  253. package/types/ButtonBar.d.ts +16 -0
  254. package/types/ButtonPrimary.d.ts +7 -0
  255. package/types/ButtonSecondary.d.ts +7 -0
  256. package/types/ButtonTertiary.d.ts +12 -0
  257. package/types/Carousel.d.ts +4 -0
  258. package/types/CarouselStepper.d.ts +4 -0
  259. package/types/CenterColumn.d.ts +7 -0
  260. package/types/Checkbox.d.ts +4 -0
  261. package/types/CheckboxButtonsGroup.d.ts +11 -0
  262. package/types/CheckboxGroup.d.ts +9 -0
  263. package/types/CityBlock.d.ts +23 -0
  264. package/types/ContactBubble.d.ts +58 -0
  265. package/types/ContentArticle.d.ts +15 -0
  266. package/types/ContentImage.d.ts +8 -0
  267. package/types/Datepicker.d.ts +39 -0
  268. package/types/ExtraLinks.d.ts +18 -0
  269. package/types/FeatureList.d.ts +12 -0
  270. package/types/FieldGroup.d.ts +9 -0
  271. package/types/FileInput.d.ts +17 -0
  272. package/types/Foonote.d.ts +12 -0
  273. package/types/FooterBadges.d.ts +9 -0
  274. package/types/FooterInfo.d.ts +18 -0
  275. package/types/Footnote.d.ts +6 -0
  276. package/types/Form.d.ts +7 -0
  277. package/types/FormField.d.ts +65 -0
  278. package/types/Gallery/_GalleryItem.d.ts +8 -0
  279. package/types/Gallery/_GalleryModal.d.ts +6 -0
  280. package/types/Gallery/_GalleryModalContext.d.ts +9 -0
  281. package/types/Gallery/_GalleryModalItem.d.ts +3 -0
  282. package/types/Gallery.d.ts +17 -0
  283. package/types/GridBlocks.d.ts +26 -0
  284. package/types/Heading.d.ts +16 -0
  285. package/types/HeroBlock.d.ts +19 -0
  286. package/types/IframeBlock.d.ts +23 -0
  287. package/types/Illustration.d.ts +13 -0
  288. package/types/ImageCards.d.ts +8 -0
  289. package/types/InfoBlock.d.ts +17 -0
  290. package/types/InfoHero.d.ts +17 -0
  291. package/types/IslandBlock.d.ts +25 -0
  292. package/types/IslandPageBlock.d.ts +24 -0
  293. package/types/LabeledTextBlock.d.ts +11 -0
  294. package/types/Layout.d.ts +33 -0
  295. package/types/MainMenu/_Auxiliary.d.ts +6 -0
  296. package/types/MainMenu/_PrimaryPanel.d.ts +13 -0
  297. package/types/MainMenu.d.ts +48 -0
  298. package/types/MiniMetrics.d.ts +8 -0
  299. package/types/Modal.d.ts +10 -0
  300. package/types/NameCard.d.ts +64 -0
  301. package/types/NameCards.d.ts +6 -0
  302. package/types/NewsHero.d.ts +14 -0
  303. package/types/PageFilter.d.ts +17 -0
  304. package/types/PageHeading.d.ts +10 -0
  305. package/types/ProcessOverview.d.ts +13 -0
  306. package/types/PullQuote.d.ts +4 -0
  307. package/types/RadioButtonsGroup.d.ts +11 -0
  308. package/types/RadioGroup.d.ts +13 -0
  309. package/types/RelatedLinks.d.ts +20 -0
  310. package/types/RowBlock.d.ts +12 -0
  311. package/types/RowBlockColumn.d.ts +8 -0
  312. package/types/SearchInput.d.ts +18 -0
  313. package/types/SearchResults/_SearchResultsItem.d.ts +18 -0
  314. package/types/SearchResults.d.ts +33 -0
  315. package/types/SeenEffect.d.ts +4 -0
  316. package/types/Selectbox.d.ts +8 -0
  317. package/types/ShareButtons.d.ts +9 -0
  318. package/types/Sharpie.d.ts +23 -0
  319. package/types/SiteSearchAutocomplete.d.ts +40 -0
  320. package/types/SiteSearchCurtain.d.ts +6 -0
  321. package/types/SiteSearchInput.d.ts +24 -0
  322. package/types/Skeleton.d.ts +25 -0
  323. package/types/SubHeading.d.ts +10 -0
  324. package/types/Tabs.d.ts +35 -0
  325. package/types/TagPill.d.ts +27 -0
  326. package/types/TextBlock.d.ts +15 -0
  327. package/types/TextButton.d.ts +9 -0
  328. package/types/TextInput.d.ts +16 -0
  329. package/types/VSpacer.d.ts +24 -0
  330. package/types/VerticalTabsTOC.d.ts +14 -0
  331. package/types/WizardLayout.d.ts +15 -0
  332. package/types/WizardLayoutClose.d.ts +3 -0
  333. package/types/WizardStepper.d.ts +36 -0
  334. package/types/_abstract/Button.d.ts +40 -0
  335. package/types/_abstract/CardList.d.ts +29 -0
  336. package/types/_abstract/Image.d.ts +32 -0
  337. package/types/_abstract/Link.d.ts +27 -0
  338. package/types/_abstract/TogglerGroup.d.ts +31 -0
  339. package/types/_abstract/TogglerGroupField.d.ts +17 -0
  340. package/types/_abstract/TogglerInput.d.ts +22 -0
  341. package/types/_abstract/_AbstractCarousel.d.ts +25 -0
  342. package/types/_abstract/_Blings.d.ts +11 -0
  343. package/types/_abstract/_Block.d.ts +22 -0
  344. package/types/_abstract/_Quote.d.ts +9 -0
  345. package/types/_abstract/breakOnNL.d.ts +2 -0
  346. package/types/assets.d.ts +42 -0
  347. package/types/constants.d.ts +39 -0
  348. package/types/focus-visible.d.ts +1 -0
  349. package/types/utils/config.d.ts +2 -0
  350. package/types/utils/detectEdgeScroll.d.ts +52 -0
  351. package/types/utils/env.d.ts +1 -0
  352. package/types/utils/seenEffect.d.ts +28 -0
  353. package/types/utils/useFormatMonitor.d.ts +38 -0
  354. package/types/utils/useGetSVGtext.d.ts +6 -0
  355. package/types/utils/useMenuToggling.d.ts +8 -0
  356. package/types/utils/useScrollbarWidthCSSVar.d.ts +1 -0
  357. package/types/utils.d.ts +2 -0
@@ -0,0 +1,173 @@
1
+ import React, { useEffect, useMemo, useRef, useState } from "react";
2
+ import focusElm from "@hugsmidjan/qj/focusElm";
3
+ import { useDomid, useIsBrowserSide } from "@hugsmidjan/react/hooks";
4
+ import getBemClass from "@hugsmidjan/react/utils/getBemClass";
5
+ import { getPageScrollElm } from "@reykjavik/hanna-utils";
6
+ import { getTexts } from "@reykjavik/hanna-utils/i18n";
7
+ import { Link } from "./_abstract/Link";
8
+ const defaultTexts = {
9
+ is: {
10
+ lang: "is",
11
+ openBtn: "Hafa samband",
12
+ closeBtn: "Loka",
13
+ closeBtnLong: "Loka valmynd"
14
+ },
15
+ en: {
16
+ lang: "en",
17
+ openBtn: "Contact us",
18
+ closeBtn: "Close",
19
+ closeBtnLong: "Close bubble"
20
+ }
21
+ };
22
+ const icons = {
23
+ suggestions: 1,
24
+ phone: 1,
25
+ faq: 1,
26
+ livechat: 1,
27
+ other: 0
28
+ };
29
+ const ensureIcon = (maybeIcon) => maybeIcon && icons[maybeIcon] ? maybeIcon : void 0;
30
+ const ContactBubble = (props) => {
31
+ const { title, links, onToggle, alwaysShow } = props;
32
+ const txt = getTexts(props, defaultTexts);
33
+ const useLocalState = props.open == null;
34
+ const [localOpen, setLocalOpen] = useState(false);
35
+ const open = useLocalState ? localOpen : props.open;
36
+ const isBrowser = useIsBrowserSide(props.ssr);
37
+ const domid = useDomid();
38
+ const wrapperRef = useRef(null);
39
+ const { openBubble, closeBubble } = useMemo(() => ({
40
+ openBubble: () => {
41
+ useLocalState && setLocalOpen(true);
42
+ onToggle && onToggle(true);
43
+ },
44
+ closeBubble: (setFocus) => {
45
+ useLocalState && setLocalOpen(false);
46
+ onToggle && onToggle(false);
47
+ setFocus !== false && focusElm(wrapperRef.current);
48
+ }
49
+ }), [useLocalState, onToggle]);
50
+ useEffect(() => {
51
+ const wrapperElm = wrapperRef.current;
52
+ if (!wrapperElm) {
53
+ return;
54
+ }
55
+ if (alwaysShow) {
56
+ wrapperElm.dataset.show = "true";
57
+ return;
58
+ }
59
+ const scrollElm = getPageScrollElm();
60
+ let pending = 0;
61
+ const checkScroll = () => {
62
+ if (!pending) {
63
+ pending = requestAnimationFrame(() => {
64
+ const { scrollTop, scrollHeight, clientHeight } = scrollElm;
65
+ const scrollLength = scrollHeight - clientHeight;
66
+ const f = 1;
67
+ const show = scrollTop > f * 150 && scrollLength - scrollTop > f * 250;
68
+ wrapperElm.dataset.show = String(show);
69
+ !show && closeBubble(false);
70
+ pending = 0;
71
+ });
72
+ }
73
+ };
74
+ checkScroll();
75
+ document.addEventListener("scroll", checkScroll);
76
+ scrollElm.addEventListener("scroll", checkScroll);
77
+ return () => {
78
+ document.removeEventListener("scroll", checkScroll);
79
+ scrollElm.removeEventListener("scroll", checkScroll);
80
+ };
81
+ }, [isBrowser, alwaysShow, closeBubble]);
82
+ useEffect(() => {
83
+ const escHandler = (e) => e.key === "Escape" && closeBubble();
84
+ const outsideClickHandler = (e) => {
85
+ var _a;
86
+ if (open && !((_a = wrapperRef.current) == null ? void 0 : _a.contains(e.target))) {
87
+ closeBubble(false);
88
+ }
89
+ };
90
+ document.addEventListener("keydown", escHandler);
91
+ document.addEventListener("click", outsideClickHandler, true);
92
+ const htmlDataset = document.documentElement.dataset;
93
+ if (open) {
94
+ htmlDataset.contactBubble = "true";
95
+ } else {
96
+ delete htmlDataset.contactBubble;
97
+ }
98
+ return () => {
99
+ delete htmlDataset.contactBubble;
100
+ document.removeEventListener("keydown", escHandler);
101
+ document.removeEventListener("click", outsideClickHandler, true);
102
+ };
103
+ }, [open, closeBubble]);
104
+ if (links.length === 0) {
105
+ return null;
106
+ }
107
+ const menu = /* @__PURE__ */ React.createElement("div", {
108
+ className: "ContactBubble",
109
+ id: isBrowser && domid,
110
+ hidden: isBrowser && !open,
111
+ "data-always-show": alwaysShow || void 0,
112
+ "data-sprinkled": isBrowser
113
+ }, /* @__PURE__ */ React.createElement("h2", {
114
+ className: "ContactBubble__title"
115
+ }, title || txt.openBtn), /* @__PURE__ */ React.createElement("ul", {
116
+ className: "ContactBubble__list"
117
+ }, links.map((linkInfo, i) => {
118
+ const { href, label, extraLabel, target, onClick } = linkInfo;
119
+ const icon = ensureIcon(linkInfo.icon);
120
+ const itemClass = getBemClass("ContactBubble__item", icon && "type--" + icon);
121
+ const onClickHandler = onClick && ((e) => {
122
+ if (!onClick()) {
123
+ e.preventDefault();
124
+ closeBubble(false);
125
+ }
126
+ });
127
+ const content = [
128
+ " ",
129
+ label,
130
+ "\n",
131
+ extraLabel && /* @__PURE__ */ React.createElement("small", {
132
+ key: "\u{1F921}"
133
+ }, extraLabel),
134
+ "\n"
135
+ ];
136
+ return /* @__PURE__ */ React.createElement("li", {
137
+ key: i,
138
+ className: itemClass
139
+ }, href && href !== "#" ? /* @__PURE__ */ React.createElement(Link, {
140
+ className: "ContactBubble__link",
141
+ href,
142
+ onClick: onClickHandler,
143
+ target
144
+ }, content) : /* @__PURE__ */ React.createElement("button", {
145
+ className: "ContactBubble__link",
146
+ onClick: onClickHandler,
147
+ type: "button"
148
+ }, content));
149
+ })), "\n\n", isBrowser && /* @__PURE__ */ React.createElement("button", {
150
+ className: "ContactBubble__closebtn",
151
+ "aria-controls": domid,
152
+ "aria-label": txt.closeBtnLong,
153
+ onClick: () => closeBubble(),
154
+ type: "button"
155
+ }, txt.closeBtn));
156
+ return isBrowser ? /* @__PURE__ */ React.createElement("div", {
157
+ className: "ContactBubble__wrapper",
158
+ ref: wrapperRef
159
+ }, /* @__PURE__ */ React.createElement("button", {
160
+ className: "ContactBubble__openbtn",
161
+ "aria-controls": domid,
162
+ "aria-expanded": open,
163
+ "aria-label": txt.openBtnLong,
164
+ onClick: open ? () => closeBubble() : openBubble,
165
+ type: "button"
166
+ }, txt.openBtn), "\n\n", menu) : menu;
167
+ };
168
+ var ContactBubble_default = ContactBubble;
169
+ export {
170
+ ContactBubble_default as default,
171
+ defaultTexts,
172
+ ensureIcon
173
+ };
@@ -0,0 +1,63 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var ContentArticle_exports = {};
36
+ __export(ContentArticle_exports, {
37
+ default: () => ContentArticle_default
38
+ });
39
+ module.exports = __toCommonJS(ContentArticle_exports);
40
+ var import_react = __toESM(require("react"));
41
+ var import_seenEffect = require("./utils/seenEffect");
42
+ var import_ArticleMeta = __toESM(require("./ArticleMeta"));
43
+ var import_ContentImage = __toESM(require("./ContentImage"));
44
+ var import_Heading = __toESM(require("./Heading"));
45
+ var import_RelatedLinks = __toESM(require("./RelatedLinks"));
46
+ var import_TextBlock = __toESM(require("./TextBlock"));
47
+ var import_VSpacer = __toESM(require("./VSpacer"));
48
+ const ContentArticle = (props) => {
49
+ const [ref] = (0, import_seenEffect.useSeenEffect)(props.startSeen);
50
+ return /* @__PURE__ */ import_react.default.createElement("div", {
51
+ className: "ContentArticle",
52
+ ref
53
+ }, /* @__PURE__ */ import_react.default.createElement(import_ArticleMeta.default, {
54
+ items: props.meta
55
+ }), /* @__PURE__ */ import_react.default.createElement(import_Heading.default, null, props.headline), /* @__PURE__ */ import_react.default.createElement(import_TextBlock.default, {
56
+ startSeen: true
57
+ }, props.topImage && /* @__PURE__ */ import_react.default.createElement(import_ContentImage.default, __spreadValues({}, props.topImage)), props.body), /* @__PURE__ */ import_react.default.createElement(import_VSpacer.default, {
58
+ size: "small"
59
+ }, /* @__PURE__ */ import_react.default.createElement("hr", null)), props.relatedLinks && /* @__PURE__ */ import_react.default.createElement(import_RelatedLinks.default, __spreadValues({}, props.relatedLinks)));
60
+ };
61
+ var ContentArticle_default = ContentArticle;
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {});
@@ -0,0 +1,41 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import React from "react";
18
+ import { useSeenEffect } from "./utils/seenEffect";
19
+ import ArticleMeta from "./ArticleMeta";
20
+ import ContentImage from "./ContentImage";
21
+ import Heading from "./Heading";
22
+ import RelatedLinks from "./RelatedLinks";
23
+ import TextBlock from "./TextBlock";
24
+ import VSpacer from "./VSpacer";
25
+ const ContentArticle = (props) => {
26
+ const [ref] = useSeenEffect(props.startSeen);
27
+ return /* @__PURE__ */ React.createElement("div", {
28
+ className: "ContentArticle",
29
+ ref
30
+ }, /* @__PURE__ */ React.createElement(ArticleMeta, {
31
+ items: props.meta
32
+ }), /* @__PURE__ */ React.createElement(Heading, null, props.headline), /* @__PURE__ */ React.createElement(TextBlock, {
33
+ startSeen: true
34
+ }, props.topImage && /* @__PURE__ */ React.createElement(ContentImage, __spreadValues({}, props.topImage)), props.body), /* @__PURE__ */ React.createElement(VSpacer, {
35
+ size: "small"
36
+ }, /* @__PURE__ */ React.createElement("hr", null)), props.relatedLinks && /* @__PURE__ */ React.createElement(RelatedLinks, __spreadValues({}, props.relatedLinks)));
37
+ };
38
+ var ContentArticle_default = ContentArticle;
39
+ export {
40
+ ContentArticle_default as default
41
+ };
@@ -0,0 +1,58 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var ContentImage_exports = {};
36
+ __export(ContentImage_exports, {
37
+ default: () => ContentImage_default
38
+ });
39
+ module.exports = __toCommonJS(ContentImage_exports);
40
+ var import_react = __toESM(require("react"));
41
+ var import_Image = __toESM(require("./_abstract/Image"));
42
+ const ContentImage = (props) => {
43
+ const { image, caption, credit } = props;
44
+ return /* @__PURE__ */ import_react.default.createElement("figure", {
45
+ className: "ContentImage"
46
+ }, (caption || credit) && /* @__PURE__ */ import_react.default.createElement("figcaption", {
47
+ className: "ContentImage__caption"
48
+ }, caption && /* @__PURE__ */ import_react.default.createElement("span", {
49
+ className: "ContentImage__text"
50
+ }, " ", caption, " "), " ", credit && /* @__PURE__ */ import_react.default.createElement("small", {
51
+ className: "ContentImage__credit"
52
+ }, " ", credit, " ")), /* @__PURE__ */ import_react.default.createElement(import_Image.default, __spreadValues({
53
+ className: "ContentImage__image"
54
+ }, image)));
55
+ };
56
+ var ContentImage_default = ContentImage;
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {});
@@ -0,0 +1,36 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import React from "react";
18
+ import Image from "./_abstract/Image";
19
+ const ContentImage = (props) => {
20
+ const { image, caption, credit } = props;
21
+ return /* @__PURE__ */ React.createElement("figure", {
22
+ className: "ContentImage"
23
+ }, (caption || credit) && /* @__PURE__ */ React.createElement("figcaption", {
24
+ className: "ContentImage__caption"
25
+ }, caption && /* @__PURE__ */ React.createElement("span", {
26
+ className: "ContentImage__text"
27
+ }, " ", caption, " "), " ", credit && /* @__PURE__ */ React.createElement("small", {
28
+ className: "ContentImage__credit"
29
+ }, " ", credit, " ")), /* @__PURE__ */ React.createElement(Image, __spreadValues({
30
+ className: "ContentImage__image"
31
+ }, image)));
32
+ };
33
+ var ContentImage_default = ContentImage;
34
+ export {
35
+ ContentImage_default as default
36
+ };
@@ -0,0 +1,164 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var Datepicker_exports = {};
36
+ __export(Datepicker_exports, {
37
+ default: () => Datepicker_default,
38
+ getDateDiff: () => getDateDiff
39
+ });
40
+ module.exports = __toCommonJS(Datepicker_exports);
41
+ var import_react = __toESM(require("react"));
42
+ var import_react_datepicker = __toESM(require("react-datepicker"));
43
+ var import_hooks = require("@hugsmidjan/react/hooks");
44
+ var import_getBemClass = __toESM(require("@hugsmidjan/react/utils/getBemClass"));
45
+ var import_is = __toESM(require("date-fns/locale/is"));
46
+ var import_FormField = __toESM(require("./FormField"));
47
+ (0, import_react_datepicker.registerLocale)("is", import_is.default);
48
+ const getDateDiff = (date, diff) => {
49
+ const newDate = new Date(date);
50
+ newDate.setDate(newDate.getDate() + diff);
51
+ return newDate;
52
+ };
53
+ const i18n = {
54
+ is: {
55
+ nextMonthAriaLabel: "N\xE6sti m\xE1nu\xF0ur",
56
+ nextMonthButtonLabel: "N\xE6sti m\xE1nu\xF0ur",
57
+ nextYearAriaLabel: "N\xE6sta \xE1r",
58
+ nextYearButtonLabel: "N\xE6sta \xE1r",
59
+ previousMonthAriaLabel: "Fyrri m\xE1nu\xF0ur",
60
+ previousMonthButtonLabel: "Fyrri m\xE1nu\xF0ur",
61
+ previousYearAriaLabel: "Fyrra \xE1r",
62
+ previousYearButtonLabel: "Fyrra \xE1r",
63
+ timeInputLabel: "T\xEDmi: ",
64
+ weekAriaLabelPrefix: "Vika: ",
65
+ weekLabel: "Vika",
66
+ ariaLabelPrefix: "M\xE1nu\xF0ur:",
67
+ chooseDayAriaLabelPrefix: "Veldu:",
68
+ disabledDayAriaLabelPrefix: "Dagsetning ekki \xED bo\xF0i"
69
+ }
70
+ };
71
+ const Datepicker = (props) => {
72
+ const {
73
+ className,
74
+ id,
75
+ label,
76
+ hideLabel,
77
+ assistText,
78
+ disabled,
79
+ readOnly,
80
+ invalid,
81
+ errorMessage,
82
+ required,
83
+ reqText,
84
+ placeholder,
85
+ small,
86
+ localeCode,
87
+ dateFormat = "d.M.yyy",
88
+ initialDate,
89
+ value = initialDate,
90
+ startDate,
91
+ endDate,
92
+ minDate,
93
+ maxDate,
94
+ isStartDate = false,
95
+ isEndDate = false,
96
+ onChange,
97
+ datepickerExtraProps,
98
+ ssr,
99
+ inputRef
100
+ } = props;
101
+ const domid = (0, import_hooks.useDomid)(id);
102
+ const txts = localeCode && i18n[localeCode] || {};
103
+ const filled = !!value;
104
+ const empty = !filled && !placeholder;
105
+ return /* @__PURE__ */ import_react.default.createElement(import_FormField.default, {
106
+ className: (0, import_getBemClass.default)("Datepicker", [], className),
107
+ ssr,
108
+ label,
109
+ small,
110
+ assistText,
111
+ hideLabel,
112
+ invalid,
113
+ required,
114
+ reqText,
115
+ disabled,
116
+ readOnly,
117
+ filled,
118
+ empty,
119
+ errorMessage,
120
+ renderInput: (className2, inputProps, addFocusProps) => {
121
+ return /* @__PURE__ */ import_react.default.createElement("div", {
122
+ className: className2.input,
123
+ ref: inputRef && ((elm) => {
124
+ inputRef.current = (elm == null ? void 0 : elm.querySelector("input")) || void 0;
125
+ return elm;
126
+ })
127
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_datepicker.default, __spreadValues(__spreadValues(__spreadValues({
128
+ id: domid,
129
+ required: inputProps.required,
130
+ disabled: inputProps.disabled,
131
+ readOnly: inputProps.readOnly,
132
+ selected: value,
133
+ locale: localeCode,
134
+ dateFormat,
135
+ onChange: (date) => {
136
+ onChange(date || void 0);
137
+ const inputElm = inputRef == null ? void 0 : inputRef.current;
138
+ if (inputElm) {
139
+ inputElm.dispatchEvent(new Event("change", { bubbles: true }));
140
+ }
141
+ },
142
+ placeholderText: placeholder,
143
+ minDate,
144
+ maxDate,
145
+ startDate,
146
+ endDate,
147
+ selectsStart: isStartDate,
148
+ selectsEnd: isEndDate,
149
+ formatWeekDay: (weekday) => {
150
+ return weekday.charAt(0).toUpperCase();
151
+ },
152
+ showYearDropdown: true,
153
+ scrollableYearDropdown: true,
154
+ yearDropdownItemNumber: 15,
155
+ showMonthDropdown: true
156
+ }, inputProps), txts), addFocusProps(datepickerExtraProps))));
157
+ }
158
+ });
159
+ };
160
+ var Datepicker_default = Datepicker;
161
+ // Annotate the CommonJS export names for ESM import in node:
162
+ 0 && (module.exports = {
163
+ getDateDiff
164
+ });
@@ -0,0 +1,142 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import React from "react";
18
+ import ReactDatePicker, {
19
+ registerLocale
20
+ } from "react-datepicker";
21
+ import { useDomid } from "@hugsmidjan/react/hooks";
22
+ import getBemClass from "@hugsmidjan/react/utils/getBemClass";
23
+ import is from "date-fns/locale/is";
24
+ import FormField from "./FormField";
25
+ registerLocale("is", is);
26
+ const getDateDiff = (date, diff) => {
27
+ const newDate = new Date(date);
28
+ newDate.setDate(newDate.getDate() + diff);
29
+ return newDate;
30
+ };
31
+ const i18n = {
32
+ is: {
33
+ nextMonthAriaLabel: "N\xE6sti m\xE1nu\xF0ur",
34
+ nextMonthButtonLabel: "N\xE6sti m\xE1nu\xF0ur",
35
+ nextYearAriaLabel: "N\xE6sta \xE1r",
36
+ nextYearButtonLabel: "N\xE6sta \xE1r",
37
+ previousMonthAriaLabel: "Fyrri m\xE1nu\xF0ur",
38
+ previousMonthButtonLabel: "Fyrri m\xE1nu\xF0ur",
39
+ previousYearAriaLabel: "Fyrra \xE1r",
40
+ previousYearButtonLabel: "Fyrra \xE1r",
41
+ timeInputLabel: "T\xEDmi: ",
42
+ weekAriaLabelPrefix: "Vika: ",
43
+ weekLabel: "Vika",
44
+ ariaLabelPrefix: "M\xE1nu\xF0ur:",
45
+ chooseDayAriaLabelPrefix: "Veldu:",
46
+ disabledDayAriaLabelPrefix: "Dagsetning ekki \xED bo\xF0i"
47
+ }
48
+ };
49
+ const Datepicker = (props) => {
50
+ const {
51
+ className,
52
+ id,
53
+ label,
54
+ hideLabel,
55
+ assistText,
56
+ disabled,
57
+ readOnly,
58
+ invalid,
59
+ errorMessage,
60
+ required,
61
+ reqText,
62
+ placeholder,
63
+ small,
64
+ localeCode,
65
+ dateFormat = "d.M.yyy",
66
+ initialDate,
67
+ value = initialDate,
68
+ startDate,
69
+ endDate,
70
+ minDate,
71
+ maxDate,
72
+ isStartDate = false,
73
+ isEndDate = false,
74
+ onChange,
75
+ datepickerExtraProps,
76
+ ssr,
77
+ inputRef
78
+ } = props;
79
+ const domid = useDomid(id);
80
+ const txts = localeCode && i18n[localeCode] || {};
81
+ const filled = !!value;
82
+ const empty = !filled && !placeholder;
83
+ return /* @__PURE__ */ React.createElement(FormField, {
84
+ className: getBemClass("Datepicker", [], className),
85
+ ssr,
86
+ label,
87
+ small,
88
+ assistText,
89
+ hideLabel,
90
+ invalid,
91
+ required,
92
+ reqText,
93
+ disabled,
94
+ readOnly,
95
+ filled,
96
+ empty,
97
+ errorMessage,
98
+ renderInput: (className2, inputProps, addFocusProps) => {
99
+ return /* @__PURE__ */ React.createElement("div", {
100
+ className: className2.input,
101
+ ref: inputRef && ((elm) => {
102
+ inputRef.current = (elm == null ? void 0 : elm.querySelector("input")) || void 0;
103
+ return elm;
104
+ })
105
+ }, /* @__PURE__ */ React.createElement(ReactDatePicker, __spreadValues(__spreadValues(__spreadValues({
106
+ id: domid,
107
+ required: inputProps.required,
108
+ disabled: inputProps.disabled,
109
+ readOnly: inputProps.readOnly,
110
+ selected: value,
111
+ locale: localeCode,
112
+ dateFormat,
113
+ onChange: (date) => {
114
+ onChange(date || void 0);
115
+ const inputElm = inputRef == null ? void 0 : inputRef.current;
116
+ if (inputElm) {
117
+ inputElm.dispatchEvent(new Event("change", { bubbles: true }));
118
+ }
119
+ },
120
+ placeholderText: placeholder,
121
+ minDate,
122
+ maxDate,
123
+ startDate,
124
+ endDate,
125
+ selectsStart: isStartDate,
126
+ selectsEnd: isEndDate,
127
+ formatWeekDay: (weekday) => {
128
+ return weekday.charAt(0).toUpperCase();
129
+ },
130
+ showYearDropdown: true,
131
+ scrollableYearDropdown: true,
132
+ yearDropdownItemNumber: 15,
133
+ showMonthDropdown: true
134
+ }, inputProps), txts), addFocusProps(datepickerExtraProps))));
135
+ }
136
+ });
137
+ };
138
+ var Datepicker_default = Datepicker;
139
+ export {
140
+ Datepicker_default as default,
141
+ getDateDiff
142
+ };