UNPKG

294 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"],"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';"],"names":["height","width","shift"],"mappings":"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"}
\No newline at end of file