@taiga-ui/cdk 4.52.0-canary.e10b718 → 4.52.0-canary.e53e79e

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 (301) hide show
  1. package/README.md +1 -1
  2. package/classes/control.d.ts +4 -6
  3. package/classes/index.d.ts +0 -1
  4. package/constants/index.d.ts +0 -1
  5. package/constants/used-icons.d.ts +2 -2
  6. package/constants/version.d.ts +1 -1
  7. package/constants/version.js +1 -1
  8. package/date-time/date-fillers.d.ts +5 -5
  9. package/date-time/day-range.d.ts +1 -1
  10. package/date-time/day.d.ts +4 -4
  11. package/date-time/time.d.ts +2 -2
  12. package/date-time/types.d.ts +1 -12
  13. package/directives/active-zone/active-zone.directive.d.ts +3 -4
  14. package/directives/animated/animated.directive.d.ts +1 -3
  15. package/directives/animated/index.d.ts +0 -1
  16. package/directives/auto-focus/autofocus.directive.d.ts +2 -3
  17. package/directives/auto-focus/autofocus.options.d.ts +1 -1
  18. package/directives/copy-processor/copy-processor.directive.d.ts +2 -2
  19. package/directives/hovered/hovered.directive.d.ts +1 -2
  20. package/directives/index.d.ts +1 -5
  21. package/directives/media/media.directive.d.ts +8 -12
  22. package/directives/native-validator/native-validator.directive.d.ts +2 -2
  23. package/directives/obscured/obscured.directive.d.ts +4 -4
  24. package/directives/pan/pan.directive.d.ts +1 -2
  25. package/directives/platform/platform.directive.d.ts +2 -2
  26. package/directives/resizer/resizer.directive.d.ts +3 -4
  27. package/directives/swipe/swipe.directive.d.ts +1 -2
  28. package/directives/transitioned/transitioned.directive.d.ts +1 -0
  29. package/directives/value-changes/value-changes.directive.d.ts +2 -2
  30. package/directives/with-styles/index.d.ts +1 -0
  31. package/directives/with-styles/with-styles.directive.d.ts +10 -0
  32. package/fesm2022/taiga-ui-cdk-classes.mjs +8 -91
  33. package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-cdk-constants.mjs +15 -17
  35. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-cdk-date-time.mjs +35 -23
  37. package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs +24 -32
  39. package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-cdk-directives-animated.mjs +23 -72
  41. package/fesm2022/taiga-ui-cdk-directives-animated.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs +10 -13
  43. package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-cdk-directives-control.mjs +3 -4
  45. package/fesm2022/taiga-ui-cdk-directives-control.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs +7 -10
  47. package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-cdk-directives-element.mjs +3 -4
  49. package/fesm2022/taiga-ui-cdk-directives-element.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs +8 -11
  51. package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-cdk-directives-font-size.mjs +4 -7
  53. package/fesm2022/taiga-ui-cdk-directives-font-size.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs +3 -4
  55. package/fesm2022/taiga-ui-cdk-directives-high-dpi.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs +10 -13
  57. package/fesm2022/taiga-ui-cdk-directives-hovered.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-cdk-directives-item.mjs +3 -4
  59. package/fesm2022/taiga-ui-cdk-directives-item.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-cdk-directives-media.mjs +32 -57
  61. package/fesm2022/taiga-ui-cdk-directives-media.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs +7 -10
  63. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +14 -22
  65. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-cdk-directives-pan.mjs +10 -12
  67. package/fesm2022/taiga-ui-cdk-directives-pan.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-cdk-directives-platform.mjs +9 -12
  69. package/fesm2022/taiga-ui-cdk-directives-platform.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-cdk-directives-resizer.mjs +19 -23
  71. package/fesm2022/taiga-ui-cdk-directives-resizer.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs +10 -12
  73. package/fesm2022/taiga-ui-cdk-directives-swipe.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-cdk-directives-transitioned.mjs +7 -14
  75. package/fesm2022/taiga-ui-cdk-directives-transitioned.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-cdk-directives-validator.mjs +3 -4
  77. package/fesm2022/taiga-ui-cdk-directives-validator.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs +8 -9
  79. package/fesm2022/taiga-ui-cdk-directives-value-changes.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-cdk-directives-visual-viewport.mjs +3 -4
  81. package/fesm2022/taiga-ui-cdk-directives-visual-viewport.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs +29 -0
  83. package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs.map +1 -0
  84. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs +6 -7
  85. package/fesm2022/taiga-ui-cdk-directives-zoom.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-cdk-directives.mjs +1 -5
  87. package/fesm2022/taiga-ui-cdk-directives.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-cdk-observables.mjs +10 -28
  89. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs +3 -4
  91. package/fesm2022/taiga-ui-cdk-pipes-filter.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-cdk-pipes-mapper.mjs +3 -4
  93. package/fesm2022/taiga-ui-cdk-pipes-mapper.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs +5 -5
  95. package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-cdk-pipes.mjs +0 -6
  97. package/fesm2022/taiga-ui-cdk-pipes.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-cdk-portals.mjs +126 -0
  99. package/fesm2022/taiga-ui-cdk-portals.mjs.map +1 -0
  100. package/fesm2022/taiga-ui-cdk-tokens.mjs +13 -47
  101. package/fesm2022/taiga-ui-cdk-tokens.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-cdk-utils-browser.mjs +3 -26
  103. package/fesm2022/taiga-ui-cdk-utils-browser.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-cdk-utils-di.mjs +45 -4
  105. package/fesm2022/taiga-ui-cdk-utils-di.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-cdk-utils-dom.mjs +16 -96
  107. package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-cdk-utils-focus.mjs +27 -44
  109. package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-cdk-utils-math.mjs +1 -12
  111. package/fesm2022/taiga-ui-cdk-utils-math.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +45 -124
  113. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-cdk-utils.mjs +0 -1
  115. package/fesm2022/taiga-ui-cdk-utils.mjs.map +1 -1
  116. package/fesm2022/taiga-ui-cdk.mjs +1 -1
  117. package/index.d.ts +1 -1
  118. package/observables/index.d.ts +0 -2
  119. package/package.json +21 -63
  120. package/pipes/index.d.ts +0 -6
  121. package/pipes/obfuscate/obfuscate.options.d.ts +1 -1
  122. package/portals/directive.d.ts +11 -0
  123. package/portals/index.d.ts +4 -0
  124. package/portals/portal.d.ts +24 -0
  125. package/portals/portals.d.ts +12 -0
  126. package/portals/service.d.ts +15 -0
  127. package/schematics/collection.json +2 -1
  128. package/schematics/migrate-tui-let/index.js +4 -3
  129. package/schematics/migrate-tui-let/index.js.map +1 -1
  130. package/schematics/migrate-tui-let/schema.json +7 -0
  131. package/schematics/ng-add/constants/versions.d.ts +1 -1
  132. package/schematics/ng-update/interfaces/html-comment.d.ts +1 -1
  133. package/schematics/ng-update/interfaces/removable-input.d.ts +1 -1
  134. package/schematics/ng-update/interfaces/replacement-attribute-to-directive.d.ts +1 -1
  135. package/schematics/ng-update/interfaces/replacement-attribute-value.d.ts +1 -1
  136. package/schematics/ng-update/interfaces/replacement-attribute.d.ts +1 -1
  137. package/schematics/ng-update/interfaces/replacement-tag.d.ts +1 -1
  138. package/schematics/ng-update/{v4/steps → utils}/replace-functions.d.ts +1 -1
  139. package/schematics/ng-update/{v4/steps → utils}/replace-functions.js +1 -1
  140. package/schematics/ng-update/utils/replace-functions.js.map +1 -0
  141. package/schematics/ng-update/v4/index.js +1 -1
  142. package/schematics/ng-update/v4/index.js.map +1 -1
  143. package/schematics/ng-update/v4/migrate-css-vars/rename-css-vars.js +1 -1
  144. package/schematics/ng-update/v4/migrate-css-vars/rename-css-vars.js.map +1 -1
  145. package/schematics/ng-update/v4/steps/constants/migration-warnings.js +1 -1
  146. package/schematics/ng-update/v4/steps/constants/migration-warnings.js.map +1 -1
  147. package/schematics/ng-update/v4/steps/migrate-templates.d.ts +2 -2
  148. package/schematics/ng-update/v4/steps/restore-tui-mapper.js +1 -1
  149. package/schematics/ng-update/v4/steps/restore-tui-mapper.js.map +1 -1
  150. package/schematics/ng-update/v4/steps/restore-tui-matcher.js +1 -1
  151. package/schematics/ng-update/v4/steps/restore-tui-matcher.js.map +1 -1
  152. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.js +1 -1
  153. package/schematics/ng-update/v4/steps/styles/migrate-space-mixins.js.map +1 -1
  154. package/schematics/ng-update/v5/index.js +12 -0
  155. package/schematics/ng-update/v5/index.js.map +1 -1
  156. package/schematics/ng-update/v5/steps/constants/attrs-to-replace.d.ts +2 -0
  157. package/schematics/ng-update/v5/steps/constants/attrs-to-replace.js +22 -0
  158. package/schematics/ng-update/v5/steps/constants/attrs-to-replace.js.map +1 -0
  159. package/schematics/ng-update/v5/steps/constants/functions.d.ts +2 -0
  160. package/schematics/ng-update/v5/steps/constants/functions.js +67 -0
  161. package/schematics/ng-update/v5/steps/constants/functions.js.map +1 -0
  162. package/schematics/ng-update/v5/steps/constants/html-comments.d.ts +2 -0
  163. package/schematics/ng-update/v5/steps/constants/html-comments.js +11 -0
  164. package/schematics/ng-update/v5/steps/constants/html-comments.js.map +1 -0
  165. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.d.ts +2 -0
  166. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.js +22 -0
  167. package/schematics/ng-update/v5/steps/constants/identifiers-to-replace.js.map +1 -0
  168. package/schematics/ng-update/v5/steps/migrate-templates.d.ts +17 -0
  169. package/schematics/ng-update/v5/steps/migrate-templates.js +46 -0
  170. package/schematics/ng-update/v5/steps/migrate-templates.js.map +1 -0
  171. package/schematics/ng-update/v5/steps/templates/migrate-avatar.d.ts +8 -0
  172. package/schematics/ng-update/v5/steps/templates/migrate-avatar.js +111 -0
  173. package/schematics/ng-update/v5/steps/templates/migrate-avatar.js.map +1 -0
  174. package/schematics/ng-update/v5/steps/templates/migrate-input-year.d.ts +8 -0
  175. package/schematics/ng-update/v5/steps/templates/migrate-input-year.js +52 -0
  176. package/schematics/ng-update/v5/steps/templates/migrate-input-year.js.map +1 -0
  177. package/schematics/utils/angular-json-manipulations.js +0 -2
  178. package/schematics/utils/angular-json-manipulations.js.map +1 -1
  179. package/schematics/utils/run-migration.d.ts +14 -0
  180. package/schematics/utils/run-migration.js +27 -0
  181. package/schematics/utils/run-migration.js.map +1 -0
  182. package/schematics/utils/templates/elements.js +4 -12
  183. package/schematics/utils/templates/elements.js.map +1 -1
  184. package/schematics/utils/templates/ng-component-input-manipulations.d.ts +3 -3
  185. package/schematics/utils/templates/ng-component-input-manipulations.js +1 -3
  186. package/schematics/utils/templates/ng-component-input-manipulations.js.map +1 -1
  187. package/tokens/environment.d.ts +0 -13
  188. package/tokens/index.d.ts +0 -2
  189. package/tokens/removed-element.d.ts +0 -3
  190. package/types/index.d.ts +0 -2
  191. package/utils/browser/index.d.ts +0 -2
  192. package/utils/di/index.d.ts +3 -0
  193. package/utils/dom/get-element-obscurers.d.ts +1 -1
  194. package/utils/dom/index.d.ts +0 -6
  195. package/utils/focus/get-closest-focusable.d.ts +1 -6
  196. package/utils/focus/{get-native-focused.d.ts → get-focused.d.ts} +1 -1
  197. package/utils/focus/index.d.ts +4 -6
  198. package/utils/focus/{is-native-keyboard-focusable.d.ts → is-focusable.d.ts} +1 -1
  199. package/utils/focus/{is-native-focused-in.d.ts → is-focused-in.d.ts} +1 -1
  200. package/utils/focus/{is-native-focused.d.ts → is-focused.d.ts} +1 -1
  201. package/utils/index.d.ts +0 -1
  202. package/utils/math/index.d.ts +0 -2
  203. package/utils/miscellaneous/generate-id.d.ts +1 -0
  204. package/utils/miscellaneous/index.d.ts +2 -11
  205. package/utils/miscellaneous/sanitize-text.d.ts +23 -0
  206. package/classes/portals.d.ts +0 -33
  207. package/constants/allow-signal-writes.d.ts +0 -2
  208. package/directives/animated/animated-parent.directive.d.ts +0 -10
  209. package/directives/click-outside/click-outside.directive.d.ts +0 -14
  210. package/directives/click-outside/index.d.ts +0 -1
  211. package/directives/droppable/droppable.directive.d.ts +0 -8
  212. package/directives/droppable/index.d.ts +0 -1
  213. package/directives/let/index.d.ts +0 -2
  214. package/directives/let/let-context.d.ts +0 -11
  215. package/directives/let/let.directive.d.ts +0 -18
  216. package/directives/popover/index.d.ts +0 -1
  217. package/directives/popover/popover.directive.d.ts +0 -14
  218. package/directives/repeat-times/index.d.ts +0 -1
  219. package/directives/repeat-times/repeat-times.directive.d.ts +0 -22
  220. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs +0 -39
  221. package/fesm2022/taiga-ui-cdk-directives-click-outside.mjs.map +0 -1
  222. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs +0 -37
  223. package/fesm2022/taiga-ui-cdk-directives-droppable.mjs.map +0 -1
  224. package/fesm2022/taiga-ui-cdk-directives-let.mjs +0 -53
  225. package/fesm2022/taiga-ui-cdk-directives-let.mjs.map +0 -1
  226. package/fesm2022/taiga-ui-cdk-directives-popover.mjs +0 -32
  227. package/fesm2022/taiga-ui-cdk-directives-popover.mjs.map +0 -1
  228. package/fesm2022/taiga-ui-cdk-directives-repeat-times.mjs +0 -61
  229. package/fesm2022/taiga-ui-cdk-directives-repeat-times.mjs.map +0 -1
  230. package/fesm2022/taiga-ui-cdk-pipes-animation.mjs +0 -33
  231. package/fesm2022/taiga-ui-cdk-pipes-animation.mjs.map +0 -1
  232. package/fesm2022/taiga-ui-cdk-pipes-is-present.mjs +0 -25
  233. package/fesm2022/taiga-ui-cdk-pipes-is-present.mjs.map +0 -1
  234. package/fesm2022/taiga-ui-cdk-pipes-keys.mjs +0 -24
  235. package/fesm2022/taiga-ui-cdk-pipes-keys.mjs.map +0 -1
  236. package/fesm2022/taiga-ui-cdk-pipes-repeat-times.mjs +0 -25
  237. package/fesm2022/taiga-ui-cdk-pipes-repeat-times.mjs.map +0 -1
  238. package/fesm2022/taiga-ui-cdk-pipes-replace.mjs +0 -26
  239. package/fesm2022/taiga-ui-cdk-pipes-replace.mjs.map +0 -1
  240. package/fesm2022/taiga-ui-cdk-pipes-to-array.mjs +0 -24
  241. package/fesm2022/taiga-ui-cdk-pipes-to-array.mjs.map +0 -1
  242. package/fesm2022/taiga-ui-cdk-services.mjs +0 -151
  243. package/fesm2022/taiga-ui-cdk-services.mjs.map +0 -1
  244. package/fesm2022/taiga-ui-cdk-utils-color.mjs +0 -195
  245. package/fesm2022/taiga-ui-cdk-utils-color.mjs.map +0 -1
  246. package/observables/must-be-present.d.ts +0 -5
  247. package/observables/query-list-observable.d.ts +0 -6
  248. package/pipes/animation/animation.pipe.d.ts +0 -13
  249. package/pipes/animation/index.d.ts +0 -1
  250. package/pipes/is-present/index.d.ts +0 -1
  251. package/pipes/is-present/is-present.pipe.d.ts +0 -7
  252. package/pipes/keys/index.d.ts +0 -1
  253. package/pipes/keys/keys.pipe.d.ts +0 -7
  254. package/pipes/repeat-times/index.d.ts +0 -7
  255. package/pipes/replace/index.d.ts +0 -1
  256. package/pipes/replace/replace.pipe.d.ts +0 -7
  257. package/pipes/to-array/index.d.ts +0 -1
  258. package/pipes/to-array/to-array.pipe.d.ts +0 -7
  259. package/schematics/ng-update/v4/steps/replace-functions.js.map +0 -1
  260. package/services/id.service.d.ts +0 -8
  261. package/services/index.d.ts +0 -4
  262. package/services/popover.service.d.ts +0 -25
  263. package/services/scroll.service.d.ts +0 -13
  264. package/services/theme-color.service.d.ts +0 -18
  265. package/tokens/base-href.d.ts +0 -2
  266. package/tokens/range.d.ts +0 -5
  267. package/types/safe-html.d.ts +0 -2
  268. package/types/values-of.d.ts +0 -1
  269. package/utils/browser/is-apple.d.ts +0 -11
  270. package/utils/browser/is-ios.d.ts +0 -6
  271. package/utils/color/get-gradient-data.d.ts +0 -1
  272. package/utils/color/hex-to-rgb.d.ts +0 -1
  273. package/utils/color/hex-to-rgba.d.ts +0 -3
  274. package/utils/color/hsv-to-rgb.d.ts +0 -4
  275. package/utils/color/index.d.ts +0 -9
  276. package/utils/color/parse-color.d.ts +0 -1
  277. package/utils/color/parse-gradient.d.ts +0 -10
  278. package/utils/color/rgb-to-hex.d.ts +0 -1
  279. package/utils/color/rgb-to-hsv.d.ts +0 -1
  280. package/utils/color/rgba-to-hex.d.ts +0 -2
  281. package/utils/dom/get-element-point.d.ts +0 -2
  282. package/utils/dom/is-current-target.d.ts +0 -1
  283. package/utils/dom/is-inside-iframe.d.ts +0 -4
  284. package/utils/dom/is-node-in.d.ts +0 -8
  285. package/utils/dom/retarget-boundary-crossing.d.ts +0 -1
  286. package/utils/dom/value-binding.d.ts +0 -3
  287. package/utils/focus/blur-native-focused.d.ts +0 -4
  288. package/utils/focus/is-native-mouse-focusable.d.ts +0 -1
  289. package/utils/math/to-integer.d.ts +0 -1
  290. package/utils/math/to-radians.d.ts +0 -4
  291. package/utils/miscellaneous/change-date-separator.d.ts +0 -1
  292. package/utils/miscellaneous/create-token.d.ts +0 -9
  293. package/utils/miscellaneous/directive-listener.d.ts +0 -9
  294. package/utils/miscellaneous/flat-length.d.ts +0 -6
  295. package/utils/miscellaneous/get-original-array-from-query-list.d.ts +0 -8
  296. package/utils/miscellaneous/is-falsy.d.ts +0 -1
  297. package/utils/miscellaneous/is-valid-url.d.ts +0 -4
  298. package/utils/miscellaneous/uniq-by.d.ts +0 -1
  299. /package/utils/{miscellaneous → di}/directive-binding.d.ts +0 -0
  300. /package/utils/{miscellaneous → di}/provide-options.d.ts +0 -0
  301. /package/utils/{miscellaneous → di}/provide.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-classes.mjs","sources":["../../../projects/cdk/classes/value-transformer.ts","../../../projects/cdk/classes/control.ts","../../../projects/cdk/classes/portals.ts","../../../projects/cdk/classes/validation-error.ts","../../../projects/cdk/classes/taiga-ui-cdk-classes.ts"],"sourcesContent":["import {type FactoryProvider, inject, type ProviderToken} from '@angular/core';\nimport {identity} from 'rxjs';\n\nexport abstract class TuiValueTransformer<From, To = unknown> {\n public abstract toControlValue(componentValue: From): To;\n public abstract fromControlValue(controlValue: To): From;\n}\n\nexport function tuiValueTransformerFrom<\n T extends {valueTransformer: TuiValueTransformer<unknown>},\n>(token: ProviderToken<T>): FactoryProvider {\n return {\n provide: TuiValueTransformer,\n useFactory: () => inject(token).valueTransformer,\n };\n}\n\nexport class TuiNonNullableValueTransformer<T> extends TuiValueTransformer<T | null, T> {\n private prevValue!: T;\n\n public fromControlValue(value: T): T {\n this.prevValue = value;\n\n return value;\n }\n\n public toControlValue(value: T | null): T {\n this.prevValue = value ?? this.prevValue;\n\n return this.prevValue;\n }\n}\n\nexport const TUI_IDENTITY_VALUE_TRANSFORMER: TuiValueTransformer<any, any> = {\n fromControlValue: identity,\n toControlValue: identity,\n};\n","import {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n Input,\n type Provider,\n signal,\n type Type,\n untracked,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n type ControlValueAccessor,\n type FormControlStatus,\n NgControl,\n NgModel,\n} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {TUI_FALLBACK_VALUE} from '@taiga-ui/cdk/tokens';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport {\n delay,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n startWith,\n Subject,\n switchMap,\n} from 'rxjs';\n\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from './value-transformer';\n\nconst FLAGS = {self: true, optional: true};\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class TuiControl<T> implements ControlValueAccessor {\n private readonly fallback = inject(TUI_FALLBACK_VALUE, FLAGS) as T;\n private readonly refresh$ = new Subject<void>();\n private readonly pseudoInvalid = signal<boolean | null>(null);\n private readonly internal = signal(this.fallback);\n\n protected readonly control = inject(NgControl, {self: true});\n protected readonly cdr = inject(ChangeDetectorRef);\n protected transformer =\n inject(TuiValueTransformer, FLAGS) ?? TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public readonly value = computed(() => this.internal() ?? this.fallback);\n public readonly readOnly = signal(false);\n public readonly touched = signal(false);\n public readonly status = signal<FormControlStatus | undefined>(undefined);\n public readonly disabled = computed(() => this.status() === 'DISABLED');\n public readonly interactive = computed(() => !this.disabled() && !this.readOnly());\n public readonly invalid = computed(() =>\n this.pseudoInvalid() !== null\n ? !!this.pseudoInvalid() && this.interactive()\n : this.interactive() && this.touched() && this.status() === 'INVALID',\n );\n\n public readonly mode = computed(() =>\n // eslint-disable-next-line no-nested-ternary\n this.readOnly() ? 'readonly' : this.invalid() ? 'invalid' : 'valid',\n );\n\n public onTouched = EMPTY_FUNCTION;\n public onChange: (value: T) => void = EMPTY_FUNCTION;\n\n constructor() {\n this.control.valueAccessor = this;\n this.refresh$\n .pipe(\n delay(0),\n startWith(null),\n map(() => this.control.control),\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((c) =>\n merge(\n c.valueChanges,\n c.statusChanges,\n (c as any).events || EMPTY,\n ).pipe(startWith(null)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.update());\n }\n\n @Input('readOnly')\n public set readOnlySetter(readOnly: boolean) {\n this.readOnly.set(readOnly);\n }\n\n @Input('invalid')\n public set invalidSetter(invalid: boolean | null) {\n this.pseudoInvalid.set(invalid);\n }\n\n public registerOnChange(onChange: (value: unknown) => void): void {\n this.refresh$.next();\n\n this.onChange = (value: T) => {\n const internal = untracked(() => this.internal());\n\n if (value === internal) {\n return;\n }\n\n onChange(this.transformer.toControlValue(value));\n this.internal.set(value);\n this.update();\n };\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = () => {\n onTouched();\n this.update();\n };\n }\n\n public setDisabledState(): void {\n this.update();\n }\n\n public writeValue(value: T | null): void {\n // TODO: https://github.com/angular/angular/issues/14988\n const safe = this.control instanceof NgModel ? this.control.model : value;\n\n this.internal.set(this.transformer.fromControlValue(safe));\n this.update();\n }\n\n private update(): void {\n this.status.set(this.control.control?.status);\n this.touched.set(!!this.control.control?.touched);\n this.cdr.markForCheck();\n }\n}\n\nexport function tuiAsControl<T>(control: Type<TuiControl<T>>): Provider {\n return tuiProvide(TuiControl, control);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {\n type ComponentRef,\n Directive,\n type EmbeddedViewRef,\n inject,\n Injectable,\n INJECTOR,\n type Provider,\n type TemplateRef,\n ViewChild,\n ViewContainerRef,\n type ViewRef,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\n/**\n * Abstract class for host element for dynamically created portals.\n */\n@Directive()\nexport abstract class TuiPortals {\n @ViewChild('viewContainer', {read: ViewContainerRef})\n private readonly vcr!: ViewContainerRef;\n\n private readonly injector = inject(INJECTOR);\n\n protected readonly nothing = inject(TuiPortalService).attach(this);\n\n public addComponentChild<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n const injector = component.createInjector(this.injector);\n const ref = this.vcr.createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplateChild<C>(\n templateRef: TemplateRef<C>,\n context?: C,\n ): EmbeddedViewRef<C> {\n return this.vcr.createEmbeddedView(templateRef, context);\n }\n}\n\n/**\n * Abstract service for displaying portals\n */\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n return this.safeHost.addComponentChild(component);\n }\n\n public remove<C>({hostView}: ComponentRef<C>): void {\n this.removeTemplate(hostView);\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.safeHost.addTemplateChild(templateRef, context);\n }\n\n public removeTemplate<C>(viewRef: EmbeddedViewRef<C> | ViewRef): void {\n if (!viewRef.destroyed) {\n viewRef.destroy();\n }\n }\n\n protected get safeHost(): TuiPortals {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return this.host;\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortalService): Provider {\n return tuiProvide(TuiPortalService, portal);\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(\n ngDevMode\n ? 'Portals cannot be used without TuiPortalHostComponent; perhaps you forgot to wrap your application with tui-root.'\n : '',\n );\n }\n}\n","import {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport class TuiValidationError<T extends Record<string, any> = Record<string, unknown>> {\n constructor(\n public readonly message: PolymorpheusContent<T>,\n public readonly context: T = {} as T,\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-classes.mjs","sources":["../../../projects/cdk/classes/value-transformer.ts","../../../projects/cdk/classes/control.ts","../../../projects/cdk/classes/validation-error.ts","../../../projects/cdk/classes/taiga-ui-cdk-classes.ts"],"sourcesContent":["import {type FactoryProvider, inject, type ProviderToken} from '@angular/core';\nimport {identity} from 'rxjs';\n\nexport abstract class TuiValueTransformer<From, To = unknown> {\n public abstract toControlValue(componentValue: From): To;\n public abstract fromControlValue(controlValue: To): From;\n}\n\nexport function tuiValueTransformerFrom<\n T extends {valueTransformer: TuiValueTransformer<unknown>},\n>(token: ProviderToken<T>): FactoryProvider {\n return {\n provide: TuiValueTransformer,\n useFactory: () => inject(token).valueTransformer,\n };\n}\n\nexport class TuiNonNullableValueTransformer<T> extends TuiValueTransformer<T | null, T> {\n private prevValue!: T;\n\n public fromControlValue(value: T): T {\n this.prevValue = value;\n\n return value;\n }\n\n public toControlValue(value: T | null): T {\n this.prevValue = value ?? this.prevValue;\n\n return this.prevValue;\n }\n}\n\nexport const TUI_IDENTITY_VALUE_TRANSFORMER: TuiValueTransformer<any, any> = {\n fromControlValue: identity,\n toControlValue: identity,\n};\n","import {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n input,\n type Provider,\n signal,\n type Type,\n untracked,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n type ControlValueAccessor,\n type FormControlStatus,\n NgControl,\n NgModel,\n} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {TUI_FALLBACK_VALUE} from '@taiga-ui/cdk/tokens';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport {\n delay,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n startWith,\n Subject,\n switchMap,\n} from 'rxjs';\n\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from './value-transformer';\n\nconst FLAGS = {self: true, optional: true};\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class TuiControl<T> implements ControlValueAccessor {\n private readonly fallback = inject(TUI_FALLBACK_VALUE, FLAGS) as T;\n private readonly refresh$ = new Subject<void>();\n private readonly internal = signal(this.fallback);\n\n protected readonly control = inject(NgControl, {self: true});\n protected readonly cdr = inject(ChangeDetectorRef);\n protected transformer =\n inject(TuiValueTransformer, FLAGS) ?? TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public readonly value = computed(() => this.internal() ?? this.fallback);\n public readonly readOnly = input(false);\n public readonly pseudoInvalid = input<boolean | null>(null, {alias: 'invalid'});\n public readonly touched = signal(false);\n public readonly status = signal<FormControlStatus | undefined>(undefined);\n public readonly disabled = computed(() => this.status() === 'DISABLED');\n public readonly interactive = computed(() => !this.disabled() && !this.readOnly());\n public readonly invalid = computed(() =>\n this.pseudoInvalid() !== null\n ? !!this.pseudoInvalid() && this.interactive()\n : this.interactive() && this.touched() && this.status() === 'INVALID',\n );\n\n public readonly mode = computed(() =>\n // eslint-disable-next-line no-nested-ternary\n this.readOnly() ? 'readonly' : this.invalid() ? 'invalid' : 'valid',\n );\n\n public onTouched = EMPTY_FUNCTION;\n public onChange: (value: T) => void = EMPTY_FUNCTION;\n\n constructor() {\n this.control.valueAccessor = this;\n this.refresh$\n .pipe(\n delay(0),\n startWith(null),\n map(() => this.control.control),\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((c) =>\n merge(\n c.valueChanges,\n c.statusChanges,\n (c as any).events || EMPTY,\n ).pipe(startWith(null)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.update());\n }\n\n public registerOnChange(onChange: (value: unknown) => void): void {\n this.refresh$.next();\n\n this.onChange = (value: T) => {\n const internal = untracked(() => this.internal());\n\n if (value === internal) {\n return;\n }\n\n onChange(this.transformer.toControlValue(value));\n this.internal.set(value);\n this.update();\n };\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = () => {\n onTouched();\n this.update();\n };\n }\n\n public setDisabledState(): void {\n this.update();\n }\n\n public writeValue(value: T | null): void {\n // TODO: https://github.com/angular/angular/issues/14988\n const safe = this.control instanceof NgModel ? this.control.model : value;\n\n this.internal.set(this.transformer.fromControlValue(safe));\n this.update();\n }\n\n private update(): void {\n this.status.set(this.control.control?.status);\n this.touched.set(!!this.control.control?.touched);\n this.cdr.markForCheck();\n }\n}\n\nexport function tuiAsControl<T>(control: Type<TuiControl<T>>): Provider {\n return tuiProvide(TuiControl, control);\n}\n","import {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport class TuiValidationError<T extends Record<string, any> = Record<string, unknown>> {\n constructor(\n public readonly message: PolymorpheusContent<T>,\n public readonly context: T = {} as T,\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- import { VERSION, QueryList } from '@angular/core';
2
-
3
- const TUI_ALLOW_SIGNAL_WRITES = parseInt(VERSION.major, 10) >= 19 ? {} : { allowSignalWrites: true };
1
+ import { QueryList } from '@angular/core';
4
2
 
5
3
  const rect = {
6
4
  bottom: 0,
@@ -29,12 +27,10 @@ const EMPTY_CLIENT_RECT = {
29
27
  /**
30
28
  * Handler that always returns `false`.
31
29
  */
32
- // eslint-disable-next-line no-restricted-syntax
33
30
  const TUI_FALSE_HANDLER = () => false;
34
31
  /**
35
32
  * Handler that always returns `true`.
36
33
  */
37
- // eslint-disable-next-line no-restricted-syntax
38
34
  const TUI_TRUE_HANDLER = () => true;
39
35
 
40
36
  function bothEmpty(item1, item2) {
@@ -143,12 +139,23 @@ const CHAR_ZERO_WIDTH_SPACE = '\u200B';
143
139
  * @description:
144
140
  * AUTOGENERATED
145
141
  *
146
- * Array of icons used in taiga-ui components
142
+ * Array of icons used in ./projects
147
143
  */
148
144
  const TUI_USED_ICONS = [
149
145
  '@tui.mir',
150
146
  '@tui.visa',
151
147
  '@tui.electron',
148
+ '@img.mastercard',
149
+ '@img.maestro',
150
+ '@img.amex',
151
+ '@img.diners-club',
152
+ '@img.discover',
153
+ '@img.humo',
154
+ '@img.jcb',
155
+ '@img.ru-pay',
156
+ '@img.union-pay',
157
+ '@img.uzcard',
158
+ '@img.verve',
152
159
  '@tui.search',
153
160
  '@tui.sun',
154
161
  '@tui.moon',
@@ -184,7 +191,6 @@ const TUI_USED_ICONS = [
184
191
  '@tui.file',
185
192
  '@tui.calendar',
186
193
  '@tui.plus',
187
- '@tui.phone',
188
194
  '@tui.heart',
189
195
  '@tui.heart-filled',
190
196
  '@tui.star',
@@ -194,21 +200,13 @@ const TUI_USED_ICONS = [
194
200
  '@tui.minimize',
195
201
  '@tui.filter',
196
202
  '@tui.layout-grid',
197
- '@tui.move-up-right',
198
- '@tui.move-right',
199
- '@tui.move-down-right',
200
- '@tui.move-down',
201
- '@tui.move-down-left',
202
- '@tui.move-left',
203
- '@tui.move-up-left',
204
- '@tui.move-up',
205
203
  ];
206
204
 
207
- const TUI_VERSION = '4.52.0-canary.e10b718';
205
+ const TUI_VERSION = '4.52.0-canary.e53e79e';
208
206
 
209
207
  /**
210
208
  * Generated bundle index. Do not edit.
211
209
  */
212
210
 
213
- export { CHAR_BULLET, CHAR_CURRENCY_SIGN, CHAR_ELLIPSIS, CHAR_EM_DASH, CHAR_EN_DASH, CHAR_HYPHEN, CHAR_LAQUO, CHAR_MINUS, CHAR_NO_BREAK_SPACE, CHAR_PLUS, CHAR_RAQUO, CHAR_ZERO_WIDTH_SPACE, EMPTY_ARRAY, EMPTY_CLIENT_RECT, EMPTY_FUNCTION, EMPTY_QUERY, TUI_ALLOW_SIGNAL_WRITES, TUI_DEFAULT_IDENTITY_MATCHER, TUI_DEFAULT_MATCHER, TUI_DIGIT_REGEXP, TUI_FALSE_HANDLER, TUI_NON_DIGITS_REGEXP, TUI_NON_DIGIT_REGEXP, TUI_STRICT_MATCHER, TUI_TRUE_HANDLER, TUI_USED_ICONS, TUI_VERSION, svgNodeFilter };
211
+ export { CHAR_BULLET, CHAR_CURRENCY_SIGN, CHAR_ELLIPSIS, CHAR_EM_DASH, CHAR_EN_DASH, CHAR_HYPHEN, CHAR_LAQUO, CHAR_MINUS, CHAR_NO_BREAK_SPACE, CHAR_PLUS, CHAR_RAQUO, CHAR_ZERO_WIDTH_SPACE, EMPTY_ARRAY, EMPTY_CLIENT_RECT, EMPTY_FUNCTION, EMPTY_QUERY, TUI_DEFAULT_IDENTITY_MATCHER, TUI_DEFAULT_MATCHER, TUI_DIGIT_REGEXP, TUI_FALSE_HANDLER, TUI_NON_DIGITS_REGEXP, TUI_NON_DIGIT_REGEXP, TUI_STRICT_MATCHER, TUI_TRUE_HANDLER, TUI_USED_ICONS, TUI_VERSION, svgNodeFilter };
214
212
  //# sourceMappingURL=taiga-ui-cdk-constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import {type CreateEffectOptions, VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import {type TuiHandler, type TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.external-link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.52.0-canary.e10b718';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAEa,MAAA,uBAAuB,GAChC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,iBAAiB,EAAE,IAAI;;ACDrE,MAAM,IAAI,GAAG;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;CACE;AAEV;;;;;AAKG;AACU,MAAA,WAAW,GAAG,IAAI,SAAS;AACjC,MAAM,WAAW,GAAO;MAClB,cAAc,GAA6B,MAAK;AAChD,MAAA,iBAAiB,GAAY;AACtC,IAAA,GAAG,IAAI;AACP,IAAA,MAAM,EAAE,MAAM,IAAI;;;ACxBtB;;AAEG;AACH;MACa,iBAAiB,GAAG,MAAa;AAE9C;;AAEG;AACH;MACa,gBAAgB,GAAG,MAAY;;ACR5C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc,EAAA;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;AACzF;AAEA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAC/B,IAAO,EACP,MAAc,EACd,SAAA,GAAmC,MAAM,KAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AAEzE;;;;;AAKG;AACU,MAAA,kBAAkB,GAAG,CAC9B,IAAO,EACP,MAAc,EACd,SAAmC,GAAA,MAAM,KAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW;AAElE;;;;;;AAMG;MACU,4BAA4B,GAAgC,CAAC,KAAK,EAAE,KAAK,KAClF,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK;;ACtCtC,MAAM,gBAAgB,GAAG;AACzB,MAAM,oBAAoB,GAAG;AAC7B,MAAM,qBAAqB,GAAG;;ACFxB,MAAA,aAAa,GAAgD;AACtE,IAAA,UAAU,CAAC,IAAU,EAAA;QACjB,OAAO,iBAAiB,IAAI;cACtB,UAAU,CAAC;AACb,cAAE,UAAU,CAAC,aAAa;KACjC;;;ACLL;;AAEG;AACI,MAAM,mBAAmB,GAAG;AAEnC;;;;;;AAMG;AACI,MAAM,YAAY,GAAG;AAE5B;;;;;;AAMG;AACI,MAAM,YAAY,GAAG;AAE5B;;AAEG;AACI,MAAM,UAAU,GAAG;AAE1B;;AAEG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;AAMG;AACI,MAAM,WAAW,GAAG;AAE3B;;;;;AAKG;AACI,MAAM,UAAU,GAAG;AAE1B;;AAEG;AACI,MAAM,SAAS,GAAG;AAEzB;;AAEG;AACI,MAAM,WAAW,GAAG;AAE3B;;AAEG;AACI,MAAM,aAAa,GAAG;AAE7B;;AAEG;AACI,MAAM,kBAAkB,GAAG;AAElC;;AAEG;AACI,MAAM,qBAAqB,GAAG;;ACzErC;;;;;AAKG;AACU,MAAA,cAAc,GAAG;IAC1B,UAAU;IACV,WAAW;IACX,eAAe;IACf,aAAa;IACb,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,uBAAuB;IACvB,cAAc;IACd,UAAU;IACV,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,QAAQ;IACR,oBAAoB;IACpB,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,eAAe;IACf,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,WAAW;IACX,wBAAwB;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,sBAAsB;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;;;AC9DX,MAAM,WAAW,GAAG;;ACA3B;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import {type TuiHandler, type TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in ./projects\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@img.mastercard',\n '@img.maestro',\n '@img.amex',\n '@img.diners-club',\n '@img.discover',\n '@img.humo',\n '@img.jcb',\n '@img.ru-pay',\n '@img.union-pay',\n '@img.uzcard',\n '@img.verve',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.external-link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n] as const;\n","export const TUI_VERSION = '4.52.0-canary.e53e79e';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -31,16 +31,16 @@ const MILLISECONDS_IN_HOUR = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;
31
31
  const MILLISECONDS_IN_DAY = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;
32
32
 
33
33
  /**
34
- * @internal 'dd.mm.yyyy'.length
34
+ * @internal 'dd/mm/yyyy'.length
35
35
  * Used in:
36
- * - {@link TuiInputDateComponent}
37
- * - {@link TuiInputDateRangeComponent}
38
- * - {@link TuiInputDateTimeComponent}
36
+ * - {@link TuiInputDate}
37
+ * - {@link TuiInputDateRange}
38
+ * - {@link TuiInputDateTime}
39
39
  */
40
40
  const DATE_FILLER_LENGTH = 10;
41
41
  /**
42
42
  * @internal
43
- * Used in {@link TuiInputDateRangeComponent}
43
+ * Used in {@link TuiInputDateRange}
44
44
  */
45
45
  const DATE_RANGE_FILLER_LENGTH = 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;
46
46
 
@@ -404,23 +404,23 @@ class TuiDay extends TuiMonth {
404
404
  return Math.round((to.toLocalNativeDate().getTime() - from.toLocalNativeDate().getTime()) /
405
405
  (1000 * 60 * 60 * 24));
406
406
  }
407
- static parseRawDateString(date, dateMode = 'DMY') {
407
+ static parseRawDateString(date, dateMode = 'dd/mm/yyyy') {
408
408
  ngDevMode &&
409
409
  console.assert(date.length === DATE_FILLER_LENGTH, '[parseRawDateString]: wrong date string length');
410
410
  switch (dateMode) {
411
- case 'MDY':
411
+ case 'mm/dd/yyyy':
412
412
  return {
413
413
  day: parseInt(date.slice(3, 5), 10),
414
414
  month: parseInt(date.slice(0, 2), 10) - 1,
415
415
  year: parseInt(date.slice(6, 10), 10),
416
416
  };
417
- case 'YMD':
417
+ case 'yyyy/mm/dd':
418
418
  return {
419
419
  day: parseInt(date.slice(8, 10), 10),
420
420
  month: parseInt(date.slice(5, 7), 10) - 1,
421
421
  year: parseInt(date.slice(0, 4), 10),
422
422
  };
423
- case 'DMY':
423
+ case 'dd/mm/yyyy':
424
424
  default:
425
425
  return {
426
426
  day: parseInt(date.slice(0, 2), 10),
@@ -434,21 +434,21 @@ class TuiDay extends TuiMonth {
434
434
  * Parsing a string with date with normalization
435
435
  *
436
436
  * @param rawDate date string
437
- * @param dateMode date format of the date string (DMY | MDY | YMD)
437
+ * @param dateMode date format of the date string (dd/mm/yyyy | mm/dd/yyyy | yyyy/mm/dd)
438
438
  * @return normalized date
439
439
  */
440
- static normalizeParse(rawDate, dateMode = 'DMY') {
440
+ static normalizeParse(rawDate, dateMode = 'dd/mm/yyyy') {
441
441
  const { day, month, year } = this.parseRawDateString(rawDate, dateMode);
442
442
  return TuiDay.normalizeOf(year, month, day);
443
443
  }
444
444
  /**
445
445
  * Parsing a date stringified in a toJSON format
446
- * @param yearMonthDayString date string in format of YYYY-MM-DD
446
+ * @param ymdString date string in format of YYYY-MM-DD
447
447
  * @return date
448
448
  * @throws exceptions if any part of the date is invalid
449
449
  */
450
- static jsonParse(yearMonthDayString) {
451
- const { day, month, year } = this.parseRawDateString(yearMonthDayString, 'YMD');
450
+ static jsonParse(ymdString) {
451
+ const { day, month, year } = this.parseRawDateString(ymdString, 'yyyy/mm/dd');
452
452
  if (!TuiMonth.isValidMonth(year, month) ||
453
453
  !Number.isInteger(day) ||
454
454
  !tuiInRange(day, MIN_DAY, TuiMonth.getMonthDaysCount(month, TuiYear.isLeapYear(year)) + 1)) {
@@ -488,7 +488,7 @@ class TuiDay extends TuiMonth {
488
488
  (this.monthSame(another) && this.day < another.day));
489
489
  }
490
490
  /**
491
- * Passed date is after or equals to current
491
+ * Passed date is after or equal to current
492
492
  */
493
493
  daySameOrBefore(another) {
494
494
  return (this.monthBefore(another) ||
@@ -544,7 +544,19 @@ class TuiDay extends TuiMonth {
544
544
  const totalMonths = (this.year + year) * MONTHS_IN_YEAR + this.month + month;
545
545
  let years = Math.floor(totalMonths / MONTHS_IN_YEAR);
546
546
  let months = totalMonths % MONTHS_IN_YEAR;
547
- let days = Math.min(this.day, TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) + day;
547
+ const monthDaysCount = TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));
548
+ const currentMonthDaysCount = TuiMonth.getMonthDaysCount(this.month, TuiYear.isLeapYear(years));
549
+ let days = day;
550
+ if (this.day >= monthDaysCount) {
551
+ days += this.day - (currentMonthDaysCount - monthDaysCount);
552
+ }
553
+ else if (currentMonthDaysCount < monthDaysCount &&
554
+ this.day === currentMonthDaysCount) {
555
+ days += this.day + (monthDaysCount - currentMonthDaysCount);
556
+ }
557
+ else {
558
+ days += this.day;
559
+ }
548
560
  while (days > TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years))) {
549
561
  days -= TuiMonth.getMonthDaysCount(months, TuiYear.isLeapYear(years));
550
562
  if (months === TuiMonthNumber.December) {
@@ -577,16 +589,16 @@ class TuiDay extends TuiMonth {
577
589
  const mm = this.formattedMonthPart;
578
590
  const yyyy = this.formattedYear;
579
591
  switch (dateFormat) {
580
- case 'MDY':
592
+ case 'mm/dd/yyyy':
581
593
  return `${mm}${separator}${dd}${separator}${yyyy}`;
582
- case 'YMD':
594
+ case 'yyyy/mm/dd':
583
595
  return `${yyyy}${separator}${mm}${separator}${dd}`;
584
- case 'DMY':
596
+ case 'dd/mm/yyyy':
585
597
  default:
586
598
  return `${dd}${separator}${mm}${separator}${yyyy}`;
587
599
  }
588
600
  }
589
- toString(dateFormat = 'DMY', separator = '.') {
601
+ toString(dateFormat = 'dd/mm/yyyy', separator = '.') {
590
602
  return this.getFormattedDay(dateFormat, separator);
591
603
  }
592
604
  toJSON() {
@@ -665,11 +677,11 @@ class TuiDayRange extends TuiMonthRange {
665
677
  /**
666
678
  * Parse and correct a day range in string format
667
679
  *
668
- * @param rangeString a string of dates in a format dd.mm.yyyy - dd.mm.yyyy
680
+ * @param rangeString a string of dates in a format dd/mm/yyyy - dd/mm/yyyy
669
681
  * @param dateMode {@link TuiDateMode}
670
682
  * @return normalized day range object
671
683
  */
672
- static normalizeParse(rangeString, dateMode = 'DMY') {
684
+ static normalizeParse(rangeString, dateMode = 'dd/mm/yyyy') {
673
685
  const leftDay = TuiDay.normalizeParse(rangeString.slice(0, DATE_FILLER_LENGTH), dateMode);
674
686
  if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {
675
687
  return new TuiDayRange(leftDay, leftDay);
@@ -706,7 +718,7 @@ class TuiDayRange extends TuiMonthRange {
706
718
  const to = this.to.getFormattedDay(dateFormat, dateSeparator);
707
719
  return `${from}${RANGE_SEPARATOR_CHAR}${to}`;
708
720
  }
709
- toString(dateFormat = 'DMY', dateSeparator = '.') {
721
+ toString(dateFormat = 'dd/mm/yyyy', dateSeparator = '.') {
710
722
  return this.getFormattedDayRange(dateFormat, dateSeparator);
711
723
  }
712
724
  toArray() {