@taiga-ui/kit 2.32.0 → 2.33.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 (428) hide show
  1. package/bundles/taiga-ui-kit-components-accordion.umd.js +1 -1
  2. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-accordion.umd.min.js +1 -1
  4. package/bundles/taiga-ui-kit-components-accordion.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-avatar.umd.js +1 -1
  6. package/bundles/taiga-ui-kit-components-avatar.umd.min.js +1 -1
  7. package/bundles/taiga-ui-kit-components-avatar.umd.min.js.map +1 -1
  8. package/bundles/taiga-ui-kit-components-combo-box.umd.js +59 -22
  9. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  10. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js +2 -2
  11. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js.map +1 -1
  12. package/bundles/taiga-ui-kit-components-input-copy.umd.js +47 -17
  13. package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
  14. package/bundles/taiga-ui-kit-components-input-copy.umd.min.js +2 -2
  15. package/bundles/taiga-ui-kit-components-input-copy.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-kit-components-input-count.umd.js +36 -3
  17. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  18. package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
  19. package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
  20. package/bundles/taiga-ui-kit-components-input-date-range.umd.js +69 -25
  21. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  22. package/bundles/taiga-ui-kit-components-input-date-range.umd.min.js +2 -2
  23. package/bundles/taiga-ui-kit-components-input-date-range.umd.min.js.map +1 -1
  24. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +70 -26
  25. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  26. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js +2 -2
  27. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js.map +1 -1
  28. package/bundles/taiga-ui-kit-components-input-date.umd.js +65 -25
  29. package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
  30. package/bundles/taiga-ui-kit-components-input-date.umd.min.js +2 -2
  31. package/bundles/taiga-ui-kit-components-input-date.umd.min.js.map +1 -1
  32. package/bundles/taiga-ui-kit-components-input-month-range.umd.js +52 -3
  33. package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
  34. package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js +1 -1
  35. package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js.map +1 -1
  36. package/bundles/taiga-ui-kit-components-input-month.umd.js +48 -3
  37. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  38. package/bundles/taiga-ui-kit-components-input-month.umd.min.js +1 -1
  39. package/bundles/taiga-ui-kit-components-input-month.umd.min.js.map +1 -1
  40. package/bundles/taiga-ui-kit-components-input-number.umd.js +44 -4
  41. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  42. package/bundles/taiga-ui-kit-components-input-number.umd.min.js +2 -2
  43. package/bundles/taiga-ui-kit-components-input-number.umd.min.js.map +1 -1
  44. package/bundles/taiga-ui-kit-components-input-password.umd.js +44 -3
  45. package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
  46. package/bundles/taiga-ui-kit-components-input-password.umd.min.js +1 -1
  47. package/bundles/taiga-ui-kit-components-input-password.umd.min.js.map +1 -1
  48. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +14 -5
  49. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  50. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js +1 -1
  51. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js.map +1 -1
  52. package/bundles/taiga-ui-kit-components-input-phone.umd.js +58 -22
  53. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  54. package/bundles/taiga-ui-kit-components-input-phone.umd.min.js +1 -1
  55. package/bundles/taiga-ui-kit-components-input-phone.umd.min.js.map +1 -1
  56. package/bundles/taiga-ui-kit-components-input-range.umd.js +1 -1
  57. package/bundles/taiga-ui-kit-components-input-range.umd.min.js +2 -2
  58. package/bundles/taiga-ui-kit-components-input-range.umd.min.js.map +1 -1
  59. package/bundles/taiga-ui-kit-components-input-slider.umd.js +1 -1
  60. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js +1 -1
  61. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js.map +1 -1
  62. package/bundles/taiga-ui-kit-components-input-tag.umd.js +2 -2
  63. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  64. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js +1 -1
  65. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js.map +1 -1
  66. package/bundles/taiga-ui-kit-components-input.umd.js +32 -3
  67. package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
  68. package/bundles/taiga-ui-kit-components-input.umd.min.js +1 -1
  69. package/bundles/taiga-ui-kit-components-input.umd.min.js.map +1 -1
  70. package/bundles/taiga-ui-kit-components-multi-select.umd.js +1 -0
  71. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  72. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js +1 -1
  73. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js.map +1 -1
  74. package/bundles/taiga-ui-kit-components-select.umd.js +66 -22
  75. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  76. package/bundles/taiga-ui-kit-components-select.umd.min.js +1 -1
  77. package/bundles/taiga-ui-kit-components-select.umd.min.js.map +1 -1
  78. package/bundles/taiga-ui-kit-components-stepper.umd.js +1 -1
  79. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  80. package/bundles/taiga-ui-kit-components-stepper.umd.min.js +1 -1
  81. package/bundles/taiga-ui-kit-components-stepper.umd.min.js.map +1 -1
  82. package/bundles/taiga-ui-kit-components-tabs.umd.js +1 -1
  83. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  84. package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
  85. package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
  86. package/bundles/taiga-ui-kit-components-tag.umd.js +2 -2
  87. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  88. package/bundles/taiga-ui-kit-components-tag.umd.min.js +1 -1
  89. package/bundles/taiga-ui-kit-components-tag.umd.min.js.map +1 -1
  90. package/bundles/taiga-ui-kit-components-text-area.umd.js +6 -4
  91. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  92. package/bundles/taiga-ui-kit-components-text-area.umd.min.js +1 -1
  93. package/bundles/taiga-ui-kit-components-text-area.umd.min.js.map +1 -1
  94. package/bundles/taiga-ui-kit-providers.umd.js +6 -5
  95. package/bundles/taiga-ui-kit-providers.umd.js.map +1 -1
  96. package/bundles/taiga-ui-kit-providers.umd.min.js +1 -1
  97. package/bundles/taiga-ui-kit-providers.umd.min.js.map +1 -1
  98. package/bundles/taiga-ui-kit-utils-mask.umd.js +8 -11
  99. package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
  100. package/bundles/taiga-ui-kit-utils-mask.umd.min.js +1 -1
  101. package/bundles/taiga-ui-kit-utils-mask.umd.min.js.map +1 -1
  102. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js +1 -1
  103. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js.map +1 -1
  104. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.min.js +1 -1
  105. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.min.js.map +1 -1
  106. package/components/accordion/taiga-ui-kit-components-accordion.metadata.json +1 -1
  107. package/components/avatar/taiga-ui-kit-components-avatar.metadata.json +1 -1
  108. package/components/combo-box/combo-box.component.d.ts +1 -2
  109. package/components/combo-box/combo-box.directive.d.ts +6 -0
  110. package/components/combo-box/combo-box.providers.d.ts +2 -0
  111. package/components/combo-box/index.d.ts +2 -0
  112. package/components/combo-box/taiga-ui-kit-components-combo-box.metadata.json +1 -1
  113. package/components/input/index.d.ts +1 -0
  114. package/components/input/input.directive.d.ts +5 -0
  115. package/components/input/taiga-ui-kit-components-input.metadata.json +1 -1
  116. package/components/input-copy/index.d.ts +2 -0
  117. package/components/input-copy/input-copy.directive.d.ts +5 -0
  118. package/components/input-copy/input-copy.providers.d.ts +2 -0
  119. package/components/input-copy/taiga-ui-kit-components-input-copy.metadata.json +1 -1
  120. package/components/input-count/index.d.ts +1 -0
  121. package/components/input-count/input-count.directive.d.ts +6 -0
  122. package/components/input-count/taiga-ui-kit-components-input-count.metadata.json +1 -1
  123. package/components/input-date/index.d.ts +2 -0
  124. package/components/input-date/input-date.component.d.ts +0 -1
  125. package/components/input-date/input-date.directive.d.ts +7 -0
  126. package/components/input-date/input-date.providers.d.ts +4 -0
  127. package/components/input-date/taiga-ui-kit-components-input-date.metadata.json +1 -1
  128. package/components/input-date-range/index.d.ts +2 -0
  129. package/components/input-date-range/input-date-range.component.d.ts +0 -1
  130. package/components/input-date-range/input-date-range.directive.d.ts +7 -0
  131. package/components/input-date-range/input-date-range.providers.d.ts +4 -0
  132. package/components/input-date-range/taiga-ui-kit-components-input-date-range.metadata.json +1 -1
  133. package/components/input-date-time/index.d.ts +2 -0
  134. package/components/input-date-time/input-date-time.component.d.ts +0 -1
  135. package/components/input-date-time/input-date-time.directive.d.ts +7 -0
  136. package/components/input-date-time/input-date-time.providers.d.ts +4 -0
  137. package/components/input-date-time/taiga-ui-kit-components-input-date-time.metadata.json +1 -1
  138. package/components/input-month/index.d.ts +1 -0
  139. package/components/input-month/input-month.component.d.ts +2 -2
  140. package/components/input-month/input-month.directive.d.ts +7 -0
  141. package/components/input-month/taiga-ui-kit-components-input-month.metadata.json +1 -1
  142. package/components/input-month-range/index.d.ts +1 -0
  143. package/components/input-month-range/input-month-range.component.d.ts +2 -2
  144. package/components/input-month-range/input-month-range.directive.d.ts +7 -0
  145. package/components/input-month-range/taiga-ui-kit-components-input-month-range.metadata.json +1 -1
  146. package/components/input-number/index.d.ts +1 -0
  147. package/components/input-number/input-number.component.d.ts +1 -1
  148. package/components/input-number/input-number.directive.d.ts +7 -0
  149. package/components/input-number/taiga-ui-kit-components-input-number.metadata.json +1 -1
  150. package/components/input-password/index.d.ts +1 -0
  151. package/components/input-password/input-password.directive.d.ts +8 -0
  152. package/components/input-password/taiga-ui-kit-components-input-password.metadata.json +1 -1
  153. package/components/input-phone/index.d.ts +1 -0
  154. package/components/input-phone/input-phone.component.d.ts +1 -1
  155. package/components/input-phone/input-phone.directive.d.ts +7 -0
  156. package/components/input-phone/taiga-ui-kit-components-input-phone.metadata.json +1 -1
  157. package/components/input-phone-international/input-phone-international.component.d.ts +2 -1
  158. package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.metadata.json +1 -1
  159. package/components/input-range/taiga-ui-kit-components-input-range.metadata.json +1 -1
  160. package/components/input-slider/taiga-ui-kit-components-input-slider.metadata.json +1 -1
  161. package/components/input-tag/taiga-ui-kit-components-input-tag.metadata.json +1 -1
  162. package/components/multi-select/taiga-ui-kit-components-multi-select.metadata.json +1 -1
  163. package/components/select/index.d.ts +2 -0
  164. package/components/select/select.component.d.ts +0 -1
  165. package/components/select/select.directive.d.ts +7 -0
  166. package/components/select/select.providers.d.ts +2 -0
  167. package/components/select/taiga-ui-kit-components-select.metadata.json +1 -1
  168. package/components/stepper/taiga-ui-kit-components-stepper.metadata.json +1 -1
  169. package/components/tabs/taiga-ui-kit-components-tabs.metadata.json +1 -1
  170. package/components/tag/taiga-ui-kit-components-tag.metadata.json +1 -1
  171. package/components/text-area/taiga-ui-kit-components-text-area.metadata.json +1 -1
  172. package/esm2015/components/accordion/accordion.component.js +3 -3
  173. package/esm2015/components/avatar/avatar.component.js +1 -1
  174. package/esm2015/components/combo-box/combo-box.component.js +10 -28
  175. package/esm2015/components/combo-box/combo-box.directive.js +25 -0
  176. package/esm2015/components/combo-box/combo-box.module.js +5 -4
  177. package/esm2015/components/combo-box/combo-box.providers.js +28 -0
  178. package/esm2015/components/combo-box/index.js +3 -1
  179. package/esm2015/components/input/index.js +2 -1
  180. package/esm2015/components/input/input.component.js +2 -2
  181. package/esm2015/components/input/input.directive.js +22 -0
  182. package/esm2015/components/input/input.module.js +5 -4
  183. package/esm2015/components/input/input.providers.js +6 -2
  184. package/esm2015/components/input-copy/index.js +3 -1
  185. package/esm2015/components/input-copy/input-copy.component.js +8 -15
  186. package/esm2015/components/input-copy/input-copy.directive.js +22 -0
  187. package/esm2015/components/input-copy/input-copy.module.js +5 -4
  188. package/esm2015/components/input-copy/input-copy.providers.js +16 -0
  189. package/esm2015/components/input-count/index.js +2 -1
  190. package/esm2015/components/input-count/input-count.component.js +6 -2
  191. package/esm2015/components/input-count/input-count.directive.js +26 -0
  192. package/esm2015/components/input-count/input-count.module.js +5 -4
  193. package/esm2015/components/input-date/index.js +3 -1
  194. package/esm2015/components/input-date/input-date.component.js +9 -27
  195. package/esm2015/components/input-date/input-date.directive.js +28 -0
  196. package/esm2015/components/input-date/input-date.module.js +5 -4
  197. package/esm2015/components/input-date/input-date.providers.js +29 -0
  198. package/esm2015/components/input-date-range/index.js +3 -1
  199. package/esm2015/components/input-date-range/input-date-range.component.js +9 -27
  200. package/esm2015/components/input-date-range/input-date-range.directive.js +28 -0
  201. package/esm2015/components/input-date-range/input-date-range.module.js +9 -4
  202. package/esm2015/components/input-date-range/input-date-range.providers.js +29 -0
  203. package/esm2015/components/input-date-time/index.js +3 -1
  204. package/esm2015/components/input-date-time/input-date-time.component.js +10 -28
  205. package/esm2015/components/input-date-time/input-date-time.directive.js +28 -0
  206. package/esm2015/components/input-date-time/input-date-time.module.js +9 -4
  207. package/esm2015/components/input-date-time/input-date-time.providers.js +29 -0
  208. package/esm2015/components/input-month/index.js +2 -1
  209. package/esm2015/components/input-month/input-month.component.js +7 -3
  210. package/esm2015/components/input-month/input-month.directive.js +30 -0
  211. package/esm2015/components/input-month/input-month.module.js +5 -4
  212. package/esm2015/components/input-month-range/index.js +2 -1
  213. package/esm2015/components/input-month-range/input-month-range.component.js +7 -3
  214. package/esm2015/components/input-month-range/input-month-range.directive.js +30 -0
  215. package/esm2015/components/input-month-range/input-month-range.module.js +9 -4
  216. package/esm2015/components/input-number/index.js +2 -1
  217. package/esm2015/components/input-number/input-number.component.js +8 -4
  218. package/esm2015/components/input-number/input-number.directive.js +29 -0
  219. package/esm2015/components/input-number/input-number.module.js +5 -4
  220. package/esm2015/components/input-password/index.js +2 -1
  221. package/esm2015/components/input-password/input-password.component.js +6 -2
  222. package/esm2015/components/input-password/input-password.directive.js +30 -0
  223. package/esm2015/components/input-password/input-password.module.js +9 -4
  224. package/esm2015/components/input-phone/index.js +2 -1
  225. package/esm2015/components/input-phone/input-phone.component.js +13 -24
  226. package/esm2015/components/input-phone/input-phone.directive.js +29 -0
  227. package/esm2015/components/input-phone/input-phone.module.js +5 -4
  228. package/esm2015/components/input-phone/input-phone.providers.js +17 -3
  229. package/esm2015/components/input-phone-international/input-phone-international.component.js +11 -6
  230. package/esm2015/components/input-range/input-range.component.js +1 -1
  231. package/esm2015/components/input-slider/input-slider.component.js +1 -1
  232. package/esm2015/components/input-tag/input-tag.component.js +3 -3
  233. package/esm2015/components/multi-select/multi-select.module.js +3 -1
  234. package/esm2015/components/select/index.js +3 -1
  235. package/esm2015/components/select/select.component.js +10 -28
  236. package/esm2015/components/select/select.directive.js +28 -0
  237. package/esm2015/components/select/select.module.js +5 -4
  238. package/esm2015/components/select/select.providers.js +28 -0
  239. package/esm2015/components/stepper/step/step.component.js +3 -3
  240. package/esm2015/components/tabs/tab/tab.providers.js +3 -3
  241. package/esm2015/components/tag/tag.component.js +3 -3
  242. package/esm2015/components/text-area/text-area.component.js +7 -4
  243. package/esm2015/components/text-area/text-area.module.js +2 -3
  244. package/esm2015/providers/value-accessor.provider.js +3 -2
  245. package/esm2015/utils/mask/create-auto-corrected-time-pipe.js +6 -8
  246. package/esm2015/utils/mask/create-time-mask.js +8 -11
  247. package/esm2015/utils/miscellaneous/get-precision.js +2 -2
  248. package/esm5/components/accordion/accordion.component.js +3 -3
  249. package/esm5/components/avatar/avatar.component.js +1 -1
  250. package/esm5/components/combo-box/combo-box.component.js +9 -28
  251. package/esm5/components/combo-box/combo-box.directive.js +35 -0
  252. package/esm5/components/combo-box/combo-box.module.js +5 -4
  253. package/esm5/components/combo-box/combo-box.providers.js +28 -0
  254. package/esm5/components/combo-box/index.js +3 -1
  255. package/esm5/components/input/index.js +2 -1
  256. package/esm5/components/input/input.component.js +2 -2
  257. package/esm5/components/input/input.directive.js +28 -0
  258. package/esm5/components/input/input.module.js +5 -4
  259. package/esm5/components/input/input.providers.js +6 -2
  260. package/esm5/components/input-copy/index.js +3 -1
  261. package/esm5/components/input-copy/input-copy.component.js +7 -15
  262. package/esm5/components/input-copy/input-copy.directive.js +28 -0
  263. package/esm5/components/input-copy/input-copy.module.js +5 -4
  264. package/esm5/components/input-copy/input-copy.providers.js +16 -0
  265. package/esm5/components/input-count/index.js +2 -1
  266. package/esm5/components/input-count/input-count.component.js +6 -2
  267. package/esm5/components/input-count/input-count.directive.js +32 -0
  268. package/esm5/components/input-count/input-count.module.js +5 -4
  269. package/esm5/components/input-date/index.js +3 -1
  270. package/esm5/components/input-date/input-date.component.js +8 -27
  271. package/esm5/components/input-date/input-date.directive.js +38 -0
  272. package/esm5/components/input-date/input-date.module.js +5 -4
  273. package/esm5/components/input-date/input-date.providers.js +29 -0
  274. package/esm5/components/input-date-range/index.js +3 -1
  275. package/esm5/components/input-date-range/input-date-range.component.js +8 -27
  276. package/esm5/components/input-date-range/input-date-range.directive.js +38 -0
  277. package/esm5/components/input-date-range/input-date-range.module.js +9 -4
  278. package/esm5/components/input-date-range/input-date-range.providers.js +29 -0
  279. package/esm5/components/input-date-time/index.js +3 -1
  280. package/esm5/components/input-date-time/input-date-time.component.js +9 -28
  281. package/esm5/components/input-date-time/input-date-time.directive.js +38 -0
  282. package/esm5/components/input-date-time/input-date-time.module.js +9 -4
  283. package/esm5/components/input-date-time/input-date-time.providers.js +29 -0
  284. package/esm5/components/input-month/index.js +2 -1
  285. package/esm5/components/input-month/input-month.component.js +7 -3
  286. package/esm5/components/input-month/input-month.directive.js +44 -0
  287. package/esm5/components/input-month/input-month.module.js +5 -4
  288. package/esm5/components/input-month-range/index.js +2 -1
  289. package/esm5/components/input-month-range/input-month-range.component.js +7 -3
  290. package/esm5/components/input-month-range/input-month-range.directive.js +44 -0
  291. package/esm5/components/input-month-range/input-month-range.module.js +9 -4
  292. package/esm5/components/input-number/index.js +2 -1
  293. package/esm5/components/input-number/input-number.component.js +8 -4
  294. package/esm5/components/input-number/input-number.directive.js +39 -0
  295. package/esm5/components/input-number/input-number.module.js +5 -4
  296. package/esm5/components/input-password/index.js +2 -1
  297. package/esm5/components/input-password/input-password.component.js +6 -2
  298. package/esm5/components/input-password/input-password.directive.js +36 -0
  299. package/esm5/components/input-password/input-password.module.js +9 -4
  300. package/esm5/components/input-phone/index.js +2 -1
  301. package/esm5/components/input-phone/input-phone.component.js +12 -24
  302. package/esm5/components/input-phone/input-phone.directive.js +39 -0
  303. package/esm5/components/input-phone/input-phone.module.js +5 -4
  304. package/esm5/components/input-phone/input-phone.providers.js +17 -3
  305. package/esm5/components/input-phone-international/input-phone-international.component.js +15 -6
  306. package/esm5/components/input-range/input-range.component.js +1 -1
  307. package/esm5/components/input-slider/input-slider.component.js +1 -1
  308. package/esm5/components/input-tag/input-tag.component.js +3 -3
  309. package/esm5/components/multi-select/multi-select.module.js +3 -1
  310. package/esm5/components/select/index.js +3 -1
  311. package/esm5/components/select/select.component.js +9 -28
  312. package/esm5/components/select/select.directive.js +42 -0
  313. package/esm5/components/select/select.module.js +5 -4
  314. package/esm5/components/select/select.providers.js +28 -0
  315. package/esm5/components/stepper/step/step.component.js +3 -3
  316. package/esm5/components/tabs/tab/tab.providers.js +3 -3
  317. package/esm5/components/tag/tag.component.js +3 -3
  318. package/esm5/components/text-area/text-area.component.js +7 -4
  319. package/esm5/components/text-area/text-area.module.js +2 -3
  320. package/esm5/providers/value-accessor.provider.js +3 -2
  321. package/esm5/utils/mask/create-auto-corrected-time-pipe.js +5 -5
  322. package/esm5/utils/mask/create-time-mask.js +5 -8
  323. package/esm5/utils/miscellaneous/get-precision.js +2 -2
  324. package/fesm2015/taiga-ui-kit-components-accordion.js +2 -2
  325. package/fesm2015/taiga-ui-kit-components-accordion.js.map +1 -1
  326. package/fesm2015/taiga-ui-kit-components-avatar.js +1 -1
  327. package/fesm2015/taiga-ui-kit-components-combo-box.js +52 -26
  328. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  329. package/fesm2015/taiga-ui-kit-components-input-copy.js +41 -18
  330. package/fesm2015/taiga-ui-kit-components-input-copy.js.map +1 -1
  331. package/fesm2015/taiga-ui-kit-components-input-count.js +32 -6
  332. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  333. package/fesm2015/taiga-ui-kit-components-input-date-range.js +61 -28
  334. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  335. package/fesm2015/taiga-ui-kit-components-input-date-time.js +62 -29
  336. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  337. package/fesm2015/taiga-ui-kit-components-input-date.js +57 -28
  338. package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
  339. package/fesm2015/taiga-ui-kit-components-input-month-range.js +41 -7
  340. package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
  341. package/fesm2015/taiga-ui-kit-components-input-month.js +37 -7
  342. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  343. package/fesm2015/taiga-ui-kit-components-input-number.js +37 -8
  344. package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
  345. package/fesm2015/taiga-ui-kit-components-input-password.js +40 -6
  346. package/fesm2015/taiga-ui-kit-components-input-password.js.map +1 -1
  347. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +10 -5
  348. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  349. package/fesm2015/taiga-ui-kit-components-input-phone.js +52 -26
  350. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  351. package/fesm2015/taiga-ui-kit-components-input-range.js +1 -1
  352. package/fesm2015/taiga-ui-kit-components-input-slider.js +1 -1
  353. package/fesm2015/taiga-ui-kit-components-input-tag.js +2 -2
  354. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  355. package/fesm2015/taiga-ui-kit-components-input.js +28 -6
  356. package/fesm2015/taiga-ui-kit-components-input.js.map +1 -1
  357. package/fesm2015/taiga-ui-kit-components-multi-select.js +2 -1
  358. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  359. package/fesm2015/taiga-ui-kit-components-select.js +55 -26
  360. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  361. package/fesm2015/taiga-ui-kit-components-stepper.js +2 -2
  362. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  363. package/fesm2015/taiga-ui-kit-components-tabs.js +2 -2
  364. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  365. package/fesm2015/taiga-ui-kit-components-tag.js +2 -2
  366. package/fesm2015/taiga-ui-kit-components-tag.js.map +1 -1
  367. package/fesm2015/taiga-ui-kit-components-text-area.js +7 -5
  368. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  369. package/fesm2015/taiga-ui-kit-providers.js +2 -1
  370. package/fesm2015/taiga-ui-kit-providers.js.map +1 -1
  371. package/fesm2015/taiga-ui-kit-utils-mask.js +12 -17
  372. package/fesm2015/taiga-ui-kit-utils-mask.js.map +1 -1
  373. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js +1 -1
  374. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js.map +1 -1
  375. package/fesm5/taiga-ui-kit-components-accordion.js +2 -2
  376. package/fesm5/taiga-ui-kit-components-accordion.js.map +1 -1
  377. package/fesm5/taiga-ui-kit-components-avatar.js +1 -1
  378. package/fesm5/taiga-ui-kit-components-combo-box.js +61 -26
  379. package/fesm5/taiga-ui-kit-components-combo-box.js.map +1 -1
  380. package/fesm5/taiga-ui-kit-components-input-copy.js +46 -18
  381. package/fesm5/taiga-ui-kit-components-input-copy.js.map +1 -1
  382. package/fesm5/taiga-ui-kit-components-input-count.js +38 -6
  383. package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
  384. package/fesm5/taiga-ui-kit-components-input-date-range.js +70 -28
  385. package/fesm5/taiga-ui-kit-components-input-date-range.js.map +1 -1
  386. package/fesm5/taiga-ui-kit-components-input-date-time.js +71 -29
  387. package/fesm5/taiga-ui-kit-components-input-date-time.js.map +1 -1
  388. package/fesm5/taiga-ui-kit-components-input-date.js +66 -28
  389. package/fesm5/taiga-ui-kit-components-input-date.js.map +1 -1
  390. package/fesm5/taiga-ui-kit-components-input-month-range.js +55 -7
  391. package/fesm5/taiga-ui-kit-components-input-month-range.js.map +1 -1
  392. package/fesm5/taiga-ui-kit-components-input-month.js +51 -7
  393. package/fesm5/taiga-ui-kit-components-input-month.js.map +1 -1
  394. package/fesm5/taiga-ui-kit-components-input-number.js +47 -8
  395. package/fesm5/taiga-ui-kit-components-input-number.js.map +1 -1
  396. package/fesm5/taiga-ui-kit-components-input-password.js +46 -6
  397. package/fesm5/taiga-ui-kit-components-input-password.js.map +1 -1
  398. package/fesm5/taiga-ui-kit-components-input-phone-international.js +14 -5
  399. package/fesm5/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  400. package/fesm5/taiga-ui-kit-components-input-phone.js +61 -26
  401. package/fesm5/taiga-ui-kit-components-input-phone.js.map +1 -1
  402. package/fesm5/taiga-ui-kit-components-input-range.js +1 -1
  403. package/fesm5/taiga-ui-kit-components-input-slider.js +1 -1
  404. package/fesm5/taiga-ui-kit-components-input-tag.js +2 -2
  405. package/fesm5/taiga-ui-kit-components-input-tag.js.map +1 -1
  406. package/fesm5/taiga-ui-kit-components-input.js +35 -7
  407. package/fesm5/taiga-ui-kit-components-input.js.map +1 -1
  408. package/fesm5/taiga-ui-kit-components-multi-select.js +2 -1
  409. package/fesm5/taiga-ui-kit-components-multi-select.js.map +1 -1
  410. package/fesm5/taiga-ui-kit-components-select.js +68 -26
  411. package/fesm5/taiga-ui-kit-components-select.js.map +1 -1
  412. package/fesm5/taiga-ui-kit-components-stepper.js +2 -2
  413. package/fesm5/taiga-ui-kit-components-stepper.js.map +1 -1
  414. package/fesm5/taiga-ui-kit-components-tabs.js +2 -2
  415. package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
  416. package/fesm5/taiga-ui-kit-components-tag.js +2 -2
  417. package/fesm5/taiga-ui-kit-components-tag.js.map +1 -1
  418. package/fesm5/taiga-ui-kit-components-text-area.js +7 -5
  419. package/fesm5/taiga-ui-kit-components-text-area.js.map +1 -1
  420. package/fesm5/taiga-ui-kit-providers.js +2 -1
  421. package/fesm5/taiga-ui-kit-providers.js.map +1 -1
  422. package/fesm5/taiga-ui-kit-utils-mask.js +8 -11
  423. package/fesm5/taiga-ui-kit-utils-mask.js.map +1 -1
  424. package/fesm5/taiga-ui-kit-utils-miscellaneous.js +1 -1
  425. package/fesm5/taiga-ui-kit-utils-miscellaneous.js.map +1 -1
  426. package/package.json +6 -6
  427. package/providers/taiga-ui-kit-providers.metadata.json +1 -1
  428. package/providers/value-accessor.provider.d.ts +1 -1
@@ -1,8 +1,8 @@
1
1
  import { __extends, __decorate, __param } from 'tslib';
2
- import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, Component, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, Component, forwardRef, ChangeDetectionStrategy, Directive, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonthRange, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiNullableControl, TuiPreventDefaultModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
5
- import { sizeBigger, TUI_MONTHS, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule } from '@taiga-ui/core';
4
+ import { TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonthRange, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl, AbstractTuiNullableControl, TuiPreventDefaultModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
5
+ import { sizeBigger, TUI_MONTHS, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldComponent } from '@taiga-ui/core';
6
6
  import { LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
7
7
  import { Observable } from 'rxjs';
8
8
  import { CommonModule } from '@angular/common';
@@ -117,12 +117,16 @@ var TuiInputMonthRangeComponent = /** @class */ (function (_super) {
117
117
  TuiInputMonthRangeComponent = TuiInputMonthRangeComponent_1 = __decorate([
118
118
  Component({
119
119
  selector: 'tui-input-month-range',
120
- template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"interactive\"\n [content]=\"dropdown\"\n [open]=\"open && interactive\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *ngIf=\"months$ | async as months\"\n class=\"textfield\"\n [editable]=\"false\"\n [disabled]=\"disabled\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [value]=\"computeValue(value, focused, months)\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n >\n <ng-content></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #dropdown>\n <tui-calendar-month\n tuiPreventDefault=\"mousedown\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [min]=\"min\"\n [max]=\"max\"\n [value]=\"value\"\n (monthClick)=\"onMonthClick($event)\"\n ></tui-calendar-month>\n </ng-template>\n</tui-hosted-dropdown>\n",
120
+ template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"interactive\"\n [content]=\"dropdown\"\n [open]=\"open && interactive\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *ngIf=\"months$ | async as months\"\n class=\"textfield\"\n [editable]=\"false\"\n [disabled]=\"computedDisabled\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [value]=\"computeValue(value, focused, months)\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n >\n <ng-content></ng-content>\n <ng-content select=\"input\" ngProjectAs=\"input\"></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #dropdown>\n <tui-calendar-month\n tuiPreventDefault=\"mousedown\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [min]=\"min\"\n [max]=\"max\"\n [value]=\"value\"\n (monthClick)=\"onMonthClick($event)\"\n ></tui-calendar-month>\n </ng-template>\n</tui-hosted-dropdown>\n",
121
121
  providers: [
122
122
  {
123
123
  provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
124
124
  useExisting: forwardRef(function () { return TuiInputMonthRangeComponent_1; }),
125
125
  },
126
+ {
127
+ provide: AbstractTuiControl,
128
+ useExisting: forwardRef(function () { return TuiInputMonthRangeComponent_1; }),
129
+ },
126
130
  LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,
127
131
  ],
128
132
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -138,6 +142,46 @@ var TuiInputMonthRangeComponent = /** @class */ (function (_super) {
138
142
  return TuiInputMonthRangeComponent;
139
143
  }(AbstractTuiNullableControl));
140
144
 
145
+ var TuiInputMonthRangeDirective = /** @class */ (function (_super) {
146
+ __extends(TuiInputMonthRangeDirective, _super);
147
+ function TuiInputMonthRangeDirective() {
148
+ return _super !== null && _super.apply(this, arguments) || this;
149
+ }
150
+ TuiInputMonthRangeDirective_1 = TuiInputMonthRangeDirective;
151
+ Object.defineProperty(TuiInputMonthRangeDirective.prototype, "readOnly", {
152
+ get: function () {
153
+ return true;
154
+ },
155
+ enumerable: true,
156
+ configurable: true
157
+ });
158
+ Object.defineProperty(TuiInputMonthRangeDirective.prototype, "value", {
159
+ // TODO: Fix change detection
160
+ get: function () {
161
+ var _a;
162
+ return ((_a = this.host.textfield) === null || _a === void 0 ? void 0 : _a.value) || '';
163
+ },
164
+ enumerable: true,
165
+ configurable: true
166
+ });
167
+ TuiInputMonthRangeDirective.prototype.onValueChange = function (value) {
168
+ this.host.onValueChange(value);
169
+ };
170
+ var TuiInputMonthRangeDirective_1;
171
+ TuiInputMonthRangeDirective = TuiInputMonthRangeDirective_1 = __decorate([
172
+ Directive({
173
+ selector: 'tui-input-month-range',
174
+ providers: [
175
+ {
176
+ provide: TUI_TEXTFIELD_HOST,
177
+ useExisting: forwardRef(function () { return TuiInputMonthRangeDirective_1; }),
178
+ },
179
+ ],
180
+ })
181
+ ], TuiInputMonthRangeDirective);
182
+ return TuiInputMonthRangeDirective;
183
+ }(TuiAbstractTextfieldHost));
184
+
141
185
  var TuiInputMonthRangeModule = /** @class */ (function () {
142
186
  function TuiInputMonthRangeModule() {
143
187
  }
@@ -152,8 +196,12 @@ var TuiInputMonthRangeModule = /** @class */ (function () {
152
196
  TuiPreventDefaultModule,
153
197
  TuiActiveZoneModule,
154
198
  ],
155
- declarations: [TuiInputMonthRangeComponent],
156
- exports: [TuiInputMonthRangeComponent],
199
+ declarations: [TuiInputMonthRangeComponent, TuiInputMonthRangeDirective],
200
+ exports: [
201
+ TuiInputMonthRangeComponent,
202
+ TuiInputMonthRangeDirective,
203
+ TuiTextfieldComponent,
204
+ ],
157
205
  })
158
206
  ], TuiInputMonthRangeModule);
159
207
  return TuiInputMonthRangeModule;
@@ -163,5 +211,5 @@ var TuiInputMonthRangeModule = /** @class */ (function () {
163
211
  * Generated bundle index. Do not edit.
164
212
  */
165
213
 
166
- export { TuiInputMonthRangeComponent, TuiInputMonthRangeModule };
214
+ export { TuiInputMonthRangeComponent, TuiInputMonthRangeDirective, TuiInputMonthRangeModule };
167
215
  //# sourceMappingURL=taiga-ui-kit-components-input-month-range.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-month-range.js","sources":["ng://@taiga-ui/kit/components/input-month-range/input-month-range.component.ts","ng://@taiga-ui/kit/components/input-month-range/input-month-range.module.ts","ng://@taiga-ui/kit/components/input-month-range/taiga-ui-kit-components-input-month-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n TuiMonthRange,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_MONTHS,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TuiMonthContext} from '@taiga-ui/kit/interfaces';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {TuiBooleanHandlerWithContext} from '@taiga-ui/kit/types';\nimport {Observable} from 'rxjs';\n\n// @dynamic\n@Component({\n selector: 'tui-input-month-range',\n templateUrl: './input-month-range.template.html',\n styleUrls: ['./input-month-range.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputMonthRangeComponent),\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiInputMonthRangeComponent\n extends AbstractTuiNullableControl<TuiMonthRange>\n implements TuiWithOptionalMinMax<TuiMonth>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max: TuiMonth = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandlerWithContext<TuiMonth, TuiMonthContext> =\n ALWAYS_FALSE_HANDLER;\n\n open = false;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MONTHS) readonly months$: Observable<readonly string[]>,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.textfield ? this.textfield.nativeFocusableElement : null;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n computeValue(\n value: TuiMonthRange | null,\n focused: boolean,\n months: readonly string[],\n ): string {\n if (value === null) {\n return '';\n }\n\n const formattedValueTo =\n !value.isSingleMonth || !focused ? this.formatMonth(value.to, months) : '';\n\n return `${this.formatMonth(value.from, months)} — ${formattedValueTo}`;\n }\n\n onValueChange(value: string) {\n if (value === '') {\n this.updateValue(null);\n this.onOpenChange(true);\n }\n }\n\n onMonthClick(month: TuiMonth) {\n if (this.value === null || !this.value.isSingleMonth) {\n this.writeValue(new TuiMonthRange(month, month));\n\n return;\n }\n\n this.updateValue(TuiMonthRange.sort(this.value.from, month));\n this.close();\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onActiveZone(focused: boolean) {\n this.updateFocused(focused);\n\n if (focused) {\n return;\n }\n\n if (this.value && this.value.isSingleMonth) {\n this.updateValue(new TuiMonthRange(this.value.from, this.value.from));\n }\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.close();\n }\n\n private formatMonth(\n {month, formattedYear}: TuiMonth,\n months: readonly string[],\n ): string {\n return `${months[month]} ${formattedYear}`;\n }\n\n private close() {\n this.open = false;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n} from '@taiga-ui/core';\nimport {TuiCalendarMonthModule} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TuiInputMonthRangeComponent} from './input-month-range.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiCalendarMonthModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiPreventDefaultModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiInputMonthRangeComponent],\n exports: [TuiInputMonthRangeComponent],\n})\nexport class TuiInputMonthRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAoCA;;IAeY,+CAAyC;IAqBjD,qCAII,OAAyB,EACE,iBAAoC,EAClC,OAAsC,EAElD,aAAwC;QAR7D,YAUI,kBAAM,OAAO,EAAE,iBAAiB,CAAC,SACpC;QALgC,aAAO,GAAP,OAAO,CAA+B;QAElD,mBAAa,GAAb,aAAa,CAA2B;QArB7D,SAAG,GAAa,aAAa,CAAC;QAI9B,SAAG,GAAa,YAAY,CAAC;QAI7B,yBAAmB,GACf,oBAAoB,CAAC;QAEzB,UAAI,GAAG,KAAK,CAAC;;KAaZ;oCAjCQ,2BAA2B;IAmCpC,sBAAI,+DAAsB;aAA1B;YACI,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACxE;;;OAAA;IAED,sBAAI,gDAAO;aAAX;YACI,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SACrD;;;OAAA;IAED,sBAAI,qDAAY;aAAhB;YACI,OAAO,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;kBACpC,sBAAsB;kBACtB,iBAAiB,CAAC;SAC3B;;;OAAA;IAED,kDAAY,GAAZ,UACI,KAA2B,EAC3B,OAAgB,EAChB,MAAyB;QAEzB,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,OAAO,EAAE,CAAC;SACb;QAED,IAAM,gBAAgB,GAClB,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QAE/E,OAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAM,gBAAkB,CAAC;KAC1E;IAED,mDAAa,GAAb,UAAc,KAAa;QACvB,IAAI,KAAK,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC3B;KACJ;IAED,kDAAY,GAAZ,UAAa,KAAe;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAClD,IAAI,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEjD,OAAO;SACV;QAED,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAED,+CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,kDAAY,GAAZ,UAAa,IAAa;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;IAED,kDAAY,GAAZ,UAAa,OAAgB;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,OAAO,EAAE;YACT,OAAO;SACV;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACxC,IAAI,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SACzE;KACJ;IAED,sDAAgB,GAAhB;QACI,iBAAM,gBAAgB,WAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAEO,iDAAW,GAAnB,UACI,EAAgC,EAChC,MAAyB;YADxB,gBAAK,EAAE,gCAAa;QAGrB,OAAU,MAAM,CAAC,KAAK,CAAC,SAAI,aAAe,CAAC;KAC9C;IAEO,2CAAK,GAAb;QACI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;;;gBA1FY,SAAS,uBAHjB,QAAQ,YACR,IAAI,YACJ,MAAM,SAAC,SAAS;gBAE6B,iBAAiB,uBAA9D,MAAM,SAAC,iBAAiB;gBACa,UAAU,uBAA/C,MAAM,SAAC,UAAU;gBAEc,yBAAyB,uBADxD,MAAM,SAAC,kBAAkB;;IAxB9B;QADC,SAAS,CAAC,8BAA8B,CAAC;kEACkB;IAI5D;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;4DACa;IAI9B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;4DACY;IAI7B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;4EAEQ;IAlBhB,2BAA2B;QAbvC,SAAS,CAAC;YACP,QAAQ,EAAE,uBAAuB;YACjC,muCAAgD;YAEhD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAA2B;oBACpC,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,6BAA2B,GAAA,CAAC;iBAC7D;gBACD,yCAAyC;aAC5C;YACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;QAwBO,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,IAAI,EAAE,CAAA;QACN,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;QAEjB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;OA7BtB,2BAA2B,CAqHvC;IAAD,kCAAC;CAAA,CApHW,0BAA0B;;;IC1BtC;KAAwC;IAA3B,wBAAwB;QAbpC,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,sBAAsB;gBACtB,uBAAuB;gBACvB,2BAA2B;gBAC3B,YAAY;gBACZ,uBAAuB;gBACvB,mBAAmB;aACtB;YACD,YAAY,EAAE,CAAC,2BAA2B,CAAC;YAC3C,OAAO,EAAE,CAAC,2BAA2B,CAAC;SACzC,CAAC;OACW,wBAAwB,CAAG;IAAD,+BAAC;CAAxC;;ACzBA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-month-range.js","sources":["ng://@taiga-ui/kit/components/input-month-range/input-month-range.component.ts","ng://@taiga-ui/kit/components/input-month-range/input-month-range.directive.ts","ng://@taiga-ui/kit/components/input-month-range/input-month-range.module.ts","ng://@taiga-ui/kit/components/input-month-range/taiga-ui-kit-components-input-month-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n TuiMonthRange,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_MONTHS,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TuiMonthContext} from '@taiga-ui/kit/interfaces';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {TuiBooleanHandlerWithContext} from '@taiga-ui/kit/types';\nimport {Observable} from 'rxjs';\n\n// @dynamic\n@Component({\n selector: 'tui-input-month-range',\n templateUrl: './input-month-range.template.html',\n styleUrls: ['./input-month-range.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputMonthRangeComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputMonthRangeComponent),\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiInputMonthRangeComponent\n extends AbstractTuiNullableControl<TuiMonthRange>\n implements TuiWithOptionalMinMax<TuiMonth>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max: TuiMonth = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandlerWithContext<TuiMonth, TuiMonthContext> =\n ALWAYS_FALSE_HANDLER;\n\n open = false;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MONTHS) readonly months$: Observable<readonly string[]>,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.textfield ? this.textfield.nativeFocusableElement : null;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n computeValue(\n value: TuiMonthRange | null,\n focused: boolean,\n months: readonly string[],\n ): string {\n if (value === null) {\n return '';\n }\n\n const formattedValueTo =\n !value.isSingleMonth || !focused ? this.formatMonth(value.to, months) : '';\n\n return `${this.formatMonth(value.from, months)} — ${formattedValueTo}`;\n }\n\n onValueChange(value: string) {\n if (value === '') {\n this.updateValue(null);\n this.onOpenChange(true);\n }\n }\n\n onMonthClick(month: TuiMonth) {\n if (this.value === null || !this.value.isSingleMonth) {\n this.writeValue(new TuiMonthRange(month, month));\n\n return;\n }\n\n this.updateValue(TuiMonthRange.sort(this.value.from, month));\n this.close();\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onActiveZone(focused: boolean) {\n this.updateFocused(focused);\n\n if (focused) {\n return;\n }\n\n if (this.value && this.value.isSingleMonth) {\n this.updateValue(new TuiMonthRange(this.value.from, this.value.from));\n }\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.close();\n }\n\n private formatMonth(\n {month, formattedYear}: TuiMonth,\n months: readonly string[],\n ): string {\n return `${months[month]} ${formattedYear}`;\n }\n\n private close() {\n this.open = false;\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputMonthRangeComponent} from './input-month-range.component';\n\n@Directive({\n selector: 'tui-input-month-range',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputMonthRangeDirective),\n },\n ],\n})\nexport class TuiInputMonthRangeDirective extends TuiAbstractTextfieldHost<TuiInputMonthRangeComponent> {\n get readOnly(): boolean {\n return true;\n }\n\n // TODO: Fix change detection\n get value(): string {\n return this.host.textfield?.value || '';\n }\n\n onValueChange(value: string) {\n this.host.onValueChange(value);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldComponent,\n} from '@taiga-ui/core';\nimport {TuiCalendarMonthModule} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TuiInputMonthRangeComponent} from './input-month-range.component';\nimport {TuiInputMonthRangeDirective} from './input-month-range.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiCalendarMonthModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiPreventDefaultModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiInputMonthRangeComponent, TuiInputMonthRangeDirective],\n exports: [\n TuiInputMonthRangeComponent,\n TuiInputMonthRangeDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiInputMonthRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { __extends, __decorate, __param } from 'tslib';
2
- import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, Component, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, Component, forwardRef, ChangeDetectionStrategy, Directive, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiNullableControl, TuiPreventDefaultModule } from '@taiga-ui/cdk';
5
- import { sizeBigger, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiMonthPipeModule } from '@taiga-ui/core';
4
+ import { TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl, AbstractTuiNullableControl, TuiPreventDefaultModule } from '@taiga-ui/cdk';
5
+ import { sizeBigger, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiMonthPipeModule, TuiTextfieldComponent } from '@taiga-ui/core';
6
6
  import { LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import { TuiCalendarMonthModule } from '@taiga-ui/kit/components/calendar-month';
@@ -96,12 +96,16 @@ var TuiInputMonthComponent = /** @class */ (function (_super) {
96
96
  TuiInputMonthComponent = TuiInputMonthComponent_1 = __decorate([
97
97
  Component({
98
98
  selector: 'tui-input-month',
99
- template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"interactive\"\n [content]=\"dropdown\"\n [open]=\"open && interactive\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n class=\"textfield\"\n [editable]=\"false\"\n [disabled]=\"disabled\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [value]=\"value === null ? '' : (value | tuiMonth | async) + ' ' + value.formattedYear\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (focusedChange)=\"onFocused($event)\"\n >\n <ng-content></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #dropdown>\n <tui-calendar-month\n tuiPreventDefault=\"mousedown\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [min]=\"min\"\n [max]=\"max\"\n [value]=\"value\"\n (monthClick)=\"onMonthClick($event)\"\n ></tui-calendar-month>\n </ng-template>\n</tui-hosted-dropdown>\n",
99
+ template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"interactive\"\n [content]=\"dropdown\"\n [open]=\"open && interactive\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n class=\"textfield\"\n [editable]=\"false\"\n [disabled]=\"computedDisabled\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [value]=\"value === null ? '' : (value | tuiMonth | async) + ' ' + value.formattedYear\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (focusedChange)=\"onFocused($event)\"\n >\n <ng-content></ng-content>\n <ng-content select=\"input\" ngProjectAs=\"input\"></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #dropdown>\n <tui-calendar-month\n tuiPreventDefault=\"mousedown\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [min]=\"min\"\n [max]=\"max\"\n [value]=\"value\"\n (monthClick)=\"onMonthClick($event)\"\n ></tui-calendar-month>\n </ng-template>\n</tui-hosted-dropdown>\n",
100
100
  providers: [
101
101
  {
102
102
  provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
103
103
  useExisting: forwardRef(function () { return TuiInputMonthComponent_1; }),
104
104
  },
105
+ {
106
+ provide: AbstractTuiControl,
107
+ useExisting: forwardRef(function () { return TuiInputMonthComponent_1; }),
108
+ },
105
109
  LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,
106
110
  ],
107
111
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -116,6 +120,46 @@ var TuiInputMonthComponent = /** @class */ (function (_super) {
116
120
  return TuiInputMonthComponent;
117
121
  }(AbstractTuiNullableControl));
118
122
 
123
+ var TuiInputMonthDirective = /** @class */ (function (_super) {
124
+ __extends(TuiInputMonthDirective, _super);
125
+ function TuiInputMonthDirective() {
126
+ return _super !== null && _super.apply(this, arguments) || this;
127
+ }
128
+ TuiInputMonthDirective_1 = TuiInputMonthDirective;
129
+ Object.defineProperty(TuiInputMonthDirective.prototype, "readOnly", {
130
+ get: function () {
131
+ return true;
132
+ },
133
+ enumerable: true,
134
+ configurable: true
135
+ });
136
+ Object.defineProperty(TuiInputMonthDirective.prototype, "value", {
137
+ // TODO: Fix change detection
138
+ get: function () {
139
+ var _a;
140
+ return ((_a = this.host.textfield) === null || _a === void 0 ? void 0 : _a.value) || '';
141
+ },
142
+ enumerable: true,
143
+ configurable: true
144
+ });
145
+ TuiInputMonthDirective.prototype.onValueChange = function (value) {
146
+ this.host.onValueChange(value);
147
+ };
148
+ var TuiInputMonthDirective_1;
149
+ TuiInputMonthDirective = TuiInputMonthDirective_1 = __decorate([
150
+ Directive({
151
+ selector: 'tui-input-month',
152
+ providers: [
153
+ {
154
+ provide: TUI_TEXTFIELD_HOST,
155
+ useExisting: forwardRef(function () { return TuiInputMonthDirective_1; }),
156
+ },
157
+ ],
158
+ })
159
+ ], TuiInputMonthDirective);
160
+ return TuiInputMonthDirective;
161
+ }(TuiAbstractTextfieldHost));
162
+
119
163
  var TuiInputMonthModule = /** @class */ (function () {
120
164
  function TuiInputMonthModule() {
121
165
  }
@@ -130,8 +174,8 @@ var TuiInputMonthModule = /** @class */ (function () {
130
174
  TuiPreventDefaultModule,
131
175
  TuiMonthPipeModule,
132
176
  ],
133
- declarations: [TuiInputMonthComponent],
134
- exports: [TuiInputMonthComponent],
177
+ declarations: [TuiInputMonthComponent, TuiInputMonthDirective],
178
+ exports: [TuiInputMonthComponent, TuiInputMonthDirective, TuiTextfieldComponent],
135
179
  })
136
180
  ], TuiInputMonthModule);
137
181
  return TuiInputMonthModule;
@@ -141,5 +185,5 @@ var TuiInputMonthModule = /** @class */ (function () {
141
185
  * Generated bundle index. Do not edit.
142
186
  */
143
187
 
144
- export { TuiInputMonthComponent, TuiInputMonthModule };
188
+ export { TuiInputMonthComponent, TuiInputMonthDirective, TuiInputMonthModule };
145
189
  //# sourceMappingURL=taiga-ui-kit-components-input-month.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-month.js","sources":["ng://@taiga-ui/kit/components/input-month/input-month.component.ts","ng://@taiga-ui/kit/components/input-month/input-month.module.ts","ng://@taiga-ui/kit/components/input-month/taiga-ui-kit-components-input-month.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\n\n// @dynamic\n@Component({\n selector: 'tui-input-month',\n templateUrl: './input-month.template.html',\n styleUrls: ['./input-month.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputMonthComponent),\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiInputMonthComponent\n extends AbstractTuiNullableControl<TuiMonth>\n implements TuiWithOptionalMinMax<TuiMonth>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max: TuiMonth = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiMonth> = ALWAYS_FALSE_HANDLER;\n\n open = false;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.textfield ? this.textfield.nativeFocusableElement : null;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n onValueChange(value: string) {\n if (value === '') {\n this.updateValue(null);\n this.onOpenChange(true);\n }\n }\n\n onMonthClick(month: TuiMonth) {\n this.updateValue(month);\n this.close();\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n toggle() {\n this.open = !this.open;\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.close();\n }\n\n private close() {\n this.open = false;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiHostedDropdownModule,\n TuiMonthPipeModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n} from '@taiga-ui/core';\nimport {TuiCalendarMonthModule} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TuiInputMonthComponent} from './input-month.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiCalendarMonthModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiPreventDefaultModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiInputMonthComponent],\n exports: [TuiInputMonthComponent],\n})\nexport class TuiInputMonthModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAgCA;;IAeY,0CAAoC;IAoB5C,gCAII,OAAyB,EACE,iBAAoC,EAE9C,aAAwC;QAP7D,YASI,kBAAM,OAAO,EAAE,iBAAiB,CAAC,SACpC;QAHoB,mBAAa,GAAb,aAAa,CAA2B;QAnB7D,SAAG,GAAa,aAAa,CAAC;QAI9B,SAAG,GAAa,YAAY,CAAC;QAI7B,yBAAmB,GAAgC,oBAAoB,CAAC;QAExE,UAAI,GAAG,KAAK,CAAC;;KAYZ;+BA/BQ,sBAAsB;IAiC/B,sBAAI,0DAAsB;aAA1B;YACI,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACxE;;;OAAA;IAED,sBAAI,2CAAO;aAAX;YACI,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SACrD;;;OAAA;IAED,sBAAI,gDAAY;aAAhB;YACI,OAAO,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;kBACpC,sBAAsB;kBACtB,iBAAiB,CAAC;SAC3B;;;OAAA;IAED,8CAAa,GAAb,UAAc,KAAa;QACvB,IAAI,KAAK,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC3B;KACJ;IAED,6CAAY,GAAZ,UAAa,KAAe;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAED,0CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,0CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,6CAAY,GAAZ,UAAa,IAAa;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;IAED,uCAAM,GAAN;QACI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1B;IAED,iDAAgB,GAAhB;QACI,iBAAM,gBAAgB,WAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAEO,sCAAK,GAAb;QACI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;;;gBAzDY,SAAS,uBAHjB,QAAQ,YACR,IAAI,YACJ,MAAM,SAAC,SAAS;gBAE6B,iBAAiB,uBAA9D,MAAM,SAAC,iBAAiB;gBAEO,yBAAyB,uBADxD,MAAM,SAAC,kBAAkB;;IAtB9B;QADC,SAAS,CAAC,8BAA8B,CAAC;6DACkB;IAI5D;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uDACa;IAI9B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uDACY;IAI7B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uEACuD;IAjB/D,sBAAsB;QAblC,SAAS,CAAC;YACP,QAAQ,EAAE,iBAAiB;YAC3B,ytCAA0C;YAE1C,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAA2B;oBACpC,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,wBAAsB,GAAA,CAAC;iBACxD;gBACD,yCAAyC;aAC5C;YACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;QAuBO,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,IAAI,EAAE,CAAA;QACN,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;QAEjB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;OA3BtB,sBAAsB,CAmFlC;IAAD,6BAAC;CAAA,CAlFW,0BAA0B;;;ICrBtC;KAAmC;IAAtB,mBAAmB;QAb/B,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,sBAAsB;gBACtB,uBAAuB;gBACvB,2BAA2B;gBAC3B,YAAY;gBACZ,uBAAuB;gBACvB,kBAAkB;aACrB;YACD,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;AC1BA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-month.js","sources":["ng://@taiga-ui/kit/components/input-month/input-month.component.ts","ng://@taiga-ui/kit/components/input-month/input-month.directive.ts","ng://@taiga-ui/kit/components/input-month/input-month.module.ts","ng://@taiga-ui/kit/components/input-month/taiga-ui-kit-components-input-month.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\n\n// @dynamic\n@Component({\n selector: 'tui-input-month',\n templateUrl: './input-month.template.html',\n styleUrls: ['./input-month.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputMonthComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputMonthComponent),\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiInputMonthComponent\n extends AbstractTuiNullableControl<TuiMonth>\n implements TuiWithOptionalMinMax<TuiMonth>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max: TuiMonth = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiMonth> = ALWAYS_FALSE_HANDLER;\n\n open = false;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.textfield ? this.textfield.nativeFocusableElement : null;\n }\n\n get focused(): boolean {\n return !!this.textfield && this.textfield.focused;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n onValueChange(value: string) {\n if (value === '') {\n this.updateValue(null);\n this.onOpenChange(true);\n }\n }\n\n onMonthClick(month: TuiMonth) {\n this.updateValue(month);\n this.close();\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n toggle() {\n this.open = !this.open;\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.close();\n }\n\n private close() {\n this.open = false;\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputMonthComponent} from './input-month.component';\n\n@Directive({\n selector: 'tui-input-month',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputMonthDirective),\n },\n ],\n})\nexport class TuiInputMonthDirective extends TuiAbstractTextfieldHost<TuiInputMonthComponent> {\n get readOnly(): boolean {\n return true;\n }\n\n // TODO: Fix change detection\n get value(): string {\n return this.host.textfield?.value || '';\n }\n\n onValueChange(value: string) {\n this.host.onValueChange(value);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiHostedDropdownModule,\n TuiMonthPipeModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldComponent,\n} from '@taiga-ui/core';\nimport {TuiCalendarMonthModule} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TuiInputMonthComponent} from './input-month.component';\nimport {TuiInputMonthDirective} from './input-month.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiCalendarMonthModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiPreventDefaultModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiInputMonthComponent, TuiInputMonthDirective],\n exports: [TuiInputMonthComponent, TuiInputMonthDirective, TuiTextfieldComponent],\n})\nexport class TuiInputMonthModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { __extends, __decorate, __param } from 'tslib';
2
- import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, HostListener, Component, ChangeDetectionStrategy, forwardRef, NgModule } from '@angular/core';
2
+ import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, HostListener, Component, ChangeDetectionStrategy, forwardRef, Directive, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiNullableControl, TuiMapperPipeModule } from '@taiga-ui/cdk';
5
- import { tuiCreateNumberMask, tuiCreateAutoCorrectedNumberPipe, getFractionPartPadded, formatNumber, maskedMoneyValueIsEmpty, maskedNumberStringToNumber, TUI_DECIMAL_SYMBOLS, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
4
+ import { tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl, AbstractTuiNullableControl, TuiMapperPipeModule } from '@taiga-ui/cdk';
5
+ import { tuiCreateNumberMask, tuiCreateAutoCorrectedNumberPipe, getFractionPartPadded, formatNumber, maskedMoneyValueIsEmpty, maskedNumberStringToNumber, TUI_DECIMAL_SYMBOLS, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
6
6
  import { TuiValueAccessorModule } from '@taiga-ui/kit/directives';
7
7
  import { TextMaskModule } from 'angular2-text-mask';
8
8
 
@@ -113,7 +113,7 @@ var TuiInputNumberComponent = /** @class */ (function (_super) {
113
113
  event.preventDefault();
114
114
  nativeFocusableElement.selectionStart++;
115
115
  };
116
- TuiInputNumberComponent.prototype.onValue = function (value) {
116
+ TuiInputNumberComponent.prototype.onValueChange = function (value) {
117
117
  if (maskedMoneyValueIsEmpty(value)) {
118
118
  this.updateValue(null);
119
119
  return;
@@ -253,13 +253,17 @@ var TuiInputNumberComponent = /** @class */ (function (_super) {
253
253
  TuiInputNumberComponent = TuiInputNumberComponent_1 = __decorate([
254
254
  Component({
255
255
  selector: 'tui-input-number',
256
- template: "<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldInputMode=\"decimal\"\n class=\"textfield\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoFocused]=\"computedFocused\"\n [invalid]=\"computedInvalid\"\n [tuiTextfieldMaxLength]=\"calculatedMaxLength\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [textMask]=\"isNegativeAllowed | tuiMapper: mask:decimal:precision:nativeFocusableElement\"\n [value]=\"computedValue\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [focusable]=\"focusable\"\n (valueChange)=\"onValue($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (focusedChange)=\"onFocused($event)\"\n (pressedChange)=\"onPressed($event)\"\n (keydown)=\"onKeyDown($event)\"\n>\n <ng-content></ng-content>\n</tui-primitive-textfield>\n",
256
+ template: "<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldInputMode=\"decimal\"\n class=\"textfield\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoFocused]=\"computedFocused\"\n [invalid]=\"computedInvalid\"\n [tuiTextfieldMaxLength]=\"calculatedMaxLength\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [textMask]=\"isNegativeAllowed | tuiMapper: mask:decimal:precision:nativeFocusableElement\"\n [value]=\"computedValue\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [focusable]=\"focusable\"\n (valueChange)=\"onValueChange($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (focusedChange)=\"onFocused($event)\"\n (pressedChange)=\"onPressed($event)\"\n (keydown)=\"onKeyDown($event)\"\n>\n <ng-content></ng-content>\n <ng-content select=\"input\" ngProjectAs=\"input\"></ng-content>\n</tui-primitive-textfield>\n",
257
257
  changeDetection: ChangeDetectionStrategy.OnPush,
258
258
  providers: [
259
259
  {
260
260
  provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
261
261
  useExisting: forwardRef(function () { return TuiInputNumberComponent_1; }),
262
262
  },
263
+ {
264
+ provide: AbstractTuiControl,
265
+ useExisting: forwardRef(function () { return TuiInputNumberComponent_1; }),
266
+ },
263
267
  ],
264
268
  styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.textfield{border-radius:inherit;text-align:inherit}"]
265
269
  }),
@@ -272,6 +276,41 @@ var TuiInputNumberComponent = /** @class */ (function (_super) {
272
276
  return TuiInputNumberComponent;
273
277
  }(AbstractTuiNullableControl));
274
278
 
279
+ var TuiInputNumberDirective = /** @class */ (function (_super) {
280
+ __extends(TuiInputNumberDirective, _super);
281
+ function TuiInputNumberDirective() {
282
+ return _super !== null && _super.apply(this, arguments) || this;
283
+ }
284
+ TuiInputNumberDirective_1 = TuiInputNumberDirective;
285
+ Object.defineProperty(TuiInputNumberDirective.prototype, "value", {
286
+ get: function () {
287
+ return this.host.computedValue;
288
+ },
289
+ enumerable: true,
290
+ configurable: true
291
+ });
292
+ TuiInputNumberDirective.prototype.onValueChange = function (value) {
293
+ this.host.onValueChange(value);
294
+ };
295
+ TuiInputNumberDirective.prototype.process = function (input) {
296
+ input.inputMode = 'decimal';
297
+ // TODO maxLength?
298
+ };
299
+ var TuiInputNumberDirective_1;
300
+ TuiInputNumberDirective = TuiInputNumberDirective_1 = __decorate([
301
+ Directive({
302
+ selector: 'tui-input-number',
303
+ providers: [
304
+ {
305
+ provide: TUI_TEXTFIELD_HOST,
306
+ useExisting: forwardRef(function () { return TuiInputNumberDirective_1; }),
307
+ },
308
+ ],
309
+ })
310
+ ], TuiInputNumberDirective);
311
+ return TuiInputNumberDirective;
312
+ }(TuiAbstractTextfieldHost));
313
+
275
314
  var TuiInputNumberModule = /** @class */ (function () {
276
315
  function TuiInputNumberModule() {
277
316
  }
@@ -284,8 +323,8 @@ var TuiInputNumberModule = /** @class */ (function () {
284
323
  TuiTextfieldControllerModule,
285
324
  TuiValueAccessorModule,
286
325
  ],
287
- declarations: [TuiInputNumberComponent],
288
- exports: [TuiInputNumberComponent],
326
+ declarations: [TuiInputNumberComponent, TuiInputNumberDirective],
327
+ exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],
289
328
  })
290
329
  ], TuiInputNumberModule);
291
330
  return TuiInputNumberModule;
@@ -295,5 +334,5 @@ var TuiInputNumberModule = /** @class */ (function () {
295
334
  * Generated bundle index. Do not edit.
296
335
  */
297
336
 
298
- export { TuiInputNumberComponent, TuiInputNumberModule };
337
+ export { TuiInputNumberComponent, TuiInputNumberDirective, TuiInputNumberModule };
299
338
  //# sourceMappingURL=taiga-ui-kit-components-input-number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-number.js","sources":["ng://@taiga-ui/kit/components/input-number/input-number.component.ts","ng://@taiga-ui/kit/components/input-number/input-number.module.ts","ng://@taiga-ui/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiInputModeT,\n TuiMapper,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n getFractionPartPadded,\n maskedMoneyValueIsEmpty,\n maskedNumberStringToNumber,\n NumberFormatSettings,\n TUI_DECIMAL_SYMBOLS,\n TUI_NUMBER_FORMAT,\n tuiCreateAutoCorrectedNumberPipe,\n tuiCreateNumberMask,\n TuiDecimalT,\n TuiPrimitiveTextfieldComponent,\n TuiTextMaskOptions,\n} from '@taiga-ui/core';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n// @dynamic\n@Component({\n selector: 'tui-input-number',\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputNumberComponent),\n },\n ],\n})\nexport class TuiInputNumberComponent\n extends AbstractTuiNullableControl<number>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min = -Infinity;\n\n @Input()\n @tuiDefaultProp()\n max = Infinity;\n\n @Input()\n @tuiDefaultProp()\n decimal: TuiDecimalT = 'not-zero';\n\n @Input()\n @tuiDefaultProp()\n precision = 2;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef)\n changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: NumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n get focused(): boolean {\n return !!this.primitiveTextfield && this.primitiveTextfield.focused;\n }\n\n get isNegativeAllowed(): boolean {\n return this.min < 0;\n }\n\n get inputMode(): TuiInputModeT {\n return this.decimal === 'never' ? 'numeric' : 'decimal';\n }\n\n get calculatedMaxLength(): number {\n const decimalPart =\n this.decimal !== 'never' &&\n this.nativeValue.includes(this.numberFormat.decimalSeparator);\n const precision = decimalPart ? this.precision + 1 : 0;\n const takeThousand = this.numberFormat.thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n }\n\n get formattedValue(): string {\n const value = this.value || 0;\n const absValue = Math.abs(value);\n const hasFraction = absValue % 1 > 0;\n let limit = this.decimal === 'always' || hasFraction ? this.precision : 0;\n\n const fraction = hasFraction ? getFractionPartPadded(value, this.precision) : '';\n\n if (this.focused && this.decimal !== 'always') {\n limit = fraction.length;\n }\n\n return formatNumber(\n value,\n limit,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n this.numberFormat.zeroPadding,\n );\n }\n\n get computedValue(): string {\n if (this.focused) {\n return this.nativeValue;\n }\n\n return this.value === null ? '' : this.formattedValue;\n }\n\n @HostListener('keydown.0', ['$event'])\n onZero(event: KeyboardEvent) {\n const decimal =\n this.nativeValue.split(this.numberFormat.decimalSeparator)[1] || '';\n const {nativeFocusableElement} = this;\n\n if (\n decimal.length < this.precision ||\n !nativeFocusableElement ||\n !nativeFocusableElement.selectionStart ||\n this.nativeValue[nativeFocusableElement.selectionStart] !== '0'\n ) {\n return;\n }\n\n event.preventDefault();\n nativeFocusableElement.selectionStart++;\n }\n\n mask: TuiMapper<boolean, TuiTextMaskOptions> = (\n allowNegative: boolean,\n decimal: TuiDecimalT,\n decimalLimit: number,\n nativeFocusableElement: HTMLInputElement | null,\n ) => ({\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalLimit,\n allowDecimal: decimal !== 'never',\n requireDecimal: decimal === 'always',\n autoCorrectDecimalSymbol: false,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n pipe: tuiCreateAutoCorrectedNumberPipe(\n decimal === 'always' ? decimalLimit : 0,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n nativeFocusableElement || undefined,\n allowNegative,\n ),\n guide: false,\n });\n\n onValue(value: string) {\n if (maskedMoneyValueIsEmpty(value)) {\n this.updateValue(null);\n\n return;\n }\n\n if (this.isNativeValueNotFinished) {\n return;\n }\n\n const capped = this.absoluteCapInputValue(value);\n\n if (capped === null || isNaN(capped)) {\n return;\n }\n\n this.updateValue(capped);\n\n if (\n capped !==\n maskedNumberStringToNumber(\n value,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n )\n ) {\n this.nativeValue = this.formattedValue;\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (TUI_DECIMAL_SYMBOLS.indexOf(event.key) === -1) {\n return;\n }\n\n if (this.decimal === 'never') {\n event.preventDefault();\n\n return;\n }\n\n if (this.nativeValue.includes(this.numberFormat.decimalSeparator)) {\n event.preventDefault();\n this.setCaretAfterComma();\n }\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n\n if (focused) {\n return;\n }\n\n const nativeNumberValue = this.nativeNumberValue;\n\n if (isNaN(nativeNumberValue)) {\n this.clear();\n\n return;\n }\n\n const clamped = Math.min(this.max, Math.max(this.min, nativeNumberValue));\n\n this.updateValue(clamped);\n this.nativeValue = this.formattedValue;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean) {\n this.updatePressed(pressed);\n }\n\n private get isNativeValueNotFinished(): boolean {\n const nativeNumberValue = this.nativeNumberValue;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.max\n : nativeNumberValue < this.min;\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private get nativeNumberValue(): number {\n return maskedNumberStringToNumber(\n this.nativeValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private set nativeValue(value: string) {\n if (!this.primitiveTextfield || !this.nativeFocusableElement) {\n return;\n }\n\n this.primitiveTextfield.value = value;\n this.nativeFocusableElement.value = value;\n }\n\n private clear() {\n this.nativeValue = '';\n this.updateValue(null);\n }\n\n private absoluteCapInputValue(inputValue: string): number | null {\n const value = maskedNumberStringToNumber(\n inputValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n const capped =\n value < 0\n ? Math.max(Math.max(this.min, Number.MIN_SAFE_INTEGER), value)\n : Math.min(value, Math.min(this.max, Number.MAX_SAFE_INTEGER));\n const ineligibleValue = isNaN(capped) || capped < this.min || capped > this.max;\n\n return ineligibleValue ? null : capped;\n }\n\n private setCaretAfterComma() {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n const afterCommaPosition = this.nativeValue.length - this.precision;\n\n this.nativeFocusableElement.setSelectionRange(\n afterCommaPosition,\n afterCommaPosition,\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputNumberComponent} from './input-number.component';\n\n@NgModule({\n imports: [\n TextMaskModule,\n TuiMapperPipeModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n ],\n declarations: [TuiInputNumberComponent],\n exports: [TuiInputNumberComponent],\n})\nexport class TuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-number.js","sources":["ng://@taiga-ui/kit/components/input-number/input-number.component.ts","ng://@taiga-ui/kit/components/input-number/input-number.directive.ts","ng://@taiga-ui/kit/components/input-number/input-number.module.ts","ng://@taiga-ui/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiInputModeT,\n TuiMapper,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n getFractionPartPadded,\n maskedMoneyValueIsEmpty,\n maskedNumberStringToNumber,\n NumberFormatSettings,\n TUI_DECIMAL_SYMBOLS,\n TUI_NUMBER_FORMAT,\n tuiCreateAutoCorrectedNumberPipe,\n tuiCreateNumberMask,\n TuiDecimalT,\n TuiPrimitiveTextfieldComponent,\n TuiTextMaskOptions,\n} from '@taiga-ui/core';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n// @dynamic\n@Component({\n selector: 'tui-input-number',\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputNumberComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputNumberComponent),\n },\n ],\n})\nexport class TuiInputNumberComponent\n extends AbstractTuiNullableControl<number>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n min = -Infinity;\n\n @Input()\n @tuiDefaultProp()\n max = Infinity;\n\n @Input()\n @tuiDefaultProp()\n decimal: TuiDecimalT = 'not-zero';\n\n @Input()\n @tuiDefaultProp()\n precision = 2;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef)\n changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: NumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n get focused(): boolean {\n return !!this.primitiveTextfield && this.primitiveTextfield.focused;\n }\n\n get isNegativeAllowed(): boolean {\n return this.min < 0;\n }\n\n get inputMode(): TuiInputModeT {\n return this.decimal === 'never' ? 'numeric' : 'decimal';\n }\n\n get calculatedMaxLength(): number {\n const decimalPart =\n this.decimal !== 'never' &&\n this.nativeValue.includes(this.numberFormat.decimalSeparator);\n const precision = decimalPart ? this.precision + 1 : 0;\n const takeThousand = this.numberFormat.thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n }\n\n get formattedValue(): string {\n const value = this.value || 0;\n const absValue = Math.abs(value);\n const hasFraction = absValue % 1 > 0;\n let limit = this.decimal === 'always' || hasFraction ? this.precision : 0;\n\n const fraction = hasFraction ? getFractionPartPadded(value, this.precision) : '';\n\n if (this.focused && this.decimal !== 'always') {\n limit = fraction.length;\n }\n\n return formatNumber(\n value,\n limit,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n this.numberFormat.zeroPadding,\n );\n }\n\n get computedValue(): string {\n if (this.focused) {\n return this.nativeValue;\n }\n\n return this.value === null ? '' : this.formattedValue;\n }\n\n @HostListener('keydown.0', ['$event'])\n onZero(event: KeyboardEvent) {\n const decimal =\n this.nativeValue.split(this.numberFormat.decimalSeparator)[1] || '';\n const {nativeFocusableElement} = this;\n\n if (\n decimal.length < this.precision ||\n !nativeFocusableElement ||\n !nativeFocusableElement.selectionStart ||\n this.nativeValue[nativeFocusableElement.selectionStart] !== '0'\n ) {\n return;\n }\n\n event.preventDefault();\n nativeFocusableElement.selectionStart++;\n }\n\n mask: TuiMapper<boolean, TuiTextMaskOptions> = (\n allowNegative: boolean,\n decimal: TuiDecimalT,\n decimalLimit: number,\n nativeFocusableElement: HTMLInputElement | null,\n ) => ({\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalLimit,\n allowDecimal: decimal !== 'never',\n requireDecimal: decimal === 'always',\n autoCorrectDecimalSymbol: false,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n pipe: tuiCreateAutoCorrectedNumberPipe(\n decimal === 'always' ? decimalLimit : 0,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n nativeFocusableElement || undefined,\n allowNegative,\n ),\n guide: false,\n });\n\n onValueChange(value: string) {\n if (maskedMoneyValueIsEmpty(value)) {\n this.updateValue(null);\n\n return;\n }\n\n if (this.isNativeValueNotFinished) {\n return;\n }\n\n const capped = this.absoluteCapInputValue(value);\n\n if (capped === null || isNaN(capped)) {\n return;\n }\n\n this.updateValue(capped);\n\n if (\n capped !==\n maskedNumberStringToNumber(\n value,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n )\n ) {\n this.nativeValue = this.formattedValue;\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (TUI_DECIMAL_SYMBOLS.indexOf(event.key) === -1) {\n return;\n }\n\n if (this.decimal === 'never') {\n event.preventDefault();\n\n return;\n }\n\n if (this.nativeValue.includes(this.numberFormat.decimalSeparator)) {\n event.preventDefault();\n this.setCaretAfterComma();\n }\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n\n if (focused) {\n return;\n }\n\n const nativeNumberValue = this.nativeNumberValue;\n\n if (isNaN(nativeNumberValue)) {\n this.clear();\n\n return;\n }\n\n const clamped = Math.min(this.max, Math.max(this.min, nativeNumberValue));\n\n this.updateValue(clamped);\n this.nativeValue = this.formattedValue;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean) {\n this.updatePressed(pressed);\n }\n\n private get isNativeValueNotFinished(): boolean {\n const nativeNumberValue = this.nativeNumberValue;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.max\n : nativeNumberValue < this.min;\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private get nativeNumberValue(): number {\n return maskedNumberStringToNumber(\n this.nativeValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private set nativeValue(value: string) {\n if (!this.primitiveTextfield || !this.nativeFocusableElement) {\n return;\n }\n\n this.primitiveTextfield.value = value;\n this.nativeFocusableElement.value = value;\n }\n\n private clear() {\n this.nativeValue = '';\n this.updateValue(null);\n }\n\n private absoluteCapInputValue(inputValue: string): number | null {\n const value = maskedNumberStringToNumber(\n inputValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n const capped =\n value < 0\n ? Math.max(Math.max(this.min, Number.MIN_SAFE_INTEGER), value)\n : Math.min(value, Math.min(this.max, Number.MAX_SAFE_INTEGER));\n const ineligibleValue = isNaN(capped) || capped < this.min || capped > this.max;\n\n return ineligibleValue ? null : capped;\n }\n\n private setCaretAfterComma() {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n const afterCommaPosition = this.nativeValue.length - this.precision;\n\n this.nativeFocusableElement.setSelectionRange(\n afterCommaPosition,\n afterCommaPosition,\n );\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputNumberComponent} from './input-number.component';\n\n@Directive({\n selector: 'tui-input-number',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputNumberDirective),\n },\n ],\n})\nexport class TuiInputNumberDirective extends TuiAbstractTextfieldHost<TuiInputNumberComponent> {\n get value(): string {\n return this.host.computedValue;\n }\n\n onValueChange(value: string) {\n this.host.onValueChange(value);\n }\n\n process(input: HTMLInputElement) {\n input.inputMode = 'decimal';\n // TODO maxLength?\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputNumberComponent} from './input-number.component';\nimport {TuiInputNumberDirective} from './input-number.directive';\n\n@NgModule({\n imports: [\n TextMaskModule,\n TuiMapperPipeModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n ],\n declarations: [TuiInputNumberComponent, TuiInputNumberDirective],\n exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],\n})\nexport class TuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAqCA,IAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;IAkBY,2CAAkC;IA8B1C,iCAII,OAAyB,EAEzB,iBAAoC,EAEnB,YAAkC;QARvD,YAUI,kBAAM,OAAO,EAAE,iBAAiB,CAAC,SACpC;QAHoB,kBAAY,GAAZ,YAAY,CAAsB;QA9BvD,SAAG,GAAG,CAAC,QAAQ,CAAC;QAIhB,SAAG,GAAG,QAAQ,CAAC;QAIf,aAAO,GAAgB,UAAU,CAAC;QAIlC,eAAS,GAAG,CAAC,CAAC;QAId,YAAM,GAAG,EAAE,CAAC;QAIZ,aAAO,GAAG,EAAE,CAAC;QA2Fb,UAAI,GAA2C,UAC3C,aAAsB,EACtB,OAAoB,EACpB,YAAoB,EACpB,sBAA+C,IAC9C,QAAC;YACF,IAAI,EAAE,mBAAmB,CAAC;gBACtB,aAAa,eAAA;gBACb,YAAY,cAAA;gBACZ,YAAY,EAAE,OAAO,KAAK,OAAO;gBACjC,cAAc,EAAE,OAAO,KAAK,QAAQ;gBACpC,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,KAAI,CAAC,YAAY,CAAC,gBAAgB;gBACjD,cAAc,EAAE,KAAI,CAAC,YAAY,CAAC,iBAAiB;aACtD,CAAC;YACF,IAAI,EAAE,gCAAgC,CAClC,OAAO,KAAK,QAAQ,GAAG,YAAY,GAAG,CAAC,EACvC,KAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,KAAI,CAAC,YAAY,CAAC,iBAAiB,EACnC,sBAAsB,IAAI,SAAS,EACnC,aAAa,CAChB;YACD,KAAK,EAAE,KAAK;SACf,IAAC,CAAC;;KArGF;gCA1CQ,uBAAuB;IA4ChC,sBAAI,2DAAsB;aAA1B;YACI,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB;kBAClD,IAAI;kBACJ,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC;SACxD;;;OAAA;IAED,sBAAI,4CAAO;aAAX;YACI,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;SACvE;;;OAAA;IAED,sBAAI,sDAAiB;aAArB;YACI,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;SACvB;;;OAAA;IAED,sBAAI,8CAAS;aAAb;YACI,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;SAC3D;;;OAAA;IAED,sBAAI,wDAAmB;aAAvB;YACI,IAAM,WAAW,GACb,IAAI,CAAC,OAAO,KAAK,OAAO;gBACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAClE,IAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAE1E,OAAO,kBAAkB,GAAG,SAAS,GAAG,YAAY,CAAC;SACxD;;;OAAA;IAED,sBAAI,mDAAc;aAAlB;YACI,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAC9B,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,IAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAE1E,IAAM,QAAQ,GAAG,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YAEjF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;gBAC3C,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;aAC3B;YAED,OAAO,YAAY,CACf,KAAK,EACL,KAAK,EACL,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EACnC,IAAI,CAAC,YAAY,CAAC,WAAW,CAChC,CAAC;SACL;;;OAAA;IAED,sBAAI,kDAAa;aAAjB;YACI,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;YAED,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;SACzD;;;OAAA;IAGD,wCAAM,GAAN,UAAO,KAAoB;QACvB,IAAM,OAAO,GACT,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,IAAA,oDAAsB,CAAS;QAEtC,IACI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS;YAC/B,CAAC,sBAAsB;YACvB,CAAC,sBAAsB,CAAC,cAAc;YACtC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,GAAG,EACjE;YACE,OAAO;SACV;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,sBAAsB,CAAC,cAAc,EAAE,CAAC;KAC3C;IA2BD,+CAAa,GAAb,UAAc,KAAa;QACvB,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEvB,OAAO;SACV;QAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,OAAO;SACV;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEjD,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YAClC,OAAO;SACV;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,IACI,MAAM;YACN,0BAA0B,CACtB,KAAK,EACL,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACtC,EACH;YACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;SAC1C;KACJ;IAED,2CAAS,GAAT,UAAU,KAAoB;QAC1B,IAAI,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YAC/C,OAAO;SACV;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,OAAO;SACV;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;YAC/D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAED,2CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,OAAO,EAAE;YACT,OAAO;SACV;QAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEjD,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,OAAO;SACV;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;KAC1C;IAED,2CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,2CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,sBAAY,6DAAwB;aAApC;YACI,IAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAEjD,OAAO,iBAAiB,GAAG,CAAC;kBACtB,iBAAiB,GAAG,IAAI,CAAC,GAAG;kBAC5B,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC;SACtC;;;OAAA;IAED,sBAAY,gDAAW;aAAvB;YACI,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAAE,CAAC;SAC/E;aAUD,UAAwB,KAAa;YACjC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAC1D,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;SAC7C;;;OAjBA;IAED,sBAAY,sDAAiB;aAA7B;YACI,OAAO,0BAA0B,CAC7B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACtC,CAAC;SACL;;;OAAA;IAWO,uCAAK,GAAb;QACI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC1B;IAEO,uDAAqB,GAA7B,UAA8B,UAAkB;QAC5C,IAAM,KAAK,GAAG,0BAA0B,CACpC,UAAU,EACV,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACtC,CAAC;QACF,IAAM,MAAM,GACR,KAAK,GAAG,CAAC;cACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;cAC5D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvE,IAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;QAEhF,OAAO,eAAe,GAAG,IAAI,GAAG,MAAM,CAAC;KAC1C;IAEO,oDAAkB,GAA1B;QACI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9B,OAAO;SACV;QAED,IAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAEpE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CACzC,kBAAkB,EAClB,kBAAkB,CACrB,CAAC;KACL;;;gBAvPY,SAAS,uBAHjB,QAAQ,YACR,IAAI,YACJ,MAAM,SAAC,SAAS;gBAGE,iBAAiB,uBADnC,MAAM,SAAC,iBAAiB;gDAExB,MAAM,SAAC,iBAAiB;;IAjC7B;QADC,SAAS,CAAC,8BAA8B,CAAC;uEAC2B;IAIrE;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACD;IAIhB;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACF;IAIf;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;4DACiB;IAIlC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;8DACH;IAId;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;2DACL;IAIZ;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;4DACJ;IAyEb;QADC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;yDAiBrC;IAtHQ,uBAAuB;QAhBnC,SAAS,CAAC;YACP,QAAQ,EAAE,kBAAkB;YAC5B,g5BAA2C;YAE3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAA2B;oBACpC,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,yBAAuB,GAAA,CAAC;iBACzD;gBACD;oBACI,OAAO,EAAE,kBAAkB;oBAC3B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,yBAAuB,GAAA,CAAC;iBACzD;aACJ;;SACJ,CAAC;QAiCO,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,IAAI,EAAE,CAAA;QACN,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;QAEjB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAEzB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAtCrB,uBAAuB,CA2RnC;IAAD,8BAAC;CAAA,CA1RW,0BAA0B;;;IC3CO,2CAAiD;IAA9F;;KAaC;gCAbY,uBAAuB;IAChC,sBAAI,0CAAK;aAAT;YACI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;SAClC;;;OAAA;IAED,+CAAa,GAAb,UAAc,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAClC;IAED,yCAAO,GAAP,UAAQ,KAAuB;QAC3B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;;KAE/B;;IAZQ,uBAAuB;QATnC,SAAS,CAAC;YACP,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,kBAAkB;oBAC3B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,yBAAuB,GAAA,CAAC;iBACzD;aACJ;SACJ,CAAC;OACW,uBAAuB,CAanC;IAAD,8BAAC;CAAA,CAb4C,wBAAwB;;;ICUrE;KAAoC;IAAvB,oBAAoB;QAXhC,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,cAAc;gBACd,mBAAmB;gBACnB,2BAA2B;gBAC3B,4BAA4B;gBAC5B,sBAAsB;aACzB;YACD,YAAY,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;YAChE,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;SACrF,CAAC;OACW,oBAAoB,CAAG;IAAD,2BAAC;CAApC;;ACxBA;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { __extends, __read, __decorate, __param } from 'tslib';
2
- import { InjectionToken, Optional, Self, Inject, ChangeDetectorRef, ViewChild, Component, ChangeDetectionStrategy, forwardRef, NgModule } from '@angular/core';
2
+ import { InjectionToken, Optional, Self, Inject, ChangeDetectorRef, ViewChild, Component, ChangeDetectionStrategy, forwardRef, Directive, NgModule } from '@angular/core';
3
3
  import { NgControl, FormsModule } from '@angular/forms';
4
4
  import { tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl, TuiLetModule } from '@taiga-ui/cdk';
5
- import { TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiHintControllerDirective, TUI_HINT_WATCHED_CONTROLLER, TUI_MODE, TuiPrimitiveTextfieldComponent, HINT_CONTROLLER_PROVIDER, MODE_PROVIDER, TuiSvgModule, TuiHintModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
5
+ import { TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiHintControllerDirective, TUI_HINT_WATCHED_CONTROLLER, TUI_MODE, TuiPrimitiveTextfieldComponent, HINT_CONTROLLER_PROVIDER, MODE_PROVIDER, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiSvgModule, TuiHintModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
6
6
  import { TUI_PASSWORD_TEXTS } from '@taiga-ui/kit/tokens';
7
7
  import { combineLatest, Observable } from 'rxjs';
8
8
  import { startWith, map } from 'rxjs/operators';
@@ -127,13 +127,17 @@ var TuiInputPasswordComponent = /** @class */ (function (_super) {
127
127
  TuiInputPasswordComponent = TuiInputPasswordComponent_1 = __decorate([
128
128
  Component({
129
129
  selector: 'tui-input-password',
130
- template: "<tui-primitive-textfield\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [tuiTextfieldType]=\"inputType\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"interactive ? iconContent : null\"\n [value]=\"value\"\n (valueChange)=\"onValueChange($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent=\"polymorpheus\" polymorpheus>\n <span\n *tuiLet=\"passwordTexts$ | async as texts\"\n polymorpheus-outlet\n [content]=\"icon\"\n [context]=\"context\"\n >\n <ng-template let-icon>\n <tui-svg\n automation-id=\"tui-password__icon\"\n tuiHintId=\"not_required\"\n class=\"icon\"\n [tuiHint]=\"texts[0] && texts[1] && hintContent\"\n [tuiHintDirection]=\"hintController.direction\"\n [tuiHintMode]=\"computedMode$ | async\"\n [src]=\"icon\"\n (click)=\"togglePasswordVisibility()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #hintContent=\"polymorpheus\" polymorpheus>\n {{ isPasswordHidden ? texts[0] : texts[1] }}\n </ng-template>\n </span>\n</ng-template>\n",
130
+ template: "<tui-primitive-textfield\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [invalid]=\"computedInvalid\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [tuiTextfieldType]=\"inputType\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"interactive ? iconContent : null\"\n [value]=\"value\"\n (valueChange)=\"onValueChange($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n <ng-content select=\"input\" ngProjectAs=\"input\"></ng-content>\n</tui-primitive-textfield>\n\n<ng-template #iconContent=\"polymorpheus\" polymorpheus>\n <span\n *tuiLet=\"passwordTexts$ | async as texts\"\n polymorpheus-outlet\n [content]=\"icon\"\n [context]=\"context\"\n >\n <ng-template let-icon>\n <tui-svg\n automation-id=\"tui-password__icon\"\n tuiHintId=\"not_required\"\n class=\"icon\"\n [tuiHint]=\"texts[0] && texts[1] && hintContent\"\n [tuiHintDirection]=\"hintController.direction\"\n [tuiHintMode]=\"computedMode$ | async\"\n [src]=\"icon\"\n (click)=\"togglePasswordVisibility()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #hintContent=\"polymorpheus\" polymorpheus>\n {{ isPasswordHidden ? texts[0] : texts[1] }}\n </ng-template>\n </span>\n</ng-template>\n",
131
131
  changeDetection: ChangeDetectionStrategy.OnPush,
132
132
  providers: [
133
133
  {
134
134
  provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
135
135
  useExisting: forwardRef(function () { return TuiInputPasswordComponent_1; }),
136
136
  },
137
+ {
138
+ provide: AbstractTuiControl,
139
+ useExisting: forwardRef(function () { return TuiInputPasswordComponent_1; }),
140
+ },
137
141
  HINT_CONTROLLER_PROVIDER,
138
142
  MODE_PROVIDER,
139
143
  ],
@@ -152,6 +156,38 @@ var TuiInputPasswordComponent = /** @class */ (function (_super) {
152
156
  return TuiInputPasswordComponent;
153
157
  }(AbstractTuiControl));
154
158
 
159
+ var TuiInputPasswordDirective = /** @class */ (function (_super) {
160
+ __extends(TuiInputPasswordDirective, _super);
161
+ function TuiInputPasswordDirective() {
162
+ return _super !== null && _super.apply(this, arguments) || this;
163
+ }
164
+ TuiInputPasswordDirective_1 = TuiInputPasswordDirective;
165
+ TuiInputPasswordDirective.prototype.onValueChange = function (value) {
166
+ this.host.onValueChange(value);
167
+ };
168
+ TuiInputPasswordDirective.prototype.process = function (input) {
169
+ this.input = input;
170
+ };
171
+ TuiInputPasswordDirective.prototype.ngDoCheck = function () {
172
+ if (this.input) {
173
+ this.input.type = this.host.isPasswordHidden ? 'password' : 'text';
174
+ }
175
+ };
176
+ var TuiInputPasswordDirective_1;
177
+ TuiInputPasswordDirective = TuiInputPasswordDirective_1 = __decorate([
178
+ Directive({
179
+ selector: 'tui-input-password',
180
+ providers: [
181
+ {
182
+ provide: TUI_TEXTFIELD_HOST,
183
+ useExisting: forwardRef(function () { return TuiInputPasswordDirective_1; }),
184
+ },
185
+ ],
186
+ })
187
+ ], TuiInputPasswordDirective);
188
+ return TuiInputPasswordDirective;
189
+ }(TuiAbstractTextfieldHost));
190
+
155
191
  var TuiInputPasswordModule = /** @class */ (function () {
156
192
  function TuiInputPasswordModule() {
157
193
  }
@@ -167,8 +203,12 @@ var TuiInputPasswordModule = /** @class */ (function () {
167
203
  TuiPrimitiveTextfieldModule,
168
204
  TuiTextfieldControllerModule,
169
205
  ],
170
- declarations: [TuiInputPasswordComponent],
171
- exports: [TuiInputPasswordComponent],
206
+ declarations: [TuiInputPasswordComponent, TuiInputPasswordDirective],
207
+ exports: [
208
+ TuiInputPasswordComponent,
209
+ TuiInputPasswordDirective,
210
+ TuiTextfieldComponent,
211
+ ],
172
212
  })
173
213
  ], TuiInputPasswordModule);
174
214
  return TuiInputPasswordModule;
@@ -178,5 +218,5 @@ var TuiInputPasswordModule = /** @class */ (function () {
178
218
  * Generated bundle index. Do not edit.
179
219
  */
180
220
 
181
- export { PASSWORD_ICON_HIDE, PASSWORD_ICON_SHOW, TUI_INPUT_PASSWORD_DEFAULT_OPTIONS, TUI_INPUT_PASSWORD_OPTIONS, TuiInputPasswordComponent, TuiInputPasswordModule };
221
+ export { PASSWORD_ICON_HIDE, PASSWORD_ICON_SHOW, TUI_INPUT_PASSWORD_DEFAULT_OPTIONS, TUI_INPUT_PASSWORD_OPTIONS, TuiInputPasswordComponent, TuiInputPasswordDirective, TuiInputPasswordModule };
182
222
  //# sourceMappingURL=taiga-ui-kit-components-input-password.js.map