@oslokommune/punkt-elements 12.29.2 → 12.29.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/dist/index.d.ts +50 -0
- package/dist/loader-ChVEsONa.js +85 -0
- package/dist/loader-DQV1hMM3.cjs +11 -0
- package/dist/loader.d.ts +15 -0
- package/dist/pkt-index.cjs +3 -3
- package/dist/pkt-index.js +22 -20
- package/dist/pkt-loader.cjs +1 -0
- package/dist/pkt-loader.js +6 -0
- package/package.json +2 -2
- package/src/components/index.ts +6 -1
- package/src/components/loader/index.ts +5 -0
- package/src/components/loader/loader.ts +125 -0
package/dist/index.d.ts
CHANGED
|
@@ -47,6 +47,37 @@ declare interface IPktLinkCard {
|
|
|
47
47
|
skin?: TLinkCardSkin;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
export declare interface IPktLoader {
|
|
51
|
+
/**
|
|
52
|
+
* The `delay` prop controls how much time the loading should be given before the loader is displayed.
|
|
53
|
+
* This is handy for situations where the load time might be so short that loader is not necessary.
|
|
54
|
+
* Delay time is in milliseconds.
|
|
55
|
+
*/
|
|
56
|
+
delay?: number;
|
|
57
|
+
/**
|
|
58
|
+
* The `inline` prop decides whether the loader should be displayed inline or not.
|
|
59
|
+
*/
|
|
60
|
+
inline?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* The boolean 'isLoading' decides whether the loader or the children will be displayed.
|
|
63
|
+
* If set to false, the children will be displayed.
|
|
64
|
+
*/
|
|
65
|
+
isLoading?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The message to display when the loader is loading.
|
|
68
|
+
*/
|
|
69
|
+
message?: string | null;
|
|
70
|
+
/**
|
|
71
|
+
* The size of the loader. Default is "medium".
|
|
72
|
+
*/
|
|
73
|
+
size?: TPktSize;
|
|
74
|
+
/**
|
|
75
|
+
* The variant of the loader. Default is "shapes" which is the OSLO wave loader.
|
|
76
|
+
* Other variants are "blue" and "rainbow" which are spinner variants.
|
|
77
|
+
*/
|
|
78
|
+
variant?: TPktLoaderVariant;
|
|
79
|
+
}
|
|
80
|
+
|
|
50
81
|
declare interface IPktMessagebox {
|
|
51
82
|
skin?: TMessageboxSkin;
|
|
52
83
|
title?: string;
|
|
@@ -521,6 +552,23 @@ export declare class PktLinkCard extends PktElement implements IPktLinkCard {
|
|
|
521
552
|
render(): TemplateResult<1>;
|
|
522
553
|
}
|
|
523
554
|
|
|
555
|
+
export declare class PktLoader extends PktElement implements IPktLoader {
|
|
556
|
+
defaultSlot: Ref<HTMLElement>;
|
|
557
|
+
constructor();
|
|
558
|
+
delay: number;
|
|
559
|
+
inline: boolean;
|
|
560
|
+
isLoading: boolean;
|
|
561
|
+
message: string | null;
|
|
562
|
+
size: TPktSize;
|
|
563
|
+
variant: TPktLoaderVariant;
|
|
564
|
+
private _shouldDisplayLoader;
|
|
565
|
+
connectedCallback(): void;
|
|
566
|
+
updated(changedProperties: Map<string, unknown>): void;
|
|
567
|
+
render(): TemplateResult<1>;
|
|
568
|
+
private getVariant;
|
|
569
|
+
private setupLoader;
|
|
570
|
+
}
|
|
571
|
+
|
|
524
572
|
export declare class PktMessagebox extends PktElement implements IPktMessagebox {
|
|
525
573
|
defaultSlot: Ref<HTMLElement>;
|
|
526
574
|
constructor();
|
|
@@ -736,6 +784,8 @@ export declare type TPktButtonType = 'button' | 'submit' | 'reset';
|
|
|
736
784
|
|
|
737
785
|
export declare type TPktButtonVariant = 'label-only' | 'icon-left' | 'icon-right' | 'icon-only' | 'icons-right-and-left';
|
|
738
786
|
|
|
787
|
+
export declare type TPktLoaderVariant = 'blue' | 'rainbow' | 'shapes';
|
|
788
|
+
|
|
739
789
|
declare type TPktSize = 'small' | 'medium' | 'large';
|
|
740
790
|
|
|
741
791
|
export declare type TProgressbarRole = 'progressbar' | 'meter';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { P as u, x as d, E as y, n as o, a as c } from "./element-D_ZgQsSr.js";
|
|
2
|
+
import { e as h } from "./class-map-BYCG9U47.js";
|
|
3
|
+
import { r as m } from "./state-DuS4ffEQ.js";
|
|
4
|
+
import { e as f, n as v } from "./ref-BSGI8ogR.js";
|
|
5
|
+
import { P as _ } from "./pkt-slot-controller-Clbye6cM.js";
|
|
6
|
+
import "./icon-BBFK-d-X.js";
|
|
7
|
+
var g = Object.defineProperty, L = Object.getOwnPropertyDescriptor, s = (e, a, l, r) => {
|
|
8
|
+
for (var i = r > 1 ? void 0 : r ? L(a, l) : a, p = e.length - 1, n; p >= 0; p--)
|
|
9
|
+
(n = e[p]) && (i = (r ? n(a, l, i) : n(i)) || i);
|
|
10
|
+
return r && i && g(a, l, i), i;
|
|
11
|
+
};
|
|
12
|
+
let t = class extends u {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(), this.defaultSlot = f(), this.delay = 0, this.inline = !1, this.isLoading = !0, this.message = null, this.size = "medium", this.variant = "shapes", this._shouldDisplayLoader = !1, this.slotController = new _(this, this.defaultSlot);
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
super.connectedCallback(), this._shouldDisplayLoader = this.delay === 0, this.delay > 0 && this.setupLoader();
|
|
18
|
+
}
|
|
19
|
+
updated(e) {
|
|
20
|
+
e.has("delay") && this.setupLoader();
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
const e = h({
|
|
24
|
+
"pkt-loader": !0,
|
|
25
|
+
[`pkt-loader--${this.inline ? "inline" : "box"}`]: !0,
|
|
26
|
+
[`pkt-loader--${this.size}`]: !0
|
|
27
|
+
}), a = h({
|
|
28
|
+
"pkt-contents": !0,
|
|
29
|
+
"pkt-hide": this.isLoading
|
|
30
|
+
});
|
|
31
|
+
return d`<div role="status" aria-live="polite" .aria-busy=${this.isLoading} class=${e}>
|
|
32
|
+
${this.isLoading && this._shouldDisplayLoader ? d`<div class="pkt-loader__spinner">
|
|
33
|
+
<pkt-icon
|
|
34
|
+
name=${this.getVariant(this.variant)}
|
|
35
|
+
path="https://punkt-cdn.oslo.kommune.no/latest/animations/"
|
|
36
|
+
class="pkt-loader__svg pkt-loader__${this.variant}"
|
|
37
|
+
></pkt-icon>
|
|
38
|
+
${this.message && d`<p>${this.message}</p>`}
|
|
39
|
+
</div>` : y}
|
|
40
|
+
<div class=${a} ${v(this.defaultSlot)}></div>
|
|
41
|
+
</div>`;
|
|
42
|
+
}
|
|
43
|
+
getVariant(e) {
|
|
44
|
+
switch (e) {
|
|
45
|
+
case "blue":
|
|
46
|
+
return "spinner-blue";
|
|
47
|
+
case "rainbow":
|
|
48
|
+
return "spinner";
|
|
49
|
+
default:
|
|
50
|
+
return "loader";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
setupLoader() {
|
|
54
|
+
this.delay > 0 && (this._shouldDisplayLoader = !1, setTimeout(() => {
|
|
55
|
+
this._shouldDisplayLoader = !0, this.requestUpdate();
|
|
56
|
+
}, this.delay));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
s([
|
|
60
|
+
o({ type: Number })
|
|
61
|
+
], t.prototype, "delay", 2);
|
|
62
|
+
s([
|
|
63
|
+
o({ type: Boolean })
|
|
64
|
+
], t.prototype, "inline", 2);
|
|
65
|
+
s([
|
|
66
|
+
o({ type: Boolean })
|
|
67
|
+
], t.prototype, "isLoading", 2);
|
|
68
|
+
s([
|
|
69
|
+
o({ type: String })
|
|
70
|
+
], t.prototype, "message", 2);
|
|
71
|
+
s([
|
|
72
|
+
o({ type: String })
|
|
73
|
+
], t.prototype, "size", 2);
|
|
74
|
+
s([
|
|
75
|
+
o({ type: String })
|
|
76
|
+
], t.prototype, "variant", 2);
|
|
77
|
+
s([
|
|
78
|
+
m()
|
|
79
|
+
], t.prototype, "_shouldDisplayLoader", 2);
|
|
80
|
+
t = s([
|
|
81
|
+
c("pkt-loader")
|
|
82
|
+
], t);
|
|
83
|
+
export {
|
|
84
|
+
t as P
|
|
85
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";const e=require("./element-r-PeQ419.cjs"),d=require("./class-map-Dzci3Pfe.cjs"),u=require("./state-B77EXPZ9.cjs"),p=require("./ref-BUWgvhgU.cjs"),h=require("./pkt-slot-controller-Oc32unDk.cjs");require("./icon-DcJIqTIY.cjs");var c=Object.defineProperty,y=Object.getOwnPropertyDescriptor,s=(o,t,r,i)=>{for(var a=i>1?void 0:i?y(t,r):t,l=o.length-1,n;l>=0;l--)(n=o[l])&&(a=(i?n(t,r,a):n(a))||a);return i&&a&&c(t,r,a),a};exports.PktLoader=class extends e.PktElement{constructor(){super(),this.defaultSlot=p.e(),this.delay=0,this.inline=!1,this.isLoading=!0,this.message=null,this.size="medium",this.variant="shapes",this._shouldDisplayLoader=!1,this.slotController=new h.PktSlotController(this,this.defaultSlot)}connectedCallback(){super.connectedCallback(),this._shouldDisplayLoader=this.delay===0,this.delay>0&&this.setupLoader()}updated(t){t.has("delay")&&this.setupLoader()}render(){const t=d.e({"pkt-loader":!0,[`pkt-loader--${this.inline?"inline":"box"}`]:!0,[`pkt-loader--${this.size}`]:!0}),r=d.e({"pkt-contents":!0,"pkt-hide":this.isLoading});return e.x`<div role="status" aria-live="polite" .aria-busy=${this.isLoading} class=${t}>
|
|
2
|
+
${this.isLoading&&this._shouldDisplayLoader?e.x`<div class="pkt-loader__spinner">
|
|
3
|
+
<pkt-icon
|
|
4
|
+
name=${this.getVariant(this.variant)}
|
|
5
|
+
path="https://punkt-cdn.oslo.kommune.no/latest/animations/"
|
|
6
|
+
class="pkt-loader__svg pkt-loader__${this.variant}"
|
|
7
|
+
></pkt-icon>
|
|
8
|
+
${this.message&&e.x`<p>${this.message}</p>`}
|
|
9
|
+
</div>`:e.E}
|
|
10
|
+
<div class=${r} ${p.n(this.defaultSlot)}></div>
|
|
11
|
+
</div>`}getVariant(t){switch(t){case"blue":return"spinner-blue";case"rainbow":return"spinner";default:return"loader"}}setupLoader(){this.delay>0&&(this._shouldDisplayLoader=!1,setTimeout(()=>{this._shouldDisplayLoader=!0,this.requestUpdate()},this.delay))}};s([e.n({type:Number})],exports.PktLoader.prototype,"delay",2);s([e.n({type:Boolean})],exports.PktLoader.prototype,"inline",2);s([e.n({type:Boolean})],exports.PktLoader.prototype,"isLoading",2);s([e.n({type:String})],exports.PktLoader.prototype,"message",2);s([e.n({type:String})],exports.PktLoader.prototype,"size",2);s([e.n({type:String})],exports.PktLoader.prototype,"variant",2);s([u.r()],exports.PktLoader.prototype,"_shouldDisplayLoader",2);exports.PktLoader=s([e.t("pkt-loader")],exports.PktLoader);
|
package/dist/loader.d.ts
ADDED
package/dist/pkt-index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./alert-CP5oN7df.cjs"),d=require("./button-DPb5WL9h.cjs"),c=require("./calendar-DUkAC9Hx.cjs"),
|
|
2
|
-
<div class="${
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./alert-CP5oN7df.cjs"),d=require("./button-DPb5WL9h.cjs"),c=require("./calendar-DUkAC9Hx.cjs"),P=require("./card-Bxe-jQD_.cjs"),k=require("./checkbox-CDMUepTW.cjs"),t=require("./element-r-PeQ419.cjs"),b=require("./pkt-slot-controller-Oc32unDk.cjs"),i=require("./ref-BUWgvhgU.cjs"),m=require("./class-map-Dzci3Pfe.cjs"),g=require("./datepicker-D6ifQ2so.cjs"),h=require("./helptext-C0mrdhRi.cjs"),f=require("./icon-DcJIqTIY.cjs"),y=require("./input-wrapper-Dqj4uers.cjs"),x=require("./link-C_bwx1Ml.cjs"),O=require("./linkcard-C6mZOE0R.cjs"),j=require("./loader-DQV1hMM3.cjs"),q=require("./messagebox-BSyLVNas.cjs"),C=require("./modal-CblCiNUi.cjs"),v=require("./progressbar-C_q48_qh.cjs"),S=require("./radiobutton-3e105CXX.cjs"),$=require("./tag-BMyii4Da.cjs"),_=require("./textarea-DxpzI67n.cjs"),L=require("./textinput-BRupcl9v.cjs"),T=require("./select-DJu4Wr1y.cjs");var M=Object.defineProperty,B=Object.getOwnPropertyDescriptor,o=(a,e,r,s)=>{for(var n=s>1?void 0:s?B(e,r):e,l=a.length-1,u;l>=0;l--)(u=a[l])&&(n=(s?u(e,r,n):u(n))||n);return s&&n&&M(e,r,n),n};exports.PktComponent=class extends t.PktElement{constructor(){super(),this.string="",this.strings=[],this.darkmode=!1,this._list=[],this.defaultSlot=i.e(),this.namedSlot=i.e(),this.slotController=new b.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
|
+
<div class="${m.e(e)}">
|
|
3
3
|
<h1 class="pkt-txt-28">${this.string}</h1>
|
|
4
4
|
|
|
5
5
|
<h2 class="pkt-txt-22">Innhold fra attributter og funksjoner</h2>
|
|
@@ -26,4 +26,4 @@
|
|
|
26
26
|
<ul>
|
|
27
27
|
${e.map(r=>t.x`<li>${r}</li>`)}
|
|
28
28
|
</ul>
|
|
29
|
-
`}doStuff(e){return e.reverse()}handleGreeting(){this.dispatchEvent(new CustomEvent("pkt-greeting",{detail:"Hei på deg!"}))}};o([t.n({type:String})],exports.PktComponent.prototype,"string",2);o([t.n({converter:c.csvToArray})],exports.PktComponent.prototype,"strings",2);o([t.n({type:Boolean})],exports.PktComponent.prototype,"darkmode",2);o([t.n({type:Array})],exports.PktComponent.prototype,"_list",2);exports.PktComponent=o([t.t("pkt-component")],exports.PktComponent);Object.defineProperty(exports,"PktAlert",{enumerable:!0,get:()=>p.PktAlert});Object.defineProperty(exports,"PktButton",{enumerable:!0,get:()=>d.PktButton});Object.defineProperty(exports,"PktCalendar",{enumerable:!0,get:()=>c.PktCalendar});Object.defineProperty(exports,"PktCard",{enumerable:!0,get:()=>
|
|
29
|
+
`}doStuff(e){return e.reverse()}handleGreeting(){this.dispatchEvent(new CustomEvent("pkt-greeting",{detail:"Hei på deg!"}))}};o([t.n({type:String})],exports.PktComponent.prototype,"string",2);o([t.n({converter:c.csvToArray})],exports.PktComponent.prototype,"strings",2);o([t.n({type:Boolean})],exports.PktComponent.prototype,"darkmode",2);o([t.n({type:Array})],exports.PktComponent.prototype,"_list",2);exports.PktComponent=o([t.t("pkt-component")],exports.PktComponent);Object.defineProperty(exports,"PktAlert",{enumerable:!0,get:()=>p.PktAlert});Object.defineProperty(exports,"PktButton",{enumerable:!0,get:()=>d.PktButton});Object.defineProperty(exports,"PktCalendar",{enumerable:!0,get:()=>c.PktCalendar});Object.defineProperty(exports,"PktCard",{enumerable:!0,get:()=>P.PktCard});Object.defineProperty(exports,"PktCheckbox",{enumerable:!0,get:()=>k.PktCheckbox});Object.defineProperty(exports,"PktDatepicker",{enumerable:!0,get:()=>g.PktDatepicker});Object.defineProperty(exports,"PktHelptext",{enumerable:!0,get:()=>h.PktHelptext});Object.defineProperty(exports,"PktIcon",{enumerable:!0,get:()=>f.PktIcon});Object.defineProperty(exports,"PktInputWrapper",{enumerable:!0,get:()=>y.PktInputWrapper});Object.defineProperty(exports,"PktLink",{enumerable:!0,get:()=>x.PktLink});Object.defineProperty(exports,"PktLinkCard",{enumerable:!0,get:()=>O.PktLinkCard});Object.defineProperty(exports,"PktLoader",{enumerable:!0,get:()=>j.PktLoader});Object.defineProperty(exports,"PktMessagebox",{enumerable:!0,get:()=>q.PktMessagebox});Object.defineProperty(exports,"PktModal",{enumerable:!0,get:()=>C.PktModal});Object.defineProperty(exports,"PktProgressbar",{enumerable:!0,get:()=>v.PktProgressbar});Object.defineProperty(exports,"PktRadioButton",{enumerable:!0,get:()=>S.PktRadioButton});Object.defineProperty(exports,"PktTag",{enumerable:!0,get:()=>$.PktTag});Object.defineProperty(exports,"PktTextarea",{enumerable:!0,get:()=>_.PktTextarea});Object.defineProperty(exports,"PktTextinput",{enumerable:!0,get:()=>L.PktTextinput});Object.defineProperty(exports,"PktSelect",{enumerable:!0,get:()=>T.PktSelect});
|
package/dist/pkt-index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { P as B } from "./card-Db2Ex1cH.js";
|
|
|
6
6
|
import { P as I } from "./checkbox-Dw2CX5zY.js";
|
|
7
7
|
import { P as f, x as m, t as k, n, a as c } from "./element-D_ZgQsSr.js";
|
|
8
8
|
import { P as x } from "./pkt-slot-controller-Clbye6cM.js";
|
|
9
|
-
import { e as
|
|
9
|
+
import { e as P, n as h } from "./ref-BSGI8ogR.js";
|
|
10
10
|
import { e as u } from "./class-map-BYCG9U47.js";
|
|
11
11
|
import { P as G } from "./datepicker-gZ_eVIyS.js";
|
|
12
12
|
import { P as M } from "./helptext-RPq_TKzJ.js";
|
|
@@ -14,14 +14,15 @@ import { P as N } from "./icon-BBFK-d-X.js";
|
|
|
14
14
|
import { P as W } from "./input-wrapper-D-pEAZaj.js";
|
|
15
15
|
import { P as z } from "./link-CDkU7zsB.js";
|
|
16
16
|
import { P as J } from "./linkcard-Dr5iKZrV.js";
|
|
17
|
-
import { P as V } from "./
|
|
18
|
-
import { P as Y } from "./
|
|
19
|
-
import { P as tt } from "./
|
|
20
|
-
import { P as rt } from "./
|
|
21
|
-
import { P as ot } from "./
|
|
22
|
-
import { P as nt } from "./
|
|
23
|
-
import { P as pt } from "./
|
|
24
|
-
import { P as mt } from "./
|
|
17
|
+
import { P as V } from "./loader-ChVEsONa.js";
|
|
18
|
+
import { P as Y } from "./messagebox-Di7LUz4C.js";
|
|
19
|
+
import { P as tt } from "./modal-DZUQb_yG.js";
|
|
20
|
+
import { P as rt } from "./progressbar-CuZj4FWi.js";
|
|
21
|
+
import { P as ot } from "./radiobutton-CcZ2-z8q.js";
|
|
22
|
+
import { P as nt } from "./tag-DVk69673.js";
|
|
23
|
+
import { P as pt } from "./textarea-C8-lnWwu.js";
|
|
24
|
+
import { P as mt } from "./textinput-DRkv93vp.js";
|
|
25
|
+
import { P as ht } from "./select-CnizDIYN.js";
|
|
25
26
|
var g = Object.defineProperty, v = Object.getOwnPropertyDescriptor, o = (t, e, i, a) => {
|
|
26
27
|
for (var r = a > 1 ? void 0 : a ? v(e, i) : e, p = t.length - 1, l; p >= 0; p--)
|
|
27
28
|
(l = t[p]) && (r = (a ? l(e, i, r) : l(r)) || r);
|
|
@@ -29,7 +30,7 @@ var g = Object.defineProperty, v = Object.getOwnPropertyDescriptor, o = (t, e, i
|
|
|
29
30
|
};
|
|
30
31
|
let s = class extends f {
|
|
31
32
|
constructor() {
|
|
32
|
-
super(), this.string = "", this.strings = [], this.darkmode = !1, this._list = [], this.defaultSlot =
|
|
33
|
+
super(), this.string = "", this.strings = [], this.darkmode = !1, this._list = [], this.defaultSlot = P(), this.namedSlot = P(), this.slotController = new x(this, this.defaultSlot, this.namedSlot);
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* Runs on mount, used to set up various values and whatever you need to run
|
|
@@ -57,11 +58,11 @@ let s = class extends f {
|
|
|
57
58
|
<div>${this.renderList(this.doStuff(this._list))}</div>
|
|
58
59
|
|
|
59
60
|
<h2 class="pkt-txt-22">Slot</h2>
|
|
60
|
-
<div ${
|
|
61
|
+
<div ${h(this.defaultSlot)}>defaultSlotRef</div>
|
|
61
62
|
<h2 class="pkt-txt-22">Named slot</h2>
|
|
62
63
|
<select
|
|
63
64
|
name="named-slot"
|
|
64
|
-
${
|
|
65
|
+
${h(this.namedSlot)}
|
|
65
66
|
@change=${(e) => alert(e.target.value)}
|
|
66
67
|
>
|
|
67
68
|
namedSlotRef
|
|
@@ -126,12 +127,13 @@ export {
|
|
|
126
127
|
W as PktInputWrapper,
|
|
127
128
|
z as PktLink,
|
|
128
129
|
J as PktLinkCard,
|
|
129
|
-
V as
|
|
130
|
-
Y as
|
|
131
|
-
tt as
|
|
132
|
-
rt as
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
nt as
|
|
136
|
-
pt as
|
|
130
|
+
V as PktLoader,
|
|
131
|
+
Y as PktMessagebox,
|
|
132
|
+
tt as PktModal,
|
|
133
|
+
rt as PktProgressbar,
|
|
134
|
+
ot as PktRadioButton,
|
|
135
|
+
ht as PktSelect,
|
|
136
|
+
nt as PktTag,
|
|
137
|
+
pt as PktTextarea,
|
|
138
|
+
mt as PktTextinput
|
|
137
139
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./loader-DQV1hMM3.cjs"),t=e.PktLoader;Object.defineProperty(exports,"PktLoader",{enumerable:!0,get:()=>e.PktLoader});exports.default=t;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-elements",
|
|
3
|
-
"version": "12.29.
|
|
3
|
+
"version": "12.29.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",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"url": "https://github.com/oslokommune/punkt/issues"
|
|
58
58
|
},
|
|
59
59
|
"license": "MIT",
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "59a0d70f10e765285167342a739bbe6b126a9882"
|
|
61
61
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { PktIcon } from '@/components/icon'
|
|
|
11
11
|
export { PktInputWrapper } from '@/components/input-wrapper'
|
|
12
12
|
export { PktLink } from '@/components/link'
|
|
13
13
|
export { PktLinkCard } from '@/components/linkcard'
|
|
14
|
+
export { PktLoader } from '@/components/loader'
|
|
14
15
|
export { PktMessagebox } from '@/components/messagebox'
|
|
15
16
|
export { PktModal } from '@/components/modal'
|
|
16
17
|
export { PktProgressbar } from '@/components/progressbar'
|
|
@@ -20,7 +21,8 @@ export { PktTextarea } from '@/components/textarea'
|
|
|
20
21
|
export { PktTextinput } from '@/components/textinput'
|
|
21
22
|
export { PktSelect } from '@/components/select'
|
|
22
23
|
|
|
23
|
-
// Export types
|
|
24
|
+
// Export component types
|
|
25
|
+
|
|
24
26
|
|
|
25
27
|
export type {
|
|
26
28
|
IPktButton,
|
|
@@ -33,6 +35,7 @@ export type {
|
|
|
33
35
|
TPktButtonType,
|
|
34
36
|
} from '@/components/button'
|
|
35
37
|
|
|
38
|
+
|
|
36
39
|
export type {
|
|
37
40
|
IPktProgressbar,
|
|
38
41
|
TProgressbarRole,
|
|
@@ -45,3 +48,5 @@ export type {
|
|
|
45
48
|
export type { TTagSkin, TTagType } from '@/components/tag'
|
|
46
49
|
|
|
47
50
|
export type { TSelectOption } from '@/components/select'
|
|
51
|
+
|
|
52
|
+
export type { IPktLoader, TPktLoaderVariant } from '@/components/loader'
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { PktElement } from '@/base-elements/element'
|
|
2
|
+
import { classMap } from 'lit/directives/class-map.js'
|
|
3
|
+
import { customElement, property, state } from 'lit/decorators.js'
|
|
4
|
+
import { createRef, ref, Ref } from 'lit/directives/ref.js'
|
|
5
|
+
import { html, nothing } from 'lit'
|
|
6
|
+
import { PktSlotController } from '@/controllers/pkt-slot-controller'
|
|
7
|
+
import { TPktSize } from '@/types/size'
|
|
8
|
+
import '@/components/icon'
|
|
9
|
+
|
|
10
|
+
export type TPktLoaderVariant = 'blue' | 'rainbow' | 'shapes'
|
|
11
|
+
|
|
12
|
+
export interface IPktLoader {
|
|
13
|
+
/**
|
|
14
|
+
* The `delay` prop controls how much time the loading should be given before the loader is displayed.
|
|
15
|
+
* This is handy for situations where the load time might be so short that loader is not necessary.
|
|
16
|
+
* Delay time is in milliseconds.
|
|
17
|
+
*/
|
|
18
|
+
delay?: number
|
|
19
|
+
/**
|
|
20
|
+
* The `inline` prop decides whether the loader should be displayed inline or not.
|
|
21
|
+
*/
|
|
22
|
+
inline?: boolean
|
|
23
|
+
/**
|
|
24
|
+
* The boolean 'isLoading' decides whether the loader or the children will be displayed.
|
|
25
|
+
* If set to false, the children will be displayed.
|
|
26
|
+
*/
|
|
27
|
+
isLoading?: boolean
|
|
28
|
+
/**
|
|
29
|
+
* The message to display when the loader is loading.
|
|
30
|
+
*/
|
|
31
|
+
message?: string | null
|
|
32
|
+
/**
|
|
33
|
+
* The size of the loader. Default is "medium".
|
|
34
|
+
*/
|
|
35
|
+
size?: TPktSize
|
|
36
|
+
/**
|
|
37
|
+
* The variant of the loader. Default is "shapes" which is the OSLO wave loader.
|
|
38
|
+
* Other variants are "blue" and "rainbow" which are spinner variants.
|
|
39
|
+
*/
|
|
40
|
+
variant?: TPktLoaderVariant
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@customElement('pkt-loader')
|
|
44
|
+
export class PktLoader extends PktElement implements IPktLoader {
|
|
45
|
+
defaultSlot: Ref<HTMLElement> = createRef()
|
|
46
|
+
|
|
47
|
+
constructor() {
|
|
48
|
+
super()
|
|
49
|
+
this.slotController = new PktSlotController(this, this.defaultSlot)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@property({ type: Number }) delay: number = 0
|
|
53
|
+
@property({ type: Boolean }) inline: boolean = false
|
|
54
|
+
@property({ type: Boolean }) isLoading: boolean = true
|
|
55
|
+
@property({ type: String }) message: string | null = null
|
|
56
|
+
@property({ type: String }) size: TPktSize = 'medium'
|
|
57
|
+
@property({ type: String }) variant: TPktLoaderVariant = 'shapes'
|
|
58
|
+
|
|
59
|
+
@state() private _shouldDisplayLoader: boolean = false
|
|
60
|
+
|
|
61
|
+
connectedCallback() {
|
|
62
|
+
super.connectedCallback()
|
|
63
|
+
this._shouldDisplayLoader = this.delay === 0
|
|
64
|
+
|
|
65
|
+
if (this.delay > 0) {
|
|
66
|
+
this.setupLoader()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
updated(changedProperties: Map<string, unknown>) {
|
|
71
|
+
if (changedProperties.has('delay')) {
|
|
72
|
+
this.setupLoader()
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
render() {
|
|
77
|
+
const classes = classMap({
|
|
78
|
+
'pkt-loader': true,
|
|
79
|
+
[`pkt-loader--${this.inline ? 'inline' : 'box'}`]: true,
|
|
80
|
+
[`pkt-loader--${this.size}`]: true,
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
const slotClasses = classMap({
|
|
84
|
+
'pkt-contents': true,
|
|
85
|
+
'pkt-hide': this.isLoading,
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
return html`<div role="status" aria-live="polite" .aria-busy=${this.isLoading} class=${classes}>
|
|
89
|
+
${this.isLoading && this._shouldDisplayLoader
|
|
90
|
+
? html`<div class="pkt-loader__spinner">
|
|
91
|
+
<pkt-icon
|
|
92
|
+
name=${this.getVariant(this.variant)}
|
|
93
|
+
path="https://punkt-cdn.oslo.kommune.no/latest/animations/"
|
|
94
|
+
class="pkt-loader__svg pkt-loader__${this.variant}"
|
|
95
|
+
></pkt-icon>
|
|
96
|
+
${this.message && html`<p>${this.message}</p>`}
|
|
97
|
+
</div>`
|
|
98
|
+
: nothing}
|
|
99
|
+
<div class=${slotClasses} ${ref(this.defaultSlot)}></div>
|
|
100
|
+
</div>`
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private getVariant(variant: TPktLoaderVariant): string {
|
|
104
|
+
switch (variant) {
|
|
105
|
+
case 'blue':
|
|
106
|
+
return 'spinner-blue'
|
|
107
|
+
case 'rainbow':
|
|
108
|
+
return 'spinner'
|
|
109
|
+
default:
|
|
110
|
+
return 'loader'
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private setupLoader() {
|
|
115
|
+
if (this.delay > 0) {
|
|
116
|
+
this._shouldDisplayLoader = false
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
this._shouldDisplayLoader = true
|
|
119
|
+
this.requestUpdate()
|
|
120
|
+
}, this.delay)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default PktLoader
|