ngx-bootstrap 5.6.1 → 6.2.0

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.
Files changed (483) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +8 -1
  3. package/accordion/accordion-group.component.d.ts +3 -2
  4. package/accordion/accordion.module.d.ts +1 -1
  5. package/accordion/bundles/ngx-bootstrap-accordion.umd.js +5 -2
  6. package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -1
  7. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +1 -1
  8. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -1
  9. package/accordion/esm2015/accordion.config.js +6 -2
  10. package/accordion/esm2015/accordion.module.js +2 -3
  11. package/accordion/esm5/accordion.config.js +6 -2
  12. package/accordion/esm5/accordion.module.js +2 -3
  13. package/accordion/fesm2015/ngx-bootstrap-accordion.js +6 -3
  14. package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -1
  15. package/accordion/fesm5/ngx-bootstrap-accordion.js +6 -3
  16. package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -1
  17. package/accordion/ngx-bootstrap-accordion.metadata.json +1 -1
  18. package/accordion/package.json +2 -2
  19. package/alert/alert.module.d.ts +1 -1
  20. package/alert/bundles/ngx-bootstrap-alert.umd.js +5 -2
  21. package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -1
  22. package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -2
  23. package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -1
  24. package/alert/esm2015/alert.component.js +3 -3
  25. package/alert/esm2015/alert.config.js +6 -2
  26. package/alert/esm2015/alert.module.js +2 -3
  27. package/alert/esm5/alert.component.js +3 -3
  28. package/alert/esm5/alert.config.js +6 -2
  29. package/alert/esm5/alert.module.js +2 -3
  30. package/alert/fesm2015/ngx-bootstrap-alert.js +6 -3
  31. package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -1
  32. package/alert/fesm5/ngx-bootstrap-alert.js +6 -3
  33. package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -1
  34. package/alert/ngx-bootstrap-alert.metadata.json +1 -1
  35. package/alert/package.json +2 -2
  36. package/buttons/bundles/ngx-bootstrap-buttons.umd.js +293 -16
  37. package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -1
  38. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +1 -1
  39. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -1
  40. package/buttons/button-checkbox.directive.d.ts +2 -2
  41. package/buttons/button-radio-group.directive.d.ts +12 -1
  42. package/buttons/button-radio.directive.d.ts +19 -7
  43. package/buttons/buttons.module.d.ts +1 -1
  44. package/buttons/esm2015/button-radio-group.directive.js +140 -3
  45. package/buttons/esm2015/button-radio.directive.js +98 -18
  46. package/buttons/esm2015/buttons.module.js +1 -1
  47. package/buttons/esm5/button-radio-group.directive.js +171 -3
  48. package/buttons/esm5/button-radio.directive.js +126 -17
  49. package/buttons/esm5/buttons.module.js +1 -1
  50. package/buttons/fesm2015/ngx-bootstrap-buttons.js +235 -18
  51. package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -1
  52. package/buttons/fesm5/ngx-bootstrap-buttons.js +294 -17
  53. package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -1
  54. package/buttons/ngx-bootstrap-buttons.metadata.json +1 -1
  55. package/buttons/package.json +2 -2
  56. package/carousel/bundles/ngx-bootstrap-carousel.umd.js +5 -3
  57. package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -1
  58. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +1 -1
  59. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -1
  60. package/carousel/carousel.component.d.ts +7 -5
  61. package/carousel/carousel.module.d.ts +1 -1
  62. package/carousel/esm2015/carousel.config.js +6 -2
  63. package/carousel/esm2015/carousel.module.js +2 -4
  64. package/carousel/esm5/carousel.component.js +4 -4
  65. package/carousel/esm5/carousel.config.js +6 -2
  66. package/carousel/esm5/carousel.module.js +2 -4
  67. package/carousel/fesm2015/ngx-bootstrap-carousel.js +6 -4
  68. package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -1
  69. package/carousel/fesm5/ngx-bootstrap-carousel.js +6 -4
  70. package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -1
  71. package/carousel/ngx-bootstrap-carousel.metadata.json +1 -1
  72. package/carousel/package.json +2 -2
  73. package/chronos/bundles/ngx-bootstrap-chronos.umd.js +90 -73
  74. package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
  75. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +69 -1
  76. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
  77. package/chronos/esm2015/create/from-anything.js +2 -2
  78. package/chronos/esm2015/duration/valid.js +4 -6
  79. package/chronos/esm2015/i18n/ar.js +1 -4
  80. package/chronos/esm2015/i18n/bg.js +18 -20
  81. package/chronos/esm2015/i18n/cs.js +45 -47
  82. package/chronos/esm2015/i18n/et.js +1 -3
  83. package/chronos/esm2015/i18n/th-be.js +21 -1
  84. package/chronos/esm2015/locale/locale.class.js +5 -3
  85. package/chronos/esm5/create/from-anything.js +2 -2
  86. package/chronos/esm5/duration/valid.js +4 -6
  87. package/chronos/esm5/i18n/ar.js +1 -4
  88. package/chronos/esm5/i18n/bg.js +18 -20
  89. package/chronos/esm5/i18n/cs.js +45 -47
  90. package/chronos/esm5/i18n/et.js +1 -3
  91. package/chronos/esm5/i18n/th-be.js +21 -1
  92. package/chronos/esm5/locale/locale.class.js +6 -3
  93. package/chronos/esm5/test/chain.js +4 -4
  94. package/chronos/fesm2015/ngx-bootstrap-chronos.js +89 -73
  95. package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
  96. package/chronos/fesm5/ngx-bootstrap-chronos.js +90 -73
  97. package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
  98. package/chronos/locale/locale.class.d.ts +4 -3
  99. package/chronos/package.json +2 -2
  100. package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -1
  101. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -1
  102. package/collapse/collapse.directive.d.ts +3 -2
  103. package/collapse/collapse.module.d.ts +1 -1
  104. package/collapse/esm2015/collapse.module.js +1 -1
  105. package/collapse/esm5/collapse.module.js +1 -1
  106. package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -1
  107. package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -1
  108. package/collapse/package.json +2 -2
  109. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +5 -4
  110. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
  111. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
  112. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
  113. package/component-loader/component-loader.class.d.ts +4 -3
  114. package/component-loader/esm2015/component-loader.class.js +5 -5
  115. package/component-loader/esm5/component-loader.class.js +6 -5
  116. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +4 -4
  117. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
  118. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +5 -4
  119. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
  120. package/component-loader/package.json +2 -2
  121. package/datepicker/base/bs-datepicker-container.d.ts +20 -8
  122. package/datepicker/bs-datepicker-inline.component.d.ts +6 -2
  123. package/datepicker/bs-datepicker.component.d.ts +14 -5
  124. package/datepicker/bs-datepicker.config.d.ts +41 -1
  125. package/datepicker/bs-datepicker.css +126 -5
  126. package/datepicker/bs-datepicker.css.map +4 -4
  127. package/datepicker/bs-datepicker.module.d.ts +1 -1
  128. package/datepicker/bs-datepicker.scss +25 -5
  129. package/datepicker/bs-daterangepicker-inline.component.d.ts +1 -1
  130. package/datepicker/bs-daterangepicker.component.d.ts +9 -4
  131. package/datepicker/bs-locale.service.d.ts +3 -3
  132. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +604 -93
  133. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
  134. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -2
  135. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
  136. package/datepicker/datepicker-inner.component.d.ts +2 -1
  137. package/datepicker/datepicker.component.d.ts +2 -1
  138. package/datepicker/datepicker.module.d.ts +1 -1
  139. package/datepicker/daypicker.component.d.ts +1 -1
  140. package/datepicker/engine/flag-days-calendar.d.ts +2 -1
  141. package/datepicker/engine/flag-months-calendar.d.ts +1 -0
  142. package/datepicker/engine/flag-years-calendar.d.ts +1 -0
  143. package/datepicker/esm2015/base/bs-datepicker-container.js +38 -1
  144. package/datepicker/esm2015/bs-datepicker-inline.component.js +12 -1
  145. package/datepicker/esm2015/bs-datepicker-inline.config.js +6 -2
  146. package/datepicker/esm2015/bs-datepicker-input.directive.js +9 -1
  147. package/datepicker/esm2015/bs-datepicker.component.js +45 -6
  148. package/datepicker/esm2015/bs-datepicker.config.js +88 -2
  149. package/datepicker/esm2015/bs-datepicker.module.js +3 -10
  150. package/datepicker/esm2015/bs-daterangepicker-inline.component.js +3 -2
  151. package/datepicker/esm2015/bs-daterangepicker-inline.config.js +6 -2
  152. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +11 -3
  153. package/datepicker/esm2015/bs-daterangepicker.component.js +36 -7
  154. package/datepicker/esm2015/bs-daterangepicker.config.js +6 -2
  155. package/datepicker/esm2015/datepicker.config.js +6 -2
  156. package/datepicker/esm2015/datepicker.module.js +1 -1
  157. package/datepicker/esm2015/engine/flag-days-calendar.js +22 -3
  158. package/datepicker/esm2015/engine/flag-months-calendar.js +14 -3
  159. package/datepicker/esm2015/engine/flag-years-calendar.js +14 -3
  160. package/datepicker/esm2015/models/index.js +13 -1
  161. package/datepicker/esm2015/public_api.js +1 -1
  162. package/datepicker/esm2015/reducer/bs-datepicker.actions.js +14 -1
  163. package/datepicker/esm2015/reducer/bs-datepicker.effects.js +27 -33
  164. package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +10 -2
  165. package/datepicker/esm2015/reducer/bs-datepicker.state.js +3 -1
  166. package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +5 -2
  167. package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +57 -5
  168. package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +2 -2
  169. package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +73 -4
  170. package/datepicker/esm2015/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
  171. package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +42 -4
  172. package/datepicker/esm5/base/bs-datepicker-container.js +52 -1
  173. package/datepicker/esm5/bs-datepicker-inline.component.js +12 -1
  174. package/datepicker/esm5/bs-datepicker-inline.config.js +8 -4
  175. package/datepicker/esm5/bs-datepicker-input.directive.js +9 -1
  176. package/datepicker/esm5/bs-datepicker.component.js +58 -8
  177. package/datepicker/esm5/bs-datepicker.config.js +88 -2
  178. package/datepicker/esm5/bs-datepicker.module.js +3 -10
  179. package/datepicker/esm5/bs-daterangepicker-inline.component.js +3 -2
  180. package/datepicker/esm5/bs-daterangepicker-inline.config.js +8 -4
  181. package/datepicker/esm5/bs-daterangepicker-input.directive.js +11 -3
  182. package/datepicker/esm5/bs-daterangepicker.component.js +49 -9
  183. package/datepicker/esm5/bs-daterangepicker.config.js +8 -4
  184. package/datepicker/esm5/datepicker.config.js +6 -2
  185. package/datepicker/esm5/datepicker.module.js +1 -1
  186. package/datepicker/esm5/engine/flag-days-calendar.js +22 -3
  187. package/datepicker/esm5/engine/flag-months-calendar.js +14 -3
  188. package/datepicker/esm5/engine/flag-years-calendar.js +14 -3
  189. package/datepicker/esm5/engine/format-days-calendar.js +3 -3
  190. package/datepicker/esm5/models/index.js +13 -1
  191. package/datepicker/esm5/public_api.js +1 -1
  192. package/datepicker/esm5/reducer/bs-datepicker.actions.js +18 -1
  193. package/datepicker/esm5/reducer/bs-datepicker.effects.js +33 -35
  194. package/datepicker/esm5/reducer/bs-datepicker.reducer.js +10 -2
  195. package/datepicker/esm5/reducer/bs-datepicker.state.js +3 -1
  196. package/datepicker/esm5/reducer/bs-datepicker.store.js +3 -3
  197. package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +5 -2
  198. package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +74 -8
  199. package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +4 -4
  200. package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +92 -7
  201. package/datepicker/esm5/themes/bs/bs-daterangepicker-inline-container.component.js +4 -4
  202. package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +25 -2
  203. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +549 -96
  204. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
  205. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +606 -94
  206. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
  207. package/datepicker/models/index.d.ts +5 -0
  208. package/datepicker/monthpicker.component.d.ts +1 -1
  209. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
  210. package/datepicker/package.json +2 -2
  211. package/datepicker/public_api.d.ts +1 -1
  212. package/datepicker/reducer/bs-datepicker.actions.d.ts +3 -1
  213. package/datepicker/reducer/bs-datepicker.effects.d.ts +2 -1
  214. package/datepicker/reducer/bs-datepicker.state.d.ts +2 -1
  215. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -0
  216. package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +9 -5
  217. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +9 -5
  218. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +2 -0
  219. package/datepicker/utils/scss/mixins.css.map +2 -2
  220. package/datepicker/utils/scss/mixins.scss +98 -0
  221. package/datepicker/utils/scss/variables.css.map +1 -1
  222. package/datepicker/utils/scss/variables.scss +14 -0
  223. package/datepicker/yearpicker.component.d.ts +1 -1
  224. package/dropdown/bs-dropdown-container.component.d.ts +1 -1
  225. package/dropdown/bs-dropdown.directive.d.ts +12 -7
  226. package/dropdown/bs-dropdown.module.d.ts +1 -1
  227. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +13 -8
  228. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
  229. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +1 -1
  230. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
  231. package/dropdown/esm2015/bs-dropdown.config.js +6 -2
  232. package/dropdown/esm2015/bs-dropdown.directive.js +8 -3
  233. package/dropdown/esm2015/bs-dropdown.module.js +2 -7
  234. package/dropdown/esm5/bs-dropdown-toggle.directive.js +3 -3
  235. package/dropdown/esm5/bs-dropdown.config.js +6 -2
  236. package/dropdown/esm5/bs-dropdown.directive.js +11 -5
  237. package/dropdown/esm5/bs-dropdown.module.js +2 -7
  238. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +13 -9
  239. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
  240. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +14 -9
  241. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
  242. package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
  243. package/dropdown/package.json +2 -2
  244. package/locale/package.json +2 -2
  245. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -1
  246. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -1
  247. package/mini-ngrx/esm5/state.class.js +3 -3
  248. package/mini-ngrx/esm5/store.class.js +3 -3
  249. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -1
  250. package/mini-ngrx/package.json +2 -2
  251. package/modal/bs-modal-ref.service.d.ts +15 -2
  252. package/modal/bs-modal.service.d.ts +7 -4
  253. package/modal/bundles/ngx-bootstrap-modal.umd.js +154 -59
  254. package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
  255. package/modal/bundles/ngx-bootstrap-modal.umd.min.js +1 -1
  256. package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
  257. package/modal/esm2015/bs-modal-ref.service.js +20 -1
  258. package/modal/esm2015/bs-modal.service.js +102 -47
  259. package/modal/esm2015/modal-container.component.js +10 -2
  260. package/modal/esm2015/modal-options.class.js +14 -3
  261. package/modal/esm2015/modal.directive.js +10 -7
  262. package/modal/esm2015/modal.module.js +1 -1
  263. package/modal/esm2015/models/index.js +3 -1
  264. package/modal/esm2015/ngx-bootstrap-modal.js +2 -2
  265. package/modal/esm2015/public_api.js +2 -2
  266. package/modal/esm5/bs-modal-ref.service.js +19 -1
  267. package/modal/esm5/bs-modal.service.js +109 -57
  268. package/modal/esm5/modal-container.component.js +13 -2
  269. package/modal/esm5/modal-options.class.js +14 -3
  270. package/modal/esm5/modal.directive.js +9 -7
  271. package/modal/esm5/modal.module.js +1 -1
  272. package/modal/esm5/models/index.js +3 -1
  273. package/modal/esm5/ngx-bootstrap-modal.js +2 -2
  274. package/modal/esm5/public_api.js +2 -2
  275. package/modal/fesm2015/ngx-bootstrap-modal.js +148 -52
  276. package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
  277. package/modal/fesm5/ngx-bootstrap-modal.js +155 -61
  278. package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
  279. package/modal/modal-backdrop.component.d.ts +4 -2
  280. package/modal/modal-container.component.d.ts +1 -0
  281. package/modal/modal-options.class.d.ts +8 -3
  282. package/modal/modal.directive.d.ts +5 -4
  283. package/modal/modal.module.d.ts +2 -2
  284. package/modal/models/index.d.ts +1 -0
  285. package/modal/ngx-bootstrap-modal.metadata.json +1 -1
  286. package/modal/package.json +2 -2
  287. package/modal/public_api.d.ts +1 -1
  288. package/package.json +2 -2
  289. package/pagination/bundles/ngx-bootstrap-pagination.umd.js +5 -2
  290. package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -1
  291. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +1 -1
  292. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -1
  293. package/pagination/esm2015/pagination.config.js +6 -2
  294. package/pagination/esm2015/pagination.module.js +2 -3
  295. package/pagination/esm5/pagination.config.js +6 -2
  296. package/pagination/esm5/pagination.module.js +2 -3
  297. package/pagination/fesm2015/ngx-bootstrap-pagination.js +6 -3
  298. package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -1
  299. package/pagination/fesm5/ngx-bootstrap-pagination.js +6 -3
  300. package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -1
  301. package/pagination/ngx-bootstrap-pagination.metadata.json +1 -1
  302. package/pagination/package.json +2 -2
  303. package/pagination/pager.component.d.ts +8 -4
  304. package/pagination/pagination.component.d.ts +8 -4
  305. package/pagination/pagination.module.d.ts +1 -1
  306. package/popover/bundles/ngx-bootstrap-popover.umd.js +55 -3
  307. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
  308. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
  309. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
  310. package/popover/esm2015/popover-container.component.js +4 -1
  311. package/popover/esm2015/popover.config.js +6 -2
  312. package/popover/esm2015/popover.directive.js +39 -2
  313. package/popover/esm2015/popover.module.js +2 -3
  314. package/popover/esm5/popover-container.component.js +4 -1
  315. package/popover/esm5/popover.config.js +6 -2
  316. package/popover/esm5/popover.directive.js +48 -2
  317. package/popover/esm5/popover.module.js +2 -3
  318. package/popover/fesm2015/ngx-bootstrap-popover.js +47 -4
  319. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
  320. package/popover/fesm5/ngx-bootstrap-popover.js +56 -4
  321. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
  322. package/popover/ngx-bootstrap-popover.metadata.json +1 -1
  323. package/popover/package.json +2 -2
  324. package/popover/popover-container.component.d.ts +2 -1
  325. package/popover/popover.directive.d.ts +10 -1
  326. package/popover/popover.module.d.ts +1 -1
  327. package/positioning/bundles/ngx-bootstrap-positioning.umd.js +7 -7
  328. package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
  329. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +1 -1
  330. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
  331. package/positioning/esm2015/modifiers/flip.js +3 -3
  332. package/positioning/esm2015/modifiers/preventOverflow.js +2 -2
  333. package/positioning/esm2015/modifiers/shift.js +2 -2
  334. package/positioning/esm2015/utils/computeAutoPlacement.js +2 -2
  335. package/positioning/esm2015/utils/getClientRect.js +2 -2
  336. package/positioning/esm5/modifiers/flip.js +4 -4
  337. package/positioning/esm5/modifiers/preventOverflow.js +4 -4
  338. package/positioning/esm5/modifiers/shift.js +3 -3
  339. package/positioning/esm5/utils/computeAutoPlacement.js +3 -3
  340. package/positioning/esm5/utils/getClientRect.js +3 -3
  341. package/positioning/fesm2015/ngx-bootstrap-positioning.js +6 -6
  342. package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
  343. package/positioning/fesm5/ngx-bootstrap-positioning.js +7 -7
  344. package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
  345. package/positioning/package.json +2 -2
  346. package/positioning/positioning.service.d.ts +1 -1
  347. package/progressbar/bar.component.d.ts +4 -5
  348. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +45 -66
  349. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -1
  350. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +1 -1
  351. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -1
  352. package/progressbar/esm2015/bar.component.js +33 -48
  353. package/progressbar/esm2015/progressbar.component.js +5 -8
  354. package/progressbar/esm2015/progressbar.config.js +6 -2
  355. package/progressbar/esm2015/progressbar.module.js +2 -3
  356. package/progressbar/esm5/bar.component.js +37 -58
  357. package/progressbar/esm5/progressbar.component.js +5 -8
  358. package/progressbar/esm5/progressbar.config.js +6 -2
  359. package/progressbar/esm5/progressbar.module.js +2 -3
  360. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +42 -57
  361. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -1
  362. package/progressbar/fesm5/ngx-bootstrap-progressbar.js +46 -67
  363. package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -1
  364. package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -1
  365. package/progressbar/package.json +2 -2
  366. package/progressbar/progressbar.component.d.ts +7 -6
  367. package/progressbar/progressbar.module.d.ts +1 -1
  368. package/rating/bundles/ngx-bootstrap-rating.umd.js +5 -2
  369. package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
  370. package/rating/bundles/ngx-bootstrap-rating.umd.min.js +1 -1
  371. package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
  372. package/rating/esm2015/rating.config.js +6 -2
  373. package/rating/esm2015/rating.module.js +2 -3
  374. package/rating/esm5/rating.config.js +6 -2
  375. package/rating/esm5/rating.module.js +2 -3
  376. package/rating/fesm2015/ngx-bootstrap-rating.js +6 -3
  377. package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
  378. package/rating/fesm5/ngx-bootstrap-rating.js +6 -3
  379. package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
  380. package/rating/ngx-bootstrap-rating.metadata.json +1 -1
  381. package/rating/package.json +2 -2
  382. package/rating/rating.module.d.ts +1 -1
  383. package/schematics/ng-add/index.spec.js +30 -27
  384. package/schematics/ng-add/index.spec.js.map +1 -1
  385. package/schematics/utils/index.js +18 -5
  386. package/schematics/utils/index.js.map +1 -1
  387. package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -1
  388. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -1
  389. package/sortable/esm2015/sortable.module.js +1 -1
  390. package/sortable/esm5/sortable.component.js +4 -4
  391. package/sortable/esm5/sortable.module.js +1 -1
  392. package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -1
  393. package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -1
  394. package/sortable/package.json +2 -2
  395. package/sortable/sortable.component.d.ts +2 -1
  396. package/sortable/sortable.module.d.ts +1 -1
  397. package/tabs/bundles/ngx-bootstrap-tabs.umd.js +40 -3
  398. package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -1
  399. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +1 -1
  400. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -1
  401. package/tabs/esm2015/tab.directive.js +2 -2
  402. package/tabs/esm2015/tabs.module.js +2 -3
  403. package/tabs/esm2015/tabset.component.js +22 -1
  404. package/tabs/esm2015/tabset.config.js +15 -2
  405. package/tabs/esm5/tab.directive.js +2 -2
  406. package/tabs/esm5/tabs.module.js +2 -3
  407. package/tabs/esm5/tabset.component.js +26 -1
  408. package/tabs/esm5/tabset.config.js +15 -2
  409. package/tabs/fesm2015/ngx-bootstrap-tabs.js +37 -4
  410. package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -1
  411. package/tabs/fesm5/ngx-bootstrap-tabs.js +41 -4
  412. package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -1
  413. package/tabs/ng-transclude.directive.d.ts +2 -2
  414. package/tabs/ngx-bootstrap-tabs.metadata.json +1 -1
  415. package/tabs/package.json +2 -2
  416. package/tabs/tab.directive.d.ts +5 -3
  417. package/tabs/tabs.module.d.ts +1 -1
  418. package/tabs/tabset.component.d.ts +9 -3
  419. package/tabs/tabset.config.d.ts +2 -0
  420. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +11 -6
  421. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
  422. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +1 -1
  423. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
  424. package/timepicker/esm2015/timepicker-controls.util.js +4 -2
  425. package/timepicker/esm2015/timepicker.component.js +2 -2
  426. package/timepicker/esm2015/timepicker.config.js +8 -4
  427. package/timepicker/esm2015/timepicker.module.js +2 -3
  428. package/timepicker/esm5/reducer/timepicker.store.js +3 -3
  429. package/timepicker/esm5/timepicker-controls.util.js +4 -2
  430. package/timepicker/esm5/timepicker.component.js +2 -2
  431. package/timepicker/esm5/timepicker.config.js +8 -4
  432. package/timepicker/esm5/timepicker.module.js +2 -3
  433. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +12 -7
  434. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
  435. package/timepicker/fesm5/ngx-bootstrap-timepicker.js +12 -7
  436. package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
  437. package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
  438. package/timepicker/package.json +2 -2
  439. package/timepicker/timepicker.component.d.ts +3 -3
  440. package/timepicker/timepicker.config.d.ts +1 -1
  441. package/timepicker/timepicker.module.d.ts +1 -1
  442. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +5 -2
  443. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
  444. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +1 -1
  445. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
  446. package/tooltip/esm2015/tooltip.config.js +6 -2
  447. package/tooltip/esm2015/tooltip.directive.js +3 -3
  448. package/tooltip/esm2015/tooltip.module.js +2 -3
  449. package/tooltip/esm5/tooltip.config.js +6 -2
  450. package/tooltip/esm5/tooltip.directive.js +3 -3
  451. package/tooltip/esm5/tooltip.module.js +2 -3
  452. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +6 -3
  453. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
  454. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +6 -3
  455. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
  456. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
  457. package/tooltip/package.json +2 -2
  458. package/tooltip/tooltip-container.component.d.ts +1 -1
  459. package/tooltip/tooltip.directive.d.ts +15 -10
  460. package/tooltip/tooltip.module.d.ts +1 -1
  461. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +170 -19
  462. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
  463. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +1 -1
  464. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
  465. package/typeahead/esm2015/typeahead-utils.js +35 -4
  466. package/typeahead/esm2015/typeahead.config.js +6 -2
  467. package/typeahead/esm2015/typeahead.directive.js +121 -16
  468. package/typeahead/esm2015/typeahead.module.js +2 -3
  469. package/typeahead/esm5/typeahead-utils.js +37 -6
  470. package/typeahead/esm5/typeahead.config.js +6 -2
  471. package/typeahead/esm5/typeahead.directive.js +135 -18
  472. package/typeahead/esm5/typeahead.module.js +2 -3
  473. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +160 -21
  474. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
  475. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +172 -21
  476. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
  477. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
  478. package/typeahead/package.json +2 -2
  479. package/typeahead/typeahead-container.component.d.ts +14 -12
  480. package/typeahead/typeahead-utils.d.ts +1 -1
  481. package/typeahead/typeahead.directive.d.ts +20 -1
  482. package/typeahead/typeahead.module.d.ts +1 -1
  483. package/utils/package.json +2 -2
@@ -1,13 +1,14 @@
1
- import { Injectable, EventEmitter, Component, Renderer2, ElementRef, Directive, ViewContainerRef, Input, Output, forwardRef, Host, ChangeDetectorRef, ChangeDetectionStrategy, NgModule, ViewChild } from '@angular/core';
2
- import { filter, map, take, takeUntil } from 'rxjs/operators';
3
- import { getMonth, getFullYear, isFirstDayOfWeek, getDay, shiftDate, isBefore, endOf, isAfter, startOf, isArray, isSame, getFirstDayOfMonth, formatDate, getLocale, isSameMonth, isSameDay, isDisabledDay, isSameYear, isDateValid, setFullDate, isDate, parseDate, utcAsLocal } from 'ngx-bootstrap/chronos';
4
- import { BehaviorSubject, Subject } from 'rxjs';
5
- import { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';
1
+ import { Injectable, ɵɵdefineInjectable, EventEmitter, Component, Renderer2, ElementRef, Directive, ViewContainerRef, Input, Output, forwardRef, Host, ChangeDetectorRef, ChangeDetectionStrategy, NgModule, ViewChild } from '@angular/core';
2
+ import { filter, map, take, takeUntil, distinctUntilChanged } from 'rxjs/operators';
3
+ import { isFirstDayOfWeek, getDay, shiftDate, isBefore, endOf, isAfter, startOf, isArray, isSame, getFirstDayOfMonth, formatDate, getLocale, isSameMonth, isSameDay, isDisabledDay, isSameYear, isDateValid, setFullDate, getMonth, getFullYear, isDate, parseDate, utcAsLocal } from 'ngx-bootstrap/chronos';
6
4
  import { PositioningService } from 'ngx-bootstrap/positioning';
7
5
  import { trigger, state, style, transition, animate } from '@angular/animations';
6
+ import { BehaviorSubject, Subject } from 'rxjs';
7
+ import { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';
8
8
  import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';
9
9
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';
10
10
  import { CommonModule } from '@angular/common';
11
+ import { TooltipModule } from 'ngx-bootstrap/tooltip';
11
12
  import { isBs3 } from 'ngx-bootstrap/utils';
12
13
 
13
14
  /**
@@ -32,6 +33,10 @@ class BsDatepickerConfig {
32
33
  * turn on/off animation
33
34
  */
34
35
  this.isAnimated = false;
36
+ /**
37
+ * The view that the datepicker should start in
38
+ */
39
+ this.startView = 'day';
35
40
  /**
36
41
  * If true, returns focus to the datepicker / daterangepicker input after date selection
37
42
  */
@@ -61,11 +66,42 @@ class BsDatepickerConfig {
61
66
  this.monthLabel = 'MMMM';
62
67
  this.yearLabel = 'YYYY';
63
68
  this.weekNumbers = 'w';
69
+ /**
70
+ * Shows 'today' button
71
+ */
72
+ this.showTodayButton = false;
73
+ /**
74
+ * Shows clear button
75
+ */
76
+ this.showClearButton = false;
77
+ /**
78
+ * Positioning of 'today' button
79
+ */
80
+ this.todayPosition = 'center';
81
+ /**
82
+ * Positioning of 'clear' button
83
+ */
84
+ this.clearPosition = 'right';
85
+ /**
86
+ * Label for 'today' button
87
+ */
88
+ this.todayButtonLabel = 'Today';
89
+ /**
90
+ * Label for 'clear' button
91
+ */
92
+ this.clearButtonLabel = 'Clear';
93
+ /**
94
+ * Label for 'custom range' button
95
+ */
96
+ this.customRangeButtonLabel = 'Custom Range';
64
97
  }
65
98
  }
66
99
  BsDatepickerConfig.decorators = [
67
- { type: Injectable }
100
+ { type: Injectable, args: [{
101
+ providedIn: 'root'
102
+ },] }
68
103
  ];
104
+ /** @nocollapse */ BsDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDatepickerConfig_Factory() { return new BsDatepickerConfig(); }, token: BsDatepickerConfig, providedIn: "root" });
69
105
  if (false) {
70
106
  /**
71
107
  * sets use adaptive position
@@ -96,11 +132,21 @@ if (false) {
96
132
  * @type {?}
97
133
  */
98
134
  BsDatepickerConfig.prototype.maxDate;
135
+ /**
136
+ * The view that the datepicker should start in
137
+ * @type {?}
138
+ */
139
+ BsDatepickerConfig.prototype.startView;
99
140
  /**
100
141
  * Default date custom classes for all date/range pickers
101
142
  * @type {?}
102
143
  */
103
144
  BsDatepickerConfig.prototype.dateCustomClasses;
145
+ /**
146
+ * Default tooltip text for all date/range pickers
147
+ * @type {?}
148
+ */
149
+ BsDatepickerConfig.prototype.dateTooltipTexts;
104
150
  /**
105
151
  * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays
106
152
  * @type {?}
@@ -185,6 +231,11 @@ if (false) {
185
231
  * @type {?}
186
232
  */
187
233
  BsDatepickerConfig.prototype.ranges;
234
+ /**
235
+ * Max Date Range in days
236
+ * @type {?}
237
+ */
238
+ BsDatepickerConfig.prototype.maxDateRange;
188
239
  /** @type {?} */
189
240
  BsDatepickerConfig.prototype.monthTitle;
190
241
  /** @type {?} */
@@ -197,8 +248,64 @@ if (false) {
197
248
  BsDatepickerConfig.prototype.yearLabel;
198
249
  /** @type {?} */
199
250
  BsDatepickerConfig.prototype.weekNumbers;
251
+ /**
252
+ * Shows 'today' button
253
+ * @type {?}
254
+ */
255
+ BsDatepickerConfig.prototype.showTodayButton;
256
+ /**
257
+ * Shows clear button
258
+ * @type {?}
259
+ */
260
+ BsDatepickerConfig.prototype.showClearButton;
261
+ /**
262
+ * Positioning of 'today' button
263
+ * @type {?}
264
+ */
265
+ BsDatepickerConfig.prototype.todayPosition;
266
+ /**
267
+ * Positioning of 'clear' button
268
+ * @type {?}
269
+ */
270
+ BsDatepickerConfig.prototype.clearPosition;
271
+ /**
272
+ * Label for 'today' button
273
+ * @type {?}
274
+ */
275
+ BsDatepickerConfig.prototype.todayButtonLabel;
276
+ /**
277
+ * Label for 'clear' button
278
+ * @type {?}
279
+ */
280
+ BsDatepickerConfig.prototype.clearButtonLabel;
281
+ /**
282
+ * Label for 'custom range' button
283
+ * @type {?}
284
+ */
285
+ BsDatepickerConfig.prototype.customRangeButtonLabel;
200
286
  }
201
287
 
288
+ /**
289
+ * @fileoverview added by tsickle
290
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
291
+ */
292
+ /** @type {?} */
293
+ const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';
294
+ /** @type {?} */
295
+ const datepickerAnimation = trigger('datepickerAnimation', [
296
+ state('animated-down', style({ height: '*', overflow: 'hidden' })),
297
+ transition('* => animated-down', [
298
+ style({ height: 0, overflow: 'hidden' }),
299
+ animate(DATEPICKER_ANIMATION_TIMING)
300
+ ]),
301
+ state('animated-up', style({ height: '*', overflow: 'hidden' })),
302
+ transition('* => animated-up', [
303
+ style({ height: '*', overflow: 'hidden' }),
304
+ animate(DATEPICKER_ANIMATION_TIMING)
305
+ ]),
306
+ transition('* => unanimated', animate('0s'))
307
+ ]);
308
+
202
309
  /**
203
310
  * @fileoverview added by tsickle
204
311
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -209,6 +316,7 @@ if (false) {
209
316
  class BsDatepickerAbstractComponent {
210
317
  constructor() {
211
318
  this.customRanges = [];
319
+ this.chosenRange = [];
212
320
  }
213
321
  /**
214
322
  * @param {?} value
@@ -259,6 +367,13 @@ class BsDatepickerAbstractComponent {
259
367
  set dateCustomClasses(value) {
260
368
  this._effects.setDateCustomClasses(value);
261
369
  }
370
+ /**
371
+ * @param {?} value
372
+ * @return {?}
373
+ */
374
+ set dateTooltipTexts(value) {
375
+ this._effects.setDateTooltipTexts(value);
376
+ }
262
377
  /**
263
378
  * @param {?} event
264
379
  * @return {?}
@@ -304,6 +419,19 @@ class BsDatepickerAbstractComponent {
304
419
  * @return {?}
305
420
  */
306
421
  yearSelectHandler(event) { }
422
+ /**
423
+ * @param {?} dates
424
+ * @return {?}
425
+ */
426
+ setRangeOnCalendar(dates) { }
427
+ /**
428
+ * @return {?}
429
+ */
430
+ setToday() { }
431
+ /**
432
+ * @return {?}
433
+ */
434
+ clearDate() { }
307
435
  /* tslint:disable-next-line: no-any */
308
436
  /**
309
437
  * @param {?} event
@@ -319,10 +447,26 @@ if (false) {
319
447
  /** @type {?} */
320
448
  BsDatepickerAbstractComponent.prototype.isOtherMonthsActive;
321
449
  /** @type {?} */
450
+ BsDatepickerAbstractComponent.prototype.showTodayBtn;
451
+ /** @type {?} */
452
+ BsDatepickerAbstractComponent.prototype.todayBtnLbl;
453
+ /** @type {?} */
454
+ BsDatepickerAbstractComponent.prototype.todayPos;
455
+ /** @type {?} */
456
+ BsDatepickerAbstractComponent.prototype.showClearBtn;
457
+ /** @type {?} */
458
+ BsDatepickerAbstractComponent.prototype.clearBtnLbl;
459
+ /** @type {?} */
460
+ BsDatepickerAbstractComponent.prototype.clearPos;
461
+ /** @type {?} */
322
462
  BsDatepickerAbstractComponent.prototype._effects;
323
463
  /** @type {?} */
324
464
  BsDatepickerAbstractComponent.prototype.customRanges;
325
465
  /** @type {?} */
466
+ BsDatepickerAbstractComponent.prototype.customRangeBtnLbl;
467
+ /** @type {?} */
468
+ BsDatepickerAbstractComponent.prototype.chosenRange;
469
+ /** @type {?} */
326
470
  BsDatepickerAbstractComponent.prototype.viewMode;
327
471
  /** @type {?} */
328
472
  BsDatepickerAbstractComponent.prototype.daysCalendar;
@@ -498,6 +642,16 @@ class BsDatepickerActions {
498
642
  payload: value
499
643
  };
500
644
  }
645
+ /**
646
+ * @param {?} value
647
+ * @return {?}
648
+ */
649
+ setDateTooltipTexts(value) {
650
+ return {
651
+ type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,
652
+ payload: value
653
+ };
654
+ }
501
655
  /**
502
656
  * @param {?} locale
503
657
  * @return {?}
@@ -525,6 +679,7 @@ BsDatepickerActions.SET_DATESDISABLED = '[datepicker] set dates disabled';
525
679
  BsDatepickerActions.SET_DATESENABLED = '[datepicker] set dates enabled';
526
680
  BsDatepickerActions.SET_IS_DISABLED = '[datepicker] set is disabled';
527
681
  BsDatepickerActions.SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';
682
+ BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';
528
683
  BsDatepickerActions.SET_LOCALE = '[datepicker] set datepicker locale';
529
684
  BsDatepickerActions.SELECT_RANGE = '[daterangepicker] select dates range';
530
685
  BsDatepickerActions.decorators = [
@@ -564,6 +719,8 @@ if (false) {
564
719
  /** @type {?} */
565
720
  BsDatepickerActions.SET_DATE_CUSTOM_CLASSES;
566
721
  /** @type {?} */
722
+ BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS;
723
+ /** @type {?} */
567
724
  BsDatepickerActions.SET_LOCALE;
568
725
  /** @type {?} */
569
726
  BsDatepickerActions.SELECT_RANGE;
@@ -722,6 +879,14 @@ class BsDatepickerEffects {
722
879
  this._store.dispatch(this._actions.setDateCustomClasses(value));
723
880
  return this;
724
881
  }
882
+ /**
883
+ * @param {?} value
884
+ * @return {?}
885
+ */
886
+ setDateTooltipTexts(value) {
887
+ this._store.dispatch(this._actions.setDateTooltipTexts(value));
888
+ return this;
889
+ }
725
890
  /* Set rendering options */
726
891
  /**
727
892
  * @param {?} _config
@@ -839,37 +1004,6 @@ class BsDatepickerEffects {
839
1004
  (event) => {
840
1005
  event.cell.isHovered = event.isHovered;
841
1006
  });
842
- container.monthSelectHandler = (/**
843
- * @param {?} event
844
- * @return {?}
845
- */
846
- (event) => {
847
- if (event.isDisabled) {
848
- return;
849
- }
850
- this._store.dispatch(this._actions.navigateTo({
851
- unit: {
852
- month: getMonth(event.date),
853
- year: getFullYear(event.date)
854
- },
855
- viewMode: 'day'
856
- }));
857
- });
858
- container.yearSelectHandler = (/**
859
- * @param {?} event
860
- * @return {?}
861
- */
862
- (event) => {
863
- if (event.isDisabled) {
864
- return;
865
- }
866
- this._store.dispatch(this._actions.navigateTo({
867
- unit: {
868
- year: getFullYear(event.date)
869
- },
870
- viewMode: 'month'
871
- }));
872
- });
873
1007
  return this;
874
1008
  }
875
1009
  /**
@@ -1016,6 +1150,23 @@ class BsDatepickerEffects {
1016
1150
  * @return {?}
1017
1151
  */
1018
1152
  dateCustomClasses => this._store.dispatch(this._actions.flag()))));
1153
+ // date tooltip texts
1154
+ this._subs.push(this._store
1155
+ .select((/**
1156
+ * @param {?} state
1157
+ * @return {?}
1158
+ */
1159
+ state => state.dateTooltipTexts))
1160
+ .pipe(filter((/**
1161
+ * @param {?} dateTooltipTexts
1162
+ * @return {?}
1163
+ */
1164
+ dateTooltipTexts => !!dateTooltipTexts)))
1165
+ .subscribe((/**
1166
+ * @param {?} dateTooltipTexts
1167
+ * @return {?}
1168
+ */
1169
+ dateTooltipTexts => this._store.dispatch(this._actions.flag()))));
1019
1170
  // on locale change
1020
1171
  this._subs.push(this._localeService.localeChange
1021
1172
  .subscribe((/**
@@ -1125,6 +1276,8 @@ if (false) {
1125
1276
  /** @type {?} */
1126
1277
  BsDatepickerState.prototype.dateCustomClasses;
1127
1278
  /** @type {?} */
1279
+ BsDatepickerState.prototype.dateTooltipTexts;
1280
+ /** @type {?} */
1128
1281
  BsDatepickerState.prototype.hoveredDate;
1129
1282
  /** @type {?} */
1130
1283
  BsDatepickerState.prototype.hoveredMonth;
@@ -1450,6 +1603,8 @@ if (false) {
1450
1603
  FlagDaysCalendarOptions.prototype.monthIndex;
1451
1604
  /** @type {?} */
1452
1605
  FlagDaysCalendarOptions.prototype.dateCustomClasses;
1606
+ /** @type {?} */
1607
+ FlagDaysCalendarOptions.prototype.dateTooltipTexts;
1453
1608
  }
1454
1609
  /**
1455
1610
  * @param {?} formattedMonth
@@ -1517,6 +1672,21 @@ function flagDaysCalendar(formattedMonth, options) {
1517
1672
  (previousValue, currentValue) => previousValue.concat(currentValue)), [])
1518
1673
  .join(' ')
1519
1674
  || '';
1675
+ /** @type {?} */
1676
+ const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts
1677
+ .map((/**
1678
+ * @param {?} tt
1679
+ * @return {?}
1680
+ */
1681
+ tt => isSameDay(day.date, tt.date) ? tt.tooltipText : ''))
1682
+ .reduce((/**
1683
+ * @param {?} previousValue
1684
+ * @param {?} currentValue
1685
+ * @return {?}
1686
+ */
1687
+ (previousValue, currentValue) => previousValue.concat(currentValue)), [])
1688
+ .join(' ')
1689
+ || '';
1520
1690
  // decide update or not
1521
1691
  /** @type {?} */
1522
1692
  const newDay = Object.assign({}, day, {
@@ -1528,7 +1698,8 @@ function flagDaysCalendar(formattedMonth, options) {
1528
1698
  isInRange,
1529
1699
  isDisabled,
1530
1700
  isToday,
1531
- customClasses
1701
+ customClasses,
1702
+ tooltipText
1532
1703
  });
1533
1704
  if (day.isOtherMonth !== newDay.isOtherMonth ||
1534
1705
  day.isHovered !== newDay.isHovered ||
@@ -1537,7 +1708,8 @@ function flagDaysCalendar(formattedMonth, options) {
1537
1708
  day.isSelectionEnd !== newDay.isSelectionEnd ||
1538
1709
  day.isDisabled !== newDay.isDisabled ||
1539
1710
  day.isInRange !== newDay.isInRange ||
1540
- day.customClasses !== newDay.customClasses) {
1711
+ day.customClasses !== newDay.customClasses ||
1712
+ day.tooltipText !== newDay.tooltipText) {
1541
1713
  week.days[dayIndex] = newDay;
1542
1714
  }
1543
1715
  }));
@@ -1642,6 +1814,8 @@ if (false) {
1642
1814
  /** @type {?} */
1643
1815
  FlagMonthCalendarOptions.prototype.selectedDate;
1644
1816
  /** @type {?} */
1817
+ FlagMonthCalendarOptions.prototype.selectedRange;
1818
+ /** @type {?} */
1645
1819
  FlagMonthCalendarOptions.prototype.displayMonths;
1646
1820
  /** @type {?} */
1647
1821
  FlagMonthCalendarOptions.prototype.monthIndex;
@@ -1664,13 +1838,22 @@ function flagMonthsCalendar(monthCalendar, options) {
1664
1838
  * @return {?}
1665
1839
  */
1666
1840
  (month, monthIndex) => {
1841
+ /** @type {?} */
1842
+ let isSelected;
1667
1843
  /** @type {?} */
1668
1844
  const isHovered = isSameMonth(month.date, options.hoveredMonth);
1669
1845
  /** @type {?} */
1670
1846
  const isDisabled = options.isDisabled ||
1671
1847
  isMonthDisabled(month.date, options.minDate, options.maxDate);
1672
- /** @type {?} */
1673
- const isSelected = isSameMonth(month.date, options.selectedDate);
1848
+ if (!options.selectedDate && options.selectedRange) {
1849
+ isSelected = isSameMonth(month.date, options.selectedRange[0]);
1850
+ if (!isSelected) {
1851
+ isSelected = isSameMonth(month.date, options.selectedRange[1]);
1852
+ }
1853
+ }
1854
+ else {
1855
+ isSelected = isSameMonth(month.date, options.selectedDate);
1856
+ }
1674
1857
  /** @type {?} */
1675
1858
  const newMonth = Object.assign(/*{},*/ month, {
1676
1859
  isHovered,
@@ -1783,6 +1966,8 @@ if (false) {
1783
1966
  /** @type {?} */
1784
1967
  FlagYearsCalendarOptions.prototype.selectedDate;
1785
1968
  /** @type {?} */
1969
+ FlagYearsCalendarOptions.prototype.selectedRange;
1970
+ /** @type {?} */
1786
1971
  FlagYearsCalendarOptions.prototype.displayMonths;
1787
1972
  /** @type {?} */
1788
1973
  FlagYearsCalendarOptions.prototype.yearIndex;
@@ -1805,13 +1990,22 @@ function flagYearsCalendar(yearsCalendar, options) {
1805
1990
  * @return {?}
1806
1991
  */
1807
1992
  (year, yearIndex) => {
1993
+ /** @type {?} */
1994
+ let isSelected;
1808
1995
  /** @type {?} */
1809
1996
  const isHovered = isSameYear(year.date, options.hoveredYear);
1810
1997
  /** @type {?} */
1811
1998
  const isDisabled = options.isDisabled ||
1812
1999
  isYearDisabled(year.date, options.minDate, options.maxDate);
1813
- /** @type {?} */
1814
- const isSelected = isSameYear(year.date, options.selectedDate);
2000
+ if (!options.selectedDate && options.selectedRange) {
2001
+ isSelected = isSameYear(year.date, options.selectedRange[0]);
2002
+ if (!isSelected) {
2003
+ isSelected = isSameYear(year.date, options.selectedRange[1]);
2004
+ }
2005
+ }
2006
+ else {
2007
+ isSelected = isSameYear(year.date, options.selectedDate);
2008
+ }
1815
2009
  /** @type {?} */
1816
2010
  const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });
1817
2011
  if (year.isHovered !== newMonth.isHovered ||
@@ -1973,6 +2167,11 @@ function bsDatepickerReducer(state = initialDatepickerState, action) {
1973
2167
  dateCustomClasses: action.payload
1974
2168
  });
1975
2169
  }
2170
+ case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {
2171
+ return Object.assign({}, state, {
2172
+ dateTooltipTexts: action.payload
2173
+ });
2174
+ }
1976
2175
  default:
1977
2176
  return state;
1978
2177
  }
@@ -1990,7 +2189,7 @@ function calculateReducer(state) {
1990
2189
  /** @type {?} */
1991
2190
  let viewDate = state.view.date;
1992
2191
  if (state.view.mode === 'day') {
1993
- if (state.showPreviousMonth && state.selectedRange.length === 0) {
2192
+ if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {
1994
2193
  viewDate = shiftDate(viewDate, { month: -1 });
1995
2194
  }
1996
2195
  state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();
@@ -2097,6 +2296,7 @@ function flagReducer(state, action) {
2097
2296
  selectedRange: state.selectedRange,
2098
2297
  displayMonths,
2099
2298
  dateCustomClasses: state.dateCustomClasses,
2299
+ dateTooltipTexts: state.dateTooltipTexts,
2100
2300
  monthIndex
2101
2301
  })));
2102
2302
  return Object.assign({}, state, { flaggedMonths });
@@ -2114,6 +2314,7 @@ function flagReducer(state, action) {
2114
2314
  maxDate: state.maxDate,
2115
2315
  hoveredMonth: state.hoveredMonth,
2116
2316
  selectedDate: state.selectedDate,
2317
+ selectedRange: state.selectedRange,
2117
2318
  displayMonths,
2118
2319
  monthIndex
2119
2320
  })));
@@ -2132,6 +2333,7 @@ function flagReducer(state, action) {
2132
2333
  maxDate: state.maxDate,
2133
2334
  hoveredYear: state.hoveredYear,
2134
2335
  selectedDate: state.selectedDate,
2336
+ selectedRange: state.selectedRange,
2135
2337
  displayMonths,
2136
2338
  yearIndex
2137
2339
  })));
@@ -2242,27 +2444,6 @@ BsDatepickerStore.decorators = [
2242
2444
  /** @nocollapse */
2243
2445
  BsDatepickerStore.ctorParameters = () => [];
2244
2446
 
2245
- /**
2246
- * @fileoverview added by tsickle
2247
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2248
- */
2249
- /** @type {?} */
2250
- const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';
2251
- /** @type {?} */
2252
- const datepickerAnimation = trigger('datepickerAnimation', [
2253
- state('animated-down', style({ height: '*', overflow: 'hidden' })),
2254
- transition('* => animated-down', [
2255
- style({ height: 0, overflow: 'hidden' }),
2256
- animate(DATEPICKER_ANIMATION_TIMING)
2257
- ]),
2258
- state('animated-up', style({ height: '*', overflow: 'hidden' })),
2259
- transition('* => animated-up', [
2260
- style({ height: '*', overflow: 'hidden' }),
2261
- animate(DATEPICKER_ANIMATION_TIMING)
2262
- ]),
2263
- transition('* => unanimated', animate('0s'))
2264
- ]);
2265
-
2266
2447
  /**
2267
2448
  * @fileoverview added by tsickle
2268
2449
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -2321,6 +2502,13 @@ class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {
2321
2502
  }));
2322
2503
  this.isOtherMonthsActive = this._config.selectFromOtherMonth;
2323
2504
  this.containerClass = this._config.containerClass;
2505
+ this.showTodayBtn = this._config.showTodayButton;
2506
+ this.todayBtnLbl = this._config.todayButtonLabel;
2507
+ this.todayPos = this._config.todayPosition;
2508
+ this.showClearBtn = this._config.showClearButton;
2509
+ this.clearBtnLbl = this._config.clearButtonLabel;
2510
+ this.clearPos = this._config.clearPosition;
2511
+ this.customRangeBtnLbl = this._config.customRangeButtonLabel;
2324
2512
  this._effects
2325
2513
  .init(this._store)
2326
2514
  // intial state options
@@ -2345,6 +2533,7 @@ class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {
2345
2533
  * @return {?}
2346
2534
  */
2347
2535
  (date) => this.valueChange.emit(date))));
2536
+ this._store.dispatch(this._actions.changeViewMode(this._config.startView));
2348
2537
  }
2349
2538
  /**
2350
2539
  * @return {?}
@@ -2373,6 +2562,49 @@ class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {
2373
2562
  }
2374
2563
  this._store.dispatch(this._actions.select(day.date));
2375
2564
  }
2565
+ /**
2566
+ * @param {?} day
2567
+ * @return {?}
2568
+ */
2569
+ monthSelectHandler(day) {
2570
+ if (!day || day.isDisabled) {
2571
+ return;
2572
+ }
2573
+ this._store.dispatch(this._actions.navigateTo({
2574
+ unit: {
2575
+ month: getMonth(day.date),
2576
+ year: getFullYear(day.date)
2577
+ },
2578
+ viewMode: 'day'
2579
+ }));
2580
+ }
2581
+ /**
2582
+ * @param {?} day
2583
+ * @return {?}
2584
+ */
2585
+ yearSelectHandler(day) {
2586
+ if (!day || day.isDisabled) {
2587
+ return;
2588
+ }
2589
+ this._store.dispatch(this._actions.navigateTo({
2590
+ unit: {
2591
+ year: getFullYear(day.date)
2592
+ },
2593
+ viewMode: 'month'
2594
+ }));
2595
+ }
2596
+ /**
2597
+ * @return {?}
2598
+ */
2599
+ setToday() {
2600
+ this._store.dispatch(this._actions.select(new Date()));
2601
+ }
2602
+ /**
2603
+ * @return {?}
2604
+ */
2605
+ clearDate() {
2606
+ this._store.dispatch(this._actions.select(undefined));
2607
+ }
2376
2608
  /**
2377
2609
  * @return {?}
2378
2610
  */
@@ -2387,7 +2619,7 @@ BsDatepickerContainerComponent.decorators = [
2387
2619
  { type: Component, args: [{
2388
2620
  selector: 'bs-datepicker-container',
2389
2621
  providers: [BsDatepickerStore, BsDatepickerEffects],
2390
- template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view \n [selectedRange]=\"chosenRange\" \n [ranges]=\"customRanges\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
2622
+ template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n\n <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\n <div class=\"btn-today-wrapper\"\n [class.today-left]=\"todayPos === 'left'\"\n [class.today-right]=\"todayPos === 'right'\"\n [class.today-center]=\"todayPos === 'center'\"\n *ngIf=\"showTodayBtn\">\n <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\n </div>\n\n <div class=\"btn-clear-wrapper\"\n [class.clear-left]=\"clearPos === 'left'\"\n [class.clear-right]=\"clearPos === 'right'\"\n [class.clear-center]=\"clearPos === 'center'\"\n *ngIf=\"showClearBtn\">\n <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\n </div>\n </div>\n\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view\n [selectedRange]=\"chosenRange\"\n [ranges]=\"customRanges\"\n [customRangeLabel]=\"customRangeBtnLbl\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
2391
2623
  host: {
2392
2624
  class: 'bottom',
2393
2625
  '(click)': '_stopPropagation($event)',
@@ -2480,6 +2712,7 @@ class BsDatepickerDirective {
2480
2712
  */
2481
2713
  this.bsValueChange = new EventEmitter();
2482
2714
  this._subs = [];
2715
+ this._dateInputFormat$ = new Subject();
2483
2716
  // todo: assign only subset of fields
2484
2717
  Object.assign(this, this._config);
2485
2718
  this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);
@@ -2513,6 +2746,28 @@ class BsDatepickerDirective {
2513
2746
  this._bsValue = value;
2514
2747
  this.bsValueChange.emit(value);
2515
2748
  }
2749
+ /**
2750
+ * Config object for datepicker
2751
+ * @param {?} bsConfig
2752
+ * @return {?}
2753
+ */
2754
+ set bsConfig(bsConfig) {
2755
+ this._bsConfig = bsConfig;
2756
+ this.setConfig();
2757
+ this._dateInputFormat$.next(bsConfig && bsConfig.dateInputFormat);
2758
+ }
2759
+ /**
2760
+ * @return {?}
2761
+ */
2762
+ get bsConfig() {
2763
+ return this._bsConfig;
2764
+ }
2765
+ /**
2766
+ * @return {?}
2767
+ */
2768
+ get dateInputFormat$() {
2769
+ return this._dateInputFormat$;
2770
+ }
2516
2771
  /**
2517
2772
  * @return {?}
2518
2773
  */
@@ -2558,6 +2813,9 @@ class BsDatepickerDirective {
2558
2813
  if (changes.dateCustomClasses) {
2559
2814
  this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;
2560
2815
  }
2816
+ if (changes.dateTooltipTexts) {
2817
+ this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;
2818
+ }
2561
2819
  }
2562
2820
  /**
2563
2821
  * @return {?}
@@ -2646,6 +2904,7 @@ class BsDatepickerDirective {
2646
2904
  maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,
2647
2905
  daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,
2648
2906
  dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
2907
+ dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,
2649
2908
  datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
2650
2909
  datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,
2651
2910
  minMode: this.minMode || this.bsConfig && this.bsConfig.minMode
@@ -2696,6 +2955,7 @@ BsDatepickerDirective.propDecorators = {
2696
2955
  datesDisabled: [{ type: Input }],
2697
2956
  datesEnabled: [{ type: Input }],
2698
2957
  dateCustomClasses: [{ type: Input }],
2958
+ dateTooltipTexts: [{ type: Input }],
2699
2959
  bsValueChange: [{ type: Output }]
2700
2960
  };
2701
2961
  if (false) {
@@ -2738,11 +2998,6 @@ if (false) {
2738
2998
  BsDatepickerDirective.prototype.isOpen$;
2739
2999
  /** @type {?} */
2740
3000
  BsDatepickerDirective.prototype.isDestroy$;
2741
- /**
2742
- * Config object for datepicker
2743
- * @type {?}
2744
- */
2745
- BsDatepickerDirective.prototype.bsConfig;
2746
3001
  /**
2747
3002
  * Indicates whether datepicker's content is enabled or not
2748
3003
  * @type {?}
@@ -2783,6 +3038,11 @@ if (false) {
2783
3038
  * @type {?}
2784
3039
  */
2785
3040
  BsDatepickerDirective.prototype.dateCustomClasses;
3041
+ /**
3042
+ * Date tooltip text
3043
+ * @type {?}
3044
+ */
3045
+ BsDatepickerDirective.prototype.dateTooltipTexts;
2786
3046
  /**
2787
3047
  * Emits when datepicker value has been changed
2788
3048
  * @type {?}
@@ -2803,6 +3063,16 @@ if (false) {
2803
3063
  * @private
2804
3064
  */
2805
3065
  BsDatepickerDirective.prototype._datepickerRef;
3066
+ /**
3067
+ * @type {?}
3068
+ * @private
3069
+ */
3070
+ BsDatepickerDirective.prototype._bsConfig;
3071
+ /**
3072
+ * @type {?}
3073
+ * @private
3074
+ */
3075
+ BsDatepickerDirective.prototype._dateInputFormat$;
2806
3076
  /** @type {?} */
2807
3077
  BsDatepickerDirective.prototype._config;
2808
3078
  /**
@@ -2824,8 +3094,11 @@ if (false) {
2824
3094
  class BsDatepickerInlineConfig extends BsDatepickerConfig {
2825
3095
  }
2826
3096
  BsDatepickerInlineConfig.decorators = [
2827
- { type: Injectable }
3097
+ { type: Injectable, args: [{
3098
+ providedIn: 'root'
3099
+ },] }
2828
3100
  ];
3101
+ /** @nocollapse */ BsDatepickerInlineConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDatepickerInlineConfig_Factory() { return new BsDatepickerInlineConfig(); }, token: BsDatepickerInlineConfig, providedIn: "root" });
2829
3102
 
2830
3103
  /**
2831
3104
  * @fileoverview added by tsickle
@@ -2851,7 +3124,7 @@ BsDatepickerInlineContainerComponent.decorators = [
2851
3124
  { type: Component, args: [{
2852
3125
  selector: 'bs-datepicker-inline-container',
2853
3126
  providers: [BsDatepickerStore, BsDatepickerEffects],
2854
- template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view \n [selectedRange]=\"chosenRange\" \n [ranges]=\"customRanges\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
3127
+ template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n\n <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\n <div class=\"btn-today-wrapper\"\n [class.today-left]=\"todayPos === 'left'\"\n [class.today-right]=\"todayPos === 'right'\"\n [class.today-center]=\"todayPos === 'center'\"\n *ngIf=\"showTodayBtn\">\n <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\n </div>\n\n <div class=\"btn-clear-wrapper\"\n [class.clear-left]=\"clearPos === 'left'\"\n [class.clear-right]=\"clearPos === 'right'\"\n [class.clear-center]=\"clearPos === 'center'\"\n *ngIf=\"showClearBtn\">\n <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\n </div>\n </div>\n\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view\n [selectedRange]=\"chosenRange\"\n [ranges]=\"customRanges\"\n [customRangeLabel]=\"customRangeBtnLbl\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
2855
3128
  host: {
2856
3129
  '(click)': '_stopPropagation($event)'
2857
3130
  },
@@ -2959,6 +3232,10 @@ class BsDatepickerInlineDirective {
2959
3232
  this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;
2960
3233
  this.setConfig();
2961
3234
  }
3235
+ if (changes.dateTooltipTexts) {
3236
+ this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;
3237
+ this.setConfig();
3238
+ }
2962
3239
  }
2963
3240
  /**
2964
3241
  * Set config for datepicker
@@ -2974,6 +3251,7 @@ class BsDatepickerInlineDirective {
2974
3251
  minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,
2975
3252
  maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,
2976
3253
  dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
3254
+ dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,
2977
3255
  datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
2978
3256
  datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled
2979
3257
  });
@@ -3011,6 +3289,7 @@ BsDatepickerInlineDirective.propDecorators = {
3011
3289
  minDate: [{ type: Input }],
3012
3290
  maxDate: [{ type: Input }],
3013
3291
  dateCustomClasses: [{ type: Input }],
3292
+ dateTooltipTexts: [{ type: Input }],
3014
3293
  datesEnabled: [{ type: Input }],
3015
3294
  datesDisabled: [{ type: Input }],
3016
3295
  bsValueChange: [{ type: Output }]
@@ -3043,6 +3322,11 @@ if (false) {
3043
3322
  * @type {?}
3044
3323
  */
3045
3324
  BsDatepickerInlineDirective.prototype.dateCustomClasses;
3325
+ /**
3326
+ * Date tooltip text
3327
+ * @type {?}
3328
+ */
3329
+ BsDatepickerInlineDirective.prototype.dateTooltipTexts;
3046
3330
  /**
3047
3331
  * Disable specific dates
3048
3332
  * @type {?}
@@ -3098,8 +3382,11 @@ class BsDaterangepickerInlineConfig extends BsDatepickerConfig {
3098
3382
  }
3099
3383
  }
3100
3384
  BsDaterangepickerInlineConfig.decorators = [
3101
- { type: Injectable }
3385
+ { type: Injectable, args: [{
3386
+ providedIn: 'root'
3387
+ },] }
3102
3388
  ];
3389
+ /** @nocollapse */ BsDaterangepickerInlineConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDaterangepickerInlineConfig_Factory() { return new BsDaterangepickerInlineConfig(); }, token: BsDaterangepickerInlineConfig, providedIn: "root" });
3103
3390
  if (false) {
3104
3391
  /** @type {?} */
3105
3392
  BsDaterangepickerInlineConfig.prototype.displayMonths;
@@ -3138,6 +3425,7 @@ class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent
3138
3425
  this._subs = [];
3139
3426
  this._effects = _effects;
3140
3427
  this.customRanges = this._config.ranges;
3428
+ this.customRangeBtnLbl = this._config.customRangeButtonLabel;
3141
3429
  _renderer.setStyle(_element.nativeElement, 'display', 'block');
3142
3430
  _renderer.setStyle(_element.nativeElement, 'position', 'absolute');
3143
3431
  }
@@ -3223,6 +3511,60 @@ class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent
3223
3511
  if (isDisabled) {
3224
3512
  return;
3225
3513
  }
3514
+ this.rangesProcessing(day);
3515
+ }
3516
+ /**
3517
+ * @param {?} day
3518
+ * @return {?}
3519
+ */
3520
+ monthSelectHandler(day) {
3521
+ if (!day) {
3522
+ return;
3523
+ }
3524
+ day.isSelected = true;
3525
+ if (this._config.minMode !== 'month') {
3526
+ if (day.isDisabled) {
3527
+ return;
3528
+ }
3529
+ this._store.dispatch(this._actions.navigateTo({
3530
+ unit: {
3531
+ month: getMonth(day.date),
3532
+ year: getFullYear(day.date)
3533
+ },
3534
+ viewMode: 'day'
3535
+ }));
3536
+ return;
3537
+ }
3538
+ this.rangesProcessing(day);
3539
+ }
3540
+ /**
3541
+ * @param {?} day
3542
+ * @return {?}
3543
+ */
3544
+ yearSelectHandler(day) {
3545
+ if (!day) {
3546
+ return;
3547
+ }
3548
+ day.isSelected = true;
3549
+ if (this._config.minMode !== 'year') {
3550
+ if (day.isDisabled) {
3551
+ return;
3552
+ }
3553
+ this._store.dispatch(this._actions.navigateTo({
3554
+ unit: {
3555
+ year: getFullYear(day.date)
3556
+ },
3557
+ viewMode: 'month'
3558
+ }));
3559
+ return;
3560
+ }
3561
+ this.rangesProcessing(day);
3562
+ }
3563
+ /**
3564
+ * @param {?} day
3565
+ * @return {?}
3566
+ */
3567
+ rangesProcessing(day) {
3226
3568
  // if only one date is already selected
3227
3569
  // and user clicks on previous date
3228
3570
  // start selection from new date
@@ -3236,6 +3578,9 @@ class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent
3236
3578
  }
3237
3579
  if (this._rangeStack.length === 0) {
3238
3580
  this._rangeStack = [day.date];
3581
+ if (this._config.maxDateRange) {
3582
+ this.setMaxDateRangeOnCalendar(day.date);
3583
+ }
3239
3584
  }
3240
3585
  this._store.dispatch(this._actions.selectRange(this._rangeStack));
3241
3586
  if (this._rangeStack.length === 2) {
@@ -3259,12 +3604,22 @@ class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent
3259
3604
  this._rangeStack = (dates === null) ? [] : (dates.value instanceof Date ? [dates.value] : dates.value);
3260
3605
  this._store.dispatch(this._actions.selectRange(this._rangeStack));
3261
3606
  }
3607
+ /**
3608
+ * @param {?} currentSelection
3609
+ * @return {?}
3610
+ */
3611
+ setMaxDateRangeOnCalendar(currentSelection) {
3612
+ /** @type {?} */
3613
+ const maxDateRange = new Date(currentSelection);
3614
+ maxDateRange.setDate(currentSelection.getDate() + this._config.maxDateRange);
3615
+ this._effects.setMaxDate(maxDateRange);
3616
+ }
3262
3617
  }
3263
3618
  BsDaterangepickerContainerComponent.decorators = [
3264
3619
  { type: Component, args: [{
3265
3620
  selector: 'bs-daterangepicker-container',
3266
3621
  providers: [BsDatepickerStore, BsDatepickerEffects],
3267
- template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view \n [selectedRange]=\"chosenRange\" \n [ranges]=\"customRanges\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
3622
+ template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n\n <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\n <div class=\"btn-today-wrapper\"\n [class.today-left]=\"todayPos === 'left'\"\n [class.today-right]=\"todayPos === 'right'\"\n [class.today-center]=\"todayPos === 'center'\"\n *ngIf=\"showTodayBtn\">\n <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\n </div>\n\n <div class=\"btn-clear-wrapper\"\n [class.clear-left]=\"clearPos === 'left'\"\n [class.clear-right]=\"clearPos === 'right'\"\n [class.clear-center]=\"clearPos === 'center'\"\n *ngIf=\"showClearBtn\">\n <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\n </div>\n </div>\n\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view\n [selectedRange]=\"chosenRange\"\n [ranges]=\"customRanges\"\n [customRangeLabel]=\"customRangeBtnLbl\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
3268
3623
  host: {
3269
3624
  class: 'bottom',
3270
3625
  '(click)': '_stopPropagation($event)',
@@ -3346,7 +3701,7 @@ BsDaterangepickerInlineContainerComponent.decorators = [
3346
3701
  { type: Component, args: [{
3347
3702
  selector: 'bs-daterangepicker-inline-container',
3348
3703
  providers: [BsDatepickerStore, BsDatepickerEffects],
3349
- template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view \n [selectedRange]=\"chosenRange\" \n [ranges]=\"customRanges\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
3704
+ template: "<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n <div class=\"bs-datepicker-container\"\n [@datepickerAnimation]=\"animationState\"\n (@datepickerAnimation.done)=\"positionServiceEnable()\">\n <!--calendars-->\n <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n <!--days calendar-->\n <div *ngSwitchCase=\"'day'\" class=\"bs-media-container\">\n <bs-days-calendar-view\n *ngFor=\"let calendar of daysCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n [options]=\"options | async\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"dayHoverHandler($event)\"\n (onHoverWeek)=\"weekHoverHandler($event)\"\n (onSelect)=\"daySelectHandler($event)\">\n </bs-days-calendar-view>\n </div>\n\n <!--months calendar-->\n <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n <bs-month-calendar-view\n *ngFor=\"let calendar of monthsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"monthHoverHandler($event)\"\n (onSelect)=\"monthSelectHandler($event)\">\n </bs-month-calendar-view>\n </div>\n\n <!--years calendar-->\n <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n <bs-years-calendar-view\n *ngFor=\"let calendar of yearsCalendar | async\"\n [class.bs-datepicker-multiple]=\"(daysCalendar | async)?.length > 1\"\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"setViewMode($event)\"\n (onHover)=\"yearHoverHandler($event)\"\n (onSelect)=\"yearSelectHandler($event)\">\n </bs-years-calendar-view>\n </div>\n </div>\n\n <!--applycancel buttons-->\n <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n <button class=\"btn btn-success\" type=\"button\">Apply</button>\n <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n </div>\n\n <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\n <div class=\"btn-today-wrapper\"\n [class.today-left]=\"todayPos === 'left'\"\n [class.today-right]=\"todayPos === 'right'\"\n [class.today-center]=\"todayPos === 'center'\"\n *ngIf=\"showTodayBtn\">\n <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\n </div>\n\n <div class=\"btn-clear-wrapper\"\n [class.clear-left]=\"clearPos === 'left'\"\n [class.clear-right]=\"clearPos === 'right'\"\n [class.clear-center]=\"clearPos === 'center'\"\n *ngIf=\"showClearBtn\">\n <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\n </div>\n </div>\n\n </div>\n\n <!--custom dates or date ranges picker-->\n <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges?.length > 0\">\n <bs-custom-date-view\n [selectedRange]=\"chosenRange\"\n [ranges]=\"customRanges\"\n [customRangeLabel]=\"customRangeBtnLbl\"\n (onSelect)=\"setRangeOnCalendar($event)\">\n </bs-custom-date-view>\n </div>\n</div>\n",
3350
3705
  host: {
3351
3706
  '(click)': '_stopPropagation($event)'
3352
3707
  },
@@ -3481,7 +3836,8 @@ class BsDaterangepickerInlineDirective {
3481
3836
  dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
3482
3837
  datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
3483
3838
  datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,
3484
- ranges: this.bsConfig && this.bsConfig.ranges
3839
+ ranges: this.bsConfig && this.bsConfig.ranges,
3840
+ maxDateRange: this.bsConfig && this.bsConfig.maxDateRange
3485
3841
  });
3486
3842
  this._datepickerRef = this._datepicker
3487
3843
  .provide({ provide: BsDatepickerConfig, useValue: this._config })
@@ -3657,6 +4013,13 @@ class BsDatepickerInputDirective {
3657
4013
  () => {
3658
4014
  this._setInputValue(this._value);
3659
4015
  }));
4016
+ // update input value on format change
4017
+ this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe((/**
4018
+ * @return {?}
4019
+ */
4020
+ () => {
4021
+ this._setInputValue(this._value);
4022
+ }));
3660
4023
  }
3661
4024
  /**
3662
4025
  * @param {?} event
@@ -3870,8 +4233,11 @@ class BsDaterangepickerConfig extends BsDatepickerConfig {
3870
4233
  }
3871
4234
  }
3872
4235
  BsDaterangepickerConfig.decorators = [
3873
- { type: Injectable }
4236
+ { type: Injectable, args: [{
4237
+ providedIn: 'root'
4238
+ },] }
3874
4239
  ];
4240
+ /** @nocollapse */ BsDaterangepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDaterangepickerConfig_Factory() { return new BsDaterangepickerConfig(); }, token: BsDaterangepickerConfig, providedIn: "root" });
3875
4241
  if (false) {
3876
4242
  /** @type {?} */
3877
4243
  BsDaterangepickerConfig.prototype.displayMonths;
@@ -3916,6 +4282,7 @@ class BsDaterangepickerDirective {
3916
4282
  */
3917
4283
  this.bsValueChange = new EventEmitter();
3918
4284
  this._subs = [];
4285
+ this._rangeInputFormat$ = new Subject();
3919
4286
  this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);
3920
4287
  Object.assign(this, _config);
3921
4288
  this.onShown = this._datepicker.onShown;
@@ -3948,6 +4315,28 @@ class BsDaterangepickerDirective {
3948
4315
  this._bsValue = value;
3949
4316
  this.bsValueChange.emit(value);
3950
4317
  }
4318
+ /**
4319
+ * Config object for daterangepicker
4320
+ * @param {?} bsConfig
4321
+ * @return {?}
4322
+ */
4323
+ set bsConfig(bsConfig) {
4324
+ this._bsConfig = bsConfig;
4325
+ this.setConfig();
4326
+ this._rangeInputFormat$.next(bsConfig && bsConfig.rangeInputFormat);
4327
+ }
4328
+ /**
4329
+ * @return {?}
4330
+ */
4331
+ get bsConfig() {
4332
+ return this._bsConfig;
4333
+ }
4334
+ /**
4335
+ * @return {?}
4336
+ */
4337
+ get rangeInputFormat$() {
4338
+ return this._rangeInputFormat$;
4339
+ }
3951
4340
  /**
3952
4341
  * @return {?}
3953
4342
  */
@@ -4062,7 +4451,8 @@ class BsDaterangepickerDirective {
4062
4451
  dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
4063
4452
  datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
4064
4453
  datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,
4065
- ranges: this.bsConfig && this.bsConfig.ranges
4454
+ ranges: this.bsConfig && this.bsConfig.ranges,
4455
+ maxDateRange: this.bsConfig && this.bsConfig.maxDateRange
4066
4456
  });
4067
4457
  }
4068
4458
  /**
@@ -4178,11 +4568,6 @@ if (false) {
4178
4568
  BsDaterangepickerDirective.prototype.isOpen$;
4179
4569
  /** @type {?} */
4180
4570
  BsDaterangepickerDirective.prototype.isDestroy$;
4181
- /**
4182
- * Config object for daterangepicker
4183
- * @type {?}
4184
- */
4185
- BsDaterangepickerDirective.prototype.bsConfig;
4186
4571
  /**
4187
4572
  * Indicates whether daterangepicker's content is enabled or not
4188
4573
  * @type {?}
@@ -4238,6 +4623,16 @@ if (false) {
4238
4623
  * @private
4239
4624
  */
4240
4625
  BsDaterangepickerDirective.prototype._datepickerRef;
4626
+ /**
4627
+ * @type {?}
4628
+ * @private
4629
+ */
4630
+ BsDaterangepickerDirective.prototype._bsConfig;
4631
+ /**
4632
+ * @type {?}
4633
+ * @private
4634
+ */
4635
+ BsDaterangepickerDirective.prototype._rangeInputFormat$;
4241
4636
  /** @type {?} */
4242
4637
  BsDaterangepickerDirective.prototype._config;
4243
4638
  /**
@@ -4315,6 +4710,13 @@ class BsDaterangepickerInputDirective {
4315
4710
  () => {
4316
4711
  this._setInputValue(this._value);
4317
4712
  }));
4713
+ // update input value on format change
4714
+ this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe((/**
4715
+ * @return {?}
4716
+ */
4717
+ () => {
4718
+ this._setInputValue(this._value);
4719
+ }));
4318
4720
  }
4319
4721
  /**
4320
4722
  * @param {?} event
@@ -4436,9 +4838,9 @@ class BsDaterangepickerInputDirective {
4436
4838
  */
4437
4839
  (_val) => {
4438
4840
  if (this._picker._config.useUtc) {
4439
- return utcAsLocal(parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale));
4841
+ return utcAsLocal(parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale));
4440
4842
  }
4441
- return parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale);
4843
+ return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);
4442
4844
  }))
4443
4845
  .map((/**
4444
4846
  * @param {?} date
@@ -4663,7 +5065,7 @@ BsCustomDatesViewComponent.decorators = [
4663
5065
  class="btn"
4664
5066
  (click)="selectFromRanges(customRange)"
4665
5067
  [class.selected]="!checkRange()">
4666
- Custom Range
5068
+ {{customRangeLabel}}
4667
5069
  </button>
4668
5070
  </div>
4669
5071
  `,
@@ -4673,6 +5075,7 @@ BsCustomDatesViewComponent.decorators = [
4673
5075
  BsCustomDatesViewComponent.propDecorators = {
4674
5076
  ranges: [{ type: Input }],
4675
5077
  selectedRange: [{ type: Input }],
5078
+ customRangeLabel: [{ type: Input }],
4676
5079
  onSelect: [{ type: Output }]
4677
5080
  };
4678
5081
  if (false) {
@@ -4681,6 +5084,8 @@ if (false) {
4681
5084
  /** @type {?} */
4682
5085
  BsCustomDatesViewComponent.prototype.selectedRange;
4683
5086
  /** @type {?} */
5087
+ BsCustomDatesViewComponent.prototype.customRangeLabel;
5088
+ /** @type {?} */
4684
5089
  BsCustomDatesViewComponent.prototype.onSelect;
4685
5090
  /** @type {?} */
4686
5091
  BsCustomDatesViewComponent.prototype.customRange;
@@ -4831,6 +5236,8 @@ if (false) {
4831
5236
  /** @type {?|undefined} */
4832
5237
  DayViewModel.prototype.customClasses;
4833
5238
  /** @type {?|undefined} */
5239
+ DayViewModel.prototype.tooltipText;
5240
+ /** @type {?|undefined} */
4834
5241
  DayViewModel.prototype.monthIndex;
4835
5242
  /** @type {?|undefined} */
4836
5243
  DayViewModel.prototype.weekIndex;
@@ -4944,6 +5351,16 @@ if (false) {
4944
5351
  /** @type {?} */
4945
5352
  DatepickerDateCustomClasses.prototype.classes;
4946
5353
  }
5354
+ /**
5355
+ * @record
5356
+ */
5357
+ function DatepickerDateTooltipText() { }
5358
+ if (false) {
5359
+ /** @type {?} */
5360
+ DatepickerDateTooltipText.prototype.date;
5361
+ /** @type {?} */
5362
+ DatepickerDateTooltipText.prototype.tooltipText;
5363
+ }
4947
5364
  /** @enum {number} */
4948
5365
  const BsNavigationDirection = {
4949
5366
  UP: 0,
@@ -5078,6 +5495,11 @@ class BsDaysCalendarViewComponent {
5078
5495
  this.onSelect = new EventEmitter();
5079
5496
  this.onHover = new EventEmitter();
5080
5497
  this.onHoverWeek = new EventEmitter();
5498
+ this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||
5499
+ (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));
5500
+ if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {
5501
+ this.isShowTooltip = true;
5502
+ }
5081
5503
  }
5082
5504
  /**
5083
5505
  * @param {?} event
@@ -5180,6 +5602,19 @@ class BsDaysCalendarViewComponent {
5180
5602
  if (this._config.selectFromOtherMonth && cell.isOtherMonth) {
5181
5603
  cell.isOtherMonthHovered = isHovered;
5182
5604
  }
5605
+ if (this._config.dateTooltipTexts) {
5606
+ cell.tooltipText = '';
5607
+ this._config.dateTooltipTexts.forEach((/**
5608
+ * @param {?} dateData
5609
+ * @return {?}
5610
+ */
5611
+ (dateData) => {
5612
+ if (isSameDay(dateData.date, cell.date)) {
5613
+ cell.tooltipText = dateData.tooltipText;
5614
+ return;
5615
+ }
5616
+ }));
5617
+ }
5183
5618
  this.onHover.emit({ cell, isHovered });
5184
5619
  }
5185
5620
  }
@@ -5209,17 +5644,32 @@ BsDaysCalendarViewComponent.decorators = [
5209
5644
  <tbody>
5210
5645
  <tr *ngFor="let week of calendar.weeks; let i = index">
5211
5646
  <td class="week" [class.active-week]="isWeekHovered" *ngIf="options.showWeekNumbers">
5212
- <span
5647
+ <span *ngIf="isiOS" (click)="selectWeek(week)">{{ calendar.weekNumbers[i] }}</span>
5648
+ <span *ngIf="!isiOS"
5213
5649
  (click)="selectWeek(week)"
5214
5650
  (mouseenter)="weekHoverHandler(week, true)"
5215
5651
  (mouseleave)="weekHoverHandler(week, false)">{{ calendar.weekNumbers[i] }}</span>
5216
5652
  </td>
5217
5653
  <td *ngFor="let day of week.days" role="gridcell">
5218
- <span bsDatepickerDayDecorator
5654
+
5655
+ <!-- When we want to show tooltips for dates -->
5656
+ <span *ngIf="!isiOS && isShowTooltip" bsDatepickerDayDecorator
5219
5657
  [day]="day"
5220
5658
  (click)="selectDay(day)"
5659
+ tooltip="{{day.tooltipText}}"
5221
5660
  (mouseenter)="hoverDay(day, true)"
5222
- (mouseleave)="hoverDay(day, false)">{{ day.label }}</span>
5661
+ (mouseleave)="hoverDay(day, false)">{{ day.label }} 3</span>
5662
+ <!-- When tooltips for dates are disabled -->
5663
+ <span *ngIf="!isiOS && !isShowTooltip" bsDatepickerDayDecorator
5664
+ [day]="day"
5665
+ (click)="selectDay(day)"
5666
+ (mouseenter)="hoverDay(day, true)"
5667
+ (mouseleave)="hoverDay(day, false)">{{ day.label }} 2</span>
5668
+
5669
+ <!-- For mobile iOS view, tooltips are not needed -->
5670
+ <span *ngIf="isiOS" bsDatepickerDayDecorator
5671
+ [day]="day"
5672
+ (click)="selectDay(day)">{{ day.label }} 1</span>
5223
5673
  </td>
5224
5674
  </tr>
5225
5675
  </tbody>
@@ -5259,6 +5709,10 @@ if (false) {
5259
5709
  BsDaysCalendarViewComponent.prototype.onHoverWeek;
5260
5710
  /** @type {?} */
5261
5711
  BsDaysCalendarViewComponent.prototype.isWeekHovered;
5712
+ /** @type {?} */
5713
+ BsDaysCalendarViewComponent.prototype.isiOS;
5714
+ /** @type {?} */
5715
+ BsDaysCalendarViewComponent.prototype.isShowTooltip;
5262
5716
  /**
5263
5717
  * @type {?}
5264
5718
  * @private
@@ -5510,10 +5964,6 @@ class BsDatepickerModule {
5510
5964
  PositioningService,
5511
5965
  BsDatepickerStore,
5512
5966
  BsDatepickerActions,
5513
- BsDatepickerConfig,
5514
- BsDaterangepickerConfig,
5515
- BsDatepickerInlineConfig,
5516
- BsDaterangepickerInlineConfig,
5517
5967
  BsDatepickerEffects,
5518
5968
  BsLocaleService
5519
5969
  ]
@@ -5522,7 +5972,7 @@ class BsDatepickerModule {
5522
5972
  }
5523
5973
  BsDatepickerModule.decorators = [
5524
5974
  { type: NgModule, args: [{
5525
- imports: [CommonModule],
5975
+ imports: [CommonModule, TooltipModule.forRoot()],
5526
5976
  declarations: [
5527
5977
  BsCalendarLayoutComponent,
5528
5978
  BsCurrentDateViewComponent,
@@ -6113,8 +6563,11 @@ class DatepickerConfig {
6113
6563
  }
6114
6564
  }
6115
6565
  DatepickerConfig.decorators = [
6116
- { type: Injectable }
6566
+ { type: Injectable, args: [{
6567
+ providedIn: 'root'
6568
+ },] }
6117
6569
  ];
6570
+ /** @nocollapse */ DatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function DatepickerConfig_Factory() { return new DatepickerConfig(); }, token: DatepickerConfig, providedIn: "root" });
6118
6571
  if (false) {
6119
6572
  /** @type {?} */
6120
6573
  DatepickerConfig.prototype.locale;