ngx-bootstrap 18.1.2 → 19.0.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 (440) hide show
  1. package/accordion/fesm2022/ngx-bootstrap-accordion.mjs +13 -14
  2. package/accordion/fesm2022/ngx-bootstrap-accordion.mjs.map +1 -1
  3. package/alert/fesm2022/ngx-bootstrap-alert.mjs +10 -10
  4. package/alert/fesm2022/ngx-bootstrap-alert.mjs.map +1 -1
  5. package/buttons/fesm2022/ngx-bootstrap-buttons.mjs +13 -13
  6. package/buttons/fesm2022/ngx-bootstrap-buttons.mjs.map +1 -1
  7. package/carousel/fesm2022/ngx-bootstrap-carousel.mjs +13 -13
  8. package/carousel/fesm2022/ngx-bootstrap-carousel.mjs.map +1 -1
  9. package/chronos/fesm2022/ngx-bootstrap-chronos.mjs.map +1 -1
  10. package/collapse/fesm2022/ngx-bootstrap-collapse.mjs +7 -8
  11. package/collapse/fesm2022/ngx-bootstrap-collapse.mjs.map +1 -1
  12. package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs +3 -3
  13. package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs.map +1 -1
  14. package/datepicker/bs-datepicker.component.d.ts +5 -1
  15. package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs +94 -91
  16. package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -1
  17. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -0
  18. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs +22 -25
  19. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -1
  20. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs +19 -19
  21. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -1
  22. package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -1
  23. package/modal/fesm2022/ngx-bootstrap-modal.mjs +27 -27
  24. package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -1
  25. package/package.json +1 -3
  26. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs +13 -13
  27. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -1
  28. package/popover/fesm2022/ngx-bootstrap-popover.mjs +13 -13
  29. package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -1
  30. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs +3 -3
  31. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -1
  32. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs +13 -13
  33. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -1
  34. package/rating/fesm2022/ngx-bootstrap-rating.mjs +10 -10
  35. package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -1
  36. package/schematics/ng-add/index.js +2 -3
  37. package/schematics/ng-add/index.js.map +1 -1
  38. package/schematics/utils/addStyles.js +1 -2
  39. package/schematics/utils/addStyles.js.map +1 -1
  40. package/schematics/utils/current_dependency_versions.json +1 -1
  41. package/schematics/utils/getVersions.js +2 -3
  42. package/schematics/utils/getVersions.js.map +1 -1
  43. package/schematics/utils/index.js +6 -7
  44. package/schematics/utils/index.js.map +1 -1
  45. package/schematics/utils/ng-module-imports.js +1 -2
  46. package/schematics/utils/ng-module-imports.js.map +1 -1
  47. package/schematics/utils/project-main-file.js +1 -2
  48. package/schematics/utils/project-main-file.js.map +1 -1
  49. package/schematics/utils/project-targets.js +1 -2
  50. package/schematics/utils/project-targets.js.map +1 -1
  51. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs +12 -14
  52. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -1
  53. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs +19 -19
  54. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -1
  55. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs +16 -16
  56. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -1
  57. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs +13 -13
  58. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -1
  59. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs +13 -14
  60. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -1
  61. package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -1
  62. package/accordion/esm2022/accordion-group.component.mjs +0 -85
  63. package/accordion/esm2022/accordion.component.mjs +0 -57
  64. package/accordion/esm2022/accordion.config.mjs +0 -22
  65. package/accordion/esm2022/accordion.module.mjs +0 -24
  66. package/accordion/esm2022/index.mjs +0 -2
  67. package/accordion/esm2022/ngx-bootstrap-accordion.mjs +0 -5
  68. package/accordion/esm2022/public_api.mjs +0 -5
  69. package/alert/esm2022/alert.component.mjs +0 -77
  70. package/alert/esm2022/alert.config.mjs +0 -21
  71. package/alert/esm2022/alert.module.mjs +0 -23
  72. package/alert/esm2022/index.mjs +0 -2
  73. package/alert/esm2022/ngx-bootstrap-alert.mjs +0 -5
  74. package/alert/esm2022/public_api.mjs +0 -4
  75. package/buttons/esm2022/button-checkbox.directive.mjs +0 -88
  76. package/buttons/esm2022/button-radio-group.directive.mjs +0 -158
  77. package/buttons/esm2022/button-radio.directive.mjs +0 -189
  78. package/buttons/esm2022/buttons.module.mjs +0 -25
  79. package/buttons/esm2022/index.mjs +0 -2
  80. package/buttons/esm2022/ngx-bootstrap-buttons.mjs +0 -5
  81. package/buttons/esm2022/public_api.mjs +0 -5
  82. package/carousel/esm2022/carousel.component.mjs +0 -712
  83. package/carousel/esm2022/carousel.config.mjs +0 -32
  84. package/carousel/esm2022/carousel.module.mjs +0 -24
  85. package/carousel/esm2022/index.mjs +0 -2
  86. package/carousel/esm2022/models/index.mjs +0 -2
  87. package/carousel/esm2022/ngx-bootstrap-carousel.mjs +0 -5
  88. package/carousel/esm2022/public_api.mjs +0 -5
  89. package/carousel/esm2022/slide.component.mjs +0 -65
  90. package/carousel/esm2022/utils.mjs +0 -32
  91. package/chronos/esm2022/create/check-overflow.mjs +0 -30
  92. package/chronos/esm2022/create/clone.mjs +0 -6
  93. package/chronos/esm2022/create/date-from-array.mjs +0 -19
  94. package/chronos/esm2022/create/from-anything.mjs +0 -106
  95. package/chronos/esm2022/create/from-array.mjs +0 -135
  96. package/chronos/esm2022/create/from-object.mjs +0 -17
  97. package/chronos/esm2022/create/from-string-and-array.mjs +0 -38
  98. package/chronos/esm2022/create/from-string-and-format.mjs +0 -106
  99. package/chronos/esm2022/create/from-string.mjs +0 -222
  100. package/chronos/esm2022/create/local.mjs +0 -16
  101. package/chronos/esm2022/create/parsing-flags.mjs +0 -26
  102. package/chronos/esm2022/create/parsing.types.mjs +0 -2
  103. package/chronos/esm2022/create/valid.mjs +0 -42
  104. package/chronos/esm2022/duration/bubble.mjs +0 -47
  105. package/chronos/esm2022/duration/constructor.mjs +0 -130
  106. package/chronos/esm2022/duration/create.mjs +0 -112
  107. package/chronos/esm2022/duration/humanize.mjs +0 -79
  108. package/chronos/esm2022/duration/valid.mjs +0 -43
  109. package/chronos/esm2022/format/format.mjs +0 -50
  110. package/chronos/esm2022/format.mjs +0 -46
  111. package/chronos/esm2022/i18n/ar.mjs +0 -132
  112. package/chronos/esm2022/i18n/bg.mjs +0 -90
  113. package/chronos/esm2022/i18n/ca.mjs +0 -87
  114. package/chronos/esm2022/i18n/cs.mjs +0 -175
  115. package/chronos/esm2022/i18n/da.mjs +0 -49
  116. package/chronos/esm2022/i18n/de.mjs +0 -67
  117. package/chronos/esm2022/i18n/en-gb.mjs +0 -57
  118. package/chronos/esm2022/i18n/es-do.mjs +0 -81
  119. package/chronos/esm2022/i18n/es-pr.mjs +0 -74
  120. package/chronos/esm2022/i18n/es-us.mjs +0 -75
  121. package/chronos/esm2022/i18n/es.mjs +0 -80
  122. package/chronos/esm2022/i18n/et.mjs +0 -69
  123. package/chronos/esm2022/i18n/fa.mjs +0 -130
  124. package/chronos/esm2022/i18n/fi.mjs +0 -96
  125. package/chronos/esm2022/i18n/fr-ca.mjs +0 -69
  126. package/chronos/esm2022/i18n/fr.mjs +0 -72
  127. package/chronos/esm2022/i18n/gl.mjs +0 -80
  128. package/chronos/esm2022/i18n/he.mjs +0 -94
  129. package/chronos/esm2022/i18n/hi.mjs +0 -119
  130. package/chronos/esm2022/i18n/hr.mjs +0 -58
  131. package/chronos/esm2022/i18n/hu.mjs +0 -100
  132. package/chronos/esm2022/i18n/id.mjs +0 -78
  133. package/chronos/esm2022/i18n/it.mjs +0 -61
  134. package/chronos/esm2022/i18n/ja.mjs +0 -71
  135. package/chronos/esm2022/i18n/ka.mjs +0 -83
  136. package/chronos/esm2022/i18n/kk.mjs +0 -76
  137. package/chronos/esm2022/i18n/ko.mjs +0 -72
  138. package/chronos/esm2022/i18n/lt.mjs +0 -112
  139. package/chronos/esm2022/i18n/lv.mjs +0 -52
  140. package/chronos/esm2022/i18n/mn.mjs +0 -94
  141. package/chronos/esm2022/i18n/nb.mjs +0 -53
  142. package/chronos/esm2022/i18n/nl-be.mjs +0 -77
  143. package/chronos/esm2022/i18n/nl.mjs +0 -76
  144. package/chronos/esm2022/i18n/pl.mjs +0 -122
  145. package/chronos/esm2022/i18n/pt-br.mjs +0 -52
  146. package/chronos/esm2022/i18n/ro.mjs +0 -66
  147. package/chronos/esm2022/i18n/ru.mjs +0 -177
  148. package/chronos/esm2022/i18n/sk.mjs +0 -153
  149. package/chronos/esm2022/i18n/sl.mjs +0 -179
  150. package/chronos/esm2022/i18n/sq.mjs +0 -50
  151. package/chronos/esm2022/i18n/sv.mjs +0 -59
  152. package/chronos/esm2022/i18n/th-be.mjs +0 -73
  153. package/chronos/esm2022/i18n/th.mjs +0 -58
  154. package/chronos/esm2022/i18n/tr.mjs +0 -78
  155. package/chronos/esm2022/i18n/uk.mjs +0 -143
  156. package/chronos/esm2022/i18n/vi.mjs +0 -70
  157. package/chronos/esm2022/i18n/zh-cn.mjs +0 -109
  158. package/chronos/esm2022/index.mjs +0 -2
  159. package/chronos/esm2022/locale/calendar.mjs +0 -9
  160. package/chronos/esm2022/locale/locale.class.mjs +0 -532
  161. package/chronos/esm2022/locale/locale.defaults.mjs +0 -40
  162. package/chronos/esm2022/locale/locales.mjs +0 -228
  163. package/chronos/esm2022/moment/add-subtract.mjs +0 -35
  164. package/chronos/esm2022/moment/calendar.mjs +0 -41
  165. package/chronos/esm2022/moment/diff.mjs +0 -70
  166. package/chronos/esm2022/moment/min-max.mjs +0 -38
  167. package/chronos/esm2022/ngx-bootstrap-chronos.mjs +0 -5
  168. package/chronos/esm2022/parse/regex.mjs +0 -47
  169. package/chronos/esm2022/parse/token.mjs +0 -31
  170. package/chronos/esm2022/public_api.mjs +0 -59
  171. package/chronos/esm2022/testing/chain.mjs +0 -708
  172. package/chronos/esm2022/types.mjs +0 -2
  173. package/chronos/esm2022/units/aliases.mjs +0 -35
  174. package/chronos/esm2022/units/constants.mjs +0 -11
  175. package/chronos/esm2022/units/day-of-month.mjs +0 -31
  176. package/chronos/esm2022/units/day-of-week.mjs +0 -129
  177. package/chronos/esm2022/units/day-of-year.mjs +0 -37
  178. package/chronos/esm2022/units/hour.mjs +0 -127
  179. package/chronos/esm2022/units/index.mjs +0 -19
  180. package/chronos/esm2022/units/millisecond.mjs +0 -59
  181. package/chronos/esm2022/units/minute.mjs +0 -23
  182. package/chronos/esm2022/units/month.mjs +0 -63
  183. package/chronos/esm2022/units/offset.mjs +0 -209
  184. package/chronos/esm2022/units/priorities.mjs +0 -21
  185. package/chronos/esm2022/units/quarter.mjs +0 -39
  186. package/chronos/esm2022/units/second.mjs +0 -23
  187. package/chronos/esm2022/units/timestamp.mjs +0 -28
  188. package/chronos/esm2022/units/timezone.mjs +0 -19
  189. package/chronos/esm2022/units/week-calendar-utils.mjs +0 -70
  190. package/chronos/esm2022/units/week-year.mjs +0 -101
  191. package/chronos/esm2022/units/week.mjs +0 -58
  192. package/chronos/esm2022/units/year.mjs +0 -60
  193. package/chronos/esm2022/utils/abs-ceil.mjs +0 -4
  194. package/chronos/esm2022/utils/abs-round.mjs +0 -4
  195. package/chronos/esm2022/utils/compare-arrays.mjs +0 -16
  196. package/chronos/esm2022/utils/date-compare.mjs +0 -55
  197. package/chronos/esm2022/utils/date-getters.mjs +0 -67
  198. package/chronos/esm2022/utils/date-setters.mjs +0 -75
  199. package/chronos/esm2022/utils/defaults.mjs +0 -11
  200. package/chronos/esm2022/utils/start-end-of.mjs +0 -57
  201. package/chronos/esm2022/utils/type-checks.mjs +0 -58
  202. package/chronos/esm2022/utils/zero-fill.mjs +0 -10
  203. package/chronos/esm2022/utils.mjs +0 -7
  204. package/collapse/esm2022/collapse-animations.mjs +0 -11
  205. package/collapse/esm2022/collapse.directive.mjs +0 -169
  206. package/collapse/esm2022/collapse.module.mjs +0 -23
  207. package/collapse/esm2022/index.mjs +0 -2
  208. package/collapse/esm2022/ngx-bootstrap-collapse.mjs +0 -5
  209. package/collapse/esm2022/public_api.mjs +0 -3
  210. package/component-loader/esm2022/bs-component-ref.class.mjs +0 -3
  211. package/component-loader/esm2022/component-loader.class.mjs +0 -292
  212. package/component-loader/esm2022/component-loader.factory.mjs +0 -35
  213. package/component-loader/esm2022/content-ref.class.mjs +0 -16
  214. package/component-loader/esm2022/index.mjs +0 -2
  215. package/component-loader/esm2022/listen-options.model.mjs +0 -2
  216. package/component-loader/esm2022/ngx-bootstrap-component-loader.mjs +0 -5
  217. package/component-loader/esm2022/public_api.mjs +0 -5
  218. package/datepicker/esm2022/base/bs-datepicker-container.mjs +0 -76
  219. package/datepicker/esm2022/bs-datepicker-inline.component.mjs +0 -163
  220. package/datepicker/esm2022/bs-datepicker-inline.config.mjs +0 -14
  221. package/datepicker/esm2022/bs-datepicker-input.directive.mjs +0 -173
  222. package/datepicker/esm2022/bs-datepicker.component.mjs +0 -305
  223. package/datepicker/esm2022/bs-datepicker.config.mjs +0 -101
  224. package/datepicker/esm2022/bs-datepicker.module.mjs +0 -105
  225. package/datepicker/esm2022/bs-daterangepicker-inline.component.mjs +0 -169
  226. package/datepicker/esm2022/bs-daterangepicker-inline.config.mjs +0 -21
  227. package/datepicker/esm2022/bs-daterangepicker-input.directive.mjs +0 -215
  228. package/datepicker/esm2022/bs-daterangepicker.component.mjs +0 -302
  229. package/datepicker/esm2022/bs-daterangepicker.config.mjs +0 -19
  230. package/datepicker/esm2022/bs-locale.service.mjs +0 -32
  231. package/datepicker/esm2022/datepicker-animations.mjs +0 -16
  232. package/datepicker/esm2022/engine/calc-days-calendar.mjs +0 -21
  233. package/datepicker/esm2022/engine/flag-days-calendar.mjs +0 -93
  234. package/datepicker/esm2022/engine/flag-months-calendar.mjs +0 -45
  235. package/datepicker/esm2022/engine/flag-years-calendar.mjs +0 -42
  236. package/datepicker/esm2022/engine/format-days-calendar.mjs +0 -33
  237. package/datepicker/esm2022/engine/format-months-calendar.mjs +0 -23
  238. package/datepicker/esm2022/engine/format-years-calendar.mjs +0 -39
  239. package/datepicker/esm2022/engine/view-mode.mjs +0 -4
  240. package/datepicker/esm2022/index.mjs +0 -2
  241. package/datepicker/esm2022/models/index.mjs +0 -9
  242. package/datepicker/esm2022/ngx-bootstrap-datepicker.mjs +0 -5
  243. package/datepicker/esm2022/public_api.mjs +0 -17
  244. package/datepicker/esm2022/reducer/_defaults.mjs +0 -6
  245. package/datepicker/esm2022/reducer/bs-datepicker.actions.mjs +0 -143
  246. package/datepicker/esm2022/reducer/bs-datepicker.effects.mjs +0 -182
  247. package/datepicker/esm2022/reducer/bs-datepicker.reducer.mjs +0 -378
  248. package/datepicker/esm2022/reducer/bs-datepicker.state.mjs +0 -18
  249. package/datepicker/esm2022/reducer/bs-datepicker.store.mjs +0 -22
  250. package/datepicker/esm2022/themes/bs/bs-calendar-layout.component.mjs +0 -49
  251. package/datepicker/esm2022/themes/bs/bs-current-date-view.component.mjs +0 -17
  252. package/datepicker/esm2022/themes/bs/bs-custom-dates-view.component.mjs +0 -52
  253. package/datepicker/esm2022/themes/bs/bs-datepicker-container.component.mjs +0 -199
  254. package/datepicker/esm2022/themes/bs/bs-datepicker-day-decorator.directive.mjs +0 -48
  255. package/datepicker/esm2022/themes/bs/bs-datepicker-inline-container.component.mjs +0 -49
  256. package/datepicker/esm2022/themes/bs/bs-datepicker-navigation-view.component.mjs +0 -125
  257. package/datepicker/esm2022/themes/bs/bs-daterangepicker-container.component.mjs +0 -275
  258. package/datepicker/esm2022/themes/bs/bs-daterangepicker-inline-container.component.mjs +0 -49
  259. package/datepicker/esm2022/themes/bs/bs-days-calendar-view.component.mjs +0 -233
  260. package/datepicker/esm2022/themes/bs/bs-months-calendar-view.component.mjs +0 -95
  261. package/datepicker/esm2022/themes/bs/bs-timepicker-view.component.mjs +0 -56
  262. package/datepicker/esm2022/themes/bs/bs-years-calendar-view.component.mjs +0 -96
  263. package/datepicker/esm2022/utils/bs-calendar-utils.mjs +0 -117
  264. package/datepicker/esm2022/utils/copy-time-utils.mjs +0 -10
  265. package/datepicker/esm2022/utils/matrix-utils.mjs +0 -14
  266. package/dropdown/esm2022/bs-dropdown-container.component.mjs +0 -81
  267. package/dropdown/esm2022/bs-dropdown-menu.directive.mjs +0 -23
  268. package/dropdown/esm2022/bs-dropdown-toggle.directive.mjs +0 -88
  269. package/dropdown/esm2022/bs-dropdown.config.mjs +0 -24
  270. package/dropdown/esm2022/bs-dropdown.directive.mjs +0 -343
  271. package/dropdown/esm2022/bs-dropdown.module.mjs +0 -40
  272. package/dropdown/esm2022/bs-dropdown.state.mjs +0 -25
  273. package/dropdown/esm2022/dropdown-animations.mjs +0 -7
  274. package/dropdown/esm2022/index.mjs +0 -2
  275. package/dropdown/esm2022/ngx-bootstrap-dropdown.mjs +0 -5
  276. package/dropdown/esm2022/public_api.mjs +0 -8
  277. package/esm2022/index.mjs +0 -2
  278. package/esm2022/ngx-bootstrap.mjs +0 -5
  279. package/focus-trap/esm2022/boolean-property.mjs +0 -12
  280. package/focus-trap/esm2022/focus-trap-manager.mjs +0 -54
  281. package/focus-trap/esm2022/focus-trap.mjs +0 -411
  282. package/focus-trap/esm2022/focus-trap.module.mjs +0 -24
  283. package/focus-trap/esm2022/index.mjs +0 -2
  284. package/focus-trap/esm2022/interactivity-checker.mjs +0 -241
  285. package/focus-trap/esm2022/ngx-bootstrap-focus-trap.mjs +0 -5
  286. package/focus-trap/esm2022/platform.mjs +0 -80
  287. package/focus-trap/esm2022/public_api.mjs +0 -4
  288. package/locale/esm2022/index.mjs +0 -2
  289. package/locale/esm2022/ngx-bootstrap-locale.mjs +0 -5
  290. package/locale/esm2022/public_api.mjs +0 -47
  291. package/mini-ngrx/esm2022/index.mjs +0 -2
  292. package/mini-ngrx/esm2022/ngx-bootstrap-mini-ngrx.mjs +0 -5
  293. package/mini-ngrx/esm2022/public_api.mjs +0 -3
  294. package/mini-ngrx/esm2022/state.class.mjs +0 -16
  295. package/mini-ngrx/esm2022/store.class.mjs +0 -42
  296. package/modal/esm2022/bs-modal-ref.service.mjs +0 -22
  297. package/modal/esm2022/bs-modal.service.mjs +0 -230
  298. package/modal/esm2022/index.mjs +0 -2
  299. package/modal/esm2022/modal-backdrop.component.mjs +0 -51
  300. package/modal/esm2022/modal-backdrop.options.mjs +0 -7
  301. package/modal/esm2022/modal-container.component.mjs +0 -155
  302. package/modal/esm2022/modal-options.class.mjs +0 -46
  303. package/modal/esm2022/modal.directive.mjs +0 -365
  304. package/modal/esm2022/modal.module.mjs +0 -44
  305. package/modal/esm2022/models/index.mjs +0 -2
  306. package/modal/esm2022/ngx-bootstrap-modal.mjs +0 -5
  307. package/modal/esm2022/public_api.mjs +0 -9
  308. package/pagination/esm2022/index.mjs +0 -2
  309. package/pagination/esm2022/models/index.mjs +0 -2
  310. package/pagination/esm2022/ngx-bootstrap-pagination.mjs +0 -5
  311. package/pagination/esm2022/pager.component.mjs +0 -256
  312. package/pagination/esm2022/pagination.component.mjs +0 -257
  313. package/pagination/esm2022/pagination.config.mjs +0 -35
  314. package/pagination/esm2022/pagination.module.mjs +0 -25
  315. package/pagination/esm2022/public_api.mjs +0 -5
  316. package/popover/esm2022/index.mjs +0 -2
  317. package/popover/esm2022/ngx-bootstrap-popover.mjs +0 -5
  318. package/popover/esm2022/popover-container.component.mjs +0 -45
  319. package/popover/esm2022/popover.config.mjs +0 -35
  320. package/popover/esm2022/popover.directive.mjs +0 -241
  321. package/popover/esm2022/popover.module.mjs +0 -25
  322. package/popover/esm2022/public_api.mjs +0 -5
  323. package/positioning/esm2022/index.mjs +0 -2
  324. package/positioning/esm2022/models/index.mjs +0 -53
  325. package/positioning/esm2022/modifiers/arrow.mjs +0 -56
  326. package/positioning/esm2022/modifiers/flip.mjs +0 -65
  327. package/positioning/esm2022/modifiers/index.mjs +0 -6
  328. package/positioning/esm2022/modifiers/initData.mjs +0 -44
  329. package/positioning/esm2022/modifiers/preventOverflow.mjs +0 -54
  330. package/positioning/esm2022/modifiers/shift.mjs +0 -24
  331. package/positioning/esm2022/ng-positioning.mjs +0 -39
  332. package/positioning/esm2022/ngx-bootstrap-positioning.mjs +0 -5
  333. package/positioning/esm2022/positioning.service.mjs +0 -71
  334. package/positioning/esm2022/public_api.mjs +0 -5
  335. package/positioning/esm2022/utils/checkMargin.mjs +0 -32
  336. package/positioning/esm2022/utils/computeAutoPlacement.mjs +0 -55
  337. package/positioning/esm2022/utils/findCommonOffsetParent.mjs +0 -40
  338. package/positioning/esm2022/utils/getBordersSize.mjs +0 -10
  339. package/positioning/esm2022/utils/getBoundaries.mjs +0 -70
  340. package/positioning/esm2022/utils/getBoundingClientRect.mjs +0 -56
  341. package/positioning/esm2022/utils/getClientRect.mjs +0 -8
  342. package/positioning/esm2022/utils/getFixedPositionOffsetParent.mjs +0 -16
  343. package/positioning/esm2022/utils/getOffsetParent.mjs +0 -33
  344. package/positioning/esm2022/utils/getOffsetRectRelativeToArbitraryNode.mjs +0 -50
  345. package/positioning/esm2022/utils/getOffsets.mjs +0 -11
  346. package/positioning/esm2022/utils/getOppositePlacement.mjs +0 -8
  347. package/positioning/esm2022/utils/getOppositeVariation.mjs +0 -13
  348. package/positioning/esm2022/utils/getOuterSizes.mjs +0 -12
  349. package/positioning/esm2022/utils/getParentNode.mjs +0 -12
  350. package/positioning/esm2022/utils/getReferenceOffsets.mjs +0 -13
  351. package/positioning/esm2022/utils/getRoot.mjs +0 -10
  352. package/positioning/esm2022/utils/getScroll.mjs +0 -14
  353. package/positioning/esm2022/utils/getScrollParent.mjs +0 -28
  354. package/positioning/esm2022/utils/getStyleComputedProperty.mjs +0 -12
  355. package/positioning/esm2022/utils/getTargetOffsets.mjs +0 -30
  356. package/positioning/esm2022/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +0 -19
  357. package/positioning/esm2022/utils/getWindowSizes.mjs +0 -14
  358. package/positioning/esm2022/utils/index.mjs +0 -24
  359. package/positioning/esm2022/utils/isFixed.mjs +0 -16
  360. package/positioning/esm2022/utils/isModifierEnabled.mjs +0 -4
  361. package/positioning/esm2022/utils/isNumeric.mjs +0 -10
  362. package/positioning/esm2022/utils/isOffsetContainer.mjs +0 -11
  363. package/positioning/esm2022/utils/setStyles.mjs +0 -21
  364. package/positioning/esm2022/utils/updateContainerClass.mjs +0 -32
  365. package/progressbar/esm2022/bar.component.mjs +0 -72
  366. package/progressbar/esm2022/index.mjs +0 -2
  367. package/progressbar/esm2022/ngx-bootstrap-progressbar.mjs +0 -5
  368. package/progressbar/esm2022/progressbar-type.interface.mjs +0 -2
  369. package/progressbar/esm2022/progressbar.component.mjs +0 -53
  370. package/progressbar/esm2022/progressbar.config.mjs +0 -19
  371. package/progressbar/esm2022/progressbar.module.mjs +0 -24
  372. package/progressbar/esm2022/public_api.mjs +0 -5
  373. package/rating/esm2022/index.mjs +0 -2
  374. package/rating/esm2022/models/index.mjs +0 -2
  375. package/rating/esm2022/ngx-bootstrap-rating.mjs +0 -5
  376. package/rating/esm2022/public_api.mjs +0 -4
  377. package/rating/esm2022/rating.component.mjs +0 -121
  378. package/rating/esm2022/rating.config.mjs +0 -18
  379. package/rating/esm2022/rating.module.mjs +0 -23
  380. package/sortable/esm2022/draggable-item.mjs +0 -2
  381. package/sortable/esm2022/draggable-item.service.mjs +0 -36
  382. package/sortable/esm2022/index.mjs +0 -2
  383. package/sortable/esm2022/ngx-bootstrap-sortable.mjs +0 -5
  384. package/sortable/esm2022/public_api.mjs +0 -4
  385. package/sortable/esm2022/sortable.component.mjs +0 -270
  386. package/sortable/esm2022/sortable.module.mjs +0 -23
  387. package/tabs/esm2022/index.mjs +0 -2
  388. package/tabs/esm2022/ng-transclude.directive.mjs +0 -29
  389. package/tabs/esm2022/ngx-bootstrap-tabs.mjs +0 -5
  390. package/tabs/esm2022/public_api.mjs +0 -7
  391. package/tabs/esm2022/tab-heading.directive.mjs +0 -21
  392. package/tabs/esm2022/tab.directive.mjs +0 -118
  393. package/tabs/esm2022/tabs.module.mjs +0 -41
  394. package/tabs/esm2022/tabset.component.mjs +0 -216
  395. package/tabs/esm2022/tabset.config.mjs +0 -21
  396. package/timepicker/esm2022/index.mjs +0 -2
  397. package/timepicker/esm2022/models/index.mjs +0 -2
  398. package/timepicker/esm2022/ngx-bootstrap-timepicker.mjs +0 -5
  399. package/timepicker/esm2022/public_api.mjs +0 -6
  400. package/timepicker/esm2022/reducer/timepicker.actions.mjs +0 -53
  401. package/timepicker/esm2022/reducer/timepicker.reducer.mjs +0 -83
  402. package/timepicker/esm2022/reducer/timepicker.store.mjs +0 -21
  403. package/timepicker/esm2022/timepicker-controls.util.mjs +0 -123
  404. package/timepicker/esm2022/timepicker.component.mjs +0 -334
  405. package/timepicker/esm2022/timepicker.config.mjs +0 -54
  406. package/timepicker/esm2022/timepicker.models.mjs +0 -2
  407. package/timepicker/esm2022/timepicker.module.mjs +0 -23
  408. package/timepicker/esm2022/timepicker.utils.mjs +0 -152
  409. package/tooltip/esm2022/index.mjs +0 -2
  410. package/tooltip/esm2022/ngx-bootstrap-tooltip.mjs +0 -5
  411. package/tooltip/esm2022/public_api.mjs +0 -5
  412. package/tooltip/esm2022/tooltip-container.component.mjs +0 -48
  413. package/tooltip/esm2022/tooltip.config.mjs +0 -22
  414. package/tooltip/esm2022/tooltip.directive.mjs +0 -344
  415. package/tooltip/esm2022/tooltip.module.mjs +0 -25
  416. package/typeahead/esm2022/index.mjs +0 -2
  417. package/typeahead/esm2022/latin-map.mjs +0 -827
  418. package/typeahead/esm2022/models/index.mjs +0 -2
  419. package/typeahead/esm2022/ngx-bootstrap-typeahead.mjs +0 -5
  420. package/typeahead/esm2022/public_api.mjs +0 -9
  421. package/typeahead/esm2022/typeahead-animations.mjs +0 -16
  422. package/typeahead/esm2022/typeahead-container.component.mjs +0 -310
  423. package/typeahead/esm2022/typeahead-match.class.mjs +0 -15
  424. package/typeahead/esm2022/typeahead-options.class.mjs +0 -8
  425. package/typeahead/esm2022/typeahead-order.class.mjs +0 -2
  426. package/typeahead/esm2022/typeahead-utils.mjs +0 -77
  427. package/typeahead/esm2022/typeahead.config.mjs +0 -34
  428. package/typeahead/esm2022/typeahead.directive.mjs +0 -573
  429. package/typeahead/esm2022/typeahead.module.mjs +0 -25
  430. package/utils/esm2022/decorators.mjs +0 -23
  431. package/utils/esm2022/facade/browser.mjs +0 -26
  432. package/utils/esm2022/index.mjs +0 -2
  433. package/utils/esm2022/linked-list.class.mjs +0 -247
  434. package/utils/esm2022/ngx-bootstrap-utils.mjs +0 -5
  435. package/utils/esm2022/public_api.mjs +0 -10
  436. package/utils/esm2022/theme-provider.mjs +0 -48
  437. package/utils/esm2022/trigger.class.mjs +0 -14
  438. package/utils/esm2022/triggers.mjs +0 -120
  439. package/utils/esm2022/utils.class.mjs +0 -30
  440. package/utils/esm2022/warn-once.mjs +0 -11
@@ -1,163 +0,0 @@
1
- import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';
2
- import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';
3
- import { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';
4
- import { BsDatepickerConfig } from './bs-datepicker.config';
5
- import { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';
6
- import { copyTime } from './utils/copy-time-utils';
7
- import { checkBsValue, setCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./bs-datepicker-inline.config";
10
- import * as i2 from "ngx-bootstrap/component-loader";
11
- export class BsDatepickerInlineDirective {
12
- constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {
13
- this._config = _config;
14
- this._elementRef = _elementRef;
15
- /**
16
- * Indicates whether datepicker is enabled or not
17
- */
18
- this.isDisabled = false;
19
- /**
20
- * Emits when datepicker value has been changed
21
- */
22
- this.bsValueChange = new EventEmitter();
23
- this._subs = [];
24
- // todo: assign only subset of fields
25
- Object.assign(this, this._config);
26
- this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);
27
- }
28
- /**
29
- * Initial value of datepicker
30
- */
31
- set bsValue(value) {
32
- if (this._bsValue === value) {
33
- return;
34
- }
35
- if (!this._bsValue && value && !this._config.withTimepicker) {
36
- const now = new Date();
37
- copyTime(value, now);
38
- }
39
- if (value && this.bsConfig?.initCurrentTime) {
40
- value = setCurrentTimeOnDateSelect(value);
41
- }
42
- this._bsValue = value;
43
- this.bsValueChange.emit(value);
44
- }
45
- ngOnInit() {
46
- this.setConfig();
47
- this.initSubscribes();
48
- }
49
- initSubscribes() {
50
- this.unsubscribeSubscriptions();
51
- this._subs.push(this.bsValueChange.subscribe((value) => {
52
- if (this._datepickerRef) {
53
- this._datepickerRef.instance.value = value;
54
- }
55
- }));
56
- if (this._datepickerRef) {
57
- this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {
58
- this.bsValue = value;
59
- }));
60
- }
61
- }
62
- unsubscribeSubscriptions() {
63
- if (this._subs?.length) {
64
- this._subs.map(sub => sub.unsubscribe());
65
- this._subs.length = 0;
66
- }
67
- }
68
- ngOnChanges(changes) {
69
- if (changes["bsConfig"]) {
70
- if (changes["bsConfig"].currentValue?.initCurrentTime && changes["bsConfig"].currentValue?.initCurrentTime !== changes["bsConfig"].previousValue?.initCurrentTime && this._bsValue) {
71
- this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);
72
- this.bsValueChange.emit(this._bsValue);
73
- }
74
- }
75
- if (!this._datepickerRef || !this._datepickerRef.instance) {
76
- return;
77
- }
78
- if (changes["minDate"]) {
79
- this._datepickerRef.instance.minDate = this.minDate;
80
- }
81
- if (changes["maxDate"]) {
82
- this._datepickerRef.instance.maxDate = this.maxDate;
83
- }
84
- if (changes["datesDisabled"]) {
85
- this._datepickerRef.instance.datesDisabled = this.datesDisabled;
86
- }
87
- if (changes["datesEnabled"]) {
88
- this._datepickerRef.instance.datesEnabled = this.datesEnabled;
89
- this._datepickerRef.instance.value = this._bsValue;
90
- }
91
- if (changes["isDisabled"]) {
92
- this._datepickerRef.instance.isDisabled = this.isDisabled;
93
- }
94
- if (changes["dateCustomClasses"]) {
95
- this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;
96
- }
97
- if (changes["dateTooltipTexts"]) {
98
- this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;
99
- }
100
- this.setConfig();
101
- }
102
- /**
103
- * Set config for datepicker
104
- */
105
- setConfig() {
106
- if (this._datepicker) {
107
- this._datepicker.hide();
108
- }
109
- this._config = Object.assign({}, this._config, this.bsConfig, {
110
- value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),
111
- isDisabled: this.isDisabled,
112
- minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,
113
- maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,
114
- dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
115
- dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,
116
- datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
117
- datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,
118
- initCurrentTime: this.bsConfig?.initCurrentTime
119
- });
120
- this._datepickerRef = this._datepicker
121
- .provide({ provide: BsDatepickerConfig, useValue: this._config })
122
- .attach(BsDatepickerInlineContainerComponent)
123
- .to(this._elementRef)
124
- .show();
125
- this.initSubscribes();
126
- }
127
- ngOnDestroy() {
128
- this._datepicker.dispose();
129
- this.unsubscribeSubscriptions();
130
- }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInlineDirective, deps: [{ token: i1.BsDatepickerInlineConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive }); }
132
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BsDatepickerInlineDirective, isStandalone: true, selector: "bs-datepicker-inline", inputs: { bsConfig: "bsConfig", isDisabled: "isDisabled", minDate: "minDate", maxDate: "maxDate", dateCustomClasses: "dateCustomClasses", dateTooltipTexts: "dateTooltipTexts", datesEnabled: "datesEnabled", datesDisabled: "datesDisabled", bsValue: "bsValue" }, outputs: { bsValueChange: "bsValueChange" }, providers: [ComponentLoaderFactory], exportAs: ["bsDatepickerInline"], usesOnChanges: true, ngImport: i0 }); }
133
- }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInlineDirective, decorators: [{
135
- type: Directive,
136
- args: [{
137
- selector: 'bs-datepicker-inline',
138
- exportAs: 'bsDatepickerInline',
139
- standalone: true,
140
- providers: [ComponentLoaderFactory]
141
- }]
142
- }], ctorParameters: () => [{ type: i1.BsDatepickerInlineConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }], propDecorators: { bsConfig: [{
143
- type: Input
144
- }], isDisabled: [{
145
- type: Input
146
- }], minDate: [{
147
- type: Input
148
- }], maxDate: [{
149
- type: Input
150
- }], dateCustomClasses: [{
151
- type: Input
152
- }], dateTooltipTexts: [{
153
- type: Input
154
- }], datesEnabled: [{
155
- type: Input
156
- }], datesDisabled: [{
157
- type: Input
158
- }], bsValueChange: [{
159
- type: Output
160
- }], bsValue: [{
161
- type: Input
162
- }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci1pbmxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGVwaWNrZXIvYnMtZGF0ZXBpY2tlci1pbmxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFRckYsTUFBTSxPQUFPLDJCQUEyQjtJQXlDdEMsWUFDUyxPQUFpQyxFQUNoQyxXQUF1QixFQUMvQixTQUFvQixFQUNwQixpQkFBbUMsRUFDbkMsR0FBMkI7UUFKcEIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0Q2pDOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQztRQXlCNUI7O1dBRUc7UUFDTyxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBV25DLHFDQUFxQztRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxD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ZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIsIENvbXBvbmVudExvYWRlckZhY3RvcnkgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlcklubGluZUNvbmZpZyB9IGZyb20gJy4vYnMtZGF0ZXBpY2tlci1pbmxpbmUuY29uZmlnJztcblxuaW1wb3J0IHsgQnNEYXRlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9icy1kYXRlcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyRGF0ZUN1c3RvbUNsYXNzZXMsIERhdGVwaWNrZXJEYXRlVG9vbHRpcFRleHQgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3RoZW1lcy9icy9icy1kYXRlcGlja2VyLWlubGluZS1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNvcHlUaW1lIH0gZnJvbSAnLi91dGlscy9jb3B5LXRpbWUtdXRpbHMnO1xuaW1wb3J0IHsgY2hlY2tCc1ZhbHVlLCBzZXRDdXJyZW50VGltZU9uRGF0ZVNlbGVjdCB9IGZyb20gJy4vdXRpbHMvYnMtY2FsZW5kYXItdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2JzLWRhdGVwaWNrZXItaW5saW5lJyxcbiAgICBleHBvcnRBczogJ2JzRGF0ZXBpY2tlcklubGluZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRMb2FkZXJGYWN0b3J5XVxufSlcbmV4cG9ydCBjbGFzcyBCc0RhdGVwaWNrZXJJbmxpbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIENvbmZpZyBvYmplY3QgZm9yIGRhdGVwaWNrZXJcbiAgICovXG4gIEBJbnB1dCgpIGJzQ29uZmlnPzogUGFydGlhbDxCc0RhdGVwaWNrZXJJbmxpbmVDb25maWc+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgZGF0ZXBpY2tlciBpcyBlbmFibGVkIG9yIG5vdFxuICAgKi9cbiAgQElucHV0KCkgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAvKipcbiAgICogTWluaW11bSBkYXRlIHdoaWNoIGlzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uXG4gICAqL1xuICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqXG4gICAqIE1heGltdW0gZGF0ZSB3aGljaCBpcyBhdmFpbGFibGUgZm9yIHNlbGVjdGlvblxuICAgKi9cbiAgQElucHV0KCkgbWF4RGF0ZT86IERhdGU7XG4gIC8qKlxuICAgKiBEYXRlIGN1c3RvbSBjbGFzc2VzXG4gICAqL1xuICBASW5wdXQoKSBkYXRlQ3VzdG9tQ2xhc3Nlcz86IERhdGVwaWNrZXJEYXRlQ3VzdG9tQ2xhc3Nlc1tdO1xuICAvKipcbiAgICogRGF0ZSB0b29sdGlwIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIGRhdGVUb29sdGlwVGV4dHM/OiBEYXRlcGlja2VyRGF0ZVRvb2x0aXBUZXh0W107XG4gIC8qKlxuICAgKiBEaXNhYmxlIHNwZWNpZmljIGRhdGVzXG4gICAqL1xuICBASW5wdXQoKSBkYXRlc0VuYWJsZWQ/OiBEYXRlW107XG4gIC8qKlxuICAgKiBFbmFibGUgc3BlY2lmaWMgZGF0ZXNcbiAgICovXG4gIEBJbnB1dCgpIGRhdGVzRGlzYWJsZWQ/OiBEYXRlW107XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRhdGVwaWNrZXIgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpIGJzVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJvdGVjdGVkIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlcGlja2VyOiBDb21wb25lbnRMb2FkZXI8QnNEYXRlcGlja2VySW5saW5lQ29udGFpbmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBfZGF0ZXBpY2tlclJlZj86IENvbXBvbmVudFJlZjxCc0RhdGVwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfY29uZmlnOiBCc0RhdGVwaWNrZXJJbmxpbmVDb25maWcsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBjaXM6IENvbXBvbmVudExvYWRlckZhY3RvcnlcbiAgKSB7XG4gICAgLy8gdG9kbzogYXNzaWduIG9ubHkgc3Vic2V0IG9mIGZpZWxkc1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgdGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9kYXRlcGlja2VyID0gY2lzLmNyZWF0ZUxvYWRlcjxCc0RhdGVwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQ+KFxuICAgICAgX2VsZW1lbnRSZWYsXG4gICAgICBfdmlld0NvbnRhaW5lclJlZixcbiAgICAgIF9yZW5kZXJlclxuICAgICk7XG4gIH1cblxuICBfYnNWYWx1ZT86IERhdGU7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgZGF0ZXBpY2tlclxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGJzVmFsdWUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5fYnNWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAgaWYgKCF0aGlzLl9ic1ZhbHVlICYmIHZhbHVlICYmICF0aGlzLl9jb25maWcud2l0aFRpbWVwaWNrZXIpIHtcbiAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgIGNvcHlUaW1lKHZhbHVlLCBub3cpO1xuICAgICB9XG5cbiAgICBpZiAodmFsdWUgJiYgdGhpcy5ic0NvbmZpZz8uaW5pdEN1cnJlbnRUaW1lKSB7XG4gICAgICB2YWx1ZSA9IHNldEN1cnJlbnRUaW1lT25EYXRlU2VsZWN0KHZhbHVlKTtcbiAgICAgfVxuXG4gICAgdGhpcy5fYnNWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuYnNWYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q29uZmlnKCk7XG4gICAgdGhpcy5pbml0U3Vic2NyaWJlcygpO1xuICB9XG5cbiAgaW5pdFN1YnNjcmliZXMoKSB7XG4gICAgdGhpcy51bnN1YnNjcmliZVN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLmJzVmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZXBpY2tlclJlZikge1xuICAgICAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuX2RhdGVwaWNrZXJSZWYpIHtcbiAgICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgICAgdGhpcy5fZGF0ZXBpY2tlclJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5ic1ZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlU3Vic2NyaXB0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fc3Vicz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9zdWJzLm1hcChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGhpcy5fc3Vicy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcImJzQ29uZmlnXCJdKSB7XG4gICAgICBpZiAoY2hhbmdlc1tcImJzQ29uZmlnXCJdLmN1cnJlbnRWYWx1ZT8uaW5pdEN1cnJlbnRUaW1lICYmIGNoYW5nZXNbXCJic0NvbmZpZ1wiXS5jdXJyZW50VmFsdWU/LmluaXRDdXJyZW50VGltZSAhPT0gY2hhbmdlc1tcImJzQ29uZmlnXCJdLnByZXZpb3VzVmFsdWU/LmluaXRDdXJyZW50VGltZSAmJiB0aGlzLl9ic1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2JzVmFsdWUgPSBzZXRDdXJyZW50VGltZU9uRGF0ZVNlbGVjdCh0aGlzLl9ic1ZhbHVlKTtcbiAgICAgICAgdGhpcy5ic1ZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fYnNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9kYXRlcGlja2VyUmVmIHx8ICF0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJtaW5EYXRlXCJdKSB7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLm1pbkRhdGUgPSB0aGlzLm1pbkRhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJtYXhEYXRlXCJdKSB7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLm1heERhdGUgPSB0aGlzLm1heERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJkYXRlc0Rpc2FibGVkXCJdKSB7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLmRhdGVzRGlzYWJsZWQgPSB0aGlzLmRhdGVzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbXCJkYXRlc0VuYWJsZWRcIl0pIHtcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UuZGF0ZXNFbmFibGVkID0gdGhpcy5kYXRlc0VuYWJsZWQ7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy5fYnNWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcImlzRGlzYWJsZWRcIl0pIHtcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UuaXNEaXNhYmxlZCA9IHRoaXMuaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcImRhdGVDdXN0b21DbGFzc2VzXCJdKSB7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLmRhdGVDdXN0b21DbGFzc2VzID0gdGhpcy5kYXRlQ3VzdG9tQ2xhc3NlcztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcImRhdGVUb29sdGlwVGV4dHNcIl0pIHtcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UuZGF0ZVRvb2x0aXBUZXh0cyA9IHRoaXMuZGF0ZVRvb2x0aXBUZXh0cztcbiAgICB9XG5cbiAgICB0aGlzLnNldENvbmZpZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb25maWcgZm9yIGRhdGVwaWNrZXJcbiAgICovXG4gIHNldENvbmZpZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5fZGF0ZXBpY2tlci5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY29uZmlnLCB0aGlzLmJzQ29uZmlnLCB7XG4gICAgICB2YWx1ZTogY2hlY2tCc1ZhbHVlKHRoaXMuX2JzVmFsdWUsIHRoaXMubWF4RGF0ZSB8fCB0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcubWF4RGF0ZSksXG4gICAgICBpc0Rpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGUgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLm1heERhdGUsXG4gICAgICBkYXRlQ3VzdG9tQ2xhc3NlczogdGhpcy5kYXRlQ3VzdG9tQ2xhc3NlcyB8fCB0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcuZGF0ZUN1c3RvbUNsYXNzZXMsXG4gICAgICBkYXRlVG9vbHRpcFRleHRzOiB0aGlzLmRhdGVUb29sdGlwVGV4dHMgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLmRhdGVUb29sdGlwVGV4dHMsXG4gICAgICBkYXRlc0Rpc2FibGVkOiB0aGlzLmRhdGVzRGlzYWJsZWQgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLmRhdGVzRGlzYWJsZWQsXG4gICAgICBkYXRlc0VuYWJsZWQ6IHRoaXMuZGF0ZXNFbmFibGVkIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5kYXRlc0VuYWJsZWQsXG4gICAgICBpbml0Q3VycmVudFRpbWU6IHRoaXMuYnNDb25maWc/LmluaXRDdXJyZW50VGltZVxuICAgIH0pO1xuXG5cbiAgICB0aGlzLl9kYXRlcGlja2VyUmVmID0gdGhpcy5fZGF0ZXBpY2tlclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBCc0RhdGVwaWNrZXJDb25maWcsIHVzZVZhbHVlOiB0aGlzLl9jb25maWcgfSlcbiAgICAgIC5hdHRhY2goQnNEYXRlcGlja2VySW5saW5lQ29udGFpbmVyQ29tcG9uZW50KVxuICAgICAgLnRvKHRoaXMuX2VsZW1lbnRSZWYpXG4gICAgICAuc2hvdygpO1xuXG4gICAgdGhpcy5pbml0U3Vic2NyaWJlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGF0ZXBpY2tlci5kaXNwb3NlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVN1YnNjcmlwdGlvbnMoKTtcbiAgfVxufVxuIl19
@@ -1,14 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BsDatepickerConfig } from './bs-datepicker.config';
3
- import * as i0 from "@angular/core";
4
- export class BsDatepickerInlineConfig extends BsDatepickerConfig {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInlineConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
6
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInlineConfig, providedIn: 'root' }); }
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInlineConfig, decorators: [{
9
- type: Injectable,
10
- args: [{
11
- providedIn: 'root'
12
- }]
13
- }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci1pbmxpbmUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGVwaWNrZXIvYnMtZGF0ZXBpY2tlci1pbmxpbmUuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxrQkFBa0I7OEdBQW5ELHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICcuL2JzLWRhdGVwaWNrZXIuY29uZmlnJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQnNEYXRlcGlja2VySW5saW5lQ29uZmlnIGV4dGVuZHMgQnNEYXRlcGlja2VyQ29uZmlnIHsgfVxuIl19
@@ -1,173 +0,0 @@
1
- import { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, HostListener, Renderer2 } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { formatDate, getLocale, isAfter, isBefore, isDate, isDateValid, parseDate, utcAsLocal } from 'ngx-bootstrap/chronos';
4
- import { BsDatepickerDirective } from './bs-datepicker.component';
5
- import { BsLocaleService } from './bs-locale.service';
6
- import { Subscription } from 'rxjs';
7
- import { distinctUntilChanged } from 'rxjs/operators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./bs-datepicker.component";
10
- import * as i2 from "./bs-locale.service";
11
- const BS_DATEPICKER_VALUE_ACCESSOR = {
12
- provide: NG_VALUE_ACCESSOR,
13
- useExisting: forwardRef(() => BsDatepickerInputDirective),
14
- multi: true
15
- };
16
- const BS_DATEPICKER_VALIDATOR = {
17
- provide: NG_VALIDATORS,
18
- useExisting: forwardRef(() => BsDatepickerInputDirective),
19
- multi: true
20
- };
21
- export class BsDatepickerInputDirective {
22
- constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {
23
- this._picker = _picker;
24
- this._localeService = _localeService;
25
- this._renderer = _renderer;
26
- this._elRef = _elRef;
27
- this.changeDetection = changeDetection;
28
- this._onChange = Function.prototype;
29
- this._onTouched = Function.prototype;
30
- this._validatorChange = Function.prototype;
31
- this._subs = new Subscription();
32
- }
33
- onChange(event) {
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- this.writeValue(event.target.value);
36
- this._onChange(this._value);
37
- if (this._picker._config.returnFocusToInput) {
38
- this._renderer.selectRootElement(this._elRef.nativeElement).focus();
39
- }
40
- this._onTouched();
41
- }
42
- onBlur() {
43
- this._onTouched();
44
- }
45
- hide() {
46
- this._picker.hide();
47
- this._renderer.selectRootElement(this._elRef.nativeElement).blur();
48
- if (this._picker._config.returnFocusToInput) {
49
- this._renderer.selectRootElement(this._elRef.nativeElement).focus();
50
- }
51
- }
52
- ngOnInit() {
53
- const setBsValue = (value) => {
54
- this._setInputValue(value);
55
- if (this._value !== value) {
56
- this._value = value;
57
- this._onChange(value);
58
- this._onTouched();
59
- }
60
- this.changeDetection.markForCheck();
61
- };
62
- // if value set via [bsValue] it will not get into value change
63
- if (this._picker._bsValue) {
64
- setBsValue(this._picker._bsValue);
65
- }
66
- // update input value on datepicker value update
67
- this._subs.add(this._picker.bsValueChange.subscribe(setBsValue));
68
- // update input value on locale change
69
- this._subs.add(this._localeService.localeChange.subscribe(() => {
70
- this._setInputValue(this._value);
71
- }));
72
- this._subs.add(this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {
73
- this._setInputValue(this._value);
74
- }));
75
- }
76
- ngOnDestroy() {
77
- this._subs.unsubscribe();
78
- }
79
- _setInputValue(value) {
80
- const initialDate = !value
81
- ? ''
82
- : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);
83
- this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);
84
- }
85
- validate(c) {
86
- const _value = c.value;
87
- if (_value === null || _value === undefined || _value === '') {
88
- return null;
89
- }
90
- if (isDate(_value)) {
91
- const _isDateValid = isDateValid(_value);
92
- if (!_isDateValid) {
93
- return { bsDate: { invalid: _value } };
94
- }
95
- if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {
96
- this.writeValue(this._picker.minDate);
97
- return { bsDate: { minDate: this._picker.minDate } };
98
- }
99
- if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {
100
- this.writeValue(this._picker.maxDate);
101
- return { bsDate: { maxDate: this._picker.maxDate } };
102
- }
103
- }
104
- return null;
105
- }
106
- registerOnValidatorChange(fn) {
107
- this._validatorChange = fn;
108
- }
109
- writeValue(value) {
110
- if (!value) {
111
- this._value = void 0;
112
- }
113
- else {
114
- const _localeKey = this._localeService.currentLocale;
115
- const _locale = getLocale(_localeKey);
116
- if (!_locale) {
117
- throw new Error(`Locale "${_localeKey}" is not defined, please add it with "defineLocale(...)"`);
118
- }
119
- this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);
120
- if (this._picker._config.useUtc) {
121
- const utcValue = utcAsLocal(this._value);
122
- this._value = utcValue === null ? void 0 : utcValue;
123
- }
124
- }
125
- this._picker.bsValue = this._value;
126
- this._onChange(this._value);
127
- }
128
- setDisabledState(isDisabled) {
129
- this._picker.isDisabled = isDisabled;
130
- if (isDisabled) {
131
- this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');
132
- return;
133
- }
134
- this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');
135
- }
136
- registerOnChange(fn) {
137
- this._onChange = fn;
138
- }
139
- registerOnTouched(fn) {
140
- this._onTouched = fn;
141
- }
142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInputDirective, deps: [{ token: i1.BsDatepickerDirective, host: true }, { token: i2.BsLocaleService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
143
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BsDatepickerInputDirective, isStandalone: true, selector: "input[bsDatepicker]", host: { listeners: { "change": "onChange($event)", "blur": "onBlur()", "keyup.esc": "hide()", "keydown.enter": "hide()" } }, providers: [
144
- BS_DATEPICKER_VALUE_ACCESSOR,
145
- BS_DATEPICKER_VALIDATOR
146
- ], ngImport: i0 }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInputDirective, decorators: [{
149
- type: Directive,
150
- args: [{
151
- selector: `input[bsDatepicker]`,
152
- providers: [
153
- BS_DATEPICKER_VALUE_ACCESSOR,
154
- BS_DATEPICKER_VALIDATOR
155
- ],
156
- standalone: true
157
- }]
158
- }], ctorParameters: () => [{ type: i1.BsDatepickerDirective, decorators: [{
159
- type: Host
160
- }] }, { type: i2.BsLocaleService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { onChange: [{
161
- type: HostListener,
162
- args: ['change', ['$event']]
163
- }], onBlur: [{
164
- type: HostListener,
165
- args: ['blur']
166
- }], hide: [{
167
- type: HostListener,
168
- args: ['keyup.esc']
169
- }, {
170
- type: HostListener,
171
- args: ['keydown.enter']
172
- }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9icy1kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBSVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0RCxNQUFNLDRCQUE0QixHQUFhO0lBQzdDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLHVCQUF1QixHQUFhO0lBQ3hDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDekQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLDBCQUEwQjtJQU9y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RCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBN0pVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLCtMQU54QjtZQUNULDRCQUE0QjtZQUM1Qix1QkFBdUI7U0FDeEI7OzJGQUdRLDBCQUEwQjtrQkFSdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUU7d0JBQ1QsNEJBQTRCO3dCQUM1Qix1QkFBdUI7cUJBQ3hCO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBU0ksSUFBSTt3SkFRUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVlsQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTTtnQkFPcEIsSUFBSTtzQkFGSCxZQUFZO3VCQUFDLFdBQVc7O3NCQUN4QixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0LFxuICBIb3N0TGlzdGVuZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBQcm92aWRlcixcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgZm9ybWF0RGF0ZSxcbiAgZ2V0TG9jYWxlLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNEYXRlLFxuICBpc0RhdGVWYWxpZCxcbiAgcGFyc2VEYXRlLFxuICB1dGNBc0xvY2FsXG59IGZyb20gJ25neC1ib290c3RyYXAvY2hyb25vcyc7XG5cbmltcG9ydCB7IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vYnMtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi9icy1sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBCU19EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJzRGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbmNvbnN0IEJTX0RBVEVQSUNLRVJfVkFMSURBVE9SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQnNEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBpbnB1dFtic0RhdGVwaWNrZXJdYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIEJTX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBCU19EQVRFUElDS0VSX1ZBTElEQVRPUlxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCc0RhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfb25DaGFuZ2UgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIHByaXZhdGUgX29uVG91Y2hlZCA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBwcml2YXRlIF92YWx1ZT86IERhdGU7XG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEhvc3QoKSBwcml2YXRlIF9waWNrZXI6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSxcbiAgICBwcml2YXRlIF9sb2NhbGVTZXJ2aWNlOiBCc0xvY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdGhpcy53cml0ZVZhbHVlKChldmVudC50YXJnZXQgYXMgYW55KS52YWx1ZSk7XG4gICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIGlmICh0aGlzLl9waWNrZXIuX2NvbmZpZy5yZXR1cm5Gb2N1c1RvSW5wdXQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwLmVzYycpXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInKVxuICBoaWRlKCkge1xuICAgIHRoaXMuX3BpY2tlci5oaWRlKCk7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCkuYmx1cigpO1xuICAgIGlmICh0aGlzLl9waWNrZXIuX2NvbmZpZy5yZXR1cm5Gb2N1c1RvSW5wdXQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3Qgc2V0QnNWYWx1ZSA9ICh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgdGhpcy5fc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgLy8gaWYgdmFsdWUgc2V0IHZpYSBbYnNWYWx1ZV0gaXQgd2lsbCBub3QgZ2V0IGludG8gdmFsdWUgY2hhbmdlXG4gICAgaWYgKHRoaXMuX3BpY2tlci5fYnNWYWx1ZSkge1xuICAgICAgc2V0QnNWYWx1ZSh0aGlzLl9waWNrZXIuX2JzVmFsdWUpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSBpbnB1dCB2YWx1ZSBvbiBkYXRlcGlja2VyIHZhbHVlIHVwZGF0ZVxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuX3BpY2tlci5ic1ZhbHVlQ2hhbmdlLnN1YnNjcmliZShzZXRCc1ZhbHVlKSk7XG5cbiAgICAvLyB1cGRhdGUgaW5wdXQgdmFsdWUgb24gbG9jYWxlIGNoYW5nZVxuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgdGhpcy5fbG9jYWxlU2VydmljZS5sb2NhbGVDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0SW5wdXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZChcbiAgICAgIHRoaXMuX3BpY2tlci5kYXRlSW5wdXRGb3JtYXQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0SW5wdXRWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBfc2V0SW5wdXRWYWx1ZSh2YWx1ZT86IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBpbml0aWFsRGF0ZSA9ICF2YWx1ZVxuICAgICAgPyAnJ1xuICAgICAgOiBmb3JtYXREYXRlKHZhbHVlLCB0aGlzLl9waWNrZXIuX2NvbmZpZy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMuX2xvY2FsZVNlcnZpY2UuY3VycmVudExvY2FsZSk7XG5cbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBpbml0aWFsRGF0ZSk7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgX3ZhbHVlOiBEYXRlIHwgc3RyaW5nID0gYy52YWx1ZTtcblxuICAgIGlmIChfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB1bmRlZmluZWQgfHwgX3ZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzRGF0ZShfdmFsdWUpKSB7XG4gICAgICBjb25zdCBfaXNEYXRlVmFsaWQgPSBpc0RhdGVWYWxpZChfdmFsdWUpO1xuICAgICAgaWYgKCFfaXNEYXRlVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHsgYnNEYXRlOiB7IGludmFsaWQ6IF92YWx1ZSB9IH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9waWNrZXIgJiYgdGhpcy5fcGlja2VyLm1pbkRhdGUgJiYgaXNCZWZvcmUoX3ZhbHVlLCB0aGlzLl9waWNrZXIubWluRGF0ZSwgJ2RhdGUnKSkge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5fcGlja2VyLm1pbkRhdGUpO1xuXG4gICAgICAgIHJldHVybiB7IGJzRGF0ZTogeyBtaW5EYXRlOiB0aGlzLl9waWNrZXIubWluRGF0ZSB9IH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9waWNrZXIgJiYgdGhpcy5fcGlja2VyLm1heERhdGUgJiYgaXNBZnRlcihfdmFsdWUsIHRoaXMuX3BpY2tlci5tYXhEYXRlLCAnZGF0ZScpKSB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl9waWNrZXIubWF4RGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHsgYnNEYXRlOiB7IG1heERhdGU6IHRoaXMuX3BpY2tlci5tYXhEYXRlIH0gfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZvaWQgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2xvY2FsZUtleSA9IHRoaXMuX2xvY2FsZVNlcnZpY2UuY3VycmVudExvY2FsZTtcbiAgICAgIGNvbnN0IF9sb2NhbGUgPSBnZXRMb2NhbGUoX2xvY2FsZUtleSk7XG4gICAgICBpZiAoIV9sb2NhbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbGUgXCIke19sb2NhbGVLZXl9XCIgaXMgbm90IGRlZmluZWQsIHBsZWFzZSBhZGQgaXQgd2l0aCBcImRlZmluZUxvY2FsZSguLi4pXCJgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdmFsdWUgPSBwYXJzZURhdGUodmFsdWUsIHRoaXMuX3BpY2tlci5fY29uZmlnLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy5fbG9jYWxlU2VydmljZS5jdXJyZW50TG9jYWxlKTtcblxuICAgICAgaWYgKHRoaXMuX3BpY2tlci5fY29uZmlnLnVzZVV0Yykge1xuICAgICAgICBjb25zdCB1dGNWYWx1ZSA9IHV0Y0FzTG9jYWwodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHV0Y1ZhbHVlID09PSBudWxsID8gdm9pZCAwIDogdXRjVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fcGlja2VyLmJzVmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9waWNrZXIuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cbn1cbiJdfQ==