@oslokommune/punkt-elements 16.26.7 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/dist/accordion-CbXDxOho.cjs +47 -0
  3. package/dist/{accordion-CBdIk9gw.js → accordion-DEUHQ4JD.js} +45 -35
  4. package/dist/{alert-HHTGY0sp.js → alert-CbtVGrHD.js} +31 -17
  5. package/dist/{alert-B8dLsiTz.cjs → alert-CkUnbPdA.cjs} +5 -5
  6. package/dist/base-elements/input-element.d.ts +1 -0
  7. package/dist/button-Cod17rKo.js +115 -0
  8. package/dist/{button-B5tQpKeG.cjs → button-gvDXtBMC.cjs} +5 -2
  9. package/dist/{calendar-DIzGBdbh.cjs → calendar-BVXW8DqC.cjs} +1 -1
  10. package/dist/{calendar-CjlUA-Lb.js → calendar-CjC4qlh6.js} +1 -1
  11. package/dist/{checkbox-Bt_sC_90.cjs → checkbox-8uxbeU30.cjs} +1 -1
  12. package/dist/{checkbox-D03BC2Va.js → checkbox-DJDphhqz.js} +1 -1
  13. package/dist/{combobox-CoQBTWqL.js → combobox-Du5yr-xM.js} +16 -2
  14. package/dist/combobox-hKrbYLUe.cjs +136 -0
  15. package/dist/components/accordion/accordion-context.d.ts +7 -0
  16. package/dist/components/accordion/accordion.d.ts +2 -0
  17. package/dist/components/accordion/accordionitem.d.ts +1 -0
  18. package/dist/components/alert/alert.d.ts +5 -0
  19. package/dist/components/alert/alert.test.d.ts +1 -0
  20. package/dist/components/button/button.d.ts +4 -1
  21. package/dist/components/datepicker/datepicker-base.d.ts +2 -0
  22. package/dist/components/datepicker/datepicker-utils.d.ts +2 -2
  23. package/dist/components/footer/footer-base.d.ts +44 -0
  24. package/dist/components/footer/footer-simple.d.ts +20 -0
  25. package/dist/components/footer/footer.accessibility.test.d.ts +0 -0
  26. package/dist/components/footer/footer.d.ts +22 -0
  27. package/dist/components/footer/footer.test.d.ts +0 -0
  28. package/dist/components/footer/index.d.ts +3 -0
  29. package/dist/components/footer/types.d.ts +16 -0
  30. package/dist/components/header/header-chrome-controller.d.ts +44 -0
  31. package/dist/components/header/header-global.accessibility.test.d.ts +0 -0
  32. package/dist/components/header/header-global.d.ts +78 -0
  33. package/dist/components/header/header-global.test.d.ts +0 -0
  34. package/dist/components/header/header-service.accessibility.test.d.ts +0 -0
  35. package/dist/components/header/header-service.d.ts +6 -21
  36. package/dist/components/header/header-service.test.d.ts +1 -1
  37. package/dist/components/header/header.d.ts +11 -3
  38. package/dist/components/header/header.test.d.ts +0 -0
  39. package/dist/components/header/index.d.ts +2 -1
  40. package/dist/components/header/types.d.ts +28 -2
  41. package/dist/components/header-menu/header-menu.d.ts +4 -5
  42. package/dist/components/header-menu/types.d.ts +1 -1
  43. package/dist/components/index.d.ts +5 -3
  44. package/dist/components/input-wrapper/input-wrapper.d.ts +2 -0
  45. package/dist/components/input-wrapper/input-wrapper.test.d.ts +1 -0
  46. package/dist/components/searchinput/searchinput.d.ts +5 -0
  47. package/dist/components/select/index.d.ts +1 -1
  48. package/dist/components/select/select.d.ts +2 -2
  49. package/dist/components/select/select.test.d.ts +1 -0
  50. package/dist/components/textarea/textarea.test.d.ts +2 -0
  51. package/dist/components/textinput/textinput.test.d.ts +1 -0
  52. package/dist/components/timepicker/timepicker.d.ts +2 -0
  53. package/dist/components/timepicker/timepicker.test.d.ts +3 -0
  54. package/dist/consent--Nw43WFU.cjs +18 -0
  55. package/dist/{consent-D5sY6JK3.js → consent-B2hSTCGC.js} +14 -7
  56. package/dist/consume-BiOhrhEy.js +167 -0
  57. package/dist/consume-DKf5SmP9.cjs +1 -0
  58. package/dist/{converters-BKGBRBpS.js → converters-BBfsEJV5.js} +25 -25
  59. package/dist/{converters-9jHlXDyy.cjs → converters-Cd0fPEly.cjs} +1 -1
  60. package/dist/{datepicker-BE5Ll0W4.js → datepicker--Fq8q-J3.js} +30 -12
  61. package/dist/{datepicker-x4xM3KQz.cjs → datepicker-CEoBYTBU.cjs} +11 -7
  62. package/dist/docs/components/alert.d.ts +3 -0
  63. package/dist/docs/components/footer.d.ts +9 -0
  64. package/dist/docs/components/form-sizes.d.ts +10 -0
  65. package/dist/docs/components/header-global-full.d.ts +20 -0
  66. package/dist/docs/components/header-global.d.ts +14 -0
  67. package/dist/docs/components/searchinput.d.ts +6 -3
  68. package/dist/fetch-header-footer-data-Pc32etrk.js +88 -0
  69. package/dist/fetch-header-footer-data-xohWFmYC.cjs +1 -0
  70. package/dist/fileupload-CGKUJrlj.cjs +401 -0
  71. package/dist/{fileupload-2hf8YNhO.js → fileupload-D4gQN64T.js} +156 -176
  72. package/dist/focus-trap-DG3pEuyJ.js +60 -0
  73. package/dist/focus-trap-DSv4Ifqm.cjs +1 -0
  74. package/dist/footer-BIrJeRuZ.js +303 -0
  75. package/dist/footer-Ber-jqM1.cjs +114 -0
  76. package/dist/footer.d.ts +1 -0
  77. package/dist/header-CrGRaoqe.js +1288 -0
  78. package/dist/header-DNeyR8DD.cjs +466 -0
  79. package/dist/header-menu-BHqK4QA6.cjs +126 -0
  80. package/dist/{header-menu-C8b5vd3n.js → header-menu-GFtJKM4j.js} +25 -97
  81. package/dist/{helptext-OfqH5npD.js → helptext-C_brWCIT.js} +1 -1
  82. package/dist/{helptext-eckq4JEX.cjs → helptext-Cq5rNaAC.cjs} +1 -1
  83. package/dist/{input-element-ZGOWsvKM.cjs → input-element-B0qLbEdF.cjs} +1 -1
  84. package/dist/{input-element-BFHpeoV8.js → input-element-C0RnXi-J.js} +5 -2
  85. package/dist/{input-wrapper-DwwE0JcO.js → input-wrapper-BweP6t3O.js} +12 -0
  86. package/dist/{input-wrapper-BRjQB4zM.cjs → input-wrapper-DPkkiG7S.cjs} +13 -11
  87. package/dist/{input-wrapper-DaA98B5l.js → input-wrapper-fWV5P4MN.js} +22 -15
  88. package/dist/{input-wrapper-LcZjpt0L.cjs → input-wrapper-wh3fWIhk.cjs} +1 -1
  89. package/dist/modal-CPnFteYS.cjs +35 -0
  90. package/dist/{modal-C6pScpdG.js → modal-xNK_wpHk.js} +11 -20
  91. package/dist/pkt-accordion.cjs +1 -1
  92. package/dist/pkt-accordion.js +1 -1
  93. package/dist/pkt-alert.cjs +1 -1
  94. package/dist/pkt-alert.js +1 -1
  95. package/dist/pkt-button.cjs +1 -1
  96. package/dist/pkt-button.js +1 -1
  97. package/dist/pkt-calendar.cjs +1 -1
  98. package/dist/pkt-calendar.js +1 -1
  99. package/dist/pkt-checkbox.cjs +1 -1
  100. package/dist/pkt-checkbox.js +1 -1
  101. package/dist/pkt-combobox.cjs +1 -1
  102. package/dist/pkt-combobox.js +1 -1
  103. package/dist/pkt-consent.cjs +1 -1
  104. package/dist/pkt-consent.js +1 -1
  105. package/dist/pkt-datepicker.cjs +1 -1
  106. package/dist/pkt-datepicker.js +1 -1
  107. package/dist/pkt-fileupload.cjs +1 -1
  108. package/dist/pkt-fileupload.js +1 -1
  109. package/dist/pkt-footer.cjs +1 -0
  110. package/dist/pkt-footer.js +2 -0
  111. package/dist/pkt-header-menu.cjs +1 -1
  112. package/dist/pkt-header-menu.js +1 -1
  113. package/dist/pkt-header.cjs +1 -1
  114. package/dist/pkt-header.js +2 -2
  115. package/dist/pkt-helptext.cjs +1 -1
  116. package/dist/pkt-helptext.js +1 -1
  117. package/dist/pkt-index.cjs +1 -1
  118. package/dist/pkt-index.js +27 -26
  119. package/dist/pkt-input-wrapper.cjs +1 -1
  120. package/dist/pkt-input-wrapper.js +1 -1
  121. package/dist/pkt-modal.cjs +1 -1
  122. package/dist/pkt-modal.js +1 -1
  123. package/dist/pkt-radiobutton.cjs +1 -1
  124. package/dist/pkt-radiobutton.js +1 -1
  125. package/dist/pkt-searchinput.cjs +1 -1
  126. package/dist/pkt-searchinput.js +1 -1
  127. package/dist/pkt-select.cjs +1 -1
  128. package/dist/pkt-select.js +1 -1
  129. package/dist/pkt-tabs.cjs +1 -1
  130. package/dist/pkt-tabs.js +1 -1
  131. package/dist/pkt-textarea.cjs +1 -1
  132. package/dist/pkt-textarea.js +1 -1
  133. package/dist/pkt-textinput.cjs +1 -1
  134. package/dist/pkt-textinput.js +1 -1
  135. package/dist/pkt-timepicker.cjs +1 -1
  136. package/dist/pkt-timepicker.js +1 -1
  137. package/dist/{radiobutton-DGO6H2Ki.js → radiobutton-C6htwDrT.js} +1 -1
  138. package/dist/{radiobutton-DY1WWepJ.cjs → radiobutton-DjWBoSHv.cjs} +1 -1
  139. package/dist/scroll-lock-BN8lOhV5.cjs +1 -0
  140. package/dist/scroll-lock-DAbNKAUy.js +18 -0
  141. package/dist/searchinput-CfUVfpqL.js +156 -0
  142. package/dist/searchinput-DGjeN1YI.cjs +60 -0
  143. package/dist/{select-D4_HQFkh.cjs → select-CZvAW7W2.cjs} +2 -1
  144. package/dist/{select-BwHUIlwQ.js → select-CsBXXbLP.js} +4 -3
  145. package/dist/setupTests.d.ts +0 -0
  146. package/dist/shared-types/footer.d.ts +95 -0
  147. package/dist/shared-types/{header-menu.d.ts → header-footer.d.ts} +51 -4
  148. package/dist/shared-types/header.d.ts +1 -1
  149. package/dist/shared-types/index.d.ts +6 -4
  150. package/dist/shared-types/searchinput.d.ts +2 -0
  151. package/dist/shared-types/select.d.ts +3 -2
  152. package/dist/shared-types/size.d.ts +4 -0
  153. package/dist/shared-types/timepicker.d.ts +0 -6
  154. package/dist/shared-utils/datepicker-utils.d.ts +5 -4
  155. package/dist/shared-utils/fileupload/focus-trap.d.ts +4 -10
  156. package/dist/shared-utils/focus-trap/index.d.ts +22 -0
  157. package/dist/shared-utils/{header-menu → header-footer}/example-data.d.ts +5 -4
  158. package/dist/shared-utils/header-footer/external-domain.d.ts +26 -0
  159. package/dist/shared-utils/{header-menu → header-footer}/fetch-header-footer-data.d.ts +6 -2
  160. package/dist/shared-utils/{header-menu → header-footer}/index.d.ts +2 -1
  161. package/dist/shared-utils/{header-menu → header-footer}/select-megamenu.d.ts +1 -1
  162. package/dist/shared-utils/scroll-lock/index.d.ts +24 -0
  163. package/dist/tabs-BqrKLCjd.js +214 -0
  164. package/dist/tabs-q62MK_-r.cjs +40 -0
  165. package/dist/{textarea-D6M7ZhtA.js → textarea-Cm392CEI.js} +5 -3
  166. package/dist/{textarea-Bt_Zs8gq.cjs → textarea-sTcZxOIB.cjs} +3 -2
  167. package/dist/{textinput-EDKjcUdg.cjs → textinput-DqJbTglM.cjs} +3 -2
  168. package/dist/{textinput-oU2EvFsi.js → textinput-TSPcBcih.js} +5 -3
  169. package/dist/{timepicker-CgOL2sd9.cjs → timepicker-CqFYMV8q.cjs} +8 -7
  170. package/dist/{timepicker-_G0V_HV3.js → timepicker-DWbgTDKq.js} +10 -9
  171. package/package.json +3 -3
  172. package/src/components/accordion/accordion-context.ts +8 -0
  173. package/src/components/accordion/accordion.test.ts +44 -0
  174. package/src/components/accordion/accordion.ts +13 -3
  175. package/src/components/accordion/accordionitem.ts +9 -1
  176. package/src/components/alert/alert.test.ts +51 -2
  177. package/src/components/alert/alert.ts +11 -5
  178. package/src/components/breadcrumbs/breadcrumbs.test.ts +11 -3
  179. package/src/components/button/button.test.ts +23 -0
  180. package/src/components/button/button.ts +28 -3
  181. package/src/components/combobox/combobox.core.test.ts +20 -0
  182. package/src/components/combobox/combobox.ts +2 -0
  183. package/src/components/consent/consent.test.ts +6 -3
  184. package/src/components/consent/consent.ts +15 -7
  185. package/src/components/datepicker/datepicker-base.ts +5 -1
  186. package/src/components/datepicker/datepicker-utils.test.ts +10 -0
  187. package/src/components/datepicker/datepicker.core.test.ts +17 -0
  188. package/src/components/datepicker/datepicker.ts +8 -0
  189. package/src/components/footer/footer-base.ts +238 -0
  190. package/src/components/footer/footer-simple.ts +71 -0
  191. package/src/components/footer/footer.accessibility.test.ts +66 -0
  192. package/src/components/footer/footer.test.ts +238 -0
  193. package/src/components/footer/footer.ts +81 -0
  194. package/src/components/footer/index.ts +4 -0
  195. package/src/components/footer/types.ts +21 -0
  196. package/src/components/header/header-chrome-controller.ts +123 -0
  197. package/src/components/header/header-global.accessibility.test.ts +110 -0
  198. package/src/components/header/header-global.test.ts +329 -0
  199. package/src/components/header/header-global.ts +648 -0
  200. package/src/components/header/header-service.accessibility.test.ts +79 -0
  201. package/src/components/header/header-service.test.ts +32 -12
  202. package/src/components/header/header-service.ts +38 -162
  203. package/src/components/header/header.test.ts +84 -0
  204. package/src/components/header/header.ts +52 -5
  205. package/src/components/header/index.ts +6 -0
  206. package/src/components/header/types.ts +38 -0
  207. package/src/components/header-menu/header-menu.test.ts +131 -10
  208. package/src/components/header-menu/header-menu.ts +23 -24
  209. package/src/components/header-menu/types.ts +1 -1
  210. package/src/components/index.ts +18 -2
  211. package/src/components/input-wrapper/input-wrapper.test.ts +45 -0
  212. package/src/components/input-wrapper/input-wrapper.ts +17 -9
  213. package/src/components/modal/modal.ts +8 -9
  214. package/src/components/searchinput/searchinput.test.ts +43 -0
  215. package/src/components/searchinput/searchinput.ts +29 -12
  216. package/src/components/select/index.ts +1 -1
  217. package/src/components/select/select.test.ts +28 -0
  218. package/src/components/select/select.ts +4 -3
  219. package/src/components/textarea/textarea.test.ts +16 -0
  220. package/src/components/textarea/textarea.ts +3 -1
  221. package/src/components/textinput/textinput.test.ts +28 -0
  222. package/src/components/textinput/textinput.ts +3 -1
  223. package/src/components/timepicker/timepicker.test.ts +26 -0
  224. package/src/components/timepicker/timepicker.ts +12 -6
  225. package/dist/accordion-FISAiAbX.cjs +0 -47
  226. package/dist/button-C_YzTSuU.js +0 -96
  227. package/dist/combobox-D6H9rWPV.cjs +0 -135
  228. package/dist/consent-X3wvhteO.cjs +0 -10
  229. package/dist/fileupload-BLVrslUX.cjs +0 -401
  230. package/dist/header-CFrsaq0c.cjs +0 -310
  231. package/dist/header-D_xvPR4R.js +0 -801
  232. package/dist/header-menu-DMdP_c6X.cjs +0 -126
  233. package/dist/modal-DKU7PnjJ.cjs +0 -35
  234. package/dist/searchinput-CyO5k4Q4.js +0 -148
  235. package/dist/searchinput-DG6YetL1.cjs +0 -60
  236. package/dist/shared-utils/modal-scroll-lock.d.ts +0 -10
  237. package/dist/tabs-CGo0ODPa.cjs +0 -40
  238. package/dist/tabs-ChdR0D1C.js +0 -379
  239. /package/dist/shared-utils/{header-menu → header-footer}/icon-map.d.ts +0 -0
@@ -0,0 +1,466 @@
1
+ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const r=require("./if-defined-DrwbxQOj.cjs");require("./button-gvDXtBMC.cjs");const i=require("./ref-DO7TzO4O.cjs"),a=require("./booleanish-B9Kf0nES.cjs"),o=require("./fetch-header-footer-data-xohWFmYC.cjs"),s=require("./focus-trap-DSv4Ifqm.cjs"),c=require("./scroll-lock-BN8lOhV5.cjs");require("./link-Geze7498.cjs"),require("./textinput-DqJbTglM.cjs"),require("./searchinput-DGjeN1YI.cjs"),require("./header-menu-BHqK4QA6.cjs");var l=e=>typeof e.target==`string`?{title:e.title,iconName:e.iconName,href:e.target}:{title:e.title,iconName:e.iconName,onClick:e.target},u=e=>l(e),d=e=>{if(!e)return;let t=typeof e==`string`?new Date(e):e;if(!isNaN(t.getTime()))return t.toLocaleDateString(`nb-NO`,{day:`numeric`,month:`long`,year:`numeric`,hour:`2-digit`,minute:`2-digit`})},f=class{constructor(e,t){this.isMobile=!1,this.isTablet=!1,this.isHidden=!1,this.pauseScrollHide=!1,this.componentWidth=typeof window<`u`?window.innerWidth:0,this.lastScrollPosition=0,this.scrollLockToken=c.t(),this.lastFocusedElement=null,this.shouldRestoreFocus=!1,this.handleScroll=()=>{if(this.getOptions().scrollBehavior!==`hide`||this.pauseScrollHide)return;let e=window.pageYOffset||document.documentElement.scrollTop;if(e<0||Math.abs(e-this.lastScrollPosition)<60)return;let t=e>this.lastScrollPosition;this.lastScrollPosition=e,t!==this.isHidden&&(this.isHidden=t,this.host.requestUpdate())},this.host=e,this.getOptions=t,e.addController(this)}hostConnected(){window.addEventListener(`scroll`,this.handleScroll)}hostDisconnected(){this.resizeObserver?.disconnect(),window.removeEventListener(`scroll`,this.handleScroll),c.n(this.scrollLockToken,!1)}observe(e){e&&(this.componentWidth=e.offsetWidth,this.refreshBreakpoints(),this.resizeObserver=new ResizeObserver(e=>{for(let t of e)this.componentWidth=t.borderBoxSize&&t.borderBoxSize.length>0?t.borderBoxSize[0].inlineSize:t.contentRect.width,this.refreshBreakpoints()}),this.resizeObserver.observe(e))}refreshBreakpoints(){let{mobileBreakpoint:e,tabletBreakpoint:t}=this.getOptions(),n=this.componentWidth<e,r=this.componentWidth<t;(n!==this.isMobile||r!==this.isTablet)&&(this.isMobile=n,this.isTablet=r,this.host.requestUpdate())}setScrollLock(e){c.n(this.scrollLockToken,e)}captureFocus(){this.lastFocusedElement=document.activeElement}flagRestoreFocus(){this.shouldRestoreFocus=!0}restoreFocus(){this.shouldRestoreFocus&&this.lastFocusedElement&&document.contains(this.lastFocusedElement)&&this.lastFocusedElement.focus(),this.lastFocusedElement=null,this.shouldRestoreFocus=!1}},p=class extends e.t{constructor(...e){super(...e),this.canChangeRepresentation=!1,this.logoutOnClick=!1}handleChangeRepresentation(){this.dispatchEvent(new CustomEvent(`change-representation`,{bubbles:!0,composed:!0}))}handleLogout(){this.dispatchEvent(new CustomEvent(`log-out`,{bubbles:!0,composed:!0}))}handleMenuItemClick(e){`onClick`in e&&typeof e.onClick==`function`&&e.onClick()}renderLinkOrButton(n,r){let i=`href`in n,a=t.t({"pkt-user-menu__link":!0,"pkt-link-button":!i,"pkt-link":!i,"pkt-link--icon-left":!i,[r||``]:!!r});return i?e.p`
2
+ <pkt-link
3
+ icon-name=${n.iconName||e.d}
4
+ href=${n.href}
5
+ aria-hidden="true"
6
+ class="pkt-user-menu__link ${r||``}"
7
+ >
8
+ ${n.title}
9
+ </pkt-link>
10
+ `:e.p`
11
+ <button class=${a} type="button" @click=${()=>this.handleMenuItemClick(n)}>
12
+ ${n.iconName?e.p`<pkt-icon
13
+ name=${n.iconName}
14
+ class="pkt-link__icon"
15
+ aria-hidden="true"
16
+ ></pkt-icon>`:e.d}
17
+ ${n.title}
18
+ </button>
19
+ `}renderLinkSection(t){return e.p`
20
+ <ul class="pkt-user-menu__sublist">
21
+ ${t.map(t=>e.p`
22
+ <li class="pkt-user-menu__subitem">${this.renderLinkOrButton(t)}</li>
23
+ `)}
24
+ </ul>
25
+ `}render(){let t=this.userMenu?.map(u);return e.p`
26
+ <nav class="pkt-user-menu" aria-label="Meny for innlogget bruker">
27
+ <ul class="pkt-user-menu__list">
28
+ <!-- User section -->
29
+ ${this.user?e.p`
30
+ <li class="pkt-user-menu__item">
31
+ <div class="pkt-user-menu__label">Pålogget som</div>
32
+ <div class="pkt-user-menu__name" translate="no">${this.user.name}</div>
33
+ ${this.formattedLastLoggedIn?e.p`
34
+ <div class="pkt-user-menu__last-logged-in">
35
+ Sist pålogget: <time>${this.formattedLastLoggedIn}</time>
36
+ </div>
37
+ `:e.d}
38
+ </li>
39
+ `:e.d}
40
+
41
+ <!-- User menu items -->
42
+ ${t&&t.length>0?e.p`
43
+ <li class="pkt-user-menu__item">${this.renderLinkSection(t)}</li>
44
+ `:e.d}
45
+
46
+ <!-- Representing section -->
47
+ ${this.representing?e.p`
48
+ <li class="pkt-user-menu__item">
49
+ <div class="pkt-user-menu__label">Representerer</div>
50
+ <div class="pkt-user-menu__name" translate="no">${this.representing.name}</div>
51
+ ${this.representing.orgNumber?e.p`<div class="pkt-user-menu__org-number">
52
+ Org.nr. ${this.representing.orgNumber}
53
+ </div>`:e.d}
54
+ ${this.canChangeRepresentation?e.p`
55
+ <ul class="pkt-user-menu__sublist mt-size-16">
56
+ <li class="pkt-user-menu__subitem">
57
+ ${this.renderLinkOrButton({title:`Endre organisasjon`,iconName:`cogwheel`,onClick:()=>this.handleChangeRepresentation()})}
58
+ </li>
59
+ </ul>
60
+ `:e.d}
61
+ </li>
62
+ `:e.d}
63
+
64
+ <!-- Change representation without representing object -->
65
+ ${!this.representing&&this.canChangeRepresentation?e.p`
66
+ <li class="pkt-user-menu__item">
67
+ <ul class="pkt-user-menu__sublist">
68
+ <li class="pkt-user-menu__subitem">
69
+ ${this.renderLinkOrButton({title:`Endre organisasjon`,iconName:`cogwheel`,onClick:()=>this.handleChangeRepresentation()})}
70
+ </li>
71
+ </ul>
72
+ </li>
73
+ `:e.d}
74
+
75
+ <!-- Logout -->
76
+ ${this.logoutOnClick?e.p`
77
+ <li class="pkt-user-menu__item">
78
+ ${this.renderLinkOrButton({title:`Logg ut`,iconName:`exit`,onClick:()=>this.handleLogout()})}
79
+ </li>
80
+ `:e.d}
81
+ </ul>
82
+ </nav>
83
+ `}};e.n([e.o({type:Object})],p.prototype,`user`,void 0),e.n([e.o({type:String,attribute:`formatted-last-logged-in`})],p.prototype,`formattedLastLoggedIn`,void 0),e.n([e.o({type:Object})],p.prototype,`representing`,void 0),e.n([e.o({type:Array,attribute:`user-menu`})],p.prototype,`userMenu`,void 0),e.n([e.o({type:Boolean,attribute:`can-change-representation`,converter:a.t})],p.prototype,`canChangeRepresentation`,void 0),e.n([e.o({type:Boolean,attribute:`logout-on-click`,converter:a.t})],p.prototype,`logoutOnClick`,void 0);try{e.s(`pkt-header-user-menu`)(p)}catch{console.warn(`Forsøker å definere <pkt-header-user-menu>, men den er allerede definert`)}var m=`https://punkt-cdn.oslo.kommune.no/latest/logos/`;typeof window<`u`&&(window.pktLogoPath=window.pktLogoPath||m);var h=class extends n.t{constructor(...e){super(...e),this.logoLink=o.o,this.logoPath=typeof window<`u`?window.pktLogoPath:m,this.searchPlaceholder=`Søk`,this.searchValue=``,this.mobileBreakpoint=768,this.tabletBreakpoint=1280,this.openedMenu=`none`,this.logOutButtonPlacement=`none`,this.position=`fixed`,this.scrollBehavior=`hide`,this.slotMenuVariant=`icon-only`,this.slotMenuText=`Meny`,this.hideLogo=!1,this.compact=!1,this.showSearch=!1,this.canChangeRepresentation=!1,this.hasLogOut=!1,this.openMenu=`none`,this.alignSlotRight=!1,this.alignSearchRight=!1,this.headerRef=i.t(),this.userContainerRef=i.t(),this.slotContainerRef=i.t(),this.searchContainerRef=i.t(),this.slotContentRef=i.t(),this.searchMenuRef=i.t(),this.chrome=new f(this,()=>({mobileBreakpoint:this.mobileBreakpoint,tabletBreakpoint:this.tabletBreakpoint,position:this.position,scrollBehavior:this.scrollBehavior})),this.handleClickOutside=e=>{let t=e.target;this.user&&this.openMenu===`user`&&!t.closest(`.pkt-header-service__user-container`)&&(this.openMenu=`none`),this.openMenu===`slot`&&!t.closest(`.pkt-header-service__slot-container`)&&(this.openMenu=`none`),this.openMenu===`search`&&!t.closest(`.pkt-header-service__search-container`)&&!t.closest(`.pkt-header-service__search-input`)&&(this.openMenu=`none`)},this.handleSlotContentClick=e=>{if(!this.isTablet||this.openMenu!==`slot`)return;let t=e.target.closest(`a[href], button, [role="link"], [role="button"], [role="menuitem"], [role="menuitemradio"], [role="menuitemcheckbox"]`);!t||!this.slotContentRef.value?.contains(t)||t.closest(`[data-pkt-header-keep-open]`)||t.disabled||t.getAttribute(`aria-disabled`)===`true`||(this.openMenu=`none`)},this.handleFocusOut=(e,t)=>{let n=e.relatedTarget,r;switch(t){case`user`:r=this.userContainerRef;break;case`slot`:r=this.slotContainerRef;break;case`search`:r=this.searchContainerRef;break;default:return}let i=r.value;i&&(!n||!i.contains(n))&&(this.openMenu=`none`)},this.handleEscapeKey=e=>{e.key===`Escape`&&this.openMenu!==`none`&&(e.preventDefault(),this.chrome.flagRestoreFocus(),this.openMenu=`none`)}}get isMobile(){return this.chrome.isMobile}get isTablet(){return this.chrome.isTablet}get isHidden(){return this.chrome.isHidden}firstUpdated(){this.chrome.observe(this.headerRef.value)}updated(e){if(super.updated(e),e.has(`openedMenu`)&&this.openedMenu!==this.openMenu&&(this.openMenu=this.openedMenu),(e.has(`mobileBreakpoint`)||e.has(`tabletBreakpoint`))&&this.chrome.refreshBreakpoints(),e.has(`openMenu`)){let t=e.get(`openMenu`);this.openMenu!==`none`&&(t===`none`||t===void 0)?(document.addEventListener(`mousedown`,this.handleClickOutside),document.addEventListener(`keydown`,this.handleEscapeKey),(this.openMenu===`slot`||this.openMenu===`search`)&&requestAnimationFrame(()=>{this.checkDropdownAlignment(this.openMenu)})):this.openMenu===`none`&&t!==`none`&&(document.removeEventListener(`mousedown`,this.handleClickOutside),document.removeEventListener(`keydown`,this.handleEscapeKey),this.chrome.restoreFocus())}this.chrome.setScrollLock((this.isFixed||this.isSticky)&&this.isMobile&&this.openMenu!==`none`)}checkDropdownAlignment(e){let t=e===`slot`?this.slotContainerRef:this.searchContainerRef,n=e===`slot`?this.slotContentRef:this.searchMenuRef;if(!t.value||!n.value||!this.isTablet||this.isMobile)return;let r=t.value.getBoundingClientRect(),i=n.value.offsetWidth,a=r.left+i>window.innerWidth;e===`slot`?this.alignSlotRight=a:this.alignSearchRight=a}handleMenuToggle(e){this.openMenu===`none`?(this.chrome.captureFocus(),this.openMenu=e):this.openMenu=`none`}handleLogoClick(e){this.dispatchEvent(new CustomEvent(`logo-click`,{bubbles:!0,composed:!0,detail:{originalEvent:e}}))}handleServiceClick(e){this.dispatchEvent(new CustomEvent(`service-click`,{bubbles:!0,composed:!0,detail:{originalEvent:e}}))}handleLogout(){this.dispatchEvent(new CustomEvent(`log-out`,{bubbles:!0,composed:!0}))}handleSearch(e){this.dispatchEvent(new CustomEvent(`search`,{detail:{query:e},bubbles:!0,composed:!0}))}handleSearchChange(e){this.dispatchEvent(new CustomEvent(`search-change`,{detail:{query:e},bubbles:!0,composed:!0}))}handleSearchInputChange(e){let t=e.target.value;this.handleSearchChange(t)}handleSearchKeyDown(e){e.key===`Enter`&&this.handleSearch(e.target.value)}get formattedLastLoggedIn(){return d(this.user?.lastLoggedIn)}get isFixed(){return this.position===`fixed`}get isSticky(){return this.position===`sticky`}get shouldHideOnScroll(){return this.scrollBehavior===`hide`}get showLogoutInHeader(){return this.hasLogOut&&(this.logOutButtonPlacement===`header`||this.logOutButtonPlacement===`both`)}get showLogoutInUserMenu(){return this.hasLogOut&&(this.logOutButtonPlacement===`userMenu`||this.logOutButtonPlacement===`both`)}renderLogo(){if(this.hideLogo)return e.d;let t=e.p`
84
+ <pkt-icon name="oslologo" aria-hidden="true" path=${this.logoPath}></pkt-icon>
85
+ `;return e.p`
86
+ <span class="pkt-header-service__logo">
87
+ <a href=${this.logoLink} aria-label="Tilbake til forside" @click=${this.handleLogoClick}>
88
+ ${t}
89
+ </a>
90
+ </span>
91
+ `}renderServiceName(){return this.serviceName?this.serviceLink&&typeof this.serviceLink==`string`?e.p`
92
+ <span class="pkt-header-service__service-name" translate="no">
93
+ <pkt-link
94
+ href=${this.serviceLink}
95
+ class="pkt-header-service__service-link"
96
+ @click=${this.handleServiceClick}
97
+ >
98
+ ${this.serviceName}
99
+ </pkt-link>
100
+ </span>
101
+ `:this.hasAttribute(`service-link`)?e.p`
102
+ <span class="pkt-header-service__service-name" translate="no">
103
+ <button
104
+ class="pkt-link-button pkt-link pkt-header-service__service-link"
105
+ @click=${this.handleServiceClick}
106
+ >
107
+ ${this.serviceName}
108
+ </button>
109
+ </span>
110
+ `:e.p`
111
+ <span
112
+ class="pkt-header-service__service-name"
113
+ translate="no"
114
+ @click=${this.handleServiceClick}
115
+ >
116
+ <span class="pkt-header-service__service-link">${this.serviceName}</span>
117
+ </span>
118
+ `:e.d}renderSlotContainer(){if(!this.hasSlotContent())return e.d;let r=t.t({"pkt-header-service__slot-container":!0,"is-open":this.openMenu===`slot`}),a=t.t({"pkt-header-service__slot-content":!0,"align-right":this.alignSlotRight});return e.p`
119
+ <div
120
+ class=${r}
121
+ @focusout=${e=>this.handleFocusOut(e,`slot`)}
122
+ ${i.n(this.slotContainerRef)}
123
+ >
124
+ ${this.isTablet&&this.hasSlotContent()?e.p`
125
+ <pkt-button
126
+ skin="secondary"
127
+ variant=${this.slotMenuVariant}
128
+ iconName="menu"
129
+ size=${this.isMobile?`small`:`medium`}
130
+ state=${this.openMenu===`slot`?`active`:`normal`}
131
+ @click=${()=>this.handleMenuToggle(`slot`)}
132
+ aria-expanded=${this.openMenu===`slot`}
133
+ aria-controls="mobile-slot-menu"
134
+ aria-label="Åpne meny"
135
+ >
136
+ ${this.slotMenuText}
137
+ </pkt-button>
138
+ `:e.d}
139
+ <div
140
+ class=${a}
141
+ id="mobile-slot-menu"
142
+ role=${this.isTablet?`group`:e.d}
143
+ aria-label=${this.isTablet?`Meny`:e.d}
144
+ @click=${this.handleSlotContentClick}
145
+ ${i.n(this.slotContentRef)}
146
+ >
147
+ ${n.n(this)}
148
+ </div>
149
+ </div>
150
+ `}renderSearch(){if(!this.showSearch)return e.d;if(this.isTablet){let n=t.t({"pkt-header-service__search-container":!0,"is-open":this.openMenu===`search`}),r=t.t({"pkt-header-service__mobile-menu":!0,"is-open":this.openMenu===`search`,"align-right":this.alignSearchRight});return e.p`
151
+ <div
152
+ class=${n}
153
+ @focusout=${e=>this.handleFocusOut(e,`search`)}
154
+ ${i.n(this.searchContainerRef)}
155
+ >
156
+ <pkt-button
157
+ skin="secondary"
158
+ variant="icon-only"
159
+ iconName="magnifying-glass-big"
160
+ size=${this.isMobile?`small`:`medium`}
161
+ @click=${()=>this.handleMenuToggle(`search`)}
162
+ state=${this.openMenu===`search`?`active`:`normal`}
163
+ aria-expanded=${this.openMenu===`search`}
164
+ aria-controls="mobile-search-menu"
165
+ aria-label="Åpne søkefelt"
166
+ >
167
+ Søk
168
+ </pkt-button>
169
+ <div class=${r} ${i.n(this.searchMenuRef)}>
170
+ ${this.openMenu===`search`?e.p`
171
+ <pkt-textinput
172
+ id="mobile-search-menu"
173
+ class="pkt-header-service__search-input"
174
+ type="search"
175
+ label="Søk"
176
+ useWrapper="false"
177
+ placeholder=${this.searchPlaceholder}
178
+ value=${this.searchValue}
179
+ autofocus
180
+ fullwidth
181
+ @input=${this.handleSearchInputChange}
182
+ @keydown=${e=>{e.key===`Enter`&&this.handleSearch(e.target.value)}}
183
+ ></pkt-textinput>
184
+ `:e.d}
185
+ </div>
186
+ </div>
187
+ `}return e.p`
188
+ <pkt-textinput
189
+ id="header-service-search"
190
+ class="pkt-header-service__search-input"
191
+ type="search"
192
+ label="Søk"
193
+ useWrapper="false"
194
+ placeholder=${this.searchPlaceholder}
195
+ value=${this.searchValue}
196
+ @input=${this.handleSearchInputChange}
197
+ @keydown=${this.handleSearchKeyDown}
198
+ ></pkt-textinput>
199
+ `}renderUserButton(){if(!this.user)return e.d;let n=t.t({"pkt-header-service__user-menu":this.isMobile===!1,"pkt-header-service__mobile-menu":this.isMobile===!0,"is-open":this.openMenu===`user`});return e.p`
200
+ <div
201
+ class="pkt-header-service__user-container"
202
+ @focusout=${e=>this.handleFocusOut(e,`user`)}
203
+ ${i.n(this.userContainerRef)}
204
+ >
205
+ <pkt-button
206
+ class=${t.t({"pkt-header-service__user-button":!0,"pkt-header-service__user-button--mobile":this.isMobile})}
207
+ skin="secondary"
208
+ size=${this.isMobile?`small`:`medium`}
209
+ state=${this.openMenu===`user`?`active`:`normal`}
210
+ variant="icons-right-and-left"
211
+ iconName="user"
212
+ secondIconName=${this.openMenu===`user`?`chevron-thin-up`:`chevron-thin-down`}
213
+ @click=${()=>this.handleMenuToggle(`user`)}
214
+ >
215
+ <span class="pkt-sr-only">Brukermeny: </span>
216
+ <span translate="no">${this.representing?.name||this.user.name}</span>
217
+ </pkt-button>
218
+ ${this.openMenu===`user`&&this.user?e.p`
219
+ <div class=${n}>
220
+ <pkt-header-user-menu
221
+ .user=${this.user}
222
+ formatted-last-logged-in=${this.formattedLastLoggedIn||e.d}
223
+ .representing=${this.representing}
224
+ .userMenu=${this.userMenu}
225
+ ?can-change-representation=${this.canChangeRepresentation}
226
+ ?logout-on-click=${this.showLogoutInUserMenu}
227
+ @change-representation=${()=>this.dispatchEvent(new CustomEvent(`change-representation`,{bubbles:!0,composed:!0}))}
228
+ @log-out=${this.handleLogout}
229
+ ></pkt-header-user-menu>
230
+ </div>
231
+ `:e.d}
232
+ </div>
233
+ `}renderHeader(){let n=t.t({"pkt-header-service":!0,"pkt-header-service--compact":this.compact,"pkt-header-service--mobile":this.isMobile,"pkt-header-service--tablet":this.isTablet,"pkt-header-service--fixed":this.isFixed,"pkt-header-service--sticky":this.isSticky,"pkt-header-service--scroll-to-hide":this.shouldHideOnScroll,"pkt-header-service--hidden":this.isHidden}),r=t.t({"pkt-header-service__logo-area":!0,"pkt-header-service__logo-area--without-service":!this.serviceName});return e.p`
234
+ <header class=${n} ${i.n(this.headerRef)}>
235
+ <div class=${r}>${this.renderLogo()} ${this.renderServiceName()}</div>
236
+
237
+ ${this.hasSlotContent()||this.showSearch||this.showLogoutInHeader?e.p`<div class="pkt-header-service__content">
238
+ ${this.renderSlotContainer()} ${this.renderSearch()}
239
+ ${this.isTablet&&this.showLogoutInHeader?e.p`
240
+ <pkt-button
241
+ skin="secondary"
242
+ size=${this.isMobile?`small`:`medium`}
243
+ variant="icon-only"
244
+ iconName="exit"
245
+ @click=${this.handleLogout}
246
+ >
247
+ Logg ut
248
+ </pkt-button>
249
+ `:e.d}
250
+ </div>`:e.d}
251
+ ${this.user||!this.isTablet&&this.showLogoutInHeader?e.p`<div class="pkt-header-service__user">
252
+ ${this.renderUserButton()}
253
+ ${!this.isTablet&&this.showLogoutInHeader?e.p`
254
+ <pkt-button
255
+ skin="tertiary"
256
+ size="medium"
257
+ variant="icon-right"
258
+ iconName="exit"
259
+ @click=${this.handleLogout}
260
+ >
261
+ Logg ut
262
+ </pkt-button>
263
+ `:e.d}
264
+ </div>`:e.d}
265
+ </header>
266
+ `}render(){let n=this.renderHeader();return this.isFixed?e.p`
267
+ <div class="pkt-header-service-wrapper">
268
+ ${n}
269
+ <div class=${t.t({"pkt-header-service-spacer":!0,"pkt-header-service-spacer--compact":this.compact,"pkt-header-service-spacer--has-user":!!this.user,"pkt-header-service-spacer--mobile":this.isMobile,"pkt-header-service-spacer--tablet":this.isTablet})}></div>
270
+ </div>
271
+ `:n}};e.n([e.o({type:String,attribute:`service-name`})],h.prototype,`serviceName`,void 0),e.n([e.o({type:String,attribute:`service-link`})],h.prototype,`serviceLink`,void 0),e.n([e.o({type:String,attribute:`logo-link`})],h.prototype,`logoLink`,void 0),e.n([e.o({type:String,attribute:`logo-path`})],h.prototype,`logoPath`,void 0),e.n([e.o({type:String,attribute:`search-placeholder`})],h.prototype,`searchPlaceholder`,void 0),e.n([e.o({type:String,attribute:`search-value`})],h.prototype,`searchValue`,void 0),e.n([e.o({type:Number,attribute:`mobile-breakpoint`})],h.prototype,`mobileBreakpoint`,void 0),e.n([e.o({type:Number,attribute:`tablet-breakpoint`})],h.prototype,`tabletBreakpoint`,void 0),e.n([e.o({type:String,attribute:`opened-menu`})],h.prototype,`openedMenu`,void 0),e.n([e.o({type:String,attribute:`log-out-button-placement`})],h.prototype,`logOutButtonPlacement`,void 0),e.n([e.o({type:String})],h.prototype,`position`,void 0),e.n([e.o({type:String,attribute:`scroll-behavior`})],h.prototype,`scrollBehavior`,void 0),e.n([e.o({type:String,attribute:`slot-menu-variant`})],h.prototype,`slotMenuVariant`,void 0),e.n([e.o({type:String,attribute:`slot-menu-text`})],h.prototype,`slotMenuText`,void 0),e.n([e.o({type:Boolean,attribute:`hide-logo`,converter:a.t})],h.prototype,`hideLogo`,void 0),e.n([e.o({type:Boolean,converter:a.t})],h.prototype,`compact`,void 0),e.n([e.o({type:Boolean,attribute:`show-search`,converter:a.t})],h.prototype,`showSearch`,void 0),e.n([e.o({type:Boolean,attribute:`can-change-representation`,converter:a.t})],h.prototype,`canChangeRepresentation`,void 0),e.n([e.o({type:Boolean,attribute:`has-log-out`,converter:a.t})],h.prototype,`hasLogOut`,void 0),e.n([e.o({type:Object})],h.prototype,`user`,void 0),e.n([e.o({type:Array,attribute:`user-menu`})],h.prototype,`userMenu`,void 0),e.n([e.o({type:Object})],h.prototype,`representing`,void 0),e.n([e.a()],h.prototype,`openMenu`,void 0),e.n([e.a()],h.prototype,`alignSlotRight`,void 0),e.n([e.a()],h.prototype,`alignSearchRight`,void 0);try{e.s(`pkt-header-service`)(h)}catch{console.warn(`Forsøker å definere <pkt-header-service>, men den er allerede definert`)}var g=`https://punkt-cdn.oslo.kommune.no/latest/logos/`;typeof window<`u`&&(window.pktLogoPath=window.pktLogoPath||g);var _=`pkt-header-global-menu`,v=`pkt-header-global-menu-toggle`,y=`pkt-header-global-search-panel`,b=`pkt-header-global-search-toggle`,x=class extends e.t{constructor(...e){super(...e),this.locale=`nb-NO`,this.logoLink=o.o,this.logoPath=typeof window<`u`?window.pktLogoPath:g,this.position=`fixed`,this.scrollBehavior=`hide`,this.mobileBreakpoint=768,this.tabletBreakpoint=1024,this.logOutButtonPlacement=`none`,this.showSearch=!0,this.showContact=!0,this.canChangeRepresentation=!1,this.hasLogOut=!1,this.openMenu=`none`,this.loadError=!1,this.headerAnchor={top:0,left:0,width:0},this.headerRef=i.t(),this.menuContainerRef=i.t(),this.userContainerRef=i.t(),this.chrome=new f(this,()=>({mobileBreakpoint:this.mobileBreakpoint,tabletBreakpoint:this.tabletBreakpoint,position:this.position,scrollBehavior:this.scrollBehavior})),this.handleClickOutside=e=>{let t=e.target;this.openMenu===`user`&&!t.closest(`.pkt-header-global__user-container`)&&!t.closest(`.pkt-header-global__user-menu`)&&(this.openMenu=`none`),this.openMenu===`menu`&&!t.closest(`.pkt-header-menu`)&&!t.closest(`#${v}`)&&(this.openMenu=`none`),this.openMenu===`search`&&!t.closest(`.pkt-header-global__search-panel-inner`)&&!t.closest(`#${b}`)&&(this.openMenu=`none`)},this.handleEscapeKey=e=>{e.key===`Escape`&&this.openMenu!==`none`&&(e.preventDefault(),this.chrome.flagRestoreFocus(),this.openMenu=`none`)},this.handleOverlayKeydown=e=>{if(e.key!==`Tab`)return;let t=this.activeOverlay;if(!t||!t.panel||!t.toggle)return;let{panel:n,toggle:r}=t,i=s.n(n),a=s.t();if(a&&r.contains(a)){!e.shiftKey&&i.length>0&&(e.preventDefault(),i[0].focus());return}if(i.length===0)return;let o=i[0],c=i[i.length-1],l=!e.shiftKey&&a===c,u=e.shiftKey&&a===o;(l||u)&&(e.preventDefault(),this.openMenu=`none`,this.focusToggle(r))},this.handleOverlayFocusIn=e=>{let t=this.activeOverlay;if(!t||!t.panel)return;let n=e.target;n&&(t.panel.contains(n)||t.toggle?.contains(n)||(this.openMenu=`none`))}}get isMobile(){return this.chrome.isMobile}get isTablet(){return this.chrome.isTablet}get isHidden(){return this.chrome.isHidden}connectedCallback(){super.connectedCallback(),this.classList.add(`pkt-header-global-host`),this.data?this.emitDataLoaded(this.data):this.loadData()}disconnectedCallback(){super.disconnectedCallback(),this.abortController?.abort(),document.removeEventListener(`mousedown`,this.handleClickOutside),document.removeEventListener(`keydown`,this.handleEscapeKey),document.removeEventListener(`keydown`,this.handleOverlayKeydown),document.removeEventListener(`focusin`,this.handleOverlayFocusIn)}firstUpdated(){this.chrome.observe(this.headerRef.value)}willUpdate(e){if(super.willUpdate(e),this.openMenu===`menu`||this.openMenu===`search`){let e=this.headerRef.value?.getBoundingClientRect();e&&(this.headerAnchor={top:e.top,left:e.left,width:e.width})}}get overlayAnchorStyle(){let{top:e,left:t,width:n}=this.headerAnchor;return`--pkt-header-global-top: ${e}px; --pkt-header-global-left: ${t}px; --pkt-header-global-width: ${n}px`}updated(e){if(super.updated(e),(e.has(`mobileBreakpoint`)||e.has(`tabletBreakpoint`))&&this.chrome.refreshBreakpoints(),e.has(`dataUrl`)&&e.get(`dataUrl`)!==void 0&&!this.data&&this.loadData(),e.has(`data`)&&this.data&&this.emitDataLoaded(this.data),e.has(`openMenu`)){let t=e.get(`openMenu`);this.openMenu!==`none`&&(t===`none`||t===void 0)?(document.addEventListener(`mousedown`,this.handleClickOutside),document.addEventListener(`keydown`,this.handleEscapeKey)):this.openMenu===`none`&&t&&t!==`none`&&(document.removeEventListener(`mousedown`,this.handleClickOutside),document.removeEventListener(`keydown`,this.handleEscapeKey),this.chrome.restoreFocus());let n=t===`menu`||t===`search`,r=this.openMenu===`menu`||this.openMenu===`search`;r&&!n?(document.addEventListener(`keydown`,this.handleOverlayKeydown),document.addEventListener(`focusin`,this.handleOverlayFocusIn)):!r&&n&&(document.removeEventListener(`keydown`,this.handleOverlayKeydown),document.removeEventListener(`focusin`,this.handleOverlayFocusIn)),this.openMenu===`search`&&t!==`search`&&requestAnimationFrame(()=>{this.querySelector(`#${y} input`)?.focus()}),this.chrome.pauseScrollHide=this.openMenu!==`none`,this.chrome.setScrollLock(this.openMenu===`menu`||this.openMenu===`search`)}}async loadData(){this.abortController?.abort(),this.abortController=new AbortController,this.loadError=!1;try{let e=await o.t(this.dataUrl,this.abortController.signal);this.fetchedData=e,this.emitDataLoaded(e)}catch(e){if(e.name===`AbortError`)return;this.loadError=!0,this.dispatchEvent(new CustomEvent(`data-error`,{detail:{error:e},bubbles:!0,composed:!0}))}}emitDataLoaded(e){this.dispatchEvent(new CustomEvent(`data-loaded`,{detail:{data:e},bubbles:!0,composed:!0}))}get effectiveData(){return this.data??this.fetchedData}get localeData(){return o.n(this.effectiveData,this.locale)}get shouldHideOnScroll(){return this.scrollBehavior===`hide`}get isFixed(){return this.position===`fixed`}get isSticky(){return this.position===`sticky`}toggleMenu(e){this.openMenu===e?this.openMenu=`none`:(this.chrome.captureFocus(),this.openMenu=e)}get activeOverlay(){return this.openMenu===`menu`?{panel:this.menuContainerRef.value??null,toggle:this.querySelector(`#${v}`)}:this.openMenu===`search`?{panel:this.querySelector(`#${y}`),toggle:this.querySelector(`#${b}`)}:null}focusToggle(e){(e?.querySelector(`button`)??e)?.focus()}handleSearch(e){this.dispatchEvent(new CustomEvent(`search`,{detail:{query:e},bubbles:!0,composed:!0}))}handleLogout(){this.dispatchEvent(new CustomEvent(`log-out`,{bubbles:!0,composed:!0}))}handleChangeRepresentation(){this.dispatchEvent(new CustomEvent(`change-representation`,{bubbles:!0,composed:!0}))}get formattedLastLoggedIn(){return d(this.user?.lastLoggedIn)}get showLogoutInUserMenu(){return this.hasLogOut&&(this.logOutButtonPlacement===`userMenu`||this.logOutButtonPlacement===`both`)}handleLogoClick(e){this.dispatchEvent(new CustomEvent(`logo-click`,{bubbles:!0,composed:!0,detail:{originalEvent:e}}))}renderLogo(){let t=e.p`
272
+ <pkt-icon name="oslologo" aria-hidden="true" path=${r.t(this.logoPath)}></pkt-icon>
273
+ `;return e.p`
274
+ <span class="pkt-header-global__logo">
275
+ <a href=${this.logoLink} aria-label="Til hovedsiden" @click=${this.handleLogoClick}>
276
+ ${t}
277
+ </a>
278
+ </span>
279
+ `}renderSearch(t){if(!this.showSearch)return e.d;let n=t.search;if(!n)return e.d;let i=this.searchPlaceholder??n.input.placeholder;return e.p`
280
+ <div class="pkt-header-global__search">
281
+ <pkt-searchinput
282
+ appearance="global"
283
+ input-size=${this.isTablet?`small`:`medium`}
284
+ fullwidth
285
+ id=${n.input.id||`pkt-header-global-search`}
286
+ name=${r.t(n.input.name)}
287
+ placeholder=${r.t(i)}
288
+ aria-label=${r.t(t.i18n?.search)}
289
+ action=${n.endpoint}
290
+ method="get"
291
+ @pkt-search=${e=>this.handleSearch(e.detail.value)}
292
+ ></pkt-searchinput>
293
+ </div>
294
+ `}renderContact(n){if(!this.showContact||this.user)return e.d;let r=n.header?.contact,i=t.t({"pkt-header-global__contact":!0,"pkt-btn":!0,"pkt-btn--secondary":!0,"pkt-btn--label-only":!0,"pkt-btn--small":this.isMobile||this.isTablet,"pkt-btn--medium":!this.isMobile&&!this.isTablet});return r?e.p`
295
+ <a class=${i} href=${r.url}>
296
+ <span class="pkt-btn__text">${r.text}</span>
297
+ </a>
298
+ `:e.d}get isLoading(){return!this.localeData&&!this.loadError}renderMenuToggle(t){let n=t?.i18n?.menu||`Meny`,r=this.openMenu===`menu`;return e.p`
299
+ <pkt-button
300
+ id=${v}
301
+ class="pkt-header-global__menu-toggle"
302
+ skin=${this.isMobile?`tertiary`:`secondary`}
303
+ variant=${this.isMobile?`icon-only`:`icon-right`}
304
+ iconName=${r?`close`:`menu`}
305
+ size=${this.isTablet?`small`:`medium`}
306
+ state=${r?`active`:`normal`}
307
+ aria-expanded=${r}
308
+ aria-controls=${_}
309
+ ?disabled=${this.isLoading}
310
+ @click=${()=>this.toggleMenu(`menu`)}
311
+ >
312
+ ${n}
313
+ </pkt-button>
314
+ `}renderSearchToggle(t){if(!this.showSearch||!t.search)return e.d;let n=this.openMenu===`search`;return e.p`
315
+ <pkt-button
316
+ id=${b}
317
+ class="pkt-header-global__search-toggle"
318
+ skin="primary"
319
+ color=${r.t(n?void 0:`yellow`)}
320
+ variant="icon-only"
321
+ iconName=${n?`close`:`magnifying-glass-big`}
322
+ size=${this.isMobile?`small`:`medium`}
323
+ state=${n?`active`:`normal`}
324
+ aria-expanded=${n}
325
+ aria-controls=${y}
326
+ @click=${()=>this.toggleMenu(`search`)}
327
+ >
328
+ ${t.i18n?.search||`Søk`}
329
+ </pkt-button>
330
+ `}renderSearchPanel(n){let i=n.search;if(this.openMenu!==`search`||!this.showSearch||!i)return e.d;let a=this.searchPlaceholder??i.input.placeholder;return e.p`
331
+ <div class=${t.t({"pkt-header-global__search-panel":!0,[`pkt-header-global__search-panel--${this.overlayBreakpointClass}`]:!!this.overlayBreakpointClass})} id=${y} style=${this.overlayAnchorStyle}>
332
+ <div class="pkt-header-global__search-panel-inner">
333
+ <pkt-searchinput
334
+ appearance="global"
335
+ fullwidth
336
+ id=${i.input.id||`pkt-header-global-search`}
337
+ name=${r.t(i.input.name)}
338
+ placeholder=${r.t(a)}
339
+ aria-label=${r.t(n.i18n?.search||`Søk`)}
340
+ action=${i.endpoint}
341
+ method="get"
342
+ @pkt-search=${e=>this.handleSearch(e.detail.value)}
343
+ ></pkt-searchinput>
344
+ </div>
345
+ </div>
346
+ `}renderUser(){if(!this.user)return e.d;let n=this.openMenu===`user`,r=t.t({"pkt-header-global__user-menu":!0,"is-open":n});return e.p`
347
+ <div class="pkt-header-global__user">
348
+ <div
349
+ class="pkt-header-global__user-container ${n?`is-open`:``}"
350
+ ${i.n(this.userContainerRef)}
351
+ >
352
+ <pkt-button
353
+ class="pkt-header-global__user-button"
354
+ skin="secondary"
355
+ size=${this.isTablet?`small`:`medium`}
356
+ state=${n?`active`:`normal`}
357
+ variant="icons-right-and-left"
358
+ iconName="user"
359
+ secondIconName=${n?`chevron-thin-up`:`chevron-thin-down`}
360
+ @click=${()=>this.toggleMenu(`user`)}
361
+ >
362
+ <span class="pkt-sr-only">Brukermeny: </span>
363
+ <span translate="no">${this.representing?.name||this.user.name}</span>
364
+ </pkt-button>
365
+ ${n?e.p`
366
+ <div class=${r}>
367
+ <pkt-header-user-menu
368
+ .user=${this.user}
369
+ formatted-last-logged-in=${this.formattedLastLoggedIn||e.d}
370
+ .representing=${this.representing}
371
+ .userMenu=${this.userMenu}
372
+ ?can-change-representation=${this.canChangeRepresentation}
373
+ ?logout-on-click=${this.showLogoutInUserMenu}
374
+ @change-representation=${()=>this.handleChangeRepresentation()}
375
+ @log-out=${()=>this.handleLogout()}
376
+ ></pkt-header-user-menu>
377
+ </div>
378
+ `:e.d}
379
+ </div>
380
+ </div>
381
+ `}get overlayBreakpointClass(){return this.isMobile?`mobile`:this.isTablet?`tablet`:``}renderMenu(){return this.openMenu===`menu`?e.p`
382
+ <div
383
+ class=${t.t({"pkt-header-global__menu":!0,[`pkt-header-global__menu--${this.overlayBreakpointClass}`]:!!this.overlayBreakpointClass})}
384
+ id=${_}
385
+ style=${this.overlayAnchorStyle}
386
+ ${i.n(this.menuContainerRef)}
387
+ >
388
+ ${this.localeData?e.p`
389
+ <pkt-header-menu
390
+ .data=${this.effectiveData}
391
+ locale=${this.locale}
392
+ open
393
+ mobile-breakpoint=${this.mobileBreakpoint}
394
+ ></pkt-header-menu>
395
+ `:e.p`
396
+ <nav class="pkt-header-menu pkt-header-menu--open">
397
+ <p class="pkt-header-menu__error">Kunne ikke laste meny.</p>
398
+ </nav>
399
+ `}
400
+ </div>
401
+ `:e.d}renderHeader(){let n=t.t({"pkt-header-global":!0,"pkt-header-global--mobile":this.isMobile,"pkt-header-global--tablet":this.isTablet,"pkt-header-global--fixed":this.isFixed,"pkt-header-global--sticky":this.isSticky,"pkt-header-global--scroll-to-hide":this.shouldHideOnScroll,"pkt-header-global--hidden":this.isHidden}),r=this.localeData,a=this.isMobile;return e.p`
402
+ <header class=${n} ${i.n(this.headerRef)}>
403
+ <div class="pkt-header-global__logo-area">${this.renderLogo()}</div>
404
+ <div class="pkt-header-global__content">
405
+ ${!a&&r?this.renderSearch(r):e.d}
406
+ ${a&&r?this.renderSearchToggle(r):e.d}
407
+ ${this.renderMenuToggle(r)}
408
+ ${!a&&r?this.renderContact(r):e.d}
409
+ </div>
410
+ ${this.renderUser()}
411
+ </header>
412
+ `}render(){let n=this.renderHeader(),r=this.localeData,i=this.renderMenu(),a=r?this.renderSearchPanel(r):e.d;return this.isFixed?e.p`
413
+ <div class="pkt-header-global-wrapper">
414
+ ${n}
415
+ <div class=${t.t({"pkt-header-global-spacer":!0,"pkt-header-global-spacer--mobile":this.isMobile,"pkt-header-global-spacer--tablet":this.isTablet&&!this.isMobile,"pkt-header-global-spacer--has-user":!!this.user})}></div>
416
+ ${a}${i}
417
+ </div>
418
+ `:e.p`${n}${a}${i}`}};e.n([e.o({type:String,attribute:`data-url`})],x.prototype,`dataUrl`,void 0),e.n([e.o({type:Object,attribute:!1})],x.prototype,`data`,void 0),e.n([e.o({type:String})],x.prototype,`locale`,void 0),e.n([e.o({type:String,attribute:`logo-link`})],x.prototype,`logoLink`,void 0),e.n([e.o({type:String,attribute:`logo-path`})],x.prototype,`logoPath`,void 0),e.n([e.o({type:String,attribute:`search-placeholder`})],x.prototype,`searchPlaceholder`,void 0),e.n([e.o({type:String})],x.prototype,`position`,void 0),e.n([e.o({type:String,attribute:`scroll-behavior`})],x.prototype,`scrollBehavior`,void 0),e.n([e.o({type:Number,attribute:`mobile-breakpoint`})],x.prototype,`mobileBreakpoint`,void 0),e.n([e.o({type:Number,attribute:`tablet-breakpoint`})],x.prototype,`tabletBreakpoint`,void 0),e.n([e.o({type:String,attribute:`log-out-button-placement`})],x.prototype,`logOutButtonPlacement`,void 0),e.n([e.o({type:Boolean,attribute:`show-search`,converter:a.t})],x.prototype,`showSearch`,void 0),e.n([e.o({type:Boolean,attribute:`show-contact`,converter:a.t})],x.prototype,`showContact`,void 0),e.n([e.o({type:Boolean,attribute:`can-change-representation`,converter:a.t})],x.prototype,`canChangeRepresentation`,void 0),e.n([e.o({type:Boolean,attribute:`has-log-out`,converter:a.t})],x.prototype,`hasLogOut`,void 0),e.n([e.o({type:Object})],x.prototype,`user`,void 0),e.n([e.o({type:Array,attribute:`user-menu`})],x.prototype,`userMenu`,void 0),e.n([e.o({type:Object})],x.prototype,`representing`,void 0),e.n([e.a()],x.prototype,`openMenu`,void 0),e.n([e.a()],x.prototype,`fetchedData`,void 0),e.n([e.a()],x.prototype,`loadError`,void 0),e.n([e.a()],x.prototype,`headerAnchor`,void 0);try{e.s(`pkt-header-global`)(x)}catch{console.warn(`Forsøker å definere <pkt-header-global>, men den er allerede definert`)}var S=class extends n.t{constructor(...e){super(...e),this.type=`service`,this.searchPlaceholder=`Søk`,this.searchValue=``,this.mobileBreakpoint=768,this.tabletBreakpoint=1280,this.openedMenu=`none`,this.logOutButtonPlacement=`none`,this.position=`fixed`,this.scrollBehavior=`hide`,this.slotMenuVariant=`icon-only`,this.slotMenuText=`Meny`,this.hideLogo=!1,this.compact=!1,this.canChangeRepresentation=!1,this.hasLogOut=!1,this.showContact=!0}firstUpdated(e){super.firstUpdated(e),this.emitDeprecationWarnings()}emitDeprecationWarnings(){this.userMenuFooter!==void 0&&console.warn(`[PktHeader] userMenuFooter is deprecated. Use userMenu instead.`),this.userOptions!==void 0&&console.warn(`[PktHeader] userOptions is deprecated. Use userMenu instead.`)}get effectiveUserMenu(){let e=this.userMenu||[],t=this.userMenuFooter||[],n=this.userOptions||[];return t.length||n.length?[...e,...n,...t]:this.userMenu}renderGlobal(){return e.p`
419
+ <pkt-header-global
420
+ data-url=${r.t(this.dataUrl)}
421
+ locale=${r.t(this.locale)}
422
+ logo-link=${r.t(this.logoLink)}
423
+ logo-path=${r.t(this.logoPath)}
424
+ search-placeholder=${r.t(this.hasAttribute(`search-placeholder`)?this.searchPlaceholder:void 0)}
425
+ mobile-breakpoint=${r.t(this.hasAttribute(`mobile-breakpoint`)?this.mobileBreakpoint:void 0)}
426
+ tablet-breakpoint=${r.t(this.hasAttribute(`tablet-breakpoint`)?this.tabletBreakpoint:void 0)}
427
+ log-out-button-placement=${this.logOutButtonPlacement}
428
+ position=${this.position}
429
+ scroll-behavior=${this.scrollBehavior}
430
+ .data=${this.data}
431
+ .showSearch=${this.showSearch??!0}
432
+ .showContact=${this.showContact}
433
+ .canChangeRepresentation=${this.canChangeRepresentation}
434
+ .hasLogOut=${this.hasLogOut}
435
+ .user=${this.user}
436
+ .userMenu=${this.effectiveUserMenu}
437
+ .representing=${this.representing}
438
+ ></pkt-header-global>
439
+ `}render(){return this.type===`global`?this.renderGlobal():e.p`
440
+ <pkt-header-service
441
+ service-name=${r.t(this.serviceName)}
442
+ service-link=${r.t(this.serviceLink)}
443
+ logo-link=${r.t(this.logoLink)}
444
+ logo-path=${r.t(this.logoPath)}
445
+ search-placeholder=${this.searchPlaceholder}
446
+ search-value=${this.searchValue}
447
+ mobile-breakpoint=${this.mobileBreakpoint}
448
+ tablet-breakpoint=${this.tabletBreakpoint}
449
+ opened-menu=${this.openedMenu}
450
+ log-out-button-placement=${this.logOutButtonPlacement}
451
+ position=${this.position}
452
+ scroll-behavior=${this.scrollBehavior}
453
+ slot-menu-variant=${this.slotMenuVariant}
454
+ slot-menu-text=${this.slotMenuText}
455
+ .hideLogo=${this.hideLogo}
456
+ .compact=${this.compact}
457
+ .showSearch=${this.showSearch??!1}
458
+ .canChangeRepresentation=${this.canChangeRepresentation}
459
+ .hasLogOut=${this.hasLogOut}
460
+ .user=${this.user}
461
+ .userMenu=${this.effectiveUserMenu}
462
+ .representing=${this.representing}
463
+ >
464
+ ${this.hasSlotContent()?e.p`<div class="pkt-contents">${n.n(this)}</div>`:e.d}
465
+ </pkt-header-service>
466
+ `}};e.n([e.o({type:String})],S.prototype,`type`,void 0),e.n([e.o({type:String,attribute:`service-name`})],S.prototype,`serviceName`,void 0),e.n([e.o({type:String,attribute:`service-link`})],S.prototype,`serviceLink`,void 0),e.n([e.o({type:String,attribute:`logo-link`})],S.prototype,`logoLink`,void 0),e.n([e.o({type:String,attribute:`logo-path`})],S.prototype,`logoPath`,void 0),e.n([e.o({type:String,attribute:`search-placeholder`})],S.prototype,`searchPlaceholder`,void 0),e.n([e.o({type:String,attribute:`search-value`})],S.prototype,`searchValue`,void 0),e.n([e.o({type:Number,attribute:`mobile-breakpoint`})],S.prototype,`mobileBreakpoint`,void 0),e.n([e.o({type:Number,attribute:`tablet-breakpoint`})],S.prototype,`tabletBreakpoint`,void 0),e.n([e.o({type:String,attribute:`opened-menu`})],S.prototype,`openedMenu`,void 0),e.n([e.o({type:String,attribute:`log-out-button-placement`})],S.prototype,`logOutButtonPlacement`,void 0),e.n([e.o({type:String})],S.prototype,`position`,void 0),e.n([e.o({type:String,attribute:`scroll-behavior`})],S.prototype,`scrollBehavior`,void 0),e.n([e.o({type:String,attribute:`slot-menu-variant`})],S.prototype,`slotMenuVariant`,void 0),e.n([e.o({type:String,attribute:`slot-menu-text`})],S.prototype,`slotMenuText`,void 0),e.n([e.o({type:Boolean,attribute:`hide-logo`,converter:a.t})],S.prototype,`hideLogo`,void 0),e.n([e.o({type:Boolean,converter:a.t})],S.prototype,`compact`,void 0),e.n([e.o({type:Boolean,attribute:`show-search`,converter:a.t})],S.prototype,`showSearch`,void 0),e.n([e.o({type:Boolean,attribute:`can-change-representation`,converter:a.t})],S.prototype,`canChangeRepresentation`,void 0),e.n([e.o({type:Boolean,attribute:`has-log-out`,converter:a.t})],S.prototype,`hasLogOut`,void 0),e.n([e.o({type:Object})],S.prototype,`user`,void 0),e.n([e.o({type:Array,attribute:`user-menu`})],S.prototype,`userMenu`,void 0),e.n([e.o({type:Object})],S.prototype,`representing`,void 0),e.n([e.o({type:String,attribute:`data-url`})],S.prototype,`dataUrl`,void 0),e.n([e.o({type:Object,attribute:!1})],S.prototype,`data`,void 0),e.n([e.o({type:String})],S.prototype,`locale`,void 0),e.n([e.o({type:Boolean,attribute:`show-contact`,converter:a.t})],S.prototype,`showContact`,void 0),e.n([e.o({type:Array,attribute:`user-menu-footer`})],S.prototype,`userMenuFooter`,void 0),e.n([e.o({type:Array,attribute:`user-options`})],S.prototype,`userOptions`,void 0);try{e.s(`pkt-header`)(S)}catch{console.warn(`Forsøker å definere <pkt-header>, men den er allerede definert`)}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return S}});
@@ -0,0 +1,126 @@
1
+ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs");require("./icon-B8PVq2O6.cjs"),require("./accordion-CbXDxOho.cjs");const n=require("./booleanish-B9Kf0nES.cjs"),r=require("./fetch-header-footer-data-xohWFmYC.cjs");var i=class extends e.t{constructor(...e){super(...e),this.dataUrl=r.a,this.locale=`nb-NO`,this.open=!1,this.mobileBreakpoint=768,this.loadState=`idle`,this.isMobile=!1,this.menuWidth=0}connectedCallback(){super.connectedCallback(),this.classList.add(`pkt-header-menu`),this.updateOpenClass(),this.observeWidth(),this.data?(this.loadState=`ready`,this.dispatchEvent(new CustomEvent(`data-loaded`,{detail:{data:this.data},bubbles:!0,composed:!0}))):this.loadData()}updateOpenClass(){this.classList.toggle(`pkt-header-menu--open`,!!this.open)}disconnectedCallback(){super.disconnectedCallback(),this.abortController?.abort(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0}updated(e){super.updated(e),e.has(`open`)&&this.updateOpenClass(),e.has(`mobileBreakpoint`)&&e.get(`mobileBreakpoint`)!==void 0&&this.refreshIsMobile(),e.has(`dataUrl`)&&e.get(`dataUrl`)!==void 0&&!this.data&&this.loadData(),e.has(`data`)&&e.get(`data`)!==void 0&&this.data&&(this.loadState=`ready`,this.dispatchEvent(new CustomEvent(`data-loaded`,{detail:{data:this.data},bubbles:!0,composed:!0})))}observeWidth(){typeof ResizeObserver>`u`||(this.menuWidth=this.offsetWidth,this.refreshIsMobile(),this.resizeObserver=new ResizeObserver(e=>{for(let t of e)this.menuWidth=t.borderBoxSize&&t.borderBoxSize.length>0?t.borderBoxSize[0].inlineSize:t.contentRect.width,this.refreshIsMobile()}),this.resizeObserver.observe(this))}refreshIsMobile(){this.isMobile=this.menuWidth<this.mobileBreakpoint}async loadData(){this.abortController?.abort(),this.abortController=new AbortController,this.loadState=`loading`;try{let e=await r.t(this.dataUrl,this.abortController.signal);this.fetchedData=e,this.loadState=`ready`,this.dispatchEvent(new CustomEvent(`data-loaded`,{detail:{data:e},bubbles:!0,composed:!0}))}catch(e){if(e.name===`AbortError`)return;this.loadState=`error`,this.dispatchEvent(new CustomEvent(`data-error`,{detail:{error:e},bubbles:!0,composed:!0}))}}get effectiveData(){return this.data??this.fetchedData}get localeData(){return r.n(this.effectiveData,this.locale)}render(){if(this.loadState===`loading`)return e.p`
2
+ <nav aria-busy="true">
3
+ <p class="pkt-header-menu__loading">Laster meny…</p>
4
+ </nav>
5
+ `;if(this.loadState===`error`||!this.localeData)return e.p`
6
+ <nav aria-hidden=${!this.open}>
7
+ <p class="pkt-header-menu__error">Kunne ikke laste meny.</p>
8
+ </nav>
9
+ `;let{megamenu:t,i18n:n}=this.localeData,r=n?.navAriaLabel||`Hovedmeny`;return this.isMobile?e.p`
10
+ <nav aria-label=${r}>
11
+ ${this.renderMobileAccordion(t.services,t.sections)}
12
+ ${this.renderButtons(t.buttons,!0)}
13
+ ${this.renderFooter(t.links,t.some)}
14
+ </nav>
15
+ `:e.p`
16
+ <nav aria-label=${r}>
17
+ ${this.renderServices(t.services)} ${this.renderButtons(t.buttons,!1)}
18
+ ${this.renderSections(t.sections)}
19
+ ${this.renderFooter(t.links,t.some)}
20
+ </nav>
21
+ `}renderMobileAccordion(t,n){return e.p`
22
+ <div class="pkt-header-menu__sections">
23
+ <pkt-accordion
24
+ class="pkt-header-menu__sections-inner"
25
+ skin="plus-minus"
26
+ name="header-menu-accordion"
27
+ >
28
+ <pkt-accordion-item
29
+ class="pkt-header-menu__section"
30
+ skin="plus-minus"
31
+ id="pkt-header-menu-services"
32
+ title=${t.title}
33
+ >
34
+ ${this.renderServicesList(t)}
35
+ </pkt-accordion-item>
36
+ ${n.map((t,n)=>e.p`
37
+ <pkt-accordion-item
38
+ class="pkt-header-menu__section"
39
+ skin="plus-minus"
40
+ id=${`pkt-header-menu-section-${n}`}
41
+ title=${t.title}
42
+ >
43
+ ${this.renderSectionList(t.links)}
44
+ </pkt-accordion-item>
45
+ `)}
46
+ </pkt-accordion>
47
+ </div>
48
+ `}renderServicesList(t){return e.p`
49
+ <ul class="pkt-header-menu__services-list">
50
+ ${t.links.map(t=>e.p`
51
+ <li class="pkt-header-menu__service">
52
+ <a class="pkt-header-menu__service-link" href=${t.url}>
53
+ <pkt-icon
54
+ class="pkt-header-menu__service-icon"
55
+ name=${r.i(t.icon)}
56
+ aria-hidden="true"
57
+ ></pkt-icon>
58
+ <span class="pkt-header-menu__service-text">${t.text}</span>
59
+ </a>
60
+ </li>
61
+ `)}
62
+ </ul>
63
+ `}renderServices(t){return e.p`
64
+ <div class="pkt-header-menu__services">
65
+ <h2 class="pkt-header-menu__services-title">${t.title}</h2>
66
+ ${this.renderServicesList(t)}
67
+ </div>
68
+ `}renderButtons(n,i){return!n||n.length===0?e.d:e.p`
69
+ <div class=${t.t({"pkt-header-menu__buttons":!0,"pkt-header-menu__buttons--mobile":i})}>
70
+ ${n.map(t=>e.p`
71
+ <a
72
+ class="pkt-btn pkt-btn--secondary pkt-btn--icon-right pkt-btn--small"
73
+ href=${t.url}
74
+ >
75
+ <pkt-icon
76
+ class="pkt-btn__icon"
77
+ name=${t.iconName?r.i(t.iconName):`user`}
78
+ aria-hidden="true"
79
+ ></pkt-icon>
80
+ <span class="pkt-btn__text">${t.text}</span>
81
+ </a>
82
+ `)}
83
+ </div>
84
+ `}renderSections(t){return!t||t.length===0?e.d:e.p`
85
+ <div class="pkt-header-menu__sections">
86
+ <div class="pkt-header-menu__sections-inner">
87
+ ${t.map(t=>e.p`
88
+ <div class="pkt-header-menu__section">
89
+ <h2 class="pkt-header-menu__section-title">${t.title}</h2>
90
+ ${this.renderSectionList(t.links)}
91
+ </div>
92
+ `)}
93
+ </div>
94
+ </div>
95
+ `}renderSectionList(t){return e.p`
96
+ <ul class="pkt-header-menu__section-list">
97
+ ${t.map(t=>e.p`
98
+ <li>
99
+ <a class="pkt-header-menu__section-link" href=${t.url}>${t.text}</a>
100
+ </li>
101
+ `)}
102
+ </ul>
103
+ `}renderFooter(t,n){return(!t||t.length===0)&&(!n||n.length===0)?e.d:e.p`
104
+ <div class="pkt-header-menu__footer">
105
+ ${t&&t.length>0?e.p`
106
+ <ul class="pkt-header-menu__footer-list">
107
+ ${t.map(t=>e.p`
108
+ <li>
109
+ <a class="pkt-header-menu__footer-link" href=${t.url}>${t.text}</a>
110
+ </li>
111
+ `)}
112
+ </ul>
113
+ `:e.d}
114
+ ${n&&n.length>0?e.p`
115
+ <ul class="pkt-header-menu__footer-list pkt-header-menu__footer-list--social">
116
+ ${n.map(e=>this.renderSocialLink(e))}
117
+ </ul>
118
+ `:e.d}
119
+ </div>
120
+ `}renderSocialLink(t){let n=r.r(t.url,t.text);return e.p`
121
+ <li>
122
+ <a class="pkt-header-menu__social-link" href=${t.url} aria-label=${t.text}>
123
+ ${n?e.p`<pkt-icon name=${n} aria-hidden="true"></pkt-icon>`:e.p`<span>${t.text}</span>`}
124
+ </a>
125
+ </li>
126
+ `}};e.n([e.o({type:String,attribute:`data-url`})],i.prototype,`dataUrl`,void 0),e.n([e.o({type:Object,attribute:!1})],i.prototype,`data`,void 0),e.n([e.o({type:String})],i.prototype,`locale`,void 0),e.n([e.o({type:Boolean,reflect:!0,converter:n.t})],i.prototype,`open`,void 0),e.n([e.o({type:Number,attribute:`mobile-breakpoint`})],i.prototype,`mobileBreakpoint`,void 0),e.n([e.a()],i.prototype,`loadState`,void 0),e.n([e.a()],i.prototype,`fetchedData`,void 0),e.n([e.a()],i.prototype,`isMobile`,void 0);try{e.s(`pkt-header-menu`)(i)}catch{console.warn(`Forsøker å definere <pkt-header-menu>, men den er allerede definert`)}var a=i;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});