UNPKG

ngx-bootstrap-ci

Version:
1,356 lines (1,335 loc) • 503 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('ngx-bootstrap/chronos'), require('ngx-bootstrap/mini-ngrx'), require('ngx-bootstrap/positioning'), require('ngx-bootstrap/component-loader'), require('@angular/forms'), require('@angular/common'), require('ngx-bootstrap/utils')) : typeof define === 'function' && define.amd ? define('ngx-bootstrap/datepicker', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'ngx-bootstrap/chronos', 'ngx-bootstrap/mini-ngrx', 'ngx-bootstrap/positioning', 'ngx-bootstrap/component-loader', '@angular/forms', '@angular/common', 'ngx-bootstrap/utils'], factory) : (factory((global['ngx-bootstrap'] = global['ngx-bootstrap'] || {}, global['ngx-bootstrap'].datepicker = {}),global.ng.core,global.rxjs,global.rxjs.operators,global.chronos,global.miniNgrx,global.positioning,global.componentLoader,global.ng.forms,global.ng.common,global.utils)); }(this, (function (exports,core,rxjs,operators,chronos,miniNgrx,positioning,componentLoader,forms,common,utils) { 'use strict'; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * For date range picker there are `BsDaterangepickerConfig` which inherits all properties, * except `displayMonths`, for range picker it default to `2` */ var BsDatepickerConfig = (function () { function BsDatepickerConfig() { /** * sets use adaptive position */ this.adaptivePosition = false; /** * CSS class which will be applied to datepicker container, * usually used to set color theme */ this.containerClass = 'theme-green'; // DatepickerRenderOptions this.displayMonths = 1; /** * Allows to hide week numbers in datepicker */ this.showWeekNumbers = true; this.dateInputFormat = 'L'; // range picker this.rangeSeparator = ' - '; /** * Date format for date range input field */ this.rangeInputFormat = 'L'; // DatepickerFormatOptions this.monthTitle = 'MMMM'; this.yearTitle = 'YYYY'; this.dayLabel = 'D'; this.monthLabel = 'MMMM'; this.yearLabel = 'YYYY'; this.weekNumbers = 'w'; } BsDatepickerConfig.decorators = [ { type: core.Injectable } ]; return BsDatepickerConfig; }()); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @abstract */ var /** * @abstract */ BsDatepickerAbstractComponent = (function () { function BsDatepickerAbstractComponent() { this._customRangesFish = []; } Object.defineProperty(BsDatepickerAbstractComponent.prototype, "minDate", { set: /** * @param {?} value * @return {?} */ function (value) { this._effects.setMinDate(value); }, enumerable: true, configurable: true }); Object.defineProperty(BsDatepickerAbstractComponent.prototype, "maxDate", { set: /** * @param {?} value * @return {?} */ function (value) { this._effects.setMaxDate(value); }, enumerable: true, configurable: true }); Object.defineProperty(BsDatepickerAbstractComponent.prototype, "daysDisabled", { set: /** * @param {?} value * @return {?} */ function (value) { this._effects.setDaysDisabled(value); }, enumerable: true, configurable: true }); Object.defineProperty(BsDatepickerAbstractComponent.prototype, "datesDisabled", { set: /** * @param {?} value * @return {?} */ function (value) { this._effects.setDatesDisabled(value); }, enumerable: true, configurable: true }); Object.defineProperty(BsDatepickerAbstractComponent.prototype, "isDisabled", { set: /** * @param {?} value * @return {?} */ function (value) { this._effects.setDisabled(value); }, enumerable: true, configurable: true }); /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.setViewMode = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.navigateTo = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.dayHoverHandler = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.weekHoverHandler = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.monthHoverHandler = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.yearHoverHandler = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} day * @return {?} */ BsDatepickerAbstractComponent.prototype.daySelectHandler = /** * @param {?} day * @return {?} */ function (day) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.monthSelectHandler = /** * @param {?} event * @return {?} */ function (event) { }; /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype.yearSelectHandler = /** * @param {?} event * @return {?} */ function (event) { }; /* tslint:disable-next-line: no-any */ /** * @param {?} event * @return {?} */ BsDatepickerAbstractComponent.prototype._stopPropagation = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); }; return BsDatepickerAbstractComponent; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var BsDatepickerActions = (function () { function BsDatepickerActions() { } /** * @return {?} */ BsDatepickerActions.prototype.calculate = /** * @return {?} */ function () { return { type: BsDatepickerActions.CALCULATE }; }; /** * @return {?} */ BsDatepickerActions.prototype.format = /** * @return {?} */ function () { return { type: BsDatepickerActions.FORMAT }; }; /** * @return {?} */ BsDatepickerActions.prototype.flag = /** * @return {?} */ function () { return { type: BsDatepickerActions.FLAG }; }; /** * @param {?} date * @return {?} */ BsDatepickerActions.prototype.select = /** * @param {?} date * @return {?} */ function (date) { return { type: BsDatepickerActions.SELECT, payload: date }; }; /** * @param {?} event * @return {?} */ BsDatepickerActions.prototype.changeViewMode = /** * @param {?} event * @return {?} */ function (event) { return { type: BsDatepickerActions.CHANGE_VIEWMODE, payload: event }; }; /** * @param {?} event * @return {?} */ BsDatepickerActions.prototype.navigateTo = /** * @param {?} event * @return {?} */ function (event) { return { type: BsDatepickerActions.NAVIGATE_TO, payload: event }; }; /** * @param {?} step * @return {?} */ BsDatepickerActions.prototype.navigateStep = /** * @param {?} step * @return {?} */ function (step) { return { type: BsDatepickerActions.NAVIGATE_OFFSET, payload: step }; }; /** * @param {?} options * @return {?} */ BsDatepickerActions.prototype.setOptions = /** * @param {?} options * @return {?} */ function (options) { return { type: BsDatepickerActions.SET_OPTIONS, payload: options }; }; // date range picker /** * @param {?} value * @return {?} */ BsDatepickerActions.prototype.selectRange = /** * @param {?} value * @return {?} */ function (value) { return { type: BsDatepickerActions.SELECT_RANGE, payload: value }; }; /** * @param {?} event * @return {?} */ BsDatepickerActions.prototype.hoverDay = /** * @param {?} event * @return {?} */ function (event) { return { type: BsDatepickerActions.HOVER, payload: event.isHovered ? event.cell.date : null }; }; /** * @param {?} date * @return {?} */ BsDatepickerActions.prototype.minDate = /** * @param {?} date * @return {?} */ function (date) { return { type: BsDatepickerActions.SET_MIN_DATE, payload: date }; }; /** * @param {?} date * @return {?} */ BsDatepickerActions.prototype.maxDate = /** * @param {?} date * @return {?} */ function (date) { return { type: BsDatepickerActions.SET_MAX_DATE, payload: date }; }; /** * @param {?} days * @return {?} */ BsDatepickerActions.prototype.daysDisabled = /** * @param {?} days * @return {?} */ function (days) { return { type: BsDatepickerActions.SET_DAYSDISABLED, payload: days }; }; /** * @param {?} dates * @return {?} */ BsDatepickerActions.prototype.datesDisabled = /** * @param {?} dates * @return {?} */ function (dates) { return { type: BsDatepickerActions.SET_DATESDISABLED, payload: dates }; }; /** * @param {?} value * @return {?} */ BsDatepickerActions.prototype.isDisabled = /** * @param {?} value * @return {?} */ function (value) { return { type: BsDatepickerActions.SET_IS_DISABLED, payload: value }; }; /** * @param {?} locale * @return {?} */ BsDatepickerActions.prototype.setLocale = /** * @param {?} locale * @return {?} */ function (locale) { return { type: BsDatepickerActions.SET_LOCALE, payload: locale }; }; BsDatepickerActions.CALCULATE = '[datepicker] calculate dates matrix'; BsDatepickerActions.FORMAT = '[datepicker] format datepicker values'; BsDatepickerActions.FLAG = '[datepicker] set flags'; BsDatepickerActions.SELECT = '[datepicker] select date'; BsDatepickerActions.NAVIGATE_OFFSET = '[datepicker] shift view date'; BsDatepickerActions.NAVIGATE_TO = '[datepicker] change view date'; BsDatepickerActions.SET_OPTIONS = '[datepicker] update render options'; BsDatepickerActions.HOVER = '[datepicker] hover date'; BsDatepickerActions.CHANGE_VIEWMODE = '[datepicker] switch view mode'; BsDatepickerActions.SET_MIN_DATE = '[datepicker] set min date'; BsDatepickerActions.SET_MAX_DATE = '[datepicker] set max date'; BsDatepickerActions.SET_DAYSDISABLED = '[datepicker] set days disabled'; BsDatepickerActions.SET_DATESDISABLED = '[datepicker] set dates disabled'; BsDatepickerActions.SET_IS_DISABLED = '[datepicker] set is disabled'; BsDatepickerActions.SET_LOCALE = '[datepicker] set datepicker locale'; BsDatepickerActions.SELECT_RANGE = '[daterangepicker] select dates range'; BsDatepickerActions.decorators = [ { type: core.Injectable } ]; return BsDatepickerActions; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var BsLocaleService = (function () { function BsLocaleService() { this._defaultLocale = 'en'; this._locale = new rxjs.BehaviorSubject(this._defaultLocale); this._localeChange = this._locale.asObservable(); } Object.defineProperty(BsLocaleService.prototype, "locale", { get: /** * @return {?} */ function () { return this._locale; }, enumerable: true, configurable: true }); Object.defineProperty(BsLocaleService.prototype, "localeChange", { get: /** * @return {?} */ function () { return this._localeChange; }, enumerable: true, configurable: true }); Object.defineProperty(BsLocaleService.prototype, "currentLocale", { get: /** * @return {?} */ function () { return this._locale.getValue(); }, enumerable: true, configurable: true }); /** * @param {?} locale * @return {?} */ BsLocaleService.prototype.use = /** * @param {?} locale * @return {?} */ function (locale) { if (locale === this.currentLocale) { return; } this._locale.next(locale); }; BsLocaleService.decorators = [ { type: core.Injectable } ]; return BsLocaleService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var BsDatepickerEffects = (function () { function BsDatepickerEffects(_actions, _localeService) { this._actions = _actions; this._localeService = _localeService; this._subs = []; } /** * @param {?} _bsDatepickerStore * @return {?} */ BsDatepickerEffects.prototype.init = /** * @param {?} _bsDatepickerStore * @return {?} */ function (_bsDatepickerStore) { this._store = _bsDatepickerStore; return this; }; /** setters */ /** * setters * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setValue = /** * setters * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.select(value)); }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setRangeValue = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.selectRange(value)); }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setMinDate = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.minDate(value)); return this; }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setMaxDate = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.maxDate(value)); return this; }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setDaysDisabled = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.daysDisabled(value)); return this; }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setDatesDisabled = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.datesDisabled(value)); return this; }; /** * @param {?} value * @return {?} */ BsDatepickerEffects.prototype.setDisabled = /** * @param {?} value * @return {?} */ function (value) { this._store.dispatch(this._actions.isDisabled(value)); return this; }; /* Set rendering options */ /** * @param {?} _config * @return {?} */ BsDatepickerEffects.prototype.setOptions = /** * @param {?} _config * @return {?} */ function (_config) { var /** @type {?} */ _options = Object.assign({ locale: this._localeService.currentLocale }, _config); this._store.dispatch(this._actions.setOptions(_options)); return this; }; /** view to mode bindings */ /** * view to mode bindings * @param {?} container * @return {?} */ BsDatepickerEffects.prototype.setBindings = /** * view to mode bindings * @param {?} container * @return {?} */ function (container) { container.daysCalendar = this._store .select(function (state) { return state.flaggedMonths; }) .pipe(operators.filter(function (months) { return !!months; })); // month calendar container.monthsCalendar = this._store .select(function (state) { return state.flaggedMonthsCalendar; }) .pipe(operators.filter(function (months) { return !!months; })); // year calendar container.yearsCalendar = this._store .select(function (state) { return state.yearsCalendarFlagged; }) .pipe(operators.filter(function (years) { return !!years; })); container.viewMode = this._store.select(function (state) { return state.view.mode; }); container.options = this._store .select(function (state) { return state.showWeekNumbers; }) .pipe(operators.map(function (showWeekNumbers) { return ({ showWeekNumbers: showWeekNumbers }); })); return this; }; /** event handlers */ /** * event handlers * @param {?} container * @return {?} */ BsDatepickerEffects.prototype.setEventHandlers = /** * event handlers * @param {?} container * @return {?} */ function (container) { var _this = this; container.setViewMode = function (event) { _this._store.dispatch(_this._actions.changeViewMode(event)); }; container.navigateTo = function (event) { _this._store.dispatch(_this._actions.navigateStep(event.step)); }; container.dayHoverHandler = function (event) { var /** @type {?} */ _cell = (event.cell); if (_cell.isOtherMonth || _cell.isDisabled) { return; } _this._store.dispatch(_this._actions.hoverDay(event)); _cell.isHovered = event.isHovered; }; container.monthHoverHandler = function (event) { event.cell.isHovered = event.isHovered; }; container.yearHoverHandler = function (event) { event.cell.isHovered = event.isHovered; }; container.monthSelectHandler = function (event) { if (event.isDisabled) { return; } _this._store.dispatch(_this._actions.navigateTo({ unit: { month: chronos.getMonth(event.date), year: chronos.getFullYear(event.date) }, viewMode: 'day' })); }; container.yearSelectHandler = function (event) { if (event.isDisabled) { return; } _this._store.dispatch(_this._actions.navigateTo({ unit: { year: chronos.getFullYear(event.date) }, viewMode: 'month' })); }; return this; }; /** * @return {?} */ BsDatepickerEffects.prototype.registerDatepickerSideEffects = /** * @return {?} */ function () { var _this = this; this._subs.push(this._store.select(function (state) { return state.view; }).subscribe(function (view) { _this._store.dispatch(_this._actions.calculate()); })); // format calendar values on month model change this._subs.push(this._store .select(function (state) { return state.monthsModel; }) .pipe(operators.filter(function (monthModel) { return !!monthModel; })) .subscribe(function (month) { return _this._store.dispatch(_this._actions.format()); })); // flag day values this._subs.push(this._store .select(function (state) { return state.formattedMonths; }) .pipe(operators.filter(function (month) { return !!month; })) .subscribe(function (month) { return _this._store.dispatch(_this._actions.flag()); })); // flag day values this._subs.push(this._store .select(function (state) { return state.selectedDate; }) .pipe(operators.filter(function (selectedDate) { return !!selectedDate; })) .subscribe(function (selectedDate) { return _this._store.dispatch(_this._actions.flag()); })); // flag for date range picker this._subs.push(this._store .select(function (state) { return state.selectedRange; }) .pipe(operators.filter(function (selectedRange) { return !!selectedRange; })) .subscribe(function (selectedRange) { return _this._store.dispatch(_this._actions.flag()); })); // monthsCalendar this._subs.push(this._store .select(function (state) { return state.monthsCalendar; }) .subscribe(function () { return _this._store.dispatch(_this._actions.flag()); })); // years calendar this._subs.push(this._store .select(function (state) { return state.yearsCalendarModel; }) .pipe(operators.filter(function (state) { return !!state; })) .subscribe(function () { return _this._store.dispatch(_this._actions.flag()); })); // on hover this._subs.push(this._store .select(function (state) { return state.hoveredDate; }) .pipe(operators.filter(function (hoveredDate) { return !!hoveredDate; })) .subscribe(function (hoveredDate) { return _this._store.dispatch(_this._actions.flag()); })); // on locale change this._subs.push(this._localeService.localeChange .subscribe(function (locale) { return _this._store.dispatch(_this._actions.setLocale(locale)); })); return this; }; /** * @return {?} */ BsDatepickerEffects.prototype.destroy = /** * @return {?} */ function () { try { for (var _a = __values(this._subs), _b = _a.next(); !_b.done; _b = _a.next()) { var sub = _b.value; sub.unsubscribe(); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_1) throw e_1.error; } } var e_1, _c; }; BsDatepickerEffects.decorators = [ { type: core.Injectable } ]; /** @nocollapse */ BsDatepickerEffects.ctorParameters = function () { return [ { type: BsDatepickerActions, }, { type: BsLocaleService, }, ]; }; return BsDatepickerEffects; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var /** @type {?} */ defaultMonthOptions = { width: 7, height: 6 }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var /** @type {?} */ _initialView = { date: new Date(), mode: 'day' }; var /** @type {?} */ initialDatepickerState = Object.assign(new BsDatepickerConfig(), { locale: 'en', view: _initialView, selectedRange: [], monthViewOptions: defaultMonthOptions }); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} date * @param {?} options * @return {?} */ function getStartingDayOfCalendar(date, options) { if (chronos.isFirstDayOfWeek(date, options.firstDayOfWeek)) { return date; } var /** @type {?} */ weekDay = chronos.getDay(date); var /** @type {?} */ offset = calculateDateOffset(weekDay, options.firstDayOfWeek); return chronos.shiftDate(date, { day: -offset }); } /** * @param {?} weekday * @param {?} startingDayOffset * @return {?} */ function calculateDateOffset(weekday, startingDayOffset) { if (startingDayOffset === 0) { return weekday; } var /** @type {?} */ offset = weekday - startingDayOffset % 7; return offset < 0 ? offset + 7 : offset; } /** * @param {?} date * @param {?} min * @param {?} max * @return {?} */ function isMonthDisabled(date, min, max) { var /** @type {?} */ minBound = min && chronos.isBefore(chronos.endOf(date, 'month'), min, 'day'); var /** @type {?} */ maxBound = max && chronos.isAfter(chronos.startOf(date, 'month'), max, 'day'); return minBound || maxBound; } /** * @param {?} date * @param {?} min * @param {?} max * @return {?} */ function isYearDisabled(date, min, max) { var /** @type {?} */ minBound = min && chronos.isBefore(chronos.endOf(date, 'year'), min, 'day'); var /** @type {?} */ maxBound = max && chronos.isAfter(chronos.startOf(date, 'year'), max, 'day'); return minBound || maxBound; } /** * @param {?} date * @param {?} datesDisabled * @return {?} */ function isDisabledDate(date, datesDisabled) { if (datesDisabled === undefined || !datesDisabled || !datesDisabled.length) { return false; } return datesDisabled.some(function (dateDisabled) { return chronos.isSame(date, dateDisabled, 'date'); }); } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @template T * @param {?} options * @param {?} fn * @return {?} */ function createMatrix(options, fn) { var /** @type {?} */ prevValue = options.initialDate; var /** @type {?} */ matrix = new Array(options.height); for (var /** @type {?} */ i = 0; i < options.height; i++) { matrix[i] = new Array(options.width); for (var /** @type {?} */ j = 0; j < options.width; j++) { matrix[i][j] = fn(prevValue); prevValue = chronos.shiftDate(prevValue, options.shift); } } return matrix; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} startingDate * @param {?} options * @return {?} */ function calcDaysCalendar(startingDate, options) { var /** @type {?} */ firstDay = chronos.getFirstDayOfMonth(startingDate); var /** @type {?} */ initialDate = getStartingDayOfCalendar(firstDay, options); var /** @type {?} */ matrixOptions = { width: options.width, height: options.height, initialDate: initialDate, shift: { day: 1 } }; var /** @type {?} */ daysMatrix = createMatrix(matrixOptions, function (date) { return date; }); return { daysMatrix: daysMatrix, month: firstDay }; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} daysCalendar * @param {?} formatOptions * @param {?} monthIndex * @return {?} */ function formatDaysCalendar(daysCalendar, formatOptions, monthIndex) { return { month: daysCalendar.month, monthTitle: chronos.formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale), yearTitle: chronos.formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale), weekNumbers: getWeekNumbers(daysCalendar.daysMatrix, formatOptions.weekNumbers, formatOptions.locale), weekdays: getShiftedWeekdays(formatOptions.locale), weeks: daysCalendar.daysMatrix.map(function (week, weekIndex) { return ({ days: week.map(function (date, dayIndex) { return ({ date: date, label: chronos.formatDate(date, formatOptions.dayLabel, formatOptions.locale), monthIndex: monthIndex, weekIndex: weekIndex, dayIndex: dayIndex }); }) }); }) }; } /** * @param {?} daysMatrix * @param {?} format * @param {?} locale * @return {?} */ function getWeekNumbers(daysMatrix, format, locale) { return daysMatrix.map(function (days) { return (days[0] ? chronos.formatDate(days[0], format, locale) : ''); }); } /** * @param {?} locale * @return {?} */ function getShiftedWeekdays(locale) { var /** @type {?} */ _locale = chronos.getLocale(locale); var /** @type {?} */ weekdays = (_locale.weekdaysShort()); var /** @type {?} */ firstDayOfWeek = _locale.firstDayOfWeek(); return __spread(weekdays.slice(firstDayOfWeek), weekdays.slice(0, firstDayOfWeek)); } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} formattedMonth * @param {?} options * @return {?} */ function flagDaysCalendar(formattedMonth, options) { formattedMonth.weeks.forEach(function (week) { /* tslint:disable-next-line: cyclomatic-complexity */ week.days.forEach(function (day, dayIndex) { // datepicker var /** @type {?} */ isOtherMonth = !chronos.isSameMonth(day.date, formattedMonth.month); var /** @type {?} */ isHovered = !isOtherMonth && chronos.isSameDay(day.date, options.hoveredDate); // date range picker var /** @type {?} */ isSelectionStart = !isOtherMonth && options.selectedRange && chronos.isSameDay(day.date, options.selectedRange[0]); var /** @type {?} */ isSelectionEnd = !isOtherMonth && options.selectedRange && chronos.isSameDay(day.date, options.selectedRange[1]); var /** @type {?} */ isSelected = (!isOtherMonth && chronos.isSameDay(day.date, options.selectedDate)) || isSelectionStart || isSelectionEnd; var /** @type {?} */ isInRange = !isOtherMonth && options.selectedRange && isDateInRange(day.date, options.selectedRange, options.hoveredDate); var /** @type {?} */ isDisabled = options.isDisabled || chronos.isBefore(day.date, options.minDate, 'day') || chronos.isAfter(day.date, options.maxDate, 'day') || chronos.isDisabledDay(day.date, options.daysDisabled) || isDisabledDate(day.date, options.datesDisabled); var /** @type {?} */ currentDate = new Date(); var /** @type {?} */ isToday = !isOtherMonth && chronos.isSameDay(day.date, currentDate); // decide update or not var /** @type {?} */ newDay = Object.assign({}, day, { isOtherMonth: isOtherMonth, isHovered: isHovered, isSelected: isSelected, isSelectionStart: isSelectionStart, isSelectionEnd: isSelectionEnd, isInRange: isInRange, isDisabled: isDisabled, isToday: isToday }); if (day.isOtherMonth !== newDay.isOtherMonth || day.isHovered !== newDay.isHovered || day.isSelected !== newDay.isSelected || day.isSelectionStart !== newDay.isSelectionStart || day.isSelectionEnd !== newDay.isSelectionEnd || day.isDisabled !== newDay.isDisabled || day.isInRange !== newDay.isInRange) { week.days[dayIndex] = newDay; } }); }); // todo: add check for linked calendars formattedMonth.hideLeftArrow = options.isDisabled || (options.monthIndex > 0 && options.monthIndex !== options.displayMonths); formattedMonth.hideRightArrow = options.isDisabled || (options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths); formattedMonth.disableLeftArrow = isMonthDisabled(chronos.shiftDate(formattedMonth.month, { month: -1 }), options.minDate, options.maxDate); formattedMonth.disableRightArrow = isMonthDisabled(chronos.shiftDate(formattedMonth.month, { month: 1 }), options.minDate, options.maxDate); return formattedMonth; } /** * @param {?} date * @param {?} selectedRange * @param {?} hoveredDate * @return {?} */ function isDateInRange(date, selectedRange, hoveredDate) { if (!date || !selectedRange[0]) { return false; } if (selectedRange[1]) { return date > selectedRange[0] && date <= selectedRange[1]; } if (hoveredDate) { return date > selectedRange[0] && date <= hoveredDate; } return false; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} mode * @param {?=} minMode * @return {?} */ function canSwitchMode(mode, minMode) { return minMode ? mode >= minMode : true; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var /** @type {?} */ height = 4; var /** @type {?} */ width = 3; var /** @type {?} */ shift = { month: 1 }; /** * @param {?} viewDate * @param {?} formatOptions * @return {?} */ function formatMonthsCalendar(viewDate, formatOptions) { var /** @type {?} */ initialDate = chronos.startOf(viewDate, 'year'); var /** @type {?} */ matrixOptions = { width: width, height: height, initialDate: initialDate, shift: shift }; var /** @type {?} */ monthMatrix = createMatrix(matrixOptions, function (date) { return ({ date: date, label: chronos.formatDate(date, formatOptions.monthLabel, formatOptions.locale) }); }); return { months: monthMatrix, monthTitle: '', yearTitle: chronos.formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale) }; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} monthCalendar * @param {?} options * @return {?} */ function flagMonthsCalendar(monthCalendar, options) { monthCalendar.months.forEach(function (months, rowIndex) { months.forEach(function (month, monthIndex) { var /** @type {?} */ isHovered = chronos.isSameMonth(month.date, options.hoveredMonth); var /** @type {?} */ isDisabled = options.isDisabled || isMonthDisabled(month.date, options.minDate, options.maxDate); var /** @type {?} */ newMonth = Object.assign(/*{},*/ month, { isHovered: isHovered, isDisabled: isDisabled }); if (month.isHovered !== newMonth.isHovered || month.isDisabled !== newMonth.isDisabled) { monthCalendar.months[rowIndex][monthIndex] = newMonth; } }); }); // todo: add check for linked calendars monthCalendar.hideLeftArrow = options.monthIndex > 0 && options.monthIndex !== options.displayMonths; monthCalendar.hideRightArrow = options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths; monthCalendar.disableLeftArrow = isYearDisabled(chronos.shiftDate(monthCalendar.months[0][0].date, { year: -1 }), options.minDate, options.maxDate); monthCalendar.disableRightArrow = isYearDisabled(chronos.shiftDate(monthCalendar.months[0][0].date, { year: 1 }), options.minDate, options.maxDate); return monthCalendar; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var /** @type {?} */ height$1 = 4; var /** @type {?} */ width$1 = 4; var /** @type {?} */ yearsPerCalendar = height$1 * width$1; var /** @type {?} */ initialShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1; var /** @type {?} */ shift$1 = { year: 1 }; /** * @param {?} viewDate * @param {?} formatOptions * @return {?} */ function formatYearsCalendar(viewDate, formatOptions) { var /** @type {?} */ initialDate = chronos.shiftDate(viewDate, { year: initialShift }); var /** @type {?} */ matrixOptions = { width: width$1, height: height$1, initialDate: initialDate, shift: shift$1 }; var /** @type {?} */ yearsMatrix = createMatrix(matrixOptions, function (date) { return ({ date: date, label: chronos.formatDate(date, formatOptions.yearLabel, formatOptions.locale) }); }); var /** @type {?} */ yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions); return { years: yearsMatrix, monthTitle: '', yearTitle: yearTitle }; } /** * @param {?} yearsMatrix * @param {?} formatOptions * @return {?} */ function formatYearRangeTitle(yearsMatrix, formatOptions) { var /** @type {?} */ from = chronos.formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale); var /** @type {?} */ to = chronos.formatDate(yearsMatrix[height$1 - 1][width$1 - 1].date, formatOptions.yearTitle, formatOptions.locale); return from + " - " + to; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} yearsCalendar * @param {?} options * @return {?} */ function flagYearsCalendar(yearsCalendar, options) { yearsCalendar.years.forEach(function (years, rowIndex) { years.forEach(function (year, yearIndex) { var /** @type {?} */ isHovered = chronos.isSameYear(year.date, options.hoveredYear); var /** @type {?} */ isDisabled = options.isDisabled || isYearDisabled(year.date, options.minDate, options.maxDate); var /** @type {?} */ newMonth = Object.assign(/*{},*/ year, { isHovered: isHovered, isDisabled: isDisabled }); if (year.isHovered !== newMonth.isHovered || year.isDisabled !== newMonth.isDisabled) { yearsCalendar.years[rowIndex][yearIndex] = newMonth; } }); }); // todo: add check for linked calendars yearsCalendar.hideLeftArrow = options.yearIndex > 0 && options.yearIndex !== options.displayMonths; yearsCalendar.hideRightArrow = options.yearIndex < options.displayMonths && options.yearIndex + 1 !== options.displayMonths; yearsCalendar.disableLeftArrow = isYearDisabled(chronos.shiftDate(yearsCalendar.years[0][0].date, { year: -1 }), options.minDate, options.maxDate); var /** @type {?} */ i = yearsCalendar.years.length - 1; var /** @type {?} */ j = yearsCalendar.years[i].length - 1; yearsCalendar.disableRightArrow = isYearDisabled(chronos.shiftDate(yearsCalendar.years[i][j].date, { year: 1 }), options.minDate, options.maxDate); return yearsCalendar; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?=} state * @param {?=} action * @return {?} */ function bsDatepickerReducer(state, action) { if (state === void 0) { state = initialDatepickerState; } switch (action.type) { case BsDatepickerActions.CALCULATE: { return calculateReducer(state); } case BsDatepickerActions.FORMAT: { return formatReducer(state, action); } case BsDatepickerActions.FLAG: { return flagReducer(state, action); } case BsDatepickerActions.NAVIGATE_OFFSET: { var /** @type {?} */ date = chronos.shiftDate(chronos.startOf(state.view.date, 'month'), action.payload); var /** @type {?} */ newState = { view: { mode: state.view.mode, date: date } }; return Object.assign({}, state, newState); } case BsDatepickerActions.NAVIGATE_TO: { var /** @type {?} */ payload = action.payload; var /** @type {?} */ date = chronos.setFullDate(state.view.date, payload.unit); var /** @type {?} */ newState = void 0; var /** @type {?} */ mode = void 0; if (canSwitchMode(payload.viewMode, state.minMode)) { mode = payload.viewMode; newState = { view: { date: date, mode: mode } }; } else { mode = state.view.mode; newState = { selectedDate: date, view: { date: date, mode: mode } }; } return Object.assign({}, state, newState); } case BsDatepickerActions.CHANGE_VIEWMODE: { if (!canSwitchMode(action.payload, state.minMode)) { return state; } var /** @type {?} */ date = state.view.date; var /** @type {?} */ mode = acti