@oslokommune/punkt-elements 19.3.0 → 19.3.1

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 (178) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{accordion-BLMbI8SQ.cjs → accordion-CZ0O4c0_.cjs} +1 -1
  3. package/dist/{accordion-Bwka5Mxo.js → accordion-DFcdonl-.js} +5 -5
  4. package/dist/{alert-vIaasUjb.js → alert-BhvjSA5X.js} +7 -7
  5. package/dist/{alert-DsGNGcgd.cjs → alert-D1bQjZ7C.cjs} +2 -2
  6. package/dist/{async-directive-U0EE5r36.cjs → async-directive-BGoo_npW.cjs} +1 -1
  7. package/dist/{async-directive-C8UAk8Mv.js → async-directive-DsdqP_X7.js} +2 -2
  8. package/dist/{backlink-DM220m4q.cjs → backlink-Bw6IcRIo.cjs} +1 -1
  9. package/dist/{backlink-BjJwDjuP.js → backlink-DIdgvE2j.js} +3 -3
  10. package/dist/{breadcrumbs-B1pDtQy8.js → breadcrumbs-BfgCx3Xj.js} +2 -2
  11. package/dist/{breadcrumbs-BUmbj-hP.cjs → breadcrumbs-C10K1XLP.cjs} +1 -1
  12. package/dist/{button-BUl8uWWh.js → button-B5rWxfei.js} +5 -5
  13. package/dist/{button-CCR4eyt_.cjs → button-CmNrMH-c.cjs} +1 -1
  14. package/dist/{calendar-CtfdBqJN.cjs → calendar-D-Ow5DAp.cjs} +1 -1
  15. package/dist/{calendar-DWSW_GeN.js → calendar-U8xkRdgF.js} +3 -3
  16. package/dist/{card-27RxxKxW.js → card-D2YYPZr5.js} +23 -22
  17. package/dist/{card-B-RKnu_C.cjs → card-DW1uklP6.cjs} +6 -6
  18. package/dist/{checkbox-B-ejHbFP.js → checkbox-B2O0fkh9.js} +4 -4
  19. package/dist/{checkbox-B2G_B_bg.cjs → checkbox-C0zLtnCI.cjs} +1 -1
  20. package/dist/{class-map-D5GHsely.js → class-map-C4hdfSfY.js} +1 -1
  21. package/dist/{class-map-B0FX3YsK.cjs → class-map-Drv0_anQ.cjs} +1 -1
  22. package/dist/{combobox-nqNZDvBR.cjs → combobox-BgduqUpf.cjs} +1 -1
  23. package/dist/{combobox-DHL_CGYv.js → combobox-DpXTwNr4.js} +12 -12
  24. package/dist/components/card/card.d.ts +2 -1
  25. package/dist/components/fileupload/fileupload-operations.d.ts +6 -3
  26. package/dist/components/fileupload/fileupload-renderers.d.ts +5 -3
  27. package/dist/{consent-BeoP4rOa.js → consent-BBxZkgCO.js} +2 -2
  28. package/dist/{consent-Cle1hkPg.cjs → consent-BjYaCbef.cjs} +1 -1
  29. package/dist/{datepicker-DvO3w0eM.cjs → datepicker-53rj_Qqx.cjs} +1 -1
  30. package/dist/{datepicker-BWp2PM9S.js → datepicker-BLBimRTT.js} +11 -11
  31. package/dist/{directive-helpers-BushnrQQ.cjs → directive-helpers-BRrz3Bcj.cjs} +1 -1
  32. package/dist/{directive-helpers-DpyLJPJm.js → directive-helpers-D96YEsht.js} +1 -1
  33. package/dist/{element-CewjrA4g.cjs → element-BOmr9YLv.cjs} +1 -1
  34. package/dist/{element-CqC-sGuC.js → element-mwwC2Rra.js} +37 -3
  35. package/dist/{element-with-slot-MCvSBwUv.cjs → element-with-slot-2PHu2w7O.cjs} +1 -1
  36. package/dist/{element-with-slot-D_OKDlYo.js → element-with-slot-FD826ooP.js} +2 -2
  37. package/dist/{fileupload-DDLvQaSS.cjs → fileupload-4wgr4iAi.cjs} +78 -76
  38. package/dist/{fileupload-DbtTD1aU.js → fileupload-BxfBFhFt.js} +120 -100
  39. package/dist/{footer-CupUAe8d.cjs → footer-BGj1uWwC.cjs} +1 -1
  40. package/dist/{footer-UT8MbnCT.js → footer-D_d5kq44.js} +4 -4
  41. package/dist/{header-BxgtAiNM.js → header-CF-Re0nT.js} +14 -13
  42. package/dist/{header-wdEiBTI9.cjs → header-Cs4t2XMM.cjs} +4 -3
  43. package/dist/{header-menu-DGywRJCx.cjs → header-menu-BnqZagI6.cjs} +3 -3
  44. package/dist/{header-menu-CTEPH4St.js → header-menu-C9k9xG9V.js} +6 -6
  45. package/dist/{heading-ELXWxyTv.js → heading-BRHCV_5J.js} +2 -2
  46. package/dist/{heading-BDdX4JiM.cjs → heading-u9Arof4p.cjs} +1 -1
  47. package/dist/{helptext-DQe6GO75.cjs → helptext-DYgeTMtA.cjs} +1 -1
  48. package/dist/{helptext-BQkrYsoV.js → helptext-sRC8EJqL.js} +4 -4
  49. package/dist/{icon-Clz68-Kz.cjs → icon-CoBsgGUR.cjs} +1 -1
  50. package/dist/{icon-B2v30QUk.js → icon-DmRyYNlY.js} +1 -1
  51. package/dist/if-defined-2mkIDgOm.cjs +1 -0
  52. package/dist/{if-defined-BNXGXCwT.js → if-defined-Bebu3LXY.js} +1 -1
  53. package/dist/{input-element-BTzuDh4h.js → input-element-B1BntJeJ.js} +2 -2
  54. package/dist/{input-element-BdIWsDl-.cjs → input-element-W6Gklt2E.cjs} +1 -1
  55. package/dist/{input-wrapper-B5GdwzAM.js → input-wrapper-C1zXIKBU.js} +6 -6
  56. package/dist/{input-wrapper-BmPdpY4N.cjs → input-wrapper-CSPPa4uc.cjs} +1 -1
  57. package/dist/{link-BxKWhYsn.js → link-DcxVUj8s.js} +4 -4
  58. package/dist/{link-1JEWpEDG.cjs → link-EMsHusF7.cjs} +1 -1
  59. package/dist/{linkcard-DXOkeQUy.cjs → linkcard-CWeR6t2a.cjs} +1 -1
  60. package/dist/{linkcard-CICSZ7pK.js → linkcard-MJFR7FLT.js} +4 -4
  61. package/dist/{listbox-3fi7wQz4.cjs → listbox-BoBwzL4p.cjs} +6 -6
  62. package/dist/{listbox-7pQ0UjKV.js → listbox-DEzd-dxF.js} +65 -61
  63. package/dist/{loader-nIl61aTv.js → loader-CqFQoJlM.js} +4 -4
  64. package/dist/{loader-BA__N62k.cjs → loader-SJ6NauNT.cjs} +1 -1
  65. package/dist/{messagebox-D2xvSYWI.cjs → messagebox-D5GYIdjE.cjs} +2 -2
  66. package/dist/{messagebox-E8W7RyAJ.js → messagebox-DsKi_rKn.js} +5 -5
  67. package/dist/{modal-D5tGq-nN.js → modal-CJqe6y-V.js} +7 -7
  68. package/dist/{modal-i3Qxv38H.cjs → modal-DaerHpVi.cjs} +3 -3
  69. package/dist/pkt-accordion.cjs +1 -1
  70. package/dist/pkt-accordion.js +1 -1
  71. package/dist/pkt-alert.cjs +1 -1
  72. package/dist/pkt-alert.js +1 -1
  73. package/dist/pkt-backlink.cjs +1 -1
  74. package/dist/pkt-backlink.js +1 -1
  75. package/dist/pkt-breadcrumbs.cjs +1 -1
  76. package/dist/pkt-breadcrumbs.js +1 -1
  77. package/dist/pkt-button.cjs +1 -1
  78. package/dist/pkt-button.js +1 -1
  79. package/dist/pkt-calendar.cjs +1 -1
  80. package/dist/pkt-calendar.js +1 -1
  81. package/dist/pkt-card.cjs +1 -1
  82. package/dist/pkt-card.js +1 -1
  83. package/dist/pkt-checkbox.cjs +1 -1
  84. package/dist/pkt-checkbox.js +1 -1
  85. package/dist/pkt-combobox.cjs +1 -1
  86. package/dist/pkt-combobox.js +1 -1
  87. package/dist/pkt-consent.cjs +1 -1
  88. package/dist/pkt-consent.js +1 -1
  89. package/dist/pkt-datepicker.cjs +1 -1
  90. package/dist/pkt-datepicker.js +1 -1
  91. package/dist/pkt-fileupload.cjs +1 -1
  92. package/dist/pkt-fileupload.js +1 -1
  93. package/dist/pkt-footer.cjs +1 -1
  94. package/dist/pkt-footer.js +1 -1
  95. package/dist/pkt-header-menu.cjs +1 -1
  96. package/dist/pkt-header-menu.js +1 -1
  97. package/dist/pkt-header.cjs +1 -1
  98. package/dist/pkt-header.js +1 -1
  99. package/dist/pkt-heading.cjs +1 -1
  100. package/dist/pkt-heading.js +1 -1
  101. package/dist/pkt-helptext.cjs +1 -1
  102. package/dist/pkt-helptext.js +1 -1
  103. package/dist/pkt-icon.cjs +1 -1
  104. package/dist/pkt-icon.js +1 -1
  105. package/dist/pkt-index.cjs +1 -1
  106. package/dist/pkt-index.js +34 -34
  107. package/dist/pkt-input-wrapper.cjs +1 -1
  108. package/dist/pkt-input-wrapper.js +1 -1
  109. package/dist/pkt-link.cjs +1 -1
  110. package/dist/pkt-link.js +1 -1
  111. package/dist/pkt-linkcard.cjs +1 -1
  112. package/dist/pkt-linkcard.js +1 -1
  113. package/dist/pkt-listbox.cjs +1 -1
  114. package/dist/pkt-listbox.js +1 -1
  115. package/dist/pkt-loader.cjs +1 -1
  116. package/dist/pkt-loader.js +1 -1
  117. package/dist/pkt-messagebox.cjs +1 -1
  118. package/dist/pkt-messagebox.js +1 -1
  119. package/dist/pkt-modal.cjs +1 -1
  120. package/dist/pkt-modal.js +1 -1
  121. package/dist/{pkt-options-controller-BClk341e.cjs → pkt-options-controller-Dz-rYCG1.cjs} +1 -1
  122. package/dist/{pkt-options-controller-v2bPM9iU.js → pkt-options-controller-sUzxHa5A.js} +1 -1
  123. package/dist/pkt-progressbar.cjs +1 -1
  124. package/dist/pkt-progressbar.js +1 -1
  125. package/dist/pkt-radiobutton.cjs +1 -1
  126. package/dist/pkt-radiobutton.js +1 -1
  127. package/dist/pkt-searchinput.cjs +1 -1
  128. package/dist/pkt-searchinput.js +1 -1
  129. package/dist/pkt-select.cjs +1 -1
  130. package/dist/pkt-select.js +1 -1
  131. package/dist/pkt-tabs.cjs +1 -1
  132. package/dist/pkt-tabs.js +1 -1
  133. package/dist/pkt-tag.cjs +1 -1
  134. package/dist/pkt-tag.js +1 -1
  135. package/dist/pkt-textarea.cjs +1 -1
  136. package/dist/pkt-textarea.js +1 -1
  137. package/dist/pkt-textinput.cjs +1 -1
  138. package/dist/pkt-textinput.js +1 -1
  139. package/dist/pkt-timepicker.cjs +1 -1
  140. package/dist/pkt-timepicker.js +1 -1
  141. package/dist/{progressbar-4WyR4T72.js → progressbar-Bd0DjiAb.js} +5 -5
  142. package/dist/{progressbar-CJFGbev-.cjs → progressbar-BrVlAcQI.cjs} +1 -1
  143. package/dist/{radiobutton-D7308uCY.js → radiobutton-B0V-jSEX.js} +4 -4
  144. package/dist/{radiobutton-BQRtv7PK.cjs → radiobutton-Cv1BlwLV.cjs} +1 -1
  145. package/dist/{ref-37-yxmc4.js → ref-CCSGk4MP.js} +2 -2
  146. package/dist/{ref-HT6KRjxp.cjs → ref-Emu5PNxk.cjs} +1 -1
  147. package/dist/{repeat-DntD73oB.js → repeat-CdxGS-_3.js} +2 -2
  148. package/dist/{repeat-Ddge5HTp.cjs → repeat-Dh9YKoeV.cjs} +1 -1
  149. package/dist/{searchinput-D1cJ73Ki.cjs → searchinput-7-VVdkss.cjs} +1 -1
  150. package/dist/{searchinput-j4IvYRzj.js → searchinput-CgzigmiI.js} +4 -4
  151. package/dist/{select-CDoA2rpC.cjs → select---PCiwmy.cjs} +1 -1
  152. package/dist/{select-BhK8veJn.js → select-BbcGPmPs.js} +7 -7
  153. package/dist/shared-strings/nb.d.ts +34 -0
  154. package/dist/{tabs-DexV26qJ.js → tabs-B134M9k2.js} +4 -4
  155. package/dist/{tabs-95BpwB6j.cjs → tabs-Dw9E06fL.cjs} +1 -1
  156. package/dist/{tag-CQEyjF32.cjs → tag-HTYKd-iG.cjs} +1 -1
  157. package/dist/{tag-DoUC99hn.js → tag-wYnHhHLK.js} +5 -5
  158. package/dist/{textarea-sulH-Yk7.js → textarea-BcgVLLTt.js} +9 -9
  159. package/dist/{textarea-BLVuKEng.cjs → textarea-pA_xv8lI.cjs} +1 -1
  160. package/dist/{textinput-CSrBua2N.cjs → textinput-Czz2affL.cjs} +1 -1
  161. package/dist/{textinput-Di2lAf2R.js → textinput-Dpj1X5yr.js} +8 -8
  162. package/dist/{timepicker-Iq1-vWRn.cjs → timepicker-BwDZkSpo.cjs} +1 -1
  163. package/dist/{timepicker-BaDGjuOR.js → timepicker-CfQMZlaP.js} +8 -8
  164. package/package.json +2 -2
  165. package/src/components/alert/alert.test.ts +1 -1
  166. package/src/components/alert/alert.ts +1 -1
  167. package/src/components/card/card.ts +7 -2
  168. package/src/components/fileupload/fileupload-operations.ts +31 -22
  169. package/src/components/fileupload/fileupload-renderers.ts +28 -17
  170. package/src/components/fileupload/fileupload.ts +26 -9
  171. package/src/components/header/header-global.ts +2 -1
  172. package/src/components/header/header-service.test.ts +15 -0
  173. package/src/components/header/header-user-menu.ts +1 -1
  174. package/src/components/header-menu/header-menu.ts +2 -2
  175. package/src/components/listbox/listbox.ts +9 -4
  176. package/src/components/messagebox/messagebox.ts +1 -1
  177. package/src/components/modal/modal.ts +2 -2
  178. package/dist/if-defined-CjRKmMQs.cjs +0 -1
@@ -1,12 +1,12 @@
1
- import { _ as e, d as t, f as n, g as r, h as i, l as a, m as o, n as s, p as c, u as l } from "./element-CqC-sGuC.js";
2
- import { t as u } from "./class-map-D5GHsely.js";
3
- import { t as d } from "./if-defined-BNXGXCwT.js";
4
- import { i as f, r as p } from "./directive-helpers-DpyLJPJm.js";
5
- import { r as m } from "./element-with-slot-D_OKDlYo.js";
6
- import "./icon-B2v30QUk.js";
7
- import { n as h, t as g } from "./ref-37-yxmc4.js";
8
- import { t as _ } from "./input-element-BTzuDh4h.js";
9
- import { r as v } from "./input-wrapper-B5GdwzAM.js";
1
+ import { _ as e, d as t, f as n, g as r, h as i, l as a, m as o, n as s, p as c, u as l } from "./element-mwwC2Rra.js";
2
+ import { t as u } from "./class-map-C4hdfSfY.js";
3
+ import { t as d } from "./if-defined-Bebu3LXY.js";
4
+ import { i as f, r as p } from "./directive-helpers-D96YEsht.js";
5
+ import { r as m } from "./element-with-slot-FD826ooP.js";
6
+ import "./icon-DmRyYNlY.js";
7
+ import { n as h, t as g } from "./ref-CCSGk4MP.js";
8
+ import { t as _ } from "./input-element-B1BntJeJ.js";
9
+ import { r as v } from "./input-wrapper-C1zXIKBU.js";
10
10
  //#region ../../node_modules/lit-html/directives/live.js
11
11
  var y = n(class extends c {
12
12
  constructor(e) {
@@ -1,4 +1,4 @@
1
- const e=require("./element-CewjrA4g.cjs"),t=require("./class-map-B0FX3YsK.cjs"),n=require("./if-defined-CjRKmMQs.cjs"),r=require("./directive-helpers-BushnrQQ.cjs"),i=require("./element-with-slot-MCvSBwUv.cjs");require("./icon-Clz68-Kz.cjs");const a=require("./ref-HT6KRjxp.cjs"),o=require("./input-element-BdIWsDl-.cjs"),s=require("./input-wrapper-BmPdpY4N.cjs");var c=e.f(class extends e.p{constructor(t){if(super(t),t.type!==e.m.PROPERTY&&t.type!==e.m.ATTRIBUTE&&t.type!==e.m.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!r.i(t))throw Error("`live` bindings can only contain a single expression")}render(e){return e}update(t,[n]){if(n===e.g||n===e.h)return n;let i=t.element,a=t.name;if(t.type===e.m.PROPERTY){if(n===i[a])return e.g}else if(t.type===e.m.BOOLEAN_ATTRIBUTE){if(!!n===i.hasAttribute(a))return e.g}else if(t.type===e.m.ATTRIBUTE&&i.getAttribute(a)===n+``)return e.g;return r.r(t),n}}),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)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`,`pkt-textarea`),e.has(`value`)&&this.valueChanged(this.value,e.get(`value`))}render(){let r=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":r&&this.counterMaxLength>0&&this.value.length>this.counterMaxLength}),l=this.ariaLabelledby||`${this.id}-input-label`;return e._`<pkt-input-wrapper
1
+ const e=require("./element-BOmr9YLv.cjs"),t=require("./class-map-Drv0_anQ.cjs"),n=require("./if-defined-2mkIDgOm.cjs"),r=require("./directive-helpers-BRrz3Bcj.cjs"),i=require("./element-with-slot-2PHu2w7O.cjs");require("./icon-CoBsgGUR.cjs");const a=require("./ref-Emu5PNxk.cjs"),o=require("./input-element-W6Gklt2E.cjs"),s=require("./input-wrapper-CSPPa4uc.cjs");var c=e.f(class extends e.p{constructor(t){if(super(t),t.type!==e.m.PROPERTY&&t.type!==e.m.ATTRIBUTE&&t.type!==e.m.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!r.i(t))throw Error("`live` bindings can only contain a single expression")}render(e){return e}update(t,[n]){if(n===e.g||n===e.h)return n;let i=t.element,a=t.name;if(t.type===e.m.PROPERTY){if(n===i[a])return e.g}else if(t.type===e.m.BOOLEAN_ATTRIBUTE){if(!!n===i.hasAttribute(a))return e.g}else if(t.type===e.m.ATTRIBUTE&&i.getAttribute(a)===n+``)return e.g;return r.r(t),n}}),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)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`,`pkt-textarea`),e.has(`value`)&&this.valueChanged(this.value,e.get(`value`))}render(){let r=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":r&&this.counterMaxLength>0&&this.value.length>this.counterMaxLength}),l=this.ariaLabelledby||`${this.id}-input-label`;return e._`<pkt-input-wrapper
2
2
  .strings=${this.strings}
3
3
  label=${this.label}
4
4
  ?counter=${r}
@@ -1,4 +1,4 @@
1
- const e=require("./element-CewjrA4g.cjs"),t=require("./class-map-B0FX3YsK.cjs"),n=require("./if-defined-CjRKmMQs.cjs"),r=require("./element-with-slot-MCvSBwUv.cjs");require("./icon-Clz68-Kz.cjs");const i=require("./ref-HT6KRjxp.cjs"),a=require("./input-element-BdIWsDl-.cjs"),o=require("./input-wrapper-BmPdpY4N.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)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`),e.has(`value`)&&this.valueChanged(this.value,e.get(`value`))}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._`
1
+ const e=require("./element-BOmr9YLv.cjs"),t=require("./class-map-Drv0_anQ.cjs"),n=require("./if-defined-2mkIDgOm.cjs"),r=require("./element-with-slot-2PHu2w7O.cjs");require("./icon-CoBsgGUR.cjs");const i=require("./ref-Emu5PNxk.cjs"),a=require("./input-element-W6Gklt2E.cjs"),o=require("./input-wrapper-CSPPa4uc.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)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}updated(e){super.updated(e),this.classList.add(`pkt-textinput`),e.has(`value`)&&this.valueChanged(this.value,e.get(`value`))}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._`
2
2
  <pkt-input-wrapper
3
3
  .strings=${this.strings}
4
4
  label="${this.label}"
@@ -1,11 +1,11 @@
1
- import { _ as e, d as t, h as n, l as r, n as i, u as a } from "./element-CqC-sGuC.js";
2
- import { t as o } from "./class-map-D5GHsely.js";
3
- import { t as s } from "./if-defined-BNXGXCwT.js";
4
- import { r as c } from "./element-with-slot-D_OKDlYo.js";
5
- import "./icon-B2v30QUk.js";
6
- import { n as l, t as u } from "./ref-37-yxmc4.js";
7
- import { t as d } from "./input-element-BTzuDh4h.js";
8
- import { r as f } from "./input-wrapper-B5GdwzAM.js";
1
+ import { _ as e, d as t, h as n, l as r, n as i, u as a } from "./element-mwwC2Rra.js";
2
+ import { t as o } from "./class-map-C4hdfSfY.js";
3
+ import { t as s } from "./if-defined-Bebu3LXY.js";
4
+ import { r as c } from "./element-with-slot-FD826ooP.js";
5
+ import "./icon-DmRyYNlY.js";
6
+ import { n as l, t as u } from "./ref-CCSGk4MP.js";
7
+ import { t as d } from "./input-element-B1BntJeJ.js";
8
+ import { r as f } from "./input-wrapper-C1zXIKBU.js";
9
9
  //#region src/components/textinput/textinput.ts
10
10
  var p = class extends d {
11
11
  constructor(...e) {
@@ -1,4 +1,4 @@
1
- const e=require("./element-CewjrA4g.cjs"),t=require("./class-map-B0FX3YsK.cjs"),n=require("./if-defined-CjRKmMQs.cjs"),r=require("./format-B8meU8Tm.cjs"),i=require("./element-with-slot-MCvSBwUv.cjs");require("./icon-Clz68-Kz.cjs");const a=require("./ref-HT6KRjxp.cjs"),o=require("./input-element-BdIWsDl-.cjs"),s=require("./input-wrapper-BmPdpY4N.cjs");var c=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,l=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},u=e=>e?Math.max(1,Math.round(e/60)):1,d=(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)},f=e=>{let t=u(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},p=(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`)}},m=class extends o.t{constructor(...e){super(...e),this.hiddenInputRef=a.t(),this.hoursInputRef=a.t(),this.minutesInputRef=a.t(),this.buttonRef=a.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()}}}get inputRef(){return this.hiddenInputRef}manageValidity(e){let t=this.hoursInputRef.value;if(!t)return;let n=this.pktStrings.get(`validation`);if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},n.valueMissing,t),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let i=l(this.value),a=u(this.step);if(this.min&&i<l(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},r.t(n.rangeUnderflowMin,{min:String(this.min)}),t),this._setAriaInvalid(!0);return}if(this.max&&i>l(String(this.max))){this.internals.setValidity({rangeOverflow:!0},r.t(n.rangeOverflowMax,{max:String(this.max)}),t),this._setAriaInvalid(!0);return}if(this.step&&i%a!==0){let e=a===60?n.timeStepMismatchHour:a===30?n.timeStepMismatchHalfHour:r.t(n.timeStepMismatch,{step:`${a}, ${a*2}, ${a*3}`});this.internals.setValidity({stepMismatch:!0},e,t),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_describedBy(){return s.r({id:`${this.id}-hours`,hasHelptext:!!this.helptext,ariaDescribedby:this.ariaDescribedby})}_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=c(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 u(this.step)}get _hourOptions(){return d(this.min,this.max)}get _minuteOptions(){return f(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=p(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._`
1
+ const e=require("./element-BOmr9YLv.cjs"),t=require("./class-map-Drv0_anQ.cjs"),n=require("./if-defined-2mkIDgOm.cjs"),r=require("./format-B8meU8Tm.cjs"),i=require("./element-with-slot-2PHu2w7O.cjs");require("./icon-CoBsgGUR.cjs");const a=require("./ref-Emu5PNxk.cjs"),o=require("./input-element-W6Gklt2E.cjs"),s=require("./input-wrapper-CSPPa4uc.cjs");var c=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,l=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},u=e=>e?Math.max(1,Math.round(e/60)):1,d=(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)},f=e=>{let t=u(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},p=(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`)}},m=class extends o.t{constructor(...e){super(...e),this.hiddenInputRef=a.t(),this.hoursInputRef=a.t(),this.minutesInputRef=a.t(),this.buttonRef=a.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()}}}get inputRef(){return this.hiddenInputRef}manageValidity(e){let t=this.hoursInputRef.value;if(!t)return;let n=this.pktStrings.get(`validation`);if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},n.valueMissing,t),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let i=l(this.value),a=u(this.step);if(this.min&&i<l(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},r.t(n.rangeUnderflowMin,{min:String(this.min)}),t),this._setAriaInvalid(!0);return}if(this.max&&i>l(String(this.max))){this.internals.setValidity({rangeOverflow:!0},r.t(n.rangeOverflowMax,{max:String(this.max)}),t),this._setAriaInvalid(!0);return}if(this.step&&i%a!==0){let e=a===60?n.timeStepMismatchHour:a===30?n.timeStepMismatchHalfHour:r.t(n.timeStepMismatch,{step:`${a}, ${a*2}, ${a*3}`});this.internals.setValidity({stepMismatch:!0},e,t),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_describedBy(){return s.r({id:`${this.id}-hours`,hasHelptext:!!this.helptext,ariaDescribedby:this.ariaDescribedby})}_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=c(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 u(this.step)}get _hourOptions(){return d(this.min,this.max)}get _minuteOptions(){return f(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=p(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._`
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"
@@ -1,12 +1,12 @@
1
- import { _ as e, d as t, h as n, l as r, n as i, u as a } from "./element-CqC-sGuC.js";
2
- import { t as o } from "./class-map-D5GHsely.js";
3
- import { t as s } from "./if-defined-BNXGXCwT.js";
1
+ import { _ as e, d as t, h as n, l as r, n as i, u as a } from "./element-mwwC2Rra.js";
2
+ import { t as o } from "./class-map-C4hdfSfY.js";
3
+ import { t as s } from "./if-defined-Bebu3LXY.js";
4
4
  import { t as c } from "./format-BTeSVkED.js";
5
- import { r as l } from "./element-with-slot-D_OKDlYo.js";
6
- import "./icon-B2v30QUk.js";
7
- import { n as u, t as d } from "./ref-37-yxmc4.js";
8
- import { t as f } from "./input-element-BTzuDh4h.js";
9
- import { r as p } from "./input-wrapper-B5GdwzAM.js";
5
+ import { r as l } from "./element-with-slot-FD826ooP.js";
6
+ import "./icon-DmRyYNlY.js";
7
+ import { n as u, t as d } from "./ref-CCSGk4MP.js";
8
+ import { t as f } from "./input-element-B1BntJeJ.js";
9
+ import { r as p } from "./input-wrapper-C1zXIKBU.js";
10
10
  //#region ../../shared-utils/timepicker/time-utils.ts
11
11
  var m = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && parseInt(e.slice(3), 10) <= 59, h = (e) => {
12
12
  let [t, n] = e.split(":").map(Number);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oslokommune/punkt-elements",
3
- "version": "19.3.0",
3
+ "version": "19.3.1",
4
4
  "description": "Komponentbiblioteket til Punkt, designsystem for Oslo kommune",
5
5
  "homepage": "https://punkt.oslo.kommune.no",
6
6
  "author": "Team Designsystem, Oslo kommune",
@@ -84,5 +84,5 @@
84
84
  "engines": {
85
85
  "node": "^22.19.0 || ^24.0.0 || ^26.0.0"
86
86
  },
87
- "gitHead": "bad204d129d7788ce278eb48ba697806a86babe4"
87
+ "gitHead": "40680531212b05400461eaf3ce7eddc3f14edd85"
88
88
  }
@@ -242,7 +242,7 @@ describe('PktAlert', () => {
242
242
  expect(closeButton).toBeInTheDocument()
243
243
  expect(closeButton?.getAttribute('skin')).toBe('tertiary')
244
244
  expect(closeButton?.getAttribute('variant')).toBe('icon-only')
245
- expect(closeButton?.querySelector('button')?.getAttribute('aria-label')).toBe('close')
245
+ expect(closeButton?.querySelector('button')?.getAttribute('aria-label')).toBe('Lukk')
246
246
  expect(closeButton?.hasAttribute('aria-label')).toBe(false)
247
247
  })
248
248
 
@@ -127,7 +127,7 @@ export class PktAlert extends PktElementWithSlot<IPktAlert> implements IPktAlert
127
127
  <div class="pkt-alert__close">
128
128
  <pkt-button
129
129
  tabindex="0"
130
- aria-label="close"
130
+ aria-label=${this.pktStrings.get('generic').close}
131
131
  size=${alertSize}
132
132
  type="button"
133
133
  skin="tertiary"
@@ -16,6 +16,7 @@ import {
16
16
  type TCardSkin,
17
17
  type TLayout,
18
18
  } from 'shared-types'
19
+ import { plural, type IPktStringsProps } from 'shared-strings'
19
20
 
20
21
  export type { TCardSkin, TLayout }
21
22
  export type TCardPadding = 'none' | 'default'
@@ -23,7 +24,7 @@ export type TCardImageShape = 'square' | 'round'
23
24
  export type TCardImageAspect = 'auto' | '1-1' | '4-3' | '3-2' | '16-9' | '19-10'
24
25
  export type TCardTagPosition = 'top' | 'bottom'
25
26
 
26
- export interface IPktCard {
27
+ export interface IPktCard extends IPktStringsProps<'card'> {
27
28
  ariaLabel?: IAriaAttributes['aria-label']
28
29
  metaLead?: string | null
29
30
  metaTrail?: string | null
@@ -232,7 +233,11 @@ export class PktCard extends PktElementWithSlot implements IPktCard {
232
233
  <div
233
234
  class=${classMap(tagClasses)}
234
235
  role="list"
235
- aria-label=${this.tags.length > 1 ? 'merkelapper' : 'merkelapp'}
236
+ aria-label=${plural(
237
+ this.tags.length,
238
+ this.pktStrings.get('card').tagsLabelOne,
239
+ this.pktStrings.get('card').tagsLabelOther,
240
+ )}
236
241
  >
237
242
  ${this.tags.map(
238
243
  (tag) => html`
@@ -1,10 +1,13 @@
1
1
  import { html } from 'lit'
2
+ import { formatString, type TPktStrings } from 'shared-strings'
2
3
 
3
4
  import type { TFileComment, TQueueItemOperation, TQueueOperationContext } from './fileupload-types'
4
5
 
5
6
  const COMMENTS_ATTRIBUTE = 'comments'
6
7
 
7
- const formatTimestamp = (iso: string): string => {
8
+ type TFileuploadStrings = TPktStrings['fileupload']
9
+
10
+ const formatTimestamp = (iso: string, strings: TFileuploadStrings): string => {
8
11
  const date = new Date(iso)
9
12
  if (Number.isNaN(date.getTime())) return iso
10
13
  const day = String(date.getDate()).padStart(2, '0')
@@ -12,7 +15,10 @@ const formatTimestamp = (iso: string): string => {
12
15
  const year = date.getFullYear()
13
16
  const hours = String(date.getHours()).padStart(2, '0')
14
17
  const minutes = String(date.getMinutes()).padStart(2, '0')
15
- return `${day}.${month}.${year} kl. ${hours}:${minutes}`
18
+ return formatString(strings.commentTimestamp, {
19
+ date: `${day}.${month}.${year}`,
20
+ time: `${hours}:${minutes}`,
21
+ })
16
22
  }
17
23
 
18
24
  const handleRenameKeydown = (event: KeyboardEvent, save: () => void, cancel: () => void) => {
@@ -41,17 +47,20 @@ const handleCommentTextareaKeydown = (event: KeyboardEvent, save: () => void, ca
41
47
  }
42
48
  }
43
49
 
44
- export const createRemoveOperation = (removeFile: (fileId: string) => void): TQueueItemOperation => ({
50
+ export const createRemoveOperation = (
51
+ removeFile: (fileId: string) => void,
52
+ strings: TFileuploadStrings,
53
+ ): TQueueItemOperation => ({
45
54
  id: 'remove',
46
- title: 'Slett',
47
- ariaLabel: 'Slett fil',
55
+ title: strings.remove,
56
+ ariaLabel: strings.removeFile,
48
57
  onClick: ({ file }) => removeFile(file.fileId),
49
58
  })
50
59
 
51
- export const createRenameOperation = (): TQueueItemOperation => ({
60
+ export const createRenameOperation = (strings: TFileuploadStrings): TQueueItemOperation => ({
52
61
  id: 'rename',
53
- title: 'Rediger',
54
- ariaLabel: 'Rediger filnavn',
62
+ title: strings.rename,
63
+ ariaLabel: strings.renameFile,
55
64
  renderInlineUI: (context: TQueueOperationContext) => {
56
65
  const currentName =
57
66
  context.getAttribute<string>('targetFilename') ||
@@ -70,7 +79,7 @@ export const createRenameOperation = (): TQueueItemOperation => ({
70
79
  }
71
80
 
72
81
  return html`
73
- <label for=${inputId} class="pkt-sr-only">Endre filnavn</label>
82
+ <label for=${inputId} class="pkt-sr-only">${strings.renameInputLabel}</label>
74
83
  <input
75
84
  id=${inputId}
76
85
  type="text"
@@ -85,7 +94,7 @@ export const createRenameOperation = (): TQueueItemOperation => ({
85
94
  ?disabled=${context.disabled}
86
95
  @click=${save}
87
96
  >
88
- Lagre
97
+ ${strings.save}
89
98
  </button>
90
99
  <button
91
100
  type="button"
@@ -93,7 +102,7 @@ export const createRenameOperation = (): TQueueItemOperation => ({
93
102
  ?disabled=${context.disabled}
94
103
  @click=${context.close}
95
104
  >
96
- Avbryt
105
+ ${strings.cancel}
97
106
  </button>
98
107
  `
99
108
  },
@@ -111,13 +120,13 @@ export const createRenameOperation = (): TQueueItemOperation => ({
111
120
  },
112
121
  })
113
122
 
114
- export const createCommentOperation = (): TQueueItemOperation => ({
123
+ export const createCommentOperation = (strings: TFileuploadStrings): TQueueItemOperation => ({
115
124
  id: 'comment',
116
125
  title: (file) => {
117
126
  const comments = (file.attributes?.[COMMENTS_ATTRIBUTE] as TFileComment[] | undefined) ?? []
118
- return comments.length > 0 ? '' : 'Legg til kommentar'
127
+ return comments.length > 0 ? '' : strings.addComment
119
128
  },
120
- ariaLabel: 'Legg til kommentar',
129
+ ariaLabel: strings.addComment,
121
130
  renderExtendedUI: (context: TQueueOperationContext) => {
122
131
  const comments = context.getAttribute<TFileComment[]>(COMMENTS_ATTRIBUTE) ?? []
123
132
  const existingComment = comments[0]
@@ -133,7 +142,7 @@ export const createCommentOperation = (): TQueueItemOperation => ({
133
142
 
134
143
  return html`
135
144
  <label for=${textareaId} class="pkt-fileupload__queue-display__item__comment-label">
136
- ${existingComment ? 'Rediger kommentar' : 'Legg til kommentar'}
145
+ ${existingComment ? strings.editComment : strings.addComment}
137
146
  </label>
138
147
  <textarea
139
148
  id=${textareaId}
@@ -141,7 +150,7 @@ export const createCommentOperation = (): TQueueItemOperation => ({
141
150
  ?disabled=${context.disabled}
142
151
  .value=${existingComment?.text ?? ''}
143
152
  rows="2"
144
- placeholder="Skriv inn kommentar"
153
+ placeholder=${strings.commentPlaceholder}
145
154
  @keydown=${(event: KeyboardEvent) => handleCommentTextareaKeydown(event, save, context.close)}
146
155
  ></textarea>
147
156
  <button
@@ -150,7 +159,7 @@ export const createCommentOperation = (): TQueueItemOperation => ({
150
159
  ?disabled=${context.disabled}
151
160
  @click=${save}
152
161
  >
153
- ${existingComment ? 'Lagre kommentar' : 'Legg til kommentar'}
162
+ ${existingComment ? strings.saveComment : strings.addComment}
154
163
  </button>
155
164
  <button
156
165
  type="button"
@@ -158,7 +167,7 @@ export const createCommentOperation = (): TQueueItemOperation => ({
158
167
  ?disabled=${context.disabled}
159
168
  @click=${context.close}
160
169
  >
161
- Avbryt
170
+ ${strings.cancel}
162
171
  </button>
163
172
  `
164
173
  },
@@ -171,18 +180,18 @@ export const createCommentOperation = (): TQueueItemOperation => ({
171
180
  <div class="pkt-fileupload__queue-display__item__comments">
172
181
  <div class="pkt-fileupload__queue-display__item__comment">
173
182
  <div class="pkt-fileupload__queue-display__item__comment__content">
174
- <span class="pkt-fileupload__queue-display__item__comment__text" aria-label="Kommentar tekst">
183
+ <span class="pkt-fileupload__queue-display__item__comment__text" aria-label=${strings.commentText}>
175
184
  ${comment.text}
176
185
  </span>
177
186
  <time class="pkt-fileupload__queue-display__item__comment__time">
178
- ${formatTimestamp(comment.timestamp)}
187
+ ${formatTimestamp(comment.timestamp, strings)}
179
188
  </time>
180
189
  </div>
181
190
  <div class="pkt-fileupload__queue-display__item__comment__actions">
182
191
  <button
183
192
  type="button"
184
193
  class="pkt-fileupload__queue-display__item__comment__action"
185
- aria-label="Rediger kommentar"
194
+ aria-label=${strings.editComment}
186
195
  ?disabled=${context.disabled}
187
196
  @click=${context.activate}
188
197
  >
@@ -191,7 +200,7 @@ export const createCommentOperation = (): TQueueItemOperation => ({
191
200
  <button
192
201
  type="button"
193
202
  class="pkt-fileupload__queue-display__item__comment__action"
194
- aria-label="Slett kommentar"
203
+ aria-label=${strings.deleteComment}
195
204
  ?disabled=${context.disabled}
196
205
  @click=${() => context.setAttribute(COMMENTS_ATTRIBUTE, undefined)}
197
206
  >
@@ -10,7 +10,9 @@ import type {
10
10
  TQueueOperationContext,
11
11
  TTransferProgress,
12
12
  } from './fileupload-types'
13
- import { formatString, nb } from 'shared-strings'
13
+ import { formatString, type TPktStrings } from 'shared-strings'
14
+
15
+ type TFileuploadStrings = TPktStrings['fileupload']
14
16
 
15
17
  type TRenderQueueItemProps = {
16
18
  file: FileItem
@@ -24,7 +26,7 @@ type TRenderQueueItemProps = {
24
26
  transferErrorMessage?: string
25
27
  transferShowProgress?: boolean
26
28
  transferLastProgress?: number
27
- loadingText?: string
29
+ strings: TFileuploadStrings
28
30
  operations: TQueueItemOperation[]
29
31
  activeOperationId?: string
30
32
  truncateTail?: number
@@ -70,9 +72,11 @@ const getProgressState = (progress: TTransferProgress): 'in-progress' | 'error'
70
72
  return 'idle'
71
73
  }
72
74
 
73
- const renderLoadingText = (loadingText?: string) =>
74
- html`<span class="pkt-fileupload__queue-display__item__loading-text" aria-label="Laster opp fil"
75
- >${loadingText ?? 'Laster opp...'}</span
75
+ const renderLoadingText = (strings: TFileuploadStrings) =>
76
+ html`<span
77
+ class="pkt-fileupload__queue-display__item__loading-text"
78
+ aria-label=${strings.uploadingFile}
79
+ >${strings.uploading}</span
76
80
  >`
77
81
 
78
82
  const createOperationContext = ({
@@ -112,7 +116,7 @@ const renderTransferInProgress = ({
112
116
  disabled,
113
117
  transferProgress,
114
118
  transferShowProgress,
115
- loadingText,
119
+ strings,
116
120
  truncateTail,
117
121
  onCancel,
118
122
  iconName = 'document-text',
@@ -122,7 +126,7 @@ const renderTransferInProgress = ({
122
126
  disabled: boolean
123
127
  transferProgress: number
124
128
  transferShowProgress?: boolean
125
- loadingText?: string
129
+ strings: TFileuploadStrings
126
130
  truncateTail?: number
127
131
  onCancel: (fileId: string) => void
128
132
  iconName?: string
@@ -140,11 +144,11 @@ const renderTransferInProgress = ({
140
144
  <button
141
145
  type="button"
142
146
  class="pkt-fileupload__queue-display__item__cancel-button"
143
- aria-label="Avbryt opplasting"
147
+ aria-label=${strings.cancelUpload}
144
148
  ?disabled=${disabled}
145
149
  @click=${() => onCancel(file.fileId)}
146
150
  >
147
- Avbryt
151
+ ${strings.cancel}
148
152
  </button>
149
153
  ${showProgressBar
150
154
  ? html`
@@ -159,7 +163,7 @@ const renderTransferInProgress = ({
159
163
  >${Math.round(transferProgress * 100)}%</span
160
164
  >
161
165
  `
162
- : renderLoadingText(loadingText)}
166
+ : renderLoadingText(strings)}
163
167
  `
164
168
  }
165
169
 
@@ -170,6 +174,7 @@ const renderTransferError = ({
170
174
  transferShowProgress,
171
175
  transferLastProgress,
172
176
  transferErrorMessage,
177
+ strings,
173
178
  truncateTail,
174
179
  onCancel,
175
180
  }: {
@@ -179,6 +184,7 @@ const renderTransferError = ({
179
184
  transferShowProgress?: boolean
180
185
  transferLastProgress?: number
181
186
  transferErrorMessage?: string
187
+ strings: TFileuploadStrings
182
188
  truncateTail?: number
183
189
  onCancel: (fileId: string) => void
184
190
  }) => {
@@ -196,11 +202,11 @@ const renderTransferError = ({
196
202
  <button
197
203
  type="button"
198
204
  class="pkt-fileupload__queue-display__item__cancel-button"
199
- aria-label="Fjern fil som feilet under opplasting"
205
+ aria-label=${strings.removeFailedFile}
200
206
  ?disabled=${disabled}
201
207
  @click=${() => onCancel(file.fileId)}
202
208
  >
203
- Fjern
209
+ ${strings.removeFailed}
204
210
  </button>
205
211
  ${showProgressError
206
212
  ? html`
@@ -424,6 +430,7 @@ const renderThumbnailIdleMain = ({
424
430
  previewEnabled,
425
431
  canOpenPreview,
426
432
  truncateTail,
433
+ strings,
427
434
  onOpenPreview,
428
435
  onThumbnailImageError,
429
436
  }: {
@@ -432,6 +439,7 @@ const renderThumbnailIdleMain = ({
432
439
  previewEnabled?: boolean
433
440
  canOpenPreview?: boolean
434
441
  truncateTail?: number
442
+ strings: TFileuploadStrings
435
443
  onOpenPreview?: (fileId: string) => void
436
444
  onThumbnailImageError?: (fileId: string) => void
437
445
  }) => {
@@ -450,7 +458,7 @@ const renderThumbnailIdleMain = ({
450
458
  <button
451
459
  type="button"
452
460
  class="pkt-fileupload__queue-display__item__thumbnail__image-wrapper pkt-btn pkt-btn--medium pkt-btn--secondary pkt-btn--label-only"
453
- aria-label=${formatString(nb.fileupload.previewImage, { filename })}
461
+ aria-label=${formatString(strings.previewImage, { filename })}
454
462
  ?disabled=${!isInteractive}
455
463
  @click=${() => {
456
464
  if (!isInteractive || !onOpenPreview) return
@@ -500,7 +508,7 @@ export const renderFilenameQueueItem = ({
500
508
  transferErrorMessage,
501
509
  transferShowProgress,
502
510
  transferLastProgress,
503
- loadingText,
511
+ strings,
504
512
  truncateTail,
505
513
  onCancel,
506
514
  }: TRenderQueueItemProps) => {
@@ -550,7 +558,7 @@ export const renderFilenameQueueItem = ({
550
558
  disabled,
551
559
  transferProgress: transferProgress as number,
552
560
  transferShowProgress,
553
- loadingText,
561
+ strings,
554
562
  truncateTail,
555
563
  onCancel,
556
564
  })
@@ -562,6 +570,7 @@ export const renderFilenameQueueItem = ({
562
570
  transferShowProgress,
563
571
  transferLastProgress,
564
572
  transferErrorMessage,
573
+ strings,
565
574
  truncateTail,
566
575
  onCancel,
567
576
  })
@@ -638,7 +647,7 @@ export const renderThumbnailQueueItem = ({
638
647
  transferErrorMessage,
639
648
  transferShowProgress,
640
649
  transferLastProgress,
641
- loadingText,
650
+ strings,
642
651
  truncateTail,
643
652
  onCancel,
644
653
  onOpenPreview,
@@ -690,7 +699,7 @@ export const renderThumbnailQueueItem = ({
690
699
  disabled,
691
700
  transferProgress: transferProgress as number,
692
701
  transferShowProgress,
693
- loadingText,
702
+ strings,
694
703
  truncateTail,
695
704
  onCancel,
696
705
  iconName: 'picture',
@@ -703,6 +712,7 @@ export const renderThumbnailQueueItem = ({
703
712
  transferShowProgress,
704
713
  transferLastProgress,
705
714
  transferErrorMessage,
715
+ strings,
706
716
  truncateTail,
707
717
  onCancel,
708
718
  })
@@ -723,6 +733,7 @@ export const renderThumbnailQueueItem = ({
723
733
  previewEnabled,
724
734
  canOpenPreview,
725
735
  truncateTail,
736
+ strings,
726
737
  onOpenPreview,
727
738
  onThumbnailImageError,
728
739
  })}