@oslokommune/punkt-elements 12.38.2 → 12.39.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.
- package/CHANGELOG.md +18 -0
- package/dist/index.d.ts +6 -0
- package/dist/{modal-sbobjlRZ.js → modal-8bEB_CoY.js} +79 -63
- package/dist/modal-B6VJdIeY.cjs +36 -0
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +1 -1
- package/dist/pkt-modal.cjs +1 -1
- package/dist/pkt-modal.js +1 -1
- package/package.json +4 -4
- package/src/components/modal/modal.ts +49 -33
- package/dist/modal-DZY4gZCQ.cjs +0 -33
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,24 @@ og skriver commits ca etter [Conventional Commits](https://conventionalcommits.o
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [12.39.0](https://github.com/oslokommune/punkt/compare/12.38.2...12.39.0) (2025-05-15)
|
|
9
|
+
|
|
10
|
+
### ⚠ BREAKING CHANGES
|
|
11
|
+
Ingen
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
* Nye muligheter i Modal: Skuff og gjennomsiktig backdrop (Pluss animert åpning/lukking) (#2548).
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
Ingen
|
|
19
|
+
|
|
20
|
+
### Chores
|
|
21
|
+
Ingen
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
|
|
8
26
|
## [12.38.2](https://github.com/oslokommune/punkt/compare/12.38.1...12.38.2) (2025-05-14)
|
|
9
27
|
|
|
10
28
|
### ⚠ BREAKING CHANGES
|
package/dist/index.d.ts
CHANGED
|
@@ -266,6 +266,9 @@ declare interface IPktModal {
|
|
|
266
266
|
closeOnBackdropClick?: boolean;
|
|
267
267
|
closeButtonSkin?: 'blue' | 'yellow-filled';
|
|
268
268
|
size?: TPktSize;
|
|
269
|
+
variant?: 'dialog' | 'drawer';
|
|
270
|
+
drawerPosition?: 'left' | 'right';
|
|
271
|
+
transparentBackdrop?: boolean;
|
|
269
272
|
}
|
|
270
273
|
|
|
271
274
|
export declare interface IPktProgressbar {
|
|
@@ -948,6 +951,9 @@ export declare class PktModal extends PktElement implements IPktModal {
|
|
|
948
951
|
closeOnBackdropClick?: boolean;
|
|
949
952
|
closeButtonSkin?: 'blue' | 'yellow-filled';
|
|
950
953
|
size?: TPktSize;
|
|
954
|
+
variant?: 'dialog' | 'drawer';
|
|
955
|
+
drawerPosition?: 'left' | 'right';
|
|
956
|
+
transparentBackdrop?: boolean;
|
|
951
957
|
defaultSlot: Ref<HTMLElement>;
|
|
952
958
|
dialogRef: Ref<HTMLDialogElement>;
|
|
953
959
|
_isOpen: boolean;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { e as c } from "./class-map-KyMqi0fa.js";
|
|
2
|
-
import { P as
|
|
2
|
+
import { P as f, E as u, x as p, n, a as g } from "./element-DjjF_tEh.js";
|
|
3
3
|
import { r as v } from "./state-BtbpSrdV.js";
|
|
4
4
|
import { P as _ } from "./pkt-slot-controller-DtDaD9q_.js";
|
|
5
|
-
import { e as m, n as
|
|
5
|
+
import { e as m, n as k } from "./ref-iIffqQAI.js";
|
|
6
6
|
import "./icon-Beoxup8E.js";
|
|
7
|
-
const
|
|
7
|
+
const y = {
|
|
8
8
|
hideCloseButton: {
|
|
9
9
|
default: !1
|
|
10
10
|
},
|
|
@@ -14,17 +14,17 @@ const b = {
|
|
|
14
14
|
size: {
|
|
15
15
|
default: "medium"
|
|
16
16
|
}
|
|
17
|
-
},
|
|
18
|
-
props:
|
|
17
|
+
}, h = {
|
|
18
|
+
props: y
|
|
19
19
|
};
|
|
20
|
-
var
|
|
21
|
-
for (var
|
|
22
|
-
(
|
|
23
|
-
return i &&
|
|
20
|
+
var w = Object.defineProperty, b = Object.getOwnPropertyDescriptor, a = (t, e, o, i) => {
|
|
21
|
+
for (var l = i > 1 ? void 0 : i ? b(e, o) : e, r = t.length - 1, d; r >= 0; r--)
|
|
22
|
+
(d = t[r]) && (l = (i ? d(e, o, l) : d(l)) || l);
|
|
23
|
+
return i && l && w(e, o, l), l;
|
|
24
24
|
};
|
|
25
|
-
let
|
|
25
|
+
let s = class extends f {
|
|
26
26
|
constructor() {
|
|
27
|
-
super(), this.headingText = "", this.removePadding = !1, this.hideCloseButton =
|
|
27
|
+
super(), this.headingText = "", this.removePadding = !1, this.hideCloseButton = h.props.hideCloseButton.default, this.closeOnBackdropClick = h.props.closeOnBackdropClick.default, this.closeButtonSkin = "blue", this.size = h.props.size.default, this.variant = "dialog", this.drawerPosition = "right", this.transparentBackdrop = !1, this.defaultSlot = m(), this.dialogRef = m(), this._isOpen = !1, this.close = (t, e = !1) => {
|
|
28
28
|
var i;
|
|
29
29
|
if (!this._isOpen) return;
|
|
30
30
|
this._isOpen = !1, document.body.classList.remove("pkt-modal--open");
|
|
@@ -45,7 +45,7 @@ let l = class extends k {
|
|
|
45
45
|
}, this.slotController = new _(this, this.defaultSlot), this._isOpen = !1;
|
|
46
46
|
}
|
|
47
47
|
async connectedCallback() {
|
|
48
|
-
super.connectedCallback(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleBackdropClick);
|
|
48
|
+
super.connectedCallback(), document.addEventListener("keydown", this.handleKeyDown.bind(this)), document.addEventListener("click", this.handleBackdropClick.bind(this));
|
|
49
49
|
}
|
|
50
50
|
disconnectedCallback() {
|
|
51
51
|
super.disconnectedCallback(), document.removeEventListener("keydown", this.handleKeyDown), document.removeEventListener("click", this.handleBackdropClick);
|
|
@@ -60,8 +60,8 @@ let l = class extends k {
|
|
|
60
60
|
t.key === "Escape" && this.close(t);
|
|
61
61
|
}
|
|
62
62
|
handleBackdropClick(t) {
|
|
63
|
-
var e;
|
|
64
|
-
this.closeOnBackdropClick && t.target === ((
|
|
63
|
+
var e, o;
|
|
64
|
+
console.log("Event target:", t.target, (e = this.dialogRef) == null ? void 0 : e.value), this.closeOnBackdropClick && t.target === ((o = this.dialogRef) == null ? void 0 : o.value) && this.close(t);
|
|
65
65
|
}
|
|
66
66
|
isElementInViewport(t) {
|
|
67
67
|
const e = t.getBoundingClientRect();
|
|
@@ -72,14 +72,18 @@ let l = class extends k {
|
|
|
72
72
|
"pkt-modal": !0,
|
|
73
73
|
"pkt-modal--removePadding": this.removePadding ?? !1,
|
|
74
74
|
"pkt-modal--noHeadingText": this.headingText === "" || this.headingText === void 0,
|
|
75
|
-
|
|
75
|
+
"pkt-modal--noShadow": this.closeButtonSkin === "yellow-filled",
|
|
76
|
+
"pkt-modal--transparentBackdrop": this.transparentBackdrop ?? !1,
|
|
77
|
+
[`pkt-modal--${this.size}`]: this.size !== void 0,
|
|
78
|
+
[`pkt-modal__${this.variant}`]: this.variant !== void 0,
|
|
79
|
+
[`pkt-modal__drawer--${this.drawerPosition}`]: this.variant === "drawer"
|
|
76
80
|
}, e = {
|
|
77
81
|
"pkt-modal__headingText": !0,
|
|
78
82
|
"pkt-txt-24": !0
|
|
79
83
|
}, o = {
|
|
80
84
|
"pkt-modal__content": !0,
|
|
81
85
|
"pkt-txt-18-light": !0
|
|
82
|
-
}, i = this.closeButtonSkin === "blue",
|
|
86
|
+
}, i = this.closeButtonSkin === "blue", l = {
|
|
83
87
|
"pkt-modal__closeButton": !0,
|
|
84
88
|
[`pkt-modal__closeButton--${this.closeButtonSkin}`]: !0
|
|
85
89
|
}, r = {
|
|
@@ -91,62 +95,74 @@ let l = class extends k {
|
|
|
91
95
|
return p`
|
|
92
96
|
<dialog
|
|
93
97
|
class=${c(t)}
|
|
94
|
-
${
|
|
98
|
+
${k(this.dialogRef)}
|
|
95
99
|
aria-labelledby="pkt-modal__headingText"
|
|
96
100
|
aria-describedby="pkt-modal__content"
|
|
97
|
-
@close=${(
|
|
101
|
+
@close=${(d) => this.close(d, !0)}
|
|
98
102
|
>
|
|
99
|
-
<div class="pkt-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
${this.headingText}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
103
|
+
<div class="pkt-modal__wrapper">
|
|
104
|
+
${this.headingText || !this.hideCloseButton ? p`<div class="pkt-modal__header">
|
|
105
|
+
<div class="pkt-modal__header-background"></div>
|
|
106
|
+
${this.headingText ? p`<h1 id="pkt-modal__headingText" class=${c(e)}>
|
|
107
|
+
${this.headingText}
|
|
108
|
+
</h1>` : p`<div class="pkt-modal__headingText"></div>`}
|
|
109
|
+
${this.hideCloseButton ? u : p`<div class="${c(l)}">
|
|
110
|
+
<pkt-button
|
|
111
|
+
@click=${(d) => this.close(d)}
|
|
112
|
+
class=${c(r)}
|
|
113
|
+
aria-label="close"
|
|
114
|
+
iconname="close"
|
|
115
|
+
variant="icon-only"
|
|
116
|
+
>
|
|
117
|
+
Lukk
|
|
118
|
+
</pkt-button>
|
|
119
|
+
</div>`}
|
|
120
|
+
</div>` : u}
|
|
121
|
+
<div class="pkt-modal__container">
|
|
122
|
+
<div
|
|
123
|
+
id="pkt-modal__content"
|
|
124
|
+
class=${c(o)}
|
|
125
|
+
${k(this.defaultSlot)}
|
|
126
|
+
></div>
|
|
127
|
+
</div>
|
|
121
128
|
</div>
|
|
122
129
|
</dialog>
|
|
123
130
|
`;
|
|
124
131
|
}
|
|
125
132
|
};
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
],
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
],
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
],
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
],
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
],
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
],
|
|
144
|
-
|
|
133
|
+
a([
|
|
134
|
+
n({ type: String })
|
|
135
|
+
], s.prototype, "headingText", 2);
|
|
136
|
+
a([
|
|
137
|
+
n({ type: Boolean })
|
|
138
|
+
], s.prototype, "removePadding", 2);
|
|
139
|
+
a([
|
|
140
|
+
n({ type: Boolean })
|
|
141
|
+
], s.prototype, "hideCloseButton", 2);
|
|
142
|
+
a([
|
|
143
|
+
n({ type: Boolean })
|
|
144
|
+
], s.prototype, "closeOnBackdropClick", 2);
|
|
145
|
+
a([
|
|
146
|
+
n({ type: String })
|
|
147
|
+
], s.prototype, "closeButtonSkin", 2);
|
|
148
|
+
a([
|
|
149
|
+
n({ type: String })
|
|
150
|
+
], s.prototype, "size", 2);
|
|
151
|
+
a([
|
|
152
|
+
n({ type: String })
|
|
153
|
+
], s.prototype, "variant", 2);
|
|
154
|
+
a([
|
|
155
|
+
n({ type: String })
|
|
156
|
+
], s.prototype, "drawerPosition", 2);
|
|
157
|
+
a([
|
|
158
|
+
n({ type: Boolean })
|
|
159
|
+
], s.prototype, "transparentBackdrop", 2);
|
|
160
|
+
a([
|
|
145
161
|
v()
|
|
146
|
-
],
|
|
147
|
-
|
|
162
|
+
], s.prototype, "_isOpen", 2);
|
|
163
|
+
s = a([
|
|
148
164
|
g("pkt-modal")
|
|
149
|
-
],
|
|
165
|
+
], s);
|
|
150
166
|
export {
|
|
151
|
-
|
|
167
|
+
s as P
|
|
152
168
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";const d=require("./class-map-DCyaICmy.cjs"),i=require("./element-BSypUpzA.cjs"),u=require("./state-B5KCNjEd.cjs"),k=require("./pkt-slot-controller-Da-RgXfS.cjs"),r=require("./ref-BvbyvXRH.cjs");require("./icon-BnKGwYjj.cjs");const m={hideCloseButton:{default:!1},closeOnBackdropClick:{default:!1},size:{default:"medium"}},h={props:m};var v=Object.defineProperty,g=Object.getOwnPropertyDescriptor,l=(c,t,e,o)=>{for(var s=o>1?void 0:o?g(t,e):t,n=c.length-1,a;n>=0;n--)(a=c[n])&&(s=(o?a(t,e,s):a(s))||s);return o&&s&&v(t,e,s),s};exports.PktModal=class extends i.PktElement{constructor(){super(),this.headingText="",this.removePadding=!1,this.hideCloseButton=h.props.hideCloseButton.default,this.closeOnBackdropClick=h.props.closeOnBackdropClick.default,this.closeButtonSkin="blue",this.size=h.props.size.default,this.variant="dialog",this.drawerPosition="right",this.transparentBackdrop=!1,this.defaultSlot=r.e(),this.dialogRef=r.e(),this._isOpen=!1,this.close=(t,e=!1)=>{var s;if(!this._isOpen)return;this._isOpen=!1,document.body.classList.remove("pkt-modal--open");const o=document.activeElement;o&&!this.isElementInViewport(o)&&o.scrollIntoView({behavior:"smooth",block:"nearest"}),this.dispatchEvent(new CustomEvent("close",{detail:{origin:t},bubbles:!0,composed:!0})),e||(s=this.dialogRef.value)==null||s.close(),this.requestUpdate()},this.showModal=(t=null)=>{var o;this._isOpen=!0,(o=this.dialogRef.value)==null||o.showModal();const e=document.querySelector(".pkt-modal");requestAnimationFrame(()=>{var s;this.dialogRef.value&&((s=this.dialogRef.value)==null||s.focus())}),e&&document.body.classList.add("pkt-modal--open"),this.dispatchEvent(new CustomEvent("showModal",{detail:{origin:t},bubbles:!0,composed:!0})),this.requestUpdate()},this.slotController=new k.PktSlotController(this,this.defaultSlot),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)}async firstUpdated(t){super.firstUpdated(t),this.dialogRef.value&&!window.HTMLDialogElement&&!this.dialogRef.value.showModal&&("document"in window&&"createElement"in document&&(await Promise.resolve().then(()=>require("./dialog-polyfill.esm-CPKZe7AL.cjs")).then(o=>o.default)).registerDialog(this.dialogRef.value),this.dialogRef.value.addEventListener("close",()=>{this.close(new Event("close"),!0)}))}handleKeyDown(t){t.key==="Escape"&&this.close(t)}handleBackdropClick(t){var e,o;console.log("Event target:",t.target,(e=this.dialogRef)==null?void 0:e.value),this.closeOnBackdropClick&&t.target===((o=this.dialogRef)==null?void 0:o.value)&&this.close(t)}isElementInViewport(t){const e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}render(){const t={"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"},e={"pkt-modal__headingText":!0,"pkt-txt-24":!0},o={"pkt-modal__content":!0,"pkt-txt-18-light":!0},s=this.closeButtonSkin==="blue",n={"pkt-modal__closeButton":!0,[`pkt-modal__closeButton--${this.closeButtonSkin}`]:!0},a={"pkt-btn":!0,[`pkt-btn--${s?"tertiary":"primary"}`]:!0,"pkt-btn--icon-only":!0,"pkt-btn--medium":!0};return i.x`
|
|
2
|
+
<dialog
|
|
3
|
+
class=${d.e(t)}
|
|
4
|
+
${r.n(this.dialogRef)}
|
|
5
|
+
aria-labelledby="pkt-modal__headingText"
|
|
6
|
+
aria-describedby="pkt-modal__content"
|
|
7
|
+
@close=${p=>this.close(p,!0)}
|
|
8
|
+
>
|
|
9
|
+
<div class="pkt-modal__wrapper">
|
|
10
|
+
${this.headingText||!this.hideCloseButton?i.x`<div class="pkt-modal__header">
|
|
11
|
+
<div class="pkt-modal__header-background"></div>
|
|
12
|
+
${this.headingText?i.x`<h1 id="pkt-modal__headingText" class=${d.e(e)}>
|
|
13
|
+
${this.headingText}
|
|
14
|
+
</h1>`:i.x`<div class="pkt-modal__headingText"></div>`}
|
|
15
|
+
${this.hideCloseButton?i.E:i.x`<div class="${d.e(n)}">
|
|
16
|
+
<pkt-button
|
|
17
|
+
@click=${p=>this.close(p)}
|
|
18
|
+
class=${d.e(a)}
|
|
19
|
+
aria-label="close"
|
|
20
|
+
iconname="close"
|
|
21
|
+
variant="icon-only"
|
|
22
|
+
>
|
|
23
|
+
Lukk
|
|
24
|
+
</pkt-button>
|
|
25
|
+
</div>`}
|
|
26
|
+
</div>`:i.E}
|
|
27
|
+
<div class="pkt-modal__container">
|
|
28
|
+
<div
|
|
29
|
+
id="pkt-modal__content"
|
|
30
|
+
class=${d.e(o)}
|
|
31
|
+
${r.n(this.defaultSlot)}
|
|
32
|
+
></div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</dialog>
|
|
36
|
+
`}};l([i.n({type:String})],exports.PktModal.prototype,"headingText",2);l([i.n({type:Boolean})],exports.PktModal.prototype,"removePadding",2);l([i.n({type:Boolean})],exports.PktModal.prototype,"hideCloseButton",2);l([i.n({type:Boolean})],exports.PktModal.prototype,"closeOnBackdropClick",2);l([i.n({type:String})],exports.PktModal.prototype,"closeButtonSkin",2);l([i.n({type:String})],exports.PktModal.prototype,"size",2);l([i.n({type:String})],exports.PktModal.prototype,"variant",2);l([i.n({type:String})],exports.PktModal.prototype,"drawerPosition",2);l([i.n({type:Boolean})],exports.PktModal.prototype,"transparentBackdrop",2);l([u.r()],exports.PktModal.prototype,"_isOpen",2);exports.PktModal=l([i.t("pkt-modal")],exports.PktModal);
|
package/dist/pkt-index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./alert-C2EPmB0W.cjs"),l=require("./accordionitem-RFwXQC_0.cjs"),d=require("./backlink-HHM21crL.cjs"),b=require("./button-DeAuj8qB.cjs"),k=require("./calendar-CYY42kN4.cjs"),m=require("./card-Di1MQneh.cjs"),g=require("./combobox-yUrUarU_.cjs"),h=require("./consent-B3jbzwS_.cjs"),f=require("./checkbox-zqd3KVfz.cjs"),t=require("./element-BSypUpzA.cjs"),y=require("./pkt-slot-controller-Da-RgXfS.cjs"),s=require("./ref-BvbyvXRH.cjs"),O=require("./class-map-DCyaICmy.cjs"),j=require("./datepicker-CH5ZmFhf.cjs"),q=require("./helptext-bMgnhZ1R.cjs"),x=require("./heading-BnJhJDMD.cjs"),C=require("./icon-BnKGwYjj.cjs"),v=require("./input-wrapper-B-f_SotM.cjs"),S=require("./link-nesPZCIx.cjs"),$=require("./linkcard-s9yoOq90.cjs"),L=require("./loader-Bk4XPiOY.cjs"),_=require("./messagebox-B0kgftoP.cjs"),A=require("./modal-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./alert-C2EPmB0W.cjs"),l=require("./accordionitem-RFwXQC_0.cjs"),d=require("./backlink-HHM21crL.cjs"),b=require("./button-DeAuj8qB.cjs"),k=require("./calendar-CYY42kN4.cjs"),m=require("./card-Di1MQneh.cjs"),g=require("./combobox-yUrUarU_.cjs"),h=require("./consent-B3jbzwS_.cjs"),f=require("./checkbox-zqd3KVfz.cjs"),t=require("./element-BSypUpzA.cjs"),y=require("./pkt-slot-controller-Da-RgXfS.cjs"),s=require("./ref-BvbyvXRH.cjs"),O=require("./class-map-DCyaICmy.cjs"),j=require("./datepicker-CH5ZmFhf.cjs"),q=require("./helptext-bMgnhZ1R.cjs"),x=require("./heading-BnJhJDMD.cjs"),C=require("./icon-BnKGwYjj.cjs"),v=require("./input-wrapper-B-f_SotM.cjs"),S=require("./link-nesPZCIx.cjs"),$=require("./linkcard-s9yoOq90.cjs"),L=require("./loader-Bk4XPiOY.cjs"),_=require("./messagebox-B0kgftoP.cjs"),A=require("./modal-B6VJdIeY.cjs"),B=require("./progressbar-DiRfScnB.cjs"),p=require("./radiobutton-CI2xaqAB.cjs"),T=require("./tag-B9kFYxHg.cjs"),I=require("./textarea-DxbylapQ.cjs"),M=require("./textinput-B__c4c1z.cjs"),R=require("./select-BCL790jM.cjs");var H=Object.defineProperty,w=Object.getOwnPropertyDescriptor,o=(a,e,r,i)=>{for(var n=i>1?void 0:i?w(e,r):e,u=a.length-1,c;u>=0;u--)(c=a[u])&&(n=(i?c(e,r,n):c(n))||n);return i&&n&&H(e,r,n),n};exports.PktComponent=class extends t.PktElement{constructor(){super(),this.string="",this.strings=[],this.darkmode=!1,this._list=[],this.defaultSlot=s.e(),this.namedSlot=s.e(),this.slotController=new y.PktSlotController(this,this.defaultSlot,this.namedSlot)}connectedCallback(){this.strings.length&&this.strings.forEach(e=>{this._list.push(e.toUpperCase())}),super.connectedCallback()}render(){const e={"pkt-component":!0,"pkt-component--has-list":this.strings.length>0,"pkt-darkmode":this.darkmode};return t.x`
|
|
2
2
|
<div class="${O.e(e)}">
|
|
3
3
|
<h1 class="pkt-txt-28">${this.string}</h1>
|
|
4
4
|
|
package/dist/pkt-index.js
CHANGED
|
@@ -21,7 +21,7 @@ import { P as ot } from "./link-DCYJhFKJ.js";
|
|
|
21
21
|
import { P as at } from "./linkcard-Bt-Qa_SP.js";
|
|
22
22
|
import { P as it } from "./loader-C9EtX_mK.js";
|
|
23
23
|
import { P as lt } from "./messagebox-DZDP8XZt.js";
|
|
24
|
-
import { P as mt } from "./modal-
|
|
24
|
+
import { P as mt } from "./modal-8bEB_CoY.js";
|
|
25
25
|
import { P as ft } from "./progressbar-BKt_aj7f.js";
|
|
26
26
|
import { P as ht, P as ct } from "./radiobutton-CYJawqxD.js";
|
|
27
27
|
import { P as ut } from "./tag-Cu8afZy8.js";
|
package/dist/pkt-modal.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./modal-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./modal-B6VJdIeY.cjs"),t=e.PktModal;Object.defineProperty(exports,"PktModal",{enumerable:!0,get:()=>e.PktModal});exports.default=t;
|
package/dist/pkt-modal.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-elements",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.39.1",
|
|
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",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"urlpattern-polyfill": "^10.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@oslokommune/punkt-assets": "^12.
|
|
35
|
-
"@oslokommune/punkt-css": "^12.
|
|
34
|
+
"@oslokommune/punkt-assets": "^12.39.1",
|
|
35
|
+
"@oslokommune/punkt-css": "^12.39.1",
|
|
36
36
|
"sass": "^1.78.0",
|
|
37
37
|
"typescript": "^5.6.2",
|
|
38
38
|
"vite": "^5.4.18",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"url": "https://github.com/oslokommune/punkt/issues"
|
|
60
60
|
},
|
|
61
61
|
"license": "MIT",
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "f00768b66e00983a704053c635fefa6b717889ee"
|
|
63
63
|
}
|
|
@@ -16,19 +16,25 @@ export interface IPktModal {
|
|
|
16
16
|
closeOnBackdropClick?: boolean
|
|
17
17
|
closeButtonSkin?: 'blue' | 'yellow-filled'
|
|
18
18
|
size?: TPktSize
|
|
19
|
+
variant?: 'dialog' | 'drawer'
|
|
20
|
+
drawerPosition?: 'left' | 'right'
|
|
21
|
+
transparentBackdrop?: boolean
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
@customElement('pkt-modal')
|
|
22
25
|
export class PktModal extends PktElement implements IPktModal {
|
|
23
26
|
// Public properties"
|
|
24
|
-
@property({ type: String
|
|
25
|
-
@property({ type: Boolean
|
|
26
|
-
@property({ type: Boolean
|
|
27
|
-
|
|
28
|
-
@property({ type: Boolean, reflect: true })
|
|
27
|
+
@property({ type: String }) headingText?: string = ''
|
|
28
|
+
@property({ type: Boolean }) removePadding?: boolean = false
|
|
29
|
+
@property({ type: Boolean }) hideCloseButton?: boolean = specs.props.hideCloseButton.default
|
|
30
|
+
@property({ type: Boolean })
|
|
29
31
|
closeOnBackdropClick?: boolean = specs.props.closeOnBackdropClick.default
|
|
30
|
-
@property({ type: String
|
|
31
|
-
@property({ type: String
|
|
32
|
+
@property({ type: String }) closeButtonSkin?: 'blue' | 'yellow-filled' = 'blue'
|
|
33
|
+
@property({ type: String }) size?: TPktSize = specs.props.size.default as TPktSize
|
|
34
|
+
@property({ type: String }) variant?: 'dialog' | 'drawer' = 'dialog'
|
|
35
|
+
@property({ type: String }) drawerPosition?: 'left' | 'right' = 'right'
|
|
36
|
+
@property({ type: Boolean }) transparentBackdrop?: boolean = false
|
|
37
|
+
|
|
32
38
|
defaultSlot: Ref<HTMLElement> = createRef()
|
|
33
39
|
dialogRef: Ref<HTMLDialogElement> = createRef()
|
|
34
40
|
|
|
@@ -42,8 +48,8 @@ export class PktModal extends PktElement implements IPktModal {
|
|
|
42
48
|
|
|
43
49
|
async connectedCallback(): Promise<void> {
|
|
44
50
|
super.connectedCallback()
|
|
45
|
-
document.addEventListener('keydown', this.handleKeyDown)
|
|
46
|
-
document.addEventListener('click', this.handleBackdropClick)
|
|
51
|
+
document.addEventListener('keydown', this.handleKeyDown.bind(this))
|
|
52
|
+
document.addEventListener('click', this.handleBackdropClick.bind(this))
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
disconnectedCallback(): void {
|
|
@@ -73,6 +79,7 @@ export class PktModal extends PktElement implements IPktModal {
|
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
private handleBackdropClick(event: MouseEvent) {
|
|
82
|
+
console.log('Event target:', event.target, this.dialogRef?.value)
|
|
76
83
|
if (this.closeOnBackdropClick && event.target === this.dialogRef?.value) {
|
|
77
84
|
this.close(event)
|
|
78
85
|
}
|
|
@@ -135,7 +142,11 @@ export class PktModal extends PktElement implements IPktModal {
|
|
|
135
142
|
'pkt-modal': true,
|
|
136
143
|
'pkt-modal--removePadding': this.removePadding ?? false,
|
|
137
144
|
'pkt-modal--noHeadingText': this.headingText === '' || this.headingText === undefined,
|
|
145
|
+
'pkt-modal--noShadow': this.closeButtonSkin === 'yellow-filled',
|
|
146
|
+
'pkt-modal--transparentBackdrop': this.transparentBackdrop ?? false,
|
|
138
147
|
[`pkt-modal--${this.size}`]: this.size !== undefined,
|
|
148
|
+
[`pkt-modal__${this.variant}`]: this.variant !== undefined,
|
|
149
|
+
[`pkt-modal__drawer--${this.drawerPosition}`]: this.variant === 'drawer',
|
|
139
150
|
}
|
|
140
151
|
|
|
141
152
|
const headingClasses = {
|
|
@@ -169,32 +180,37 @@ export class PktModal extends PktElement implements IPktModal {
|
|
|
169
180
|
aria-describedby="pkt-modal__content"
|
|
170
181
|
@close=${(event: Event) => this.close(event, true)}
|
|
171
182
|
>
|
|
172
|
-
<div class="pkt-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
${this.headingText
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
183
|
+
<div class="pkt-modal__wrapper">
|
|
184
|
+
${this.headingText || !this.hideCloseButton
|
|
185
|
+
? html`<div class="pkt-modal__header">
|
|
186
|
+
<div class="pkt-modal__header-background"></div>
|
|
187
|
+
${this.headingText
|
|
188
|
+
? html`<h1 id="pkt-modal__headingText" class=${classMap(headingClasses)}>
|
|
189
|
+
${this.headingText}
|
|
190
|
+
</h1>`
|
|
191
|
+
: html`<div class="pkt-modal__headingText"></div>`}
|
|
192
|
+
${!this.hideCloseButton
|
|
193
|
+
? html`<div class="${classMap(closeButtonClasses)}">
|
|
194
|
+
<pkt-button
|
|
195
|
+
@click=${(event: Event) => this.close(event)}
|
|
196
|
+
class=${classMap(buttonClasses)}
|
|
197
|
+
aria-label="close"
|
|
198
|
+
iconname="close"
|
|
199
|
+
variant="icon-only"
|
|
200
|
+
>
|
|
201
|
+
Lukk
|
|
202
|
+
</pkt-button>
|
|
203
|
+
</div>`
|
|
204
|
+
: nothing}
|
|
189
205
|
</div>`
|
|
190
206
|
: nothing}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
207
|
+
<div class="pkt-modal__container">
|
|
208
|
+
<div
|
|
209
|
+
id="pkt-modal__content"
|
|
210
|
+
class=${classMap(contentClasses)}
|
|
211
|
+
${ref(this.defaultSlot)}
|
|
212
|
+
></div>
|
|
213
|
+
</div>
|
|
198
214
|
</div>
|
|
199
215
|
</dialog>
|
|
200
216
|
`
|
package/dist/modal-DZY4gZCQ.cjs
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";const d=require("./class-map-DCyaICmy.cjs"),i=require("./element-BSypUpzA.cjs"),h=require("./state-B5KCNjEd.cjs"),k=require("./pkt-slot-controller-Da-RgXfS.cjs"),r=require("./ref-BvbyvXRH.cjs");require("./icon-BnKGwYjj.cjs");const m={hideCloseButton:{default:!1},closeOnBackdropClick:{default:!1},size:{default:"medium"}},p={props:m};var f=Object.defineProperty,g=Object.getOwnPropertyDescriptor,l=(c,e,t,o)=>{for(var s=o>1?void 0:o?g(e,t):e,n=c.length-1,a;n>=0;n--)(a=c[n])&&(s=(o?a(e,t,s):a(s))||s);return o&&s&&f(e,t,s),s};exports.PktModal=class extends i.PktElement{constructor(){super(),this.headingText="",this.removePadding=!1,this.hideCloseButton=p.props.hideCloseButton.default,this.closeOnBackdropClick=p.props.closeOnBackdropClick.default,this.closeButtonSkin="blue",this.size=p.props.size.default,this.defaultSlot=r.e(),this.dialogRef=r.e(),this._isOpen=!1,this.close=(e,t=!1)=>{var s;if(!this._isOpen)return;this._isOpen=!1,document.body.classList.remove("pkt-modal--open");const o=document.activeElement;o&&!this.isElementInViewport(o)&&o.scrollIntoView({behavior:"smooth",block:"nearest"}),this.dispatchEvent(new CustomEvent("close",{detail:{origin:e},bubbles:!0,composed:!0})),t||(s=this.dialogRef.value)==null||s.close(),this.requestUpdate()},this.showModal=(e=null)=>{var o;this._isOpen=!0,(o=this.dialogRef.value)==null||o.showModal();const t=document.querySelector(".pkt-modal");requestAnimationFrame(()=>{var s;this.dialogRef.value&&((s=this.dialogRef.value)==null||s.focus())}),t&&document.body.classList.add("pkt-modal--open"),this.dispatchEvent(new CustomEvent("showModal",{detail:{origin:e},bubbles:!0,composed:!0})),this.requestUpdate()},this.slotController=new k.PktSlotController(this,this.defaultSlot),this._isOpen=!1}async connectedCallback(){super.connectedCallback(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleBackdropClick)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("click",this.handleBackdropClick)}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-CPKZe7AL.cjs")).then(o=>o.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){var t;this.closeOnBackdropClick&&e.target===((t=this.dialogRef)==null?void 0:t.value)&&this.close(e)}isElementInViewport(e){const 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(){const e={"pkt-modal":!0,"pkt-modal--removePadding":this.removePadding??!1,"pkt-modal--noHeadingText":this.headingText===""||this.headingText===void 0,[`pkt-modal--${this.size}`]:this.size!==void 0},t={"pkt-modal__headingText":!0,"pkt-txt-24":!0},o={"pkt-modal__content":!0,"pkt-txt-18-light":!0},s=this.closeButtonSkin==="blue",n={"pkt-modal__closeButton":!0,[`pkt-modal__closeButton--${this.closeButtonSkin}`]:!0},a={"pkt-btn":!0,[`pkt-btn--${s?"tertiary":"primary"}`]:!0,"pkt-btn--icon-only":!0,"pkt-btn--medium":!0};return i.x`
|
|
2
|
-
<dialog
|
|
3
|
-
class=${d.e(e)}
|
|
4
|
-
${r.n(this.dialogRef)}
|
|
5
|
-
aria-labelledby="pkt-modal__headingText"
|
|
6
|
-
aria-describedby="pkt-modal__content"
|
|
7
|
-
@close=${u=>this.close(u,!0)}
|
|
8
|
-
>
|
|
9
|
-
<div class="pkt-modal__header">
|
|
10
|
-
<div class="pkt-modal__header-background"></div>
|
|
11
|
-
${this.headingText?i.x`<h1 id="pkt-modal__headingText" class=${d.e(t)}>
|
|
12
|
-
${this.headingText}
|
|
13
|
-
</h1>`:i.E}
|
|
14
|
-
${this.hideCloseButton?i.E:i.x`<div class="${d.e(n)}">
|
|
15
|
-
<pkt-button
|
|
16
|
-
@click=${u=>this.close(u)}
|
|
17
|
-
class=${d.e(a)}
|
|
18
|
-
aria-label="close"
|
|
19
|
-
iconname="close"
|
|
20
|
-
variant="icon-only"
|
|
21
|
-
>
|
|
22
|
-
</pkt-button>
|
|
23
|
-
</div>`}
|
|
24
|
-
</div>
|
|
25
|
-
<div class="pkt-modal__container">
|
|
26
|
-
<div
|
|
27
|
-
id="pkt-modal__content"
|
|
28
|
-
class=${d.e(o)}
|
|
29
|
-
${r.n(this.defaultSlot)}
|
|
30
|
-
></div>
|
|
31
|
-
</div>
|
|
32
|
-
</dialog>
|
|
33
|
-
`}};l([i.n({type:String,reflect:!0})],exports.PktModal.prototype,"headingText",2);l([i.n({type:Boolean,reflect:!0})],exports.PktModal.prototype,"removePadding",2);l([i.n({type:Boolean,reflect:!0})],exports.PktModal.prototype,"hideCloseButton",2);l([i.n({type:Boolean,reflect:!0})],exports.PktModal.prototype,"closeOnBackdropClick",2);l([i.n({type:String,reflect:!0})],exports.PktModal.prototype,"closeButtonSkin",2);l([i.n({type:String,reflect:!0})],exports.PktModal.prototype,"size",2);l([h.r()],exports.PktModal.prototype,"_isOpen",2);exports.PktModal=l([i.t("pkt-modal")],exports.PktModal);
|