UNPKG

313 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-bootstrap-datepicker.js","sources":["../../../../src/datepicker/bs-datepicker.config.ts","../../../../src/datepicker/datepicker-animations.ts","../../../../src/datepicker/base/bs-datepicker-container.ts","../../../../src/datepicker/reducer/bs-datepicker.actions.ts","../../../../src/datepicker/bs-locale.service.ts","../../../../src/datepicker/reducer/bs-datepicker.effects.ts","../../../../src/datepicker/reducer/_defaults.ts","../../../../src/datepicker/reducer/bs-datepicker.state.ts","../../../../src/datepicker/utils/bs-calendar-utils.ts","../../../../src/datepicker/utils/matrix-utils.ts","../../../../src/datepicker/engine/calc-days-calendar.ts","../../../../src/datepicker/engine/format-days-calendar.ts","../../../../src/datepicker/engine/flag-days-calendar.ts","../../../../src/datepicker/engine/view-mode.ts","../../../../src/datepicker/engine/format-months-calendar.ts","../../../../src/datepicker/engine/flag-months-calendar.ts","../../../../src/datepicker/engine/format-years-calendar.ts","../../../../src/datepicker/engine/flag-years-calendar.ts","../../../../src/datepicker/reducer/bs-datepicker.reducer.ts","../../../../src/datepicker/reducer/bs-datepicker.store.ts","../../../../src/datepicker/themes/bs/bs-datepicker-container.component.ts","../../../../src/datepicker/bs-datepicker.component.ts","../../../../src/datepicker/bs-datepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","../../../../src/datepicker/bs-datepicker-inline.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-container.component.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.component.ts","../../../../src/datepicker/bs-datepicker-input.directive.ts","../../../../src/datepicker/bs-daterangepicker.config.ts","../../../../src/datepicker/bs-daterangepicker.component.ts","../../../../src/datepicker/bs-daterangepicker-input.directive.ts","../../../../src/datepicker/date-formatter.ts","../../../../src/datepicker/datepicker-inner.component.ts","../../../../src/datepicker/datepicker.config.ts","../../../../src/datepicker/datepicker.component.ts","../../../../src/datepicker/daypicker.component.ts","../../../../src/datepicker/monthpicker.component.ts","../../../../src/datepicker/yearpicker.component.ts","../../../../src/datepicker/themes/bs/bs-calendar-layout.component.ts","../../../../src/datepicker/themes/bs/bs-current-date-view.component.ts","../../../../src/datepicker/themes/bs/bs-custom-dates-view.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","../../../../src/datepicker/models/index.ts","../../../../src/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","../../../../src/datepicker/themes/bs/bs-days-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-months-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-timepicker-view.component.ts","../../../../src/datepicker/themes/bs/bs-years-calendar-view.component.ts","../../../../src/datepicker/bs-datepicker.module.ts","../../../../src/datepicker/datepicker.module.ts","../../../../src/datepicker/ngx-bootstrap-datepicker.ts"],"names":["height","width","shift"],"mappings":";;;;;;;;;;;;;AAUA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n DatepickerRenderOptions,\n BsDatepickerViewMode,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText\n} from './models';\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\n\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** sets use UTC date time format */\n useUtc = false;\n /** turn on/off animation */\n isAnimated = false;\n value?: Date | Date[];\n isDisabled?: boolean;\n /**\n * Default min date for all date/range pickers\n */\n minDate?: Date;\n /**\n * Default max date for all date/range pickers\n */\n maxDate?: Date;\n /**\n * The view that the datepicker should start in\n */\n startView: BsDatepickerViewMode = 'day';\n /**\n * Default date custom classes for all date/range pickers\n */\n dateCustomClasses?: DatepickerDateCustomClasses[];\n /**\n * Default tooltip text for all date/range pickers\n */\n dateTooltipTexts?: DatepickerDateTooltipText[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Show one months for special cases (only for dateRangePicker)\n * 1. maxDate is equal to today's date\n * 2. minDate's month is equal to maxDate's month\n */\n displayOneMonthRange?: boolean;\n /**\n * Enable specific dates\n */\n datesEnabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Allows select first date of the week by click on week number\n */\n selectWeek?: boolean;\n\n /**\n * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\n */\n selectWeekDateRange?: boolean;\n\n /**\n * Shows previous and current month, instead of current and next (dateRangePicker only)\n */\n showPreviousMonth?: boolean;\n\n /**\n * Prevents change to next month for right calendar in two calendars view (dateRangePicker only)\n */\n preventChangeToNextMonth?: boolean;\n\n /**\n * Add class to current day\n */\n customTodayClass?: string;\n\n /**\n * Default mode for all date pickers\n */\n minMode?: BsDatepickerViewMode;\n\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n returnFocusToInput = false;\n\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n containerClass = 'theme-green';\n\n // DatepickerRenderOptions\n displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n showWeekNumbers = true;\n\n dateInputFormat = 'L';\n // range picker\n rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n rangeInputFormat = 'L';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n /**\n * Max Date Range in days\n */\n maxDateRange?: number;\n\n // DatepickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n\n /**\n * Shows 'today' button\n */\n showTodayButton = false;\n\n /**\n * Shows clear button\n */\n showClearButton = false;\n\n /**\n * Positioning of 'today' button\n */\n todayPosition = 'center';\n\n /**\n * Positioning of 'clear' button\n */\n clearPosition = 'right';\n\n /**\n * Label for 'today' button\n */\n todayButtonLabel = 'Today';\n\n /**\n * Label for 'clear' button\n */\n clearButtonLabel = 'Clear';\n\n /**\n * Label for 'custom range' button\n */\n customRangeButtonLabel = 'Custom Range';\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","// datepicker container component\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n containerClass = '';\n isOtherMonthsActive?: boolean;\n showTodayBtn?: boolean;\n todayBtnLbl?: string;\n todayPos?: string;\n showClearBtn?: boolean;\n clearBtnLbl?: string;\n clearPos?: string;\n\n _effects?: BsDatepickerEffects;\n customRanges: BsCustomDates[] = [];\n customRangeBtnLbl?: string;\n chosenRange: Date[] = [];\n\n multipleCalendars?: boolean;\n\n set minDate(value: Date|undefined) {\n this._effects?.setMinDate(value);\n }\n\n set maxDate(value: Date|undefined) {\n this._effects?.setMaxDate(value);\n }\n set daysDisabled(value: number[]|undefined) {\n this._effects?.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]|undefined) {\n this._effects?.setDatesDisabled(value);\n }\n\n set datesEnabled(value: Date[]|undefined) {\n this._effects?.setDatesEnabled(value);\n }\n\n set isDisabled(value: boolean|undefined) {\n this._effects?.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatepickerDateCustomClasses[]|undefined) {\n this._effects?.setDateCustomClasses(value);\n }\n\n set dateTooltipTexts(value: DatepickerDateTooltipText[]|undefined) {\n this._effects?.setDateTooltipTexts(value);\n }\n\n viewMode?: Observable<BsDatepickerViewMode|undefined>;\n monthsCalendar?: Observable<MonthsCalendarViewModel[]|undefined>;\n yearsCalendar?: Observable<YearsCalendarViewModel[]|undefined>;\n options$!: Observable<DatepickerRenderOptions|undefined>;\n\n _daysCalendar$!: Observable<DaysCalendarViewModel[]|undefined>;\n _daysCalendarSub = new Subscription();\n\n set daysCalendar$(value: Observable<DaysCalendarViewModel[]|undefined>) {\n this._daysCalendar$ = value;\n this._daysCalendarSub.unsubscribe();\n this._daysCalendarSub.add(this._daysCalendar$.subscribe(value => {\n this.multipleCalendars = !!value && value.length > 1;\n }));\n }\n\n get daysCalendar$(): Observable<DaysCalendarViewModel[]|undefined> {\n return this._daysCalendar$;\n }\n\n\n // todo: valorkin fix\n // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\n setViewMode(event: BsDatepickerViewMode): void {}\n\n // eslint-disable-next-line\n navigateTo(event: BsNavigationEvent): void {}\n\n // eslint-disable-next-line\n dayHoverHandler(event: CellHoverEvent): void {}\n\n // eslint-disable-next-line\n weekHoverHandler(event: WeekViewModel): void {}\n\n // eslint-disable-next-line\n monthHoverHandler(event: CellHoverEvent): void {}\n\n // eslint-disable-next-line\n yearHoverHandler(event: CellHoverEvent): void {}\n\n // eslint-disable-next-line\n daySelectHandler(day: DayViewModel): void {}\n\n // eslint-disable-next-line\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n // eslint-disable-next-line\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n // eslint-disable-next-line\n setRangeOnCalendar(dates: BsCustomDates): void {}\n\n // eslint-disable-next-line\n setToday(): void {}\n\n // eslint-disable-next-line\n clearDate(): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _stopPropagation(event: any): void {\n event.stopPropagation();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from 'ngx-bootstrap/chronos';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n BsDatepickerViewMode,\n BsViewNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText\n} from '../models';\n\n@Injectable()\nexport class BsDatepickerActions {\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\n static readonly FORMAT = '[datepicker] format datepicker values';\n static readonly FLAG = '[datepicker] set flags';\n static readonly SELECT = '[datepicker] select date';\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n static readonly NAVIGATE_TO = '[datepicker] change view date';\n static readonly SET_OPTIONS = '[datepicker] update render options';\n static readonly HOVER = '[datepicker] hover date';\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n static readonly SET_MIN_DATE = '[datepicker] set min date';\n static readonly SET_MAX_DATE = '[datepicker] set max date';\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n static readonly SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n calculate(): Action {\n return { type: BsDatepickerActions.CALCULATE };\n }\n\n format(): Action {\n return { type: BsDatepickerActions.FORMAT };\n }\n\n flag(): Action {\n return { type: BsDatepickerActions.FLAG };\n }\n\n select(date?: Date): Action {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n\n changeViewMode(event: BsDatepickerViewMode): Action {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n\n navigateStep(step?: TimeUnit): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n\n setOptions(options: DatepickerRenderOptions): Action {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n\n // date range picker\n selectRange(value?: Date[]): Action {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n\n minDate(date?: Date): Action {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n\n maxDate(date?: Date): Action {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n\n daysDisabled(days?: number[]): Action {\n return {\n type: BsDatepickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n\n datesDisabled(dates?: Date[]): Action {\n return {\n type: BsDatepickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n\n datesEnabled(dates?: Date[]): Action {\n return {\n type: BsDatepickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n\n isDisabled(value?: boolean): Action {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n\n setDateCustomClasses(value?: DatepickerDateCustomClasses[]): Action {\n return {\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n\n setDateTooltipTexts(value?: DatepickerDateTooltipText[]): Action {\n return {\n type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,\n payload: value\n };\n }\n\n setLocale(locale: string): Action {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class BsLocaleService {\n private _defaultLocale = 'en';\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\n private _localeChange: Observable<string> = this._locale.asObservable();\n\n get locale(): BehaviorSubject<string> {\n return this._locale;\n }\n\n get localeChange(): Observable<string> {\n return this._localeChange;\n }\n\n get currentLocale(): string {\n return this._locale.getValue();\n }\n\n use(locale: string): void {\n if (locale === this.currentLocale) {\n return;\n }\n\n this._locale.next(locale);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerStore } from './bs-datepicker.store';\n\n\n@Injectable()\nexport class BsDatepickerEffects {\n viewMode?: Observable<BsDatepickerViewMode>;\n daysCalendar?: Observable<DaysCalendarViewModel[]>;\n monthsCalendar?: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar?: Observable<YearsCalendarViewModel[]>;\n options?: Observable<DatepickerRenderOptions>;\n\n private _store?: BsDatepickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: BsDatepickerActions,\n private _localeService: BsLocaleService) {\n }\n\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n this._store = _bsDatepickerStore;\n\n return this;\n }\n\n /** setters */\n\n setValue(value?: Date): void {\n this._store?.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value?: Date[]): void {\n this._store?.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.minDate(value));\n\n return this;\n }\n\n setMaxDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.maxDate(value));\n\n return this;\n }\n\n setDaysDisabled(value?: number[]): BsDatepickerEffects {\n this._store?.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value?: Date[]): BsDatepickerEffects {\n this._store?.dispatch(this._actions.datesDisabled(value));\n\n return this;\n }\n\n setDatesEnabled(value?: Date[]): BsDatepickerEffects {\n this._store?.dispatch(this._actions.datesEnabled(value));\n\n return this;\n }\n\n setDisabled(value?: boolean): BsDatepickerEffects {\n this._store?.dispatch(this._actions.isDisabled(value));\n\n return this;\n }\n\n setDateCustomClasses(value?: DatepickerDateCustomClasses[]): BsDatepickerEffects {\n this._store?.dispatch(this._actions.setDateCustomClasses(value));\n\n return this;\n }\n\n setDateTooltipTexts(value?: DatepickerDateTooltipText[]): BsDatepickerEffects {\n this._store?.dispatch(this._actions.setDateTooltipTexts(value));\n\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\n this._store?.dispatch(this._actions.setOptions(_options));\n\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n if (!this._store) {\n return this;\n }\n\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths)\n .pipe(filter(months => !!months));\n\n // month calendar\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar)\n .pipe(filter(months => !!months));\n\n // year calendar\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged)\n .pipe(filter(years => !!years));\n\n container.viewMode = this._store.select(state => state.view?.mode);\n\n container.options$ = combineLatest([\n this._store.select(state => state.showWeekNumbers),\n this._store.select(state => state.displayMonths)\n ])\n .pipe(map((latest) => ({\n showWeekNumbers: latest[0],\n displayMonths: latest[1]\n })\n ));\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.setViewMode = (event: BsDatepickerViewMode): void => {\n this._store?.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store?.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n\n this._store?.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n if (!this._store) {\n return this;\n }\n\n this._subs.push(\n this._store.select(state => state.view).subscribe(() => {\n this._store?.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(\n filter(monthModel => !!monthModel)\n )\n .subscribe(() => this._store?.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(\n filter(month => !!month)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(\n filter(selectedDate => !!selectedDate)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(\n filter(selectedRange => !!selectedRange)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(\n filter(state => !!state)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(\n filter(hoveredDate => !!hoveredDate)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // date custom classes\n this._subs.push(\n this._store\n .select(state => state.dateCustomClasses)\n .pipe(\n filter(dateCustomClasses => !!dateCustomClasses)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // date tooltip texts\n this._subs.push(\n this._store\n .select(state => state.dateTooltipTexts)\n .pipe(\n filter(dateTooltipTexts => !!dateTooltipTexts)\n )\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // on locale change\n this._subs.push(\n this._localeService.localeChange\n .subscribe(locale => this._store?.dispatch(this._actions.setLocale(locale)))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n\nexport const dayInMilliseconds = 24 * 60 * 60 * 1000;\n","import {\n BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n date: Date;\n mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState\n implements DatepickerRenderOptions, DatepickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view?: BsDatepickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n daysDisabled?: number[];\n datesDisabled?: Date[];\n datesEnabled?: Date[];\n minMode?: BsDatepickerViewMode;\n dateCustomClasses?: DatepickerDateCustomClasses[];\n dateTooltipTexts?: DatepickerDateTooltipText[];\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n selectFromOtherMonth?: boolean;\n showPreviousMonth?: boolean; // dateRangePicker only;\n preventChangeToNextMonth?: boolean; // dateRangePicker only;\n displayOneMonthRange?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions?: MonthViewOptions;\n\n // DatepickerRenderOptions\n showWeekNumbers = true;\n displayMonths = 1;\n\n // DatepickerFormatOptions\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n\n weekNumbers?: string;\n}\n\nconst _initialView: BsDatepickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n new BsDatepickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isArray,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\n\nexport function getStartingDayOfCalendar(date: Date,\n options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset?: number): number {\n const _startingDayOffset = Number(startingDayOffset);\n if (isNaN(_startingDayOffset)) {\n return 0;\n }\n\n if (_startingDayOffset === 0) {\n return weekday;\n }\n\n const offset = weekday - _startingDayOffset % 7;\n\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound || false;\n}\n\nexport function isYearDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound || false;\n}\n\nexport function isDisabledDate(date?: Date, datesDisabled?: Date[]): boolean {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function isEnabledDate(date?: Date, datesEnabled?: Date[]): boolean {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n\n return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model?.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n\nexport function checkRangesWithMaxDate(ranges?: BsCustomDates[], maxDate?: Date): BsCustomDates[] | undefined {\n if (!ranges) return ranges;\n if (!maxDate) return ranges;\n if (!ranges.length && !ranges[0].value) return ranges;\n\n ranges.forEach((item: BsCustomDates) => {\n if (!item || !item.value) return ranges;\n if (item.value instanceof Date) return ranges;\n if (!(item.value instanceof Array && item.value.length) ) return ranges;\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n return ranges;\n });\n return ranges;\n}\n\nexport function checkBsValue(date?: Array<Date> | Date | (Date | undefined)[], maxDate?: Date): Array<Date> | Date | (Date|undefined)[] | undefined {\n if (!date) return date;\n if (!maxDate) return date;\n if (date instanceof Array && !date.length) return date;\n if (date instanceof Date) return date;\n return compareDateWithMaxDateHelper(date, maxDate);\n}\n\nfunction compareDateWithMaxDateHelper <T>(date: T, maxDate: Date): T | Date[] {\n if (date instanceof Array) {\n const editedValues = date.map(item => {\n if (!item) return item;\n if (isAfter(item, maxDate, 'date')) item = maxDate;\n return item;\n });\n return editedValues;\n }\n return date;\n}\n","import { TimeUnit, shiftDate } from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n options: MatrixOptions,\n fn: CreateMatrixCb<T>\n): T[][] {\n let prevValue = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","// user and model input should handle parsing and validating input values\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix, MatrixOptions } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n startingDate: Date,\n options: MonthViewOptions\n): DaysCalendarModel {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n // todo test\n const matrixOptions: MatrixOptions = {\n width: options.width || 0,\n height: options.height || 0,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n return {\n daysMatrix,\n month: firstDay\n };\n}\n","import {\n DatepickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n formatOptions: DatepickerFormatOptions,\n monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(\n daysCalendar.month,\n formatOptions.monthTitle,\n formatOptions.locale\n ),\n yearTitle: formatDate(\n daysCalendar.month,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n weekNumbers: getWeekNumbers(\n daysCalendar.daysMatrix,\n formatOptions.weekNumbers,\n formatOptions.locale\n ),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n })),\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n format?: string,\n locale?: string): string[] {\n return daysMatrix.map(\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n );\n}\n\nexport function getShiftedWeekdays(locale?: string): string[] {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort() as string[];\n const firstDayOfWeek = _locale.firstDayOfWeek();\n\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n DaysCalendarViewModel,\n DayViewModel,\n WeekViewModel,\n DatepickerDateCustomClasses,\n DatepickerDateTooltipText\n} from '../models';\n\nimport {\n isAfter,\n isBefore,\n isDisabledDay,\n isSameDay,\n isSameMonth,\n shiftDate\n} from 'ngx-bootstrap/chronos';\n\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n daysDisabled: number[];\n datesDisabled: Date[];\n datesEnabled: Date[];\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatepickerDateCustomClasses[];\n dateTooltipTexts: DatepickerDateTooltipText[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: Partial<FlagDaysCalendarOptions>\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n const isHovered =\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n\n const isSelected =\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n\n const isInRange =\n !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n const isDisabled =\n options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n .reduce((previousValue, currentValue) => {\n previousValue.push(currentValue);\n return previousValue;\n }, [] as string[])\n .join(' ')\n || '';\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses,\n tooltipText\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses ||\n day.tooltipText !== newDay.tooltipText\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: -1 }),\n options.minDate,\n options.maxDate\n );\n formattedMonth.disableRightArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: 1 }),\n options.minDate,\n options.maxDate\n );\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange?: Date[],\n hoveredDate?: Date\n): boolean {\n if (!date || !selectedRange || !selectedRange[0]) {\n return false;\n }\n\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n\n return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {\n DatepickerFormatOptions,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions\n): MonthsCalendarViewModel {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(\n viewDate,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n hideRightArrow: false,\n hideLeftArrow: false,\n disableRightArrow: false,\n disableLeftArrow: false\n };\n}\n","import { isSameMonth, shiftDate } from 'ngx-bootstrap/chronos';\nimport {\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: Partial<FlagMonthCalendarOptions>\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n\n monthCalendar.hideRightArrow =\n (!!options.monthIndex || options.monthIndex === 0 )\n && (!!options.displayMonths || options.displayMonths === 0)\n && options.monthIndex < options.displayMonths\n && options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n monthCalendar.disableRightArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return monthCalendar;\n}\n","import {\n DatepickerFormatOptions,\n YearsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions,\n previousInitialDate?: Date\n): YearsCalendarViewModel {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle,\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n yearsMatrix: CalendarCellViewModel[][],\n formatOptions: DatepickerFormatOptions\n): string {\n const from = formatDate(\n yearsMatrix[0][0].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n const to = formatDate(\n yearsMatrix[height - 1][width - 1].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n\n return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from 'ngx-bootstrap/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: Partial<FlagYearsCalendarOptions>\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n !!options.yearIndex && !!options.displayMonths &&\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n\n yearsCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return yearsCalendar;\n}\n","import { BsDatepickerState, BsDatepickerViewState, initialDatepickerState } from './bs-datepicker.state';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n setFullDate,\n shiftDate,\n isArray,\n isDateValid,\n startOf,\n getLocale,\n isAfter,\n isBefore,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatepickerFormatOptions, BsDatepickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\n\n\nexport function bsDatepickerReducer(state: BsDatepickerState = initialDatepickerState,\n action: Action): BsDatepickerState {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state);\n }\n\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n if (!state.view || !payload.unit) {\n return state;\n }\n\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode: BsDatepickerViewMode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n } else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) {\n return state;\n }\n\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n\n case BsDatepickerActions.SELECT: {\n if (!state.view) {\n return state;\n }\n\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_OPTIONS: {\n if (!state.view) {\n return state;\n }\n\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n\n // provided value is not supported :)\n // need to report it somehow\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n if (!state.view) {\n return state;\n }\n\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {\n return Object.assign({}, state, {\n dateTooltipTexts: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) {\n return state;\n }\n\n // how many calendars\n let displayMonths: number | undefined;\n if (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) {\n displayMonths = 1;\n } else {\n displayMonths = state.displayMonths || 1;\n }\n\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day' && state.monthViewOptions) {\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n let monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(\n viewDate,\n state.monthViewOptions\n );\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n // Check if parameter enabled and check if it's not months navigation event\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n if (state.flaggedMonths.length && state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n monthsModel = state.flaggedMonths\n .map(item => {\n if (state.monthViewOptions) {\n return calcDaysCalendar(\n item.month,\n state.monthViewOptions\n );\n }\n return null;\n })\n .filter(item => item !== null);\n }\n }\n\n return Object.assign({}, state, { monthsModel });\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state),\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n );\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction formatReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) {\n return state;\n }\n\n if (state.view.mode === 'day' && state.monthsModel) {\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n );\n\n return Object.assign({}, state, { formattedMonths });\n }\n\n // how many calendars\n const displayMonths = state.displayMonths || 1;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction flagReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) {\n return state;\n }\n\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.formattedMonths && state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map(\n (formattedMonth, monthIndex) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n dateTooltipTexts: state.dateTooltipTexts,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month' && state.monthsCalendar) {\n const flaggedMonthsCalendar = state.monthsCalendar.map(\n (formattedMonth, monthIndex) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\n (formattedMonth, yearIndex) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n if (!state.view) {\n return state;\n }\n\n const date = shiftViewDate(state, action);\n if (!date) {\n return state;\n }\n\n const newState: {view: BsDatepickerViewState} = {\n view: {\n mode: state.view.mode,\n date\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date | undefined {\n if (!state.view) {\n return undefined;\n }\n\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n if (initialDate) {\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n return shiftDate(middleDate, action.payload);\n }\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n\n weekNumbers: state.weekNumbers\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate?: Date, maxDate?: Date) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate?: Date, maxDate?: Date) {\n if (maxDate && isSame(maxDate, viewDate, 'day')) {\n return true;\n }\n\n return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\n\n@Injectable()\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState<BsDatepickerState>(\n initialDatepickerState,\n _dispatcher,\n bsDatepickerReducer\n );\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\n@Component({\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n\n set value(value: Date|undefined) {\n this._effects?.setValue(value);\n }\n\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n animationState = 'void';\n\n _subs: Subscription[] = [];\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1))\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this.showTodayBtn = this._config.showTodayButton;\n this.todayBtnLbl = this._config.todayButtonLabel;\n this.todayPos = this._config.todayPosition;\n this.showClearBtn = this._config.showClearButton;\n this.clearBtnLbl = this._config.clearButtonLabel;\n this.clearPos = this._config.clearPosition;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n this._effects?.init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .select((state: any) => state.selectedDate)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .subscribe((date: any) => this.valueChange.emit(date))\n );\n\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n }\n\n setToday(): void {\n this._store.dispatch(this._actions.select(new Date()));\n }\n\n clearDate(): void {\n this._store.dispatch(this._actions.select(undefined));\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects?.destroy();\n }\n}\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { checkBsValue } from './utils/bs-calendar-utils';\n\n@Directive({\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n /**\n * Emits an event when the datepicker is shown\n */\n @Output() onShown: EventEmitter<unknown>;\n /**\n * Emits an event when the datepicker is hidden\n */\n @Output() onHidden: EventEmitter<unknown>;\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$ = new Subject();\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled = false;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate?: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate?: Date;\n /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode?: BsDatepickerViewMode;\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled?: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesEnabled?: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDatepickerContainerComponent>;\n private readonly _dateInputFormat$ = new Subject<string>();\n\n constructor(public _config: BsDatepickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n _bsValue?: Date;\n\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date | undefined) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n get dateInputFormat$(): Observable<string> {\n return this._dateInputFormat$;\n }\n\n private _bsConfig?: Partial<BsDatepickerConfig>;\n\n get bsConfig(): Partial<BsDatepickerConfig> | undefined {\n return this._bsConfig;\n }\n\n /**\n * Config object for datepicker\n */\n @Input() set bsConfig(bsConfig: Partial<BsDatepickerConfig>| undefined) {\n this._bsConfig = bsConfig;\n this.setConfig();\n this._dateInputFormat$.next(bsConfig && bsConfig.dateInputFormat);\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { BsDatepickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-datepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { checkBsValue } from './utils/bs-calendar-utils';\n\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n /**\n * Config object for datepicker\n */\n @Input() bsConfig?: Partial<BsDatepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled = false;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate?: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate?: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled?: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesDisabled?: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n protected _subs: Subscription[] = [];\n private readonly _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDatepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDatepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n _bsValue?: Date;\n\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n /** turn on/off animation */\n isAnimated = false;\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\nimport { dayInMilliseconds } from '../../reducer/_defaults';\n\n@Component({\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n set value(value: Date[]) {\n this._effects?.setRangeValue(value);\n }\n\n valueChange = new EventEmitter<Date[]>();\n animationState = 'void';\n\n _rangeStack: Date[] = [];\n chosenRange: Date[] = [];\n _subs: Subscription[] = [];\n\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n this.customRanges = this._config.ranges || [];\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1))\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects?.init(this._store)\n // intial state options\n // todo: fix this, split configs\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .subscribe(dateRange => {\n this.valueChange.emit(dateRange);\n this.chosenRange = dateRange || [];\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n this.rangesProcessing(day);\n }\n\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n rangesProcessing(day: CalendarCellViewModel): void {\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects?.destroy();\n }\n\n setRangeOnCalendar(dates: BsCustomDates): void {\n if (dates) {\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\n let maxDateRange = new Date(currentSelection);\n\n if (this._config.maxDate) {\n const maxDateValueInMilliseconds = this._config.maxDate.getTime();\n const maxDateRangeInMilliseconds = currentSelection.getTime() + ((this._config.maxDateRange || 0) * dayInMilliseconds );\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ?\n new Date(this._config.maxDate) :\n new Date(maxDateRangeInMilliseconds);\n } else {\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n }\n\n this._effects?.setMaxDate(maxDateRange);\n }\n}\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\nimport { BsDaterangepickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-daterangepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\nimport { checkBsValue, checkRangesWithMaxDate } from './utils/bs-calendar-utils';\n\n@Directive({\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue?: Date[];\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig?: Partial<BsDaterangepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled = false;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate?: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate?: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled?: Date[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled?: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private readonly _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDaterangepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n this.setConfig();\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange\n });\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isDate,\n isDateValid,\n parseDate,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[bsDatepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class BsDatepickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n private _validatorChange = Function.prototype;\n private _value?: Date;\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: BsDatepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {}\n\n ngOnInit() {\n const setBsValue = (value: Date) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe(setBsValue)\n );\n\n // update input value on locale change\n this._subs.add(\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n\n this._subs.add(\n this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n}\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event: KeyboardEvent): void {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(value?: Date): void {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n\n onChange(event: Event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n\n return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = void 0;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n}\n","import { AfterViewInit, ComponentRef,\n Directive, ElementRef, EventEmitter,\n Input, OnChanges, OnDestroy, OnInit,\n Output, Renderer2, SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { ComponentLoaderFactory, ComponentLoader } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { DatepickerDateCustomClasses } from './models';\nimport { checkBsValue, checkRangesWithMaxDate } from './utils/bs-calendar-utils';\n\n@Directive({\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n})\nexport class BsDaterangepickerDirective\n implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n @Output() onShown: EventEmitter<unknown>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n @Output() onHidden: EventEmitter<unknown>;\n\n _bsValue?: (Date|undefined)[];\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$ = new Subject();\n\n /**\n * Initial value of daterangepicker\n */\n @Input()\n set bsValue(value: (Date|undefined)[] | undefined) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for daterangepicker\n */\n @Input() set bsConfig(bsConfig: Partial<BsDaterangepickerConfig | undefined>) {\n this._bsConfig = bsConfig;\n this.setConfig();\n this._rangeInputFormat$.next(bsConfig && bsConfig.rangeInputFormat);\n }\n get bsConfig(): Partial<BsDaterangepickerConfig> | undefined {\n return this._bsConfig;\n }\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled = false;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate?: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate?: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled?: Date[];\n\n /**\n * Enable specific dates\n */\n @Input() datesEnabled?: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange = new EventEmitter<((Date|undefined)[]|undefined)>();\n\n get rangeInputFormat$(): Observable<string> {\n return this._rangeInputFormat$;\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDaterangepickerContainerComponent>;\n private _bsConfig?: Partial<BsDaterangepickerConfig>;\n private readonly _rangeInputFormat$ = new Subject<string>();\n\n constructor(public _config: BsDaterangepickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n }\n\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.bsConfig,\n {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange\n }\n );\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n parseDate,\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isArray,\n isDateValid,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[bsDaterangepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class BsDaterangepickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n private _validatorChange = Function.prototype;\n private _value?: (Date|undefined)[];\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: BsDaterangepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n const setBsValue = (value: (Date|undefined)[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe((value: Date[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n }));\n\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n\n this._subs.add(\n // update input value on format change\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event: KeyboardEvent) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(date?: (Date|undefined)[]): void {\n let range = '';\n if (date) {\n const start: string = !date[0] ? ''\n : formatDate(date[0],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n const end: string = !date[1] ? ''\n : formatDate(\n date[1],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n\n onChange(event: Event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n let _value: [Date, Date] = c.value;\n const errors: Record<string, unknown>[] = [];\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n _value = _value.slice().sort((a, b) => a.getTime() - b.getTime()) as [Date, Date];\n\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n\n if (!_isFirstDateValid) {\n return { bsDate: { invalid: _value[0] } };\n }\n\n if (!_isSecondDateValid) {\n return { bsDate: { invalid: _value[1] } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ bsDate: { minDate: this._picker.minDate } });\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ bsDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n\n return errors;\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = void 0;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n let _input: (string | Date)[] = [];\n if (typeof value === 'string') {\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n _input = value\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n .map(_val => _val.trim());\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n this._value = _input\n .map((_val: string | Date): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? void 0 : date));\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { formatDate } from 'ngx-bootstrap/chronos';\n\nexport class DateFormatter {\n format(date: Date, format: string, locale?: string): string {\n return formatDate(date, format, locale);\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\ntype CompareDatesFn = (date1: Date, date2: Date) => number;\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--&lt;!&ndash;ng-keydown=\"keydown($event)\"&ndash;&gt;-->\n <div *ngIf='datepickerMode' class='well well-sm bg-faded p-a card' role='application'>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input() locale?: string;\n @Input() datepickerMode?: string;\n @Input() startingDay?: number;\n @Input() yearRange?: number;\n\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() minMode?: string;\n @Input() maxMode?: string;\n @Input() showWeeks?: boolean;\n @Input() formatDay?: string;\n @Input() formatMonth?: string;\n @Input() formatYear?: string;\n @Input() formatDayHeader?: string;\n @Input() formatDayTitle?: string;\n @Input() formatMonthTitle?: string;\n @Input() onlyCurrentMonth?: boolean;\n @Input() shortcutPropagation?: boolean;\n @Input() customClass?: { date: Date; mode: string; clazz: string }[];\n @Input() monthColLimit = 0;\n @Input() yearColLimit = 0;\n @Input() dateDisabled?: { date: Date; mode: string }[];\n @Input() dayDisabled?: number[];\n @Input() initDate?: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n stepDay = {};\n stepMonth = {};\n stepYear = {};\n\n uniqueId?: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected selectedDate?: Date;\n protected activeDateId?: string;\n protected refreshViewHandlerDay?: () => void;\n protected compareHandlerDay?: CompareDatesFn;\n protected refreshViewHandlerMonth?: () => void;\n protected compareHandlerMonth?: CompareDatesFn;\n protected refreshViewHandlerYear?: () => void;\n protected compareHandlerYear?: CompareDatesFn;\n\n protected _activeDate?: Date;\n\n @Input()\n get activeDate(): Date|undefined {\n return this._activeDate;\n }\n\n set activeDate(value: Date|undefined) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (\n previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()\n ) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: CompareDatesFn, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1?: Date, date2?: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: () => void, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createDateObject(date: Date, format: string): any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dateObject: any = {};\n dateObject.date = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n split(arr: any[], size: number): any[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hours === 23 ? hours + 2 : 0\n );\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual && this.datepickerMode) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep && this.activeDate) {\n const year =\n this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month =\n this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if (\n (this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)\n ) {\n return;\n }\n\n if (this.datepickerMode) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n }\n\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: ({\n date: Date;\n mode: string;\n clazz: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } | undefined) = this.customClass.find((customClass: any) => {\n return (\n customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode\n );\n }, this);\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(\n date1Disabled: { date: Date; mode: string },\n date2: Date\n ): number | undefined {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach(\n (disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n }\n );\n }\n\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n if (isDateDisabled) {\n return isDateDisabled;\n }\n\n const minDate = Number(this.minDate && this.compare(date, this.minDate));\n if (!isNaN(minDate)) {\n return minDate < 0;\n }\n\n const maxDate = Number(this.maxDate && this.compare(date, this.maxDate));\n if (!isNaN(maxDate)) {\n return maxDate > 0;\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Provider,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n@Component({\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input() initDate?: Date;\n /** oldest selectable date */\n @Input() minDate?: Date;\n /** latest selectable date */\n @Input() maxDate?: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input() minMode?: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input() maxMode?: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input() formatDay?: string;\n /** format of month in year */\n @Input() formatMonth?: string;\n /** format of year in year range */\n @Input() formatYear?: string;\n /** format of day in week header */\n @Input() formatDayHeader?: string;\n /** format of title when selecting day */\n @Input() formatDayTitle?: string;\n /** format of title when selecting month */\n @Input() formatMonthTitle?: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() startingDay?: number;\n /** number of years displayed in year selection */\n @Input() yearRange?: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input() onlyCurrentMonth?: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input() shortcutPropagation?: boolean;\n /** number of months displayed in a single row of month picker */\n @Input() monthColLimit = 3;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit = 5;\n /** array of custom css classes to be applied to targeted dates */\n @Input() customClass?: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input() dateDisabled?: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() dayDisabled?: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date|undefined {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date|undefined) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(\n undefined\n );\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker?: DatePickerInnerComponent;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange: any = Function.prototype;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate?: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n if (this._datePicker?.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker?.select(value, false);\n\n return;\n }\n\n this.activeDate = value ? new Date(value) : void 0;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","// @deprecated\nimport { Component, OnInit } from '@angular/core';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">‹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">&lt;</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">›</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">&gt;\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n})\nexport class DayPickerComponent implements OnInit {\n labels: {abbr?: unknown, full?: unknown}[] = [];\n title?: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows: any = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n // todo valorkin fix\n this.datePicker.setRefreshViewHandler(function(): void {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const year = that.activeDate.getFullYear();\n const month = that.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = that.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth =\n difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = that.createDateObject(_days[i], that.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = that.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = that.dateFilter(\n days[j].date,\n that.formatDayHeader\n );\n self.labels[j].full = that.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = that.dateFilter(that.activeDate, that.formatDayTitle);\n self.rows = that.split(days, 7);\n\n if (that.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - that.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n const _date = self.rows[curWeek][thursdayIndex].date;\n if (_date) {\n self.weekNumbers.push(self.getISO8601WeekNumber(_date));\n }\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + 1\n );\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (\n Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1\n );\n }\n\n // todo: key events implementation\n}\n","// @deprecated\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class MonthPickerComponent implements OnInit {\n title?: string;\n rows = [];\n datePicker: DatePickerInnerComponent;\n maxMode?: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const months = new Array(12);\n const year: number = that.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = that.fixTimeZone(date);\n months[i] = that.createDateObject(date, that.formatMonth);\n months[i].uid = that.uniqueId + '-' + i;\n }\n\n self.title = that.dateFilter(that.activeDate, that.formatMonthTitle);\n self.rows = that.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'yearpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode==='year'\" role='grid'>\n <thead>\n <tr>\n <th>\n <button type='button' class='btn btn-default btn-sm pull-left float-left'\n (click)='datePicker.move(-1)' tabindex='-1'>‹\n </button>\n </th>\n <th [attr.colspan]='((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2'>\n <button [id]=\"datePicker.uniqueId + '-title'\" role='heading'\n type='button' class='btn btn-default btn-sm'\n (click)='datePicker.toggleMode(0)'\n [disabled]='datePicker.datepickerMode === datePicker.maxMode'\n [ngClass]='{disabled: datePicker.datepickerMode === datePicker.maxMode}' tabindex='-1'\n style='width:100%;'>\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type='button' class='btn btn-default btn-sm pull-right float-right'\n (click)='datePicker.move(1)' tabindex='-1'>›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor='let rowz of rows'>\n <td *ngFor='let dtz of rowz' class='text-center' role='gridcell' [attr.id]='dtz.uid'>\n <button type='button' style='min-width:100%;' class='btn btn-default'\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]='dtz.disabled'\n (click)='datePicker.select(dtz.date)' tabindex='-1'>\n <span\n [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title?: string;\n rows = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const years = new Array(that.yearRange);\n let date: Date;\n const start = self.getStartingYear(that.activeDate.getFullYear()) || 0;\n\n for (let i = 0; i < that.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = that.fixTimeZone(date);\n years[i] = that.createDateObject(date, that.formatYear);\n years[i].uid = that.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[that.yearRange - 1].label].join(\n ' - '\n );\n self.rows = that.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number | undefined {\n // todo: parseInt\n if (this.datePicker && this.datePicker.yearRange) {\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\n );\n }\n return undefined;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <bs-timepicker *ngIf=\"false\"></bs-timepicker>\n `\n})\nexport class BsCalendarLayoutComponent {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'bs-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n @Input() title?: string;\n}\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface BsCustomDates {\n label: string;\n value: Date | Date[];\n}\n\n@Component({\n selector: 'bs-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\"\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(range)\"\n [class.selected]=\"range.value === selectedRange\">\n {{ range.label }}\n </button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() ranges?: BsCustomDates[];\n @Input() selectedRange?: Date[];\n @Input() customRangeLabel?: string;\n @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n selectFromRanges(range?: BsCustomDates) {\n this.onSelect.emit(range);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2\n} from '@angular/core';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day && day.label || '' }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel = { date: new Date(), label: '' };\n\n constructor(\n private _config: BsDatepickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n\n if (this.day?.isToday && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n\n if (typeof this.day?.customClasses === 'string') {\n this.day?.customClasses.split(' ')\n .filter((className: string) => className)\n .forEach((className: string) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow: boolean;\n hideRightArrow: boolean;\n disableLeftArrow: boolean;\n disableRightArrow: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonthHovered?: boolean;\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n customClasses?: string;\n tooltipText?: string;\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n // additional information\n month: Date;\n weekNumbers: string[];\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n\n weekNumbers?: string;\n}\n\nexport interface DatepickerRenderOptions {\n showWeekNumbers: boolean;\n displayMonths: number;\n}\n\nexport interface DatepickerDateCustomClasses {\n date: Date;\n classes: string[];\n}\n\nexport interface DatepickerDateTooltipText {\n date: Date;\n tooltipText: string;\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel } from '../../models';\n\n@Component({\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(true)\">\n <span>&lsaquo;</span>\n </button>\n\n <ng-container *ngIf=\"calendar && calendar.monthTitle\">\n &#8203; <!-- zero-width space needed for correct alignment\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n type=\"button\"\n (click)=\"view('month')\"\n ><span>{{ calendar.monthTitle }}</span>\n </button>\n </ng-container>\n\n &#8203; <!-- zero-width space needed for correct alignment\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\n <span>{{ calendar.yearTitle }}</span>\n </button>\n\n &#8203; <!-- zero-width space needed for correct alignment\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(false)\"><span>&rsaquo;</span>\n </button>\n `\n})\nexport class BsDatepickerNavigationViewComponent {\n @Input() calendar!: NavigationViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n navTo(down: boolean): void {\n this.onNavigate.emit(\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n );\n }\n\n view(viewMode: BsDatepickerViewMode): void {\n this.onViewMode.emit(viewMode);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport { isSameDay } from 'ngx-bootstrap/chronos';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent, DatepickerDateTooltipText,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options && options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options && options.showWeekNumbers\">\n <span *ngIf=\"isiOS\" (click)=\"selectWeek(week)\">{{ calendar.weekNumbers[i] }}</span>\n <span *ngIf=\"!isiOS\"\n (click)=\"selectWeek(week)\"\n (mouseenter)=\"weekHoverHandler(week, true)\"\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n\n <!-- When we want to show tooltips for dates -->\n <span *ngIf=\"!isiOS && isShowTooltip\" bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n tooltip=\"{{day.tooltipText}}\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 3</span>\n <!-- When tooltips for dates are disabled -->\n <span *ngIf=\"!isiOS && !isShowTooltip\" bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 2</span>\n\n <!-- For mobile iOS view, tooltips are not needed -->\n <span *ngIf=\"isiOS\" bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\">{{ day.label }} 1</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </bs-calendar-layout>\n `\n})\nexport class BsDaysCalendarViewComponent {\n @Input() calendar!: DaysCalendarViewModel;\n @Input() options?: DatepickerRenderOptions | null;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n isWeekHovered?: boolean;\n isiOS: boolean;\n isShowTooltip?: boolean;\n\n constructor(private _config: BsDatepickerConfig) {\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n this.isShowTooltip = true;\n }\n }\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n selectWeek(week: WeekViewModel): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n if (week.days.length === 0) {\n return;\n }\n\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n\n this.onSelect.emit(week.days[0]);\n\n return;\n }\n\n const selectedDay = week.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(selectedDay);\n\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(lastDayOfRange);\n }\n }\n\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n\n if (this._config.dateTooltipTexts) {\n cell.tooltipText = '';\n this._config.dateTooltipTexts.forEach((dateData: DatepickerDateTooltipText) => {\n\n if (isSameDay(dateData.date, cell.date)) {\n cell.tooltipText = dateData.tooltipText;\n\n return;\n }\n });\n }\n\n this.onHover.emit({ cell, isHovered });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-month-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar?.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendar!: MonthsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-timepicker',\n template: `\n <div class=\"bs-timepicker-container\">\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n})\nexport class BsTimepickerViewComponent {\n ampm = 'ok';\n hours = 0;\n minutes = 0;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-years-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar?.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar!: YearsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { BsDaterangepickerInlineDirective } from './bs-daterangepicker-inline.component';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ]\n})\nexport class BsDatepickerModule {\n static forRoot(): ModuleWithProviders<BsDatepickerModule> {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerEffects,\n BsLocaleService\n ]\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n})\nexport class DatepickerModule {\n static forRoot(): ModuleWithProviders<DatepickerModule> {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BsDatepickerAbstractComponent as ɵb} from './base/bs-datepicker-container';\nexport {datepickerAnimation as ɵf} from './datepicker-animations';\nexport {DATEPICKER_CONTROL_VALUE_ACCESSOR as ɵa} from './datepicker.component';\nexport {BsDatepickerActions as ɵe} from './reducer/bs-datepicker.actions';\nexport {BsDatepickerEffects as ɵd} from './reducer/bs-datepicker.effects';\nexport {BsDatepickerStore as ɵc} from './reducer/bs-datepicker.store';\nexport {BsCalendarLayoutComponent as ɵg} from './themes/bs/bs-calendar-layout.component';\nexport {BsCurrentDateViewComponent as ɵh} from './themes/bs/bs-current-date-view.component';\nexport {BsCustomDatesViewComponent as ɵi} from './themes/bs/bs-custom-dates-view.component';\nexport {BsDatepickerDayDecoratorComponent as ɵj} from './themes/bs/bs-datepicker-day-decorator.directive';\nexport {BsDatepickerNavigationViewComponent as ɵk} from './themes/bs/bs-datepicker-navigation-view.component';\nexport {BsDaysCalendarViewComponent as ɵl} from './themes/bs/bs-days-calendar-view.component';\nexport {BsMonthCalendarViewComponent as ɵm} from './themes/bs/bs-months-calendar-view.component';\nexport {BsTimepickerViewComponent as ɵn} from './themes/bs/bs-timepicker-view.component';\nexport {BsYearsCalendarViewComponent as ɵo} from './themes/bs/bs-years-calendar-view.component';"]}
\No newline at end of file