@spicainternational/ngx-sds-components 8.7.2 → 8.7.4
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/esm2022/src/lib/date-picker/date-picker.component.mjs +5 -4
- package/esm2022/src/lib/segmented-control/segmented-control.component.mjs +3 -3
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +4 -3
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-date-picker.mjs","sources":["../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.model.ts","../../../projects/ngx-sds-components/src/lib/date-picker/sds-date-picker.service.ts","../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.component.ts","../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.component.html","../../../projects/ngx-sds-components/src/lib/date-picker/spicainternational-ngx-sds-components-src-lib-date-picker.ts"],"sourcesContent":["export class DateRangeTranslations {\n custom: string = '';\n}\n\nexport class PeriodPickerDateRangeDefinition {\n name: string = '';\n type: 'dynamic' | 'fixed' = 'fixed';\n\n dynamicDateRangeDefinition?: PeriodPickerDateRangeDynamicDefinition;\n\n dateFrom?: Date;\n dateTo?: Date;\n\n constructor(\n name: string,\n type: 'dynamic' | 'fixed' = 'fixed',\n dynamicDateRangeDefinition?: PeriodPickerDateRangeDynamicDefinition,\n dateFrom?: Date,\n dateTo?: Date\n ) {\n this.name = name;\n this.type = type;\n this.dynamicDateRangeDefinition = dynamicDateRangeDefinition;\n this.dateFrom = dateFrom;\n this.dateTo = dateTo;\n }\n}\n\nexport class PeriodPickerDateRangeDynamicDefinition {\n dimension: 'd' | 'w' | 'm' | 'y';\n modifier: number;\n\n constructor(dimension: 'd' | 'w' | 'm' | 'y', modifier: number) {\n this.dimension = dimension;\n this.modifier = modifier;\n }\n}\n\nexport class PeriodPickerDateRange {\n name: string;\n dateFrom?: Date;\n dateTo?: Date;\n\n constructor(name: string, dateFrom?: Date, dateTo?: Date) {\n this.name = name;\n this.dateFrom = dateFrom;\n this.dateTo = dateTo;\n }\n}\n\nexport class PeriodPickerDynamicDateRangeDefinitionGenerator {\n\n static generateMonthlyRanges(currentMonthText: string, previousMonthText: string, nextMonthText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentMonthText, 'dynamic', {dimension: 'm', modifier: 0}))\n }\n\n if (nextMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextMonthText, 'dynamic', {dimension: 'm', modifier: 1}))\n }\n\n if (previousMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousMonthText, 'dynamic', {dimension: 'm', modifier: -1}))\n }\n\n return ranges;\n }\n\n static generateWeeklyRanges(currentWeekText: string, previousWeekText: string, nextWeekText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentWeekText, 'dynamic', {dimension: 'w', modifier: 0}))\n }\n\n if (nextWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextWeekText, 'dynamic', {dimension: 'w', modifier: 1}))\n }\n\n if (previousWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousWeekText, 'dynamic', {dimension: 'w', modifier: -1}))\n }\n \n return ranges;\n } \n\n static generateDailyRanges(currentDayText: string, previousDayText: string, nextDayText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentDayText, 'dynamic', {dimension: 'd', modifier: 0}))\n }\n\n if (nextDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextDayText, 'dynamic', {dimension: 'd', modifier: 1}))\n }\n\n if (previousDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousDayText, 'dynamic', {dimension: 'd', modifier: -1}))\n }\n \n return ranges;\n } \n\n}\n\nexport interface PeriodPickerTranslations {\n cancel: string;\n apply: string;\n custom: string;\n\n printLabel?: string;\n\n presets?: string;\n}\n","import { Injectable } from '@angular/core';\nimport {\n add,\n addDays,\n addMonths,\n addWeeks,\n addYears,\n differenceInDays,\n differenceInMonths,\n endOfMonth,\n endOfWeek,\n endOfYear,\n isSameDay,\n isSameMonth,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns';\nimport {\n PeriodPickerDateRange,\n PeriodPickerDateRangeDefinition,\n} from './date-picker.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SdsDatePickerService {\n constructor() {}\n\n public getRange(\n currentStartDate: Date,\n currentEndDate: Date,\n direction: 'previous' | 'next'\n ): [Date, Date] {\n const modifier = direction == 'next' ? 1 : -1;\n\n let dateStart, dateEnd;\n if (\n isSameDay(currentStartDate, startOfMonth(currentStartDate)) &&\n isSameDay(currentEndDate, endOfMonth(currentEndDate)) &&\n isSameMonth(currentStartDate, currentEndDate)\n ) {\n // Month range.\n dateStart = add(currentStartDate, { months: modifier });\n dateEnd = startOfDay(\n endOfMonth(add(currentEndDate, { months: modifier }))\n );\n } else {\n // Custom range in months\n if (\n isSameDay(currentStartDate, startOfMonth(currentStartDate)) &&\n isSameDay(currentEndDate, endOfMonth(currentEndDate))\n ) {\n const monthsDiff =\n differenceInMonths(currentEndDate, currentStartDate) + 1;\n dateStart = add(currentStartDate, {\n months: monthsDiff * modifier,\n });\n dateEnd = startOfDay(\n endOfMonth(\n add(currentEndDate, { months: monthsDiff * modifier })\n )\n );\n } else {\n // Custom range in days\n const dayDiff =\n differenceInDays(currentEndDate, currentStartDate) + 1;\n dateStart = add(currentStartDate, { days: dayDiff * modifier });\n dateEnd = add(currentEndDate, { days: dayDiff * modifier });\n }\n }\n return [dateStart, dateEnd];\n }\n\n public getPredefinedDateRanges(\n dateRangeDefinitions: Array<PeriodPickerDateRangeDefinition>,\n referenceDay: Date,\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n ): Array<PeriodPickerDateRange> {\n let predefinedDateRanges = new Array<PeriodPickerDateRange>();\n referenceDay = startOfDay(referenceDay);\n\n dateRangeDefinitions.forEach((definition) => {\n if (definition.type == 'fixed') {\n if (\n definition.dateFrom !== undefined &&\n definition.dateTo !== undefined\n ) {\n const fixedDateRange = new PeriodPickerDateRange(\n definition.name,\n definition.dateFrom,\n definition.dateTo\n );\n predefinedDateRanges.push(fixedDateRange);\n }\n } else if (definition.type == 'dynamic') {\n const dateRangeDefinition =\n definition.dynamicDateRangeDefinition;\n\n if (dateRangeDefinition) {\n let dateFrom: Date | null = null;\n let dateTo: Date | null = null;\n\n switch (dateRangeDefinition.dimension) {\n case 'd':\n dateFrom = addDays(\n referenceDay,\n dateRangeDefinition.modifier\n );\n dateTo = addDays(\n referenceDay,\n dateRangeDefinition.modifier\n );\n break;\n case 'w':\n dateFrom = startOfWeek(\n addWeeks(\n referenceDay,\n dateRangeDefinition.modifier\n ),\n { weekStartsOn: firstDayOfWeek }\n );\n dateTo = endOfWeek(\n addWeeks(\n referenceDay,\n dateRangeDefinition.modifier\n ),\n { weekStartsOn: firstDayOfWeek }\n );\n break;\n\n case 'm':\n dateFrom = startOfMonth(\n addMonths(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n dateTo = endOfMonth(\n addMonths(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n break;\n\n case 'y':\n dateFrom = startOfYear(\n addYears(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n dateTo = endOfYear(\n addYears(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n break;\n default:\n break;\n }\n if (dateFrom != undefined && dateTo != undefined) {\n const dynamicRangeDefinition =\n new PeriodPickerDateRange(\n definition.name,\n dateFrom,\n startOfDay(dateTo)\n );\n predefinedDateRanges.push(dynamicRangeDefinition);\n }\n }\n }\n });\n return predefinedDateRanges;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { DxCalendarComponent } from 'devextreme-angular/ui/calendar';\nimport { DxDateBoxComponent } from 'devextreme-angular/ui/date-box';\nimport { locale } from \"devextreme/localization\";\n\nimport {\n isSameDay,\n isSameYear,\n isSameMonth,\n startOfDay,\n startOfMonth,\n endOfMonth,\n isAfter,\n isBefore,\n add,\n} from 'date-fns';\n\nimport {\n faAngleLeft,\n faAngleRight,\n faCalendar,\n faLock\n} from '@fortawesome/pro-regular-svg-icons';\n\nimport { faArrowRight } from '@fortawesome/pro-light-svg-icons';\n\nimport {\n PeriodPickerDateRange,\n PeriodPickerDateRangeDefinition,\n PeriodPickerTranslations,\n} from './date-picker.model';\nimport { SdsDatePickerService } from './sds-date-picker.service';\nimport { DxDateBoxModule, DxCalendarModule } from 'devextreme-angular';\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\nimport { DxoAnimationModule, DxoShowModule, DxoHideModule } from 'devextreme-angular/ui/nested';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { DxTemplateModule } from 'devextreme-angular/core';\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\nimport { NgIf, NgFor } from '@angular/common';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { SdsDateComparePipe } from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\n\n// import { faLock } from '@fortawesome/pro-solid-svg-icons';\n\n@Component({\n selector: 'sds-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n\n SdsDateComparePipe,\n\n CdkTrapFocus,\n FontAwesomeModule,\n\n DxPopoverModule,\n DxTemplateModule,\n DxoAnimationModule,\n DxoShowModule,\n DxoHideModule,\n DxScrollViewModule,\n DxDateBoxModule,\n DxCalendarModule,\n ],\n})\nexport class SdsDatePickerComponent implements OnInit, OnChanges {\n @ContentChild('display') displayContent: any = undefined;\n\n // public interface\n @Input() selectionKind: 'period' | 'single' = 'period';\n\n @Input() dateRangeDefinitions: Array<PeriodPickerDateRangeDefinition> = [];\n\n // single date selector\n @Input() selectedDate: Date = new Date();\n @Output() public selectedDateChange = new EventEmitter();\n\n // period selector\n @Input() selectedDateStart: string | number | Date;\n @Output() selectedDateStartChange = new EventEmitter();\n\n // format function for displaying date when single date is selected\n @Input() singleDayFormatFn: ((date: Date) => string ) | undefined = undefined;\n // format function for displaying each date when date range is selected\n @Input() dateRangeFormatFn: ((date: Date) => string ) | undefined = undefined;\n\n @Input() selectedDateEnd: string | number | Date;\n @Output() selectedDateEndChange = new EventEmitter();\n @Output() periodChange = new EventEmitter();\n /**\n * Emits when the user selects a predefined date range from the dropdown.\n * Does not emit when the 'Custom' option is selected.\n */\n @Output() predefinedRangeSelected = new EventEmitter<PeriodPickerDateRange>();\n /**\n * Emits whenever the calendar popover visibility changes.\n * Emits `true` when the popover opens and `false` when it closes.\n */\n @Output() calendarVisibleChange = new EventEmitter<boolean>();\n\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n @Input() locales?: string | Array<string>;\n @Input() disabled: boolean = false;\n @Input() validationError: string = '';\n @Input() isValid: boolean = true;\n\n @Input() disabledDates: Date[] = [];\n\n @Input() public applyText?: string = 'close';\n @Input() public cancelText?: string = 'close';\n\n @Input() public translations: PeriodPickerTranslations;\n\n @Input() public firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6 = 1;\n\n @Input() public dateRangeDefinitionsWidth: string = '11rem';\n @Input() public showPreviousAndNextButtons: boolean = true;\n\n @Input() public width: string = '30rem';\n\n @Input() public dropdownWrapperClass: string = '';\n @Input() public dropdownWrapperId: string = '';\n\n @Input() public getPreviousDateCallback: (currentDate: string | number | Date) => string | number | Date = this.getPreviousDay;\n @Input() public getNextDateCallback: (currentDate: string | number | Date) => string | number | Date = this.getNextDay;\n\n @Input() public getPreviousRangeCallback: (currentStartDate: string | number | Date, currentEndDate: string | number | Date) => [string | number | Date, string | number | Date] = this.getPreviousRange;\n @Input() public getNextRangeCallback: (currentStartDate: string | number | Date, currentEndDate: string | number | Date) => [string | number | Date, string | number | Date] = this.getNextRange;\n\n @Input() public useCustomDisplayContent = false;\n\n @Input() public displayPredefinedDateRangeName = false\n\n @Input() public style: 'classic' | 'compact' = 'classic';\n @Input() public compactStyleDisplay: 'date' | 'predefinedRange' | 'both' = 'predefinedRange';\n\n @Input() public dateInputDisplayFormat: string = 'shortDate';\n\n // #region Aria inputs\n /**\n * @description\n * Component aria-label. Defaults to 'Date picker'\n */\n @Input() public componentAriaLabel = 'Date picker'\n\n /**\n * @description\n * Predefined date range definitions dropdown button aria-label. Defaults to 'Open predefined date ranges pane'\n */\n @Input() public openDateRangeDefinitionsAriaLabel = 'Open predefined date ranges pane'\n\n /**\n * @description\n * Next period button aria-label. Default to 'Next period'\n */\n @Input() public nextPeriodAriaLabel = 'Next period'\n\n /**\n * @description\n * Previous period button aria-label. Defaults to 'Previous period'\n */\n @Input() public previousPeriodAriaLabel = 'Previous period'\n\n // #endregion ARIA inputs\n\n @Input() public lockBeforeDate?: Date;\n @Input() public lockBeforeDateHint?: string;\n\n @Input() public previousButtonDisabled: boolean = false;\n @Input() public nextButtonDisabled: boolean = false;\n\n\n // public properties\n previousPeriodIcon = faAngleLeft;\n nextPeriodIcon = faAngleRight;\n calendarIcon = faCalendar;\n toIcon = faArrowRight;\n lockIcon = faLock;\n\n predefinedDateRanges: Array<PeriodPickerDateRange> = [];\n predefinedDateRangesGeneratedDate: Date | undefined = undefined;\n selectedDateRange: PeriodPickerDateRange;\n dateRanges: Array<PeriodPickerDateRange> = [];\n\n selectedDateRangeName: string = '';\n selectedDateRangeTextSegment1: string = '';\n selectedDateRangeTextSegment2: string = '';\n\n minDateDefault: Date;\n maxDateDefault: Date;\n\n selectedDateCalendar: string | number | Date = new Date();\n selectedDateInternal: string | number | Date = new Date();\n\n dateStartOld: string | number | Date = '';\n dateStart: string | number | Date = '';\n dateEndOld: string | number | Date = '';\n dateEnd: string | number | Date = '';\n\n private _showDatepicker: boolean = false;\n public get showDatepicker(): boolean {\n return this._showDatepicker;\n }\n public set showDatepicker(value: boolean) {\n this._showDatepicker = value;\n this.calendarVisibleChange.emit(value);\n }\n\n showPredefinedOptionsSelector: boolean = false;\n\n hidingConfirmedDate: boolean = false;\n\n isSettingNotPreprocessedDate: boolean = false;\n isSelectedPredefinedPeriod: boolean = false;\n selectedDateFocus: boolean = true;\n\n protected elementUUID = 'sds-as-' + crypto.randomUUID();\n\n // private fields\n private customDateRange: PeriodPickerDateRange;\n private initCalendarValue: boolean = true;\n\n @ViewChild('singleDatePickerBox', { static: false })\n private singleDatePickerBox: DxDateBoxComponent | undefined = undefined;\n @ViewChild('selectedDateStartBox', { static: false })\n private selectedDateStartBox: DxDateBoxComponent | undefined = undefined;\n @ViewChild('selectedDateEndBox', { static: false })\n private selectedDateEndBox: DxDateBoxComponent | undefined = undefined;\n\n @ViewChild('calendar', { static: false }) private calendar:\n | DxCalendarComponent\n | undefined = undefined;\n\n @ViewChild('selectedDateRangeButton', { static: true})\n private _selectedDateRangeButton: ElementRef | undefined = undefined;\n\n // public methods\n constructor(\n private changeRef: ChangeDetectorRef,\n private datePickerService: SdsDatePickerService\n ) {\n this.dateRangeDefinitions = [];\n\n this.minDateDefault = new Date(1900, 1, 1);\n this.maxDateDefault = add(startOfDay(new Date()), { years: 50 });\n\n this.showDatepicker = false;\n\n this.translations = {\n cancel: 'Cancel',\n apply: 'Apply',\n custom: 'Custom',\n presets: 'Presets',\n };\n\n this.customDateRange = new PeriodPickerDateRange(\n this.translations.custom,\n undefined,\n undefined\n );\n\n this.selectedDateRange = this.customDateRange;\n\n this.selectedDateInternal = startOfDay(new Date());\n\n this.selectedDateStart = startOfMonth(new Date());\n this.selectedDateEnd = startOfDay(endOfMonth(new Date()));\n\n this.setSelectedDateRangeText();\n\n }\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dateRangeDefinitions']) {\n this.generateDateRanges(true);\n }\n\n if (changes['selectionKind']){\n\n if (this.selectionKind == 'single') {\n const date = new Date(this.selectedDateInternal);\n\n this.matchDateRange(date, date);\n this.setDateRangeText(date, date);\n } else {\n const date1 = new Date(this.selectedDateStart);\n const date2 = new Date(this.selectedDateEnd);\n\n this.matchDateRange(date1, date2);\n this.setDateRangeText(date1, date2);\n }\n\n }\n\n if (changes['translations']) {\n this.updateCustomText();\n }\n\n if (changes['locales']) {\n this.handleLocalesChange();\n }\n\n if (changes['selectedDateStart'] || changes['selectedDateEnd']) {\n this.dateStartOld = this.selectedDateStart;\n this.dateEndOld = this.selectedDateEnd;\n }\n\n if (changes['selectedDate']) {\n const value = new Date(changes['selectedDate'].currentValue);\n\n this.selectedDateInternal = startOfDay(value);\n\n if (this.selectionKind == 'single') {\n this.dateStart = this.selectedDateInternal;\n this.dateEnd = this.selectedDateInternal;\n\n this.matchDateRange(this.selectedDateInternal, this.selectedDateInternal);\n this.setDateRangeText(this.selectedDateInternal, this.selectedDateInternal);\n }\n this.changeRef.detectChanges();\n }\n\n if (changes['selectedDateStart']) {\n const value = changes['selectedDateStart'].currentValue;\n const selectedValue = value instanceof Date ? value : new Date();\n if (this.selectionKind == 'period') {\n if (this.isSettingNotPreprocessedDate && this.showDatepicker) {\n this.dateStart = selectedValue;\n this.selectedDateInternal = selectedValue;\n this.isSettingNotPreprocessedDate = false;\n } else if (\n !this.isSelectedPredefinedPeriod &&\n this.showDatepicker\n ) {\n if (this.selectedDateStartFocus) {\n this.dateStart = selectedValue;\n this.selectedDateInternal = selectedValue;\n if (\n this.dateEnd instanceof Date &&\n (isSameDay(selectedValue, this.dateEnd) ||\n isAfter(selectedValue, this.dateEnd))\n ) {\n this.dateEnd = selectedValue;\n }\n }\n } else {\n this.dateStart = selectedValue;\n this.selectedDateFocus = false;\n }\n\n this.calendar?.instance?.repaint();\n this.removeDxDefaultCalendarFocus();\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n }\n this.changeRef.detectChanges();\n }\n\n if (changes['selectedDateEnd']) {\n const value = changes['selectedDateEnd'].currentValue;\n const selectedValue = value instanceof Date ? value : new Date();\n if (this.selectionKind == 'period') {\n if (!this.isSelectedPredefinedPeriod) {\n if (this.selectedDateEndFocus) {\n this.dateEnd = selectedValue;\n this.selectedDateInternal = selectedValue;\n\n if (\n this.dateStart instanceof Date &&\n (isSameDay(selectedValue, this.dateStart) ||\n isAfter(this.dateStart, selectedValue))\n ) {\n this.dateStart = selectedValue;\n }\n }\n } else {\n this.dateEnd = selectedValue;\n this.selectedDateInternal = selectedValue;\n }\n\n this.removeDxDefaultCalendarFocus();\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n }\n }\n\n if (changes['firstDayOfWeek']) {\n this.generateDateRanges(true);\n }\n }\n\n\n public randomIdReference: number = Math.floor(\n Math.random() * Number.MAX_SAFE_INTEGER\n );\n\n public setDateRangeDefinitions(definitions: Array<PeriodPickerDateRangeDefinition>): void {\n this.dateRangeDefinitions = definitions;\n this.generateDateRanges(true);\n }\n\n public setTranslations(translations: PeriodPickerTranslations): void {\n this.translations = translations;\n this.updateCustomText();\n }\n\n public setLocales(locales: string | Array<string>): void {\n this.locales = locales;\n this.handleLocalesChange();\n }\n\n public get selectedDateStartFocus(): boolean {\n return this.selectedDateFocus;\n }\n public get selectedDateEndFocus(): boolean {\n return !this.selectedDateFocus;\n }\n\n public get isMinimumLimit() {\n if (\n this.minDate instanceof Date &&\n this.selectedDateInternal instanceof Date\n ) {\n return (\n isSameDay(this.selectedDateInternal, this.minDate) ||\n isBefore(this.selectedDateInternal, this.minDate)\n );\n }\n return false;\n }\n\n public get isMaximumLimit() {\n if (\n this.maxDate instanceof Date &&\n this.selectedDateInternal instanceof Date\n ) {\n return (\n isSameDay(this.selectedDateInternal, this.maxDate) ||\n isAfter(this.selectedDateInternal, this.maxDate)\n );\n }\n return false;\n }\n\n public onDateChange(event: any) {\n let selectedDateFromEvent = new Date(event.value);\n\n if (this.selectionKind == 'period') {\n const interactiveChange = event.event;\n\n if (interactiveChange) {\n if (this.selectedDateStartFocus) {\n this.handleStartDateChange(selectedDateFromEvent);\n } else if (this.selectedDateEndFocus) {\n this.handleEndDateChange(selectedDateFromEvent);\n }\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n } else if (this.selectionKind == 'single') {\n this.showDatepicker = false;\n this.selectedDateInternal = selectedDateFromEvent;\n }\n }\n\n public handleStartDateChange(newDate: Date) {\n this.selectedDateStart = newDate;\n this.selectedDateCalendar = newDate;\n\n if (!this.initCalendarValue) {\n this.selectedDateFocus = false;\n\n if (isAfter(newDate, this.selectedDateEnd as Date)) {\n this.selectedDateEnd = newDate;\n } else {\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n }\n\n public handleEndDateChange(newDate: Date) {\n this.selectedDateEnd = newDate;\n this.selectedDateCalendar = newDate;\n\n if (\n // selected date is before start date -> set start date\n isBefore(newDate, this.selectedDateStart as Date)\n ) {\n this.selectedDateFocus = true;\n this.selectedDateStart = newDate;\n this.selectedDateFocus = false;\n }\n }\n\n public onStartDateChange(event: any) {\n this.handleStartDateChange(event.value);\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n\n public onEndDateChange(event: any) {\n this.handleEndDateChange(event.value);\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n\n public onRangeKeyReleased(event: KeyboardEvent, range: PeriodPickerDateRange) {\n if (event.key === 'Enter') {\n this.changDateRange(range);\n }\n }\n\n public onStartDateFocus() {\n this.initCalendarValue = true;\n this.selectedDateFocus = true;\n\n if (this.selectedDateStart) {\n this.selectedDateInternal = new Date(this.selectedDateStart);\n this.selectedDateCalendar = new Date(this.selectedDateStart);\n }\n\n setTimeout(() => {\n this.initCalendarValue = false;\n });\n }\n\n public onEndDateFocus() {\n this.selectedDateFocus = false;\n\n if (this.selectedDateEnd) {\n this.selectedDateInternal = new Date(this.selectedDateEnd);\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n\n public applyPeriodPicker() {\n this.hidingConfirmedDate = true;\n this.showDatepicker = false;\n }\n\n public onShowingCalendarPopover(): void {\n this.hidingConfirmedDate = false;\n\n if (this.selectionKind == 'single') {\n setTimeout(() => {\n this.singleDatePickerBox?.instance.focus();\n });\n } else {\n this.dateStartOld = this.selectedDateStart;\n this.dateEndOld = this.selectedDateEnd;\n this.isSettingNotPreprocessedDate = true;\n setTimeout(() => {\n this.selectedDateStartBox?.instance.focus();\n this.onStartDateFocus();\n });\n }\n\n }\n\n public closeDatepickerPopup(emitChange = true) {\n // if (this.showDatepicker) {\n // this.showDatepicker = false;\n if (this.selectionKind == 'single') {\n this.setSelectedDate(\n this.selectedDateInternal,\n this.selectedDateInternal,\n emitChange\n );\n } else {\n if (this.hidingConfirmedDate) {\n this.setSelectedDate(this.selectedDateStart, this.selectedDateEnd, true);\n }\n else {\n // this.setSelectedDate(this.dateStartOld, this.dateEndOld, true);\n this.setSelectedDate(this.dateStartOld, this.dateEndOld, false);\n }\n // this.hidingConfirmedDate = false;\n }\n\n if (this._selectedDateRangeButton){\n this._selectedDateRangeButton.nativeElement.focus({focusVisible: false});\n }\n // }\n }\n\n public onHiddenCalendarPopover(): void {\n this.closeDatepickerPopup()\n }\n\n public setSelectedDate(\n dateStart: string | number | Date,\n dateEnd: string | number | Date,\n emitChange = true\n ) {\n this.selectedDateStart = dateStart;\n this.selectedDateEnd = dateEnd;\n\n this.selectedDateInternal = this.selectionKind === 'single' ? dateStart : dateEnd;\n\n this.isSelectedPredefinedPeriod = false;\n\n if (emitChange) {\n if (this.selectionKind == 'single') {\n this.selectedDate = new Date(this.selectedDateInternal);\n this.selectedDateChange.emit(this.selectedDateInternal);\n } else {\n const dateStartNew = new Date(this.selectedDateStart);\n const dateEndNew = new Date(this.selectedDateEnd);\n\n const startDateChanged =\n (this.dateStartOld instanceof Date && !isSameDay(this.dateStartOld, dateStartNew)) ||\n (typeof this.dateStartOld === 'string' && this.dateStartOld === '');\n const endDateChanged =\n (this.dateEndOld instanceof Date && !isSameDay(this.dateEndOld, dateEndNew)) ||\n (typeof this.dateEndOld === 'string' && this.dateEndOld === '');\n\n if (startDateChanged) {\n this.dateStartOld = new Date(this.selectedDateStart);\n this.selectedDateStartChange.emit(this.selectedDateStart);\n }\n\n if (endDateChanged) {\n this.dateEndOld = new Date(this.selectedDateEnd);\n this.selectedDateEndChange.emit(this.selectedDateEnd);\n }\n\n if (startDateChanged || endDateChanged) {\n this.periodChange.emit([\n this.selectedDateStart,\n this.selectedDateEnd,\n ]);\n }\n }\n\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n\n }\n this.changeRef.detectChanges();\n }\n\n public goToNextDate() {\n if (this.selectionKind == 'single') {\n const newDate = this.getNextDateCallback(this.selectedDateInternal);\n this.selectedDateInternal = new Date(newDate);\n this.setSelectedDate(newDate, newDate);\n\n } else {\n if (!(this.selectedDateStart instanceof Date) || !(this.selectedDateEnd instanceof Date)) {\n return;\n }\n\n const range = this.getNextRangeCallback(\n this.selectedDateStart,\n this.selectedDateEnd\n );\n this.setSelectedDate(range[0], range[1]);\n }\n }\n\n public goToPreviousDate() {\n if (this.selectionKind == 'single') {\n const newDate = this.getPreviousDateCallback(this.selectedDateInternal);\n this.selectedDateInternal = new Date(newDate);\n this.setSelectedDate(newDate, newDate);\n } else {\n if (!(this.selectedDateStart instanceof Date) || !(this.selectedDateEnd instanceof Date)) {\n return;\n }\n\n const range = this.getPreviousRangeCallback(\n this.selectedDateStart,\n this.selectedDateEnd\n );\n this.setSelectedDate(range[0], range[1]);\n }\n }\n\n // public setNextPreviousDay(setNext: any) {\n // this.isSelectedPredefinedPeriod = true;\n // let newDate = setNext\n // ? add(this.selectedDateInternal as Date, { days: 1 })\n // : add(this.selectedDateInternal as Date, { days: -1 });\n\n // this.selectedDateInternal = new Date(newDate);\n // this.setSelectedDate(newDate, newDate);\n // }\n\n public getNextDay(currentDate: string | number | Date): string | number | Date {\n this.isSelectedPredefinedPeriod = true;\n return add(this.selectedDateInternal as Date, { days: 1 });\n }\n\n public getPreviousDay(currentDate: string | number | Date): string | number | Date {\n this.isSelectedPredefinedPeriod = true;\n return add(this.selectedDateInternal as Date, { days: -1 });\n }\n\n\n public getNextRange(currentStartDate: string | number | Date, currentEndDate: string | number | Date): [string | number | Date, string | number | Date] {\n this.isSelectedPredefinedPeriod = true;\n return this.datePickerService.getRange(\n new Date(currentStartDate),\n new Date(currentEndDate),\n 'next'\n );\n }\n\n public getPreviousRange(currentStartDate: string | number | Date, currentEndDate: string | number | Date): [string | number | Date, string | number | Date] {\n this.isSelectedPredefinedPeriod = true;\n return this.datePickerService.getRange(\n new Date(currentStartDate),\n new Date(currentEndDate),\n 'previous'\n );\n }\n\n public setNextPreviousRange(setNext: boolean) {\n this.isSelectedPredefinedPeriod = true;\n if (\n !(this.selectedDateStart instanceof Date) ||\n !(this.selectedDateEnd instanceof Date)\n ) {\n return;\n }\n\n const range = this.datePickerService.getRange(\n this.selectedDateStart,\n this.selectedDateEnd,\n setNext ? 'next' : 'previous'\n );\n this.setSelectedDate(range[0], range[1]);\n }\n\n public getCellCssClass(date: any) {\n const calendarDate = new Date(date);\n let css = '';\n\n if (this.selectionKind == 'period') {\n const selectedDateStartAsDate = new Date(this.selectedDateStart);\n const selectedDateEndAsDate = new Date(this.selectedDateEnd);\n\n if (\n isAfter(calendarDate, startOfDay(selectedDateStartAsDate)) &&\n isBefore(calendarDate, startOfDay(selectedDateEndAsDate)) &&\n !this.disabledDates.some((day) => isSameDay(calendarDate, day))\n ) {\n css += ' bg-primary-light text-dark rounded-0';\n } else {\n if (isSameDay(calendarDate, selectedDateStartAsDate)) {\n css += ' bg-primary text-white rounded-start';\n }\n if (isSameDay(calendarDate, selectedDateEndAsDate)) {\n css += ' bg-primary text-white rounded-end';\n }\n }\n }\n return css;\n }\n\n public selectEndDate(event: any): void {\n if (this.selectionKind == \"period\" && this.selectedDateStartFocus && this.calendarCellClicked(event)) {\n this.selectedDateFocus = false;\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n\n public onKeydown(event: KeyboardEvent){\n\n if (this.showDatepicker) {\n if (event.code === 'Escape') {\n this.showDatepicker = false;\n event.stopImmediatePropagation();\n } else if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n if (!this.disabled) {\n this.applyPeriodPicker();\n }\n event.stopImmediatePropagation();\n }\n }\n }\n\n private calendarCellClicked(event: any): boolean {\n // This check is tightly coupled with current DX implementation so it\n // must be re-checked after each major update of the DX components\n // Also check if dx-calendar provides info about clicked element by\n // design.\n const targetParentClassList = event.target?.offsetParent?.classList;\n if (!targetParentClassList) {\n return false;\n }\n const isCalendarCell = [...targetParentClassList].includes('dx-calendar-cell');\n return isCalendarCell;\n }\n\n private handleLocalesChange(): void {\n // apply new locale to DX\n // if array of locales was provided use first one\n if (typeof this.locales === 'string') {\n locale(this.locales);\n } else if (Array.isArray(this.locales) && this.locales.length > 0) {\n locale(this.locales[0]);\n };\n this.selectedDateStartBox?.instance.repaint();\n this.selectedDateEndBox?.instance.repaint();\n this.singleDatePickerBox?.instance.repaint();\n this.calendar?.instance.repaint();\n\n this.setSelectedDateRangeText();\n }\n\n private updateCustomText(): void {\n this.customDateRange.name = this.translations?.custom\n ? this.translations.custom\n : '';\n }\n\n private removeDxDefaultCalendarFocus() {\n const element = document.querySelector(\n '#datepickercomponent .dx-calendar-selected-date'\n );\n if (\n element &&\n element?.classList?.contains('dx-calendar-selected-date')\n ) {\n element?.classList?.remove('dx-calendar-selected-date');\n }\n }\n\n private setSelectedDateRangeText(){\n if (this.selectionKind == 'single') {\n this.matchDateRange(new Date(this.selectedDateInternal), new Date(this.selectedDateInternal));\n this.setDateRangeText(new Date(this.selectedDateInternal), new Date(this.selectedDateInternal));\n } else {\n this.matchDateRange(new Date(this.selectedDateStart), new Date(this.selectedDateEnd));\n this.setDateRangeText(new Date(this.selectedDateStart), new Date(this.selectedDateEnd));\n }\n }\n\n public toggleDateRangeSelectorVisibility() {\n if (!this.showPredefinedOptionsSelector) {\n this.generateDateRanges();\n }\n\n this.showPredefinedOptionsSelector =\n !this.showPredefinedOptionsSelector;\n }\n\n public changDateRange(range: PeriodPickerDateRange) {\n this.showPredefinedOptionsSelector = false;\n this.showDatepicker = false;\n this.selectedDateRange = range;\n\n if (range === this.customDateRange) {\n // this.openDatepickerPopup();\n this.showDatepicker = true;\n } else {\n this.dateStart = range.dateFrom\n ? range.dateFrom\n : startOfDay(new Date());\n this.dateEnd = range.dateTo ? range.dateTo : startOfDay(new Date());\n this.predefinedRangeSelected.emit(range);\n this.setSelectedDate(this.dateStart, this.dateEnd, true);\n }\n }\n\n public isDateDisabled = (args: any): boolean => {\n if (this.lockBeforeDate && isBefore(args.date, this.lockBeforeDate)) {\n return true;\n }\n return this.disabledDates.some((day) => isSameDay(args.date, day));\n }\n\n private matchDateRange(dateFrom?: Date, dateTo?: Date): void {\n if (!dateFrom || !dateTo) {\n this.selectedDateRange = this.customDateRange;\n return;\n }\n\n this.generateDateRanges();\n\n const dateRange = this.predefinedDateRanges.filter(\n (x) =>\n isSameDay(x.dateFrom as Date, dateFrom) &&\n isSameDay(x.dateTo as Date, dateTo)\n );\n if (dateRange.length) {\n this.selectedDateRange = dateRange[0];\n } else {\n this.selectedDateRange = this.customDateRange;\n }\n }\n\n private setDateRangeText(dateFrom?: Date, dateTo?: Date): void {\n const today = new Date();\n this.selectedDateRangeName = '';\n this.selectedDateRangeTextSegment1 = '';\n this.selectedDateRangeTextSegment2 = '';\n\n if (!(dateFrom instanceof Date) || !(dateTo instanceof Date)) {\n return;\n }\n\n // RESOLVE PERIOD\n // one day\n if (isSameDay(dateFrom, dateTo)) {\n if (typeof this.singleDayFormatFn !== 'undefined'){\n this.selectedDateRangeTextSegment1 = this.singleDayFormatFn(dateFrom);\n } else {\n if (this.style == 'compact' && this.compactStyleDisplay == 'both' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n this.selectedDateRangeTextSegment1 = this.formatDate(dateFrom); //skip day name, as we have custom text.\n } else {\n this.selectedDateRangeTextSegment1 = this.formatDate(dateFrom, 'day-long');\n }\n }\n }\n // date range\n else {\n // date range - use provided dateRange format function (if defined)\n if (typeof this.dateRangeFormatFn !== 'undefined') {\n this.selectedDateRangeTextSegment1 = this.dateRangeFormatFn(dateFrom);\n this.selectedDateRangeTextSegment2 = this.dateRangeFormatFn(dateTo);\n }\n // full month\n else if (\n isSameDay(dateFrom, startOfMonth(dateFrom)) &&\n isSameDay(dateTo, endOfMonth(dateTo)) &&\n isSameMonth(dateFrom, dateTo)\n ) {\n this.selectedDateRangeTextSegment1 = this.formatDate(\n dateFrom,\n 'month'\n );\n }\n // date range - use default date format function\n else {\n this.selectedDateRangeTextSegment1 = this.formatDate(\n dateFrom,\n isSameYear(dateFrom, today) ? 'day-short' : 'day'\n );\n this.selectedDateRangeTextSegment2 = this.formatDate(\n dateTo,\n isSameYear(dateTo, today) ? 'day-short' : 'day'\n );\n }\n }\n\n if (this.style == 'compact' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n if (this.compactStyleDisplay == 'predefinedRange') {\n this.selectedDateRangeName = this.selectedDateRange.name;\n this.selectedDateRangeTextSegment1 = '';\n this.selectedDateRangeTextSegment2 = '';\n }\n\n if (this.compactStyleDisplay == 'both') {\n this.selectedDateRangeName = this.selectedDateRange.name + ', ';\n }\n }\n // @Input() public style: 'classic' | 'compact' = 'classic';\n // @Input() public compactStyleDisplay: 'date' | 'predefinedRange' | 'both' = 'predefinedRange';\n // if (this.style == 'compact' && this.compactStyleDisplay == 'predefinedRange' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n // this.selectedDateRangeTextSegment1 = this.selectedDateRange.name;\n // this.selectedDateRangeTextSegment2 = '';\n // return;\n // }\n // if (this.style == 'compact' && this.compactStyleDisplay == 'both' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n // this.selectedDateRangeTextSegment1 = this.selectedDateRange.name;\n // this.selectedDateRangeTextSegment2 = '';\n // return;\n // }\n }\n\n private formatDate(\n date: Date,\n type?: 'month' | 'day' | 'day-long' | 'day-short' | undefined\n ): string {\n switch (type) {\n case 'month':\n return date.toLocaleDateString(this.locales, {\n month: 'long',\n year: 'numeric',\n day: undefined,\n });\n case 'day-long':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n weekday: 'long',\n });\n case 'day-short':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'short',\n });\n case 'day':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n });\n default:\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n }\n }\n\n private generateDateRanges(force?: boolean) {\n const today = startOfDay(new Date());\n\n if (\n force ||\n !this.predefinedDateRangesGeneratedDate ||\n !isSameDay(this.predefinedDateRangesGeneratedDate, today)\n ) {\n this.predefinedDateRangesGeneratedDate = today;\n\n this.predefinedDateRanges =\n this.datePickerService.getPredefinedDateRanges(\n this.dateRangeDefinitions,\n today,\n this.firstDayOfWeek\n );\n\n this.dateRanges = [...this.predefinedDateRanges];\n this.dateRanges.push(this.customDateRange);\n }\n }\n\n // private methods\n}\n","<!-- <div id=\"datepickerbuttons\"> -->\n <div\n class=\"datepicker d-inline-flex bg-white sds-no-print\"\n role=\"group\"\n [attr.aria-label]=\"componentAriaLabel\"\n [style.width]=\"width\"\n >\n\n <ng-container *ngIf=\"style == 'classic'\">\n <div\n class=\"btn-group\"\n role=\"group\"\n >\n <button\n *ngIf=\"dateRangeDefinitions && dateRangeDefinitions.length > 0\"\n id=\"pickerPredefinedRangeDropdown{{ randomIdReference }}\"\n type=\"button\"\n class=\"\n btn btn-white\n border\n rounded-start\n border-end\n p-0\n sds-fw-400\"\n [disabled]=\"disabled\"\n [style.width]=\"dateRangeDefinitionsWidth\"\n (click)=\"toggleDateRangeSelectorVisibility()\"\n >\n <div class=\"d-flex align-items-center\">\n <div class=\"ps-2 ms-1 me-1 date-range-text text-truncate\">\n {{selectedDateRange.name}}\n </div>\n <button type=\"button\" class=\"btn btn-light date-range-dropdown-button sds-fw-400\" [attr.aria-label]=\"openDateRangeDefinitionsAriaLabel\"\n [attr.aria-controls]=\"elementUUID + '_predefined_periods_dropdown'\">\n <span class=\"dropdown-toggle\"></span>\n </button>\n </div>\n\n </button>\n\n <dx-popover\n *ngIf=\"dateRangeDefinitions && dateRangeDefinitions.length > 0\"\n [id]=\"elementUUID + '_predefined_periods_dropdown'\"\n target=\"#pickerPredefinedRangeDropdown{{ randomIdReference }}\"\n position=\"bottom\"\n [(visible)]=\"showPredefinedOptionsSelector\"\n [wrapperAttr]=\"{ class: 'sds-datepicker-ranges-popover sds-dx-popup-no-arrow' }\"\n [minWidth]=\"dateRangeDefinitionsWidth\"\n\n >\n <div *dxTemplate=\"let data of 'content'\" cdkTrapFocus>\n <div *ngFor=\"let range of dateRanges\">\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"predefined-date-range px-3 py-2 w-100\"\n [class.selected]=\"range === selectedDateRange\"\n (click)=\"changDateRange(range)\"\n (keydown)=\"onRangeKeyReleased($event, range)\"\n >\n {{range.name}}\n </div>\n </div>\n </div>\n </dx-popover>\n </div>\n </ng-container>\n\n\n <button\n *ngIf=\"showPreviousAndNextButtons\"\n class=\"btn btn-white border border-end-0 pe-2 sds-fw-400\"\n [class.rounded-start] = \"style == 'compact' || (!dateRangeDefinitions || dateRangeDefinitions.length === 0)\"\n [class.border-start-0] = \"style == 'classic' && dateRangeDefinitions.length > 0\"\n type=\"button\"\n [attr.aria-label]=\"previousPeriodAriaLabel\"\n [disabled]=\"isMinimumLimit || disabled || previousButtonDisabled\"\n (click)=\"goToPreviousDate()\"\n >\n <fa-icon [icon]=\"previousPeriodIcon\"></fa-icon>\n\n </button>\n\n <button\n #selectedDateRangeButton\n id=\"pickerDropdown{{ randomIdReference }}\"\n class=\"btn btn-white border-top border-bottom text-truncate px-0 selected-period sds-fw-400\"\n [class.rounded-start] = \"(!dateRangeDefinitions || dateRangeDefinitions.length === 0) && !showPreviousAndNextButtons\"\n [class.border-start] = \"(!dateRangeDefinitions || dateRangeDefinitions.length === 0) && !showPreviousAndNextButtons\"\n [class.rounded-end] = \"!showPreviousAndNextButtons\"\n [class.border-end] = \"!showPreviousAndNextButtons\"\n [disabled]=\"disabled\"\n type=\"button\"\n (click)=\"showDatepicker = !showDatepicker\"\n >\n\n <ng-content *ngIf=\"useCustomDisplayContent\" select=\"display\"></ng-content>\n <div *ngIf=\"!useCustomDisplayContent\"\n class=\"d-flex justify-content-center align-items-center\">\n <!-- <div class=\"mx-1\">\n <fa-icon [icon]=\"calendarIcon\" size=\"sm\"></fa-icon>\n </div> -->\n <div class=\"mx-1 text-truncate\">\n <span>{{selectedDateRangeName}}</span>\n <span>{{selectedDateRangeTextSegment1}}</span>\n <fa-icon\n *ngIf=\"selectedDateRangeTextSegment2\"\n class=\"mx-2\"\n [icon]=\"toIcon\"\n size=\"sm\"\n ></fa-icon>\n <span>{{selectedDateRangeTextSegment2}}</span>\n </div>\n </div>\n </button>\n\n <button\n *ngIf=\"showPreviousAndNextButtons\"\n class=\"btn btn-white border rounded-end border-start-0 ps-2 sds-fw-400\"\n type=\"button\"\n [attr.aria-label]=\"nextPeriodAriaLabel\"\n [disabled]=\"isMaximumLimit || disabled || nextButtonDisabled\"\n (click)=\"goToNextDate()\"\n >\n <fa-icon [icon]=\"nextPeriodIcon\"></fa-icon>\n </button>\n </div>\n\n <div class=\"sds-print-only h-100\">\n\n <ng-content *ngIf=\"useCustomDisplayContent\" select=\"display\"></ng-content>\n <div *ngIf=\"!useCustomDisplayContent\"\n class=\"d-flex justify-content-center align-items-center\">\n <!-- <div class=\"mx-1\">\n <fa-icon [icon]=\"calendarIcon\" size=\"sm\"></fa-icon>\n </div> -->\n <div class=\"mx-1 text-truncate\">\n <span>{{selectedDateRangeTextSegment1}}</span>\n <fa-icon\n *ngIf=\"selectedDateRangeTextSegment2\"\n class=\"mx-2\"\n [icon]=\"toIcon\"\n size=\"sm\"\n ></fa-icon>\n <span>{{selectedDateRangeTextSegment2}}</span>\n </div>\n </div>\n </div>\n\n<dx-popover\n target=\"#pickerDropdown{{ randomIdReference }}\"\n position=\"bottom\"\n [(visible)]=\"showDatepicker\"\n (onHiding)=\"onHiddenCalendarPopover()\"\n (onShowing)=\"onShowingCalendarPopover()\"\n class=\"m-0 p-0\"\n [wrapperAttr]=\"{\n class: 'sds-datepicker-popover ' + dropdownWrapperClass,\n id: dropdownWrapperId\n }\"\n>\n <dxo-animation>\n <dxo-show\n type=\"pop\"\n [from]=\"{ scale: 0.9 }\"\n [to]=\"{ scale: 1 }\"\n ></dxo-show>\n <dxo-hide\n type=\"fade\"\n [from]=\"1\"\n [to]=\"0\"\n ></dxo-hide>\n </dxo-animation>\n <div *dxTemplate=\"let data of 'content'\" (keydown)=\"onKeydown($event)\" tabindex=\"1\">\n <dx-scroll-view>\n <div class=\"d-flex flex-row\">\n\n <div\n *ngIf=\"style == 'compact' && dateRanges.length > 1\"\n class=\"d-flex flex-column p-3 bg-gray-100\"\n style=\"border-right: 1px solid var(--bs-gray-200)\"\n >\n <div\n *ngIf=\"translations.presets\" class=\"px-3 py-2\">\n <label>{{ translations.presets }}</label>\n </div>\n <div *ngFor=\"let range of dateRanges\">\n <div\n class=\"predefined-date-range px-3 py-2 w-100\"\n [class.selected]=\"range === selectedDateRange\"\n (click)=\"changDateRange(range)\"\n >\n {{range.name}}\n </div>\n </div>\n </div>\n\n\n <div id=\"datepickercomponent\">\n <div\n *ngIf=\"this.selectionKind == 'period'\"\n id=\"date-inputs\"\n class=\"d-flex flex-wrap justify-content-center align-items-center px-3 pt-3 pb-2\"\n >\n <div class=\"d-flex justify-content-between align-items-center\">\n <dx-date-box\n #selectedDateStartBox\n class=\"border p-1 m-0 text-center rounded datepicker-input\"\n [class.activeInput]=\"selectedDateFocus\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"selectedDateStart\"\n (onValueChanged)=\"onStartDateChange($event)\"\n (onFocusIn)=\"onStartDateFocus()\"\n >\n </dx-date-box>\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center px-2\">\n <fa-icon [icon]=\"toIcon\"></fa-icon>\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\">\n <dx-date-box\n #selectedDateEndBox\n class=\"border p-1 m-0 text-center rounded datepicker-input\"\n [class.activeInput]=\"!selectedDateFocus\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"selectedDateEnd\"\n (onValueChanged)=\"onEndDateChange($event)\"\n (onFocusIn)=\"onEndDateFocus()\"\n >\n </dx-date-box>\n </div>\n </div>\n\n <div class=\"bg-white mx-2 px-2 py-2 date-picker-date-selection\">\n <div\n *ngIf=\"this.selectionKind == 'single'\"\n id=\"date-inputs\"\n class=\"d-flex flex-wrap justify-content-center align-items-center p-2\"\n >\n <div class=\"d-flex justify-content-center align-items-center\">\n <dx-date-box\n #singleDatePickerBox\n class=\"border p-1 m-0 text-center rounded datepicker-input datepicker-input-large\"\n [class.activeInput]=\"true\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [(value)]=\"selectedDateInternal\"\n >\n </dx-date-box>\n <!-- (onValueChanged)=\" closeDatepickerPopup()\" -->\n </div>\n </div>\n\n <div\n class=\"d-flex justify-content-center align-items-center\"\n (click)=\"selectEndDate($event)\">\n\n <dx-calendar\n #calendar\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [disabledDates]=\"isDateDisabled\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"this.selectionKind == 'period' ? selectedDateCalendar : selectedDateInternal\"\n (onValueChanged)=\"onDateChange($event)\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n >\n <div\n *dxTemplate=\"let cellData of 'cell'\"\n [class]=\"'h-100 pt-1' + getCellCssClass(cellData.date)\"\n [style.line-height.px]=\"23\"\n\n >\n\n <div *ngIf=\"lockBeforeDate && (cellData.date | sdsDateCompare: lockBeforeDate : 'lte'); then thenLockBlock else elseDefaultBlock\"></div>\n <ng-template #thenLockBlock>\n <fa-icon [title]=\"lockBeforeDateHint\" [icon]=\"lockIcon\" class=\"locked-day position-absolute-x\"></fa-icon>\n </ng-template>\n <ng-template #elseDefaultBlock>\n {{ cellData.text }}\n </ng-template>\n </div>\n </dx-calendar>\n </div>\n </div>\n\n <div\n *ngIf=\"this.selectionKind == 'period'\"\n class=\"d-flex justify-content-end align-items-center px-3 pt-2 pb-3\"\n >\n <button\n class=\"sds-btn-secondary sds-fw-400\"\n [disabled]=\"disabled\"\n (click)=\"showDatepicker = false\"\n type=\"button\"\n >\n {{ translations.cancel}}\n </button>\n <!-- (click)=\"closeDatepickerPopup()\" -->\n <button\n class=\"sds-btn-primary ms-1 sds-fw-400\"\n [disabled]=\"disabled\"\n (click)=\"applyPeriodPicker()\"\n type=\"button\"\n >\n {{ translations.apply}}\n </button>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n</dx-popover>\n<!-- </div> -->\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SdsDatePickerService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-date-picker.mjs","sources":["../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.model.ts","../../../projects/ngx-sds-components/src/lib/date-picker/sds-date-picker.service.ts","../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.component.ts","../../../projects/ngx-sds-components/src/lib/date-picker/date-picker.component.html","../../../projects/ngx-sds-components/src/lib/date-picker/spicainternational-ngx-sds-components-src-lib-date-picker.ts"],"sourcesContent":["export class DateRangeTranslations {\n custom: string = '';\n}\n\nexport class PeriodPickerDateRangeDefinition {\n name: string = '';\n type: 'dynamic' | 'fixed' = 'fixed';\n\n dynamicDateRangeDefinition?: PeriodPickerDateRangeDynamicDefinition;\n\n dateFrom?: Date;\n dateTo?: Date;\n\n constructor(\n name: string,\n type: 'dynamic' | 'fixed' = 'fixed',\n dynamicDateRangeDefinition?: PeriodPickerDateRangeDynamicDefinition,\n dateFrom?: Date,\n dateTo?: Date\n ) {\n this.name = name;\n this.type = type;\n this.dynamicDateRangeDefinition = dynamicDateRangeDefinition;\n this.dateFrom = dateFrom;\n this.dateTo = dateTo;\n }\n}\n\nexport class PeriodPickerDateRangeDynamicDefinition {\n dimension: 'd' | 'w' | 'm' | 'y';\n modifier: number;\n\n constructor(dimension: 'd' | 'w' | 'm' | 'y', modifier: number) {\n this.dimension = dimension;\n this.modifier = modifier;\n }\n}\n\nexport class PeriodPickerDateRange {\n name: string;\n dateFrom?: Date;\n dateTo?: Date;\n\n constructor(name: string, dateFrom?: Date, dateTo?: Date) {\n this.name = name;\n this.dateFrom = dateFrom;\n this.dateTo = dateTo;\n }\n}\n\nexport class PeriodPickerDynamicDateRangeDefinitionGenerator {\n\n static generateMonthlyRanges(currentMonthText: string, previousMonthText: string, nextMonthText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentMonthText, 'dynamic', {dimension: 'm', modifier: 0}))\n }\n\n if (nextMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextMonthText, 'dynamic', {dimension: 'm', modifier: 1}))\n }\n\n if (previousMonthText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousMonthText, 'dynamic', {dimension: 'm', modifier: -1}))\n }\n\n return ranges;\n }\n\n static generateWeeklyRanges(currentWeekText: string, previousWeekText: string, nextWeekText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentWeekText, 'dynamic', {dimension: 'w', modifier: 0}))\n }\n\n if (nextWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextWeekText, 'dynamic', {dimension: 'w', modifier: 1}))\n }\n\n if (previousWeekText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousWeekText, 'dynamic', {dimension: 'w', modifier: -1}))\n }\n \n return ranges;\n } \n\n static generateDailyRanges(currentDayText: string, previousDayText: string, nextDayText: string): PeriodPickerDateRangeDefinition[] {\n const ranges: PeriodPickerDateRangeDefinition[] = [];\n\n if (currentDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(currentDayText, 'dynamic', {dimension: 'd', modifier: 0}))\n }\n\n if (nextDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(nextDayText, 'dynamic', {dimension: 'd', modifier: 1}))\n }\n\n if (previousDayText) {\n ranges.push(new PeriodPickerDateRangeDefinition(previousDayText, 'dynamic', {dimension: 'd', modifier: -1}))\n }\n \n return ranges;\n } \n\n}\n\nexport interface PeriodPickerTranslations {\n cancel: string;\n apply: string;\n custom: string;\n\n printLabel?: string;\n\n presets?: string;\n}\n","import { Injectable } from '@angular/core';\nimport {\n add,\n addDays,\n addMonths,\n addWeeks,\n addYears,\n differenceInDays,\n differenceInMonths,\n endOfMonth,\n endOfWeek,\n endOfYear,\n isSameDay,\n isSameMonth,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns';\nimport {\n PeriodPickerDateRange,\n PeriodPickerDateRangeDefinition,\n} from './date-picker.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SdsDatePickerService {\n constructor() {}\n\n public getRange(\n currentStartDate: Date,\n currentEndDate: Date,\n direction: 'previous' | 'next'\n ): [Date, Date] {\n const modifier = direction == 'next' ? 1 : -1;\n\n let dateStart, dateEnd;\n if (\n isSameDay(currentStartDate, startOfMonth(currentStartDate)) &&\n isSameDay(currentEndDate, endOfMonth(currentEndDate)) &&\n isSameMonth(currentStartDate, currentEndDate)\n ) {\n // Month range.\n dateStart = add(currentStartDate, { months: modifier });\n dateEnd = startOfDay(\n endOfMonth(add(currentEndDate, { months: modifier }))\n );\n } else {\n // Custom range in months\n if (\n isSameDay(currentStartDate, startOfMonth(currentStartDate)) &&\n isSameDay(currentEndDate, endOfMonth(currentEndDate))\n ) {\n const monthsDiff =\n differenceInMonths(currentEndDate, currentStartDate) + 1;\n dateStart = add(currentStartDate, {\n months: monthsDiff * modifier,\n });\n dateEnd = startOfDay(\n endOfMonth(\n add(currentEndDate, { months: monthsDiff * modifier })\n )\n );\n } else {\n // Custom range in days\n const dayDiff =\n differenceInDays(currentEndDate, currentStartDate) + 1;\n dateStart = add(currentStartDate, { days: dayDiff * modifier });\n dateEnd = add(currentEndDate, { days: dayDiff * modifier });\n }\n }\n return [dateStart, dateEnd];\n }\n\n public getPredefinedDateRanges(\n dateRangeDefinitions: Array<PeriodPickerDateRangeDefinition>,\n referenceDay: Date,\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n ): Array<PeriodPickerDateRange> {\n let predefinedDateRanges = new Array<PeriodPickerDateRange>();\n referenceDay = startOfDay(referenceDay);\n\n dateRangeDefinitions.forEach((definition) => {\n if (definition.type == 'fixed') {\n if (\n definition.dateFrom !== undefined &&\n definition.dateTo !== undefined\n ) {\n const fixedDateRange = new PeriodPickerDateRange(\n definition.name,\n definition.dateFrom,\n definition.dateTo\n );\n predefinedDateRanges.push(fixedDateRange);\n }\n } else if (definition.type == 'dynamic') {\n const dateRangeDefinition =\n definition.dynamicDateRangeDefinition;\n\n if (dateRangeDefinition) {\n let dateFrom: Date | null = null;\n let dateTo: Date | null = null;\n\n switch (dateRangeDefinition.dimension) {\n case 'd':\n dateFrom = addDays(\n referenceDay,\n dateRangeDefinition.modifier\n );\n dateTo = addDays(\n referenceDay,\n dateRangeDefinition.modifier\n );\n break;\n case 'w':\n dateFrom = startOfWeek(\n addWeeks(\n referenceDay,\n dateRangeDefinition.modifier\n ),\n { weekStartsOn: firstDayOfWeek }\n );\n dateTo = endOfWeek(\n addWeeks(\n referenceDay,\n dateRangeDefinition.modifier\n ),\n { weekStartsOn: firstDayOfWeek }\n );\n break;\n\n case 'm':\n dateFrom = startOfMonth(\n addMonths(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n dateTo = endOfMonth(\n addMonths(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n break;\n\n case 'y':\n dateFrom = startOfYear(\n addYears(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n dateTo = endOfYear(\n addYears(\n referenceDay,\n dateRangeDefinition.modifier\n )\n );\n break;\n default:\n break;\n }\n if (dateFrom != undefined && dateTo != undefined) {\n const dynamicRangeDefinition =\n new PeriodPickerDateRange(\n definition.name,\n dateFrom,\n startOfDay(dateTo)\n );\n predefinedDateRanges.push(dynamicRangeDefinition);\n }\n }\n }\n });\n return predefinedDateRanges;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { DxCalendarComponent } from 'devextreme-angular/ui/calendar';\nimport { DxDateBoxComponent } from 'devextreme-angular/ui/date-box';\nimport { locale } from \"devextreme/localization\";\n\nimport {\n isSameDay,\n isSameYear,\n isSameMonth,\n startOfDay,\n startOfMonth,\n endOfMonth,\n isAfter,\n isBefore,\n add,\n} from 'date-fns';\n\nimport {\n faAngleLeft,\n faAngleRight,\n faCalendar,\n faLock\n} from '@fortawesome/pro-regular-svg-icons';\n\nimport { faArrowRight } from '@fortawesome/pro-light-svg-icons';\n\nimport {\n PeriodPickerDateRange,\n PeriodPickerDateRangeDefinition,\n PeriodPickerTranslations,\n} from './date-picker.model';\nimport { SdsDatePickerService } from './sds-date-picker.service';\nimport { DxDateBoxModule, DxCalendarModule } from 'devextreme-angular';\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\nimport { DxoAnimationModule, DxoShowModule, DxoHideModule, DxoPositionModule } from 'devextreme-angular/ui/nested';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { DxTemplateModule } from 'devextreme-angular/core';\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\nimport { NgIf, NgFor } from '@angular/common';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { SdsDateComparePipe } from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\n\n// import { faLock } from '@fortawesome/pro-solid-svg-icons';\n\n@Component({\n selector: 'sds-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n\n SdsDateComparePipe,\n\n CdkTrapFocus,\n FontAwesomeModule,\n\n DxPopoverModule,\n DxTemplateModule,\n DxoAnimationModule,\n DxoShowModule,\n DxoHideModule,\n DxoPositionModule,\n DxScrollViewModule,\n DxDateBoxModule,\n DxCalendarModule,\n ],\n})\nexport class SdsDatePickerComponent implements OnInit, OnChanges {\n @ContentChild('display') displayContent: any = undefined;\n\n // public interface\n @Input() selectionKind: 'period' | 'single' = 'period';\n\n @Input() dateRangeDefinitions: Array<PeriodPickerDateRangeDefinition> = [];\n\n // single date selector\n @Input() selectedDate: Date = new Date();\n @Output() public selectedDateChange = new EventEmitter();\n\n // period selector\n @Input() selectedDateStart: string | number | Date;\n @Output() selectedDateStartChange = new EventEmitter();\n\n // format function for displaying date when single date is selected\n @Input() singleDayFormatFn: ((date: Date) => string ) | undefined = undefined;\n // format function for displaying each date when date range is selected\n @Input() dateRangeFormatFn: ((date: Date) => string ) | undefined = undefined;\n\n @Input() selectedDateEnd: string | number | Date;\n @Output() selectedDateEndChange = new EventEmitter();\n @Output() periodChange = new EventEmitter();\n /**\n * Emits when the user selects a predefined date range from the dropdown.\n * Does not emit when the 'Custom' option is selected.\n */\n @Output() predefinedRangeSelected = new EventEmitter<PeriodPickerDateRange>();\n /**\n * Emits whenever the calendar popover visibility changes.\n * Emits `true` when the popover opens and `false` when it closes.\n */\n @Output() calendarVisibleChange = new EventEmitter<boolean>();\n\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n @Input() locales?: string | Array<string>;\n @Input() disabled: boolean = false;\n @Input() validationError: string = '';\n @Input() isValid: boolean = true;\n\n @Input() disabledDates: Date[] = [];\n\n @Input() public applyText?: string = 'close';\n @Input() public cancelText?: string = 'close';\n\n @Input() public translations: PeriodPickerTranslations;\n\n @Input() public firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6 = 1;\n\n @Input() public dateRangeDefinitionsWidth: string = '11rem';\n @Input() public showPreviousAndNextButtons: boolean = true;\n\n @Input() public width: string = '30rem';\n\n @Input() public dropdownWrapperClass: string = '';\n @Input() public dropdownWrapperId: string = '';\n\n @Input() public getPreviousDateCallback: (currentDate: string | number | Date) => string | number | Date = this.getPreviousDay;\n @Input() public getNextDateCallback: (currentDate: string | number | Date) => string | number | Date = this.getNextDay;\n\n @Input() public getPreviousRangeCallback: (currentStartDate: string | number | Date, currentEndDate: string | number | Date) => [string | number | Date, string | number | Date] = this.getPreviousRange;\n @Input() public getNextRangeCallback: (currentStartDate: string | number | Date, currentEndDate: string | number | Date) => [string | number | Date, string | number | Date] = this.getNextRange;\n\n @Input() public useCustomDisplayContent = false;\n\n @Input() public displayPredefinedDateRangeName = false\n\n @Input() public style: 'classic' | 'compact' = 'classic';\n @Input() public compactStyleDisplay: 'date' | 'predefinedRange' | 'both' = 'predefinedRange';\n\n @Input() public dateInputDisplayFormat: string = 'shortDate';\n\n // #region Aria inputs\n /**\n * @description\n * Component aria-label. Defaults to 'Date picker'\n */\n @Input() public componentAriaLabel = 'Date picker'\n\n /**\n * @description\n * Predefined date range definitions dropdown button aria-label. Defaults to 'Open predefined date ranges pane'\n */\n @Input() public openDateRangeDefinitionsAriaLabel = 'Open predefined date ranges pane'\n\n /**\n * @description\n * Next period button aria-label. Default to 'Next period'\n */\n @Input() public nextPeriodAriaLabel = 'Next period'\n\n /**\n * @description\n * Previous period button aria-label. Defaults to 'Previous period'\n */\n @Input() public previousPeriodAriaLabel = 'Previous period'\n\n // #endregion ARIA inputs\n\n @Input() public lockBeforeDate?: Date;\n @Input() public lockBeforeDateHint?: string;\n\n @Input() public previousButtonDisabled: boolean = false;\n @Input() public nextButtonDisabled: boolean = false;\n\n\n // public properties\n previousPeriodIcon = faAngleLeft;\n nextPeriodIcon = faAngleRight;\n calendarIcon = faCalendar;\n toIcon = faArrowRight;\n lockIcon = faLock;\n\n predefinedDateRanges: Array<PeriodPickerDateRange> = [];\n predefinedDateRangesGeneratedDate: Date | undefined = undefined;\n selectedDateRange: PeriodPickerDateRange;\n dateRanges: Array<PeriodPickerDateRange> = [];\n\n selectedDateRangeName: string = '';\n selectedDateRangeTextSegment1: string = '';\n selectedDateRangeTextSegment2: string = '';\n\n minDateDefault: Date;\n maxDateDefault: Date;\n\n selectedDateCalendar: string | number | Date = new Date();\n selectedDateInternal: string | number | Date = new Date();\n\n dateStartOld: string | number | Date = '';\n dateStart: string | number | Date = '';\n dateEndOld: string | number | Date = '';\n dateEnd: string | number | Date = '';\n\n private _showDatepicker: boolean = false;\n public get showDatepicker(): boolean {\n return this._showDatepicker;\n }\n public set showDatepicker(value: boolean) {\n this._showDatepicker = value;\n this.calendarVisibleChange.emit(value);\n }\n\n showPredefinedOptionsSelector: boolean = false;\n\n hidingConfirmedDate: boolean = false;\n\n isSettingNotPreprocessedDate: boolean = false;\n isSelectedPredefinedPeriod: boolean = false;\n selectedDateFocus: boolean = true;\n\n protected elementUUID = 'sds-as-' + crypto.randomUUID();\n\n // private fields\n private customDateRange: PeriodPickerDateRange;\n private initCalendarValue: boolean = true;\n\n @ViewChild('singleDatePickerBox', { static: false })\n private singleDatePickerBox: DxDateBoxComponent | undefined = undefined;\n @ViewChild('selectedDateStartBox', { static: false })\n private selectedDateStartBox: DxDateBoxComponent | undefined = undefined;\n @ViewChild('selectedDateEndBox', { static: false })\n private selectedDateEndBox: DxDateBoxComponent | undefined = undefined;\n\n @ViewChild('calendar', { static: false }) private calendar:\n | DxCalendarComponent\n | undefined = undefined;\n\n @ViewChild('selectedDateRangeButton', { static: true})\n private _selectedDateRangeButton: ElementRef | undefined = undefined;\n\n // public methods\n constructor(\n private changeRef: ChangeDetectorRef,\n private datePickerService: SdsDatePickerService\n ) {\n this.dateRangeDefinitions = [];\n\n this.minDateDefault = new Date(1900, 1, 1);\n this.maxDateDefault = add(startOfDay(new Date()), { years: 50 });\n\n this.showDatepicker = false;\n\n this.translations = {\n cancel: 'Cancel',\n apply: 'Apply',\n custom: 'Custom',\n presets: 'Presets',\n };\n\n this.customDateRange = new PeriodPickerDateRange(\n this.translations.custom,\n undefined,\n undefined\n );\n\n this.selectedDateRange = this.customDateRange;\n\n this.selectedDateInternal = startOfDay(new Date());\n\n this.selectedDateStart = startOfMonth(new Date());\n this.selectedDateEnd = startOfDay(endOfMonth(new Date()));\n\n this.setSelectedDateRangeText();\n\n }\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dateRangeDefinitions']) {\n this.generateDateRanges(true);\n }\n\n if (changes['selectionKind']){\n\n if (this.selectionKind == 'single') {\n const date = new Date(this.selectedDateInternal);\n\n this.matchDateRange(date, date);\n this.setDateRangeText(date, date);\n } else {\n const date1 = new Date(this.selectedDateStart);\n const date2 = new Date(this.selectedDateEnd);\n\n this.matchDateRange(date1, date2);\n this.setDateRangeText(date1, date2);\n }\n\n }\n\n if (changes['translations']) {\n this.updateCustomText();\n }\n\n if (changes['locales']) {\n this.handleLocalesChange();\n }\n\n if (changes['selectedDateStart'] || changes['selectedDateEnd']) {\n this.dateStartOld = this.selectedDateStart;\n this.dateEndOld = this.selectedDateEnd;\n }\n\n if (changes['selectedDate']) {\n const value = new Date(changes['selectedDate'].currentValue);\n\n this.selectedDateInternal = startOfDay(value);\n\n if (this.selectionKind == 'single') {\n this.dateStart = this.selectedDateInternal;\n this.dateEnd = this.selectedDateInternal;\n\n this.matchDateRange(this.selectedDateInternal, this.selectedDateInternal);\n this.setDateRangeText(this.selectedDateInternal, this.selectedDateInternal);\n }\n this.changeRef.detectChanges();\n }\n\n if (changes['selectedDateStart']) {\n const value = changes['selectedDateStart'].currentValue;\n const selectedValue = value instanceof Date ? value : new Date();\n if (this.selectionKind == 'period') {\n if (this.isSettingNotPreprocessedDate && this.showDatepicker) {\n this.dateStart = selectedValue;\n this.selectedDateInternal = selectedValue;\n this.isSettingNotPreprocessedDate = false;\n } else if (\n !this.isSelectedPredefinedPeriod &&\n this.showDatepicker\n ) {\n if (this.selectedDateStartFocus) {\n this.dateStart = selectedValue;\n this.selectedDateInternal = selectedValue;\n if (\n this.dateEnd instanceof Date &&\n (isSameDay(selectedValue, this.dateEnd) ||\n isAfter(selectedValue, this.dateEnd))\n ) {\n this.dateEnd = selectedValue;\n }\n }\n } else {\n this.dateStart = selectedValue;\n this.selectedDateFocus = false;\n }\n\n this.calendar?.instance?.repaint();\n this.removeDxDefaultCalendarFocus();\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n }\n this.changeRef.detectChanges();\n }\n\n if (changes['selectedDateEnd']) {\n const value = changes['selectedDateEnd'].currentValue;\n const selectedValue = value instanceof Date ? value : new Date();\n if (this.selectionKind == 'period') {\n if (!this.isSelectedPredefinedPeriod) {\n if (this.selectedDateEndFocus) {\n this.dateEnd = selectedValue;\n this.selectedDateInternal = selectedValue;\n\n if (\n this.dateStart instanceof Date &&\n (isSameDay(selectedValue, this.dateStart) ||\n isAfter(this.dateStart, selectedValue))\n ) {\n this.dateStart = selectedValue;\n }\n }\n } else {\n this.dateEnd = selectedValue;\n this.selectedDateInternal = selectedValue;\n }\n\n this.removeDxDefaultCalendarFocus();\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n }\n }\n\n if (changes['firstDayOfWeek']) {\n this.generateDateRanges(true);\n }\n }\n\n\n public randomIdReference: number = Math.floor(\n Math.random() * Number.MAX_SAFE_INTEGER\n );\n\n public setDateRangeDefinitions(definitions: Array<PeriodPickerDateRangeDefinition>): void {\n this.dateRangeDefinitions = definitions;\n this.generateDateRanges(true);\n }\n\n public setTranslations(translations: PeriodPickerTranslations): void {\n this.translations = translations;\n this.updateCustomText();\n }\n\n public setLocales(locales: string | Array<string>): void {\n this.locales = locales;\n this.handleLocalesChange();\n }\n\n public get selectedDateStartFocus(): boolean {\n return this.selectedDateFocus;\n }\n public get selectedDateEndFocus(): boolean {\n return !this.selectedDateFocus;\n }\n\n public get isMinimumLimit() {\n if (\n this.minDate instanceof Date &&\n this.selectedDateInternal instanceof Date\n ) {\n return (\n isSameDay(this.selectedDateInternal, this.minDate) ||\n isBefore(this.selectedDateInternal, this.minDate)\n );\n }\n return false;\n }\n\n public get isMaximumLimit() {\n if (\n this.maxDate instanceof Date &&\n this.selectedDateInternal instanceof Date\n ) {\n return (\n isSameDay(this.selectedDateInternal, this.maxDate) ||\n isAfter(this.selectedDateInternal, this.maxDate)\n );\n }\n return false;\n }\n\n public onDateChange(event: any) {\n let selectedDateFromEvent = new Date(event.value);\n\n if (this.selectionKind == 'period') {\n const interactiveChange = event.event;\n\n if (interactiveChange) {\n if (this.selectedDateStartFocus) {\n this.handleStartDateChange(selectedDateFromEvent);\n } else if (this.selectedDateEndFocus) {\n this.handleEndDateChange(selectedDateFromEvent);\n }\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n } else if (this.selectionKind == 'single') {\n this.showDatepicker = false;\n this.selectedDateInternal = selectedDateFromEvent;\n }\n }\n\n public handleStartDateChange(newDate: Date) {\n this.selectedDateStart = newDate;\n this.selectedDateCalendar = newDate;\n\n if (!this.initCalendarValue) {\n this.selectedDateFocus = false;\n\n if (isAfter(newDate, this.selectedDateEnd as Date)) {\n this.selectedDateEnd = newDate;\n } else {\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n }\n\n public handleEndDateChange(newDate: Date) {\n this.selectedDateEnd = newDate;\n this.selectedDateCalendar = newDate;\n\n if (\n // selected date is before start date -> set start date\n isBefore(newDate, this.selectedDateStart as Date)\n ) {\n this.selectedDateFocus = true;\n this.selectedDateStart = newDate;\n this.selectedDateFocus = false;\n }\n }\n\n public onStartDateChange(event: any) {\n this.handleStartDateChange(event.value);\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n\n public onEndDateChange(event: any) {\n this.handleEndDateChange(event.value);\n\n this.setSelectedDate(\n this.selectedDateStart,\n this.selectedDateEnd,\n false\n );\n }\n\n public onRangeKeyReleased(event: KeyboardEvent, range: PeriodPickerDateRange) {\n if (event.key === 'Enter') {\n this.changDateRange(range);\n }\n }\n\n public onStartDateFocus() {\n this.initCalendarValue = true;\n this.selectedDateFocus = true;\n\n if (this.selectedDateStart) {\n this.selectedDateInternal = new Date(this.selectedDateStart);\n this.selectedDateCalendar = new Date(this.selectedDateStart);\n }\n\n setTimeout(() => {\n this.initCalendarValue = false;\n });\n }\n\n public onEndDateFocus() {\n this.selectedDateFocus = false;\n\n if (this.selectedDateEnd) {\n this.selectedDateInternal = new Date(this.selectedDateEnd);\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n\n public applyPeriodPicker() {\n this.hidingConfirmedDate = true;\n this.showDatepicker = false;\n }\n\n public onShowingCalendarPopover(): void {\n this.hidingConfirmedDate = false;\n\n if (this.selectionKind == 'single') {\n setTimeout(() => {\n this.singleDatePickerBox?.instance.focus();\n });\n } else {\n this.dateStartOld = this.selectedDateStart;\n this.dateEndOld = this.selectedDateEnd;\n this.isSettingNotPreprocessedDate = true;\n setTimeout(() => {\n this.selectedDateStartBox?.instance.focus();\n this.onStartDateFocus();\n });\n }\n\n }\n\n public closeDatepickerPopup(emitChange = true) {\n // if (this.showDatepicker) {\n // this.showDatepicker = false;\n if (this.selectionKind == 'single') {\n this.setSelectedDate(\n this.selectedDateInternal,\n this.selectedDateInternal,\n emitChange\n );\n } else {\n if (this.hidingConfirmedDate) {\n this.setSelectedDate(this.selectedDateStart, this.selectedDateEnd, true);\n }\n else {\n // this.setSelectedDate(this.dateStartOld, this.dateEndOld, true);\n this.setSelectedDate(this.dateStartOld, this.dateEndOld, false);\n }\n // this.hidingConfirmedDate = false;\n }\n\n if (this._selectedDateRangeButton){\n this._selectedDateRangeButton.nativeElement.focus({focusVisible: false});\n }\n // }\n }\n\n public onHiddenCalendarPopover(): void {\n this.closeDatepickerPopup()\n }\n\n public setSelectedDate(\n dateStart: string | number | Date,\n dateEnd: string | number | Date,\n emitChange = true\n ) {\n this.selectedDateStart = dateStart;\n this.selectedDateEnd = dateEnd;\n\n this.selectedDateInternal = this.selectionKind === 'single' ? dateStart : dateEnd;\n\n this.isSelectedPredefinedPeriod = false;\n\n if (emitChange) {\n if (this.selectionKind == 'single') {\n this.selectedDate = new Date(this.selectedDateInternal);\n this.selectedDateChange.emit(this.selectedDateInternal);\n } else {\n const dateStartNew = new Date(this.selectedDateStart);\n const dateEndNew = new Date(this.selectedDateEnd);\n\n const startDateChanged =\n (this.dateStartOld instanceof Date && !isSameDay(this.dateStartOld, dateStartNew)) ||\n (typeof this.dateStartOld === 'string' && this.dateStartOld === '');\n const endDateChanged =\n (this.dateEndOld instanceof Date && !isSameDay(this.dateEndOld, dateEndNew)) ||\n (typeof this.dateEndOld === 'string' && this.dateEndOld === '');\n\n if (startDateChanged) {\n this.dateStartOld = new Date(this.selectedDateStart);\n this.selectedDateStartChange.emit(this.selectedDateStart);\n }\n\n if (endDateChanged) {\n this.dateEndOld = new Date(this.selectedDateEnd);\n this.selectedDateEndChange.emit(this.selectedDateEnd);\n }\n\n if (startDateChanged || endDateChanged) {\n this.periodChange.emit([\n this.selectedDateStart,\n this.selectedDateEnd,\n ]);\n }\n }\n\n if (\n this.selectedDateStart instanceof Date &&\n this.selectedDateEnd instanceof Date\n ) {\n this.matchDateRange(this.selectedDateStart, this.selectedDateEnd);\n this.setDateRangeText(this.selectedDateStart, this.selectedDateEnd);\n }\n\n }\n this.changeRef.detectChanges();\n }\n\n public goToNextDate() {\n if (this.selectionKind == 'single') {\n const newDate = this.getNextDateCallback(this.selectedDateInternal);\n this.selectedDateInternal = new Date(newDate);\n this.setSelectedDate(newDate, newDate);\n\n } else {\n if (!(this.selectedDateStart instanceof Date) || !(this.selectedDateEnd instanceof Date)) {\n return;\n }\n\n const range = this.getNextRangeCallback(\n this.selectedDateStart,\n this.selectedDateEnd\n );\n this.setSelectedDate(range[0], range[1]);\n }\n }\n\n public goToPreviousDate() {\n if (this.selectionKind == 'single') {\n const newDate = this.getPreviousDateCallback(this.selectedDateInternal);\n this.selectedDateInternal = new Date(newDate);\n this.setSelectedDate(newDate, newDate);\n } else {\n if (!(this.selectedDateStart instanceof Date) || !(this.selectedDateEnd instanceof Date)) {\n return;\n }\n\n const range = this.getPreviousRangeCallback(\n this.selectedDateStart,\n this.selectedDateEnd\n );\n this.setSelectedDate(range[0], range[1]);\n }\n }\n\n // public setNextPreviousDay(setNext: any) {\n // this.isSelectedPredefinedPeriod = true;\n // let newDate = setNext\n // ? add(this.selectedDateInternal as Date, { days: 1 })\n // : add(this.selectedDateInternal as Date, { days: -1 });\n\n // this.selectedDateInternal = new Date(newDate);\n // this.setSelectedDate(newDate, newDate);\n // }\n\n public getNextDay(currentDate: string | number | Date): string | number | Date {\n this.isSelectedPredefinedPeriod = true;\n return add(this.selectedDateInternal as Date, { days: 1 });\n }\n\n public getPreviousDay(currentDate: string | number | Date): string | number | Date {\n this.isSelectedPredefinedPeriod = true;\n return add(this.selectedDateInternal as Date, { days: -1 });\n }\n\n\n public getNextRange(currentStartDate: string | number | Date, currentEndDate: string | number | Date): [string | number | Date, string | number | Date] {\n this.isSelectedPredefinedPeriod = true;\n return this.datePickerService.getRange(\n new Date(currentStartDate),\n new Date(currentEndDate),\n 'next'\n );\n }\n\n public getPreviousRange(currentStartDate: string | number | Date, currentEndDate: string | number | Date): [string | number | Date, string | number | Date] {\n this.isSelectedPredefinedPeriod = true;\n return this.datePickerService.getRange(\n new Date(currentStartDate),\n new Date(currentEndDate),\n 'previous'\n );\n }\n\n public setNextPreviousRange(setNext: boolean) {\n this.isSelectedPredefinedPeriod = true;\n if (\n !(this.selectedDateStart instanceof Date) ||\n !(this.selectedDateEnd instanceof Date)\n ) {\n return;\n }\n\n const range = this.datePickerService.getRange(\n this.selectedDateStart,\n this.selectedDateEnd,\n setNext ? 'next' : 'previous'\n );\n this.setSelectedDate(range[0], range[1]);\n }\n\n public getCellCssClass(date: any) {\n const calendarDate = new Date(date);\n let css = '';\n\n if (this.selectionKind == 'period') {\n const selectedDateStartAsDate = new Date(this.selectedDateStart);\n const selectedDateEndAsDate = new Date(this.selectedDateEnd);\n\n if (\n isAfter(calendarDate, startOfDay(selectedDateStartAsDate)) &&\n isBefore(calendarDate, startOfDay(selectedDateEndAsDate)) &&\n !this.disabledDates.some((day) => isSameDay(calendarDate, day))\n ) {\n css += ' bg-primary-light text-dark rounded-0';\n } else {\n if (isSameDay(calendarDate, selectedDateStartAsDate)) {\n css += ' bg-primary text-white rounded-start';\n }\n if (isSameDay(calendarDate, selectedDateEndAsDate)) {\n css += ' bg-primary text-white rounded-end';\n }\n }\n }\n return css;\n }\n\n public selectEndDate(event: any): void {\n if (this.selectionKind == \"period\" && this.selectedDateStartFocus && this.calendarCellClicked(event)) {\n this.selectedDateFocus = false;\n this.selectedDateCalendar = new Date(this.selectedDateEnd);\n }\n }\n\n public onKeydown(event: KeyboardEvent){\n\n if (this.showDatepicker) {\n if (event.code === 'Escape') {\n this.showDatepicker = false;\n event.stopImmediatePropagation();\n } else if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n if (!this.disabled) {\n this.applyPeriodPicker();\n }\n event.stopImmediatePropagation();\n }\n }\n }\n\n private calendarCellClicked(event: any): boolean {\n // This check is tightly coupled with current DX implementation so it\n // must be re-checked after each major update of the DX components\n // Also check if dx-calendar provides info about clicked element by\n // design.\n const targetParentClassList = event.target?.offsetParent?.classList;\n if (!targetParentClassList) {\n return false;\n }\n const isCalendarCell = [...targetParentClassList].includes('dx-calendar-cell');\n return isCalendarCell;\n }\n\n private handleLocalesChange(): void {\n // apply new locale to DX\n // if array of locales was provided use first one\n if (typeof this.locales === 'string') {\n locale(this.locales);\n } else if (Array.isArray(this.locales) && this.locales.length > 0) {\n locale(this.locales[0]);\n };\n this.selectedDateStartBox?.instance.repaint();\n this.selectedDateEndBox?.instance.repaint();\n this.singleDatePickerBox?.instance.repaint();\n this.calendar?.instance.repaint();\n\n this.setSelectedDateRangeText();\n }\n\n private updateCustomText(): void {\n this.customDateRange.name = this.translations?.custom\n ? this.translations.custom\n : '';\n }\n\n private removeDxDefaultCalendarFocus() {\n const element = document.querySelector(\n '#datepickercomponent .dx-calendar-selected-date'\n );\n if (\n element &&\n element?.classList?.contains('dx-calendar-selected-date')\n ) {\n element?.classList?.remove('dx-calendar-selected-date');\n }\n }\n\n private setSelectedDateRangeText(){\n if (this.selectionKind == 'single') {\n this.matchDateRange(new Date(this.selectedDateInternal), new Date(this.selectedDateInternal));\n this.setDateRangeText(new Date(this.selectedDateInternal), new Date(this.selectedDateInternal));\n } else {\n this.matchDateRange(new Date(this.selectedDateStart), new Date(this.selectedDateEnd));\n this.setDateRangeText(new Date(this.selectedDateStart), new Date(this.selectedDateEnd));\n }\n }\n\n public toggleDateRangeSelectorVisibility() {\n if (!this.showPredefinedOptionsSelector) {\n this.generateDateRanges();\n }\n\n this.showPredefinedOptionsSelector =\n !this.showPredefinedOptionsSelector;\n }\n\n public changDateRange(range: PeriodPickerDateRange) {\n this.showPredefinedOptionsSelector = false;\n this.showDatepicker = false;\n this.selectedDateRange = range;\n\n if (range === this.customDateRange) {\n // this.openDatepickerPopup();\n this.showDatepicker = true;\n } else {\n this.dateStart = range.dateFrom\n ? range.dateFrom\n : startOfDay(new Date());\n this.dateEnd = range.dateTo ? range.dateTo : startOfDay(new Date());\n this.predefinedRangeSelected.emit(range);\n this.setSelectedDate(this.dateStart, this.dateEnd, true);\n }\n }\n\n public isDateDisabled = (args: any): boolean => {\n if (this.lockBeforeDate && isBefore(args.date, this.lockBeforeDate)) {\n return true;\n }\n return this.disabledDates.some((day) => isSameDay(args.date, day));\n }\n\n private matchDateRange(dateFrom?: Date, dateTo?: Date): void {\n if (!dateFrom || !dateTo) {\n this.selectedDateRange = this.customDateRange;\n return;\n }\n\n this.generateDateRanges();\n\n const dateRange = this.predefinedDateRanges.filter(\n (x) =>\n isSameDay(x.dateFrom as Date, dateFrom) &&\n isSameDay(x.dateTo as Date, dateTo)\n );\n if (dateRange.length) {\n this.selectedDateRange = dateRange[0];\n } else {\n this.selectedDateRange = this.customDateRange;\n }\n }\n\n private setDateRangeText(dateFrom?: Date, dateTo?: Date): void {\n const today = new Date();\n this.selectedDateRangeName = '';\n this.selectedDateRangeTextSegment1 = '';\n this.selectedDateRangeTextSegment2 = '';\n\n if (!(dateFrom instanceof Date) || !(dateTo instanceof Date)) {\n return;\n }\n\n // RESOLVE PERIOD\n // one day\n if (isSameDay(dateFrom, dateTo)) {\n if (typeof this.singleDayFormatFn !== 'undefined'){\n this.selectedDateRangeTextSegment1 = this.singleDayFormatFn(dateFrom);\n } else {\n if (this.style == 'compact' && this.compactStyleDisplay == 'both' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n this.selectedDateRangeTextSegment1 = this.formatDate(dateFrom); //skip day name, as we have custom text.\n } else {\n this.selectedDateRangeTextSegment1 = this.formatDate(dateFrom, 'day-long');\n }\n }\n }\n // date range\n else {\n // date range - use provided dateRange format function (if defined)\n if (typeof this.dateRangeFormatFn !== 'undefined') {\n this.selectedDateRangeTextSegment1 = this.dateRangeFormatFn(dateFrom);\n this.selectedDateRangeTextSegment2 = this.dateRangeFormatFn(dateTo);\n }\n // full month\n else if (\n isSameDay(dateFrom, startOfMonth(dateFrom)) &&\n isSameDay(dateTo, endOfMonth(dateTo)) &&\n isSameMonth(dateFrom, dateTo)\n ) {\n this.selectedDateRangeTextSegment1 = this.formatDate(\n dateFrom,\n 'month'\n );\n }\n // date range - use default date format function\n else {\n this.selectedDateRangeTextSegment1 = this.formatDate(\n dateFrom,\n isSameYear(dateFrom, today) ? 'day-short' : 'day'\n );\n this.selectedDateRangeTextSegment2 = this.formatDate(\n dateTo,\n isSameYear(dateTo, today) ? 'day-short' : 'day'\n );\n }\n }\n\n if (this.style == 'compact' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n if (this.compactStyleDisplay == 'predefinedRange') {\n this.selectedDateRangeName = this.selectedDateRange.name;\n this.selectedDateRangeTextSegment1 = '';\n this.selectedDateRangeTextSegment2 = '';\n }\n\n if (this.compactStyleDisplay == 'both') {\n this.selectedDateRangeName = this.selectedDateRange.name + ', ';\n }\n }\n // @Input() public style: 'classic' | 'compact' = 'classic';\n // @Input() public compactStyleDisplay: 'date' | 'predefinedRange' | 'both' = 'predefinedRange';\n // if (this.style == 'compact' && this.compactStyleDisplay == 'predefinedRange' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n // this.selectedDateRangeTextSegment1 = this.selectedDateRange.name;\n // this.selectedDateRangeTextSegment2 = '';\n // return;\n // }\n // if (this.style == 'compact' && this.compactStyleDisplay == 'both' && this.selectedDateRange && this.selectedDateRange != this.customDateRange) {\n // this.selectedDateRangeTextSegment1 = this.selectedDateRange.name;\n // this.selectedDateRangeTextSegment2 = '';\n // return;\n // }\n }\n\n private formatDate(\n date: Date,\n type?: 'month' | 'day' | 'day-long' | 'day-short' | undefined\n ): string {\n switch (type) {\n case 'month':\n return date.toLocaleDateString(this.locales, {\n month: 'long',\n year: 'numeric',\n day: undefined,\n });\n case 'day-long':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n weekday: 'long',\n });\n case 'day-short':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'short',\n });\n case 'day':\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n });\n default:\n return date.toLocaleDateString(this.locales, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n }\n }\n\n private generateDateRanges(force?: boolean) {\n const today = startOfDay(new Date());\n\n if (\n force ||\n !this.predefinedDateRangesGeneratedDate ||\n !isSameDay(this.predefinedDateRangesGeneratedDate, today)\n ) {\n this.predefinedDateRangesGeneratedDate = today;\n\n this.predefinedDateRanges =\n this.datePickerService.getPredefinedDateRanges(\n this.dateRangeDefinitions,\n today,\n this.firstDayOfWeek\n );\n\n this.dateRanges = [...this.predefinedDateRanges];\n this.dateRanges.push(this.customDateRange);\n }\n }\n\n // private methods\n}\n","<!-- <div id=\"datepickerbuttons\"> -->\n <div\n class=\"datepicker d-inline-flex bg-white sds-no-print\"\n role=\"group\"\n [attr.aria-label]=\"componentAriaLabel\"\n [style.width]=\"width\"\n >\n\n <ng-container *ngIf=\"style == 'classic'\">\n <div\n class=\"btn-group\"\n role=\"group\"\n >\n <button\n *ngIf=\"dateRangeDefinitions && dateRangeDefinitions.length > 0\"\n id=\"pickerPredefinedRangeDropdown{{ randomIdReference }}\"\n type=\"button\"\n class=\"\n btn btn-white\n border\n rounded-start\n border-end\n p-0\n sds-fw-400\"\n [disabled]=\"disabled\"\n [style.width]=\"dateRangeDefinitionsWidth\"\n (click)=\"toggleDateRangeSelectorVisibility()\"\n >\n <div class=\"d-flex align-items-center\">\n <div class=\"ps-2 ms-1 me-1 date-range-text text-truncate\">\n {{selectedDateRange.name}}\n </div>\n <button type=\"button\" class=\"btn btn-light date-range-dropdown-button sds-fw-400\" [attr.aria-label]=\"openDateRangeDefinitionsAriaLabel\"\n [attr.aria-controls]=\"elementUUID + '_predefined_periods_dropdown'\">\n <span class=\"dropdown-toggle\"></span>\n </button>\n </div>\n\n </button>\n\n <dx-popover\n *ngIf=\"dateRangeDefinitions && dateRangeDefinitions.length > 0\"\n [id]=\"elementUUID + '_predefined_periods_dropdown'\"\n target=\"#pickerPredefinedRangeDropdown{{ randomIdReference }}\"\n position=\"bottom\"\n [(visible)]=\"showPredefinedOptionsSelector\"\n [wrapperAttr]=\"{ class: 'sds-datepicker-ranges-popover sds-dx-popup-no-arrow' }\"\n [minWidth]=\"dateRangeDefinitionsWidth\"\n\n >\n <div *dxTemplate=\"let data of 'content'\" cdkTrapFocus>\n <div *ngFor=\"let range of dateRanges\">\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"predefined-date-range px-3 py-2 w-100\"\n [class.selected]=\"range === selectedDateRange\"\n (click)=\"changDateRange(range)\"\n (keydown)=\"onRangeKeyReleased($event, range)\"\n >\n {{range.name}}\n </div>\n </div>\n </div>\n </dx-popover>\n </div>\n </ng-container>\n\n\n <button\n *ngIf=\"showPreviousAndNextButtons\"\n class=\"btn btn-white border border-end-0 pe-2 sds-fw-400\"\n [class.rounded-start] = \"style == 'compact' || (!dateRangeDefinitions || dateRangeDefinitions.length === 0)\"\n [class.border-start-0] = \"style == 'classic' && dateRangeDefinitions.length > 0\"\n type=\"button\"\n [attr.aria-label]=\"previousPeriodAriaLabel\"\n [disabled]=\"isMinimumLimit || disabled || previousButtonDisabled\"\n (click)=\"goToPreviousDate()\"\n >\n <fa-icon [icon]=\"previousPeriodIcon\"></fa-icon>\n\n </button>\n\n <button\n #selectedDateRangeButton\n id=\"pickerDropdown{{ randomIdReference }}\"\n class=\"btn btn-white border-top border-bottom text-truncate px-0 selected-period sds-fw-400\"\n [class.rounded-start] = \"(!dateRangeDefinitions || dateRangeDefinitions.length === 0) && !showPreviousAndNextButtons\"\n [class.border-start] = \"(!dateRangeDefinitions || dateRangeDefinitions.length === 0) && !showPreviousAndNextButtons\"\n [class.rounded-end] = \"!showPreviousAndNextButtons\"\n [class.border-end] = \"!showPreviousAndNextButtons\"\n [disabled]=\"disabled\"\n type=\"button\"\n (click)=\"showDatepicker = !showDatepicker\"\n >\n\n <ng-content *ngIf=\"useCustomDisplayContent\" select=\"display\"></ng-content>\n <div *ngIf=\"!useCustomDisplayContent\"\n class=\"d-flex justify-content-center align-items-center\">\n <!-- <div class=\"mx-1\">\n <fa-icon [icon]=\"calendarIcon\" size=\"sm\"></fa-icon>\n </div> -->\n <div class=\"mx-1 text-truncate\">\n <span>{{selectedDateRangeName}}</span>\n <span>{{selectedDateRangeTextSegment1}}</span>\n <fa-icon\n *ngIf=\"selectedDateRangeTextSegment2\"\n class=\"mx-2\"\n [icon]=\"toIcon\"\n size=\"sm\"\n ></fa-icon>\n <span>{{selectedDateRangeTextSegment2}}</span>\n </div>\n </div>\n </button>\n\n <button\n *ngIf=\"showPreviousAndNextButtons\"\n class=\"btn btn-white border rounded-end border-start-0 ps-2 sds-fw-400\"\n type=\"button\"\n [attr.aria-label]=\"nextPeriodAriaLabel\"\n [disabled]=\"isMaximumLimit || disabled || nextButtonDisabled\"\n (click)=\"goToNextDate()\"\n >\n <fa-icon [icon]=\"nextPeriodIcon\"></fa-icon>\n </button>\n </div>\n\n <div class=\"sds-print-only h-100\">\n\n <ng-content *ngIf=\"useCustomDisplayContent\" select=\"display\"></ng-content>\n <div *ngIf=\"!useCustomDisplayContent\"\n class=\"d-flex justify-content-center align-items-center\">\n <!-- <div class=\"mx-1\">\n <fa-icon [icon]=\"calendarIcon\" size=\"sm\"></fa-icon>\n </div> -->\n <div class=\"mx-1 text-truncate\">\n <span>{{selectedDateRangeTextSegment1}}</span>\n <fa-icon\n *ngIf=\"selectedDateRangeTextSegment2\"\n class=\"mx-2\"\n [icon]=\"toIcon\"\n size=\"sm\"\n ></fa-icon>\n <span>{{selectedDateRangeTextSegment2}}</span>\n </div>\n </div>\n </div>\n\n<dx-popover\n target=\"#pickerDropdown{{ randomIdReference }}\"\n position=\"bottom\"\n [(visible)]=\"showDatepicker\"\n (onHiding)=\"onHiddenCalendarPopover()\"\n (onShowing)=\"onShowingCalendarPopover()\"\n class=\"m-0 p-0\"\n [wrapperAttr]=\"{\n class: 'sds-datepicker-popover sds-dx-popup-no-arrow ' + dropdownWrapperClass,\n id: dropdownWrapperId\n }\"\n>\n <dxo-animation>\n <dxo-show\n type=\"pop\"\n [from]=\"{ scale: 0.9 }\"\n [to]=\"{ scale: 1 }\"\n ></dxo-show>\n <dxo-hide\n type=\"fade\"\n [from]=\"1\"\n [to]=\"0\"\n ></dxo-hide>\n </dxo-animation>\n <div *dxTemplate=\"let data of 'content'\" (keydown)=\"onKeydown($event)\" tabindex=\"1\">\n <dx-scroll-view>\n <div class=\"d-flex flex-row\">\n\n <div\n *ngIf=\"style == 'compact' && dateRanges.length > 1\"\n class=\"compact-mode-date-ranges-container d-flex flex-column p-3 bg-gray-100\"\n style=\"border-right: 1px solid var(--bs-gray-200)\"\n >\n <div\n *ngIf=\"translations.presets\" class=\"px-3 py-2\">\n <label>{{ translations.presets }}</label>\n </div>\n <div *ngFor=\"let range of dateRanges\">\n <div\n class=\"predefined-date-range px-3 py-2 w-100\"\n [class.selected]=\"range === selectedDateRange\"\n (click)=\"changDateRange(range)\"\n >\n {{range.name}}\n </div>\n </div>\n </div>\n\n\n <div id=\"datepickercomponent\">\n <div\n *ngIf=\"this.selectionKind == 'period'\"\n id=\"date-inputs\"\n class=\"d-flex flex-wrap justify-content-center align-items-center px-3 pt-3 pb-2\"\n >\n <div class=\"d-flex justify-content-between align-items-center\">\n <dx-date-box\n #selectedDateStartBox\n class=\"border p-1 m-0 text-center rounded datepicker-input\"\n [class.activeInput]=\"selectedDateFocus\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"selectedDateStart\"\n (onValueChanged)=\"onStartDateChange($event)\"\n (onFocusIn)=\"onStartDateFocus()\"\n >\n </dx-date-box>\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center px-2\">\n <fa-icon [icon]=\"toIcon\"></fa-icon>\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\">\n <dx-date-box\n #selectedDateEndBox\n class=\"border p-1 m-0 text-center rounded datepicker-input\"\n [class.activeInput]=\"!selectedDateFocus\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"selectedDateEnd\"\n (onValueChanged)=\"onEndDateChange($event)\"\n (onFocusIn)=\"onEndDateFocus()\"\n >\n </dx-date-box>\n </div>\n </div>\n\n <div class=\"bg-white mx-2 px-2 py-2 date-picker-date-selection\">\n <div\n *ngIf=\"this.selectionKind == 'single'\"\n id=\"date-inputs\"\n class=\"d-flex flex-wrap justify-content-center align-items-center p-2\"\n >\n <div class=\"d-flex justify-content-center align-items-center\">\n <dx-date-box\n #singleDatePickerBox\n class=\"border p-1 m-0 text-center rounded datepicker-input datepicker-input-large\"\n [class.activeInput]=\"true\"\n [showClearButton]=\"false\"\n [showDropDownButton]=\"false\"\n [useMaskBehavior]=\"true\"\n [displayFormat]=\"dateInputDisplayFormat\"\n type=\"date\"\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [(value)]=\"selectedDateInternal\"\n >\n </dx-date-box>\n <!-- (onValueChanged)=\" closeDatepickerPopup()\" -->\n </div>\n </div>\n\n <div\n class=\"d-flex justify-content-center align-items-center\"\n (click)=\"selectEndDate($event)\">\n\n <dx-calendar\n #calendar\n [min]=\"minDate || minDateDefault\"\n [max]=\"maxDate || maxDateDefault\"\n [disabledDates]=\"isDateDisabled\"\n [isValid]=\"isValid\"\n [validationError]=\"validationError\"\n [disabled]=\"disabled\"\n [value]=\"this.selectionKind == 'period' ? selectedDateCalendar : selectedDateInternal\"\n (onValueChanged)=\"onDateChange($event)\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n >\n <div\n *dxTemplate=\"let cellData of 'cell'\"\n [class]=\"'h-100 pt-1' + getCellCssClass(cellData.date)\"\n [style.line-height.px]=\"23\"\n\n >\n\n <div *ngIf=\"lockBeforeDate && (cellData.date | sdsDateCompare: lockBeforeDate : 'lte'); then thenLockBlock else elseDefaultBlock\"></div>\n <ng-template #thenLockBlock>\n <fa-icon [title]=\"lockBeforeDateHint\" [icon]=\"lockIcon\" class=\"locked-day position-absolute-x\"></fa-icon>\n </ng-template>\n <ng-template #elseDefaultBlock>\n {{ cellData.text }}\n </ng-template>\n </div>\n </dx-calendar>\n </div>\n </div>\n\n <div\n *ngIf=\"this.selectionKind == 'period'\"\n class=\"d-flex justify-content-end align-items-center px-3 pt-2 pb-3\"\n >\n <button\n class=\"sds-btn-secondary sds-fw-400\"\n [disabled]=\"disabled\"\n (click)=\"showDatepicker = false\"\n type=\"button\"\n >\n {{ translations.cancel}}\n </button>\n <!-- (click)=\"closeDatepickerPopup()\" -->\n <button\n class=\"sds-btn-primary ms-1 sds-fw-400\"\n [disabled]=\"disabled\"\n (click)=\"applyPeriodPicker()\"\n type=\"button\"\n >\n {{ translations.apply}}\n </button>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n</dx-popover>\n<!-- </div> -->\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SdsDatePickerService"],"mappings":"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"}
|