@oslokommune/punkt-elements 18.5.2 → 18.6.0
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/{calendar-Cc0bjLPC.cjs → calendar-CA1mz04B.cjs} +1 -1
- package/dist/{calendar-iXilYFBa.js → calendar-CBghTpkZ.js} +10 -138
- package/dist/{datepicker-Kk64p81z.js → datepicker-CqWg6K2N.js} +1 -1
- package/dist/{datepicker-FUNnqaCT.cjs → datepicker-DIgQrvbZ.cjs} +1 -1
- package/dist/pkt-calendar.cjs +1 -1
- package/dist/pkt-calendar.js +1 -1
- package/dist/pkt-datepicker.cjs +1 -1
- package/dist/pkt-datepicker.js +1 -1
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +2 -2
- package/dist/shared-types/calendar.d.ts +67 -0
- package/dist/shared-types/index.d.ts +2 -1
- package/package.json +2 -2
- package/src/components/calendar/calendar.ts +8 -9
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
|
+
## [18.6.0](https://github.com/oslokommune/punkt/compare/18.5.2...18.6.0) (2026-09-09)
|
|
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
|
## [18.5.2](https://github.com/oslokommune/punkt/compare/18.5.1...18.5.2) (2026-09-09)
|
|
9
26
|
|
|
10
27
|
### ⚠ BREAKING CHANGES
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./element-DRc10X2R.cjs"),t=require("./class-map-BEib48YL.cjs");require("./icon-DBFTFd-J.cjs");const n=require("./converters-BJ9Fe0kW.cjs");function r(e,t,r){let i=n.y(e,r?.in);return isNaN(t)?n.b(r?.in||e,NaN):(t&&i.setDate(i.getDate()+t),i)}function i(e,t){let[r,i]=n.v(e,t.start,t.end);return{start:r,end:i}}function a(e,t){let{start:r,end:a}=i(t?.in,e),o=+r>+a,s=o?+r:+a,c=o?a:r;c.setHours(0,0,0,0);let l=t?.step??1;if(!l)return[];l<0&&(l=-l,o=!o);let u=[];for(;+c<=s;)u.push(n.b(r,c)),c.setDate(c.getDate()+l),c.setHours(0,0,0,0);return o?u.reverse():u}function o(e,t){let r=n.y(e,t?.in).getDay();return r===0?7:r}var s={
|
|
1
|
+
const e=require("./element-DRc10X2R.cjs"),t=require("./class-map-BEib48YL.cjs");require("./icon-DBFTFd-J.cjs");const n=require("./converters-BJ9Fe0kW.cjs");function r(e,t,r){let i=n.y(e,r?.in);return isNaN(t)?n.b(r?.in||e,NaN):(t&&i.setDate(i.getDate()+t),i)}function i(e,t){let[r,i]=n.v(e,t.start,t.end);return{start:r,end:i}}function a(e,t){let{start:r,end:a}=i(t?.in,e),o=+r>+a,s=o?+r:+a,c=o?a:r;c.setHours(0,0,0,0);let l=t?.step??1;if(!l)return[];l<0&&(l=-l,o=!o);let u=[];for(;+c<=s;)u.push(n.b(r,c)),c.setDate(c.getDate()+l),c.setHours(0,0,0,0);return o?u.reverse():u}function o(e,t){let r=n.y(e,t?.in).getDay();return r===0?7:r}var s={multiple:!1,maxMultiple:0,range:!1,earliest:null,latest:null,weeknumbers:!1,withcontrols:!1};function c(e,t){let r=(t.excludedates??[]).map(e=>typeof e==`string`?e:n.a(e));return!n.l(e,t.earliest,t.latest,r,t.excludeweekdays??[])}function l(e,t,n,r){return!!(c(e,n)||!t&&r.multiple&&r.maxMultiple>0&&r.selectedCount>=r.maxMultiple)}function u(e,t,r){let i=n.p(e,t,0);return!(r&&n.d(r)>i)}function d(e,t,r){let i=n.p(t===11?e+1:e,t===11?0:t+1,1);return!(r&&n.d(r)<i)}function f(e,t){let r=n.p(e,t,1),i=n.p(e,t+1,0),a=(r.getDay()+6)%7,o=i.getDate();return{firstDayOfMonth:r,lastDayOfMonth:i,startingDay:a,numDays:o,numRows:Math.ceil((o+a)/7),numDaysPrevMonth:n.p(e,t,0).getDate(),initialWeek:n._(r)}}function p(e,t,n,r){let{startingDay:i,numDays:a}=r;return e===0&&t<i?`prev-month`:n>a?`next-month`:`current-month`}function m(e,t,n,r){let{startingDay:i,numDaysPrevMonth:a,numDays:o}=r;return e===`prev-month`?a-(i-t-1):e===`next-month`?n-o:n}function h(e){return typeof e==`string`&&(e=e.split(`,`)),e.length===1&&e[0]===``?[]:e.map(e=>n.m(e))}function g(e,t){let r=a({start:e,end:t}),i={};if(Array.isArray(r)&&r.length)for(let a=0;a<r.length;a++){let o=r[a],s=o>e&&o<t;i[n.a(o)]=s}return i}function _(e,t,n,r){if(t.length!==1)return!0;let i=a({start:t[0],end:e});if(!Array.isArray(i)||!i.length)return!0;for(let a=0;a<i.length;a++){for(let r of n??[])if(r>t[0]&&r<e)return!1;if((r??[]).includes(o(i[a]).toString()))return!1}return!0}function v(e,t){let r=n.a(e);return t.includes(r)?t:[...t,r]}function y(e,t){let r=n.a(e),i=t.indexOf(r);if(i===-1)return t;if(t.length===1)return[];let a=[...t];return a.splice(i,1),a}function b(e,t,r){let i=n.a(e);return t.includes(i)?y(e,t):r>0&&t.length>=r?t:v(e,t)}function x(e,t,r){let i=n.a(e),a=h(t);return t.includes(i)?t.indexOf(i)===0?[]:y(e,t):t.length>1||t.length===1&&(!_(e,a,r.excludedates,r.excludeweekdays)||a[0]>e)?[i]:v(e,t)}var S={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};function C(e){let t=e.nodeName;return t===`INPUT`||t===`SELECT`||t===`BUTTON`&&!e.dataset?.date}function w(e,t,i){let a=r(e,t);if(!a)return null;let o=i(`button[data-date="${n.a(a)}"]`);for(;o instanceof HTMLButtonElement&&o.dataset.disabled;)if(a=r(a,t),o=i(`button[data-date="${n.a(a)}"]`),!o)return null;return a}function T(e){return S[e]??null}var E=class extends e.t{constructor(...e){super(...e),this.selected=[],this.multiple=s.multiple,this.maxMultiple=s.maxMultiple,this.range=s.range,this.earliest=s.earliest,this.latest=s.latest,this.excludedates=[],this.excludeweekdays=[],this.weeknumbers=s.weeknumbers,this.withcontrols=s.withcontrols,this.currentmonth=null,this.today=null,this._selected=[],this.inRange={},this.rangeHovered=null,this.year=0,this.month=0,this.week=0,this.currentmonthtouched=!1,this.focusedDate=null,this.selectableDates=[],this.tabIndexSet=0}get calendarStrings(){let e=this.pktStrings.get(`dates`),t=this.pktStrings.get(`calendar`);return{daysShort:this.dayStrings??e.daysShort,days:this.dayStringsLong??e.days,months:this.monthStrings??e.months,week:this.weekString??e.week,prevMonth:this.prevMonthString??t.prevMonth,nextMonth:this.nextMonthString??t.nextMonth}}get todayDate(){return this.today?n.m(this.today):n.g()}firstUpdated(e){this.addEventListener(`keydown`,this.handleKeydown)}disconnectedCallback(){this.removeEventListener(`keydown`,this.handleKeydown),super.disconnectedCallback()}updated(e){super.updated(e),e.has(`selected`)&&this.convertSelected()}convertSelected(){typeof this.selected==`string`&&(this.selected=this.selected.split(`,`)),this.selected.length===1&&this.selected[0]===``&&(this.selected=[]),this._selected=h(this.selected),this.range&&this.selected.length===2&&(this.inRange=g(this._selected[0],this._selected[1])),this.setCurrentMonth()}setCurrentMonth(){if(this.currentmonth===null&&!this.currentmonthtouched&&(this.currentmonthtouched=!0),this.selected.length&&this.selected[0]!==``){let e=n.m(this.selected[this.selected.length-1]);this.currentmonth=isNaN(e.getTime())?n.f(this.todayDate):e}else this.currentmonth===null&&(this.currentmonth=n.f(this.todayDate));(!this.currentmonth||isNaN(this.currentmonth.getTime()))&&(this.currentmonth=n.f(this.todayDate)),this.year=this.currentmonth.getFullYear(),this.month=this.currentmonth.getMonth()}handleKeydown(e){let t=T(e.key);t!==null&&this.handleArrowKey(e,t)}handleArrowKey(e,t){let r=e.target;if(C(r))return;if(e.preventDefault(),!this.focusedDate){this.focusOnCurrentDate();return}let i=w(this.focusedDate?n.d(this.focusedDate):n.p(this.year,this.month,1),t,this.querySelector.bind(this));if(i){let e=this.querySelector(`button[data-date="${n.a(i)}"]`);e instanceof HTMLButtonElement&&!e.dataset.disabled&&(this.focusedDate=n.a(i),e.focus())}}render(){return e._`
|
|
2
2
|
<div
|
|
3
3
|
class="pkt-calendar ${this.weeknumbers?`pkt-cal-weeknumbers`:``}"
|
|
4
4
|
@focusout=${this.closeEvent}
|
|
@@ -34,144 +34,16 @@ function w(e, t) {
|
|
|
34
34
|
let n = b(e, t?.in).getDay();
|
|
35
35
|
return n === 0 ? 7 : n;
|
|
36
36
|
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region ../../shared-types/calendar.ts
|
|
37
39
|
var T = {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
type: "string",
|
|
46
|
-
name: "ID",
|
|
47
|
-
description: "Unik identifikasjon for kalenderen"
|
|
48
|
-
},
|
|
49
|
-
currentmonth: {
|
|
50
|
-
type: "date",
|
|
51
|
-
name: "Gjeldende måned",
|
|
52
|
-
converter: "stringToDate",
|
|
53
|
-
description: "Måneden som vises i kalenderen"
|
|
54
|
-
},
|
|
55
|
-
selected: {
|
|
56
|
-
type: "array",
|
|
57
|
-
name: "Valgte datoer",
|
|
58
|
-
converter: "csvToArray",
|
|
59
|
-
reflect: !0,
|
|
60
|
-
items: { type: "date" },
|
|
61
|
-
description: "Liste over valgte datoer"
|
|
62
|
-
},
|
|
63
|
-
excludeweekdays: {
|
|
64
|
-
type: "array",
|
|
65
|
-
name: "Utelat ukedager",
|
|
66
|
-
converter: "csvToArray",
|
|
67
|
-
items: { type: "string" },
|
|
68
|
-
description: "Liste over ukedager (1-7) som skal ekskluderes"
|
|
69
|
-
},
|
|
70
|
-
excludedates: {
|
|
71
|
-
type: "array",
|
|
72
|
-
name: "Utelat datoer",
|
|
73
|
-
converter: "stringsToDate",
|
|
74
|
-
items: { type: "date" },
|
|
75
|
-
description: "Liste over spesifikke datoer som skal ekskluderes"
|
|
76
|
-
},
|
|
77
|
-
earliest: {
|
|
78
|
-
type: "date",
|
|
79
|
-
name: "Tidligst tillatte dato",
|
|
80
|
-
converter: "stringToDate",
|
|
81
|
-
default: null,
|
|
82
|
-
description: "Tidligste dato som kan velges"
|
|
83
|
-
},
|
|
84
|
-
latest: {
|
|
85
|
-
type: "date",
|
|
86
|
-
name: "Senest tillatte dato",
|
|
87
|
-
converter: "stringToDate",
|
|
88
|
-
default: null,
|
|
89
|
-
description: "Seneste dato som kan velges"
|
|
90
|
-
},
|
|
91
|
-
weeknumbers: {
|
|
92
|
-
type: "boolean",
|
|
93
|
-
name: "Vis ukenummer",
|
|
94
|
-
reflect: !0,
|
|
95
|
-
default: !1,
|
|
96
|
-
description: "Vis ukenummer i kalenderen"
|
|
97
|
-
},
|
|
98
|
-
withcontrols: {
|
|
99
|
-
type: "boolean",
|
|
100
|
-
name: "Med velgere for måned/år",
|
|
101
|
-
reflect: !0,
|
|
102
|
-
default: !1,
|
|
103
|
-
description: "Vis navigasjonskontroller for måned og år"
|
|
104
|
-
},
|
|
105
|
-
multiple: {
|
|
106
|
-
type: "boolean",
|
|
107
|
-
name: "Flervalg",
|
|
108
|
-
reflect: !0,
|
|
109
|
-
default: !1,
|
|
110
|
-
description: "Tillat valg av flere datoer"
|
|
111
|
-
},
|
|
112
|
-
maxMultiple: {
|
|
113
|
-
attribute: "max-multiple",
|
|
114
|
-
type: "number",
|
|
115
|
-
name: "Maks antall i flervalg",
|
|
116
|
-
default: 4,
|
|
117
|
-
description: "Maksimalt antall datoer som kan velges"
|
|
118
|
-
},
|
|
119
|
-
today: {
|
|
120
|
-
type: "string",
|
|
121
|
-
name: "Dagens dato (overstyring)",
|
|
122
|
-
description: "ISO-datostreng som overstyrer dagens dato. Nyttig for snapshot-tester."
|
|
123
|
-
},
|
|
124
|
-
range: {
|
|
125
|
-
type: "boolean",
|
|
126
|
-
name: "Datotidsrom (fra og til)",
|
|
127
|
-
reflect: !0,
|
|
128
|
-
default: !1,
|
|
129
|
-
description: "Tillat valg av datotidsrom"
|
|
130
|
-
},
|
|
131
|
-
dayStrings: {
|
|
132
|
-
attribute: "day-strings",
|
|
133
|
-
type: "array",
|
|
134
|
-
name: "Korte dagsnavn",
|
|
135
|
-
items: { type: "string" },
|
|
136
|
-
description: "Korte dagsnavn for kalenderoverskriften"
|
|
137
|
-
},
|
|
138
|
-
dayStringsLong: {
|
|
139
|
-
attribute: "day-strings-long",
|
|
140
|
-
type: "array",
|
|
141
|
-
name: "Fulle dagsnavn",
|
|
142
|
-
items: { type: "string" },
|
|
143
|
-
description: "Fulle dagsnavn for tilgjengelighetsetiketter"
|
|
144
|
-
},
|
|
145
|
-
monthStrings: {
|
|
146
|
-
attribute: "month-strings",
|
|
147
|
-
type: "array",
|
|
148
|
-
name: "Månedsnavn",
|
|
149
|
-
items: { type: "string" },
|
|
150
|
-
description: "Månedsnavn for kalendernavigasjonen"
|
|
151
|
-
},
|
|
152
|
-
weekString: {
|
|
153
|
-
attribute: "week-string",
|
|
154
|
-
type: "string",
|
|
155
|
-
name: "Ukenummer-etikett",
|
|
156
|
-
description: "Etikett for ukenummerkolonnen"
|
|
157
|
-
},
|
|
158
|
-
prevMonthString: {
|
|
159
|
-
attribute: "prev-month-string",
|
|
160
|
-
type: "string",
|
|
161
|
-
name: "Forrige måned-etikett",
|
|
162
|
-
description: "Tilgjengelighetsetikett for forrige måned-knappen"
|
|
163
|
-
},
|
|
164
|
-
nextMonthString: {
|
|
165
|
-
attribute: "next-month-string",
|
|
166
|
-
type: "string",
|
|
167
|
-
name: "Neste måned-etikett",
|
|
168
|
-
description: "Tilgjengelighetsetikett for neste måned-knappen"
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
events: {
|
|
172
|
-
"date-selected": { description: "Returnerer en liste med valgte datoer i ISO-format" },
|
|
173
|
-
close: { description: "Utløses når kalenderen ber om å lukkes (Escape-tast eller fokus forlater)" }
|
|
174
|
-
}
|
|
40
|
+
multiple: !1,
|
|
41
|
+
maxMultiple: 0,
|
|
42
|
+
range: !1,
|
|
43
|
+
earliest: null,
|
|
44
|
+
latest: null,
|
|
45
|
+
weeknumbers: !1,
|
|
46
|
+
withcontrols: !1
|
|
175
47
|
};
|
|
176
48
|
//#endregion
|
|
177
49
|
//#region ../../shared-utils/calendar/date-validation.ts
|
|
@@ -284,7 +156,7 @@ function U(e) {
|
|
|
284
156
|
//#region src/components/calendar/calendar.ts
|
|
285
157
|
var W = class extends a {
|
|
286
158
|
constructor(...e) {
|
|
287
|
-
super(...e), this.selected = [], this.multiple = T.
|
|
159
|
+
super(...e), this.selected = [], this.multiple = T.multiple, this.maxMultiple = T.maxMultiple, this.range = T.range, this.earliest = T.earliest, this.latest = T.latest, this.excludedates = [], this.excludeweekdays = [], this.weeknumbers = T.weeknumbers, this.withcontrols = T.withcontrols, this.currentmonth = null, this.today = null, this._selected = [], this.inRange = {}, this.rangeHovered = null, this.year = 0, this.month = 0, this.week = 0, this.currentmonthtouched = !1, this.focusedDate = null, this.selectableDates = [], this.tabIndexSet = 0;
|
|
288
160
|
}
|
|
289
161
|
get calendarStrings() {
|
|
290
162
|
let e = this.pktStrings.get("dates"), t = this.pktStrings.get("calendar");
|
|
@@ -5,7 +5,7 @@ import { r as ee } from "./element-with-slot-GwTT3WRD.js";
|
|
|
5
5
|
import "./icon-jEFbKTB_.js";
|
|
6
6
|
import { n as u, t as d } from "./ref-lE1mGUOL.js";
|
|
7
7
|
import { a as f, c as p, d as m, h, i as g, m as _, n as v, r as y, s as b, t as x, u as S } from "./converters-CkjLSYpa.js";
|
|
8
|
-
import "./calendar-
|
|
8
|
+
import "./calendar-CBghTpkZ.js";
|
|
9
9
|
import "./tag-D2Xvsy1i.js";
|
|
10
10
|
import { t as C } from "./repeat-CCnTfedv.js";
|
|
11
11
|
import { n as w, t as T } from "./utils-BwF4QSrq.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./element-DRc10X2R.cjs"),t=require("./class-map-BEib48YL.cjs"),n=require("./if-defined-BeVQnl3C.cjs"),r=require("./element-with-slot-DgtT8lCH.cjs");require("./icon-DBFTFd-J.cjs");const i=require("./ref-BkV4Cd8U.cjs"),a=require("./converters-BJ9Fe0kW.cjs");require("./calendar-
|
|
1
|
+
const e=require("./element-DRc10X2R.cjs"),t=require("./class-map-BEib48YL.cjs"),n=require("./if-defined-BeVQnl3C.cjs"),r=require("./element-with-slot-DgtT8lCH.cjs");require("./icon-DBFTFd-J.cjs");const i=require("./ref-BkV4Cd8U.cjs"),a=require("./converters-BJ9Fe0kW.cjs");require("./calendar-CA1mz04B.cjs"),require("./tag-Cojf4jgA.cjs");const o=require("./repeat-uBgVG8Ch.cjs"),s=require("./utils-63cRpWut.cjs"),c=require("./input-element-uajHIWAO.cjs");require("./input-wrapper-791L3L--.cjs");var l=class extends e.t{constructor(...e){super(...e),this.dates=[],this.dateformat=`dd.MM.yyyy`,this.className=`pkt-datepicker__tags`,this.idBase=s.n()}render(){return this.classes={"pkt-date-tags":!0,[this.className]:!0},e._`
|
|
2
2
|
<div class=${t.t(this.classes)} aria-live="polite">
|
|
3
3
|
${Array.isArray(this.dates)&&this.dates[0]?o.t(a.h((this.dates??[]).filter(Boolean)),e=>e,t=>e._` <pkt-tag
|
|
4
4
|
id=${this.idBase+t+`-tag`}
|
package/dist/pkt-calendar.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./calendar-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./calendar-CA1mz04B.cjs");exports.PktCalendar=e.n,exports.default=e.t;
|
package/dist/pkt-calendar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./calendar-
|
|
1
|
+
import { n as e, t } from "./calendar-CBghTpkZ.js";
|
|
2
2
|
export { e as PktCalendar, t as default };
|
package/dist/pkt-datepicker.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./datepicker-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./datepicker-DIgQrvbZ.cjs");var t=e.t;exports.PktDatepicker=e.t,exports.PktDatepickerMultiple=e.n,exports.PktDatepickerRange=e.r,exports.PktDatepickerSingle=e.i,exports.default=t;
|
package/dist/pkt-datepicker.js
CHANGED
package/dist/pkt-index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./element-DRc10X2R.cjs"),t=require("./consent-D1SMUJLs.cjs"),n=require("./alert-HFqn-cvb.cjs"),r=require("./icon-DBFTFd-J.cjs"),i=require("./button-CIb0IxTg.cjs"),a=require("./accordion-NO9LYXaN.cjs"),o=require("./backlink-DYO8qA9C.cjs"),s=require("./breadcrumbs-HG9wzGtr.cjs"),c=require("./calendar-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./element-DRc10X2R.cjs"),t=require("./consent-D1SMUJLs.cjs"),n=require("./alert-HFqn-cvb.cjs"),r=require("./icon-DBFTFd-J.cjs"),i=require("./button-CIb0IxTg.cjs"),a=require("./accordion-NO9LYXaN.cjs"),o=require("./backlink-DYO8qA9C.cjs"),s=require("./breadcrumbs-HG9wzGtr.cjs"),c=require("./calendar-CA1mz04B.cjs"),l=require("./card-b7jjKk6B.cjs"),u=require("./tag-Cojf4jgA.cjs"),d=require("./combobox-BT1LB0gl.cjs"),f=require("./header-DybJSDQQ.cjs"),p=require("./input-wrapper-791L3L--.cjs"),m=require("./helptext-DyHzv2ZG.cjs"),h=require("./checkbox-D6j7amKX.cjs"),g=require("./fileupload-BmT5nQX0.cjs"),_=require("./modal-C1g2fiUq.cjs"),v=require("./progressbar-BpcsDCnG.cjs"),y=require("./datepicker-DIgQrvbZ.cjs"),b=require("./footer-CLSihvYS.cjs"),x=require("./link-BWAhHUku.cjs"),S=require("./textinput-B4VnZzsa.cjs"),C=require("./searchinput-CiPB8xvh.cjs"),w=require("./header-menu-wcnhBSzs.cjs"),T=require("./heading-OfJKjUi2.cjs"),E=require("./linkcard-D6fRaZSc.cjs"),D=require("./loader-B5t78Yk7.cjs"),O=require("./messagebox-DBVUz-DN.cjs"),k=require("./radiobutton-BuOLykKo.cjs"),A=require("./tabs-DqzPOdi9.cjs"),j=require("./textarea-xTcafucE.cjs"),M=require("./select-Cc7c9dRd.cjs"),N=require("./timepicker-85ViMBd6.cjs");exports.PktAccordion=a.r,exports.PktAccordionItem=a.n,exports.PktAlert=n.n,exports.PktBackLink=o.n,exports.PktBreadcrumbs=s.t,exports.PktButton=i.n,exports.PktCalendar=c.n,exports.PktCard=l.n,exports.PktCheckbox=h.n,exports.PktCombobox=d.n,exports.PktConsent=t.n,exports.PktDateTags=y.a,exports.PktDatepicker=y.t,Object.defineProperty(exports,"PktFileUpload",{enumerable:!0,get:function(){return g.n}}),exports.PktFooter=b.n,exports.PktFooterSimple=b.t,exports.PktHeader=f.t,exports.PktHeaderGlobal=f.n,exports.PktHeaderMenu=w.n,exports.PktHeaderService=f.r,exports.PktHeaderUserMenu=f.i,exports.PktHeading=T.n,exports.PktHelptext=m.n,exports.PktIcon=r.n,exports.PktInputWrapper=p.n,exports.PktLink=x.n,exports.PktLinkCard=E.n,exports.PktLoader=D.n,exports.PktMessagebox=O.n,exports.PktModal=_.n,exports.PktProgressbar=v.n,exports.PktRadioButton=k.n,exports.PktRadiobutton=k.n,exports.PktSearchInput=C.n,exports.PktSelect=M.n,exports.PktTabItem=A.n,exports.PktTabs=A.r,exports.PktTag=u.n,exports.PktTextarea=j.n,exports.PktTextinput=S.n,exports.PktTimepicker=N.t,exports.getPktStrings=e.r,exports.pktStringsNb=e.s,exports.resetPktStrings=e.i,exports.setPktStrings=e.a,exports.subscribePktStrings=e.o;
|
package/dist/pkt-index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { n as c } from "./button-DWMHtdWk.js";
|
|
|
6
6
|
import { n as l, r as u } from "./accordion-BI-Qiznz.js";
|
|
7
7
|
import { n as d } from "./backlink-BHtxOlTw.js";
|
|
8
8
|
import { t as f } from "./breadcrumbs-BlRDuZbZ.js";
|
|
9
|
-
import { n as p } from "./calendar-
|
|
9
|
+
import { n as p } from "./calendar-CBghTpkZ.js";
|
|
10
10
|
import { n as m } from "./card-CwvUQj1a.js";
|
|
11
11
|
import { n as h } from "./tag-D2Xvsy1i.js";
|
|
12
12
|
import { n as g } from "./combobox-CiT2YvLb.js";
|
|
@@ -17,7 +17,7 @@ import { n as C } from "./checkbox-DcvKYDU2.js";
|
|
|
17
17
|
import { n as w } from "./fileupload-4nTdjPKw.js";
|
|
18
18
|
import { n as T } from "./modal-z5RzZ-fr.js";
|
|
19
19
|
import { n as E } from "./progressbar-BPHLC7ce.js";
|
|
20
|
-
import { a as D, t as O } from "./datepicker-
|
|
20
|
+
import { a as D, t as O } from "./datepicker-CqWg6K2N.js";
|
|
21
21
|
import { n as k, t as A } from "./footer-YrlXRq7e.js";
|
|
22
22
|
import { n as j } from "./link-BvjWWWlc.js";
|
|
23
23
|
import { n as M } from "./textinput-Cr7Z9ilH.js";
|
|
@@ -5,6 +5,73 @@
|
|
|
5
5
|
* Used by both Elements and React calendar implementations
|
|
6
6
|
* and by the shared calendar helper functions.
|
|
7
7
|
*/
|
|
8
|
+
import type { IPktStringsProps } from '../shared-strings';
|
|
9
|
+
/** Calendar props shared by React and Elements. */
|
|
10
|
+
export interface IPktCalendarBase extends IPktStringsProps<'dates' | 'calendar'> {
|
|
11
|
+
id?: string;
|
|
12
|
+
currentmonth?: Date | string | null;
|
|
13
|
+
selected?: string[];
|
|
14
|
+
excludeweekdays?: string[];
|
|
15
|
+
excludedates?: Date[] | string[];
|
|
16
|
+
earliest?: string | null;
|
|
17
|
+
latest?: string | null;
|
|
18
|
+
weeknumbers?: boolean;
|
|
19
|
+
withcontrols?: boolean;
|
|
20
|
+
multiple?: boolean;
|
|
21
|
+
maxMultiple?: number;
|
|
22
|
+
range?: boolean;
|
|
23
|
+
today?: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare const CALENDAR_DEFAULTS: {
|
|
26
|
+
readonly multiple: false;
|
|
27
|
+
readonly maxMultiple: 0;
|
|
28
|
+
readonly range: false;
|
|
29
|
+
readonly earliest: any;
|
|
30
|
+
readonly latest: any;
|
|
31
|
+
readonly weeknumbers: false;
|
|
32
|
+
readonly withcontrols: false;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Documented Calendar props (subset of `IPktCalendarBase`), plus the
|
|
36
|
+
* React-only selection/close callbacks and the Elements-only deprecated
|
|
37
|
+
* per-string props that `strings` / `setPktStrings()` have superseded.
|
|
38
|
+
*/
|
|
39
|
+
export type ICalendarSpecProps = Pick<IPktCalendarBase, 'id' | 'currentmonth' | 'selected' | 'excludeweekdays' | 'excludedates' | 'earliest' | 'latest' | 'weeknumbers' | 'withcontrols' | 'multiple' | 'maxMultiple' | 'range' | 'today'> & {
|
|
40
|
+
/**
|
|
41
|
+
* React-only callback fired with the updated selection (ISO date strings).
|
|
42
|
+
* @remarks Elements-paritet: `date-selected`-eventet.
|
|
43
|
+
*/
|
|
44
|
+
onDateSelected?: (selected: string[]) => void;
|
|
45
|
+
/**
|
|
46
|
+
* React-only callback fired when the calendar requests to close (Escape or focus-out).
|
|
47
|
+
* @remarks Elements-paritet: `close`-eventet.
|
|
48
|
+
*/
|
|
49
|
+
onClose?: () => void;
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated Elements-only. Bruk `strings={{ dates: { daysShort: [...] } }}` eller `setPktStrings()`.
|
|
52
|
+
*/
|
|
53
|
+
dayStrings?: string[];
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Elements-only. Bruk `strings={{ dates: { days: [...] } }}` eller `setPktStrings()`.
|
|
56
|
+
*/
|
|
57
|
+
dayStringsLong?: string[];
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated Elements-only. Bruk `strings={{ dates: { months: [...] } }}` eller `setPktStrings()`.
|
|
60
|
+
*/
|
|
61
|
+
monthStrings?: string[];
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Elements-only. Bruk `strings={{ dates: { week: '...' } }}` eller `setPktStrings()`.
|
|
64
|
+
*/
|
|
65
|
+
weekString?: string;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Elements-only. Bruk `strings={{ calendar: { prevMonth: '...' } }}` eller `setPktStrings()`.
|
|
68
|
+
*/
|
|
69
|
+
prevMonthString?: string;
|
|
70
|
+
/**
|
|
71
|
+
* @deprecated Elements-only. Bruk `strings={{ calendar: { nextMonth: '...' } }}` eller `setPktStrings()`.
|
|
72
|
+
*/
|
|
73
|
+
nextMonthString?: string;
|
|
74
|
+
};
|
|
8
75
|
export interface IDateConstraints {
|
|
9
76
|
earliest: string | null;
|
|
10
77
|
latest: string | null;
|
|
@@ -25,7 +25,8 @@ export type { IRenderLink, TRenderLink } from './render-link';
|
|
|
25
25
|
export type { IPktStringsProps } from '../shared-strings';
|
|
26
26
|
export type { IHelptextProps, ITagOptionalRequiredProps, IFormFieldLabelProps, IFormFieldErrorProps, IFormFieldCommonProps, TFormFieldCommonSpecKeys, } from './form-field';
|
|
27
27
|
export type { TMessageboxSkin, TCardSkin, TTagSkin } from './skin';
|
|
28
|
-
export
|
|
28
|
+
export { CALENDAR_DEFAULTS } from './calendar';
|
|
29
|
+
export type { IPktCalendarBase, ICalendarSpecProps, IDateConstraints, ICalendarGridDimensions, IGridCellPosition, TDateRangeMap, ISelectionState, ISelectionOptions, } from './calendar';
|
|
29
30
|
export type { IDatepickerStrings } from './datepicker';
|
|
30
31
|
export { defaultSingleStrings, defaultRangeStrings } from './datepicker';
|
|
31
32
|
export type { ITimepickerStrings } from './timepicker';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oslokommune/punkt-elements",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.6.0",
|
|
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",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"engines": {
|
|
84
84
|
"node": "^22.19.0 || ^24.0.0 || ^26.0.0"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "054139e3e0fadc58e7404bef71a5ed2f74d5ca8b"
|
|
87
87
|
}
|
|
@@ -13,9 +13,8 @@ import { html, nothing, PropertyValues, TemplateResult } from 'lit'
|
|
|
13
13
|
import { PktElement } from '@/base-elements/element'
|
|
14
14
|
import type { IPktStringsProps } from 'shared-strings'
|
|
15
15
|
import converters from '../../helpers/converters'
|
|
16
|
-
import specs from 'componentSpecs/calendar.json'
|
|
17
16
|
import '@/components/icon'
|
|
18
|
-
import type
|
|
17
|
+
import { CALENDAR_DEFAULTS, type IDateConstraints, type TDateRangeMap } from 'shared-types/calendar'
|
|
19
18
|
import {
|
|
20
19
|
isDateExcluded,
|
|
21
20
|
isDayDisabled as checkDayDisabled,
|
|
@@ -61,20 +60,20 @@ export class PktCalendar extends PktElement<IPktStringsProps<'dates' | 'calendar
|
|
|
61
60
|
selected: string | string[] = []
|
|
62
61
|
|
|
63
62
|
@property({ type: Boolean })
|
|
64
|
-
multiple: boolean =
|
|
63
|
+
multiple: boolean = CALENDAR_DEFAULTS.multiple
|
|
65
64
|
|
|
66
65
|
@property({ type: Number, attribute: 'max-multiple' })
|
|
67
|
-
maxMultiple: number =
|
|
66
|
+
maxMultiple: number = CALENDAR_DEFAULTS.maxMultiple
|
|
68
67
|
|
|
69
68
|
@property({ type: Boolean })
|
|
70
|
-
range: boolean =
|
|
69
|
+
range: boolean = CALENDAR_DEFAULTS.range
|
|
71
70
|
|
|
72
71
|
// Date constraints
|
|
73
72
|
@property({ type: String })
|
|
74
|
-
earliest: string | null =
|
|
73
|
+
earliest: string | null = CALENDAR_DEFAULTS.earliest
|
|
75
74
|
|
|
76
75
|
@property({ type: String })
|
|
77
|
-
latest: string | null =
|
|
76
|
+
latest: string | null = CALENDAR_DEFAULTS.latest
|
|
78
77
|
|
|
79
78
|
@property({ converter: converters.stringsToDate })
|
|
80
79
|
excludedates: Date[] = []
|
|
@@ -84,10 +83,10 @@ export class PktCalendar extends PktElement<IPktStringsProps<'dates' | 'calendar
|
|
|
84
83
|
|
|
85
84
|
// Display options
|
|
86
85
|
@property({ type: Boolean })
|
|
87
|
-
weeknumbers: boolean =
|
|
86
|
+
weeknumbers: boolean = CALENDAR_DEFAULTS.weeknumbers
|
|
88
87
|
|
|
89
88
|
@property({ type: Boolean })
|
|
90
|
-
withcontrols: boolean =
|
|
89
|
+
withcontrols: boolean = CALENDAR_DEFAULTS.withcontrols
|
|
91
90
|
|
|
92
91
|
@property({ converter: converters.stringToDate })
|
|
93
92
|
currentmonth: Date | null = null
|