@postnord/pn-marketweb-components 1.0.39 → 1.0.40
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/cjs/{index-ea886985.js → index-31d574c5.js} +1 -1
- package/cjs/{index-0404c97e.js → index-cd08e313.js} +4 -0
- package/cjs/loader.cjs.js +2 -2
- package/cjs/pn-bonus-progressbar-level.cjs.entry.js +42 -0
- package/cjs/pn-bonus-progressbar.cjs.entry.js +90 -0
- package/cjs/pn-choice-button_2.cjs.entry.js +3 -3
- package/cjs/pn-filter-checkbox.cjs.entry.js +1 -1
- package/cjs/pn-filter-search.cjs.entry.js +1 -1
- package/cjs/{pn-find-service-and-price-store-df7890f3.js → pn-find-service-and-price-store-bded912f.js} +1 -1
- package/cjs/pn-find-service-and-price.cjs.entry.js +3 -3
- package/cjs/pn-language-selector_9.cjs.entry.js +3 -3
- package/cjs/pn-mainnav-link.cjs.entry.js +3 -3
- package/cjs/{pn-mainnav-store-87a95686.js → pn-mainnav-store-4a3492cd.js} +1 -1
- package/cjs/pn-market-web-components.cjs.js +2 -2
- package/cjs/pn-marketweb-sitefooter.cjs.entry.js +1 -1
- package/cjs/pn-marketweb-siteheader.cjs.entry.js +1 -1
- package/cjs/pn-product-pricelist-result.cjs.entry.js +3 -3
- package/cjs/{pn-product-pricelist-store-3a956b18.js → pn-product-pricelist-store-8dda97db.js} +1 -1
- package/cjs/pn-product-pricelist.cjs.entry.js +3 -3
- package/cjs/pn-product-tile_3.cjs.entry.js +1 -1
- package/cjs/pn-profile-selector.cjs.entry.js +1 -1
- package/cjs/pn-sidenav-level.cjs.entry.js +3 -3
- package/cjs/pn-sidenav-link.cjs.entry.js +3 -3
- package/cjs/{pn-sidenav-store-ac7b8608.js → pn-sidenav-store-044d6595.js} +1 -1
- package/cjs/pn-sidenav.cjs.entry.js +3 -3
- package/cjs/pn-site-footer_2.cjs.entry.js +1 -1
- package/collection/collection-manifest.json +2 -0
- package/collection/components/input/pn-bonus-progressbar/pn-bonus-progressbar-level.css +48 -0
- package/collection/components/input/pn-bonus-progressbar/pn-bonus-progressbar-level.js +120 -0
- package/collection/components/input/pn-bonus-progressbar/pn-bonus-progressbar.css +77 -0
- package/collection/components/input/pn-bonus-progressbar/pn-bonus-progressbar.js +254 -0
- package/collection/components/input/pn-bonus-progressbar/pn-bonus-progressbar.stories.js +79 -0
- package/custom-elements/index.d.ts +12 -0
- package/custom-elements/index.js +126 -2
- package/esm/{index-e34aec9d.js → index-94746173.js} +1 -1
- package/esm/{index-1537f439.js → index-b26d0794.js} +4 -0
- package/esm/loader.js +2 -2
- package/esm/pn-bonus-progressbar-level.entry.js +38 -0
- package/esm/pn-bonus-progressbar.entry.js +86 -0
- package/esm/pn-choice-button_2.entry.js +3 -3
- package/esm/pn-filter-checkbox.entry.js +1 -1
- package/esm/pn-filter-search.entry.js +1 -1
- package/esm/{pn-find-service-and-price-store-ae3cddfb.js → pn-find-service-and-price-store-2ddc6cfa.js} +1 -1
- package/esm/pn-find-service-and-price.entry.js +3 -3
- package/esm/pn-language-selector_9.entry.js +3 -3
- package/esm/pn-mainnav-link.entry.js +3 -3
- package/esm/{pn-mainnav-store-8e518460.js → pn-mainnav-store-c14ad7e8.js} +1 -1
- package/esm/pn-market-web-components.js +2 -2
- package/esm/pn-marketweb-sitefooter.entry.js +1 -1
- package/esm/pn-marketweb-siteheader.entry.js +1 -1
- package/esm/pn-product-pricelist-result.entry.js +3 -3
- package/esm/{pn-product-pricelist-store-b59d0cba.js → pn-product-pricelist-store-a287a3f5.js} +1 -1
- package/esm/pn-product-pricelist.entry.js +3 -3
- package/esm/pn-product-tile_3.entry.js +1 -1
- package/esm/pn-profile-selector.entry.js +1 -1
- package/esm/pn-sidenav-level.entry.js +3 -3
- package/esm/pn-sidenav-link.entry.js +3 -3
- package/esm/{pn-sidenav-store-c46b24d2.js → pn-sidenav-store-6f25eef9.js} +1 -1
- package/esm/pn-sidenav.entry.js +3 -3
- package/esm/pn-site-footer_2.entry.js +1 -1
- package/esm-es5/{index-e34aec9d.js → index-94746173.js} +1 -1
- package/esm-es5/{index-1537f439.js → index-b26d0794.js} +1 -1
- package/esm-es5/loader.js +1 -1
- package/esm-es5/pn-bonus-progressbar-level.entry.js +1 -0
- package/esm-es5/pn-bonus-progressbar.entry.js +1 -0
- package/esm-es5/pn-choice-button_2.entry.js +1 -1
- package/esm-es5/pn-filter-checkbox.entry.js +1 -1
- package/esm-es5/pn-filter-search.entry.js +1 -1
- package/esm-es5/{pn-find-service-and-price-store-ae3cddfb.js → pn-find-service-and-price-store-2ddc6cfa.js} +1 -1
- package/esm-es5/pn-find-service-and-price.entry.js +1 -1
- package/esm-es5/pn-language-selector_9.entry.js +1 -1
- package/esm-es5/pn-mainnav-link.entry.js +1 -1
- package/esm-es5/{pn-mainnav-store-8e518460.js → pn-mainnav-store-c14ad7e8.js} +1 -1
- package/esm-es5/pn-market-web-components.js +1 -1
- package/esm-es5/pn-marketweb-sitefooter.entry.js +1 -1
- package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
- package/esm-es5/pn-product-pricelist-result.entry.js +1 -1
- package/esm-es5/{pn-product-pricelist-store-b59d0cba.js → pn-product-pricelist-store-a287a3f5.js} +1 -1
- package/esm-es5/pn-product-pricelist.entry.js +1 -1
- package/esm-es5/pn-product-tile_3.entry.js +1 -1
- package/esm-es5/pn-profile-selector.entry.js +1 -1
- package/esm-es5/pn-sidenav-level.entry.js +1 -1
- package/esm-es5/pn-sidenav-link.entry.js +1 -1
- package/esm-es5/{pn-sidenav-store-c46b24d2.js → pn-sidenav-store-6f25eef9.js} +1 -1
- package/esm-es5/pn-sidenav.entry.js +1 -1
- package/esm-es5/pn-site-footer_2.entry.js +1 -1
- package/package.json +1 -1
- package/pn-market-web-components/{p-8dad5ed9.js → p-020f1667.js} +1 -1
- package/pn-market-web-components/{p-7071b45d.system.entry.js → p-02a985d9.system.entry.js} +1 -1
- package/pn-market-web-components/{p-2713500f.entry.js → p-02c8dcd0.entry.js} +1 -1
- package/pn-market-web-components/p-038b8060.system.js +1 -0
- package/pn-market-web-components/{p-e3fb52a6.system.entry.js → p-043f460c.system.entry.js} +1 -1
- package/pn-market-web-components/{p-57e4ced3.system.entry.js → p-0ba9ae69.system.entry.js} +1 -1
- package/pn-market-web-components/{p-88d82a49.entry.js → p-0d975e39.entry.js} +1 -1
- package/pn-market-web-components/p-12297437.system.entry.js +1 -0
- package/pn-market-web-components/p-1caf4231.system.entry.js +1 -0
- package/pn-market-web-components/{p-9718752b.system.entry.js → p-21463fc1.system.entry.js} +1 -1
- package/pn-market-web-components/{p-d2c98a81.system.js → p-26f72169.system.js} +1 -1
- package/pn-market-web-components/{p-f14cff8e.js → p-3359dac6.js} +1 -1
- package/pn-market-web-components/{p-71d3db79.entry.js → p-37801e32.entry.js} +1 -1
- package/pn-market-web-components/p-3cf489ac.js +1 -0
- package/pn-market-web-components/{p-02ab0208.entry.js → p-3f876199.entry.js} +1 -1
- package/pn-market-web-components/{p-4feb3557.system.entry.js → p-478ac9b4.system.entry.js} +1 -1
- package/pn-market-web-components/{p-2e71089b.js → p-4832a520.js} +1 -1
- package/pn-market-web-components/{p-dc471243.entry.js → p-4aa3b95d.entry.js} +1 -1
- package/pn-market-web-components/p-52787ac9.entry.js +1 -0
- package/pn-market-web-components/{p-1d9a3108.entry.js → p-53e14b27.entry.js} +1 -1
- package/pn-market-web-components/{p-8e8fe71e.system.js → p-5510f188.system.js} +1 -1
- package/pn-market-web-components/p-772c078c.entry.js +1 -0
- package/pn-market-web-components/{p-423807b2.entry.js → p-77d43e30.entry.js} +1 -1
- package/pn-market-web-components/{p-492ba223.js → p-789e1b30.js} +1 -1
- package/pn-market-web-components/p-7d92e5c7.system.entry.js +1 -0
- package/pn-market-web-components/{p-d70008da.entry.js → p-861210ae.entry.js} +1 -1
- package/pn-market-web-components/{p-d9465a21.system.js → p-915cef83.system.js} +1 -1
- package/pn-market-web-components/{p-86a9f853.system.js → p-98bc5c17.system.js} +1 -1
- package/pn-market-web-components/{p-1649b94a.entry.js → p-9aca0bae.entry.js} +1 -1
- package/pn-market-web-components/p-a22df959.system.js +1 -0
- package/pn-market-web-components/{p-1411f767.entry.js → p-a25fc106.entry.js} +1 -1
- package/pn-market-web-components/{p-015a433e.entry.js → p-a37ea453.entry.js} +1 -1
- package/pn-market-web-components/{p-dade9bdb.system.entry.js → p-a924001f.system.entry.js} +1 -1
- package/pn-market-web-components/{p-7b4c721f.system.entry.js → p-ac36097e.system.entry.js} +1 -1
- package/pn-market-web-components/{p-daa6ddb3.system.entry.js → p-b2383083.system.entry.js} +1 -1
- package/pn-market-web-components/{p-a65b61d6.system.entry.js → p-b7fdc5cb.system.entry.js} +1 -1
- package/pn-market-web-components/{p-32f4efa6.entry.js → p-b8af690a.entry.js} +1 -1
- package/pn-market-web-components/{p-79611456.system.entry.js → p-c127e22c.system.entry.js} +1 -1
- package/pn-market-web-components/{p-22cd41df.entry.js → p-cce32042.entry.js} +1 -1
- package/pn-market-web-components/p-cec6130e.system.js +1 -0
- package/pn-market-web-components/{p-96ef731c.entry.js → p-d1053abf.entry.js} +1 -1
- package/pn-market-web-components/{p-4921fcc3.entry.js → p-dde2cf1c.entry.js} +1 -1
- package/pn-market-web-components/{p-e695c8e8.system.entry.js → p-e04f8d34.system.entry.js} +1 -1
- package/pn-market-web-components/{p-5a155773.system.entry.js → p-e6a209c6.system.entry.js} +1 -1
- package/pn-market-web-components/{p-03fb0285.entry.js → p-e9d8a991.entry.js} +1 -1
- package/pn-market-web-components/{p-a5b178b5.system.entry.js → p-eb049e9d.system.entry.js} +1 -1
- package/pn-market-web-components/p-ec0adffe.js +1 -0
- package/pn-market-web-components/{p-cb10d64f.system.entry.js → p-ec1127de.system.entry.js} +1 -1
- package/pn-market-web-components/{p-a983c263.system.entry.js → p-f4fda846.system.entry.js} +1 -1
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/pn-market-web-components/pn-market-web-components.js +1 -1
- package/types/components/input/pn-bonus-progressbar/pn-bonus-progressbar-level.d.ts +14 -0
- package/types/components/input/pn-bonus-progressbar/pn-bonus-progressbar.d.ts +20 -0
- package/types/components.d.ts +50 -0
- package/pn-market-web-components/p-02a1466e.system.js +0 -1
- package/pn-market-web-components/p-25bdf3f8.system.js +0 -1
- package/pn-market-web-components/p-2e4a6bc7.system.entry.js +0 -1
- package/pn-market-web-components/p-8be38a7e.system.js +0 -1
- package/pn-market-web-components/p-a14f54af.js +0 -1
- package/pn-market-web-components/p-d319f735.js +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Component, Prop, h, Host, State, Element } from "@stencil/core";
|
|
2
|
+
export class PnBonusProgressbarLevel {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.current = false;
|
|
5
|
+
this.value = 0;
|
|
6
|
+
this.bonuspercentage = "";
|
|
7
|
+
this.visualpercentage = 0;
|
|
8
|
+
this.percentage = 0;
|
|
9
|
+
this.max = 0;
|
|
10
|
+
this.min = 0;
|
|
11
|
+
this.currency = "";
|
|
12
|
+
}
|
|
13
|
+
componentWillLoad() {
|
|
14
|
+
this.max = parseInt(this.hostElement.parentElement.parentElement.getAttribute("max"), 10);
|
|
15
|
+
this.min = parseInt(this.hostElement.parentElement.parentElement.getAttribute("min"), 10);
|
|
16
|
+
this.currency = this.hostElement.parentElement.parentElement.getAttribute("currency");
|
|
17
|
+
this.percentage = (this.value / this.max) * 100;
|
|
18
|
+
if (this.visualpercentage > 0) {
|
|
19
|
+
// Visual percentage has been overriden
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.visualpercentage = ((this.value - this.min) / (this.max - this.min)) * 100;
|
|
23
|
+
}
|
|
24
|
+
formatValue() {
|
|
25
|
+
return `${this.value.toLocaleString('sv-SE', { maximumFractionDigits: 0 })} ${this.currency}`;
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
return (h(Host, { style: { 'left': `${this.visualpercentage}%` } },
|
|
29
|
+
h("div", { class: "progressbar-level-percentage" }, this.bonuspercentage),
|
|
30
|
+
h("div", { class: "progressbar-level-value" }, this.formatValue())));
|
|
31
|
+
}
|
|
32
|
+
static get is() { return "pn-bonus-progressbar-level"; }
|
|
33
|
+
static get originalStyleUrls() { return {
|
|
34
|
+
"$": ["pn-bonus-progressbar-level.scss"]
|
|
35
|
+
}; }
|
|
36
|
+
static get styleUrls() { return {
|
|
37
|
+
"$": ["pn-bonus-progressbar-level.css"]
|
|
38
|
+
}; }
|
|
39
|
+
static get properties() { return {
|
|
40
|
+
"current": {
|
|
41
|
+
"type": "boolean",
|
|
42
|
+
"mutable": false,
|
|
43
|
+
"complexType": {
|
|
44
|
+
"original": "boolean",
|
|
45
|
+
"resolved": "boolean",
|
|
46
|
+
"references": {}
|
|
47
|
+
},
|
|
48
|
+
"required": false,
|
|
49
|
+
"optional": false,
|
|
50
|
+
"docs": {
|
|
51
|
+
"tags": [],
|
|
52
|
+
"text": ""
|
|
53
|
+
},
|
|
54
|
+
"attribute": "current",
|
|
55
|
+
"reflect": true,
|
|
56
|
+
"defaultValue": "false"
|
|
57
|
+
},
|
|
58
|
+
"value": {
|
|
59
|
+
"type": "number",
|
|
60
|
+
"mutable": true,
|
|
61
|
+
"complexType": {
|
|
62
|
+
"original": "number",
|
|
63
|
+
"resolved": "number",
|
|
64
|
+
"references": {}
|
|
65
|
+
},
|
|
66
|
+
"required": false,
|
|
67
|
+
"optional": false,
|
|
68
|
+
"docs": {
|
|
69
|
+
"tags": [],
|
|
70
|
+
"text": ""
|
|
71
|
+
},
|
|
72
|
+
"attribute": "value",
|
|
73
|
+
"reflect": true,
|
|
74
|
+
"defaultValue": "0"
|
|
75
|
+
},
|
|
76
|
+
"bonuspercentage": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"mutable": true,
|
|
79
|
+
"complexType": {
|
|
80
|
+
"original": "string",
|
|
81
|
+
"resolved": "string",
|
|
82
|
+
"references": {}
|
|
83
|
+
},
|
|
84
|
+
"required": false,
|
|
85
|
+
"optional": false,
|
|
86
|
+
"docs": {
|
|
87
|
+
"tags": [],
|
|
88
|
+
"text": ""
|
|
89
|
+
},
|
|
90
|
+
"attribute": "bonuspercentage",
|
|
91
|
+
"reflect": true,
|
|
92
|
+
"defaultValue": "\"\""
|
|
93
|
+
},
|
|
94
|
+
"visualpercentage": {
|
|
95
|
+
"type": "number",
|
|
96
|
+
"mutable": true,
|
|
97
|
+
"complexType": {
|
|
98
|
+
"original": "number",
|
|
99
|
+
"resolved": "number",
|
|
100
|
+
"references": {}
|
|
101
|
+
},
|
|
102
|
+
"required": false,
|
|
103
|
+
"optional": false,
|
|
104
|
+
"docs": {
|
|
105
|
+
"tags": [],
|
|
106
|
+
"text": ""
|
|
107
|
+
},
|
|
108
|
+
"attribute": "visualpercentage",
|
|
109
|
+
"reflect": true,
|
|
110
|
+
"defaultValue": "0"
|
|
111
|
+
}
|
|
112
|
+
}; }
|
|
113
|
+
static get states() { return {
|
|
114
|
+
"percentage": {},
|
|
115
|
+
"max": {},
|
|
116
|
+
"min": {},
|
|
117
|
+
"currency": {}
|
|
118
|
+
}; }
|
|
119
|
+
static get elementRef() { return "hostElement"; }
|
|
120
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
pn-bonus-progressbar {
|
|
2
|
+
width: 100%;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.bonusprogressbar-top {
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.bonusprogressbar-top-icon {
|
|
11
|
+
border-radius: 100%;
|
|
12
|
+
height: 5rem;
|
|
13
|
+
width: 5rem;
|
|
14
|
+
padding: 1rem;
|
|
15
|
+
display: inline-flex;
|
|
16
|
+
margin-right: 1em;
|
|
17
|
+
margin-left: 0.5em;
|
|
18
|
+
background-color: #E0F8FF;
|
|
19
|
+
}
|
|
20
|
+
[theme=red] .bonusprogressbar-top-icon {
|
|
21
|
+
background-color: #FBC2C1;
|
|
22
|
+
}
|
|
23
|
+
.bonusprogressbar-top-icon pn-icon svg {
|
|
24
|
+
width: 100%;
|
|
25
|
+
height: 100%;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.bonusprogressbar-top-percentage {
|
|
29
|
+
margin-left: auto;
|
|
30
|
+
padding: 0.5em;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.bonusprogressbar-wrapper {
|
|
34
|
+
position: relative;
|
|
35
|
+
display: flex;
|
|
36
|
+
min-height: 5em;
|
|
37
|
+
align-items: center;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.bonusprogressbar-currentlevel {
|
|
41
|
+
position: absolute;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.bonusprogressbar-progress[value] {
|
|
45
|
+
-webkit-appearance: none;
|
|
46
|
+
-moz-appearance: none;
|
|
47
|
+
appearance: none;
|
|
48
|
+
width: 100%;
|
|
49
|
+
height: 1.7rem;
|
|
50
|
+
border: 0.1rem solid #00A0D6;
|
|
51
|
+
border-radius: 1.7rem;
|
|
52
|
+
padding: 0;
|
|
53
|
+
margin: 0;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
}
|
|
56
|
+
[theme=red] .bonusprogressbar-progress[value] {
|
|
57
|
+
border-color: #F06365;
|
|
58
|
+
}
|
|
59
|
+
.bonusprogressbar-progress[value]::-webkit-progress-bar {
|
|
60
|
+
border: 0;
|
|
61
|
+
border-radius: 1.7rem;
|
|
62
|
+
margin: 0;
|
|
63
|
+
padding: 0;
|
|
64
|
+
background: #E0F8FF;
|
|
65
|
+
}
|
|
66
|
+
[theme=red] .bonusprogressbar-progress[value]::-webkit-progress-bar {
|
|
67
|
+
background: #FDEFEE;
|
|
68
|
+
}
|
|
69
|
+
.bonusprogressbar-progress[value]::-webkit-progress-value {
|
|
70
|
+
margin: 0;
|
|
71
|
+
padding: 0;
|
|
72
|
+
border-radius: 1.7rem;
|
|
73
|
+
background: #00A0D6;
|
|
74
|
+
}
|
|
75
|
+
[theme=red] .bonusprogressbar-progress[value]::-webkit-progress-value {
|
|
76
|
+
background: #F06365;
|
|
77
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { Component, Prop, h, Host, State, Element, Watch } from "@stencil/core";
|
|
2
|
+
export class PnBonusProgressbar {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.icon = null;
|
|
5
|
+
this.heading = "";
|
|
6
|
+
this.theme = "blue";
|
|
7
|
+
this.bonuspercentage = "0%";
|
|
8
|
+
this.currency = "kr";
|
|
9
|
+
this.value = 0;
|
|
10
|
+
this.min = 0;
|
|
11
|
+
this.max = 0;
|
|
12
|
+
this.valuepercentage = 0;
|
|
13
|
+
this.progresspercentage = 0;
|
|
14
|
+
this.levelValues = [];
|
|
15
|
+
this.currentLevelAdjustedValue = 0;
|
|
16
|
+
}
|
|
17
|
+
componentWillLoad() {
|
|
18
|
+
this.setInitialValues();
|
|
19
|
+
this.setValuePercentage();
|
|
20
|
+
}
|
|
21
|
+
setInitialValues() {
|
|
22
|
+
const levelElements = Array.from(this.hostElement.querySelectorAll('pn-bonus-progressbar-level:not([current])'));
|
|
23
|
+
this.currentLevelAdjustedValue = this.value;
|
|
24
|
+
this.levelValues = levelElements.map((elm) => {
|
|
25
|
+
return parseInt(elm.getAttribute("value"), 10);
|
|
26
|
+
});
|
|
27
|
+
if (!this.max) {
|
|
28
|
+
if (this.levelValues && this.levelValues.length > 0) {
|
|
29
|
+
const newMax = this.levelValues.slice(-1)[0];
|
|
30
|
+
this.max = Math.floor(newMax * 1.05);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!this.min) {
|
|
34
|
+
const suggestedMin = Math.floor(this.value * 0.9);
|
|
35
|
+
if (suggestedMin > 0) {
|
|
36
|
+
this.min = suggestedMin;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (this.value > this.max) {
|
|
40
|
+
this.currentLevelAdjustedValue = 100;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setValuePercentage() {
|
|
44
|
+
this.valuepercentage = (this.value / (this.max)) * 100;
|
|
45
|
+
this.progresspercentage = ((this.value - this.min) / (this.max - this.min)) * 100;
|
|
46
|
+
if (this.progresspercentage < 0) {
|
|
47
|
+
if (this.levelValues && this.levelValues.length && this.levelValues[0] < this.value) {
|
|
48
|
+
this.min = Math.floor(this.levelValues[0] * .95);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.min = Math.floor(this.value * .95);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (this.progresspercentage > 100) {
|
|
55
|
+
this.progresspercentage = 100;
|
|
56
|
+
const newMax = this.levelValues.slice(-1)[0];
|
|
57
|
+
this.max = Math.floor(newMax * 1.05);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
iconColor() {
|
|
61
|
+
switch (this.theme) {
|
|
62
|
+
case 'red':
|
|
63
|
+
return 'coral700';
|
|
64
|
+
case 'blue':
|
|
65
|
+
default:
|
|
66
|
+
return 'blue700';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
render() {
|
|
70
|
+
return (h(Host, null,
|
|
71
|
+
h("div", { class: "bonusprogressbar-top" },
|
|
72
|
+
this.icon ? (h("div", { class: "bonusprogressbar-top-icon" },
|
|
73
|
+
h("pn-icon", { symbol: "stamp", small: "false", color: this.iconColor() }))) : {},
|
|
74
|
+
h("h4", { class: "bonusprogressbar-top-heading" }, this.heading),
|
|
75
|
+
h("strong", { class: "bonusprogressbar-top-percentage" }, this.bonuspercentage)),
|
|
76
|
+
h("div", { class: "bonusprogressbar-wrapper" },
|
|
77
|
+
h("progress", { class: "bonusprogressbar-progress", value: this.progresspercentage, max: "100" }),
|
|
78
|
+
h("pn-bonus-progressbar-level", { current: true, value: this.value, visualpercentage: this.currentLevelAdjustedValue, bonuspercentage: this.bonuspercentage }),
|
|
79
|
+
h("slot", null))));
|
|
80
|
+
}
|
|
81
|
+
static get is() { return "pn-bonus-progressbar"; }
|
|
82
|
+
static get originalStyleUrls() { return {
|
|
83
|
+
"$": ["pn-bonus-progressbar.scss"]
|
|
84
|
+
}; }
|
|
85
|
+
static get styleUrls() { return {
|
|
86
|
+
"$": ["pn-bonus-progressbar.css"]
|
|
87
|
+
}; }
|
|
88
|
+
static get properties() { return {
|
|
89
|
+
"icon": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"mutable": false,
|
|
92
|
+
"complexType": {
|
|
93
|
+
"original": "string",
|
|
94
|
+
"resolved": "string",
|
|
95
|
+
"references": {}
|
|
96
|
+
},
|
|
97
|
+
"required": false,
|
|
98
|
+
"optional": false,
|
|
99
|
+
"docs": {
|
|
100
|
+
"tags": [],
|
|
101
|
+
"text": ""
|
|
102
|
+
},
|
|
103
|
+
"attribute": "icon",
|
|
104
|
+
"reflect": false,
|
|
105
|
+
"defaultValue": "null"
|
|
106
|
+
},
|
|
107
|
+
"heading": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"mutable": false,
|
|
110
|
+
"complexType": {
|
|
111
|
+
"original": "string",
|
|
112
|
+
"resolved": "string",
|
|
113
|
+
"references": {}
|
|
114
|
+
},
|
|
115
|
+
"required": false,
|
|
116
|
+
"optional": false,
|
|
117
|
+
"docs": {
|
|
118
|
+
"tags": [],
|
|
119
|
+
"text": ""
|
|
120
|
+
},
|
|
121
|
+
"attribute": "heading",
|
|
122
|
+
"reflect": false,
|
|
123
|
+
"defaultValue": "\"\""
|
|
124
|
+
},
|
|
125
|
+
"theme": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"mutable": false,
|
|
128
|
+
"complexType": {
|
|
129
|
+
"original": "string",
|
|
130
|
+
"resolved": "string",
|
|
131
|
+
"references": {}
|
|
132
|
+
},
|
|
133
|
+
"required": false,
|
|
134
|
+
"optional": false,
|
|
135
|
+
"docs": {
|
|
136
|
+
"tags": [],
|
|
137
|
+
"text": ""
|
|
138
|
+
},
|
|
139
|
+
"attribute": "theme",
|
|
140
|
+
"reflect": true,
|
|
141
|
+
"defaultValue": "\"blue\""
|
|
142
|
+
},
|
|
143
|
+
"bonuspercentage": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"mutable": false,
|
|
146
|
+
"complexType": {
|
|
147
|
+
"original": "string",
|
|
148
|
+
"resolved": "string",
|
|
149
|
+
"references": {}
|
|
150
|
+
},
|
|
151
|
+
"required": false,
|
|
152
|
+
"optional": false,
|
|
153
|
+
"docs": {
|
|
154
|
+
"tags": [],
|
|
155
|
+
"text": ""
|
|
156
|
+
},
|
|
157
|
+
"attribute": "bonuspercentage",
|
|
158
|
+
"reflect": false,
|
|
159
|
+
"defaultValue": "\"0%\""
|
|
160
|
+
},
|
|
161
|
+
"currency": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"mutable": false,
|
|
164
|
+
"complexType": {
|
|
165
|
+
"original": "string",
|
|
166
|
+
"resolved": "string",
|
|
167
|
+
"references": {}
|
|
168
|
+
},
|
|
169
|
+
"required": false,
|
|
170
|
+
"optional": false,
|
|
171
|
+
"docs": {
|
|
172
|
+
"tags": [],
|
|
173
|
+
"text": ""
|
|
174
|
+
},
|
|
175
|
+
"attribute": "currency",
|
|
176
|
+
"reflect": true,
|
|
177
|
+
"defaultValue": "\"kr\""
|
|
178
|
+
},
|
|
179
|
+
"value": {
|
|
180
|
+
"type": "number",
|
|
181
|
+
"mutable": true,
|
|
182
|
+
"complexType": {
|
|
183
|
+
"original": "number",
|
|
184
|
+
"resolved": "number",
|
|
185
|
+
"references": {}
|
|
186
|
+
},
|
|
187
|
+
"required": false,
|
|
188
|
+
"optional": false,
|
|
189
|
+
"docs": {
|
|
190
|
+
"tags": [],
|
|
191
|
+
"text": ""
|
|
192
|
+
},
|
|
193
|
+
"attribute": "value",
|
|
194
|
+
"reflect": true,
|
|
195
|
+
"defaultValue": "0"
|
|
196
|
+
},
|
|
197
|
+
"min": {
|
|
198
|
+
"type": "number",
|
|
199
|
+
"mutable": true,
|
|
200
|
+
"complexType": {
|
|
201
|
+
"original": "number",
|
|
202
|
+
"resolved": "number",
|
|
203
|
+
"references": {}
|
|
204
|
+
},
|
|
205
|
+
"required": false,
|
|
206
|
+
"optional": false,
|
|
207
|
+
"docs": {
|
|
208
|
+
"tags": [],
|
|
209
|
+
"text": ""
|
|
210
|
+
},
|
|
211
|
+
"attribute": "min",
|
|
212
|
+
"reflect": true,
|
|
213
|
+
"defaultValue": "0"
|
|
214
|
+
},
|
|
215
|
+
"max": {
|
|
216
|
+
"type": "number",
|
|
217
|
+
"mutable": true,
|
|
218
|
+
"complexType": {
|
|
219
|
+
"original": "number",
|
|
220
|
+
"resolved": "number",
|
|
221
|
+
"references": {}
|
|
222
|
+
},
|
|
223
|
+
"required": false,
|
|
224
|
+
"optional": false,
|
|
225
|
+
"docs": {
|
|
226
|
+
"tags": [],
|
|
227
|
+
"text": ""
|
|
228
|
+
},
|
|
229
|
+
"attribute": "max",
|
|
230
|
+
"reflect": true,
|
|
231
|
+
"defaultValue": "0"
|
|
232
|
+
}
|
|
233
|
+
}; }
|
|
234
|
+
static get states() { return {
|
|
235
|
+
"valuepercentage": {},
|
|
236
|
+
"progresspercentage": {},
|
|
237
|
+
"levelValues": {},
|
|
238
|
+
"currentLevelAdjustedValue": {}
|
|
239
|
+
}; }
|
|
240
|
+
static get elementRef() { return "hostElement"; }
|
|
241
|
+
static get watchers() { return [{
|
|
242
|
+
"propName": "currentLevelAdjustedValue",
|
|
243
|
+
"methodName": "setValuePercentage"
|
|
244
|
+
}, {
|
|
245
|
+
"propName": "value",
|
|
246
|
+
"methodName": "setValuePercentage"
|
|
247
|
+
}, {
|
|
248
|
+
"propName": "min",
|
|
249
|
+
"methodName": "setValuePercentage"
|
|
250
|
+
}, {
|
|
251
|
+
"propName": "max",
|
|
252
|
+
"methodName": "setValuePercentage"
|
|
253
|
+
}]; }
|
|
254
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import readme from "./readme.md";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: "input/Bonus progressbar",
|
|
5
|
+
parameters: {
|
|
6
|
+
notes: readme,
|
|
7
|
+
layout: 'centered'
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const Template = ({ ...args }) => {
|
|
12
|
+
return `
|
|
13
|
+
<div style="width:380px;margin-bottom:3em;">
|
|
14
|
+
<pn-bonus-progressbar
|
|
15
|
+
value="125000"
|
|
16
|
+
|
|
17
|
+
icon="stamp"
|
|
18
|
+
theme="blue"
|
|
19
|
+
bonuspercentage="7%"
|
|
20
|
+
heading="Din rabatt på frimärken">
|
|
21
|
+
<pn-bonus-progressbar-level value="250000" bonuspercentage="7.5%"></pn-bonus-progressbar-level>
|
|
22
|
+
<pn-bonus-progressbar-level value="265000" bonuspercentage="8%"></pn-bonus-progressbar-level>
|
|
23
|
+
<pn-bonus-progressbar-level value="300000" bonuspercentage="9%"></pn-bonus-progressbar-level>
|
|
24
|
+
</pn-bonus-progressbar>
|
|
25
|
+
</div>
|
|
26
|
+
<div style="width:380px;margin-bottom:3em;">
|
|
27
|
+
<pn-bonus-progressbar
|
|
28
|
+
value="50000"
|
|
29
|
+
icon="stamp"
|
|
30
|
+
theme="blue"
|
|
31
|
+
bonuspercentage="7%"
|
|
32
|
+
heading="Din rabatt på frimärken">
|
|
33
|
+
<pn-bonus-progressbar-level value="250000" bonuspercentage="7.5%"></pn-bonus-progressbar-level>
|
|
34
|
+
<pn-bonus-progressbar-level value="265000" bonuspercentage="8%"></pn-bonus-progressbar-level>
|
|
35
|
+
<pn-bonus-progressbar-level value="300000" bonuspercentage="9%"></pn-bonus-progressbar-level>
|
|
36
|
+
</pn-bonus-progressbar>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div style="width:380px;margin-bottom:3em;">
|
|
40
|
+
<pn-bonus-progressbar
|
|
41
|
+
value="200000"
|
|
42
|
+
icon="stamp"
|
|
43
|
+
theme="blue"
|
|
44
|
+
bonuspercentage="7%"
|
|
45
|
+
heading="Din rabatt på frimärken">
|
|
46
|
+
<pn-bonus-progressbar-level value="250000" bonuspercentage="7.5%"></pn-bonus-progressbar-level>
|
|
47
|
+
<pn-bonus-progressbar-level value="265000" bonuspercentage="8%"></pn-bonus-progressbar-level>
|
|
48
|
+
<pn-bonus-progressbar-level value="300000" bonuspercentage="9%"></pn-bonus-progressbar-level>
|
|
49
|
+
</pn-bonus-progressbar>
|
|
50
|
+
</div>
|
|
51
|
+
<div style="width:380px;margin-bottom:3em;">
|
|
52
|
+
<pn-bonus-progressbar
|
|
53
|
+
value="500000"
|
|
54
|
+
icon="stamp"
|
|
55
|
+
bonuspercentage="9%"
|
|
56
|
+
heading="Din rabatt på frimärken">
|
|
57
|
+
<pn-bonus-progressbar-level value="250000" bonuspercentage="7.5%"></pn-bonus-progressbar-level>
|
|
58
|
+
<pn-bonus-progressbar-level value="400000" bonuspercentage="8%"></pn-bonus-progressbar-level>
|
|
59
|
+
</pn-bonus-progressbar>
|
|
60
|
+
</div>
|
|
61
|
+
<div style="width:380px;margin-bottom:3em;">
|
|
62
|
+
<pn-bonus-progressbar
|
|
63
|
+
value="50000"
|
|
64
|
+
icon="box"
|
|
65
|
+
theme="red"
|
|
66
|
+
bonuspercentage="7%"
|
|
67
|
+
heading="Din rabatt på varor">
|
|
68
|
+
<pn-bonus-progressbar-level value="250000" bonuspercentage="7.5%"></pn-bonus-progressbar-level>
|
|
69
|
+
<pn-bonus-progressbar-level value="265000" bonuspercentage="8%"></pn-bonus-progressbar-level>
|
|
70
|
+
<pn-bonus-progressbar-level value="300000" bonuspercentage="9%"></pn-bonus-progressbar-level>
|
|
71
|
+
</pn-bonus-progressbar>
|
|
72
|
+
</div>
|
|
73
|
+
`;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const Primary = Template.bind({});
|
|
77
|
+
Primary.args = {
|
|
78
|
+
|
|
79
|
+
};
|
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import type { Components, JSX } from "../types/components";
|
|
4
4
|
|
|
5
|
+
interface PnBonusProgressbar extends Components.PnBonusProgressbar, HTMLElement {}
|
|
6
|
+
export const PnBonusProgressbar: {
|
|
7
|
+
prototype: PnBonusProgressbar;
|
|
8
|
+
new (): PnBonusProgressbar;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
interface PnBonusProgressbarLevel extends Components.PnBonusProgressbarLevel, HTMLElement {}
|
|
12
|
+
export const PnBonusProgressbarLevel: {
|
|
13
|
+
prototype: PnBonusProgressbarLevel;
|
|
14
|
+
new (): PnBonusProgressbarLevel;
|
|
15
|
+
};
|
|
16
|
+
|
|
5
17
|
interface PnChoiceButton extends Components.PnChoiceButton, HTMLElement {}
|
|
6
18
|
export const PnChoiceButton: {
|
|
7
19
|
prototype: PnChoiceButton;
|