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 +1 @@
1
- {"version":3,"file":"ngx-bootstrap-buttons.umd.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":["NG_VALUE_ACCESSOR","forwardRef","Directive","Input","HostBinding","HostListener","ElementRef","ChangeDetectorRef","Optional","Renderer2","RADIO_CONTROL_VALUE_ACCESSOR","ContentChildren","NgModule"],"mappings":";;;;;;;;;;;;QAaa,+BAA+B,GAAa;QACvD,OAAO,EAAEA,uBAAiB;;QAE1B,WAAW,EAAEC,eAAU;;;QAAC,cAAM,OAAA,uBAAuB,GAAA,EAAC;QACtD,KAAK,EAAE,IAAI;;;;;;QAMb;;;;YAMW,oBAAe,GAAG,IAAI,CAAC;;;;YAEvB,qBAAgB,GAAG,KAAK,CAAC;YAIlC,UAAK,GAAG,KAAK,CAAC;YAKJ,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;SAoD1C;;;;;;QAhDC,yCAAO;;;;;QADP;YAEE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO;aACR;YAED,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;;;;QAED,0CAAQ;;;QAAR;YACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;QAED,sBAAc,8CAAS;;;;;YAAvB;gBACE,OAAO,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW;sBAC9C,IAAI,CAAC,eAAe;sBACpB,IAAI,CAAC;aACV;;;WAAA;QAED,sBAAc,+CAAU;;;;;YAAxB;gBACE,OAAO,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW;sBAC/C,IAAI,CAAC,gBAAgB;sBACrB,KAAK,CAAC;aACX;;;WAAA;;;;;QAED,wCAAM;;;;QAAN,UAAO,KAAc;YACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;SAC5D;;;;;;;;;QAID,4CAAU;;;;;;;QAAV,UAAW,KAA8B;YACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;SACvD;;;;;QAED,kDAAgB;;;;QAAhB,UAAiB,UAAmB;YAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;;;;;QAED,kDAAgB;;;;QAAhB,UAAiB,EAAY;YAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;;;;;QAED,mDAAiB;;;;QAAjB,UAAkB,EAAY;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;;oBArEFC,cAAS,SAAC;wBACT,QAAQ,EAAE,eAAe;wBACzB,SAAS,EAAE,CAAC,+BAA+B,CAAC;qBAC7C;;;sCAGEC,UAAK;uCAELA,UAAK;4BAELC,gBAAW,SAAC,cAAc,cAC1BA,gBAAW,SAAC,mBAAmB;8BAU/BC,iBAAY,SAAC,OAAO;;QAiDvB,8BAAC;KAtED,IAsEC;;;;;;QAhEC,kDAAgC;;;;;QAEhC,mDAAkC;;QAElC,wCAEc;;;;;QAEd,wCAAkC;;;;;QAClC,6CAA8B;;;;;QAE9B,2CAAwC;;;;;QACxC,4CAAyC;;;;;;;ICzC3C;QAgBa,4BAA4B,GAAa;QACpD,OAAO,EAAEL,uBAAiB;;QAE1B,WAAW,EAAEC,eAAU;;;QAAC,cAAM,OAAA,oBAAoB,GAAA,EAAC;QACnD,KAAK,EAAE,IAAI;;;;;;;QAmDX,8BACU,EAAc,EACd,GAAsB,EACV,KAAgC,EAC5C,QAAmB;YAHnB,OAAE,GAAF,EAAE,CAAY;YACd,QAAG,GAAH,GAAG,CAAmB;YACV,UAAK,GAAL,KAAK,CAA2B;YAC5C,aAAQ,GAAR,QAAQ,CAAW;YA3C7B,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;SA2C3B;QApCJ,sBAAa,uCAAK;;;;;;YAAlB;gBACE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;aACpD;;;;;YAED,UAAU,KAAoB;gBAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBAEzB,OAAO;iBACR;gBACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;WATA;QAWD,sBAAa,0CAAQ;;;;;;YAArB;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;;;;YAED,UAAa,QAAiB;gBAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aACjC;;;WALA;QAOD,sBAEI,0CAAQ;;;;YAFZ;gBAGE,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC;aACrC;;;WAAA;;;;QAaD,sCAAO;;;QADP;YAEE,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE;gBAClG,OAAO;aACR;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;;;;QAED,uCAAQ;;;QAAR;YACE,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;SAC5D;;;;QAED,qCAAM;;;QAAN;YACE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;;;;QAED,wCAAS;;;;QAAT,UAAU,KAAa;YACrB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAE3B,OAAO;aACR;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;;;;;;QAID,yCAAU;;;;;;;QAAV,UAAW,KAAa;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;;;;;QAED,+CAAgB;;;;QAAhB,UAAiB,EAAY;YAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;;;;;QAED,gDAAiB;;;;QAAjB,UAAkB,EAAY;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;;;;;QAED,+CAAgB;;;;QAAhB,UAAiB,QAAiB;YAChC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE1E,OAAO;aACR;YACD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;SAClE;;oBAtGFC,cAAS,SAAC;wBACT,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,CAAC,4BAA4B,CAAC;qBAC1C;;;;oBA3BCI,eAAU;oBAFVC,sBAAiB;oBAaV,yBAAyB,uBA4D7BC,aAAQ;oBA/DXC,cAAS;;;+BAyBRN,UAAK;kCAELA,UAAK;4BAELA,UAAK;+BAaLA,UAAK;+BASLC,gBAAW,SAAC,cAAc,cAC1BA,gBAAW,SAAC,mBAAmB;8BAe/BC,iBAAY,SAAC,OAAO;;QAoDvB,2BAAC;KAvGD,IAuGC;;;QAlGC,wCAA8B;;QAC9B,yCAA+B;;;;;QAG/B,wCAA0B;;;;;QAE1B,2CAA8B;;;;;QA8B9B,sCAA+B;;;;;QAC/B,yCAA2B;;;;;QAGzB,kCAAsB;;;;;QACtB,mCAA8B;;;;;QAC9B,qCAAoD;;;;;QACpD,wCAA2B;;;;;;;IC3E/B;QAYaK,8BAA4B,GAAa;QACpD,OAAO,EAAEV,uBAAiB;;QAE1B,WAAW,EAAEC,eAAU;;;QAAC,cAAM,OAAA,yBAAyB,GAAA,EAAC;QACxD,KAAK,EAAE,IAAI;;;;;;;QA0BX,mCAAoB,GAAsB;YAAtB,QAAG,GAAH,GAAG,CAAmB;YAd1C,aAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC9B,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;SAae;QAT9C,sBAAI,4CAAK;;;;YAAT;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;;;;YACD,UAAU,KAAoB;gBAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;WAHA;;;;;QASD,8CAAU;;;;QAAV,UAAW,KAAoB;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;;;;;QAED,oDAAgB;;;;QAAhB,UAAiB,EAAY;YAC3B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;;;;;QAED,qDAAiB;;;;QAAjB,UAAkB,EAAY;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;;;;;QAED,oDAAgB;;;;QAAhB,UAAiB,QAAiB;YAChC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,OAAO;;;;gBAAC,UAAA,OAAO;oBAC/B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;iBACpC,EAAC,CAAC;aACJ;SACF;;oBAxCFC,cAAS,SAAC;wBACT,QAAQ,EAAE,iBAAiB;wBAC3B,SAAS,EAAE,CAACQ,8BAA4B,CAAC;qBAC1C;;;;oBAzBCH,sBAAiB;;;mCA8BhBI,oBAAe,SAACV,eAAU;;;wBAAC,cAAM,OAAA,oBAAoB,GAAA,EAAC;;QAiCzD,gCAAC;KAzCD,IAyCC;;;QApCC,6CAA8B;;QAC9B,8CAA+B;;QAE/B,iDAAuG;;;;;QASvG,2CAA8B;;;;;QAElB,wCAA8B;;;;;;;;QCpC5C;SAQC;;;;QAHQ,qBAAO;;;QAAd;YACE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACnD;;oBAPFW,aAAQ,SAAC;wBACR,YAAY,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;wBACxF,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC;qBACpF;;QAKD,oBAAC;KARD;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ngx-bootstrap-buttons.umd.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":["NG_VALUE_ACCESSOR","forwardRef","Directive","Input","HostBinding","HostListener","ElementRef","ChangeDetectorRef","Renderer2","Optional","Inject","RADIO_CONTROL_VALUE_ACCESSOR","ContentChildren","NgModule"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ngx-bootstrap/buttons",["exports","@angular/core","@angular/forms"],e):e(((t=t||self)["ngx-bootstrap"]=t["ngx-bootstrap"]||{},t["ngx-bootstrap"].buttons={}),t.ng.core,t.ng.forms)}(this,(function(t,e,o){"use strict";var n={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return i})),multi:!0},i=function(){function t(){this.btnCheckboxTrue=!0,this.btnCheckboxFalse=!1,this.state=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype}return t.prototype.onClick=function(){this.isDisabled||(this.toggle(!this.state),this.onChange(this.value))},t.prototype.ngOnInit=function(){this.toggle(this.trueValue===this.value)},Object.defineProperty(t.prototype,"trueValue",{get:function(){return void 0===this.btnCheckboxTrue||this.btnCheckboxTrue},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"falseValue",{get:function(){return void 0!==this.btnCheckboxFalse&&this.btnCheckboxFalse},enumerable:!0,configurable:!0}),t.prototype.toggle=function(t){this.state=t,this.value=this.state?this.trueValue:this.falseValue},t.prototype.writeValue=function(t){this.state=this.trueValue===t,this.value=t?this.trueValue:this.falseValue},t.prototype.setDisabledState=function(t){this.isDisabled=t},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.decorators=[{type:e.Directive,args:[{selector:"[btnCheckbox]",providers:[n]}]}],t.propDecorators={btnCheckboxTrue:[{type:e.Input}],btnCheckboxFalse:[{type:e.Input}],state:[{type:e.HostBinding,args:["class.active"]},{type:e.HostBinding,args:["attr.aria-pressed"]}],onClick:[{type:e.HostListener,args:["click"]}]},t}();var r={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return s})),multi:!0},s=function(){function t(t,e,o,n){this.el=t,this.cdr=e,this.group=o,this.renderer=n,this.onChange=Function.prototype,this.onTouched=Function.prototype}return Object.defineProperty(t.prototype,"value",{get:function(){return this.group?this.group.value:this._value},set:function(t){this.group?this.group.value=t:this._value=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this._disabled},set:function(t){this._disabled=t,this.setDisabledState(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.btnRadio===this.value},enumerable:!0,configurable:!0}),t.prototype.onClick=function(){this.el.nativeElement.attributes.disabled||!this.uncheckable&&this.btnRadio===this.value||(this.value=this.uncheckable&&this.btnRadio===this.value?void 0:this.btnRadio,this._onChange(this.value))},t.prototype.ngOnInit=function(){this.uncheckable=void 0!==this.uncheckable},t.prototype.onBlur=function(){this.onTouched()},t.prototype._onChange=function(t){if(this.group)return this.group.onTouched(),void this.group.onChange(t);this.onTouched(),this.onChange(t)},t.prototype.writeValue=function(t){this.value=t,this.cdr.markForCheck()},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){t?this.renderer.setAttribute(this.el.nativeElement,"disabled","disabled"):this.renderer.removeAttribute(this.el.nativeElement,"disabled")},t.decorators=[{type:e.Directive,args:[{selector:"[btnRadio]",providers:[r]}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:e.ChangeDetectorRef},{type:a,decorators:[{type:e.Optional}]},{type:e.Renderer2}]},t.propDecorators={btnRadio:[{type:e.Input}],uncheckable:[{type:e.Input}],value:[{type:e.Input}],disabled:[{type:e.Input}],isActive:[{type:e.HostBinding,args:["class.active"]},{type:e.HostBinding,args:["attr.aria-pressed"]}],onClick:[{type:e.HostListener,args:["click"]}]},t}();var u={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return a})),multi:!0},a=function(){function t(t){this.cdr=t,this.onChange=Function.prototype,this.onTouched=Function.prototype}return Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){this._value=t},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){this._value=t,this.cdr.markForCheck()},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this.radioButtons&&this.radioButtons.forEach((function(e){e.setDisabledState(t)}))},t.decorators=[{type:e.Directive,args:[{selector:"[btnRadioGroup]",providers:[u]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},t.propDecorators={radioButtons:[{type:e.ContentChildren,args:[e.forwardRef((function(){return s}))]}]},t}();var c=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{declarations:[i,s,a],exports:[i,s,a]}]}],t}();t.ButtonCheckboxDirective=i,t.ButtonRadioDirective=s,t.ButtonRadioGroupDirective=a,t.ButtonsModule=c,t.ɵa=n,t.ɵb=u,t.ɵc=r,Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ngx-bootstrap/buttons",["exports","@angular/core","@angular/forms"],e):e(((t=t||self)["ngx-bootstrap"]=t["ngx-bootstrap"]||{},t["ngx-bootstrap"].buttons={}),t.ng.core,t.ng.forms)}(this,(function(t,e,o){"use strict";var n={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return r})),multi:!0},r=function(){function t(){this.btnCheckboxTrue=!0,this.btnCheckboxFalse=!1,this.state=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype}return t.prototype.onClick=function(){this.isDisabled||(this.toggle(!this.state),this.onChange(this.value))},t.prototype.ngOnInit=function(){this.toggle(this.trueValue===this.value)},Object.defineProperty(t.prototype,"trueValue",{get:function(){return void 0===this.btnCheckboxTrue||this.btnCheckboxTrue},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"falseValue",{get:function(){return void 0!==this.btnCheckboxFalse&&this.btnCheckboxFalse},enumerable:!0,configurable:!0}),t.prototype.toggle=function(t){this.state=t,this.value=this.state?this.trueValue:this.falseValue},t.prototype.writeValue=function(t){this.state=this.trueValue===t,this.value=t?this.trueValue:this.falseValue},t.prototype.setDisabledState=function(t){this.isDisabled=t},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.decorators=[{type:e.Directive,args:[{selector:"[btnCheckbox]",providers:[n]}]}],t.propDecorators={btnCheckboxTrue:[{type:e.Input}],btnCheckboxFalse:[{type:e.Input}],state:[{type:e.HostBinding,args:["class.active"]},{type:e.HostBinding,args:["attr.aria-pressed"]}],onClick:[{type:e.HostListener,args:["click"]}]},t}();var i={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return s})),multi:!0},s=function(){function t(t,e,o,n){this.el=t,this.cdr=e,this.renderer=o,this.group=n,this.onChange=Function.prototype,this.onTouched=Function.prototype,this.role="radio",this._hasFocus=!1}return Object.defineProperty(t.prototype,"value",{get:function(){return this.group?this.group.value:this._value},set:function(t){this.group?this.group.value=t:this._value=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this._disabled},set:function(t){this.setDisabledState(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controlOrGroupDisabled",{get:function(){return!!(this.disabled||this.group&&this.group.disabled)||void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasDisabledClass",{get:function(){return this.controlOrGroupDisabled&&!this.isActive},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.btnRadio===this.value},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tabindex",{get:function(){return this.controlOrGroupDisabled?void 0:this.isActive||null==this.group?0:-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasFocus",{get:function(){return this._hasFocus},enumerable:!0,configurable:!0}),t.prototype.toggleIfAllowed=function(){this.canToggle()&&(this.value=this.uncheckable&&this.btnRadio===this.value?void 0:this.btnRadio,this._onChange(this.value))},t.prototype.onSpacePressed=function(t){this.toggleIfAllowed(),t.preventDefault()},t.prototype.focus=function(){this.el.nativeElement.focus()},t.prototype.onFocus=function(){this._hasFocus=!0},t.prototype.onBlur=function(){this._hasFocus=!1,this.onTouched()},t.prototype.canToggle=function(){return!this.controlOrGroupDisabled&&(this.uncheckable||this.btnRadio!==this.value)},t.prototype.ngOnInit=function(){this.uncheckable=void 0!==this.uncheckable},t.prototype._onChange=function(t){this.group?this.group.value=t:(this.onTouched(),this.onChange(t))},t.prototype.writeValue=function(t){this.value=t,this.cdr.markForCheck()},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._disabled=t,t?this.renderer.setAttribute(this.el.nativeElement,"disabled","disabled"):this.renderer.removeAttribute(this.el.nativeElement,"disabled")},t.decorators=[{type:e.Directive,args:[{selector:"[btnRadio]",providers:[i]}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:e.ChangeDetectorRef},{type:e.Renderer2},{type:a,decorators:[{type:e.Optional},{type:e.Inject,args:[e.forwardRef((function(){return a}))]}]}]},t.propDecorators={btnRadio:[{type:e.Input}],uncheckable:[{type:e.Input}],value:[{type:e.Input}],disabled:[{type:e.Input}],controlOrGroupDisabled:[{type:e.HostBinding,args:["attr.aria-disabled"]}],hasDisabledClass:[{type:e.HostBinding,args:["class.disabled"]}],isActive:[{type:e.HostBinding,args:["class.active"]},{type:e.HostBinding,args:["attr.aria-checked"]}],role:[{type:e.HostBinding,args:["attr.role"]}],tabindex:[{type:e.HostBinding,args:["attr.tabindex"]}],toggleIfAllowed:[{type:e.HostListener,args:["click"]}],onSpacePressed:[{type:e.HostListener,args:["keydown.space",["$event"]]}],onFocus:[{type:e.HostListener,args:["focus"]}],onBlur:[{type:e.HostListener,args:["blur"]}]},t}();var u={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return a})),multi:!0},a=function(){function t(t){this.cdr=t,this.onChange=Function.prototype,this.onTouched=Function.prototype,this.role="radiogroup"}return Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){this._value=t,this.onChange(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tabindex",{get:function(){return this._disabled?null:0},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){this._value=t,this.cdr.markForCheck()},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this.radioButtons&&(this._disabled=t,this.radioButtons.forEach((function(e){e.setDisabledState(t)})),this.cdr.markForCheck())},t.prototype.onFocus=function(){if(!this._disabled){var t=this.getActiveOrFocusedRadio();if(t)t.focus();else{var e=this.radioButtons.find((function(t){return!t.disabled}));e&&e.focus()}}},t.prototype.onBlur=function(){this.onTouched&&this.onTouched()},t.prototype.selectNext=function(t){this.selectInDirection("next"),t.preventDefault()},t.prototype.selectPrevious=function(t){this.selectInDirection("previous"),t.preventDefault()},Object.defineProperty(t.prototype,"disabled",{get:function(){return this._disabled},enumerable:!0,configurable:!0}),t.prototype.selectInDirection=function(t){if(!this._disabled){var e=this.getActiveOrFocusedRadio();if(e)for(var o=this.radioButtons.toArray(),n=o.indexOf(e),r=i(n,o);r!==n;r=i(r,o))if(o[r].canToggle()){o[r].toggleIfAllowed(),o[r].focus();break}}function i(e,o){var n=(e+("next"===t?1:-1))%o.length;return n<0&&(n=o.length-1),n}},t.prototype.getActiveOrFocusedRadio=function(){return this.radioButtons.find((function(t){return t.isActive}))||this.radioButtons.find((function(t){return t.hasFocus}))},t.decorators=[{type:e.Directive,args:[{selector:"[btnRadioGroup]",providers:[u]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},t.propDecorators={role:[{type:e.HostBinding,args:["attr.role"]}],radioButtons:[{type:e.ContentChildren,args:[e.forwardRef((function(){return s}))]}],tabindex:[{type:e.HostBinding,args:["attr.tabindex"]}],onFocus:[{type:e.HostListener,args:["focus"]}],onBlur:[{type:e.HostListener,args:["blur"]}],selectNext:[{type:e.HostListener,args:["keydown.ArrowRight",["$event"]]},{type:e.HostListener,args:["keydown.ArrowDown",["$event"]]}],selectPrevious:[{type:e.HostListener,args:["keydown.ArrowLeft",["$event"]]},{type:e.HostListener,args:["keydown.ArrowUp",["$event"]]}]},t}();var c=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{declarations:[r,s,a],exports:[r,s,a]}]}],t}();t.ButtonCheckboxDirective=r,t.ButtonRadioDirective=s,t.ButtonRadioGroupDirective=a,t.ButtonsModule=c,t.ɵa=n,t.ɵb=u,t.ɵc=i,Object.defineProperty(t,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=ngx-bootstrap-buttons.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"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"],"names":["CHECKBOX_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","ButtonCheckboxDirective","multi","this","btnCheckboxTrue","btnCheckboxFalse","state","onChange","Function","prototype","onTouched","onClick","isDisabled","toggle","value","ngOnInit","trueValue","Object","defineProperty","falseValue","writeValue","setDisabledState","registerOnChange","fn","registerOnTouched","Directive","args","selector","providers","Input","HostBinding","type","HostListener","RADIO_CONTROL_VALUE_ACCESSOR","ButtonRadioDirective","el","cdr","group","renderer","_value","_disabled","disabled","btnRadio","nativeElement","attributes","uncheckable","undefined","_onChange","onBlur","markForCheck","setAttribute","removeAttribute","ElementRef","ChangeDetectorRef","ButtonRadioGroupDirective","decorators","Optional","Renderer2","radioButtons","forEach","buttons","ContentChildren","ButtonsModule","forRoot","ngModule","NgModule","declarations","exports"],"mappings":"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","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"]}
1
+ {"version":3,"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"],"names":["CHECKBOX_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","ButtonCheckboxDirective","multi","this","btnCheckboxTrue","btnCheckboxFalse","state","onChange","Function","prototype","onTouched","onClick","isDisabled","toggle","value","ngOnInit","trueValue","Object","defineProperty","falseValue","writeValue","setDisabledState","registerOnChange","fn","registerOnTouched","Directive","args","selector","providers","Input","HostBinding","type","HostListener","RADIO_CONTROL_VALUE_ACCESSOR","ButtonRadioDirective","el","cdr","renderer","group","role","_hasFocus","_value","_disabled","disabled","undefined","controlOrGroupDisabled","isActive","btnRadio","toggleIfAllowed","canToggle","uncheckable","_onChange","onSpacePressed","event","preventDefault","focus","nativeElement","onFocus","onBlur","markForCheck","setAttribute","removeAttribute","ElementRef","ChangeDetectorRef","Renderer2","ButtonRadioGroupDirective","decorators","Optional","Inject","radioButtons","forEach","buttons","activeRadio","getActiveOrFocusedRadio","firstEnabled","find","r","selectNext","selectInDirection","selectPrevious","direction","buttonRadioDirectives","toArray","currentActiveIndex","indexOf","i","nextIndex","currentIndex","calcIndex","length","button","hasFocus","ContentChildren","ButtonsModule","forRoot","ngModule","NgModule","declarations","exports"],"mappings":"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","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"]}
@@ -16,8 +16,8 @@ export declare class ButtonCheckboxDirective implements ControlValueAccessor, On
16
16
  protected onTouched: Function;
17
17
  onClick(): void;
18
18
  ngOnInit(): void;
19
- protected readonly trueValue: boolean;
20
- protected readonly falseValue: boolean;
19
+ protected get trueValue(): boolean;
20
+ protected get falseValue(): boolean;
21
21
  toggle(state: boolean): void;
22
22
  writeValue(value: boolean | string | null): void;
23
23
  setDisabledState(isDisabled: boolean): void;
@@ -10,12 +10,23 @@ export declare class ButtonRadioGroupDirective implements ControlValueAccessor {
10
10
  private cdr;
11
11
  onChange: Function;
12
12
  onTouched: Function;
13
+ readonly role: string;
13
14
  radioButtons: QueryList<ButtonRadioDirective>;
14
- value: string | null;
15
+ get value(): string | null;
16
+ set value(value: string | null);
15
17
  private _value;
18
+ private _disabled;
19
+ get tabindex(): null | number;
16
20
  constructor(cdr: ChangeDetectorRef);
17
21
  writeValue(value: string | null): void;
18
22
  registerOnChange(fn: () => {}): void;
19
23
  registerOnTouched(fn: () => {}): void;
20
24
  setDisabledState(disabled: boolean): void;
25
+ onFocus(): void;
26
+ onBlur(): void;
27
+ selectNext(event: KeyboardEvent): void;
28
+ selectPrevious(event: KeyboardEvent): void;
29
+ get disabled(): boolean;
30
+ private selectInDirection;
31
+ private getActiveOrFocusedRadio;
21
32
  }
@@ -9,8 +9,8 @@ export declare const RADIO_CONTROL_VALUE_ACCESSOR: Provider;
9
9
  export declare class ButtonRadioDirective implements ControlValueAccessor, OnInit {
10
10
  private el;
11
11
  private cdr;
12
- private group;
13
12
  private renderer;
13
+ private group;
14
14
  onChange: Function;
15
15
  onTouched: Function;
16
16
  /** Radio button value, will be set to `ngModel` */
@@ -18,16 +18,28 @@ export declare class ButtonRadioDirective implements ControlValueAccessor, OnIni
18
18
  /** If `true` — radio button can be unchecked */
19
19
  uncheckable: boolean;
20
20
  /** Current value of radio component or group */
21
- value: null | string;
21
+ get value(): null | string;
22
+ set value(value: null | string);
22
23
  /** If `true` — radio button is disabled */
23
- disabled: boolean;
24
- readonly isActive: boolean;
24
+ get disabled(): boolean;
25
+ set disabled(disabled: boolean);
26
+ get controlOrGroupDisabled(): boolean;
27
+ get hasDisabledClass(): boolean;
28
+ get isActive(): boolean;
29
+ readonly role: string;
30
+ get tabindex(): undefined | number;
31
+ get hasFocus(): boolean;
25
32
  private _value;
26
33
  private _disabled;
27
- constructor(el: ElementRef, cdr: ChangeDetectorRef, group: ButtonRadioGroupDirective, renderer: Renderer2);
28
- onClick(): void;
29
- ngOnInit(): void;
34
+ private _hasFocus;
35
+ constructor(el: ElementRef, cdr: ChangeDetectorRef, renderer: Renderer2, group: ButtonRadioGroupDirective);
36
+ toggleIfAllowed(): void;
37
+ onSpacePressed(event: KeyboardEvent): void;
38
+ focus(): void;
39
+ onFocus(): void;
30
40
  onBlur(): void;
41
+ canToggle(): boolean;
42
+ ngOnInit(): void;
31
43
  _onChange(value: string): void;
32
44
  writeValue(value: string): void;
33
45
  registerOnChange(fn: () => {}): void;
@@ -1,4 +1,4 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
2
  export declare class ButtonsModule {
3
- static forRoot(): ModuleWithProviders;
3
+ static forRoot(): ModuleWithProviders<ButtonsModule>;
4
4
  }
@@ -2,7 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { ChangeDetectorRef, ContentChildren, Directive, forwardRef, QueryList } from '@angular/core';
5
+ import { ChangeDetectorRef, ContentChildren, Directive, forwardRef, HostBinding, HostListener, QueryList } from '@angular/core';
6
6
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { ButtonRadioDirective } from './button-radio.directive';
8
8
  /** @type {?} */
@@ -27,6 +27,7 @@ export class ButtonRadioGroupDirective {
27
27
  this.cdr = cdr;
28
28
  this.onChange = Function.prototype;
29
29
  this.onTouched = Function.prototype;
30
+ this.role = 'radiogroup';
30
31
  }
31
32
  /**
32
33
  * @return {?}
@@ -40,6 +41,18 @@ export class ButtonRadioGroupDirective {
40
41
  */
41
42
  set value(value) {
42
43
  this._value = value;
44
+ this.onChange(value);
45
+ }
46
+ /**
47
+ * @return {?}
48
+ */
49
+ get tabindex() {
50
+ if (this._disabled) {
51
+ return null;
52
+ }
53
+ else {
54
+ return 0;
55
+ }
43
56
  }
44
57
  /**
45
58
  * @param {?} value
@@ -69,6 +82,7 @@ export class ButtonRadioGroupDirective {
69
82
  */
70
83
  setDisabledState(disabled) {
71
84
  if (this.radioButtons) {
85
+ this._disabled = disabled;
72
86
  this.radioButtons.forEach((/**
73
87
  * @param {?} buttons
74
88
  * @return {?}
@@ -76,7 +90,117 @@ export class ButtonRadioGroupDirective {
76
90
  buttons => {
77
91
  buttons.setDisabledState(disabled);
78
92
  }));
93
+ this.cdr.markForCheck();
94
+ }
95
+ }
96
+ /**
97
+ * @return {?}
98
+ */
99
+ onFocus() {
100
+ if (this._disabled) {
101
+ return;
102
+ }
103
+ /** @type {?} */
104
+ const activeRadio = this.getActiveOrFocusedRadio();
105
+ if (activeRadio) {
106
+ activeRadio.focus();
107
+ }
108
+ else {
109
+ /** @type {?} */
110
+ const firstEnabled = this.radioButtons.find((/**
111
+ * @param {?} r
112
+ * @return {?}
113
+ */
114
+ r => !r.disabled));
115
+ if (firstEnabled) {
116
+ firstEnabled.focus();
117
+ }
118
+ }
119
+ }
120
+ /**
121
+ * @return {?}
122
+ */
123
+ onBlur() {
124
+ if (this.onTouched) {
125
+ this.onTouched();
126
+ }
127
+ }
128
+ /**
129
+ * @param {?} event
130
+ * @return {?}
131
+ */
132
+ selectNext(event) {
133
+ this.selectInDirection('next');
134
+ event.preventDefault();
135
+ }
136
+ /**
137
+ * @param {?} event
138
+ * @return {?}
139
+ */
140
+ selectPrevious(event) {
141
+ this.selectInDirection('previous');
142
+ event.preventDefault();
143
+ }
144
+ /**
145
+ * @return {?}
146
+ */
147
+ get disabled() {
148
+ return this._disabled;
149
+ }
150
+ /**
151
+ * @private
152
+ * @param {?} direction
153
+ * @return {?}
154
+ */
155
+ selectInDirection(direction) {
156
+ if (this._disabled) {
157
+ return;
79
158
  }
159
+ /**
160
+ * @param {?} currentIndex
161
+ * @param {?} buttonRadioDirectives
162
+ * @return {?}
163
+ */
164
+ function nextIndex(currentIndex, buttonRadioDirectives) {
165
+ /** @type {?} */
166
+ const step = direction === 'next' ? 1 : -1;
167
+ /** @type {?} */
168
+ let calcIndex = (currentIndex + step) % buttonRadioDirectives.length;
169
+ if (calcIndex < 0) {
170
+ calcIndex = buttonRadioDirectives.length - 1;
171
+ }
172
+ return calcIndex;
173
+ }
174
+ /** @type {?} */
175
+ const activeRadio = this.getActiveOrFocusedRadio();
176
+ if (activeRadio) {
177
+ /** @type {?} */
178
+ const buttonRadioDirectives = this.radioButtons.toArray();
179
+ /** @type {?} */
180
+ const currentActiveIndex = buttonRadioDirectives.indexOf(activeRadio);
181
+ for (let i = nextIndex(currentActiveIndex, buttonRadioDirectives); i !== currentActiveIndex; i = nextIndex(i, buttonRadioDirectives)) {
182
+ if (buttonRadioDirectives[i].canToggle()) {
183
+ buttonRadioDirectives[i].toggleIfAllowed();
184
+ buttonRadioDirectives[i].focus();
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * @private
192
+ * @return {?}
193
+ */
194
+ getActiveOrFocusedRadio() {
195
+ return this.radioButtons.find((/**
196
+ * @param {?} button
197
+ * @return {?}
198
+ */
199
+ button => button.isActive)) || this.radioButtons.find((/**
200
+ * @param {?} button
201
+ * @return {?}
202
+ */
203
+ button => button.hasFocus));
80
204
  }
81
205
  }
82
206
  ButtonRadioGroupDirective.decorators = [
@@ -90,10 +214,16 @@ ButtonRadioGroupDirective.ctorParameters = () => [
90
214
  { type: ChangeDetectorRef }
91
215
  ];
92
216
  ButtonRadioGroupDirective.propDecorators = {
217
+ role: [{ type: HostBinding, args: ['attr.role',] }],
93
218
  radioButtons: [{ type: ContentChildren, args: [forwardRef((/**
94
219
  * @return {?}
95
220
  */
96
- () => ButtonRadioDirective)),] }]
221
+ () => ButtonRadioDirective)),] }],
222
+ tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],
223
+ onFocus: [{ type: HostListener, args: ['focus',] }],
224
+ onBlur: [{ type: HostListener, args: ['blur',] }],
225
+ selectNext: [{ type: HostListener, args: ['keydown.ArrowRight', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }],
226
+ selectPrevious: [{ type: HostListener, args: ['keydown.ArrowLeft', ['$event'],] }, { type: HostListener, args: ['keydown.ArrowUp', ['$event'],] }]
97
227
  };
98
228
  if (false) {
99
229
  /** @type {?} */
@@ -101,16 +231,23 @@ if (false) {
101
231
  /** @type {?} */
102
232
  ButtonRadioGroupDirective.prototype.onTouched;
103
233
  /** @type {?} */
234
+ ButtonRadioGroupDirective.prototype.role;
235
+ /** @type {?} */
104
236
  ButtonRadioGroupDirective.prototype.radioButtons;
105
237
  /**
106
238
  * @type {?}
107
239
  * @private
108
240
  */
109
241
  ButtonRadioGroupDirective.prototype._value;
242
+ /**
243
+ * @type {?}
244
+ * @private
245
+ */
246
+ ButtonRadioGroupDirective.prototype._disabled;
110
247
  /**
111
248
  * @type {?}
112
249
  * @private
113
250
  */
114
251
  ButtonRadioGroupDirective.prototype.cdr;
115
252
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJhZGlvLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvYnV0dG9ucy8iLCJzb3VyY2VzIjpbImJ1dHRvbi1yYWRpby1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBRVYsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFaEUsTUFBTSxPQUFPLDRCQUE0QixHQUFhO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7O0lBRTFCLFdBQVcsRUFBRSxVQUFVOzs7SUFBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsRUFBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaOzs7OztBQVVELE1BQU0sT0FBTyx5QkFBeUI7Ozs7SUFlcEMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFkMUMsYUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsY0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFhYyxDQUFDOzs7O0lBVDlDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzs7OztJQUNELElBQUksS0FBSyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBTUQsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFZO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsaUJBQWlCLENBQUMsRUFBWTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLFFBQWlCO1FBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87Ozs7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUF4Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2FBQzFDOzs7O1lBekJDLGlCQUFpQjs7OzJCQThCaEIsZUFBZSxTQUFDLFVBQVU7OztnQkFBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBQzs7OztJQUh2RCw2Q0FBOEI7O0lBQzlCLDhDQUErQjs7SUFFL0IsaURBQXVHOzs7OztJQVN2RywyQ0FBOEI7Ozs7O0lBRWxCLHdDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnV0dG9uUmFkaW9EaXJlY3RpdmUgfSBmcm9tICcuL2J1dHRvbi1yYWRpby5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgUkFESU9fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVzZS1iZWZvcmUtZGVjbGFyZSAqL1xuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCdXR0b25SYWRpb0dyb3VwRGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQSBncm91cCBvZiByYWRpbyBidXR0b25zLlxuICogQSB2YWx1ZSBvZiBhIHNlbGVjdGVkIGJ1dHRvbiBpcyBib3VuZCB0byBhIHZhcmlhYmxlIHNwZWNpZmllZCB2aWEgbmdNb2RlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2J0blJhZGlvR3JvdXBdJyxcbiAgcHJvdmlkZXJzOiBbUkFESU9fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uUmFkaW9Hcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2UgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIG9uVG91Y2hlZCA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQnV0dG9uUmFkaW9EaXJlY3RpdmUpKSByYWRpb0J1dHRvbnM6IFF1ZXJ5TGlzdDxCdXR0b25SYWRpb0RpcmVjdGl2ZT47XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvQnV0dG9ucykge1xuICAgICAgdGhpcy5yYWRpb0J1dHRvbnMuZm9yRWFjaChidXR0b25zID0+IHtcbiAgICAgICAgYnV0dG9ucy5zZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJhZGlvLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvYnV0dG9ucy8iLCJzb3VyY2VzIjpbImJ1dHRvbi1yYWRpby1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFFWixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVoRSxNQUFNLE9BQU8sNEJBQTRCLEdBQWE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjs7SUFFMUIsV0FBVyxFQUFFLFVBQVU7OztJQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixFQUFDO0lBQ3hELEtBQUssRUFBRSxJQUFJO0NBQ1o7Ozs7O0FBVUQsTUFBTSxPQUFPLHlCQUF5Qjs7OztJQThCcEMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE3QjFDLGFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRUksU0FBSSxHQUFXLFlBQVksQ0FBQztJQTBCbEIsQ0FBQzs7OztJQXJCOUMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDOzs7O0lBTUQsSUFDSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMs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WUFBWSxTQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQzVDLFlBQVksU0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQXJGM0MsNkNBQThCOztJQUM5Qiw4Q0FBK0I7O0lBRS9CLHlDQUErRDs7SUFFL0QsaURBQzhDOzs7OztJQVU5QywyQ0FBOEI7Ozs7O0lBRTlCLDhDQUEyQjs7Ozs7SUFXZix3Q0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIFByb3ZpZGVyLFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25SYWRpb0RpcmVjdGl2ZSB9IGZyb20gJy4vYnV0dG9uLXJhZGlvLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBSQURJT19DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdXNlLWJlZm9yZS1kZWNsYXJlICovXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJ1dHRvblJhZGlvR3JvdXBEaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBBIGdyb3VwIG9mIHJhZGlvIGJ1dHRvbnMuXG4gKiBBIHZhbHVlIG9mIGEgc2VsZWN0ZWQgYnV0dG9uIGlzIGJvdW5kIHRvIGEgdmFyaWFibGUgc3BlY2lmaWVkIHZpYSBuZ01vZGVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnRuUmFkaW9Hcm91cF0nLFxuICBwcm92aWRlcnM6IFtSQURJT19DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25SYWRpb0dyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgb25Ub3VjaGVkID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcmVhZG9ubHkgcm9sZTogc3RyaW5nID0gJ3JhZGlvZ3JvdXAnO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBCdXR0b25SYWRpb0RpcmVjdGl2ZSkpXG4gIHJhZGlvQnV0dG9uczogUXVlcnlMaXN0PEJ1dHRvblJhZGlvRGlyZWN0aXZlPjtcblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgbnVsbDtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBnZXQgdGFiaW5kZXgoKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvQnV0dG9ucykge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIHRoaXMucmFkaW9CdXR0b25zLmZvckVhY2goYnV0dG9ucyA9PiB7XG4gICAgICAgIGJ1dHRvbnMuc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgb25Gb2N1cygpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlUmFkaW8gPSB0aGlzLmdldEFjdGl2ZU9yRm9jdXNlZFJhZGlvKCk7XG4gICAgaWYgKGFjdGl2ZVJhZGlvKSB7XG4gICAgICBhY3RpdmVSYWRpby5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdEVuYWJsZWQgPSB0aGlzLnJhZGlvQnV0dG9ucy5maW5kKHIgPT4gIXIuZGlzYWJsZWQpO1xuICAgICAgaWYgKGZpcnN0RW5hYmxlZCkge1xuICAgICAgICBmaXJzdEVuYWJsZWQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93UmlnaHQnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIHNlbGVjdE5leHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdEluRGlyZWN0aW9uKCduZXh0Jyk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dMZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgc2VsZWN0UHJldmlvdXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdEluRGlyZWN0aW9uKCdwcmV2aW91cycpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJbkRpcmVjdGlvbihkaXJlY3Rpb246ICduZXh0JyB8ICdwcmV2aW91cycpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbmV4dEluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyLCBidXR0b25SYWRpb0RpcmVjdGl2ZXM6IEJ1dHRvblJhZGlvRGlyZWN0aXZlW10pIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBkaXJlY3Rpb24gPT09ICduZXh0JyA/IDEgOiAtMTtcbiAgICAgIGxldCBjYWxjSW5kZXggPSAoY3VycmVudEluZGV4ICsgc3RlcCkgJSBidXR0b25SYWRpb0RpcmVjdGl2ZXMubGVuZ3RoO1xuICAgICAgaWYgKGNhbGNJbmRleCA8IDApIHtcbiAgICAgICAgY2FsY0luZGV4ID0gYnV0dG9uUmFkaW9EaXJlY3RpdmVzLmxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWxjSW5kZXg7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZVJhZGlvID0gdGhpcy5nZXRBY3RpdmVPckZvY3VzZWRSYWRpbygpO1xuXG4gICAgaWYgKGFjdGl2ZVJhZGlvKSB7XG4gICAgICBjb25zdCBidXR0b25SYWRpb0RpcmVjdGl2ZXMgPSB0aGlzLnJhZGlvQnV0dG9ucy50b0FycmF5KCk7XG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlSW5kZXggPSBidXR0b25SYWRpb0RpcmVjdGl2ZXMuaW5kZXhPZihhY3RpdmVSYWRpbyk7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgaSA9IG5leHRJbmRleChjdXJyZW50QWN0aXZlSW5kZXgsIGJ1dHRvblJhZGlvRGlyZWN0aXZlcyk7XG4gICAgICAgIGkgIT09IGN1cnJlbnRBY3RpdmVJbmRleDtcbiAgICAgICAgaSA9IG5leHRJbmRleChpLCBidXR0b25SYWRpb0RpcmVjdGl2ZXMpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGJ1dHRvblJhZGlvRGlyZWN0aXZlc1tpXS5jYW5Ub2dnbGUoKSkge1xuICAgICAgICAgIGJ1dHRvblJhZGlvRGlyZWN0aXZlc1tpXS50b2dnbGVJZkFsbG93ZWQoKTtcbiAgICAgICAgICBidXR0b25SYWRpb0RpcmVjdGl2ZXNbaV0uZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlT3JGb2N1c2VkUmFkaW8oKTogQnV0dG9uUmFkaW9EaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJhZGlvQnV0dG9ucy5maW5kKGJ1dHRvbiA9PiBidXR0b24uaXNBY3RpdmUpIHx8IHRoaXMucmFkaW9CdXR0b25zLmZpbmQoYnV0dG9uID0+IGJ1dHRvbi5oYXNGb2N1cyk7XG4gIH1cbn1cbiJdfQ==