@taiga-ui/kit 2.28.0 → 2.32.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 (501) hide show
  1. package/README.md +4 -5
  2. package/abstract/slider/slider.d.ts +1 -1
  3. package/abstract/taiga-ui-kit-abstract.metadata.json +1 -1
  4. package/bundles/taiga-ui-kit-abstract.umd.js +6 -5
  5. package/bundles/taiga-ui-kit-abstract.umd.js.map +1 -1
  6. package/bundles/taiga-ui-kit-abstract.umd.min.js +2 -2
  7. package/bundles/taiga-ui-kit-abstract.umd.min.js.map +1 -1
  8. package/bundles/taiga-ui-kit-components-arrow.umd.js +31 -8
  9. package/bundles/taiga-ui-kit-components-arrow.umd.js.map +1 -1
  10. package/bundles/taiga-ui-kit-components-arrow.umd.min.js +2 -2
  11. package/bundles/taiga-ui-kit-components-arrow.umd.min.js.map +1 -1
  12. package/bundles/taiga-ui-kit-components-calendar-month.umd.js +4 -1
  13. package/bundles/taiga-ui-kit-components-calendar-month.umd.js.map +1 -1
  14. package/bundles/taiga-ui-kit-components-calendar-month.umd.min.js +2 -2
  15. package/bundles/taiga-ui-kit-components-calendar-month.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-kit-components-carousel.umd.js +5 -4
  17. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  18. package/bundles/taiga-ui-kit-components-carousel.umd.min.js +1 -1
  19. package/bundles/taiga-ui-kit-components-carousel.umd.min.js.map +1 -1
  20. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js.map +1 -1
  21. package/bundles/taiga-ui-kit-components-checkbox-block.umd.min.js.map +1 -1
  22. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.min.js.map +1 -1
  24. package/bundles/taiga-ui-kit-components-checkbox.umd.js +1 -1
  25. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  26. package/bundles/taiga-ui-kit-components-checkbox.umd.min.js +1 -1
  27. package/bundles/taiga-ui-kit-components-checkbox.umd.min.js.map +1 -1
  28. package/bundles/taiga-ui-kit-components-combo-box.umd.js +13 -19
  29. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  30. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js +2 -2
  31. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js.map +1 -1
  32. package/bundles/taiga-ui-kit-components-input-count.umd.js +2 -6
  33. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  34. package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
  35. package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
  36. package/bundles/taiga-ui-kit-components-input-date-range.umd.js +28 -13
  37. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  38. package/bundles/taiga-ui-kit-components-input-date-range.umd.min.js +1 -1
  39. package/bundles/taiga-ui-kit-components-input-date-range.umd.min.js.map +1 -1
  40. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +40 -23
  41. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  42. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js +2 -2
  43. package/bundles/taiga-ui-kit-components-input-date-time.umd.min.js.map +1 -1
  44. package/bundles/taiga-ui-kit-components-input-date.umd.js +27 -12
  45. package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
  46. package/bundles/taiga-ui-kit-components-input-date.umd.min.js +2 -2
  47. package/bundles/taiga-ui-kit-components-input-date.umd.min.js.map +1 -1
  48. package/bundles/taiga-ui-kit-components-input-file.umd.js +1 -8
  49. package/bundles/taiga-ui-kit-components-input-file.umd.js.map +1 -1
  50. package/bundles/taiga-ui-kit-components-input-file.umd.min.js +1 -1
  51. package/bundles/taiga-ui-kit-components-input-file.umd.min.js.map +1 -1
  52. package/bundles/taiga-ui-kit-components-input-inline.umd.js +2 -15
  53. package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
  54. package/bundles/taiga-ui-kit-components-input-inline.umd.min.js +1 -1
  55. package/bundles/taiga-ui-kit-components-input-inline.umd.min.js.map +1 -1
  56. package/bundles/taiga-ui-kit-components-input-month-range.umd.js +1 -8
  57. package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
  58. package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js +1 -1
  59. package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js.map +1 -1
  60. package/bundles/taiga-ui-kit-components-input-month.umd.js +1 -8
  61. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  62. package/bundles/taiga-ui-kit-components-input-month.umd.min.js +1 -1
  63. package/bundles/taiga-ui-kit-components-input-month.umd.min.js.map +1 -1
  64. package/bundles/taiga-ui-kit-components-input-number.umd.js +12 -12
  65. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  66. package/bundles/taiga-ui-kit-components-input-number.umd.min.js +1 -1
  67. package/bundles/taiga-ui-kit-components-input-number.umd.min.js.map +1 -1
  68. package/bundles/taiga-ui-kit-components-input-password.umd.js +2 -9
  69. package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
  70. package/bundles/taiga-ui-kit-components-input-password.umd.min.js +1 -1
  71. package/bundles/taiga-ui-kit-components-input-password.umd.min.js.map +1 -1
  72. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +46 -25
  73. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  74. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js +1 -1
  75. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js.map +1 -1
  76. package/bundles/taiga-ui-kit-components-input-phone.umd.js +3 -3
  77. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  78. package/bundles/taiga-ui-kit-components-input-phone.umd.min.js +1 -1
  79. package/bundles/taiga-ui-kit-components-input-phone.umd.min.js.map +1 -1
  80. package/bundles/taiga-ui-kit-components-input-range.umd.js +7 -4
  81. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  82. package/bundles/taiga-ui-kit-components-input-range.umd.min.js +2 -2
  83. package/bundles/taiga-ui-kit-components-input-range.umd.min.js.map +1 -1
  84. package/bundles/taiga-ui-kit-components-input-slider.umd.js +7 -4
  85. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  86. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js +1 -1
  87. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js.map +1 -1
  88. package/bundles/taiga-ui-kit-components-input-tag.umd.js +3 -3
  89. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  90. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js +1 -1
  91. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js.map +1 -1
  92. package/bundles/taiga-ui-kit-components-input-time.umd.js +14 -14
  93. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  94. package/bundles/taiga-ui-kit-components-input-time.umd.min.js +2 -2
  95. package/bundles/taiga-ui-kit-components-input-time.umd.min.js.map +1 -1
  96. package/bundles/taiga-ui-kit-components-input.umd.js +1 -1
  97. package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
  98. package/bundles/taiga-ui-kit-components-input.umd.min.js +1 -1
  99. package/bundles/taiga-ui-kit-components-input.umd.min.js.map +1 -1
  100. package/bundles/taiga-ui-kit-components-multi-select.umd.js +23 -18
  101. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  102. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js +2 -2
  103. package/bundles/taiga-ui-kit-components-multi-select.umd.min.js.map +1 -1
  104. package/bundles/taiga-ui-kit-components-rating.umd.js +368 -0
  105. package/bundles/taiga-ui-kit-components-rating.umd.js.map +1 -0
  106. package/bundles/taiga-ui-kit-components-rating.umd.min.js +16 -0
  107. package/bundles/taiga-ui-kit-components-rating.umd.min.js.map +1 -0
  108. package/bundles/taiga-ui-kit-components-select.umd.js +11 -16
  109. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  110. package/bundles/taiga-ui-kit-components-select.umd.min.js +1 -1
  111. package/bundles/taiga-ui-kit-components-select.umd.min.js.map +1 -1
  112. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  113. package/bundles/taiga-ui-kit-components-tag.umd.min.js.map +1 -1
  114. package/bundles/taiga-ui-kit-components-text-area.umd.js +2 -2
  115. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  116. package/bundles/taiga-ui-kit-components-text-area.umd.min.js +1 -1
  117. package/bundles/taiga-ui-kit-components-text-area.umd.min.js.map +1 -1
  118. package/bundles/taiga-ui-kit-components-tree.umd.js +23 -13
  119. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  120. package/bundles/taiga-ui-kit-components-tree.umd.min.js +2 -2
  121. package/bundles/taiga-ui-kit-components-tree.umd.min.js.map +1 -1
  122. package/bundles/taiga-ui-kit-components.umd.js +12 -4
  123. package/bundles/taiga-ui-kit-components.umd.js.map +1 -1
  124. package/bundles/taiga-ui-kit-components.umd.min.js +1 -1
  125. package/bundles/taiga-ui-kit-constants.umd.js +16 -0
  126. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  127. package/bundles/taiga-ui-kit-constants.umd.min.js +1 -1
  128. package/bundles/taiga-ui-kit-constants.umd.min.js.map +1 -1
  129. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js.map +1 -1
  130. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.min.js.map +1 -1
  131. package/bundles/taiga-ui-kit-tokens.umd.js +7 -0
  132. package/bundles/taiga-ui-kit-tokens.umd.js.map +1 -1
  133. package/bundles/taiga-ui-kit-tokens.umd.min.js +1 -1
  134. package/bundles/taiga-ui-kit-tokens.umd.min.js.map +1 -1
  135. package/bundles/taiga-ui-kit-utils-mask.umd.js +65 -22
  136. package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
  137. package/bundles/taiga-ui-kit-utils-mask.umd.min.js +2 -2
  138. package/bundles/taiga-ui-kit-utils-mask.umd.min.js.map +1 -1
  139. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js +241 -6
  140. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js.map +1 -1
  141. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.min.js +15 -1
  142. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.min.js.map +1 -1
  143. package/components/arrow/arrow-options.d.ts +16 -0
  144. package/components/arrow/arrow.component.d.ts +5 -3
  145. package/components/arrow/index.d.ts +1 -0
  146. package/components/arrow/taiga-ui-kit-components-arrow.metadata.json +1 -1
  147. package/components/calendar-month/taiga-ui-kit-components-calendar-month.metadata.json +1 -1
  148. package/components/carousel/taiga-ui-kit-components-carousel.metadata.json +1 -1
  149. package/components/checkbox-block/checkbox-block.component.d.ts +1 -1
  150. package/components/checkbox-labeled/checkbox-labeled.component.d.ts +1 -1
  151. package/components/combo-box/combo-box.component.d.ts +3 -2
  152. package/components/combo-box/taiga-ui-kit-components-combo-box.metadata.json +1 -1
  153. package/components/index.d.ts +1 -0
  154. package/components/input-date/input-date.component.d.ts +5 -4
  155. package/components/input-date/taiga-ui-kit-components-input-date.metadata.json +1 -1
  156. package/components/input-date-range/input-date-range.component.d.ts +5 -4
  157. package/components/input-date-range/taiga-ui-kit-components-input-date-range.metadata.json +1 -1
  158. package/components/input-date-time/input-date-time.component.d.ts +5 -5
  159. package/components/input-date-time/taiga-ui-kit-components-input-date-time.metadata.json +1 -1
  160. package/components/input-file/input-file.component.d.ts +0 -1
  161. package/components/input-file/taiga-ui-kit-components-input-file.metadata.json +1 -1
  162. package/components/input-inline/input-inline.component.d.ts +0 -1
  163. package/components/input-inline/taiga-ui-kit-components-input-inline.metadata.json +1 -1
  164. package/components/input-month/input-month.component.d.ts +0 -1
  165. package/components/input-month/taiga-ui-kit-components-input-month.metadata.json +1 -1
  166. package/components/input-month-range/input-month-range.component.d.ts +0 -1
  167. package/components/input-month-range/taiga-ui-kit-components-input-month-range.metadata.json +1 -1
  168. package/components/input-number/taiga-ui-kit-components-input-number.metadata.json +1 -1
  169. package/components/input-password/input-password.component.d.ts +0 -1
  170. package/components/input-password/taiga-ui-kit-components-input-password.metadata.json +1 -1
  171. package/components/input-phone-international/const/countries.d.ts +15 -7
  172. package/components/input-phone-international/country-iso-code.d.ts +1 -1
  173. package/components/input-phone-international/index.d.ts +2 -0
  174. package/components/input-phone-international/input-phone-international.component.d.ts +2 -2
  175. package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.metadata.json +1 -1
  176. package/components/input-phone-international/tokens/countries-masks.d.ts +3 -0
  177. package/components/input-phone-international/utils/extract-value-from-event.d.ts +1 -0
  178. package/components/input-range/input-range.component.d.ts +2 -1
  179. package/components/input-range/taiga-ui-kit-components-input-range.metadata.json +1 -1
  180. package/components/input-slider/input-slider.component.d.ts +2 -1
  181. package/components/input-slider/taiga-ui-kit-components-input-slider.metadata.json +1 -1
  182. package/components/input-tag/input-tag.component.d.ts +1 -1
  183. package/components/input-tag/taiga-ui-kit-components-input-tag.metadata.json +1 -1
  184. package/components/input-time/input-time-options.d.ts +3 -0
  185. package/components/input-time/input-time.component.d.ts +7 -8
  186. package/components/input-time/taiga-ui-kit-components-input-time.metadata.json +1 -1
  187. package/components/multi-select/multi-select.component.d.ts +4 -2
  188. package/components/multi-select/taiga-ui-kit-components-multi-select.metadata.json +1 -1
  189. package/components/rating/index.d.ts +3 -0
  190. package/components/rating/package.json +13 -0
  191. package/components/rating/rating-options.d.ts +9 -0
  192. package/components/rating/rating.component.d.ts +21 -0
  193. package/components/rating/rating.module.d.ts +2 -0
  194. package/components/rating/taiga-ui-kit-components-rating.d.ts +4 -0
  195. package/components/rating/taiga-ui-kit-components-rating.metadata.json +1 -0
  196. package/components/select/select.component.d.ts +3 -2
  197. package/components/select/taiga-ui-kit-components-select.metadata.json +1 -1
  198. package/components/taiga-ui-kit-components.metadata.json +1 -1
  199. package/components/text-area/taiga-ui-kit-components-text-area.metadata.json +1 -1
  200. package/components/tree/components/tree/tree.component.d.ts +3 -1
  201. package/components/tree/taiga-ui-kit-components-tree.metadata.json +1 -1
  202. package/constants/index.d.ts +1 -0
  203. package/constants/masks.d.ts +8 -0
  204. package/constants/max-time-values.d.ts +2 -0
  205. package/constants/taiga-ui-kit-constants.metadata.json +1 -1
  206. package/directives/lazy-loading/lazy-loading.service.d.ts +1 -1
  207. package/esm2015/abstract/input-slider.js +4 -2
  208. package/esm2015/abstract/slider/slider.js +1 -1
  209. package/esm2015/components/arrow/arrow-options.js +17 -0
  210. package/esm2015/components/arrow/arrow.component.js +12 -8
  211. package/esm2015/components/arrow/arrow.module.js +3 -2
  212. package/esm2015/components/arrow/index.js +2 -1
  213. package/esm2015/components/calendar-month/calendar-month.component.js +5 -2
  214. package/esm2015/components/carousel/carousel-scroll.directive.js +5 -4
  215. package/esm2015/components/carousel/carousel.component.js +1 -1
  216. package/esm2015/components/checkbox/checkbox.component.js +2 -2
  217. package/esm2015/components/checkbox-block/checkbox-block.component.js +1 -1
  218. package/esm2015/components/checkbox-labeled/checkbox-labeled.component.js +1 -1
  219. package/esm2015/components/combo-box/combo-box.component.js +15 -17
  220. package/esm2015/components/index.js +2 -1
  221. package/esm2015/components/input/input.component.js +2 -2
  222. package/esm2015/components/input-count/input-count.component.js +3 -7
  223. package/esm2015/components/input-date/input-date.component.js +31 -18
  224. package/esm2015/components/input-date-range/input-date-range.component.js +32 -19
  225. package/esm2015/components/input-date-time/input-date-time.component.js +45 -24
  226. package/esm2015/components/input-file/input-file.component.js +2 -5
  227. package/esm2015/components/input-inline/input-inline.component.js +4 -13
  228. package/esm2015/components/input-month/input-month.component.js +2 -5
  229. package/esm2015/components/input-month-range/input-month-range.component.js +2 -5
  230. package/esm2015/components/input-number/input-number.component.js +15 -15
  231. package/esm2015/components/input-password/input-password.component.js +3 -6
  232. package/esm2015/components/input-phone/input-phone.component.js +4 -4
  233. package/esm2015/components/input-phone-international/const/countries.js +21 -10
  234. package/esm2015/components/input-phone-international/country-iso-code.js +2 -2
  235. package/esm2015/components/input-phone-international/index.js +3 -1
  236. package/esm2015/components/input-phone-international/input-phone-international.component.js +15 -18
  237. package/esm2015/components/input-phone-international/tokens/countries-masks.js +6 -0
  238. package/esm2015/components/input-phone-international/utils/extract-value-from-event.js +9 -0
  239. package/esm2015/components/input-range/input-range.component.js +9 -6
  240. package/esm2015/components/input-slider/input-slider.component.js +9 -6
  241. package/esm2015/components/input-tag/input-tag.component.js +4 -4
  242. package/esm2015/components/input-time/input-time-options.js +4 -1
  243. package/esm2015/components/input-time/input-time.component.js +10 -8
  244. package/esm2015/components/multi-select/multi-select.component.js +17 -11
  245. package/esm2015/components/rating/index.js +4 -0
  246. package/esm2015/components/rating/rating-options.js +11 -0
  247. package/esm2015/components/rating/rating.component.js +91 -0
  248. package/esm2015/components/rating/rating.module.js +23 -0
  249. package/esm2015/components/rating/taiga-ui-kit-components-rating.js +5 -0
  250. package/esm2015/components/select/select.component.js +13 -14
  251. package/esm2015/components/tag/tag.component.js +2 -2
  252. package/esm2015/components/text-area/text-area.component.js +3 -3
  253. package/esm2015/components/tree/components/tree/tree.component.js +11 -6
  254. package/esm2015/components/tree/tree.module.js +9 -2
  255. package/esm2015/constants/index.js +2 -1
  256. package/esm2015/constants/masks.js +9 -1
  257. package/esm2015/constants/max-time-values.js +7 -0
  258. package/esm2015/directives/lazy-loading/lazy-loading.service.js +1 -1
  259. package/esm2015/tokens/date-inputs-value-transformers.js +5 -0
  260. package/esm2015/tokens/index.js +2 -1
  261. package/esm2015/types/index.js +1 -1
  262. package/esm2015/types/time-format-parts.js +1 -0
  263. package/esm2015/utils/mask/create-auto-corrected-date-pipe.js +6 -4
  264. package/esm2015/utils/mask/create-auto-corrected-date-range-pipe.js +9 -6
  265. package/esm2015/utils/mask/create-auto-corrected-date-time-pipe.js +6 -6
  266. package/esm2015/utils/mask/create-auto-corrected-time-pipe.js +10 -7
  267. package/esm2015/utils/mask/create-date-mask.js +16 -0
  268. package/esm2015/utils/mask/create-date-range-mask.js +14 -0
  269. package/esm2015/utils/mask/create-time-mask.js +19 -8
  270. package/esm2015/utils/mask/index.js +3 -1
  271. package/esm2015/utils/miscellaneous/get-precision.js +8 -0
  272. package/esm2015/utils/miscellaneous/index.js +2 -1
  273. package/esm2015/utils/miscellaneous/replay-control-value-changes-factory.js +10 -4
  274. package/esm5/abstract/input-slider.js +4 -2
  275. package/esm5/abstract/slider/slider.js +1 -1
  276. package/esm5/components/arrow/arrow-options.js +17 -0
  277. package/esm5/components/arrow/arrow.component.js +12 -8
  278. package/esm5/components/arrow/arrow.module.js +3 -2
  279. package/esm5/components/arrow/index.js +2 -1
  280. package/esm5/components/calendar-month/calendar-month.component.js +5 -2
  281. package/esm5/components/carousel/carousel-scroll.directive.js +5 -4
  282. package/esm5/components/carousel/carousel.component.js +1 -1
  283. package/esm5/components/checkbox/checkbox.component.js +2 -2
  284. package/esm5/components/checkbox-block/checkbox-block.component.js +1 -1
  285. package/esm5/components/checkbox-labeled/checkbox-labeled.component.js +1 -1
  286. package/esm5/components/combo-box/combo-box.component.js +15 -21
  287. package/esm5/components/index.js +2 -1
  288. package/esm5/components/input/input.component.js +2 -2
  289. package/esm5/components/input-count/input-count.component.js +3 -7
  290. package/esm5/components/input-date/input-date.component.js +33 -18
  291. package/esm5/components/input-date-range/input-date-range.component.js +34 -19
  292. package/esm5/components/input-date-time/input-date-time.component.js +45 -28
  293. package/esm5/components/input-file/input-file.component.js +2 -9
  294. package/esm5/components/input-inline/input-inline.component.js +4 -17
  295. package/esm5/components/input-month/input-month.component.js +2 -9
  296. package/esm5/components/input-month-range/input-month-range.component.js +2 -9
  297. package/esm5/components/input-number/input-number.component.js +14 -14
  298. package/esm5/components/input-password/input-password.component.js +3 -10
  299. package/esm5/components/input-phone/input-phone.component.js +4 -4
  300. package/esm5/components/input-phone-international/const/countries.js +21 -10
  301. package/esm5/components/input-phone-international/country-iso-code.js +2 -2
  302. package/esm5/components/input-phone-international/index.js +3 -1
  303. package/esm5/components/input-phone-international/input-phone-international.component.js +15 -18
  304. package/esm5/components/input-phone-international/tokens/countries-masks.js +6 -0
  305. package/esm5/components/input-phone-international/utils/extract-value-from-event.js +9 -0
  306. package/esm5/components/input-range/input-range.component.js +9 -6
  307. package/esm5/components/input-slider/input-slider.component.js +9 -6
  308. package/esm5/components/input-tag/input-tag.component.js +4 -4
  309. package/esm5/components/input-time/input-time-options.js +4 -1
  310. package/esm5/components/input-time/input-time.component.js +10 -12
  311. package/esm5/components/multi-select/multi-select.component.js +21 -15
  312. package/esm5/components/rating/index.js +4 -0
  313. package/esm5/components/rating/rating-options.js +11 -0
  314. package/esm5/components/rating/rating.component.js +111 -0
  315. package/esm5/components/rating/rating.module.js +26 -0
  316. package/esm5/components/rating/taiga-ui-kit-components-rating.js +5 -0
  317. package/esm5/components/select/select.component.js +13 -18
  318. package/esm5/components/tag/tag.component.js +1 -1
  319. package/esm5/components/text-area/text-area.component.js +3 -3
  320. package/esm5/components/tree/components/tree/tree.component.js +15 -9
  321. package/esm5/components/tree/tree.module.js +9 -2
  322. package/esm5/constants/index.js +2 -1
  323. package/esm5/constants/masks.js +9 -1
  324. package/esm5/constants/max-time-values.js +7 -0
  325. package/esm5/directives/lazy-loading/lazy-loading.service.js +1 -1
  326. package/esm5/tokens/date-inputs-value-transformers.js +5 -0
  327. package/esm5/tokens/index.js +2 -1
  328. package/esm5/types/index.js +1 -1
  329. package/esm5/types/time-format-parts.js +1 -0
  330. package/esm5/utils/mask/create-auto-corrected-date-pipe.js +6 -4
  331. package/esm5/utils/mask/create-auto-corrected-date-range-pipe.js +9 -6
  332. package/esm5/utils/mask/create-auto-corrected-date-time-pipe.js +6 -6
  333. package/esm5/utils/mask/create-auto-corrected-time-pipe.js +10 -7
  334. package/esm5/utils/mask/create-date-mask.js +17 -0
  335. package/esm5/utils/mask/create-date-range-mask.js +13 -0
  336. package/esm5/utils/mask/create-time-mask.js +18 -7
  337. package/esm5/utils/mask/index.js +3 -1
  338. package/esm5/utils/miscellaneous/get-precision.js +9 -0
  339. package/esm5/utils/miscellaneous/index.js +2 -1
  340. package/esm5/utils/miscellaneous/replay-control-value-changes-factory.js +12 -4
  341. package/fesm2015/taiga-ui-kit-abstract.js +3 -1
  342. package/fesm2015/taiga-ui-kit-abstract.js.map +1 -1
  343. package/fesm2015/taiga-ui-kit-components-arrow.js +29 -11
  344. package/fesm2015/taiga-ui-kit-components-arrow.js.map +1 -1
  345. package/fesm2015/taiga-ui-kit-components-calendar-month.js +4 -1
  346. package/fesm2015/taiga-ui-kit-components-calendar-month.js.map +1 -1
  347. package/fesm2015/taiga-ui-kit-components-carousel.js +5 -4
  348. package/fesm2015/taiga-ui-kit-components-carousel.js.map +1 -1
  349. package/fesm2015/taiga-ui-kit-components-checkbox-block.js.map +1 -1
  350. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js.map +1 -1
  351. package/fesm2015/taiga-ui-kit-components-checkbox.js +1 -1
  352. package/fesm2015/taiga-ui-kit-components-checkbox.js.map +1 -1
  353. package/fesm2015/taiga-ui-kit-components-combo-box.js +14 -16
  354. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  355. package/fesm2015/taiga-ui-kit-components-input-count.js +2 -6
  356. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  357. package/fesm2015/taiga-ui-kit-components-input-date-range.js +31 -18
  358. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  359. package/fesm2015/taiga-ui-kit-components-input-date-time.js +45 -24
  360. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  361. package/fesm2015/taiga-ui-kit-components-input-date.js +30 -17
  362. package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
  363. package/fesm2015/taiga-ui-kit-components-input-file.js +1 -4
  364. package/fesm2015/taiga-ui-kit-components-input-file.js.map +1 -1
  365. package/fesm2015/taiga-ui-kit-components-input-inline.js +3 -12
  366. package/fesm2015/taiga-ui-kit-components-input-inline.js.map +1 -1
  367. package/fesm2015/taiga-ui-kit-components-input-month-range.js +1 -4
  368. package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
  369. package/fesm2015/taiga-ui-kit-components-input-month.js +1 -4
  370. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  371. package/fesm2015/taiga-ui-kit-components-input-number.js +14 -14
  372. package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
  373. package/fesm2015/taiga-ui-kit-components-input-password.js +2 -5
  374. package/fesm2015/taiga-ui-kit-components-input-password.js.map +1 -1
  375. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +46 -28
  376. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  377. package/fesm2015/taiga-ui-kit-components-input-phone.js +3 -3
  378. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  379. package/fesm2015/taiga-ui-kit-components-input-range.js +8 -5
  380. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  381. package/fesm2015/taiga-ui-kit-components-input-slider.js +8 -5
  382. package/fesm2015/taiga-ui-kit-components-input-slider.js.map +1 -1
  383. package/fesm2015/taiga-ui-kit-components-input-tag.js +3 -3
  384. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  385. package/fesm2015/taiga-ui-kit-components-input-time.js +11 -6
  386. package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
  387. package/fesm2015/taiga-ui-kit-components-input.js +1 -1
  388. package/fesm2015/taiga-ui-kit-components-input.js.map +1 -1
  389. package/fesm2015/taiga-ui-kit-components-multi-select.js +16 -10
  390. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  391. package/fesm2015/taiga-ui-kit-components-rating.js +123 -0
  392. package/fesm2015/taiga-ui-kit-components-rating.js.map +1 -0
  393. package/fesm2015/taiga-ui-kit-components-select.js +12 -13
  394. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  395. package/fesm2015/taiga-ui-kit-components-tag.js +1 -1
  396. package/fesm2015/taiga-ui-kit-components-tag.js.map +1 -1
  397. package/fesm2015/taiga-ui-kit-components-text-area.js +2 -2
  398. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  399. package/fesm2015/taiga-ui-kit-components-tree.js +17 -8
  400. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  401. package/fesm2015/taiga-ui-kit-components.js +1 -0
  402. package/fesm2015/taiga-ui-kit-components.js.map +1 -1
  403. package/fesm2015/taiga-ui-kit-constants.js +16 -1
  404. package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
  405. package/fesm2015/taiga-ui-kit-directives-lazy-loading.js.map +1 -1
  406. package/fesm2015/taiga-ui-kit-tokens.js +5 -1
  407. package/fesm2015/taiga-ui-kit-tokens.js.map +1 -1
  408. package/fesm2015/taiga-ui-kit-utils-mask.js +71 -27
  409. package/fesm2015/taiga-ui-kit-utils-mask.js.map +1 -1
  410. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js +17 -3
  411. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js.map +1 -1
  412. package/fesm5/taiga-ui-kit-abstract.js +3 -1
  413. package/fesm5/taiga-ui-kit-abstract.js.map +1 -1
  414. package/fesm5/taiga-ui-kit-components-arrow.js +29 -11
  415. package/fesm5/taiga-ui-kit-components-arrow.js.map +1 -1
  416. package/fesm5/taiga-ui-kit-components-calendar-month.js +4 -1
  417. package/fesm5/taiga-ui-kit-components-calendar-month.js.map +1 -1
  418. package/fesm5/taiga-ui-kit-components-carousel.js +5 -4
  419. package/fesm5/taiga-ui-kit-components-carousel.js.map +1 -1
  420. package/fesm5/taiga-ui-kit-components-checkbox-block.js.map +1 -1
  421. package/fesm5/taiga-ui-kit-components-checkbox-labeled.js.map +1 -1
  422. package/fesm5/taiga-ui-kit-components-checkbox.js +1 -1
  423. package/fesm5/taiga-ui-kit-components-checkbox.js.map +1 -1
  424. package/fesm5/taiga-ui-kit-components-combo-box.js +14 -20
  425. package/fesm5/taiga-ui-kit-components-combo-box.js.map +1 -1
  426. package/fesm5/taiga-ui-kit-components-input-count.js +2 -6
  427. package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
  428. package/fesm5/taiga-ui-kit-components-input-date-range.js +33 -18
  429. package/fesm5/taiga-ui-kit-components-input-date-range.js.map +1 -1
  430. package/fesm5/taiga-ui-kit-components-input-date-time.js +45 -28
  431. package/fesm5/taiga-ui-kit-components-input-date-time.js.map +1 -1
  432. package/fesm5/taiga-ui-kit-components-input-date.js +32 -17
  433. package/fesm5/taiga-ui-kit-components-input-date.js.map +1 -1
  434. package/fesm5/taiga-ui-kit-components-input-file.js +1 -8
  435. package/fesm5/taiga-ui-kit-components-input-file.js.map +1 -1
  436. package/fesm5/taiga-ui-kit-components-input-inline.js +3 -16
  437. package/fesm5/taiga-ui-kit-components-input-inline.js.map +1 -1
  438. package/fesm5/taiga-ui-kit-components-input-month-range.js +1 -8
  439. package/fesm5/taiga-ui-kit-components-input-month-range.js.map +1 -1
  440. package/fesm5/taiga-ui-kit-components-input-month.js +1 -8
  441. package/fesm5/taiga-ui-kit-components-input-month.js.map +1 -1
  442. package/fesm5/taiga-ui-kit-components-input-number.js +13 -13
  443. package/fesm5/taiga-ui-kit-components-input-number.js.map +1 -1
  444. package/fesm5/taiga-ui-kit-components-input-password.js +2 -9
  445. package/fesm5/taiga-ui-kit-components-input-password.js.map +1 -1
  446. package/fesm5/taiga-ui-kit-components-input-phone-international.js +46 -28
  447. package/fesm5/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  448. package/fesm5/taiga-ui-kit-components-input-phone.js +3 -3
  449. package/fesm5/taiga-ui-kit-components-input-phone.js.map +1 -1
  450. package/fesm5/taiga-ui-kit-components-input-range.js +8 -5
  451. package/fesm5/taiga-ui-kit-components-input-range.js.map +1 -1
  452. package/fesm5/taiga-ui-kit-components-input-slider.js +8 -5
  453. package/fesm5/taiga-ui-kit-components-input-slider.js.map +1 -1
  454. package/fesm5/taiga-ui-kit-components-input-tag.js +3 -3
  455. package/fesm5/taiga-ui-kit-components-input-tag.js.map +1 -1
  456. package/fesm5/taiga-ui-kit-components-input-time.js +11 -10
  457. package/fesm5/taiga-ui-kit-components-input-time.js.map +1 -1
  458. package/fesm5/taiga-ui-kit-components-input.js +1 -1
  459. package/fesm5/taiga-ui-kit-components-input.js.map +1 -1
  460. package/fesm5/taiga-ui-kit-components-multi-select.js +20 -14
  461. package/fesm5/taiga-ui-kit-components-multi-select.js.map +1 -1
  462. package/fesm5/taiga-ui-kit-components-rating.js +146 -0
  463. package/fesm5/taiga-ui-kit-components-rating.js.map +1 -0
  464. package/fesm5/taiga-ui-kit-components-select.js +12 -17
  465. package/fesm5/taiga-ui-kit-components-select.js.map +1 -1
  466. package/fesm5/taiga-ui-kit-components-tag.js.map +1 -1
  467. package/fesm5/taiga-ui-kit-components-text-area.js +2 -2
  468. package/fesm5/taiga-ui-kit-components-text-area.js.map +1 -1
  469. package/fesm5/taiga-ui-kit-components-tree.js +21 -11
  470. package/fesm5/taiga-ui-kit-components-tree.js.map +1 -1
  471. package/fesm5/taiga-ui-kit-components.js +1 -0
  472. package/fesm5/taiga-ui-kit-components.js.map +1 -1
  473. package/fesm5/taiga-ui-kit-constants.js +16 -1
  474. package/fesm5/taiga-ui-kit-constants.js.map +1 -1
  475. package/fesm5/taiga-ui-kit-directives-lazy-loading.js.map +1 -1
  476. package/fesm5/taiga-ui-kit-tokens.js +5 -1
  477. package/fesm5/taiga-ui-kit-tokens.js.map +1 -1
  478. package/fesm5/taiga-ui-kit-utils-mask.js +67 -26
  479. package/fesm5/taiga-ui-kit-utils-mask.js.map +1 -1
  480. package/fesm5/taiga-ui-kit-utils-miscellaneous.js +20 -3
  481. package/fesm5/taiga-ui-kit-utils-miscellaneous.js.map +1 -1
  482. package/package.json +14 -14
  483. package/tokens/date-inputs-value-transformers.d.ts +5 -0
  484. package/tokens/index.d.ts +1 -0
  485. package/tokens/taiga-ui-kit-tokens.metadata.json +1 -1
  486. package/types/index.d.ts +1 -0
  487. package/types/taiga-ui-kit-types.metadata.json +1 -1
  488. package/types/time-format-parts.d.ts +1 -0
  489. package/utils/mask/create-auto-corrected-date-pipe.d.ts +7 -3
  490. package/utils/mask/create-auto-corrected-date-range-pipe.d.ts +7 -2
  491. package/utils/mask/create-auto-corrected-date-time-pipe.d.ts +8 -3
  492. package/utils/mask/create-auto-corrected-time-pipe.d.ts +3 -2
  493. package/utils/mask/create-date-mask.d.ts +3 -0
  494. package/utils/mask/create-date-range-mask.d.ts +3 -0
  495. package/utils/mask/create-time-mask.d.ts +2 -1
  496. package/utils/mask/index.d.ts +2 -0
  497. package/utils/mask/taiga-ui-kit-utils-mask.metadata.json +1 -1
  498. package/utils/miscellaneous/get-precision.d.ts +4 -0
  499. package/utils/miscellaneous/index.d.ts +1 -0
  500. package/utils/miscellaneous/replay-control-value-changes-factory.d.ts +3 -2
  501. package/utils/miscellaneous/taiga-ui-kit-utils-miscellaneous.metadata.json +1 -1
@@ -1,15 +1,15 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, HostListener, Component, ChangeDetectionStrategy, forwardRef, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { AbstractTuiControl, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, DATE_FILLER_LENGTH, TuiDay, TuiTime, nullableSame, clamp, TUI_DATE_FORMAT, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiPreventDefaultModule } from '@taiga-ui/cdk';
4
+ import { AbstractTuiControl, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, changeDateSeparator, DATE_FILLER_LENGTH, TuiDay, TuiTime, nullableSame, clamp, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiPreventDefaultModule } from '@taiga-ui/cdk';
5
5
  import { sizeBigger, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TuiCalendarModule, TuiSvgModule, TuiLinkModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
6
- import { DATE_TIME_SEPARATOR, TUI_DATE_MASK } from '@taiga-ui/kit/constants';
6
+ import { DATE_TIME_SEPARATOR } from '@taiga-ui/kit/constants';
7
7
  import { LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
8
- import { TUI_TIME_TEXTS, TUI_DATE_TEXTS, TUI_CALENDAR_DATA_STREAM } from '@taiga-ui/kit/tokens';
9
- import { tuiCreateTimeMask, tuiCreateAutoCorrectedDateTimePipe } from '@taiga-ui/kit/utils/mask';
8
+ import { TUI_TIME_TEXTS, TUI_DATE_TEXTS, TUI_DATE_TIME_VALUE_TRANSFORMER, TUI_CALENDAR_DATA_STREAM } from '@taiga-ui/kit/tokens';
9
+ import { tuiCreateDateMask, tuiCreateTimeMask, tuiCreateAutoCorrectedDateTimePipe } from '@taiga-ui/kit/utils/mask';
10
10
  import { TuiReplayControlValueChangesFactory } from '@taiga-ui/kit/utils/miscellaneous';
11
11
  import { combineLatest, Observable } from 'rxjs';
12
- import { pluck, map } from 'rxjs/operators';
12
+ import { map, pluck } from 'rxjs/operators';
13
13
  import { CommonModule } from '@angular/common';
14
14
  import { TuiValueAccessorModule } from '@taiga-ui/kit/directives';
15
15
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
@@ -17,15 +17,17 @@ import { TextMaskModule } from 'angular2-text-mask';
17
17
 
18
18
  var TuiInputDateTimeComponent_1;
19
19
  // TODO: remove in ivy compilation
20
- const TIME_STREAM_FACTORY = TuiReplayControlValueChangesFactory;
20
+ const TIME_STREAM_FACTORY = (control, valueTransformer) => TuiReplayControlValueChangesFactory(control, valueTransformer);
21
21
  // @dynamic
22
22
  let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDateTimeComponent extends AbstractTuiControl {
23
- constructor(control, changeDetectorRef, textfieldSize, dateFormat, timeTexts$, dateTexts$) {
24
- super(control, changeDetectorRef);
23
+ constructor(control, changeDetectorRef, textfieldSize, dateFormat, dateSeparator, timeTexts$, dateTexts$, valueTransformer) {
24
+ super(control, changeDetectorRef, valueTransformer);
25
25
  this.textfieldSize = textfieldSize;
26
26
  this.dateFormat = dateFormat;
27
+ this.dateSeparator = dateSeparator;
27
28
  this.timeTexts$ = timeTexts$;
28
29
  this.dateTexts$ = dateTexts$;
30
+ this.valueTransformer = valueTransformer;
29
31
  this.month = null;
30
32
  this.min = TUI_FIRST_DAY;
31
33
  this.max = TUI_LAST_DAY;
@@ -34,7 +36,7 @@ let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDate
34
36
  this.timeMode = 'HH:MM';
35
37
  this.open = false;
36
38
  this.filler$ = combineLatest([
37
- this.dateTexts$.pipe(pluck(this.dateFormat)),
39
+ this.dateTexts$.pipe(map(dateTexts => changeDateSeparator(dateTexts[this.dateFormat], this.dateSeparator))),
38
40
  this.timeTexts$.pipe(pluck(this.timeMode)),
39
41
  ]).pipe(map(fillers => this.getDateTimeString(...fillers)));
40
42
  }
@@ -42,7 +44,7 @@ let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDate
42
44
  return DATE_FILLER_LENGTH + DATE_TIME_SEPARATOR.length + this.timeMode.length;
43
45
  }
44
46
  get textMaskOptions() {
45
- return this.calculateMask(this.value[0], this.calendarMinDay, this.calendarMaxDay, this.timeMode);
47
+ return this.calculateMask(this.value[0], this.calendarMinDay, this.calendarMaxDay, this.timeMode, this.dateFormat, this.dateSeparator);
46
48
  }
47
49
  get nativeFocusableElement() {
48
50
  return this.textfield ? this.textfield.nativeFocusableElement : null;
@@ -85,9 +87,6 @@ let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDate
85
87
  }
86
88
  this.nativeFocusableElement.value = value;
87
89
  }
88
- get canOpen() {
89
- return !this.computedDisabled && !this.readOnly;
90
- }
91
90
  onClick() {
92
91
  this.open = !this.open;
93
92
  }
@@ -100,7 +99,7 @@ let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDate
100
99
  return;
101
100
  }
102
101
  const [date, time] = value.split(DATE_TIME_SEPARATOR);
103
- const parsedDate = TuiDay.normalizeParse(date);
102
+ const parsedDate = TuiDay.normalizeParse(date, this.dateFormat);
104
103
  const parsedTime = time && time.length === this.timeMode.length
105
104
  ? this.clampTime(TuiTime.fromString(time), parsedDate)
106
105
  : null;
@@ -158,15 +157,29 @@ let TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = class TuiInputDate
158
157
  return (nullableSame(oldValue[0], newValue[0], (a, b) => a.daySame(b)) &&
159
158
  nullableSame(oldValue[1], newValue[1], (a, b) => a.toString() === b.toString()));
160
159
  }
161
- calculateMask(day, min, max, timeMode) {
160
+ calculateMask(day, min, max, timeMode, dateFormat, dateSeparator) {
162
161
  return {
163
- mask: [...TUI_DATE_MASK, ',', ' ', ...tuiCreateTimeMask(timeMode)],
164
- pipe: tuiCreateAutoCorrectedDateTimePipe({ value: day, min, max }, timeMode),
162
+ mask: [
163
+ ...tuiCreateDateMask(dateFormat, dateSeparator),
164
+ ',',
165
+ ' ',
166
+ ...tuiCreateTimeMask(timeMode),
167
+ ],
168
+ pipe: tuiCreateAutoCorrectedDateTimePipe({
169
+ value: day,
170
+ min,
171
+ max,
172
+ dateFormat,
173
+ dateSeparator,
174
+ timeMode,
175
+ }),
165
176
  guide: false,
166
177
  };
167
178
  }
168
179
  getDateTimeString(date, time, timeMode = 'HH:MM') {
169
- const dateString = date instanceof TuiDay ? date.toString() : date;
180
+ const dateString = date instanceof TuiDay
181
+ ? date.toString(this.dateFormat, this.dateSeparator)
182
+ : date;
170
183
  const timeString = time instanceof TuiTime ? time.toString(timeMode) : time || '';
171
184
  return `${dateString}${DATE_TIME_SEPARATOR}${timeString}`;
172
185
  }
@@ -190,8 +203,10 @@ TuiInputDateTimeComponent.ctorParameters = () => [
190
203
  { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
191
204
  { type: TuiTextfieldSizeDirective, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_SIZE,] }] },
192
205
  { type: undefined, decorators: [{ type: Inject, args: [TUI_DATE_FORMAT,] }] },
206
+ { type: String, decorators: [{ type: Inject, args: [TUI_DATE_SEPARATOR,] }] },
193
207
  { type: Observable, decorators: [{ type: Inject, args: [TUI_TIME_TEXTS,] }] },
194
- { type: Observable, decorators: [{ type: Inject, args: [TUI_DATE_TEXTS,] }] }
208
+ { type: Observable, decorators: [{ type: Inject, args: [TUI_DATE_TEXTS,] }] },
209
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TUI_DATE_TIME_VALUE_TRANSFORMER,] }] }
195
210
  ];
196
211
  __decorate([
197
212
  ViewChild(TuiPrimitiveTextfieldComponent)
@@ -228,7 +243,7 @@ __decorate([
228
243
  TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = __decorate([
229
244
  Component({
230
245
  selector: 'tui-input-date-time',
231
- template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n automation-id=\"tui-input-date-time__textfield\"\n tuiValueAccessor\n tuiTextfieldInputMode=\"numeric\"\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [filler]=\"filler$ | async\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"calendarIcon\"\n [disabled]=\"disabled\"\n [textMask]=\"textMaskOptions\"\n [value]=\"computedValue\"\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=\"polymorpheus\" polymorpheus>\n <tui-calendar\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-input-date-time__calendar\"\n [min]=\"calendarMinDay\"\n [max]=\"calendarMaxDay\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [month]=\"computedActiveYearMonth\"\n [value]=\"calendarValue\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n ></tui-calendar>\n </ng-template>\n</tui-hosted-dropdown>\n",
246
+ 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 automation-id=\"tui-input-date-time__textfield\"\n tuiValueAccessor\n tuiTextfieldInputMode=\"numeric\"\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [filler]=\"filler$ | async\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [iconContent]=\"iconContent\"\n [disabled]=\"disabled\"\n [textMask]=\"textMaskOptions\"\n [value]=\"computedValue\"\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 #iconContent>\n <tui-svg\n [class.icon]=\"!computedDisabled\"\n [src]=\"calendarIcon\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #dropdown=\"polymorpheus\" polymorpheus>\n <tui-calendar\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-input-date-time__calendar\"\n [min]=\"calendarMinDay\"\n [max]=\"calendarMaxDay\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [month]=\"computedActiveYearMonth\"\n [value]=\"calendarValue\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n ></tui-calendar>\n </ng-template>\n</tui-hosted-dropdown>\n",
232
247
  changeDetection: ChangeDetectionStrategy.OnPush,
233
248
  providers: [
234
249
  {
@@ -237,12 +252,15 @@ TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = __decorate([
237
252
  },
238
253
  {
239
254
  provide: TUI_CALENDAR_DATA_STREAM,
240
- deps: [[new Optional(), new Self(), NgControl]],
255
+ deps: [
256
+ [new Optional(), new Self(), NgControl],
257
+ [new Optional(), forwardRef(() => TUI_DATE_TIME_VALUE_TRANSFORMER)],
258
+ ],
241
259
  useFactory: TIME_STREAM_FACTORY,
242
260
  },
243
261
  LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,
244
262
  ],
245
- styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.hosted{display:block;border-radius:inherit}.textfield{border-radius:inherit;text-align:inherit}.icon{position:relative;cursor:pointer}.button{display:flex;height:2.75rem;justify-content:center;box-shadow:inset 0 1px var(--tui-base-03)}"]
263
+ styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.hosted{display:block;border-radius:inherit}.textfield{border-radius:inherit;text-align:inherit}.icon{pointer-events:auto}.button{display:flex;height:2.75rem;justify-content:center;box-shadow:inset 0 1px var(--tui-base-03)}"]
246
264
  }),
247
265
  __param(0, Optional()),
248
266
  __param(0, Self()),
@@ -250,8 +268,11 @@ TuiInputDateTimeComponent = TuiInputDateTimeComponent_1 = __decorate([
250
268
  __param(1, Inject(ChangeDetectorRef)),
251
269
  __param(2, Inject(TUI_TEXTFIELD_SIZE)),
252
270
  __param(3, Inject(TUI_DATE_FORMAT)),
253
- __param(4, Inject(TUI_TIME_TEXTS)),
254
- __param(5, Inject(TUI_DATE_TEXTS))
271
+ __param(4, Inject(TUI_DATE_SEPARATOR)),
272
+ __param(5, Inject(TUI_TIME_TEXTS)),
273
+ __param(6, Inject(TUI_DATE_TEXTS)),
274
+ __param(7, Optional()),
275
+ __param(7, Inject(TUI_DATE_TIME_VALUE_TRANSFORMER))
255
276
  ], TuiInputDateTimeComponent);
256
277
 
257
278
  let TuiInputDateTimeModule = class TuiInputDateTimeModule {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-date-time.js","sources":["ng://@taiga-ui/kit/components/input-date-time/input-date-time.component.ts","ng://@taiga-ui/kit/components/input-date-time/input-date-time.module.ts","ng://@taiga-ui/kit/components/input-date-time/taiga-ui-kit-components-input-date-time.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 ALWAYS_FALSE_HANDLER,\n clamp,\n DATE_FILLER_LENGTH,\n nullableSame,\n TUI_DATE_FORMAT,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDateMode,\n TuiDay,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n tuiPure,\n TuiTime,\n TuiTimeMode,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {DATE_TIME_SEPARATOR, TUI_DATE_MASK} from '@taiga-ui/kit/constants';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {\n TUI_CALENDAR_DATA_STREAM,\n TUI_DATE_TEXTS,\n TUI_TIME_TEXTS,\n} from '@taiga-ui/kit/tokens';\nimport {\n tuiCreateAutoCorrectedDateTimePipe,\n tuiCreateTimeMask,\n} from '@taiga-ui/kit/utils/mask';\nimport {TuiReplayControlValueChangesFactory} from '@taiga-ui/kit/utils/miscellaneous';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map, pluck} from 'rxjs/operators';\n\n// TODO: remove in ivy compilation\nexport const TIME_STREAM_FACTORY = TuiReplayControlValueChangesFactory;\n\n// @dynamic\n@Component({\n selector: 'tui-input-date-time',\n templateUrl: './input-date-time.template.html',\n styleUrls: ['./input-date-time.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputDateTimeComponent),\n },\n {\n provide: TUI_CALENDAR_DATA_STREAM,\n deps: [[new Optional(), new Self(), NgControl]],\n useFactory: TIME_STREAM_FACTORY,\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n})\nexport class TuiInputDateTimeComponent\n extends AbstractTuiControl<[TuiDay | null, TuiTime | null]>\n implements\n TuiWithOptionalMinMax<TuiDay | [TuiDay, TuiTime]>,\n TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private month: TuiMonth | null = null;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n defaultActiveYearMonth = TuiMonth.currentLocal();\n\n @Input()\n @tuiDefaultProp()\n timeMode: TuiTimeMode = 'HH:MM';\n\n open = false;\n readonly filler$ = combineLatest([\n this.dateTexts$.pipe(pluck(this.dateFormat)),\n this.timeTexts$.pipe(pluck(this.timeMode)),\n ]).pipe(map(fillers => this.getDateTimeString(...fillers)));\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 @Inject(TUI_DATE_FORMAT) readonly dateFormat: TuiDateMode,\n @Inject(TUI_TIME_TEXTS)\n readonly timeTexts$: Observable<Record<TuiTimeMode, string>>,\n @Inject(TUI_DATE_TEXTS)\n readonly dateTexts$: Observable<Record<TuiDateMode, string>>,\n ) {\n super(control, changeDetectorRef);\n }\n\n get fillerLength(): number {\n return DATE_FILLER_LENGTH + DATE_TIME_SEPARATOR.length + this.timeMode.length;\n }\n\n get textMaskOptions(): TuiTextMaskOptions {\n return this.calculateMask(\n this.value[0],\n this.calendarMinDay,\n this.calendarMaxDay,\n this.timeMode,\n );\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 get computedValue(): string {\n const {value, nativeValue, timeMode} = this;\n const [date, time] = value;\n const hasTimeInputChars = nativeValue.length > DATE_FILLER_LENGTH;\n\n if (!date || (!time && hasTimeInputChars)) {\n return nativeValue;\n }\n\n return this.getDateTimeString(date, time, timeMode);\n }\n\n get calendarValue(): TuiDay | null {\n return this.value[0];\n }\n\n get calendarMinDay(): TuiDay {\n return Array.isArray(this.min) ? this.min[0] : this.min;\n }\n\n get calendarMaxDay(): TuiDay {\n return Array.isArray(this.max) ? this.max[0] : this.max;\n }\n\n get computedActiveYearMonth(): TuiMonth {\n return this.month || this.value[0] || this.defaultActiveYearMonth;\n }\n\n get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n get canOpen(): boolean {\n return !this.computedDisabled && !this.readOnly;\n }\n\n @HostListener('click')\n onClick() {\n this.open = !this.open;\n }\n\n onValueChange(value: string) {\n if (!value) {\n this.onOpenChange(true);\n }\n\n if (value.length < DATE_FILLER_LENGTH) {\n this.updateValue([null, null]);\n\n return;\n }\n\n const [date, time] = value.split(DATE_TIME_SEPARATOR);\n\n const parsedDate = TuiDay.normalizeParse(date);\n const parsedTime =\n time && time.length === this.timeMode.length\n ? this.clampTime(TuiTime.fromString(time), parsedDate)\n : null;\n\n this.open = false;\n this.updateValue([parsedDate, parsedTime]);\n }\n\n onDayClick(day: TuiDay) {\n const modifiedTime = this.value[1] && this.clampTime(this.value[1], day);\n\n this.updateValue([day, modifiedTime]);\n this.updateNativeValue(day);\n this.open = false;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onMonthChange(month: TuiMonth) {\n this.month = month;\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n\n if (\n focused ||\n this.value[0] === null ||\n this.value[1] !== null ||\n this.nativeValue.length <= this.fillerLength + DATE_TIME_SEPARATOR.length ||\n this.timeMode === 'HH:MM'\n ) {\n return;\n }\n\n const [, time] = this.nativeValue.split(DATE_TIME_SEPARATOR);\n\n if (!time) {\n return;\n }\n\n const parsedTime = TuiTime.fromString(time);\n\n this.updateValue([this.value[0], parsedTime]);\n\n setTimeout(() => {\n if (this.nativeValue.endsWith('.') || this.nativeValue.endsWith(':')) {\n this.nativeValue = this.nativeValue.slice(0, -1);\n }\n });\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.open = false;\n }\n\n writeValue(value: [TuiDay | null, TuiTime | null] | null) {\n super.writeValue(value);\n\n this.nativeValue = value && (value[0] || value[1]) ? this.computedValue : '';\n }\n\n protected getFallbackValue(): [TuiDay | null, TuiTime | null] {\n return [null, null];\n }\n\n protected valueIdenticalComparator(\n oldValue: [TuiDay | null, TuiTime | null],\n newValue: [TuiDay | null, TuiTime | null],\n ): boolean {\n return (\n nullableSame(oldValue[0], newValue[0], (a, b) => a.daySame(b)) &&\n nullableSame(\n oldValue[1],\n newValue[1],\n (a, b) => a.toString() === b.toString(),\n )\n );\n }\n\n @tuiPure\n private calculateMask(\n day: TuiDay | null,\n min: TuiDay,\n max: TuiDay,\n timeMode: TuiTimeMode,\n ): TuiTextMaskOptions {\n return {\n mask: [...TUI_DATE_MASK, ',', ' ', ...tuiCreateTimeMask(timeMode)],\n pipe: tuiCreateAutoCorrectedDateTimePipe({value: day, min, max}, timeMode),\n guide: false,\n };\n }\n\n @tuiPure\n private getDateTimeString(\n date: TuiDay | string,\n time: TuiTime | string | null,\n timeMode: TuiTimeMode = 'HH:MM',\n ): string {\n const dateString = date instanceof TuiDay ? date.toString() : date;\n const timeString = time instanceof TuiTime ? time.toString(timeMode) : time || '';\n\n return `${dateString}${DATE_TIME_SEPARATOR}${timeString}`;\n }\n\n private updateNativeValue(day: TuiDay) {\n const time = this.nativeValue.split(DATE_TIME_SEPARATOR)[1] || '';\n\n this.nativeValue = this.getDateTimeString(day, time);\n }\n\n private clampTime(time: TuiTime, day: TuiDay): TuiTime {\n const ms = time.toAbsoluteMilliseconds();\n const min =\n Array.isArray(this.min) && day.daySame(this.calendarMinDay)\n ? this.min[1].toAbsoluteMilliseconds()\n : -Infinity;\n const max =\n Array.isArray(this.max) && day.daySame(this.calendarMaxDay)\n ? this.max[1].toAbsoluteMilliseconds()\n : Infinity;\n\n return TuiTime.fromAbsoluteMilliseconds(clamp(ms, min, max));\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiCalendarModule,\n TuiHostedDropdownModule,\n TuiLinkModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputDateTimeComponent} from './input-date-time.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n PolymorpheusModule,\n TuiPreventDefaultModule,\n TuiCalendarModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiValueAccessorModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputDateTimeComponent],\n exports: [TuiInputDateTimeComponent],\n})\nexport class TuiInputDateTimeModule {}\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-date-time.js","sources":["ng://@taiga-ui/kit/components/input-date-time/input-date-time.component.ts","ng://@taiga-ui/kit/components/input-date-time/input-date-time.module.ts","ng://@taiga-ui/kit/components/input-date-time/taiga-ui-kit-components-input-date-time.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 ALWAYS_FALSE_HANDLER,\n changeDateSeparator,\n clamp,\n DATE_FILLER_LENGTH,\n nullableSame,\n TUI_DATE_FORMAT,\n TUI_DATE_SEPARATOR,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiControlValueTransformer,\n TuiDateMode,\n TuiDay,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n tuiPure,\n TuiTime,\n TuiTimeMode,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_TEXTFIELD_SIZE,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {DATE_TIME_SEPARATOR} from '@taiga-ui/kit/constants';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {\n TUI_CALENDAR_DATA_STREAM,\n TUI_DATE_TEXTS,\n TUI_DATE_TIME_VALUE_TRANSFORMER,\n TUI_TIME_TEXTS,\n} from '@taiga-ui/kit/tokens';\nimport {\n tuiCreateAutoCorrectedDateTimePipe,\n tuiCreateDateMask,\n tuiCreateTimeMask,\n} from '@taiga-ui/kit/utils/mask';\nimport {TuiReplayControlValueChangesFactory} from '@taiga-ui/kit/utils/miscellaneous';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map, pluck} from 'rxjs/operators';\n\n// TODO: remove in ivy compilation\nexport const TIME_STREAM_FACTORY = (\n control: NgControl | null,\n valueTransformer: TuiControlValueTransformer<[TuiDay | null, TuiTime | null]>,\n) => TuiReplayControlValueChangesFactory(control, valueTransformer);\n\n// @dynamic\n@Component({\n selector: 'tui-input-date-time',\n templateUrl: './input-date-time.template.html',\n styleUrls: ['./input-date-time.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputDateTimeComponent),\n },\n {\n provide: TUI_CALENDAR_DATA_STREAM,\n deps: [\n [new Optional(), new Self(), NgControl],\n [new Optional(), forwardRef(() => TUI_DATE_TIME_VALUE_TRANSFORMER)],\n ],\n useFactory: TIME_STREAM_FACTORY,\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n})\nexport class TuiInputDateTimeComponent\n extends AbstractTuiControl<[TuiDay | null, TuiTime | null]>\n implements\n TuiWithOptionalMinMax<TuiDay | [TuiDay, TuiTime]>,\n TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private month: TuiMonth | null = null;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n defaultActiveYearMonth = TuiMonth.currentLocal();\n\n @Input()\n @tuiDefaultProp()\n timeMode: TuiTimeMode = 'HH:MM';\n\n open = false;\n readonly filler$ = combineLatest([\n this.dateTexts$.pipe(\n map(dateTexts =>\n changeDateSeparator(dateTexts[this.dateFormat], this.dateSeparator),\n ),\n ),\n this.timeTexts$.pipe(pluck(this.timeMode)),\n ]).pipe(map(fillers => this.getDateTimeString(...fillers)));\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 @Inject(TUI_DATE_FORMAT) readonly dateFormat: TuiDateMode,\n @Inject(TUI_DATE_SEPARATOR) readonly dateSeparator: string,\n @Inject(TUI_TIME_TEXTS)\n readonly timeTexts$: Observable<Record<TuiTimeMode, string>>,\n @Inject(TUI_DATE_TEXTS)\n readonly dateTexts$: Observable<Record<TuiDateMode, string>>,\n @Optional()\n @Inject(TUI_DATE_TIME_VALUE_TRANSFORMER)\n readonly valueTransformer: TuiControlValueTransformer<\n [TuiDay | null, TuiTime | null]\n > | null,\n ) {\n super(control, changeDetectorRef, valueTransformer);\n }\n\n get fillerLength(): number {\n return DATE_FILLER_LENGTH + DATE_TIME_SEPARATOR.length + this.timeMode.length;\n }\n\n get textMaskOptions(): TuiTextMaskOptions {\n return this.calculateMask(\n this.value[0],\n this.calendarMinDay,\n this.calendarMaxDay,\n this.timeMode,\n this.dateFormat,\n this.dateSeparator,\n );\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 get computedValue(): string {\n const {value, nativeValue, timeMode} = this;\n const [date, time] = value;\n const hasTimeInputChars = nativeValue.length > DATE_FILLER_LENGTH;\n\n if (!date || (!time && hasTimeInputChars)) {\n return nativeValue;\n }\n\n return this.getDateTimeString(date, time, timeMode);\n }\n\n get calendarValue(): TuiDay | null {\n return this.value[0];\n }\n\n get calendarMinDay(): TuiDay {\n return Array.isArray(this.min) ? this.min[0] : this.min;\n }\n\n get calendarMaxDay(): TuiDay {\n return Array.isArray(this.max) ? this.max[0] : this.max;\n }\n\n get computedActiveYearMonth(): TuiMonth {\n return this.month || this.value[0] || this.defaultActiveYearMonth;\n }\n\n get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n @HostListener('click')\n onClick() {\n this.open = !this.open;\n }\n\n onValueChange(value: string) {\n if (!value) {\n this.onOpenChange(true);\n }\n\n if (value.length < DATE_FILLER_LENGTH) {\n this.updateValue([null, null]);\n\n return;\n }\n\n const [date, time] = value.split(DATE_TIME_SEPARATOR);\n\n const parsedDate = TuiDay.normalizeParse(date, this.dateFormat);\n const parsedTime =\n time && time.length === this.timeMode.length\n ? this.clampTime(TuiTime.fromString(time), parsedDate)\n : null;\n\n this.open = false;\n this.updateValue([parsedDate, parsedTime]);\n }\n\n onDayClick(day: TuiDay) {\n const modifiedTime = this.value[1] && this.clampTime(this.value[1], day);\n\n this.updateValue([day, modifiedTime]);\n this.updateNativeValue(day);\n this.open = false;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onMonthChange(month: TuiMonth) {\n this.month = month;\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n\n if (\n focused ||\n this.value[0] === null ||\n this.value[1] !== null ||\n this.nativeValue.length <= this.fillerLength + DATE_TIME_SEPARATOR.length ||\n this.timeMode === 'HH:MM'\n ) {\n return;\n }\n\n const [, time] = this.nativeValue.split(DATE_TIME_SEPARATOR);\n\n if (!time) {\n return;\n }\n\n const parsedTime = TuiTime.fromString(time);\n\n this.updateValue([this.value[0], parsedTime]);\n\n setTimeout(() => {\n if (this.nativeValue.endsWith('.') || this.nativeValue.endsWith(':')) {\n this.nativeValue = this.nativeValue.slice(0, -1);\n }\n });\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.open = false;\n }\n\n writeValue(value: [TuiDay | null, TuiTime | null] | null) {\n super.writeValue(value);\n\n this.nativeValue = value && (value[0] || value[1]) ? this.computedValue : '';\n }\n\n protected getFallbackValue(): [TuiDay | null, TuiTime | null] {\n return [null, null];\n }\n\n protected valueIdenticalComparator(\n oldValue: [TuiDay | null, TuiTime | null],\n newValue: [TuiDay | null, TuiTime | null],\n ): boolean {\n return (\n nullableSame(oldValue[0], newValue[0], (a, b) => a.daySame(b)) &&\n nullableSame(\n oldValue[1],\n newValue[1],\n (a, b) => a.toString() === b.toString(),\n )\n );\n }\n\n @tuiPure\n private calculateMask(\n day: TuiDay | null,\n min: TuiDay,\n max: TuiDay,\n timeMode: TuiTimeMode,\n dateFormat: TuiDateMode,\n dateSeparator: string,\n ): TuiTextMaskOptions {\n return {\n mask: [\n ...tuiCreateDateMask(dateFormat, dateSeparator),\n ',',\n ' ',\n ...tuiCreateTimeMask(timeMode),\n ],\n pipe: tuiCreateAutoCorrectedDateTimePipe({\n value: day,\n min,\n max,\n dateFormat,\n dateSeparator,\n timeMode,\n }),\n guide: false,\n };\n }\n\n @tuiPure\n private getDateTimeString(\n date: TuiDay | string,\n time: TuiTime | string | null,\n timeMode: TuiTimeMode = 'HH:MM',\n ): string {\n const dateString =\n date instanceof TuiDay\n ? date.toString(this.dateFormat, this.dateSeparator)\n : date;\n const timeString = time instanceof TuiTime ? time.toString(timeMode) : time || '';\n\n return `${dateString}${DATE_TIME_SEPARATOR}${timeString}`;\n }\n\n private updateNativeValue(day: TuiDay) {\n const time = this.nativeValue.split(DATE_TIME_SEPARATOR)[1] || '';\n\n this.nativeValue = this.getDateTimeString(day, time);\n }\n\n private clampTime(time: TuiTime, day: TuiDay): TuiTime {\n const ms = time.toAbsoluteMilliseconds();\n const min =\n Array.isArray(this.min) && day.daySame(this.calendarMinDay)\n ? this.min[1].toAbsoluteMilliseconds()\n : -Infinity;\n const max =\n Array.isArray(this.max) && day.daySame(this.calendarMaxDay)\n ? this.max[1].toAbsoluteMilliseconds()\n : Infinity;\n\n return TuiTime.fromAbsoluteMilliseconds(clamp(ms, min, max));\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiCalendarModule,\n TuiHostedDropdownModule,\n TuiLinkModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputDateTimeComponent} from './input-date-time.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n PolymorpheusModule,\n TuiPreventDefaultModule,\n TuiCalendarModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiValueAccessorModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputDateTimeComponent],\n exports: [TuiInputDateTimeComponent],\n})\nexport class TuiInputDateTimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,36 +1,39 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { Optional, Self, Inject, ChangeDetectorRef, Injector, Type, ViewChild, Input, HostListener, Component, ChangeDetectionStrategy, forwardRef, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { AbstractTuiNullableControl, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, DATE_FILLER_LENGTH, TuiDay, nullableSame, TUI_IS_MOBILE, TUI_DATE_FORMAT, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiPreventDefaultModule, TuiLetModule } from '@taiga-ui/cdk';
4
+ import { AbstractTuiNullableControl, TUI_FIRST_DAY, TUI_LAST_DAY, ALWAYS_FALSE_HANDLER, TuiMonth, changeDateSeparator, DATE_FILLER_LENGTH, TuiDay, nullableSame, TUI_IS_MOBILE, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiPreventDefaultModule, TuiLetModule } from '@taiga-ui/cdk';
5
5
  import { TUI_DEFAULT_MARKER_HANDLER, sizeBigger, TuiDialogService, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, TuiCalendarModule, TuiSvgModule, TuiLinkModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
6
- import { TUI_DATE_MASK, EMPTY_MASK } from '@taiga-ui/kit/constants';
6
+ import { EMPTY_MASK } from '@taiga-ui/kit/constants';
7
7
  import { LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
8
- import { TUI_MOBILE_CALENDAR, TUI_DATE_TEXTS, TUI_CALENDAR_DATA_STREAM } from '@taiga-ui/kit/tokens';
9
- import { tuiCreateAutoCorrectedDatePipe } from '@taiga-ui/kit/utils/mask';
8
+ import { TUI_MOBILE_CALENDAR, TUI_DATE_TEXTS, TUI_DATE_VALUE_TRANSFORMER, TUI_CALENDAR_DATA_STREAM } from '@taiga-ui/kit/tokens';
9
+ import { tuiCreateDateMask, tuiCreateAutoCorrectedDatePipe } from '@taiga-ui/kit/utils/mask';
10
10
  import { TuiReplayControlValueChangesFactory } from '@taiga-ui/kit/utils/miscellaneous';
11
11
  import { PolymorpheusComponent, PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
12
12
  import { Observable } from 'rxjs';
13
- import { pluck, takeUntil } from 'rxjs/operators';
13
+ import { map, takeUntil } from 'rxjs/operators';
14
14
  import { CommonModule } from '@angular/common';
15
15
  import { TuiValueAccessorModule } from '@taiga-ui/kit/directives';
16
16
  import { TextMaskModule } from 'angular2-text-mask';
17
17
 
18
18
  var TuiInputDateComponent_1;
19
19
  // TODO: remove in ivy compilation
20
- const DATE_STREAM_FACTORY = TuiReplayControlValueChangesFactory;
20
+ const DATE_STREAM_FACTORY = (control, valueTransformer) => TuiReplayControlValueChangesFactory(control, valueTransformer);
21
+ // @dynamic
21
22
  let TuiInputDateComponent = TuiInputDateComponent_1 = class TuiInputDateComponent extends AbstractTuiNullableControl {
22
- constructor(control, changeDetectorRef, injector, isMobile, dialogService, mobileCalendar, textfieldSize, dateFormat, dateTexts$) {
23
- super(control, changeDetectorRef);
23
+ constructor(control, changeDetectorRef, injector, isMobile, dialogService, mobileCalendar, textfieldSize, dateFormat, dateSeparator, dateTexts$, valueTransformer) {
24
+ super(control, changeDetectorRef, valueTransformer);
24
25
  this.injector = injector;
25
26
  this.isMobile = isMobile;
26
27
  this.dialogService = dialogService;
27
28
  this.mobileCalendar = mobileCalendar;
28
29
  this.textfieldSize = textfieldSize;
29
30
  this.dateFormat = dateFormat;
31
+ this.dateSeparator = dateSeparator;
30
32
  this.dateTexts$ = dateTexts$;
33
+ this.valueTransformer = valueTransformer;
31
34
  this.month = null;
32
35
  this.textMaskOptions = {
33
- mask: TUI_DATE_MASK,
36
+ mask: tuiCreateDateMask(this.dateFormat, this.dateSeparator),
34
37
  pipe: tuiCreateAutoCorrectedDatePipe(this),
35
38
  guide: false,
36
39
  };
@@ -41,7 +44,7 @@ let TuiInputDateComponent = TuiInputDateComponent_1 = class TuiInputDateComponen
41
44
  this.items = [];
42
45
  this.defaultActiveYearMonth = TuiMonth.currentLocal();
43
46
  this.open = false;
44
- this.filler$ = this.dateTexts$.pipe(pluck(this.dateFormat));
47
+ this.filler$ = this.dateTexts$.pipe(map(dateTexts => changeDateSeparator(dateTexts[this.dateFormat], this.dateSeparator)));
45
48
  }
46
49
  get nativeFocusableElement() {
47
50
  return this.textfield ? this.textfield.nativeFocusableElement : null;
@@ -62,7 +65,7 @@ let TuiInputDateComponent = TuiInputDateComponent_1 = class TuiInputDateComponen
62
65
  if (activeItem) {
63
66
  return String(activeItem);
64
67
  }
65
- return value ? String(value) : nativeValue;
68
+ return value ? value.toString(this.dateFormat, this.dateSeparator) : nativeValue;
66
69
  }
67
70
  get computedActiveYearMonth() {
68
71
  if (this.items[0] && this.value && this.value.daySame(this.items[0].day)) {
@@ -80,7 +83,7 @@ let TuiInputDateComponent = TuiInputDateComponent_1 = class TuiInputDateComponen
80
83
  this.nativeFocusableElement.value = value;
81
84
  }
82
85
  get canOpen() {
83
- return !this.computedDisabled && !this.readOnly && !this.computedMobile;
86
+ return this.interactive && !this.computedMobile;
84
87
  }
85
88
  get computedMask() {
86
89
  return this.activeItem ? EMPTY_MASK : this.textMaskOptions;
@@ -125,7 +128,9 @@ let TuiInputDateComponent = TuiInputDateComponent_1 = class TuiInputDateComponen
125
128
  if (!value) {
126
129
  this.onOpenChange(true);
127
130
  }
128
- this.updateValue(value.length !== DATE_FILLER_LENGTH ? null : TuiDay.normalizeParse(value));
131
+ this.updateValue(value.length !== DATE_FILLER_LENGTH
132
+ ? null
133
+ : TuiDay.normalizeParse(value, this.dateFormat));
129
134
  }
130
135
  onDayClick(value) {
131
136
  this.updateValue(value);
@@ -164,7 +169,9 @@ TuiInputDateComponent.ctorParameters = () => [
164
169
  { type: Type, decorators: [{ type: Optional }, { type: Inject, args: [TUI_MOBILE_CALENDAR,] }] },
165
170
  { type: TuiTextfieldSizeDirective, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_SIZE,] }] },
166
171
  { type: undefined, decorators: [{ type: Inject, args: [TUI_DATE_FORMAT,] }] },
167
- { type: Observable, decorators: [{ type: Inject, args: [TUI_DATE_TEXTS,] }] }
172
+ { type: String, decorators: [{ type: Inject, args: [TUI_DATE_SEPARATOR,] }] },
173
+ { type: Observable, decorators: [{ type: Inject, args: [TUI_DATE_TEXTS,] }] },
174
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TUI_DATE_VALUE_TRANSFORMER,] }] }
168
175
  ];
169
176
  __decorate([
170
177
  ViewChild(TuiPrimitiveTextfieldComponent)
@@ -199,7 +206,7 @@ __decorate([
199
206
  TuiInputDateComponent = TuiInputDateComponent_1 = __decorate([
200
207
  Component({
201
208
  selector: 'tui-input-date',
202
- template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n *tuiLet=\"filler$ | async as filler\"\n automation-id=\"tui-input-date-range__textfield\"\n tuiValueAccessor\n tuiTextfieldInputMode=\"numeric\"\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [filler]=\"getComputedFiller(filler)\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [focusable]=\"computedFocusable\"\n [iconContent]=\"computedMobile ? iconContent : calendarIcon\"\n [disabled]=\"computedDisabled\"\n [textMask]=\"computedMask\"\n [value]=\"computedValue\"\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 #iconContent>\n <tui-svg\n automation-id=\"tui-input-date-range__icon\"\n [class.icon]=\"!computedDisabled\"\n [src]=\"calendarIcon\"\n (click)=\"onMobileClick()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #dropdown=\"polymorpheus\" polymorpheus>\n <tui-calendar\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-input-date__calendar\"\n [min]=\"min\"\n [max]=\"max\"\n [markerHandler]=\"markerHandler\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [month]=\"computedActiveYearMonth\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n ></tui-calendar>\n <div\n *ngIf=\"items.length === 1\"\n tuiPreventDefault=\"mousedown\"\n class=\"button\"\n >\n <button tuiLink type=\"button\" (click)=\"onDayClick(items[0].day)\">\n {{ items[0] }}\n </button>\n </div>\n </ng-template>\n</tui-hosted-dropdown>\n",
209
+ template: "<tui-hosted-dropdown\n class=\"hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n *tuiLet=\"filler$ | async as filler\"\n automation-id=\"tui-input-date-range__textfield\"\n tuiValueAccessor\n tuiTextfieldInputMode=\"numeric\"\n class=\"textfield\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [invalid]=\"computedInvalid\"\n [filler]=\"getComputedFiller(filler)\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [focusable]=\"computedFocusable\"\n [iconContent]=\"computedMobile ? mobileIconContent : iconContent\"\n [disabled]=\"computedDisabled\"\n [textMask]=\"computedMask\"\n [value]=\"computedValue\"\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 #mobileIconContent>\n <tui-svg\n automation-id=\"tui-input-date-range__icon\"\n [class.icon]=\"!computedDisabled\"\n [src]=\"calendarIcon\"\n (click)=\"onMobileClick()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #iconContent>\n <tui-svg\n [class.icon]=\"!computedDisabled\"\n [src]=\"calendarIcon\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #dropdown=\"polymorpheus\" polymorpheus>\n <tui-calendar\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-input-date__calendar\"\n [min]=\"min\"\n [max]=\"max\"\n [markerHandler]=\"markerHandler\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [month]=\"computedActiveYearMonth\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n ></tui-calendar>\n <div\n *ngIf=\"items.length === 1\"\n tuiPreventDefault=\"mousedown\"\n class=\"button\"\n >\n <button tuiLink type=\"button\" (click)=\"onDayClick(items[0].day)\">\n {{ items[0] }}\n </button>\n </div>\n </ng-template>\n</tui-hosted-dropdown>\n",
203
210
  changeDetection: ChangeDetectionStrategy.OnPush,
204
211
  providers: [
205
212
  {
@@ -208,7 +215,10 @@ TuiInputDateComponent = TuiInputDateComponent_1 = __decorate([
208
215
  },
209
216
  {
210
217
  provide: TUI_CALENDAR_DATA_STREAM,
211
- deps: [[new Optional(), new Self(), NgControl]],
218
+ deps: [
219
+ [new Optional(), new Self(), NgControl],
220
+ [new Optional(), forwardRef(() => TUI_DATE_VALUE_TRANSFORMER)],
221
+ ],
212
222
  useFactory: DATE_STREAM_FACTORY,
213
223
  },
214
224
  LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,
@@ -226,7 +236,10 @@ TuiInputDateComponent = TuiInputDateComponent_1 = __decorate([
226
236
  __param(5, Inject(TUI_MOBILE_CALENDAR)),
227
237
  __param(6, Inject(TUI_TEXTFIELD_SIZE)),
228
238
  __param(7, Inject(TUI_DATE_FORMAT)),
229
- __param(8, Inject(TUI_DATE_TEXTS))
239
+ __param(8, Inject(TUI_DATE_SEPARATOR)),
240
+ __param(9, Inject(TUI_DATE_TEXTS)),
241
+ __param(10, Optional()),
242
+ __param(10, Inject(TUI_DATE_VALUE_TRANSFORMER))
230
243
  ], TuiInputDateComponent);
231
244
 
232
245
  let TuiInputDateModule = class TuiInputDateModule {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-date.js","sources":["ng://@taiga-ui/kit/components/input-date/input-date.component.ts","ng://@taiga-ui/kit/components/input-date/input-date.module.ts","ng://@taiga-ui/kit/components/input-date/taiga-ui-kit-components-input-date.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostListener,\n Inject,\n Injector,\n Input,\n Optional,\n Self,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n DATE_FILLER_LENGTH,\n nullableSame,\n TUI_DATE_FORMAT,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDateMode,\n TuiDay,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_DEFAULT_MARKER_HANDLER,\n TUI_TEXTFIELD_SIZE,\n TuiDialogService,\n TuiMarkerHandler,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TuiNamedDay} from '@taiga-ui/kit/classes';\nimport {EMPTY_MASK, TUI_DATE_MASK} from '@taiga-ui/kit/constants';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {\n TUI_CALENDAR_DATA_STREAM,\n TUI_DATE_TEXTS,\n TUI_MOBILE_CALENDAR,\n} from '@taiga-ui/kit/tokens';\nimport {tuiCreateAutoCorrectedDatePipe} from '@taiga-ui/kit/utils/mask';\nimport {TuiReplayControlValueChangesFactory} from '@taiga-ui/kit/utils/miscellaneous';\nimport {PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {pluck, takeUntil} from 'rxjs/operators';\n\n// TODO: remove in ivy compilation\nexport const DATE_STREAM_FACTORY = TuiReplayControlValueChangesFactory;\n\n@Component({\n selector: 'tui-input-date',\n templateUrl: './input-date.template.html',\n styleUrls: ['./input-date.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputDateComponent),\n },\n {\n provide: TUI_CALENDAR_DATA_STREAM,\n deps: [[new Optional(), new Self(), NgControl]],\n useFactory: DATE_STREAM_FACTORY,\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n})\nexport class TuiInputDateComponent\n extends AbstractTuiNullableControl<TuiDay>\n implements TuiWithOptionalMinMax<TuiDay>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private month: TuiMonth | null = null;\n\n private readonly textMaskOptions: TuiTextMaskOptions = {\n mask: TUI_DATE_MASK,\n pipe: tuiCreateAutoCorrectedDatePipe(this),\n guide: false,\n };\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n markerHandler: TuiMarkerHandler = TUI_DEFAULT_MARKER_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n items: ReadonlyArray<TuiNamedDay> = [];\n\n @Input()\n @tuiDefaultProp()\n defaultActiveYearMonth = TuiMonth.currentLocal();\n\n open = false;\n readonly filler$ = this.dateTexts$.pipe(pluck(this.dateFormat));\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(Injector) private readonly injector: Injector,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TuiDialogService) private readonly dialogService: TuiDialogService,\n @Optional()\n @Inject(TUI_MOBILE_CALENDAR)\n private readonly mobileCalendar: Type<any> | null,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_DATE_FORMAT) readonly dateFormat: TuiDateMode,\n @Inject(TUI_DATE_TEXTS)\n readonly dateTexts$: Observable<Record<TuiDateMode, string>>,\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 computedMobile(): boolean {\n return this.isMobile && !!this.mobileCalendar;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n get computedValue(): string {\n const {value, nativeValue, activeItem} = this;\n\n if (activeItem) {\n return String(activeItem);\n }\n\n return value ? String(value) : nativeValue;\n }\n\n get computedActiveYearMonth(): TuiMonth {\n if (this.items[0] && this.value && this.value.daySame(this.items[0].day)) {\n return this.items[0].displayDay;\n }\n\n return this.month || this.value || this.defaultActiveYearMonth;\n }\n\n get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n get canOpen(): boolean {\n return !this.computedDisabled && !this.readOnly && !this.computedMobile;\n }\n\n get computedMask(): TuiTextMaskOptions {\n return this.activeItem ? EMPTY_MASK : this.textMaskOptions;\n }\n\n get activeItem(): TuiNamedDay | null {\n const {value} = this;\n\n return (value && this.items.find(item => item.day.daySame(value))) || null;\n }\n\n @HostListener('click')\n onClick() {\n if (!this.isMobile) {\n this.open = !this.open;\n }\n }\n\n getComputedFiller(filler: string): string {\n return this.activeItem ? '' : filler;\n }\n\n onMobileClick() {\n if (!this.mobileCalendar) {\n this.open = !this.open;\n\n return;\n }\n\n this.dialogService\n .open<TuiDay>(new PolymorpheusComponent(this.mobileCalendar, this.injector), {\n size: 'fullscreen',\n closeable: false,\n data: {\n single: true,\n min: this.min,\n max: this.max,\n disabledItemHandler: this.disabledItemHandler,\n },\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => {\n this.updateValue(value);\n });\n }\n\n onValueChange(value: string) {\n if (this.control) {\n this.control.updateValueAndValidity({emitEvent: false});\n }\n\n if (!value) {\n this.onOpenChange(true);\n }\n\n this.updateValue(\n value.length !== DATE_FILLER_LENGTH ? null : TuiDay.normalizeParse(value),\n );\n }\n\n onDayClick(value: TuiDay) {\n this.updateValue(value);\n this.open = false;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onMonthChange(month: TuiMonth) {\n this.month = month;\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.open = false;\n }\n\n writeValue(value: TuiDay | null) {\n super.writeValue(value);\n this.nativeValue = value ? this.computedValue : '';\n }\n\n protected valueIdenticalComparator(\n oldValue: TuiDay | null,\n newValue: TuiDay | null,\n ): boolean {\n return nullableSame(oldValue, newValue, (a, b) => a.daySame(b));\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiLetModule, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiCalendarModule,\n TuiHostedDropdownModule,\n TuiLinkModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputDateComponent} from './input-date.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n PolymorpheusModule,\n TuiPreventDefaultModule,\n TuiCalendarModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiValueAccessorModule,\n TuiLetModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputDateComponent],\n exports: [TuiInputDateComponent],\n})\nexport class TuiInputDateModule {}\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-date.js","sources":["ng://@taiga-ui/kit/components/input-date/input-date.component.ts","ng://@taiga-ui/kit/components/input-date/input-date.module.ts","ng://@taiga-ui/kit/components/input-date/taiga-ui-kit-components-input-date.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostListener,\n Inject,\n Injector,\n Input,\n Optional,\n Self,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiNullableControl,\n ALWAYS_FALSE_HANDLER,\n changeDateSeparator,\n DATE_FILLER_LENGTH,\n nullableSame,\n TUI_DATE_FORMAT,\n TUI_DATE_SEPARATOR,\n TUI_FIRST_DAY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiControlValueTransformer,\n TuiDateMode,\n TuiDay,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n TuiMonth,\n} from '@taiga-ui/cdk';\nimport {\n sizeBigger,\n TUI_DEFAULT_MARKER_HANDLER,\n TUI_TEXTFIELD_SIZE,\n TuiDialogService,\n TuiMarkerHandler,\n TuiPrimitiveTextfieldComponent,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TuiNamedDay} from '@taiga-ui/kit/classes';\nimport {EMPTY_MASK} from '@taiga-ui/kit/constants';\nimport {LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER} from '@taiga-ui/kit/providers';\nimport {\n TUI_CALENDAR_DATA_STREAM,\n TUI_DATE_TEXTS,\n TUI_DATE_VALUE_TRANSFORMER,\n TUI_MOBILE_CALENDAR,\n} from '@taiga-ui/kit/tokens';\nimport {\n tuiCreateAutoCorrectedDatePipe,\n tuiCreateDateMask,\n} from '@taiga-ui/kit/utils/mask';\nimport {TuiReplayControlValueChangesFactory} from '@taiga-ui/kit/utils/miscellaneous';\nimport {PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {map, takeUntil} from 'rxjs/operators';\n\n// TODO: remove in ivy compilation\nexport const DATE_STREAM_FACTORY = (\n control: NgControl | null,\n valueTransformer: TuiControlValueTransformer<TuiDay>,\n) => TuiReplayControlValueChangesFactory(control, valueTransformer);\n\n// @dynamic\n@Component({\n selector: 'tui-input-date',\n templateUrl: './input-date.template.html',\n styleUrls: ['./input-date.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputDateComponent),\n },\n {\n provide: TUI_CALENDAR_DATA_STREAM,\n deps: [\n [new Optional(), new Self(), NgControl],\n [new Optional(), forwardRef(() => TUI_DATE_VALUE_TRANSFORMER)],\n ],\n useFactory: DATE_STREAM_FACTORY,\n },\n LEFT_ALIGNED_DROPDOWN_CONTROLLER_PROVIDER,\n ],\n})\nexport class TuiInputDateComponent\n extends AbstractTuiNullableControl<TuiDay>\n implements TuiWithOptionalMinMax<TuiDay>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private month: TuiMonth | null = null;\n\n private readonly textMaskOptions: TuiTextMaskOptions = {\n mask: tuiCreateDateMask(this.dateFormat, this.dateSeparator),\n pipe: tuiCreateAutoCorrectedDatePipe(this),\n guide: false,\n };\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n markerHandler: TuiMarkerHandler = TUI_DEFAULT_MARKER_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n items: ReadonlyArray<TuiNamedDay> = [];\n\n @Input()\n @tuiDefaultProp()\n defaultActiveYearMonth = TuiMonth.currentLocal();\n\n open = false;\n readonly filler$ = this.dateTexts$.pipe(\n map(dateTexts =>\n changeDateSeparator(dateTexts[this.dateFormat], this.dateSeparator),\n ),\n );\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(Injector) private readonly injector: Injector,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TuiDialogService) private readonly dialogService: TuiDialogService,\n @Optional()\n @Inject(TUI_MOBILE_CALENDAR)\n private readonly mobileCalendar: Type<any> | null,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_DATE_FORMAT) readonly dateFormat: TuiDateMode,\n @Inject(TUI_DATE_SEPARATOR) readonly dateSeparator: string,\n @Inject(TUI_DATE_TEXTS)\n readonly dateTexts$: Observable<Record<TuiDateMode, string>>,\n @Optional()\n @Inject(TUI_DATE_VALUE_TRANSFORMER)\n readonly valueTransformer: TuiControlValueTransformer<TuiDay | null> | null,\n ) {\n super(control, changeDetectorRef, valueTransformer);\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 computedMobile(): boolean {\n return this.isMobile && !!this.mobileCalendar;\n }\n\n get calendarIcon(): string {\n return sizeBigger(this.textfieldSize.size)\n ? 'tuiIconCalendarLarge'\n : 'tuiIconCalendar';\n }\n\n get computedValue(): string {\n const {value, nativeValue, activeItem} = this;\n\n if (activeItem) {\n return String(activeItem);\n }\n\n return value ? value.toString(this.dateFormat, this.dateSeparator) : nativeValue;\n }\n\n get computedActiveYearMonth(): TuiMonth {\n if (this.items[0] && this.value && this.value.daySame(this.items[0].day)) {\n return this.items[0].displayDay;\n }\n\n return this.month || this.value || this.defaultActiveYearMonth;\n }\n\n get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n get canOpen(): boolean {\n return this.interactive && !this.computedMobile;\n }\n\n get computedMask(): TuiTextMaskOptions {\n return this.activeItem ? EMPTY_MASK : this.textMaskOptions;\n }\n\n get activeItem(): TuiNamedDay | null {\n const {value} = this;\n\n return (value && this.items.find(item => item.day.daySame(value))) || null;\n }\n\n @HostListener('click')\n onClick() {\n if (!this.isMobile) {\n this.open = !this.open;\n }\n }\n\n getComputedFiller(filler: string): string {\n return this.activeItem ? '' : filler;\n }\n\n onMobileClick() {\n if (!this.mobileCalendar) {\n this.open = !this.open;\n\n return;\n }\n\n this.dialogService\n .open<TuiDay>(new PolymorpheusComponent(this.mobileCalendar, this.injector), {\n size: 'fullscreen',\n closeable: false,\n data: {\n single: true,\n min: this.min,\n max: this.max,\n disabledItemHandler: this.disabledItemHandler,\n },\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => {\n this.updateValue(value);\n });\n }\n\n onValueChange(value: string) {\n if (this.control) {\n this.control.updateValueAndValidity({emitEvent: false});\n }\n\n if (!value) {\n this.onOpenChange(true);\n }\n\n this.updateValue(\n value.length !== DATE_FILLER_LENGTH\n ? null\n : TuiDay.normalizeParse(value, this.dateFormat),\n );\n }\n\n onDayClick(value: TuiDay) {\n this.updateValue(value);\n this.open = false;\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onMonthChange(month: TuiMonth) {\n this.month = month;\n }\n\n onOpenChange(open: boolean) {\n this.open = open;\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n setDisabledState() {\n super.setDisabledState();\n this.open = false;\n }\n\n writeValue(value: TuiDay | null) {\n super.writeValue(value);\n this.nativeValue = value ? this.computedValue : '';\n }\n\n protected valueIdenticalComparator(\n oldValue: TuiDay | null,\n newValue: TuiDay | null,\n ): boolean {\n return nullableSame(oldValue, newValue, (a, b) => a.daySame(b));\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiLetModule, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {\n TuiCalendarModule,\n TuiHostedDropdownModule,\n TuiLinkModule,\n TuiPrimitiveTextfieldModule,\n TuiSvgModule,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputDateComponent} from './input-date.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n PolymorpheusModule,\n TuiPreventDefaultModule,\n TuiCalendarModule,\n TuiSvgModule,\n TuiLinkModule,\n TuiHostedDropdownModule,\n TuiPrimitiveTextfieldModule,\n TuiValueAccessorModule,\n TuiLetModule,\n TuiTextfieldControllerModule,\n ],\n declarations: [TuiInputDateComponent],\n exports: [TuiInputDateComponent],\n})\nexport class TuiInputDateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -179,9 +179,6 @@ let TuiInputFileComponent = TuiInputFileComponent_1 = class TuiInputFileComponen
179
179
  get focused() {
180
180
  return isNativeFocused(this.nativeFocusableElement);
181
181
  }
182
- get allowDelete() {
183
- return !this.computedDisabled && !this.readOnly;
184
- }
185
182
  get computedLink$() {
186
183
  return this.computeLink$(this.fileDragged, this.multiple, this.link);
187
184
  }
@@ -387,7 +384,7 @@ __decorate([
387
384
  TuiInputFileComponent = TuiInputFileComponent_1 = __decorate([
388
385
  Component({
389
386
  selector: 'tui-input-file',
390
- template: "<tui-wrapper\n *ngIf=\"multiple || !value\"\n class=\"wrapper\"\n [class.wrapper_mobile]=\"isMobile\"\n [class.wrapper_has-files]=\"hasFiles\"\n [appearance]=\"getAppearance(mode$ | async)\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered || fileDragged\"\n [pressed]=\"computedPressed\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n>\n <label\n *ngIf=\"units$ | async as units\"\n automation-id=\"tui-input-file__label\"\n >\n <a tuiLink>\n <span\n polymorpheus-outlet\n class=\"inline\"\n [content]=\"computedLink$ | async\"\n ></span>\n </a>\n <ng-container *ngIf=\"computedLabel$ | async as computedLabel\">\n <span>&nbsp;</span>\n <span\n polymorpheus-outlet\n class=\"inline\"\n [content]=\"computedLabel\"\n ></span>\n </ng-container>\n <input\n *ngIf=\"!readOnly && !computedDisabled && (inputFileTexts$ | async) as texts\"\n #input\n type=\"file\"\n tuiPreventDefault=\"mousedown\"\n class=\"native\"\n [id]=\"id\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [tuiFocusable]=\"focusable\"\n (change)=\"onFilesSelected(input, texts, units)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiPressedChange)=\"onPressed($event)\"\n (tuiDroppableDropped)=\"onDropped($event, texts, units)\"\n (tuiDroppableDragOverChange)=\"onDragOver($event)\"\n />\n </label>\n</tui-wrapper>\n\n<section\n *tuiLet=\"mode$ | async as mode\"\n tuiGroup\n orientation=\"vertical\"\n class=\"files\"\n [collapsed]=\"true\"\n>\n <tui-file\n *ngFor=\"let file of rejectedFiles\"\n automation-id=\"tui-input-file__error\"\n state=\"error\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"allowDelete\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeRejectedFile(file)\"\n ></tui-file>\n <tui-file\n *ngFor=\"let file of computedLoading\"\n automation-id=\"tui-input-file__loading\"\n state=\"loading\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"allowDelete\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeFile(file)\"\n ></tui-file>\n <tui-file\n *ngFor=\"let file of readyFiles\"\n automation-id=\"tui-input-file__file\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"allowDelete\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeFile(file)\"\n ></tui-file>\n</section>\n",
387
+ template: "<tui-wrapper\n *ngIf=\"multiple || !value\"\n class=\"wrapper\"\n [class.wrapper_mobile]=\"isMobile\"\n [class.wrapper_has-files]=\"hasFiles\"\n [appearance]=\"getAppearance(mode$ | async)\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered || fileDragged\"\n [pressed]=\"computedPressed\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n>\n <label\n *ngIf=\"units$ | async as units\"\n automation-id=\"tui-input-file__label\"\n >\n <a tuiLink>\n <span\n polymorpheus-outlet\n class=\"inline\"\n [content]=\"computedLink$ | async\"\n ></span>\n </a>\n <ng-container *ngIf=\"computedLabel$ | async as computedLabel\">\n <span>&nbsp;</span>\n <span\n polymorpheus-outlet\n class=\"inline\"\n [content]=\"computedLabel\"\n ></span>\n </ng-container>\n <input\n *ngIf=\"!readOnly && !computedDisabled && (inputFileTexts$ | async) as texts\"\n #input\n type=\"file\"\n tuiPreventDefault=\"mousedown\"\n class=\"native\"\n [id]=\"id\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [tuiFocusable]=\"focusable\"\n (change)=\"onFilesSelected(input, texts, units)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiPressedChange)=\"onPressed($event)\"\n (tuiDroppableDropped)=\"onDropped($event, texts, units)\"\n (tuiDroppableDragOverChange)=\"onDragOver($event)\"\n />\n </label>\n</tui-wrapper>\n\n<section\n *tuiLet=\"mode$ | async as mode\"\n tuiGroup\n orientation=\"vertical\"\n class=\"files\"\n [collapsed]=\"true\"\n>\n <tui-file\n *ngFor=\"let file of rejectedFiles\"\n automation-id=\"tui-input-file__error\"\n state=\"error\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"interactive\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeRejectedFile(file)\"\n ></tui-file>\n <tui-file\n *ngFor=\"let file of computedLoading\"\n automation-id=\"tui-input-file__loading\"\n state=\"loading\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"interactive\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeFile(file)\"\n ></tui-file>\n <tui-file\n *ngFor=\"let file of readyFiles\"\n automation-id=\"tui-input-file__file\"\n [attr.data-mode]=\"mode\"\n [showSize]=\"showSize\"\n [allowDelete]=\"interactive\"\n [size]=\"size\"\n [file]=\"file\"\n (fileRemoved)=\"removeFile(file)\"\n ></tui-file>\n</section>\n",
391
388
  changeDetection: ChangeDetectionStrategy.OnPush,
392
389
  providers: [
393
390
  MODE_PROVIDER,