@progress/kendo-angular-inputs 19.3.0-develop.4 → 19.3.0-develop.40

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 (50) hide show
  1. package/colorpicker/color-palette.component.d.ts +1 -1
  2. package/colorpicker/colorpicker.component.d.ts +1 -1
  3. package/common/formservice.service.d.ts +14 -0
  4. package/common/models/gutters.d.ts +28 -0
  5. package/common/models/responsive-breakpoints.d.ts +34 -0
  6. package/common/utils.d.ts +0 -4
  7. package/directives.d.ts +19 -1
  8. package/esm2022/colorpicker/color-palette.component.mjs +3 -2
  9. package/esm2022/colorpicker/colorpicker.component.mjs +5 -4
  10. package/esm2022/common/formservice.service.mjs +21 -0
  11. package/esm2022/common/models/gutters.mjs +5 -0
  12. package/esm2022/common/models/responsive-breakpoints.mjs +5 -0
  13. package/esm2022/common/utils.mjs +0 -4
  14. package/esm2022/directives.mjs +24 -0
  15. package/esm2022/form/form.component.mjs +153 -0
  16. package/esm2022/form/formseparator.component.mjs +80 -0
  17. package/esm2022/form/utils.mjs +144 -0
  18. package/esm2022/form.module.mjs +46 -0
  19. package/esm2022/formfield/formfield.component.mjs +47 -5
  20. package/esm2022/formfieldset/formfieldset.component.mjs +170 -0
  21. package/esm2022/index.mjs +5 -0
  22. package/esm2022/inputs.module.mjs +26 -23
  23. package/esm2022/numerictextbox/numerictextbox.component.mjs +5 -4
  24. package/esm2022/otpinput/otpinput.component.mjs +6 -5
  25. package/esm2022/package-metadata.mjs +2 -2
  26. package/esm2022/rangeslider/rangeslider.component.mjs +8 -3
  27. package/esm2022/rating/rating.component.mjs +31 -26
  28. package/esm2022/shared/shared-events.directive.mjs +1 -1
  29. package/esm2022/signature/signature.component.mjs +1 -1
  30. package/esm2022/slider/slider.component.mjs +5 -3
  31. package/esm2022/switch/switch.component.mjs +2 -2
  32. package/esm2022/text-fields-common/text-fields-base.mjs +1 -1
  33. package/esm2022/textarea/models/textarea-settings.mjs +5 -0
  34. package/esm2022/textarea/textarea.component.mjs +35 -4
  35. package/fesm2022/progress-kendo-angular-inputs.mjs +717 -62
  36. package/form/form.component.d.ts +70 -0
  37. package/form/formseparator.component.d.ts +32 -0
  38. package/form/utils.d.ts +62 -0
  39. package/form.module.d.ts +36 -0
  40. package/formfield/formfield.component.d.ts +19 -4
  41. package/formfieldset/formfieldset.component.d.ts +68 -0
  42. package/index.d.ts +8 -0
  43. package/inputs.module.d.ts +25 -22
  44. package/numerictextbox/numerictextbox.component.d.ts +1 -1
  45. package/package.json +13 -13
  46. package/rangeslider/rangeslider.component.d.ts +1 -1
  47. package/slider/slider.component.d.ts +1 -1
  48. package/text-fields-common/text-fields-base.d.ts +1 -1
  49. package/textarea/models/textarea-settings.d.ts +101 -0
  50. package/textarea/textarea.component.d.ts +9 -3
@@ -10,7 +10,7 @@ import { take, tap, filter, concatMap, startWith, takeUntil, skip, debounceTime,
10
10
  import * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';
12
12
  import * as i7 from '@progress/kendo-angular-common';
13
- import { Keys, guid, anyChanged, isDocumentAvailable, hasObservers, KendoInput, EventsOutsideAngularDirective, DraggableDirective, ResizeSensorComponent, isObjectPresent, removeHTMLAttributes, parseAttributes, isControlRequired, setHTMLAttributes, SuffixTemplateDirective, PrefixTemplateDirective, isChanged, isPresent as isPresent$1, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1, SeparatorComponent, ResizeBatchService, KENDO_ADORNMENTS } from '@progress/kendo-angular-common';
13
+ import { Keys, guid, anyChanged, isDocumentAvailable, normalizeNumpadKeys, hasObservers, KendoInput, EventsOutsideAngularDirective, DraggableDirective, ResizeSensorComponent, isObjectPresent, removeHTMLAttributes, parseAttributes, isControlRequired, setHTMLAttributes, SuffixTemplateDirective, PrefixTemplateDirective, isChanged, isPresent as isPresent$1, isSafari, PreventableEvent, findFocusableChild, parseCSSClassNames, closest as closest$1, processCssValue, replaceMessagePlaceholder, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, SeparatorComponent, ResizeBatchService, KENDO_ADORNMENTS } from '@progress/kendo-angular-common';
14
14
  export { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective } from '@progress/kendo-angular-common';
15
15
  import { validatePackage } from '@progress/kendo-licensing';
16
16
  import { caretAltUpIcon, caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon, checkIcon, exclamationCircleIcon, xIcon, caretAltExpandIcon, xCircleIcon, dropletSlashIcon, dropletSliderIcon, paletteIcon, starIcon, starOutlineIcon, hyperlinkOpenIcon } from '@progress/kendo-svg-icons';
@@ -111,10 +111,6 @@ const getStylingClasses = (componentType, stylingOption, previousValue, newValue
111
111
  * Used to differentiate between the Radio and CheckBox components in their base class.
112
112
  */
113
113
  const COMPONENT_TYPE = new InjectionToken('TYPE_TOKEN');
114
- /**
115
- * @hidden
116
- */
117
- const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
118
114
 
119
115
  /**
120
116
  * @hidden
@@ -554,8 +550,8 @@ const packageMetadata = {
554
550
  productName: 'Kendo UI for Angular',
555
551
  productCode: 'KENDOUIANGULAR',
556
552
  productCodes: ['KENDOUIANGULAR'],
557
- publishDate: 1752065327,
558
- version: '19.3.0-develop.4',
553
+ publishDate: 1754990649,
554
+ version: '19.3.0-develop.40',
559
555
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
560
556
  };
561
557
 
@@ -1267,7 +1263,9 @@ class SliderComponent extends SliderBase {
1267
1263
  onKeyDown = (e) => {
1268
1264
  const options = this.getProps();
1269
1265
  const { max, min } = options;
1270
- const handler = this.keyBinding[e.keyCode];
1266
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
1267
+ const code = normalizeNumpadKeys(e);
1268
+ const handler = this.keyBinding[code];
1271
1269
  if (this.isDisabled || !handler) {
1272
1270
  return;
1273
1271
  }
@@ -1452,7 +1450,7 @@ class SliderComponent extends SliderBase {
1452
1450
  cursorInsideWrapper = false;
1453
1451
  }));
1454
1452
  this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
1455
- if (args.keyCode === Keys.Tab) {
1453
+ if (args.code === Keys.Tab) {
1456
1454
  tabbing = true;
1457
1455
  }
1458
1456
  else {
@@ -1872,6 +1870,7 @@ class RangeSliderComponent extends SliderBase {
1872
1870
  this.ngZone = ngZone;
1873
1871
  this.changeDetector = changeDetector;
1874
1872
  this.hostElement = hostElement;
1873
+ validatePackage(packageMetadata);
1875
1874
  }
1876
1875
  /**
1877
1876
  * Focuses the RangeSlider.
@@ -2029,7 +2028,9 @@ class RangeSliderComponent extends SliderBase {
2029
2028
  this.value = this.value || [this.min, this.min];
2030
2029
  const options = this.getProps();
2031
2030
  const { max, min } = options;
2032
- const handler = this.keyBinding[e.keyCode];
2031
+ // on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
2032
+ const code = normalizeNumpadKeys(e);
2033
+ const handler = this.keyBinding[code];
2033
2034
  if (this.isDisabled || !handler) {
2034
2035
  return;
2035
2036
  }
@@ -2221,7 +2222,7 @@ class RangeSliderComponent extends SliderBase {
2221
2222
  cursorInsideWrapper = false;
2222
2223
  }));
2223
2224
  this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
2224
- if (args.keyCode === Keys.Tab) {
2225
+ if (args.code === Keys.Tab) {
2225
2226
  tabbing = true;
2226
2227
  }
2227
2228
  else {
@@ -2800,8 +2801,8 @@ class SwitchComponent {
2800
2801
  * @hidden
2801
2802
  */
2802
2803
  keyDownHandler(e) {
2803
- const keyCode = e.keyCode;
2804
- if (this.isEnabled && (keyCode === Keys.Space || keyCode === Keys.Enter)) {
2804
+ const keyCode = e.code;
2805
+ if (this.isEnabled && (keyCode === Keys.Space || keyCode === Keys.Enter || keyCode === Keys.NumpadEnter)) {
2805
2806
  this.changeValue(!this.checked);
2806
2807
  e.preventDefault();
2807
2808
  }
@@ -3696,7 +3697,7 @@ class SharedInputEventsDirective {
3696
3697
  cursorInsideWrapper = false;
3697
3698
  }));
3698
3699
  this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {
3699
- if (args.keyCode === Keys.Tab) {
3700
+ if (args.code === Keys.Tab) {
3700
3701
  tabbing = true;
3701
3702
  }
3702
3703
  else {
@@ -4378,10 +4379,11 @@ class NumericTextBoxComponent {
4378
4379
  return;
4379
4380
  }
4380
4381
  let step;
4381
- if (e.keyCode === Keys.ArrowDown) {
4382
+ const code = normalizeNumpadKeys(e);
4383
+ if (code === Keys.ArrowDown) {
4382
4384
  step = -1;
4383
4385
  }
4384
- else if (e.keyCode === Keys.ArrowUp) {
4386
+ else if (code === Keys.ArrowUp) {
4385
4387
  step = 1;
4386
4388
  }
4387
4389
  if (step && this.step) {
@@ -4393,7 +4395,7 @@ class NumericTextBoxComponent {
4393
4395
  end: input.selectionEnd,
4394
4396
  start: input.selectionStart
4395
4397
  };
4396
- this.pressedKey = e.keyCode;
4398
+ this.pressedKey = code;
4397
4399
  };
4398
4400
  /**
4399
4401
  * @hidden
@@ -10857,8 +10859,9 @@ class ColorPaletteComponent {
10857
10859
  * @hidden
10858
10860
  */
10859
10861
  handleKeydown(event) {
10862
+ const code = normalizeNumpadKeys(event);
10860
10863
  const isRTL = this.direction === 'rtl';
10861
- switch (event.keyCode) {
10864
+ switch (code) {
10862
10865
  case Keys.ArrowDown:
10863
10866
  this.handleCellNavigation(0, 1);
10864
10867
  break;
@@ -13406,7 +13409,8 @@ class ColorPickerComponent {
13406
13409
  * @hidden
13407
13410
  */
13408
13411
  handleWrapperKeyDown(event) {
13409
- if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {
13412
+ const code = normalizeNumpadKeys(event);
13413
+ if (code === Keys.ArrowDown || code === Keys.Enter) {
13410
13414
  event.preventDefault();
13411
13415
  this.ngZone.run(() => {
13412
13416
  this.toggleWithEvents(true);
@@ -13442,11 +13446,11 @@ class ColorPickerComponent {
13442
13446
  * @hidden
13443
13447
  */
13444
13448
  handlePopupKeyDown(event) {
13445
- if (event.keyCode === Keys.Escape) {
13449
+ if (event.code === Keys.Escape) {
13446
13450
  this.toggleWithEvents(false);
13447
13451
  this.host.nativeElement.focus();
13448
13452
  }
13449
- if (event.keyCode === Keys.Tab) {
13453
+ if (event.code === Keys.Tab) {
13450
13454
  const currentElement = event.shiftKey ? this.firstFocusableElement.nativeElement : this.lastFocusableElement.nativeElement;
13451
13455
  const nextElement = event.shiftKey ? this.lastFocusableElement.nativeElement : this.firstFocusableElement.nativeElement;
13452
13456
  if (event.target === currentElement) {
@@ -14203,6 +14207,161 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14203
14207
  args: ['attr.id']
14204
14208
  }] } });
14205
14209
 
14210
+ /**
14211
+ * @hidden
14212
+ */
14213
+ class FormService {
14214
+ formWidth = new BehaviorSubject(null);
14215
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14216
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, providedIn: 'root' });
14217
+ }
14218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, decorators: [{
14219
+ type: Injectable,
14220
+ args: [{
14221
+ providedIn: 'root',
14222
+ }]
14223
+ }] });
14224
+
14225
+ /**
14226
+ * @hidden
14227
+ */
14228
+ const DEFAULT_FORM_GUTTERS = { rows: '0px', cols: '32px' };
14229
+ /**
14230
+ * @hidden
14231
+ */
14232
+ const DEFAULT_FORMFIELDSET_GUTTERS = { rows: '0px', cols: '16px' };
14233
+ /**
14234
+ * @hidden
14235
+ */
14236
+ function innerWidth(element) {
14237
+ let width = element.clientWidth;
14238
+ const style = getComputedStyle(element);
14239
+ width -= (parseFloat(style.paddingLeft) || 0) + (parseFloat(style.borderLeftWidth) || 0);
14240
+ width -= (parseFloat(style.paddingRight) || 0) + (parseFloat(style.borderRightWidth) || 0);
14241
+ return width;
14242
+ }
14243
+ /**
14244
+ * @hidden
14245
+ */
14246
+ function processBreakpoints(breakpoints, containerWidth) {
14247
+ if (!breakpoints?.length || containerWidth === null) {
14248
+ return '';
14249
+ }
14250
+ for (const [index, breakpoint] of breakpoints.entries()) {
14251
+ const minBreakpointWidth = breakpoint.minWidth || breakpoints[index - 1]?.maxWidth + 1 || 0;
14252
+ const maxBreakpointWidth = breakpoint.maxWidth || breakpoints[index + 1]?.minWidth - 1 || Infinity;
14253
+ if (containerWidth >= minBreakpointWidth && containerWidth <= maxBreakpointWidth) {
14254
+ return breakpoint.value;
14255
+ }
14256
+ }
14257
+ return '';
14258
+ }
14259
+ /**
14260
+ * @hidden
14261
+ */
14262
+ const calculateColumns = (cols, containerWidth) => {
14263
+ if (!cols) {
14264
+ return null;
14265
+ }
14266
+ if (Array.isArray(cols) && cols.length > 0) {
14267
+ const processedCols = processBreakpoints(cols, containerWidth) || null;
14268
+ return typeof processedCols === 'string' ? parseInt(processedCols, 10) : processedCols;
14269
+ }
14270
+ else if (typeof cols === 'number') {
14271
+ return cols;
14272
+ }
14273
+ return null;
14274
+ };
14275
+ /**
14276
+ * @hidden
14277
+ *
14278
+ * Calculates gutters for rows and columns based on responsive breakpoints or fixed values
14279
+ */
14280
+ const calculateGutters = (gutters, containerWidth) => {
14281
+ if (!gutters) {
14282
+ return null;
14283
+ }
14284
+ if (typeof gutters === 'number' || typeof gutters === 'string') {
14285
+ return { cols: gutters, rows: gutters };
14286
+ }
14287
+ else if (Array.isArray(gutters)) {
14288
+ const processedGutters = processBreakpoints(gutters, containerWidth) || null;
14289
+ return processedGutters !== null ? { cols: processedGutters, rows: processedGutters } : null;
14290
+ }
14291
+ else if (typeof gutters === 'object') {
14292
+ const gutterObject = gutters;
14293
+ const result = { rows: null, cols: null };
14294
+ if (gutterObject.cols !== undefined && gutterObject.cols !== null) {
14295
+ if (typeof gutterObject.cols === 'number' || typeof gutterObject.cols === 'string') {
14296
+ result.cols = gutterObject.cols;
14297
+ }
14298
+ else if (Array.isArray(gutterObject.cols)) {
14299
+ result.cols = processBreakpoints(gutterObject.cols, containerWidth) || null;
14300
+ }
14301
+ }
14302
+ else {
14303
+ result.cols = null;
14304
+ }
14305
+ if (gutterObject.rows !== undefined) {
14306
+ if (typeof gutterObject.rows === 'number' || typeof gutterObject.rows === 'string') {
14307
+ result.rows = gutterObject.rows;
14308
+ }
14309
+ else if (Array.isArray(gutterObject.rows)) {
14310
+ result.rows = processBreakpoints(gutterObject.rows, containerWidth) || null;
14311
+ }
14312
+ }
14313
+ else {
14314
+ result.rows = null;
14315
+ }
14316
+ return result;
14317
+ }
14318
+ return null;
14319
+ };
14320
+ /**
14321
+ * @hidden
14322
+ *
14323
+ * Calculates column span value based on responsive breakpoints or fixed number
14324
+ */
14325
+ const calculateColSpan = (colSpan, containerWidth) => {
14326
+ if (!colSpan) {
14327
+ return null;
14328
+ }
14329
+ if (typeof colSpan === 'number') {
14330
+ return colSpan;
14331
+ }
14332
+ else if (Array.isArray(colSpan) && colSpan.length > 0) {
14333
+ const processedColSpan = processBreakpoints(colSpan, containerWidth) || null;
14334
+ return typeof processedColSpan === 'string' ? parseInt(processedColSpan, 10) : processedColSpan;
14335
+ }
14336
+ return null;
14337
+ };
14338
+ /**
14339
+ * @hidden
14340
+ *
14341
+ * Generates CSS class names for columns
14342
+ */
14343
+ const generateColumnClass = (columnsNumber) => {
14344
+ return columnsNumber && columnsNumber > 0 ? `k-grid-cols-${columnsNumber}` : '';
14345
+ };
14346
+ /**
14347
+ * @hidden
14348
+ *
14349
+ * Generates CSS styles for gutters based on the provided gutters object.
14350
+ */
14351
+ const generateGuttersStyling = (gutters, defaultGutters = DEFAULT_FORM_GUTTERS) => {
14352
+ const rows = processCssValue(gutters?.rows);
14353
+ const cols = processCssValue(gutters?.cols);
14354
+ return `${rows ?? defaultGutters.rows} ${cols ?? defaultGutters.cols}`;
14355
+ };
14356
+ /**
14357
+ * @hidden
14358
+ *
14359
+ * Generates CSS class name for column span
14360
+ */
14361
+ const generateColSpanClass = (colSpan) => {
14362
+ return colSpan ? `k-col-span-${colSpan}` : '';
14363
+ };
14364
+
14206
14365
  /**
14207
14366
  * Represents the Kendo UI FormField component for Angular.
14208
14367
  * Use this component to group form-bound controls (Kendo Angular components or native HTML controls).
@@ -14225,6 +14384,7 @@ class FormFieldComponent {
14225
14384
  renderer;
14226
14385
  localizationService;
14227
14386
  hostElement;
14387
+ formService;
14228
14388
  hostClass = true;
14229
14389
  /**
14230
14390
  * @hidden
@@ -14267,6 +14427,8 @@ class FormFieldComponent {
14267
14427
  /**
14268
14428
  * Specifies the layout orientation of the form field.
14269
14429
  *
14430
+ * @hidden
14431
+ *
14270
14432
  * @default 'vertical'
14271
14433
  */
14272
14434
  orientation = 'vertical';
@@ -14278,6 +14440,11 @@ class FormFieldComponent {
14278
14440
  * @default 'initial'
14279
14441
  */
14280
14442
  showErrors = 'initial';
14443
+ /**
14444
+ * Defines the colspan for the form field.
14445
+ * Can be a number or an array of responsive breakpoints.
14446
+ */
14447
+ colSpan;
14281
14448
  /**
14282
14449
  * @hidden
14283
14450
  */
@@ -14299,15 +14466,23 @@ class FormFieldComponent {
14299
14466
  control;
14300
14467
  subscriptions = new Subscription();
14301
14468
  rtl = false;
14302
- constructor(renderer, localizationService, hostElement) {
14469
+ _formWidth = null;
14470
+ _colSpanClass = null;
14471
+ _previousColSpan = null;
14472
+ constructor(renderer, localizationService, hostElement, formService) {
14303
14473
  this.renderer = renderer;
14304
14474
  this.localizationService = localizationService;
14305
14475
  this.hostElement = hostElement;
14476
+ this.formService = formService;
14306
14477
  validatePackage(packageMetadata);
14307
14478
  this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {
14308
14479
  this.rtl = rtl;
14309
14480
  this.direction = this.rtl ? 'rtl' : 'ltr';
14310
14481
  }));
14482
+ this.subscriptions.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
14483
+ this._formWidth = width;
14484
+ this.updateColSpanClass();
14485
+ }));
14311
14486
  }
14312
14487
  ngAfterViewInit() {
14313
14488
  this.setDescription();
@@ -14315,6 +14490,11 @@ class FormFieldComponent {
14315
14490
  ngAfterViewChecked() {
14316
14491
  this.updateDescription();
14317
14492
  }
14493
+ ngOnChanges(changes) {
14494
+ if (changes['colSpan']) {
14495
+ this.updateColSpanClass();
14496
+ }
14497
+ }
14318
14498
  ngOnDestroy() {
14319
14499
  this.subscriptions.unsubscribe();
14320
14500
  }
@@ -14419,14 +14599,29 @@ class FormFieldComponent {
14419
14599
  this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));
14420
14600
  this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));
14421
14601
  }
14422
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
14423
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "kendo-formfield", inputs: { showHints: "showHints", orientation: "orientation", showErrors: "showErrors" }, host: { properties: { "class.k-form-field": "this.hostClass", "attr.dir": "this.direction", "class.k-form-field-error": "this.errorClass", "class.k-form-field-disabled": "this.disabledClass" } }, providers: [
14602
+ updateColSpanClass() {
14603
+ const hostElement = this.hostElement.nativeElement;
14604
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
14605
+ if (newColSpan !== this._previousColSpan) {
14606
+ const newClass = generateColSpanClass(newColSpan);
14607
+ if (this._colSpanClass) {
14608
+ this.renderer.removeClass(hostElement, this._colSpanClass);
14609
+ }
14610
+ if (newClass) {
14611
+ this.renderer.addClass(hostElement, newClass);
14612
+ }
14613
+ this._colSpanClass = newClass;
14614
+ this._previousColSpan = newColSpan;
14615
+ }
14616
+ }
14617
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ElementRef }, { token: FormService }], target: i0.ɵɵFactoryTarget.Component });
14618
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "kendo-formfield", inputs: { showHints: "showHints", orientation: "orientation", showErrors: "showErrors", colSpan: "colSpan" }, host: { properties: { "class.k-form-field": "this.hostClass", "attr.dir": "this.direction", "class.k-form-field-error": "this.errorClass", "class.k-form-field-disabled": "this.disabledClass" } }, providers: [
14424
14619
  LocalizationService,
14425
14620
  {
14426
14621
  provide: L10N_PREFIX,
14427
14622
  useValue: 'kendo.formfield'
14428
14623
  }
14429
- ], queries: [{ propertyName: "kendoInput", first: true, predicate: KendoInput, descendants: true, static: true }, { propertyName: "formControls", predicate: NgControl, descendants: true }, { propertyName: "controlElementRefs", predicate: NgControl, descendants: true, read: ElementRef }, { propertyName: "errorChildren", predicate: ErrorComponent, descendants: true }, { propertyName: "hintChildren", predicate: HintComponent, descendants: true }], ngImport: i0, template: `
14624
+ ], queries: [{ propertyName: "kendoInput", first: true, predicate: KendoInput, descendants: true, static: true }, { propertyName: "formControls", predicate: NgControl, descendants: true }, { propertyName: "controlElementRefs", predicate: NgControl, descendants: true, read: ElementRef }, { propertyName: "errorChildren", predicate: ErrorComponent, descendants: true }, { propertyName: "hintChildren", predicate: HintComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
14430
14625
  <ng-content select="label, kendo-label"></ng-content>
14431
14626
  <div class="k-form-field-wrap">
14432
14627
  <ng-content></ng-content>
@@ -14457,7 +14652,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14457
14652
  standalone: true,
14458
14653
  imports: [NgIf]
14459
14654
  }]
14460
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{
14655
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }, { type: FormService }]; }, propDecorators: { hostClass: [{
14461
14656
  type: HostBinding,
14462
14657
  args: ['class.k-form-field']
14463
14658
  }], direction: [{
@@ -14490,6 +14685,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14490
14685
  type: Input
14491
14686
  }], showErrors: [{
14492
14687
  type: Input
14688
+ }], colSpan: [{
14689
+ type: Input
14493
14690
  }] } });
14494
14691
 
14495
14692
  /**
@@ -15208,33 +15405,38 @@ class RatingComponent {
15208
15405
  this.cdr.markForCheck();
15209
15406
  }
15210
15407
  };
15211
- if (event.keyCode === Keys.ArrowDown) {
15212
- decreaseValue();
15213
- }
15214
- if (event.keyCode === Keys.ArrowLeft) {
15215
- if (this.direction === 'ltr') {
15408
+ const code = normalizeNumpadKeys(event);
15409
+ switch (code) {
15410
+ case Keys.ArrowDown:
15216
15411
  decreaseValue();
15217
- }
15218
- else {
15219
- increaseValue();
15220
- }
15221
- }
15222
- if (event.keyCode === Keys.ArrowUp) {
15223
- increaseValue();
15224
- }
15225
- if (event.keyCode === Keys.ArrowRight) {
15226
- if (this.direction === 'ltr') {
15412
+ break;
15413
+ case Keys.ArrowLeft:
15414
+ if (this.direction === 'ltr') {
15415
+ decreaseValue();
15416
+ }
15417
+ else {
15418
+ increaseValue();
15419
+ }
15420
+ break;
15421
+ case Keys.ArrowUp:
15227
15422
  increaseValue();
15228
- }
15229
- else {
15230
- decreaseValue();
15231
- }
15232
- }
15233
- if (event.keyCode === Keys.Home) {
15234
- setMinValue();
15235
- }
15236
- if (event.keyCode === Keys.End) {
15237
- setMaxValue();
15423
+ break;
15424
+ case Keys.ArrowRight:
15425
+ if (this.direction === 'ltr') {
15426
+ increaseValue();
15427
+ }
15428
+ else {
15429
+ decreaseValue();
15430
+ }
15431
+ break;
15432
+ case Keys.Home:
15433
+ setMinValue();
15434
+ break;
15435
+ case Keys.End:
15436
+ setMaxValue();
15437
+ break;
15438
+ default:
15439
+ break;
15238
15440
  }
15239
15441
  }
15240
15442
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RatingComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -16183,7 +16385,7 @@ class SignatureComponent {
16183
16385
  * @hidden
16184
16386
  */
16185
16387
  onDialogKeydown(e) {
16186
- if (e.keyCode === Keys.Escape) {
16388
+ if (e.code === Keys.Escape) {
16187
16389
  this.isOpen = false;
16188
16390
  this.cd.detectChanges();
16189
16391
  this.maximizeButton?.nativeElement.focus();
@@ -16894,7 +17096,7 @@ class TextFieldsBase {
16894
17096
  /**
16895
17097
  * Sets the `title` attribute of the internal textarea input element of the component.
16896
17098
  */
16897
- title = '';
17099
+ title;
16898
17100
  /**
16899
17101
  * 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).
16900
17102
  *
@@ -17123,6 +17325,10 @@ class TextAreaComponent extends TextFieldsBase {
17123
17325
  * Sets the maximum number of characters allowed in the text area.
17124
17326
  */
17125
17327
  maxlength;
17328
+ /**
17329
+ * @hidden
17330
+ */
17331
+ maxResizableRows;
17126
17332
  /**
17127
17333
  * Sets the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
17128
17334
  * @default 0
@@ -17213,6 +17419,7 @@ class TextAreaComponent extends TextFieldsBase {
17213
17419
  */
17214
17420
  valueChange = new EventEmitter();
17215
17421
  initialHeight;
17422
+ maxResizableHeight;
17216
17423
  resizeSubscription;
17217
17424
  _size = 'medium';
17218
17425
  _rounded = 'medium';
@@ -17253,10 +17460,24 @@ class TextAreaComponent extends TextFieldsBase {
17253
17460
  validatePackage(packageMetadata);
17254
17461
  this.direction = localizationService.rtl ? 'rtl' : 'ltr';
17255
17462
  }
17463
+ ngAfterContentInit() {
17464
+ this.ngZone.onStable.pipe((take(1))).subscribe(() => {
17465
+ this.prefix && (this.prefix.orientation = this.adornmentsOrientation);
17466
+ this.suffix && (this.suffix.orientation = this.adornmentsOrientation);
17467
+ });
17468
+ }
17256
17469
  ngAfterViewInit() {
17257
17470
  this.ngZone.runOutsideAngular(() => {
17258
17471
  this.handleFlow();
17259
17472
  });
17473
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
17474
+ if (this.prefix) {
17475
+ this.prefix.flow = this.flow;
17476
+ }
17477
+ if (this.suffix) {
17478
+ this.suffix.flow = this.flow;
17479
+ }
17480
+ });
17260
17481
  const stylingInputs = ['size', 'rounded', 'fillMode'];
17261
17482
  stylingInputs.forEach(input => {
17262
17483
  this.handleClasses(this[input], input);
@@ -17284,8 +17505,14 @@ class TextAreaComponent extends TextFieldsBase {
17284
17505
  }
17285
17506
  if (changes.resizable) {
17286
17507
  if (this.resizable === 'auto') {
17287
- this.renderer.removeClass(element, '\!k-overflow-y-auto');
17288
- this.initialHeight = element.offsetHeight;
17508
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
17509
+ this.renderer.removeClass(element, '\!k-overflow-y-auto');
17510
+ this.initialHeight = element.offsetHeight;
17511
+ if (this.maxResizableRows && this.rows) {
17512
+ const heightValue = parseFloat(getComputedStyle(element).getPropertyValue('height')) - 2 * parseFloat(getComputedStyle(element).getPropertyValue('padding'));
17513
+ this.maxResizableHeight = this.initialHeight + (heightValue * (this.maxResizableRows - this.rows));
17514
+ }
17515
+ });
17289
17516
  }
17290
17517
  else if (this.resizable !== 'both') {
17291
17518
  this.renderer.addClass(element, '\!k-overflow-y-auto');
@@ -17449,6 +17676,10 @@ class TextAreaComponent extends TextFieldsBase {
17449
17676
  const element = this.input.nativeElement;
17450
17677
  this.renderer.setStyle(element, 'height', `${this.initialHeight}px`);
17451
17678
  const scrollHeight = element.scrollHeight;
17679
+ if (scrollHeight > this.maxResizableHeight) {
17680
+ this.renderer.setStyle(element, 'height', `${this.maxResizableHeight}px`);
17681
+ return;
17682
+ }
17452
17683
  this.renderer.setStyle(hostElement, 'min-height', `${scrollHeight}px`);
17453
17684
  if (scrollHeight > this.initialHeight) {
17454
17685
  this.renderer.setStyle(element, 'height', `${scrollHeight}px`);
@@ -17519,7 +17750,7 @@ class TextAreaComponent extends TextFieldsBase {
17519
17750
  setHTMLAttributes(attributesToRender, this.renderer, this.input.nativeElement, this.ngZone);
17520
17751
  }
17521
17752
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.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 });
17522
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextAreaComponent, isStandalone: true, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", inputAttributes: "inputAttributes", 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: [
17753
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextAreaComponent, isStandalone: true, selector: "kendo-textarea", inputs: { focusableId: "focusableId", flow: "flow", inputAttributes: "inputAttributes", adornmentsOrientation: "adornmentsOrientation", rows: "rows", cols: "cols", maxlength: "maxlength", maxResizableRows: "maxResizableRows", 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: [
17523
17754
  LocalizationService,
17524
17755
  { provide: L10N_PREFIX, useValue: 'kendo.textarea' },
17525
17756
  {
@@ -17661,6 +17892,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17661
17892
  type: Input
17662
17893
  }], maxlength: [{
17663
17894
  type: Input
17895
+ }], maxResizableRows: [{
17896
+ type: Input
17664
17897
  }], tabindex: [{
17665
17898
  type: Input
17666
17899
  }], tabIndex: [{
@@ -18421,14 +18654,15 @@ class OTPInputComponent {
18421
18654
  this.inputFields.get(this.focusedInput).focus();
18422
18655
  }
18423
18656
  handleKeydown(event) {
18657
+ const code = normalizeNumpadKeys(event);
18424
18658
  if (this.readonly) {
18425
- const isCopyCommand = (event.ctrlKey || event.metaKey) && event.keyCode === Keys.KeyC;
18426
- if (!(event.keyCode === Keys.Tab || isCopyCommand)) {
18659
+ const isCopyCommand = (event.ctrlKey || event.metaKey) && code === Keys.KeyC;
18660
+ if (!(code === Keys.Tab || isCopyCommand)) {
18427
18661
  event.preventDefault();
18428
18662
  return;
18429
18663
  }
18430
18664
  }
18431
- switch (event.keyCode) {
18665
+ switch (code) {
18432
18666
  case Keys.ArrowRight:
18433
18667
  event.preventDefault();
18434
18668
  this.direction === 'ltr' ? this.focusNext() : this.focusPrevious();
@@ -18810,6 +19044,372 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
18810
19044
  }]
18811
19045
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
18812
19046
 
19047
+ /**
19048
+ * Represents the Kendo UI Form component for Angular.
19049
+ *
19050
+ * @remarks
19051
+ * Supported children components are: {@link FormFieldComponent}, {@link FormSeparatorComponent}, and {@link FormFieldSetComponent}.
19052
+ */
19053
+ class FormComponent {
19054
+ element;
19055
+ cdr;
19056
+ formService;
19057
+ /**
19058
+ * Defines the orientation of the form.
19059
+ *
19060
+ * @default 'vertical'
19061
+ */
19062
+ orientation = 'vertical';
19063
+ /**
19064
+ * Defines the number of columns in the form.
19065
+ * Can be a number or an array of responsive breakpoints.
19066
+ */
19067
+ cols;
19068
+ /**
19069
+ * Defines the gutters for the form.
19070
+ * You can specify gutters for rows and columns.
19071
+ */
19072
+ gutters = { ...DEFAULT_FORM_GUTTERS };
19073
+ /**
19074
+ * @hidden
19075
+ */
19076
+ columnsClass = '';
19077
+ /**
19078
+ * @hidden
19079
+ */
19080
+ guttersStyle = '';
19081
+ /**
19082
+ * @hidden
19083
+ */
19084
+ showLicenseWatermark = false;
19085
+ /**
19086
+ * @hidden
19087
+ */
19088
+ licenseMessage;
19089
+ get formClass() {
19090
+ return 'k-form k-form-md';
19091
+ }
19092
+ get horizontalClass() {
19093
+ return this.orientation === 'horizontal';
19094
+ }
19095
+ _formColumnsNumber;
19096
+ _formGutters = { ...DEFAULT_FORM_GUTTERS };
19097
+ constructor(element, cdr, formService) {
19098
+ this.element = element;
19099
+ this.cdr = cdr;
19100
+ this.formService = formService;
19101
+ const isValid = validatePackage(packageMetadata);
19102
+ this.licenseMessage = getLicenseMessage(packageMetadata);
19103
+ this.showLicenseWatermark = shouldShowValidationUI(isValid);
19104
+ }
19105
+ ngAfterContentInit() {
19106
+ this.applyColumns();
19107
+ this.applyGutters();
19108
+ this.formService.formWidth.next(innerWidth(this.element.nativeElement));
19109
+ }
19110
+ ngOnChanges(changes) {
19111
+ if (changes['cols']) {
19112
+ this.applyColumns();
19113
+ }
19114
+ if (changes['gutters']) {
19115
+ this.applyGutters();
19116
+ }
19117
+ }
19118
+ /**
19119
+ * @hidden
19120
+ */
19121
+ onResize() {
19122
+ this.formService.formWidth.next(innerWidth(this.element.nativeElement));
19123
+ const previousColumnsNumber = this._formColumnsNumber;
19124
+ const previousGutters = this._formGutters;
19125
+ this.applyColumns();
19126
+ this.applyGutters();
19127
+ if (previousColumnsNumber !== this._formColumnsNumber) {
19128
+ this.cdr.detectChanges();
19129
+ }
19130
+ if (previousGutters?.cols !== this._formGutters?.cols || previousGutters?.rows !== this._formGutters?.rows) {
19131
+ this.cdr.detectChanges();
19132
+ }
19133
+ }
19134
+ applyColumns() {
19135
+ const containerWidth = innerWidth(this.element.nativeElement);
19136
+ this._formColumnsNumber = calculateColumns(this.cols, containerWidth);
19137
+ this.updateColumnClasses();
19138
+ }
19139
+ applyGutters() {
19140
+ const containerWidth = innerWidth(this.element.nativeElement);
19141
+ this._formGutters = calculateGutters(this.gutters, containerWidth);
19142
+ this.updateGutterClasses();
19143
+ }
19144
+ updateColumnClasses() {
19145
+ this.columnsClass = generateColumnClass(this._formColumnsNumber);
19146
+ }
19147
+ updateGutterClasses() {
19148
+ this.guttersStyle = generateGuttersStyling(this._formGutters, { ...DEFAULT_FORM_GUTTERS });
19149
+ }
19150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: FormService }], target: i0.ɵɵFactoryTarget.Component });
19151
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormComponent, isStandalone: true, selector: "form[kendoForm]", inputs: { orientation: "orientation", cols: "cols", gutters: "gutters" }, host: { properties: { "class": "this.formClass", "class.k-form-horizontal": "this.horizontalClass" } }, exportAs: ["kendoForm"], usesOnChanges: true, ngImport: i0, template: `
19152
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{ gap: guttersStyle }">
19153
+ <ng-content></ng-content>
19154
+ </div>
19155
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
19156
+ <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
19157
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
19158
+ }
19159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, decorators: [{
19160
+ type: Component,
19161
+ args: [{
19162
+ exportAs: 'kendoForm',
19163
+ selector: 'form[kendoForm]',
19164
+ template: `
19165
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{ gap: guttersStyle }">
19166
+ <ng-content></ng-content>
19167
+ </div>
19168
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
19169
+ <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
19170
+ `,
19171
+ standalone: true,
19172
+ imports: [NgClass, NgStyle, NgIf, ResizeSensorComponent, WatermarkOverlayComponent],
19173
+ }]
19174
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: FormService }]; }, propDecorators: { orientation: [{
19175
+ type: Input
19176
+ }], cols: [{
19177
+ type: Input
19178
+ }], gutters: [{
19179
+ type: Input
19180
+ }], formClass: [{
19181
+ type: HostBinding,
19182
+ args: ['class']
19183
+ }], horizontalClass: [{
19184
+ type: HostBinding,
19185
+ args: ['class.k-form-horizontal']
19186
+ }] } });
19187
+
19188
+ /**
19189
+ * Represents the Kendo UI Form Separator component for Angular.
19190
+ */
19191
+ class FormSeparatorComponent {
19192
+ renderer;
19193
+ hostElement;
19194
+ formService;
19195
+ hostClass = true;
19196
+ /**
19197
+ * Defines the colspan for the separator element related to the parent Form component columns.
19198
+ * Can be a number or an array of responsive breakpoints.
19199
+ */
19200
+ colSpan;
19201
+ _formWidth = null;
19202
+ _colSpanClass = null;
19203
+ _previousColSpan = null;
19204
+ subscriptions = new Subscription();
19205
+ constructor(renderer, hostElement, formService) {
19206
+ this.renderer = renderer;
19207
+ this.hostElement = hostElement;
19208
+ this.formService = formService;
19209
+ validatePackage(packageMetadata);
19210
+ this.subscriptions.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
19211
+ this._formWidth = width;
19212
+ this.updateColSpanClass();
19213
+ }));
19214
+ }
19215
+ ngOnChanges(changes) {
19216
+ if (changes['colSpan']) {
19217
+ this.updateColSpanClass();
19218
+ }
19219
+ }
19220
+ ngOnDestroy() {
19221
+ this.subscriptions.unsubscribe();
19222
+ }
19223
+ updateColSpanClass() {
19224
+ const hostElement = this.hostElement.nativeElement;
19225
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
19226
+ if (newColSpan !== this._previousColSpan) {
19227
+ const newClass = generateColSpanClass(newColSpan);
19228
+ if (this._colSpanClass) {
19229
+ this.renderer.removeClass(hostElement, this._colSpanClass);
19230
+ }
19231
+ if (newClass) {
19232
+ this.renderer.addClass(hostElement, newClass);
19233
+ }
19234
+ this._colSpanClass = newClass;
19235
+ this._previousColSpan = newColSpan;
19236
+ }
19237
+ }
19238
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSeparatorComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FormService }], target: i0.ɵɵFactoryTarget.Component });
19239
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormSeparatorComponent, isStandalone: true, selector: "kendo-form-separator", inputs: { colSpan: "colSpan" }, host: { properties: { "class.k-form-separator": "this.hostClass" } }, exportAs: ["kendoFormSeparator"], usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
19240
+ }
19241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSeparatorComponent, decorators: [{
19242
+ type: Component,
19243
+ args: [{
19244
+ exportAs: 'kendoFormSeparator',
19245
+ selector: 'kendo-form-separator',
19246
+ template: ``,
19247
+ standalone: true,
19248
+ }]
19249
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FormService }]; }, propDecorators: { hostClass: [{
19250
+ type: HostBinding,
19251
+ args: ['class.k-form-separator']
19252
+ }], colSpan: [{
19253
+ type: Input
19254
+ }] } });
19255
+
19256
+ /**
19257
+ * Represents the Kendo UI FormFieldSet component for Angular.
19258
+ *
19259
+ * @remarks
19260
+ * Supported children components are: {@link FormFieldComponent} and {@link FormSeparatorComponent}.
19261
+ */
19262
+ class FormFieldSetComponent {
19263
+ elementRef;
19264
+ renderer;
19265
+ formService;
19266
+ cdr;
19267
+ formFieldSetClass = true;
19268
+ /**
19269
+ * Defines the legend for the fieldset.
19270
+ */
19271
+ legend;
19272
+ /**
19273
+ * Defines the number of columns of the fieldset.
19274
+ * Can be a number or an array of responsive breakpoints.
19275
+ */
19276
+ cols;
19277
+ /**
19278
+ * Defines the gutters for the fieldset.
19279
+ * You can specify gutters for rows and columns.
19280
+ */
19281
+ gutters = { ...DEFAULT_FORMFIELDSET_GUTTERS };
19282
+ /**
19283
+ * Defines the colspan for the fieldset related to the parent Form component columns.
19284
+ * Can be a number or an array of responsive breakpoints.
19285
+ */
19286
+ colSpan;
19287
+ /**
19288
+ * @hidden
19289
+ */
19290
+ columnsClass = '';
19291
+ /**
19292
+ * @hidden
19293
+ */
19294
+ guttersStyle = '';
19295
+ _formColumnsNumber;
19296
+ _colSpanClass = null;
19297
+ _formWidth = null;
19298
+ _formGutters = { ...DEFAULT_FORMFIELDSET_GUTTERS };
19299
+ _previousColSpan = null;
19300
+ _previousCols = null;
19301
+ _previousGutters;
19302
+ subs = new Subscription();
19303
+ constructor(elementRef, renderer, formService, cdr) {
19304
+ this.elementRef = elementRef;
19305
+ this.renderer = renderer;
19306
+ this.formService = formService;
19307
+ this.cdr = cdr;
19308
+ validatePackage(packageMetadata);
19309
+ }
19310
+ ngOnInit() {
19311
+ this.subs.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
19312
+ this._formWidth = width;
19313
+ this.applyColumns();
19314
+ this.applyGutters();
19315
+ this.updateColSpanClass();
19316
+ }));
19317
+ }
19318
+ ngOnChanges(changes) {
19319
+ if (changes['colSpan']) {
19320
+ this.updateColSpanClass();
19321
+ }
19322
+ if (changes['cols']) {
19323
+ this.applyColumns();
19324
+ }
19325
+ if (changes['gutters']) {
19326
+ this.applyGutters();
19327
+ }
19328
+ }
19329
+ ngOnDestroy() {
19330
+ this.subs.unsubscribe();
19331
+ }
19332
+ applyColumns() {
19333
+ const containerWidth = this._formWidth;
19334
+ const newColumnsNumber = calculateColumns(this.cols, containerWidth);
19335
+ if (newColumnsNumber !== this._previousCols) {
19336
+ this._formColumnsNumber = newColumnsNumber;
19337
+ this.updateColumnClasses();
19338
+ this._previousCols = newColumnsNumber;
19339
+ }
19340
+ }
19341
+ applyGutters() {
19342
+ const containerWidth = this._formWidth;
19343
+ const newGutters = calculateGutters(this.gutters, containerWidth);
19344
+ if (newGutters && (newGutters.cols !== this._previousGutters?.cols || newGutters.rows !== this._previousGutters?.rows)) {
19345
+ this._formGutters = newGutters;
19346
+ this.updateGutterClasses();
19347
+ this._previousGutters = newGutters;
19348
+ }
19349
+ }
19350
+ updateColumnClasses() {
19351
+ this.columnsClass = generateColumnClass(this._formColumnsNumber);
19352
+ this.cdr.detectChanges();
19353
+ }
19354
+ updateGutterClasses() {
19355
+ this.guttersStyle = generateGuttersStyling(this._formGutters, { ...DEFAULT_FORMFIELDSET_GUTTERS });
19356
+ this.cdr.detectChanges();
19357
+ }
19358
+ updateColSpanClass() {
19359
+ const hostElement = this.elementRef.nativeElement;
19360
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
19361
+ if (newColSpan !== this._previousColSpan) {
19362
+ const newClass = generateColSpanClass(newColSpan);
19363
+ if (this._colSpanClass) {
19364
+ this.renderer.removeClass(hostElement, this._colSpanClass);
19365
+ }
19366
+ if (newClass) {
19367
+ this.renderer.addClass(hostElement, newClass);
19368
+ }
19369
+ this._colSpanClass = newClass;
19370
+ this._previousColSpan = newColSpan;
19371
+ this.cdr.detectChanges();
19372
+ }
19373
+ }
19374
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldSetComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: FormService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
19375
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldSetComponent, isStandalone: true, selector: "fieldset[kendoFormFieldSet]", inputs: { legend: "legend", cols: "cols", gutters: "gutters", colSpan: "colSpan" }, host: { properties: { "class.k-form-fieldset": "this.formFieldSetClass" } }, exportAs: ["kendoFormFieldSet"], usesOnChanges: true, ngImport: i0, template: `
19376
+ <legend *ngIf="legend" class="k-form-legend">
19377
+ {{ legend }}
19378
+ </legend>
19379
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{'gap': guttersStyle}">
19380
+ <ng-content></ng-content>
19381
+ </div>
19382
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
19383
+ }
19384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldSetComponent, decorators: [{
19385
+ type: Component,
19386
+ args: [{
19387
+ exportAs: 'kendoFormFieldSet',
19388
+ selector: 'fieldset[kendoFormFieldSet]',
19389
+ template: `
19390
+ <legend *ngIf="legend" class="k-form-legend">
19391
+ {{ legend }}
19392
+ </legend>
19393
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{'gap': guttersStyle}">
19394
+ <ng-content></ng-content>
19395
+ </div>
19396
+ `,
19397
+ standalone: true,
19398
+ imports: [NgIf, NgClass, NgStyle],
19399
+ }]
19400
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: FormService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formFieldSetClass: [{
19401
+ type: HostBinding,
19402
+ args: ['class.k-form-fieldset']
19403
+ }], legend: [{
19404
+ type: Input
19405
+ }], cols: [{
19406
+ type: Input
19407
+ }], gutters: [{
19408
+ type: Input
19409
+ }], colSpan: [{
19410
+ type: Input
19411
+ }] } });
19412
+
18813
19413
  /**
18814
19414
  * Use the `KENDO_TEXTBOX` utility array to add all TextBox-related components and directives to a standalone Angular component.
18815
19415
  *
@@ -18988,6 +19588,26 @@ const KENDO_FORMFIELD = [
18988
19588
  HintComponent,
18989
19589
  ErrorComponent
18990
19590
  ];
19591
+ /**
19592
+ * Use the `KENDO_FORM` utility array to add all Form-related components and directives to a standalone Angular component.
19593
+ *
19594
+ * @example
19595
+ * ```typescript
19596
+ * import { KENDO_FORM } from '@progress/kendo-angular-inputs';
19597
+ * @Component({
19598
+ * standalone: true,
19599
+ * imports: [KENDO_FORM],
19600
+ * template: `<form kendoForm>...</form>`
19601
+ * })
19602
+ * export class MyComponent {}
19603
+ * ```
19604
+ */
19605
+ const KENDO_FORM = [
19606
+ FormComponent,
19607
+ FormSeparatorComponent,
19608
+ FormFieldSetComponent,
19609
+ ...KENDO_FORMFIELD
19610
+ ];
18991
19611
  /**
18992
19612
  * Use the `KENDO_SLIDER` utility array to add all Slider-related components and directives to a standalone Angular component.
18993
19613
  *
@@ -19158,6 +19778,7 @@ const KENDO_INPUTS = [
19158
19778
  ...KENDO_CHECKBOX,
19159
19779
  ...KENDO_RADIOBUTTON,
19160
19780
  ...KENDO_SWITCH,
19781
+ ...KENDO_FORM,
19161
19782
  ...KENDO_FORMFIELD,
19162
19783
  ...KENDO_SLIDER,
19163
19784
  ...KENDO_RANGESLIDER,
@@ -19193,8 +19814,8 @@ const KENDO_INPUTS = [
19193
19814
  */
19194
19815
  class InputsModule {
19195
19816
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19196
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, imports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent], exports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent] });
19197
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService, AdaptiveService], imports: [TextBoxComponent, i7.SeparatorComponent, NumericTextBoxComponent, i7.SeparatorComponent, i7.SeparatorComponent, i7.SeparatorComponent, SliderComponent, RangeSliderComponent, RatingComponent, SignatureComponent, ColorPickerComponent, FlatColorPickerComponent, ColorGradientComponent, OTPInputComponent, i7.SeparatorComponent] });
19817
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, imports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormComponent, FormSeparatorComponent, FormFieldSetComponent, FormFieldComponent, HintComponent, ErrorComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent], exports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormComponent, FormSeparatorComponent, FormFieldSetComponent, FormFieldComponent, HintComponent, ErrorComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent] });
19818
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService, AdaptiveService], imports: [TextBoxComponent, i7.SeparatorComponent, NumericTextBoxComponent, i7.SeparatorComponent, i7.SeparatorComponent, i7.SeparatorComponent, FormComponent, SliderComponent, RangeSliderComponent, RatingComponent, SignatureComponent, ColorPickerComponent, FlatColorPickerComponent, ColorGradientComponent, OTPInputComponent, i7.SeparatorComponent] });
19198
19819
  }
19199
19820
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, decorators: [{
19200
19821
  type: NgModule,
@@ -19643,6 +20264,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19643
20264
  }]
19644
20265
  }] });
19645
20266
 
20267
+ //IMPORTANT: NgModule export kept for backwards compatibility
20268
+ /**
20269
+ * Defines the [NgModule](link:site.data.urls.angular['ngmoduleapi']) for the FormField, Error, and Hint components.
20270
+ *
20271
+ * Use this module to add Form features to your NgModule-based Angular application.
20272
+ *
20273
+ * @example
20274
+ * ```typescript
20275
+ * import { FormModule } from '@progress/kendo-angular-inputs';
20276
+ * import { NgModule } from '@angular/core';
20277
+ * import { BrowserModule } from '@angular/platform-browser';
20278
+ * import { AppComponent } from './app.component';
20279
+ *
20280
+ * @NgModule({
20281
+ * declarations: [AppComponent],
20282
+ * imports: [BrowserModule, FormModule],
20283
+ * bootstrap: [AppComponent]
20284
+ * })
20285
+ * export class AppModule {}
20286
+ * ```
20287
+ */
20288
+ class FormModule {
20289
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20290
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FormModule, imports: [FormComponent, FormSeparatorComponent, FormFieldSetComponent, FormFieldComponent, HintComponent, ErrorComponent], exports: [FormComponent, FormSeparatorComponent, FormFieldSetComponent, FormFieldComponent, HintComponent, ErrorComponent] });
20291
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, imports: [FormComponent] });
20292
+ }
20293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, decorators: [{
20294
+ type: NgModule,
20295
+ args: [{
20296
+ imports: [...KENDO_FORM],
20297
+ exports: [...KENDO_FORM]
20298
+ }]
20299
+ }] });
20300
+
19646
20301
  //IMPORTANT: NgModule export kept for backwards compatibility
19647
20302
  /**
19648
20303
  * Defines the [`NgModule`](link:site.data.urls.angular['ngmoduleapi']) for the Signature component.
@@ -19717,5 +20372,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19717
20372
  * Generated bundle index. Do not edit.
19718
20373
  */
19719
20374
 
19720
- export { ActiveColorClickEvent, CheckBoxComponent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, KENDO_CHECKBOX, KENDO_COLORGRADIENT, KENDO_COLORPALETTE, KENDO_COLORPICKER, KENDO_FLATCOLORPICKER, KENDO_FORMFIELD, KENDO_INPUTS, KENDO_MASKEDTEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_OTPINPUT, KENDO_RADIOBUTTON, KENDO_RANGESLIDER, KENDO_RATING, KENDO_SIGNATURE, KENDO_SLIDER, KENDO_SWITCH, KENDO_TEXTAREA, KENDO_TEXTBOX, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, OTPInputComponent, OTPInputCustomMessagesComponent, OTPInputModule, RadioButtonComponent, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, RatingComponent, RatingHoveredItemTemplateDirective, RatingItemTemplateDirective, RatingModule, RatingSelectedItemTemplateDirective, 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 };
20375
+ export { ActiveColorClickEvent, CheckBoxComponent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormComponent, FormFieldComponent, FormFieldModule, FormFieldSetComponent, FormModule, FormSeparatorComponent, HintComponent, InputSeparatorComponent, InputsModule, KENDO_CHECKBOX, KENDO_COLORGRADIENT, KENDO_COLORPALETTE, KENDO_COLORPICKER, KENDO_FLATCOLORPICKER, KENDO_FORM, KENDO_FORMFIELD, KENDO_INPUTS, KENDO_MASKEDTEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_OTPINPUT, KENDO_RADIOBUTTON, KENDO_RANGESLIDER, KENDO_RATING, KENDO_SIGNATURE, KENDO_SLIDER, KENDO_SWITCH, KENDO_TEXTAREA, KENDO_TEXTBOX, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, OTPInputComponent, OTPInputCustomMessagesComponent, OTPInputModule, RadioButtonComponent, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, RatingComponent, RatingHoveredItemTemplateDirective, RatingItemTemplateDirective, RatingModule, RatingSelectedItemTemplateDirective, 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 };
19721
20376