@progress/kendo-angular-inputs 14.4.0-develop.2 → 14.4.0-develop.21

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 (296) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +147 -594
  3. package/README.md +1 -1
  4. package/checkbox/checkbox.directive.d.ts +1 -1
  5. package/checkbox.module.d.ts +1 -1
  6. package/colorpicker/color-contrast-svg.component.d.ts +1 -1
  7. package/colorpicker/color-gradient-numeric-label.directive.d.ts +1 -1
  8. package/colorpicker/color-gradient.component.d.ts +2 -2
  9. package/colorpicker/color-input.component.d.ts +1 -1
  10. package/colorpicker/color-palette.component.d.ts +2 -2
  11. package/colorpicker/colorpicker.component.d.ts +2 -2
  12. package/colorpicker/constants.d.ts +1 -1
  13. package/colorpicker/contrast-validation.component.d.ts +1 -1
  14. package/colorpicker/contrast.component.d.ts +1 -1
  15. package/colorpicker/events/active-color-click-event.d.ts +1 -1
  16. package/colorpicker/events/cancel-event.d.ts +1 -1
  17. package/colorpicker/events/close-event.d.ts +1 -1
  18. package/colorpicker/events/kendo-drag-event.d.ts +1 -1
  19. package/colorpicker/events/open-event.d.ts +1 -1
  20. package/colorpicker/events.d.ts +1 -1
  21. package/colorpicker/flatcolorpicker-actions.component.d.ts +1 -1
  22. package/colorpicker/flatcolorpicker-header.component.d.ts +1 -1
  23. package/colorpicker/flatcolorpicker.component.d.ts +2 -2
  24. package/colorpicker/focus-on-dom-ready.directive.d.ts +1 -1
  25. package/colorpicker/localization/colorgradient-localization.service.d.ts +1 -1
  26. package/colorpicker/localization/colorpalette-localization.service.d.ts +1 -1
  27. package/colorpicker/localization/colorpicker-localization.service.d.ts +1 -1
  28. package/colorpicker/localization/custom-messages.component.d.ts +1 -1
  29. package/colorpicker/localization/flatcolorpicker-localization.service.d.ts +1 -1
  30. package/colorpicker/localization/localized-colorpicker-messages.directive.d.ts +1 -1
  31. package/colorpicker/localization/messages.d.ts +1 -1
  32. package/colorpicker/models/actions-layout.d.ts +1 -1
  33. package/colorpicker/models/colorpicker-view.d.ts +1 -1
  34. package/colorpicker/models/gradient-settings.d.ts +1 -1
  35. package/colorpicker/models/hsva.d.ts +1 -1
  36. package/colorpicker/models/output-format.d.ts +1 -1
  37. package/colorpicker/models/palette-presets.d.ts +1 -1
  38. package/colorpicker/models/palette-settings.d.ts +1 -1
  39. package/colorpicker/models/popup-settings.d.ts +1 -1
  40. package/colorpicker/models/rgb.d.ts +1 -1
  41. package/colorpicker/models/rgba.d.ts +1 -1
  42. package/colorpicker/models/table-cell.d.ts +1 -1
  43. package/colorpicker/models/tile-size.d.ts +1 -1
  44. package/colorpicker/models.d.ts +1 -1
  45. package/colorpicker/services/color-palette.service.d.ts +1 -1
  46. package/colorpicker/services/flatcolorpicker.service.d.ts +1 -1
  47. package/colorpicker/utils/color-parser.d.ts +1 -1
  48. package/colorpicker/utils/contrast-curve.d.ts +1 -1
  49. package/colorpicker/utils.d.ts +1 -1
  50. package/colorpicker.module.d.ts +1 -1
  51. package/common/dom-utils.d.ts +1 -1
  52. package/common/math.d.ts +1 -1
  53. package/common/models/fillmode.d.ts +1 -1
  54. package/common/models/rounded.d.ts +1 -1
  55. package/common/models/size.d.ts +1 -1
  56. package/common/models/styling-classes.d.ts +1 -1
  57. package/common/models/type.d.ts +1 -1
  58. package/common/models.d.ts +1 -1
  59. package/common/utils.d.ts +1 -1
  60. package/esm2020/checkbox/checkbox.directive.mjs +1 -1
  61. package/esm2020/checkbox.module.mjs +1 -1
  62. package/esm2020/colorpicker/color-contrast-svg.component.mjs +1 -1
  63. package/esm2020/colorpicker/color-gradient-numeric-label.directive.mjs +1 -1
  64. package/esm2020/colorpicker/color-gradient.component.mjs +2 -2
  65. package/esm2020/colorpicker/color-input.component.mjs +2 -2
  66. package/esm2020/colorpicker/color-palette.component.mjs +2 -2
  67. package/esm2020/colorpicker/colorpicker.component.mjs +2 -2
  68. package/esm2020/colorpicker/constants.mjs +1 -1
  69. package/esm2020/colorpicker/contrast-validation.component.mjs +1 -1
  70. package/esm2020/colorpicker/contrast.component.mjs +1 -1
  71. package/esm2020/colorpicker/events/active-color-click-event.mjs +1 -1
  72. package/esm2020/colorpicker/events/cancel-event.mjs +1 -1
  73. package/esm2020/colorpicker/events/close-event.mjs +1 -1
  74. package/esm2020/colorpicker/events/kendo-drag-event.mjs +1 -1
  75. package/esm2020/colorpicker/events/open-event.mjs +1 -1
  76. package/esm2020/colorpicker/events.mjs +1 -1
  77. package/esm2020/colorpicker/flatcolorpicker-actions.component.mjs +1 -1
  78. package/esm2020/colorpicker/flatcolorpicker-header.component.mjs +1 -1
  79. package/esm2020/colorpicker/flatcolorpicker.component.mjs +2 -2
  80. package/esm2020/colorpicker/focus-on-dom-ready.directive.mjs +1 -1
  81. package/esm2020/colorpicker/localization/colorgradient-localization.service.mjs +1 -1
  82. package/esm2020/colorpicker/localization/colorpalette-localization.service.mjs +1 -1
  83. package/esm2020/colorpicker/localization/colorpicker-localization.service.mjs +1 -1
  84. package/esm2020/colorpicker/localization/custom-messages.component.mjs +1 -1
  85. package/esm2020/colorpicker/localization/flatcolorpicker-localization.service.mjs +1 -1
  86. package/esm2020/colorpicker/localization/localized-colorpicker-messages.directive.mjs +1 -1
  87. package/esm2020/colorpicker/localization/messages.mjs +1 -1
  88. package/esm2020/colorpicker/models/actions-layout.mjs +1 -1
  89. package/esm2020/colorpicker/models/colorpicker-view.mjs +1 -1
  90. package/esm2020/colorpicker/models/gradient-settings.mjs +1 -1
  91. package/esm2020/colorpicker/models/hsva.mjs +1 -1
  92. package/esm2020/colorpicker/models/output-format.mjs +1 -1
  93. package/esm2020/colorpicker/models/palette-presets.mjs +1 -1
  94. package/esm2020/colorpicker/models/palette-settings.mjs +1 -1
  95. package/esm2020/colorpicker/models/popup-settings.mjs +1 -1
  96. package/esm2020/colorpicker/models/rgb.mjs +1 -1
  97. package/esm2020/colorpicker/models/rgba.mjs +1 -1
  98. package/esm2020/colorpicker/models/table-cell.mjs +1 -1
  99. package/esm2020/colorpicker/models/tile-size.mjs +1 -1
  100. package/esm2020/colorpicker/models.mjs +1 -1
  101. package/esm2020/colorpicker/services/color-palette.service.mjs +1 -1
  102. package/esm2020/colorpicker/services/flatcolorpicker.service.mjs +1 -1
  103. package/esm2020/colorpicker/utils/color-parser.mjs +1 -1
  104. package/esm2020/colorpicker/utils/contrast-curve.mjs +1 -1
  105. package/esm2020/colorpicker/utils.mjs +1 -1
  106. package/esm2020/colorpicker.module.mjs +1 -1
  107. package/esm2020/common/dom-utils.mjs +1 -1
  108. package/esm2020/common/math.mjs +1 -1
  109. package/esm2020/common/models/fillmode.mjs +1 -1
  110. package/esm2020/common/models/rounded.mjs +1 -1
  111. package/esm2020/common/models/size.mjs +1 -1
  112. package/esm2020/common/models/styling-classes.mjs +1 -1
  113. package/esm2020/common/models/type.mjs +1 -1
  114. package/esm2020/common/models.mjs +1 -1
  115. package/esm2020/common/utils.mjs +1 -1
  116. package/esm2020/formfield/error.component.mjs +1 -1
  117. package/esm2020/formfield/formfield.component.mjs +1 -1
  118. package/esm2020/formfield/hint.component.mjs +1 -1
  119. package/esm2020/formfield/models/message-align.mjs +1 -1
  120. package/esm2020/formfield/models/orientation.mjs +1 -1
  121. package/esm2020/formfield/models/show-options.mjs +1 -1
  122. package/esm2020/formfield.module.mjs +1 -1
  123. package/esm2020/index.mjs +5 -1
  124. package/esm2020/inputs.module.mjs +1 -1
  125. package/esm2020/maskedtextbox/maskedtextbox.component.mjs +146 -58
  126. package/esm2020/maskedtextbox/masking.service.mjs +1 -1
  127. package/esm2020/maskedtextbox/parsing/combinators.mjs +1 -1
  128. package/esm2020/maskedtextbox/parsing/parsers.mjs +1 -1
  129. package/esm2020/maskedtextbox/parsing/result.mjs +1 -1
  130. package/esm2020/maskedtextbox/parsing/stream.mjs +1 -1
  131. package/esm2020/maskedtextbox.module.mjs +31 -7
  132. package/esm2020/numerictextbox/arrow-direction.mjs +1 -1
  133. package/esm2020/numerictextbox/constants.mjs +1 -1
  134. package/esm2020/numerictextbox/localization/custom-messages.component.mjs +1 -1
  135. package/esm2020/numerictextbox/localization/localized-numerictextbox-messages.directive.mjs +1 -1
  136. package/esm2020/numerictextbox/localization/messages.mjs +1 -1
  137. package/esm2020/numerictextbox/numerictextbox.component.mjs +188 -93
  138. package/esm2020/numerictextbox/utils.mjs +1 -1
  139. package/esm2020/numerictextbox.module.mjs +11 -7
  140. package/esm2020/package-metadata.mjs +3 -3
  141. package/esm2020/progress-kendo-angular-inputs.mjs +1 -1
  142. package/esm2020/radiobutton/radiobutton.directive.mjs +1 -1
  143. package/esm2020/radiobutton.module.mjs +1 -1
  144. package/esm2020/rangeslider/localization/custom-messages.component.mjs +1 -1
  145. package/esm2020/rangeslider/localization/localized-rangeslider-messages.directive.mjs +1 -1
  146. package/esm2020/rangeslider/localization/messages.mjs +1 -1
  147. package/esm2020/rangeslider/rangeslider-model.mjs +1 -1
  148. package/esm2020/rangeslider/rangeslider-value.type.mjs +1 -1
  149. package/esm2020/rangeslider/rangeslider.component.mjs +1 -1
  150. package/esm2020/rangeslider.module.mjs +1 -1
  151. package/esm2020/shared/input-separator.component.mjs +22 -4
  152. package/esm2020/shared/shared-events.directive.mjs +95 -0
  153. package/esm2020/shared/textarea.directive.mjs +1 -1
  154. package/esm2020/shared/utils.mjs +1 -1
  155. package/esm2020/shared-events.module.mjs +22 -0
  156. package/esm2020/shared.module.mjs +1 -1
  157. package/esm2020/signature/events/close-event.mjs +1 -1
  158. package/esm2020/signature/events/index.mjs +1 -1
  159. package/esm2020/signature/events/open-event.mjs +1 -1
  160. package/esm2020/signature/localization/custom-messages.component.mjs +1 -1
  161. package/esm2020/signature/localization/index.mjs +1 -1
  162. package/esm2020/signature/localization/localized-signature-messages.directive.mjs +1 -1
  163. package/esm2020/signature/localization/messages.mjs +1 -1
  164. package/esm2020/signature/signature.component.mjs +2 -2
  165. package/esm2020/signature.module.mjs +1 -1
  166. package/esm2020/slider/localization/custom-messages.component.mjs +1 -1
  167. package/esm2020/slider/localization/localized-slider-messages.directive.mjs +1 -1
  168. package/esm2020/slider/localization/messages.mjs +1 -1
  169. package/esm2020/slider/slider-model.mjs +1 -1
  170. package/esm2020/slider/slider.component.mjs +1 -1
  171. package/esm2020/slider.module.mjs +1 -1
  172. package/esm2020/sliders-common/label-template.directive.mjs +1 -1
  173. package/esm2020/sliders-common/slider-base.mjs +2 -2
  174. package/esm2020/sliders-common/slider-model.base.mjs +1 -1
  175. package/esm2020/sliders-common/slider-ticks.component.mjs +1 -1
  176. package/esm2020/sliders-common/sliders-common.module.mjs +1 -1
  177. package/esm2020/sliders-common/sliders-util.mjs +1 -1
  178. package/esm2020/sliders-common/title-callback.mjs +1 -1
  179. package/esm2020/switch/events/blur-event.mjs +1 -1
  180. package/esm2020/switch/events/focus-event.mjs +1 -1
  181. package/esm2020/switch/localization/custom-messages.component.mjs +1 -1
  182. package/esm2020/switch/localization/localized-switch-messages.directive.mjs +1 -1
  183. package/esm2020/switch/localization/messages.mjs +1 -1
  184. package/esm2020/switch/switch.component.mjs +2 -2
  185. package/esm2020/switch.module.mjs +1 -1
  186. package/esm2020/text-fields-common/text-fields-base.mjs +2 -2
  187. package/esm2020/textarea/models/adornments-orientation.mjs +5 -0
  188. package/esm2020/textarea/models/flow.mjs +1 -1
  189. package/esm2020/textarea/models/resize.mjs +1 -1
  190. package/esm2020/textarea/textarea-prefix.component.mjs +70 -0
  191. package/esm2020/textarea/textarea-suffix.component.mjs +34 -4
  192. package/esm2020/textarea/textarea.component.mjs +199 -132
  193. package/esm2020/textarea.module.mjs +15 -6
  194. package/esm2020/textbox/localization/custom-messages.component.mjs +1 -1
  195. package/esm2020/textbox/localization/localized-textbox-messages.directive.mjs +1 -1
  196. package/esm2020/textbox/localization/messages.mjs +1 -1
  197. package/esm2020/textbox/models/icon-show-options.mjs +1 -1
  198. package/esm2020/textbox/textbox-prefix.directive.mjs +18 -4
  199. package/esm2020/textbox/textbox-suffix.directive.mjs +18 -4
  200. package/esm2020/textbox/textbox.component.mjs +207 -205
  201. package/esm2020/textbox/textbox.directive.mjs +1 -1
  202. package/esm2020/textbox.module.mjs +10 -6
  203. package/esm2020/validators/max.validator.mjs +1 -1
  204. package/esm2020/validators/min.validator.mjs +1 -1
  205. package/fesm2015/progress-kendo-angular-inputs.mjs +1143 -621
  206. package/fesm2020/progress-kendo-angular-inputs.mjs +1143 -621
  207. package/formfield/error.component.d.ts +1 -1
  208. package/formfield/formfield.component.d.ts +1 -1
  209. package/formfield/hint.component.d.ts +1 -1
  210. package/formfield/models/message-align.d.ts +1 -1
  211. package/formfield/models/orientation.d.ts +1 -1
  212. package/formfield/models/show-options.d.ts +1 -1
  213. package/formfield.module.d.ts +1 -1
  214. package/index.d.ts +7 -1
  215. package/inputs.module.d.ts +1 -1
  216. package/maskedtextbox/maskedtextbox.component.d.ts +39 -8
  217. package/maskedtextbox/masking.service.d.ts +1 -1
  218. package/maskedtextbox/parsing/combinators.d.ts +1 -1
  219. package/maskedtextbox/parsing/parsers.d.ts +1 -1
  220. package/maskedtextbox/parsing/result.d.ts +1 -1
  221. package/maskedtextbox/parsing/stream.d.ts +1 -1
  222. package/maskedtextbox.module.d.ts +4 -2
  223. package/numerictextbox/arrow-direction.d.ts +1 -1
  224. package/numerictextbox/constants.d.ts +1 -1
  225. package/numerictextbox/localization/custom-messages.component.d.ts +1 -1
  226. package/numerictextbox/localization/localized-numerictextbox-messages.directive.d.ts +1 -1
  227. package/numerictextbox/localization/messages.d.ts +1 -1
  228. package/numerictextbox/numerictextbox.component.d.ts +40 -9
  229. package/numerictextbox/utils.d.ts +1 -1
  230. package/numerictextbox.module.d.ts +4 -2
  231. package/package-metadata.d.ts +1 -1
  232. package/package.json +11 -11
  233. package/progress-kendo-angular-inputs.d.ts +1 -1
  234. package/radiobutton/radiobutton.directive.d.ts +1 -1
  235. package/radiobutton.module.d.ts +1 -1
  236. package/rangeslider/localization/custom-messages.component.d.ts +1 -1
  237. package/rangeslider/localization/localized-rangeslider-messages.directive.d.ts +1 -1
  238. package/rangeslider/localization/messages.d.ts +1 -1
  239. package/rangeslider/rangeslider-model.d.ts +1 -1
  240. package/rangeslider/rangeslider-value.type.d.ts +1 -1
  241. package/rangeslider/rangeslider.component.d.ts +1 -1
  242. package/rangeslider.module.d.ts +1 -1
  243. package/shared/input-separator.component.d.ts +9 -2
  244. package/shared/shared-events.directive.d.ts +27 -0
  245. package/shared/textarea.directive.d.ts +1 -1
  246. package/shared/utils.d.ts +1 -1
  247. package/shared-events.module.d.ts +14 -0
  248. package/shared.module.d.ts +1 -1
  249. package/signature/events/close-event.d.ts +1 -1
  250. package/signature/events/index.d.ts +1 -1
  251. package/signature/events/open-event.d.ts +1 -1
  252. package/signature/localization/custom-messages.component.d.ts +1 -1
  253. package/signature/localization/index.d.ts +1 -1
  254. package/signature/localization/localized-signature-messages.directive.d.ts +1 -1
  255. package/signature/localization/messages.d.ts +1 -1
  256. package/signature/signature.component.d.ts +2 -2
  257. package/signature.module.d.ts +1 -1
  258. package/slider/localization/custom-messages.component.d.ts +1 -1
  259. package/slider/localization/localized-slider-messages.directive.d.ts +1 -1
  260. package/slider/localization/messages.d.ts +1 -1
  261. package/slider/slider-model.d.ts +1 -1
  262. package/slider/slider.component.d.ts +1 -1
  263. package/slider.module.d.ts +1 -1
  264. package/sliders-common/label-template.directive.d.ts +1 -1
  265. package/sliders-common/slider-base.d.ts +2 -2
  266. package/sliders-common/slider-model.base.d.ts +1 -1
  267. package/sliders-common/slider-ticks.component.d.ts +1 -1
  268. package/sliders-common/sliders-common.module.d.ts +1 -1
  269. package/sliders-common/sliders-util.d.ts +1 -1
  270. package/sliders-common/title-callback.d.ts +1 -1
  271. package/switch/events/blur-event.d.ts +1 -1
  272. package/switch/events/focus-event.d.ts +1 -1
  273. package/switch/localization/custom-messages.component.d.ts +1 -1
  274. package/switch/localization/localized-switch-messages.directive.d.ts +1 -1
  275. package/switch/localization/messages.d.ts +1 -1
  276. package/switch/switch.component.d.ts +2 -2
  277. package/switch.module.d.ts +1 -1
  278. package/text-fields-common/text-fields-base.d.ts +2 -2
  279. package/textarea/models/adornments-orientation.d.ts +12 -0
  280. package/textarea/models/flow.d.ts +1 -1
  281. package/textarea/models/resize.d.ts +1 -1
  282. package/textarea/textarea-prefix.component.d.ts +37 -0
  283. package/textarea/textarea-suffix.component.d.ts +13 -2
  284. package/textarea/textarea.component.d.ts +63 -7
  285. package/textarea.module.d.ts +10 -8
  286. package/textbox/localization/custom-messages.component.d.ts +1 -1
  287. package/textbox/localization/localized-textbox-messages.directive.d.ts +1 -1
  288. package/textbox/localization/messages.d.ts +1 -1
  289. package/textbox/models/icon-show-options.d.ts +1 -1
  290. package/textbox/textbox-prefix.directive.d.ts +10 -2
  291. package/textbox/textbox-suffix.directive.d.ts +10 -2
  292. package/textbox/textbox.component.d.ts +38 -11
  293. package/textbox/textbox.directive.d.ts +1 -1
  294. package/textbox.module.d.ts +5 -4
  295. package/validators/max.validator.d.ts +1 -1
  296. package/validators/min.validator.d.ts +1 -1
@@ -1,30 +1,31 @@
1
1
  /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2023 Progress Software Corporation. All rights reserved.
2
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ViewContainerRef, ContentChildren, ChangeDetectionStrategy } from '@angular/core';
6
+ import { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ContentChildren, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
7
7
  import { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';
8
8
  import { Subscription, fromEvent, interval, merge, BehaviorSubject, Subject } from 'rxjs';
9
9
  import { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';
10
10
  import * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';
12
- import * as i3 from '@progress/kendo-angular-common';
13
- import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1 } from '@progress/kendo-angular-common';
12
+ import * as i4$1 from '@progress/kendo-angular-common';
13
+ import { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, SuffixTemplateDirective, PrefixTemplateDirective, isChanged, DraggableModule, EventsModule, ResizeSensorModule, AdornmentsModule, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1 } from '@progress/kendo-angular-common';
14
+ export { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective } from '@progress/kendo-angular-common';
14
15
  import { validatePackage } from '@progress/kendo-licensing';
15
16
  import { caretAltUpIcon, caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon, checkIcon, exclamationCircleIcon, xIcon, dropletSliderIcon, paletteIcon, dropletSlashIcon, caretAltExpandIcon, xCircleIcon, hyperlinkOpenIcon } from '@progress/kendo-svg-icons';
16
17
  import * as i2 from '@progress/kendo-angular-buttons';
17
18
  import { ButtonModule } from '@progress/kendo-angular-buttons';
18
- import * as i1$1 from '@angular/common';
19
+ import * as i4 from '@angular/common';
19
20
  import { CommonModule } from '@angular/common';
20
21
  import { browser, mobileOS } from '@progress/kendo-common';
21
- import * as i1$2 from '@progress/kendo-angular-intl';
22
+ import * as i1$1 from '@progress/kendo-angular-intl';
22
23
  import * as i2$1 from '@progress/kendo-angular-icons';
23
24
  import { IconsModule } from '@progress/kendo-angular-icons';
24
- import * as i1$3 from '@progress/kendo-angular-popup';
25
+ import * as i1$2 from '@progress/kendo-angular-popup';
25
26
  import { PopupModule } from '@progress/kendo-angular-popup';
26
27
  import { parseColor as parseColor$1, Color, namedColors } from '@progress/kendo-drawing';
27
- import * as i3$1 from '@progress/kendo-angular-dialog';
28
+ import * as i3 from '@progress/kendo-angular-dialog';
28
29
  import { DialogsModule } from '@progress/kendo-angular-dialog';
29
30
  import { __awaiter } from 'tslib';
30
31
  import { SignaturePad } from '@progress/kendo-inputs-common';
@@ -537,8 +538,8 @@ const packageMetadata = {
537
538
  name: '@progress/kendo-angular-inputs',
538
539
  productName: 'Kendo UI for Angular',
539
540
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
540
- publishDate: 1703164471,
541
- version: '14.4.0-develop.2',
541
+ publishDate: 1706522827,
542
+ version: '14.4.0-develop.21',
542
543
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
543
544
  };
544
545
 
@@ -638,7 +639,7 @@ class SliderBase {
638
639
  */
639
640
  this.largeStep = null;
640
641
  /**
641
- * Determines whether the Slider is disabled ([see example]({% slug disabledstate_slider %})).
642
+ * Determines whether the Slider is disabled ([see example]({% slug disabledstate_slider %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_slider#toc-managing-the-slider-disabled-state-in-reactive-forms).
642
643
  */
643
644
  this.disabled = false;
644
645
  /**
@@ -896,7 +897,7 @@ SliderTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
896
897
  <ng-template #defaultLabel let-value="value">
897
898
  {{ tickTitle(value) }}
898
899
  </ng-template>
899
- `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
900
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
900
901
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SliderTicksComponent, decorators: [{
901
902
  type: Component,
902
903
  args: [{
@@ -1495,7 +1496,7 @@ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
1495
1496
  [attr.aria-label]="currentValue"
1496
1497
  ></button>
1497
1498
  <kendo-resize-sensor (resize)="sizeComponent(false)"></kendo-resize-sensor>
1498
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i3.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
1499
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i4$1.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
1499
1500
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SliderComponent, decorators: [{
1500
1501
  type: Component,
1501
1502
  args: [{
@@ -2198,7 +2199,7 @@ RangeSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2198
2199
  </div>
2199
2200
  </div>
2200
2201
  <kendo-resize-sensor (resize)="sizeComponent()"></kendo-resize-sensor>
2201
- `, isInline: true, components: [{ type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i3.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
2202
+ `, isInline: true, components: [{ type: SliderTicksComponent, selector: "[kendoSliderTicks]", inputs: ["tickTitle", "vertical", "step", "largeStep", "min", "max", "labelTemplate"] }, { type: i4$1.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: "[kendoSliderLocalizedMessages]" }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }] });
2202
2203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RangeSliderComponent, decorators: [{
2203
2204
  type: Component,
2204
2205
  args: [{
@@ -2358,7 +2359,7 @@ class SwitchComponent {
2358
2359
  this.changeDetector = changeDetector;
2359
2360
  this.ngZone = ngZone;
2360
2361
  /**
2361
- * Determines whether the Switch is disabled ([see example]({% slug disabled_switch %})).
2362
+ * Determines whether the Switch is disabled ([see example]({% slug disabled_switch %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_switch#toc-managing-the-switch-disabled-state-in-reactive-forms).
2362
2363
  */
2363
2364
  this.disabled = false;
2364
2365
  /**
@@ -3429,6 +3430,60 @@ var ArrowDirection;
3429
3430
  ArrowDirection[ArrowDirection["Up"] = 1] = "Up";
3430
3431
  })(ArrowDirection || (ArrowDirection = {}));
3431
3432
 
3433
+ /**
3434
+ * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).
3435
+ * @example
3436
+ * ```ts-no-run
3437
+ * _@Component({
3438
+ * selector: 'my-app',
3439
+ * template: `
3440
+ * <kendo-textbox>
3441
+ * <ng-template kendoTextBoxSuffixTemplate>
3442
+ * <kendo-input-separator></kendo-input-separator>
3443
+ * <button kendoButton look="clear" icon="image"></button>
3444
+ * </ng-template>
3445
+ * </kendo-textbox>
3446
+ * `
3447
+ * })
3448
+ * class AppComponent {}
3449
+ * ```
3450
+ */
3451
+ class InputSeparatorComponent {
3452
+ constructor() {
3453
+ /**
3454
+ * Specifies the orientation of the separator.
3455
+ */
3456
+ this.orientation = 'vertical';
3457
+ this.hostClass = true;
3458
+ }
3459
+ get vertical() {
3460
+ return this.orientation === 'vertical';
3461
+ }
3462
+ get horizontal() {
3463
+ return this.orientation === 'horizontal';
3464
+ }
3465
+ }
3466
+ InputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3467
+ InputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: { orientation: "orientation" }, host: { properties: { "class.k-input-separator-vertical": "this.vertical", "class.k-input-separator-horizontal": "this.horizontal", "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
3468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, decorators: [{
3469
+ type: Component,
3470
+ args: [{
3471
+ selector: 'kendo-input-separator, kendo-textbox-separator',
3472
+ template: ``
3473
+ }]
3474
+ }], propDecorators: { orientation: [{
3475
+ type: Input
3476
+ }], vertical: [{
3477
+ type: HostBinding,
3478
+ args: ['class.k-input-separator-vertical']
3479
+ }], horizontal: [{
3480
+ type: HostBinding,
3481
+ args: ['class.k-input-separator-horizontal']
3482
+ }], hostClass: [{
3483
+ type: HostBinding,
3484
+ args: ['class.k-input-separator']
3485
+ }] } });
3486
+
3432
3487
  /**
3433
3488
  * @hidden
3434
3489
  */
@@ -3477,6 +3532,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3477
3532
  }]
3478
3533
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
3479
3534
 
3535
+ /**
3536
+ * @hidden
3537
+ */
3538
+ class SharedInputEventsDirective {
3539
+ constructor(ngZone, renderer, cdr) {
3540
+ this.ngZone = ngZone;
3541
+ this.renderer = renderer;
3542
+ this.cdr = cdr;
3543
+ this.isFocusedChange = new EventEmitter();
3544
+ this.onFocus = new EventEmitter();
3545
+ this.handleBlur = new EventEmitter();
3546
+ this.subscriptions = new Subscription();
3547
+ }
3548
+ ngAfterViewInit() {
3549
+ const hostElement = this.hostElement.nativeElement;
3550
+ let cursorInsideWrapper = false;
3551
+ let tabbing = false;
3552
+ this.ngZone.runOutsideAngular(() => {
3553
+ // focusIn and focusOut are relative to the host element
3554
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
3555
+ this.cdr.detectChanges();
3556
+ if (!this.isFocused) {
3557
+ this.ngZone.run(() => {
3558
+ this.onFocus.emit();
3559
+ this.isFocused = true;
3560
+ this.isFocusedChange.emit(this.isFocused);
3561
+ });
3562
+ }
3563
+ }));
3564
+ this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
3565
+ if (!this.isFocused) {
3566
+ return;
3567
+ }
3568
+ if (tabbing) {
3569
+ const closestTextbox = closest(args.relatedTarget, (element) => element === hostElement);
3570
+ if (!closestTextbox) {
3571
+ this.handleBlur.emit();
3572
+ }
3573
+ tabbing = false;
3574
+ }
3575
+ else {
3576
+ if (!cursorInsideWrapper && !(this === null || this === void 0 ? void 0 : this.clearButtonClicked)) {
3577
+ this.handleBlur.emit();
3578
+ }
3579
+ }
3580
+ }));
3581
+ this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
3582
+ cursorInsideWrapper = true;
3583
+ }));
3584
+ this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
3585
+ cursorInsideWrapper = false;
3586
+ }));
3587
+ this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
3588
+ if (args.keyCode === Keys.Tab) {
3589
+ tabbing = true;
3590
+ }
3591
+ else {
3592
+ tabbing = false;
3593
+ }
3594
+ }));
3595
+ });
3596
+ }
3597
+ ngOnDestroy() {
3598
+ this.subscriptions.unsubscribe();
3599
+ }
3600
+ }
3601
+ SharedInputEventsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedInputEventsDirective, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
3602
+ SharedInputEventsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: { hostElement: "hostElement", clearButtonClicked: "clearButtonClicked", isFocused: "isFocused" }, outputs: { isFocusedChange: "isFocusedChange", onFocus: "onFocus", handleBlur: "handleBlur" }, ngImport: i0 });
3603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedInputEventsDirective, decorators: [{
3604
+ type: Directive,
3605
+ args: [{
3606
+ selector: '[kendoInputSharedEvents]'
3607
+ }]
3608
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostElement: [{
3609
+ type: Input
3610
+ }], clearButtonClicked: [{
3611
+ type: Input
3612
+ }], isFocused: [{
3613
+ type: Input
3614
+ }], isFocusedChange: [{
3615
+ type: Output
3616
+ }], onFocus: [{
3617
+ type: Output
3618
+ }], handleBlur: [{
3619
+ type: Output
3620
+ }] } });
3621
+
3480
3622
  /* eslint-disable @typescript-eslint/no-explicit-any */
3481
3623
  const PARSABLE_OPTIONS = ['min', 'max', 'step', 'decimals'];
3482
3624
  const PARSABLE_DEFAULTS = {
@@ -3506,7 +3648,7 @@ class NumericTextBoxComponent {
3506
3648
  */
3507
3649
  this.focusableId = `k-${guid()}`;
3508
3650
  /**
3509
- * Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})).
3651
+ * Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_numerictextbox#toc-managing-the-numerictextbox-disabled-state-in-reactive-forms).
3510
3652
  */
3511
3653
  this.disabled = false;
3512
3654
  /**
@@ -3568,13 +3710,21 @@ class NumericTextBoxComponent {
3568
3710
  */
3569
3711
  this.valueChange = new EventEmitter();
3570
3712
  /**
3571
- * Fires each time the user focuses the `input` element ([see example]({% slug overview_numerictextbox %}#toc-events)).
3713
+ * Fires each time the user focuses the NumericTextBox element ([see example]({% slug overview_numerictextbox %}#toc-events)).
3572
3714
  */
3573
3715
  this.onFocus = new EventEmitter();
3574
3716
  /**
3575
- * Fires each time the `input` element gets blurred ([see example]({% slug overview_numerictextbox %}#toc-events)).
3717
+ * Fires each time the NumericTextBox component gets blurred. ([see example]({% slug overview_numerictextbox %}#toc-events)).
3576
3718
  */
3577
3719
  this.onBlur = new EventEmitter();
3720
+ /**
3721
+ * Fires each time the user focuses the `input` element.
3722
+ */
3723
+ this.inputFocus = new EventEmitter();
3724
+ /**
3725
+ * Fires each time the `input` element gets blurred.
3726
+ */
3727
+ this.inputBlur = new EventEmitter();
3578
3728
  /**
3579
3729
  * @hidden
3580
3730
  */
@@ -3689,7 +3839,7 @@ class NumericTextBoxComponent {
3689
3839
  /**
3690
3840
  * @hidden
3691
3841
  */
3692
- this.handleFocus = () => {
3842
+ this.handleInputFocus = () => {
3693
3843
  if (!this.focused) {
3694
3844
  this.focused = true;
3695
3845
  if (!this.isDisabled) {
@@ -3705,11 +3855,16 @@ class NumericTextBoxComponent {
3705
3855
  }, 0);
3706
3856
  });
3707
3857
  }
3858
+ if (hasObservers(this.onFocus)) {
3859
+ this.ngZone.run(() => {
3860
+ this.onFocus.emit();
3861
+ });
3862
+ }
3708
3863
  }
3709
3864
  this.mouseDown = false;
3710
- if (hasObservers(this.onFocus)) {
3865
+ if (hasObservers(this.inputFocus)) {
3711
3866
  this.ngZone.run(() => {
3712
- this.onFocus.emit();
3867
+ this.inputFocus.emit();
3713
3868
  });
3714
3869
  }
3715
3870
  };
@@ -3724,13 +3879,30 @@ class NumericTextBoxComponent {
3724
3879
  this.handleInput();
3725
3880
  }
3726
3881
  this.setInputValue();
3727
- if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {
3882
+ if (hasObservers(this.onBlur)) {
3728
3883
  this.ngZone.run(() => {
3729
3884
  this.ngTouched();
3730
3885
  this.onBlur.emit();
3731
3886
  });
3732
3887
  }
3733
3888
  };
3889
+ /**
3890
+ * @hidden
3891
+ */
3892
+ this.handleInputBlur = () => {
3893
+ this.changeDetector.markForCheck();
3894
+ //blur is thrown before input when dragging the input text in IE
3895
+ if (this.inputValue !== this.elementValue) {
3896
+ this.handleInput();
3897
+ }
3898
+ this.setInputValue();
3899
+ if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
3900
+ this.ngZone.run(() => {
3901
+ this.ngTouched();
3902
+ this.inputBlur.emit();
3903
+ });
3904
+ }
3905
+ };
3734
3906
  /**
3735
3907
  * @hidden
3736
3908
  */
@@ -3975,6 +4147,17 @@ class NumericTextBoxComponent {
3975
4147
  notifyValueChange() {
3976
4148
  this.setInputValue();
3977
4149
  }
4150
+ /**
4151
+ * @hidden
4152
+ */
4153
+ handleFocus() {
4154
+ this.ngZone.run(() => {
4155
+ if (!this.focused && hasObservers(this.onFocus)) {
4156
+ this.onFocus.emit();
4157
+ }
4158
+ this.focused = true;
4159
+ });
4160
+ }
3978
4161
  /**
3979
4162
  * @hidden
3980
4163
  */
@@ -3993,19 +4176,15 @@ class NumericTextBoxComponent {
3993
4176
  get isControlInvalid() {
3994
4177
  return this.control && this.control.touched && !this.control.valid;
3995
4178
  }
3996
- get decimalSeparator() {
3997
- const numberSymbols = this.intl.numberSymbols();
3998
- return numberSymbols.decimal;
3999
- }
4000
- get elementValue() {
4001
- return this.numericInput.nativeElement.value;
4002
- }
4003
- set elementValue(value) {
4004
- this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);
4005
- }
4179
+ /**
4180
+ * @hidden
4181
+ */
4006
4182
  get focused() {
4007
4183
  return this.isFocused;
4008
4184
  }
4185
+ /**
4186
+ * @hidden
4187
+ */
4009
4188
  set focused(value) {
4010
4189
  if (this.isFocused !== value && this.hostElement) {
4011
4190
  const wrap = this.hostElement.nativeElement;
@@ -4018,6 +4197,16 @@ class NumericTextBoxComponent {
4018
4197
  this.isFocused = value;
4019
4198
  }
4020
4199
  }
4200
+ get decimalSeparator() {
4201
+ const numberSymbols = this.intl.numberSymbols();
4202
+ return numberSymbols.decimal;
4203
+ }
4204
+ get elementValue() {
4205
+ return this.numericInput.nativeElement.value;
4206
+ }
4207
+ set elementValue(value) {
4208
+ this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);
4209
+ }
4021
4210
  get hasDecimals() {
4022
4211
  return this.decimals !== null && this.decimals >= 0;
4023
4212
  }
@@ -4030,8 +4219,8 @@ class NumericTextBoxComponent {
4030
4219
  return;
4031
4220
  }
4032
4221
  if (!mobileOS) {
4033
- this.focused = true;
4034
4222
  this.focus();
4223
+ this.focused = true;
4035
4224
  }
4036
4225
  if (this.arrowDirection !== direction) {
4037
4226
  this.arrowDirection = direction;
@@ -4318,14 +4507,14 @@ class NumericTextBoxComponent {
4318
4507
  }
4319
4508
  }
4320
4509
  }
4321
- NumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$2.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4322
- NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", autoCorrect: "autoCorrect", format: "format", max: "max", min: "min", decimals: "decimals", placeholder: "placeholder", step: "step", spinners: "spinners", rangeValidation: "rangeValidation", tabindex: "tabindex", tabIndex: "tabIndex", changeValueOnScroll: "changeValueOnScroll", selectOnFocus: "selectOnFocus", value: "value", maxlength: "maxlength", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur" }, host: { properties: { "attr.dir": "this.direction", "class.k-disabled": "this.disableClass", "class.k-input": "this.hostClasses", "class.k-numerictextbox": "this.hostClasses" } }, providers: [
4510
+ NumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$1.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4511
+ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", autoCorrect: "autoCorrect", format: "format", max: "max", min: "min", decimals: "decimals", placeholder: "placeholder", step: "step", spinners: "spinners", rangeValidation: "rangeValidation", tabindex: "tabindex", tabIndex: "tabIndex", changeValueOnScroll: "changeValueOnScroll", selectOnFocus: "selectOnFocus", value: "value", maxlength: "maxlength", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur" }, host: { properties: { "attr.dir": "this.direction", "class.k-disabled": "this.disableClass", "class.k-input": "this.hostClasses", "class.k-numerictextbox": "this.hostClasses" } }, providers: [
4323
4512
  LocalizationService,
4324
4513
  { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },
4325
4514
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
4326
4515
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },
4327
4516
  { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }
4328
- ], viewQueries: [{ propertyName: "numericInput", first: true, predicate: ["numericInput"], descendants: true, static: true }], exportAs: ["kendoNumericTextBox"], usesOnChanges: true, ngImport: i0, template: `
4517
+ ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "numericInput", first: true, predicate: ["numericInput"], descendants: true, static: true }], exportAs: ["kendoNumericTextBox"], usesOnChanges: true, ngImport: i0, template: `
4329
4518
  <ng-container kendoNumericTextBoxLocalizedMessages
4330
4519
  i18n-increment="kendo.numerictextbox.increment|The title for the **Increment** button in the NumericTextBox"
4331
4520
  increment="Increase value"
@@ -4333,6 +4522,18 @@ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
4333
4522
  decrement="Decrease value"
4334
4523
  >
4335
4524
  </ng-container>
4525
+ <ng-container
4526
+ kendoInputSharedEvents
4527
+ [hostElement]="hostElement"
4528
+ [(isFocused)]="focused"
4529
+ (handleBlur)="handleBlur()"
4530
+ (onFocus)="handleFocus()"
4531
+ >
4532
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
4533
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
4534
+ </ng-template>
4535
+ </span>
4536
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
4336
4537
  <input
4337
4538
  role="spinbutton"
4338
4539
  class="k-input-inner"
@@ -4354,51 +4555,57 @@ NumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
4354
4555
  dragenter: handleDragEnter,
4355
4556
  keydown: handleKeyDown,
4356
4557
  input: handleInput,
4357
- focus: handleFocus,
4358
- blur: handleBlur,
4558
+ focus: handleInputFocus,
4559
+ blur: handleInputBlur,
4359
4560
  paste: handlePaste
4360
4561
  }"
4361
4562
  #numericInput />
4563
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate?.showSeparator"></kendo-input-separator>
4564
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
4565
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
4566
+ </ng-template>
4567
+ </span>
4362
4568
  <span
4363
4569
  class="k-input-spinner k-spin-button" *ngIf="spinners"
4364
4570
  [kendoEventsOutsideAngular]="{ mouseup: releaseArrow, mouseleave: releaseArrow }"
4365
4571
  >
4366
- <button
4367
- type="button"
4368
- [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4369
- [attr.aria-hidden]="true"
4370
- [attr.aria-label]="incrementTitle"
4371
- [title]="incrementTitle"
4372
- class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4373
- [class.k-active]="arrowDirection === ArrowDirection.Up"
4374
- tabindex="-1"
4572
+ <button
4573
+ type="button"
4574
+ [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4575
+ [attr.aria-hidden]="true"
4576
+ [attr.aria-label]="incrementTitle"
4577
+ [title]="incrementTitle"
4578
+ class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4579
+ [class.k-active]="arrowDirection === ArrowDirection.Up"
4580
+ tabindex="-1"
4581
+ >
4582
+ <kendo-icon-wrapper
4583
+ name="caret-alt-up"
4584
+ innerCssClass="k-button-icon"
4585
+ [svgIcon]="arrowUpIcon"
4375
4586
  >
4376
- <kendo-icon-wrapper
4377
- name="caret-alt-up"
4378
- innerCssClass="k-button-icon"
4379
- [svgIcon]="arrowUpIcon"
4380
- >
4381
- </kendo-icon-wrapper>
4382
- </button>
4383
- <button
4384
- type="button"
4385
- [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4386
- [attr.aria-hidden]="true"
4387
- [attr.aria-label]="decrementTitle"
4388
- [title]="decrementTitle"
4389
- [class.k-active]="arrowDirection === ArrowDirection.Down"
4390
- class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4391
- tabindex="-1"
4587
+ </kendo-icon-wrapper>
4588
+ </button>
4589
+ <button
4590
+ type="button"
4591
+ [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4592
+ [attr.aria-hidden]="true"
4593
+ [attr.aria-label]="decrementTitle"
4594
+ [title]="decrementTitle"
4595
+ [class.k-active]="arrowDirection === ArrowDirection.Down"
4596
+ class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4597
+ tabindex="-1"
4598
+ >
4599
+ <kendo-icon-wrapper
4600
+ name="caret-alt-down"
4601
+ innerCssClass="k-button-icon"
4602
+ [svgIcon]="arrowDownIcon"
4392
4603
  >
4393
- <kendo-icon-wrapper
4394
- name="caret-alt-down"
4395
- innerCssClass="k-button-icon"
4396
- [svgIcon]="arrowDownIcon"
4397
- >
4398
4604
  </kendo-icon-wrapper>
4399
4605
  </button>
4400
4606
  </span>
4401
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: "[kendoNumericTextBoxLocalizedMessages]" }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4607
+ </ng-container>
4608
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }, { type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: "[kendoNumericTextBoxLocalizedMessages]" }, { type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
4402
4609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxComponent, decorators: [{
4403
4610
  type: Component,
4404
4611
  args: [{
@@ -4419,6 +4626,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4419
4626
  decrement="Decrease value"
4420
4627
  >
4421
4628
  </ng-container>
4629
+ <ng-container
4630
+ kendoInputSharedEvents
4631
+ [hostElement]="hostElement"
4632
+ [(isFocused)]="focused"
4633
+ (handleBlur)="handleBlur()"
4634
+ (onFocus)="handleFocus()"
4635
+ >
4636
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
4637
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
4638
+ </ng-template>
4639
+ </span>
4640
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
4422
4641
  <input
4423
4642
  role="spinbutton"
4424
4643
  class="k-input-inner"
@@ -4440,53 +4659,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4440
4659
  dragenter: handleDragEnter,
4441
4660
  keydown: handleKeyDown,
4442
4661
  input: handleInput,
4443
- focus: handleFocus,
4444
- blur: handleBlur,
4662
+ focus: handleInputFocus,
4663
+ blur: handleInputBlur,
4445
4664
  paste: handlePaste
4446
4665
  }"
4447
4666
  #numericInput />
4667
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate?.showSeparator"></kendo-input-separator>
4668
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
4669
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
4670
+ </ng-template>
4671
+ </span>
4448
4672
  <span
4449
4673
  class="k-input-spinner k-spin-button" *ngIf="spinners"
4450
4674
  [kendoEventsOutsideAngular]="{ mouseup: releaseArrow, mouseleave: releaseArrow }"
4451
4675
  >
4452
- <button
4453
- type="button"
4454
- [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4455
- [attr.aria-hidden]="true"
4456
- [attr.aria-label]="incrementTitle"
4457
- [title]="incrementTitle"
4458
- class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4459
- [class.k-active]="arrowDirection === ArrowDirection.Up"
4460
- tabindex="-1"
4676
+ <button
4677
+ type="button"
4678
+ [kendoEventsOutsideAngular]="{ mousedown: increasePress }"
4679
+ [attr.aria-hidden]="true"
4680
+ [attr.aria-label]="incrementTitle"
4681
+ [title]="incrementTitle"
4682
+ class="k-spinner-increase k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4683
+ [class.k-active]="arrowDirection === ArrowDirection.Up"
4684
+ tabindex="-1"
4685
+ >
4686
+ <kendo-icon-wrapper
4687
+ name="caret-alt-up"
4688
+ innerCssClass="k-button-icon"
4689
+ [svgIcon]="arrowUpIcon"
4461
4690
  >
4462
- <kendo-icon-wrapper
4463
- name="caret-alt-up"
4464
- innerCssClass="k-button-icon"
4465
- [svgIcon]="arrowUpIcon"
4466
- >
4467
- </kendo-icon-wrapper>
4468
- </button>
4469
- <button
4470
- type="button"
4471
- [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4472
- [attr.aria-hidden]="true"
4473
- [attr.aria-label]="decrementTitle"
4474
- [title]="decrementTitle"
4475
- [class.k-active]="arrowDirection === ArrowDirection.Down"
4476
- class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4477
- tabindex="-1"
4691
+ </kendo-icon-wrapper>
4692
+ </button>
4693
+ <button
4694
+ type="button"
4695
+ [kendoEventsOutsideAngular]="{ mousedown: decreasePress }"
4696
+ [attr.aria-hidden]="true"
4697
+ [attr.aria-label]="decrementTitle"
4698
+ [title]="decrementTitle"
4699
+ [class.k-active]="arrowDirection === ArrowDirection.Down"
4700
+ class="k-spinner-decrease k-button k-button-md k-icon-button k-button-solid k-button-solid-base"
4701
+ tabindex="-1"
4702
+ >
4703
+ <kendo-icon-wrapper
4704
+ name="caret-alt-down"
4705
+ innerCssClass="k-button-icon"
4706
+ [svgIcon]="arrowDownIcon"
4478
4707
  >
4479
- <kendo-icon-wrapper
4480
- name="caret-alt-down"
4481
- innerCssClass="k-button-icon"
4482
- [svgIcon]="arrowDownIcon"
4483
- >
4484
4708
  </kendo-icon-wrapper>
4485
4709
  </button>
4486
4710
  </span>
4487
- `
4711
+ </ng-container>
4712
+ `
4488
4713
  }]
4489
- }], ctorParameters: function () { return [{ type: i1$2.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
4714
+ }], ctorParameters: function () { return [{ type: i1$1.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
4490
4715
  type: Input
4491
4716
  }], disabled: [{
4492
4717
  type: Input
@@ -4538,9 +4763,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4538
4763
  }], onBlur: [{
4539
4764
  type: Output,
4540
4765
  args: ['blur']
4766
+ }], inputFocus: [{
4767
+ type: Output
4768
+ }], inputBlur: [{
4769
+ type: Output
4541
4770
  }], numericInput: [{
4542
4771
  type: ViewChild,
4543
4772
  args: ['numericInput', { static: true }]
4773
+ }], suffixTemplate: [{
4774
+ type: ContentChild,
4775
+ args: [SuffixTemplateDirective]
4776
+ }], prefixTemplate: [{
4777
+ type: ContentChild,
4778
+ args: [PrefixTemplateDirective]
4544
4779
  }], direction: [{
4545
4780
  type: HostBinding,
4546
4781
  args: ['attr.dir']
@@ -5053,7 +5288,7 @@ class MaskedTextBoxComponent {
5053
5288
  */
5054
5289
  this.focusableId = `k-${guid()}`;
5055
5290
  /**
5056
- * Determines whether the MaskedTextBox is disabled ([see example]({% slug disabled_maskedtextbox %})).
5291
+ * Determines whether the MaskedTextBox is disabled ([see example]({% slug disabled_maskedtextbox %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_maskedtextbox#toc-managing-the-maskedtextbox-disabled-state-in-reactive-forms).
5057
5292
  */
5058
5293
  this.disabled = false;
5059
5294
  /**
@@ -5090,7 +5325,7 @@ class MaskedTextBoxComponent {
5090
5325
  */
5091
5326
  this.tabindex = 0;
5092
5327
  /**
5093
- * Fires each time the user focuses the `input` element.
5328
+ * Fires each time the user focuses the MaskedTextBox component.
5094
5329
  *
5095
5330
  * > To wire the event programmatically, use the `onFocus` property.
5096
5331
  *
@@ -5111,7 +5346,7 @@ class MaskedTextBoxComponent {
5111
5346
  */
5112
5347
  this.onFocus = new EventEmitter();
5113
5348
  /**
5114
- * Fires each time the `input` element gets blurred.
5349
+ * Fires each time the MaskedTextBox component gets blurred.
5115
5350
  *
5116
5351
  * > To wire the event programmatically, use the `onBlur` property.
5117
5352
  *
@@ -5131,6 +5366,14 @@ class MaskedTextBoxComponent {
5131
5366
  * ```
5132
5367
  */
5133
5368
  this.onBlur = new EventEmitter();
5369
+ /**
5370
+ * Fires each time the user focuses the `input` element.
5371
+ */
5372
+ this.inputFocus = new EventEmitter();
5373
+ /**
5374
+ * Fires each time the `input` element gets blurred.
5375
+ */
5376
+ this.inputBlur = new EventEmitter();
5134
5377
  /**
5135
5378
  * Fires each time the value changes.
5136
5379
  */
@@ -5157,16 +5400,27 @@ class MaskedTextBoxComponent {
5157
5400
  * @hidden
5158
5401
  */
5159
5402
  this.handleFocus = () => {
5160
- this.focused = true;
5161
- if (this.maskOnFocus && this.emptyMask) {
5403
+ this.ngZone.run(() => {
5404
+ if (!this.focused && hasObservers(this.onFocus)) {
5405
+ this.onFocus.emit();
5406
+ }
5407
+ this.focused = true;
5408
+ });
5409
+ if (this.maskOnFocus && this.emptyMask) {
5162
5410
  this.updateInput(this.service.maskRaw(this.value));
5163
5411
  this.ngZone.runOutsideAngular(() => {
5164
5412
  setTimeout(() => { this.setSelection(0, 0); }, 0);
5165
5413
  });
5166
5414
  }
5167
- if (hasObservers(this.onFocus)) {
5415
+ };
5416
+ /**
5417
+ * @hidden
5418
+ */
5419
+ this.handleInputFocus = () => {
5420
+ this.handleFocus();
5421
+ if (hasObservers(this.inputFocus)) {
5168
5422
  this.ngZone.run(() => {
5169
- this.onFocus.emit();
5423
+ this.inputFocus.emit();
5170
5424
  });
5171
5425
  }
5172
5426
  };
@@ -5192,13 +5446,25 @@ class MaskedTextBoxComponent {
5192
5446
  if (this.maskOnFocus && this.emptyMask) {
5193
5447
  this.updateInput(this.maskedValue);
5194
5448
  }
5195
- if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {
5449
+ if (hasObservers(this.onBlur)) {
5196
5450
  this.ngZone.run(() => {
5197
5451
  this.onTouched();
5198
5452
  this.onBlur.emit();
5199
5453
  });
5200
5454
  }
5201
5455
  };
5456
+ /**
5457
+ * @hidden
5458
+ */
5459
+ this.handleInputBlur = () => {
5460
+ this.changeDetector.markForCheck();
5461
+ if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {
5462
+ this.ngZone.run(() => {
5463
+ this.onTouched();
5464
+ this.inputBlur.emit();
5465
+ });
5466
+ }
5467
+ };
5202
5468
  this.onChange = (_) => { };
5203
5469
  this.onTouched = () => { };
5204
5470
  validatePackage(packageMetadata);
@@ -5324,6 +5590,7 @@ class MaskedTextBoxComponent {
5324
5590
  return;
5325
5591
  }
5326
5592
  this.input.nativeElement.focus();
5593
+ this.focused = true;
5327
5594
  this.setFocusSelection();
5328
5595
  }
5329
5596
  /**
@@ -5334,6 +5601,7 @@ class MaskedTextBoxComponent {
5334
5601
  return;
5335
5602
  }
5336
5603
  this.input.nativeElement.blur();
5604
+ this.focused = false;
5337
5605
  }
5338
5606
  /**
5339
5607
  * @hidden
@@ -5515,9 +5783,15 @@ class MaskedTextBoxComponent {
5515
5783
  this.setSelection();
5516
5784
  }
5517
5785
  }
5786
+ /**
5787
+ * @hidden
5788
+ */
5518
5789
  get focused() {
5519
5790
  return this.isFocused;
5520
5791
  }
5792
+ /**
5793
+ * @hidden
5794
+ */
5521
5795
  set focused(value) {
5522
5796
  if (this.isFocused !== value && this.hostElement) {
5523
5797
  const element = this.hostElement.nativeElement;
@@ -5552,7 +5826,7 @@ class MaskedTextBoxComponent {
5552
5826
  }
5553
5827
  }
5554
5828
  MaskedTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxComponent, deps: [{ token: MaskingService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });
5555
- MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MaskedTextBoxComponent, selector: "kendo-maskedtextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", size: "size", rounded: "rounded", fillMode: "fillMode", mask: "mask", value: "value", rules: "rules", prompt: "prompt", promptPlaceholder: "promptPlaceholder", includeLiterals: "includeLiterals", maskOnFocus: "maskOnFocus", maskValidation: "maskValidation", tabindex: "tabindex", tabIndex: "tabIndex" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { listeners: { "paste": "pasteHandler($event)", "input": "inputHandler($event)" }, properties: { "attr.dir": "this.direction", "class.k-input": "this.hostClasses", "class.k-maskedtextbox": "this.hostClasses", "class.k-disabled": "this.hostDisabledClass" } }, providers: [
5829
+ MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MaskedTextBoxComponent, selector: "kendo-maskedtextbox", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", title: "title", size: "size", rounded: "rounded", fillMode: "fillMode", mask: "mask", value: "value", rules: "rules", prompt: "prompt", promptPlaceholder: "promptPlaceholder", includeLiterals: "includeLiterals", maskOnFocus: "maskOnFocus", maskValidation: "maskValidation", tabindex: "tabindex", tabIndex: "tabIndex" }, outputs: { onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur", valueChange: "valueChange" }, host: { listeners: { "paste": "pasteHandler($event)", "input": "inputHandler($event)" }, properties: { "attr.dir": "this.direction", "class.k-input": "this.hostClasses", "class.k-maskedtextbox": "this.hostClasses", "class.k-disabled": "this.hostDisabledClass" } }, providers: [
5556
5830
  MaskingService,
5557
5831
  {
5558
5832
  multi: true,
@@ -5568,30 +5842,48 @@ MaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
5568
5842
  provide: KendoInput,
5569
5843
  useExisting: forwardRef(() => MaskedTextBoxComponent)
5570
5844
  }
5571
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoMaskedTextBox"], usesOnChanges: true, ngImport: i0, template: `
5572
- <input type="text"
5573
- #input
5574
- autocomplete="off"
5575
- autocorrect="off"
5576
- autocapitalize="off"
5577
- spellcheck="false"
5578
- class="k-input-inner"
5579
- [id]="focusableId"
5580
- [tabindex]="tabIndex"
5581
- [attr.title]="title"
5582
- [attr.aria-placeholder]="mask"
5583
- [attr.aria-invalid]="isControlInvalid"
5584
- [disabled]="disabled"
5585
- [readonly]="readonly"
5586
- [kendoEventsOutsideAngular]="{
5587
- focus: handleFocus,
5588
- blur: handleBlur,
5589
- click: handleClick,
5590
- dragstart: handleDragDrop,
5591
- drop: handleDragDrop
5592
- }"
5593
- />
5594
- `, isInline: true, directives: [{ type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
5845
+ ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoMaskedTextBox"], usesOnChanges: true, ngImport: i0, template: `
5846
+ <ng-container
5847
+ kendoInputSharedEvents
5848
+ [hostElement]="hostElement"
5849
+ [(isFocused)]="focused"
5850
+ (handleBlur)="handleBlur()"
5851
+ (onFocus)="handleFocus()"
5852
+ >
5853
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
5854
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
5855
+ </ng-template>
5856
+ </span>
5857
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
5858
+ <input type="text"
5859
+ #input
5860
+ autocomplete="off"
5861
+ autocorrect="off"
5862
+ autocapitalize="off"
5863
+ spellcheck="false"
5864
+ class="k-input-inner"
5865
+ [id]="focusableId"
5866
+ [tabindex]="tabIndex"
5867
+ [attr.title]="title"
5868
+ [attr.aria-placeholder]="mask"
5869
+ [attr.aria-invalid]="isControlInvalid"
5870
+ [disabled]="disabled"
5871
+ [readonly]="readonly"
5872
+ [kendoEventsOutsideAngular]="{
5873
+ focus: handleInputFocus,
5874
+ blur: handleInputBlur,
5875
+ click: handleClick,
5876
+ dragstart: handleDragDrop,
5877
+ drop: handleDragDrop
5878
+ }"
5879
+ />
5880
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
5881
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
5882
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
5883
+ </ng-template>
5884
+ </span>
5885
+ </ng-container>
5886
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }], directives: [{ type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
5595
5887
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxComponent, decorators: [{
5596
5888
  type: Component,
5597
5889
  args: [{
@@ -5615,28 +5907,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5615
5907
  ],
5616
5908
  selector: 'kendo-maskedtextbox',
5617
5909
  template: `
5618
- <input type="text"
5619
- #input
5620
- autocomplete="off"
5621
- autocorrect="off"
5622
- autocapitalize="off"
5623
- spellcheck="false"
5624
- class="k-input-inner"
5625
- [id]="focusableId"
5626
- [tabindex]="tabIndex"
5627
- [attr.title]="title"
5628
- [attr.aria-placeholder]="mask"
5629
- [attr.aria-invalid]="isControlInvalid"
5630
- [disabled]="disabled"
5631
- [readonly]="readonly"
5632
- [kendoEventsOutsideAngular]="{
5633
- focus: handleFocus,
5634
- blur: handleBlur,
5635
- click: handleClick,
5636
- dragstart: handleDragDrop,
5637
- drop: handleDragDrop
5638
- }"
5639
- />
5910
+ <ng-container
5911
+ kendoInputSharedEvents
5912
+ [hostElement]="hostElement"
5913
+ [(isFocused)]="focused"
5914
+ (handleBlur)="handleBlur()"
5915
+ (onFocus)="handleFocus()"
5916
+ >
5917
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
5918
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
5919
+ </ng-template>
5920
+ </span>
5921
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
5922
+ <input type="text"
5923
+ #input
5924
+ autocomplete="off"
5925
+ autocorrect="off"
5926
+ autocapitalize="off"
5927
+ spellcheck="false"
5928
+ class="k-input-inner"
5929
+ [id]="focusableId"
5930
+ [tabindex]="tabIndex"
5931
+ [attr.title]="title"
5932
+ [attr.aria-placeholder]="mask"
5933
+ [attr.aria-invalid]="isControlInvalid"
5934
+ [disabled]="disabled"
5935
+ [readonly]="readonly"
5936
+ [kendoEventsOutsideAngular]="{
5937
+ focus: handleInputFocus,
5938
+ blur: handleInputBlur,
5939
+ click: handleClick,
5940
+ dragstart: handleDragDrop,
5941
+ drop: handleDragDrop
5942
+ }"
5943
+ />
5944
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
5945
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
5946
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
5947
+ </ng-template>
5948
+ </span>
5949
+ </ng-container>
5640
5950
  `
5641
5951
  }]
5642
5952
  }], ctorParameters: function () {
@@ -5686,6 +5996,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5686
5996
  }], onBlur: [{
5687
5997
  type: Output,
5688
5998
  args: ['blur']
5999
+ }], inputFocus: [{
6000
+ type: Output
6001
+ }], inputBlur: [{
6002
+ type: Output
5689
6003
  }], valueChange: [{
5690
6004
  type: Output
5691
6005
  }], direction: [{
@@ -5703,6 +6017,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5703
6017
  }], input: [{
5704
6018
  type: ViewChild,
5705
6019
  args: ['input', { static: true }]
6020
+ }], suffixTemplate: [{
6021
+ type: ContentChild,
6022
+ args: [SuffixTemplateDirective]
6023
+ }], prefixTemplate: [{
6024
+ type: ContentChild,
6025
+ args: [PrefixTemplateDirective]
5706
6026
  }], pasteHandler: [{
5707
6027
  type: HostListener,
5708
6028
  args: ['paste', ['$event']]
@@ -6020,6 +6340,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6020
6340
  }]
6021
6341
  }] });
6022
6342
 
6343
+ /**
6344
+ * @hidden
6345
+ */
6346
+ const SHARED_DIRECTIVES = [
6347
+ InputSeparatorComponent,
6348
+ TextAreaDirective
6349
+ ];
6350
+ /**
6351
+ * @hidden
6352
+ */
6353
+ class SharedModule {
6354
+ }
6355
+ SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6356
+ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,
6357
+ TextAreaDirective], exports: [InputSeparatorComponent,
6358
+ TextAreaDirective] });
6359
+ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule });
6360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
6361
+ type: NgModule,
6362
+ args: [{
6363
+ declarations: [SHARED_DIRECTIVES],
6364
+ exports: [SHARED_DIRECTIVES]
6365
+ }]
6366
+ }] });
6367
+
6368
+ /**
6369
+ * @hidden
6370
+ */
6371
+ class SharedEventsModule {
6372
+ }
6373
+ SharedEventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6374
+ SharedEventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, declarations: [SharedInputEventsDirective], exports: [SharedInputEventsDirective] });
6375
+ SharedEventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule });
6376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedEventsModule, decorators: [{
6377
+ type: NgModule,
6378
+ args: [{
6379
+ declarations: [SharedInputEventsDirective],
6380
+ exports: [SharedInputEventsDirective],
6381
+ }]
6382
+ }] });
6383
+
6023
6384
  /**
6024
6385
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
6025
6386
  * definition for the NumericTextBox component.
@@ -6056,9 +6417,10 @@ class NumericTextBoxModule {
6056
6417
  NumericTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6057
6418
  NumericTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, declarations: [LocalizedNumericTextBoxMessagesDirective,
6058
6419
  NumericTextBoxComponent,
6059
- NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule, IconsModule], exports: [NumericTextBoxComponent,
6060
- NumericTextBoxCustomMessagesComponent] });
6061
- NumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule, IconsModule]] });
6420
+ NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule], exports: [NumericTextBoxComponent,
6421
+ NumericTextBoxCustomMessagesComponent,
6422
+ AdornmentsModule] });
6423
+ NumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule], AdornmentsModule] });
6062
6424
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NumericTextBoxModule, decorators: [{
6063
6425
  type: NgModule,
6064
6426
  args: [{
@@ -6069,9 +6431,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6069
6431
  ],
6070
6432
  exports: [
6071
6433
  NumericTextBoxComponent,
6072
- NumericTextBoxCustomMessagesComponent
6434
+ NumericTextBoxCustomMessagesComponent,
6435
+ AdornmentsModule
6073
6436
  ],
6074
- imports: [CommonModule, EventsModule, IconsModule]
6437
+ imports: [CommonModule, EventsModule, IconsModule, SharedModule, AdornmentsModule, SharedEventsModule]
6075
6438
  }]
6076
6439
  }] });
6077
6440
 
@@ -6109,14 +6472,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6109
6472
  class MaskedTextBoxModule {
6110
6473
  }
6111
6474
  MaskedTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6112
- MaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule, EventsModule], exports: [MaskedTextBoxComponent] });
6113
- MaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, imports: [[CommonModule, EventsModule]] });
6475
+ MaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule,
6476
+ EventsModule,
6477
+ SharedModule,
6478
+ AdornmentsModule,
6479
+ SharedEventsModule], exports: [MaskedTextBoxComponent,
6480
+ AdornmentsModule] });
6481
+ MaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, imports: [[
6482
+ CommonModule,
6483
+ EventsModule,
6484
+ SharedModule,
6485
+ AdornmentsModule,
6486
+ SharedEventsModule
6487
+ ], AdornmentsModule] });
6114
6488
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MaskedTextBoxModule, decorators: [{
6115
6489
  type: NgModule,
6116
6490
  args: [{
6117
- declarations: [MaskedTextBoxComponent],
6118
- exports: [MaskedTextBoxComponent],
6119
- imports: [CommonModule, EventsModule]
6491
+ declarations: [
6492
+ MaskedTextBoxComponent
6493
+ ],
6494
+ exports: [
6495
+ MaskedTextBoxComponent,
6496
+ AdornmentsModule
6497
+ ],
6498
+ imports: [
6499
+ CommonModule,
6500
+ EventsModule,
6501
+ SharedModule,
6502
+ AdornmentsModule,
6503
+ SharedEventsModule
6504
+ ],
6120
6505
  }]
6121
6506
  }] });
6122
6507
 
@@ -6149,10 +6534,22 @@ const isJapanese = (input) => {
6149
6534
  class TextBoxSuffixTemplateDirective {
6150
6535
  constructor(templateRef) {
6151
6536
  this.templateRef = templateRef;
6537
+ this._showSeparator = false;
6538
+ }
6539
+ /**
6540
+ * Sets the `showSeparator` attribute of the `kendoTextBoxSuffixTemplate`.
6541
+ *
6542
+ * @default false
6543
+ */
6544
+ set showSeparator(value) {
6545
+ this._showSeparator = value;
6546
+ }
6547
+ get showSeparator() {
6548
+ return this._showSeparator;
6152
6549
  }
6153
6550
  }
6154
6551
  TextBoxSuffixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxSuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
6155
- TextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", ngImport: i0 });
6552
+ TextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
6156
6553
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxSuffixTemplateDirective, decorators: [{
6157
6554
  type: Directive,
6158
6555
  args: [{
@@ -6162,7 +6559,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6162
6559
  return [{ type: i0.TemplateRef, decorators: [{
6163
6560
  type: Optional
6164
6561
  }] }];
6165
- } });
6562
+ }, propDecorators: { showSeparator: [{
6563
+ type: Input
6564
+ }] } });
6166
6565
 
6167
6566
  /**
6168
6567
  * Specifies the adornments in the prefix container ([see examples]({% slug adornments_textbox %}#toc-prefixadornments)).
@@ -6184,10 +6583,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6184
6583
  class TextBoxPrefixTemplateDirective {
6185
6584
  constructor(templateRef) {
6186
6585
  this.templateRef = templateRef;
6586
+ this._showSeparator = false;
6587
+ }
6588
+ /**
6589
+ * Sets the `showSeparator` attribute of the `kendoTextBoxPrefixTemplate`.
6590
+ *
6591
+ * @default false
6592
+ */
6593
+ set showSeparator(value) {
6594
+ this._showSeparator = value;
6595
+ }
6596
+ get showSeparator() {
6597
+ return this._showSeparator;
6187
6598
  }
6188
6599
  }
6189
6600
  TextBoxPrefixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxPrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
6190
- TextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", ngImport: i0 });
6601
+ TextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxPrefixTemplateDirective, selector: "[kendoTextBoxPrefixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
6191
6602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxPrefixTemplateDirective, decorators: [{
6192
6603
  type: Directive,
6193
6604
  args: [{
@@ -6197,7 +6608,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6197
6608
  return [{ type: i0.TemplateRef, decorators: [{
6198
6609
  type: Optional
6199
6610
  }] }];
6200
- } });
6611
+ }, propDecorators: { showSeparator: [{
6612
+ type: Input
6613
+ }] } });
6201
6614
 
6202
6615
  /**
6203
6616
  * @hidden
@@ -6272,7 +6685,7 @@ class TextBoxComponent {
6272
6685
  */
6273
6686
  this.type = 'text';
6274
6687
  /**
6275
- * Sets the disabled state of the component.
6688
+ * Sets the disabled state of the TextBox. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_textbox#toc-managing-the-textbox-disabled-state-in-reactive-forms).
6276
6689
  *
6277
6690
  * @default false
6278
6691
  */
@@ -6404,12 +6817,8 @@ class TextBoxComponent {
6404
6817
  setTimeout(() => { this.selectAll(); });
6405
6818
  });
6406
6819
  }
6407
- if (hasObservers(this.onFocus)) {
6408
- if (!this.isFocused) {
6409
- this.ngZone.run(() => {
6410
- this.onFocus.emit();
6411
- });
6412
- }
6820
+ if (!this.isFocused) {
6821
+ this.handleFocus();
6413
6822
  }
6414
6823
  if (hasObservers(this.inputFocus)) {
6415
6824
  if (!this.focusChangedProgrammatically || (this.focusChangedProgrammatically && this.clearButtonClicked)) {
@@ -6418,9 +6827,6 @@ class TextBoxComponent {
6418
6827
  });
6419
6828
  }
6420
6829
  }
6421
- this.ngZone.run(() => {
6422
- this.isFocused = true;
6423
- });
6424
6830
  }
6425
6831
  };
6426
6832
  /**
@@ -6528,56 +6934,16 @@ class TextBoxComponent {
6528
6934
  });
6529
6935
  }
6530
6936
  ngAfterViewInit() {
6531
- const hostElement = this.hostElement.nativeElement;
6532
- let cursorInsideWrapper = false;
6533
- let tabbing = false;
6534
- this.ngZone.runOutsideAngular(() => {
6535
- // focusIn and focusOut are relative to the host element
6536
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
6537
- if (!this.isFocused) {
6538
- this.ngZone.run(() => {
6539
- this.onFocus.emit();
6540
- this.isFocused = true;
6541
- });
6542
- }
6543
- }));
6544
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
6545
- if (!this.isFocused) {
6546
- return;
6547
- }
6548
- if (tabbing) {
6549
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
6550
- if (!closestTextbox) {
6551
- this.handleBlur();
6552
- }
6553
- tabbing = false;
6554
- }
6555
- else {
6556
- if (!cursorInsideWrapper && !this.clearButtonClicked) {
6557
- this.handleBlur();
6558
- }
6559
- }
6560
- }));
6561
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
6562
- cursorInsideWrapper = true;
6563
- }));
6564
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
6565
- cursorInsideWrapper = false;
6566
- }));
6567
- this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
6568
- if (args.keyCode === Keys.Tab) {
6569
- tabbing = true;
6570
- }
6571
- else {
6572
- tabbing = false;
6573
- }
6574
- }));
6575
- });
6576
6937
  const stylingInputs = ['size', 'rounded', 'fillMode'];
6577
6938
  stylingInputs.forEach(input => {
6578
6939
  this.handleClasses(this[input], input);
6579
6940
  });
6580
6941
  }
6942
+ ngAfterContentInit() {
6943
+ this.configureAdornments();
6944
+ this.subscriptions.add(this.textBoxPrefixTemplate.changes.subscribe(this.configureAdornments.bind(this)));
6945
+ this.subscriptions.add(this.textBoxSuffixTemplate.changes.subscribe(this.configureAdornments.bind(this)));
6946
+ }
6581
6947
  ngOnChanges(changes) {
6582
6948
  if (changes['disabled'] || changes['readonly'] || changes['value']) {
6583
6949
  this.checkClearButton();
@@ -6780,6 +7146,27 @@ class TextBoxComponent {
6780
7146
  ? this.showSuccessInitial()
6781
7147
  : this.showSuccessIcon;
6782
7148
  }
7149
+ /**
7150
+ * @hidden
7151
+ */
7152
+ get isFocused() {
7153
+ return this._isFocused;
7154
+ }
7155
+ /**
7156
+ * @hidden
7157
+ */
7158
+ set isFocused(value) {
7159
+ if (this._isFocused !== value && this.hostElement) {
7160
+ const element = this.hostElement.nativeElement;
7161
+ if (value && !this.disabled) {
7162
+ this.renderer.addClass(element, FOCUSED$1);
7163
+ }
7164
+ else {
7165
+ this.renderer.removeClass(element, FOCUSED$1);
7166
+ }
7167
+ this._isFocused = value;
7168
+ }
7169
+ }
6783
7170
  setSelection(start, end) {
6784
7171
  if (this.isFocused) {
6785
7172
  invokeElementMethod(this.input, 'setSelectionRange', start, end);
@@ -6801,21 +7188,20 @@ class TextBoxComponent {
6801
7188
  });
6802
7189
  }
6803
7190
  }
6804
- get isFocused() {
6805
- return this._isFocused;
6806
- }
6807
- set isFocused(value) {
6808
- if (this._isFocused !== value && this.hostElement) {
6809
- const element = this.hostElement.nativeElement;
6810
- if (value && !this.disabled) {
6811
- this.renderer.addClass(element, FOCUSED$1);
6812
- }
6813
- else {
6814
- this.renderer.removeClass(element, FOCUSED$1);
7191
+ /**
7192
+ * @hidden
7193
+ */
7194
+ handleFocus() {
7195
+ this.ngZone.run(() => {
7196
+ if (!this.focusChangedProgrammatically && hasObservers(this.onFocus)) {
7197
+ this.onFocus.emit();
6815
7198
  }
6816
- this._isFocused = value;
6817
- }
7199
+ this.isFocused = true;
7200
+ });
6818
7201
  }
7202
+ /**
7203
+ * @hidden
7204
+ */
6819
7205
  handleBlur() {
6820
7206
  this.ngZone.run(() => {
6821
7207
  if (!this.focusChangedProgrammatically) {
@@ -6834,6 +7220,14 @@ class TextBoxComponent {
6834
7220
  this.renderer.addClass(elem, classes.toAdd);
6835
7221
  }
6836
7222
  }
7223
+ configureAdornments() {
7224
+ if (isPresent(this.textBoxPrefixTemplate.first)) {
7225
+ this.prefixTemplate = this.textBoxPrefixTemplate.first;
7226
+ }
7227
+ if (isPresent(this.textBoxSuffixTemplate.first)) {
7228
+ this.suffixTemplate = this.textBoxSuffixTemplate.first;
7229
+ }
7230
+ }
6837
7231
  }
6838
7232
  TextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
6839
7233
  TextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextBoxComponent, selector: "kendo-textbox", inputs: { focusableId: "focusableId", title: "title", type: "type", disabled: "disabled", readonly: "readonly", tabindex: "tabindex", value: "value", selectOnFocus: "selectOnFocus", showSuccessIcon: "showSuccessIcon", showErrorIcon: "showErrorIcon", clearButton: "clearButton", successIcon: "successIcon", successSvgIcon: "successSvgIcon", errorIcon: "errorIcon", errorSvgIcon: "errorSvgIcon", clearButtonIcon: "clearButtonIcon", clearButtonSvgIcon: "clearButtonSvgIcon", size: "size", rounded: "rounded", fillMode: "fillMode", tabIndex: "tabIndex", placeholder: "placeholder", maxlength: "maxlength" }, outputs: { valueChange: "valueChange", inputFocus: "inputFocus", inputBlur: "inputBlur", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-disabled": "this.disabledClass", "class.k-textbox": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.direction" } }, providers: [
@@ -6845,78 +7239,85 @@ TextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
6845
7239
  multi: true
6846
7240
  },
6847
7241
  { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }
6848
- ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: TextBoxSuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: TextBoxPrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoTextBox"], usesOnChanges: true, ngImport: i0, template: `
7242
+ ], queries: [{ propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }, { propertyName: "textBoxSuffixTemplate", predicate: TextBoxSuffixTemplateDirective }, { propertyName: "textBoxPrefixTemplate", predicate: TextBoxPrefixTemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], exportAs: ["kendoTextBox"], usesOnChanges: true, ngImport: i0, template: `
6849
7243
  <ng-container kendoTextBoxLocalizedMessages
6850
7244
  i18n-clear="kendo.textbox.clear|The title for the **Clear** button in the TextBox."
6851
7245
  clear="Clear">
6852
7246
  </ng-container>
6853
- <span class="k-input-prefix">
6854
- <ng-template
6855
- *ngIf="prefixTemplate"
6856
- [ngTemplateOutlet]="prefixTemplate?.templateRef">
6857
- </ng-template>
6858
- </span>
6859
- <input #input
6860
- class="k-input-inner"
6861
- [id]="focusableId"
6862
- [disabled]="disabled"
6863
- [readonly]="readonly"
6864
- [attr.tabindex]="disabled ? undefined : tabindex"
6865
- [value]="value"
6866
- [attr.type]="type"
6867
- [attr.placeholder]="placeholder"
6868
- [attr.title]="title"
6869
- [attr.maxlength]="maxlength"
6870
- [attr.aria-invalid]="isControlInvalid"
6871
- [kendoEventsOutsideAngular]="{
6872
- focus: handleInputFocus,
6873
- blur: handleInputBlur,
6874
- input: handleInput}"
6875
- />
6876
- <span
6877
- role="button"
6878
- class="k-clear-value"
6879
- *ngIf="showClearButton"
6880
- (click)="clearValue()"
6881
- (mousedown)="$event.preventDefault()"
6882
- [tabindex]="tabIndex"
6883
- [attr.aria-label]="clearTitle()"
6884
- [title]="clearTitle()"
6885
- (keydown.enter)="clearValue($event)"
6886
- (keydown.space)="clearValue($event)">
6887
- <kendo-icon-wrapper
6888
- [name]="clearButtonClass"
6889
- [customFontClass]="customClearButtonClasses"
6890
- [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
6891
- >
6892
- </kendo-icon-wrapper>
6893
- </span>
6894
- <kendo-icon-wrapper
6895
- *ngIf="hasErrors"
6896
- innerCssClass="k-input-validation-icon"
6897
- [name]="errorIconClasses"
6898
- [customFontClass]="customIconClasses"
6899
- [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
6900
- >
6901
- </kendo-icon-wrapper>
6902
- <kendo-icon-wrapper
6903
- *ngIf="isSuccessful"
6904
- innerCssClass="k-input-validation-icon"
6905
- [name]="successIconClasses"
6906
- [customFontClass]="customSuccessIconClasses"
6907
- [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7247
+ <ng-container
7248
+ kendoInputSharedEvents
7249
+ [hostElement]="hostElement"
7250
+ [(isFocused)]="isFocused"
7251
+ (handleBlur)="handleBlur()"
7252
+ (onFocus)="handleFocus()"
7253
+ [clearButtonClicked]="clearButtonClicked"
6908
7254
  >
6909
- </kendo-icon-wrapper>
6910
- <span class="k-input-suffix">
6911
- <ng-template
6912
- *ngIf="suffixTemplate"
6913
- [ngTemplateOutlet]="suffixTemplate?.templateRef">
6914
- </ng-template>
6915
- </span>
6916
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedTextBoxMessagesDirective, selector: "[kendoTextBoxLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
6917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, decorators: [{
6918
- type: Component,
6919
- args: [{
7255
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
7256
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
7257
+ </ng-template>
7258
+ </span>
7259
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
7260
+ <input #input
7261
+ class="k-input-inner"
7262
+ [id]="focusableId"
7263
+ [disabled]="disabled"
7264
+ [readonly]="readonly"
7265
+ [attr.tabindex]="disabled ? undefined : tabindex"
7266
+ [value]="value"
7267
+ [attr.type]="type"
7268
+ [attr.placeholder]="placeholder"
7269
+ [attr.title]="title"
7270
+ [attr.maxlength]="maxlength"
7271
+ [attr.aria-invalid]="isControlInvalid"
7272
+ [kendoEventsOutsideAngular]="{
7273
+ focus: handleInputFocus,
7274
+ blur: handleInputBlur,
7275
+ input: handleInput}"
7276
+ />
7277
+ <span
7278
+ role="button"
7279
+ class="k-clear-value"
7280
+ *ngIf="showClearButton"
7281
+ (click)="clearValue()"
7282
+ (mousedown)="$event.preventDefault()"
7283
+ [tabindex]="tabIndex"
7284
+ [attr.aria-label]="clearTitle()"
7285
+ [title]="clearTitle()"
7286
+ (keydown.enter)="clearValue($event)"
7287
+ (keydown.space)="clearValue($event)">
7288
+ <kendo-icon-wrapper
7289
+ [name]="clearButtonClass"
7290
+ [customFontClass]="customClearButtonClasses"
7291
+ [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
7292
+ >
7293
+ </kendo-icon-wrapper>
7294
+ </span>
7295
+ <kendo-icon-wrapper
7296
+ *ngIf="hasErrors"
7297
+ innerCssClass="k-input-validation-icon"
7298
+ [name]="errorIconClasses"
7299
+ [customFontClass]="customIconClasses"
7300
+ [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7301
+ >
7302
+ </kendo-icon-wrapper>
7303
+ <kendo-icon-wrapper
7304
+ *ngIf="isSuccessful"
7305
+ innerCssClass="k-input-validation-icon"
7306
+ [name]="successIconClasses"
7307
+ [customFontClass]="customSuccessIconClasses"
7308
+ [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7309
+ >
7310
+ </kendo-icon-wrapper>
7311
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
7312
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
7313
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
7314
+ </ng-template>
7315
+ </span>
7316
+ <ng-container>
7317
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }, { type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedTextBoxMessagesDirective, selector: "[kendoTextBoxLocalizedMessages]" }, { type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
7318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxComponent, decorators: [{
7319
+ type: Component,
7320
+ args: [{
6920
7321
  exportAs: 'kendoTextBox',
6921
7322
  providers: [
6922
7323
  LocalizationService,
@@ -6934,69 +7335,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6934
7335
  i18n-clear="kendo.textbox.clear|The title for the **Clear** button in the TextBox."
6935
7336
  clear="Clear">
6936
7337
  </ng-container>
6937
- <span class="k-input-prefix">
6938
- <ng-template
6939
- *ngIf="prefixTemplate"
6940
- [ngTemplateOutlet]="prefixTemplate?.templateRef">
6941
- </ng-template>
6942
- </span>
6943
- <input #input
6944
- class="k-input-inner"
6945
- [id]="focusableId"
6946
- [disabled]="disabled"
6947
- [readonly]="readonly"
6948
- [attr.tabindex]="disabled ? undefined : tabindex"
6949
- [value]="value"
6950
- [attr.type]="type"
6951
- [attr.placeholder]="placeholder"
6952
- [attr.title]="title"
6953
- [attr.maxlength]="maxlength"
6954
- [attr.aria-invalid]="isControlInvalid"
6955
- [kendoEventsOutsideAngular]="{
6956
- focus: handleInputFocus,
6957
- blur: handleInputBlur,
6958
- input: handleInput}"
6959
- />
6960
- <span
6961
- role="button"
6962
- class="k-clear-value"
6963
- *ngIf="showClearButton"
6964
- (click)="clearValue()"
6965
- (mousedown)="$event.preventDefault()"
6966
- [tabindex]="tabIndex"
6967
- [attr.aria-label]="clearTitle()"
6968
- [title]="clearTitle()"
6969
- (keydown.enter)="clearValue($event)"
6970
- (keydown.space)="clearValue($event)">
6971
- <kendo-icon-wrapper
6972
- [name]="clearButtonClass"
6973
- [customFontClass]="customClearButtonClasses"
6974
- [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
6975
- >
6976
- </kendo-icon-wrapper>
6977
- </span>
6978
- <kendo-icon-wrapper
6979
- *ngIf="hasErrors"
6980
- innerCssClass="k-input-validation-icon"
6981
- [name]="errorIconClasses"
6982
- [customFontClass]="customIconClasses"
6983
- [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7338
+ <ng-container
7339
+ kendoInputSharedEvents
7340
+ [hostElement]="hostElement"
7341
+ [(isFocused)]="isFocused"
7342
+ (handleBlur)="handleBlur()"
7343
+ (onFocus)="handleFocus()"
7344
+ [clearButtonClicked]="clearButtonClicked"
6984
7345
  >
6985
- </kendo-icon-wrapper>
6986
- <kendo-icon-wrapper
6987
- *ngIf="isSuccessful"
6988
- innerCssClass="k-input-validation-icon"
6989
- [name]="successIconClasses"
6990
- [customFontClass]="customSuccessIconClasses"
6991
- [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
6992
- >
6993
- </kendo-icon-wrapper>
6994
- <span class="k-input-suffix">
6995
- <ng-template
6996
- *ngIf="suffixTemplate"
6997
- [ngTemplateOutlet]="suffixTemplate?.templateRef">
6998
- </ng-template>
6999
- </span>
7346
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
7347
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
7348
+ </ng-template>
7349
+ </span>
7350
+ <kendo-input-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-input-separator>
7351
+ <input #input
7352
+ class="k-input-inner"
7353
+ [id]="focusableId"
7354
+ [disabled]="disabled"
7355
+ [readonly]="readonly"
7356
+ [attr.tabindex]="disabled ? undefined : tabindex"
7357
+ [value]="value"
7358
+ [attr.type]="type"
7359
+ [attr.placeholder]="placeholder"
7360
+ [attr.title]="title"
7361
+ [attr.maxlength]="maxlength"
7362
+ [attr.aria-invalid]="isControlInvalid"
7363
+ [kendoEventsOutsideAngular]="{
7364
+ focus: handleInputFocus,
7365
+ blur: handleInputBlur,
7366
+ input: handleInput}"
7367
+ />
7368
+ <span
7369
+ role="button"
7370
+ class="k-clear-value"
7371
+ *ngIf="showClearButton"
7372
+ (click)="clearValue()"
7373
+ (mousedown)="$event.preventDefault()"
7374
+ [tabindex]="tabIndex"
7375
+ [attr.aria-label]="clearTitle()"
7376
+ [title]="clearTitle()"
7377
+ (keydown.enter)="clearValue($event)"
7378
+ (keydown.space)="clearValue($event)">
7379
+ <kendo-icon-wrapper
7380
+ [name]="clearButtonClass"
7381
+ [customFontClass]="customClearButtonClasses"
7382
+ [svgIcon]="clearButtonSvgIcon || svgIcon('xIcon')"
7383
+ >
7384
+ </kendo-icon-wrapper>
7385
+ </span>
7386
+ <kendo-icon-wrapper
7387
+ *ngIf="hasErrors"
7388
+ innerCssClass="k-input-validation-icon"
7389
+ [name]="errorIconClasses"
7390
+ [customFontClass]="customIconClasses"
7391
+ [svgIcon]="errorSvgIcon || svgIcon('exclamationCircleIcon')"
7392
+ >
7393
+ </kendo-icon-wrapper>
7394
+ <kendo-icon-wrapper
7395
+ *ngIf="isSuccessful"
7396
+ innerCssClass="k-input-validation-icon"
7397
+ [name]="successIconClasses"
7398
+ [customFontClass]="customSuccessIconClasses"
7399
+ [svgIcon]="successSvgIcon || svgIcon('checkIcon')"
7400
+ >
7401
+ </kendo-icon-wrapper>
7402
+ <kendo-input-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-input-separator>
7403
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
7404
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
7405
+ </ng-template>
7406
+ </span>
7407
+ <ng-container>
7000
7408
  `
7001
7409
  }]
7002
7410
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
@@ -7060,12 +7468,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7060
7468
  }], input: [{
7061
7469
  type: ViewChild,
7062
7470
  args: ['input', { static: true }]
7471
+ }], textBoxSuffixTemplate: [{
7472
+ type: ContentChildren,
7473
+ args: [TextBoxSuffixTemplateDirective, { descendants: false }]
7474
+ }], textBoxPrefixTemplate: [{
7475
+ type: ContentChildren,
7476
+ args: [TextBoxPrefixTemplateDirective, { descendants: false }]
7063
7477
  }], suffixTemplate: [{
7064
7478
  type: ContentChild,
7065
- args: [TextBoxSuffixTemplateDirective, { static: false }]
7479
+ args: [SuffixTemplateDirective]
7066
7480
  }], prefixTemplate: [{
7067
7481
  type: ContentChild,
7068
- args: [TextBoxPrefixTemplateDirective, { static: false }]
7482
+ args: [PrefixTemplateDirective]
7069
7483
  }], disabledClass: [{
7070
7484
  type: HostBinding,
7071
7485
  args: ['class.k-disabled']
@@ -7113,67 +7527,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7113
7527
  }]
7114
7528
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
7115
7529
 
7116
- /**
7117
- * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).
7118
- * @example
7119
- * ```ts-no-run
7120
- * _@Component({
7121
- * selector: 'my-app',
7122
- * template: `
7123
- * <kendo-textbox>
7124
- * <ng-template kendoTextBoxSuffixTemplate>
7125
- * <kendo-input-separator></kendo-input-separator>
7126
- * <button kendoButton look="clear" icon="image"></button>
7127
- * </ng-template>
7128
- * </kendo-textbox>
7129
- * `
7130
- * })
7131
- * class AppComponent {}
7132
- * ```
7133
- */
7134
- class InputSeparatorComponent {
7135
- constructor() {
7136
- this.hostClass = true;
7137
- }
7138
- }
7139
- InputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7140
- InputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", host: { properties: { "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
7141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: InputSeparatorComponent, decorators: [{
7142
- type: Component,
7143
- args: [{
7144
- selector: 'kendo-input-separator, kendo-textbox-separator',
7145
- template: ``
7146
- }]
7147
- }], propDecorators: { hostClass: [{
7148
- type: HostBinding,
7149
- args: ['class.k-input-separator']
7150
- }] } });
7151
-
7152
- /**
7153
- * @hidden
7154
- */
7155
- const SHARED_DIRECTIVES = [
7156
- InputSeparatorComponent,
7157
- TextAreaDirective
7158
- ];
7159
- /**
7160
- * @hidden
7161
- */
7162
- class SharedModule {
7163
- }
7164
- SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7165
- SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,
7166
- TextAreaDirective], exports: [InputSeparatorComponent,
7167
- TextAreaDirective] });
7168
- SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule });
7169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SharedModule, decorators: [{
7170
- type: NgModule,
7171
- args: [{
7172
- declarations: [SHARED_DIRECTIVES],
7173
- exports: [SHARED_DIRECTIVES]
7174
- }]
7175
- }] });
7176
-
7177
7530
  /**
7178
7531
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
7179
7532
  * definition for the TextBox directive.
@@ -7213,14 +7566,16 @@ TextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
7213
7566
  TextBoxSuffixTemplateDirective,
7214
7567
  TextBoxPrefixTemplateDirective,
7215
7568
  TextBoxCustomMessagesComponent,
7216
- LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule, IconsModule], exports: [TextBoxDirective,
7569
+ LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule], exports: [TextBoxDirective,
7217
7570
  TextBoxComponent,
7218
7571
  TextBoxSuffixTemplateDirective,
7219
7572
  TextBoxPrefixTemplateDirective,
7220
7573
  EventsModule,
7221
7574
  TextBoxCustomMessagesComponent,
7222
- LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective] });
7223
- TextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule, IconsModule], EventsModule] });
7575
+ LocalizedTextBoxMessagesDirective,
7576
+ AdornmentsModule, InputSeparatorComponent, TextAreaDirective] });
7577
+ TextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule], EventsModule,
7578
+ AdornmentsModule] });
7224
7579
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextBoxModule, decorators: [{
7225
7580
  type: NgModule,
7226
7581
  args: [{
@@ -7240,9 +7595,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7240
7595
  EventsModule,
7241
7596
  TextBoxCustomMessagesComponent,
7242
7597
  LocalizedTextBoxMessagesDirective,
7598
+ AdornmentsModule,
7243
7599
  SHARED_DIRECTIVES
7244
7600
  ],
7245
- imports: [CommonModule, EventsModule, SharedModule, IconsModule]
7601
+ imports: [CommonModule, EventsModule, SharedModule, IconsModule, AdornmentsModule, SharedEventsModule]
7246
7602
  }]
7247
7603
  }] });
7248
7604
 
@@ -7262,7 +7618,7 @@ class TextFieldsBase {
7262
7618
  */
7263
7619
  this.title = '';
7264
7620
  /**
7265
- * Sets the disabled state of the TextArea component.
7621
+ * Sets the disabled state of the TextArea component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_textarea#toc-managing-the-textarea-disabled-state-in-reactive-forms).
7266
7622
  *
7267
7623
  * @default false
7268
7624
  */
@@ -7364,6 +7720,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7364
7720
  args: ['attr.dir']
7365
7721
  }] } });
7366
7722
 
7723
+ /**
7724
+ * Specifies the adornments in the prefix container ([see example]({% slug textarea_adornments %})).
7725
+ * ```ts-no-run
7726
+ * _@Component({
7727
+ * selector: 'my-app',
7728
+ * template: `
7729
+ * <kendo-textarea>
7730
+ * <kendo-textarea-prefix>
7731
+ * <button kendoButton look="clear" icon="image"></button>
7732
+ * </kendo-textarea-prefix>
7733
+ * </kendo-textarea>
7734
+ * `
7735
+ * })
7736
+ * class AppComponent {}
7737
+ * ```
7738
+ */
7739
+ class TextAreaPrefixComponent {
7740
+ constructor() {
7741
+ /**
7742
+ * @hidden
7743
+ */
7744
+ this.flow = 'vertical';
7745
+ /**
7746
+ * @hidden
7747
+ */
7748
+ this.orientation = 'horizontal';
7749
+ this.hostClass = true;
7750
+ }
7751
+ get verticalOrientation() {
7752
+ return this.orientation === 'vertical';
7753
+ }
7754
+ get horizontalOrientation() {
7755
+ return this.orientation === 'horizontal';
7756
+ }
7757
+ get alignItems() {
7758
+ return this.flow === this.orientation;
7759
+ }
7760
+ }
7761
+ TextAreaPrefixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaPrefixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7762
+ TextAreaPrefixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaPrefixComponent, selector: "kendo-textarea-prefix", inputs: { flow: "flow", orientation: "orientation" }, host: { properties: { "class.k-input-prefix": "this.hostClass", "class.k-input-prefix-vertical": "this.verticalOrientation", "class.k-input-prefix-horizontal": "this.horizontalOrientation", "class.!k-align-items-start": "this.alignItems" } }, exportAs: ["kendoTextAreaPrefix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7763
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaPrefixComponent, decorators: [{
7764
+ type: Component,
7765
+ args: [{
7766
+ exportAs: 'kendoTextAreaPrefix',
7767
+ selector: 'kendo-textarea-prefix',
7768
+ template: `<ng-content></ng-content>`
7769
+ }]
7770
+ }], propDecorators: { flow: [{
7771
+ type: Input
7772
+ }], orientation: [{
7773
+ type: Input
7774
+ }], hostClass: [{
7775
+ type: HostBinding,
7776
+ args: ['class.k-input-prefix']
7777
+ }], verticalOrientation: [{
7778
+ type: HostBinding,
7779
+ args: ['class.k-input-prefix-vertical']
7780
+ }], horizontalOrientation: [{
7781
+ type: HostBinding,
7782
+ args: ['class.k-input-prefix-horizontal']
7783
+ }], alignItems: [{
7784
+ type: HostBinding,
7785
+ args: ['class.!k-align-items-start']
7786
+ }] } });
7787
+
7788
+ /**
7789
+ * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).
7790
+ * ```ts-no-run
7791
+ * _@Component({
7792
+ * selector: 'my-app',
7793
+ * template: `
7794
+ * <kendo-textarea>
7795
+ * <kendo-textarea-suffix>
7796
+ * <button kendoButton look="clear" icon="image"></button>
7797
+ * </kendo-textarea-suffix>
7798
+ * </kendo-textarea>
7799
+ * `
7800
+ * })
7801
+ * class AppComponent {}
7802
+ * ```
7803
+ */
7804
+ class TextAreaSuffixComponent {
7805
+ constructor() {
7806
+ /**
7807
+ * @hidden
7808
+ */
7809
+ this.flow = 'vertical';
7810
+ /**
7811
+ * @hidden
7812
+ */
7813
+ this.orientation = 'horizontal';
7814
+ this.hostClass = true;
7815
+ }
7816
+ get verticalOrientation() {
7817
+ return this.orientation === 'vertical';
7818
+ }
7819
+ get horizontalOrientation() {
7820
+ return this.orientation === 'horizontal';
7821
+ }
7822
+ get alignItems() {
7823
+ return this.flow === this.orientation;
7824
+ }
7825
+ }
7826
+ TextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7827
+ TextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaSuffixComponent, selector: "kendo-textarea-suffix", inputs: { flow: "flow", orientation: "orientation" }, host: { properties: { "class.k-input-suffix": "this.hostClass", "class.k-input-suffix-vertical": "this.verticalOrientation", "class.k-input-suffix-horizontal": "this.horizontalOrientation", "class.!k-align-items-start": "this.alignItems" } }, exportAs: ["kendoTextAreaSuffix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{
7829
+ type: Component,
7830
+ args: [{
7831
+ exportAs: 'kendoTextAreaSuffix',
7832
+ selector: 'kendo-textarea-suffix',
7833
+ template: `<ng-content></ng-content>`
7834
+ }]
7835
+ }], propDecorators: { flow: [{
7836
+ type: Input
7837
+ }], orientation: [{
7838
+ type: Input
7839
+ }], hostClass: [{
7840
+ type: HostBinding,
7841
+ args: ['class.k-input-suffix']
7842
+ }], verticalOrientation: [{
7843
+ type: HostBinding,
7844
+ args: ['class.k-input-suffix-vertical']
7845
+ }], horizontalOrientation: [{
7846
+ type: HostBinding,
7847
+ args: ['class.k-input-suffix-horizontal']
7848
+ }], alignItems: [{
7849
+ type: HostBinding,
7850
+ args: ['class.!k-align-items-start']
7851
+ }] } });
7852
+
7367
7853
  const resizeClasses = {
7368
7854
  'vertical': 'k-resize-y',
7369
7855
  'horizontal': 'k-resize-x',
@@ -7392,15 +7878,7 @@ class TextAreaComponent extends TextFieldsBase {
7392
7878
  */
7393
7879
  this.focusableId = `k-${guid()}`;
7394
7880
  this.hostClasses = true;
7395
- /**
7396
- * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify
7397
- * their position in relation to the textarea element.
7398
- *
7399
- * The possible values are:
7400
- * * `vertical`(Default) &mdash;TextArea sections are placed from top to bottom.
7401
- * * `horizontal`&mdash;TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.
7402
- */
7403
- this.flow = 'vertical';
7881
+ this._flow = 'vertical';
7404
7882
  /**
7405
7883
  * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
7406
7884
  */
@@ -7417,6 +7895,20 @@ class TextAreaComponent extends TextFieldsBase {
7417
7895
  *
7418
7896
  */
7419
7897
  this.resizable = 'vertical';
7898
+ /**
7899
+ * Specifies whether the prefix separator of the TextArea is rendered.
7900
+ * If a prefix template is not declared, the separator will not be rendered, regardless of the parameter value.
7901
+ *
7902
+ * @default false
7903
+ */
7904
+ this.showPrefixSeparator = false;
7905
+ /**
7906
+ * Specifies whether the suffix separator of the TextArea is rendered.
7907
+ * If a suffix template is not declared, the separator will not be rendered, regardless of the parameter value.
7908
+ *
7909
+ * @default false
7910
+ */
7911
+ this.showSuffixSeparator = false;
7420
7912
  /**
7421
7913
  * Fires each time the user focuses the TextArea component.
7422
7914
  *
@@ -7468,6 +7960,7 @@ class TextAreaComponent extends TextFieldsBase {
7468
7960
  this._size = 'medium';
7469
7961
  this._rounded = 'medium';
7470
7962
  this._fillMode = 'solid';
7963
+ this._adornmentsOrientation = 'horizontal';
7471
7964
  /**
7472
7965
  * @hidden
7473
7966
  */
@@ -7486,12 +7979,8 @@ class TextAreaComponent extends TextFieldsBase {
7486
7979
  setTimeout(() => { this.selectAll(); });
7487
7980
  });
7488
7981
  }
7489
- if (hasObservers(this.onFocus)) {
7490
- if (!this.isFocused) {
7491
- this.ngZone.run(() => {
7492
- this.onFocus.emit();
7493
- });
7494
- }
7982
+ if (!this.isFocused) {
7983
+ this.handleFocus();
7495
7984
  }
7496
7985
  if (hasObservers(this.inputFocus)) {
7497
7986
  if (!this.focusChangedProgrammatically) {
@@ -7500,9 +7989,6 @@ class TextAreaComponent extends TextFieldsBase {
7500
7989
  });
7501
7990
  }
7502
7991
  }
7503
- this.ngZone.run(() => {
7504
- this.isFocused = true;
7505
- });
7506
7992
  }
7507
7993
  };
7508
7994
  validatePackage(packageMetadata);
@@ -7514,6 +8000,46 @@ class TextAreaComponent extends TextFieldsBase {
7514
8000
  get flowRow() {
7515
8001
  return this.flow === 'horizontal';
7516
8002
  }
8003
+ /**
8004
+ * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify
8005
+ * their position in relation to the textarea element.
8006
+ *
8007
+ * The possible values are:
8008
+ * * `vertical`(Default) &mdash;TextArea sections are placed from top to bottom.
8009
+ * * `horizontal`&mdash;TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.
8010
+ */
8011
+ set flow(flow) {
8012
+ this._flow = flow;
8013
+ if (this.prefix) {
8014
+ this.prefix.flow = flow;
8015
+ }
8016
+ if (this.suffix) {
8017
+ this.suffix.flow = flow;
8018
+ }
8019
+ }
8020
+ get flow() {
8021
+ return this._flow;
8022
+ }
8023
+ /**
8024
+ * Specifies the orientation of the TextArea adornments. This property is used in order to specify
8025
+ * the adornments' position relative to themselves.
8026
+ *
8027
+ * The possible values are:
8028
+ * * `horizontal`(Default) &mdash;TextArea adornments are placed from left to right in `ltr`, and from right to left in `rtl` mode.
8029
+ * * `vertical`&mdash;TextArea adornments are placed from top to bottom.
8030
+ */
8031
+ set adornmentsOrientation(orientation) {
8032
+ this._adornmentsOrientation = orientation;
8033
+ if (this.prefix) {
8034
+ this.prefix.orientation = orientation;
8035
+ }
8036
+ if (this.suffix) {
8037
+ this.suffix.orientation = orientation;
8038
+ }
8039
+ }
8040
+ get adornmentsOrientation() {
8041
+ return this._adornmentsOrientation;
8042
+ }
7517
8043
  /**
7518
8044
  * @hidden
7519
8045
  */
@@ -7578,50 +8104,7 @@ class TextAreaComponent extends TextFieldsBase {
7578
8104
  return this._fillMode;
7579
8105
  }
7580
8106
  ngAfterViewInit() {
7581
- const hostElement = this.hostElement.nativeElement;
7582
- let cursorInsideWrapper = false;
7583
- let tabbing = false;
7584
8107
  this.ngZone.runOutsideAngular(() => {
7585
- // focusIn and focusOut are relative to the host element
7586
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {
7587
- if (!this.isFocused) {
7588
- this.ngZone.run(() => {
7589
- this.onFocus.emit();
7590
- this.isFocused = true;
7591
- });
7592
- }
7593
- }));
7594
- this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {
7595
- if (!this.isFocused) {
7596
- return;
7597
- }
7598
- if (tabbing) {
7599
- const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);
7600
- if (!closestTextbox) {
7601
- this.handleBlur();
7602
- }
7603
- tabbing = false;
7604
- }
7605
- else {
7606
- if (!cursorInsideWrapper) {
7607
- this.handleBlur();
7608
- }
7609
- }
7610
- }));
7611
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {
7612
- cursorInsideWrapper = true;
7613
- }));
7614
- this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {
7615
- cursorInsideWrapper = false;
7616
- }));
7617
- this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
7618
- if (args.keyCode === Keys.Tab) {
7619
- tabbing = true;
7620
- }
7621
- else {
7622
- tabbing = false;
7623
- }
7624
- }));
7625
8108
  this.handleFlow();
7626
8109
  });
7627
8110
  const stylingInputs = ['size', 'rounded', 'fillMode'];
@@ -7718,6 +8201,33 @@ class TextAreaComponent extends TextFieldsBase {
7718
8201
  get isControlInvalid() {
7719
8202
  return this.control && this.control.touched && !this.control.valid;
7720
8203
  }
8204
+ /**
8205
+ * @hidden
8206
+ */
8207
+ get separatorOrientation() {
8208
+ return this.flow === 'horizontal' ? 'vertical' : 'horizontal';
8209
+ }
8210
+ /**
8211
+ * @hidden
8212
+ */
8213
+ get isFocused() {
8214
+ return this._isFocused;
8215
+ }
8216
+ /**
8217
+ * @hidden
8218
+ */
8219
+ set isFocused(value) {
8220
+ if (this._isFocused !== value && this.hostElement) {
8221
+ const element = this.hostElement.nativeElement;
8222
+ if (value && !this.disabled) {
8223
+ this.renderer.addClass(element, FOCUSED);
8224
+ }
8225
+ else {
8226
+ this.renderer.removeClass(element, FOCUSED);
8227
+ }
8228
+ this._isFocused = value;
8229
+ }
8230
+ }
7721
8231
  /**
7722
8232
  * Focuses the TextArea component.
7723
8233
  *
@@ -7773,21 +8283,20 @@ class TextAreaComponent extends TextFieldsBase {
7773
8283
  }, 0);
7774
8284
  });
7775
8285
  }
7776
- get isFocused() {
7777
- return this._isFocused;
7778
- }
7779
- set isFocused(value) {
7780
- if (this._isFocused !== value && this.hostElement) {
7781
- const element = this.hostElement.nativeElement;
7782
- if (value && !this.disabled) {
7783
- this.renderer.addClass(element, FOCUSED);
7784
- }
7785
- else {
7786
- this.renderer.removeClass(element, FOCUSED);
8286
+ /**
8287
+ * @hidden
8288
+ */
8289
+ handleFocus() {
8290
+ this.ngZone.run(() => {
8291
+ if (!this.focusChangedProgrammatically && hasObservers(this.onFocus)) {
8292
+ this.onFocus.emit();
7787
8293
  }
7788
- this._isFocused = value;
7789
- }
8294
+ this.isFocused = true;
8295
+ });
7790
8296
  }
8297
+ /**
8298
+ * @hidden
8299
+ */
7791
8300
  handleBlur() {
7792
8301
  this.ngZone.run(() => {
7793
8302
  if (!this.focusChangedProgrammatically) {
@@ -7818,17 +8327,12 @@ class TextAreaComponent extends TextFieldsBase {
7818
8327
  }
7819
8328
  handleFlow() {
7820
8329
  const isVertical = this.flow === 'vertical';
7821
- const hostElement = this.hostElement.nativeElement;
7822
8330
  const element = this.input.nativeElement;
7823
- const suffix = hostElement.children[1];
7824
8331
  this.renderer[isVertical ? 'addClass' : 'removeClass'](element, '\!k-flex-none');
7825
- if (suffix) {
7826
- this.renderer[isVertical ? 'removeClass' : 'addClass'](suffix, '\!k-align-items-start');
7827
- }
7828
8332
  }
7829
8333
  }
7830
8334
  TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
7831
- TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaComponent, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", rows: "rows", cols: "cols", maxlength: "maxlength", tabindex: "tabindex", tabIndex: "tabIndex", resizable: "resizable", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { properties: { "class.k-textarea": "this.hostClasses", "class.k-input": "this.hostClasses", "class.!k-flex-col": "this.flowCol", "class.!k-flex-row": "this.flowRow" } }, providers: [
8335
+ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaComponent, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", adornmentsOrientation: "adornmentsOrientation", rows: "rows", cols: "cols", maxlength: "maxlength", tabindex: "tabindex", tabIndex: "tabIndex", resizable: "resizable", size: "size", rounded: "rounded", fillMode: "fillMode", showPrefixSeparator: "showPrefixSeparator", showSuffixSeparator: "showSuffixSeparator" }, outputs: { onFocus: "focus", onBlur: "blur", valueChange: "valueChange" }, host: { properties: { "class.k-textarea": "this.hostClasses", "class.k-input": "this.hostClasses", "class.!k-flex-col": "this.flowCol", "class.!k-flex-row": "this.flowRow" } }, providers: [
7832
8336
  LocalizationService,
7833
8337
  { provide: L10N_PREFIX, useValue: 'kendo.textarea' },
7834
8338
  {
@@ -7837,32 +8341,49 @@ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
7837
8341
  multi: true
7838
8342
  },
7839
8343
  { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }
7840
- ], exportAs: ["kendoTextArea"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
7841
- <textarea
7842
- #input
7843
- [attr.aria-multiline]="true"
7844
- [attr.aria-disabled]="disabled ? true : undefined"
7845
- [attr.aria-readonly]="readonly ? true : undefined"
7846
- class="k-input-inner !k-overflow-auto"
7847
- [ngClass]="resizableClass"
7848
- [id]="focusableId"
7849
- [value]="value"
7850
- [attr.placeholder]="placeholder"
7851
- [disabled]="disabled"
7852
- [readonly]="readonly"
7853
- [attr.rows]="rows"
7854
- [attr.cols]="cols"
7855
- [attr.tabindex]="tabIndex"
7856
- [attr.title]="title"
7857
- [attr.maxlength]="maxlength"
7858
- [attr.aria-invalid]="isControlInvalid"
7859
- [kendoEventsOutsideAngular]="{
7860
- focus: handleInputFocus,
7861
- blur: handleInputBlur,
7862
- input: handleInput}">
8344
+ ], queries: [{ propertyName: "prefix", first: true, predicate: TextAreaPrefixComponent, descendants: true }, { propertyName: "suffix", first: true, predicate: TextAreaSuffixComponent, descendants: true }], exportAs: ["kendoTextArea"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
8345
+ <ng-container
8346
+ kendoInputSharedEvents
8347
+ [hostElement]="hostElement"
8348
+ [(isFocused)]="isFocused"
8349
+ (handleBlur)="handleBlur()"
8350
+ (onFocus)="handleFocus()"
8351
+ >
8352
+ <ng-content select="kendo-textarea-prefix"></ng-content>
8353
+ <kendo-input-separator
8354
+ *ngIf="prefix && showPrefixSeparator"
8355
+ [orientation]="separatorOrientation"
8356
+ ></kendo-input-separator>
8357
+ <textarea
8358
+ #input
8359
+ [attr.aria-multiline]="true"
8360
+ [attr.aria-disabled]="disabled ? true : undefined"
8361
+ [attr.aria-readonly]="readonly ? true : undefined"
8362
+ class="k-input-inner !k-overflow-auto"
8363
+ [ngClass]="resizableClass"
8364
+ [id]="focusableId"
8365
+ [value]="value"
8366
+ [attr.placeholder]="placeholder"
8367
+ [disabled]="disabled"
8368
+ [readonly]="readonly"
8369
+ [attr.rows]="rows"
8370
+ [attr.cols]="cols"
8371
+ [attr.tabindex]="tabIndex"
8372
+ [attr.title]="title"
8373
+ [attr.maxlength]="maxlength"
8374
+ [attr.aria-invalid]="isControlInvalid"
8375
+ [kendoEventsOutsideAngular]="{
8376
+ focus: handleInputFocus,
8377
+ blur: handleInputBlur,
8378
+ input: handleInput}">
7863
8379
  </textarea>
8380
+ <kendo-input-separator
8381
+ *ngIf="suffix && showSuffixSeparator"
8382
+ [orientation]="separatorOrientation"
8383
+ ></kendo-input-separator>
7864
8384
  <ng-content select="kendo-textarea-suffix"></ng-content>
7865
- `, isInline: true, directives: [{ type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
8385
+ </ng-container>
8386
+ `, isInline: true, components: [{ type: InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator", inputs: ["orientation"] }], directives: [{ type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
7866
8387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, decorators: [{
7867
8388
  type: Component,
7868
8389
  args: [{
@@ -7879,30 +8400,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7879
8400
  ],
7880
8401
  selector: 'kendo-textarea',
7881
8402
  template: `
7882
- <textarea
7883
- #input
7884
- [attr.aria-multiline]="true"
7885
- [attr.aria-disabled]="disabled ? true : undefined"
7886
- [attr.aria-readonly]="readonly ? true : undefined"
7887
- class="k-input-inner !k-overflow-auto"
7888
- [ngClass]="resizableClass"
7889
- [id]="focusableId"
7890
- [value]="value"
7891
- [attr.placeholder]="placeholder"
7892
- [disabled]="disabled"
7893
- [readonly]="readonly"
7894
- [attr.rows]="rows"
7895
- [attr.cols]="cols"
7896
- [attr.tabindex]="tabIndex"
7897
- [attr.title]="title"
7898
- [attr.maxlength]="maxlength"
7899
- [attr.aria-invalid]="isControlInvalid"
7900
- [kendoEventsOutsideAngular]="{
7901
- focus: handleInputFocus,
7902
- blur: handleInputBlur,
7903
- input: handleInput}">
8403
+ <ng-container
8404
+ kendoInputSharedEvents
8405
+ [hostElement]="hostElement"
8406
+ [(isFocused)]="isFocused"
8407
+ (handleBlur)="handleBlur()"
8408
+ (onFocus)="handleFocus()"
8409
+ >
8410
+ <ng-content select="kendo-textarea-prefix"></ng-content>
8411
+ <kendo-input-separator
8412
+ *ngIf="prefix && showPrefixSeparator"
8413
+ [orientation]="separatorOrientation"
8414
+ ></kendo-input-separator>
8415
+ <textarea
8416
+ #input
8417
+ [attr.aria-multiline]="true"
8418
+ [attr.aria-disabled]="disabled ? true : undefined"
8419
+ [attr.aria-readonly]="readonly ? true : undefined"
8420
+ class="k-input-inner !k-overflow-auto"
8421
+ [ngClass]="resizableClass"
8422
+ [id]="focusableId"
8423
+ [value]="value"
8424
+ [attr.placeholder]="placeholder"
8425
+ [disabled]="disabled"
8426
+ [readonly]="readonly"
8427
+ [attr.rows]="rows"
8428
+ [attr.cols]="cols"
8429
+ [attr.tabindex]="tabIndex"
8430
+ [attr.title]="title"
8431
+ [attr.maxlength]="maxlength"
8432
+ [attr.aria-invalid]="isControlInvalid"
8433
+ [kendoEventsOutsideAngular]="{
8434
+ focus: handleInputFocus,
8435
+ blur: handleInputBlur,
8436
+ input: handleInput}">
7904
8437
  </textarea>
8438
+ <kendo-input-separator
8439
+ *ngIf="suffix && showSuffixSeparator"
8440
+ [orientation]="separatorOrientation"
8441
+ ></kendo-input-separator>
7905
8442
  <ng-content select="kendo-textarea-suffix"></ng-content>
8443
+ </ng-container>
7906
8444
  `
7907
8445
  }]
7908
8446
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{
@@ -7921,6 +8459,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7921
8459
  args: ['class.\!k-flex-row']
7922
8460
  }], flow: [{
7923
8461
  type: Input
8462
+ }], adornmentsOrientation: [{
8463
+ type: Input
7924
8464
  }], rows: [{
7925
8465
  type: Input
7926
8466
  }], cols: [{
@@ -7939,6 +8479,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7939
8479
  type: Input
7940
8480
  }], fillMode: [{
7941
8481
  type: Input
8482
+ }], showPrefixSeparator: [{
8483
+ type: Input
8484
+ }], showSuffixSeparator: [{
8485
+ type: Input
7942
8486
  }], onFocus: [{
7943
8487
  type: Output,
7944
8488
  args: ['focus']
@@ -7947,41 +8491,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
7947
8491
  args: ['blur']
7948
8492
  }], valueChange: [{
7949
8493
  type: Output
7950
- }] } });
7951
-
7952
- /**
7953
- * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).
7954
- * ```ts-no-run
7955
- * _@Component({
7956
- * selector: 'my-app',
7957
- * template: `
7958
- * <kendo-textarea>
7959
- * <kendo-textarea-suffix>
7960
- * <button kendoButton look="clear" icon="image"></button>
7961
- * </kendo-textarea-suffix>
7962
- * </kendo-textarea>
7963
- * `
7964
- * })
7965
- * class AppComponent {}
7966
- * ```
7967
- */
7968
- class TextAreaSuffixComponent {
7969
- constructor() {
7970
- this.hostClass = true;
7971
- }
7972
- }
7973
- TextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7974
- TextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaSuffixComponent, selector: "kendo-textarea-suffix", host: { properties: { "class.k-input-suffix": "this.hostClass" } }, exportAs: ["kendoTextAreaSuffix"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
7975
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{
7976
- type: Component,
7977
- args: [{
7978
- exportAs: 'kendoTextAreaSuffix',
7979
- selector: 'kendo-textarea-suffix',
7980
- template: `<ng-content></ng-content>`
7981
- }]
7982
- }], propDecorators: { hostClass: [{
7983
- type: HostBinding,
7984
- args: ['class.k-input-suffix']
8494
+ }], prefix: [{
8495
+ type: ContentChild,
8496
+ args: [TextAreaPrefixComponent]
8497
+ }], suffix: [{
8498
+ type: ContentChild,
8499
+ args: [TextAreaSuffixComponent]
7985
8500
  }] } });
7986
8501
 
7987
8502
  /**
@@ -8019,24 +8534,31 @@ class TextAreaModule {
8019
8534
  }
8020
8535
  TextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8021
8536
  TextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, declarations: [TextAreaComponent,
8022
- TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule], exports: [TextAreaComponent,
8537
+ TextAreaPrefixComponent,
8538
+ TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule], exports: [TextAreaComponent,
8023
8539
  EventsModule,
8024
- TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective] });
8025
- TextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });
8540
+ TextAreaPrefixComponent,
8541
+ TextAreaSuffixComponent,
8542
+ AdornmentsModule, InputSeparatorComponent, TextAreaDirective] });
8543
+ TextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule], EventsModule,
8544
+ AdornmentsModule] });
8026
8545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaModule, decorators: [{
8027
8546
  type: NgModule,
8028
8547
  args: [{
8029
8548
  declarations: [
8030
8549
  TextAreaComponent,
8550
+ TextAreaPrefixComponent,
8031
8551
  TextAreaSuffixComponent
8032
8552
  ],
8033
8553
  exports: [
8034
8554
  TextAreaComponent,
8035
8555
  EventsModule,
8556
+ TextAreaPrefixComponent,
8036
8557
  TextAreaSuffixComponent,
8558
+ AdornmentsModule,
8037
8559
  SHARED_DIRECTIVES
8038
8560
  ],
8039
- imports: [CommonModule, EventsModule, SharedModule]
8561
+ imports: [CommonModule, EventsModule, SharedModule, AdornmentsModule, SharedEventsModule]
8040
8562
  }]
8041
8563
  }] });
8042
8564
 
@@ -8660,7 +9182,7 @@ FlatColorPickerHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
8660
9182
  </span>
8661
9183
  </div>
8662
9184
  </div>
8663
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
9185
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
8664
9186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatColorPickerHeaderComponent, decorators: [{
8665
9187
  type: Component,
8666
9188
  args: [{
@@ -8862,7 +9384,7 @@ class ColorContrastSvgComponent {
8862
9384
  ColorContrastSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorContrastSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8863
9385
  ColorContrastSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: { wrapper: "wrapper", hsva: "hsva", backgroundColor: "backgroundColor" }, host: { properties: { "class.k-color-contrast-svg": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
8864
9386
  <svg:path *ngFor="let path of paths" [attr.d]="path" fill="none" stroke="white" stroke-width="1"></svg:path>
8865
- `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
9387
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
8866
9388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorContrastSvgComponent, decorators: [{
8867
9389
  type: Component,
8868
9390
  args: [{
@@ -9161,7 +9683,7 @@ ColorInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9161
9683
  <label [for]="alpha.focusableId" class="k-colorgradient-input-label">A</label>
9162
9684
  </div>
9163
9685
  </ng-container>
9164
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: NumericLabelDirective, selector: "[kendoAdditionalNumericLabel]", inputs: ["kendoAdditionalNumericLabel", "localizationService"] }] });
9686
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: NumericLabelDirective, selector: "[kendoAdditionalNumericLabel]", inputs: ["kendoAdditionalNumericLabel", "localizationService"] }] });
9165
9687
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorInputComponent, decorators: [{
9166
9688
  type: Component,
9167
9689
  args: [{
@@ -9356,7 +9878,7 @@ ContrastValidationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
9356
9878
  <kendo-icon-wrapper name="x" [svgIcon]="xCircleIcon"></kendo-icon-wrapper>
9357
9879
  </span>
9358
9880
  </ng-container>
9359
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9881
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9360
9882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContrastValidationComponent, decorators: [{
9361
9883
  type: Component,
9362
9884
  args: [{
@@ -9434,7 +9956,7 @@ ContrastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
9434
9956
  [value]="value"
9435
9957
  [pass]="satisfiesAAACondition">
9436
9958
  </div>
9437
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: ContrastValidationComponent, selector: "[kendoContrastValidation]", inputs: ["type", "pass", "value"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9959
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: ContrastValidationComponent, selector: "[kendoContrastValidation]", inputs: ["type", "pass", "value"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
9438
9960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ContrastComponent, decorators: [{
9439
9961
  type: Component,
9440
9962
  args: [{
@@ -9596,7 +10118,7 @@ class ColorGradientComponent {
9596
10118
  */
9597
10119
  this.opacity = true;
9598
10120
  /**
9599
- * Sets the disabled state of the ColorGradient.
10121
+ * Sets the disabled state of the ColorGradient. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_colorgradient#toc-managing-the-colorgradient-disabled-state-in-reactive-forms).
9600
10122
  *
9601
10123
  * @default false
9602
10124
  */
@@ -10290,7 +10812,7 @@ ColorGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
10290
10812
  [value]="value"
10291
10813
  [ratio]="contrastTool">
10292
10814
  </div>
10293
- `, isInline: true, components: [{ type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: ["wrapper", "hsva", "backgroundColor"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderComponent, selector: "kendo-slider", inputs: ["focusableId", "dragHandleTitle", "incrementTitle", "animate", "decrementTitle", "showButtons", "value", "tabIndex"], exportAs: ["kendoSlider"] }, { type: ColorInputComponent, selector: "kendo-colorinput", inputs: ["focusableId", "formatView", "tabindex", "value", "opacity", "disabled", "readonly"], outputs: ["valueChange", "tabOut"] }, { type: ContrastComponent, selector: "[kendoContrastTool]", inputs: ["value", "ratio"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i3.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
10815
+ `, isInline: true, components: [{ type: ColorContrastSvgComponent, selector: "[kendoColorContrastSvg]", inputs: ["wrapper", "hsva", "backgroundColor"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SliderComponent, selector: "kendo-slider", inputs: ["focusableId", "dragHandleTitle", "incrementTitle", "animate", "decrementTitle", "showButtons", "value", "tabIndex"], exportAs: ["kendoSlider"] }, { type: ColorInputComponent, selector: "kendo-colorinput", inputs: ["focusableId", "formatView", "tabindex", "value", "opacity", "disabled", "readonly"], outputs: ["valueChange", "tabOut"] }, { type: ContrastComponent, selector: "[kendoContrastTool]", inputs: ["value", "ratio"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
10294
10816
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorGradientComponent, decorators: [{
10295
10817
  type: Component,
10296
10818
  args: [{
@@ -10683,7 +11205,7 @@ class ColorPaletteComponent {
10683
11205
  */
10684
11206
  this.format = 'hex';
10685
11207
  /**
10686
- * Sets the disabled state of the ColorPalette.
11208
+ * Sets the disabled state of the ColorPalette. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_colorpalette#toc-managing-the-colorpalette-disabled-state-in-reactive-forms).
10687
11209
  */
10688
11210
  this.disabled = false;
10689
11211
  /**
@@ -11068,7 +11590,7 @@ ColorPaletteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
11068
11590
  </tr>
11069
11591
  </tbody>
11070
11592
  </table>
11071
- `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
11593
+ `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
11072
11594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPaletteComponent, decorators: [{
11073
11595
  type: Component,
11074
11596
  args: [{
@@ -11288,7 +11810,7 @@ class FlatColorPickerComponent {
11288
11810
  */
11289
11811
  this.readonly = false;
11290
11812
  /**
11291
- * Sets the disabled state of the FlatColorPicker.
11813
+ * Sets the disabled state of the FlatColorPicker. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_flatcolorpicker#toc-managing-the-flatcolorpicker-disabled-state-in-reactive-forms).
11292
11814
  *
11293
11815
  * @default false
11294
11816
  */
@@ -11847,7 +12369,7 @@ FlatColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
11847
12369
  [ngClass]="'k-justify-content-' + actionsLayout"
11848
12370
  (actionButtonClick)="onAction($event)"
11849
12371
  (tabOut)="firstFocusable.focus()"></div>
11850
- `, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: "[kendoFlatColorPickerHeader]", inputs: ["clearButton", "activeView", "views", "preview", "innerTabIndex", "value", "selection"], outputs: ["viewChange", "valuePaneClick", "clearButtonClick", "tabOut"] }, { type: ColorGradientComponent, selector: "kendo-colorgradient", inputs: ["id", "opacity", "disabled", "readonly", "clearButton", "delay", "value", "contrastTool", "tabindex", "format", "gradientSliderStep", "gradientSliderSmallStep"], outputs: ["valueChange"], exportAs: ["kendoColorGradient"] }, { type: ColorPaletteComponent, selector: "kendo-colorpalette", inputs: ["id", "format", "value", "columns", "palette", "tabindex", "disabled", "readonly", "tileSize"], outputs: ["selectionChange", "valueChange", "cellSelection"], exportAs: ["kendoColorPalette"] }, { type: FlatColorPickerActionButtonsComponent, selector: "[kendoFlatColorPickerActionButtons]", inputs: ["innerTabIndex"], outputs: ["actionButtonClick", "tabOut"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
12372
+ `, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: "[kendoFlatColorPickerHeader]", inputs: ["clearButton", "activeView", "views", "preview", "innerTabIndex", "value", "selection"], outputs: ["viewChange", "valuePaneClick", "clearButtonClick", "tabOut"] }, { type: ColorGradientComponent, selector: "kendo-colorgradient", inputs: ["id", "opacity", "disabled", "readonly", "clearButton", "delay", "value", "contrastTool", "tabindex", "format", "gradientSliderStep", "gradientSliderSmallStep"], outputs: ["valueChange"], exportAs: ["kendoColorGradient"] }, { type: ColorPaletteComponent, selector: "kendo-colorpalette", inputs: ["id", "format", "value", "columns", "palette", "tabindex", "disabled", "readonly", "tileSize"], outputs: ["selectionChange", "valueChange", "cellSelection"], exportAs: ["kendoColorPalette"] }, { type: FlatColorPickerActionButtonsComponent, selector: "[kendoFlatColorPickerActionButtons]", inputs: ["innerTabIndex"], outputs: ["actionButtonClick", "tabOut"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11851
12373
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FlatColorPickerComponent, decorators: [{
11852
12374
  type: Component,
11853
12375
  args: [{
@@ -12105,7 +12627,7 @@ class ColorPickerComponent {
12105
12627
  */
12106
12628
  this.readonly = false;
12107
12629
  /**
12108
- * Sets the disabled state of the ColorPicker.
12630
+ * Sets the disabled state of the ColorPicker. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_colorpicker#toc-managing-the-colorpicker-disabled-state-in-reactive-forms).
12109
12631
  *
12110
12632
  * @default false
12111
12633
  */
@@ -12769,7 +13291,7 @@ class ColorPickerComponent {
12769
13291
  }
12770
13292
  }
12771
13293
  }
12772
- ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
13294
+ ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
12773
13295
  ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ColorPickerComponent, selector: "kendo-colorpicker", inputs: { views: "views", view: "view", activeView: "activeView", readonly: "readonly", disabled: "disabled", format: "format", value: "value", popupSettings: "popupSettings", paletteSettings: "paletteSettings", gradientSettings: "gradientSettings", icon: "icon", iconClass: "iconClass", svgIcon: "svgIcon", clearButton: "clearButton", tabindex: "tabindex", preview: "preview", actionsLayout: "actionsLayout", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", open: "open", close: "close", onFocus: "focus", onBlur: "blur", cancel: "cancel", activeColorClick: "activeColorClick", clearButtonClick: "clearButtonClick", activeViewChange: "activeViewChange" }, host: { properties: { "class.k-colorpicker": "this.hostClasses", "class.k-icon-picker": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-focus": "this.focusedClass", "attr.aria-disabled": "this.disabledClass", "class.k-disabled": "this.disabledClass", "attr.aria-readonly": "this.ariaReadonly", "attr.aria-expanded": "this.ariaExpanded", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.direction", "attr.role": "this.role", "attr.aria-haspopup": "this.hasPopup", "attr.aria-invalid": "this.isControlInvalid" } }, providers: [{
12774
13296
  multi: true,
12775
13297
  provide: NG_VALUE_ACCESSOR,
@@ -12887,7 +13409,7 @@ ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
12887
13409
  </kendo-flatcolorpicker>
12888
13410
  </ng-template>
12889
13411
  <ng-container #container></ng-container>
12890
- `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: FlatColorPickerComponent, selector: "kendo-flatcolorpicker", inputs: ["readonly", "disabled", "format", "value", "tabindex", "clearButton", "preview", "actionsLayout", "activeView", "views", "gradientSettings", "paletteSettings"], outputs: ["valueChange", "cancel", "activeViewChange", "clearButtonClick", "actionButtonClick"], exportAs: ["kendoFlatColorPicker"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13412
+ `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: FlatColorPickerComponent, selector: "kendo-flatcolorpicker", inputs: ["readonly", "disabled", "format", "value", "tabindex", "clearButton", "preview", "actionsLayout", "activeView", "views", "gradientSettings", "paletteSettings"], outputs: ["valueChange", "cancel", "activeViewChange", "clearButtonClick", "actionButtonClick"], exportAs: ["kendoFlatColorPicker"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: "[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12891
13413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ColorPickerComponent, decorators: [{
12892
13414
  type: Component,
12893
13415
  args: [{
@@ -13012,7 +13534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13012
13534
  <ng-container #container></ng-container>
13013
13535
  `
13014
13536
  }]
13015
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$3.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{
13537
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{
13016
13538
  type: HostBinding,
13017
13539
  args: ['class.k-colorpicker']
13018
13540
  }, {
@@ -13840,7 +14362,7 @@ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
13840
14362
  <ng-content select="kendo-formhint" *ngIf="hasHints"></ng-content>
13841
14363
  <ng-content select="kendo-formerror" *ngIf="hasErrors"></ng-content>
13842
14364
  </div>
13843
- `, isInline: true, directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
14365
+ `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13844
14366
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormFieldComponent, decorators: [{
13845
14367
  type: Component,
13846
14368
  args: [{
@@ -14075,7 +14597,7 @@ class SignatureComponent {
14075
14597
  */
14076
14598
  this.readonly = false;
14077
14599
  /**
14078
- * Sets the disabled state of the Signature.
14600
+ * Sets the disabled state of the Signature. To disable the component in reactive forms, visit the following [article](slug:formssupport_signature#toc-managing-the-signature-disabled-state-in-reactive-forms)
14079
14601
  *
14080
14602
  * @default false
14081
14603
  */
@@ -14736,7 +15258,7 @@ SignatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
14736
15258
  [parentLocalization]="localization">
14737
15259
  </kendo-signature>
14738
15260
  </kendo-dialog>
14739
- `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i3$1.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: SignatureComponent, selector: "kendo-signature", inputs: ["focusableId", "readonly", "disabled", "width", "height", "value", "tabindex", "size", "rounded", "fillMode", "color", "backgroundColor", "strokeWidth", "smooth", "maximizable", "maximized", "popupScale", "exportScale", "parentLocalization", "hideLine"], outputs: ["valueChange", "open", "close", "focus", "blur", "minimize"], exportAs: ["kendoSignature"] }], directives: [{ type: LocalizedSignatureMessagesDirective, selector: "[kendoSignatureLocalizedMessages]" }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15261
+ `, isInline: true, components: [{ type: i2.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: SignatureComponent, selector: "kendo-signature", inputs: ["focusableId", "readonly", "disabled", "width", "height", "value", "tabindex", "size", "rounded", "fillMode", "color", "backgroundColor", "strokeWidth", "smooth", "maximizable", "maximized", "popupScale", "exportScale", "parentLocalization", "hideLine"], outputs: ["valueChange", "open", "close", "focus", "blur", "minimize"], exportAs: ["kendoSignature"] }], directives: [{ type: LocalizedSignatureMessagesDirective, selector: "[kendoSignatureLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14740
15262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SignatureComponent, decorators: [{
14741
15263
  type: Component,
14742
15264
  args: [{
@@ -15099,5 +15621,5 @@ class SwitchFocusEvent {
15099
15621
  * Generated bundle index. Do not edit.
15100
15622
  */
15101
15623
 
15102
- export { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
15624
+ export { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaPrefixComponent, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
15103
15625