ngx-bootstrap 5.6.1 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +8 -1
  3. package/accordion/accordion-group.component.d.ts +3 -2
  4. package/accordion/accordion.module.d.ts +1 -1
  5. package/accordion/bundles/ngx-bootstrap-accordion.umd.js +5 -2
  6. package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -1
  7. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +1 -1
  8. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -1
  9. package/accordion/esm2015/accordion.config.js +6 -2
  10. package/accordion/esm2015/accordion.module.js +2 -3
  11. package/accordion/esm5/accordion.config.js +6 -2
  12. package/accordion/esm5/accordion.module.js +2 -3
  13. package/accordion/fesm2015/ngx-bootstrap-accordion.js +6 -3
  14. package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -1
  15. package/accordion/fesm5/ngx-bootstrap-accordion.js +6 -3
  16. package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -1
  17. package/accordion/ngx-bootstrap-accordion.metadata.json +1 -1
  18. package/accordion/package.json +2 -2
  19. package/alert/alert.module.d.ts +1 -1
  20. package/alert/bundles/ngx-bootstrap-alert.umd.js +5 -2
  21. package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -1
  22. package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -2
  23. package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -1
  24. package/alert/esm2015/alert.component.js +3 -3
  25. package/alert/esm2015/alert.config.js +6 -2
  26. package/alert/esm2015/alert.module.js +2 -3
  27. package/alert/esm5/alert.component.js +3 -3
  28. package/alert/esm5/alert.config.js +6 -2
  29. package/alert/esm5/alert.module.js +2 -3
  30. package/alert/fesm2015/ngx-bootstrap-alert.js +6 -3
  31. package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -1
  32. package/alert/fesm5/ngx-bootstrap-alert.js +6 -3
  33. package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -1
  34. package/alert/ngx-bootstrap-alert.metadata.json +1 -1
  35. package/alert/package.json +2 -2
  36. package/buttons/bundles/ngx-bootstrap-buttons.umd.js +293 -16
  37. package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -1
  38. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +1 -1
  39. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -1
  40. package/buttons/button-checkbox.directive.d.ts +2 -2
  41. package/buttons/button-radio-group.directive.d.ts +12 -1
  42. package/buttons/button-radio.directive.d.ts +19 -7
  43. package/buttons/buttons.module.d.ts +1 -1
  44. package/buttons/esm2015/button-radio-group.directive.js +140 -3
  45. package/buttons/esm2015/button-radio.directive.js +98 -18
  46. package/buttons/esm2015/buttons.module.js +1 -1
  47. package/buttons/esm5/button-radio-group.directive.js +171 -3
  48. package/buttons/esm5/button-radio.directive.js +126 -17
  49. package/buttons/esm5/buttons.module.js +1 -1
  50. package/buttons/fesm2015/ngx-bootstrap-buttons.js +235 -18
  51. package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -1
  52. package/buttons/fesm5/ngx-bootstrap-buttons.js +294 -17
  53. package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -1
  54. package/buttons/ngx-bootstrap-buttons.metadata.json +1 -1
  55. package/buttons/package.json +2 -2
  56. package/carousel/bundles/ngx-bootstrap-carousel.umd.js +5 -3
  57. package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -1
  58. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +1 -1
  59. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -1
  60. package/carousel/carousel.component.d.ts +7 -5
  61. package/carousel/carousel.module.d.ts +1 -1
  62. package/carousel/esm2015/carousel.config.js +6 -2
  63. package/carousel/esm2015/carousel.module.js +2 -4
  64. package/carousel/esm5/carousel.component.js +4 -4
  65. package/carousel/esm5/carousel.config.js +6 -2
  66. package/carousel/esm5/carousel.module.js +2 -4
  67. package/carousel/fesm2015/ngx-bootstrap-carousel.js +6 -4
  68. package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -1
  69. package/carousel/fesm5/ngx-bootstrap-carousel.js +6 -4
  70. package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -1
  71. package/carousel/ngx-bootstrap-carousel.metadata.json +1 -1
  72. package/carousel/package.json +2 -2
  73. package/chronos/bundles/ngx-bootstrap-chronos.umd.js +90 -73
  74. package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
  75. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +69 -1
  76. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
  77. package/chronos/esm2015/create/from-anything.js +2 -2
  78. package/chronos/esm2015/duration/valid.js +4 -6
  79. package/chronos/esm2015/i18n/ar.js +1 -4
  80. package/chronos/esm2015/i18n/bg.js +18 -20
  81. package/chronos/esm2015/i18n/cs.js +45 -47
  82. package/chronos/esm2015/i18n/et.js +1 -3
  83. package/chronos/esm2015/i18n/th-be.js +21 -1
  84. package/chronos/esm2015/locale/locale.class.js +5 -3
  85. package/chronos/esm5/create/from-anything.js +2 -2
  86. package/chronos/esm5/duration/valid.js +4 -6
  87. package/chronos/esm5/i18n/ar.js +1 -4
  88. package/chronos/esm5/i18n/bg.js +18 -20
  89. package/chronos/esm5/i18n/cs.js +45 -47
  90. package/chronos/esm5/i18n/et.js +1 -3
  91. package/chronos/esm5/i18n/th-be.js +21 -1
  92. package/chronos/esm5/locale/locale.class.js +6 -3
  93. package/chronos/esm5/test/chain.js +4 -4
  94. package/chronos/fesm2015/ngx-bootstrap-chronos.js +89 -73
  95. package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
  96. package/chronos/fesm5/ngx-bootstrap-chronos.js +90 -73
  97. package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
  98. package/chronos/locale/locale.class.d.ts +4 -3
  99. package/chronos/package.json +2 -2
  100. package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -1
  101. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -1
  102. package/collapse/collapse.directive.d.ts +3 -2
  103. package/collapse/collapse.module.d.ts +1 -1
  104. package/collapse/esm2015/collapse.module.js +1 -1
  105. package/collapse/esm5/collapse.module.js +1 -1
  106. package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -1
  107. package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -1
  108. package/collapse/package.json +2 -2
  109. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +5 -4
  110. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
  111. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
  112. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
  113. package/component-loader/component-loader.class.d.ts +4 -3
  114. package/component-loader/esm2015/component-loader.class.js +5 -5
  115. package/component-loader/esm5/component-loader.class.js +6 -5
  116. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +4 -4
  117. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
  118. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +5 -4
  119. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
  120. package/component-loader/package.json +2 -2
  121. package/datepicker/base/bs-datepicker-container.d.ts +20 -8
  122. package/datepicker/bs-datepicker-inline.component.d.ts +6 -2
  123. package/datepicker/bs-datepicker.component.d.ts +14 -5
  124. package/datepicker/bs-datepicker.config.d.ts +41 -1
  125. package/datepicker/bs-datepicker.css +126 -5
  126. package/datepicker/bs-datepicker.css.map +4 -4
  127. package/datepicker/bs-datepicker.module.d.ts +1 -1
  128. package/datepicker/bs-datepicker.scss +25 -5
  129. package/datepicker/bs-daterangepicker-inline.component.d.ts +1 -1
  130. package/datepicker/bs-daterangepicker.component.d.ts +9 -4
  131. package/datepicker/bs-locale.service.d.ts +3 -3
  132. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +604 -93
  133. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
  134. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -2
  135. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
  136. package/datepicker/datepicker-inner.component.d.ts +2 -1
  137. package/datepicker/datepicker.component.d.ts +2 -1
  138. package/datepicker/datepicker.module.d.ts +1 -1
  139. package/datepicker/daypicker.component.d.ts +1 -1
  140. package/datepicker/engine/flag-days-calendar.d.ts +2 -1
  141. package/datepicker/engine/flag-months-calendar.d.ts +1 -0
  142. package/datepicker/engine/flag-years-calendar.d.ts +1 -0
  143. package/datepicker/esm2015/base/bs-datepicker-container.js +38 -1
  144. package/datepicker/esm2015/bs-datepicker-inline.component.js +12 -1
  145. package/datepicker/esm2015/bs-datepicker-inline.config.js +6 -2
  146. package/datepicker/esm2015/bs-datepicker-input.directive.js +9 -1
  147. package/datepicker/esm2015/bs-datepicker.component.js +45 -6
  148. package/datepicker/esm2015/bs-datepicker.config.js +88 -2
  149. package/datepicker/esm2015/bs-datepicker.module.js +3 -10
  150. package/datepicker/esm2015/bs-daterangepicker-inline.component.js +3 -2
  151. package/datepicker/esm2015/bs-daterangepicker-inline.config.js +6 -2
  152. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +11 -3
  153. package/datepicker/esm2015/bs-daterangepicker.component.js +36 -7
  154. package/datepicker/esm2015/bs-daterangepicker.config.js +6 -2
  155. package/datepicker/esm2015/datepicker.config.js +6 -2
  156. package/datepicker/esm2015/datepicker.module.js +1 -1
  157. package/datepicker/esm2015/engine/flag-days-calendar.js +22 -3
  158. package/datepicker/esm2015/engine/flag-months-calendar.js +14 -3
  159. package/datepicker/esm2015/engine/flag-years-calendar.js +14 -3
  160. package/datepicker/esm2015/models/index.js +13 -1
  161. package/datepicker/esm2015/public_api.js +1 -1
  162. package/datepicker/esm2015/reducer/bs-datepicker.actions.js +14 -1
  163. package/datepicker/esm2015/reducer/bs-datepicker.effects.js +27 -33
  164. package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +10 -2
  165. package/datepicker/esm2015/reducer/bs-datepicker.state.js +3 -1
  166. package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +5 -2
  167. package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +57 -5
  168. package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +2 -2
  169. package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +73 -4
  170. package/datepicker/esm2015/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
  171. package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +42 -4
  172. package/datepicker/esm5/base/bs-datepicker-container.js +52 -1
  173. package/datepicker/esm5/bs-datepicker-inline.component.js +12 -1
  174. package/datepicker/esm5/bs-datepicker-inline.config.js +8 -4
  175. package/datepicker/esm5/bs-datepicker-input.directive.js +9 -1
  176. package/datepicker/esm5/bs-datepicker.component.js +58 -8
  177. package/datepicker/esm5/bs-datepicker.config.js +88 -2
  178. package/datepicker/esm5/bs-datepicker.module.js +3 -10
  179. package/datepicker/esm5/bs-daterangepicker-inline.component.js +3 -2
  180. package/datepicker/esm5/bs-daterangepicker-inline.config.js +8 -4
  181. package/datepicker/esm5/bs-daterangepicker-input.directive.js +11 -3
  182. package/datepicker/esm5/bs-daterangepicker.component.js +49 -9
  183. package/datepicker/esm5/bs-daterangepicker.config.js +8 -4
  184. package/datepicker/esm5/datepicker.config.js +6 -2
  185. package/datepicker/esm5/datepicker.module.js +1 -1
  186. package/datepicker/esm5/engine/flag-days-calendar.js +22 -3
  187. package/datepicker/esm5/engine/flag-months-calendar.js +14 -3
  188. package/datepicker/esm5/engine/flag-years-calendar.js +14 -3
  189. package/datepicker/esm5/engine/format-days-calendar.js +3 -3
  190. package/datepicker/esm5/models/index.js +13 -1
  191. package/datepicker/esm5/public_api.js +1 -1
  192. package/datepicker/esm5/reducer/bs-datepicker.actions.js +18 -1
  193. package/datepicker/esm5/reducer/bs-datepicker.effects.js +33 -35
  194. package/datepicker/esm5/reducer/bs-datepicker.reducer.js +10 -2
  195. package/datepicker/esm5/reducer/bs-datepicker.state.js +3 -1
  196. package/datepicker/esm5/reducer/bs-datepicker.store.js +3 -3
  197. package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +5 -2
  198. package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +74 -8
  199. package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +4 -4
  200. package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +92 -7
  201. package/datepicker/esm5/themes/bs/bs-daterangepicker-inline-container.component.js +4 -4
  202. package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +25 -2
  203. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +549 -96
  204. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
  205. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +606 -94
  206. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
  207. package/datepicker/models/index.d.ts +5 -0
  208. package/datepicker/monthpicker.component.d.ts +1 -1
  209. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
  210. package/datepicker/package.json +2 -2
  211. package/datepicker/public_api.d.ts +1 -1
  212. package/datepicker/reducer/bs-datepicker.actions.d.ts +3 -1
  213. package/datepicker/reducer/bs-datepicker.effects.d.ts +2 -1
  214. package/datepicker/reducer/bs-datepicker.state.d.ts +2 -1
  215. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -0
  216. package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +9 -5
  217. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +9 -5
  218. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +2 -0
  219. package/datepicker/utils/scss/mixins.css.map +2 -2
  220. package/datepicker/utils/scss/mixins.scss +98 -0
  221. package/datepicker/utils/scss/variables.css.map +1 -1
  222. package/datepicker/utils/scss/variables.scss +14 -0
  223. package/datepicker/yearpicker.component.d.ts +1 -1
  224. package/dropdown/bs-dropdown-container.component.d.ts +1 -1
  225. package/dropdown/bs-dropdown.directive.d.ts +12 -7
  226. package/dropdown/bs-dropdown.module.d.ts +1 -1
  227. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +13 -8
  228. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
  229. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +1 -1
  230. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
  231. package/dropdown/esm2015/bs-dropdown.config.js +6 -2
  232. package/dropdown/esm2015/bs-dropdown.directive.js +8 -3
  233. package/dropdown/esm2015/bs-dropdown.module.js +2 -7
  234. package/dropdown/esm5/bs-dropdown-toggle.directive.js +3 -3
  235. package/dropdown/esm5/bs-dropdown.config.js +6 -2
  236. package/dropdown/esm5/bs-dropdown.directive.js +11 -5
  237. package/dropdown/esm5/bs-dropdown.module.js +2 -7
  238. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +13 -9
  239. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
  240. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +14 -9
  241. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
  242. package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
  243. package/dropdown/package.json +2 -2
  244. package/locale/package.json +2 -2
  245. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -1
  246. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -1
  247. package/mini-ngrx/esm5/state.class.js +3 -3
  248. package/mini-ngrx/esm5/store.class.js +3 -3
  249. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -1
  250. package/mini-ngrx/package.json +2 -2
  251. package/modal/bs-modal-ref.service.d.ts +15 -2
  252. package/modal/bs-modal.service.d.ts +7 -4
  253. package/modal/bundles/ngx-bootstrap-modal.umd.js +154 -59
  254. package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
  255. package/modal/bundles/ngx-bootstrap-modal.umd.min.js +1 -1
  256. package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
  257. package/modal/esm2015/bs-modal-ref.service.js +20 -1
  258. package/modal/esm2015/bs-modal.service.js +102 -47
  259. package/modal/esm2015/modal-container.component.js +10 -2
  260. package/modal/esm2015/modal-options.class.js +14 -3
  261. package/modal/esm2015/modal.directive.js +10 -7
  262. package/modal/esm2015/modal.module.js +1 -1
  263. package/modal/esm2015/models/index.js +3 -1
  264. package/modal/esm2015/ngx-bootstrap-modal.js +2 -2
  265. package/modal/esm2015/public_api.js +2 -2
  266. package/modal/esm5/bs-modal-ref.service.js +19 -1
  267. package/modal/esm5/bs-modal.service.js +109 -57
  268. package/modal/esm5/modal-container.component.js +13 -2
  269. package/modal/esm5/modal-options.class.js +14 -3
  270. package/modal/esm5/modal.directive.js +9 -7
  271. package/modal/esm5/modal.module.js +1 -1
  272. package/modal/esm5/models/index.js +3 -1
  273. package/modal/esm5/ngx-bootstrap-modal.js +2 -2
  274. package/modal/esm5/public_api.js +2 -2
  275. package/modal/fesm2015/ngx-bootstrap-modal.js +148 -52
  276. package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
  277. package/modal/fesm5/ngx-bootstrap-modal.js +155 -61
  278. package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
  279. package/modal/modal-backdrop.component.d.ts +4 -2
  280. package/modal/modal-container.component.d.ts +1 -0
  281. package/modal/modal-options.class.d.ts +8 -3
  282. package/modal/modal.directive.d.ts +5 -4
  283. package/modal/modal.module.d.ts +2 -2
  284. package/modal/models/index.d.ts +1 -0
  285. package/modal/ngx-bootstrap-modal.metadata.json +1 -1
  286. package/modal/package.json +2 -2
  287. package/modal/public_api.d.ts +1 -1
  288. package/package.json +2 -2
  289. package/pagination/bundles/ngx-bootstrap-pagination.umd.js +5 -2
  290. package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -1
  291. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +1 -1
  292. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -1
  293. package/pagination/esm2015/pagination.config.js +6 -2
  294. package/pagination/esm2015/pagination.module.js +2 -3
  295. package/pagination/esm5/pagination.config.js +6 -2
  296. package/pagination/esm5/pagination.module.js +2 -3
  297. package/pagination/fesm2015/ngx-bootstrap-pagination.js +6 -3
  298. package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -1
  299. package/pagination/fesm5/ngx-bootstrap-pagination.js +6 -3
  300. package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -1
  301. package/pagination/ngx-bootstrap-pagination.metadata.json +1 -1
  302. package/pagination/package.json +2 -2
  303. package/pagination/pager.component.d.ts +8 -4
  304. package/pagination/pagination.component.d.ts +8 -4
  305. package/pagination/pagination.module.d.ts +1 -1
  306. package/popover/bundles/ngx-bootstrap-popover.umd.js +55 -3
  307. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
  308. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
  309. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
  310. package/popover/esm2015/popover-container.component.js +4 -1
  311. package/popover/esm2015/popover.config.js +6 -2
  312. package/popover/esm2015/popover.directive.js +39 -2
  313. package/popover/esm2015/popover.module.js +2 -3
  314. package/popover/esm5/popover-container.component.js +4 -1
  315. package/popover/esm5/popover.config.js +6 -2
  316. package/popover/esm5/popover.directive.js +48 -2
  317. package/popover/esm5/popover.module.js +2 -3
  318. package/popover/fesm2015/ngx-bootstrap-popover.js +47 -4
  319. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
  320. package/popover/fesm5/ngx-bootstrap-popover.js +56 -4
  321. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
  322. package/popover/ngx-bootstrap-popover.metadata.json +1 -1
  323. package/popover/package.json +2 -2
  324. package/popover/popover-container.component.d.ts +2 -1
  325. package/popover/popover.directive.d.ts +10 -1
  326. package/popover/popover.module.d.ts +1 -1
  327. package/positioning/bundles/ngx-bootstrap-positioning.umd.js +7 -7
  328. package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
  329. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +1 -1
  330. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
  331. package/positioning/esm2015/modifiers/flip.js +3 -3
  332. package/positioning/esm2015/modifiers/preventOverflow.js +2 -2
  333. package/positioning/esm2015/modifiers/shift.js +2 -2
  334. package/positioning/esm2015/utils/computeAutoPlacement.js +2 -2
  335. package/positioning/esm2015/utils/getClientRect.js +2 -2
  336. package/positioning/esm5/modifiers/flip.js +4 -4
  337. package/positioning/esm5/modifiers/preventOverflow.js +4 -4
  338. package/positioning/esm5/modifiers/shift.js +3 -3
  339. package/positioning/esm5/utils/computeAutoPlacement.js +3 -3
  340. package/positioning/esm5/utils/getClientRect.js +3 -3
  341. package/positioning/fesm2015/ngx-bootstrap-positioning.js +6 -6
  342. package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
  343. package/positioning/fesm5/ngx-bootstrap-positioning.js +7 -7
  344. package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
  345. package/positioning/package.json +2 -2
  346. package/positioning/positioning.service.d.ts +1 -1
  347. package/progressbar/bar.component.d.ts +4 -5
  348. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +45 -66
  349. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -1
  350. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +1 -1
  351. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -1
  352. package/progressbar/esm2015/bar.component.js +33 -48
  353. package/progressbar/esm2015/progressbar.component.js +5 -8
  354. package/progressbar/esm2015/progressbar.config.js +6 -2
  355. package/progressbar/esm2015/progressbar.module.js +2 -3
  356. package/progressbar/esm5/bar.component.js +37 -58
  357. package/progressbar/esm5/progressbar.component.js +5 -8
  358. package/progressbar/esm5/progressbar.config.js +6 -2
  359. package/progressbar/esm5/progressbar.module.js +2 -3
  360. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +42 -57
  361. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -1
  362. package/progressbar/fesm5/ngx-bootstrap-progressbar.js +46 -67
  363. package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -1
  364. package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -1
  365. package/progressbar/package.json +2 -2
  366. package/progressbar/progressbar.component.d.ts +7 -6
  367. package/progressbar/progressbar.module.d.ts +1 -1
  368. package/rating/bundles/ngx-bootstrap-rating.umd.js +5 -2
  369. package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
  370. package/rating/bundles/ngx-bootstrap-rating.umd.min.js +1 -1
  371. package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
  372. package/rating/esm2015/rating.config.js +6 -2
  373. package/rating/esm2015/rating.module.js +2 -3
  374. package/rating/esm5/rating.config.js +6 -2
  375. package/rating/esm5/rating.module.js +2 -3
  376. package/rating/fesm2015/ngx-bootstrap-rating.js +6 -3
  377. package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
  378. package/rating/fesm5/ngx-bootstrap-rating.js +6 -3
  379. package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
  380. package/rating/ngx-bootstrap-rating.metadata.json +1 -1
  381. package/rating/package.json +2 -2
  382. package/rating/rating.module.d.ts +1 -1
  383. package/schematics/ng-add/index.spec.js +30 -27
  384. package/schematics/ng-add/index.spec.js.map +1 -1
  385. package/schematics/utils/index.js +18 -5
  386. package/schematics/utils/index.js.map +1 -1
  387. package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -1
  388. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -1
  389. package/sortable/esm2015/sortable.module.js +1 -1
  390. package/sortable/esm5/sortable.component.js +4 -4
  391. package/sortable/esm5/sortable.module.js +1 -1
  392. package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -1
  393. package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -1
  394. package/sortable/package.json +2 -2
  395. package/sortable/sortable.component.d.ts +2 -1
  396. package/sortable/sortable.module.d.ts +1 -1
  397. package/tabs/bundles/ngx-bootstrap-tabs.umd.js +40 -3
  398. package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -1
  399. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +1 -1
  400. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -1
  401. package/tabs/esm2015/tab.directive.js +2 -2
  402. package/tabs/esm2015/tabs.module.js +2 -3
  403. package/tabs/esm2015/tabset.component.js +22 -1
  404. package/tabs/esm2015/tabset.config.js +15 -2
  405. package/tabs/esm5/tab.directive.js +2 -2
  406. package/tabs/esm5/tabs.module.js +2 -3
  407. package/tabs/esm5/tabset.component.js +26 -1
  408. package/tabs/esm5/tabset.config.js +15 -2
  409. package/tabs/fesm2015/ngx-bootstrap-tabs.js +37 -4
  410. package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -1
  411. package/tabs/fesm5/ngx-bootstrap-tabs.js +41 -4
  412. package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -1
  413. package/tabs/ng-transclude.directive.d.ts +2 -2
  414. package/tabs/ngx-bootstrap-tabs.metadata.json +1 -1
  415. package/tabs/package.json +2 -2
  416. package/tabs/tab.directive.d.ts +5 -3
  417. package/tabs/tabs.module.d.ts +1 -1
  418. package/tabs/tabset.component.d.ts +9 -3
  419. package/tabs/tabset.config.d.ts +2 -0
  420. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +11 -6
  421. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
  422. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +1 -1
  423. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
  424. package/timepicker/esm2015/timepicker-controls.util.js +4 -2
  425. package/timepicker/esm2015/timepicker.component.js +2 -2
  426. package/timepicker/esm2015/timepicker.config.js +8 -4
  427. package/timepicker/esm2015/timepicker.module.js +2 -3
  428. package/timepicker/esm5/reducer/timepicker.store.js +3 -3
  429. package/timepicker/esm5/timepicker-controls.util.js +4 -2
  430. package/timepicker/esm5/timepicker.component.js +2 -2
  431. package/timepicker/esm5/timepicker.config.js +8 -4
  432. package/timepicker/esm5/timepicker.module.js +2 -3
  433. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +12 -7
  434. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
  435. package/timepicker/fesm5/ngx-bootstrap-timepicker.js +12 -7
  436. package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
  437. package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
  438. package/timepicker/package.json +2 -2
  439. package/timepicker/timepicker.component.d.ts +3 -3
  440. package/timepicker/timepicker.config.d.ts +1 -1
  441. package/timepicker/timepicker.module.d.ts +1 -1
  442. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +5 -2
  443. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
  444. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +1 -1
  445. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
  446. package/tooltip/esm2015/tooltip.config.js +6 -2
  447. package/tooltip/esm2015/tooltip.directive.js +3 -3
  448. package/tooltip/esm2015/tooltip.module.js +2 -3
  449. package/tooltip/esm5/tooltip.config.js +6 -2
  450. package/tooltip/esm5/tooltip.directive.js +3 -3
  451. package/tooltip/esm5/tooltip.module.js +2 -3
  452. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +6 -3
  453. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
  454. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +6 -3
  455. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
  456. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
  457. package/tooltip/package.json +2 -2
  458. package/tooltip/tooltip-container.component.d.ts +1 -1
  459. package/tooltip/tooltip.directive.d.ts +15 -10
  460. package/tooltip/tooltip.module.d.ts +1 -1
  461. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +170 -19
  462. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
  463. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +1 -1
  464. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
  465. package/typeahead/esm2015/typeahead-utils.js +35 -4
  466. package/typeahead/esm2015/typeahead.config.js +6 -2
  467. package/typeahead/esm2015/typeahead.directive.js +121 -16
  468. package/typeahead/esm2015/typeahead.module.js +2 -3
  469. package/typeahead/esm5/typeahead-utils.js +37 -6
  470. package/typeahead/esm5/typeahead.config.js +6 -2
  471. package/typeahead/esm5/typeahead.directive.js +135 -18
  472. package/typeahead/esm5/typeahead.module.js +2 -3
  473. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +160 -21
  474. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
  475. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +172 -21
  476. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
  477. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
  478. package/typeahead/package.json +2 -2
  479. package/typeahead/typeahead-container.component.d.ts +14 -12
  480. package/typeahead/typeahead-utils.d.ts +1 -1
  481. package/typeahead/typeahead.directive.d.ts +20 -1
  482. package/typeahead/typeahead.module.d.ts +1 -1
  483. package/utils/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { forwardRef, Directive, Input, HostBinding, HostListener, ElementRef, ChangeDetectorRef, Optional, Renderer2, ContentChildren, NgModule } from '@angular/core';
1
+ import { forwardRef, Directive, Input, HostBinding, HostListener, ElementRef, ChangeDetectorRef, Renderer2, Optional, Inject, ContentChildren, NgModule } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
 
4
4
  /**
@@ -177,16 +177,18 @@ class ButtonRadioDirective {
177
177
  /**
178
178
  * @param {?} el
179
179
  * @param {?} cdr
180
- * @param {?} group
181
180
  * @param {?} renderer
181
+ * @param {?} group
182
182
  */
183
- constructor(el, cdr, group, renderer) {
183
+ constructor(el, cdr, renderer, group) {
184
184
  this.el = el;
185
185
  this.cdr = cdr;
186
- this.group = group;
187
186
  this.renderer = renderer;
187
+ this.group = group;
188
188
  this.onChange = Function.prototype;
189
189
  this.onTouched = Function.prototype;
190
+ this.role = 'radio';
191
+ this._hasFocus = false;
190
192
  }
191
193
  /**
192
194
  * Current value of radio component or group
@@ -218,9 +220,22 @@ class ButtonRadioDirective {
218
220
  * @return {?}
219
221
  */
220
222
  set disabled(disabled) {
221
- this._disabled = disabled;
222
223
  this.setDisabledState(disabled);
223
224
  }
225
+ /**
226
+ * @return {?}
227
+ */
228
+ get controlOrGroupDisabled() {
229
+ return this.disabled || (this.group && this.group.disabled) ? true : undefined;
230
+ }
231
+ /**
232
+ * @return {?}
233
+ */
234
+ get hasDisabledClass() {
235
+ // Although the radio is disabled the active radio should still stand out.
236
+ // The disabled class will prevent this so don't add it on the active radio
237
+ return this.controlOrGroupDisabled && !this.isActive;
238
+ }
224
239
  /**
225
240
  * @return {?}
226
241
  */
@@ -230,33 +245,80 @@ class ButtonRadioDirective {
230
245
  /**
231
246
  * @return {?}
232
247
  */
233
- onClick() {
234
- if (this.el.nativeElement.attributes.disabled || !this.uncheckable && this.btnRadio === this.value) {
248
+ get tabindex() {
249
+ if (this.controlOrGroupDisabled) {
250
+ // Disabled radio buttons should not receive focus
251
+ return undefined;
252
+ }
253
+ else if (this.isActive || this.group == null) {
254
+ return 0;
255
+ }
256
+ else {
257
+ return -1;
258
+ }
259
+ }
260
+ /**
261
+ * @return {?}
262
+ */
263
+ get hasFocus() {
264
+ return this._hasFocus;
265
+ }
266
+ /**
267
+ * @return {?}
268
+ */
269
+ toggleIfAllowed() {
270
+ if (!this.canToggle()) {
235
271
  return;
236
272
  }
237
273
  this.value = this.uncheckable && this.btnRadio === this.value ? undefined : this.btnRadio;
238
274
  this._onChange(this.value);
239
275
  }
240
276
  /**
277
+ * @param {?} event
241
278
  * @return {?}
242
279
  */
243
- ngOnInit() {
244
- this.uncheckable = typeof this.uncheckable !== 'undefined';
280
+ onSpacePressed(event) {
281
+ this.toggleIfAllowed();
282
+ event.preventDefault();
283
+ }
284
+ /**
285
+ * @return {?}
286
+ */
287
+ focus() {
288
+ this.el.nativeElement.focus();
289
+ }
290
+ /**
291
+ * @return {?}
292
+ */
293
+ onFocus() {
294
+ this._hasFocus = true;
245
295
  }
246
296
  /**
247
297
  * @return {?}
248
298
  */
249
299
  onBlur() {
300
+ this._hasFocus = false;
250
301
  this.onTouched();
251
302
  }
303
+ /**
304
+ * @return {?}
305
+ */
306
+ canToggle() {
307
+ return !this.controlOrGroupDisabled && (this.uncheckable || this.btnRadio !== this.value);
308
+ }
309
+ /**
310
+ * @return {?}
311
+ */
312
+ ngOnInit() {
313
+ this.uncheckable = typeof this.uncheckable !== 'undefined';
314
+ }
252
315
  /**
253
316
  * @param {?} value
254
317
  * @return {?}
255
318
  */
256
319
  _onChange(value) {
257
320
  if (this.group) {
258
- this.group.onTouched();
259
- this.group.onChange(value);
321
+ this.group.value = value;
260
322
  return;
261
323
  }
262
324
  this.onTouched();
@@ -291,6 +353,7 @@ class ButtonRadioDirective {
291
353
  * @return {?}
292
354
  */
293
355
  setDisabledState(disabled) {
356
+ this._disabled = disabled;
294
357
  if (disabled) {
295
358
  this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');
296
359
  return;
@@ -308,16 +371,26 @@ ButtonRadioDirective.decorators = [
308
371
  ButtonRadioDirective.ctorParameters = () => [
309
372
  { type: ElementRef },
310
373
  { type: ChangeDetectorRef },
311
- { type: ButtonRadioGroupDirective, decorators: [{ type: Optional }] },
312
- { type: Renderer2 }
374
+ { type: Renderer2 },
375
+ { type: ButtonRadioGroupDirective, decorators: [{ type: Optional }, { type: Inject, args: [forwardRef((/**
376
+ * @return {?}
377
+ */
378
+ () => ButtonRadioGroupDirective)),] }] }
313
379
  ];
314
380
  ButtonRadioDirective.propDecorators = {
315
381
  btnRadio: [{ type: Input }],
316
382
  uncheckable: [{ type: Input }],
317
383
  value: [{ type: Input }],
318
384
  disabled: [{ type: Input }],
319
- isActive: [{ type: HostBinding, args: ['class.active',] }, { type: HostBinding, args: ['attr.aria-pressed',] }],
320
- onClick: [{ type: HostListener, args: ['click',] }]
385
+ controlOrGroupDisabled: [{ type: HostBinding, args: ['attr.aria-disabled',] }],
386
+ hasDisabledClass: [{ type: HostBinding, args: ['class.disabled',] }],
387
+ isActive: [{ type: HostBinding, args: ['class.active',] }, { type: HostBinding, args: ['attr.aria-checked',] }],
388
+ role: [{ type: HostBinding, args: ['attr.role',] }],
389
+ tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],
390
+ toggleIfAllowed: [{ type: HostListener, args: ['click',] }],
391
+ onSpacePressed: [{ type: HostListener, args: ['keydown.space', ['$event'],] }],
392
+ onFocus: [{ type: HostListener, args: ['focus',] }],
393
+ onBlur: [{ type: HostListener, args: ['blur',] }]
321
394
  };
322
395
  if (false) {
323
396
  /** @type {?} */
@@ -334,6 +407,8 @@ if (false) {
334
407
  * @type {?}
335
408
  */
336
409
  ButtonRadioDirective.prototype.uncheckable;
410
+ /** @type {?} */
411
+ ButtonRadioDirective.prototype.role;
337
412
  /**
338
413
  * @type {?}
339
414
  * @private
@@ -344,6 +419,11 @@ if (false) {
344
419
  * @private
345
420
  */
346
421
  ButtonRadioDirective.prototype._disabled;
422
+ /**
423
+ * @type {?}
424
+ * @private
425
+ */
426
+ ButtonRadioDirective.prototype._hasFocus;
347
427
  /**
348
428
  * @type {?}
349
429
  * @private
@@ -358,12 +438,12 @@ if (false) {
358
438
  * @type {?}
359
439
  * @private
360
440
  */
361
- ButtonRadioDirective.prototype.group;
441
+ ButtonRadioDirective.prototype.renderer;
362
442
  /**
363
443
  * @type {?}
364
444
  * @private
365
445
  */
366
- ButtonRadioDirective.prototype.renderer;
446
+ ButtonRadioDirective.prototype.group;
367
447
  }
368
448
 
369
449
  /**
@@ -392,6 +472,7 @@ class ButtonRadioGroupDirective {
392
472
  this.cdr = cdr;
393
473
  this.onChange = Function.prototype;
394
474
  this.onTouched = Function.prototype;
475
+ this.role = 'radiogroup';
395
476
  }
396
477
  /**
397
478
  * @return {?}
@@ -405,6 +486,18 @@ class ButtonRadioGroupDirective {
405
486
  */
406
487
  set value(value) {
407
488
  this._value = value;
489
+ this.onChange(value);
490
+ }
491
+ /**
492
+ * @return {?}
493
+ */
494
+ get tabindex() {
495
+ if (this._disabled) {
496
+ return null;
497
+ }
498
+ else {
499
+ return 0;
500
+ }
408
501
  }
409
502
  /**
410
503
  * @param {?} value
@@ -434,6 +527,7 @@ class ButtonRadioGroupDirective {
434
527
  */
435
528
  setDisabledState(disabled) {
436
529
  if (this.radioButtons) {
530
+ this._disabled = disabled;
437
531
  this.radioButtons.forEach((/**
438
532
  * @param {?} buttons
439
533
  * @return {?}
@@ -441,7 +535,117 @@ class ButtonRadioGroupDirective {
441
535
  buttons => {
442
536
  buttons.setDisabledState(disabled);
443
537
  }));
538
+ this.cdr.markForCheck();
539
+ }
540
+ }
541
+ /**
542
+ * @return {?}
543
+ */
544
+ onFocus() {
545
+ if (this._disabled) {
546
+ return;
547
+ }
548
+ /** @type {?} */
549
+ const activeRadio = this.getActiveOrFocusedRadio();
550
+ if (activeRadio) {
551
+ activeRadio.focus();
552
+ }
553
+ else {
554
+ /** @type {?} */
555
+ const firstEnabled = this.radioButtons.find((/**
556
+ * @param {?} r
557
+ * @return {?}
558
+ */
559
+ r => !r.disabled));
560
+ if (firstEnabled) {
561
+ firstEnabled.focus();
562
+ }
563
+ }
564
+ }
565
+ /**
566
+ * @return {?}
567
+ */
568
+ onBlur() {
569
+ if (this.onTouched) {
570
+ this.onTouched();
571
+ }
572
+ }
573
+ /**
574
+ * @param {?} event
575
+ * @return {?}
576
+ */
577
+ selectNext(event) {
578
+ this.selectInDirection('next');
579
+ event.preventDefault();
580
+ }
581
+ /**
582
+ * @param {?} event
583
+ * @return {?}
584
+ */
585
+ selectPrevious(event) {
586
+ this.selectInDirection('previous');
587
+ event.preventDefault();
588
+ }
589
+ /**
590
+ * @return {?}
591
+ */
592
+ get disabled() {
593
+ return this._disabled;
594
+ }
595
+ /**
596
+ * @private
597
+ * @param {?} direction
598
+ * @return {?}
599
+ */
600
+ selectInDirection(direction) {
601
+ if (this._disabled) {
602
+ return;
444
603
  }
604
+ /**
605
+ * @param {?} currentIndex
606
+ * @param {?} buttonRadioDirectives
607
+ * @return {?}
608
+ */
609
+ function nextIndex(currentIndex, buttonRadioDirectives) {
610
+ /** @type {?} */
611
+ const step = direction === 'next' ? 1 : -1;
612
+ /** @type {?} */
613
+ let calcIndex = (currentIndex + step) % buttonRadioDirectives.length;
614
+ if (calcIndex < 0) {
615
+ calcIndex = buttonRadioDirectives.length - 1;
616
+ }
617
+ return calcIndex;
618
+ }
619
+ /** @type {?} */
620
+ const activeRadio = this.getActiveOrFocusedRadio();
621
+ if (activeRadio) {
622
+ /** @type {?} */
623
+ const buttonRadioDirectives = this.radioButtons.toArray();
624
+ /** @type {?} */
625
+ const currentActiveIndex = buttonRadioDirectives.indexOf(activeRadio);
626
+ for (let i = nextIndex(currentActiveIndex, buttonRadioDirectives); i !== currentActiveIndex; i = nextIndex(i, buttonRadioDirectives)) {
627
+ if (buttonRadioDirectives[i].canToggle()) {
628
+ buttonRadioDirectives[i].toggleIfAllowed();
629
+ buttonRadioDirectives[i].focus();
630
+ break;
631
+ }
632
+ }
633
+ }
634
+ }
635
+ /**
636
+ * @private
637
+ * @return {?}
638
+ */
639
+ getActiveOrFocusedRadio() {
640
+ return this.radioButtons.find((/**
641
+ * @param {?} button
642
+ * @return {?}
643
+ */
644
+ button => button.isActive)) || this.radioButtons.find((/**
645
+ * @param {?} button
646
+ * @return {?}
647
+ */
648
+ button => button.hasFocus));
445
649
  }
446
650
  }
447
651
  ButtonRadioGroupDirective.decorators = [
@@ -455,10 +659,16 @@ ButtonRadioGroupDirective.ctorParameters = () => [
455
659
  { type: ChangeDetectorRef }
456
660
  ];
457
661
  ButtonRadioGroupDirective.propDecorators = {
662
+ role: [{ type: HostBinding, args: ['attr.role',] }],
458
663
  radioButtons: [{ type: ContentChildren, args: [forwardRef((/**
459
664
  * @return {?}
460
665
  */
461
- () => ButtonRadioDirective)),] }]
666
+ () => ButtonRadioDirective)),] }],
667
+ tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],
668
+ onFocus: [{ type: HostListener, args: ['focus',] }],
669
+ onBlur: [{ type: HostListener, args: ['blur',] }],
670
+ selectNext: [{ type: HostListener, args: ['keydown.ArrowRight', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }],
671
+ selectPrevious: [{ type: HostListener, args: ['keydown.ArrowLeft', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowUp', ['$event'],] }]
462
672
  };
463
673
  if (false) {
464
674
  /** @type {?} */
@@ -466,12 +676,19 @@ if (false) {
466
676
  /** @type {?} */
467
677
  ButtonRadioGroupDirective.prototype.onTouched;
468
678
  /** @type {?} */
679
+ ButtonRadioGroupDirective.prototype.role;
680
+ /** @type {?} */
469
681
  ButtonRadioGroupDirective.prototype.radioButtons;
470
682
  /**
471
683
  * @type {?}
472
684
  * @private
473
685
  */
474
686
  ButtonRadioGroupDirective.prototype._value;
687
+ /**
688
+ * @type {?}
689
+ * @private
690
+ */
691
+ ButtonRadioGroupDirective.prototype._disabled;
475
692
  /**
476
693
  * @type {?}
477
694
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-bootstrap-buttons.js","sources":["ng://ngx-bootstrap/buttons/button-checkbox.directive.ts","ng://ngx-bootstrap/buttons/button-radio.directive.ts","ng://ngx-bootstrap/buttons/button-radio-group.directive.ts","ng://ngx-bootstrap/buttons/buttons.module.ts"],"sourcesContent":["// tslint:disable:no-use-before-declare\nimport {\n Directive,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// TODO: config: activeClass - Class to apply to the checked buttons\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonCheckboxDirective),\n multi: true\n};\n\n/**\n * Add checkbox functionality to any element\n */\n@Directive({\n selector: '[btnCheckbox]',\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonCheckboxDirective implements ControlValueAccessor, OnInit {\n /** Truthy value, will be set to ngModel */\n @Input() btnCheckboxTrue = true;\n /** Falsy value, will be set to ngModel */\n @Input() btnCheckboxFalse = false;\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-pressed')\n state = false;\n\n protected value: boolean | string;\n protected isDisabled: boolean;\n\n protected onChange = Function.prototype;\n protected onTouched = Function.prototype;\n\n // view -> model\n @HostListener('click')\n onClick(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.toggle(!this.state);\n this.onChange(this.value);\n }\n\n ngOnInit(): void {\n this.toggle(this.trueValue === this.value);\n }\n\n protected get trueValue(): boolean {\n return typeof this.btnCheckboxTrue !== 'undefined'\n ? this.btnCheckboxTrue\n : true;\n }\n\n protected get falseValue(): boolean {\n return typeof this.btnCheckboxFalse !== 'undefined'\n ? this.btnCheckboxFalse\n : false;\n }\n\n toggle(state: boolean): void {\n this.state = state;\n this.value = this.state ? this.trueValue : this.falseValue;\n }\n\n // ControlValueAccessor\n // model -> view\n writeValue(value: boolean | string | null): void {\n this.state = this.trueValue === value;\n this.value = value ? this.trueValue : this.falseValue;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Optional,\n Provider,\n Renderer2\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonRadioDirective),\n multi: true\n};\n\n/**\n * Create radio buttons or groups of buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n selector: '[btnRadio]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonRadioDirective implements ControlValueAccessor, OnInit {\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n /** Radio button value, will be set to `ngModel` */\n @Input() btnRadio: string;\n /** If `true` — radio button can be unchecked */\n @Input() uncheckable: boolean;\n /** Current value of radio component or group */\n @Input() get value() {\n return this.group ? this.group.value : this._value;\n }\n\n set value(value: null | string) {\n if (this.group) {\n this.group.value = value;\n\n return;\n }\n this._value = value;\n }\n /** If `true` — radio button is disabled */\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.setDisabledState(disabled);\n }\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-pressed')\n get isActive(): boolean {\n return this.btnRadio === this.value;\n }\n\n private _value: null | string;\n private _disabled: boolean;\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef,\n @Optional() private group: ButtonRadioGroupDirective,\n private renderer: Renderer2\n ) {}\n\n @HostListener('click')\n onClick(): void {\n if (this.el.nativeElement.attributes.disabled || !this.uncheckable && this.btnRadio === this.value) {\n return;\n }\n\n this.value = this.uncheckable && this.btnRadio === this.value ? undefined : this.btnRadio;\n this._onChange(this.value);\n }\n\n ngOnInit(): void {\n this.uncheckable = typeof this.uncheckable !== 'undefined';\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n _onChange(value: string): void {\n if (this.group) {\n this.group.onTouched();\n this.group.onChange(value);\n\n return;\n }\n this.onTouched();\n this.onChange(value);\n }\n\n // ControlValueAccessor\n // model -> view\n writeValue(value: string): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n if (disabled) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n forwardRef,\n Provider,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ButtonRadioDirective } from './button-radio.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonRadioGroupDirective),\n multi: true\n};\n\n/**\n * A group of radio buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n selector: '[btnRadioGroup]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonRadioGroupDirective implements ControlValueAccessor {\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n @ContentChildren(forwardRef(() => ButtonRadioDirective)) radioButtons: QueryList<ButtonRadioDirective>;\n\n get value() {\n return this._value;\n }\n set value(value: string | null) {\n this._value = value;\n }\n\n private _value: string | null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n writeValue(value: string | null): void {\n this._value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n if (this.radioButtons) {\n this.radioButtons.forEach(buttons => {\n buttons.setDisabledState(disabled);\n });\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ButtonCheckboxDirective } from './button-checkbox.directive';\nimport { ButtonRadioDirective } from './button-radio.directive';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\n@NgModule({\n declarations: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective],\n exports: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective]\n})\nexport class ButtonsModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: ButtonsModule, providers: [] };\n }\n}\n"],"names":["RADIO_CONTROL_VALUE_ACCESSOR"],"mappings":";;;;;;;;;MAaa,+BAA+B,GAAa;IACvD,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,uBAAuB,EAAC;IACtD,KAAK,EAAE,IAAI;;;;;MAUA,uBAAuB;IAJpC;;;;QAMW,oBAAe,GAAG,IAAI,CAAC;;;;QAEvB,qBAAgB,GAAG,KAAK,CAAC;QAIlC,UAAK,GAAG,KAAK,CAAC;QAKJ,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;KAoD1C;;;;;IAhDC,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5C;;;;;IAED,IAAc,SAAS;QACrB,OAAO,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW;cAC9C,IAAI,CAAC,eAAe;cACpB,IAAI,CAAC;KACV;;;;;IAED,IAAc,UAAU;QACtB,OAAO,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW;cAC/C,IAAI,CAAC,gBAAgB;cACrB,KAAK,CAAC;KACX;;;;;IAED,MAAM,CAAC,KAAc;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KAC5D;;;;;;;IAID,UAAU,CAAC,KAA8B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KACvD;;;;;IAED,gBAAgB,CAAC,UAAmB;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;;;;;IAED,gBAAgB,CAAC,EAAY;QAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;;;;;IAED,iBAAiB,CAAC,EAAY;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;YArEF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C;;;8BAGE,KAAK;+BAEL,KAAK;oBAEL,WAAW,SAAC,cAAc,cAC1B,WAAW,SAAC,mBAAmB;sBAU/B,YAAY,SAAC,OAAO;;;;;;;IAfrB,kDAAgC;;;;;IAEhC,mDAAkC;;IAElC,wCAEc;;;;;IAEd,wCAAkC;;;;;IAClC,6CAA8B;;;;;IAE9B,2CAAwC;;;;;IACxC,4CAAyC;;;;;;;ACzC3C;AAgBA,MAAa,4BAA4B,GAAa;IACpD,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,oBAAoB,EAAC;IACnD,KAAK,EAAE,IAAI;CACZ;;;;;AAUD,MAAa,oBAAoB;;;;;;;IAwC/B,YACU,EAAc,EACd,GAAsB,EACV,KAAgC,EAC5C,QAAmB;QAHnB,OAAE,GAAF,EAAE,CAAY;QACd,QAAG,GAAH,GAAG,CAAmB;QACV,UAAK,GAAL,KAAK,CAA2B;QAC5C,aAAQ,GAAR,QAAQ,CAAW;QA3C7B,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;KA2C3B;;;;;IApCJ,IAAa,KAAK;QAChB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;KACpD;;;;;IAED,IAAI,KAAK,CAAC,KAAoB;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEzB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;;;;IAED,IAAa,QAAQ;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;;;;IAED,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACjC;;;;IAED,IAEI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC;KACrC;;;;IAaD,OAAO;QACL,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE;YAClG,OAAO;SACR;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;;;;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;KAC5D;;;;IAED,MAAM;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;;;;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;;;;;;;IAID,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;;;;IAED,gBAAgB,CAAC,EAAY;QAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;;;;;IAED,iBAAiB,CAAC,EAAY;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;;;IAED,gBAAgB,CAAC,QAAiB;QAChC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAE1E,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KAClE;;;YAtGF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,CAAC,4BAA4B,CAAC;aAC1C;;;;YA3BC,UAAU;YAFV,iBAAiB;YAaV,yBAAyB,uBA4D7B,QAAQ;YA/DX,SAAS;;;uBAyBR,KAAK;0BAEL,KAAK;oBAEL,KAAK;uBAaL,KAAK;uBASL,WAAW,SAAC,cAAc,cAC1B,WAAW,SAAC,mBAAmB;sBAe/B,YAAY,SAAC,OAAO;;;;IA9CrB,wCAA8B;;IAC9B,yCAA+B;;;;;IAG/B,wCAA0B;;;;;IAE1B,2CAA8B;;;;;IA8B9B,sCAA+B;;;;;IAC/B,yCAA2B;;;;;IAGzB,kCAAsB;;;;;IACtB,mCAA8B;;;;;IAC9B,qCAAoD;;;;;IACpD,wCAA2B;;;;;;;AC3E/B;AAYA,MAAaA,8BAA4B,GAAa;IACpD,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,yBAAyB,EAAC;IACxD,KAAK,EAAE,IAAI;CACZ;;;;;AAUD,MAAa,yBAAyB;;;;IAepC,YAAoB,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;QAd1C,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;KAae;;;;IAT9C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;;;;IACD,IAAI,KAAK,CAAC,KAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;;;;IAMD,UAAU,CAAC,KAAoB;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;;;;IAED,gBAAgB,CAAC,EAAY;QAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;;;;;IAED,iBAAiB,CAAC,EAAY;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;;;IAED,gBAAgB,CAAC,QAAiB;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO;;;;YAAC,OAAO;gBAC/B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aACpC,EAAC,CAAC;SACJ;KACF;;;YAxCF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,CAACA,8BAA4B,CAAC;aAC1C;;;;YAzBC,iBAAiB;;;2BA8BhB,eAAe,SAAC,UAAU;;;gBAAC,MAAM,oBAAoB,EAAC;;;;IAHvD,6CAA8B;;IAC9B,8CAA+B;;IAE/B,iDAAuG;;;;;IASvG,2CAA8B;;;;;IAElB,wCAA8B;;;;;;;AC1C5C,MAUa,aAAa;;;;IACxB,OAAO,OAAO;QACZ,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACnD;;;YAPF,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;gBACxF,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;aACpF;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ngx-bootstrap-buttons.js","sources":["ng://ngx-bootstrap/buttons/button-checkbox.directive.ts","ng://ngx-bootstrap/buttons/button-radio.directive.ts","ng://ngx-bootstrap/buttons/button-radio-group.directive.ts","ng://ngx-bootstrap/buttons/buttons.module.ts"],"sourcesContent":["// tslint:disable:no-use-before-declare\nimport {\n Directive,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// TODO: config: activeClass - Class to apply to the checked buttons\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonCheckboxDirective),\n multi: true\n};\n\n/**\n * Add checkbox functionality to any element\n */\n@Directive({\n selector: '[btnCheckbox]',\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonCheckboxDirective implements ControlValueAccessor, OnInit {\n /** Truthy value, will be set to ngModel */\n @Input() btnCheckboxTrue = true;\n /** Falsy value, will be set to ngModel */\n @Input() btnCheckboxFalse = false;\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-pressed')\n state = false;\n\n protected value: boolean | string;\n protected isDisabled: boolean;\n\n protected onChange = Function.prototype;\n protected onTouched = Function.prototype;\n\n // view -> model\n @HostListener('click')\n onClick(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.toggle(!this.state);\n this.onChange(this.value);\n }\n\n ngOnInit(): void {\n this.toggle(this.trueValue === this.value);\n }\n\n protected get trueValue(): boolean {\n return typeof this.btnCheckboxTrue !== 'undefined'\n ? this.btnCheckboxTrue\n : true;\n }\n\n protected get falseValue(): boolean {\n return typeof this.btnCheckboxFalse !== 'undefined'\n ? this.btnCheckboxFalse\n : false;\n }\n\n toggle(state: boolean): void {\n this.state = state;\n this.value = this.state ? this.trueValue : this.falseValue;\n }\n\n // ControlValueAccessor\n // model -> view\n writeValue(value: boolean | string | null): void {\n this.state = this.trueValue === value;\n this.value = value ? this.trueValue : this.falseValue;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Provider,\n Renderer2\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonRadioDirective),\n multi: true\n};\n\n/**\n * Create radio buttons or groups of buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n selector: '[btnRadio]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonRadioDirective implements ControlValueAccessor, OnInit {\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n /** Radio button value, will be set to `ngModel` */\n @Input() btnRadio: string;\n /** If `true` — radio button can be unchecked */\n @Input() uncheckable: boolean;\n /** Current value of radio component or group */\n @Input()\n get value() {\n return this.group ? this.group.value : this._value;\n }\n\n set value(value: null | string) {\n if (this.group) {\n this.group.value = value;\n\n return;\n }\n this._value = value;\n }\n /** If `true` — radio button is disabled */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(disabled: boolean) {\n this.setDisabledState(disabled);\n }\n\n @HostBinding('attr.aria-disabled')\n get controlOrGroupDisabled() {\n return this.disabled || (this.group && this.group.disabled) ? true : undefined;\n }\n\n @HostBinding('class.disabled')\n get hasDisabledClass() {\n // Although the radio is disabled the active radio should still stand out.\n // The disabled class will prevent this so don't add it on the active radio\n return this.controlOrGroupDisabled && !this.isActive;\n }\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-checked')\n get isActive(): boolean {\n return this.btnRadio === this.value;\n }\n\n @HostBinding('attr.role') readonly role: string = 'radio';\n\n @HostBinding('attr.tabindex')\n get tabindex(): undefined | number {\n if (this.controlOrGroupDisabled) {\n // Disabled radio buttons should not receive focus\n return undefined;\n } else if (this.isActive || this.group == null) {\n return 0;\n } else {\n return -1;\n }\n }\n\n get hasFocus(): boolean {\n return this._hasFocus;\n }\n\n private _value: null | string;\n private _disabled: boolean;\n private _hasFocus = false;\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n @Optional()\n @Inject(forwardRef(() => ButtonRadioGroupDirective))\n private group: ButtonRadioGroupDirective\n ) {}\n\n @HostListener('click')\n toggleIfAllowed(): void {\n if (!this.canToggle()) {\n return;\n }\n\n this.value = this.uncheckable && this.btnRadio === this.value ? undefined : this.btnRadio;\n this._onChange(this.value);\n }\n\n @HostListener('keydown.space', ['$event'])\n onSpacePressed(event: KeyboardEvent) {\n this.toggleIfAllowed();\n event.preventDefault();\n }\n\n focus() {\n this.el.nativeElement.focus();\n }\n\n @HostListener('focus')\n onFocus() {\n this._hasFocus = true;\n }\n\n @HostListener('blur')\n onBlur() {\n this._hasFocus = false;\n this.onTouched();\n }\n\n canToggle(): boolean {\n return !this.controlOrGroupDisabled && (this.uncheckable || this.btnRadio !== this.value);\n }\n\n ngOnInit(): void {\n this.uncheckable = typeof this.uncheckable !== 'undefined';\n }\n\n _onChange(value: string): void {\n if (this.group) {\n this.group.value = value;\n\n return;\n }\n this.onTouched();\n this.onChange(value);\n }\n\n // ControlValueAccessor\n // model -> view\n writeValue(value: string): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this._disabled = disabled;\n if (disabled) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n forwardRef,\n HostBinding,\n HostListener,\n Provider,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioDirective } from './button-radio.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => ButtonRadioGroupDirective),\n multi: true\n};\n\n/**\n * A group of radio buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n selector: '[btnRadioGroup]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n})\nexport class ButtonRadioGroupDirective implements ControlValueAccessor {\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n @HostBinding('attr.role') readonly role: string = 'radiogroup';\n\n @ContentChildren(forwardRef(() => ButtonRadioDirective))\n radioButtons: QueryList<ButtonRadioDirective>;\n\n get value() {\n return this._value;\n }\n set value(value: string | null) {\n this._value = value;\n this.onChange(value);\n }\n\n private _value: string | null;\n\n private _disabled: boolean;\n\n @HostBinding('attr.tabindex')\n get tabindex(): null | number {\n if (this._disabled) {\n return null;\n } else {\n return 0;\n }\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n writeValue(value: string | null): void {\n this._value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n if (this.radioButtons) {\n this._disabled = disabled;\n this.radioButtons.forEach(buttons => {\n buttons.setDisabledState(disabled);\n });\n this.cdr.markForCheck();\n }\n }\n\n @HostListener('focus')\n onFocus() {\n if (this._disabled) {\n return;\n }\n const activeRadio = this.getActiveOrFocusedRadio();\n if (activeRadio) {\n activeRadio.focus();\n } else {\n const firstEnabled = this.radioButtons.find(r => !r.disabled);\n if (firstEnabled) {\n firstEnabled.focus();\n }\n }\n }\n\n @HostListener('blur')\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n @HostListener('keydown.ArrowRight', ['$event'])\n @HostListener('keydown.ArrowDown', ['$event'])\n selectNext(event: KeyboardEvent) {\n this.selectInDirection('next');\n event.preventDefault();\n }\n\n @HostListener('keydown.ArrowLeft', ['$event'])\n @HostListener('keydown.ArrowUp', ['$event'])\n selectPrevious(event: KeyboardEvent) {\n this.selectInDirection('previous');\n event.preventDefault();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n private selectInDirection(direction: 'next' | 'previous') {\n if (this._disabled) {\n return;\n }\n function nextIndex(currentIndex: number, buttonRadioDirectives: ButtonRadioDirective[]) {\n const step = direction === 'next' ? 1 : -1;\n let calcIndex = (currentIndex + step) % buttonRadioDirectives.length;\n if (calcIndex < 0) {\n calcIndex = buttonRadioDirectives.length - 1;\n }\n\n return calcIndex;\n }\n const activeRadio = this.getActiveOrFocusedRadio();\n\n if (activeRadio) {\n const buttonRadioDirectives = this.radioButtons.toArray();\n const currentActiveIndex = buttonRadioDirectives.indexOf(activeRadio);\n for (\n let i = nextIndex(currentActiveIndex, buttonRadioDirectives);\n i !== currentActiveIndex;\n i = nextIndex(i, buttonRadioDirectives)\n ) {\n if (buttonRadioDirectives[i].canToggle()) {\n buttonRadioDirectives[i].toggleIfAllowed();\n buttonRadioDirectives[i].focus();\n break;\n }\n }\n }\n }\n\n private getActiveOrFocusedRadio(): ButtonRadioDirective | undefined {\n return this.radioButtons.find(button => button.isActive) || this.radioButtons.find(button => button.hasFocus);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ButtonCheckboxDirective } from './button-checkbox.directive';\nimport { ButtonRadioDirective } from './button-radio.directive';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\n@NgModule({\n declarations: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective],\n exports: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective]\n})\nexport class ButtonsModule {\n static forRoot(): ModuleWithProviders<ButtonsModule> {\n return { ngModule: ButtonsModule, providers: [] };\n }\n}\n"],"names":["RADIO_CONTROL_VALUE_ACCESSOR"],"mappings":"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"}