@oslokommune/punkt-elements 16.17.2 → 16.17.3
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.
- package/CHANGELOG.md +17 -0
- package/dist/components/modal/modal.d.ts +1 -0
- package/dist/docs/components/modal.d.ts +8 -0
- package/dist/{fileupload-F9UMO7eS.js → fileupload-IXSGrqiH.js} +1 -1
- package/dist/{fileupload-BD_0oMrW.cjs → fileupload-qc0fHcR-.cjs} +1 -1
- package/dist/{header-j0SSHF4C.js → header-BGknkrEt.js} +4 -4
- package/dist/{header-DZranHLm.cjs → header-C1hDYMRX.cjs} +4 -4
- package/dist/modal-B7-0F5q7.cjs +35 -0
- package/dist/{modal-Ca7dETTw.js → modal-Ca-6xVkg.js} +20 -10
- package/dist/pkt-fileupload.cjs +1 -1
- package/dist/pkt-fileupload.js +1 -1
- package/dist/pkt-header.cjs +1 -1
- package/dist/pkt-header.js +1 -1
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +3 -3
- package/dist/pkt-modal.cjs +1 -1
- package/dist/pkt-modal.js +1 -1
- package/dist/shared-utils/modal-scroll-lock.d.ts +10 -0
- package/package.json +2 -2
- package/src/components/header/header-service.ts +4 -4
- package/src/components/header/types.ts +2 -2
- package/src/components/modal/modal.ts +12 -2
- package/dist/modal-C_LxgxzC.cjs +0 -35
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,23 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [16.17.3](https://github.com/oslokommune/punkt/compare/16.17.2...16.17.3) (2026-05-27)
|
|
9
|
+
|
|
10
|
+
### ⚠ BREAKING CHANGES
|
|
11
|
+
Ingen
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
Ingen
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
Ingen
|
|
18
|
+
|
|
19
|
+
### Chores
|
|
20
|
+
Ingen
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
|
|
8
25
|
## [16.17.2](https://github.com/oslokommune/punkt/compare/16.17.1...16.17.2) (2026-05-20)
|
|
9
26
|
|
|
10
27
|
### ⚠ BREAKING CHANGES
|
|
@@ -27,6 +27,7 @@ export declare class PktModal extends PktElementWithSlot implements IPktModal {
|
|
|
27
27
|
drawerPosition?: 'left' | 'right';
|
|
28
28
|
transparentBackdrop?: boolean;
|
|
29
29
|
dialogRef: Ref<HTMLDialogElement>;
|
|
30
|
+
private _scrollLockToken;
|
|
30
31
|
_isOpen: boolean;
|
|
31
32
|
constructor();
|
|
32
33
|
connectedCallback(): Promise<void>;
|
|
@@ -2,6 +2,12 @@ import { PktElement } from '../../base-elements/element';
|
|
|
2
2
|
export declare class Modal extends PktElement {
|
|
3
3
|
declarativeOpen: boolean;
|
|
4
4
|
accordionModalOpen: boolean;
|
|
5
|
+
unmountModalOpen: boolean;
|
|
6
|
+
multiAOpen: boolean;
|
|
7
|
+
multiBOpen: boolean;
|
|
8
|
+
bodyHasLockClass: boolean;
|
|
9
|
+
bodyLockCount: string;
|
|
10
|
+
private _bodyObserver?;
|
|
5
11
|
pktModal1: HTMLDialogElement;
|
|
6
12
|
pktModal2: HTMLDialogElement;
|
|
7
13
|
pktModal22: HTMLDialogElement;
|
|
@@ -10,5 +16,7 @@ export declare class Modal extends PktElement {
|
|
|
10
16
|
pktModal4: HTMLDialogElement;
|
|
11
17
|
pktModal5: HTMLDialogElement;
|
|
12
18
|
pktModal6: HTMLDialogElement;
|
|
19
|
+
connectedCallback(): void;
|
|
20
|
+
disconnectedCallback(): void;
|
|
13
21
|
render(): import('lit-html').TemplateResult<1>;
|
|
14
22
|
}
|
|
@@ -6,7 +6,7 @@ import { t as s } from "./if-defined-Cjj8qN-Z.js";
|
|
|
6
6
|
import { t as c } from "./converters-jauYkvNh.js";
|
|
7
7
|
import { n as l } from "./utils-BOOZ0ppt.js";
|
|
8
8
|
import "./input-wrapper-DVU68NcJ.js";
|
|
9
|
-
import "./modal-
|
|
9
|
+
import "./modal-Ca-6xVkg.js";
|
|
10
10
|
import "./progressbar-o-M17HPA.js";
|
|
11
11
|
//#region ../../shared-types/fileupload.ts
|
|
12
12
|
var u = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`);require(`./alert-BEEnTiCb.cjs`),require(`./icon-Dr8sfT2X.cjs`);const n=require(`./if-defined-XKOD_t_V.cjs`),r=require(`./converters-Bffq_YDm.cjs`),i=require(`./utils-CM67Oudc.cjs`);require(`./input-wrapper-DOIWggEv.cjs`),require(`./modal-C_LxgxzC.cjs`),require(`./progressbar-Ca7pRjmt.cjs`);var a={dropZoneDragMultiple:`Dra filer hit for å laste dem opp eller`,dropZoneDragSingle:`Dra en fil hit for å laste den opp eller`,dropZoneDragMultipleThumbnail:`Dra bilder hit for å laste dem opp eller`,dropZoneDragSingleThumbnail:`Dra et bilde hit for å laste det opp eller`,dropZoneDragActiveMultiple:`Slipp filene her`,dropZoneDragActiveSingle:`Slipp filen her`,dropZoneDragActiveMultipleThumbnail:`Slipp bildene her`,dropZoneDragActiveSingleThumbnail:`Slipp bildet her`,dropZoneOpenFileDialogMultiple:`velg filer`,dropZoneOpenFileDialogSingle:`velg en fil`,dropZoneOpenFileDialogMultipleThumbnail:`velg fra kamerarull`,dropZoneOpenFileDialogSingleThumbnail:`velg fra kamerarull`,supportedFormatsPrefix:`Format:`,invalidFormatDefault:e=>`Ugyldig filtype. Tillatte formater: ${e}`,sizeTooLargeDefault:e=>`Filen er for stor. Maks størrelse er ${e}.`,requiredMissing:`Du må laste opp minst én fil.`,genericValidationRejection:`Filen ble avvist av validering.`,unknownFilename:`Ukjent fil`,fileLabel:e=>e===1?`fil`:`filer`,srFileAdded:e=>`Filen «${e}» er lagt til`,srFilesAdded:e=>`${e} filer er lagt til`,srFilesUploadedOfTotal:(e,t,n)=>`${e} av ${t} ${n} lastet opp`,srFilesFailedOfTotal:(e,t,n)=>`Feil ved opplasting: ${e} av ${t} ${n} feilet`};function o(e){if(e==null||e===``)return;if(typeof e==`number`)return Number.isFinite(e)&&e>0?e:void 0;let t=String(e).trim(),n=Number(t);if(!Number.isNaN(n)&&n>0)return n;let r=t.match(/^(\d+(?:\.\d+)?)\s*(B|KB|MB|GB)$/i);if(!r){console.warn(`PktFileUpload: Invalid maxFileSize format "${t}". Use format like "5MB", "500KB", "1GB", or bytes.`);return}let i=parseFloat(r[1]);switch(r[2].toUpperCase()){case`B`:return i;case`KB`:return i*1024;case`MB`:return i*1024*1024;case`GB`:return i*1024*1024*1024;default:return}}function s(e){return e<1024?`${Math.round(e)} B`:e<1024*1024?`${Math.round(e/1024)} KB`:e<1024*1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/(1024*1024*1024))} GB`}function c(e){return Array.isArray(e)?e.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[]}function l(e){return e?e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean):[]}function u(e,t,n){let r=e.toLowerCase().replace(/^\./,``);if(r.includes(`/`)){if(r.endsWith(`/*`)){let e=r.replace(`/*`,``);return n.startsWith(`${e}/`)}return n===r}return t===r}function d(e,t){let n=c(t);if(n.length===0)return!0;let r=e.name.split(`.`).pop()?.toLowerCase()??``,i=e.type.toLowerCase();return n.some(e=>u(e,r,i))}function f(e,t){let n=(e??``).trim();if(n)return n;let r=c(t);return r.length===0?``:r.map(e=>e.includes(`/`)||e.startsWith(`.`)?e:`.${e}`).join(`, `)}function p(e){return e.includes(`/`)?e:e.replace(/^\./,``).toUpperCase()}function m(e,t){let n=c(e);if(n.length>0)return n.map(p).join(`, `);let r=l(t);return r.length>0?r.map(p).join(`, `):``}function h(e,t,n){return((e??``).trim()||t).replace(/\{(\w+)\}/g,(e,t)=>n[t]??`{${t}}`)}function g(e,t){let n=c(t.allowedFormats);if(n.length>0&&!d(e,n)){let e=n.join(`, `),r=`Ugyldig filtype. Tillatte formater: ${e}`;return h(t.formatErrorMessage,r,{formats:e})}let r=o(t.maxFileSize);if(r!==void 0&&e.size>r){let e=s(r),n=`Filen er for stor. Maks størrelse er ${e}.`;return h(t.sizeErrorMessage,n,{maxSize:e})}if(t.onFileValidation){let n=t.onFileValidation(e);if(n)return n}return null}function _(e){let t=e.file;if(t?.type?.startsWith(`image/`))return!0;let n=e.attributes?.targetFilename||t?.name||``;return/\.(jpe?g|png|gif|webp|heic|heif|bmp|svg)$/i.test(n)}function v(e){return typeof e==`number`?`in-progress`:e===`error`?`error`:`idle`}function y(e,t,n){let r={"in-progress":0,error:1,idle:2};return e.map(e=>{let r=t?.find(t=>t.fileId===e.fileId);return{...e,progress:r?.progress??(n===`form`?`done`:`queued`),errorMessage:r?.errorMessage,showProgress:r?.showProgress,lastProgress:r?.lastProgress}}).sort((e,t)=>r[v(e.progress)]-r[v(t.progress)])}function b(e){if(!e)return[];let t=[`a[href]:not([tabindex="-1"])`,`button:not([disabled]):not([tabindex="-1"])`,`input:not([disabled]):not([type="hidden"]):not([tabindex="-1"])`,`select:not([disabled]):not([tabindex="-1"])`,`textarea:not([disabled]):not([tabindex="-1"])`,`[tabindex]:not([tabindex="-1"])`].join(`, `);return Array.from(e.querySelectorAll(t)).filter(e=>!e.hasAttribute(`inert`))}function x(e,t){if(e.key!==`Tab`)return!1;let n=b(t);if(n.length===0)return e.preventDefault(),!0;let r=n[0],i=n[n.length-1],a=(t?.ownerDocument??document).activeElement,o=!!a&&n.includes(a);return e.shiftKey?!o||a===r?(e.preventDefault(),i.focus(),!0):!1:!o||a===i?(e.preventDefault(),r.focus(),!0):!1}function S(e,t){return!t||t<=0||e.length<=t+3?null:{head:e.slice(0,e.length-t),tail:e.slice(-t)}}function C(e,t,n){return n<=0?0:t===`prev`?e<=0?n-1:e-1:e>=n-1?0:e+1}function w(e,t){let n=e.length;if(n===0||!t||t.length===0)return{totalCount:n,uploadedCount:0,failedCount:0};let r=0,i=0;for(let n of e){let e=t.find(e=>e.fileId===n.fileId);e?.progress===`done`?r++:e?.progress===`error`&&i++}return{totalCount:n,uploadedCount:r,failedCount:i}}function T(e,t=a.unknownFilename){return e.attributes?.targetFilename||e.file?.name||t}var E=class extends e.t{constructor(...e){super(...e),this.id=`pkt-fileupload-${i.n()}`,this.name=`files`,this.label=``,this.helptext=``,this.required=!1,this.multiple=!1,this.disabled=!1,this.fullwidth=!1,this.uploadStrategy=`form`,this.itemRenderer=`filename`,this.accept=``,this.allowedFormats=[],this.formatErrorMessage=``,this.sizeErrorMessage=``,this.transfers=[],this.addCommentsEnabled=!1,this.renameFilesEnabled=!1,this.extraOperations=[],this.enableImagePreview=!1,this.hasError=!1,this.errorMessage=``,this.optionalTag=!1,this.requiredTag=!1,this.truncateTail=4,this.files=[],this.isDragActive=!1,this.validationErrorMessage=null,this.addedAnnouncement=``,this.thumbnailUrls={},this.hasInitializedValue=!1,this.hasWarnedInvalidValueCombo=!1,this.thumbnailFileById=new Map,this.connectedForm=null,this.addedAnnouncementTimer=null,this.requiredSelectionMessage=a.requiredMissing,this.onNativeFileChange=e=>{let t=e.target;this.addFiles(t.files?Array.from(t.files):[]),this.uploadStrategy===`custom`&&(t.value=``)},this.openFileDialog=e=>{e.preventDefault(),e.stopPropagation(),!this.disabled&&this.querySelector(`#${this.id}-input`)?.click()},this.onDropZoneClick=e=>{this.disabled||e.target.closest(`.pkt-fileupload__drop-zone__placeholder__title__open-file-dialog`)||this.querySelector(`#${this.id}-input`)?.click()},this.onDragOver=e=>{e.preventDefault(),!this.disabled&&(this.isDragActive=!0)},this.onDragLeave=()=>{this.isDragActive=!1},this.onDrop=e=>{if(e.preventDefault(),this.isDragActive=!1,this.disabled)return;let t=e.dataTransfer?.files?Array.from(e.dataTransfer.files):[];this.addFiles(t)},this.onHostFormSubmit=e=>{!this.required||this.uploadStrategy!==`custom`||this.getCurrentFiles().length>0||(this.validationErrorMessage=this.requiredSelectionMessage,e.preventDefault())}}get isControlled(){return this.value!==void 0}get hasEffectiveError(){return!!this.validationErrorMessage||this.hasError||!!this.errorMessage.trim()}get effectiveErrorMessage(){return this.validationErrorMessage??this.errorMessage??``}get hasValidationError(){return!!this.validationErrorMessage}firstUpdated(e){super.firstUpdated?.(e),this.hasInitializedValue||=(this.files=this.value??this.defaultValue??[],this.syncThumbnailUrls(this.files),!0),this.value!==void 0&&this.defaultValue!==void 0&&this.warnInvalidValueCombo()}willUpdate(e){super.willUpdate(e),this.hasInitializedValue&&this.isControlled&&(e.has(`value`)||e.has(`itemRenderer`)||e.has(`enableImagePreview`))&&(this.files=this.value??[],this.syncThumbnailUrls(this.files))}updated(e){super.updated(e),(e.has(`uploadStrategy`)||e.has(`required`)||e.has(`value`))&&this.syncFormSubmitListener(),this.uploadStrategy===`form`&&(e.has(`value`)||e.has(`files`)||e.has(`uploadStrategy`))&&this.syncNativeInputFiles()}syncNativeInputFiles(){let e=this.querySelector(`#${this.id}-input`);if(!(!e||typeof DataTransfer>`u`))try{let t=new DataTransfer;for(let e of this.getCurrentFiles())e.file&&t.items.add(e.file);e.files=t.files}catch{}}warnInvalidValueCombo(){this.hasWarnedInvalidValueCombo||=(console.warn(`PktFileUpload: Både value og defaultValue er angitt. Komponenten kan være enten kontrollert eller ukontrollert, ikke begge. value vil bli prioritert.`),!0)}disconnectedCallback(){this.teardownFormSubmitListener(),this.addedAnnouncementTimer&&=(clearTimeout(this.addedAnnouncementTimer),null),super.disconnectedCallback(),this.revokeAllThumbnailUrls()}setAddedAnnouncement(e){this.addedAnnouncement=e,this.addedAnnouncementTimer&&clearTimeout(this.addedAnnouncementTimer),this.addedAnnouncementTimer=setTimeout(()=>{this.addedAnnouncement=``,this.addedAnnouncementTimer=null},1500)}connectedCallback(){super.connectedCallback(),this.syncFormSubmitListener()}addFiles(e){if(e.length===0)return;let t=this.multiple?e:[e[0]];for(let e of t){let t=this.validateFile(e);if(t){this.validationErrorMessage=t;return}}this.validationErrorMessage=null;let n=t.map(e=>({fileId:i.n(),file:e,attributes:{targetFilename:e.name}}));this.setAddedAnnouncement(n.length===1?a.srFileAdded(n[0].attributes.targetFilename):a.srFilesAdded(n.length));let r=this.getCurrentFiles(),o=this.multiple?[...r,...n]:[n[0]];this.commitFiles(o,`add`,n.map(e=>e.fileId)),this.uploadStrategy===`custom`&&n.forEach(e=>{this.dispatchEvent(new CustomEvent(`file-upload-requested`,{detail:{fileId:e.fileId,file:e.file,attributes:e.attributes},bubbles:!0,composed:!0}))})}getCurrentFiles(){return this.isControlled?this.value??[]:this.files}cancelTransfer(e){if(this.disabled)return;let t=this.getCurrentFiles().find(t=>t.fileId===e);t&&(this.removeFileItem(e),this.dispatchEvent(new CustomEvent(`transfer-cancelled`,{detail:{fileId:t.fileId,file:t.file,attributes:t.attributes},bubbles:!0,composed:!0})))}removeFileItem(e){if(this.disabled)return;let t=this.getCurrentFiles(),n=t.filter(t=>t.fileId!==e);n.length!==t.length&&this.commitFiles(n,`remove`,[e])}updateFileItem(e,t){let n=this.getCurrentFiles().map(n=>n.fileId===e?{...n,...t}:n);this.commitFiles(n,`update`,[e])}commitFiles(e,t,n){this.isControlled||(this.files=e,this.syncThumbnailUrls(e)),this.validationErrorMessage===this.requiredSelectionMessage&&e.length>0&&(this.validationErrorMessage=null),this.dispatchEvent(new CustomEvent(`files-changed`,{detail:{files:e,reason:t,changedFileIds:n},bubbles:!0,composed:!0}))}getThumbnailUrl(e){return this.thumbnailUrls[e.fileId]}getTransferProgress(e){let t=this.transfers.find(t=>t.fileId===e);return t?t.progress:this.uploadStrategy===`form`?`done`:`queued`}getTransferForFile(e){return this.transfers.find(t=>t.fileId===e)}isImageFile(e){return _(e)}formatFileSize(e){return s(e)}getResolvedAcceptValue(){return f(this.accept,this.allowedFormats)}getSupportedFormatsText(){return m(this.allowedFormats,this.accept)}getSortedFilesAndTransfers(){return y(this.getCurrentFiles(),this.transfers,this.uploadStrategy)}validateFile(e){let t=g(e,{allowedFormats:this.allowedFormats,maxFileSize:this.maxFileSize,formatErrorMessage:this.formatErrorMessage,sizeErrorMessage:this.sizeErrorMessage,onFileValidation:this.onFileValidation});if(t)return t;let n={file:e,errorMessage:null},r=new CustomEvent(`file-validate`,{detail:n,bubbles:!0,composed:!0,cancelable:!0});return this.dispatchEvent(r),n.errorMessage?n.errorMessage:r.defaultPrevented?a.genericValidationRejection:null}syncThumbnailUrls(e){if(!(typeof URL<`u`&&typeof URL.createObjectURL==`function`&&typeof URL.revokeObjectURL==`function`)){this.thumbnailUrls={},this.thumbnailFileById.clear();return}let t=new Set(e.map(e=>e.fileId)),n={};for(let[e,n]of Object.entries(this.thumbnailUrls))t.has(e)||(URL.revokeObjectURL(n),this.thumbnailFileById.delete(e));for(let t of e){let e=this.thumbnailUrls[t.fileId],r=this.thumbnailFileById.get(t.fileId);if(!t.file||!this.isImageFile(t)){e&&(URL.revokeObjectURL(e),this.thumbnailFileById.delete(t.fileId));continue}if(e&&r===t.file){n[t.fileId]=e;continue}e&&r!==t.file&&URL.revokeObjectURL(e);let i=URL.createObjectURL(t.file);this.thumbnailFileById.set(t.fileId,t.file),n[t.fileId]=i}this.thumbnailUrls=n}revokeAllThumbnailUrls(){if(typeof URL>`u`||typeof URL.revokeObjectURL!=`function`){this.thumbnailUrls={},this.thumbnailFileById.clear();return}Object.values(this.thumbnailUrls).forEach(e=>URL.revokeObjectURL(e)),this.thumbnailUrls={},this.thumbnailFileById.clear()}getSrUploadedMessage(){if(this.addedAnnouncement)return this.addedAnnouncement;let{totalCount:e,uploadedCount:t}=w(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:a.srFilesUploadedOfTotal(t,e,a.fileLabel(e))}getSrErrorsMessage(){let{totalCount:e,failedCount:t}=w(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:a.srFilesFailedOfTotal(t,e,a.fileLabel(e))}syncFormSubmitListener(){let e=this.closest(`form`);this.connectedForm!==e&&(this.teardownFormSubmitListener(),this.connectedForm=e,this.connectedForm&&this.connectedForm.addEventListener(`submit`,this.onHostFormSubmit))}teardownFormSubmitListener(){this.connectedForm&&=(this.connectedForm.removeEventListener(`submit`,this.onHostFormSubmit),null)}};e.r([e.s({type:String})],E.prototype,`id`,void 0),e.r([e.s({type:String})],E.prototype,`name`,void 0),e.r([e.s({type:String})],E.prototype,`label`,void 0),e.r([e.s({type:String})],E.prototype,`helptext`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`required`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`multiple`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`disabled`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`fullwidth`})],E.prototype,`fullwidth`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`upload-strategy`})],E.prototype,`uploadStrategy`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`item-renderer`})],E.prototype,`itemRenderer`,void 0),e.r([e.s({type:String})],E.prototype,`accept`,void 0),e.r([e.s({converter:r.t.csvToArray,attribute:`allowed-formats`})],E.prototype,`allowedFormats`,void 0),e.r([e.s({type:String,attribute:`format-error-message`})],E.prototype,`formatErrorMessage`,void 0),e.r([e.s({attribute:`max-file-size`})],E.prototype,`maxFileSize`,void 0),e.r([e.s({type:String,attribute:`size-error-message`})],E.prototype,`sizeErrorMessage`,void 0),e.r([e.s({attribute:!1})],E.prototype,`onFileValidation`,void 0),e.r([e.s({attribute:!1})],E.prototype,`transfers`,void 0),e.r([e.s({type:Boolean,attribute:`add-comments-enabled`})],E.prototype,`addCommentsEnabled`,void 0),e.r([e.s({type:Boolean,attribute:`rename-files-enabled`})],E.prototype,`renameFilesEnabled`,void 0),e.r([e.s({attribute:!1})],E.prototype,`extraOperations`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`enable-image-preview`})],E.prototype,`enableImagePreview`,void 0),e.r([e.s({type:Boolean,attribute:`has-error`})],E.prototype,`hasError`,void 0),e.r([e.s({type:String,attribute:`error-message`})],E.prototype,`errorMessage`,void 0),e.r([e.s({type:Boolean,attribute:`optional-tag`})],E.prototype,`optionalTag`,void 0),e.r([e.s({type:Boolean,attribute:`required-tag`})],E.prototype,`requiredTag`,void 0),e.r([e.s({type:Number,attribute:`truncate-tail`})],E.prototype,`truncateTail`,void 0),e.r([e.s({attribute:!1})],E.prototype,`value`,void 0),e.r([e.s({attribute:!1})],E.prototype,`defaultValue`,void 0),e.r([e.o()],E.prototype,`files`,void 0),e.r([e.o()],E.prototype,`isDragActive`,void 0),e.r([e.o()],E.prototype,`validationErrorMessage`,void 0),e.r([e.o()],E.prototype,`addedAnnouncement`,void 0),e.r([e.o()],E.prototype,`thumbnailUrls`,void 0);var D=`comments`,O=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?e:`${String(t.getDate()).padStart(2,`0`)}.${String(t.getMonth()+1).padStart(2,`0`)}.${t.getFullYear()} kl. ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`},k=(e,t,n)=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t()),e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())},A=(e,t,n)=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n()),(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t())},j=e=>({id:`remove`,title:`Slett`,ariaLabel:`Slett fil`,onClick:({file:t})=>e(t.fileId)}),M=()=>({id:`rename`,title:`Rediger`,ariaLabel:`Rediger filnavn`,renderInlineUI:t=>{let n=t.getAttribute(`targetFilename`)||t.file.attributes?.targetFilename||t.file.file?.name||``,r=`pkt-fileupload-rename-${t.file.fileId}`,i=()=>{let e=document.getElementById(r)?.value?.trim();e&&t.setAttribute(`targetFilename`,e),t.close()};return e.d`
|
|
1
|
+
const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`);require(`./alert-BEEnTiCb.cjs`),require(`./icon-Dr8sfT2X.cjs`);const n=require(`./if-defined-XKOD_t_V.cjs`),r=require(`./converters-Bffq_YDm.cjs`),i=require(`./utils-CM67Oudc.cjs`);require(`./input-wrapper-DOIWggEv.cjs`),require(`./modal-B7-0F5q7.cjs`),require(`./progressbar-Ca7pRjmt.cjs`);var a={dropZoneDragMultiple:`Dra filer hit for å laste dem opp eller`,dropZoneDragSingle:`Dra en fil hit for å laste den opp eller`,dropZoneDragMultipleThumbnail:`Dra bilder hit for å laste dem opp eller`,dropZoneDragSingleThumbnail:`Dra et bilde hit for å laste det opp eller`,dropZoneDragActiveMultiple:`Slipp filene her`,dropZoneDragActiveSingle:`Slipp filen her`,dropZoneDragActiveMultipleThumbnail:`Slipp bildene her`,dropZoneDragActiveSingleThumbnail:`Slipp bildet her`,dropZoneOpenFileDialogMultiple:`velg filer`,dropZoneOpenFileDialogSingle:`velg en fil`,dropZoneOpenFileDialogMultipleThumbnail:`velg fra kamerarull`,dropZoneOpenFileDialogSingleThumbnail:`velg fra kamerarull`,supportedFormatsPrefix:`Format:`,invalidFormatDefault:e=>`Ugyldig filtype. Tillatte formater: ${e}`,sizeTooLargeDefault:e=>`Filen er for stor. Maks størrelse er ${e}.`,requiredMissing:`Du må laste opp minst én fil.`,genericValidationRejection:`Filen ble avvist av validering.`,unknownFilename:`Ukjent fil`,fileLabel:e=>e===1?`fil`:`filer`,srFileAdded:e=>`Filen «${e}» er lagt til`,srFilesAdded:e=>`${e} filer er lagt til`,srFilesUploadedOfTotal:(e,t,n)=>`${e} av ${t} ${n} lastet opp`,srFilesFailedOfTotal:(e,t,n)=>`Feil ved opplasting: ${e} av ${t} ${n} feilet`};function o(e){if(e==null||e===``)return;if(typeof e==`number`)return Number.isFinite(e)&&e>0?e:void 0;let t=String(e).trim(),n=Number(t);if(!Number.isNaN(n)&&n>0)return n;let r=t.match(/^(\d+(?:\.\d+)?)\s*(B|KB|MB|GB)$/i);if(!r){console.warn(`PktFileUpload: Invalid maxFileSize format "${t}". Use format like "5MB", "500KB", "1GB", or bytes.`);return}let i=parseFloat(r[1]);switch(r[2].toUpperCase()){case`B`:return i;case`KB`:return i*1024;case`MB`:return i*1024*1024;case`GB`:return i*1024*1024*1024;default:return}}function s(e){return e<1024?`${Math.round(e)} B`:e<1024*1024?`${Math.round(e/1024)} KB`:e<1024*1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/(1024*1024*1024))} GB`}function c(e){return Array.isArray(e)?e.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[]}function l(e){return e?e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean):[]}function u(e,t,n){let r=e.toLowerCase().replace(/^\./,``);if(r.includes(`/`)){if(r.endsWith(`/*`)){let e=r.replace(`/*`,``);return n.startsWith(`${e}/`)}return n===r}return t===r}function d(e,t){let n=c(t);if(n.length===0)return!0;let r=e.name.split(`.`).pop()?.toLowerCase()??``,i=e.type.toLowerCase();return n.some(e=>u(e,r,i))}function f(e,t){let n=(e??``).trim();if(n)return n;let r=c(t);return r.length===0?``:r.map(e=>e.includes(`/`)||e.startsWith(`.`)?e:`.${e}`).join(`, `)}function p(e){return e.includes(`/`)?e:e.replace(/^\./,``).toUpperCase()}function m(e,t){let n=c(e);if(n.length>0)return n.map(p).join(`, `);let r=l(t);return r.length>0?r.map(p).join(`, `):``}function h(e,t,n){return((e??``).trim()||t).replace(/\{(\w+)\}/g,(e,t)=>n[t]??`{${t}}`)}function g(e,t){let n=c(t.allowedFormats);if(n.length>0&&!d(e,n)){let e=n.join(`, `),r=`Ugyldig filtype. Tillatte formater: ${e}`;return h(t.formatErrorMessage,r,{formats:e})}let r=o(t.maxFileSize);if(r!==void 0&&e.size>r){let e=s(r),n=`Filen er for stor. Maks størrelse er ${e}.`;return h(t.sizeErrorMessage,n,{maxSize:e})}if(t.onFileValidation){let n=t.onFileValidation(e);if(n)return n}return null}function _(e){let t=e.file;if(t?.type?.startsWith(`image/`))return!0;let n=e.attributes?.targetFilename||t?.name||``;return/\.(jpe?g|png|gif|webp|heic|heif|bmp|svg)$/i.test(n)}function v(e){return typeof e==`number`?`in-progress`:e===`error`?`error`:`idle`}function y(e,t,n){let r={"in-progress":0,error:1,idle:2};return e.map(e=>{let r=t?.find(t=>t.fileId===e.fileId);return{...e,progress:r?.progress??(n===`form`?`done`:`queued`),errorMessage:r?.errorMessage,showProgress:r?.showProgress,lastProgress:r?.lastProgress}}).sort((e,t)=>r[v(e.progress)]-r[v(t.progress)])}function b(e){if(!e)return[];let t=[`a[href]:not([tabindex="-1"])`,`button:not([disabled]):not([tabindex="-1"])`,`input:not([disabled]):not([type="hidden"]):not([tabindex="-1"])`,`select:not([disabled]):not([tabindex="-1"])`,`textarea:not([disabled]):not([tabindex="-1"])`,`[tabindex]:not([tabindex="-1"])`].join(`, `);return Array.from(e.querySelectorAll(t)).filter(e=>!e.hasAttribute(`inert`))}function x(e,t){if(e.key!==`Tab`)return!1;let n=b(t);if(n.length===0)return e.preventDefault(),!0;let r=n[0],i=n[n.length-1],a=(t?.ownerDocument??document).activeElement,o=!!a&&n.includes(a);return e.shiftKey?!o||a===r?(e.preventDefault(),i.focus(),!0):!1:!o||a===i?(e.preventDefault(),r.focus(),!0):!1}function S(e,t){return!t||t<=0||e.length<=t+3?null:{head:e.slice(0,e.length-t),tail:e.slice(-t)}}function C(e,t,n){return n<=0?0:t===`prev`?e<=0?n-1:e-1:e>=n-1?0:e+1}function w(e,t){let n=e.length;if(n===0||!t||t.length===0)return{totalCount:n,uploadedCount:0,failedCount:0};let r=0,i=0;for(let n of e){let e=t.find(e=>e.fileId===n.fileId);e?.progress===`done`?r++:e?.progress===`error`&&i++}return{totalCount:n,uploadedCount:r,failedCount:i}}function T(e,t=a.unknownFilename){return e.attributes?.targetFilename||e.file?.name||t}var E=class extends e.t{constructor(...e){super(...e),this.id=`pkt-fileupload-${i.n()}`,this.name=`files`,this.label=``,this.helptext=``,this.required=!1,this.multiple=!1,this.disabled=!1,this.fullwidth=!1,this.uploadStrategy=`form`,this.itemRenderer=`filename`,this.accept=``,this.allowedFormats=[],this.formatErrorMessage=``,this.sizeErrorMessage=``,this.transfers=[],this.addCommentsEnabled=!1,this.renameFilesEnabled=!1,this.extraOperations=[],this.enableImagePreview=!1,this.hasError=!1,this.errorMessage=``,this.optionalTag=!1,this.requiredTag=!1,this.truncateTail=4,this.files=[],this.isDragActive=!1,this.validationErrorMessage=null,this.addedAnnouncement=``,this.thumbnailUrls={},this.hasInitializedValue=!1,this.hasWarnedInvalidValueCombo=!1,this.thumbnailFileById=new Map,this.connectedForm=null,this.addedAnnouncementTimer=null,this.requiredSelectionMessage=a.requiredMissing,this.onNativeFileChange=e=>{let t=e.target;this.addFiles(t.files?Array.from(t.files):[]),this.uploadStrategy===`custom`&&(t.value=``)},this.openFileDialog=e=>{e.preventDefault(),e.stopPropagation(),!this.disabled&&this.querySelector(`#${this.id}-input`)?.click()},this.onDropZoneClick=e=>{this.disabled||e.target.closest(`.pkt-fileupload__drop-zone__placeholder__title__open-file-dialog`)||this.querySelector(`#${this.id}-input`)?.click()},this.onDragOver=e=>{e.preventDefault(),!this.disabled&&(this.isDragActive=!0)},this.onDragLeave=()=>{this.isDragActive=!1},this.onDrop=e=>{if(e.preventDefault(),this.isDragActive=!1,this.disabled)return;let t=e.dataTransfer?.files?Array.from(e.dataTransfer.files):[];this.addFiles(t)},this.onHostFormSubmit=e=>{!this.required||this.uploadStrategy!==`custom`||this.getCurrentFiles().length>0||(this.validationErrorMessage=this.requiredSelectionMessage,e.preventDefault())}}get isControlled(){return this.value!==void 0}get hasEffectiveError(){return!!this.validationErrorMessage||this.hasError||!!this.errorMessage.trim()}get effectiveErrorMessage(){return this.validationErrorMessage??this.errorMessage??``}get hasValidationError(){return!!this.validationErrorMessage}firstUpdated(e){super.firstUpdated?.(e),this.hasInitializedValue||=(this.files=this.value??this.defaultValue??[],this.syncThumbnailUrls(this.files),!0),this.value!==void 0&&this.defaultValue!==void 0&&this.warnInvalidValueCombo()}willUpdate(e){super.willUpdate(e),this.hasInitializedValue&&this.isControlled&&(e.has(`value`)||e.has(`itemRenderer`)||e.has(`enableImagePreview`))&&(this.files=this.value??[],this.syncThumbnailUrls(this.files))}updated(e){super.updated(e),(e.has(`uploadStrategy`)||e.has(`required`)||e.has(`value`))&&this.syncFormSubmitListener(),this.uploadStrategy===`form`&&(e.has(`value`)||e.has(`files`)||e.has(`uploadStrategy`))&&this.syncNativeInputFiles()}syncNativeInputFiles(){let e=this.querySelector(`#${this.id}-input`);if(!(!e||typeof DataTransfer>`u`))try{let t=new DataTransfer;for(let e of this.getCurrentFiles())e.file&&t.items.add(e.file);e.files=t.files}catch{}}warnInvalidValueCombo(){this.hasWarnedInvalidValueCombo||=(console.warn(`PktFileUpload: Både value og defaultValue er angitt. Komponenten kan være enten kontrollert eller ukontrollert, ikke begge. value vil bli prioritert.`),!0)}disconnectedCallback(){this.teardownFormSubmitListener(),this.addedAnnouncementTimer&&=(clearTimeout(this.addedAnnouncementTimer),null),super.disconnectedCallback(),this.revokeAllThumbnailUrls()}setAddedAnnouncement(e){this.addedAnnouncement=e,this.addedAnnouncementTimer&&clearTimeout(this.addedAnnouncementTimer),this.addedAnnouncementTimer=setTimeout(()=>{this.addedAnnouncement=``,this.addedAnnouncementTimer=null},1500)}connectedCallback(){super.connectedCallback(),this.syncFormSubmitListener()}addFiles(e){if(e.length===0)return;let t=this.multiple?e:[e[0]];for(let e of t){let t=this.validateFile(e);if(t){this.validationErrorMessage=t;return}}this.validationErrorMessage=null;let n=t.map(e=>({fileId:i.n(),file:e,attributes:{targetFilename:e.name}}));this.setAddedAnnouncement(n.length===1?a.srFileAdded(n[0].attributes.targetFilename):a.srFilesAdded(n.length));let r=this.getCurrentFiles(),o=this.multiple?[...r,...n]:[n[0]];this.commitFiles(o,`add`,n.map(e=>e.fileId)),this.uploadStrategy===`custom`&&n.forEach(e=>{this.dispatchEvent(new CustomEvent(`file-upload-requested`,{detail:{fileId:e.fileId,file:e.file,attributes:e.attributes},bubbles:!0,composed:!0}))})}getCurrentFiles(){return this.isControlled?this.value??[]:this.files}cancelTransfer(e){if(this.disabled)return;let t=this.getCurrentFiles().find(t=>t.fileId===e);t&&(this.removeFileItem(e),this.dispatchEvent(new CustomEvent(`transfer-cancelled`,{detail:{fileId:t.fileId,file:t.file,attributes:t.attributes},bubbles:!0,composed:!0})))}removeFileItem(e){if(this.disabled)return;let t=this.getCurrentFiles(),n=t.filter(t=>t.fileId!==e);n.length!==t.length&&this.commitFiles(n,`remove`,[e])}updateFileItem(e,t){let n=this.getCurrentFiles().map(n=>n.fileId===e?{...n,...t}:n);this.commitFiles(n,`update`,[e])}commitFiles(e,t,n){this.isControlled||(this.files=e,this.syncThumbnailUrls(e)),this.validationErrorMessage===this.requiredSelectionMessage&&e.length>0&&(this.validationErrorMessage=null),this.dispatchEvent(new CustomEvent(`files-changed`,{detail:{files:e,reason:t,changedFileIds:n},bubbles:!0,composed:!0}))}getThumbnailUrl(e){return this.thumbnailUrls[e.fileId]}getTransferProgress(e){let t=this.transfers.find(t=>t.fileId===e);return t?t.progress:this.uploadStrategy===`form`?`done`:`queued`}getTransferForFile(e){return this.transfers.find(t=>t.fileId===e)}isImageFile(e){return _(e)}formatFileSize(e){return s(e)}getResolvedAcceptValue(){return f(this.accept,this.allowedFormats)}getSupportedFormatsText(){return m(this.allowedFormats,this.accept)}getSortedFilesAndTransfers(){return y(this.getCurrentFiles(),this.transfers,this.uploadStrategy)}validateFile(e){let t=g(e,{allowedFormats:this.allowedFormats,maxFileSize:this.maxFileSize,formatErrorMessage:this.formatErrorMessage,sizeErrorMessage:this.sizeErrorMessage,onFileValidation:this.onFileValidation});if(t)return t;let n={file:e,errorMessage:null},r=new CustomEvent(`file-validate`,{detail:n,bubbles:!0,composed:!0,cancelable:!0});return this.dispatchEvent(r),n.errorMessage?n.errorMessage:r.defaultPrevented?a.genericValidationRejection:null}syncThumbnailUrls(e){if(!(typeof URL<`u`&&typeof URL.createObjectURL==`function`&&typeof URL.revokeObjectURL==`function`)){this.thumbnailUrls={},this.thumbnailFileById.clear();return}let t=new Set(e.map(e=>e.fileId)),n={};for(let[e,n]of Object.entries(this.thumbnailUrls))t.has(e)||(URL.revokeObjectURL(n),this.thumbnailFileById.delete(e));for(let t of e){let e=this.thumbnailUrls[t.fileId],r=this.thumbnailFileById.get(t.fileId);if(!t.file||!this.isImageFile(t)){e&&(URL.revokeObjectURL(e),this.thumbnailFileById.delete(t.fileId));continue}if(e&&r===t.file){n[t.fileId]=e;continue}e&&r!==t.file&&URL.revokeObjectURL(e);let i=URL.createObjectURL(t.file);this.thumbnailFileById.set(t.fileId,t.file),n[t.fileId]=i}this.thumbnailUrls=n}revokeAllThumbnailUrls(){if(typeof URL>`u`||typeof URL.revokeObjectURL!=`function`){this.thumbnailUrls={},this.thumbnailFileById.clear();return}Object.values(this.thumbnailUrls).forEach(e=>URL.revokeObjectURL(e)),this.thumbnailUrls={},this.thumbnailFileById.clear()}getSrUploadedMessage(){if(this.addedAnnouncement)return this.addedAnnouncement;let{totalCount:e,uploadedCount:t}=w(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:a.srFilesUploadedOfTotal(t,e,a.fileLabel(e))}getSrErrorsMessage(){let{totalCount:e,failedCount:t}=w(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:a.srFilesFailedOfTotal(t,e,a.fileLabel(e))}syncFormSubmitListener(){let e=this.closest(`form`);this.connectedForm!==e&&(this.teardownFormSubmitListener(),this.connectedForm=e,this.connectedForm&&this.connectedForm.addEventListener(`submit`,this.onHostFormSubmit))}teardownFormSubmitListener(){this.connectedForm&&=(this.connectedForm.removeEventListener(`submit`,this.onHostFormSubmit),null)}};e.r([e.s({type:String})],E.prototype,`id`,void 0),e.r([e.s({type:String})],E.prototype,`name`,void 0),e.r([e.s({type:String})],E.prototype,`label`,void 0),e.r([e.s({type:String})],E.prototype,`helptext`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`required`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`multiple`,void 0),e.r([e.s({type:Boolean,reflect:!0})],E.prototype,`disabled`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`fullwidth`})],E.prototype,`fullwidth`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`upload-strategy`})],E.prototype,`uploadStrategy`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`item-renderer`})],E.prototype,`itemRenderer`,void 0),e.r([e.s({type:String})],E.prototype,`accept`,void 0),e.r([e.s({converter:r.t.csvToArray,attribute:`allowed-formats`})],E.prototype,`allowedFormats`,void 0),e.r([e.s({type:String,attribute:`format-error-message`})],E.prototype,`formatErrorMessage`,void 0),e.r([e.s({attribute:`max-file-size`})],E.prototype,`maxFileSize`,void 0),e.r([e.s({type:String,attribute:`size-error-message`})],E.prototype,`sizeErrorMessage`,void 0),e.r([e.s({attribute:!1})],E.prototype,`onFileValidation`,void 0),e.r([e.s({attribute:!1})],E.prototype,`transfers`,void 0),e.r([e.s({type:Boolean,attribute:`add-comments-enabled`})],E.prototype,`addCommentsEnabled`,void 0),e.r([e.s({type:Boolean,attribute:`rename-files-enabled`})],E.prototype,`renameFilesEnabled`,void 0),e.r([e.s({attribute:!1})],E.prototype,`extraOperations`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`enable-image-preview`})],E.prototype,`enableImagePreview`,void 0),e.r([e.s({type:Boolean,attribute:`has-error`})],E.prototype,`hasError`,void 0),e.r([e.s({type:String,attribute:`error-message`})],E.prototype,`errorMessage`,void 0),e.r([e.s({type:Boolean,attribute:`optional-tag`})],E.prototype,`optionalTag`,void 0),e.r([e.s({type:Boolean,attribute:`required-tag`})],E.prototype,`requiredTag`,void 0),e.r([e.s({type:Number,attribute:`truncate-tail`})],E.prototype,`truncateTail`,void 0),e.r([e.s({attribute:!1})],E.prototype,`value`,void 0),e.r([e.s({attribute:!1})],E.prototype,`defaultValue`,void 0),e.r([e.o()],E.prototype,`files`,void 0),e.r([e.o()],E.prototype,`isDragActive`,void 0),e.r([e.o()],E.prototype,`validationErrorMessage`,void 0),e.r([e.o()],E.prototype,`addedAnnouncement`,void 0),e.r([e.o()],E.prototype,`thumbnailUrls`,void 0);var D=`comments`,O=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?e:`${String(t.getDate()).padStart(2,`0`)}.${String(t.getMonth()+1).padStart(2,`0`)}.${t.getFullYear()} kl. ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`},k=(e,t,n)=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t()),e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())},A=(e,t,n)=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n()),(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t())},j=e=>({id:`remove`,title:`Slett`,ariaLabel:`Slett fil`,onClick:({file:t})=>e(t.fileId)}),M=()=>({id:`rename`,title:`Rediger`,ariaLabel:`Rediger filnavn`,renderInlineUI:t=>{let n=t.getAttribute(`targetFilename`)||t.file.attributes?.targetFilename||t.file.file?.name||``,r=`pkt-fileupload-rename-${t.file.fileId}`,i=()=>{let e=document.getElementById(r)?.value?.trim();e&&t.setAttribute(`targetFilename`,e),t.close()};return e.d`
|
|
2
2
|
<label for=${r} class="pkt-sr-only">Endre filnavn</label>
|
|
3
3
|
<input
|
|
4
4
|
id=${r}
|
|
@@ -350,7 +350,7 @@ var v = "https://punkt-cdn.oslo.kommune.no/latest/logos/", y = class extends l {
|
|
|
350
350
|
}
|
|
351
351
|
renderServiceName() {
|
|
352
352
|
return this.serviceName ? this.serviceLink && typeof this.serviceLink == "string" ? t`
|
|
353
|
-
<span class="pkt-header-service__service-name">
|
|
353
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
354
354
|
<pkt-link
|
|
355
355
|
href=${this.serviceLink}
|
|
356
356
|
class="pkt-header-service__service-link"
|
|
@@ -360,7 +360,7 @@ var v = "https://punkt-cdn.oslo.kommune.no/latest/logos/", y = class extends l {
|
|
|
360
360
|
</pkt-link>
|
|
361
361
|
</span>
|
|
362
362
|
` : this.hasAttribute("service-link") ? t`
|
|
363
|
-
<span class="pkt-header-service__service-name">
|
|
363
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
364
364
|
<button
|
|
365
365
|
class="pkt-link-button pkt-link pkt-header-service__service-link"
|
|
366
366
|
@click=${this.handleServiceClick}
|
|
@@ -369,7 +369,7 @@ var v = "https://punkt-cdn.oslo.kommune.no/latest/logos/", y = class extends l {
|
|
|
369
369
|
</button>
|
|
370
370
|
</span>
|
|
371
371
|
` : t`
|
|
372
|
-
<span class="pkt-header-service__service-name" @click=${this.handleServiceClick}>
|
|
372
|
+
<span class="pkt-header-service__service-name" translate="no" @click=${this.handleServiceClick}>
|
|
373
373
|
<span class="pkt-header-service__service-link">${this.serviceName}</span>
|
|
374
374
|
</span>
|
|
375
375
|
` : n;
|
|
@@ -509,7 +509,7 @@ var v = "https://punkt-cdn.oslo.kommune.no/latest/logos/", y = class extends l {
|
|
|
509
509
|
@click=${() => this.handleMenuToggle("user")}
|
|
510
510
|
>
|
|
511
511
|
<span class="pkt-sr-only">Brukermeny: </span>
|
|
512
|
-
<span>${this.representing?.name || this.user.name}</span>
|
|
512
|
+
<span translate="no">${this.representing?.name || this.user.name}</span>
|
|
513
513
|
</pkt-button>
|
|
514
514
|
${this.openMenu === "user" && this.user ? t`
|
|
515
515
|
<div class=${e}>
|
|
@@ -101,7 +101,7 @@ const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),
|
|
|
101
101
|
`:e.d`
|
|
102
102
|
<span class="pkt-header-service__logo" @click=${this.handleLogoClick}>${t}</span>
|
|
103
103
|
`}renderServiceName(){return this.serviceName?this.serviceLink&&typeof this.serviceLink==`string`?e.d`
|
|
104
|
-
<span class="pkt-header-service__service-name">
|
|
104
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
105
105
|
<pkt-link
|
|
106
106
|
href=${this.serviceLink}
|
|
107
107
|
class="pkt-header-service__service-link"
|
|
@@ -111,7 +111,7 @@ const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),
|
|
|
111
111
|
</pkt-link>
|
|
112
112
|
</span>
|
|
113
113
|
`:this.hasAttribute(`service-link`)?e.d`
|
|
114
|
-
<span class="pkt-header-service__service-name">
|
|
114
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
115
115
|
<button
|
|
116
116
|
class="pkt-link-button pkt-link pkt-header-service__service-link"
|
|
117
117
|
@click=${this.handleServiceClick}
|
|
@@ -120,7 +120,7 @@ const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),
|
|
|
120
120
|
</button>
|
|
121
121
|
</span>
|
|
122
122
|
`:e.d`
|
|
123
|
-
<span class="pkt-header-service__service-name" @click=${this.handleServiceClick}>
|
|
123
|
+
<span class="pkt-header-service__service-name" translate="no" @click=${this.handleServiceClick}>
|
|
124
124
|
<span class="pkt-header-service__service-link">${this.serviceName}</span>
|
|
125
125
|
</span>
|
|
126
126
|
`:e.l}renderSlotContainer(){if(!this.hasSlotContent())return e.l;let r=t.t({"pkt-header-service__slot-container":!0,"is-open":this.openMenu===`slot`}),a=t.t({"pkt-header-service__slot-content":!0,"align-right":this.alignSlotRight});return e.d`
|
|
@@ -220,7 +220,7 @@ const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),
|
|
|
220
220
|
@click=${()=>this.handleMenuToggle(`user`)}
|
|
221
221
|
>
|
|
222
222
|
<span class="pkt-sr-only">Brukermeny: </span>
|
|
223
|
-
<span>${this.representing?.name||this.user.name}</span>
|
|
223
|
+
<span translate="no">${this.representing?.name||this.user.name}</span>
|
|
224
224
|
</pkt-button>
|
|
225
225
|
${this.openMenu===`user`&&this.user?e.d`
|
|
226
226
|
<div class=${n}>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),n=require(`./element-with-slot-CWoTGA1B.cjs`);require(`./icon-Dr8sfT2X.cjs`);const r=require(`./ref-BaJ0mBT_.cjs`);var i=`pkt-modal--open`,a=`data-pkt-modal-open-count`,o=()=>{let e=document.body.getAttribute(a),t=e?parseInt(e,10):0;return Number.isFinite(t)&&t>0?t:0},s=e=>{e<=0?(document.body.removeAttribute(a),document.body.classList.remove(i)):(document.body.setAttribute(a,String(e)),document.body.classList.add(i))},c=e=>{e.locked||(e.locked=!0,s(o()+1))},l=e=>{e.locked&&(e.locked=!1,s(o()-1))},u=()=>({locked:!1}),d={name:`pkt-modal`,react:`PktModal`,"css-class":`pkt-modal`,isElement:!0,isPureReact:!0,events:{"background-click":{description:`Event som trigges når bakgrunnen trykkes på`},close:{description:`Event som trigges når meldingsboksen lukkes`}},props:{open:{name:`Åpen`,description:`Deklarativ styring av modalens åpen/lukket-tilstand. Kan brukes i stedet for showModal()/close()-metodene.`,type:`boolean`,category:`tech`,default:!1},headingText:{name:`Heading text`,description:`Heading tekst på modalen`,type:`string`,category:`contents`},hideCloseButton:{name:`Gjem 'Lukk'-knapp`,description:`Gjemmer lukkeknappen. Dersom denne er satt til true, vil ikke lukkeknappen vises, og dermed er det viktig at man tilbyr en annen måte som f.eks. en knapp for å lukke modalen på.`,type:`boolean`,category:`ui`,default:!1},closeOnBackdropClick:{name:`Lukk modalen når bakgrunnen trykkes på`,description:`Lukk modalen når bakgrunnen trykkes på`,type:`boolean`,category:`tech`,default:!1},closeButtonSkin:{name:`Stil på lukkeknappen`,description:`Stil på lukkeknappen`,type:[`blue`,`yellow-filled`],category:`ui`,default:`blue`},size:{name:`Størrelse`,description:`Størrelsen på modalen`,type:[`small`,`medium`,`large`,`fit-content`],category:`ui`,default:`medium`},variant:{name:`Variant`,description:`Standard dialog eller skuff`,type:[`dialog`,`drawer`],category:`ui`,default:`dialog`},drawerPosition:{name:`Skuffposisjon`,description:`Posisjonen til skuffen`,type:[`left`,`right`],category:`ui`,default:`right`},transparentBackdrop:{name:`Gjennomsiktig bakgrunn`,description:`Bakgrunnen er gjennomsiktig`,type:`boolean`,category:`ui`,default:!1},removePadding:{name:`Fjern padding`,description:`Fjerner paddingen rundt innholdet i modalen`,type:`boolean`,category:`ui`,default:!1}},slots:{default:{description:`Innholdet i meldingen. Her tilbyr vi støtteklasser for å style 1-3 knapper i modalen.`}}},f=class extends n.t{constructor(){super(),this.open=!1,this.headingText=``,this.removePadding=!1,this.hideCloseButton=d.props.hideCloseButton.default,this.closeOnBackdropClick=d.props.closeOnBackdropClick.default,this.closeButtonSkin=`blue`,this.size=d.props.size.default,this.variant=`dialog`,this.drawerPosition=`right`,this.transparentBackdrop=!1,this.dialogRef=r.t(),this._scrollLockToken=u(),this._isOpen=!1,this.close=(e,t=!1)=>{if(!this._isOpen)return;this._isOpen=!1,this.open=!1,l(this._scrollLockToken);let n=document.activeElement;n&&!this.isElementInViewport(n)&&n.scrollIntoView({behavior:`smooth`,block:`nearest`}),this.dispatchEvent(new CustomEvent(`close`,{detail:{origin:e},bubbles:!0,composed:!0})),t||this.dialogRef.value?.close(),this.requestUpdate()},this.showModal=(e=null)=>{this._isOpen=!0,this.open=!0,this.dialogRef.value?.showModal(),c(this._scrollLockToken),this.dispatchEvent(new CustomEvent(`showModal`,{detail:{origin:e},bubbles:!0,composed:!0})),this.requestUpdate()},this._isOpen=!1}async connectedCallback(){super.connectedCallback(),document.addEventListener(`keydown`,this.handleKeyDown.bind(this)),document.addEventListener(`click`,this.handleBackdropClick.bind(this))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`keydown`,this.handleKeyDown),document.removeEventListener(`click`,this.handleBackdropClick),l(this._scrollLockToken)}updated(e){super.updated(e),e.has(`open`)&&(this.open&&!this._isOpen?this.showModal():!this.open&&this._isOpen&&this.close(new Event(`close`),!1))}async firstUpdated(e){super.firstUpdated(e),this.dialogRef.value&&!window.HTMLDialogElement&&!this.dialogRef.value.showModal&&(`document`in window&&`createElement`in document&&(await Promise.resolve().then(()=>require(`./dialog-polyfill.esm-BnAQvMQO.cjs`)).then(e=>e.default)).registerDialog(this.dialogRef.value),this.dialogRef.value.addEventListener(`close`,()=>{this.close(new Event(`close`),!0)}))}handleKeyDown(e){e.key===`Escape`&&this.close(e)}handleBackdropClick(e){this.closeOnBackdropClick&&e.target===this.dialogRef?.value&&this.close(e)}isElementInViewport(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}render(){let i={"pkt-modal":!0,"pkt-modal--removePadding":this.removePadding??!1,"pkt-modal--noHeadingText":this.headingText===``||this.headingText===void 0,"pkt-modal--noShadow":this.closeButtonSkin===`yellow-filled`,"pkt-modal--transparentBackdrop":this.transparentBackdrop??!1,[`pkt-modal--${this.size}`]:this.size!==void 0,[`pkt-modal__${this.variant}`]:this.variant!==void 0,[`pkt-modal__drawer--${this.drawerPosition}`]:this.variant===`drawer`},a={"pkt-modal__headingText":!0,"pkt-txt-24":!0},o={"pkt-modal__content":!0,"pkt-txt-18-light":!0},s=this.closeButtonSkin===`blue`,c={"pkt-modal__closeButton":!0,[`pkt-modal__closeButton--${this.closeButtonSkin}`]:!0};return e.d`
|
|
2
|
+
<dialog
|
|
3
|
+
class=${t.t(i)}
|
|
4
|
+
${r.n(this.dialogRef)}
|
|
5
|
+
aria-labelledby=${this.headingText?`pkt-modal__headingText`:e.l}
|
|
6
|
+
aria-describedby="pkt-modal__content"
|
|
7
|
+
@close=${e=>this.close(e,!0)}
|
|
8
|
+
>
|
|
9
|
+
<div class="pkt-modal__wrapper">
|
|
10
|
+
${this.headingText||!this.hideCloseButton?e.d`<div class="pkt-modal__header">
|
|
11
|
+
<div class="pkt-modal__header-background"></div>
|
|
12
|
+
${this.headingText?e.d`<h1 id="pkt-modal__headingText" class=${t.t(a)}>
|
|
13
|
+
${this.headingText}
|
|
14
|
+
</h1>`:e.d`<div class="pkt-modal__headingText"></div>`}
|
|
15
|
+
${this.hideCloseButton?e.d`<div class="pkt-modal__noCloseButton"></div>`:e.d`<div class="${t.t(c)}">
|
|
16
|
+
<pkt-button
|
|
17
|
+
@click=${e=>this.close(e)}
|
|
18
|
+
aria-label="close"
|
|
19
|
+
iconname="close"
|
|
20
|
+
variant="icon-only"
|
|
21
|
+
size="medium"
|
|
22
|
+
skin=${s?`tertiary`:`primary`}
|
|
23
|
+
>
|
|
24
|
+
Lukk
|
|
25
|
+
</pkt-button>
|
|
26
|
+
</div>`}
|
|
27
|
+
</div>`:e.l}
|
|
28
|
+
<div class="pkt-modal__container">
|
|
29
|
+
<div id="pkt-modal__content" class=${t.t(o)}>
|
|
30
|
+
${n.n(this)}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</dialog>
|
|
35
|
+
`}};e.r([e.s({type:Boolean,reflect:!0})],f.prototype,`open`,void 0),e.r([e.s({type:String})],f.prototype,`headingText`,void 0),e.r([e.s({type:Boolean})],f.prototype,`removePadding`,void 0),e.r([e.s({type:Boolean})],f.prototype,`hideCloseButton`,void 0),e.r([e.s({type:Boolean})],f.prototype,`closeOnBackdropClick`,void 0),e.r([e.s({type:String})],f.prototype,`closeButtonSkin`,void 0),e.r([e.s({type:String})],f.prototype,`size`,void 0),e.r([e.s({type:String})],f.prototype,`variant`,void 0),e.r([e.s({type:String})],f.prototype,`drawerPosition`,void 0),e.r([e.s({type:Boolean})],f.prototype,`transparentBackdrop`,void 0),e.r([e.o()],f.prototype,`_isOpen`,void 0);try{e.c(`pkt-modal`)(f)}catch{console.warn(`Forsøker å definere <pkt-modal>, men den er allerede definert`)}var p=f;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
|
|
@@ -3,7 +3,17 @@ import { t as o } from "./class-map-C8HuhNzZ.js";
|
|
|
3
3
|
import { n as s, t as c } from "./element-with-slot-4J2o3SeU.js";
|
|
4
4
|
import "./icon-Co72KtgF.js";
|
|
5
5
|
import { n as l, t as u } from "./ref-RS8Uv6uC.js";
|
|
6
|
-
|
|
6
|
+
//#region ../../shared-utils/modal-scroll-lock.ts
|
|
7
|
+
var d = "pkt-modal--open", f = "data-pkt-modal-open-count", p = () => {
|
|
8
|
+
let e = document.body.getAttribute(f), t = e ? parseInt(e, 10) : 0;
|
|
9
|
+
return Number.isFinite(t) && t > 0 ? t : 0;
|
|
10
|
+
}, m = (e) => {
|
|
11
|
+
e <= 0 ? (document.body.removeAttribute(f), document.body.classList.remove(d)) : (document.body.setAttribute(f, String(e)), document.body.classList.add(d));
|
|
12
|
+
}, h = (e) => {
|
|
13
|
+
e.locked || (e.locked = !0, m(p() + 1));
|
|
14
|
+
}, g = (e) => {
|
|
15
|
+
e.locked && (e.locked = !1, m(p() - 1));
|
|
16
|
+
}, _ = () => ({ locked: !1 }), v = {
|
|
7
17
|
name: "pkt-modal",
|
|
8
18
|
react: "PktModal",
|
|
9
19
|
"css-class": "pkt-modal",
|
|
@@ -90,11 +100,11 @@ var d = {
|
|
|
90
100
|
}
|
|
91
101
|
},
|
|
92
102
|
slots: { default: { description: "Innholdet i meldingen. Her tilbyr vi støtteklasser for å style 1-3 knapper i modalen." } }
|
|
93
|
-
},
|
|
103
|
+
}, y = class extends c {
|
|
94
104
|
constructor() {
|
|
95
|
-
super(), this.open = !1, this.headingText = "", this.removePadding = !1, this.hideCloseButton =
|
|
105
|
+
super(), this.open = !1, this.headingText = "", this.removePadding = !1, this.hideCloseButton = v.props.hideCloseButton.default, this.closeOnBackdropClick = v.props.closeOnBackdropClick.default, this.closeButtonSkin = "blue", this.size = v.props.size.default, this.variant = "dialog", this.drawerPosition = "right", this.transparentBackdrop = !1, this.dialogRef = u(), this._scrollLockToken = _(), this._isOpen = !1, this.close = (e, t = !1) => {
|
|
96
106
|
if (!this._isOpen) return;
|
|
97
|
-
this._isOpen = !1, this.open = !1,
|
|
107
|
+
this._isOpen = !1, this.open = !1, g(this._scrollLockToken);
|
|
98
108
|
let n = document.activeElement;
|
|
99
109
|
n && !this.isElementInViewport(n) && n.scrollIntoView({
|
|
100
110
|
behavior: "smooth",
|
|
@@ -105,7 +115,7 @@ var d = {
|
|
|
105
115
|
composed: !0
|
|
106
116
|
})), t || this.dialogRef.value?.close(), this.requestUpdate();
|
|
107
117
|
}, this.showModal = (e = null) => {
|
|
108
|
-
this._isOpen = !0, this.open = !0, this.dialogRef.value?.showModal(),
|
|
118
|
+
this._isOpen = !0, this.open = !0, this.dialogRef.value?.showModal(), h(this._scrollLockToken), this.dispatchEvent(new CustomEvent("showModal", {
|
|
109
119
|
detail: { origin: e },
|
|
110
120
|
bubbles: !0,
|
|
111
121
|
composed: !0
|
|
@@ -116,7 +126,7 @@ var d = {
|
|
|
116
126
|
super.connectedCallback(), document.addEventListener("keydown", this.handleKeyDown.bind(this)), document.addEventListener("click", this.handleBackdropClick.bind(this));
|
|
117
127
|
}
|
|
118
128
|
disconnectedCallback() {
|
|
119
|
-
super.disconnectedCallback(), document.removeEventListener("keydown", this.handleKeyDown), document.removeEventListener("click", this.handleBackdropClick);
|
|
129
|
+
super.disconnectedCallback(), document.removeEventListener("keydown", this.handleKeyDown), document.removeEventListener("click", this.handleBackdropClick), g(this._scrollLockToken);
|
|
120
130
|
}
|
|
121
131
|
updated(e) {
|
|
122
132
|
super.updated(e), e.has("open") && (this.open && !this._isOpen ? this.showModal() : !this.open && this._isOpen && this.close(new Event("close"), !1));
|
|
@@ -196,14 +206,14 @@ var d = {
|
|
|
196
206
|
i([a({
|
|
197
207
|
type: Boolean,
|
|
198
208
|
reflect: !0
|
|
199
|
-
})],
|
|
209
|
+
})], y.prototype, "open", void 0), i([a({ type: String })], y.prototype, "headingText", void 0), i([a({ type: Boolean })], y.prototype, "removePadding", void 0), i([a({ type: Boolean })], y.prototype, "hideCloseButton", void 0), i([a({ type: Boolean })], y.prototype, "closeOnBackdropClick", void 0), i([a({ type: String })], y.prototype, "closeButtonSkin", void 0), i([a({ type: String })], y.prototype, "size", void 0), i([a({ type: String })], y.prototype, "variant", void 0), i([a({ type: String })], y.prototype, "drawerPosition", void 0), i([a({ type: Boolean })], y.prototype, "transparentBackdrop", void 0), i([r()], y.prototype, "_isOpen", void 0);
|
|
200
210
|
try {
|
|
201
|
-
e("pkt-modal")(
|
|
211
|
+
e("pkt-modal")(y);
|
|
202
212
|
} catch {
|
|
203
213
|
console.warn("Forsøker å definere <pkt-modal>, men den er allerede definert");
|
|
204
214
|
}
|
|
205
215
|
//#endregion
|
|
206
216
|
//#region src/components/modal/index.ts
|
|
207
|
-
var
|
|
217
|
+
var b = y;
|
|
208
218
|
//#endregion
|
|
209
|
-
export {
|
|
219
|
+
export { y as n, b as t };
|
package/dist/pkt-fileupload.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./fileupload-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./fileupload-qc0fHcR-.cjs`);Object.defineProperty(exports,`PktFileUpload`,{enumerable:!0,get:function(){return e.n}}),exports.default=e.t;
|
package/dist/pkt-fileupload.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./fileupload-
|
|
1
|
+
import { n as e, t } from "./fileupload-IXSGrqiH.js";
|
|
2
2
|
export { e as PktFileUpload, t as default };
|
package/dist/pkt-header.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./header-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./header-C1hDYMRX.cjs`);exports.PktHeader=e.t,exports.PktHeaderService=e.n,exports.PktHeaderUserMenu=e.r,exports.formatLastLoggedIn=e.i;
|
package/dist/pkt-header.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as e, n as t, r as n, t as r } from "./header-
|
|
1
|
+
import { i as e, n as t, r as n, t as r } from "./header-BGknkrEt.js";
|
|
2
2
|
export { r as PktHeader, t as PktHeaderService, n as PktHeaderUserMenu, e as formatLastLoggedIn };
|
package/dist/pkt-index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./alert-BEEnTiCb.cjs`),t=require(`./icon-Dr8sfT2X.cjs`),n=require(`./button-D-TOBaJB.cjs`),r=require(`./accordion-DDZkjXFb.cjs`),i=require(`./backlink-Ba03LlbB.cjs`),a=require(`./breadcrumbs-CD1zib3s.cjs`),o=require(`./calendar-DkjXla0I.cjs`),s=require(`./card-C3POnP3O.cjs`),c=require(`./tag-DWtajZk6.cjs`),l=require(`./heading-DRJTS27k.cjs`),u=require(`./combobox-DYttdLJ4.cjs`),d=require(`./header-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./alert-BEEnTiCb.cjs`),t=require(`./icon-Dr8sfT2X.cjs`),n=require(`./button-D-TOBaJB.cjs`),r=require(`./accordion-DDZkjXFb.cjs`),i=require(`./backlink-Ba03LlbB.cjs`),a=require(`./breadcrumbs-CD1zib3s.cjs`),o=require(`./calendar-DkjXla0I.cjs`),s=require(`./card-C3POnP3O.cjs`),c=require(`./tag-DWtajZk6.cjs`),l=require(`./heading-DRJTS27k.cjs`),u=require(`./combobox-DYttdLJ4.cjs`),d=require(`./header-C1hDYMRX.cjs`),f=require(`./header-menu-CPI1_5oZ.cjs`),p=require(`./datepicker-D3QQbd_H.cjs`),m=require(`./fileupload-qc0fHcR-.cjs`),h=require(`./helptext-KWXjKljV.cjs`),g=require(`./input-wrapper-DOIWggEv.cjs`),_=require(`./consent-B5dIDyLD.cjs`),v=require(`./checkbox-BerAYcfK.cjs`),y=require(`./modal-B7-0F5q7.cjs`),b=require(`./progressbar-Ca7pRjmt.cjs`),x=require(`./link-DMKjKawh.cjs`),S=require(`./textinput-Dsc-8-BB.cjs`),C=require(`./linkcard-CBmJbSoV.cjs`),w=require(`./loader-q_eO6zaE.cjs`),T=require(`./messagebox-D1QeQqb8.cjs`),E=require(`./radiobutton-B1Xg6XzP.cjs`),D=require(`./tabs-CN_RIMWg.cjs`),O=require(`./textarea-CV6z3LDf.cjs`),k=require(`./select-DO0xGhQQ.cjs`),A=require(`./searchinput-BVIaoetB.cjs`),j=require(`./timepicker-C2Ua6vHY.cjs`);exports.PktAccordion=r.r,exports.PktAccordionItem=r.n,exports.PktAlert=e.n,exports.PktBackLink=i.n,exports.PktBreadcrumbs=a.t,exports.PktButton=n.n,exports.PktCalendar=o.n,exports.PktCard=s.n,exports.PktCheckbox=v.n,exports.PktCombobox=u.n,exports.PktConsent=_.n,exports.PktDateTags=p.a,exports.PktDatepicker=p.t,Object.defineProperty(exports,`PktFileUpload`,{enumerable:!0,get:function(){return m.n}}),exports.PktHeader=d.t,exports.PktHeaderMenu=f.n,exports.PktHeaderService=d.n,exports.PktHeaderUserMenu=d.r,exports.PktHeading=l.n,exports.PktHelptext=h.n,exports.PktIcon=t.n,exports.PktInputWrapper=g.n,exports.PktLink=x.n,exports.PktLinkCard=C.n,exports.PktLoader=w.n,exports.PktMessagebox=T.n,exports.PktModal=y.n,exports.PktProgressbar=b.n,exports.PktRadioButton=E.n,exports.PktRadiobutton=E.n,exports.PktSearchInput=A.n,exports.PktSelect=k.n,exports.PktTabItem=D.n,exports.PktTabs=D.r,exports.PktTag=c.n,exports.PktTextarea=O.n,exports.PktTextinput=S.n,exports.PktTimepicker=j.t;
|
package/dist/pkt-index.js
CHANGED
|
@@ -9,15 +9,15 @@ import { n as c } from "./card-CEDbo1t7.js";
|
|
|
9
9
|
import { n as l } from "./tag-hl59gziI.js";
|
|
10
10
|
import { n as u } from "./heading-BxvE80bb.js";
|
|
11
11
|
import { n as d } from "./combobox-DjvRMKOD.js";
|
|
12
|
-
import { n as f, r as p, t as m } from "./header-
|
|
12
|
+
import { n as f, r as p, t as m } from "./header-BGknkrEt.js";
|
|
13
13
|
import { n as h } from "./header-menu-zhGYdnvz.js";
|
|
14
14
|
import { a as g, t as _ } from "./datepicker-M_jcY3wp.js";
|
|
15
|
-
import { n as v } from "./fileupload-
|
|
15
|
+
import { n as v } from "./fileupload-IXSGrqiH.js";
|
|
16
16
|
import { n as y } from "./helptext-BdqoW19r.js";
|
|
17
17
|
import { n as b } from "./input-wrapper-DVU68NcJ.js";
|
|
18
18
|
import { n as x } from "./consent-DSHrt9eS.js";
|
|
19
19
|
import { n as S } from "./checkbox-CF5mSBR5.js";
|
|
20
|
-
import { n as C } from "./modal-
|
|
20
|
+
import { n as C } from "./modal-Ca-6xVkg.js";
|
|
21
21
|
import { n as w } from "./progressbar-o-M17HPA.js";
|
|
22
22
|
import { n as T } from "./link-F51Ho7CV.js";
|
|
23
23
|
import { n as E } from "./textinput-BZZnFDk3.js";
|
package/dist/pkt-modal.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./modal-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./modal-B7-0F5q7.cjs`);exports.PktModal=e.n,exports.default=e.t;
|
package/dist/pkt-modal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./modal-
|
|
1
|
+
import { n as e, t } from "./modal-Ca-6xVkg.js";
|
|
2
2
|
export { e as PktModal, t as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const acquireModalScrollLock: (token: {
|
|
2
|
+
locked: boolean;
|
|
3
|
+
}) => void;
|
|
4
|
+
export declare const releaseModalScrollLock: (token: {
|
|
5
|
+
locked: boolean;
|
|
6
|
+
}) => void;
|
|
7
|
+
export type ModalScrollLockToken = {
|
|
8
|
+
locked: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const createModalScrollLockToken: () => ModalScrollLockToken;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-elements",
|
|
3
|
-
"version": "16.17.
|
|
3
|
+
"version": "16.17.3",
|
|
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",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"url": "https://github.com/oslokommune/punkt/issues"
|
|
79
79
|
},
|
|
80
80
|
"license": "MIT",
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "0e923719992be1851617872d5e529a4588126aed"
|
|
82
82
|
}
|
|
@@ -455,7 +455,7 @@ export class PktHeaderService extends PktElementWithSlot<IPktHeader> implements
|
|
|
455
455
|
// If serviceLink is a non-empty string, render as link (but still dispatch event on click)
|
|
456
456
|
if (this.serviceLink && typeof this.serviceLink === 'string') {
|
|
457
457
|
return html`
|
|
458
|
-
<span class="pkt-header-service__service-name">
|
|
458
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
459
459
|
<pkt-link
|
|
460
460
|
href=${this.serviceLink}
|
|
461
461
|
class="pkt-header-service__service-link"
|
|
@@ -470,7 +470,7 @@ export class PktHeaderService extends PktElementWithSlot<IPktHeader> implements
|
|
|
470
470
|
// If service-link attribute is present but empty, render as clickable button
|
|
471
471
|
if (this.hasAttribute('service-link')) {
|
|
472
472
|
return html`
|
|
473
|
-
<span class="pkt-header-service__service-name">
|
|
473
|
+
<span class="pkt-header-service__service-name" translate="no">
|
|
474
474
|
<button
|
|
475
475
|
class="pkt-link-button pkt-link pkt-header-service__service-link"
|
|
476
476
|
@click=${this.handleServiceClick}
|
|
@@ -483,7 +483,7 @@ export class PktHeaderService extends PktElementWithSlot<IPktHeader> implements
|
|
|
483
483
|
|
|
484
484
|
// No link - just render the text
|
|
485
485
|
return html`
|
|
486
|
-
<span class="pkt-header-service__service-name" @click=${this.handleServiceClick}>
|
|
486
|
+
<span class="pkt-header-service__service-name" translate="no" @click=${this.handleServiceClick}>
|
|
487
487
|
<span class="pkt-header-service__service-link">${this.serviceName}</span>
|
|
488
488
|
</span>
|
|
489
489
|
`
|
|
@@ -642,7 +642,7 @@ export class PktHeaderService extends PktElementWithSlot<IPktHeader> implements
|
|
|
642
642
|
@click=${() => this.handleMenuToggle('user')}
|
|
643
643
|
>
|
|
644
644
|
<span class="pkt-sr-only">Brukermeny: </span>
|
|
645
|
-
<span>${this.representing?.name || this.user.name}</span>
|
|
645
|
+
<span translate="no">${this.representing?.name || this.user.name}</span>
|
|
646
646
|
</pkt-button>
|
|
647
647
|
${this.openMenu === 'user' && this.user
|
|
648
648
|
? html`
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PktIconName } from '@oslokommune/punkt-assets/dist/icons/icon'
|
|
2
|
-
import { booleanishConverter } from 'shared-types'
|
|
2
|
+
import { booleanishConverter, convertUserMenuItem as sharedConvertUserMenuItem } from 'shared-types'
|
|
3
|
+
/* eslint-disable no-duplicate-imports */
|
|
3
4
|
import type {
|
|
4
5
|
Booleanish,
|
|
5
6
|
User as SharedUser,
|
|
@@ -12,7 +13,6 @@ import type {
|
|
|
12
13
|
THeaderPosition,
|
|
13
14
|
THeaderScrollBehavior,
|
|
14
15
|
} from 'shared-types'
|
|
15
|
-
import { convertUserMenuItem as sharedConvertUserMenuItem } from 'shared-types'
|
|
16
16
|
|
|
17
17
|
export type {
|
|
18
18
|
Booleanish,
|
|
@@ -6,6 +6,12 @@ import { slotContent } from '@/directives/slot-content'
|
|
|
6
6
|
import { ref } from 'lit/directives/ref.js'
|
|
7
7
|
import { Ref, createRef } from 'lit/directives/ref.js'
|
|
8
8
|
import { TPktSize } from '@/types/size'
|
|
9
|
+
import {
|
|
10
|
+
acquireModalScrollLock,
|
|
11
|
+
createModalScrollLockToken,
|
|
12
|
+
releaseModalScrollLock,
|
|
13
|
+
type ModalScrollLockToken,
|
|
14
|
+
} from 'shared-utils/modal-scroll-lock'
|
|
9
15
|
import specs from 'componentSpecs/modal.json'
|
|
10
16
|
import '@/components/icon'
|
|
11
17
|
|
|
@@ -40,6 +46,8 @@ export class PktModal extends PktElementWithSlot implements IPktModal {
|
|
|
40
46
|
|
|
41
47
|
dialogRef: Ref<HTMLDialogElement> = createRef()
|
|
42
48
|
|
|
49
|
+
private _scrollLockToken: ModalScrollLockToken = createModalScrollLockToken()
|
|
50
|
+
|
|
43
51
|
@state() _isOpen: boolean = false
|
|
44
52
|
|
|
45
53
|
constructor() {
|
|
@@ -57,6 +65,8 @@ export class PktModal extends PktElementWithSlot implements IPktModal {
|
|
|
57
65
|
super.disconnectedCallback()
|
|
58
66
|
document.removeEventListener('keydown', this.handleKeyDown)
|
|
59
67
|
document.removeEventListener('click', this.handleBackdropClick)
|
|
68
|
+
// Rydd opp scroll-lock hvis elementet fjernes fra DOM mens det er åpent
|
|
69
|
+
releaseModalScrollLock(this._scrollLockToken)
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
protected updated(changedProperties: PropertyValues): void {
|
|
@@ -112,7 +122,7 @@ export class PktModal extends PktElementWithSlot implements IPktModal {
|
|
|
112
122
|
this._isOpen = false
|
|
113
123
|
this.open = false
|
|
114
124
|
|
|
115
|
-
|
|
125
|
+
releaseModalScrollLock(this._scrollLockToken)
|
|
116
126
|
|
|
117
127
|
// Scroll to the opener element if it's not in the viewport
|
|
118
128
|
const openerElement = document.activeElement as HTMLElement
|
|
@@ -133,7 +143,7 @@ export class PktModal extends PktElementWithSlot implements IPktModal {
|
|
|
133
143
|
this.open = true
|
|
134
144
|
this.dialogRef.value?.showModal()
|
|
135
145
|
|
|
136
|
-
|
|
146
|
+
acquireModalScrollLock(this._scrollLockToken)
|
|
137
147
|
this.dispatchEvent(
|
|
138
148
|
new CustomEvent('showModal', { detail: { origin: event }, bubbles: true, composed: true }),
|
|
139
149
|
)
|
package/dist/modal-C_LxgxzC.cjs
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`),n=require(`./element-with-slot-CWoTGA1B.cjs`);require(`./icon-Dr8sfT2X.cjs`);const r=require(`./ref-BaJ0mBT_.cjs`);var i={name:`pkt-modal`,react:`PktModal`,"css-class":`pkt-modal`,isElement:!0,isPureReact:!0,events:{"background-click":{description:`Event som trigges når bakgrunnen trykkes på`},close:{description:`Event som trigges når meldingsboksen lukkes`}},props:{open:{name:`Åpen`,description:`Deklarativ styring av modalens åpen/lukket-tilstand. Kan brukes i stedet for showModal()/close()-metodene.`,type:`boolean`,category:`tech`,default:!1},headingText:{name:`Heading text`,description:`Heading tekst på modalen`,type:`string`,category:`contents`},hideCloseButton:{name:`Gjem 'Lukk'-knapp`,description:`Gjemmer lukkeknappen. Dersom denne er satt til true, vil ikke lukkeknappen vises, og dermed er det viktig at man tilbyr en annen måte som f.eks. en knapp for å lukke modalen på.`,type:`boolean`,category:`ui`,default:!1},closeOnBackdropClick:{name:`Lukk modalen når bakgrunnen trykkes på`,description:`Lukk modalen når bakgrunnen trykkes på`,type:`boolean`,category:`tech`,default:!1},closeButtonSkin:{name:`Stil på lukkeknappen`,description:`Stil på lukkeknappen`,type:[`blue`,`yellow-filled`],category:`ui`,default:`blue`},size:{name:`Størrelse`,description:`Størrelsen på modalen`,type:[`small`,`medium`,`large`,`fit-content`],category:`ui`,default:`medium`},variant:{name:`Variant`,description:`Standard dialog eller skuff`,type:[`dialog`,`drawer`],category:`ui`,default:`dialog`},drawerPosition:{name:`Skuffposisjon`,description:`Posisjonen til skuffen`,type:[`left`,`right`],category:`ui`,default:`right`},transparentBackdrop:{name:`Gjennomsiktig bakgrunn`,description:`Bakgrunnen er gjennomsiktig`,type:`boolean`,category:`ui`,default:!1},removePadding:{name:`Fjern padding`,description:`Fjerner paddingen rundt innholdet i modalen`,type:`boolean`,category:`ui`,default:!1}},slots:{default:{description:`Innholdet i meldingen. Her tilbyr vi støtteklasser for å style 1-3 knapper i modalen.`}}},a=class extends n.t{constructor(){super(),this.open=!1,this.headingText=``,this.removePadding=!1,this.hideCloseButton=i.props.hideCloseButton.default,this.closeOnBackdropClick=i.props.closeOnBackdropClick.default,this.closeButtonSkin=`blue`,this.size=i.props.size.default,this.variant=`dialog`,this.drawerPosition=`right`,this.transparentBackdrop=!1,this.dialogRef=r.t(),this._isOpen=!1,this.close=(e,t=!1)=>{if(!this._isOpen)return;this._isOpen=!1,this.open=!1,document.body.classList.remove(`pkt-modal--open`);let n=document.activeElement;n&&!this.isElementInViewport(n)&&n.scrollIntoView({behavior:`smooth`,block:`nearest`}),this.dispatchEvent(new CustomEvent(`close`,{detail:{origin:e},bubbles:!0,composed:!0})),t||this.dialogRef.value?.close(),this.requestUpdate()},this.showModal=(e=null)=>{this._isOpen=!0,this.open=!0,this.dialogRef.value?.showModal(),document.body.classList.add(`pkt-modal--open`),this.dispatchEvent(new CustomEvent(`showModal`,{detail:{origin:e},bubbles:!0,composed:!0})),this.requestUpdate()},this._isOpen=!1}async connectedCallback(){super.connectedCallback(),document.addEventListener(`keydown`,this.handleKeyDown.bind(this)),document.addEventListener(`click`,this.handleBackdropClick.bind(this))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`keydown`,this.handleKeyDown),document.removeEventListener(`click`,this.handleBackdropClick)}updated(e){super.updated(e),e.has(`open`)&&(this.open&&!this._isOpen?this.showModal():!this.open&&this._isOpen&&this.close(new Event(`close`),!1))}async firstUpdated(e){super.firstUpdated(e),this.dialogRef.value&&!window.HTMLDialogElement&&!this.dialogRef.value.showModal&&(`document`in window&&`createElement`in document&&(await Promise.resolve().then(()=>require(`./dialog-polyfill.esm-BnAQvMQO.cjs`)).then(e=>e.default)).registerDialog(this.dialogRef.value),this.dialogRef.value.addEventListener(`close`,()=>{this.close(new Event(`close`),!0)}))}handleKeyDown(e){e.key===`Escape`&&this.close(e)}handleBackdropClick(e){this.closeOnBackdropClick&&e.target===this.dialogRef?.value&&this.close(e)}isElementInViewport(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}render(){let i={"pkt-modal":!0,"pkt-modal--removePadding":this.removePadding??!1,"pkt-modal--noHeadingText":this.headingText===``||this.headingText===void 0,"pkt-modal--noShadow":this.closeButtonSkin===`yellow-filled`,"pkt-modal--transparentBackdrop":this.transparentBackdrop??!1,[`pkt-modal--${this.size}`]:this.size!==void 0,[`pkt-modal__${this.variant}`]:this.variant!==void 0,[`pkt-modal__drawer--${this.drawerPosition}`]:this.variant===`drawer`},a={"pkt-modal__headingText":!0,"pkt-txt-24":!0},o={"pkt-modal__content":!0,"pkt-txt-18-light":!0},s=this.closeButtonSkin===`blue`,c={"pkt-modal__closeButton":!0,[`pkt-modal__closeButton--${this.closeButtonSkin}`]:!0};return e.d`
|
|
2
|
-
<dialog
|
|
3
|
-
class=${t.t(i)}
|
|
4
|
-
${r.n(this.dialogRef)}
|
|
5
|
-
aria-labelledby=${this.headingText?`pkt-modal__headingText`:e.l}
|
|
6
|
-
aria-describedby="pkt-modal__content"
|
|
7
|
-
@close=${e=>this.close(e,!0)}
|
|
8
|
-
>
|
|
9
|
-
<div class="pkt-modal__wrapper">
|
|
10
|
-
${this.headingText||!this.hideCloseButton?e.d`<div class="pkt-modal__header">
|
|
11
|
-
<div class="pkt-modal__header-background"></div>
|
|
12
|
-
${this.headingText?e.d`<h1 id="pkt-modal__headingText" class=${t.t(a)}>
|
|
13
|
-
${this.headingText}
|
|
14
|
-
</h1>`:e.d`<div class="pkt-modal__headingText"></div>`}
|
|
15
|
-
${this.hideCloseButton?e.d`<div class="pkt-modal__noCloseButton"></div>`:e.d`<div class="${t.t(c)}">
|
|
16
|
-
<pkt-button
|
|
17
|
-
@click=${e=>this.close(e)}
|
|
18
|
-
aria-label="close"
|
|
19
|
-
iconname="close"
|
|
20
|
-
variant="icon-only"
|
|
21
|
-
size="medium"
|
|
22
|
-
skin=${s?`tertiary`:`primary`}
|
|
23
|
-
>
|
|
24
|
-
Lukk
|
|
25
|
-
</pkt-button>
|
|
26
|
-
</div>`}
|
|
27
|
-
</div>`:e.l}
|
|
28
|
-
<div class="pkt-modal__container">
|
|
29
|
-
<div id="pkt-modal__content" class=${t.t(o)}>
|
|
30
|
-
${n.n(this)}
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</dialog>
|
|
35
|
-
`}};e.r([e.s({type:Boolean,reflect:!0})],a.prototype,`open`,void 0),e.r([e.s({type:String})],a.prototype,`headingText`,void 0),e.r([e.s({type:Boolean})],a.prototype,`removePadding`,void 0),e.r([e.s({type:Boolean})],a.prototype,`hideCloseButton`,void 0),e.r([e.s({type:Boolean})],a.prototype,`closeOnBackdropClick`,void 0),e.r([e.s({type:String})],a.prototype,`closeButtonSkin`,void 0),e.r([e.s({type:String})],a.prototype,`size`,void 0),e.r([e.s({type:String})],a.prototype,`variant`,void 0),e.r([e.s({type:String})],a.prototype,`drawerPosition`,void 0),e.r([e.s({type:Boolean})],a.prototype,`transparentBackdrop`,void 0),e.r([e.o()],a.prototype,`_isOpen`,void 0);try{e.c(`pkt-modal`)(a)}catch{console.warn(`Forsøker å definere <pkt-modal>, men den er allerede definert`)}var o=a;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|