@progress/kendo-angular-inputs 19.3.0-develop.2 → 19.3.0-develop.20

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 (35) hide show
  1. package/common/formservice.service.d.ts +14 -0
  2. package/common/models/gutters.d.ts +28 -0
  3. package/common/models/responsive-breakpoints.d.ts +34 -0
  4. package/common/utils.d.ts +0 -4
  5. package/directives.d.ts +19 -1
  6. package/esm2022/common/formservice.service.mjs +21 -0
  7. package/esm2022/common/models/gutters.mjs +5 -0
  8. package/esm2022/common/models/responsive-breakpoints.mjs +5 -0
  9. package/esm2022/common/utils.mjs +0 -4
  10. package/esm2022/directives.mjs +24 -0
  11. package/esm2022/form/form.component.mjs +153 -0
  12. package/esm2022/form/formseparator.component.mjs +80 -0
  13. package/esm2022/form/utils.mjs +140 -0
  14. package/esm2022/form.module.mjs +46 -0
  15. package/esm2022/formfield/formfield.component.mjs +47 -5
  16. package/esm2022/formfieldset/formfieldset.component.mjs +170 -0
  17. package/esm2022/index.mjs +5 -0
  18. package/esm2022/inputs.module.mjs +26 -23
  19. package/esm2022/otpinput/otpinput.component.mjs +2 -2
  20. package/esm2022/package-metadata.mjs +2 -2
  21. package/esm2022/rangeslider/rangeslider.component.mjs +3 -0
  22. package/esm2022/textarea/models/textarea-settings.mjs +5 -0
  23. package/esm2022/textarea/textarea.component.mjs +7 -1
  24. package/fesm2022/progress-kendo-angular-inputs.mjs +628 -15
  25. package/form/form.component.d.ts +70 -0
  26. package/form/formseparator.component.d.ts +32 -0
  27. package/form/utils.d.ts +58 -0
  28. package/form.module.d.ts +36 -0
  29. package/formfield/formfield.component.d.ts +19 -4
  30. package/formfieldset/formfieldset.component.d.ts +68 -0
  31. package/index.d.ts +7 -0
  32. package/inputs.module.d.ts +25 -22
  33. package/package.json +13 -13
  34. package/textarea/models/textarea-settings.d.ts +101 -0
  35. package/textarea/textarea.component.d.ts +3 -2
@@ -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, 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: 1751964574,
558
- version: '19.3.0-develop.2',
553
+ publishDate: 1754293650,
554
+ version: '19.3.0-develop.20',
559
555
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
560
556
  };
561
557
 
@@ -1872,6 +1868,7 @@ class RangeSliderComponent extends SliderBase {
1872
1868
  this.ngZone = ngZone;
1873
1869
  this.changeDetector = changeDetector;
1874
1870
  this.hostElement = hostElement;
1871
+ validatePackage(packageMetadata);
1875
1872
  }
1876
1873
  /**
1877
1874
  * Focuses the RangeSlider.
@@ -14203,6 +14200,157 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14203
14200
  args: ['attr.id']
14204
14201
  }] } });
14205
14202
 
14203
+ /**
14204
+ * @hidden
14205
+ */
14206
+ class FormService {
14207
+ formWidth = new BehaviorSubject(null);
14208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14209
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, providedIn: 'root' });
14210
+ }
14211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, decorators: [{
14212
+ type: Injectable,
14213
+ args: [{
14214
+ providedIn: 'root',
14215
+ }]
14216
+ }] });
14217
+
14218
+ /**
14219
+ * @hidden
14220
+ */
14221
+ const DEFAULT_GUTTERS = { rows: '0px', cols: '32px' };
14222
+ /**
14223
+ * @hidden
14224
+ */
14225
+ function innerWidth(element) {
14226
+ let width = element.clientWidth;
14227
+ const style = getComputedStyle(element);
14228
+ width -= (parseFloat(style.paddingLeft) || 0) + (parseFloat(style.borderLeftWidth) || 0);
14229
+ width -= (parseFloat(style.paddingRight) || 0) + (parseFloat(style.borderRightWidth) || 0);
14230
+ return width;
14231
+ }
14232
+ /**
14233
+ * @hidden
14234
+ */
14235
+ function processBreakpoints(breakpoints, containerWidth) {
14236
+ if (!breakpoints?.length || containerWidth === null) {
14237
+ return '';
14238
+ }
14239
+ for (const [index, breakpoint] of breakpoints.entries()) {
14240
+ const minBreakpointWidth = breakpoint.minWidth || breakpoints[index - 1]?.maxWidth + 1 || 0;
14241
+ const maxBreakpointWidth = breakpoint.maxWidth || breakpoints[index + 1]?.minWidth - 1 || Infinity;
14242
+ if (containerWidth >= minBreakpointWidth && containerWidth <= maxBreakpointWidth) {
14243
+ return breakpoint.value;
14244
+ }
14245
+ }
14246
+ return '';
14247
+ }
14248
+ /**
14249
+ * @hidden
14250
+ */
14251
+ const calculateColumns = (cols, containerWidth) => {
14252
+ if (!cols) {
14253
+ return null;
14254
+ }
14255
+ if (Array.isArray(cols) && cols.length > 0) {
14256
+ const processedCols = processBreakpoints(cols, containerWidth) || null;
14257
+ return typeof processedCols === 'string' ? parseInt(processedCols, 10) : processedCols;
14258
+ }
14259
+ else if (typeof cols === 'number') {
14260
+ return cols;
14261
+ }
14262
+ return null;
14263
+ };
14264
+ /**
14265
+ * @hidden
14266
+ *
14267
+ * Calculates gutters for rows and columns based on responsive breakpoints or fixed values
14268
+ */
14269
+ const calculateGutters = (gutters, containerWidth) => {
14270
+ if (!gutters) {
14271
+ return null;
14272
+ }
14273
+ if (typeof gutters === 'number' || typeof gutters === 'string') {
14274
+ return { cols: gutters, rows: gutters };
14275
+ }
14276
+ else if (Array.isArray(gutters)) {
14277
+ const processedGutters = processBreakpoints(gutters, containerWidth) || null;
14278
+ return processedGutters !== null ? { cols: processedGutters, rows: processedGutters } : null;
14279
+ }
14280
+ else if (typeof gutters === 'object') {
14281
+ const gutterObject = gutters;
14282
+ const result = { rows: null, cols: null };
14283
+ if (gutterObject.cols !== undefined && gutterObject.cols !== null) {
14284
+ if (typeof gutterObject.cols === 'number' || typeof gutterObject.cols === 'string') {
14285
+ result.cols = gutterObject.cols;
14286
+ }
14287
+ else if (Array.isArray(gutterObject.cols)) {
14288
+ result.cols = processBreakpoints(gutterObject.cols, containerWidth) || null;
14289
+ }
14290
+ }
14291
+ else {
14292
+ result.cols = null;
14293
+ }
14294
+ if (gutterObject.rows !== undefined) {
14295
+ if (typeof gutterObject.rows === 'number' || typeof gutterObject.rows === 'string') {
14296
+ result.rows = gutterObject.rows;
14297
+ }
14298
+ else if (Array.isArray(gutterObject.rows)) {
14299
+ result.rows = processBreakpoints(gutterObject.rows, containerWidth) || null;
14300
+ }
14301
+ }
14302
+ else {
14303
+ result.rows = null;
14304
+ }
14305
+ return result;
14306
+ }
14307
+ return null;
14308
+ };
14309
+ /**
14310
+ * @hidden
14311
+ *
14312
+ * Calculates column span value based on responsive breakpoints or fixed number
14313
+ */
14314
+ const calculateColSpan = (colSpan, containerWidth) => {
14315
+ if (!colSpan) {
14316
+ return null;
14317
+ }
14318
+ if (typeof colSpan === 'number') {
14319
+ return colSpan;
14320
+ }
14321
+ else if (Array.isArray(colSpan) && colSpan.length > 0) {
14322
+ const processedColSpan = processBreakpoints(colSpan, containerWidth) || null;
14323
+ return typeof processedColSpan === 'string' ? parseInt(processedColSpan, 10) : processedColSpan;
14324
+ }
14325
+ return null;
14326
+ };
14327
+ /**
14328
+ * @hidden
14329
+ *
14330
+ * Generates CSS class names for columns
14331
+ */
14332
+ const generateColumnClass = (columnsNumber) => {
14333
+ return columnsNumber && columnsNumber > 0 ? `k-grid-cols-${columnsNumber}` : '';
14334
+ };
14335
+ /**
14336
+ * @hidden
14337
+ *
14338
+ * Generates CSS styles for gutters based on the provided gutters object.
14339
+ */
14340
+ const generateGuttersStyling = (gutters) => {
14341
+ const rows = processCssValue(gutters?.rows);
14342
+ const cols = processCssValue(gutters?.cols);
14343
+ return `${rows ?? DEFAULT_GUTTERS.rows} ${cols ?? DEFAULT_GUTTERS.cols}`;
14344
+ };
14345
+ /**
14346
+ * @hidden
14347
+ *
14348
+ * Generates CSS class name for column span
14349
+ */
14350
+ const generateColSpanClass = (colSpan) => {
14351
+ return colSpan ? `k-col-span-${colSpan}` : '';
14352
+ };
14353
+
14206
14354
  /**
14207
14355
  * Represents the Kendo UI FormField component for Angular.
14208
14356
  * Use this component to group form-bound controls (Kendo Angular components or native HTML controls).
@@ -14225,6 +14373,7 @@ class FormFieldComponent {
14225
14373
  renderer;
14226
14374
  localizationService;
14227
14375
  hostElement;
14376
+ formService;
14228
14377
  hostClass = true;
14229
14378
  /**
14230
14379
  * @hidden
@@ -14267,6 +14416,8 @@ class FormFieldComponent {
14267
14416
  /**
14268
14417
  * Specifies the layout orientation of the form field.
14269
14418
  *
14419
+ * @hidden
14420
+ *
14270
14421
  * @default 'vertical'
14271
14422
  */
14272
14423
  orientation = 'vertical';
@@ -14278,6 +14429,11 @@ class FormFieldComponent {
14278
14429
  * @default 'initial'
14279
14430
  */
14280
14431
  showErrors = 'initial';
14432
+ /**
14433
+ * Defines the colspan for the form field.
14434
+ * Can be a number or an array of responsive breakpoints.
14435
+ */
14436
+ colSpan;
14281
14437
  /**
14282
14438
  * @hidden
14283
14439
  */
@@ -14299,15 +14455,23 @@ class FormFieldComponent {
14299
14455
  control;
14300
14456
  subscriptions = new Subscription();
14301
14457
  rtl = false;
14302
- constructor(renderer, localizationService, hostElement) {
14458
+ _formWidth = null;
14459
+ _colSpanClass = null;
14460
+ _previousColSpan = null;
14461
+ constructor(renderer, localizationService, hostElement, formService) {
14303
14462
  this.renderer = renderer;
14304
14463
  this.localizationService = localizationService;
14305
14464
  this.hostElement = hostElement;
14465
+ this.formService = formService;
14306
14466
  validatePackage(packageMetadata);
14307
14467
  this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {
14308
14468
  this.rtl = rtl;
14309
14469
  this.direction = this.rtl ? 'rtl' : 'ltr';
14310
14470
  }));
14471
+ this.subscriptions.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
14472
+ this._formWidth = width;
14473
+ this.updateColSpanClass();
14474
+ }));
14311
14475
  }
14312
14476
  ngAfterViewInit() {
14313
14477
  this.setDescription();
@@ -14315,6 +14479,11 @@ class FormFieldComponent {
14315
14479
  ngAfterViewChecked() {
14316
14480
  this.updateDescription();
14317
14481
  }
14482
+ ngOnChanges(changes) {
14483
+ if (changes['colSpan']) {
14484
+ this.updateColSpanClass();
14485
+ }
14486
+ }
14318
14487
  ngOnDestroy() {
14319
14488
  this.subscriptions.unsubscribe();
14320
14489
  }
@@ -14419,14 +14588,29 @@ class FormFieldComponent {
14419
14588
  this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));
14420
14589
  this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));
14421
14590
  }
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: [
14591
+ updateColSpanClass() {
14592
+ const hostElement = this.hostElement.nativeElement;
14593
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
14594
+ if (newColSpan !== this._previousColSpan) {
14595
+ const newClass = generateColSpanClass(newColSpan);
14596
+ if (this._colSpanClass) {
14597
+ this.renderer.removeClass(hostElement, this._colSpanClass);
14598
+ }
14599
+ if (newClass) {
14600
+ this.renderer.addClass(hostElement, newClass);
14601
+ }
14602
+ this._colSpanClass = newClass;
14603
+ this._previousColSpan = newColSpan;
14604
+ }
14605
+ }
14606
+ 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 });
14607
+ 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
14608
  LocalizationService,
14425
14609
  {
14426
14610
  provide: L10N_PREFIX,
14427
14611
  useValue: 'kendo.formfield'
14428
14612
  }
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: `
14613
+ ], 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
14614
  <ng-content select="label, kendo-label"></ng-content>
14431
14615
  <div class="k-form-field-wrap">
14432
14616
  <ng-content></ng-content>
@@ -14457,7 +14641,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14457
14641
  standalone: true,
14458
14642
  imports: [NgIf]
14459
14643
  }]
14460
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{
14644
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }, { type: FormService }]; }, propDecorators: { hostClass: [{
14461
14645
  type: HostBinding,
14462
14646
  args: ['class.k-form-field']
14463
14647
  }], direction: [{
@@ -14490,6 +14674,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14490
14674
  type: Input
14491
14675
  }], showErrors: [{
14492
14676
  type: Input
14677
+ }], colSpan: [{
14678
+ type: Input
14493
14679
  }] } });
14494
14680
 
14495
14681
  /**
@@ -17253,6 +17439,12 @@ class TextAreaComponent extends TextFieldsBase {
17253
17439
  validatePackage(packageMetadata);
17254
17440
  this.direction = localizationService.rtl ? 'rtl' : 'ltr';
17255
17441
  }
17442
+ ngAfterContentInit() {
17443
+ this.ngZone.onStable.pipe((take(1))).subscribe(() => {
17444
+ this.prefix && (this.prefix.orientation = this.adornmentsOrientation);
17445
+ this.suffix && (this.suffix.orientation = this.adornmentsOrientation);
17446
+ });
17447
+ }
17256
17448
  ngAfterViewInit() {
17257
17449
  this.ngZone.runOutsideAngular(() => {
17258
17450
  this.handleFlow();
@@ -18810,6 +19002,372 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
18810
19002
  }]
18811
19003
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
18812
19004
 
19005
+ /**
19006
+ * Represents the Kendo UI Form component for Angular.
19007
+ *
19008
+ * @remarks
19009
+ * Supported children components are: {@link FormFieldComponent}, {@link FormSeparatorComponent}, and {@link FormFieldSetComponent}.
19010
+ */
19011
+ class FormComponent {
19012
+ element;
19013
+ cdr;
19014
+ formService;
19015
+ /**
19016
+ * Defines the orientation of the form.
19017
+ *
19018
+ * @default 'vertical'
19019
+ */
19020
+ orientation = 'vertical';
19021
+ /**
19022
+ * Defines the number of columns in the form.
19023
+ * Can be a number or an array of responsive breakpoints.
19024
+ */
19025
+ cols;
19026
+ /**
19027
+ * Defines the gutters for the form.
19028
+ * You can specify gutters for rows and columns.
19029
+ */
19030
+ gutters = { ...DEFAULT_GUTTERS };
19031
+ /**
19032
+ * @hidden
19033
+ */
19034
+ columnsClass = '';
19035
+ /**
19036
+ * @hidden
19037
+ */
19038
+ guttersStyle = '';
19039
+ /**
19040
+ * @hidden
19041
+ */
19042
+ showLicenseWatermark = false;
19043
+ /**
19044
+ * @hidden
19045
+ */
19046
+ licenseMessage;
19047
+ get formClass() {
19048
+ return 'k-form k-form-md';
19049
+ }
19050
+ get horizontalClass() {
19051
+ return this.orientation === 'horizontal';
19052
+ }
19053
+ _formColumnsNumber;
19054
+ _formGutters = { ...DEFAULT_GUTTERS };
19055
+ constructor(element, cdr, formService) {
19056
+ this.element = element;
19057
+ this.cdr = cdr;
19058
+ this.formService = formService;
19059
+ const isValid = validatePackage(packageMetadata);
19060
+ this.licenseMessage = getLicenseMessage(packageMetadata);
19061
+ this.showLicenseWatermark = shouldShowValidationUI(isValid);
19062
+ }
19063
+ ngAfterContentInit() {
19064
+ this.applyColumns();
19065
+ this.applyGutters();
19066
+ this.formService.formWidth.next(innerWidth(this.element.nativeElement));
19067
+ }
19068
+ ngOnChanges(changes) {
19069
+ if (changes['cols']) {
19070
+ this.applyColumns();
19071
+ }
19072
+ if (changes['gutters']) {
19073
+ this.applyGutters();
19074
+ }
19075
+ }
19076
+ /**
19077
+ * @hidden
19078
+ */
19079
+ onResize() {
19080
+ this.formService.formWidth.next(innerWidth(this.element.nativeElement));
19081
+ const previousColumnsNumber = this._formColumnsNumber;
19082
+ const previousGutters = this._formGutters;
19083
+ this.applyColumns();
19084
+ this.applyGutters();
19085
+ if (previousColumnsNumber !== this._formColumnsNumber) {
19086
+ this.cdr.detectChanges();
19087
+ }
19088
+ if (previousGutters?.cols !== this._formGutters?.cols || previousGutters?.rows !== this._formGutters?.rows) {
19089
+ this.cdr.detectChanges();
19090
+ }
19091
+ }
19092
+ applyColumns() {
19093
+ const containerWidth = innerWidth(this.element.nativeElement);
19094
+ this._formColumnsNumber = calculateColumns(this.cols, containerWidth);
19095
+ this.updateColumnClasses();
19096
+ }
19097
+ applyGutters() {
19098
+ const containerWidth = innerWidth(this.element.nativeElement);
19099
+ this._formGutters = calculateGutters(this.gutters, containerWidth);
19100
+ this.updateGutterClasses();
19101
+ }
19102
+ updateColumnClasses() {
19103
+ this.columnsClass = generateColumnClass(this._formColumnsNumber);
19104
+ }
19105
+ updateGutterClasses() {
19106
+ this.guttersStyle = generateGuttersStyling(this._formGutters);
19107
+ }
19108
+ 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 });
19109
+ 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: `
19110
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{ gap: guttersStyle }">
19111
+ <ng-content></ng-content>
19112
+ </div>
19113
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
19114
+ <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
19115
+ `, 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"] }] });
19116
+ }
19117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, decorators: [{
19118
+ type: Component,
19119
+ args: [{
19120
+ exportAs: 'kendoForm',
19121
+ selector: 'form[kendoForm]',
19122
+ template: `
19123
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{ gap: guttersStyle }">
19124
+ <ng-content></ng-content>
19125
+ </div>
19126
+ <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
19127
+ <div kendoWatermarkOverlay *ngIf="showLicenseWatermark" [licenseMessage]="licenseMessage"></div>
19128
+ `,
19129
+ standalone: true,
19130
+ imports: [NgClass, NgStyle, NgIf, ResizeSensorComponent, WatermarkOverlayComponent],
19131
+ }]
19132
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: FormService }]; }, propDecorators: { orientation: [{
19133
+ type: Input
19134
+ }], cols: [{
19135
+ type: Input
19136
+ }], gutters: [{
19137
+ type: Input
19138
+ }], formClass: [{
19139
+ type: HostBinding,
19140
+ args: ['class']
19141
+ }], horizontalClass: [{
19142
+ type: HostBinding,
19143
+ args: ['class.k-form-horizontal']
19144
+ }] } });
19145
+
19146
+ /**
19147
+ * Represents the Kendo UI Form Separator component for Angular.
19148
+ */
19149
+ class FormSeparatorComponent {
19150
+ renderer;
19151
+ hostElement;
19152
+ formService;
19153
+ hostClass = true;
19154
+ /**
19155
+ * Defines the colspan for the separator element related to the parent Form component columns.
19156
+ * Can be a number or an array of responsive breakpoints.
19157
+ */
19158
+ colSpan;
19159
+ _formWidth = null;
19160
+ _colSpanClass = null;
19161
+ _previousColSpan = null;
19162
+ subscriptions = new Subscription();
19163
+ constructor(renderer, hostElement, formService) {
19164
+ this.renderer = renderer;
19165
+ this.hostElement = hostElement;
19166
+ this.formService = formService;
19167
+ validatePackage(packageMetadata);
19168
+ this.subscriptions.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
19169
+ this._formWidth = width;
19170
+ this.updateColSpanClass();
19171
+ }));
19172
+ }
19173
+ ngOnChanges(changes) {
19174
+ if (changes['colSpan']) {
19175
+ this.updateColSpanClass();
19176
+ }
19177
+ }
19178
+ ngOnDestroy() {
19179
+ this.subscriptions.unsubscribe();
19180
+ }
19181
+ updateColSpanClass() {
19182
+ const hostElement = this.hostElement.nativeElement;
19183
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
19184
+ if (newColSpan !== this._previousColSpan) {
19185
+ const newClass = generateColSpanClass(newColSpan);
19186
+ if (this._colSpanClass) {
19187
+ this.renderer.removeClass(hostElement, this._colSpanClass);
19188
+ }
19189
+ if (newClass) {
19190
+ this.renderer.addClass(hostElement, newClass);
19191
+ }
19192
+ this._colSpanClass = newClass;
19193
+ this._previousColSpan = newColSpan;
19194
+ }
19195
+ }
19196
+ 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 });
19197
+ 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 });
19198
+ }
19199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSeparatorComponent, decorators: [{
19200
+ type: Component,
19201
+ args: [{
19202
+ exportAs: 'kendoFormSeparator',
19203
+ selector: 'kendo-form-separator',
19204
+ template: ``,
19205
+ standalone: true,
19206
+ }]
19207
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FormService }]; }, propDecorators: { hostClass: [{
19208
+ type: HostBinding,
19209
+ args: ['class.k-form-separator']
19210
+ }], colSpan: [{
19211
+ type: Input
19212
+ }] } });
19213
+
19214
+ /**
19215
+ * Represents the Kendo UI FormFieldSet component for Angular.
19216
+ *
19217
+ * @remarks
19218
+ * Supported children components are: {@link FormFieldComponent} and {@link FormSeparatorComponent}.
19219
+ */
19220
+ class FormFieldSetComponent {
19221
+ elementRef;
19222
+ renderer;
19223
+ formService;
19224
+ cdr;
19225
+ formFieldSetClass = true;
19226
+ /**
19227
+ * Defines the legend for the fieldset.
19228
+ */
19229
+ legend;
19230
+ /**
19231
+ * Defines the number of columns of the fieldset.
19232
+ * Can be a number or an array of responsive breakpoints.
19233
+ */
19234
+ cols;
19235
+ /**
19236
+ * Defines the gutters for the fieldset.
19237
+ * You can specify gutters for rows and columns.
19238
+ */
19239
+ gutters;
19240
+ /**
19241
+ * Defines the colspan for the fieldset related to the parent Form component columns.
19242
+ * Can be a number or an array of responsive breakpoints.
19243
+ */
19244
+ colSpan;
19245
+ /**
19246
+ * @hidden
19247
+ */
19248
+ columnsClass = '';
19249
+ /**
19250
+ * @hidden
19251
+ */
19252
+ guttersStyle = '';
19253
+ _formColumnsNumber;
19254
+ _colSpanClass = null;
19255
+ _formWidth = null;
19256
+ _formGutters = { ...DEFAULT_GUTTERS };
19257
+ _previousColSpan = null;
19258
+ _previousCols = null;
19259
+ _previousGutters;
19260
+ subs = new Subscription();
19261
+ constructor(elementRef, renderer, formService, cdr) {
19262
+ this.elementRef = elementRef;
19263
+ this.renderer = renderer;
19264
+ this.formService = formService;
19265
+ this.cdr = cdr;
19266
+ validatePackage(packageMetadata);
19267
+ }
19268
+ ngOnInit() {
19269
+ this.subs.add(this.formService.formWidth.pipe(filter((width) => width !== null)).subscribe((width) => {
19270
+ this._formWidth = width;
19271
+ this.applyColumns();
19272
+ this.applyGutters();
19273
+ this.updateColSpanClass();
19274
+ }));
19275
+ }
19276
+ ngOnChanges(changes) {
19277
+ if (changes['colSpan']) {
19278
+ this.updateColSpanClass();
19279
+ }
19280
+ if (changes['cols']) {
19281
+ this.applyColumns();
19282
+ }
19283
+ if (changes['gutters']) {
19284
+ this.applyGutters();
19285
+ }
19286
+ }
19287
+ ngOnDestroy() {
19288
+ this.subs.unsubscribe();
19289
+ }
19290
+ applyColumns() {
19291
+ const containerWidth = this._formWidth;
19292
+ const newColumnsNumber = calculateColumns(this.cols, containerWidth);
19293
+ if (newColumnsNumber !== this._previousCols) {
19294
+ this._formColumnsNumber = newColumnsNumber;
19295
+ this.updateColumnClasses();
19296
+ this._previousCols = newColumnsNumber;
19297
+ }
19298
+ }
19299
+ applyGutters() {
19300
+ const containerWidth = this._formWidth;
19301
+ const newGutters = calculateGutters(this.gutters, containerWidth);
19302
+ if (newGutters && (newGutters.cols !== this._previousGutters?.cols || newGutters.rows !== this._previousGutters?.rows)) {
19303
+ this._formGutters = newGutters;
19304
+ this.updateGutterClasses();
19305
+ this._previousGutters = newGutters;
19306
+ }
19307
+ }
19308
+ updateColumnClasses() {
19309
+ this.columnsClass = generateColumnClass(this._formColumnsNumber);
19310
+ this.cdr.detectChanges();
19311
+ }
19312
+ updateGutterClasses() {
19313
+ this.guttersStyle = generateGuttersStyling(this._formGutters);
19314
+ this.cdr.detectChanges();
19315
+ }
19316
+ updateColSpanClass() {
19317
+ const hostElement = this.elementRef.nativeElement;
19318
+ const newColSpan = calculateColSpan(this.colSpan, this._formWidth);
19319
+ if (newColSpan !== this._previousColSpan) {
19320
+ const newClass = generateColSpanClass(newColSpan);
19321
+ if (this._colSpanClass) {
19322
+ this.renderer.removeClass(hostElement, this._colSpanClass);
19323
+ }
19324
+ if (newClass) {
19325
+ this.renderer.addClass(hostElement, newClass);
19326
+ }
19327
+ this._colSpanClass = newClass;
19328
+ this._previousColSpan = newColSpan;
19329
+ this.cdr.detectChanges();
19330
+ }
19331
+ }
19332
+ 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 });
19333
+ 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: `
19334
+ <legend *ngIf="legend" class="k-form-legend">
19335
+ {{ legend }}
19336
+ </legend>
19337
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{'gap': guttersStyle}">
19338
+ <ng-content></ng-content>
19339
+ </div>
19340
+ `, 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"] }] });
19341
+ }
19342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldSetComponent, decorators: [{
19343
+ type: Component,
19344
+ args: [{
19345
+ exportAs: 'kendoFormFieldSet',
19346
+ selector: 'fieldset[kendoFormFieldSet]',
19347
+ template: `
19348
+ <legend *ngIf="legend" class="k-form-legend">
19349
+ {{ legend }}
19350
+ </legend>
19351
+ <div class="k-form-layout k-d-grid" [ngClass]="[columnsClass]" [ngStyle]="{'gap': guttersStyle}">
19352
+ <ng-content></ng-content>
19353
+ </div>
19354
+ `,
19355
+ standalone: true,
19356
+ imports: [NgIf, NgClass, NgStyle],
19357
+ }]
19358
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: FormService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formFieldSetClass: [{
19359
+ type: HostBinding,
19360
+ args: ['class.k-form-fieldset']
19361
+ }], legend: [{
19362
+ type: Input
19363
+ }], cols: [{
19364
+ type: Input
19365
+ }], gutters: [{
19366
+ type: Input
19367
+ }], colSpan: [{
19368
+ type: Input
19369
+ }] } });
19370
+
18813
19371
  /**
18814
19372
  * Use the `KENDO_TEXTBOX` utility array to add all TextBox-related components and directives to a standalone Angular component.
18815
19373
  *
@@ -18988,6 +19546,26 @@ const KENDO_FORMFIELD = [
18988
19546
  HintComponent,
18989
19547
  ErrorComponent
18990
19548
  ];
19549
+ /**
19550
+ * Use the `KENDO_FORM` utility array to add all Form-related components and directives to a standalone Angular component.
19551
+ *
19552
+ * @example
19553
+ * ```typescript
19554
+ * import { KENDO_FORM } from '@progress/kendo-angular-inputs';
19555
+ * @Component({
19556
+ * standalone: true,
19557
+ * imports: [KENDO_FORM],
19558
+ * template: `<form kendoForm>...</form>`
19559
+ * })
19560
+ * export class MyComponent {}
19561
+ * ```
19562
+ */
19563
+ const KENDO_FORM = [
19564
+ FormComponent,
19565
+ FormSeparatorComponent,
19566
+ FormFieldSetComponent,
19567
+ ...KENDO_FORMFIELD
19568
+ ];
18991
19569
  /**
18992
19570
  * Use the `KENDO_SLIDER` utility array to add all Slider-related components and directives to a standalone Angular component.
18993
19571
  *
@@ -19158,6 +19736,7 @@ const KENDO_INPUTS = [
19158
19736
  ...KENDO_CHECKBOX,
19159
19737
  ...KENDO_RADIOBUTTON,
19160
19738
  ...KENDO_SWITCH,
19739
+ ...KENDO_FORM,
19161
19740
  ...KENDO_FORMFIELD,
19162
19741
  ...KENDO_SLIDER,
19163
19742
  ...KENDO_RANGESLIDER,
@@ -19193,8 +19772,8 @@ const KENDO_INPUTS = [
19193
19772
  */
19194
19773
  class InputsModule {
19195
19774
  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] });
19775
+ 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] });
19776
+ 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
19777
  }
19199
19778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, decorators: [{
19200
19779
  type: NgModule,
@@ -19643,6 +20222,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19643
20222
  }]
19644
20223
  }] });
19645
20224
 
20225
+ //IMPORTANT: NgModule export kept for backwards compatibility
20226
+ /**
20227
+ * Defines the [NgModule](link:site.data.urls.angular['ngmoduleapi']) for the FormField, Error, and Hint components.
20228
+ *
20229
+ * Use this module to add Form features to your NgModule-based Angular application.
20230
+ *
20231
+ * @example
20232
+ * ```typescript
20233
+ * import { FormModule } from '@progress/kendo-angular-inputs';
20234
+ * import { NgModule } from '@angular/core';
20235
+ * import { BrowserModule } from '@angular/platform-browser';
20236
+ * import { AppComponent } from './app.component';
20237
+ *
20238
+ * @NgModule({
20239
+ * declarations: [AppComponent],
20240
+ * imports: [BrowserModule, FormModule],
20241
+ * bootstrap: [AppComponent]
20242
+ * })
20243
+ * export class AppModule {}
20244
+ * ```
20245
+ */
20246
+ class FormModule {
20247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20248
+ 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] });
20249
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, imports: [FormComponent] });
20250
+ }
20251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormModule, decorators: [{
20252
+ type: NgModule,
20253
+ args: [{
20254
+ imports: [...KENDO_FORM],
20255
+ exports: [...KENDO_FORM]
20256
+ }]
20257
+ }] });
20258
+
19646
20259
  //IMPORTANT: NgModule export kept for backwards compatibility
19647
20260
  /**
19648
20261
  * Defines the [`NgModule`](link:site.data.urls.angular['ngmoduleapi']) for the Signature component.
@@ -19717,5 +20330,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
19717
20330
  * Generated bundle index. Do not edit.
19718
20331
  */
19719
20332
 
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 };
20333
+ 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
20334