@kirbydesign/designsystem 11.11.4 → 12.0.0-dev-286cdc0
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/README.md +7 -0
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +246 -135
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +229 -134
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +102 -55
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +85 -42
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +203 -170
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +524 -516
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +439 -205
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +1388 -1469
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +223 -176
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-config.mjs +50 -96
- package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +180 -83
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +46 -19
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +878 -752
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +175 -91
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +213 -85
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +67 -33
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +1260 -891
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-gesture.mjs +38 -23
- package/fesm2022/kirbydesign-designsystem-gesture.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +422 -182
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs +16 -14
- package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +251 -361
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +881 -296
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +52 -23
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +147 -43
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +395 -151
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +136 -54
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +1188 -697
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +166 -76
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +420 -311
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +2476 -1912
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +1526 -905
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +204 -169
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +209 -158
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +537 -365
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +207 -150
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +217 -104
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +113 -38
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +56 -18
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-segmented-control.mjs +276 -232
- package/fesm2022/kirbydesign-designsystem-segmented-control.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +328 -382
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +73 -84
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +665 -531
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +140 -91
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +360 -158
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +90 -32
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +348 -181
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +286 -121
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +6234 -3164
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +118 -95
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +128 -101
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +236 -243
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +98 -62
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +155 -127
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +180 -150
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +39 -24
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +516 -407
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/icons/svg/megaphone.svg +3 -0
- package/icons/svg/person-blocked.svg +3 -0
- package/icons/svg/person-check.svg +3 -0
- package/icons/svg/person-close.svg +3 -0
- package/icons/svg/person-cloud.svg +3 -0
- package/icons/svg/person-power.svg +3 -0
- package/icons/svg/person-warning.svg +3 -0
- package/icons/svg/phone-device-pin.svg +3 -0
- package/icons/svg/phone-device.svg +3 -2
- package/package.json +10 -10
- package/readme.md +37 -0
- package/types/kirbydesign-designsystem-accordion.d.ts +72 -39
- package/types/kirbydesign-designsystem-accordion.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-action-group.d.ts +46 -39
- package/types/kirbydesign-designsystem-action-group.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-avatar.d.ts +62 -26
- package/types/kirbydesign-designsystem-avatar.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-badge.d.ts +30 -19
- package/types/kirbydesign-designsystem-badge.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-button.d.ts +70 -45
- package/types/kirbydesign-designsystem-button.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-calendar.d.ts +193 -132
- package/types/kirbydesign-designsystem-calendar.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-card.d.ts +130 -66
- package/types/kirbydesign-designsystem-card.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-chart.d.ts +198 -172
- package/types/kirbydesign-designsystem-chart.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-checkbox.d.ts +102 -68
- package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-config.d.ts +17 -21
- package/types/kirbydesign-designsystem-config.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-data-table.d.ts +46 -26
- package/types/kirbydesign-designsystem-data-table.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-divider.d.ts +11 -9
- package/types/kirbydesign-designsystem-divider.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-dropdown.d.ts +219 -166
- package/types/kirbydesign-designsystem-dropdown.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-empty-state.d.ts +58 -35
- package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-fab-sheet.d.ts +34 -28
- package/types/kirbydesign-designsystem-fab-sheet.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-flag.d.ts +18 -13
- package/types/kirbydesign-designsystem-flag.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-form-field.d.ts +409 -242
- package/types/kirbydesign-designsystem-form-field.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-gesture.d.ts +41 -46
- package/types/kirbydesign-designsystem-gesture.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-header.d.ts +102 -64
- package/types/kirbydesign-designsystem-header.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-helpers-scss.d.ts +6 -8
- package/types/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-helpers.d.ts +83 -97
- package/types/kirbydesign-designsystem-helpers.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-icon.d.ts +63 -59
- package/types/kirbydesign-designsystem-icon.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-item-group.d.ts +6 -9
- package/types/kirbydesign-designsystem-item-group.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-item-sliding.d.ts +30 -26
- package/types/kirbydesign-designsystem-item-sliding.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-item.d.ts +93 -54
- package/types/kirbydesign-designsystem-item.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-kirby-app.d.ts +18 -19
- package/types/kirbydesign-designsystem-kirby-app.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-list.d.ts +392 -263
- package/types/kirbydesign-designsystem-list.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-loading-overlay.d.ts +35 -24
- package/types/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-menu.d.ts +119 -69
- package/types/kirbydesign-designsystem-menu.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-modal.d.ts +578 -455
- package/types/kirbydesign-designsystem-modal.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-page.d.ts +308 -226
- package/types/kirbydesign-designsystem-page.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-popover.d.ts +48 -40
- package/types/kirbydesign-designsystem-popover.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-progress-circle.d.ts +59 -61
- package/types/kirbydesign-designsystem-progress-circle.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-radio.d.ts +147 -98
- package/types/kirbydesign-designsystem-radio.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-range.d.ts +90 -45
- package/types/kirbydesign-designsystem-range.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-reorder-list.d.ts +44 -32
- package/types/kirbydesign-designsystem-reorder-list.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-router-outlet.d.ts +23 -18
- package/types/kirbydesign-designsystem-router-outlet.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-section-header.d.ts +5 -8
- package/types/kirbydesign-designsystem-section-header.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-segmented-control.d.ts +123 -100
- package/types/kirbydesign-designsystem-segmented-control.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-shared-floating.d.ts +183 -128
- package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-shared-portal.d.ts +29 -28
- package/types/kirbydesign-designsystem-shared-portal.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-shared.d.ts +143 -139
- package/types/kirbydesign-designsystem-shared.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-slide-button.d.ts +43 -34
- package/types/kirbydesign-designsystem-slide-button.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-slide.d.ts +80 -59
- package/types/kirbydesign-designsystem-slide.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-spinner.d.ts +13 -14
- package/types/kirbydesign-designsystem-spinner.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-tab-navigation.d.ts +78 -55
- package/types/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-tabs.d.ts +50 -45
- package/types/kirbydesign-designsystem-tabs.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-testing-base.d.ts +2435 -815
- package/types/kirbydesign-designsystem-testing-base.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-testing-jasmine.d.ts +9 -10
- package/types/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-testing-jest.d.ts +9 -10
- package/types/kirbydesign-designsystem-testing-jest.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-testing.d.ts +52 -58
- package/types/kirbydesign-designsystem-testing.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-toast.d.ts +25 -31
- package/types/kirbydesign-designsystem-toast.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-toggle-button.d.ts +62 -56
- package/types/kirbydesign-designsystem-toggle-button.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-toggle.d.ts +71 -63
- package/types/kirbydesign-designsystem-toggle.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-types.d.ts +15 -22
- package/types/kirbydesign-designsystem-types.d.ts.map +1 -1
- package/types/kirbydesign-designsystem.d.ts +135 -123
- package/types/kirbydesign-designsystem.d.ts.map +1 -1
- package/accordion/package.json +0 -4
- package/action-group/package.json +0 -4
- package/avatar/package.json +0 -4
- package/badge/package.json +0 -4
- package/button/package.json +0 -4
- package/calendar/package.json +0 -4
- package/card/package.json +0 -4
- package/chart/package.json +0 -4
- package/checkbox/package.json +0 -4
- package/config/package.json +0 -4
- package/data-table/package.json +0 -4
- package/divider/package.json +0 -4
- package/dropdown/package.json +0 -4
- package/empty-state/package.json +0 -4
- package/fab-sheet/package.json +0 -4
- package/flag/package.json +0 -4
- package/form-field/package.json +0 -4
- package/gesture/package.json +0 -4
- package/header/package.json +0 -4
- package/helpers/package.json +0 -4
- package/helpers/scss/package.json +0 -4
- package/icon/package.json +0 -4
- package/item/package.json +0 -4
- package/item-group/package.json +0 -4
- package/item-sliding/package.json +0 -4
- package/kirby-app/package.json +0 -4
- package/list/package.json +0 -4
- package/loading-overlay/package.json +0 -4
- package/menu/package.json +0 -4
- package/modal/package.json +0 -4
- package/page/package.json +0 -4
- package/popover/package.json +0 -4
- package/progress-circle/package.json +0 -4
- package/radio/package.json +0 -4
- package/range/package.json +0 -4
- package/reorder-list/package.json +0 -4
- package/router-outlet/package.json +0 -4
- package/section-header/package.json +0 -4
- package/segmented-control/package.json +0 -4
- package/shared/floating/package.json +0 -4
- package/shared/package.json +0 -4
- package/shared/portal/package.json +0 -4
- package/slide/package.json +0 -4
- package/slide-button/package.json +0 -4
- package/spinner/package.json +0 -4
- package/tab-navigation/package.json +0 -4
- package/tabs/package.json +0 -4
- package/testing/package.json +0 -4
- package/testing-base/package.json +0 -4
- package/testing-jasmine/package.json +0 -4
- package/testing-jest/package.json +0 -4
- package/toast/package.json +0 -4
- package/toggle/package.json +0 -4
- package/toggle-button/package.json +0 -4
- package/types/package.json +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-designsystem-calendar.mjs","sources":["../../calendar/src/calendar.component.ts","../../calendar/src/calendar.component.html","../../calendar/src/kirbydesign-designsystem-calendar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {\n add,\n eachDayOfInterval,\n endOfWeek,\n format,\n getYear,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWeekend,\n lastDayOfWeek,\n Locale as LocaleDateFns,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\nimport { fromZonedTime, toZonedTime } from 'date-fns-tz';\nimport { da, de, enGB, enUS } from 'date-fns/locale';\n\nimport { capitalizeFirstLetter } from '@kirbydesign/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { DropdownComponent } from '@kirbydesign/designsystem/dropdown';\nimport { UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\n\nimport { TranslationService } from '@kirbydesign/designsystem/shared';\nimport { CalendarDay, CalendarDayMetadata } from './interfaces/calendar-day';\nimport { CalendarYearNavigatorConfig } from './interfaces/calendar-year-navigator-config';\n\nexport type Locale = LocaleDateFns;\n\ninterface WeekDay {\n firstLetterCapitalized: string;\n fullName: string;\n}\n\nenum TimeUnit {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n milliseconds = 'milliseconds',\n}\n\n@Component({\n imports: [DropdownComponent, ButtonComponent, IconComponent],\n selector: 'kirby-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent implements OnInit, OnChanges {\n @Output() dateChange = new EventEmitter<Date>();\n @Output() dateSelect = new EventEmitter<Date>();\n @Output() yearSelect = new EventEmitter<number>();\n @Output() previousMonthClicked = new EventEmitter<Date>();\n @Output() nextMonthClicked = new EventEmitter<Date>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n\n @Input() set locales(locales: { [key: string]: Locale }) {\n console.warn(\n `Supplying additional locales to the Kirby Calendar Component via an input property is deprecated and should not be used.\n A future update will allow injecting additional locales via a provider instead.`\n );\n }\n @Input() customLocales: { [key: string]: Locale } = {};\n /**\n * @deprecated This input is no longer needed. The year selection dropdown now always uses popover positioning.\n * This input will be removed in a future major version.\n */\n @Input() set usePopover(_value: boolean) {\n console.warn(\n `[Kirby Calendar] The 'usePopover' input is deprecated and no longer has any effect. \n The year selection dropdown now always uses popover positioning. This input will be removed in a future major version.`\n );\n }\n /**\n * Configuration for the year navigator.\n *\n * Internally, calendar component:\n * - bases yearNavigatorOptions.from and yearNavigatorOptions.to on todayDate if a number is provided\n * - prioritizes minDate and maxDate over yearNavigatorOptions.from and yearNavigatorOptions.to\n */\n @Input() yearNavigatorOptions: CalendarYearNavigatorConfig;\n\n _tableMonthId = UniqueIdGenerator.scopedTo('kirby-calendar-month').next();\n _month: CalendarDay[][];\n _weekDays: WeekDay[];\n private selectedDay: CalendarDay;\n private focussedDay: CalendarDay;\n // NOTE: Internally, all Dates\n // are normalized to point to local timezone midnight, regardless of the timezone\n // setting.\n private activeMonth: Date;\n private _selectedDate: Date;\n private _disabledDates: Date[] = [];\n private _enabledDates: Date[] = [];\n private _todayDate: Date;\n private _minDate: Date;\n private _maxDate: Date;\n private focussedDate: Date;\n private locale: Locale;\n private timeZoneName: string;\n private includedLocales = { da, de, enGB, enUS };\n\n get selectedDate(): Date {\n return this._selectedDate;\n }\n\n @Input() set selectedDate(valueLocalOrUTC: Date | null) {\n const value = this.normalizeDate(valueLocalOrUTC);\n\n if (valueLocalOrUTC) {\n this.setActiveMonth(value);\n }\n\n if (this.hasDateChanged(value, this._selectedDate)) {\n this.onSelectedDateChange(value);\n this.focusDate(value);\n this._selectedDate = value;\n }\n }\n\n get disabledDates(): Date[] {\n return this._disabledDates;\n }\n\n @Input() set disabledDates(value: Date[]) {\n this._disabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get enabledDates(): Date[] {\n return this._enabledDates;\n }\n\n @Input() set enabledDates(value: Date[]) {\n this._enabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get todayDate(): Date {\n return this._todayDate;\n }\n\n @Input() set todayDate(value: Date) {\n this._todayDate = this.normalizeDate(value);\n }\n\n get minDate(): Date {\n return this._minDate;\n }\n\n @Input() set minDate(value: Date) {\n if (value && this.activeMonth && isBefore(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._minDate = this.normalizeDate(value);\n }\n\n get maxDate(): Date {\n return this._maxDate;\n }\n\n @Input() set maxDate(value: Date) {\n if (value && this.activeMonth && isAfter(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._maxDate = this.normalizeDate(value);\n }\n\n get activeMonthName(): string {\n return capitalizeFirstLetter(this.formatWithLocale(this.activeMonth, 'MMMM'));\n }\n\n get activeYear(): string {\n return this.formatWithLocale(this.activeMonth, 'yyyy');\n }\n\n /**\n * Gets navigable years for year navigator based on yearNavigatorOptions.\n */\n get navigableYears(): string[] {\n const dateOfFirstNavigableYear =\n this.minDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.from);\n\n const dateOfLastNavigableYear =\n this.maxDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.to);\n\n return this.getYearsBetweenDates(dateOfFirstNavigableYear, dateOfLastNavigableYear);\n }\n\n get navigatedYear(): number {\n return this.navigableYears.indexOf(this.activeYear);\n }\n\n @HostBinding('class.has-year-navigator')\n get _hasYearNavigator() {\n return !!this.yearNavigatorOptions;\n }\n\n private getTodayDate() {\n return startOfDay(this.todayDate ?? new Date());\n }\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n public translations: TranslationService\n ) {\n this.locale = this.mapLocale(locale);\n this.timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n private formatWithLocale(date: Date, formatString: string): string {\n return format(date, formatString, {\n locale: this.locale,\n });\n }\n\n private mapLocale(locale: string): Locale {\n if (locale === 'en') {\n locale = 'enGB'; // if english locale is provided without region, we default to GB\n }\n locale = locale.replace('-', '');\n const availableLocales = { ...this.includedLocales, ...this.locales, ...this.customLocales };\n return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist\n }\n\n private formatDateLabel(): string {\n const localeDateFormats = {\n da: 'd. MMMM',\n de: 'd. MMMM',\n 'en-GB': 'd MMMM',\n 'en-US': 'MMMM d',\n };\n\n const defaultDateFormat = localeDateFormats['en-US'];\n const dateFormat = localeDateFormats[this.locale.code] || defaultDateFormat;\n return dateFormat;\n }\n\n ngOnInit() {\n this.focussedDate = this.getTodayDate();\n this._weekDays = this.getWeekDays();\n this.setActiveMonth(this.selectedDate);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.activeMonth) return;\n if (\n changes.disableWeekends ||\n changes.disablePastDates ||\n changes.disableFutureDates ||\n changes.disabledDates ||\n changes.enabledDates ||\n changes.minDate ||\n changes.maxDate ||\n changes.todayDate ||\n changes.timezone\n ) {\n this.refreshActiveMonth();\n }\n }\n\n private setActiveMonth(date: Date = new Date()) {\n if (!this.activeMonth || !isSameMonth(this.activeMonth, date)) {\n this.activeMonth = startOfMonth(date);\n this.refreshActiveMonth();\n }\n }\n\n // For leniency, the component will accept any Date that points to either UTC midnight\n // or to local timezone midnight although we will internally normalize the representation\n // of all received dates to point to local timezone midnight.\n // We currently log no warnings if the date doesn't match the timezone setting or\n // if it doesn't point to midnight.\n private normalizeDate(dateLocalOrUTC: Date) {\n if (!dateLocalOrUTC) return;\n\n if (startOfDay(dateLocalOrUTC).getTime() === dateLocalOrUTC.getTime()) {\n // date is local timezone midnight\n return dateLocalOrUTC;\n }\n if (\n startOfDay(toZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() ===\n toZonedTime(dateLocalOrUTC, this.timeZoneName).getTime()\n ) {\n // the date is a UTC midnight; create the equivalent local timezone midnight date\n const normalizedUTCdate = toZonedTime(dateLocalOrUTC, this.timeZoneName);\n return normalizedUTCdate;\n }\n // does not point to midnight so we make it\n return startOfDay(dateLocalOrUTC);\n }\n\n private getWeekDays(): WeekDay[] {\n const now = new Date();\n const week = eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale }),\n });\n\n const weekdayNarrowFormat = 'EEEEE';\n const weekdayWideFormat = 'EEEE';\n\n return week.map((date) => ({\n firstLetterCapitalized: this.formatWithLocale(date, weekdayNarrowFormat),\n fullName: this.formatWithLocale(date, weekdayWideFormat),\n }));\n }\n\n private hasDateChanged(newDate: Date, previousDate: Date): boolean {\n if (!newDate && !previousDate) {\n return false;\n }\n if (newDate instanceof Date && !previousDate) {\n return true;\n }\n return !isSameDay(newDate, previousDate);\n }\n\n private isDisabledDate(date: Date): boolean {\n return this.disabledDates.some((disabledDate) => isSameDay(disabledDate, date));\n }\n\n private isEnabledDate(date: Date): boolean {\n return (\n this._enabledDates.length === 0 ||\n this.enabledDates.some((enabledDate) => isSameDay(enabledDate, date))\n );\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n\n const totalNumberOfDays = 42; // Always show 42 days (6 weeks) in calendar\n const daysArray = Array.from(Array(totalNumberOfDays).keys());\n const today = this.getTodayDate();\n\n const calendarDays: CalendarDay[] = daysArray.map((number) => {\n const dateOfCalendarDay = add(startOfFirstWeek, { [TimeUnit.days]: number });\n\n const calendarDay: CalendarDay = {\n date: dateOfCalendarDay.getDate(),\n monthIndex: dateOfCalendarDay.getMonth(),\n year: dateOfCalendarDay.getFullYear(),\n ariaLabel: this.formatWithLocale(dateOfCalendarDay, this.formatDateLabel()),\n ...this.getCalendarDayMetadata(dateOfCalendarDay, today, monthStart),\n };\n if (calendarDay.isSelected) {\n this.selectedDay = calendarDay;\n }\n if (calendarDay.isFocussed) {\n this.focussedDay = calendarDay;\n }\n return calendarDay;\n });\n this._month = this.chunk(calendarDays, 7);\n }\n\n private getCalendarDayMetadata(date: Date, today: Date, monthStart: Date): CalendarDayMetadata {\n return {\n isToday: isSameDay(today, date),\n isPast: isBefore(date, today),\n isFuture: isAfter(date, today),\n isWeekend: isWeekend(date),\n isCurrentMonth: isSameMonth(date, monthStart),\n isSelectable: this.isSelectable(date, today),\n isFocusable: this.isWithinAllowedRange(date, today),\n isSelected: isSameDay(this.selectedDate, date),\n isFocussed: isSameDay(this.focussedDate, date),\n };\n }\n\n private isSelectable(date: Date, today: Date): boolean {\n if (this.alwaysEnableToday && isSameDay(today, date)) return true;\n\n if (!this.isWithinAllowedRange(date, today)) return false;\n if (this.isDisabledDate(date)) return false;\n if (!this.isEnabledDate(date)) return false;\n if (this.disableWeekends && isWeekend(date)) return false;\n\n return true;\n }\n\n private isWithinAllowedRange(date: Date, today: Date): boolean {\n if (this.disablePastDates && isBefore(date, today)) return false;\n if (this.disableFutureDates && isAfter(date, today)) return false;\n if (this.minDate && isBefore(date, this.minDate)) return false;\n if (this.maxDate && isAfter(date, this.maxDate)) return false;\n\n return true;\n }\n\n private chunk(array: any[], size: number) {\n const results = [];\n while (array.length) {\n results.push(array.splice(0, size));\n }\n return results;\n }\n\n private onSelectedDateChange(newDate: Date): void {\n if (this.selectedDay) {\n this.selectedDay.isSelected = false;\n }\n\n const newDay = this.getDay(newDate);\n if (newDay) {\n newDay.isSelected = true;\n this.selectedDay = newDay;\n }\n }\n\n _onDateSelected(newDay: CalendarDay) {\n if (!newDay.isSelectable) return;\n\n let newDate = new Date(newDay.year, newDay.monthIndex, newDay.date);\n\n if (this.timezone === 'UTC') {\n newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n const dateToEmit = newDate;\n\n if (this.hasDateChanged(newDate, this._selectedDate)) {\n this.setActiveMonth(newDate);\n this.onSelectedDateChange(newDate);\n this.selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\n }\n\n _changeMonth(index: number) {\n if (index > 0 && !this._canNavigateForward) return;\n if (index < 0 && !this._canNavigateBack) return;\n\n this.changeActiveView(index, TimeUnit.months);\n index > 0\n ? this.nextMonthClicked.emit(this.activeMonth)\n : this.previousMonthClicked.emit(this.activeMonth);\n }\n\n _changeYear(year: string) {\n const yearNumeric = Number(year);\n this.changeActiveView(yearNumeric - getYear(this.activeMonth), TimeUnit.years);\n this.yearSelect.emit(yearNumeric);\n }\n\n private changeActiveView(index: number, unit: TimeUnit) {\n if (index === 0) return;\n this.activeMonth = add(this.activeMonth, { [unit]: index });\n this.focussedDate = add(this.focussedDate, { [unit]: index });\n\n this.refreshActiveMonth();\n }\n\n get _canNavigateBack(): boolean {\n const today = this.getTodayDate();\n const reachedPastDatesLimit = this.disablePastDates && isSameMonth(this.activeMonth, today);\n\n const reachedOrExceededMinDate =\n this.minDate &&\n (isSameMonth(this.activeMonth, this.minDate) || isBefore(this.activeMonth, this.minDate));\n\n return !reachedPastDatesLimit && !reachedOrExceededMinDate;\n }\n\n get _canNavigateForward(): boolean {\n const today = this.getTodayDate();\n const reachedFutureDatesLimit = this.disableFutureDates && isSameMonth(this.activeMonth, today);\n\n const reachedOrExceededMaxDate =\n this.maxDate &&\n (isSameMonth(this.activeMonth, this.maxDate) || isAfter(this.activeMonth, this.maxDate));\n\n return !reachedFutureDatesLimit && !reachedOrExceededMaxDate;\n }\n\n private getDay(date: Date) {\n let foundDay: CalendarDay = null;\n if (date) {\n for (const week of this._month) {\n foundDay = week.find((day) => {\n return day.isCurrentMonth && day.date === date.getDate();\n });\n if (foundDay) {\n break;\n }\n }\n }\n return foundDay;\n }\n\n private subtractTimezoneOffset(date: Date): Date {\n const timezoneOffsetInMs = date.getTimezoneOffset() * 60 * 1000;\n return new Date(date.getTime() - timezoneOffsetInMs);\n }\n\n private getDateFromNavigableYear(navigableYear: number | Date): Date {\n if (navigableYear instanceof Date) return navigableYear;\n const today = this.todayDate || new Date();\n return new Date(today.getFullYear() + navigableYear, 0, 1);\n }\n\n private getYearsBetweenDates(startDate: Date, endDate: Date): string[] {\n // Ensure years are ordered correctly if parameters are switched:\n const [startYear, endYear] = [startDate.getFullYear(), endDate.getFullYear()].sort();\n const numberOfYears = endYear - startYear;\n return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());\n }\n\n private setFocussedDay(newDate: Date) {\n const newDay = this.getDay(newDate);\n if (!newDay) return;\n\n if (this.focussedDay) {\n this.focussedDay.isFocussed = false;\n }\n newDay.isFocussed = true;\n this.focussedDay = newDay;\n }\n\n private focusDate(newDate: Date | null) {\n if (!newDate) return;\n\n newDate = this.normalizeDate(newDate);\n\n if (this.timezone === 'UTC') {\n newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n const today = this.getTodayDate();\n if (!this.isWithinAllowedRange(newDate, today)) return;\n\n if (!this.hasDateChanged(newDate, this.focussedDate)) return;\n\n this.setActiveMonth(newDate);\n this.setFocussedDay(newDate);\n this.focussedDate = newDate;\n\n this.cdr.detectChanges(); //sync focussed class to template before setting focus\n const elementMarkedForFocus = this.elementRef.nativeElement.querySelector('.focussed');\n elementMarkedForFocus.focus();\n }\n\n _onDateKeydown(event: KeyboardEvent) {\n const { key, shiftKey } = event;\n let newDate;\n\n switch (key) {\n case 'ArrowUp':\n newDate = add(this.focussedDate, { days: -7 });\n break;\n case 'ArrowDown':\n newDate = add(this.focussedDate, { days: 7 });\n break;\n case 'ArrowRight':\n newDate = add(this.focussedDate, { days: 1 });\n break;\n case 'ArrowLeft':\n newDate = add(this.focussedDate, { days: -1 });\n break;\n case 'Home':\n newDate = startOfWeek(this.focussedDate, { locale: this.locale });\n break;\n case 'End':\n newDate = lastDayOfWeek(this.focussedDate, { locale: this.locale });\n break;\n case 'PageUp':\n newDate = shiftKey\n ? add(this.focussedDate, { years: -1 })\n : add(this.focussedDate, { months: -1 });\n break;\n case 'PageDown':\n newDate = shiftKey\n ? add(this.focussedDate, { years: 1 })\n : add(this.focussedDate, { months: 1 });\n break;\n default:\n return;\n }\n\n event.preventDefault();\n this.focusDate(newDate);\n }\n}\n","<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n kirby-button\n type=\"button\"\n class=\"no-margin\"\n [attr.aria-label]=\"translations.get('previousMonth')\"\n [attr.aria-disabled]=\"_canNavigateBack ? null : true\"\n [noDecoration]=\"true\"\n (click)=\"_changeMonth(-1)\"\n >\n <kirby-icon name=\"arrow-back\" aria-hidden=\"true\"></kirby-icon>\n </button>\n\n <div class=\"month-and-year\" [id]=\"_tableMonthId\" aria-live=\"polite\" aria-atomic=\"true\">\n <span class=\"month\">{{ activeMonthName }}</span>\n @if (!_hasYearNavigator) {\n <span class=\"year\">{{ activeYear }}</span>\n }\n </div>\n\n <button\n kirby-button\n type=\"button\"\n class=\"no-margin\"\n [attr.aria-label]=\"translations.get('nextMonth')\"\n [attr.aria-disabled]=\"_canNavigateForward ? null : true\"\n [noDecoration]=\"true\"\n (click)=\"_changeMonth(1)\"\n >\n <kirby-icon name=\"arrow-more\" aria-hidden=\"true\"></kirby-icon>\n </button>\n </div>\n @if (_hasYearNavigator) {\n <kirby-dropdown\n [selectedIndex]=\"navigatedYear\"\n [items]=\"navigableYears\"\n [attr.aria-label]=\"translations.get('selectYear')\"\n popout=\"left\"\n (change)=\"_changeYear($event)\"\n ></kirby-dropdown>\n }\n</div>\n\n<table [attr.aria-labelledby]=\"_tableMonthId\" role=\"grid\">\n <thead>\n <tr>\n @for (weekDay of _weekDays; track weekDay.fullName) {\n <th scope=\"col\">\n <span aria-hidden=\"true\">{{ weekDay.firstLetterCapitalized }}</span>\n <span class=\"kirby-visually-hidden\">{{ weekDay.fullName }}</span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (week of _month; track $index) {\n <tr>\n @for (day of week; track day.date + '-' + day.monthIndex + '-' + day.year) {\n <td [attr.aria-selected]=\"day.isSelected ? true : false\">\n <button\n kirby-button\n type=\"button\"\n (click)=\"_onDateSelected(day)\"\n (keydown)=\"_onDateKeydown($event)\"\n class=\"day\"\n [class.current-month]=\"day.isCurrentMonth\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.selectable]=\"day.isSelectable\"\n [class.selected]=\"day.isSelected\"\n [class.focussed]=\"day.isFocussed\"\n [class.past]=\"day.isPast\"\n [attr.aria-label]=\"day.ariaLabel\"\n [attr.aria-disabled]=\"day.isSelectable ? null : true\"\n [noDecoration]=\"true\"\n [disabled]=\"day.isFocusable ? null : true\"\n [tabIndex]=\"day.isFocussed ? 0 : -1\"\n >\n {{ day.date }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kirbydesign-designsystem-calendar.mjs","names":[],"sources":["../../calendar/src/calendar.component.ts","../../calendar/src/calendar.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {\n add,\n eachDayOfInterval,\n endOfWeek,\n format,\n getYear,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWeekend,\n lastDayOfWeek,\n Locale as LocaleDateFns,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\nimport { fromZonedTime, toZonedTime } from 'date-fns-tz';\nimport { da, de, enGB, enUS } from 'date-fns/locale';\n\nimport { capitalizeFirstLetter } from '@kirbydesign/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { DropdownComponent } from '@kirbydesign/designsystem/dropdown';\nimport { UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\n\nimport { TranslationService } from '@kirbydesign/designsystem/shared';\nimport { CalendarDay, CalendarDayMetadata } from './interfaces/calendar-day';\nimport { CalendarYearNavigatorConfig } from './interfaces/calendar-year-navigator-config';\n\nexport type Locale = LocaleDateFns;\n\ninterface WeekDay {\n firstLetterCapitalized: string;\n fullName: string;\n}\n\nenum TimeUnit {\n years = 'years',\n months = 'months',\n weeks = 'weeks',\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n seconds = 'seconds',\n milliseconds = 'milliseconds',\n}\n\n@Component({\n imports: [DropdownComponent, ButtonComponent, IconComponent],\n selector: 'kirby-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent implements OnInit, OnChanges {\n @Output() dateChange = new EventEmitter<Date>();\n @Output() dateSelect = new EventEmitter<Date>();\n @Output() yearSelect = new EventEmitter<number>();\n @Output() previousMonthClicked = new EventEmitter<Date>();\n @Output() nextMonthClicked = new EventEmitter<Date>();\n @Input() timezone: 'local' | 'UTC' = 'local';\n @Input() disableWeekends = false;\n @Input() disablePastDates = false;\n @Input() disableFutureDates = false;\n @Input() alwaysEnableToday = false;\n\n @Input() set locales(locales: { [key: string]: Locale }) {\n console.warn(\n `Supplying additional locales to the Kirby Calendar Component via an input property is deprecated and should not be used.\n A future update will allow injecting additional locales via a provider instead.`\n );\n }\n @Input() customLocales: { [key: string]: Locale } = {};\n /**\n * @deprecated This input is no longer needed. The year selection dropdown now always uses popover positioning.\n * This input will be removed in a future major version.\n */\n @Input() set usePopover(_value: boolean) {\n console.warn(\n `[Kirby Calendar] The 'usePopover' input is deprecated and no longer has any effect. \n The year selection dropdown now always uses popover positioning. This input will be removed in a future major version.`\n );\n }\n /**\n * Configuration for the year navigator.\n *\n * Internally, calendar component:\n * - bases yearNavigatorOptions.from and yearNavigatorOptions.to on todayDate if a number is provided\n * - prioritizes minDate and maxDate over yearNavigatorOptions.from and yearNavigatorOptions.to\n */\n @Input() yearNavigatorOptions: CalendarYearNavigatorConfig;\n\n _tableMonthId = UniqueIdGenerator.scopedTo('kirby-calendar-month').next();\n _month: CalendarDay[][];\n _weekDays: WeekDay[];\n private selectedDay: CalendarDay;\n private focussedDay: CalendarDay;\n // NOTE: Internally, all Dates\n // are normalized to point to local timezone midnight, regardless of the timezone\n // setting.\n private activeMonth: Date;\n private _selectedDate: Date;\n private _disabledDates: Date[] = [];\n private _enabledDates: Date[] = [];\n private _todayDate: Date;\n private _minDate: Date;\n private _maxDate: Date;\n private focussedDate: Date;\n private locale: Locale;\n private timeZoneName: string;\n private includedLocales = { da, de, enGB, enUS };\n\n get selectedDate(): Date {\n return this._selectedDate;\n }\n\n @Input() set selectedDate(valueLocalOrUTC: Date | null) {\n const value = this.normalizeDate(valueLocalOrUTC);\n\n if (valueLocalOrUTC) {\n this.setActiveMonth(value);\n }\n\n if (this.hasDateChanged(value, this._selectedDate)) {\n this.onSelectedDateChange(value);\n this.focusDate(value);\n this._selectedDate = value;\n }\n }\n\n get disabledDates(): Date[] {\n return this._disabledDates;\n }\n\n @Input() set disabledDates(value: Date[]) {\n this._disabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get enabledDates(): Date[] {\n return this._enabledDates;\n }\n\n @Input() set enabledDates(value: Date[]) {\n this._enabledDates = (value || []).map((date) => this.normalizeDate(date));\n }\n\n get todayDate(): Date {\n return this._todayDate;\n }\n\n @Input() set todayDate(value: Date) {\n this._todayDate = this.normalizeDate(value);\n }\n\n get minDate(): Date {\n return this._minDate;\n }\n\n @Input() set minDate(value: Date) {\n if (value && this.activeMonth && isBefore(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._minDate = this.normalizeDate(value);\n }\n\n get maxDate(): Date {\n return this._maxDate;\n }\n\n @Input() set maxDate(value: Date) {\n if (value && this.activeMonth && isAfter(this.activeMonth, value)) {\n this.setActiveMonth(value);\n }\n this._maxDate = this.normalizeDate(value);\n }\n\n get activeMonthName(): string {\n return capitalizeFirstLetter(this.formatWithLocale(this.activeMonth, 'MMMM'));\n }\n\n get activeYear(): string {\n return this.formatWithLocale(this.activeMonth, 'yyyy');\n }\n\n /**\n * Gets navigable years for year navigator based on yearNavigatorOptions.\n */\n get navigableYears(): string[] {\n const dateOfFirstNavigableYear =\n this.minDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.from);\n\n const dateOfLastNavigableYear =\n this.maxDate || this.getDateFromNavigableYear(this.yearNavigatorOptions.to);\n\n return this.getYearsBetweenDates(dateOfFirstNavigableYear, dateOfLastNavigableYear);\n }\n\n get navigatedYear(): number {\n return this.navigableYears.indexOf(this.activeYear);\n }\n\n @HostBinding('class.has-year-navigator')\n get _hasYearNavigator() {\n return !!this.yearNavigatorOptions;\n }\n\n private getTodayDate() {\n return startOfDay(this.todayDate ?? new Date());\n }\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n public translations: TranslationService\n ) {\n this.locale = this.mapLocale(locale);\n this.timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n private formatWithLocale(date: Date, formatString: string): string {\n return format(date, formatString, {\n locale: this.locale,\n });\n }\n\n private mapLocale(locale: string): Locale {\n if (locale === 'en') {\n locale = 'enGB'; // if english locale is provided without region, we default to GB\n }\n locale = locale.replace('-', '');\n const availableLocales = { ...this.includedLocales, ...this.locales, ...this.customLocales };\n return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist\n }\n\n private formatDateLabel(): string {\n const localeDateFormats = {\n da: 'd. MMMM',\n de: 'd. MMMM',\n 'en-GB': 'd MMMM',\n 'en-US': 'MMMM d',\n };\n\n const defaultDateFormat = localeDateFormats['en-US'];\n const dateFormat = localeDateFormats[this.locale.code] || defaultDateFormat;\n return dateFormat;\n }\n\n ngOnInit() {\n this.focussedDate = this.getTodayDate();\n this._weekDays = this.getWeekDays();\n this.setActiveMonth(this.selectedDate);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.activeMonth) return;\n if (\n changes.disableWeekends ||\n changes.disablePastDates ||\n changes.disableFutureDates ||\n changes.disabledDates ||\n changes.enabledDates ||\n changes.minDate ||\n changes.maxDate ||\n changes.todayDate ||\n changes.timezone\n ) {\n this.refreshActiveMonth();\n }\n }\n\n private setActiveMonth(date: Date = new Date()) {\n if (!this.activeMonth || !isSameMonth(this.activeMonth, date)) {\n this.activeMonth = startOfMonth(date);\n this.refreshActiveMonth();\n }\n }\n\n // For leniency, the component will accept any Date that points to either UTC midnight\n // or to local timezone midnight although we will internally normalize the representation\n // of all received dates to point to local timezone midnight.\n // We currently log no warnings if the date doesn't match the timezone setting or\n // if it doesn't point to midnight.\n private normalizeDate(dateLocalOrUTC: Date) {\n if (!dateLocalOrUTC) return;\n\n if (startOfDay(dateLocalOrUTC).getTime() === dateLocalOrUTC.getTime()) {\n // date is local timezone midnight\n return dateLocalOrUTC;\n }\n if (\n startOfDay(toZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() ===\n toZonedTime(dateLocalOrUTC, this.timeZoneName).getTime()\n ) {\n // the date is a UTC midnight; create the equivalent local timezone midnight date\n const normalizedUTCdate = toZonedTime(dateLocalOrUTC, this.timeZoneName);\n return normalizedUTCdate;\n }\n // does not point to midnight so we make it\n return startOfDay(dateLocalOrUTC);\n }\n\n private getWeekDays(): WeekDay[] {\n const now = new Date();\n const week = eachDayOfInterval({\n start: startOfWeek(now, { locale: this.locale }),\n end: endOfWeek(now, { locale: this.locale }),\n });\n\n const weekdayNarrowFormat = 'EEEEE';\n const weekdayWideFormat = 'EEEE';\n\n return week.map((date) => ({\n firstLetterCapitalized: this.formatWithLocale(date, weekdayNarrowFormat),\n fullName: this.formatWithLocale(date, weekdayWideFormat),\n }));\n }\n\n private hasDateChanged(newDate: Date, previousDate: Date): boolean {\n if (!newDate && !previousDate) {\n return false;\n }\n if (newDate instanceof Date && !previousDate) {\n return true;\n }\n return !isSameDay(newDate, previousDate);\n }\n\n private isDisabledDate(date: Date): boolean {\n return this.disabledDates.some((disabledDate) => isSameDay(disabledDate, date));\n }\n\n private isEnabledDate(date: Date): boolean {\n return (\n this._enabledDates.length === 0 ||\n this.enabledDates.some((enabledDate) => isSameDay(enabledDate, date))\n );\n }\n\n refreshActiveMonth() {\n if (!this.activeMonth) return;\n\n const monthStart = startOfMonth(this.activeMonth);\n const startOfFirstWeek = startOfWeek(monthStart, { locale: this.locale });\n\n const totalNumberOfDays = 42; // Always show 42 days (6 weeks) in calendar\n const daysArray = Array.from(Array(totalNumberOfDays).keys());\n const today = this.getTodayDate();\n\n const calendarDays: CalendarDay[] = daysArray.map((number) => {\n const dateOfCalendarDay = add(startOfFirstWeek, { [TimeUnit.days]: number });\n\n const calendarDay: CalendarDay = {\n date: dateOfCalendarDay.getDate(),\n monthIndex: dateOfCalendarDay.getMonth(),\n year: dateOfCalendarDay.getFullYear(),\n ariaLabel: this.formatWithLocale(dateOfCalendarDay, this.formatDateLabel()),\n ...this.getCalendarDayMetadata(dateOfCalendarDay, today, monthStart),\n };\n if (calendarDay.isSelected) {\n this.selectedDay = calendarDay;\n }\n if (calendarDay.isFocussed) {\n this.focussedDay = calendarDay;\n }\n return calendarDay;\n });\n this._month = this.chunk(calendarDays, 7);\n }\n\n private getCalendarDayMetadata(date: Date, today: Date, monthStart: Date): CalendarDayMetadata {\n return {\n isToday: isSameDay(today, date),\n isPast: isBefore(date, today),\n isFuture: isAfter(date, today),\n isWeekend: isWeekend(date),\n isCurrentMonth: isSameMonth(date, monthStart),\n isSelectable: this.isSelectable(date, today),\n isFocusable: this.isWithinAllowedRange(date, today),\n isSelected: isSameDay(this.selectedDate, date),\n isFocussed: isSameDay(this.focussedDate, date),\n };\n }\n\n private isSelectable(date: Date, today: Date): boolean {\n if (this.alwaysEnableToday && isSameDay(today, date)) return true;\n\n if (!this.isWithinAllowedRange(date, today)) return false;\n if (this.isDisabledDate(date)) return false;\n if (!this.isEnabledDate(date)) return false;\n if (this.disableWeekends && isWeekend(date)) return false;\n\n return true;\n }\n\n private isWithinAllowedRange(date: Date, today: Date): boolean {\n if (this.disablePastDates && isBefore(date, today)) return false;\n if (this.disableFutureDates && isAfter(date, today)) return false;\n if (this.minDate && isBefore(date, this.minDate)) return false;\n if (this.maxDate && isAfter(date, this.maxDate)) return false;\n\n return true;\n }\n\n private chunk(array: any[], size: number) {\n const results = [];\n while (array.length) {\n results.push(array.splice(0, size));\n }\n return results;\n }\n\n private onSelectedDateChange(newDate: Date): void {\n if (this.selectedDay) {\n this.selectedDay.isSelected = false;\n }\n\n const newDay = this.getDay(newDate);\n if (newDay) {\n newDay.isSelected = true;\n this.selectedDay = newDay;\n }\n }\n\n _onDateSelected(newDay: CalendarDay) {\n if (!newDay.isSelectable) return;\n\n let newDate = new Date(newDay.year, newDay.monthIndex, newDay.date);\n\n if (this.timezone === 'UTC') {\n newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n const dateToEmit = newDate;\n\n if (this.hasDateChanged(newDate, this._selectedDate)) {\n this.setActiveMonth(newDate);\n this.onSelectedDateChange(newDate);\n this.selectedDate = newDate;\n this.dateChange.emit(dateToEmit);\n }\n this.dateSelect.emit(dateToEmit);\n }\n\n _changeMonth(index: number) {\n if (index > 0 && !this._canNavigateForward) return;\n if (index < 0 && !this._canNavigateBack) return;\n\n this.changeActiveView(index, TimeUnit.months);\n index > 0\n ? this.nextMonthClicked.emit(this.activeMonth)\n : this.previousMonthClicked.emit(this.activeMonth);\n }\n\n _changeYear(year: string) {\n const yearNumeric = Number(year);\n this.changeActiveView(yearNumeric - getYear(this.activeMonth), TimeUnit.years);\n this.yearSelect.emit(yearNumeric);\n }\n\n private changeActiveView(index: number, unit: TimeUnit) {\n if (index === 0) return;\n this.activeMonth = add(this.activeMonth, { [unit]: index });\n this.focussedDate = add(this.focussedDate, { [unit]: index });\n\n this.refreshActiveMonth();\n }\n\n get _canNavigateBack(): boolean {\n const today = this.getTodayDate();\n const reachedPastDatesLimit = this.disablePastDates && isSameMonth(this.activeMonth, today);\n\n const reachedOrExceededMinDate =\n this.minDate &&\n (isSameMonth(this.activeMonth, this.minDate) || isBefore(this.activeMonth, this.minDate));\n\n return !reachedPastDatesLimit && !reachedOrExceededMinDate;\n }\n\n get _canNavigateForward(): boolean {\n const today = this.getTodayDate();\n const reachedFutureDatesLimit = this.disableFutureDates && isSameMonth(this.activeMonth, today);\n\n const reachedOrExceededMaxDate =\n this.maxDate &&\n (isSameMonth(this.activeMonth, this.maxDate) || isAfter(this.activeMonth, this.maxDate));\n\n return !reachedFutureDatesLimit && !reachedOrExceededMaxDate;\n }\n\n private getDay(date: Date) {\n let foundDay: CalendarDay = null;\n if (date) {\n for (const week of this._month) {\n foundDay = week.find((day) => {\n return day.isCurrentMonth && day.date === date.getDate();\n });\n if (foundDay) {\n break;\n }\n }\n }\n return foundDay;\n }\n\n private subtractTimezoneOffset(date: Date): Date {\n const timezoneOffsetInMs = date.getTimezoneOffset() * 60 * 1000;\n return new Date(date.getTime() - timezoneOffsetInMs);\n }\n\n private getDateFromNavigableYear(navigableYear: number | Date): Date {\n if (navigableYear instanceof Date) return navigableYear;\n const today = this.todayDate || new Date();\n return new Date(today.getFullYear() + navigableYear, 0, 1);\n }\n\n private getYearsBetweenDates(startDate: Date, endDate: Date): string[] {\n // Ensure years are ordered correctly if parameters are switched:\n const [startYear, endYear] = [startDate.getFullYear(), endDate.getFullYear()].sort();\n const numberOfYears = endYear - startYear;\n return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());\n }\n\n private setFocussedDay(newDate: Date) {\n const newDay = this.getDay(newDate);\n if (!newDay) return;\n\n if (this.focussedDay) {\n this.focussedDay.isFocussed = false;\n }\n newDay.isFocussed = true;\n this.focussedDay = newDay;\n }\n\n private focusDate(newDate: Date | null) {\n if (!newDate) return;\n\n newDate = this.normalizeDate(newDate);\n\n if (this.timezone === 'UTC') {\n newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName);\n }\n\n const today = this.getTodayDate();\n if (!this.isWithinAllowedRange(newDate, today)) return;\n\n if (!this.hasDateChanged(newDate, this.focussedDate)) return;\n\n this.setActiveMonth(newDate);\n this.setFocussedDay(newDate);\n this.focussedDate = newDate;\n\n this.cdr.detectChanges(); //sync focussed class to template before setting focus\n const elementMarkedForFocus = this.elementRef.nativeElement.querySelector('.focussed');\n elementMarkedForFocus.focus();\n }\n\n _onDateKeydown(event: KeyboardEvent) {\n const { key, shiftKey } = event;\n let newDate;\n\n switch (key) {\n case 'ArrowUp':\n newDate = add(this.focussedDate, { days: -7 });\n break;\n case 'ArrowDown':\n newDate = add(this.focussedDate, { days: 7 });\n break;\n case 'ArrowRight':\n newDate = add(this.focussedDate, { days: 1 });\n break;\n case 'ArrowLeft':\n newDate = add(this.focussedDate, { days: -1 });\n break;\n case 'Home':\n newDate = startOfWeek(this.focussedDate, { locale: this.locale });\n break;\n case 'End':\n newDate = lastDayOfWeek(this.focussedDate, { locale: this.locale });\n break;\n case 'PageUp':\n newDate = shiftKey\n ? add(this.focussedDate, { years: -1 })\n : add(this.focussedDate, { months: -1 });\n break;\n case 'PageDown':\n newDate = shiftKey\n ? add(this.focussedDate, { years: 1 })\n : add(this.focussedDate, { months: 1 });\n break;\n default:\n return;\n }\n\n event.preventDefault();\n this.focusDate(newDate);\n }\n}\n","<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n kirby-button\n type=\"button\"\n class=\"no-margin\"\n [attr.aria-label]=\"translations.get('previousMonth')\"\n [attr.aria-disabled]=\"_canNavigateBack ? null : true\"\n [noDecoration]=\"true\"\n (click)=\"_changeMonth(-1)\"\n >\n <kirby-icon name=\"arrow-back\" aria-hidden=\"true\"></kirby-icon>\n </button>\n\n <div class=\"month-and-year\" [id]=\"_tableMonthId\" aria-live=\"polite\" aria-atomic=\"true\">\n <span class=\"month\">{{ activeMonthName }}</span>\n @if (!_hasYearNavigator) {\n <span class=\"year\">{{ activeYear }}</span>\n }\n </div>\n\n <button\n kirby-button\n type=\"button\"\n class=\"no-margin\"\n [attr.aria-label]=\"translations.get('nextMonth')\"\n [attr.aria-disabled]=\"_canNavigateForward ? null : true\"\n [noDecoration]=\"true\"\n (click)=\"_changeMonth(1)\"\n >\n <kirby-icon name=\"arrow-more\" aria-hidden=\"true\"></kirby-icon>\n </button>\n </div>\n @if (_hasYearNavigator) {\n <kirby-dropdown\n [selectedIndex]=\"navigatedYear\"\n [items]=\"navigableYears\"\n [attr.aria-label]=\"translations.get('selectYear')\"\n popout=\"left\"\n (change)=\"_changeYear($event)\"\n ></kirby-dropdown>\n }\n</div>\n\n<table [attr.aria-labelledby]=\"_tableMonthId\" role=\"grid\">\n <thead>\n <tr>\n @for (weekDay of _weekDays; track weekDay.fullName) {\n <th scope=\"col\">\n <span aria-hidden=\"true\">{{ weekDay.firstLetterCapitalized }}</span>\n <span class=\"kirby-visually-hidden\">{{ weekDay.fullName }}</span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (week of _month; track $index) {\n <tr>\n @for (day of week; track day.date + '-' + day.monthIndex + '-' + day.year) {\n <td [attr.aria-selected]=\"day.isSelected ? true : false\">\n <button\n kirby-button\n type=\"button\"\n (click)=\"_onDateSelected(day)\"\n (keydown)=\"_onDateKeydown($event)\"\n class=\"day\"\n [class.current-month]=\"day.isCurrentMonth\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.selectable]=\"day.isSelectable\"\n [class.selected]=\"day.isSelected\"\n [class.focussed]=\"day.isFocussed\"\n [class.past]=\"day.isPast\"\n [attr.aria-label]=\"day.ariaLabel\"\n [attr.aria-disabled]=\"day.isSelectable ? null : true\"\n [noDecoration]=\"!day.isSelected\"\n [disabled]=\"day.isFocusable ? null : true\"\n [tabIndex]=\"day.isFocussed ? 0 : -1\"\n >\n {{ day.date }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n"],"mappings":"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"}
|