@oslokommune/punkt-elements 17.0.8 → 17.1.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 (202) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/{accordion-DEUHQ4JD.js → accordion-DZq8Dnvh.js} +5 -5
  3. package/dist/{accordion-CbXDxOho.cjs → accordion-DlNfuooe.cjs} +1 -1
  4. package/dist/{alert-CbtVGrHD.js → alert-CbN5Bfdd.js} +5 -5
  5. package/dist/{alert-CkUnbPdA.cjs → alert-D7YR5Ru2.cjs} +1 -1
  6. package/dist/{async-directive-HLXOyE4A.cjs → async-directive-Cj6po9Zy.cjs} +1 -1
  7. package/dist/{async-directive-Cw_7VW_-.js → async-directive-DaiMzAU4.js} +2 -2
  8. package/dist/{backlink-DDGlLzk9.cjs → backlink-CxSKQSoA.cjs} +1 -1
  9. package/dist/{backlink-wMNLuQ0X.js → backlink-eAD8xH5b.js} +3 -3
  10. package/dist/base-elements/input-element.d.ts +9 -4
  11. package/dist/booleanish-BF8l4scU.cjs +1 -0
  12. package/dist/{booleanish-MfutDT_4.js → booleanish-OQJTYSrw.js} +8 -1
  13. package/dist/{breadcrumbs-CVTLNNsL.js → breadcrumbs-CJP75InB.js} +2 -2
  14. package/dist/{breadcrumbs-D3tfWqvC.cjs → breadcrumbs-CYKfjd4Q.cjs} +1 -1
  15. package/dist/{button-Cod17rKo.js → button-D_M6dpeU.js} +5 -5
  16. package/dist/{button-gvDXtBMC.cjs → button-o0BRKpis.cjs} +1 -1
  17. package/dist/{calendar-BVXW8DqC.cjs → calendar-7_ii5p5b.cjs} +1 -1
  18. package/dist/{calendar-CjC4qlh6.js → calendar-BCUnpa_x.js} +3 -3
  19. package/dist/{card-sydjK3Bb.cjs → card-Cf_jOdya.cjs} +1 -1
  20. package/dist/{card-sDOe54um.js → card-KB9C2f1R.js} +7 -7
  21. package/dist/{checkbox-DJDphhqz.js → checkbox-C2eVUk13.js} +4 -4
  22. package/dist/{checkbox-8uxbeU30.cjs → checkbox-Ch23npOC.cjs} +1 -1
  23. package/dist/{class-map-CAQCRB1W.js → class-map-BRV7-mcj.js} +1 -1
  24. package/dist/{class-map-CCZN5uS3.cjs → class-map-DzzW3MwB.cjs} +1 -1
  25. package/dist/combobox-Db1fB0K7.cjs +139 -0
  26. package/dist/{combobox-D_fReDgU.js → combobox-dSWHF8Ii.js} +52 -16
  27. package/dist/components/fileupload/fileupload.d.ts +2 -0
  28. package/dist/components/input-wrapper/tri-state.test.d.ts +0 -0
  29. package/dist/components/input-wrapper/wrapper-parity.test.d.ts +1 -0
  30. package/dist/components/select/select.test.d.ts +2 -2
  31. package/dist/components/textarea/textarea.d.ts +2 -1
  32. package/dist/components/textarea/textarea.test.d.ts +2 -2
  33. package/dist/components/textinput/textinput.test.d.ts +2 -2
  34. package/dist/{consent--Nw43WFU.cjs → consent-C57oumuq.cjs} +1 -1
  35. package/dist/{consent-B2hSTCGC.js → consent-CibGBVvV.js} +2 -2
  36. package/dist/{datepicker-DrB54Rhc.cjs → datepicker-Ci6Oj0YL.cjs} +6 -7
  37. package/dist/{datepicker-BMuplkDE.js → datepicker-D9Qr98VO.js} +39 -16
  38. package/dist/{directive-helpers-DIF5DwN4.js → directive-helpers-BXtu2yHt.js} +1 -1
  39. package/dist/{directive-helpers-BshFvt7A.cjs → directive-helpers-CEtfS19L.cjs} +1 -1
  40. package/dist/docs/components/verifisering.d.ts +15 -0
  41. package/dist/{element-BoJrqauR.js → element-8RsANDBG.js} +2 -1
  42. package/dist/{element-DJzurxgt.cjs → element-DCm4GU7z.cjs} +1 -1
  43. package/dist/{element-with-slot-mXLg8gg8.js → element-with-slot-DFNWwYys.js} +2 -2
  44. package/dist/{element-with-slot-BY7Jc-q8.cjs → element-with-slot-N79a3tub.cjs} +1 -1
  45. package/dist/{fileupload-D4gQN64T.js → fileupload-D008usH2.js} +11 -8
  46. package/dist/{fileupload-CGKUJrlj.cjs → fileupload-DtAujY-k.cjs} +2 -2
  47. package/dist/{footer-BIrJeRuZ.js → footer-05rSMBWl.js} +5 -5
  48. package/dist/{footer-Ber-jqM1.cjs → footer-DmBOxk43.cjs} +1 -1
  49. package/dist/{header-BFk1an4z.cjs → header-Dd8_GxXA.cjs} +1 -1
  50. package/dist/{header-Deg_LGJo.js → header-iug8KwEF.js} +12 -12
  51. package/dist/{header-menu-GFtJKM4j.js → header-menu-CcXQsag0.js} +5 -5
  52. package/dist/{header-menu-BHqK4QA6.cjs → header-menu-DEMDRByb.cjs} +1 -1
  53. package/dist/{heading-DyJpBFT2.cjs → heading-DbLmrGyU.cjs} +1 -1
  54. package/dist/{heading-CD0PhL8g.js → heading-V-gyod7_.js} +2 -2
  55. package/dist/{helptext-C_brWCIT.js → helptext-BFGNgeqw.js} +8 -5
  56. package/dist/{helptext-Cq5rNaAC.cjs → helptext-CpaW9Zwl.cjs} +4 -1
  57. package/dist/{icon-DGFEIlco.js → icon-8ZKcRaGi.js} +1 -1
  58. package/dist/{icon-B8PVq2O6.cjs → icon-BlJZpl2L.cjs} +1 -1
  59. package/dist/{if-defined-D0bnetLJ.js → if-defined-DfH9X3nd.js} +1 -1
  60. package/dist/if-defined-h7sbeYue.cjs +1 -0
  61. package/dist/{input-element-B0qLbEdF.cjs → input-element-CmFzbxiZ.cjs} +1 -1
  62. package/dist/{input-element-C0RnXi-J.js → input-element-DPXwOJeT.js} +147 -123
  63. package/dist/input-wrapper-CohL8Onb.cjs +54 -0
  64. package/dist/input-wrapper-CrJMQj_L.js +122 -0
  65. package/dist/{input-wrapper-BweP6t3O.js → input-wrapper-D-fPaTbY.js} +2 -2
  66. package/dist/{input-wrapper-wh3fWIhk.cjs → input-wrapper-D5PR0rJn.cjs} +1 -1
  67. package/dist/{link-Geze7498.cjs → link-BQXhsaBM.cjs} +1 -1
  68. package/dist/{link-FmkQvSQL.js → link-C-0YV0XX.js} +4 -4
  69. package/dist/{linkcard-6LCXRTR-.cjs → linkcard-BN34yjcT.cjs} +1 -1
  70. package/dist/{linkcard-BKdT0zU_.js → linkcard-DGHxt0ef.js} +4 -4
  71. package/dist/{listbox-LdyWPu7W.js → listbox-CMLqAc5-.js} +4 -4
  72. package/dist/{listbox-89wMuQVK.cjs → listbox-CgjhUALC.cjs} +1 -1
  73. package/dist/{loader-BA-i8CaQ.js → loader-CxcWuAB7.js} +4 -4
  74. package/dist/{loader-CgW4Vst3.cjs → loader-DFWbjQV5.cjs} +1 -1
  75. package/dist/{messagebox-VD5oEZ19.cjs → messagebox-D0kz1ic4.cjs} +1 -1
  76. package/dist/{messagebox-fiaAyHLG.js → messagebox-DvlF8XbD.js} +4 -4
  77. package/dist/{modal-CPnFteYS.cjs → modal-BQcORqnQ.cjs} +1 -1
  78. package/dist/{modal-xNK_wpHk.js → modal-C9pamgry.js} +5 -5
  79. package/dist/pkt-accordion.cjs +1 -1
  80. package/dist/pkt-accordion.js +1 -1
  81. package/dist/pkt-alert.cjs +1 -1
  82. package/dist/pkt-alert.js +1 -1
  83. package/dist/pkt-backlink.cjs +1 -1
  84. package/dist/pkt-backlink.js +1 -1
  85. package/dist/pkt-breadcrumbs.cjs +1 -1
  86. package/dist/pkt-breadcrumbs.js +1 -1
  87. package/dist/pkt-button.cjs +1 -1
  88. package/dist/pkt-button.js +1 -1
  89. package/dist/pkt-calendar.cjs +1 -1
  90. package/dist/pkt-calendar.js +1 -1
  91. package/dist/pkt-card.cjs +1 -1
  92. package/dist/pkt-card.js +1 -1
  93. package/dist/pkt-checkbox.cjs +1 -1
  94. package/dist/pkt-checkbox.js +1 -1
  95. package/dist/pkt-combobox.cjs +1 -1
  96. package/dist/pkt-combobox.js +1 -1
  97. package/dist/pkt-consent.cjs +1 -1
  98. package/dist/pkt-consent.js +1 -1
  99. package/dist/pkt-datepicker.cjs +1 -1
  100. package/dist/pkt-datepicker.js +1 -1
  101. package/dist/pkt-fileupload.cjs +1 -1
  102. package/dist/pkt-fileupload.js +1 -1
  103. package/dist/pkt-footer.cjs +1 -1
  104. package/dist/pkt-footer.js +1 -1
  105. package/dist/pkt-header-menu.cjs +1 -1
  106. package/dist/pkt-header-menu.js +1 -1
  107. package/dist/pkt-header.cjs +1 -1
  108. package/dist/pkt-header.js +1 -1
  109. package/dist/pkt-heading.cjs +1 -1
  110. package/dist/pkt-heading.js +1 -1
  111. package/dist/pkt-helptext.cjs +1 -1
  112. package/dist/pkt-helptext.js +1 -1
  113. package/dist/pkt-icon.cjs +1 -1
  114. package/dist/pkt-icon.js +1 -1
  115. package/dist/pkt-index.cjs +1 -1
  116. package/dist/pkt-index.js +34 -34
  117. package/dist/pkt-input-wrapper.cjs +1 -1
  118. package/dist/pkt-input-wrapper.js +1 -1
  119. package/dist/pkt-link.cjs +1 -1
  120. package/dist/pkt-link.js +1 -1
  121. package/dist/pkt-linkcard.cjs +1 -1
  122. package/dist/pkt-linkcard.js +1 -1
  123. package/dist/pkt-listbox.cjs +1 -1
  124. package/dist/pkt-listbox.js +1 -1
  125. package/dist/pkt-loader.cjs +1 -1
  126. package/dist/pkt-loader.js +1 -1
  127. package/dist/pkt-messagebox.cjs +1 -1
  128. package/dist/pkt-messagebox.js +1 -1
  129. package/dist/pkt-modal.cjs +1 -1
  130. package/dist/pkt-modal.js +1 -1
  131. package/dist/{pkt-options-controller-CPrfqepu.cjs → pkt-options-controller-DeyC9FDP.cjs} +1 -1
  132. package/dist/{pkt-options-controller-DMxYwnnj.js → pkt-options-controller-sblvLBnq.js} +1 -1
  133. package/dist/pkt-progressbar.cjs +1 -1
  134. package/dist/pkt-progressbar.js +1 -1
  135. package/dist/pkt-radiobutton.cjs +1 -1
  136. package/dist/pkt-radiobutton.js +1 -1
  137. package/dist/pkt-searchinput.cjs +1 -1
  138. package/dist/pkt-searchinput.js +1 -1
  139. package/dist/pkt-select.cjs +1 -1
  140. package/dist/pkt-select.js +1 -1
  141. package/dist/pkt-tabs.cjs +1 -1
  142. package/dist/pkt-tabs.js +1 -1
  143. package/dist/pkt-tag.cjs +1 -1
  144. package/dist/pkt-tag.js +1 -1
  145. package/dist/pkt-textarea.cjs +1 -1
  146. package/dist/pkt-textarea.js +1 -1
  147. package/dist/pkt-textinput.cjs +1 -1
  148. package/dist/pkt-textinput.js +1 -1
  149. package/dist/pkt-timepicker.cjs +1 -1
  150. package/dist/pkt-timepicker.js +1 -1
  151. package/dist/{progressbar-mtjtbpCO.js → progressbar-DtmVoP1j.js} +4 -4
  152. package/dist/{progressbar-BN5y20CC.cjs → progressbar-fnJJsQkh.cjs} +1 -1
  153. package/dist/{radiobutton-DjWBoSHv.cjs → radiobutton-CGT4kJSf.cjs} +1 -1
  154. package/dist/{radiobutton-C6htwDrT.js → radiobutton-DZHVyjoe.js} +4 -4
  155. package/dist/{ref-DO7TzO4O.cjs → ref-CYXJQuCZ.cjs} +1 -1
  156. package/dist/{ref-WGS0u7i2.js → ref-CkGzlsAX.js} +2 -2
  157. package/dist/{repeat-DRnLAg0O.cjs → repeat-C_7HwdFQ.cjs} +1 -1
  158. package/dist/{repeat-BH0cL82q.js → repeat-CwZAKBjZ.js} +2 -2
  159. package/dist/{searchinput-DGjeN1YI.cjs → searchinput-1CESdZO9.cjs} +1 -1
  160. package/dist/{searchinput-CfUVfpqL.js → searchinput-Dw1LAHgD.js} +4 -4
  161. package/dist/{select-CsBXXbLP.js → select-Cb8RH7lk.js} +24 -20
  162. package/dist/select-Duav6lVT.cjs +49 -0
  163. package/dist/shared-types/booleanish.d.ts +11 -0
  164. package/dist/shared-types/index.d.ts +1 -1
  165. package/dist/shared-utils/forms/described-by.d.ts +24 -0
  166. package/dist/{tabs-q62MK_-r.cjs → tabs-A665GUTo.cjs} +1 -1
  167. package/dist/{tabs-BqrKLCjd.js → tabs-BV4w4QfM.js} +4 -4
  168. package/dist/{tag-XE-VRxT2.cjs → tag-DaRo48qb.cjs} +1 -1
  169. package/dist/{tag-BTiTXyf5.js → tag-rb23IBFT.js} +5 -5
  170. package/dist/textarea-bLTy-JGg.cjs +49 -0
  171. package/dist/{textarea-Cm392CEI.js → textarea-nyH0_IkD.js} +35 -28
  172. package/dist/{textinput-TSPcBcih.js → textinput-B5Gk13OB.js} +30 -25
  173. package/dist/{textinput-DqJbTglM.cjs → textinput-D3bL7BTc.cjs} +10 -10
  174. package/dist/{timepicker-DWbgTDKq.js → timepicker-BH9yjtLA.js} +18 -11
  175. package/dist/{timepicker-CqFYMV8q.cjs → timepicker-lv-CQ8of.cjs} +5 -2
  176. package/dist/translations/no.json.d.ts +2 -1
  177. package/package.json +2 -2
  178. package/src/components/combobox/combobox.core.test.ts +2 -2
  179. package/src/components/combobox/combobox.selection.test.ts +18 -0
  180. package/src/components/combobox/combobox.ts +11 -5
  181. package/src/components/datepicker/datepicker-single.ts +1 -1
  182. package/src/components/datepicker/datepicker.ts +5 -3
  183. package/src/components/fileupload/fileupload.ts +6 -1
  184. package/src/components/helptext/helptext.ts +3 -0
  185. package/src/components/input-wrapper/input-wrapper.test.ts +3 -3
  186. package/src/components/input-wrapper/input-wrapper.ts +31 -29
  187. package/src/components/input-wrapper/tri-state.test.ts +91 -0
  188. package/src/components/input-wrapper/wrapper-parity.test.ts +141 -0
  189. package/src/components/select/select.test.ts +8 -7
  190. package/src/components/select/select.ts +13 -5
  191. package/src/components/textarea/textarea.test.ts +6 -6
  192. package/src/components/textarea/textarea.ts +20 -11
  193. package/src/components/textinput/textinput.test.ts +6 -6
  194. package/src/components/textinput/textinput.ts +17 -11
  195. package/src/components/timepicker/timepicker.ts +12 -5
  196. package/dist/booleanish-B9Kf0nES.cjs +0 -1
  197. package/dist/combobox-IBOASGmG.cjs +0 -136
  198. package/dist/if-defined-DrwbxQOj.cjs +0 -1
  199. package/dist/input-wrapper-DPkkiG7S.cjs +0 -57
  200. package/dist/input-wrapper-fWV5P4MN.js +0 -126
  201. package/dist/select-CZvAW7W2.cjs +0 -50
  202. package/dist/textarea-sTcZxOIB.cjs +0 -47
@@ -1,8 +1,8 @@
1
- import { a as e, n as t, o as n, p as r, s as i } from "./element-BoJrqauR.js";
2
- import { n as a, t as o } from "./element-with-slot-mXLg8gg8.js";
3
- import { t as s } from "./if-defined-D0bnetLJ.js";
1
+ import { a as e, n as t, o as n, p as r, s as i } from "./element-8RsANDBG.js";
2
+ import { n as a, t as o } from "./element-with-slot-DFNWwYys.js";
3
+ import { t as s } from "./if-defined-DfH9X3nd.js";
4
4
  import { n as c, r as l, t as u } from "./consume-BiOhrhEy.js";
5
- import { n as d, t as f } from "./ref-WGS0u7i2.js";
5
+ import { n as d, t as f } from "./ref-CkGzlsAX.js";
6
6
  //#region src/components/tabs/tabs-context.ts
7
7
  var p = l(Symbol("pkt-tabs-context")), m = class extends o {
8
8
  constructor(...e) {
@@ -1,4 +1,4 @@
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");var i={name:`pkt-tag`,react:`PktTag`,"css-class":`pkt-tag`,isElement:!0,"dark-mode":!0,props:{size:{name:`Størrelse`,description:`Størrelsen på taggen`,required:!1,default:`medium`,type:[`small`,`medium`,`large`],category:`ui`},iconName:{name:`Ikon`,description:`Navnet på ikonet som skal vises i taggen`,type:`icon`,required:!1,category:`ui`},skin:{name:`Utseende`,description:`Utseendet til taggen`,required:!1,default:`blue`,type:[`blue`,`blue-light`,`blue-dark`,`green`,`red`,`beige`,`yellow`,`gray`],category:`ui`},closeTag:{name:`Lukk tag`,description:`Skal taggen ha en lukkeknapp?`,type:`boolean`,required:!1,default:!1,category:`ui`},textStyle:{name:`Tekststil`,description:`Stilen på teksten i taggen`,required:!1,default:`normal-text`,type:[`thin-text`,`normal-text`],category:`ui`},type:{name:`Type, dersom lukkeknapp`,description:`Type tag, brukes for å spesifisere om det er en knapp, submit eller reset`,required:!1,default:`button`,type:[`button`,`submit`,`reset`],category:`tech`},ariaLabel:{name:`aria-label`,description:`aria-label for taggen, brukes for tilgjengelighet`,type:`string`,required:!1,category:`accessibility`}},slots:{default:{description:`Teksten til tag`}}},a=class extends n.t{constructor(){super(),this.closeTag=i.props.closeTag.default,this.size=i.props.size.default,this.skin=i.props.skin.default,this.textStyle=null,this.iconName=void 0,this.type=i.props.type.default,this.ariaLabel=null,this.buttonTabindex=void 0,this._isClosed=!1,this._ariaDescription=null,this.close=e=>{this._isClosed=!0,this.dispatchEvent(new CustomEvent(`close`,{detail:{origin:e},bubbles:!1,composed:!0})),this.dispatchEvent(new CustomEvent(`on-close`,{detail:{origin:e},bubbles:!1,composed:!0}))},this._isClosed=!1}firstUpdated(e){if(super.firstUpdated(e),this.closeTag&&!this.ariaLabel){let e=this.querySelector(`button span, .pkt-tag > span`)?.textContent?.trim();e&&(this._ariaDescription=`Klikk for å fjerne ${e}`)}}render(){let i={"pkt-tag":!0,[`pkt-tag--${this.size}`]:!!this.size,[`pkt-tag--${this.skin}`]:!!this.skin,[`pkt-tag--${this.textStyle}`]:!!this.textStyle},a={"pkt-tag":!0,[`pkt-tag--${this.textStyle}`]:!!this.textStyle,[`pkt-tag--${this.size}`]:!!this.size,[`pkt-tag--${this.skin}`]:!!this.skin,"pkt-hide":this._isClosed};return this.closeTag?e.p`
1
+ const e=require("./element-DCm4GU7z.cjs"),t=require("./class-map-DzzW3MwB.cjs"),n=require("./element-with-slot-N79a3tub.cjs");require("./icon-BlJZpl2L.cjs");const r=require("./if-defined-h7sbeYue.cjs");var i={name:`pkt-tag`,react:`PktTag`,"css-class":`pkt-tag`,isElement:!0,"dark-mode":!0,props:{size:{name:`Størrelse`,description:`Størrelsen på taggen`,required:!1,default:`medium`,type:[`small`,`medium`,`large`],category:`ui`},iconName:{name:`Ikon`,description:`Navnet på ikonet som skal vises i taggen`,type:`icon`,required:!1,category:`ui`},skin:{name:`Utseende`,description:`Utseendet til taggen`,required:!1,default:`blue`,type:[`blue`,`blue-light`,`blue-dark`,`green`,`red`,`beige`,`yellow`,`gray`],category:`ui`},closeTag:{name:`Lukk tag`,description:`Skal taggen ha en lukkeknapp?`,type:`boolean`,required:!1,default:!1,category:`ui`},textStyle:{name:`Tekststil`,description:`Stilen på teksten i taggen`,required:!1,default:`normal-text`,type:[`thin-text`,`normal-text`],category:`ui`},type:{name:`Type, dersom lukkeknapp`,description:`Type tag, brukes for å spesifisere om det er en knapp, submit eller reset`,required:!1,default:`button`,type:[`button`,`submit`,`reset`],category:`tech`},ariaLabel:{name:`aria-label`,description:`aria-label for taggen, brukes for tilgjengelighet`,type:`string`,required:!1,category:`accessibility`}},slots:{default:{description:`Teksten til tag`}}},a=class extends n.t{constructor(){super(),this.closeTag=i.props.closeTag.default,this.size=i.props.size.default,this.skin=i.props.skin.default,this.textStyle=null,this.iconName=void 0,this.type=i.props.type.default,this.ariaLabel=null,this.buttonTabindex=void 0,this._isClosed=!1,this._ariaDescription=null,this.close=e=>{this._isClosed=!0,this.dispatchEvent(new CustomEvent(`close`,{detail:{origin:e},bubbles:!1,composed:!0})),this.dispatchEvent(new CustomEvent(`on-close`,{detail:{origin:e},bubbles:!1,composed:!0}))},this._isClosed=!1}firstUpdated(e){if(super.firstUpdated(e),this.closeTag&&!this.ariaLabel){let e=this.querySelector(`button span, .pkt-tag > span`)?.textContent?.trim();e&&(this._ariaDescription=`Klikk for å fjerne ${e}`)}}render(){let i={"pkt-tag":!0,[`pkt-tag--${this.size}`]:!!this.size,[`pkt-tag--${this.skin}`]:!!this.skin,[`pkt-tag--${this.textStyle}`]:!!this.textStyle},a={"pkt-tag":!0,[`pkt-tag--${this.textStyle}`]:!!this.textStyle,[`pkt-tag--${this.size}`]:!!this.size,[`pkt-tag--${this.skin}`]:!!this.skin,"pkt-hide":this._isClosed};return this.closeTag?e.p`
2
2
  <button
3
3
  class=${t.t(a)}
4
4
  type=${this.type}
@@ -1,8 +1,8 @@
1
- import { a as e, n as t, o as n, p as r, s as i } from "./element-BoJrqauR.js";
2
- import { t as a } from "./class-map-CAQCRB1W.js";
3
- import { n as o, t as s } from "./element-with-slot-mXLg8gg8.js";
4
- import "./icon-DGFEIlco.js";
5
- import { t as c } from "./if-defined-D0bnetLJ.js";
1
+ import { a as e, n as t, o as n, p as r, s as i } from "./element-8RsANDBG.js";
2
+ import { t as a } from "./class-map-BRV7-mcj.js";
3
+ import { n as o, t as s } from "./element-with-slot-DFNWwYys.js";
4
+ import "./icon-8ZKcRaGi.js";
5
+ import { t as c } from "./if-defined-DfH9X3nd.js";
6
6
  var l = {
7
7
  name: "pkt-tag",
8
8
  react: "PktTag",
@@ -0,0 +1,49 @@
1
+ const e=require("./element-DCm4GU7z.cjs"),t=require("./class-map-DzzW3MwB.cjs"),n=require("./directive-helpers-CEtfS19L.cjs"),r=require("./element-with-slot-N79a3tub.cjs");require("./icon-BlJZpl2L.cjs");const i=require("./if-defined-h7sbeYue.cjs"),a=require("./ref-CYXJQuCZ.cjs"),o=require("./input-element-CmFzbxiZ.cjs"),s=require("./input-wrapper-CohL8Onb.cjs");var c=e.c(class extends e.l{constructor(t){if(super(t),t.type!==e.u.PROPERTY&&t.type!==e.u.ATTRIBUTE&&t.type!==e.u.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!n.i(t))throw Error("`live` bindings can only contain a single expression")}render(e){return e}update(t,[r]){if(r===e.f||r===e.d)return r;let i=t.element,a=t.name;if(t.type===e.u.PROPERTY){if(r===i[a])return e.f}else if(t.type===e.u.BOOLEAN_ATTRIBUTE){if(!!r===i.hasAttribute(a))return e.f}else if(t.type===e.u.ATTRIBUTE&&i.getAttribute(a)===r+``)return e.f;return n.r(t),r}}),l=class extends o.t{constructor(...e){super(...e),this.inputRef=a.t(),this.value=``,this.autocomplete=`off`,this.rows=null,this.cols=null,this.counterCurrent=0}attributeChangedCallback(e,t,n){e===`value`&&this.value!==t&&(this.counterCurrent=n?n.length:0),super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`,`pkt-textarea`),e.has(`value`)&&(this.counterCurrent=this.value?.length||0,this.valueChanged(this.value,e.get(`value`))),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}render(){let n=this.effectiveCounter(this.counterMaxLength>0),o=t.t({"pkt-input":!0,[`pkt-input--${this.inputSize}`]:!0,"pkt-input--fullwidth":this.fullwidth,"pkt-input--counter-error":n&&this.counterMaxLength>0&&this.value.length>this.counterMaxLength}),l=this.ariaLabelledby||`${this.id}-input-label`;return e.p`<pkt-input-wrapper
2
+ label=${this.label}
3
+ ?counter=${n}
4
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
5
+ ?disabled=${this.disabled}
6
+ ?hasError=${this.hasError}
7
+ ?inline=${this.inline}
8
+ ?optionalTag=${this.optionalTag}
9
+ ?required=${this.required}
10
+ ?requiredTag=${this.requiredTag}
11
+ useWrapper=${this.useWrapper}
12
+ .ariaDescribedby=${this.ariaDescribedby}
13
+ .counterCurrent=${this.value?.length??0}
14
+ .counterMaxLength=${this.counterMaxLength}
15
+ .errorMessage=${this.errorMessage}
16
+ .forId="${this.id+`-input`}"
17
+ .helptext=${this.helptext}
18
+ .helptextDropdown=${this.helptextDropdown}
19
+ .helptextDropdownButton=${this.helptextDropdownButton}
20
+ .optionalText=${this.optionalText}
21
+ .requiredText=${this.requiredText}
22
+ .tagText=${this.tagText}
23
+ .size=${this.inputSize}
24
+ >
25
+ <div class="pkt-contents" slot="helptext">${r.n(this,`helptext`)}</div>
26
+ <textarea
27
+ ${a.n(this.inputRef)}
28
+ class=${o}
29
+ id=${this.id+`-input`}
30
+ name=${(this.name||this.id)+`-input`}
31
+ placeholder=${i.t(this.placeholder)}
32
+ .value=${c(this.value)}
33
+ minlength=${i.t(this.minlength)}
34
+ maxlength=${i.t(this.maxlength)}
35
+ ?readonly=${this.readonly}
36
+ autocomplete=${this.autocomplete}
37
+ aria-labelledby=${l}
38
+ aria-invalid=${this.hasError}
39
+ aria-errormessage=${i.t(this.hasError?`${this.id}-input-error`:void 0)}
40
+ aria-describedby=${i.t(s.r({id:this.id+`-input`,hasHelptext:!!this.helptext,hasCounter:n,ariaDescribedby:this.ariaDescribedby}))}
41
+ rows=${i.t(this.rows??void 0)}
42
+ cols=${i.t(this.cols??void 0)}
43
+ ?disabled=${this.disabled}
44
+ @input=${e=>{this.value=e.target.value,this.onInput(),e.stopImmediatePropagation()}}
45
+ @change=${e=>{e.stopImmediatePropagation()}}
46
+ @focus=${e=>{this.onFocus(),e.stopImmediatePropagation()}}
47
+ @blur=${e=>{this.value=e.target.value,this.onBlur(),e.stopImmediatePropagation()}}
48
+ ></textarea>
49
+ </pkt-input-wrapper>`}};e.n([e.o({type:String,reflect:!0})],l.prototype,`value`,void 0),e.n([e.o({type:String})],l.prototype,`autocomplete`,void 0),e.n([e.o({type:Number})],l.prototype,`rows`,void 0),e.n([e.o({type:Number})],l.prototype,`cols`,void 0),e.n([e.a()],l.prototype,`counterCurrent`,void 0);try{e.s(`pkt-textarea`)(l)}catch{console.warn(`Forsøker å definere <pkt-textarea>, men den er allerede definert`)}var u=l;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
@@ -1,14 +1,14 @@
1
- import { a as e, c as t, d as n, f as r, l as i, n as a, o, p as s, s as c, u as l } from "./element-BoJrqauR.js";
2
- import { t as u } from "./class-map-CAQCRB1W.js";
3
- import { i as d, r as f } from "./directive-helpers-DIF5DwN4.js";
4
- import { n as p } from "./element-with-slot-mXLg8gg8.js";
5
- import "./icon-DGFEIlco.js";
6
- import { t as m } from "./if-defined-D0bnetLJ.js";
7
- import { n as h, t as g } from "./ref-WGS0u7i2.js";
8
- import { t as _ } from "./input-element-C0RnXi-J.js";
9
- import "./input-wrapper-fWV5P4MN.js";
1
+ import { a as e, c as t, d as n, f as r, l as i, n as a, o, p as s, s as c, u as l } from "./element-8RsANDBG.js";
2
+ import { t as u } from "./class-map-BRV7-mcj.js";
3
+ import { i as d, r as f } from "./directive-helpers-BXtu2yHt.js";
4
+ import { n as p } from "./element-with-slot-DFNWwYys.js";
5
+ import "./icon-8ZKcRaGi.js";
6
+ import { t as m } from "./if-defined-DfH9X3nd.js";
7
+ import { n as h, t as g } from "./ref-CkGzlsAX.js";
8
+ import { t as _ } from "./input-element-DPXwOJeT.js";
9
+ import { r as v } from "./input-wrapper-CrJMQj_L.js";
10
10
  //#region node_modules/lit/node_modules/lit-html/directives/live.js
11
- var v = t(class extends i {
11
+ var y = t(class extends i {
12
12
  constructor(e) {
13
13
  if (super(e), e.type !== l.PROPERTY && e.type !== l.ATTRIBUTE && e.type !== l.BOOLEAN_ATTRIBUTE) throw Error("The `live` directive is not allowed on child or event bindings");
14
14
  if (!d(e)) throw Error("`live` bindings can only contain a single expression");
@@ -26,26 +26,27 @@ var v = t(class extends i {
26
26
  } else if (e.type === l.ATTRIBUTE && i.getAttribute(a) === t + "") return r;
27
27
  return f(e), t;
28
28
  }
29
- }), y = class extends _ {
29
+ }), b = class extends _ {
30
30
  constructor(...e) {
31
- super(...e), this.inputRef = g(), this.value = "", this.autocomplete = "off", this.rows = null, this.counterCurrent = 0;
31
+ super(...e), this.inputRef = g(), this.value = "", this.autocomplete = "off", this.rows = null, this.cols = null, this.counterCurrent = 0;
32
32
  }
33
33
  attributeChangedCallback(e, t, n) {
34
34
  e === "value" && this.value !== t && (this.counterCurrent = n ? n.length : 0), super.attributeChangedCallback(e, t, n);
35
35
  }
36
36
  updated(e) {
37
- super.updated(e), e.has("value") && (this.counterCurrent = this.value?.length || 0, this.valueChanged(this.value, e.get("value"))), e.has("id") && !this.name && this.id && (this.name = this.id);
37
+ super.updated(e), this.classList.add("pkt-textinput", "pkt-textarea"), e.has("value") && (this.counterCurrent = this.value?.length || 0, this.valueChanged(this.value, e.get("value"))), e.has("id") && !this.name && this.id && (this.name = this.id);
38
38
  }
39
39
  render() {
40
- let e = u({
40
+ let e = this.effectiveCounter(this.counterMaxLength > 0), t = u({
41
41
  "pkt-input": !0,
42
42
  [`pkt-input--${this.inputSize}`]: !0,
43
43
  "pkt-input--fullwidth": this.fullwidth,
44
- "pkt-input--counter-error": this.counter && this.counterMaxLength && this.value.length && this.value.length > this.counterMaxLength
45
- }), t = this.ariaLabelledby || `${this.id}-input-label`;
44
+ "pkt-input--counter-error": e && this.counterMaxLength > 0 && this.value.length > this.counterMaxLength
45
+ }), n = this.ariaLabelledby || `${this.id}-input-label`;
46
46
  return s`<pkt-input-wrapper
47
47
  label=${this.label}
48
- ?counter=${this.counter}
48
+ ?counter=${e}
49
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
49
50
  ?disabled=${this.disabled}
50
51
  ?hasError=${this.hasError}
51
52
  ?inline=${this.inline}
@@ -53,8 +54,8 @@ var v = t(class extends i {
53
54
  ?required=${this.required}
54
55
  ?requiredTag=${this.requiredTag}
55
56
  useWrapper=${this.useWrapper}
56
- .ariaDescribedBy=${this.ariaDescribedBy}
57
- .counterCurrent=${this.counterCurrent}
57
+ .ariaDescribedby=${this.ariaDescribedby}
58
+ .counterCurrent=${this.value?.length ?? 0}
58
59
  .counterMaxLength=${this.counterMaxLength}
59
60
  .errorMessage=${this.errorMessage}
60
61
  .forId="${this.id + "-input"}"
@@ -65,24 +66,30 @@ var v = t(class extends i {
65
66
  .requiredText=${this.requiredText}
66
67
  .tagText=${this.tagText}
67
68
  .size=${this.inputSize}
68
- class="pkt-textarea"
69
69
  >
70
70
  <div class="pkt-contents" slot="helptext">${p(this, "helptext")}</div>
71
71
  <textarea
72
72
  ${h(this.inputRef)}
73
- class=${e}
73
+ class=${t}
74
74
  id=${this.id + "-input"}
75
75
  name=${(this.name || this.id) + "-input"}
76
76
  placeholder=${m(this.placeholder)}
77
- .value=${v(this.value)}
77
+ .value=${y(this.value)}
78
78
  minlength=${m(this.minlength)}
79
79
  maxlength=${m(this.maxlength)}
80
80
  ?readonly=${this.readonly}
81
81
  autocomplete=${this.autocomplete}
82
- aria-labelledby=${t}
82
+ aria-labelledby=${n}
83
83
  aria-invalid=${this.hasError}
84
- aria-errormessage=${`${this.id}-error`}
84
+ aria-errormessage=${m(this.hasError ? `${this.id}-input-error` : void 0)}
85
+ aria-describedby=${m(v({
86
+ id: this.id + "-input",
87
+ hasHelptext: !!this.helptext,
88
+ hasCounter: e,
89
+ ariaDescribedby: this.ariaDescribedby
90
+ }))}
85
91
  rows=${m(this.rows ?? void 0)}
92
+ cols=${m(this.cols ?? void 0)}
86
93
  ?disabled=${this.disabled}
87
94
  @input=${(e) => {
88
95
  this.value = e.target.value, this.onInput(), e.stopImmediatePropagation();
@@ -103,14 +110,14 @@ var v = t(class extends i {
103
110
  a([o({
104
111
  type: String,
105
112
  reflect: !0
106
- })], y.prototype, "value", void 0), a([o({ type: String })], y.prototype, "autocomplete", void 0), a([o({ type: Number })], y.prototype, "rows", void 0), a([e()], y.prototype, "counterCurrent", void 0);
113
+ })], b.prototype, "value", void 0), a([o({ type: String })], b.prototype, "autocomplete", void 0), a([o({ type: Number })], b.prototype, "rows", void 0), a([o({ type: Number })], b.prototype, "cols", void 0), a([e()], b.prototype, "counterCurrent", void 0);
107
114
  try {
108
- c("pkt-textarea")(y);
115
+ c("pkt-textarea")(b);
109
116
  } catch {
110
117
  console.warn("Forsøker å definere <pkt-textarea>, men den er allerede definert");
111
118
  }
112
119
  //#endregion
113
120
  //#region src/components/textarea/index.ts
114
- var b = y;
121
+ var x = b;
115
122
  //#endregion
116
- export { y as n, b as t };
123
+ export { b as n, x as t };
@@ -1,13 +1,13 @@
1
- import { a as e, d as t, n, o as r, p as i, s as a } from "./element-BoJrqauR.js";
2
- import { t as o } from "./class-map-CAQCRB1W.js";
3
- import { n as s } from "./element-with-slot-mXLg8gg8.js";
4
- import "./icon-DGFEIlco.js";
5
- import { t as c } from "./if-defined-D0bnetLJ.js";
6
- import { n as l, t as u } from "./ref-WGS0u7i2.js";
7
- import { t as d } from "./input-element-C0RnXi-J.js";
8
- import "./input-wrapper-fWV5P4MN.js";
1
+ import { a as e, d as t, n, o as r, p as i, s as a } from "./element-8RsANDBG.js";
2
+ import { t as o } from "./class-map-BRV7-mcj.js";
3
+ import { n as s } from "./element-with-slot-DFNWwYys.js";
4
+ import "./icon-8ZKcRaGi.js";
5
+ import { t as c } from "./if-defined-DfH9X3nd.js";
6
+ import { n as l, t as u } from "./ref-CkGzlsAX.js";
7
+ import { t as d } from "./input-element-DPXwOJeT.js";
8
+ import { r as f } from "./input-wrapper-CrJMQj_L.js";
9
9
  //#region src/components/textinput/textinput.ts
10
- var f = class extends d {
10
+ var p = class extends d {
11
11
  constructor(...e) {
12
12
  super(...e), this.inputRef = u(), this.value = "", this.type = "text", this.size = null, this.autocomplete = null, this.iconNameRight = null, this.prefix = null, this.suffix = null, this.omitSearchIcon = !1, this.counterCurrent = 0;
13
13
  }
@@ -15,29 +15,29 @@ var f = class extends d {
15
15
  e === "value" && this.value !== t && (this.counterCurrent = n ? n.length : 0), super.attributeChangedCallback(e, t, n);
16
16
  }
17
17
  updated(e) {
18
- super.updated(e), e.has("value") && (this.counterCurrent = this.value?.length || 0, this.valueChanged(this.value, e.get("value"))), e.has("id") && !this.name && this.id && (this.name = this.id);
18
+ super.updated(e), this.classList.add("pkt-textinput"), e.has("value") && (this.counterCurrent = this.value?.length || 0, this.valueChanged(this.value, e.get("value"))), e.has("id") && !this.name && this.id && (this.name = this.id);
19
19
  }
20
20
  render() {
21
- let e = this.type === "search" && !this.iconNameRight && !this.omitSearchIcon, n = o({
21
+ let e = this.type === "search" && !this.iconNameRight && !this.omitSearchIcon, n = this.effectiveCounter(this.counterMaxLength > 0), r = o({
22
22
  "pkt-input": !0,
23
23
  [`pkt-input--${this.inputSize}`]: !0,
24
24
  "pkt-input--fullwidth": this.fullwidth,
25
- "pkt-input--counter-error": this.counter && this.counterMaxLength && this.value.length && this.value.length > this.counterMaxLength
26
- }), r = this.ariaLabelledby || `${this.id}-input-label`;
25
+ "pkt-input--counter-error": n && this.counterMaxLength > 0 && this.value.length > this.counterMaxLength
26
+ }), a = this.ariaLabelledby || `${this.id}-input-label`;
27
27
  return i`
28
28
  <pkt-input-wrapper
29
29
  label="${this.label}"
30
- ?counter=${this.counter}
30
+ ?counter=${n}
31
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
31
32
  ?disabled=${this.disabled}
32
33
  ?hasError=${this.hasError}
33
- ?hasFieldset=${this.hasFieldset}
34
34
  ?inline=${this.inline}
35
35
  ?optionalTag=${this.optionalTag}
36
36
  ?required=${this.required}
37
37
  ?requiredTag=${this.requiredTag}
38
38
  useWrapper=${this.useWrapper}
39
- .ariaDescribedBy=${this.ariaDescribedBy}
40
- .counterCurrent=${this.counterCurrent}
39
+ .ariaDescribedby=${this.ariaDescribedby}
40
+ .counterCurrent=${this.value?.length ?? 0}
41
41
  .counterMaxLength=${this.counterMaxLength}
42
42
  .errorMessage=${this.errorMessage}
43
43
  .forId="${this.id + "-input"}"
@@ -48,19 +48,18 @@ var f = class extends d {
48
48
  .requiredText=${this.requiredText}
49
49
  .tagText=${this.tagText}
50
50
  .size=${this.inputSize}
51
- class="pkt-textinput"
52
51
  >
53
52
  <div class="pkt-contents" slot="helptext">${s(this, "helptext")}</div>
54
53
  <div class=${`pkt-input__container pkt-input__container--${this.inputSize}`}>
55
54
  ${this.prefix ? i`<div class="pkt-input-prefix">${this.prefix}</div>` : t}
56
55
  <input
57
56
  ${l(this.inputRef)}
58
- class=${n}
57
+ class=${r}
59
58
  type=${this.type}
60
59
  name=${(this.name || this.id) + "-input"}
61
60
  id=${this.id + "-input"}
62
61
  placeholder=${c(this.placeholder)}
63
- aria-labelledby=${r}
62
+ aria-labelledby=${a}
64
63
  autocomplete=${this.autocomplete || "off"}
65
64
  minlength=${c(this.minlength || void 0)}
66
65
  maxlength=${c(this.maxlength || void 0)}
@@ -72,7 +71,13 @@ var f = class extends d {
72
71
  .value=${this.value}
73
72
  ?disabled=${this.disabled}
74
73
  aria-invalid=${this.hasError}
75
- aria-errormessage=${`${this.id}-error`}
74
+ aria-errormessage=${c(this.hasError ? `${this.id}-input-error` : void 0)}
75
+ aria-describedby=${c(f({
76
+ id: this.id + "-input",
77
+ hasHelptext: !!this.helptext,
78
+ hasCounter: n,
79
+ ariaDescribedby: this.ariaDescribedby
80
+ }))}
76
81
  @input=${(e) => {
77
82
  this.value = e.target.value, this.onInput(), e.stopImmediatePropagation();
78
83
  }}
@@ -113,14 +118,14 @@ var f = class extends d {
113
118
  n([r({
114
119
  type: String,
115
120
  reflect: !0
116
- })], f.prototype, "value", void 0), n([r({ type: String })], f.prototype, "type", void 0), n([r({ type: Number })], f.prototype, "size", void 0), n([r({ type: String })], f.prototype, "autocomplete", void 0), n([r({ type: String })], f.prototype, "iconNameRight", void 0), n([r({ type: String })], f.prototype, "prefix", void 0), n([r({ type: String })], f.prototype, "suffix", void 0), n([r({ type: Boolean })], f.prototype, "omitSearchIcon", void 0), n([e()], f.prototype, "counterCurrent", void 0);
121
+ })], p.prototype, "value", void 0), n([r({ type: String })], p.prototype, "type", void 0), n([r({ type: Number })], p.prototype, "size", void 0), n([r({ type: String })], p.prototype, "autocomplete", void 0), n([r({ type: String })], p.prototype, "iconNameRight", void 0), n([r({ type: String })], p.prototype, "prefix", void 0), n([r({ type: String })], p.prototype, "suffix", void 0), n([r({ type: Boolean })], p.prototype, "omitSearchIcon", void 0), n([e()], p.prototype, "counterCurrent", void 0);
117
122
  try {
118
- a("pkt-textinput")(f);
123
+ a("pkt-textinput")(p);
119
124
  } catch {
120
125
  console.warn("Forsøker å definere <pkt-textinput>, men den er allerede definert");
121
126
  }
122
127
  //#endregion
123
128
  //#region src/components/textinput/index.ts
124
- var p = f;
129
+ var m = p;
125
130
  //#endregion
126
- export { f as n, p as t };
131
+ export { p as n, m as t };
@@ -1,17 +1,17 @@
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"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-B0qLbEdF.cjs");require("./input-wrapper-DPkkiG7S.cjs");var o=class extends a.t{constructor(...e){super(...e),this.inputRef=i.t(),this.value=``,this.type=`text`,this.size=null,this.autocomplete=null,this.iconNameRight=null,this.prefix=null,this.suffix=null,this.omitSearchIcon=!1,this.counterCurrent=0}attributeChangedCallback(e,t,n){e===`value`&&this.value!==t&&(this.counterCurrent=n?n.length:0),super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0,this.valueChanged(this.value,e.get(`value`))),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}render(){let a=this.type===`search`&&!this.iconNameRight&&!this.omitSearchIcon,o=t.t({"pkt-input":!0,[`pkt-input--${this.inputSize}`]:!0,"pkt-input--fullwidth":this.fullwidth,"pkt-input--counter-error":this.counter&&this.counterMaxLength&&this.value.length&&this.value.length>this.counterMaxLength}),s=this.ariaLabelledby||`${this.id}-input-label`;return e.p`
1
+ const e=require("./element-DCm4GU7z.cjs"),t=require("./class-map-DzzW3MwB.cjs"),n=require("./element-with-slot-N79a3tub.cjs");require("./icon-BlJZpl2L.cjs");const r=require("./if-defined-h7sbeYue.cjs"),i=require("./ref-CYXJQuCZ.cjs"),a=require("./input-element-CmFzbxiZ.cjs"),o=require("./input-wrapper-CohL8Onb.cjs");var s=class extends a.t{constructor(...e){super(...e),this.inputRef=i.t(),this.value=``,this.type=`text`,this.size=null,this.autocomplete=null,this.iconNameRight=null,this.prefix=null,this.suffix=null,this.omitSearchIcon=!1,this.counterCurrent=0}attributeChangedCallback(e,t,n){e===`value`&&this.value!==t&&(this.counterCurrent=n?n.length:0),super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`),e.has(`value`)&&(this.counterCurrent=this.value?.length||0,this.valueChanged(this.value,e.get(`value`))),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}render(){let a=this.type===`search`&&!this.iconNameRight&&!this.omitSearchIcon,s=this.effectiveCounter(this.counterMaxLength>0),c=t.t({"pkt-input":!0,[`pkt-input--${this.inputSize}`]:!0,"pkt-input--fullwidth":this.fullwidth,"pkt-input--counter-error":s&&this.counterMaxLength>0&&this.value.length>this.counterMaxLength}),l=this.ariaLabelledby||`${this.id}-input-label`;return e.p`
2
2
  <pkt-input-wrapper
3
3
  label="${this.label}"
4
- ?counter=${this.counter}
4
+ ?counter=${s}
5
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
5
6
  ?disabled=${this.disabled}
6
7
  ?hasError=${this.hasError}
7
- ?hasFieldset=${this.hasFieldset}
8
8
  ?inline=${this.inline}
9
9
  ?optionalTag=${this.optionalTag}
10
10
  ?required=${this.required}
11
11
  ?requiredTag=${this.requiredTag}
12
12
  useWrapper=${this.useWrapper}
13
- .ariaDescribedBy=${this.ariaDescribedBy}
14
- .counterCurrent=${this.counterCurrent}
13
+ .ariaDescribedby=${this.ariaDescribedby}
14
+ .counterCurrent=${this.value?.length??0}
15
15
  .counterMaxLength=${this.counterMaxLength}
16
16
  .errorMessage=${this.errorMessage}
17
17
  .forId="${this.id+`-input`}"
@@ -22,19 +22,18 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
22
22
  .requiredText=${this.requiredText}
23
23
  .tagText=${this.tagText}
24
24
  .size=${this.inputSize}
25
- class="pkt-textinput"
26
25
  >
27
26
  <div class="pkt-contents" slot="helptext">${n.n(this,`helptext`)}</div>
28
27
  <div class=${`pkt-input__container pkt-input__container--${this.inputSize}`}>
29
28
  ${this.prefix?e.p`<div class="pkt-input-prefix">${this.prefix}</div>`:e.d}
30
29
  <input
31
30
  ${i.n(this.inputRef)}
32
- class=${o}
31
+ class=${c}
33
32
  type=${this.type}
34
33
  name=${(this.name||this.id)+`-input`}
35
34
  id=${this.id+`-input`}
36
35
  placeholder=${r.t(this.placeholder)}
37
- aria-labelledby=${s}
36
+ aria-labelledby=${l}
38
37
  autocomplete=${this.autocomplete||`off`}
39
38
  minlength=${r.t(this.minlength||void 0)}
40
39
  maxlength=${r.t(this.maxlength||void 0)}
@@ -46,7 +45,8 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
46
45
  .value=${this.value}
47
46
  ?disabled=${this.disabled}
48
47
  aria-invalid=${this.hasError}
49
- aria-errormessage=${`${this.id}-error`}
48
+ aria-errormessage=${r.t(this.hasError?`${this.id}-input-error`:void 0)}
49
+ aria-describedby=${r.t(o.r({id:this.id+`-input`,hasHelptext:!!this.helptext,hasCounter:s,ariaDescribedby:this.ariaDescribedby}))}
50
50
  @input=${e=>{this.value=e.target.value,this.onInput(),e.stopImmediatePropagation()}}
51
51
  @change=${e=>{e.stopImmediatePropagation()}}
52
52
  @focus=${e=>{this.onFocus(),e.stopImmediatePropagation()}}
@@ -68,4 +68,4 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
68
68
  ${!this.suffix&&a?e.p`<pkt-icon class="pkt-input-icon" name="magnifying-glass-big"></pkt-icon>`:e.d}
69
69
  </div>
70
70
  </pkt-input-wrapper>
71
- `}};e.n([e.o({type:String,reflect:!0})],o.prototype,`value`,void 0),e.n([e.o({type:String})],o.prototype,`type`,void 0),e.n([e.o({type:Number})],o.prototype,`size`,void 0),e.n([e.o({type:String})],o.prototype,`autocomplete`,void 0),e.n([e.o({type:String})],o.prototype,`iconNameRight`,void 0),e.n([e.o({type:String})],o.prototype,`prefix`,void 0),e.n([e.o({type:String})],o.prototype,`suffix`,void 0),e.n([e.o({type:Boolean})],o.prototype,`omitSearchIcon`,void 0),e.n([e.a()],o.prototype,`counterCurrent`,void 0);try{e.s(`pkt-textinput`)(o)}catch{console.warn(`Forsøker å definere <pkt-textinput>, men den er allerede definert`)}var s=o;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
71
+ `}};e.n([e.o({type:String,reflect:!0})],s.prototype,`value`,void 0),e.n([e.o({type:String})],s.prototype,`type`,void 0),e.n([e.o({type:Number})],s.prototype,`size`,void 0),e.n([e.o({type:String})],s.prototype,`autocomplete`,void 0),e.n([e.o({type:String})],s.prototype,`iconNameRight`,void 0),e.n([e.o({type:String})],s.prototype,`prefix`,void 0),e.n([e.o({type:String})],s.prototype,`suffix`,void 0),e.n([e.o({type:Boolean})],s.prototype,`omitSearchIcon`,void 0),e.n([e.a()],s.prototype,`counterCurrent`,void 0);try{e.s(`pkt-textinput`)(s)}catch{console.warn(`Forsøker å definere <pkt-textinput>, men den er allerede definert`)}var c=s;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
@@ -1,11 +1,11 @@
1
- import { a as e, d as t, n, o as r, p as i, r as a, s as o } from "./element-BoJrqauR.js";
2
- import { t as s } from "./class-map-CAQCRB1W.js";
3
- import { n as c } from "./element-with-slot-mXLg8gg8.js";
4
- import "./icon-DGFEIlco.js";
5
- import { t as l } from "./if-defined-D0bnetLJ.js";
6
- import { n as u, t as d } from "./ref-WGS0u7i2.js";
7
- import { t as f } from "./input-element-C0RnXi-J.js";
8
- import "./input-wrapper-fWV5P4MN.js";
1
+ import { a as e, d as t, n, o as r, p as i, r as a, s as o } from "./element-8RsANDBG.js";
2
+ import { t as s } from "./class-map-BRV7-mcj.js";
3
+ import { n as c } from "./element-with-slot-DFNWwYys.js";
4
+ import "./icon-8ZKcRaGi.js";
5
+ import { t as l } from "./if-defined-DfH9X3nd.js";
6
+ import { n as u, t as d } from "./ref-CkGzlsAX.js";
7
+ import { t as f } from "./input-element-DPXwOJeT.js";
8
+ import "./input-wrapper-CrJMQj_L.js";
9
9
  //#region ../../shared-utils/timepicker/time-utils.ts
10
10
  var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && parseInt(e.slice(3), 10) <= 59, m = (e) => {
11
11
  let [t, n] = e.split(":").map(Number);
@@ -182,7 +182,11 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
182
182
  _setAriaInvalid(e) {
183
183
  if (!this.touched && e) return;
184
184
  let t = this.hoursInputRef.value, n = this.minutesInputRef.value;
185
- e ? (t?.setAttribute("aria-invalid", "true"), n?.setAttribute("aria-invalid", "true")) : (t?.removeAttribute("aria-invalid"), n?.removeAttribute("aria-invalid"));
185
+ if (e) t?.setAttribute("aria-invalid", "true"), n?.setAttribute("aria-invalid", "true");
186
+ else {
187
+ if (this.hasError) return;
188
+ t?.removeAttribute("aria-invalid"), n?.removeAttribute("aria-invalid");
189
+ }
186
190
  }
187
191
  connectedCallback() {
188
192
  super.connectedCallback(), this.addEventListener("focusin", this._handleComponentFocusIn), this.addEventListener("focusout", this._handleComponentFocusOut), document.addEventListener("click", this._outsideClickHandler);
@@ -194,7 +198,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
194
198
  super.willUpdate(e), e.has("value") && this._syncDisplayFromValue();
195
199
  }
196
200
  updated(e) {
197
- super.updated(e), this.classList.toggle("pkt-timepicker--stepper", this.stepArrows), this.classList.toggle("pkt-timepicker--fullwidth", this.fullwidth), this.classList.toggle("pkt-timepicker--medium", this.inputSize === "medium"), this.classList.toggle("pkt-timepicker--small", this.inputSize === "small"), this.classList.toggle("pkt-timepicker--xsmall", this.inputSize === "xsmall"), e.has("step") && this.step !== null && !this._isValidStep(this.step) && console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`);
201
+ super.updated(e), this.classList.add("pkt-timepicker"), this.classList.toggle("pkt-timepicker--stepper", this.stepArrows), this.classList.toggle("pkt-timepicker--fullwidth", this.fullwidth), this.classList.toggle("pkt-timepicker--medium", this.inputSize === "medium"), this.classList.toggle("pkt-timepicker--small", this.inputSize === "small"), this.classList.toggle("pkt-timepicker--xsmall", this.inputSize === "xsmall"), e.has("step") && this.step !== null && !this._isValidStep(this.step) && console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`);
198
202
  }
199
203
  formResetCallback() {
200
204
  super.formResetCallback(), this._hours = "", this._minutes = "", this._isOpen = !1;
@@ -356,6 +360,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
356
360
  aria-label=${r}
357
361
  role="spinbutton"
358
362
  aria-invalid=${this.hasError ? "true" : t}
363
+ aria-errormessage=${this.hasError ? `${this.id}-hours-error` : t}
359
364
  aria-valuemin="0"
360
365
  aria-valuemax="23"
361
366
  aria-valuenow=${this._hours === "" ? t : this._hours}
@@ -384,6 +389,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
384
389
  aria-label=${a}
385
390
  role="spinbutton"
386
391
  aria-invalid=${this.hasError ? "true" : t}
392
+ aria-errormessage=${this.hasError ? `${this.id}-hours-error` : t}
387
393
  aria-valuemin="0"
388
394
  aria-valuemax="59"
389
395
  aria-valuenow=${this._minutes === "" ? t : this._minutes}
@@ -457,12 +463,13 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
457
463
  ?disabled=${this.disabled}
458
464
  ?fullwidth=${this.fullwidth}
459
465
  ?hasError=${this.hasError}
466
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
460
467
  ?inline=${this.inline}
461
468
  ?optionalTag=${this.optionalTag}
462
469
  ?required=${this.required}
463
470
  ?requiredTag=${this.requiredTag}
464
471
  useWrapper=${this.useWrapper}
465
- .ariaDescribedBy=${this.ariaDescribedBy}
472
+ .ariaDescribedby=${this.ariaDescribedby}
466
473
  .errorMessage=${this.errorMessage}
467
474
  .forId="${this.id + "-hours"}"
468
475
  .helptext=${this.helptext}
@@ -1,4 +1,4 @@
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"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-B0qLbEdF.cjs");require("./input-wrapper-DPkkiG7S.cjs");var o=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,s=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},c=e=>e?Math.max(1,Math.round(e/60)):1,l=(e,t)=>{let n=e?parseInt(String(e).split(`:`)[0],10):0,r=t?parseInt(String(t).split(`:`)[0],10):23;return Array.from({length:r-n+1},(e,t)=>t+n)},u=e=>{let t=c(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},d=(e,t,n,r)=>{let i=e===``?n===1?0:23:parseInt(e,10),a=t===``?n===1?0:Math.floor(59/r)*r:parseInt(t,10);return a+=n*r,a>59?(a=0,i=(i+1)%24):a<0&&(a=Math.floor(59/r)*r,i=(i-1+24)%24),{hours:String(i).padStart(2,`0`),minutes:String(a).padStart(2,`0`)}},f=class extends a.t{constructor(...e){super(...e),this.hiddenInputRef=i.t(),this.hoursInputRef=i.t(),this.minutesInputRef=i.t(),this.buttonRef=i.t(),this.value=``,this.hidePicker=!1,this.stepArrows=!1,this._hours=``,this._minutes=``,this._isOpen=!1,this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._hasFocus=!1,this._outsideClickHandler=e=>{this.contains(e.target)||this._closePopup()},this._handleComponentFocusIn=()=>{this._hasFocus||(this._hasFocus=!0,this.onFocus())},this._handleComponentFocusOut=e=>{this.contains(e.relatedTarget)||(this._hasFocus=!1,this.onBlur())},this._handleHoursKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t+1)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t-1+24)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowRight`:e.preventDefault(),this.minutesInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._hoursDigitCount=0,this._hoursFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._hoursDigitCount===0)this._hoursFirstDigit=t,this._hours=String(t).padStart(2,`0`),this._hoursDigitCount=1,this.onInput(),t>=3&&(this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.minutesInputRef.value?.focus());else{let e=this._hoursFirstDigit*10+t;this._hours=e<=23?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.onInput(),this.minutesInputRef.value?.focus()}}else e.preventDefault()}},this._handleHoursBlur=()=>{this._hours!==``&&(this._hours=String(parseInt(this._hours,10)).padStart(2,`0`)),this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._syncValueFromDisplay()},this._handleMinutesKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t+this._minuteStep)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t-this._minuteStep+60)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowLeft`:e.preventDefault(),this.hoursInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._minutesDigitCount=0,this._minutesFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._minutesDigitCount===0)this._minutesFirstDigit=t,this._minutes=String(t).padStart(2,`0`),this._minutesDigitCount=1,this.onInput(),t>=6&&(this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay());else{let e=this._minutesFirstDigit*10+t;this._minutes=e<=59?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay(),this.onInput()}}else e.preventDefault()}},this._handleMinutesBlur=()=>{this._minutes!==``&&(this._minutes=String(parseInt(this._minutes,10)).padStart(2,`0`)),this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._syncValueFromDisplay()},this._handlePopupKeydown=e=>{let t=document.activeElement,n=t.closest(`.pkt-timepicker-popup__col`);if(!n)return;let r=Array.from(n.querySelectorAll(`.pkt-timepicker-popup__option`)),i=r.indexOf(t),a=t.dataset.type??``;switch(e.key){case`ArrowDown`:e.preventDefault(),this._focusOptionAndSync(r[Math.min(i+1,r.length-1)],a);break;case`ArrowUp`:e.preventDefault(),this._focusOptionAndSync(r[Math.max(i-1,0)],a);break;case`Home`:e.preventDefault(),this._focusOptionAndSync(r[0],a);break;case`End`:e.preventDefault(),this._focusOptionAndSync(r[r.length-1],a);break;case`ArrowRight`:e.preventDefault(),a===`hour`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`minute`)}));break;case`ArrowLeft`:e.preventDefault(),a===`minute`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)}));break;case`Enter`:case` `:e.preventDefault(),t.click();break;case`Escape`:e.preventDefault(),this._closePopup(),this.buttonRef.value?.focus();break}}}get inputRef(){return this.hiddenInputRef}manageValidity(t){let n=this.hoursInputRef.value;if(!n)return;if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},e.r.forms.messages.required,n),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let r=s(this.value),i=c(this.step);if(this.min&&r<s(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},e.r.forms.messages.rangeUnderflowMin.replace(`{min}`,String(this.min)),n),this._setAriaInvalid(!0);return}if(this.max&&r>s(String(this.max))){this.internals.setValidity({rangeOverflow:!0},e.r.forms.messages.rangeOverflowMax.replace(`{max}`,String(this.max)),n),this._setAriaInvalid(!0);return}if(this.step&&r%i!==0){let t=i===60?e.r.forms.messages.timeStepMismatchHour:i===30?e.r.forms.messages.timeStepMismatchHalfHour:e.r.forms.messages.timeStepMismatch.replace(`{step}`,`${i}, ${i*2}, ${i*3}`);this.internals.setValidity({stepMismatch:!0},t,n),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_setAriaInvalid(e){if(!this.touched&&e)return;let t=this.hoursInputRef.value,n=this.minutesInputRef.value;e?(t?.setAttribute(`aria-invalid`,`true`),n?.setAttribute(`aria-invalid`,`true`)):(t?.removeAttribute(`aria-invalid`),n?.removeAttribute(`aria-invalid`))}connectedCallback(){super.connectedCallback(),this.addEventListener(`focusin`,this._handleComponentFocusIn),this.addEventListener(`focusout`,this._handleComponentFocusOut),document.addEventListener(`click`,this._outsideClickHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`focusin`,this._handleComponentFocusIn),this.removeEventListener(`focusout`,this._handleComponentFocusOut),document.removeEventListener(`click`,this._outsideClickHandler)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&this._syncDisplayFromValue()}updated(e){super.updated(e),this.classList.toggle(`pkt-timepicker--stepper`,this.stepArrows),this.classList.toggle(`pkt-timepicker--fullwidth`,this.fullwidth),this.classList.toggle(`pkt-timepicker--medium`,this.inputSize===`medium`),this.classList.toggle(`pkt-timepicker--small`,this.inputSize===`small`),this.classList.toggle(`pkt-timepicker--xsmall`,this.inputSize===`xsmall`),e.has(`step`)&&this.step!==null&&!this._isValidStep(this.step)&&console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`)}formResetCallback(){super.formResetCallback(),this._hours=``,this._minutes=``,this._isOpen=!1}_isValidStep(e){return e===3600||e<3600&&3600%e==0&&e%60==0}_syncDisplayFromValue(){let e=o(this.value)?this.value.split(`:`):null;e?(this._hours=e[0],this._minutes=e[1]):(this._hours=``,this._minutes=``)}_syncValueFromDisplay(){if(this._hours!==``&&this._minutes!==``){let e=`${this._hours}:${this._minutes}`;e!==this.value&&(this.value=e,this.onChange(e))}else this.value!==``&&(this.value=``,this.onChange(``))}get _minuteStep(){return c(this.step)}get _hourOptions(){return l(this.min,this.max)}get _minuteOptions(){return u(this.step)}_openPopup(){this._isOpen=!0,this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)})}_closePopup(){this._isOpen=!1,this._syncValueFromDisplay()}_togglePopup(){this._isOpen?this._closePopup():this._openPopup()}_scrollToSelected(){let e=this.querySelector(`.pkt-timepicker-popup`);e&&e.querySelectorAll(`.pkt-timepicker-popup__col`).forEach(e=>{let t=e.querySelector(`.pkt-timepicker-popup__option--selected`);t&&t.scrollIntoView({block:`center`})})}_focusSelectedOrFirst(e){let t=this.querySelector(`.pkt-timepicker-popup`);if(!t)return;let n=t.querySelectorAll(`.pkt-timepicker-popup__col`),r=e===`hour`?n[0]:n[1];if(!r)return;let i=r.querySelector(`.pkt-timepicker-popup__option--selected`),a=r.querySelector(`.pkt-timepicker-popup__option`);(i||a)?.focus()}_handleOptionClick(e,t){let n=String(e).padStart(2,`0`);t===`hour`?(this._hours=n,this.updateComplete.then(()=>this._focusSelectedOrFirst(`minute`))):(this._minutes=n,this._closePopup(),this.buttonRef.value?.focus())}_focusOptionAndSync(e,t){if(!e)return;let n=parseInt(e.dataset.value??`0`,10);t===`hour`?this._hours=String(n).padStart(2,`0`):this._minutes=String(n).padStart(2,`0`),e.focus()}_stepTime(e){let t=d(this._hours,this._minutes,e,this._minuteStep);this._hours=t.hours,this._minutes=t.minutes,this._syncValueFromDisplay()}_renderOption(n,r){let i=String(n).padStart(2,`0`),a=n===(r===`hour`?this._hours===``?NaN:parseInt(this._hours,10):this._minutes===``?NaN:parseInt(this._minutes,10));return e.p`
1
+ const e=require("./element-DCm4GU7z.cjs"),t=require("./class-map-DzzW3MwB.cjs"),n=require("./element-with-slot-N79a3tub.cjs");require("./icon-BlJZpl2L.cjs");const r=require("./if-defined-h7sbeYue.cjs"),i=require("./ref-CYXJQuCZ.cjs"),a=require("./input-element-CmFzbxiZ.cjs");require("./input-wrapper-CohL8Onb.cjs");var o=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,s=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},c=e=>e?Math.max(1,Math.round(e/60)):1,l=(e,t)=>{let n=e?parseInt(String(e).split(`:`)[0],10):0,r=t?parseInt(String(t).split(`:`)[0],10):23;return Array.from({length:r-n+1},(e,t)=>t+n)},u=e=>{let t=c(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},d=(e,t,n,r)=>{let i=e===``?n===1?0:23:parseInt(e,10),a=t===``?n===1?0:Math.floor(59/r)*r:parseInt(t,10);return a+=n*r,a>59?(a=0,i=(i+1)%24):a<0&&(a=Math.floor(59/r)*r,i=(i-1+24)%24),{hours:String(i).padStart(2,`0`),minutes:String(a).padStart(2,`0`)}},f=class extends a.t{constructor(...e){super(...e),this.hiddenInputRef=i.t(),this.hoursInputRef=i.t(),this.minutesInputRef=i.t(),this.buttonRef=i.t(),this.value=``,this.hidePicker=!1,this.stepArrows=!1,this._hours=``,this._minutes=``,this._isOpen=!1,this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._hasFocus=!1,this._outsideClickHandler=e=>{this.contains(e.target)||this._closePopup()},this._handleComponentFocusIn=()=>{this._hasFocus||(this._hasFocus=!0,this.onFocus())},this._handleComponentFocusOut=e=>{this.contains(e.relatedTarget)||(this._hasFocus=!1,this.onBlur())},this._handleHoursKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t+1)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t-1+24)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowRight`:e.preventDefault(),this.minutesInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._hoursDigitCount=0,this._hoursFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._hoursDigitCount===0)this._hoursFirstDigit=t,this._hours=String(t).padStart(2,`0`),this._hoursDigitCount=1,this.onInput(),t>=3&&(this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.minutesInputRef.value?.focus());else{let e=this._hoursFirstDigit*10+t;this._hours=e<=23?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.onInput(),this.minutesInputRef.value?.focus()}}else e.preventDefault()}},this._handleHoursBlur=()=>{this._hours!==``&&(this._hours=String(parseInt(this._hours,10)).padStart(2,`0`)),this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._syncValueFromDisplay()},this._handleMinutesKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t+this._minuteStep)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t-this._minuteStep+60)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowLeft`:e.preventDefault(),this.hoursInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._minutesDigitCount=0,this._minutesFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._minutesDigitCount===0)this._minutesFirstDigit=t,this._minutes=String(t).padStart(2,`0`),this._minutesDigitCount=1,this.onInput(),t>=6&&(this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay());else{let e=this._minutesFirstDigit*10+t;this._minutes=e<=59?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay(),this.onInput()}}else e.preventDefault()}},this._handleMinutesBlur=()=>{this._minutes!==``&&(this._minutes=String(parseInt(this._minutes,10)).padStart(2,`0`)),this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._syncValueFromDisplay()},this._handlePopupKeydown=e=>{let t=document.activeElement,n=t.closest(`.pkt-timepicker-popup__col`);if(!n)return;let r=Array.from(n.querySelectorAll(`.pkt-timepicker-popup__option`)),i=r.indexOf(t),a=t.dataset.type??``;switch(e.key){case`ArrowDown`:e.preventDefault(),this._focusOptionAndSync(r[Math.min(i+1,r.length-1)],a);break;case`ArrowUp`:e.preventDefault(),this._focusOptionAndSync(r[Math.max(i-1,0)],a);break;case`Home`:e.preventDefault(),this._focusOptionAndSync(r[0],a);break;case`End`:e.preventDefault(),this._focusOptionAndSync(r[r.length-1],a);break;case`ArrowRight`:e.preventDefault(),a===`hour`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`minute`)}));break;case`ArrowLeft`:e.preventDefault(),a===`minute`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)}));break;case`Enter`:case` `:e.preventDefault(),t.click();break;case`Escape`:e.preventDefault(),this._closePopup(),this.buttonRef.value?.focus();break}}}get inputRef(){return this.hiddenInputRef}manageValidity(t){let n=this.hoursInputRef.value;if(!n)return;if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},e.r.forms.messages.required,n),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let r=s(this.value),i=c(this.step);if(this.min&&r<s(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},e.r.forms.messages.rangeUnderflowMin.replace(`{min}`,String(this.min)),n),this._setAriaInvalid(!0);return}if(this.max&&r>s(String(this.max))){this.internals.setValidity({rangeOverflow:!0},e.r.forms.messages.rangeOverflowMax.replace(`{max}`,String(this.max)),n),this._setAriaInvalid(!0);return}if(this.step&&r%i!==0){let t=i===60?e.r.forms.messages.timeStepMismatchHour:i===30?e.r.forms.messages.timeStepMismatchHalfHour:e.r.forms.messages.timeStepMismatch.replace(`{step}`,`${i}, ${i*2}, ${i*3}`);this.internals.setValidity({stepMismatch:!0},t,n),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_setAriaInvalid(e){if(!this.touched&&e)return;let t=this.hoursInputRef.value,n=this.minutesInputRef.value;if(e)t?.setAttribute(`aria-invalid`,`true`),n?.setAttribute(`aria-invalid`,`true`);else{if(this.hasError)return;t?.removeAttribute(`aria-invalid`),n?.removeAttribute(`aria-invalid`)}}connectedCallback(){super.connectedCallback(),this.addEventListener(`focusin`,this._handleComponentFocusIn),this.addEventListener(`focusout`,this._handleComponentFocusOut),document.addEventListener(`click`,this._outsideClickHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`focusin`,this._handleComponentFocusIn),this.removeEventListener(`focusout`,this._handleComponentFocusOut),document.removeEventListener(`click`,this._outsideClickHandler)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&this._syncDisplayFromValue()}updated(e){super.updated(e),this.classList.add(`pkt-timepicker`),this.classList.toggle(`pkt-timepicker--stepper`,this.stepArrows),this.classList.toggle(`pkt-timepicker--fullwidth`,this.fullwidth),this.classList.toggle(`pkt-timepicker--medium`,this.inputSize===`medium`),this.classList.toggle(`pkt-timepicker--small`,this.inputSize===`small`),this.classList.toggle(`pkt-timepicker--xsmall`,this.inputSize===`xsmall`),e.has(`step`)&&this.step!==null&&!this._isValidStep(this.step)&&console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`)}formResetCallback(){super.formResetCallback(),this._hours=``,this._minutes=``,this._isOpen=!1}_isValidStep(e){return e===3600||e<3600&&3600%e==0&&e%60==0}_syncDisplayFromValue(){let e=o(this.value)?this.value.split(`:`):null;e?(this._hours=e[0],this._minutes=e[1]):(this._hours=``,this._minutes=``)}_syncValueFromDisplay(){if(this._hours!==``&&this._minutes!==``){let e=`${this._hours}:${this._minutes}`;e!==this.value&&(this.value=e,this.onChange(e))}else this.value!==``&&(this.value=``,this.onChange(``))}get _minuteStep(){return c(this.step)}get _hourOptions(){return l(this.min,this.max)}get _minuteOptions(){return u(this.step)}_openPopup(){this._isOpen=!0,this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)})}_closePopup(){this._isOpen=!1,this._syncValueFromDisplay()}_togglePopup(){this._isOpen?this._closePopup():this._openPopup()}_scrollToSelected(){let e=this.querySelector(`.pkt-timepicker-popup`);e&&e.querySelectorAll(`.pkt-timepicker-popup__col`).forEach(e=>{let t=e.querySelector(`.pkt-timepicker-popup__option--selected`);t&&t.scrollIntoView({block:`center`})})}_focusSelectedOrFirst(e){let t=this.querySelector(`.pkt-timepicker-popup`);if(!t)return;let n=t.querySelectorAll(`.pkt-timepicker-popup__col`),r=e===`hour`?n[0]:n[1];if(!r)return;let i=r.querySelector(`.pkt-timepicker-popup__option--selected`),a=r.querySelector(`.pkt-timepicker-popup__option`);(i||a)?.focus()}_handleOptionClick(e,t){let n=String(e).padStart(2,`0`);t===`hour`?(this._hours=n,this.updateComplete.then(()=>this._focusSelectedOrFirst(`minute`))):(this._minutes=n,this._closePopup(),this.buttonRef.value?.focus())}_focusOptionAndSync(e,t){if(!e)return;let n=parseInt(e.dataset.value??`0`,10);t===`hour`?this._hours=String(n).padStart(2,`0`):this._minutes=String(n).padStart(2,`0`),e.focus()}_stepTime(e){let t=d(this._hours,this._minutes,e,this._minuteStep);this._hours=t.hours,this._minutes=t.minutes,this._syncValueFromDisplay()}_renderOption(n,r){let i=String(n).padStart(2,`0`),a=n===(r===`hour`?this._hours===``?NaN:parseInt(this._hours,10):this._minutes===``?NaN:parseInt(this._minutes,10));return e.p`
2
2
  <button
3
3
  class=${t.t({"pkt-btn":!0,"pkt-btn--tertiary":!0,"pkt-btn--small":!0,"pkt-btn--label-only":!0,"pkt-timepicker-popup__option":!0,"pkt-timepicker-popup__option--selected":a})}
4
4
  type="button"
@@ -72,6 +72,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
72
72
  aria-label=${a}
73
73
  role="spinbutton"
74
74
  aria-invalid=${this.hasError?`true`:e.d}
75
+ aria-errormessage=${this.hasError?`${this.id}-hours-error`:e.d}
75
76
  aria-valuemin="0"
76
77
  aria-valuemax="23"
77
78
  aria-valuenow=${this._hours===``?e.d:this._hours}
@@ -98,6 +99,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
98
99
  aria-label=${o}
99
100
  role="spinbutton"
100
101
  aria-invalid=${this.hasError?`true`:e.d}
102
+ aria-errormessage=${this.hasError?`${this.id}-hours-error`:e.d}
101
103
  aria-valuemin="0"
102
104
  aria-valuemax="59"
103
105
  aria-valuenow=${this._minutes===``?e.d:this._minutes}
@@ -166,12 +168,13 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
166
168
  ?disabled=${this.disabled}
167
169
  ?fullwidth=${this.fullwidth}
168
170
  ?hasError=${this.hasError}
171
+ ?hasFieldset=${this.effectiveHasFieldset(!1)}
169
172
  ?inline=${this.inline}
170
173
  ?optionalTag=${this.optionalTag}
171
174
  ?required=${this.required}
172
175
  ?requiredTag=${this.requiredTag}
173
176
  useWrapper=${this.useWrapper}
174
- .ariaDescribedBy=${this.ariaDescribedBy}
177
+ .ariaDescribedby=${this.ariaDescribedby}
175
178
  .errorMessage=${this.errorMessage}
176
179
  .forId="${this.id+`-hours`}"
177
180
  .helptext=${this.helptext}
@@ -78,7 +78,8 @@ declare const _default: {
78
78
  "rangeUnderflowMin": "Verdien må være større enn eller lik {min}.",
79
79
  "rangeOverflowMax": "Verdien må være mindre enn eller lik {max}.",
80
80
  "dateUnderflow": "For tidlig dato",
81
- "dateOverflow": "For sen dato"
81
+ "dateOverflow": "For sen dato",
82
+ "counterExceeded": "Du har brukt {current} av {max}"
82
83
  },
83
84
  "helptext": {
84
85
  "helptextDropdownButton": "Les mer"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oslokommune/punkt-elements",
3
- "version": "17.0.8",
3
+ "version": "17.1.0",
4
4
  "description": "Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo",
5
5
  "homepage": "https://punkt.oslo.kommune.no",
6
6
  "author": "Team Designsystem, Oslo Origo",
@@ -80,5 +80,5 @@
80
80
  "url": "https://github.com/oslokommune/punkt/issues"
81
81
  },
82
82
  "license": "MIT",
83
- "gitHead": "e755eac6123dd25b4f93b1de4cc8febe170eee2d"
83
+ "gitHead": "20e21ac32f77c4b3981dcabfcace7cd0565c2f7a"
84
84
  }
@@ -81,7 +81,7 @@ describe('PktCombobox', () => {
81
81
  const smallContainer = await createCombobox('id="size-small" label="Test" input-size="small"')
82
82
  const smallCombobox = smallContainer.querySelector('pkt-combobox') as PktCombobox
83
83
  await smallCombobox.updateComplete
84
- const smallInner = smallCombobox.querySelector('pkt-input-wrapper .pkt-inputwrapper')
84
+ const smallInner = smallCombobox.querySelector('pkt-input-wrapper')
85
85
  expect(smallInner?.classList.contains('pkt-inputwrapper--small')).toBe(true)
86
86
  expect(smallInner?.classList.contains('pkt-inputwrapper--xsmall')).toBe(false)
87
87
 
@@ -92,7 +92,7 @@ describe('PktCombobox', () => {
92
92
  )
93
93
  const xsmallCombobox = xsmallContainer.querySelector('pkt-combobox') as PktCombobox
94
94
  await xsmallCombobox.updateComplete
95
- const xsmallInner = xsmallCombobox.querySelector('pkt-input-wrapper .pkt-inputwrapper')
95
+ const xsmallInner = xsmallCombobox.querySelector('pkt-input-wrapper')
96
96
  expect(xsmallInner?.classList.contains('pkt-inputwrapper--small')).toBe(false)
97
97
  expect(xsmallInner?.classList.contains('pkt-inputwrapper--xsmall')).toBe(true)
98
98
  })