@oslokommune/punkt-elements 14.5.4 → 15.0.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 +33 -0
- package/dist/{accordionitem-DB3tAjIZ.js → accordionitem-BbeS44TD.js} +1 -1
- package/dist/{accordionitem-DHYmPA-o.cjs → accordionitem-DUWhTUEI.cjs} +1 -1
- package/dist/{alert-DVCenNTM.cjs → alert-B9flMht5.cjs} +1 -1
- package/dist/{alert-Cc5FtxHN.js → alert-BpFxQviu.js} +2 -2
- package/dist/{button-Ju4zPhVx.cjs → button-BgCKV0zW.cjs} +1 -1
- package/dist/{button-DrTXtc-n.js → button-CKgpX5QA.js} +1 -1
- package/dist/{calendar-CTx8PD1L.js → calendar-BMarIeVp.js} +332 -325
- package/dist/calendar-C6xgAJ7Z.cjs +90 -0
- package/dist/{card-DvHL7pNu.cjs → card-DI3KodEc.cjs} +1 -1
- package/dist/{card-CTtmPB2n.js → card-h8ekgJRr.js} +2 -2
- package/dist/{checkbox-B-0FOdwi.cjs → checkbox-B2t7wfxe.cjs} +1 -1
- package/dist/{checkbox-CkAwPK_E.js → checkbox-BJ9pz3kV.js} +1 -1
- package/dist/{combobox-DNPfpTjW.js → combobox-BjAvk8Y-.js} +5 -5
- package/dist/{combobox-DvL3SKz2.cjs → combobox-HNN7GTzh.cjs} +1 -1
- package/dist/{consent-DJW7YEat.cjs → consent-C37tuFwZ.cjs} +1 -1
- package/dist/{consent-OdhmtIK-.js → consent-DAk2BJ7I.js} +1 -1
- package/dist/datepicker-2bneToiA.cjs +275 -0
- package/dist/datepicker-DvcH2QD9.js +1160 -0
- package/dist/{helptext-7fyVJK2C.cjs → helptext-BG1P_9j0.cjs} +1 -1
- package/dist/{helptext-CfR0SYe9.js → helptext-Cm6FLBVf.js} +1 -1
- package/dist/index.d.ts +10 -42
- package/dist/input-element-BBv4xjPb.cjs +1 -0
- package/dist/{input-element-DVZhYDJ_.js → input-element-CbjYtVou.js} +143 -147
- package/dist/{input-wrapper-DVUh5rxv.js → input-wrapper-Bwmva-69.js} +3 -3
- package/dist/{input-wrapper-Bta4FZe3.cjs → input-wrapper-CJqmwe3I.cjs} +1 -1
- package/dist/{link-40XAFlYS.js → link-BKnT-97D.js} +1 -1
- package/dist/{link-CBQ7uKqb.cjs → link-DRPFqqEn.cjs} +1 -1
- package/dist/{linkcard-D8hxLedl.cjs → linkcard-02fxYQ2g.cjs} +1 -1
- package/dist/{linkcard-Opb42K2k.js → linkcard-C2UENcqo.js} +1 -1
- package/dist/{loader-Bv1R6-AA.js → loader-BW-AWQiE.js} +1 -1
- package/dist/{loader-Dh_5sihO.cjs → loader-Cj4kUNRE.cjs} +1 -1
- package/dist/{messagebox-B9MCodIz.cjs → messagebox-CK0sSRep.cjs} +1 -1
- package/dist/{messagebox-DEXCTOrz.js → messagebox-DB8tEXrV.js} +1 -1
- package/dist/{modal-Bw61rVrQ.cjs → modal-BzVQSQy2.cjs} +1 -1
- package/dist/{modal-B4adxB6X.js → modal-ClYfWW2a.js} +1 -1
- package/dist/pkt-accordion.cjs +1 -1
- package/dist/pkt-accordion.js +2 -2
- package/dist/pkt-alert.cjs +1 -1
- package/dist/pkt-alert.js +1 -1
- package/dist/pkt-button.cjs +1 -1
- package/dist/pkt-button.js +1 -1
- package/dist/pkt-calendar.cjs +1 -1
- package/dist/pkt-calendar.js +1 -1
- package/dist/pkt-card.cjs +1 -1
- package/dist/pkt-card.js +1 -1
- package/dist/pkt-checkbox.cjs +1 -1
- package/dist/pkt-checkbox.js +1 -1
- package/dist/pkt-combobox.cjs +1 -1
- package/dist/pkt-combobox.js +1 -1
- package/dist/pkt-consent.cjs +1 -1
- package/dist/pkt-consent.js +1 -1
- package/dist/pkt-datepicker.cjs +1 -1
- package/dist/pkt-datepicker.js +2 -2
- package/dist/pkt-header.cjs +1 -1
- package/dist/pkt-header.js +4 -4
- package/dist/pkt-helptext.cjs +1 -1
- package/dist/pkt-helptext.js +1 -1
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +22 -22
- package/dist/pkt-input-wrapper.cjs +1 -1
- package/dist/pkt-input-wrapper.js +1 -1
- package/dist/pkt-link.cjs +1 -1
- package/dist/pkt-link.js +1 -1
- package/dist/pkt-linkcard.cjs +1 -1
- package/dist/pkt-linkcard.js +1 -1
- package/dist/pkt-loader.cjs +1 -1
- package/dist/pkt-loader.js +1 -1
- package/dist/pkt-messagebox.cjs +1 -1
- package/dist/pkt-messagebox.js +1 -1
- package/dist/pkt-modal.cjs +1 -1
- package/dist/pkt-modal.js +1 -1
- package/dist/{pkt-options-controller-zn5cmMvL.js → pkt-options-controller-BcGywCmf.js} +1 -1
- package/dist/{pkt-options-controller-DjBCEHU4.cjs → pkt-options-controller-BnTmkl3g.cjs} +1 -1
- package/dist/pkt-radiobutton.cjs +1 -1
- package/dist/pkt-radiobutton.js +1 -1
- package/dist/pkt-select.cjs +1 -1
- package/dist/pkt-select.js +1 -1
- package/dist/pkt-slot-controller-D4nKlom5.cjs +1 -0
- package/dist/{pkt-slot-controller-BPGj-LC5.js → pkt-slot-controller-D7CrjM52.js} +27 -25
- package/dist/pkt-tabs.cjs +1 -1
- package/dist/pkt-tabs.js +2 -2
- package/dist/pkt-tag.cjs +1 -1
- package/dist/pkt-tag.js +1 -1
- package/dist/pkt-textarea.cjs +1 -1
- package/dist/pkt-textarea.js +1 -1
- package/dist/pkt-textinput.cjs +1 -1
- package/dist/pkt-textinput.js +1 -1
- package/dist/{radiobutton-oA20HijB.js → radiobutton-CvKKNFMd.js} +1 -1
- package/dist/{radiobutton-iHuLnuAn.cjs → radiobutton-DWoYQn8H.cjs} +1 -1
- package/dist/{select--wvwpJ0_.cjs → select-BQUp88lY.cjs} +1 -1
- package/dist/{select-DfsNb_Yi.js → select-CFkxir_l.js} +4 -4
- package/dist/{tabitem-CypTmORF.js → tabitem-C8-tZyc_.js} +1 -1
- package/dist/{tabitem-CtltSqDK.cjs → tabitem-DaYfUaxw.cjs} +1 -1
- package/dist/{tag-Cw3OQqLW.js → tag-DIJMJhyp.js} +1 -1
- package/dist/{tag-P9lfQZbM.cjs → tag-h0vD2Na0.cjs} +1 -1
- package/dist/{textarea-CM_bj81t.js → textarea-CMuiBUee.js} +3 -3
- package/dist/{textarea-DcEKhXia.cjs → textarea-DcCOfNlr.cjs} +1 -1
- package/dist/{textinput-AVll6Nh7.js → textinput-D30TCADP.js} +3 -3
- package/dist/{textinput-BzuYzKZ6.cjs → textinput-DR3aaHTH.cjs} +1 -1
- package/package.json +4 -4
- package/src/components/calendar/calendar.core.test.ts +1 -1
- package/src/components/calendar/calendar.selection.test.ts +1 -1
- package/src/components/calendar/calendar.ts +32 -22
- package/src/components/datepicker/datepicker-popup.test.ts +1 -1
- package/src/components/datepicker/datepicker-popup.ts +73 -30
- package/src/components/datepicker/datepicker-range.ts +5 -1
- package/src/components/datepicker/datepicker-types.ts +4 -54
- package/src/components/datepicker/datepicker-utils.ts +38 -517
- package/src/components/datepicker/datepicker.core.test.ts +12 -10
- package/src/components/datepicker/datepicker.selection.test.ts +8 -6
- package/src/components/datepicker/datepicker.ts +26 -7
- package/src/components/icon/icon.test.ts +8 -8
- package/dist/calendar-5Obd0ZT3.cjs +0 -90
- package/dist/datepicker-CTCaZuZU.cjs +0 -271
- package/dist/datepicker-t0W9fA1e.js +0 -1444
- package/dist/input-element-RBQVA8i0.cjs +0 -1
- package/dist/pkt-slot-controller-BzddBp7z.cjs +0 -1
- package/src/components/calendar/helpers/calendar-grid.ts +0 -93
- package/src/components/calendar/helpers/date-validation.ts +0 -86
- package/src/components/calendar/helpers/index.ts +0 -49
- package/src/components/calendar/helpers/keyboard-navigation.ts +0 -54
- package/src/components/calendar/helpers/selection-manager.ts +0 -184
|
@@ -9,6 +9,7 @@ import './datepicker'
|
|
|
9
9
|
import '../calendar/calendar'
|
|
10
10
|
import { PktDatepicker } from './datepicker'
|
|
11
11
|
import { PktCalendar } from '../calendar/calendar'
|
|
12
|
+
import { PktDatepickerPopup } from './datepicker-popup'
|
|
12
13
|
|
|
13
14
|
const waitForCustomElements = async () => {
|
|
14
15
|
await customElements.whenDefined('pkt-datepicker')
|
|
@@ -262,17 +263,17 @@ describe('PktDatepicker', () => {
|
|
|
262
263
|
|
|
263
264
|
test('syncs selected dates between input and calendar', async () => {
|
|
264
265
|
const testDate = '2024-06-15'
|
|
265
|
-
const container = await createDatepicker(`value="${testDate}"`)
|
|
266
|
+
const container = await createDatepicker(`value="${testDate}" calendar-open`)
|
|
266
267
|
|
|
267
268
|
const datepicker = container.querySelector('pkt-datepicker') as PktDatepicker
|
|
268
269
|
await datepicker.updateComplete
|
|
269
270
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
fireEvent.click(calendarButton!)
|
|
273
|
-
await datepicker.updateComplete
|
|
271
|
+
const popup = datepicker.querySelector('pkt-datepicker-popup') as PktDatepickerPopup
|
|
272
|
+
await popup?.updateComplete
|
|
274
273
|
|
|
275
274
|
const calendar = datepicker.querySelector('pkt-calendar') as PktCalendar
|
|
275
|
+
await calendar?.updateComplete
|
|
276
|
+
|
|
276
277
|
expect(calendar.selected).toContain(testDate)
|
|
277
278
|
|
|
278
279
|
const selectedDate = datepicker.querySelector('.pkt-calendar__date--selected')
|
|
@@ -305,15 +306,16 @@ describe('PktDatepicker', () => {
|
|
|
305
306
|
|
|
306
307
|
test('shows current month correctly in calendar', async () => {
|
|
307
308
|
const currentMonth = '2024-06-01'
|
|
308
|
-
const container = await createDatepicker(`currentmonth="${currentMonth}"`)
|
|
309
|
+
const container = await createDatepicker(`currentmonth="${currentMonth}" calendar-open`)
|
|
309
310
|
|
|
310
311
|
const datepicker = container.querySelector('pkt-datepicker') as PktDatepicker
|
|
311
312
|
await datepicker.updateComplete
|
|
312
313
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
314
|
+
const popup = datepicker.querySelector('pkt-datepicker-popup') as PktDatepickerPopup
|
|
315
|
+
await popup?.updateComplete
|
|
316
|
+
|
|
317
|
+
const calendar = datepicker.querySelector('pkt-calendar') as PktCalendar
|
|
318
|
+
await calendar?.updateComplete
|
|
317
319
|
|
|
318
320
|
const monthTitle = datepicker.querySelector('.pkt-calendar__month-title')
|
|
319
321
|
expect(monthTitle?.textContent).toContain('2024')
|
|
@@ -4,6 +4,7 @@ import { fireEvent } from '@testing-library/dom'
|
|
|
4
4
|
import './datepicker'
|
|
5
5
|
import '../calendar/calendar'
|
|
6
6
|
import { PktDatepicker } from './datepicker'
|
|
7
|
+
import { PktDatepickerPopup } from './datepicker-popup'
|
|
7
8
|
|
|
8
9
|
const waitForCustomElements = async () => {
|
|
9
10
|
await customElements.whenDefined('pkt-datepicker')
|
|
@@ -40,15 +41,16 @@ describe('PktDatepicker', () => {
|
|
|
40
41
|
})
|
|
41
42
|
|
|
42
43
|
test('allows adding dates through calendar in multiple mode', async () => {
|
|
43
|
-
const container = await createDatepicker('multiple')
|
|
44
|
+
const container = await createDatepicker('multiple calendar-open')
|
|
44
45
|
|
|
45
46
|
const datepicker = container.querySelector('pkt-datepicker') as PktDatepicker
|
|
46
47
|
await datepicker.updateComplete
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
const popup = datepicker.querySelector('pkt-datepicker-popup') as PktDatepickerPopup
|
|
50
|
+
await popup?.updateComplete
|
|
51
|
+
|
|
52
|
+
const calendar = datepicker.querySelector('pkt-calendar')
|
|
53
|
+
await (calendar as any)?.updateComplete
|
|
52
54
|
|
|
53
55
|
// Select a date
|
|
54
56
|
const availableDate = datepicker.querySelector('[data-date]:not([data-disabled="disabled"])')
|
|
@@ -148,7 +150,7 @@ describe('PktDatepicker', () => {
|
|
|
148
150
|
describe('Range selection', () => {
|
|
149
151
|
test('displays range labels when showRangeLabels is true', async () => {
|
|
150
152
|
const rangeValue = '2024-06-15,2024-06-20'
|
|
151
|
-
const container = await createDatepicker(`value="${rangeValue}" range
|
|
153
|
+
const container = await createDatepicker(`value="${rangeValue}" range show-range-labels`)
|
|
152
154
|
|
|
153
155
|
const datepicker = container.querySelector('pkt-datepicker') as PktDatepicker
|
|
154
156
|
await datepicker.updateComplete
|
|
@@ -57,6 +57,7 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
57
57
|
* Element attributes and properties
|
|
58
58
|
*/
|
|
59
59
|
private _valueProperty: string = ''
|
|
60
|
+
private _valueProcessing = false
|
|
60
61
|
datepickerPopupRef: Ref<PktDatepickerPopup> = createRef()
|
|
61
62
|
|
|
62
63
|
@property({ type: String, reflect: true })
|
|
@@ -71,7 +72,6 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
71
72
|
this.requestUpdate('value', oldValue)
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
@property({ type: Array })
|
|
75
75
|
_value: string[] = []
|
|
76
76
|
|
|
77
77
|
@property({ type: String, reflect: true })
|
|
@@ -89,7 +89,7 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
89
89
|
@property({ type: Boolean, reflect: true })
|
|
90
90
|
range: boolean = specs.props.range.default
|
|
91
91
|
|
|
92
|
-
@property({ type: Boolean })
|
|
92
|
+
@property({ type: Boolean, attribute: 'show-range-labels' })
|
|
93
93
|
showRangeLabels: boolean = false
|
|
94
94
|
|
|
95
95
|
@property({ type: String, reflect: true })
|
|
@@ -113,7 +113,10 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
113
113
|
@property({ type: String })
|
|
114
114
|
currentmonth: string | null = null
|
|
115
115
|
|
|
116
|
-
@property({ type:
|
|
116
|
+
@property({ type: String })
|
|
117
|
+
today: string | null = null
|
|
118
|
+
|
|
119
|
+
@property({ type: Boolean, reflect: true, attribute: 'calendar-open' })
|
|
117
120
|
calendarOpen: boolean = false
|
|
118
121
|
|
|
119
122
|
@property({ type: String })
|
|
@@ -153,9 +156,10 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
153
156
|
}
|
|
154
157
|
|
|
155
158
|
valueChanged(newValue: string | null, oldValue: string | null): void {
|
|
156
|
-
if (newValue === oldValue) return
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
if (this._valueProcessing || newValue === oldValue) return
|
|
160
|
+
this._valueProcessing = true
|
|
161
|
+
try {
|
|
162
|
+
const parsedValue = valueToArray(newValue)
|
|
159
163
|
|
|
160
164
|
// For multiple dates, filter out invalid ones to prevent accumulating bad dates
|
|
161
165
|
// For single/range dates, preserve user input for validation feedback
|
|
@@ -184,7 +188,13 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
184
188
|
this._valueProperty = parsedValueString
|
|
185
189
|
}
|
|
186
190
|
|
|
191
|
+
// In range mode, don't dispatch events until both dates are selected
|
|
192
|
+
if (this.range && filteredValue.length < 2) return
|
|
193
|
+
|
|
187
194
|
super.valueChanged(parsedValueString, oldValue)
|
|
195
|
+
} finally {
|
|
196
|
+
this._valueProcessing = false
|
|
197
|
+
}
|
|
188
198
|
}
|
|
189
199
|
|
|
190
200
|
attributeChangedCallback(name: string, _old: string | null, value: string | null): void {
|
|
@@ -203,7 +213,14 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
203
213
|
}
|
|
204
214
|
|
|
205
215
|
updated(changedProperties: PropertyValues): void {
|
|
206
|
-
|
|
216
|
+
// Re-process value only when multiple/range also changed in the same update cycle,
|
|
217
|
+
// since attribute initialization may process value before multiple/range are set.
|
|
218
|
+
// When value is set via JS setter after init, multiple/range are already correct
|
|
219
|
+
// and the setter's valueChanged() call is sufficient.
|
|
220
|
+
if (
|
|
221
|
+
changedProperties.has('value') &&
|
|
222
|
+
(changedProperties.has('multiple') || changedProperties.has('range'))
|
|
223
|
+
) {
|
|
207
224
|
const newValue = Array.isArray(this.value) ? this.value.join(',') : this.value
|
|
208
225
|
const oldValue = changedProperties.get('value')
|
|
209
226
|
const oldValueStr = Array.isArray(oldValue) ? oldValue.join(',') : oldValue
|
|
@@ -323,6 +340,7 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
323
340
|
.value=${this._value}
|
|
324
341
|
.inputType=${this.inputType}
|
|
325
342
|
.id=${this.id}
|
|
343
|
+
.label=${this.label}
|
|
326
344
|
.min=${this.min}
|
|
327
345
|
.max=${this.max}
|
|
328
346
|
.placeholder=${this.placeholder}
|
|
@@ -443,6 +461,7 @@ export class PktDatepicker extends PktInputElement<Props> {
|
|
|
443
461
|
: (this.excludedates as string).split(',')}
|
|
444
462
|
.excludeweekdays=${this.excludeweekdays}
|
|
445
463
|
.currentmonth=${this.currentmonth ? parseISODateString(this.currentmonth) : null}
|
|
464
|
+
.today=${this.today}
|
|
446
465
|
@date-selected=${(e: CustomEvent) => {
|
|
447
466
|
this.value = dateProcessingUtils.processDateSelection(e.detail, this.multiple, this.range)
|
|
448
467
|
this._value = e.detail
|
|
@@ -140,7 +140,7 @@ describe('PktIcon', () => {
|
|
|
140
140
|
await icon.updateComplete
|
|
141
141
|
|
|
142
142
|
// Allow some time for async icon loading
|
|
143
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
143
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
144
144
|
|
|
145
145
|
expect(mockFetch).toHaveBeenCalledWith('https://test-cdn.example.com/icons/arrow-right.svg')
|
|
146
146
|
})
|
|
@@ -152,7 +152,7 @@ describe('PktIcon', () => {
|
|
|
152
152
|
await icon.updateComplete
|
|
153
153
|
|
|
154
154
|
// Wait for icon to load
|
|
155
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
156
156
|
|
|
157
157
|
const cachedIcon = sessionStorage.getItem('https://test-cdn.example.com/icons/arrow-right.svg')
|
|
158
158
|
expect(cachedIcon).toBe(mockSvgContent)
|
|
@@ -224,7 +224,7 @@ describe('PktIcon', () => {
|
|
|
224
224
|
await icon.updateComplete
|
|
225
225
|
|
|
226
226
|
// Allow initial load to complete
|
|
227
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
227
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
228
228
|
|
|
229
229
|
mockFetch.mockClear()
|
|
230
230
|
// Setup mock again for the new path
|
|
@@ -240,7 +240,7 @@ describe('PktIcon', () => {
|
|
|
240
240
|
await icon.updateComplete
|
|
241
241
|
|
|
242
242
|
// Allow some time for async icon loading
|
|
243
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
243
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
244
244
|
|
|
245
245
|
expect(mockFetch).toHaveBeenCalledWith('https://new-cdn.example.com/icons/arrow-right.svg')
|
|
246
246
|
})
|
|
@@ -284,7 +284,7 @@ describe('PktIcon', () => {
|
|
|
284
284
|
await icon.updateComplete
|
|
285
285
|
|
|
286
286
|
// Allow some time for async icon loading
|
|
287
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
287
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
288
288
|
|
|
289
289
|
expect(customFetch).toHaveBeenCalledWith('https://test-cdn.example.com/icons/custom-icon.svg')
|
|
290
290
|
})
|
|
@@ -298,7 +298,7 @@ describe('PktIcon', () => {
|
|
|
298
298
|
await icon.updateComplete
|
|
299
299
|
|
|
300
300
|
// Allow some time for async icon loading
|
|
301
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
301
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
302
302
|
|
|
303
303
|
// Should render error SVG in light DOM when fetch is not available
|
|
304
304
|
expect(icon.innerHTML).toContain('viewBox="0 0 32 32"')
|
|
@@ -310,7 +310,7 @@ describe('PktIcon', () => {
|
|
|
310
310
|
const { container } = await createIconTest({
|
|
311
311
|
name: 'arrow-right',
|
|
312
312
|
})
|
|
313
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
313
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
314
314
|
|
|
315
315
|
const results = await axe(container)
|
|
316
316
|
expect(results).toHaveNoViolations()
|
|
@@ -321,7 +321,7 @@ describe('PktIcon', () => {
|
|
|
321
321
|
name: 'arrow-right',
|
|
322
322
|
path: 'https://custom-cdn.example.com/icons/',
|
|
323
323
|
})
|
|
324
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
324
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
325
325
|
|
|
326
326
|
const results = await axe(container)
|
|
327
327
|
expect(results).toHaveNoViolations()
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";const tt=require("./class-map-CApIYSRo.cjs"),u=require("./element-aUzIoa1s.cjs"),q=require("./state-GDzxl12x.cjs");require("./icon-n4-ve48P.cjs");const ht=6048e5,Mt=864e5,et=Symbol.for("constructDateFrom");function k(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&et in e?e[et](t):e instanceof Date?new e.constructor(t):new Date(t)}function b(e,t){return k(t||e,e)}function nt(e,t,n){const r=b(e,n==null?void 0:n.in);return isNaN(t)?k(e,NaN):(t&&r.setDate(r.getDate()+t),r)}let Tt={};function B(){return Tt}function H(e,t){var o,c,d,f;const n=B(),r=(t==null?void 0:t.weekStartsOn)??((c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.weekStartsOn)??n.weekStartsOn??((f=(d=n.locale)==null?void 0:d.options)==null?void 0:f.weekStartsOn)??0,a=b(e,t==null?void 0:t.in),s=a.getDay(),i=(s<r?7:0)+s-r;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function U(e,t){return H(e,{...t,weekStartsOn:1})}function dt(e,t){const n=b(e,t==null?void 0:t.in),r=n.getFullYear(),a=k(n,0);a.setFullYear(r+1,0,4),a.setHours(0,0,0,0);const s=U(a),i=k(n,0);i.setFullYear(r,0,4),i.setHours(0,0,0,0);const o=U(i);return n.getTime()>=s.getTime()?r+1:n.getTime()>=o.getTime()?r:r-1}function rt(e){const t=b(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function ft(e,...t){const n=k.bind(null,t.find(r=>typeof r=="object"));return t.map(n)}function G(e,t){const n=b(e,t==null?void 0:t.in);return n.setHours(0,0,0,0),n}function xt(e,t,n){const[r,a]=ft(n==null?void 0:n.in,e,t),s=G(r),i=G(a),o=+s-rt(s),c=+i-rt(i);return Math.round((o-c)/Mt)}function Ot(e,t){const n=dt(e,t),r=k(e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),U(r)}function Pt(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function Ct(e){return!(!Pt(e)&&typeof e!="number"||isNaN(+b(e)))}function Nt(e,t){const n=b(e,t==null?void 0:t.in);return n.setHours(23,59,59,999),n}function $t(e,t){const[n,r]=ft(e,t.start,t.end);return{start:n,end:r}}function mt(e,t){const{start:n,end:r}=$t(t==null?void 0:t.in,e);let a=+n>+r;const s=a?+n:+r,i=a?r:n;i.setHours(0,0,0,0);let o=1;const c=[];for(;+i<=s;)c.push(k(n,i)),i.setDate(i.getDate()+o),i.setHours(0,0,0,0);return a?c.reverse():c}function Et(e,t){const n=b(e,t==null?void 0:t.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}const Wt={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},_t=(e,t,n)=>{let r;const a=Wt[e];return typeof a=="string"?r=a:t===1?r=a.one:r=a.other.replace("{{count}}",t.toString()),n!=null&&n.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Q(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Yt={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},It={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ft={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},At={date:Q({formats:Yt,defaultWidth:"full"}),time:Q({formats:It,defaultWidth:"full"}),dateTime:Q({formats:Ft,defaultWidth:"full"})},Ht={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Rt=(e,t,n,r)=>Ht[e];function Y(e){return(t,n)=>{const r=n!=null&&n.context?String(n.context):"standalone";let a;if(r==="formatting"&&e.formattingValues){const i=e.defaultFormattingWidth||e.defaultWidth,o=n!=null&&n.width?String(n.width):i;a=e.formattingValues[o]||e.formattingValues[i]}else{const i=e.defaultWidth,o=n!=null&&n.width?String(n.width):e.defaultWidth;a=e.values[o]||e.values[i]}const s=e.argumentCallback?e.argumentCallback(t):t;return a[s]}}const qt={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Lt={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Ut={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Bt={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zt={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},jt={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Qt=(e,t)=>{const n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Xt={ordinalNumber:Qt,era:Y({values:qt,defaultWidth:"wide"}),quarter:Y({values:Lt,defaultWidth:"wide",argumentCallback:e=>e-1}),month:Y({values:Ut,defaultWidth:"wide"}),day:Y({values:Bt,defaultWidth:"wide"}),dayPeriod:Y({values:zt,defaultWidth:"wide",formattingValues:jt,defaultFormattingWidth:"wide"})};function I(e){return(t,n={})=>{const r=n.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],s=t.match(a);if(!s)return null;const i=s[0],o=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(o)?Vt(o,y=>y.test(i)):Gt(o,y=>y.test(i));let d;d=e.valueCallback?e.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const f=t.slice(i.length);return{value:d,rest:f}}}function Gt(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Vt(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function Kt(e){return(t,n={})=>{const r=t.match(e.matchPattern);if(!r)return null;const a=r[0],s=t.match(e.parsePattern);if(!s)return null;let i=e.valueCallback?e.valueCallback(s[0]):s[0];i=n.valueCallback?n.valueCallback(i):i;const o=t.slice(a.length);return{value:i,rest:o}}}const Jt=/^(\d+)(th|st|nd|rd)?/i,Zt=/\d+/i,te={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},ee={any:[/^b/i,/^(a|c)/i]},ne={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},re={any:[/1/i,/2/i,/3/i,/4/i]},ae={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},se={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},ie={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},oe={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ce={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},ue={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},le={ordinalNumber:Kt({matchPattern:Jt,parsePattern:Zt,valueCallback:e=>parseInt(e,10)}),era:I({matchPatterns:te,defaultMatchWidth:"wide",parsePatterns:ee,defaultParseWidth:"any"}),quarter:I({matchPatterns:ne,defaultMatchWidth:"wide",parsePatterns:re,defaultParseWidth:"any",valueCallback:e=>e+1}),month:I({matchPatterns:ae,defaultMatchWidth:"wide",parsePatterns:se,defaultParseWidth:"any"}),day:I({matchPatterns:ie,defaultMatchWidth:"wide",parsePatterns:oe,defaultParseWidth:"any"}),dayPeriod:I({matchPatterns:ce,defaultMatchWidth:"any",parsePatterns:ue,defaultParseWidth:"any"})},he={code:"en-US",formatDistance:_t,formatLong:At,formatRelative:Rt,localize:Xt,match:le,options:{weekStartsOn:0,firstWeekContainsDate:1}};function de(e,t){const n=b(e,t==null?void 0:t.in);return xt(n,Et(n))+1}function fe(e,t){const n=b(e,t==null?void 0:t.in),r=+U(n)-+Ot(n);return Math.round(r/ht)+1}function gt(e,t){var f,y,w,S;const n=b(e,t==null?void 0:t.in),r=n.getFullYear(),a=B(),s=(t==null?void 0:t.firstWeekContainsDate)??((y=(f=t==null?void 0:t.locale)==null?void 0:f.options)==null?void 0:y.firstWeekContainsDate)??a.firstWeekContainsDate??((S=(w=a.locale)==null?void 0:w.options)==null?void 0:S.firstWeekContainsDate)??1,i=k((t==null?void 0:t.in)||e,0);i.setFullYear(r+1,0,s),i.setHours(0,0,0,0);const o=H(i,t),c=k((t==null?void 0:t.in)||e,0);c.setFullYear(r,0,s),c.setHours(0,0,0,0);const d=H(c,t);return+n>=+o?r+1:+n>=+d?r:r-1}function me(e,t){var o,c,d,f;const n=B(),r=(t==null?void 0:t.firstWeekContainsDate)??((c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.firstWeekContainsDate)??n.firstWeekContainsDate??((f=(d=n.locale)==null?void 0:d.options)==null?void 0:f.firstWeekContainsDate)??1,a=gt(e,t),s=k((t==null?void 0:t.in)||e,0);return s.setFullYear(a,0,r),s.setHours(0,0,0,0),H(s,t)}function yt(e,t){const n=b(e,t==null?void 0:t.in),r=+H(n,t)-+me(n,t);return Math.round(r/ht)+1}function l(e,t){const n=e<0?"-":"",r=Math.abs(e).toString().padStart(t,"0");return n+r}const v={y(e,t){const n=e.getFullYear(),r=n>0?n:1-n;return l(t==="yy"?r%100:r,t.length)},M(e,t){const n=e.getMonth();return t==="M"?String(n+1):l(n+1,2)},d(e,t){return l(e.getDate(),t.length)},a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(e,t){return l(e.getHours()%12||12,t.length)},H(e,t){return l(e.getHours(),t.length)},m(e,t){return l(e.getMinutes(),t.length)},s(e,t){return l(e.getSeconds(),t.length)},S(e,t){const n=t.length,r=e.getMilliseconds(),a=Math.trunc(r*Math.pow(10,n-3));return l(a,t.length)}},$={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},at={G:function(e,t,n){const r=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if(t==="yo"){const r=e.getFullYear(),a=r>0?r:1-r;return n.ordinalNumber(a,{unit:"year"})}return v.y(e,t)},Y:function(e,t,n,r){const a=gt(e,r),s=a>0?a:1-a;if(t==="YY"){const i=s%100;return l(i,2)}return t==="Yo"?n.ordinalNumber(s,{unit:"year"}):l(s,t.length)},R:function(e,t){const n=dt(e);return l(n,t.length)},u:function(e,t){const n=e.getFullYear();return l(n,t.length)},Q:function(e,t,n){const r=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return l(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){const r=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return l(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){const r=e.getMonth();switch(t){case"M":case"MM":return v.M(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){const r=e.getMonth();switch(t){case"L":return String(r+1);case"LL":return l(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){const a=yt(e,r);return t==="wo"?n.ordinalNumber(a,{unit:"week"}):l(a,t.length)},I:function(e,t,n){const r=fe(e);return t==="Io"?n.ordinalNumber(r,{unit:"week"}):l(r,t.length)},d:function(e,t,n){return t==="do"?n.ordinalNumber(e.getDate(),{unit:"date"}):v.d(e,t)},D:function(e,t,n){const r=de(e);return t==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):l(r,t.length)},E:function(e,t,n){const r=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){const a=e.getDay(),s=(a-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(s);case"ee":return l(s,2);case"eo":return n.ordinalNumber(s,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});case"eeee":default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){const a=e.getDay(),s=(a-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(s);case"cc":return l(s,t.length);case"co":return n.ordinalNumber(s,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});case"cccc":default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(e,t,n){const r=e.getDay(),a=r===0?7:r;switch(t){case"i":return String(a);case"ii":return l(a,t.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const r=e.getHours();let a;switch(r===12?a=$.noon:r===0?a=$.midnight:a=r/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(e,t,n){const r=e.getHours();let a;switch(r>=17?a=$.evening:r>=12?a=$.afternoon:r>=4?a=$.morning:a=$.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(e,t,n){if(t==="ho"){let r=e.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return v.h(e,t)},H:function(e,t,n){return t==="Ho"?n.ordinalNumber(e.getHours(),{unit:"hour"}):v.H(e,t)},K:function(e,t,n){const r=e.getHours()%12;return t==="Ko"?n.ordinalNumber(r,{unit:"hour"}):l(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t==="ko"?n.ordinalNumber(r,{unit:"hour"}):l(r,t.length)},m:function(e,t,n){return t==="mo"?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):v.m(e,t)},s:function(e,t,n){return t==="so"?n.ordinalNumber(e.getSeconds(),{unit:"second"}):v.s(e,t)},S:function(e,t){return v.S(e,t)},X:function(e,t,n){const r=e.getTimezoneOffset();if(r===0)return"Z";switch(t){case"X":return it(r);case"XXXX":case"XX":return O(r);case"XXXXX":case"XXX":default:return O(r,":")}},x:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"x":return it(r);case"xxxx":case"xx":return O(r);case"xxxxx":case"xxx":default:return O(r,":")}},O:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+st(r,":");case"OOOO":default:return"GMT"+O(r,":")}},z:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+st(r,":");case"zzzz":default:return"GMT"+O(r,":")}},t:function(e,t,n){const r=Math.trunc(+e/1e3);return l(r,t.length)},T:function(e,t,n){return l(+e,t.length)}};function st(e,t=""){const n=e>0?"-":"+",r=Math.abs(e),a=Math.trunc(r/60),s=r%60;return s===0?n+String(a):n+String(a)+t+l(s,2)}function it(e,t){return e%60===0?(e>0?"-":"+")+l(Math.abs(e)/60,2):O(e,t)}function O(e,t=""){const n=e>0?"-":"+",r=Math.abs(e),a=l(Math.trunc(r/60),2),s=l(r%60,2);return n+a+t+s}const ot=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},wt=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},ge=(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],r=n[1],a=n[2];if(!a)return ot(e,t);let s;switch(r){case"P":s=t.dateTime({width:"short"});break;case"PP":s=t.dateTime({width:"medium"});break;case"PPP":s=t.dateTime({width:"long"});break;case"PPPP":default:s=t.dateTime({width:"full"});break}return s.replace("{{date}}",ot(r,t)).replace("{{time}}",wt(a,t))},ye={p:wt,P:ge},we=/^D+$/,pe=/^Y+$/,be=["D","DD","YY","YYYY"];function De(e){return we.test(e)}function ke(e){return pe.test(e)}function Se(e,t,n){const r=ve(e,t,n);if(console.warn(r),be.includes(e))throw new RangeError(r)}function ve(e,t,n){const r=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const Me=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Te=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,xe=/^'([^]*?)'?$/,Oe=/''/g,Pe=/[a-zA-Z]/;function Ce(e,t,n){var f,y,w,S;const r=B(),a=r.locale??he,s=r.firstWeekContainsDate??((y=(f=r.locale)==null?void 0:f.options)==null?void 0:y.firstWeekContainsDate)??1,i=r.weekStartsOn??((S=(w=r.locale)==null?void 0:w.options)==null?void 0:S.weekStartsOn)??0,o=b(e,n==null?void 0:n.in);if(!Ct(o))throw new RangeError("Invalid time value");let c=t.match(Te).map(p=>{const g=p[0];if(g==="p"||g==="P"){const _=ye[g];return _(p,a.formatLong)}return p}).join("").match(Me).map(p=>{if(p==="''")return{isToken:!1,value:"'"};const g=p[0];if(g==="'")return{isToken:!1,value:Ne(p)};if(at[g])return{isToken:!0,value:p};if(g.match(Pe))throw new RangeError("Format string contains an unescaped latin alphabet character `"+g+"`");return{isToken:!1,value:p}});a.localize.preprocessor&&(c=a.localize.preprocessor(o,c));const d={firstWeekContainsDate:s,weekStartsOn:i,locale:a};return c.map(p=>{if(!p.isToken)return p.value;const g=p.value;(ke(g)||De(g))&&Se(g,t,String(e));const _=at[g[0]];return _(o,g,a.localize,d)}).join("")}function Ne(e){const t=e.match(xe);return t?t[1].replace(Oe,"'"):e}function $e(e,t){const n=b(e,t==null?void 0:t.in).getDay();return n===0?7:n}function Ee(e,t,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(" ")}const X={},A={};function P(e,t){try{const r=(X[e]||(X[e]=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"longOffset"}).format))(t).split("GMT")[1];return r in A?A[r]:ct(r,r.split(":"))}catch{if(e in A)return A[e];const n=e==null?void 0:e.match(We);return n?ct(e,n.slice(1)):NaN}}const We=/([+-]\d\d):?(\d\d)?/;function ct(e,t){const n=+(t[0]||0),r=+(t[1]||0),a=+(t[2]||0)/60;return A[e]=n*60+r>0?n*60+r+a:n*60-r-a}class D extends Date{constructor(...t){super(),t.length>1&&typeof t[t.length-1]=="string"&&(this.timeZone=t.pop()),this.internal=new Date,isNaN(P(this.timeZone,this))?this.setTime(NaN):t.length?typeof t[0]=="number"&&(t.length===1||t.length===2&&typeof t[1]!="number")?this.setTime(t[0]):typeof t[0]=="string"?this.setTime(+new Date(t[0])):t[0]instanceof Date?this.setTime(+t[0]):(this.setTime(+new Date(...t)),pt(this),V(this)):this.setTime(Date.now())}static tz(t,...n){return n.length?new D(...n,t):new D(Date.now(),t)}withTimeZone(t){return new D(+this,t)}getTimezoneOffset(){const t=-P(this.timeZone,this);return t>0?Math.floor(t):Math.ceil(t)}setTime(t){return Date.prototype.setTime.apply(this,arguments),V(this),+this}[Symbol.for("constructDateFrom")](t){return new D(+new Date(t),this.timeZone)}}const ut=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!ut.test(e))return;const t=e.replace(ut,"$1UTC");D.prototype[t]&&(e.startsWith("get")?D.prototype[e]=function(){return this.internal[t]()}:(D.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),_e(this),+this},D.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),V(this),+this}))});function V(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-P(e.timeZone,e)*60))}function _e(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),pt(e)}function pt(e){const t=P(e.timeZone,e),n=t>0?Math.floor(t):Math.ceil(t),r=new Date(+e);r.setUTCHours(r.getUTCHours()-1);const a=-new Date(+e).getTimezoneOffset(),s=-new Date(+r).getTimezoneOffset(),i=a-s,o=Date.prototype.getHours.apply(e)!==e.internal.getUTCHours();i&&o&&e.internal.setUTCMinutes(e.internal.getUTCMinutes()+i);const c=a-n;c&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+c);const d=new Date(+e);d.setUTCSeconds(0);const f=a>0?d.getSeconds():(d.getSeconds()-60)%60,y=Math.round(-(P(e.timeZone,e)*60))%60;(y||f)&&(e.internal.setUTCSeconds(e.internal.getUTCSeconds()+y),Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+y+f));const w=P(e.timeZone,e),S=w>0?Math.floor(w):Math.ceil(w),g=-new Date(+e).getTimezoneOffset()-S,_=S!==n,Z=g-c;if(_&&Z){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+Z);const z=P(e.timeZone,e),vt=z>0?Math.floor(z):Math.ceil(z),j=S-vt;j&&(e.internal.setUTCMinutes(e.internal.getUTCMinutes()+j),Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+j))}}class M extends D{static tz(t,...n){return n.length?new M(...n,t):new M(Date.now(),t)}toISOString(){const[t,n,r]=this.tzComponents(),a=`${t}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+a}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[t,n,r,a]=this.internal.toUTCString().split(" ");return`${t==null?void 0:t.slice(0,-1)} ${r} ${n} ${a}`}toTimeString(){const t=this.internal.toUTCString().split(" ")[4],[n,r,a]=this.tzComponents();return`${t} GMT${n}${r}${a} (${Ee(this.timeZone,this)})`}toLocaleString(t,n){return Date.prototype.toLocaleString.call(this,t,{...n,timeZone:(n==null?void 0:n.timeZone)||this.timeZone})}toLocaleDateString(t,n){return Date.prototype.toLocaleDateString.call(this,t,{...n,timeZone:(n==null?void 0:n.timeZone)||this.timeZone})}toLocaleTimeString(t,n){return Date.prototype.toLocaleTimeString.call(this,t,{...n,timeZone:(n==null?void 0:n.timeZone)||this.timeZone})}tzComponents(){const t=this.getTimezoneOffset(),n=t>0?"-":"+",r=String(Math.floor(Math.abs(t)/60)).padStart(2,"0"),a=String(Math.abs(t)%60).padStart(2,"0");return[n,r,a]}withTimeZone(t){return new M(+this,t)}[Symbol.for("constructDateFrom")](t){return new M(+new Date(t),this.timeZone)}}window.pktTz=window.pktTz===void 0?"Europe/Oslo":window.pktTz;const Ye=(e=window.pktTz)=>{const t=new M(new Date().toISOString(),e);return t.setHours(0,0,0,0),isNaN(t.getTime())?new Date:new Date(t.getFullYear(),t.getMonth(),t.getDate())};function T(e){if(!e||e==="")return new Date;if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,n,r]=e.split("-").map(Number);return new Date(t,n-1,r)}if(/^\d{4}-\d{2}$/.test(e)){const[t,n]=e.split("-").map(Number);return new Date(t,n-1,1)}return/^\d{4}$/.test(e)?new Date(Number(e),0,1):new Date(e)}const m=e=>{if(!e||isNaN(e.getTime()))return"";const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${r}`},W=e=>{if(!e)return null;const t=T(e);return isNaN(t.getTime())?null:t},Ie=(e,t)=>{const n=N(e);return isNaN(n.getTime())?"":Ce(n,t)},N=(e="",t)=>{const n=typeof e=="string"?T(e):e;return!n||isNaN(n.getTime())?new Date:t?t==="end"?Nt(n):G(n):n},C=(e,t,n=1)=>{if(typeof e!="number"||typeof t!="number"||typeof n!="number"||isNaN(e)||isNaN(t)||isNaN(n))return new Date;const r=new Date(e,t,n);return isNaN(r.getTime())?new Date:r},F=e=>{let t;return typeof e=="number"?t=new M(e,window.pktTz):t=new M(e,window.pktTz),t.setHours(12,0,0,0),t},Fe=e=>!e||isNaN(e.getTime())?"":new Intl.DateTimeFormat("no",{dateStyle:"full",timeZone:window.pktTz}).format(e),Ae=(e,t,n)=>{if(!e||isNaN(e.getTime()))return!1;const r=t?N(t):null,a=n?N(n):null;return!(r&&e<r||a&&e>a)},He=(e,t)=>{if(!e||isNaN(e.getTime())||!Array.isArray(t))return!1;const n=m(e);return t.includes(n)},Re=(e,t)=>{if(!e||isNaN(e.getTime())||!Array.isArray(t))return!1;const n=e.getDay().toString();return t.includes(n)},bt=(e,t,n,r,a)=>!(!e||isNaN(e.getTime())||!Ae(e,t,n)||r&&He(e,r)||a&&Re(e,a)),qe=(e,t,n,r,a)=>e.filter(s=>{const i=W(s);return i&&bt(i,t,n,r,a)}),Le=e=>e.slice().sort((t,n)=>{const r=W(t),a=W(n);return!r||!a?0:r.getTime()-a.getTime()}),Ue=(e,t)=>{const n=W(e),r=W(t);return!n||!r?!1:n<=r},Dt=e=>e?Array.isArray(e)?e.filter(Boolean):String(e).split(",").map(t=>t.trim()).filter(Boolean):[],Be=e=>e.join(","),ze=e=>Dt(e),je=e=>e?T(e):null,Qe=e=>{if(typeof e=="string")return e.split(",").map(t=>T(t));if(Array.isArray(e))return e.map(t=>T(t))},L={csvToArray:ze,stringToDate:je,stringsToDate:Qe},Xe={earliest:{default:null},latest:{default:null},weeknumbers:{default:!1},withcontrols:{default:!1},multiple:{default:!1},maxMultiple:{default:4},range:{default:!1}},x={props:Xe};function kt(e,t){const n=t.excludedates.map(r=>typeof r=="string"?r:m(r));return!bt(e,t.earliest,t.latest,n,t.excludeweekdays)}function Ge(e,t,n,r){return!!(kt(e,n)||!t&&r.multiple&&r.maxMultiple>0&&r.selectedCount>=r.maxMultiple)}function Ve(e,t,n){const r=C(e,t,0);return!(n&&N(n)>r)}function Ke(e,t,n){const r=C(t===11?e+1:e,t===11?0:t+1,1);return!(n&&N(n)<r)}const R=7,Je=6;function Ze(e,t){const n=C(e,t,1),r=C(e,t+1,0),a=(n.getDay()+Je)%R,s=r.getDate(),i=Math.ceil((s+a)/R),c=C(e,t,0).getDate(),d=yt(n);return{firstDayOfMonth:n,lastDayOfMonth:r,startingDay:a,numDays:s,numRows:i,numDaysPrevMonth:c,initialWeek:d}}function tn(e,t,n,r){const{startingDay:a,numDays:s}=r;return e===0&&t<a?"prev-month":n>s?"next-month":"current-month"}function en(e,t,n,r){const{startingDay:a,numDaysPrevMonth:s,numDays:i}=r;return e==="prev-month"?s-(a-t-1):e==="next-month"?n-i:n}function E(e){return typeof e=="string"&&(e=e.split(",")),e.length===1&&e[0]===""?[]:e.map(t=>T(t))}function lt(e,t){const n=mt({start:e,end:t}),r={};if(Array.isArray(n)&&n.length)for(let a=0;a<n.length;a++){const s=n[a],i=s>e&&s<t;r[m(s)]=i}return r}function St(e,t,n,r){if(t.length!==1)return!0;const a=mt({start:t[0],end:e});if(!Array.isArray(a)||!a.length)return!0;for(let s=0;s<a.length;s++){for(const i of n)if(i>t[0]&&i<e)return!1;if(r.includes($e(a[s]).toString()))return!1}return!0}function K(e,t){const n=m(e);return t.includes(n)?t:[...t,n]}function J(e,t){const n=m(e),r=t.indexOf(n);if(r===-1)return t;if(t.length===1)return[];const a=[...t];return a.splice(r,1),a}function nn(e,t,n){const r=m(e);return t.includes(r)?J(e,t):n>0&&t.length>=n?t:K(e,t)}function rn(e,t,n){const r=m(e),a=E(t);if(t.includes(r))return t.indexOf(r)===0?[]:J(e,t);if(t.length>1)return[r];if(t.length===1){if(!St(e,a,n.excludedates,n.excludeweekdays))return[r];if(a[0]>e)return[r]}return K(e,t)}const an={ArrowLeft:-1,ArrowRight:1,ArrowUp:-R,ArrowDown:R};function sn(e){var n;const t=e.nodeName;return t==="INPUT"||t==="SELECT"||t==="BUTTON"&&!((n=e.dataset)!=null&&n.date)}function on(e,t,n){let r=nt(e,t);if(!r)return null;let a=n(`button[data-date="${m(r)}"]`);for(;a instanceof HTMLButtonElement&&a.dataset.disabled;)if(r=nt(r,t),a=n(`button[data-date="${m(r)}"]`),!a)return null;return r}function cn(e){return an[e]??null}var un=Object.defineProperty,ln=Object.getOwnPropertyDescriptor,h=(e,t,n,r)=>{for(var a=r>1?void 0:r?ln(t,n):t,s=e.length-1,i;s>=0;s--)(i=e[s])&&(a=(r?i(t,n,a):i(a))||a);return r&&a&&un(t,n,a),a};exports.PktCalendar=class extends u.PktElement{constructor(){super(...arguments),this.selected=[],this.multiple=x.props.multiple.default,this.maxMultiple=x.props.maxMultiple.default,this.range=x.props.range.default,this.earliest=x.props.earliest.default,this.latest=x.props.latest.default,this.excludedates=[],this.excludeweekdays=[],this.weeknumbers=x.props.weeknumbers.default,this.withcontrols=x.props.withcontrols.default,this.currentmonth=null,this.dayStrings=this.strings.dates.daysShort,this.dayStringsLong=this.strings.dates.days,this.monthStrings=this.strings.dates.months,this.weekString=this.strings.dates.week,this.prevMonthString=this.strings.dates.prevMonth,this.nextMonthString=this.strings.dates.nextMonth,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}firstUpdated(t){this.addEventListener("keydown",this.handleKeydown)}disconnectedCallback(){this.removeEventListener("keydown",this.handleKeydown),super.disconnectedCallback()}updated(t){super.updated(t),t.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=E(this.selected),this.range&&this.selected.length===2&&(this.inRange=lt(this._selected[0],this._selected[1])),this.setCurrentMonth()}setCurrentMonth(){if(this.currentmonth===null&&!this.currentmonthtouched&&(this.currentmonthtouched=!0),this.selected.length&&this.selected[0]!==""){const t=T(this.selected[this.selected.length-1]);this.currentmonth=isNaN(t.getTime())?F(new Date):t}else this.currentmonth===null&&(this.currentmonth=F(new Date));(!this.currentmonth||isNaN(this.currentmonth.getTime()))&&(this.currentmonth=F(new Date)),this.year=this.currentmonth.getFullYear(),this.month=this.currentmonth.getMonth()}handleKeydown(t){const n=cn(t.key);n!==null&&this.handleArrowKey(t,n)}handleArrowKey(t,n){const r=t.target;if(sn(r))return;if(t.preventDefault(),!this.focusedDate){this.focusOnCurrentDate();return}const a=this.focusedDate?N(this.focusedDate):C(this.year,this.month,1),s=on(a,n,this.querySelector.bind(this));if(s){const i=this.querySelector(`button[data-date="${m(s)}"]`);i instanceof HTMLButtonElement&&!i.dataset.disabled&&(this.focusedDate=m(s),i.focus())}}render(){return u.x`
|
|
2
|
-
<div
|
|
3
|
-
class="pkt-calendar ${this.weeknumbers?"pkt-cal-weeknumbers":""}"
|
|
4
|
-
@focusout=${this.closeEvent}
|
|
5
|
-
@keydown=${t=>{t.key==="Escape"&&(t.preventDefault(),this.close())}}
|
|
6
|
-
>
|
|
7
|
-
<nav class="pkt-cal-month-nav">
|
|
8
|
-
${this.renderMonthNavButton("prev")}
|
|
9
|
-
${this.renderMonthNav()}
|
|
10
|
-
${this.renderMonthNavButton("next")}
|
|
11
|
-
</nav>
|
|
12
|
-
<table
|
|
13
|
-
class="pkt-cal-days pkt-txt-12-medium pkt-calendar__body"
|
|
14
|
-
role="grid"
|
|
15
|
-
?aria-multiselectable=${this.range||this.multiple}
|
|
16
|
-
>
|
|
17
|
-
<thead>
|
|
18
|
-
${this.renderDayNames()}
|
|
19
|
-
</thead>
|
|
20
|
-
<tbody>
|
|
21
|
-
${this.renderCalendarBody()}
|
|
22
|
-
</tbody>
|
|
23
|
-
</table>
|
|
24
|
-
</div>
|
|
25
|
-
`}renderMonthNavButton(t){const n=t==="prev",r=n?this.isPrevMonthAllowed():this.isNextMonthAllowed(),a=n?this.prevMonthString:this.nextMonthString,s=n?"chevron-thin-left":"chevron-thin-right",i=n?"pkt-calendar__prev-month":"pkt-calendar__next-month",o=n?()=>this.prevMonth():()=>this.nextMonth();return u.x`<div>
|
|
26
|
-
<button
|
|
27
|
-
type="button"
|
|
28
|
-
aria-label="${a}"
|
|
29
|
-
@click=${()=>r&&o()}
|
|
30
|
-
@keydown=${c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),r&&o())}}
|
|
31
|
-
class="pkt-btn pkt-btn--tertiary pkt-btn--small pkt-btn--icon-only ${i} ${r?"":"pkt-hide"}"
|
|
32
|
-
.data-disabled=${r?u.E:"disabled"}
|
|
33
|
-
?aria-disabled=${!r}
|
|
34
|
-
tabindex=${r?"0":"-1"}
|
|
35
|
-
>
|
|
36
|
-
<pkt-icon class="pkt-btn__icon" name="${s}"></pkt-icon>
|
|
37
|
-
<span class="pkt-btn__text">${a}</span>
|
|
38
|
-
</button>
|
|
39
|
-
</div>`}renderDayNames(){const t=[];this.weeknumbers&&t.push(u.x`<th><div class="pkt-calendar__week-number">${this.weekString}</div></th>`);for(let n=0;n<this.dayStrings.length;n++)t.push(u.x`<th>
|
|
40
|
-
<div class="pkt-calendar__day-name" aria-label="${this.dayStringsLong[n]}">
|
|
41
|
-
${this.dayStrings[n]}
|
|
42
|
-
</div>
|
|
43
|
-
</th>`);return u.x`<tr class="pkt-cal-week-row">${t}</tr>`}renderMonthNav(){return this.withcontrols?u.x`<div class="pkt-cal-month-picker">
|
|
44
|
-
<label for="${this.id}-monthnav" class="pkt-hide">${this.strings.dates.month}</label>
|
|
45
|
-
<select
|
|
46
|
-
aria-label="${this.strings.dates.month}"
|
|
47
|
-
class="pkt-input pkt-input-compact"
|
|
48
|
-
id="${this.id}-monthnav"
|
|
49
|
-
@change=${t=>{t.stopImmediatePropagation();const n=t.target;this.changeMonth(this.year,parseInt(n.value))}}
|
|
50
|
-
>
|
|
51
|
-
${this.monthStrings.map((t,n)=>u.x`<option value=${n} ?selected=${this.month===n}>${t}</option>`)}
|
|
52
|
-
</select>
|
|
53
|
-
<label for="${this.id}-yearnav" class="pkt-hide">${this.strings.dates.year}</label>
|
|
54
|
-
<input
|
|
55
|
-
aria-label="${this.strings.dates.year}"
|
|
56
|
-
class="pkt-input pkt-cal-input-year pkt-input-compact"
|
|
57
|
-
id="${this.id}-yearnav"
|
|
58
|
-
type="number"
|
|
59
|
-
size="4"
|
|
60
|
-
placeholder="0000"
|
|
61
|
-
@change=${t=>{t.stopImmediatePropagation();const n=t.target;this.changeMonth(parseInt(n.value),this.month)}}
|
|
62
|
-
.value=${this.year}
|
|
63
|
-
/>
|
|
64
|
-
</div>`:u.x`<div class="pkt-txt-16-medium pkt-calendar__month-title" aria-live="polite">
|
|
65
|
-
${this.monthStrings[this.month]} ${this.year}
|
|
66
|
-
</div>`}getDayViewData(t,n){const r=C(this.year,this.month,t),a=m(r),s=a===m(n),i=this.selected.includes(a),o=this.isDayDisabled(r,i),c=this.calculateTabIndex(a,o,t);return{currentDate:r,currentDateISO:a,isToday:s,isSelected:i,isDisabled:o,ariaLabel:Fe(r),tabindex:c}}getDateConstraints(){return{earliest:this.earliest,latest:this.latest,excludedates:this.excludedates,excludeweekdays:this.excludeweekdays}}isDayDisabled(t,n){return Ge(t,n,this.getDateConstraints(),{multiple:this.multiple,maxMultiple:this.maxMultiple,selectedCount:this.selected.length})}calculateTabIndex(t,n,r){return this.focusedDate?this.focusedDate===t&&!n?"0":"-1":!n&&this.tabIndexSet===0?(this.tabIndexSet=r,"0"):this.tabIndexSet===r?"0":"-1"}getDayCellClasses(t){const{currentDateISO:n,isToday:r,isSelected:a}=t,s=this.range&&(this.selected.length===2||this.rangeHovered!==null)&&n===this.selected[0],i=this.range&&this.selected.length===2&&n===this.selected[1];return{"pkt-cal-today":r,"pkt-cal-selected":a,"pkt-cal-in-range":this.inRange[n],"pkt-cal-excluded":this.isExcluded(t.currentDate),"pkt-cal-in-range-first":s,"pkt-cal-in-range-last":i,"pkt-cal-range-hover":this.rangeHovered!==null&&n===m(this.rangeHovered)}}getDayButtonClasses(t){const{currentDateISO:n,isToday:r,isSelected:a,isDisabled:s}=t,i=this.range&&(this.selected.length===2||this.rangeHovered!==null)&&n===this.selected[0],o=this.range&&this.selected.length===2&&n===this.selected[1];return{"pkt-calendar__date":!0,"pkt-calendar__date--today":r,"pkt-calendar__date--selected":a,"pkt-calendar__date--disabled":s,"pkt-calendar__date--in-range":this.inRange[n],"pkt-calendar__date--in-range-hover":this.rangeHovered!==null&&n===m(this.rangeHovered),"pkt-calendar__date--range-start":i,"pkt-calendar__date--range-end":o}}handleDayFocus(t,n){this.range&&!this.isExcluded(t)&&this.handleRangeHover(t),this.focusedDate=n}renderDayView(t,n){const r=this.getDayViewData(t,n),{currentDate:a,currentDateISO:s,isSelected:i,isDisabled:o,ariaLabel:c,tabindex:d}=r;this.selectableDates.push({currentDateISO:s,isDisabled:o,tabindex:d});const f=this.getDayCellClasses(r),y=this.getDayButtonClasses(r);return u.x`<td class=${tt.e(f)}>
|
|
67
|
-
<button
|
|
68
|
-
type="button"
|
|
69
|
-
aria-pressed=${i?"true":"false"}
|
|
70
|
-
?disabled=${o}
|
|
71
|
-
class="pkt-btn pkt-btn--tertiary pkt-btn--small pkt-btn--label-only ${tt.e(y)}"
|
|
72
|
-
@mouseover=${()=>this.range&&!this.isExcluded(a)&&this.handleRangeHover(a)}
|
|
73
|
-
@focus=${()=>this.handleDayFocus(a,s)}
|
|
74
|
-
aria-label="${c}"
|
|
75
|
-
tabindex=${d}
|
|
76
|
-
data-disabled=${o?"disabled":u.E}
|
|
77
|
-
data-date=${s}
|
|
78
|
-
@keydown=${w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),this.handleDateSelect(a))}}
|
|
79
|
-
@click=${w=>{o||(w.preventDefault(),this.handleDateSelect(a))}}
|
|
80
|
-
>
|
|
81
|
-
<span class="pkt-btn__text pkt-txt-14-light">${t}</span>
|
|
82
|
-
</button>
|
|
83
|
-
</td>`}renderEmptyDayCell(t){return u.x`<td class="pkt-cal-other">
|
|
84
|
-
<div
|
|
85
|
-
class="pkt-btn pkt-btn--tertiary pkt-btn--small pkt-btn--label-only"
|
|
86
|
-
data-disabled="disabled"
|
|
87
|
-
>
|
|
88
|
-
<span class="pkt-btn__text pkt-txt-14-light">${t}</span>
|
|
89
|
-
</div>
|
|
90
|
-
</td>`}renderWeekRow(t){return u.x`<tr class="pkt-cal-week-row" role="row">${t}</tr>`}renderCalendarBody(){const t=Ye(),n=Ze(this.year,this.month);let r=1;this.week=n.initialWeek;const a=[];for(let s=0;s<n.numRows;s++){const i=[];this.weeknumbers&&i.push(u.x`<td class="pkt-cal-week">${this.week}</td>`),this.week++;for(let o=0;o<R;o++){const c=tn(s,o,r,n);if(c==="current-month")i.push(this.renderDayView(r,t)),r++;else{const d=en(c,o,r,n);i.push(this.renderEmptyDayCell(d)),c==="next-month"&&r++}}a.push(this.renderWeekRow(i))}return a}isExcluded(t){return kt(t,this.getDateConstraints())}isPrevMonthAllowed(){return Ve(this.year,this.month,this.earliest)}prevMonth(){const t=this.month===0?11:this.month-1,n=this.month===0?this.year-1:this.year;this.changeMonth(n,t)}isNextMonthAllowed(){return Ke(this.year,this.month,this.latest)}nextMonth(){const t=this.month===11?0:this.month+1,n=this.month===11?this.year+1:this.year;this.changeMonth(n,t)}changeMonth(t,n){this.year=typeof t=="string"?parseInt(t):t,this.month=typeof n=="string"?parseInt(n):n,this.currentmonth=F(new Date(this.year,this.month,1)),this.tabIndexSet=0,this.focusedDate=null,this.selectableDates=[]}emptySelected(){this.selected=[],this._selected=[],this.inRange={}}normalizeSelected(){return typeof this.selected=="string"?this.selected.split(","):this.selected}addToSelected(t){this.selected=K(t,this.normalizeSelected()),this._selected=E(this.selected),this.range&&this.selected.length===2&&(this.convertSelected(),this.close())}removeFromSelected(t){this.selected=J(t,this.normalizeSelected()),this._selected=E(this.selected)}toggleSelected(t){this.selected=nn(t,this.normalizeSelected(),this.maxMultiple),this._selected=E(this.selected)}isRangeAllowed(t){return St(t,this._selected,this.excludedates,this.excludeweekdays)}handleRangeSelect(t){return this.selected=rn(t,this.normalizeSelected(),{excludedates:this.excludedates,excludeweekdays:this.excludeweekdays}),this._selected=E(this.selected),this.selected.length===2?this.convertSelected():this.selected.length===1&&(this.inRange={}),Promise.resolve()}handleRangeHover(t){if(!this.range||this._selected.length!==1||!this.isRangeAllowed(t)||this._selected[0]>=t){this.rangeHovered=null;return}this.rangeHovered=t,this.inRange=lt(this._selected[0],t)}handleDateSelect(t){return t&&(this.range?this.handleRangeSelect(t):this.multiple?this.toggleSelected(t):(this.selected.includes(m(t))?this.emptySelected():(this.emptySelected(),this.addToSelected(t)),this.close()),this.dispatchEvent(new CustomEvent("date-selected",{detail:this.selected,bubbles:!0,composed:!0}))),Promise.resolve()}focusOnCurrentDate(){const t=m(F(new Date)),n=this.querySelector(`button[data-date="${t}"]`);if(n instanceof HTMLButtonElement){this.focusedDate=t,n.focus();return}const r=this.selectableDates.find(a=>!a.isDisabled);if(r){const a=this.querySelector(`button[data-date="${r.currentDateISO}"]`);a instanceof HTMLButtonElement&&(this.focusedDate=r.currentDateISO,a.focus())}}closeEvent(t){!this.contains(t.relatedTarget)&&!t.target.classList.contains("pkt-hide")&&this.close()}close(){this.dispatchEvent(new CustomEvent("close",{detail:!0,bubbles:!0,composed:!0}))}};h([u.n({converter:L.csvToArray})],exports.PktCalendar.prototype,"selected",2);h([u.n({type:Boolean})],exports.PktCalendar.prototype,"multiple",2);h([u.n({type:Number})],exports.PktCalendar.prototype,"maxMultiple",2);h([u.n({type:Boolean})],exports.PktCalendar.prototype,"range",2);h([u.n({type:String})],exports.PktCalendar.prototype,"earliest",2);h([u.n({type:String})],exports.PktCalendar.prototype,"latest",2);h([u.n({converter:L.stringsToDate})],exports.PktCalendar.prototype,"excludedates",2);h([u.n({converter:L.csvToArray})],exports.PktCalendar.prototype,"excludeweekdays",2);h([u.n({type:Boolean})],exports.PktCalendar.prototype,"weeknumbers",2);h([u.n({type:Boolean})],exports.PktCalendar.prototype,"withcontrols",2);h([u.n({converter:L.stringToDate})],exports.PktCalendar.prototype,"currentmonth",2);h([u.n({type:Array})],exports.PktCalendar.prototype,"dayStrings",2);h([u.n({type:Array})],exports.PktCalendar.prototype,"dayStringsLong",2);h([u.n({type:Array})],exports.PktCalendar.prototype,"monthStrings",2);h([u.n({type:String})],exports.PktCalendar.prototype,"weekString",2);h([u.n({type:String})],exports.PktCalendar.prototype,"prevMonthString",2);h([u.n({type:String})],exports.PktCalendar.prototype,"nextMonthString",2);h([u.n({type:Array})],exports.PktCalendar.prototype,"_selected",2);h([q.r()],exports.PktCalendar.prototype,"inRange",2);h([u.n({type:Date})],exports.PktCalendar.prototype,"rangeHovered",2);h([u.n({type:Number})],exports.PktCalendar.prototype,"year",2);h([u.n({type:Number})],exports.PktCalendar.prototype,"month",2);h([u.n({type:Number})],exports.PktCalendar.prototype,"week",2);h([q.r()],exports.PktCalendar.prototype,"currentmonthtouched",2);h([q.r()],exports.PktCalendar.prototype,"focusedDate",2);h([q.r()],exports.PktCalendar.prototype,"selectableDates",2);h([q.r()],exports.PktCalendar.prototype,"tabIndexSet",2);exports.PktCalendar=h([u.t("pkt-calendar")],exports.PktCalendar);exports.arrayToCsv=Be;exports.converters=L;exports.filterSelectableDates=qe;exports.formatISODate=m;exports.fromISOToDate=W;exports.fromISOtoLocal=Ie;exports.isValidDateRange=Ue;exports.newDate=N;exports.parseISODateString=T;exports.sortDateStrings=Le;exports.valueToArray=Dt;
|