ngx-bootstrap 18.1.3 → 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 (438) 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/fesm2022/ngx-bootstrap-datepicker.mjs +85 -86
  15. package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -1
  16. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs +22 -25
  17. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -1
  18. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs +19 -19
  19. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -1
  20. package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -1
  21. package/modal/fesm2022/ngx-bootstrap-modal.mjs +22 -24
  22. package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -1
  23. package/package.json +1 -3
  24. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs +13 -13
  25. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -1
  26. package/popover/fesm2022/ngx-bootstrap-popover.mjs +13 -13
  27. package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -1
  28. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs +3 -3
  29. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -1
  30. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs +13 -13
  31. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -1
  32. package/rating/fesm2022/ngx-bootstrap-rating.mjs +10 -10
  33. package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -1
  34. package/schematics/ng-add/index.js +2 -3
  35. package/schematics/ng-add/index.js.map +1 -1
  36. package/schematics/utils/addStyles.js +1 -2
  37. package/schematics/utils/addStyles.js.map +1 -1
  38. package/schematics/utils/current_dependency_versions.json +1 -1
  39. package/schematics/utils/getVersions.js +2 -3
  40. package/schematics/utils/getVersions.js.map +1 -1
  41. package/schematics/utils/index.js +6 -7
  42. package/schematics/utils/index.js.map +1 -1
  43. package/schematics/utils/ng-module-imports.js +1 -2
  44. package/schematics/utils/ng-module-imports.js.map +1 -1
  45. package/schematics/utils/project-main-file.js +1 -2
  46. package/schematics/utils/project-main-file.js.map +1 -1
  47. package/schematics/utils/project-targets.js +1 -2
  48. package/schematics/utils/project-targets.js.map +1 -1
  49. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs +12 -14
  50. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -1
  51. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs +19 -19
  52. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -1
  53. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs +16 -16
  54. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -1
  55. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs +13 -13
  56. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -1
  57. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs +13 -14
  58. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -1
  59. package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -1
  60. package/accordion/esm2022/accordion-group.component.mjs +0 -85
  61. package/accordion/esm2022/accordion.component.mjs +0 -57
  62. package/accordion/esm2022/accordion.config.mjs +0 -22
  63. package/accordion/esm2022/accordion.module.mjs +0 -24
  64. package/accordion/esm2022/index.mjs +0 -2
  65. package/accordion/esm2022/ngx-bootstrap-accordion.mjs +0 -5
  66. package/accordion/esm2022/public_api.mjs +0 -5
  67. package/alert/esm2022/alert.component.mjs +0 -77
  68. package/alert/esm2022/alert.config.mjs +0 -21
  69. package/alert/esm2022/alert.module.mjs +0 -23
  70. package/alert/esm2022/index.mjs +0 -2
  71. package/alert/esm2022/ngx-bootstrap-alert.mjs +0 -5
  72. package/alert/esm2022/public_api.mjs +0 -4
  73. package/buttons/esm2022/button-checkbox.directive.mjs +0 -88
  74. package/buttons/esm2022/button-radio-group.directive.mjs +0 -158
  75. package/buttons/esm2022/button-radio.directive.mjs +0 -189
  76. package/buttons/esm2022/buttons.module.mjs +0 -25
  77. package/buttons/esm2022/index.mjs +0 -2
  78. package/buttons/esm2022/ngx-bootstrap-buttons.mjs +0 -5
  79. package/buttons/esm2022/public_api.mjs +0 -5
  80. package/carousel/esm2022/carousel.component.mjs +0 -712
  81. package/carousel/esm2022/carousel.config.mjs +0 -32
  82. package/carousel/esm2022/carousel.module.mjs +0 -24
  83. package/carousel/esm2022/index.mjs +0 -2
  84. package/carousel/esm2022/models/index.mjs +0 -2
  85. package/carousel/esm2022/ngx-bootstrap-carousel.mjs +0 -5
  86. package/carousel/esm2022/public_api.mjs +0 -5
  87. package/carousel/esm2022/slide.component.mjs +0 -65
  88. package/carousel/esm2022/utils.mjs +0 -32
  89. package/chronos/esm2022/create/check-overflow.mjs +0 -30
  90. package/chronos/esm2022/create/clone.mjs +0 -6
  91. package/chronos/esm2022/create/date-from-array.mjs +0 -19
  92. package/chronos/esm2022/create/from-anything.mjs +0 -106
  93. package/chronos/esm2022/create/from-array.mjs +0 -135
  94. package/chronos/esm2022/create/from-object.mjs +0 -17
  95. package/chronos/esm2022/create/from-string-and-array.mjs +0 -38
  96. package/chronos/esm2022/create/from-string-and-format.mjs +0 -106
  97. package/chronos/esm2022/create/from-string.mjs +0 -222
  98. package/chronos/esm2022/create/local.mjs +0 -16
  99. package/chronos/esm2022/create/parsing-flags.mjs +0 -26
  100. package/chronos/esm2022/create/parsing.types.mjs +0 -2
  101. package/chronos/esm2022/create/valid.mjs +0 -42
  102. package/chronos/esm2022/duration/bubble.mjs +0 -47
  103. package/chronos/esm2022/duration/constructor.mjs +0 -130
  104. package/chronos/esm2022/duration/create.mjs +0 -112
  105. package/chronos/esm2022/duration/humanize.mjs +0 -79
  106. package/chronos/esm2022/duration/valid.mjs +0 -43
  107. package/chronos/esm2022/format/format.mjs +0 -50
  108. package/chronos/esm2022/format.mjs +0 -46
  109. package/chronos/esm2022/i18n/ar.mjs +0 -132
  110. package/chronos/esm2022/i18n/bg.mjs +0 -90
  111. package/chronos/esm2022/i18n/ca.mjs +0 -87
  112. package/chronos/esm2022/i18n/cs.mjs +0 -175
  113. package/chronos/esm2022/i18n/da.mjs +0 -49
  114. package/chronos/esm2022/i18n/de.mjs +0 -67
  115. package/chronos/esm2022/i18n/en-gb.mjs +0 -57
  116. package/chronos/esm2022/i18n/es-do.mjs +0 -81
  117. package/chronos/esm2022/i18n/es-pr.mjs +0 -74
  118. package/chronos/esm2022/i18n/es-us.mjs +0 -75
  119. package/chronos/esm2022/i18n/es.mjs +0 -80
  120. package/chronos/esm2022/i18n/et.mjs +0 -69
  121. package/chronos/esm2022/i18n/fa.mjs +0 -130
  122. package/chronos/esm2022/i18n/fi.mjs +0 -96
  123. package/chronos/esm2022/i18n/fr-ca.mjs +0 -69
  124. package/chronos/esm2022/i18n/fr.mjs +0 -72
  125. package/chronos/esm2022/i18n/gl.mjs +0 -80
  126. package/chronos/esm2022/i18n/he.mjs +0 -94
  127. package/chronos/esm2022/i18n/hi.mjs +0 -119
  128. package/chronos/esm2022/i18n/hr.mjs +0 -58
  129. package/chronos/esm2022/i18n/hu.mjs +0 -100
  130. package/chronos/esm2022/i18n/id.mjs +0 -78
  131. package/chronos/esm2022/i18n/it.mjs +0 -61
  132. package/chronos/esm2022/i18n/ja.mjs +0 -71
  133. package/chronos/esm2022/i18n/ka.mjs +0 -83
  134. package/chronos/esm2022/i18n/kk.mjs +0 -76
  135. package/chronos/esm2022/i18n/ko.mjs +0 -72
  136. package/chronos/esm2022/i18n/lt.mjs +0 -112
  137. package/chronos/esm2022/i18n/lv.mjs +0 -52
  138. package/chronos/esm2022/i18n/mn.mjs +0 -94
  139. package/chronos/esm2022/i18n/nb.mjs +0 -53
  140. package/chronos/esm2022/i18n/nl-be.mjs +0 -77
  141. package/chronos/esm2022/i18n/nl.mjs +0 -76
  142. package/chronos/esm2022/i18n/pl.mjs +0 -122
  143. package/chronos/esm2022/i18n/pt-br.mjs +0 -52
  144. package/chronos/esm2022/i18n/ro.mjs +0 -66
  145. package/chronos/esm2022/i18n/ru.mjs +0 -177
  146. package/chronos/esm2022/i18n/sk.mjs +0 -153
  147. package/chronos/esm2022/i18n/sl.mjs +0 -179
  148. package/chronos/esm2022/i18n/sq.mjs +0 -50
  149. package/chronos/esm2022/i18n/sv.mjs +0 -59
  150. package/chronos/esm2022/i18n/th-be.mjs +0 -73
  151. package/chronos/esm2022/i18n/th.mjs +0 -58
  152. package/chronos/esm2022/i18n/tr.mjs +0 -78
  153. package/chronos/esm2022/i18n/uk.mjs +0 -143
  154. package/chronos/esm2022/i18n/vi.mjs +0 -70
  155. package/chronos/esm2022/i18n/zh-cn.mjs +0 -109
  156. package/chronos/esm2022/index.mjs +0 -2
  157. package/chronos/esm2022/locale/calendar.mjs +0 -9
  158. package/chronos/esm2022/locale/locale.class.mjs +0 -532
  159. package/chronos/esm2022/locale/locale.defaults.mjs +0 -40
  160. package/chronos/esm2022/locale/locales.mjs +0 -228
  161. package/chronos/esm2022/moment/add-subtract.mjs +0 -35
  162. package/chronos/esm2022/moment/calendar.mjs +0 -41
  163. package/chronos/esm2022/moment/diff.mjs +0 -70
  164. package/chronos/esm2022/moment/min-max.mjs +0 -38
  165. package/chronos/esm2022/ngx-bootstrap-chronos.mjs +0 -5
  166. package/chronos/esm2022/parse/regex.mjs +0 -47
  167. package/chronos/esm2022/parse/token.mjs +0 -31
  168. package/chronos/esm2022/public_api.mjs +0 -59
  169. package/chronos/esm2022/testing/chain.mjs +0 -708
  170. package/chronos/esm2022/types.mjs +0 -2
  171. package/chronos/esm2022/units/aliases.mjs +0 -35
  172. package/chronos/esm2022/units/constants.mjs +0 -11
  173. package/chronos/esm2022/units/day-of-month.mjs +0 -31
  174. package/chronos/esm2022/units/day-of-week.mjs +0 -129
  175. package/chronos/esm2022/units/day-of-year.mjs +0 -37
  176. package/chronos/esm2022/units/hour.mjs +0 -127
  177. package/chronos/esm2022/units/index.mjs +0 -19
  178. package/chronos/esm2022/units/millisecond.mjs +0 -59
  179. package/chronos/esm2022/units/minute.mjs +0 -23
  180. package/chronos/esm2022/units/month.mjs +0 -63
  181. package/chronos/esm2022/units/offset.mjs +0 -209
  182. package/chronos/esm2022/units/priorities.mjs +0 -21
  183. package/chronos/esm2022/units/quarter.mjs +0 -39
  184. package/chronos/esm2022/units/second.mjs +0 -23
  185. package/chronos/esm2022/units/timestamp.mjs +0 -28
  186. package/chronos/esm2022/units/timezone.mjs +0 -19
  187. package/chronos/esm2022/units/week-calendar-utils.mjs +0 -70
  188. package/chronos/esm2022/units/week-year.mjs +0 -101
  189. package/chronos/esm2022/units/week.mjs +0 -58
  190. package/chronos/esm2022/units/year.mjs +0 -60
  191. package/chronos/esm2022/utils/abs-ceil.mjs +0 -4
  192. package/chronos/esm2022/utils/abs-round.mjs +0 -4
  193. package/chronos/esm2022/utils/compare-arrays.mjs +0 -16
  194. package/chronos/esm2022/utils/date-compare.mjs +0 -55
  195. package/chronos/esm2022/utils/date-getters.mjs +0 -67
  196. package/chronos/esm2022/utils/date-setters.mjs +0 -75
  197. package/chronos/esm2022/utils/defaults.mjs +0 -11
  198. package/chronos/esm2022/utils/start-end-of.mjs +0 -57
  199. package/chronos/esm2022/utils/type-checks.mjs +0 -58
  200. package/chronos/esm2022/utils/zero-fill.mjs +0 -10
  201. package/chronos/esm2022/utils.mjs +0 -7
  202. package/collapse/esm2022/collapse-animations.mjs +0 -11
  203. package/collapse/esm2022/collapse.directive.mjs +0 -169
  204. package/collapse/esm2022/collapse.module.mjs +0 -23
  205. package/collapse/esm2022/index.mjs +0 -2
  206. package/collapse/esm2022/ngx-bootstrap-collapse.mjs +0 -5
  207. package/collapse/esm2022/public_api.mjs +0 -3
  208. package/component-loader/esm2022/bs-component-ref.class.mjs +0 -3
  209. package/component-loader/esm2022/component-loader.class.mjs +0 -292
  210. package/component-loader/esm2022/component-loader.factory.mjs +0 -35
  211. package/component-loader/esm2022/content-ref.class.mjs +0 -16
  212. package/component-loader/esm2022/index.mjs +0 -2
  213. package/component-loader/esm2022/listen-options.model.mjs +0 -2
  214. package/component-loader/esm2022/ngx-bootstrap-component-loader.mjs +0 -5
  215. package/component-loader/esm2022/public_api.mjs +0 -5
  216. package/datepicker/esm2022/base/bs-datepicker-container.mjs +0 -76
  217. package/datepicker/esm2022/bs-datepicker-inline.component.mjs +0 -163
  218. package/datepicker/esm2022/bs-datepicker-inline.config.mjs +0 -14
  219. package/datepicker/esm2022/bs-datepicker-input.directive.mjs +0 -172
  220. package/datepicker/esm2022/bs-datepicker.component.mjs +0 -307
  221. package/datepicker/esm2022/bs-datepicker.config.mjs +0 -101
  222. package/datepicker/esm2022/bs-datepicker.module.mjs +0 -105
  223. package/datepicker/esm2022/bs-daterangepicker-inline.component.mjs +0 -169
  224. package/datepicker/esm2022/bs-daterangepicker-inline.config.mjs +0 -21
  225. package/datepicker/esm2022/bs-daterangepicker-input.directive.mjs +0 -215
  226. package/datepicker/esm2022/bs-daterangepicker.component.mjs +0 -302
  227. package/datepicker/esm2022/bs-daterangepicker.config.mjs +0 -19
  228. package/datepicker/esm2022/bs-locale.service.mjs +0 -32
  229. package/datepicker/esm2022/datepicker-animations.mjs +0 -16
  230. package/datepicker/esm2022/engine/calc-days-calendar.mjs +0 -21
  231. package/datepicker/esm2022/engine/flag-days-calendar.mjs +0 -93
  232. package/datepicker/esm2022/engine/flag-months-calendar.mjs +0 -45
  233. package/datepicker/esm2022/engine/flag-years-calendar.mjs +0 -42
  234. package/datepicker/esm2022/engine/format-days-calendar.mjs +0 -33
  235. package/datepicker/esm2022/engine/format-months-calendar.mjs +0 -23
  236. package/datepicker/esm2022/engine/format-years-calendar.mjs +0 -39
  237. package/datepicker/esm2022/engine/view-mode.mjs +0 -4
  238. package/datepicker/esm2022/index.mjs +0 -2
  239. package/datepicker/esm2022/models/index.mjs +0 -9
  240. package/datepicker/esm2022/ngx-bootstrap-datepicker.mjs +0 -5
  241. package/datepicker/esm2022/public_api.mjs +0 -17
  242. package/datepicker/esm2022/reducer/_defaults.mjs +0 -6
  243. package/datepicker/esm2022/reducer/bs-datepicker.actions.mjs +0 -143
  244. package/datepicker/esm2022/reducer/bs-datepicker.effects.mjs +0 -182
  245. package/datepicker/esm2022/reducer/bs-datepicker.reducer.mjs +0 -378
  246. package/datepicker/esm2022/reducer/bs-datepicker.state.mjs +0 -18
  247. package/datepicker/esm2022/reducer/bs-datepicker.store.mjs +0 -22
  248. package/datepicker/esm2022/themes/bs/bs-calendar-layout.component.mjs +0 -49
  249. package/datepicker/esm2022/themes/bs/bs-current-date-view.component.mjs +0 -17
  250. package/datepicker/esm2022/themes/bs/bs-custom-dates-view.component.mjs +0 -55
  251. package/datepicker/esm2022/themes/bs/bs-datepicker-container.component.mjs +0 -199
  252. package/datepicker/esm2022/themes/bs/bs-datepicker-day-decorator.directive.mjs +0 -48
  253. package/datepicker/esm2022/themes/bs/bs-datepicker-inline-container.component.mjs +0 -49
  254. package/datepicker/esm2022/themes/bs/bs-datepicker-navigation-view.component.mjs +0 -125
  255. package/datepicker/esm2022/themes/bs/bs-daterangepicker-container.component.mjs +0 -275
  256. package/datepicker/esm2022/themes/bs/bs-daterangepicker-inline-container.component.mjs +0 -49
  257. package/datepicker/esm2022/themes/bs/bs-days-calendar-view.component.mjs +0 -233
  258. package/datepicker/esm2022/themes/bs/bs-months-calendar-view.component.mjs +0 -95
  259. package/datepicker/esm2022/themes/bs/bs-timepicker-view.component.mjs +0 -56
  260. package/datepicker/esm2022/themes/bs/bs-years-calendar-view.component.mjs +0 -96
  261. package/datepicker/esm2022/utils/bs-calendar-utils.mjs +0 -117
  262. package/datepicker/esm2022/utils/copy-time-utils.mjs +0 -10
  263. package/datepicker/esm2022/utils/matrix-utils.mjs +0 -14
  264. package/dropdown/esm2022/bs-dropdown-container.component.mjs +0 -81
  265. package/dropdown/esm2022/bs-dropdown-menu.directive.mjs +0 -23
  266. package/dropdown/esm2022/bs-dropdown-toggle.directive.mjs +0 -88
  267. package/dropdown/esm2022/bs-dropdown.config.mjs +0 -24
  268. package/dropdown/esm2022/bs-dropdown.directive.mjs +0 -343
  269. package/dropdown/esm2022/bs-dropdown.module.mjs +0 -40
  270. package/dropdown/esm2022/bs-dropdown.state.mjs +0 -25
  271. package/dropdown/esm2022/dropdown-animations.mjs +0 -7
  272. package/dropdown/esm2022/index.mjs +0 -2
  273. package/dropdown/esm2022/ngx-bootstrap-dropdown.mjs +0 -5
  274. package/dropdown/esm2022/public_api.mjs +0 -8
  275. package/esm2022/index.mjs +0 -2
  276. package/esm2022/ngx-bootstrap.mjs +0 -5
  277. package/focus-trap/esm2022/boolean-property.mjs +0 -12
  278. package/focus-trap/esm2022/focus-trap-manager.mjs +0 -54
  279. package/focus-trap/esm2022/focus-trap.mjs +0 -411
  280. package/focus-trap/esm2022/focus-trap.module.mjs +0 -24
  281. package/focus-trap/esm2022/index.mjs +0 -2
  282. package/focus-trap/esm2022/interactivity-checker.mjs +0 -241
  283. package/focus-trap/esm2022/ngx-bootstrap-focus-trap.mjs +0 -5
  284. package/focus-trap/esm2022/platform.mjs +0 -80
  285. package/focus-trap/esm2022/public_api.mjs +0 -4
  286. package/locale/esm2022/index.mjs +0 -2
  287. package/locale/esm2022/ngx-bootstrap-locale.mjs +0 -5
  288. package/locale/esm2022/public_api.mjs +0 -47
  289. package/mini-ngrx/esm2022/index.mjs +0 -2
  290. package/mini-ngrx/esm2022/ngx-bootstrap-mini-ngrx.mjs +0 -5
  291. package/mini-ngrx/esm2022/public_api.mjs +0 -3
  292. package/mini-ngrx/esm2022/state.class.mjs +0 -16
  293. package/mini-ngrx/esm2022/store.class.mjs +0 -42
  294. package/modal/esm2022/bs-modal-ref.service.mjs +0 -22
  295. package/modal/esm2022/bs-modal.service.mjs +0 -231
  296. package/modal/esm2022/index.mjs +0 -2
  297. package/modal/esm2022/modal-backdrop.component.mjs +0 -51
  298. package/modal/esm2022/modal-backdrop.options.mjs +0 -7
  299. package/modal/esm2022/modal-container.component.mjs +0 -156
  300. package/modal/esm2022/modal-options.class.mjs +0 -46
  301. package/modal/esm2022/modal.directive.mjs +0 -365
  302. package/modal/esm2022/modal.module.mjs +0 -44
  303. package/modal/esm2022/models/index.mjs +0 -2
  304. package/modal/esm2022/ngx-bootstrap-modal.mjs +0 -5
  305. package/modal/esm2022/public_api.mjs +0 -9
  306. package/pagination/esm2022/index.mjs +0 -2
  307. package/pagination/esm2022/models/index.mjs +0 -2
  308. package/pagination/esm2022/ngx-bootstrap-pagination.mjs +0 -5
  309. package/pagination/esm2022/pager.component.mjs +0 -256
  310. package/pagination/esm2022/pagination.component.mjs +0 -257
  311. package/pagination/esm2022/pagination.config.mjs +0 -35
  312. package/pagination/esm2022/pagination.module.mjs +0 -25
  313. package/pagination/esm2022/public_api.mjs +0 -5
  314. package/popover/esm2022/index.mjs +0 -2
  315. package/popover/esm2022/ngx-bootstrap-popover.mjs +0 -5
  316. package/popover/esm2022/popover-container.component.mjs +0 -45
  317. package/popover/esm2022/popover.config.mjs +0 -35
  318. package/popover/esm2022/popover.directive.mjs +0 -241
  319. package/popover/esm2022/popover.module.mjs +0 -25
  320. package/popover/esm2022/public_api.mjs +0 -5
  321. package/positioning/esm2022/index.mjs +0 -2
  322. package/positioning/esm2022/models/index.mjs +0 -53
  323. package/positioning/esm2022/modifiers/arrow.mjs +0 -56
  324. package/positioning/esm2022/modifiers/flip.mjs +0 -65
  325. package/positioning/esm2022/modifiers/index.mjs +0 -6
  326. package/positioning/esm2022/modifiers/initData.mjs +0 -44
  327. package/positioning/esm2022/modifiers/preventOverflow.mjs +0 -54
  328. package/positioning/esm2022/modifiers/shift.mjs +0 -24
  329. package/positioning/esm2022/ng-positioning.mjs +0 -39
  330. package/positioning/esm2022/ngx-bootstrap-positioning.mjs +0 -5
  331. package/positioning/esm2022/positioning.service.mjs +0 -71
  332. package/positioning/esm2022/public_api.mjs +0 -5
  333. package/positioning/esm2022/utils/checkMargin.mjs +0 -32
  334. package/positioning/esm2022/utils/computeAutoPlacement.mjs +0 -55
  335. package/positioning/esm2022/utils/findCommonOffsetParent.mjs +0 -40
  336. package/positioning/esm2022/utils/getBordersSize.mjs +0 -10
  337. package/positioning/esm2022/utils/getBoundaries.mjs +0 -70
  338. package/positioning/esm2022/utils/getBoundingClientRect.mjs +0 -56
  339. package/positioning/esm2022/utils/getClientRect.mjs +0 -8
  340. package/positioning/esm2022/utils/getFixedPositionOffsetParent.mjs +0 -16
  341. package/positioning/esm2022/utils/getOffsetParent.mjs +0 -33
  342. package/positioning/esm2022/utils/getOffsetRectRelativeToArbitraryNode.mjs +0 -50
  343. package/positioning/esm2022/utils/getOffsets.mjs +0 -11
  344. package/positioning/esm2022/utils/getOppositePlacement.mjs +0 -8
  345. package/positioning/esm2022/utils/getOppositeVariation.mjs +0 -13
  346. package/positioning/esm2022/utils/getOuterSizes.mjs +0 -12
  347. package/positioning/esm2022/utils/getParentNode.mjs +0 -12
  348. package/positioning/esm2022/utils/getReferenceOffsets.mjs +0 -13
  349. package/positioning/esm2022/utils/getRoot.mjs +0 -10
  350. package/positioning/esm2022/utils/getScroll.mjs +0 -14
  351. package/positioning/esm2022/utils/getScrollParent.mjs +0 -28
  352. package/positioning/esm2022/utils/getStyleComputedProperty.mjs +0 -12
  353. package/positioning/esm2022/utils/getTargetOffsets.mjs +0 -30
  354. package/positioning/esm2022/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +0 -19
  355. package/positioning/esm2022/utils/getWindowSizes.mjs +0 -14
  356. package/positioning/esm2022/utils/index.mjs +0 -24
  357. package/positioning/esm2022/utils/isFixed.mjs +0 -16
  358. package/positioning/esm2022/utils/isModifierEnabled.mjs +0 -4
  359. package/positioning/esm2022/utils/isNumeric.mjs +0 -10
  360. package/positioning/esm2022/utils/isOffsetContainer.mjs +0 -11
  361. package/positioning/esm2022/utils/setStyles.mjs +0 -21
  362. package/positioning/esm2022/utils/updateContainerClass.mjs +0 -32
  363. package/progressbar/esm2022/bar.component.mjs +0 -72
  364. package/progressbar/esm2022/index.mjs +0 -2
  365. package/progressbar/esm2022/ngx-bootstrap-progressbar.mjs +0 -5
  366. package/progressbar/esm2022/progressbar-type.interface.mjs +0 -2
  367. package/progressbar/esm2022/progressbar.component.mjs +0 -53
  368. package/progressbar/esm2022/progressbar.config.mjs +0 -19
  369. package/progressbar/esm2022/progressbar.module.mjs +0 -24
  370. package/progressbar/esm2022/public_api.mjs +0 -5
  371. package/rating/esm2022/index.mjs +0 -2
  372. package/rating/esm2022/models/index.mjs +0 -2
  373. package/rating/esm2022/ngx-bootstrap-rating.mjs +0 -5
  374. package/rating/esm2022/public_api.mjs +0 -4
  375. package/rating/esm2022/rating.component.mjs +0 -121
  376. package/rating/esm2022/rating.config.mjs +0 -18
  377. package/rating/esm2022/rating.module.mjs +0 -23
  378. package/sortable/esm2022/draggable-item.mjs +0 -2
  379. package/sortable/esm2022/draggable-item.service.mjs +0 -36
  380. package/sortable/esm2022/index.mjs +0 -2
  381. package/sortable/esm2022/ngx-bootstrap-sortable.mjs +0 -5
  382. package/sortable/esm2022/public_api.mjs +0 -4
  383. package/sortable/esm2022/sortable.component.mjs +0 -270
  384. package/sortable/esm2022/sortable.module.mjs +0 -23
  385. package/tabs/esm2022/index.mjs +0 -2
  386. package/tabs/esm2022/ng-transclude.directive.mjs +0 -29
  387. package/tabs/esm2022/ngx-bootstrap-tabs.mjs +0 -5
  388. package/tabs/esm2022/public_api.mjs +0 -7
  389. package/tabs/esm2022/tab-heading.directive.mjs +0 -21
  390. package/tabs/esm2022/tab.directive.mjs +0 -118
  391. package/tabs/esm2022/tabs.module.mjs +0 -41
  392. package/tabs/esm2022/tabset.component.mjs +0 -216
  393. package/tabs/esm2022/tabset.config.mjs +0 -21
  394. package/timepicker/esm2022/index.mjs +0 -2
  395. package/timepicker/esm2022/models/index.mjs +0 -2
  396. package/timepicker/esm2022/ngx-bootstrap-timepicker.mjs +0 -5
  397. package/timepicker/esm2022/public_api.mjs +0 -6
  398. package/timepicker/esm2022/reducer/timepicker.actions.mjs +0 -53
  399. package/timepicker/esm2022/reducer/timepicker.reducer.mjs +0 -83
  400. package/timepicker/esm2022/reducer/timepicker.store.mjs +0 -21
  401. package/timepicker/esm2022/timepicker-controls.util.mjs +0 -123
  402. package/timepicker/esm2022/timepicker.component.mjs +0 -334
  403. package/timepicker/esm2022/timepicker.config.mjs +0 -54
  404. package/timepicker/esm2022/timepicker.models.mjs +0 -2
  405. package/timepicker/esm2022/timepicker.module.mjs +0 -23
  406. package/timepicker/esm2022/timepicker.utils.mjs +0 -152
  407. package/tooltip/esm2022/index.mjs +0 -2
  408. package/tooltip/esm2022/ngx-bootstrap-tooltip.mjs +0 -5
  409. package/tooltip/esm2022/public_api.mjs +0 -5
  410. package/tooltip/esm2022/tooltip-container.component.mjs +0 -48
  411. package/tooltip/esm2022/tooltip.config.mjs +0 -22
  412. package/tooltip/esm2022/tooltip.directive.mjs +0 -344
  413. package/tooltip/esm2022/tooltip.module.mjs +0 -25
  414. package/typeahead/esm2022/index.mjs +0 -2
  415. package/typeahead/esm2022/latin-map.mjs +0 -827
  416. package/typeahead/esm2022/models/index.mjs +0 -2
  417. package/typeahead/esm2022/ngx-bootstrap-typeahead.mjs +0 -5
  418. package/typeahead/esm2022/public_api.mjs +0 -9
  419. package/typeahead/esm2022/typeahead-animations.mjs +0 -16
  420. package/typeahead/esm2022/typeahead-container.component.mjs +0 -310
  421. package/typeahead/esm2022/typeahead-match.class.mjs +0 -15
  422. package/typeahead/esm2022/typeahead-options.class.mjs +0 -8
  423. package/typeahead/esm2022/typeahead-order.class.mjs +0 -2
  424. package/typeahead/esm2022/typeahead-utils.mjs +0 -77
  425. package/typeahead/esm2022/typeahead.config.mjs +0 -34
  426. package/typeahead/esm2022/typeahead.directive.mjs +0 -573
  427. package/typeahead/esm2022/typeahead.module.mjs +0 -25
  428. package/utils/esm2022/decorators.mjs +0 -23
  429. package/utils/esm2022/facade/browser.mjs +0 -26
  430. package/utils/esm2022/index.mjs +0 -2
  431. package/utils/esm2022/linked-list.class.mjs +0 -247
  432. package/utils/esm2022/ngx-bootstrap-utils.mjs +0 -5
  433. package/utils/esm2022/public_api.mjs +0 -10
  434. package/utils/esm2022/theme-provider.mjs +0 -48
  435. package/utils/esm2022/trigger.class.mjs +0 -14
  436. package/utils/esm2022/triggers.mjs +0 -120
  437. package/utils/esm2022/utils.class.mjs +0 -30
  438. 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,172 +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 this._picker.ignoreMinMaxErrors ? null : { 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 this._picker.ignoreMinMaxErrors ? null : { 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
- }
127
- setDisabledState(isDisabled) {
128
- this._picker.isDisabled = isDisabled;
129
- if (isDisabled) {
130
- this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');
131
- return;
132
- }
133
- this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');
134
- }
135
- registerOnChange(fn) {
136
- this._onChange = fn;
137
- }
138
- registerOnTouched(fn) {
139
- this._onTouched = fn;
140
- }
141
- 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 }); }
142
- 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: [
143
- BS_DATEPICKER_VALUE_ACCESSOR,
144
- BS_DATEPICKER_VALIDATOR
145
- ], ngImport: i0 }); }
146
- }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDatepickerInputDirective, decorators: [{
148
- type: Directive,
149
- args: [{
150
- selector: `input[bsDatepicker]`,
151
- providers: [
152
- BS_DATEPICKER_VALUE_ACCESSOR,
153
- BS_DATEPICKER_VALIDATOR
154
- ],
155
- standalone: true
156
- }]
157
- }], ctorParameters: () => [{ type: i1.BsDatepickerDirective, decorators: [{
158
- type: Host
159
- }] }, { type: i2.BsLocaleService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { onChange: [{
160
- type: HostListener,
161
- args: ['change', ['$event']]
162
- }], onBlur: [{
163
- type: HostListener,
164
- args: ['blur']
165
- }], hide: [{
166
- type: HostListener,
167
- args: ['keyup.esc']
168
- }, {
169
- type: HostListener,
170
- args: ['keydown.enter']
171
- }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9icy1kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBSVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0RCxNQUFNLDRCQUE0QixHQUFhO0lBQzdDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLHVCQUF1QixHQUFhO0lBQ3hDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDekQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLDBCQUEwQjtJQU9y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O0lBRUQsZ0JBQWdCLENBQUMsRUFBYztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDOzhHQTVKVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrTEFOeEI7WUFDVCw0QkFBNEI7WUFDNUIsdUJBQXVCO1NBQ3hCOzsyRkFHUSwwQkFBMEI7a0JBUnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsU0FBUyxFQUFFO3dCQUNULDRCQUE0Qjt3QkFDNUIsdUJBQXVCO3FCQUN4QjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQVNJLElBQUk7d0pBUVAsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZbEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU07Z0JBT3BCLElBQUk7c0JBRkgsWUFBWTt1QkFBQyxXQUFXOztzQkFDeEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUHJvdmlkZXIsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIGZvcm1hdERhdGUsXG4gIGdldExvY2FsZSxcbiAgaXNBZnRlcixcbiAgaXNCZWZvcmUsXG4gIGlzRGF0ZSxcbiAgaXNEYXRlVmFsaWQsXG4gIHBhcnNlRGF0ZSxcbiAgdXRjQXNMb2NhbFxufSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL2JzLWRhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJzTG9jYWxlU2VydmljZSB9IGZyb20gJy4vYnMtbG9jYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgQlNfREFURVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCc0RhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5jb25zdCBCU19EQVRFUElDS0VSX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJzRGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBgaW5wdXRbYnNEYXRlcGlja2VyXWAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICBCU19EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgQlNfREFURVBJQ0tFUl9WQUxJREFUT1JcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQnNEYXRlcGlja2VySW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX29uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgcHJpdmF0ZSBfdmFsdWU/OiBEYXRlO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgcHJpdmF0ZSBfcGlja2VyOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBfbG9jYWxlU2VydmljZTogQnNMb2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBvbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMud3JpdGVWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIGFueSkudmFsdWUpO1xuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICBpZiAodGhpcy5fcGlja2VyLl9jb25maWcucmV0dXJuRm9jdXNUb0lucHV0KSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50KS5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lc2MnKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgaGlkZSgpIHtcbiAgICB0aGlzLl9waWNrZXIuaGlkZSgpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpLmJsdXIoKTtcbiAgICBpZiAodGhpcy5fcGlja2VyLl9jb25maWcucmV0dXJuRm9jdXNUb0lucHV0KSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50KS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHNldEJzVmFsdWUgPSAodmFsdWU6IERhdGUpID0+IHtcbiAgICAgIHRoaXMuX3NldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIC8vIGlmIHZhbHVlIHNldCB2aWEgW2JzVmFsdWVdIGl0IHdpbGwgbm90IGdldCBpbnRvIHZhbHVlIGNoYW5nZVxuICAgIGlmICh0aGlzLl9waWNrZXIuX2JzVmFsdWUpIHtcbiAgICAgIHNldEJzVmFsdWUodGhpcy5fcGlja2VyLl9ic1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgaW5wdXQgdmFsdWUgb24gZGF0ZXBpY2tlciB2YWx1ZSB1cGRhdGVcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLl9waWNrZXIuYnNWYWx1ZUNoYW5nZS5zdWJzY3JpYmUoc2V0QnNWYWx1ZSkpO1xuXG4gICAgLy8gdXBkYXRlIGlucHV0IHZhbHVlIG9uIGxvY2FsZSBjaGFuZ2VcbiAgICB0aGlzLl9zdWJzLmFkZChcbiAgICAgIHRoaXMuX2xvY2FsZVNlcnZpY2UubG9jYWxlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldElucHV0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vicy5hZGQoXG4gICAgICB0aGlzLl9waWNrZXIuZGF0ZUlucHV0Rm9ybWF0JC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldElucHV0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgX3NldElucHV0VmFsdWUodmFsdWU/OiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgaW5pdGlhbERhdGUgPSAhdmFsdWVcbiAgICAgID8gJydcbiAgICAgIDogZm9ybWF0RGF0ZSh2YWx1ZSwgdGhpcy5fcGlja2VyLl9jb25maWcuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLl9sb2NhbGVTZXJ2aWNlLmN1cnJlbnRMb2NhbGUpO1xuXG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgaW5pdGlhbERhdGUpO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IF92YWx1ZTogRGF0ZSB8IHN0cmluZyA9IGMudmFsdWU7XG5cbiAgICBpZiAoX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IF92YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc0RhdGUoX3ZhbHVlKSkge1xuICAgICAgY29uc3QgX2lzRGF0ZVZhbGlkID0gaXNEYXRlVmFsaWQoX3ZhbHVlKTtcbiAgICAgIGlmICghX2lzRGF0ZVZhbGlkKSB7XG4gICAgICAgIHJldHVybiB7IGJzRGF0ZTogeyBpbnZhbGlkOiBfdmFsdWUgfSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcGlja2VyICYmIHRoaXMuX3BpY2tlci5taW5EYXRlICYmIGlzQmVmb3JlKF92YWx1ZSwgdGhpcy5fcGlja2VyLm1pbkRhdGUsICdkYXRlJykpIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3BpY2tlci5taW5EYXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcGlja2VyLmlnbm9yZU1pbk1heEVycm9ycyA/IG51bGwgOiB7IGJzRGF0ZTogeyBtaW5EYXRlOiB0aGlzLl9waWNrZXIubWluRGF0ZSB9IH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9waWNrZXIgJiYgdGhpcy5fcGlja2VyLm1heERhdGUgJiYgaXNBZnRlcihfdmFsdWUsIHRoaXMuX3BpY2tlci5tYXhEYXRlLCAnZGF0ZScpKSB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl9waWNrZXIubWF4RGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3BpY2tlci5pZ25vcmVNaW5NYXhFcnJvcnMgPyBudWxsIDogeyBic0RhdGU6IHsgbWF4RGF0ZTogdGhpcy5fcGlja2VyLm1heERhdGUgfSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdm9pZCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfbG9jYWxlS2V5ID0gdGhpcy5fbG9jYWxlU2VydmljZS5jdXJyZW50TG9jYWxlO1xuICAgICAgY29uc3QgX2xvY2FsZSA9IGdldExvY2FsZShfbG9jYWxlS2V5KTtcbiAgICAgIGlmICghX2xvY2FsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsZSBcIiR7X2xvY2FsZUtleX1cIiBpcyBub3QgZGVmaW5lZCwgcGxlYXNlIGFkZCBpdCB3aXRoIFwiZGVmaW5lTG9jYWxlKC4uLilcImApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl92YWx1ZSA9IHBhcnNlRGF0ZSh2YWx1ZSwgdGhpcy5fcGlja2VyLl9jb25maWcuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLl9sb2NhbGVTZXJ2aWNlLmN1cnJlbnRMb2NhbGUpO1xuXG4gICAgICBpZiAodGhpcy5fcGlja2VyLl9jb25maWcudXNlVXRjKSB7XG4gICAgICAgIGNvbnN0IHV0Y1ZhbHVlID0gdXRjQXNMb2NhbCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdXRjVmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiB1dGNWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9waWNrZXIuYnNWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fcGlja2VyLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG59XG4iXX0=