@taiga-ui/core 2.29.0 → 2.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/abstract/abstract-dropdown.d.ts +2 -1
  2. package/abstract/abstract-hint-options.d.ts +7 -0
  3. package/abstract/abstract-hint.d.ts +5 -4
  4. package/abstract/abstract-textfield-host.d.ts +13 -0
  5. package/abstract/index.d.ts +2 -0
  6. package/abstract/taiga-ui-core-abstract.metadata.json +1 -1
  7. package/bundles/taiga-ui-core-abstract.umd.js +76 -4
  8. package/bundles/taiga-ui-core-abstract.umd.js.map +1 -1
  9. package/bundles/taiga-ui-core-abstract.umd.min.js +1 -1
  10. package/bundles/taiga-ui-core-abstract.umd.min.js.map +1 -1
  11. package/bundles/taiga-ui-core-components-dialog.umd.js +1 -1
  12. package/bundles/taiga-ui-core-components-dialog.umd.min.js +1 -1
  13. package/bundles/taiga-ui-core-components-dialog.umd.min.js.map +1 -1
  14. package/bundles/taiga-ui-core-components-dropdown-box.umd.js +1 -1
  15. package/bundles/taiga-ui-core-components-dropdown-box.umd.min.js +1 -1
  16. package/bundles/taiga-ui-core-components-dropdown-box.umd.min.js.map +1 -1
  17. package/bundles/taiga-ui-core-components-hints-host.umd.js +1 -0
  18. package/bundles/taiga-ui-core-components-hints-host.umd.js.map +1 -1
  19. package/bundles/taiga-ui-core-components-hints-host.umd.min.js.map +1 -1
  20. package/bundles/taiga-ui-core-components-label.umd.js +1 -1
  21. package/bundles/taiga-ui-core-components-label.umd.min.js +1 -1
  22. package/bundles/taiga-ui-core-components-label.umd.min.js.map +1 -1
  23. package/bundles/taiga-ui-core-components-link.umd.js +2 -2
  24. package/bundles/taiga-ui-core-components-link.umd.js.map +1 -1
  25. package/bundles/taiga-ui-core-components-link.umd.min.js +1 -1
  26. package/bundles/taiga-ui-core-components-link.umd.min.js.map +1 -1
  27. package/bundles/taiga-ui-core-components-loader.umd.js +5 -2
  28. package/bundles/taiga-ui-core-components-loader.umd.js.map +1 -1
  29. package/bundles/taiga-ui-core-components-loader.umd.min.js +1 -1
  30. package/bundles/taiga-ui-core-components-loader.umd.min.js.map +1 -1
  31. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +226 -44
  32. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  33. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js +2 -2
  34. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js.map +1 -1
  35. package/bundles/taiga-ui-core-components-scroll-controls.umd.js +1 -1
  36. package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js +2 -2
  37. package/bundles/taiga-ui-core-components-scroll-controls.umd.min.js.map +1 -1
  38. package/bundles/taiga-ui-core-components-theme-night.umd.js +1 -1
  39. package/bundles/taiga-ui-core-components-theme-night.umd.min.js +1 -1
  40. package/bundles/taiga-ui-core-components-theme-night.umd.min.js.map +1 -1
  41. package/bundles/taiga-ui-core-components-tooltip.umd.js +24 -14
  42. package/bundles/taiga-ui-core-components-tooltip.umd.js.map +1 -1
  43. package/bundles/taiga-ui-core-components-tooltip.umd.min.js +2 -2
  44. package/bundles/taiga-ui-core-components-tooltip.umd.min.js.map +1 -1
  45. package/bundles/taiga-ui-core-constants.umd.js +2 -2
  46. package/bundles/taiga-ui-core-constants.umd.js.map +1 -1
  47. package/bundles/taiga-ui-core-constants.umd.min.js +1 -1
  48. package/bundles/taiga-ui-core-constants.umd.min.js.map +1 -1
  49. package/bundles/taiga-ui-core-directives-dropdown.umd.js +1 -6
  50. package/bundles/taiga-ui-core-directives-dropdown.umd.js.map +1 -1
  51. package/bundles/taiga-ui-core-directives-dropdown.umd.min.js +2 -2
  52. package/bundles/taiga-ui-core-directives-dropdown.umd.min.js.map +1 -1
  53. package/bundles/taiga-ui-core-directives-hint-controller.umd.js +17 -12
  54. package/bundles/taiga-ui-core-directives-hint-controller.umd.js.map +1 -1
  55. package/bundles/taiga-ui-core-directives-hint-controller.umd.min.js +2 -2
  56. package/bundles/taiga-ui-core-directives-hint-controller.umd.min.js.map +1 -1
  57. package/bundles/taiga-ui-core-directives-hint.umd.js +20 -6
  58. package/bundles/taiga-ui-core-directives-hint.umd.js.map +1 -1
  59. package/bundles/taiga-ui-core-directives-hint.umd.min.js +1 -1
  60. package/bundles/taiga-ui-core-directives-hint.umd.min.js.map +1 -1
  61. package/bundles/taiga-ui-core-directives-manual-hint.umd.js +15 -4
  62. package/bundles/taiga-ui-core-directives-manual-hint.umd.js.map +1 -1
  63. package/bundles/taiga-ui-core-directives-manual-hint.umd.min.js +1 -1
  64. package/bundles/taiga-ui-core-directives-manual-hint.umd.min.js.map +1 -1
  65. package/bundles/taiga-ui-core-directives-pointer-hint.umd.js +17 -6
  66. package/bundles/taiga-ui-core-directives-pointer-hint.umd.js.map +1 -1
  67. package/bundles/taiga-ui-core-directives-pointer-hint.umd.min.js +1 -1
  68. package/bundles/taiga-ui-core-directives-pointer-hint.umd.min.js.map +1 -1
  69. package/bundles/taiga-ui-core-directives.umd.js +4 -12
  70. package/bundles/taiga-ui-core-directives.umd.js.map +1 -1
  71. package/bundles/taiga-ui-core-directives.umd.min.js +1 -1
  72. package/bundles/taiga-ui-core-providers.umd.js +2 -1
  73. package/bundles/taiga-ui-core-providers.umd.js.map +1 -1
  74. package/bundles/taiga-ui-core-providers.umd.min.js +1 -1
  75. package/bundles/taiga-ui-core-providers.umd.min.js.map +1 -1
  76. package/bundles/taiga-ui-core-tokens.umd.js +3 -0
  77. package/bundles/taiga-ui-core-tokens.umd.js.map +1 -1
  78. package/bundles/taiga-ui-core-tokens.umd.min.js +2 -2
  79. package/bundles/taiga-ui-core-tokens.umd.min.js.map +1 -1
  80. package/bundles/taiga-ui-core-utils-dom.umd.js +1 -1
  81. package/bundles/taiga-ui-core-utils-dom.umd.js.map +1 -1
  82. package/bundles/taiga-ui-core-utils-dom.umd.min.js +1 -1
  83. package/bundles/taiga-ui-core-utils-dom.umd.min.js.map +1 -1
  84. package/bundles/taiga-ui-core-utils-format.umd.js +38 -6
  85. package/bundles/taiga-ui-core-utils-format.umd.js.map +1 -1
  86. package/bundles/taiga-ui-core-utils-format.umd.min.js +1 -1
  87. package/bundles/taiga-ui-core-utils-format.umd.min.js.map +1 -1
  88. package/bundles/taiga-ui-core-utils-mask.umd.js +1 -1
  89. package/bundles/taiga-ui-core-utils-mask.umd.js.map +1 -1
  90. package/bundles/taiga-ui-core-utils-mask.umd.min.js +1 -1
  91. package/bundles/taiga-ui-core-utils-mask.umd.min.js.map +1 -1
  92. package/components/dialog/taiga-ui-core-components-dialog.metadata.json +1 -1
  93. package/components/dropdown-box/taiga-ui-core-components-dropdown-box.metadata.json +1 -1
  94. package/components/label/taiga-ui-core-components-label.metadata.json +1 -1
  95. package/components/link/taiga-ui-core-components-link.metadata.json +1 -1
  96. package/components/loader/loader.directive.d.ts +3 -0
  97. package/components/loader/taiga-ui-core-components-loader.metadata.json +1 -1
  98. package/components/primitive-textfield/index.d.ts +3 -0
  99. package/components/primitive-textfield/primitive-textfield-options.d.ts +11 -0
  100. package/components/primitive-textfield/primitive-textfield.component.d.ts +18 -11
  101. package/components/primitive-textfield/primitive-textfield.directive.d.ts +8 -0
  102. package/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.metadata.json +1 -1
  103. package/components/primitive-textfield/textfield/textfield.component.d.ts +15 -0
  104. package/components/primitive-textfield/value-decoration/value-decoration.component.d.ts +1 -0
  105. package/components/scroll-controls/taiga-ui-core-components-scroll-controls.metadata.json +1 -1
  106. package/components/theme-night/taiga-ui-core-components-theme-night.metadata.json +1 -1
  107. package/components/tooltip/taiga-ui-core-components-tooltip.metadata.json +1 -1
  108. package/components/tooltip/tooltip.component.d.ts +9 -6
  109. package/constants/taiga-ui-core-constants.metadata.json +1 -1
  110. package/constants/version.d.ts +1 -1
  111. package/directives/dropdown/taiga-ui-core-directives-dropdown.metadata.json +1 -1
  112. package/directives/hint/hint-options.d.ts +12 -0
  113. package/directives/hint/hint.directive.d.ts +5 -3
  114. package/directives/hint/index.d.ts +1 -0
  115. package/directives/hint/taiga-ui-core-directives-hint.metadata.json +1 -1
  116. package/directives/hint-controller/hint-controller.directive.d.ts +7 -5
  117. package/directives/hint-controller/taiga-ui-core-directives-hint-controller.metadata.json +1 -1
  118. package/directives/index.d.ts +0 -1
  119. package/directives/manual-hint/index.d.ts +1 -0
  120. package/directives/manual-hint/manual-hint-options.d.ts +6 -0
  121. package/directives/manual-hint/manual-hint.directive.d.ts +3 -1
  122. package/directives/manual-hint/taiga-ui-core-directives-manual-hint.metadata.json +1 -1
  123. package/directives/pointer-hint/index.d.ts +1 -0
  124. package/directives/pointer-hint/pointer-hint-options.d.ts +9 -0
  125. package/directives/pointer-hint/pointer-hint.directive.d.ts +5 -3
  126. package/directives/pointer-hint/taiga-ui-core-directives-pointer-hint.metadata.json +1 -1
  127. package/directives/taiga-ui-core-directives.metadata.json +1 -1
  128. package/esm2015/abstract/abstract-dropdown.js +12 -1
  129. package/esm2015/abstract/abstract-hint-options.js +6 -0
  130. package/esm2015/abstract/abstract-hint.js +7 -5
  131. package/esm2015/abstract/abstract-textfield-host.js +34 -0
  132. package/esm2015/abstract/index.js +3 -1
  133. package/esm2015/components/dialog/dialog.component.js +1 -1
  134. package/esm2015/components/dropdown-box/dropdown-box.component.js +1 -1
  135. package/esm2015/components/hints-host/hint-box/hint-box.component.js +2 -1
  136. package/esm2015/components/label/label.component.js +1 -1
  137. package/esm2015/components/link/link.component.js +3 -3
  138. package/esm2015/components/loader/loader.component.js +1 -1
  139. package/esm2015/components/loader/loader.directive.js +5 -2
  140. package/esm2015/components/primitive-textfield/index.js +4 -1
  141. package/esm2015/components/primitive-textfield/primitive-textfield-options.js +12 -0
  142. package/esm2015/components/primitive-textfield/primitive-textfield.component.js +66 -31
  143. package/esm2015/components/primitive-textfield/primitive-textfield.directive.js +40 -0
  144. package/esm2015/components/primitive-textfield/primitive-textfield.module.js +15 -7
  145. package/esm2015/components/primitive-textfield/textfield/textfield.component.js +68 -0
  146. package/esm2015/components/primitive-textfield/value-decoration/value-decoration.component.js +12 -5
  147. package/esm2015/components/scroll-controls/scroll-controls.component.js +1 -1
  148. package/esm2015/components/theme-night/theme-night.component.js +1 -1
  149. package/esm2015/components/tooltip/tooltip.component.js +17 -10
  150. package/esm2015/components/tooltip/tooltip.module.js +3 -2
  151. package/esm2015/constants/regexp.js +2 -2
  152. package/esm2015/constants/version.js +2 -2
  153. package/esm2015/directives/dropdown/dropdown.directive.js +2 -7
  154. package/esm2015/directives/hint/hint-options.js +10 -0
  155. package/esm2015/directives/hint/hint.directive.js +11 -7
  156. package/esm2015/directives/hint/index.js +2 -1
  157. package/esm2015/directives/hint-controller/hint-controller.directive.js +16 -10
  158. package/esm2015/directives/hint-controller/hint-controller.token.js +4 -3
  159. package/esm2015/directives/index.js +1 -2
  160. package/esm2015/directives/manual-hint/index.js +2 -1
  161. package/esm2015/directives/manual-hint/manual-hint-options.js +8 -0
  162. package/esm2015/directives/manual-hint/manual-hint.directive.js +9 -5
  163. package/esm2015/directives/pointer-hint/index.js +2 -1
  164. package/esm2015/directives/pointer-hint/pointer-hint-options.js +8 -0
  165. package/esm2015/directives/pointer-hint/pointer-hint.directive.js +11 -7
  166. package/esm2015/interfaces/index.js +1 -1
  167. package/esm2015/interfaces/textfield-host.js +1 -0
  168. package/esm2015/providers/mode.provider.js +3 -2
  169. package/esm2015/tokens/index.js +2 -1
  170. package/esm2015/tokens/textfield-host.js +3 -0
  171. package/esm2015/utils/dom/process-icon.js +2 -2
  172. package/esm2015/utils/format/format-number.js +6 -7
  173. package/esm2015/utils/format/get-fractional-part-padded.js +15 -0
  174. package/esm2015/utils/format/index.js +3 -1
  175. package/esm2015/utils/format/number-to-string-without-exp.js +18 -0
  176. package/esm2015/utils/mask/create-number-mask.js +2 -2
  177. package/esm5/abstract/abstract-dropdown.js +12 -1
  178. package/esm5/abstract/abstract-hint-options.js +6 -0
  179. package/esm5/abstract/abstract-hint.js +7 -5
  180. package/esm5/abstract/abstract-textfield-host.js +55 -0
  181. package/esm5/abstract/index.js +3 -1
  182. package/esm5/components/dialog/dialog.component.js +1 -1
  183. package/esm5/components/dropdown-box/dropdown-box.component.js +1 -1
  184. package/esm5/components/hints-host/hint-box/hint-box.component.js +2 -1
  185. package/esm5/components/label/label.component.js +1 -1
  186. package/esm5/components/link/link.component.js +3 -3
  187. package/esm5/components/loader/loader.component.js +1 -1
  188. package/esm5/components/loader/loader.directive.js +5 -2
  189. package/esm5/components/primitive-textfield/index.js +4 -1
  190. package/esm5/components/primitive-textfield/primitive-textfield-options.js +12 -0
  191. package/esm5/components/primitive-textfield/primitive-textfield.component.js +70 -35
  192. package/esm5/components/primitive-textfield/primitive-textfield.directive.js +49 -0
  193. package/esm5/components/primitive-textfield/primitive-textfield.module.js +15 -7
  194. package/esm5/components/primitive-textfield/textfield/textfield.component.js +77 -0
  195. package/esm5/components/primitive-textfield/value-decoration/value-decoration.component.js +16 -5
  196. package/esm5/components/scroll-controls/scroll-controls.component.js +1 -1
  197. package/esm5/components/theme-night/theme-night.component.js +1 -1
  198. package/esm5/components/tooltip/tooltip.component.js +21 -10
  199. package/esm5/components/tooltip/tooltip.module.js +3 -2
  200. package/esm5/constants/regexp.js +2 -2
  201. package/esm5/constants/version.js +2 -2
  202. package/esm5/directives/dropdown/dropdown.directive.js +2 -7
  203. package/esm5/directives/hint/hint-options.js +11 -0
  204. package/esm5/directives/hint/hint.directive.js +11 -7
  205. package/esm5/directives/hint/index.js +2 -1
  206. package/esm5/directives/hint-controller/hint-controller.directive.js +16 -10
  207. package/esm5/directives/hint-controller/hint-controller.token.js +4 -3
  208. package/esm5/directives/index.js +1 -2
  209. package/esm5/directives/manual-hint/index.js +2 -1
  210. package/esm5/directives/manual-hint/manual-hint-options.js +9 -0
  211. package/esm5/directives/manual-hint/manual-hint.directive.js +9 -5
  212. package/esm5/directives/pointer-hint/index.js +2 -1
  213. package/esm5/directives/pointer-hint/pointer-hint-options.js +9 -0
  214. package/esm5/directives/pointer-hint/pointer-hint.directive.js +11 -7
  215. package/esm5/interfaces/index.js +1 -1
  216. package/esm5/interfaces/textfield-host.js +1 -0
  217. package/esm5/providers/mode.provider.js +3 -2
  218. package/esm5/tokens/index.js +2 -1
  219. package/esm5/tokens/textfield-host.js +3 -0
  220. package/esm5/utils/dom/process-icon.js +2 -2
  221. package/esm5/utils/format/format-number.js +6 -7
  222. package/esm5/utils/format/get-fractional-part-padded.js +16 -0
  223. package/esm5/utils/format/index.js +3 -1
  224. package/esm5/utils/format/number-to-string-without-exp.js +19 -0
  225. package/esm5/utils/mask/create-number-mask.js +2 -2
  226. package/fesm2015/taiga-ui-core-abstract.js +57 -8
  227. package/fesm2015/taiga-ui-core-abstract.js.map +1 -1
  228. package/fesm2015/taiga-ui-core-components-dialog.js +1 -1
  229. package/fesm2015/taiga-ui-core-components-dropdown-box.js +1 -1
  230. package/fesm2015/taiga-ui-core-components-hints-host.js +1 -0
  231. package/fesm2015/taiga-ui-core-components-hints-host.js.map +1 -1
  232. package/fesm2015/taiga-ui-core-components-label.js +1 -1
  233. package/fesm2015/taiga-ui-core-components-link.js +2 -2
  234. package/fesm2015/taiga-ui-core-components-link.js.map +1 -1
  235. package/fesm2015/taiga-ui-core-components-loader.js +5 -2
  236. package/fesm2015/taiga-ui-core-components-loader.js.map +1 -1
  237. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +197 -42
  238. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  239. package/fesm2015/taiga-ui-core-components-scroll-controls.js +1 -1
  240. package/fesm2015/taiga-ui-core-components-theme-night.js +1 -1
  241. package/fesm2015/taiga-ui-core-components-tooltip.js +18 -10
  242. package/fesm2015/taiga-ui-core-components-tooltip.js.map +1 -1
  243. package/fesm2015/taiga-ui-core-constants.js +2 -2
  244. package/fesm2015/taiga-ui-core-constants.js.map +1 -1
  245. package/fesm2015/taiga-ui-core-directives-dropdown.js +1 -6
  246. package/fesm2015/taiga-ui-core-directives-dropdown.js.map +1 -1
  247. package/fesm2015/taiga-ui-core-directives-hint-controller.js +16 -10
  248. package/fesm2015/taiga-ui-core-directives-hint-controller.js.map +1 -1
  249. package/fesm2015/taiga-ui-core-directives-hint.js +20 -9
  250. package/fesm2015/taiga-ui-core-directives-hint.js.map +1 -1
  251. package/fesm2015/taiga-ui-core-directives-manual-hint.js +16 -7
  252. package/fesm2015/taiga-ui-core-directives-manual-hint.js.map +1 -1
  253. package/fesm2015/taiga-ui-core-directives-pointer-hint.js +18 -9
  254. package/fesm2015/taiga-ui-core-directives-pointer-hint.js.map +1 -1
  255. package/fesm2015/taiga-ui-core-directives.js +0 -1
  256. package/fesm2015/taiga-ui-core-directives.js.map +1 -1
  257. package/fesm2015/taiga-ui-core-providers.js +2 -1
  258. package/fesm2015/taiga-ui-core-providers.js.map +1 -1
  259. package/fesm2015/taiga-ui-core-tokens.js +3 -1
  260. package/fesm2015/taiga-ui-core-tokens.js.map +1 -1
  261. package/fesm2015/taiga-ui-core-utils-dom.js +1 -1
  262. package/fesm2015/taiga-ui-core-utils-dom.js.map +1 -1
  263. package/fesm2015/taiga-ui-core-utils-format.js +37 -7
  264. package/fesm2015/taiga-ui-core-utils-format.js.map +1 -1
  265. package/fesm2015/taiga-ui-core-utils-mask.js +1 -1
  266. package/fesm2015/taiga-ui-core-utils-mask.js.map +1 -1
  267. package/fesm5/taiga-ui-core-abstract.js +78 -8
  268. package/fesm5/taiga-ui-core-abstract.js.map +1 -1
  269. package/fesm5/taiga-ui-core-components-dialog.js +1 -1
  270. package/fesm5/taiga-ui-core-components-dropdown-box.js +1 -1
  271. package/fesm5/taiga-ui-core-components-hints-host.js +1 -0
  272. package/fesm5/taiga-ui-core-components-hints-host.js.map +1 -1
  273. package/fesm5/taiga-ui-core-components-label.js +1 -1
  274. package/fesm5/taiga-ui-core-components-link.js +2 -2
  275. package/fesm5/taiga-ui-core-components-link.js.map +1 -1
  276. package/fesm5/taiga-ui-core-components-loader.js +5 -2
  277. package/fesm5/taiga-ui-core-components-loader.js.map +1 -1
  278. package/fesm5/taiga-ui-core-components-primitive-textfield.js +223 -46
  279. package/fesm5/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  280. package/fesm5/taiga-ui-core-components-scroll-controls.js +1 -1
  281. package/fesm5/taiga-ui-core-components-theme-night.js +1 -1
  282. package/fesm5/taiga-ui-core-components-tooltip.js +22 -10
  283. package/fesm5/taiga-ui-core-components-tooltip.js.map +1 -1
  284. package/fesm5/taiga-ui-core-constants.js +2 -2
  285. package/fesm5/taiga-ui-core-constants.js.map +1 -1
  286. package/fesm5/taiga-ui-core-directives-dropdown.js +1 -6
  287. package/fesm5/taiga-ui-core-directives-dropdown.js.map +1 -1
  288. package/fesm5/taiga-ui-core-directives-hint-controller.js +16 -10
  289. package/fesm5/taiga-ui-core-directives-hint-controller.js.map +1 -1
  290. package/fesm5/taiga-ui-core-directives-hint.js +21 -10
  291. package/fesm5/taiga-ui-core-directives-hint.js.map +1 -1
  292. package/fesm5/taiga-ui-core-directives-manual-hint.js +17 -8
  293. package/fesm5/taiga-ui-core-directives-manual-hint.js.map +1 -1
  294. package/fesm5/taiga-ui-core-directives-pointer-hint.js +19 -10
  295. package/fesm5/taiga-ui-core-directives-pointer-hint.js.map +1 -1
  296. package/fesm5/taiga-ui-core-directives.js +0 -1
  297. package/fesm5/taiga-ui-core-directives.js.map +1 -1
  298. package/fesm5/taiga-ui-core-providers.js +2 -1
  299. package/fesm5/taiga-ui-core-providers.js.map +1 -1
  300. package/fesm5/taiga-ui-core-tokens.js +3 -1
  301. package/fesm5/taiga-ui-core-tokens.js.map +1 -1
  302. package/fesm5/taiga-ui-core-utils-dom.js +1 -1
  303. package/fesm5/taiga-ui-core-utils-dom.js.map +1 -1
  304. package/fesm5/taiga-ui-core-utils-format.js +37 -7
  305. package/fesm5/taiga-ui-core-utils-format.js.map +1 -1
  306. package/fesm5/taiga-ui-core-utils-mask.js +1 -1
  307. package/fesm5/taiga-ui-core-utils-mask.js.map +1 -1
  308. package/interfaces/index.d.ts +1 -0
  309. package/interfaces/taiga-ui-core-interfaces.metadata.json +1 -1
  310. package/interfaces/textfield-host.d.ts +9 -0
  311. package/package.json +7 -6
  312. package/providers/taiga-ui-core-providers.metadata.json +1 -1
  313. package/styles/markup/tui-island.less +1 -0
  314. package/styles/mixins/textfield.less +47 -27
  315. package/styles/mixins/textfield.scss +0 -9
  316. package/styles/taiga-ui-theme.less +1 -0
  317. package/styles/theme/dialog.less +13 -0
  318. package/styles/theme/variables.less +2 -0
  319. package/styles/variables/media.less +2 -2
  320. package/tokens/index.d.ts +1 -0
  321. package/tokens/taiga-ui-core-tokens.metadata.json +1 -1
  322. package/tokens/textfield-host.d.ts +3 -0
  323. package/utils/format/get-fractional-part-padded.d.ts +8 -0
  324. package/utils/format/index.d.ts +2 -0
  325. package/utils/format/number-to-string-without-exp.d.ts +7 -0
  326. package/utils/format/taiga-ui-core-utils-format.metadata.json +1 -1
  327. package/bundles/taiga-ui-core-directives-border.umd.js +0 -291
  328. package/bundles/taiga-ui-core-directives-border.umd.js.map +0 -1
  329. package/bundles/taiga-ui-core-directives-border.umd.min.js +0 -16
  330. package/bundles/taiga-ui-core-directives-border.umd.min.js.map +0 -1
  331. package/directives/border/border.directive.d.ts +0 -9
  332. package/directives/border/border.module.d.ts +0 -2
  333. package/directives/border/index.d.ts +0 -2
  334. package/directives/border/package.json +0 -13
  335. package/directives/border/taiga-ui-core-directives-border.d.ts +0 -4
  336. package/directives/border/taiga-ui-core-directives-border.metadata.json +0 -1
  337. package/esm2015/directives/border/border.directive.js +0 -42
  338. package/esm2015/directives/border/border.module.js +0 -13
  339. package/esm2015/directives/border/index.js +0 -3
  340. package/esm2015/directives/border/taiga-ui-core-directives-border.js +0 -5
  341. package/esm5/directives/border/border.directive.js +0 -51
  342. package/esm5/directives/border/border.module.js +0 -16
  343. package/esm5/directives/border/index.js +0 -3
  344. package/esm5/directives/border/taiga-ui-core-directives-border.js +0 -5
  345. package/fesm2015/taiga-ui-core-directives-border.js +0 -57
  346. package/fesm2015/taiga-ui-core-directives-border.js.map +0 -1
  347. package/fesm5/taiga-ui-core-directives-border.js +0 -69
  348. package/fesm5/taiga-ui-core-directives-border.js.map +0 -1
@@ -1,24 +1,24 @@
1
1
  import { __decorate, __param } from 'tslib';
2
- import { forwardRef, EventEmitter, Inject, ViewChild, Input, HostBinding, Output, ContentChildren, Component, ChangeDetectionStrategy, ElementRef, NgModule } from '@angular/core';
3
- import { TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiInteractive, isNativeFocused, setNativeFocused, tuiDefaultProp, tuiPure, TuiFocusableModule, TuiFocusedModule, TuiHoveredModule, TuiInputModeModule, TuiAutofilledModule, TuiPreventDefaultModule } from '@taiga-ui/cdk';
2
+ import { forwardRef, InjectionToken, EventEmitter, Inject, ElementRef, ViewChild, Input, HostBinding, Output, ContentChildren, HostListener, Component, ChangeDetectionStrategy, Directive, NgModule } from '@angular/core';
3
+ import { TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiInteractive, isNativeFocusedIn, setNativeFocused, tuiDefaultProp, tuiPure, TuiIdService, TuiFocusableModule, TuiHoveredModule, TuiInputModeModule, TuiAutofilledModule, TuiPreventDefaultModule } from '@taiga-ui/cdk';
4
4
  import { HINT_CONTROLLER_PROVIDER, TuiHintControllerDirective, TUI_HINT_WATCHED_CONTROLLER } from '@taiga-ui/core/directives/hint-controller';
5
5
  import { TEXTFIELD_CONTROLLER_PROVIDER, TuiTextfieldController, TUI_TEXTFIELD_WATCHED_CONTROLLER } from '@taiga-ui/core/directives/textfield-controller';
6
- import { TUI_MODE, TUI_TEXTFIELD_APPEARANCE } from '@taiga-ui/core/tokens';
6
+ import { TUI_MODE, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_HOST } from '@taiga-ui/core/tokens';
7
7
  import { getBorder } from '@taiga-ui/core/utils/miscellaneous';
8
8
  import { PolymorpheusOutletComponent, PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
9
9
  import { fromEvent, Observable, defer, EMPTY } from 'rxjs';
10
10
  import { map, startWith, distinctUntilChanged } from 'rxjs/operators';
11
11
  import { MODE_PROVIDER } from '@taiga-ui/core/providers';
12
+ import { TuiAbstractTextfieldHost } from '@taiga-ui/core/abstract';
12
13
  import { CommonModule } from '@angular/common';
13
14
  import { FormsModule } from '@angular/forms';
14
15
  import { MutationObserverDirective, MutationObserverModule } from '@ng-web-apis/mutation-observer';
15
16
  import { TuiSvgModule } from '@taiga-ui/core/components/svg';
16
17
  import { TuiTooltipModule } from '@taiga-ui/core/components/tooltip';
17
18
  import { TuiWrapperModule } from '@taiga-ui/core/components/wrapper';
18
- import { TuiBorderModule } from '@taiga-ui/core/directives/border';
19
19
  import { TuiDescribedByModule } from '@taiga-ui/core/directives/described-by';
20
20
  import { TuiMaskAccessorModule } from '@taiga-ui/core/directives/mask-accessor';
21
- import { TuiTextfieldController as TuiTextfieldController$1, TUI_TEXTFIELD_WATCHED_CONTROLLER as TUI_TEXTFIELD_WATCHED_CONTROLLER$1 } from '@taiga-ui/core/directives';
21
+ import { TuiTextfieldController as TuiTextfieldController$1, TUI_TEXTFIELD_WATCHED_CONTROLLER as TUI_TEXTFIELD_WATCHED_CONTROLLER$1, TuiDescribedByDirective, TUI_DESCRIBED_BY_PROVIDERS, TEXTFIELD_CONTROLLER_PROVIDER as TEXTFIELD_CONTROLLER_PROVIDER$1 } from '@taiga-ui/core/directives';
22
22
 
23
23
  const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [
24
24
  {
@@ -30,21 +30,34 @@ const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [
30
30
  MODE_PROVIDER,
31
31
  ];
32
32
 
33
+ // TODO: remove in ivy compilation
34
+ const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = 'tuiIconCloseLarge';
35
+ /** Default values for primitive textfield options */
36
+ const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS = {
37
+ iconAlign: 'right',
38
+ iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,
39
+ };
40
+ const TUI_PRIMITIVE_TEXTFIELD_OPTIONS = new InjectionToken('Default parameters for primitive textfield component', {
41
+ factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,
42
+ });
43
+
33
44
  const ICON_PADDING = 1.75;
34
45
  const ICON_PADDING_S = 1.5;
35
46
  let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extends AbstractTuiInteractive {
36
- constructor(mode$, appearance, controller, hintController) {
47
+ constructor(mode$, appearance, controller, hintController, options, elementRef) {
37
48
  super();
38
49
  this.mode$ = mode$;
39
50
  this.appearance = appearance;
40
51
  this.controller = controller;
41
52
  this.hintController = hintController;
42
- this.autofilled = false;
53
+ this.options = options;
54
+ this.elementRef = elementRef;
43
55
  this.editable = true;
44
56
  this.filler = '';
45
- this.iconAlign = 'right';
57
+ this.iconAlign = this.options.iconAlign;
46
58
  // TODO: Remove null in 3.0
47
59
  this.iconContent = null;
60
+ this.iconCleaner = this.options.iconCleaner;
48
61
  this.readOnly = false;
49
62
  this.invalid = false;
50
63
  this.disabled = false;
@@ -52,22 +65,27 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
52
65
  this.postfix = '';
53
66
  this.value = '';
54
67
  this.valueChange = new EventEmitter();
68
+ /**
69
+ * @deprecated TODO: remove in 3.0
70
+ */
55
71
  this.autofilledChange = new EventEmitter();
72
+ this.autofilled = false;
56
73
  }
57
74
  get nativeFocusableElement() {
58
- return this.computedDisabled || !this.focusableElement
59
- ? null
60
- : this.focusableElement.nativeElement;
75
+ if (this.computedDisabled || !this.focusableElement) {
76
+ return null;
77
+ }
78
+ // TODO: Refactor this after we drop built-in input element
79
+ return (this.focusableElement.nativeElement
80
+ .previousElementSibling ||
81
+ this.focusableElement.nativeElement);
61
82
  }
62
83
  get focused() {
63
- return isNativeFocused(this.nativeFocusableElement);
84
+ return isNativeFocusedIn(this.elementRef.nativeElement);
64
85
  }
65
86
  get size() {
66
87
  return this.controller.size;
67
88
  }
68
- get labelOutside() {
69
- return this.controller.labelOutside;
70
- }
71
89
  get computedInvalid() {
72
90
  return !this.readOnly && !this.disabled && this.invalid;
73
91
  }
@@ -89,7 +107,10 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
89
107
  return !!this.controller.customContent;
90
108
  }
91
109
  get hasPlaceholder() {
92
- const hasDecor = this.controller.exampleText || this.prefix || this.postfix;
110
+ var _a;
111
+ const hasDecor = this.controller.exampleText ||
112
+ this.prefix ||
113
+ this.postfix || ((_a = this.nativeFocusableElement) === null || _a === void 0 ? void 0 : _a.placeholder);
93
114
  const showDecor = hasDecor && !this.readOnly && this.computedFocused;
94
115
  const placeholderVisible = !this.hasValue && !showDecor;
95
116
  return this.placeholderRaisable || placeholderVisible;
@@ -98,10 +119,10 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
98
119
  return (this.placeholderRaisable &&
99
120
  ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled));
100
121
  }
101
- get borderLeft() {
122
+ get borderStart() {
102
123
  return this.iconAlignLeft ? this.iconPaddingLeft : 0;
103
124
  }
104
- get borderRight() {
125
+ get borderEnd() {
105
126
  return getBorder(this.iconAlignRight, this.hasCleaner, this.hasTooltip, this.hasCustomContent);
106
127
  }
107
128
  get iconAlignLeft() {
@@ -116,6 +137,13 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
116
137
  ? 'ccexpiryyear'
117
138
  : null;
118
139
  }
140
+ get computedId() {
141
+ var _a;
142
+ return ((_a = this.nativeFocusableElement) === null || _a === void 0 ? void 0 : _a.id) || '';
143
+ }
144
+ onFocused(focused) {
145
+ this.updateFocused(focused);
146
+ }
119
147
  getIndent$(element) {
120
148
  return fromEvent(element, 'scroll').pipe(map(() => -1 * element.scrollLeft));
121
149
  }
@@ -126,12 +154,12 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
126
154
  this.updateValue('');
127
155
  }
128
156
  onMouseDown(event) {
129
- if (!this.focusableElement ||
130
- event.target === this.focusableElement.nativeElement) {
157
+ const { nativeFocusableElement } = this;
158
+ if (!nativeFocusableElement || event.target === nativeFocusableElement) {
131
159
  return;
132
160
  }
133
161
  event.preventDefault();
134
- setNativeFocused(this.focusableElement.nativeElement);
162
+ setNativeFocused(nativeFocusableElement);
135
163
  }
136
164
  onModelChange(value) {
137
165
  this.updateValue(value);
@@ -139,9 +167,6 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
139
167
  onHovered(hovered) {
140
168
  this.updateHovered(hovered);
141
169
  }
142
- onFocused(focused) {
143
- this.updateFocused(focused);
144
- }
145
170
  onAutofilled(autofilled) {
146
171
  this.updateAutofilled(autofilled);
147
172
  }
@@ -149,7 +174,7 @@ let TuiPrimitiveTextfieldComponent = class TuiPrimitiveTextfieldComponent extend
149
174
  return this.size === 's' ? ICON_PADDING_S : ICON_PADDING;
150
175
  }
151
176
  get placeholderRaisable() {
152
- return this.size !== 's' && !this.labelOutside;
177
+ return this.size !== 's' && !this.controller.labelOutside;
153
178
  }
154
179
  get hasIcon() {
155
180
  return !!this.iconContent;
@@ -170,7 +195,9 @@ TuiPrimitiveTextfieldComponent.ctorParameters = () => [
170
195
  { type: Observable, decorators: [{ type: Inject, args: [TUI_MODE,] }] },
171
196
  { type: String, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_APPEARANCE,] }] },
172
197
  { type: TuiTextfieldController, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_WATCHED_CONTROLLER,] }] },
173
- { type: TuiHintControllerDirective, decorators: [{ type: Inject, args: [TUI_HINT_WATCHED_CONTROLLER,] }] }
198
+ { type: TuiHintControllerDirective, decorators: [{ type: Inject, args: [TUI_HINT_WATCHED_CONTROLLER,] }] },
199
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_PRIMITIVE_TEXTFIELD_OPTIONS,] }] },
200
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
174
201
  ];
175
202
  __decorate([
176
203
  ViewChild('focusableElement')
@@ -191,6 +218,10 @@ __decorate([
191
218
  Input(),
192
219
  tuiDefaultProp()
193
220
  ], TuiPrimitiveTextfieldComponent.prototype, "iconContent", void 0);
221
+ __decorate([
222
+ Input(),
223
+ tuiDefaultProp()
224
+ ], TuiPrimitiveTextfieldComponent.prototype, "iconCleaner", void 0);
194
225
  __decorate([
195
226
  Input(),
196
227
  HostBinding('class._readonly'),
@@ -226,34 +257,144 @@ __decorate([
226
257
  ContentChildren(PolymorpheusOutletComponent)
227
258
  ], TuiPrimitiveTextfieldComponent.prototype, "content", void 0);
228
259
  __decorate([
229
- HostBinding('attr.data-tui-host-size')
260
+ HostBinding('attr.data-size')
230
261
  ], TuiPrimitiveTextfieldComponent.prototype, "size", null);
231
- __decorate([
232
- HostBinding('class._label-outside')
233
- ], TuiPrimitiveTextfieldComponent.prototype, "labelOutside", null);
234
262
  __decorate([
235
263
  HostBinding('class._invalid')
236
264
  ], TuiPrimitiveTextfieldComponent.prototype, "computedInvalid", null);
265
+ __decorate([
266
+ HostBinding('class._hidden')
267
+ ], TuiPrimitiveTextfieldComponent.prototype, "inputHidden", null);
268
+ __decorate([
269
+ HostBinding('style.--border-start.rem')
270
+ ], TuiPrimitiveTextfieldComponent.prototype, "borderStart", null);
271
+ __decorate([
272
+ HostBinding('style.--border-end.rem')
273
+ ], TuiPrimitiveTextfieldComponent.prototype, "borderEnd", null);
274
+ __decorate([
275
+ HostListener('focusin', ['true']),
276
+ HostListener('focusout', ['false'])
277
+ ], TuiPrimitiveTextfieldComponent.prototype, "onFocused", null);
237
278
  __decorate([
238
279
  tuiPure
239
280
  ], TuiPrimitiveTextfieldComponent.prototype, "getIndent$", null);
240
281
  TuiPrimitiveTextfieldComponent = __decorate([
241
282
  Component({
242
283
  selector: 'tui-primitive-textfield',
243
- template: "<ng-container *ngIf=\"content?.changes | async\"></ng-container>\n<tui-wrapper\n automation-id=\"tui-primitive-textfield__wrapper\"\n tuiPreventDefault=\"click\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <input\n #focusableElement\n tuiMaskAccessor\n automation-id=\"tui-primitive-textfield__native-input\"\n class=\"input\"\n [class.input_hidden]=\"inputHidden\"\n [style.textIndent.px]=\"decor.pre$ | async\"\n [attr.disabled]=\"computedDisabled || null\"\n [attr.maxLength]=\"controller.maxLength\"\n [attr.name]=\"name\"\n [attr.aria-placeholder]=\"controller.exampleText\"\n [attr.aria-invalid]=\"computedInvalid\"\n [autocomplete]=\"controller.autocomplete\"\n [type]=\"controller.type\"\n [id]=\"id\"\n [readOnly]=\"readOnly || !editable\"\n [tuiBorderStart]=\"borderLeft\"\n [tuiBorderEnd]=\"borderRight\"\n [tuiInputMode]=\"controller.inputMode\"\n [tuiFocusable]=\"computedFocusable\"\n [tuiDescribedBy]=\"id\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiAutofilledChange)=\"onAutofilled($event)\"\n />\n <div\n *ngIf=\"inputHidden\"\n automation-id=\"tui-primitive-textfield__value\"\n class=\"input input_template\"\n [tuiBorderStart]=\"borderLeft\"\n [tuiBorderEnd]=\"borderRight\"\n >\n <ng-content select=\"[polymorpheus-outlet]\"></ng-content>\n </div>\n <div class=\"content\">\n <div\n *ngIf=\"iconAlignLeft\"\n polymorpheus-outlet\n class=\"icon icon_left\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <div class=\"wrapper\">\n <label\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-primitive-textfield__placeholder\"\n class=\"placeholder\"\n [class.placeholder_raised]=\"placeholderRaised\"\n [for]=\"id\"\n >\n <ng-content></ng-content>\n </label>\n <tui-value-decoration\n #decor\n automation-id=\"tui-primitive-textfield__value-decoration\"\n aria-hidden=\"true\"\n [style.textIndent.px]=\"getIndent$(focusableElement) | async\"\n ></tui-value-decoration>\n </div>\n <div\n *ngIf=\"hasCustomContent\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__custom-content\"\n class=\"custom-content\"\n [content]=\"controller.customContent\"\n >\n <ng-template let-iconSrc>\n <tui-svg class=\"custom-icon\" [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <tui-svg\n *ngIf=\"hasCleaner\"\n automation-id=\"tui-primitive-textfield__cleaner\"\n src=\"tuiIconCloseLarge\"\n class=\"cleaner\"\n (click.stop)=\"clear()\"\n ></tui-svg>\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-primitive-textfield__tooltip\"\n [describeId]=\"id\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n ></tui-tooltip>\n <div\n *ngIf=\"iconAlignRight\"\n polymorpheus-outlet\n class=\"icon\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n </div>\n</tui-wrapper>\n",
284
+ template: "<ng-container *ngIf=\"content?.changes | async\"></ng-container>\n<tui-wrapper\n automation-id=\"tui-primitive-textfield__wrapper\"\n tuiPreventDefault=\"click\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [pressed]=\"computedPressed\"\n [invalid]=\"computedInvalid\"\n [style.--text-indent.px]=\"decor.pre$ | async\"\n (mousedown)=\"onMouseDown($event)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (tuiAutofilledChange)=\"onAutofilled($event)\"\n>\n <ng-content select=\"input\"></ng-content>\n <input\n #focusableElement\n tuiMaskAccessor\n automation-id=\"tui-primitive-textfield__native-input\"\n class=\"input\"\n [attr.disabled]=\"computedDisabled || null\"\n [attr.maxLength]=\"controller.maxLength\"\n [attr.name]=\"name\"\n [attr.aria-placeholder]=\"controller.exampleText\"\n [attr.aria-invalid]=\"computedInvalid\"\n [autocomplete]=\"controller.autocomplete\"\n [type]=\"controller.type\"\n [id]=\"id\"\n [readOnly]=\"readOnly || !editable\"\n [tuiInputMode]=\"controller.inputMode\"\n [tuiFocusable]=\"computedFocusable\"\n [tuiDescribedBy]=\"id\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n <div\n *ngIf=\"inputHidden\"\n automation-id=\"tui-primitive-textfield__value\"\n class=\"input input_template\"\n >\n <ng-content select=\"[polymorpheus-outlet]\"></ng-content>\n </div>\n <div class=\"content\">\n <div\n *ngIf=\"iconAlignLeft\"\n polymorpheus-outlet\n class=\"icon icon_left\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <div class=\"wrapper\">\n <label\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-primitive-textfield__placeholder\"\n class=\"placeholder\"\n [class.placeholder_raised]=\"placeholderRaised\"\n [for]=\"computedId\"\n >\n <ng-content></ng-content>\n </label>\n <tui-value-decoration\n #decor\n automation-id=\"tui-primitive-textfield__value-decoration\"\n aria-hidden=\"true\"\n class=\"t-value-decoration\"\n [style.textIndent.px]=\"getIndent$(focusableElement) | async\"\n ></tui-value-decoration>\n </div>\n <div\n *ngIf=\"hasCustomContent\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__custom-content\"\n class=\"custom-content\"\n [content]=\"controller.customContent\"\n >\n <ng-template let-iconSrc>\n <tui-svg class=\"custom-icon\" [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n <span\n *ngIf=\"hasCleaner\"\n polymorpheus-outlet\n automation-id=\"tui-primitive-textfield__cleaner\"\n class=\"cleaner\"\n [content]=\"iconCleaner\"\n (click.stop)=\"clear()\"\n >\n <ng-template let-icon>\n <tui-svg [src]=\"icon\"></tui-svg>\n </ng-template>\n </span>\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-primitive-textfield__tooltip\"\n [describeId]=\"computedId\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n ></tui-tooltip>\n <div\n *ngIf=\"iconAlignRight\"\n polymorpheus-outlet\n class=\"icon\"\n [content]=\"iconContent\"\n [context]=\"{$implicit: size}\"\n >\n <ng-template let-iconSrc>\n <tui-svg [src]=\"iconSrc\"></tui-svg>\n </ng-template>\n </div>\n </div>\n</tui-wrapper>\n",
244
285
  changeDetection: ChangeDetectionStrategy.OnPush,
245
286
  providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,
246
287
  host: {
247
288
  '($.data-mode.attr)': 'mode$',
289
+ '[class._autofilled]': 'autofilled',
290
+ '[class._label-outside]': 'controller.labelOutside',
248
291
  },
249
- styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-tui-host-size='s']{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-tui-host-size='m']{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-tui-host-size='l']{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font-size:.9375rem}.input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0 solid transparent;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}.input:-webkit-autofill,.input:-webkit-autofill:focus,.input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host[data-mode=onDark] .input:-webkit-autofill,:host[data-mode=onDark] .input:-webkit-autofill:focus,:host[data-mode=onDark] .input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}:host[data-tui-host-size='s'] .input{padding:0 var(--tui-padding-s)}:host[data-tui-host-size='l'] .input{padding:0 var(--tui-padding-l)}:host._disabled .input{pointer-events:none}:host._right-aligned .input{text-align:right}:host[data-tui-host-size='l']:not(._label-outside) .input{padding-top:1.25rem}:host[data-tui-host-size='l']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-tui-host-size='m']:not(._label-outside) .input{padding-top:1.125rem}:host[data-tui-host-size='m']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}.filler{vertical-align:middle}.content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-tui-host-size='s'] .content{padding:0 var(--tui-padding-s)}:host[data-tui-host-size='l'] .content{padding:0 var(--tui-padding-l)}.content:after{content:'';margin-right:-.25rem}:host[data-tui-host-size='m'] .content:after{display:none}.wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none}.placeholder_raised{transform:translateY(-.625rem)}:host[data-tui-host-size='m'] .placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-tui-host-size='l']._focused._label-outside .placeholder,:host[data-tui-host-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-tui-host-size='l'] .placeholder{font-size:.9375rem}:host[data-tui-host-size='l'] .placeholder_raised{font-size:.8156rem}:host[data-tui-host-size='l']._focused:not(._label-outside) .placeholder,:host[data-tui-host-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-tui-host-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-tui-host-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-tui-host-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-tui-host-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}.cleaner{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.cleaner:hover{color:var(--tui-text-02)}:host._disabled .cleaner,:host._readonly .cleaner{pointer-events:none}:host[data-mode=onDark] .cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .cleaner:hover{color:var(--tui-text-01-night)}.icon{display:flex;align-items:center;justify-content:center;color:var(--tui-text-03)}.icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-tui-host-size='s'] .icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.value_visible{display:block}.custom-content{position:relative;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-right:.25rem;pointer-events:none}.custom-icon{width:100%;height:100%}.icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);box-sizing:border-box;cursor:pointer;transition-property:color,transform;position:relative;pointer-events:none}.icon:hover{color:var(--tui-text-02)}:host._disabled .icon,:host._readonly .icon{pointer-events:none}:host[data-mode=onDark] .icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .icon:hover{color:var(--tui-text-01-night)}:host._hovered:not(._readonly) .icon{color:var(--tui-text-02)}:host[data-mode=onDark]._hovered:not(._readonly) .icon{color:var(--tui-text-01-night)}:host[data-mode=onLight]._hovered:not(._readonly) .icon{color:var(--tui-text-01)}.input_hidden{opacity:0;text-indent:-10em;-webkit-user-select:none}:host[data-tui-host-size] .input_template{display:flex;width:100%;max-width:100%;align-items:center;pointer-events:none}.input::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host[data-tui-host-size='l']:not(._label-outside) .input::-webkit-caps-lock-indicator{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button,.input::-webkit-credentials-auto-fill-button,.input::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host[data-tui-host-size='l']:not(._label-outside) .input::-webkit-contacts-auto-fill-button,:host[data-tui-host-size='l']:not(._label-outside) .input::-webkit-credentials-auto-fill-button,:host[data-tui-host-size='l']:not(._label-outside) .input::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button:hover,.input::-webkit-credentials-auto-fill-button:hover,.input::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}.text-template{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]
292
+ styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-size='s']{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-size='m']{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-size='l']{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font-size:.9375rem}.input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0 solid transparent;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border-width:0 var(--border-end) 0 var(--border-start);border-inline-start-width:var(--border-start);border-inline-end-width:var(--border-end);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}.input:-webkit-autofill,.input:-webkit-autofill:focus,.input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,.input :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] .input:-webkit-autofill,:host[data-mode=onDark] .input:-webkit-autofill:focus,:host[data-mode=onDark] .input:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}.input :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),:host[data-size='s'] .input{padding:0 var(--tui-padding-s)}.input :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),:host[data-size='l'] .input{padding:0 var(--tui-padding-l)}.input :host-context(tui-primitive-textfield._disabled),:host._disabled .input{pointer-events:none}.input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) .input{padding-top:1.25rem}.input :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}.input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) .input{padding-top:1.125rem}.input :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}.input :host-context(tui-primitive-textfield._hidden),:host._hidden input.input{opacity:0;text-indent:-10em;-webkit-user-select:none}.filler{vertical-align:middle}.content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size='s'] .content{padding:0 var(--tui-padding-s)}:host[data-size='l'] .content{padding:0 var(--tui-padding-l)}.content:after{content:'';margin-right:-.25rem}:host[data-size='m'] .content:after{display:none}.wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none}.placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-size='l']._focused._label-outside .placeholder,:host[data-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-size='l'] .placeholder{font-size:.9375rem}:host[data-size='l'] .placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .placeholder,:host[data-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens:none){.placeholder{transition-property:transform,color,letter-spacing}}.cleaner{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.cleaner:hover{color:var(--tui-text-02)}:host._disabled .cleaner,:host._readonly .cleaner{pointer-events:none}:host[data-mode=onDark] .cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .cleaner:hover{color:var(--tui-text-01-night)}.icon{display:flex;align-items:center;justify-content:center;color:var(--tui-text-03)}.icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-size='s'] .icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}:host._autofilled .t-value-decoration{display:none}.custom-content{position:relative;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-right:.25rem;pointer-events:none}.custom-icon{width:100%;height:100%}.icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);box-sizing:border-box;cursor:pointer;transition-property:color,transform;position:relative;pointer-events:none}.icon:hover{color:var(--tui-text-02)}:host._disabled .icon,:host._readonly .icon{pointer-events:none}:host[data-mode=onDark] .icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .icon:hover{color:var(--tui-text-01-night)}:host._hovered:not(._readonly) .icon{color:var(--tui-text-02)}:host[data-mode=onDark]._hovered:not(._readonly) .icon{color:var(--tui-text-01-night)}:host[data-mode=onLight]._hovered:not(._readonly) .icon{color:var(--tui-text-01)}.input:not(:first-child){display:none}:host[data-size] .input_template{display:flex;width:100%;max-width:100%;align-items:center;pointer-events:none}.input::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host[data-size='l']:not(._label-outside) .input::-webkit-caps-lock-indicator{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button,.input::-webkit-credentials-auto-fill-button,.input::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host[data-size='l']:not(._label-outside) .input::-webkit-contacts-auto-fill-button,:host[data-size='l']:not(._label-outside) .input::-webkit-credentials-auto-fill-button,:host[data-size='l']:not(._label-outside) .input::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}.input::-webkit-contacts-auto-fill-button:hover,.input::-webkit-credentials-auto-fill-button:hover,.input::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}.input:-webkit-autofill,.input:-webkit-autofill::first-line{font-size:inherit;line-height:inherit}.text-template{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]
250
293
  }),
251
294
  __param(0, Inject(TUI_MODE)),
252
295
  __param(1, Inject(TUI_TEXTFIELD_APPEARANCE)),
253
296
  __param(2, Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)),
254
- __param(3, Inject(TUI_HINT_WATCHED_CONTROLLER))
297
+ __param(3, Inject(TUI_HINT_WATCHED_CONTROLLER)),
298
+ __param(4, Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)),
299
+ __param(5, Inject(ElementRef))
255
300
  ], TuiPrimitiveTextfieldComponent);
256
301
 
302
+ var TuiPrimitiveTextfieldDirective_1;
303
+ let TuiPrimitiveTextfieldDirective = TuiPrimitiveTextfieldDirective_1 = class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost {
304
+ constructor(textfield) {
305
+ /**
306
+ * TuiPrimitiveTextfieldComponent satisfies all required parts of
307
+ * AbstractTuiControl interface. A new interface is not introduced
308
+ * so AbstractTuiControl is automatically injected for all other controls.
309
+ */
310
+ super(textfield);
311
+ this.textfield = textfield;
312
+ }
313
+ get readOnly() {
314
+ return this.textfield.readOnly || !this.textfield.editable;
315
+ }
316
+ onValueChange(value) {
317
+ this.textfield.onModelChange(value);
318
+ }
319
+ };
320
+ TuiPrimitiveTextfieldDirective.ctorParameters = () => [
321
+ { type: TuiPrimitiveTextfieldComponent, decorators: [{ type: Inject, args: [TuiPrimitiveTextfieldComponent,] }] }
322
+ ];
323
+ TuiPrimitiveTextfieldDirective = TuiPrimitiveTextfieldDirective_1 = __decorate([
324
+ Directive({
325
+ selector: 'tui-primitive-textfield',
326
+ providers: [
327
+ {
328
+ provide: TUI_TEXTFIELD_HOST,
329
+ useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective_1),
330
+ },
331
+ ],
332
+ }),
333
+ __param(0, Inject(TuiPrimitiveTextfieldComponent))
334
+ ], TuiPrimitiveTextfieldDirective);
335
+
336
+ // @dynamic
337
+ let TuiTextfieldComponent = class TuiTextfieldComponent {
338
+ constructor(host, controller, elementRef, describedBy, idService) {
339
+ this.host = host;
340
+ this.controller = controller;
341
+ this.elementRef = elementRef;
342
+ this.describedBy = describedBy;
343
+ this.idService = idService;
344
+ this.host.process(this.elementRef.nativeElement);
345
+ }
346
+ get computedDescribedBy() {
347
+ return this.describedBy.computedDescribedBy;
348
+ }
349
+ get id() {
350
+ return this.elementRef.nativeElement.id || this.idService.generate();
351
+ }
352
+ ngDoCheck() {
353
+ this.describedBy.tuiDescribedBy = this.id;
354
+ }
355
+ };
356
+ TuiTextfieldComponent.ctorParameters = () => [
357
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_HOST,] }] },
358
+ { type: TuiTextfieldController$1, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_WATCHED_CONTROLLER$1,] }] },
359
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
360
+ { type: TuiDescribedByDirective, decorators: [{ type: Inject, args: [TuiDescribedByDirective,] }] },
361
+ { type: TuiIdService, decorators: [{ type: Inject, args: [TuiIdService,] }] }
362
+ ];
363
+ __decorate([
364
+ HostBinding('attr.aria-describedby')
365
+ ], TuiTextfieldComponent.prototype, "computedDescribedBy", null);
366
+ __decorate([
367
+ HostBinding('id')
368
+ ], TuiTextfieldComponent.prototype, "id", null);
369
+ TuiTextfieldComponent = __decorate([
370
+ Component({
371
+ selector: 'input[tuiTextfield]',
372
+ template: '',
373
+ providers: [
374
+ TuiDescribedByDirective,
375
+ TUI_DESCRIBED_BY_PROVIDERS,
376
+ TEXTFIELD_CONTROLLER_PROVIDER$1,
377
+ ],
378
+ host: {
379
+ type: 'text',
380
+ '[attr.aria-placeholder]': 'controller.exampleText',
381
+ '[attr.aria-invalid]': 'host.invalid',
382
+ '[attr.disabled]': 'host.disabled || null',
383
+ '[tabIndex]': 'host.focusable ? 0 : -1',
384
+ '[readOnly]': 'host.readOnly',
385
+ '[value]': 'host.value',
386
+ '(input)': 'host.onValueChange($event.target.value)',
387
+ },
388
+ changeDetection: ChangeDetectionStrategy.OnPush,
389
+ styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;border:0 solid transparent;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border-width:0 var(--border-end) 0 var(--border-start);border-inline-start-width:var(--border-start);border-inline-end-width:var(--border-end);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}:host:-webkit-autofill,:host:-webkit-autofill:focus,:host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:focus,:host :host-context(tui-primitive-textfield[data-mode=onDark]):-webkit-autofill:hover,:host[data-mode=onDark] :host:-webkit-autofill,:host[data-mode=onDark] :host:-webkit-autofill:focus,:host[data-mode=onDark] :host:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill-night) inset!important}:host :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),:host[data-size='s'] :host{padding:0 var(--tui-padding-s)}:host :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),:host[data-size='l'] :host{padding:0 var(--tui-padding-l)}:host :host-context(tui-primitive-textfield._disabled),:host._disabled :host{pointer-events:none}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='l']:not(._label-outside) :host{padding-top:1.25rem}:host :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='l']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield),:host[data-size='m']:not(._label-outside) :host{padding-top:1.125rem}:host :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.content .placeholder,:host[data-size='m']:not(._label-outside) :host:-webkit-autofill+.content .placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host :host-context(tui-primitive-textfield._hidden),:host._hidden input:host{opacity:0;text-indent:-10em;-webkit-user-select:none}:host::-webkit-caps-lock-indicator{margin-right:.375rem;align-self:center}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-caps-lock-indicator{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button,:host::-webkit-credentials-auto-fill-button,:host::-webkit-credit-card-auto-fill-button{background-color:var(--tui-text-03)}:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-contacts-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credentials-auto-fill-button,:host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)) :host::-webkit-credit-card-auto-fill-button{margin-top:-1.25rem}:host::-webkit-contacts-auto-fill-button:hover,:host::-webkit-credentials-auto-fill-button:hover,:host::-webkit-credit-card-auto-fill-button:hover{background-color:var(--tui-text-02)}:host::-ms-input-placeholder{color:var(--tui-text-03);opacity:0}:host::placeholder{color:var(--tui-text-03);opacity:0}:host :host-context(tui-primitive-textfield[data-mode=onDark])::-ms-input-placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield[data-mode=onDark])::placeholder{color:var(--tui-text-03-night)}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::-ms-input-placeholder{opacity:1}:host :host-context(tui-primitive-textfield._focused:not(._readonly))::placeholder{opacity:1}"]
390
+ }),
391
+ __param(0, Inject(TUI_TEXTFIELD_HOST)),
392
+ __param(1, Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER$1)),
393
+ __param(2, Inject(ElementRef)),
394
+ __param(3, Inject(TuiDescribedByDirective)),
395
+ __param(4, Inject(TuiIdService))
396
+ ], TuiTextfieldComponent);
397
+
257
398
  let TuiValueDecorationComponent = class TuiValueDecorationComponent {
258
399
  constructor(textfield, controller) {
259
400
  this.textfield = textfield;
@@ -267,9 +408,11 @@ let TuiValueDecorationComponent = class TuiValueDecorationComponent {
267
408
  return this.textfield.value;
268
409
  }
269
410
  get filler() {
270
- return this.focused
271
- ? this.exampleText || this.textfield.filler.slice(this.value.length)
272
- : '';
411
+ const { focused, placeholder, exampleText, value, textfield } = this;
412
+ if (focused && placeholder && exampleText) {
413
+ return '';
414
+ }
415
+ return focused ? exampleText || textfield.filler.slice(value.length) : '';
273
416
  }
274
417
  get prefix() {
275
418
  return this.decorationsVisible ? this.textfield.prefix : '';
@@ -277,8 +420,13 @@ let TuiValueDecorationComponent = class TuiValueDecorationComponent {
277
420
  get postfix() {
278
421
  return this.decorationsVisible ? this.computedPostfix : '';
279
422
  }
423
+ get placeholder() {
424
+ var _a;
425
+ return ((_a = this.textfield.nativeFocusableElement) === null || _a === void 0 ? void 0 : _a.placeholder) || '';
426
+ }
280
427
  get exampleText() {
281
- return !this.value && this.focused ? this.controller.exampleText : '';
428
+ const exampleText = this.controller.exampleText || this.placeholder;
429
+ return !this.value && this.focused ? exampleText : '';
282
430
  }
283
431
  get decorationsVisible() {
284
432
  return !!this.value || this.focused;
@@ -326,7 +474,6 @@ TuiPrimitiveTextfieldModule = __decorate([
326
474
  FormsModule,
327
475
  TuiMaskAccessorModule,
328
476
  TuiFocusableModule,
329
- TuiFocusedModule,
330
477
  TuiHoveredModule,
331
478
  TuiInputModeModule,
332
479
  PolymorpheusModule,
@@ -336,11 +483,19 @@ TuiPrimitiveTextfieldModule = __decorate([
336
483
  TuiAutofilledModule,
337
484
  TuiDescribedByModule,
338
485
  TuiPreventDefaultModule,
339
- TuiBorderModule,
340
486
  MutationObserverModule,
341
487
  ],
342
- declarations: [TuiPrimitiveTextfieldComponent, TuiValueDecorationComponent],
343
- exports: [TuiPrimitiveTextfieldComponent],
488
+ declarations: [
489
+ TuiPrimitiveTextfieldComponent,
490
+ TuiPrimitiveTextfieldDirective,
491
+ TuiTextfieldComponent,
492
+ TuiValueDecorationComponent,
493
+ ],
494
+ exports: [
495
+ TuiPrimitiveTextfieldComponent,
496
+ TuiPrimitiveTextfieldDirective,
497
+ TuiTextfieldComponent,
498
+ ],
344
499
  })
345
500
  ], TuiPrimitiveTextfieldModule);
346
501
 
@@ -348,5 +503,5 @@ TuiPrimitiveTextfieldModule = __decorate([
348
503
  * Generated bundle index. Do not edit.
349
504
  */
350
505
 
351
- export { TUI_PRIMITIVE_TEXTFIELD_PROVIDERS, TuiPrimitiveTextfieldComponent, TuiPrimitiveTextfieldModule, TuiValueDecorationComponent };
506
+ export { TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS, TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER, TUI_PRIMITIVE_TEXTFIELD_OPTIONS, TUI_PRIMITIVE_TEXTFIELD_PROVIDERS, TuiPrimitiveTextfieldComponent, TuiPrimitiveTextfieldDirective, TuiPrimitiveTextfieldModule, TuiTextfieldComponent, TuiValueDecorationComponent };
352
507
  //# sourceMappingURL=taiga-ui-core-components-primitive-textfield.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocused,\n setNativeFocused,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {\n TuiBrightness,\n TuiHorizontalDirection,\n TuiSizeL,\n TuiSizeS,\n} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: 'tui-primitive-textfield',\n templateUrl: './primitive-textfield.template.html',\n styleUrls: ['./primitive-textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild('focusableElement')\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n private autofilled = false;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = '';\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiHorizontalDirection = 'right';\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent | null = null;\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n @Input()\n @tuiDefaultProp()\n value = '';\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.computedDisabled || !this.focusableElement\n ? null\n : this.focusableElement.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n @HostBinding('attr.data-tui-host-size')\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding('class._label-outside')\n get labelOutside(): boolean {\n return this.controller.labelOutside;\n }\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get hasPlaceholder(): boolean {\n const hasDecor = this.controller.exampleText || this.prefix || this.postfix;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n const placeholderVisible = !this.hasValue && !showDecor;\n\n return this.placeholderRaisable || placeholderVisible;\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n get borderLeft(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n get borderRight(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === 'left';\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === 'right';\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? 'ccexpiryyear'\n : null;\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, 'scroll').pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear() {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = '';\n }\n\n this.updateValue('');\n }\n\n onMouseDown(event: MouseEvent) {\n if (\n !this.focusableElement ||\n event.target === this.focusableElement.nativeElement\n ) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.focusableElement.nativeElement);\n }\n\n onModelChange(value: string) {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n onAutofilled(autofilled: boolean) {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === 's' ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== 's' && !this.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean) {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string) {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {MutationObserverDirective} from '@ng-web-apis/mutation-observer';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {defer, EMPTY} from 'rxjs';\nimport {distinctUntilChanged, map, startWith} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: 'tui-value-decoration',\n templateUrl: 'value-decoration.template.html',\n styleUrls: ['value-decoration.style.less'],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent {\n @ViewChild('pre', {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n @ViewChild(MutationObserverDirective, {static: true})\n private readonly directive?: MutationObserverDirective;\n\n readonly pre$ = defer(() => this.directive?.waMutationObserver ?? EMPTY).pipe(\n map(() => this.pre?.nativeElement.offsetWidth ?? 0),\n startWith(0),\n distinctUntilChanged(),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding('class._table')\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n return this.focused\n ? this.exampleText || this.textfield.filler.slice(this.value.length)\n : '';\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : '';\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : '';\n }\n\n private get exampleText(): string {\n return !this.value && this.focused ? this.controller.exampleText : '';\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MutationObserverModule} from '@ng-web-apis/mutation-observer';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiHoveredModule,\n TuiInputModeModule,\n TuiPreventDefaultModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiWrapperModule} from '@taiga-ui/core/components/wrapper';\nimport {TuiBorderModule} from '@taiga-ui/core/directives/border';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiFocusedModule,\n TuiHoveredModule,\n TuiInputModeModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n TuiPreventDefaultModule,\n TuiBorderModule,\n MutationObserverModule,\n ],\n declarations: [TuiPrimitiveTextfieldComponent, TuiValueDecorationComponent],\n exports: [TuiPrimitiveTextfieldComponent],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield-options.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.directive.ts","ng://@taiga-ui/core/components/primitive-textfield/textfield/textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {InjectionToken} from '@angular/core';\nimport {TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiPrimitiveTextfieldOptions {\n readonly iconAlign: TuiHorizontalDirection;\n readonly iconCleaner: PolymorpheusContent;\n}\n\n// TODO: remove in ivy compilation\nexport const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = 'tuiIconCloseLarge';\n\n/** Default values for primitive textfield options */\nexport const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS: TuiPrimitiveTextfieldOptions = {\n iconAlign: 'right',\n iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,\n};\n\nexport const TUI_PRIMITIVE_TEXTFIELD_OPTIONS =\n new InjectionToken<TuiPrimitiveTextfieldOptions>(\n 'Default parameters for primitive textfield component',\n {\n factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,\n },\n );\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocusedIn,\n setNativeFocused,\n TuiContextWithImplicit,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\nimport {\n TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n TuiPrimitiveTextfieldOptions,\n} from './primitive-textfield-options';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: 'tui-primitive-textfield',\n templateUrl: './primitive-textfield.template.html',\n styleUrls: ['./primitive-textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[class._autofilled]': 'autofilled',\n '[class._label-outside]': 'controller.labelOutside',\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild('focusableElement')\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = '';\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiPrimitiveTextfieldOptions['iconAlign'] = this.options.iconAlign;\n\n // TODO: Remove null in 3.0\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent<TuiContextWithImplicit<TuiSizeS | TuiSizeL>> | null =\n null;\n\n @Input()\n @tuiDefaultProp()\n iconCleaner: TuiPrimitiveTextfieldOptions['iconCleaner'] = this.options.iconCleaner;\n\n @Input()\n @HostBinding('class._readonly')\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = '';\n\n @Input()\n @tuiDefaultProp()\n value = '';\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n /**\n * @deprecated TODO: remove in 3.0\n */\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n autofilled = false;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n @Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)\n readonly options: TuiPrimitiveTextfieldOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n if (this.computedDisabled || !this.focusableElement) {\n return null;\n }\n\n // TODO: Refactor this after we drop built-in input element\n return (\n (this.focusableElement.nativeElement\n .previousElementSibling as HTMLInputElement | null) ||\n this.focusableElement.nativeElement\n );\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding('class._invalid')\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n @HostBinding('class._hidden')\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get hasPlaceholder(): boolean {\n const hasDecor =\n this.controller.exampleText ||\n this.prefix ||\n this.postfix ||\n this.nativeFocusableElement?.placeholder;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n const placeholderVisible = !this.hasValue && !showDecor;\n\n return this.placeholderRaisable || placeholderVisible;\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n @HostBinding('style.--border-start.rem')\n get borderStart(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n @HostBinding('style.--border-end.rem')\n get borderEnd(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === 'left';\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === 'right';\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? 'ccexpiryyear'\n : null;\n }\n\n get computedId(): string {\n return this.nativeFocusableElement?.id || '';\n }\n\n @HostListener('focusin', ['true'])\n @HostListener('focusout', ['false'])\n onFocused(focused: boolean) {\n this.updateFocused(focused);\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, 'scroll').pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear() {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = '';\n }\n\n this.updateValue('');\n }\n\n onMouseDown(event: MouseEvent) {\n const {nativeFocusableElement} = this;\n\n if (!nativeFocusableElement || event.target === nativeFocusableElement) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(nativeFocusableElement);\n }\n\n onModelChange(value: string) {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean) {\n this.updateHovered(hovered);\n }\n\n onAutofilled(autofilled: boolean) {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === 's' ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== 's' && !this.controller.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean) {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string) {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {Directive, forwardRef, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiAbstractTextfieldHost} from '@taiga-ui/core/abstract';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\n@Directive({\n selector: 'tui-primitive-textfield',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective),\n },\n ],\n})\nexport class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost<any> {\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n ) {\n /**\n * TuiPrimitiveTextfieldComponent satisfies all required parts of\n * AbstractTuiControl interface. A new interface is not introduced\n * so AbstractTuiControl is automatically injected for all other controls.\n */\n super(textfield as any as AbstractTuiControl<unknown>);\n }\n\n get readOnly(): boolean {\n return this.textfield.readOnly || !this.textfield.editable;\n }\n\n onValueChange(value: string) {\n this.textfield.onModelChange(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_DESCRIBED_BY_PROVIDERS,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiDescribedByDirective,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\n// @dynamic\n@Component({\n selector: 'input[tuiTextfield]',\n template: '',\n providers: [\n TuiDescribedByDirective,\n TUI_DESCRIBED_BY_PROVIDERS,\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n type: 'text',\n '[attr.aria-placeholder]': 'controller.exampleText',\n '[attr.aria-invalid]': 'host.invalid',\n '[attr.disabled]': 'host.disabled || null',\n '[tabIndex]': 'host.focusable ? 0 : -1',\n '[readOnly]': 'host.readOnly',\n '[value]': 'host.value',\n '(input)': 'host.onValueChange($event.target.value)',\n },\n styleUrls: ['textfield.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTextfieldComponent implements DoCheck {\n constructor(\n @Inject(TUI_TEXTFIELD_HOST) readonly host: TuiTextfieldHost,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDescribedByDirective)\n private readonly describedBy: TuiDescribedByDirective,\n @Inject(TuiIdService)\n private readonly idService: TuiIdService,\n ) {\n this.host.process(this.elementRef.nativeElement);\n }\n\n @HostBinding('attr.aria-describedby')\n get computedDescribedBy(): string | null {\n return this.describedBy.computedDescribedBy;\n }\n\n @HostBinding('id')\n get id(): string {\n return this.elementRef.nativeElement.id || this.idService.generate();\n }\n\n ngDoCheck() {\n this.describedBy.tuiDescribedBy = this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {MutationObserverDirective} from '@ng-web-apis/mutation-observer';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {defer, EMPTY} from 'rxjs';\nimport {distinctUntilChanged, map, startWith} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: 'tui-value-decoration',\n templateUrl: 'value-decoration.template.html',\n styleUrls: ['value-decoration.style.less'],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent {\n @ViewChild('pre', {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n @ViewChild(MutationObserverDirective, {static: true})\n private readonly directive?: MutationObserverDirective;\n\n readonly pre$ = defer(() => this.directive?.waMutationObserver ?? EMPTY).pipe(\n map(() => this.pre?.nativeElement.offsetWidth ?? 0),\n startWith(0),\n distinctUntilChanged(),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding('class._table')\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n const {focused, placeholder, exampleText, value, textfield} = this;\n\n if (focused && placeholder && exampleText) {\n return '';\n }\n\n return focused ? exampleText || textfield.filler.slice(value.length) : '';\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : '';\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : '';\n }\n\n private get placeholder(): string {\n return this.textfield.nativeFocusableElement?.placeholder || '';\n }\n\n private get exampleText(): string {\n const exampleText = this.controller.exampleText || this.placeholder;\n\n return !this.value && this.focused ? exampleText : '';\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MutationObserverModule} from '@ng-web-apis/mutation-observer';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n TuiPreventDefaultModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiWrapperModule} from '@taiga-ui/core/components/wrapper';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiPrimitiveTextfieldDirective} from './primitive-textfield.directive';\nimport {TuiTextfieldComponent} from './textfield/textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n PolymorpheusModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n TuiPreventDefaultModule,\n MutationObserverModule,\n ],\n declarations: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n TuiValueDecorationComponent,\n ],\n exports: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER","TEXTFIELD_CONTROLLER_PROVIDER"],"mappings":"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"}
@@ -49,7 +49,7 @@ TuiScrollControlsComponent = __decorate([
49
49
  host: {
50
50
  '($.data-mode.attr)': 'mode$',
51
51
  },
52
- styles: [":host{position:sticky;top:0;left:0;z-index:1;min-width:calc(100% - 1px);min-height:calc(100% - 1px);float:left;margin-right:calc(-100% + 1px);-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(-100% + 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none}.bar{position:absolute;right:0;bottom:0;pointer-events:auto}.bar_vertical{top:0;width:.875rem}.bar_horizontal{left:0;height:.875rem}.bar_has-horizontal{bottom:.5rem}.bar_has-vertical{right:.5rem}.thumb{transition-duration:.15s;transition-timing-function:ease-in-out;position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;pointer-events:auto;background:var(--tui-text-01);background-clip:content-box;box-sizing:border-box;transition-property:width,height;opacity:.2}.thumb:hover{opacity:.24}.thumb:active{opacity:.48}:host[data-mode=onDark] .thumb{background-color:var(--tui-text-01-night)}.bar_vertical .thumb{right:0;width:.75rem;min-height:1.25rem}.bar_vertical .thumb:active,.bar_vertical:hover .thumb{width:.875rem}.bar_horizontal .thumb{bottom:0;height:.75rem;min-width:1.25rem}.bar_horizontal .thumb:active,.bar_horizontal:hover .thumb{height:.875rem}"]
52
+ styles: [":host{position:-webkit-sticky;position:sticky;top:0;left:0;z-index:1;min-width:calc(100% - 1px);min-height:calc(100% - 1px);float:left;margin-right:calc(-100% + 1px);-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(-100% + 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none}.bar{position:absolute;right:0;bottom:0;pointer-events:auto}.bar_vertical{top:0;width:.875rem}.bar_horizontal{left:0;height:.875rem}.bar_has-horizontal{bottom:.5rem}.bar_has-vertical{right:.5rem}.thumb{transition-duration:.15s;transition-timing-function:ease-in-out;position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;pointer-events:auto;background:var(--tui-text-01);background-clip:content-box;box-sizing:border-box;transition-property:width,height;opacity:.2}.thumb:hover{opacity:.24}.thumb:active{opacity:.48}:host[data-mode=onDark] .thumb{background-color:var(--tui-text-01-night)}.bar_vertical .thumb{right:0;width:.75rem;min-height:1.25rem}.bar_vertical .thumb:active,.bar_vertical:hover .thumb{width:.875rem}.bar_horizontal .thumb{bottom:0;height:.75rem;min-width:1.25rem}.bar_horizontal .thumb:active,.bar_horizontal:hover .thumb{height:.875rem}"]
53
53
  }),
54
54
  __param(0, Inject(TUI_ANIMATION_OPTIONS)),
55
55
  __param(1, Inject(NgZone)),