ngx-bootstrap 5.3.2 → 5.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +148 -99
- package/README.md +14 -10
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js +71 -2
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -1
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +1 -1
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -1
- package/accordion/fesm2015/ngx-bootstrap-accordion.js +79 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -1
- package/accordion/fesm5/ngx-bootstrap-accordion.js +80 -1
- package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -1
- package/accordion/package.json +2 -2
- package/alert/bundles/ngx-bootstrap-alert.umd.js +224 -2
- package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -1
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js +15 -1
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -1
- package/alert/fesm2015/ngx-bootstrap-alert.js +71 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -1
- package/alert/fesm5/ngx-bootstrap-alert.js +72 -1
- package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -1
- package/alert/package.json +2 -2
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js +208 -85
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -1
- package/buttons/button-radio-group.directive.d.ts +4 -1
- package/buttons/esm2015/button-radio-group.directive.js +26 -2
- package/buttons/esm5/button-radio-group.directive.js +30 -2
- package/buttons/fesm2015/ngx-bootstrap-buttons.js +194 -65
- package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -1
- package/buttons/fesm5/ngx-bootstrap-buttons.js +216 -83
- package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -1
- package/buttons/ngx-bootstrap-buttons.metadata.json +1 -1
- package/buttons/package.json +2 -2
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js +295 -4
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -1
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +15 -1
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -1
- package/carousel/carousel.component.d.ts +2 -0
- package/carousel/esm2015/carousel.component.js +15 -2
- package/carousel/esm2015/slide.component.js +21 -2
- package/carousel/esm5/carousel.component.js +15 -2
- package/carousel/esm5/slide.component.js +6 -2
- package/carousel/fesm2015/ngx-bootstrap-carousel.js +169 -2
- package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -1
- package/carousel/fesm5/ngx-bootstrap-carousel.js +156 -4
- package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -1
- package/carousel/ngx-bootstrap-carousel.metadata.json +1 -1
- package/carousel/package.json +2 -2
- package/carousel/slide.component.d.ts +1 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +11172 -10061
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
- package/chronos/esm2015/format/format.js +1 -1
- package/chronos/esm2015/i18n/ka.js +108 -0
- package/chronos/esm2015/i18n/kk.js +89 -0
- package/chronos/esm2015/i18n/sq.js +62 -0
- package/chronos/esm2015/i18n/th-be.js +85 -0
- package/chronos/esm2015/index.js +2 -2
- package/chronos/esm2015/locale/locale.class.js +16 -2
- package/chronos/esm2015/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm2015/public_api.js +5 -1
- package/chronos/esm2015/units/year.js +4 -1
- package/chronos/esm5/format/format.js +1 -1
- package/chronos/esm5/i18n/ka.js +108 -0
- package/chronos/esm5/i18n/kk.js +89 -0
- package/chronos/esm5/i18n/sq.js +62 -0
- package/chronos/esm5/i18n/th-be.js +86 -0
- package/chronos/esm5/index.js +2 -2
- package/chronos/esm5/locale/locale.class.js +22 -2
- package/chronos/esm5/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm5/public_api.js +5 -1
- package/chronos/esm5/units/year.js +4 -1
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +1117 -13
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/fesm5/ngx-bootstrap-chronos.js +1130 -13
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/i18n/ka.d.ts +2 -0
- package/chronos/i18n/kk.d.ts +2 -0
- package/chronos/i18n/sq.d.ts +2 -0
- package/chronos/i18n/th-be.d.ts +2 -0
- package/chronos/locale/locale.class.d.ts +2 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -1
- package/chronos/package.json +2 -2
- package/chronos/public_api.d.ts +4 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js +100 -2
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -1
- package/collapse/collapse.directive.d.ts +1 -0
- package/collapse/esm2015/collapse.directive.js +14 -1
- package/collapse/esm5/collapse.directive.js +14 -1
- package/collapse/fesm2015/ngx-bootstrap-collapse.js +108 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -1
- package/collapse/fesm5/ngx-bootstrap-collapse.js +109 -1
- package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -1
- package/collapse/ngx-bootstrap-collapse.metadata.json +1 -1
- package/collapse/package.json +2 -2
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +169 -2
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +177 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +178 -1
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/package.json +2 -2
- package/datepicker/base/bs-datepicker-container.d.ts +2 -1
- package/datepicker/bs-datepicker-inline.component.d.ts +4 -0
- package/datepicker/bs-datepicker-input.directive.d.ts +1 -0
- package/datepicker/bs-datepicker.component.d.ts +12 -3
- package/datepicker/bs-datepicker.config.d.ts +31 -1
- package/datepicker/bs-datepicker.css +19 -1
- package/datepicker/bs-datepicker.css.map +3 -3
- package/datepicker/bs-datepicker.scss +0 -1
- package/datepicker/bs-daterangepicker-inline.component.d.ts +8 -0
- package/datepicker/bs-daterangepicker-input.directive.d.ts +1 -0
- package/datepicker/bs-daterangepicker.component.d.ts +16 -3
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +2100 -99
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +15 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +1 -0
- package/datepicker/esm2015/base/bs-datepicker-container.js +10 -3
- package/datepicker/esm2015/bs-datepicker-inline.component.js +25 -9
- package/datepicker/esm2015/bs-datepicker-input.directive.js +19 -1
- package/datepicker/esm2015/bs-datepicker.component.js +55 -8
- package/datepicker/esm2015/bs-datepicker.config.js +42 -3
- package/datepicker/esm2015/bs-datepicker.module.js +23 -16
- package/datepicker/esm2015/bs-daterangepicker-inline.component.js +37 -7
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +34 -3
- package/datepicker/esm2015/bs-daterangepicker.component.js +66 -9
- package/datepicker/esm2015/engine/flag-days-calendar.js +6 -3
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +14 -1
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +15 -11
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +28 -6
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +7 -1
- package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +46 -8
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +5 -2
- package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +2 -2
- package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +8 -7
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +21 -3
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +22 -8
- package/datepicker/esm2015/utils/bs-calendar-utils.js +18 -3
- package/datepicker/esm5/base/bs-datepicker-container.js +14 -3
- package/datepicker/esm5/bs-datepicker-inline.component.js +25 -9
- package/datepicker/esm5/bs-datepicker-input.directive.js +23 -1
- package/datepicker/esm5/bs-datepicker.component.js +59 -8
- package/datepicker/esm5/bs-datepicker.config.js +42 -3
- package/datepicker/esm5/bs-datepicker.module.js +26 -19
- package/datepicker/esm5/bs-daterangepicker-inline.component.js +37 -7
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +38 -3
- package/datepicker/esm5/bs-daterangepicker.component.js +70 -9
- package/datepicker/esm5/engine/flag-days-calendar.js +6 -3
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +18 -1
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +21 -17
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +28 -6
- package/datepicker/esm5/reducer/bs-datepicker.state.js +7 -1
- package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +39 -7
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +5 -2
- package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +25 -3
- package/datepicker/esm5/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +22 -8
- package/datepicker/esm5/utils/bs-calendar-utils.js +18 -3
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +1953 -91
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +1985 -98
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
- package/datepicker/package.json +2 -2
- package/datepicker/reducer/bs-datepicker.actions.d.ts +2 -0
- package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
- package/datepicker/reducer/bs-datepicker.state.d.ts +3 -0
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +6 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +3 -0
- package/datepicker/utils/bs-calendar-utils.d.ts +1 -0
- package/datepicker/utils/scss/mixins.css.map +1 -1
- package/datepicker/utils/scss/mixins.scss +9 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +387 -3
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +15 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
- package/dropdown/esm2015/bs-dropdown-container.component.js +2 -2
- package/dropdown/esm5/bs-dropdown-container.component.js +2 -2
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +234 -1
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +234 -1
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
- package/dropdown/package.json +2 -2
- package/locale/bundles/ngx-bootstrap-locale.umd.js +36 -2
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -1
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +1 -1
- package/locale/esm2015/ngx-bootstrap-locale.js +2 -2
- package/locale/esm2015/public_api.js +5 -1
- package/locale/esm5/ngx-bootstrap-locale.js +2 -2
- package/locale/esm5/public_api.js +5 -1
- package/locale/fesm2015/ngx-bootstrap-locale.js +11 -1
- package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -1
- package/locale/fesm5/ngx-bootstrap-locale.js +11 -1
- package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -1
- package/locale/ngx-bootstrap-locale.metadata.json +1 -1
- package/locale/package.json +2 -2
- package/locale/public_api.d.ts +4 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +187 -2
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -1
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +15 -1
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -1
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +32 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -1
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +32 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -1
- package/mini-ngrx/package.json +2 -2
- package/modal/bs-modal.service.d.ts +1 -2
- package/modal/bundles/ngx-bootstrap-modal.umd.js +558 -16
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +15 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
- package/modal/esm2015/bs-modal.service.js +13 -4
- package/modal/esm2015/modal-container.component.js +24 -5
- package/modal/esm2015/modal-options.class.js +16 -1
- package/modal/esm2015/modal.directive.js +21 -4
- package/modal/esm2015/modal.module.js +10 -1
- package/modal/esm5/bs-modal.service.js +28 -8
- package/modal/esm5/modal-container.component.js +28 -5
- package/modal/esm5/modal-options.class.js +16 -1
- package/modal/esm5/modal.directive.js +25 -4
- package/modal/esm5/modal.module.js +13 -1
- package/modal/fesm2015/ngx-bootstrap-modal.js +354 -10
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
- package/modal/fesm5/ngx-bootstrap-modal.js +381 -15
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
- package/modal/modal-container.component.d.ts +3 -1
- package/modal/modal-options.class.d.ts +13 -0
- package/modal/modal.directive.d.ts +3 -1
- package/modal/modal.module.d.ts +1 -0
- package/modal/ngx-bootstrap-modal.metadata.json +1 -1
- package/modal/package.json +2 -2
- package/package.json +2 -2
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js +276 -4
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -1
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +1 -1
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -1
- package/pagination/esm2015/models/index.js +49 -4
- package/pagination/esm2015/pager.component.js +2 -2
- package/pagination/esm2015/pagination.component.js +33 -3
- package/pagination/esm2015/public_api.js +1 -1
- package/pagination/esm5/models/index.js +49 -4
- package/pagination/esm5/pager.component.js +2 -2
- package/pagination/esm5/pagination.component.js +33 -3
- package/pagination/esm5/public_api.js +1 -1
- package/pagination/fesm2015/ngx-bootstrap-pagination.js +284 -2
- package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -1
- package/pagination/fesm5/ngx-bootstrap-pagination.js +285 -3
- package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -1
- package/pagination/models/index.d.ts +28 -0
- package/pagination/ngx-bootstrap-pagination.metadata.json +1 -1
- package/pagination/package.json +2 -2
- package/pagination/pagination.component.d.ts +12 -2
- package/pagination/public_api.d.ts +1 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js +215 -20
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
- package/popover/esm2015/popover.config.js +10 -1
- package/popover/esm2015/popover.directive.js +97 -16
- package/popover/esm5/popover.config.js +10 -1
- package/popover/esm5/popover.directive.js +98 -16
- package/popover/fesm2015/ngx-bootstrap-popover.js +221 -16
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
- package/popover/fesm5/ngx-bootstrap-popover.js +222 -16
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
- package/popover/ngx-bootstrap-popover.metadata.json +1 -1
- package/popover/package.json +2 -2
- package/popover/popover.config.d.ts +2 -0
- package/popover/popover.directive.d.ts +9 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +286 -13
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +15 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
- package/positioning/esm2015/modifiers/arrow.js +19 -5
- package/positioning/esm2015/modifiers/initData.js +12 -2
- package/positioning/esm2015/modifiers/shift.js +6 -4
- package/positioning/esm5/modifiers/arrow.js +19 -5
- package/positioning/esm5/modifiers/initData.js +12 -2
- package/positioning/esm5/modifiers/shift.js +8 -6
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +128 -8
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/fesm5/ngx-bootstrap-positioning.js +132 -10
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/package.json +2 -2
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +77 -2
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -1
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +1 -1
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -1
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +85 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -1
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js +85 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -1
- package/progressbar/package.json +2 -2
- package/rating/bundles/ngx-bootstrap-rating.umd.js +92 -7
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
- package/rating/esm2015/ngx-bootstrap-rating.js +2 -2
- package/rating/esm2015/public_api.js +2 -1
- package/rating/esm2015/rating.component.js +14 -5
- package/rating/esm2015/rating.config.js +27 -0
- package/rating/esm2015/rating.module.js +3 -2
- package/rating/esm5/ngx-bootstrap-rating.js +2 -2
- package/rating/esm5/public_api.js +2 -1
- package/rating/esm5/rating.component.js +13 -5
- package/rating/esm5/rating.config.js +29 -0
- package/rating/esm5/rating.module.js +3 -2
- package/rating/fesm2015/ngx-bootstrap-rating.js +101 -7
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
- package/rating/fesm5/ngx-bootstrap-rating.js +101 -7
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
- package/rating/ngx-bootstrap-rating.metadata.json +1 -1
- package/rating/package.json +2 -2
- package/rating/public_api.d.ts +1 -0
- package/rating/rating.component.d.ts +4 -1
- package/rating/rating.config.d.ts +5 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js +254 -2
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -1
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +15 -1
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -1
- package/sortable/fesm2015/ngx-bootstrap-sortable.js +113 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -1
- package/sortable/fesm5/ngx-bootstrap-sortable.js +114 -1
- package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -1
- package/sortable/package.json +2 -2
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js +153 -4
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -1
- package/tabs/esm2015/tab.directive.js +13 -2
- package/tabs/esm2015/tabset.component.js +7 -2
- package/tabs/esm2015/tabset.config.js +10 -1
- package/tabs/esm5/tab.directive.js +17 -2
- package/tabs/esm5/tabset.component.js +7 -2
- package/tabs/esm5/tabset.config.js +10 -1
- package/tabs/fesm2015/ngx-bootstrap-tabs.js +157 -2
- package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -1
- package/tabs/fesm5/ngx-bootstrap-tabs.js +162 -3
- package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -1
- package/tabs/ngx-bootstrap-tabs.metadata.json +1 -1
- package/tabs/package.json +2 -2
- package/tabs/tab.directive.d.ts +2 -0
- package/tabs/tabset.component.d.ts +2 -0
- package/tabs/tabset.config.d.ts +2 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +464 -8
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +15 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
- package/timepicker/esm2015/timepicker.component.js +8 -2
- package/timepicker/esm2015/timepicker.config.js +28 -1
- package/timepicker/esm2015/timepicker.utils.js +9 -6
- package/timepicker/esm5/timepicker.component.js +8 -2
- package/timepicker/esm5/timepicker.config.js +28 -1
- package/timepicker/esm5/timepicker.utils.js +9 -6
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +311 -6
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +315 -7
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
- package/timepicker/package.json +2 -2
- package/timepicker/timepicker.component.d.ts +3 -0
- package/timepicker/timepicker.config.d.ts +6 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +356 -8
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +15 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
- package/tooltip/esm2015/tooltip.directive.js +48 -10
- package/tooltip/esm5/tooltip.directive.js +51 -10
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +201 -7
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +204 -7
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
- package/tooltip/package.json +2 -2
- package/tooltip/tooltip.directive.d.ts +3 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +748 -69
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +15 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
- package/typeahead/esm2015/models/index.js +87 -0
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm2015/public_api.js +2 -1
- package/typeahead/esm2015/typeahead-container.component.js +82 -37
- package/typeahead/esm2015/typeahead-order.class.js +19 -0
- package/typeahead/esm2015/typeahead.config.js +10 -1
- package/typeahead/esm2015/typeahead.directive.js +133 -30
- package/typeahead/esm5/models/index.js +87 -0
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm5/public_api.js +2 -1
- package/typeahead/esm5/typeahead-container.component.js +92 -37
- package/typeahead/esm5/typeahead-order.class.js +23 -0
- package/typeahead/esm5/typeahead.config.js +10 -1
- package/typeahead/esm5/typeahead.directive.js +140 -36
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +574 -61
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +594 -67
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/models/index.d.ts +41 -0
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
- package/typeahead/package.json +2 -2
- package/typeahead/public_api.d.ts +2 -0
- package/typeahead/typeahead-container.component.d.ts +15 -7
- package/typeahead/typeahead-order.class.d.ts +6 -0
- package/typeahead/typeahead.config.d.ts +2 -0
- package/typeahead/typeahead.directive.d.ts +28 -10
- package/utils/bundles/ngx-bootstrap-utils.umd.js +54 -2
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +2 -2
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
- package/utils/fesm2015/ngx-bootstrap-utils.js +62 -0
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
- package/utils/fesm5/ngx-bootstrap-utils.js +62 -0
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
- package/utils/package.json +2 -2
- package/bundles/ngx-bootstrap.umd.js +0 -1037
- package/bundles/ngx-bootstrap.umd.js.map +0 -1
- package/bundles/ngx-bootstrap.umd.min.js +0 -2
- package/bundles/ngx-bootstrap.umd.min.js.map +0 -1
- package/esm2015/ngx-bootstrap.js +0 -9
- package/esm2015/public_api.js +0 -30
- package/esm5/ngx-bootstrap.js +0 -9
- package/esm5/public_api.js +0 -30
- package/fesm2015/ngx-bootstrap.js +0 -24
- package/fesm2015/ngx-bootstrap.js.map +0 -1
- package/fesm5/ngx-bootstrap.js +0 -24
- package/fesm5/ngx-bootstrap.js.map +0 -1
- package/ngx-bootstrap.d.ts +0 -4
- package/ngx-bootstrap.metadata.json +0 -1
- package/public_api.d.ts +0 -25
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://ngx-bootstrap/datepicker/bs-datepicker.config.ts","ng://ngx-bootstrap/datepicker/base/bs-datepicker-container.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.actions.ts","ng://ngx-bootstrap/datepicker/bs-locale.service.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.effects.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.state.ts","ng://ngx-bootstrap/datepicker/reducer/_defaults.ts","ng://ngx-bootstrap/datepicker/utils/bs-calendar-utils.ts","ng://ngx-bootstrap/datepicker/utils/matrix-utils.ts","ng://ngx-bootstrap/datepicker/engine/calc-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/view-mode.ts","ng://ngx-bootstrap/datepicker/engine/format-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.reducer.ts","ng://ngx-bootstrap/datepicker/engine/flag-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.store.ts","ng://ngx-bootstrap/datepicker/datepicker-animations.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-container.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.config.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-calendar-layout.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-current-date-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-custom-dates-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","ng://ngx-bootstrap/datepicker/models/index.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-days-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-months-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-timepicker-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-years-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.module.ts","ng://ngx-bootstrap/datepicker/date-formatter.ts","ng://ngx-bootstrap/datepicker/datepicker-inner.component.ts","ng://ngx-bootstrap/datepicker/datepicker.config.ts","ng://ngx-bootstrap/datepicker/datepicker.component.ts","ng://ngx-bootstrap/datepicker/daypicker.component.ts","ng://ngx-bootstrap/datepicker/monthpicker.component.ts","ng://ngx-bootstrap/datepicker/yearpicker.component.ts","ng://ngx-bootstrap/datepicker/datepicker.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__values","o","m","Symbol","iterator","i","call","next","length","value","done","__read","n","r","e","ar","push","error","__spread","arguments","concat","BsDatepickerConfig","adaptivePosition","useUtc","isAnimated","containerClass","displayMonths","showWeekNumbers","dateInputFormat","rangeSeparator","rangeInputFormat","monthTitle","yearTitle","dayLabel","monthLabel","yearLabel","weekNumbers","Injectable","BsDatepickerAbstractComponent","_customRangesFish","defineProperty","_effects","setMinDate","setMaxDate","setDaysDisabled","setDatesDisabled","setDisabled","setDateCustomClasses","setViewMode","event","navigateTo","dayHoverHandler","weekHoverHandler","monthHoverHandler","yearHoverHandler","daySelectHandler","day","monthSelectHandler","yearSelectHandler","_stopPropagation","stopPropagation","BsDatepickerActions","calculate","type","CALCULATE","format","FORMAT","flag","FLAG","select","date","SELECT","payload","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","step","NAVIGATE_OFFSET","setOptions","options","SET_OPTIONS","selectRange","SELECT_RANGE","hoverDay","HOVER","isHovered","cell","minDate","SET_MIN_DATE","maxDate","SET_MAX_DATE","daysDisabled","days","SET_DAYSDISABLED","datesDisabled","dates","SET_DATESDISABLED","isDisabled","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","setLocale","locale","SET_LOCALE","BsLocaleService","_defaultLocale","_locale","BehaviorSubject","_localeChange","asObservable","getValue","use","currentLocale","BsDatepickerEffects","_actions","_localeService","_subs","init","_bsDatepickerStore","_store","setValue","dispatch","setRangeValue","_config","_options","assign","setBindings","container","daysCalendar","state","flaggedMonths","pipe","filter","months","monthsCalendar","flaggedMonthsCalendar","yearsCalendar","yearsCalendarFlagged","years","viewMode","view","mode","map","setEventHandlers","_this","_cell","isOtherMonth","unit","month","getMonth","year","getFullYear","registerDatepickerSideEffects","subscribe","monthsModel","monthModel","formattedMonths","selectedDate","selectedRange","yearsCalendarModel","hoveredDate","dateCustomClasses","localeChange","destroy","_b","tslib_1.__values","_c","unsubscribe","_initialView","Date","initialDatepickerState","monthViewOptions","width","height","isMonthDisabled","min","max","minBound","isBefore","endOf","maxBound","isAfter","startOf","isYearDisabled","getYearsCalendarInitialDate","calendarIndex","model","createMatrix","fn","prevValue","initialDate","matrix","j","shiftDate","shift","calcDaysCalendar","startingDate","firstDay","getFirstDayOfMonth","isFirstDayOfWeek","firstDayOfWeek","offset","weekday","startingDayOffset","calculateDateOffset","getDay","getStartingDayOfCalendar","daysMatrix","getShiftedWeekdays","getLocale","weekdays","weekdaysShort","slice","flagDaysCalendar","formattedMonth","weeks","forEach","week","dayIndex","isSameMonth","isSameDay","isSelectionStart","isSelectionEnd","isSelected","isInRange","isDateInRange","isDisabledDay","undefined","some","dateDisabled","isSame","currentDate","isToday","customClasses","dcc","classes","reduce","previousValue","currentValue","join","newDay","hideLeftArrow","monthIndex","hideRightArrow","disableLeftArrow","disableRightArrow","canSwitchMode","minMode","formatMonthsCalendar","viewDate","formatOptions","label","formatDate","yearsPerCalendar","initialYearShift","Math","floor","formatYearsCalendar","previousInitialDate","calculateInitialDate","yearsMatrix","width$1","height$1","shift$1","from","to","formatYearRangeTitle","bsDatepickerReducer","action","getFormatOptions","calculateReducer","weekIndex","formatDaysCalendar","formatReducer","monthCalendar","hoveredMonth","rowIndex","newMonth","yearIndex","isSameYear","hoveredYear","flagYearsCalendar","flagReducer","newState","shiftViewDate","navigateOffsetReducer","setFullDate","getViewDate","isDateValid","isArray","middleDate","_date","BsDatepickerStore","_dispatcher","MiniState","_super","tslib_1.__extends","MiniStore","datepickerAnimation","trigger","style","overflow","transition","animate","BsDatepickerContainerComponent","_renderer","_element","_positionService","valueChange","EventEmitter","animationState","setStyle","nativeElement","ngOnInit","modifiers","flip","enabled","allowedPositions","event$","take","disable","isTopPosition","isOtherMonthsActive","selectFromOtherMonth","emit","classList","contains","positionServiceEnable","enable","ngOnDestroy","Component","args","selector","providers","template","host","class","(click)","role","aria-label","animations","Renderer2","ElementRef","PositioningService","BsDatepickerDirective","_elementRef","_viewContainerRef","cis","placement","triggers","outsideClick","outsideEsc","bsValueChange","_datepicker","createLoader","onShown","onHidden","isShown","show","hide","_bsValue","listen","setConfig","ngOnChanges","changes","_datepickerRef","instance","provide","useValue","attach","position","attachment","bsValue","isOpen","toggle","bsConfig","dispose","Directive","exportAs","ViewContainerRef","ComponentLoaderFactory","Input","Output","BsDatepickerInlineConfig","BsDatepickerInlineContainerComponent","_positioningService","BsDatepickerInlineDirective","BsDaterangepickerInlineConfig","apply","BsDaterangepickerContainerComponent","_rangeStack","BsDaterangepickerInlineContainerComponent","BsDaterangepickerInlineDirective","range","BS_DATEPICKER_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","BsDatepickerInputDirective","multi","BS_DATEPICKER_VALIDATOR","NG_VALIDATORS","_picker","_elRef","changeDetection","_onChange","Function","_onTouched","_validatorChange","_setInputValue","_value","markForCheck","setProperty","onChange","writeValue","validate","c","isDate","bsDate","invalid","registerOnValidatorChange","_localeKey","Error","parseDate","utcAsLocal","setDisabledState","setAttribute","removeAttribute","registerOnChange","registerOnTouched","onBlur","selectRootElement","blur","(change)","(keyup.esc)","(blur)","decorators","Host","ChangeDetectorRef","BsDaterangepickerConfig","BsDaterangepickerDirective","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","start","end","_isFirstDateValid","_isSecondDateValid","_input","split","_val","isNaN","valueOf","BsCalendarLayoutComponent","BsCurrentDateViewComponent","BsCustomDatesViewComponent","ChangeDetectionStrategy","OnPush","BsDatepickerDayDecoratorComponent","customTodayClass","addClass","className","[class.disabled]","[class.is-highlighted]","[class.is-other-month]","[class.is-active-other-month]","[class.in-range]","[class.select-start]","[class.select-end]","[class.selected]","UP","DOWN","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","down","BsNavigationDirection","BsDaysCalendarViewComponent","onSelect","onHover","onHoverWeek","selectDay","selectWeek","selectedDay","find","isWeekHovered","isOtherMonthHovered","BsMonthCalendarViewComponent","viewMonth","hoverMonth","BsTimepickerViewComponent","ampm","hours","minutes","BsYearsCalendarViewComponent","viewYear","hoverYear","_exports","BsDatepickerModule","forRoot","ngModule","NgModule","imports","CommonModule","declarations","entryComponents","exports","DateFormatter","DatePickerInnerComponent","selectionDone","update","activeDateChange","stepDay","stepMonth","stepYear","modes","dateFormatter","_activeDate","uniqueId","random","initDate","activeDate","refreshView","checkIfActiveDateGotUpdated","firstChange","getTime","setCompareHandler","handler","compareHandlerDay","compareHandlerMonth","compareHandlerYear","compare","date1","date2","datepickerMode","setRefreshViewHandler","refreshViewHandlerDay","refreshViewHandlerMonth","refreshViewHandlerYear","dateFilter","isActive","dateObject","activeDateId","uid","createDateObject","getDate","fixTimeZone","selected","disabled","current","customClass","getCustomClassForDate","arr","size","arrays","splice","getHours","isManual","indexOf","move","direction","expectedStep","toggleMode","_direction","maxMode","customClassObject","clazz","compareDateDisabled","date1Disabled","isDateDisabled","disabledDate","dayDisabled","DatepickerConfig","startingDay","yearRange","showWeeks","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","onlyCurrentMonth","monthColLimit","yearColLimit","shortcutPropagation","DATEPICKER_CONTROL_VALUE_ACCESSOR","DatePickerComponent","config","onTouched","_now","configureOptions","onUpdate","onSelectionDone","onActiveDateChange","_datePicker","ViewChild","static","DayPickerComponent","datePicker","labels","rows","isBs3","self","firstDayOfMonth","difference","numDisplayedFromPreviousMonth","firstDate","setDate","_days","getDates","_dateObject","secondary","abbr","full","title","thursdayIndex","numWeeks","curWeek","getISO8601WeekNumber","d1","d2","startDate","checkDate","time","setMonth","round","MonthPickerComponent","YearPickerComponent","getStartingYear","DatepickerModule","FormsModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\nimport {\n DatepickerRenderOptions,\n BsDatepickerViewMode,\n DatepickerDateCustomClasses\n} from './models';\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()\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 * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatepickerDateCustomClasses[];\n\n daysDisabled?: number[];\n\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Makes dates from other months active\n */\n selectWeek?: 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 /** 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 // DatepickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n}\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n\n _effects: BsDatepickerEffects;\n _customRangesFish: BsCustomDates[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatepickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n setViewMode(event: BsDatepickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n /* tslint:disable-next-line: no-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} 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_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n\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 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 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 { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsDatepickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\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 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[]) {\n this._store.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value: Date[]) {\n this._store.dispatch(this._actions.datesDisabled(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 /* 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 container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\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 container.monthSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(event.date),\n year: getFullYear(event.date)\n },\n viewMode: 'day'\n })\n );\n };\n\n container.yearSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(event.date)\n },\n viewMode: 'month'\n })\n );\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\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(month => 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(month => 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(selectedDate => 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(selectedRange => 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(hoveredDate => 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(dateCustomClasses => 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 BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\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 minMode?: BsDatepickerViewMode;\n dateCustomClasses?: DatepickerDateCustomClasses[];\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\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?: boolean;\n displayMonths?: number;\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 MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\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 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;\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;\n}\n\nexport function isDisabledDate(date: Date, datesDisabled: Date[]): boolean {\n if (datesDisabled === undefined || !datesDisabled || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].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\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } 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 const matrixOptions = {\n width: options.width,\n height: options.height,\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 };\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} 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 } 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 hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatepickerDateCustomClasses[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\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\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\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 });\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 ) {\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 > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (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\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !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 };\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 };\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","// tslint:disable:max-file-line-count\nimport { BsDatepickerState, 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} 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\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function bsDatepickerReducer(state = 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, action);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state, action);\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\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)) {\n return state;\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 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 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 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\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n // how many calendars\n const displayMonths = state.displayMonths;\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const 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\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,\n action: Action): BsDatepickerState {\n if (state.view.mode === 'day') {\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;\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,\n action: Action): BsDatepickerState {\n if (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 hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths: state.displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\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 displayMonths: state.displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\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 displayMonths: state.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 const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\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","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 displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n const isSelected = isSameMonth(month.date, options.selectedDate);\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 > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\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 { 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 displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n const isSelected = isSameYear(year.date, options.selectedDate);\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 > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\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 { 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 {\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","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { 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 { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\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) {\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$\n .pipe(\n take(1)\n )\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._effects\n .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 /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\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 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 ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Subscription } from 'rxjs';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges {\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 /**\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 if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\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<BsDatepickerConfig>;\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\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 /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: BsDatepickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerContainerComponent>;\n\n constructor(public _config: BsDatepickerConfig,\n _elementRef: ElementRef,\n _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 }\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.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 * 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\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: this._bsValue,\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 minMode: this.minMode || this.bsConfig && this.bsConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\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, 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';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective 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<BsDatepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\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 dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _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 ngOnInit(): void {\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\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._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this._datepickerRef.instance.value = this._bsValue;\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\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\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 datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\n });\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\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 { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { 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 { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\n\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 _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 _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$\n .pipe(\n take(1)\n )\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\n .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(date => this.valueChange.emit(date))\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 const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\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 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._rangeStack.length === 0) {\n this._rangeStack = [day.date];\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","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';\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: boolean;\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 dates\n */\n @Input() datesDisabled: 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 _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 this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 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.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\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\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\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 datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\n });\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\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';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[bsDatepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class BsDatepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n\n constructor(@Host() private _picker: BsDatepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\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._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\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 /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n /* tslint:disable-next-line: prefer-switch */\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 return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\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 }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\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';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Subscription } from 'rxjs';\nimport { ComponentLoaderFactory, ComponentLoader } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { filter } from 'rxjs/operators';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n})\nexport class BsDaterangepickerDirective\n implements OnInit, OnDestroy, OnChanges {\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 if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n /**\n * Initial value of daterangepicker\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 daterangepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerConfig>;\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\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 dates\n */\n @Input() datesDisabled: 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 _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerContainerComponent>;\n\n constructor(public _config: BsDaterangepickerConfig,\n _elementRef: ElementRef,\n _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 }\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.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\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\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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.bsConfig,\n {\n value: this._bsValue,\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 datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\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\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 }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\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';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[bsDaterangepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class BsDaterangepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n\n constructor(@Host() private _picker: BsDaterangepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\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._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n _setInputValue(date: Date[]): 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 /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: [Date, Date] = c.value;\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\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 return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\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 _input = value.split(this._picker._config.rangeSeparator);\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n\n this._value = (_input as string[])\n .map((_val: string): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : 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 /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-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}\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 } 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\" type=\"button\">{{ range.label }}</button>\n <button *ngIf=\"isCustomRangeShown\" type=\"button\">Custom Range</button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() isCustomRangeShown: true;\n @Input() ranges: BsCustomDates[];\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.label }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: BsDatepickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\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 // 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\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 {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} 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>‹</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n *ngIf=\"calendar.monthTitle\"\n type=\"button\"\n (click)=\"view('month')\">\n <span>{{ calendar.monthTitle }}</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\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 ​ <!-- zero-width space needed for correct alignement\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>›</span>\n </button>\n `\n})\nexport class BsDatepickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\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 {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\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\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"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.showWeekNumbers\">\n <span\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 <span bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }}</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;\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\n constructor(private _config: BsDatepickerConfig) { }\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) {\n return;\n }\n\n if (week.days\n && 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 if (week.days.length === 0) {\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\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek) {\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 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","// tslint:disable:max-line-length\nimport { 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 { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\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';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\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\nconst _exports = [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n\n ..._exports\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: _exports\n})\nexport class BsDatepickerModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerConfig,\n BsDaterangepickerConfig,\n BsDatepickerInlineConfig,\n BsDaterangepickerInlineConfig,\n BsDatepickerEffects,\n BsLocaleService\n ]\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","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\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: number;\n @Input() yearColLimit: number;\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 /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\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 // tslint:disable-next-line:no-unused-variable\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 /* tslint:disable-next-line: no-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: Function, 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: Function, 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 /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-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) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\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 /* tslint:disable-next-line: no-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) {\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 this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\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 /* tslint:disable-next-line: no-any */\n } = 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 {\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 return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\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 /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\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})\n/* tslint:enable:component-selector-name component-selector-type */\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: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\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 {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\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 /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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\n// tslint:disable\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\"><</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\">>\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: any[] = [];\n title: string;\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 const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.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: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.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 = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].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\n// tslint:disable\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: any[] = [];\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 const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.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\n// tslint:disable\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\">â¹</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\" 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\">\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 YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.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 {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\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 {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://ngx-bootstrap/datepicker/bs-datepicker.config.ts","ng://ngx-bootstrap/datepicker/base/bs-datepicker-container.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.actions.ts","ng://ngx-bootstrap/datepicker/bs-locale.service.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.effects.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.state.ts","ng://ngx-bootstrap/datepicker/reducer/_defaults.ts","ng://ngx-bootstrap/datepicker/utils/bs-calendar-utils.ts","ng://ngx-bootstrap/datepicker/utils/matrix-utils.ts","ng://ngx-bootstrap/datepicker/engine/calc-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/view-mode.ts","ng://ngx-bootstrap/datepicker/engine/format-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.reducer.ts","ng://ngx-bootstrap/datepicker/engine/flag-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.store.ts","ng://ngx-bootstrap/datepicker/datepicker-animations.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-container.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.config.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-calendar-layout.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-current-date-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-custom-dates-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","ng://ngx-bootstrap/datepicker/models/index.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-days-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-months-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-timepicker-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-years-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.module.ts","ng://ngx-bootstrap/datepicker/date-formatter.ts","ng://ngx-bootstrap/datepicker/datepicker-inner.component.ts","ng://ngx-bootstrap/datepicker/datepicker.config.ts","ng://ngx-bootstrap/datepicker/datepicker.component.ts","ng://ngx-bootstrap/datepicker/daypicker.component.ts","ng://ngx-bootstrap/datepicker/monthpicker.component.ts","ng://ngx-bootstrap/datepicker/yearpicker.component.ts","ng://ngx-bootstrap/datepicker/datepicker.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__values","o","m","Symbol","iterator","i","call","next","length","value","done","__read","n","r","e","ar","push","error","BsDatepickerConfig","adaptivePosition","useUtc","isAnimated","returnFocusToInput","containerClass","displayMonths","showWeekNumbers","dateInputFormat","rangeSeparator","rangeInputFormat","monthTitle","yearTitle","dayLabel","monthLabel","yearLabel","weekNumbers","Injectable","BsDatepickerAbstractComponent","customRanges","defineProperty","_effects","setMinDate","setMaxDate","setDaysDisabled","setDatesDisabled","setDatesEnabled","setDisabled","setDateCustomClasses","setViewMode","event","navigateTo","dayHoverHandler","weekHoverHandler","monthHoverHandler","yearHoverHandler","daySelectHandler","day","monthSelectHandler","yearSelectHandler","_stopPropagation","stopPropagation","BsDatepickerActions","calculate","type","CALCULATE","format","FORMAT","flag","FLAG","select","date","SELECT","payload","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","step","NAVIGATE_OFFSET","setOptions","options","SET_OPTIONS","selectRange","SELECT_RANGE","hoverDay","HOVER","isHovered","cell","minDate","SET_MIN_DATE","maxDate","SET_MAX_DATE","daysDisabled","days","SET_DAYSDISABLED","datesDisabled","dates","SET_DATESDISABLED","datesEnabled","SET_DATESENABLED","isDisabled","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","setLocale","locale","SET_LOCALE","BsLocaleService","_defaultLocale","_locale","BehaviorSubject","_localeChange","asObservable","getValue","use","currentLocale","BsDatepickerEffects","_actions","_localeService","_subs","init","_bsDatepickerStore","_store","setValue","dispatch","setRangeValue","_config","_options","assign","setBindings","container","daysCalendar","state","flaggedMonths","pipe","filter","months","monthsCalendar","flaggedMonthsCalendar","yearsCalendar","yearsCalendarFlagged","years","viewMode","view","mode","map","setEventHandlers","_this","_cell","isOtherMonth","unit","month","getMonth","year","getFullYear","registerDatepickerSideEffects","subscribe","monthsModel","monthModel","formattedMonths","selectedDate","selectedRange","yearsCalendarModel","hoveredDate","dateCustomClasses","localeChange","destroy","_b","tslib_1.__values","_c","unsubscribe","_initialView","Date","initialDatepickerState","monthViewOptions","width","height","isMonthDisabled","min","max","minBound","isBefore","endOf","maxBound","isAfter","startOf","isYearDisabled","getYearsCalendarInitialDate","calendarIndex","model","createMatrix","fn","prevValue","initialDate","matrix","j","shiftDate","shift","calcDaysCalendar","startingDate","firstDay","getFirstDayOfMonth","isFirstDayOfWeek","firstDayOfWeek","offset","weekday","startingDayOffset","calculateDateOffset","getDay","getStartingDayOfCalendar","daysMatrix","getShiftedWeekdays","getLocale","weekdays","weekdaysShort","arguments","concat","__spread","slice","flagDaysCalendar","formattedMonth","weeks","forEach","week","dayIndex","isSameMonth","isSameDay","isSelectionStart","isSelectionEnd","isSelected","isInRange","isDateInRange","isDisabledDay","isArray","some","dateDisabled","isSame","enabledDate","isEnabledDate","currentDate","isToday","customClasses","dcc","classes","reduce","previousValue","currentValue","join","newDay","hideLeftArrow","monthIndex","hideRightArrow","disableLeftArrow","disableRightArrow","canSwitchMode","minMode","formatMonthsCalendar","viewDate","formatOptions","label","formatDate","initialYearShift","Math","floor","yearsPerCalendar","formatYearsCalendar","previousInitialDate","yearsMatrix","calculateInitialDate","shift$1","from","to","formatYearRangeTitle","bsDatepickerReducer","action","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","getFormatOptions","undefined","calculateReducer","weekIndex","formatDaysCalendar","formatReducer","monthCalendar","hoveredMonth","rowIndex","newMonth","yearIndex","isSameYear","hoveredYear","flagYearsCalendar","flagReducer","newState","shiftViewDate","navigateOffsetReducer","setFullDate","getViewDate","isDateValid","middleDate","_date","BsDatepickerStore","_dispatcher","MiniState","_super","tslib_1.__extends","MiniStore","datepickerAnimation","trigger","style","overflow","transition","animate","BsDatepickerContainerComponent","_renderer","_element","_positionService","valueChange","EventEmitter","animationState","setStyle","nativeElement","ngOnInit","modifiers","flip","enabled","allowedPositions","event$","take","disable","isTopPosition","isOtherMonthsActive","selectFromOtherMonth","emit","classList","contains","positionServiceEnable","enable","ngOnDestroy","Component","args","selector","providers","template","host","class","(click)","role","aria-label","animations","Renderer2","ElementRef","PositioningService","BsDatepickerDirective","_elementRef","_viewContainerRef","cis","placement","triggers","outsideClick","outsideEsc","bsValueChange","_datepicker","createLoader","onShown","onHidden","isOpen$","isOpen","isShown","_bsValue","getTime","isDestroy$","Subject","listen","show","setConfig","ngOnChanges","changes","_datepickerRef","instance","ngAfterViewInit","takeUntil","toggle","provide","useValue","attach","position","attachment","bsValue","hide","selectRootElement","focus","bsConfig","dispose","complete","Directive","exportAs","ViewContainerRef","ComponentLoaderFactory","Input","Output","BsDatepickerInlineConfig","BsDatepickerInlineContainerComponent","_positioningService","BsDatepickerInlineDirective","BsDaterangepickerInlineConfig","apply","BsDaterangepickerContainerComponent","_rangeStack","chosenRange","ranges","setRangeOnCalendar","BsDaterangepickerInlineContainerComponent","BsDaterangepickerInlineDirective","range","BS_DATEPICKER_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","BsDatepickerInputDirective","multi","BS_DATEPICKER_VALIDATOR","NG_VALIDATORS","_picker","_elRef","changeDetection","_onChange","Function","_onTouched","_validatorChange","_setInputValue","_value","markForCheck","onKeydownEvent","keyCode","code","setProperty","onChange","writeValue","validate","c","isDate","bsDate","invalid","registerOnValidatorChange","_localeKey","Error","parseDate","utcAsLocal","setDisabledState","setAttribute","removeAttribute","registerOnChange","registerOnTouched","onBlur","blur","(change)","(keyup.esc)","(keydown)","(blur)","decorators","Host","ChangeDetectorRef","BsDaterangepickerConfig","BsDaterangepickerDirective","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","start","end","errors","sort","a","_isFirstDateValid","_isSecondDateValid","_input","split","_val","isNaN","valueOf","BsCalendarLayoutComponent","BsCurrentDateViewComponent","BsCustomDatesViewComponent","onSelect","customRange","selectFromRanges","checkRange","ChangeDetectionStrategy","OnPush","BsDatepickerDayDecoratorComponent","customTodayClass","addClass","className","[class.disabled]","[class.is-highlighted]","[class.is-other-month]","[class.is-active-other-month]","[class.in-range]","[class.select-start]","[class.select-end]","[class.selected]","UP","DOWN","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","down","BsNavigationDirection","BsDaysCalendarViewComponent","onHover","onHoverWeek","selectDay","selectWeek","selectWeekDateRange","selectedDay","find","lastDayOfRange","reverse","isWeekHovered","isOtherMonthHovered","BsMonthCalendarViewComponent","viewMonth","hoverMonth","BsTimepickerViewComponent","ampm","hours","minutes","BsYearsCalendarViewComponent","viewYear","hoverYear","BsDatepickerModule","forRoot","ngModule","NgModule","imports","CommonModule","declarations","entryComponents","exports","DateFormatter","DatePickerInnerComponent","selectionDone","update","activeDateChange","stepDay","stepMonth","stepYear","modes","dateFormatter","_activeDate","uniqueId","random","initDate","activeDate","refreshView","checkIfActiveDateGotUpdated","firstChange","setCompareHandler","handler","compareHandlerDay","compareHandlerMonth","compareHandlerYear","compare","date1","date2","datepickerMode","setRefreshViewHandler","refreshViewHandlerDay","refreshViewHandlerMonth","refreshViewHandlerYear","dateFilter","isActive","dateObject","activeDateId","uid","createDateObject","getDate","fixTimeZone","selected","disabled","current","customClass","getCustomClassForDate","arr","size","arrays","splice","getHours","isManual","indexOf","move","direction","expectedStep","toggleMode","_direction","maxMode","customClassObject","clazz","compareDateDisabled","date1Disabled","isDateDisabled","disabledDate","dayDisabled","DatepickerConfig","startingDay","yearRange","showWeeks","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","onlyCurrentMonth","monthColLimit","yearColLimit","shortcutPropagation","DATEPICKER_CONTROL_VALUE_ACCESSOR","DatePickerComponent","config","onTouched","_now","configureOptions","onUpdate","onSelectionDone","onActiveDateChange","_datePicker","ViewChild","static","DayPickerComponent","datePicker","labels","rows","isBs3","self","firstDayOfMonth","difference","numDisplayedFromPreviousMonth","firstDate","setDate","_days","getDates","_dateObject","secondary","abbr","full","title","thursdayIndex","numWeeks","curWeek","getISO8601WeekNumber","d1","d2","startDate","checkDate","time","setMonth","round","MonthPickerComponent","YearPickerComponent","getStartingYear","DatepickerModule","FormsModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\nimport {\n DatepickerRenderOptions,\n BsDatepickerViewMode,\n DatepickerDateCustomClasses\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()\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 * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatepickerDateCustomClasses[];\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 * 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 // DatepickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n}\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n\n _effects: BsDatepickerEffects;\n customRanges: BsCustomDates[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set datesEnabled(value: Date[]) {\n this._effects.setDatesEnabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatepickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n setViewMode(event: BsDatepickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n /* tslint:disable-next-line: no-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} 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\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 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 { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsDatepickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\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 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 /* 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 container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\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 container.monthSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(event.date),\n year: getFullYear(event.date)\n },\n viewMode: 'day'\n })\n );\n };\n\n container.yearSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(event.date)\n },\n viewMode: 'month'\n })\n );\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\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(month => 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(month => 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(selectedDate => 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(selectedRange => 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(hoveredDate => 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(dateCustomClasses => 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 BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\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\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 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?: boolean;\n displayMonths?: number;\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 MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\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';\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 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;\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;\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 {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].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\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } 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 const matrixOptions = {\n width: options.width,\n height: options.height,\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 };\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} 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}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\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\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 });\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 ) {\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 > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (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\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !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 };\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 };\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","// tslint:disable:max-file-line-count\nimport { BsDatepickerState, 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\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function bsDatepickerReducer(state = 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, action);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state, action);\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\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)) {\n return state;\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 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 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 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\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n // how many calendars\n const displayMonths = (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) ? 1 : state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n if (state.showPreviousMonth && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const 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\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,\n action: Action): BsDatepickerState {\n if (state.view.mode === 'day') {\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;\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,\n action: Action): BsDatepickerState {\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (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 monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\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 displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\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 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 const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\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 if (minDate && maxDate && minDate.getMonth() === maxDate.getMonth()) {\n return true;\n }\n\n return false;\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 displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n const isSelected = isSameMonth(month.date, options.selectedDate);\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 > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\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 { 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 displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n const isSelected = isSameYear(year.date, options.selectedDate);\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 > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\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 { 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 {\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","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { 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 { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\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) {\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$\n .pipe(\n take(1)\n )\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._effects\n .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 /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\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\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 ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef, AfterViewInit\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses } from './models';\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 /**\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 /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date;\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\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<BsDatepickerConfig>;\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\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 /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: BsDatepickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\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 * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerContainerComponent>;\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 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\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\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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 * 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: this._bsValue,\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 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()\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, 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';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective 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<BsDatepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\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 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\n protected _subs: Subscription[] = [];\n\n private _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 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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\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\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: this._bsValue,\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 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(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\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 { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { 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 { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\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\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$\n .pipe(\n take(1)\n )\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\n .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(date => {\n this.valueChange.emit(date);\n this.chosenRange = date;\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\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 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._rangeStack.length === 0) {\n this._rangeStack = [day.date];\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) {\n this._rangeStack = (dates === null) ? [] : (dates.value instanceof Date ? [dates.value] : dates.value);\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\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';\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: boolean;\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 _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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 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: this._bsValue,\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: this.bsConfig && this.bsConfig.ranges\n });\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(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\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';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[bsDatepicker]`,\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 {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n\n constructor(@Host() private _picker: BsDatepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\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._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n onKeydownEvent(event) {\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 /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: prefer-switch */\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\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\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()\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\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 { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { 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';\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 /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n\n /**\n * Initial value of daterangepicker\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 daterangepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerConfig>;\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\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: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerContainerComponent>;\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\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.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.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\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\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 this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\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 * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.bsConfig,\n {\n value: this._bsValue,\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: this.bsConfig && this.bsConfig.ranges\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 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';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[bsDaterangepicker]`,\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 {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n\n constructor(@Host() private _picker: BsDaterangepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\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._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(date: Date[]): 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 /* tslint:disable-next-line: no-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, Date] = c.value;\n const errors: object[] = [];\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n // @ts-ignore\n _value.sort((a, b) => a - b);\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\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\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 _input = value.split(this._picker._config.rangeSeparator);\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n this._value = (_input as string[])\n .map((_val: string): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : 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 /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-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 { 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 <button\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(customRange)\"\n [class.selected]=\"!checkRange()\">\n Custom Range\n </button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() ranges: BsCustomDates[];\n @Input() selectedRange: Date[];\n @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n customRange: any = null;\n\n selectFromRanges(range: BsCustomDates) {\n this.onSelect.emit(range);\n }\n\n checkRange() {\n return this.ranges ? this.ranges.filter(range => range.value === this.selectedRange).length > 0 : false;\n }\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.label }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: BsDatepickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\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 // 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\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 {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} 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>‹</span>\n </button>\n\n <ng-container *ngIf=\"calendar.monthTitle\">\n ​ <!-- zero-width space needed for correct alignement\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 ​ <!-- zero-width space needed for correct alignement\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 ​ <!-- zero-width space needed for correct alignement\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>›</span>\n </button>\n `\n})\nexport class BsDatepickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\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 {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\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\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"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.showWeekNumbers\">\n <span\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 <span bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }}</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;\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\n constructor(private _config: BsDatepickerConfig) { }\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 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","// tslint:disable:max-line-length\nimport { 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 { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\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';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\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],\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 {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerConfig,\n BsDaterangepickerConfig,\n BsDatepickerInlineConfig,\n BsDaterangepickerInlineConfig,\n BsDatepickerEffects,\n BsLocaleService\n ]\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","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\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: number;\n @Input() yearColLimit: number;\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 /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\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 // tslint:disable-next-line:no-unused-variable\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 /* tslint:disable-next-line: no-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: Function, 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: Function, 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 /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-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) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\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 /* tslint:disable-next-line: no-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) {\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 this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\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 /* tslint:disable-next-line: no-any */\n } = 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 {\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 return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\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 /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\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})\n/* tslint:enable:component-selector-name component-selector-type */\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: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\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 {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\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 /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-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 /* tslint:disable-next-line: no-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\n// tslint:disable\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\"><</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\">>\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: any[] = [];\n title: string;\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 const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.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: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.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 = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].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\n// tslint:disable\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: any[] = [];\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 const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.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\n// tslint:disable\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\">â¹</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\" 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\">\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 YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.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 {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\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 {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\n"]}
|