igniteui-angular 21.0.3 → 21.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +5 -6
  3. package/fesm2022/igniteui-angular-action-strip.mjs +39 -34
  4. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-banner.mjs +64 -59
  6. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  7. package/fesm2022/igniteui-angular-calendar.mjs +182 -161
  8. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  9. package/fesm2022/igniteui-angular-carousel.mjs +7 -3
  10. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-chips.mjs +140 -136
  12. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  13. package/fesm2022/igniteui-angular-combo.mjs +360 -356
  14. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-core.mjs +420 -618
  16. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  17. package/fesm2022/igniteui-angular-date-picker.mjs +124 -32
  18. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  19. package/fesm2022/igniteui-angular-directives.mjs +15 -10
  20. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  21. package/fesm2022/igniteui-angular-grids-core.mjs +75 -57
  22. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  23. package/fesm2022/igniteui-angular-grids-grid.mjs +71 -62
  24. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  25. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +51 -6
  26. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  27. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +6 -1
  28. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  29. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +8 -8
  30. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  31. package/fesm2022/igniteui-angular-input-group.mjs +8 -4
  32. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  33. package/fesm2022/igniteui-angular-list.mjs +24 -19
  34. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  35. package/fesm2022/igniteui-angular-paginator.mjs +71 -66
  36. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  37. package/fesm2022/igniteui-angular-query-builder.mjs +51 -36
  38. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-time-picker.mjs +50 -8
  40. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-tree.mjs +64 -61
  42. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  43. package/lib/core/styles/components/calendar/_calendar-theme.scss +2 -0
  44. package/lib/core/styles/components/grid/_grid-theme.scss +2 -1
  45. package/lib/core/styles/components/slider/_slider-theme.scss +0 -1
  46. package/lib/core/styles/components/tabs/_tabs-theme.scss +2 -1
  47. package/package.json +3 -2
  48. package/schematics/tsconfig.tsbuildinfo +1 -1
  49. package/schematics/utils/dependency-handler.js +1 -0
  50. package/styles/igniteui-angular-dark.css +1 -1
  51. package/styles/igniteui-angular.css +1 -1
  52. package/styles/igniteui-bootstrap-dark.css +1 -1
  53. package/styles/igniteui-bootstrap-light.css +1 -1
  54. package/styles/igniteui-dark-green.css +1 -1
  55. package/styles/igniteui-fluent-dark-excel.css +1 -1
  56. package/styles/igniteui-fluent-dark-word.css +1 -1
  57. package/styles/igniteui-fluent-dark.css +1 -1
  58. package/styles/igniteui-fluent-light-excel.css +1 -1
  59. package/styles/igniteui-fluent-light-word.css +1 -1
  60. package/styles/igniteui-fluent-light.css +1 -1
  61. package/styles/igniteui-indigo-dark.css +1 -1
  62. package/styles/igniteui-indigo-light.css +1 -1
  63. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  64. package/styles/maps/igniteui-angular.css.map +1 -1
  65. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  66. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  67. package/styles/maps/igniteui-dark-green.css.map +1 -1
  68. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  69. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  70. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  71. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  72. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  73. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  74. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  75. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  76. package/types/igniteui-angular-action-strip.d.ts +3 -0
  77. package/types/igniteui-angular-banner.d.ts +3 -0
  78. package/types/igniteui-angular-calendar.d.ts +37 -47
  79. package/types/igniteui-angular-carousel.d.ts +1 -0
  80. package/types/igniteui-angular-chips.d.ts +2 -0
  81. package/types/igniteui-angular-combo.d.ts +4 -2
  82. package/types/igniteui-angular-core.d.ts +152 -397
  83. package/types/igniteui-angular-date-picker.d.ts +22 -4
  84. package/types/igniteui-angular-directives.d.ts +8 -4
  85. package/types/igniteui-angular-grids-core.d.ts +18 -8
  86. package/types/igniteui-angular-grids-grid.d.ts +9 -7
  87. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +20 -3
  88. package/types/igniteui-angular-input-group.d.ts +1 -0
  89. package/types/igniteui-angular-list.d.ts +3 -0
  90. package/types/igniteui-angular-paginator.d.ts +3 -0
  91. package/types/igniteui-angular-query-builder.d.ts +8 -0
  92. package/types/igniteui-angular-time-picker.d.ts +7 -2
  93. package/types/igniteui-angular-tree.d.ts +2 -1
@@ -3,7 +3,7 @@ import { Input, HostBinding, Directive, inject, ElementRef, ChangeDetectorRef, R
3
3
  import { NgModel, NgControl, TouchedChangeEvent } from '@angular/forms';
4
4
  import { filter } from 'rxjs';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
- import { PlatformUtil, THEME_TOKEN, getCurrentResourceStrings, InputResourceStringsEN, getComponentTheme } from 'igniteui-angular/core';
6
+ import { PlatformUtil, THEME_TOKEN, getCurrentResourceStrings, InputResourceStringsEN, onResourceChangeHandle, getComponentTheme } from 'igniteui-angular/core';
7
7
  import { IgxButtonDirective } from 'igniteui-angular/directives';
8
8
  import { IgxIconComponent } from 'igniteui-angular/icon';
9
9
 
@@ -689,7 +689,7 @@ class IgxInputGroupComponent {
689
689
  * Returns the resource strings.
690
690
  */
691
691
  get resourceStrings() {
692
- return this._resourceStrings;
692
+ return this._resourceStrings || this._defaultResourceStrings;
693
693
  }
694
694
  /** @hidden @internal */
695
695
  get readOnly() {
@@ -815,7 +815,8 @@ class IgxInputGroupComponent {
815
815
  this._destroyRef = inject(DestroyRef);
816
816
  this._type = null;
817
817
  this._filled = false;
818
- this._resourceStrings = getCurrentResourceStrings(InputResourceStringsEN);
818
+ this._resourceStrings = null;
819
+ this._defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN);
819
820
  this._theme = this.themeToken.theme;
820
821
  const themeChange = this.themeToken.onChange((theme) => {
821
822
  if (this._theme !== theme) {
@@ -824,6 +825,9 @@ class IgxInputGroupComponent {
824
825
  }
825
826
  });
826
827
  this._destroyRef.onDestroy(() => themeChange.unsubscribe());
828
+ onResourceChangeHandle(this._destroyRef, () => {
829
+ this._defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN, false);
830
+ }, this);
827
831
  }
828
832
  /** @hidden */
829
833
  onClick(event) {
@@ -938,7 +942,7 @@ class IgxInputGroupComponent {
938
942
  }
939
943
  /** @hidden @internal */
940
944
  get fileNames() {
941
- return this.input.fileNames || this._resourceStrings.igx_input_file_placeholder;
945
+ return this.input.fileNames || this.resourceStrings.igx_input_file_placeholder;
942
946
  }
943
947
  /**
944
948
  * Returns whether the `IgxInputGroupComponent` type is border.
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-input-group.mjs","sources":["../../../projects/igniteui-angular/input-group/src/input-group/directives-hint/hint.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-label/label.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-prefix/prefix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-suffix/suffix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/inputGroupType.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/read-only-input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/public_api.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.module.ts","../../../projects/igniteui-angular/input-group/src/igniteui-angular-input-group.ts"],"sourcesContent":["import { Directive, HostBinding, Input, OnInit } from '@angular/core';\n\nenum IgxHintPosition {\n START,\n END\n}\n\n@Directive({\n selector: 'igx-hint,[igxHint]',\n standalone: true\n})\nexport class IgxHintDirective implements OnInit {\n /**\n * Sets/gets whether the hint position is at the start.\n * Default value is `false`.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * this.igxHint.isPositionStart = true;\n * ```\n * ```typescript\n * let isHintPositionStart = this.igxHint.isPositionStart;\n * ```\n *\n * @memberof IgxHintDirective\n */\n @HostBinding('class.igx-input-group__hint-item--start')\n public isPositionStart = false;\n /**\n * Sets/gets whether the hint position is at the end.\n * Default value is `false`.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * this.igxHint.isPositionEnd = true;\n * ```\n * ```typescript\n * let isHintPositionEnd = this.igxHint.isPositionEnd;\n * ```\n *\n * @memberof IgxHintDirective\n */\n @HostBinding('class.igx-input-group__hint-item--end')\n public isPositionEnd = false;\n\n private _position: IgxHintPosition = IgxHintPosition.START;\n /**\n * Sets the position of the hint.\n * ```html\n * <igx-input-group>\n * <input igxInput type=\"text\"/>\n * <igx-hint #hint [position]=\"'start'\">IgxHint displayed at the start</igx-hint>\n * </igx-input-group>\n * ```\n *\n * @memberof IgxHintDirective\n */\n @Input()\n public set position(value: string) {\n const position: IgxHintPosition = (IgxHintPosition as any)[value.toUpperCase()];\n if (position !== undefined) {\n this._position = position;\n this._applyPosition(this._position);\n }\n }\n /**\n * Gets the position of the hint.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * let hintPosition = this.igxHint.position;\n * ```\n *\n * @memberof IgxHintDirective\n */\n public get position() {\n return this._position.toString();\n }\n /**\n * @hidden\n */\n public ngOnInit() {\n this._applyPosition(this._position);\n }\n\n private _applyPosition(position: IgxHintPosition) {\n this.isPositionStart = this.isPositionEnd = false;\n switch (position) {\n case IgxHintPosition.START:\n this.isPositionStart = true;\n break;\n case IgxHintPosition.END:\n this.isPositionEnd = true;\n break;\n default: break;\n }\n }\n}\n","/** @hidden */\nexport abstract class IgxInputGroupBase {\n public disabled: boolean;\n public isFocused: boolean;\n public isRequired: boolean;\n public hasPlaceholder: boolean;\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, Renderer2, booleanAttribute, inject } from '@angular/core';\nimport {\n AbstractControl,\n NgControl,\n NgModel,\n TouchedChangeEvent\n} from '@angular/forms';\nimport { filter, Subscription } from 'rxjs';\nimport { IgxInputGroupBase } from '../input-group.common';\n\nconst nativeValidationAttributes = [\n 'required',\n 'pattern',\n 'minlength',\n 'maxlength',\n 'min',\n 'max',\n 'step',\n];\n\nexport enum IgxInputState {\n INITIAL,\n VALID,\n INVALID,\n}\n\n/**\n * The `igxInput` directive creates single- or multiline text elements, covering common scenarios when dealing with form inputs.\n *\n * @igxModule IgxInputGroupModule\n *\n * @igxParent Data Entry & Display\n *\n * @igxTheme igx-input-group-theme\n *\n * @igxKeywords input, input group, form, field, validation\n *\n * @igxGroup presentation\n *\n * @example\n * ```html\n * <input-group>\n * <label for=\"address\">Address</label>\n * <input igxInput name=\"address\" type=\"text\" [(ngModel)]=\"customer.address\">\n * </input-group>\n * ```\n */\n@Directive({\n selector: '[igxInput]',\n exportAs: 'igxInput',\n standalone: true\n})\nexport class IgxInputDirective implements AfterViewInit, OnDestroy {\n public inputGroup = inject(IgxInputGroupBase);\n protected ngModel = inject<NgModel>(NgModel, { optional: true, self: true });\n protected formControl = inject<NgControl>(NgControl, { optional: true, self: true });\n protected element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n protected cdr = inject(ChangeDetectorRef);\n protected renderer = inject(Renderer2);\n\n /**\n * Sets/gets whether the `\"igx-input-group__input\"` class is added to the host element.\n * Default value is `false`.\n *\n * @example\n * ```typescript\n * this.igxInput.isInput = true;\n * ```\n *\n * @example\n * ```typescript\n * let isCLassAdded = this.igxInput.isInput;\n * ```\n */\n @HostBinding('class.igx-input-group__input')\n public isInput = false;\n /**\n * Sets/gets whether the `\"class.igx-input-group__textarea\"` class is added to the host element.\n * Default value is `false`.\n *\n * @example\n * ```typescript\n * this.igxInput.isTextArea = true;\n * ```\n *\n * @example\n * ```typescript\n * let isCLassAdded = this.igxInput.isTextArea;\n * ```\n */\n @HostBinding('class.igx-input-group__textarea')\n public isTextArea = false;\n\n private _valid = IgxInputState.INITIAL;\n private _statusChanges$: Subscription;\n private _valueChanges$: Subscription;\n private _touchedChanges$: Subscription;\n private _fileNames: string;\n private _disabled = false;\n\n private get ngControl(): NgControl {\n return this.ngModel ? this.ngModel : this.formControl;\n }\n\n /**\n * Sets the `value` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput [value]=\"'IgxInput Value'\">\n * </input-group>\n * ```\n */\n @Input()\n public set value(value: any) {\n this.nativeElement.value = value ?? '';\n this.updateValidityState();\n }\n /**\n * Gets the `value` property.\n *\n * @example\n * ```typescript\n * @ViewChild('igxInput', {read: IgxInputDirective})\n * public igxInput: IgxInputDirective;\n * let inputValue = this.igxInput.value;\n * ```\n */\n public get value() {\n return this.nativeElement.value;\n }\n /**\n * Sets the `disabled` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput [disabled]=\"true\">\n * </input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('disabled')\n public set disabled(value: boolean) {\n this._disabled = this.inputGroup.disabled = value;\n if (this.focused && this._disabled) {\n // Browser focus may not fire in good time and mess with change detection, adjust here in advance:\n this.inputGroup.isFocused = false;\n }\n }\n /**\n * Gets the `disabled` property\n *\n * @example\n * ```typescript\n * @ViewChild('igxInput', {read: IgxInputDirective})\n * public igxInput: IgxInputDirective;\n * let isDisabled = this.igxInput.disabled;\n * ```\n */\n public get disabled() {\n return this._disabled;\n }\n\n /**\n * Sets the `required` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput required>\n * </input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public set required(value: boolean) {\n this.nativeElement.required = this.inputGroup.isRequired = value;\n }\n\n /**\n * Gets whether the igxInput is required.\n *\n * @example\n * ```typescript\n * let isRequired = this.igxInput.required;\n * ```\n */\n public get required() {\n let validation;\n if (this.ngControl && (this.ngControl.control.validator || this.ngControl.control.asyncValidator)) {\n validation = this.ngControl.control.validator({} as AbstractControl);\n }\n return validation && validation.required || this.nativeElement.hasAttribute('required');\n }\n /**\n * @hidden\n * @internal\n */\n @HostListener('focus')\n public onFocus() {\n this.inputGroup.isFocused = true;\n }\n /**\n * @param event The event to invoke the handler\n *\n * @hidden\n * @internal\n */\n @HostListener('blur')\n public onBlur() {\n this.inputGroup.isFocused = false;\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.updateValidityState();\n }\n /** @hidden @internal */\n @HostListener('input')\n public onInput() {\n this.checkNativeValidity();\n }\n /** @hidden @internal */\n @HostListener('change', ['$event'])\n public change(event: Event) {\n if (this.type === 'file') {\n const fileList: FileList | null = (event.target as HTMLInputElement)\n .files;\n const fileArray: File[] = [];\n\n if (fileList) {\n for (const file of Array.from(fileList)) {\n fileArray.push(file);\n }\n }\n\n this._fileNames = (fileArray || []).map((f: File) => f.name).join(', ');\n\n if (this.required && fileList?.length > 0) {\n this._valid = IgxInputState.INITIAL;\n }\n }\n }\n\n /** @hidden @internal */\n public get fileNames() {\n return this._fileNames;\n }\n\n /** @hidden @internal */\n public clear() {\n this.ngControl?.control?.setValue('');\n this.nativeElement.value = null;\n this._fileNames = '';\n }\n\n /** @hidden @internal */\n public ngAfterViewInit() {\n this.inputGroup.hasPlaceholder = this.nativeElement.hasAttribute(\n 'placeholder'\n );\n\n if (this.ngControl && this.ngControl.disabled !== null) {\n this.disabled = this.ngControl.disabled;\n }\n this.inputGroup.disabled =\n this.inputGroup.disabled ||\n this.nativeElement.hasAttribute('disabled');\n this.inputGroup.isRequired = this.nativeElement.hasAttribute(\n 'required'\n );\n\n // Make sure we do not invalidate the input on init\n if (!this.ngControl) {\n this._valid = IgxInputState.INITIAL;\n }\n // Also check the control's validators for required\n if (this.required && !this.inputGroup.isRequired) {\n this.inputGroup.isRequired = this.required;\n }\n\n this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n\n const elTag = this.nativeElement.tagName.toLowerCase();\n if (elTag === 'textarea') {\n this.isTextArea = true;\n\n if (this.nativeElement.getAttribute('rows') === null) {\n this.renderer.setAttribute(this.nativeElement, 'rows', '3');\n }\n } else {\n this.isInput = true;\n }\n\n if (this.ngControl) {\n this._statusChanges$ = this.ngControl.statusChanges.subscribe(\n this.onStatusChanged.bind(this)\n );\n\n this._valueChanges$ = this.ngControl.valueChanges.subscribe(\n this.onValueChanged.bind(this)\n );\n\n if (this.ngControl.control) {\n this._touchedChanges$ = this.ngControl.control.events\n .pipe(filter(e => e instanceof TouchedChangeEvent))\n .subscribe(\n this.updateValidityState.bind(this)\n );\n }\n }\n\n this.cdr.detectChanges();\n }\n /** @hidden @internal */\n public ngOnDestroy() {\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n\n if (this._valueChanges$) {\n this._valueChanges$.unsubscribe();\n }\n\n if (this._touchedChanges$) {\n this._touchedChanges$.unsubscribe();\n }\n }\n /**\n * Sets a focus on the igxInput.\n *\n * @example\n * ```typescript\n * this.igxInput.focus();\n * ```\n */\n public focus() {\n this.nativeElement.focus();\n }\n /**\n * Gets the `nativeElement` of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputNativeElement = this.igxInput.nativeElement;\n * ```\n */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n /** @hidden @internal */\n protected onStatusChanged() {\n // Enable/Disable control based on ngControl #7086\n if (this.disabled !== this.ngControl.disabled) {\n this.disabled = this.ngControl.disabled;\n }\n this.updateValidityState();\n }\n\n /** @hidden @internal */\n protected onValueChanged() {\n if (this._fileNames && !this.value) {\n this._fileNames = '';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n protected updateValidityState() {\n if (this.ngControl) {\n if (!this.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators) {\n // Run the validation with empty object to check if required is enabled.\n const error = this.ngControl.control.validator({} as AbstractControl);\n this.inputGroup.isRequired = error && error.required;\n if (this.focused) {\n this._valid = this.ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n // If validator is dynamically cleared, reset label's required class(asterisk) and IgxInputState #10010\n this.inputGroup.isRequired = false;\n this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this._valid = IgxInputState.INITIAL;\n }\n this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n const ariaInvalid = this.valid === IgxInputState.INVALID;\n this.renderer.setAttribute(this.nativeElement, 'aria-invalid', ariaInvalid.toString());\n } else {\n this.checkNativeValidity();\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this.ngControl.control.touched || this.ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this.ngControl.control.validator || !!this.ngControl.control.asyncValidator);\n }\n\n /**\n * Gets whether the igxInput has a placeholder.\n *\n * @example\n * ```typescript\n * let hasPlaceholder = this.igxInput.hasPlaceholder;\n * ```\n */\n public get hasPlaceholder() {\n return this.nativeElement.hasAttribute('placeholder');\n }\n /**\n * Gets the placeholder element of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputPlaceholder = this.igxInput.placeholder;\n * ```\n */\n public get placeholder() {\n return this.nativeElement.placeholder;\n }\n\n /**\n * @returns An indicator of whether the input has validator attributes or not\n *\n * @hidden\n * @internal\n */\n private _hasValidators(): boolean {\n for (const nativeValidationAttribute of nativeValidationAttributes) {\n if (this.nativeElement.hasAttribute(nativeValidationAttribute)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets whether the igxInput is focused.\n *\n * @example\n * ```typescript\n * let isFocused = this.igxInput.focused;\n * ```\n */\n public get focused() {\n return this.inputGroup.isFocused;\n }\n /**\n * Gets the state of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputState = this.igxInput.valid;\n * ```\n */\n public get valid(): IgxInputState {\n return this._valid;\n }\n\n /**\n * Sets the state of the igxInput.\n *\n * @example\n * ```typescript\n * this.igxInput.valid = IgxInputState.INVALID;\n * ```\n */\n public set valid(value: IgxInputState) {\n this._valid = value;\n }\n\n /**\n * Gets whether the igxInput is valid.\n *\n * @example\n * ```typescript\n * let valid = this.igxInput.isValid;\n * ```\n */\n public get isValid(): boolean {\n return this.valid !== IgxInputState.INVALID;\n }\n\n /**\n * A function to assign a native validity property of an input.\n * This should be used when there's no ngControl\n *\n * @hidden\n * @internal\n */\n private checkNativeValidity() {\n if (!this.disabled && this._hasValidators()) {\n this._valid = this.nativeElement.checkValidity() ?\n this.focused ? IgxInputState.VALID : IgxInputState.INITIAL :\n IgxInputState.INVALID;\n }\n }\n\n /**\n * Returns the input type.\n *\n * @hidden\n * @internal\n */\n public get type() {\n return this.nativeElement.type;\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nlet NEXT_ID = 0;\n\n@Directive({\n selector: '[igxLabel]',\n standalone: true\n})\nexport class IgxLabelDirective {\n @HostBinding('class.igx-input-group__label')\n public defaultClass = true;\n\n /**\n * @hidden\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-label-${NEXT_ID++}`;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n selector: 'igx-prefix,[igxPrefix],[igxStart]',\n standalone: true\n})\nexport class IgxPrefixDirective { }\n\n/**\n * @hidden\n */\n\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n selector: 'igx-suffix,[igxSuffix],[igxEnd]',\n standalone: true\n})\nexport class IgxSuffixDirective { }\n\n/**\n * @hidden\n */\n\n","import { InjectionToken } from '@angular/core';\n\nexport const IgxInputGroupEnum = {\n Line: 'line',\n Box: 'box',\n Border: 'border',\n Search: 'search'\n} as const;\n\n/**\n * Defines the InputGroupType DI token.\n */\n// Should this go trough Interface https://angular.io/api/core/InjectionToken\nexport const IGX_INPUT_GROUP_TYPE = /*@__PURE__*/new InjectionToken<IgxInputGroupType>('InputGroupType');\n\n/**\n * Determines the InputGroupType.\n */\nexport type IgxInputGroupType = (typeof IgxInputGroupEnum)[keyof typeof IgxInputGroupEnum];\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener, Input,\n QueryList, booleanAttribute,\n inject,\n DOCUMENT,\n AfterContentChecked\n} from '@angular/core';\nimport { IInputResourceStrings, InputResourceStringsEN } from 'igniteui-angular/core';\nimport { PlatformUtil, getComponentTheme } from 'igniteui-angular/core';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { IgxHintDirective } from './directives-hint/hint.directive';\nimport {\n IgxInputDirective,\n IgxInputState\n} from './directives-input/input.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\n\nimport { IgxInputGroupBase } from './input-group.common';\nimport { IgxInputGroupType, IGX_INPUT_GROUP_TYPE } from './inputGroupType';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getCurrentResourceStrings } from 'igniteui-angular/core';\nimport { IgxTheme, THEME_TOKEN, ThemeToken } from 'igniteui-angular/core';\n\n@Component({\n selector: 'igx-input-group',\n templateUrl: 'input-group.component.html',\n providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxInputGroupComponent implements IgxInputGroupBase, AfterContentChecked {\n public element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n private document = inject(DOCUMENT);\n private platform = inject(PlatformUtil);\n private cdr = inject(ChangeDetectorRef);\n private themeToken = inject<ThemeToken>(THEME_TOKEN);\n\n /**\n * Sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: IInputResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * Returns the resource strings.\n */\n public get resourceStrings(): IInputResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Property that enables/disables the auto-generated class of the `IgxInputGroupComponent`.\n * By default applied the class is applied.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * this.inputGroup.defaultClass = false;\n * ```\n * }\n */\n @HostBinding('class.igx-input-group')\n public defaultClass = true;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--placeholder')\n public hasPlaceholder = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--required')\n public isRequired = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--focused')\n public isFocused = false;\n\n /**\n * @hidden @internal\n * When truthy, disables the `IgxInputGroupComponent`.\n * Controlled by the underlying `IgxInputDirective`.\n * ```html\n * <igx-input-group [disabled]=\"true\"></igx-input-group>\n * ```\n */\n @HostBinding('class.igx-input-group--disabled')\n public disabled = false;\n\n /**\n * Prevents automatically focusing the input when clicking on other elements in the input group (e.g. prefix or suffix).\n *\n * @remarks Automatic focus causes software keyboard to show on mobile devices.\n *\n * @example\n * ```html\n * <igx-input-group [suppressInputAutofocus]=\"true\"></igx-input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public suppressInputAutofocus = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--warning')\n public hasWarning = false;\n\n /** @hidden */\n @ContentChildren(IgxHintDirective, { read: IgxHintDirective })\n protected hints: QueryList<IgxHintDirective>;\n\n @ContentChildren(IgxPrefixDirective, { read: IgxPrefixDirective, descendants: true })\n protected _prefixes: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { read: IgxSuffixDirective, descendants: true })\n protected _suffixes: QueryList<IgxSuffixDirective>;\n\n /** @hidden */\n @ContentChild(IgxInputDirective, { read: IgxInputDirective, static: true })\n protected input: IgxInputDirective;\n\n private _destroyRef = inject(DestroyRef);\n private _type: IgxInputGroupType = null;\n private _filled = false;\n private _theme: IgxTheme;\n private _resourceStrings = getCurrentResourceStrings(InputResourceStringsEN);\n private _readOnly: undefined | boolean;\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--readonly')\n public get readOnly(): boolean {\n return this._readOnly ?? (this.input?.nativeElement.readOnly || false);\n }\n\n /** @hidden @internal */\n public set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--valid')\n public get validClass(): boolean {\n return this.input.valid === IgxInputState.VALID;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--invalid')\n public get invalidClass(): boolean {\n return this.input.valid === IgxInputState.INVALID;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--filled')\n public get isFilled() {\n return this._filled || (this.input && this.input.value);\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--textarea-group')\n public get textAreaClass(): boolean {\n return this.input.isTextArea;\n }\n\n /**\n * Sets how the input will be styled.\n * Allowed values of type IgxInputGroupType.\n * ```html\n * <igx-input-group [type]=\"'search'\">\n * ```\n */\n @Input()\n public set type(value: IgxInputGroupType) {\n this._type = value;\n }\n\n /**\n * Returns the type of the `IgxInputGroupComponent`. How the input is styled.\n * The default is `line`.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputType = this.inputGroup.type;\n * }\n * ```\n */\n public get type() {\n return this._type || this._inputGroupType || 'line';\n }\n\n /**\n * Sets the theme of the input.\n * Allowed values of type IgxInputGroupTheme.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit() {\n * let inputTheme = 'fluent';\n * }\n */\n @Input()\n public set theme(value: IgxTheme) {\n this._theme = value;\n }\n\n /**\n * Returns the theme of the input.\n * The returned value is of type IgxInputGroupType.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit() {\n * let inputTheme = this.inputGroup.theme;\n * }\n */\n public get theme(): IgxTheme {\n return this._theme;\n }\n\n constructor() {\n this._theme = this.themeToken.theme;\n const themeChange = this.themeToken.onChange((theme) => {\n if (this._theme !== theme) {\n this._theme = theme;\n this.cdr.detectChanges();\n }\n });\n this._destroyRef.onDestroy(() => themeChange.unsubscribe());\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent) {\n if (\n !this.isFocused &&\n event.target !== this.input.nativeElement &&\n !this.suppressInputAutofocus\n ) {\n this.input.focus();\n }\n }\n\n /** @hidden */\n @HostListener('pointerdown', ['$event'])\n public onPointerDown(event: PointerEvent) {\n if (this.isFocused && event.target !== this.input.nativeElement) {\n event.preventDefault();\n }\n }\n\n /** @hidden @internal */\n public hintClickHandler(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` has hints.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputHints = this.inputGroup.hasHints;\n * }\n * ```\n */\n public get hasHints() {\n return this.hints.length > 0;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--prefixed')\n public get hasPrefixes() {\n return this._prefixes.length > 0;\n }\n\n /** @hidden @internal */\n public set prefixes(items: QueryList<IgxPrefixDirective>) {\n this._prefixes = items;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--suffixed')\n public get hasSuffixes() {\n return this._suffixes.length > 0 || this.isFileType && this.isFilled;\n }\n\n /** @hidden @internal */\n public set suffixes(items: QueryList<IgxSuffixDirective>) {\n this._suffixes = items;\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` has border.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputBorder = this.inputGroup.hasBorder;\n * }\n * ```\n */\n public get hasBorder() {\n return (\n (this.type === 'line' || this.type === 'box') &&\n this._theme === 'material'\n );\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is line.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeLine = this.inputGroup.isTypeLine;\n * }\n * ```\n */\n public get isTypeLine(): boolean {\n return this.type === 'line' && this._theme === 'material';\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is box.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBox = this.inputGroup.isTypeBox;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--box')\n public get isTypeBox() {\n return this.type === 'box' && this._theme === 'material';\n }\n\n /** @hidden @internal */\n public clearValueHandler() {\n this.input.clear();\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--file')\n public get isFileType() {\n return this.input.type === 'file';\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input')\n public get isFileInput() {\n return this.input.type === 'file';\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--filled')\n public get isFileInputFilled() {\n return this.isFileType && this.isFilled;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--focused')\n public get isFileInputFocused() {\n return this.isFileType && this.isFocused;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--disabled')\n public get isFileInputDisabled() {\n return this.isFileType && this.disabled;\n }\n\n /** @hidden @internal */\n public get fileNames() {\n return this.input.fileNames || this._resourceStrings.igx_input_file_placeholder;\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is border.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBorder = this.inputGroup.isTypeBorder;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--border')\n public get isTypeBorder() {\n return this.type === 'border' && this._theme === 'material';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Fluent.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeFluent = this.inputGroup.isTypeFluent;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--fluent')\n public get isTypeFluent() {\n return this._theme === 'fluent';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Bootstrap.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBootstrap = this.inputGroup.isTypeBootstrap;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--bootstrap')\n public get isTypeBootstrap() {\n return this._theme === 'bootstrap';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Indigo.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeIndigo = this.inputGroup.isTypeIndigo;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--indigo')\n public get isTypeIndigo() {\n return this._theme === 'indigo';\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is search.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeSearch = this.inputGroup.isTypeSearch;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--search')\n public get isTypeSearch() {\n if(!this.isFileType && !this.input.isTextArea) {\n return this.type === 'search';\n }\n }\n\n /** @hidden */\n public get filled() {\n return this._filled;\n }\n\n /** @hidden */\n public set filled(val) {\n this._filled = val;\n }\n\n private setComponentTheme() {\n if (!this.themeToken.preferToken) {\n const theme = getComponentTheme(this.element.nativeElement);\n\n if (theme && theme !== this._theme) {\n this.theme = theme;\n this.cdr.markForCheck();\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked() {\n this.setComponentTheme();\n }\n}\n","@if (isTypeBox) {\n <div class=\"igx-input-group__wrapper\">\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n @if (isFileType) {\n <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"disabled\"\n class=\"igx-file-input__upload-button\"\n >\n {{ resourceStrings.igx_input_upload_button }}\n </button>\n </div>\n }\n</ng-template>\n\n<ng-template #files>\n @if (isFileType) {\n <div\n class=\"igx-input-group__file-input igx-file-input__file-names\"\n [title]=\"fileNames\"\n >\n <span>{{ fileNames }}</span>\n </div>\n }\n</ng-template>\n\n<ng-template #clear>\n @if (isFileType && isFilled) {\n <igx-suffix\n class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n (click)=\"clearValueHandler()\"\n (keydown.Enter)=\"clearValueHandler()\"\n title=\"clear files\"\n tabindex=\"0\"\n >\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n</ng-template>\n\n<ng-template #suffix>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container>\n <div class=\"igx-input-group__notch\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__filler\"></div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #bundle>\n @switch (theme) {\n @case ('bootstrap') {\n <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n }\n @case ('fluent') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @case ('indigo') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n }\n }\n</ng-template>\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { IgxInputGroupComponent } from '../input-group.component';\n\n@Directive({\n selector: '[igxReadOnlyInput]',\n exportAs: 'igxReadOnlyInput',\n standalone: true\n})\nexport class IgxReadOnlyInputDirective {\n public igxReadOnlyInput = input<boolean>(false);\n\n private _inputGroup: IgxInputGroupComponent | null = inject(\n IgxInputGroupComponent,\n {\n optional: true\n }\n );\n\n constructor() {\n effect(() => {\n if (this._inputGroup) {\n this._inputGroup.readOnly = this.igxReadOnlyInput();\n }\n });\n }\n}\n","import { IgxHintDirective } from './directives-hint/hint.directive';\nimport { IgxInputDirective } from './directives-input/input.directive';\nimport { IgxLabelDirective } from './directives-label/label.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\nimport { IgxInputGroupComponent } from './input-group.component';\n\nexport * from './input-group.component';\nexport * from './input-group.common';\nexport * from './directives-hint/hint.directive';\nexport * from './directives-input/input.directive';\nexport * from './directives-input/read-only-input.directive';\nexport * from './directives-label/label.directive';\nexport * from './directives-prefix/prefix.directive';\nexport * from './directives-suffix/suffix.directive';\nexport * from './inputGroupType';\n\n/* NOTE: Input group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_INPUT_GROUP_DIRECTIVES = [\n IgxInputGroupComponent,\n IgxInputDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_INPUT_GROUP_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_INPUT_GROUP_DIRECTIVES\n ],\n exports: [\n ...IGX_INPUT_GROUP_DIRECTIVES\n ]\n})\n\nexport class IgxInputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxInputGroupComponent","i2.IgxInputDirective","i3.IgxLabelDirective","i4.IgxPrefixDirective","i5.IgxSuffixDirective","i6.IgxHintDirective"],"mappings":"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"}
1
+ {"version":3,"file":"igniteui-angular-input-group.mjs","sources":["../../../projects/igniteui-angular/input-group/src/input-group/directives-hint/hint.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-label/label.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-prefix/prefix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-suffix/suffix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/inputGroupType.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/read-only-input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/public_api.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.module.ts","../../../projects/igniteui-angular/input-group/src/igniteui-angular-input-group.ts"],"sourcesContent":["import { Directive, HostBinding, Input, OnInit } from '@angular/core';\n\nenum IgxHintPosition {\n START,\n END\n}\n\n@Directive({\n selector: 'igx-hint,[igxHint]',\n standalone: true\n})\nexport class IgxHintDirective implements OnInit {\n /**\n * Sets/gets whether the hint position is at the start.\n * Default value is `false`.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * this.igxHint.isPositionStart = true;\n * ```\n * ```typescript\n * let isHintPositionStart = this.igxHint.isPositionStart;\n * ```\n *\n * @memberof IgxHintDirective\n */\n @HostBinding('class.igx-input-group__hint-item--start')\n public isPositionStart = false;\n /**\n * Sets/gets whether the hint position is at the end.\n * Default value is `false`.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * this.igxHint.isPositionEnd = true;\n * ```\n * ```typescript\n * let isHintPositionEnd = this.igxHint.isPositionEnd;\n * ```\n *\n * @memberof IgxHintDirective\n */\n @HostBinding('class.igx-input-group__hint-item--end')\n public isPositionEnd = false;\n\n private _position: IgxHintPosition = IgxHintPosition.START;\n /**\n * Sets the position of the hint.\n * ```html\n * <igx-input-group>\n * <input igxInput type=\"text\"/>\n * <igx-hint #hint [position]=\"'start'\">IgxHint displayed at the start</igx-hint>\n * </igx-input-group>\n * ```\n *\n * @memberof IgxHintDirective\n */\n @Input()\n public set position(value: string) {\n const position: IgxHintPosition = (IgxHintPosition as any)[value.toUpperCase()];\n if (position !== undefined) {\n this._position = position;\n this._applyPosition(this._position);\n }\n }\n /**\n * Gets the position of the hint.\n * ```typescript\n * @ViewChild('hint', {read: IgxHintDirective})\n * public igxHint: IgxHintDirective;\n * let hintPosition = this.igxHint.position;\n * ```\n *\n * @memberof IgxHintDirective\n */\n public get position() {\n return this._position.toString();\n }\n /**\n * @hidden\n */\n public ngOnInit() {\n this._applyPosition(this._position);\n }\n\n private _applyPosition(position: IgxHintPosition) {\n this.isPositionStart = this.isPositionEnd = false;\n switch (position) {\n case IgxHintPosition.START:\n this.isPositionStart = true;\n break;\n case IgxHintPosition.END:\n this.isPositionEnd = true;\n break;\n default: break;\n }\n }\n}\n","/** @hidden */\nexport abstract class IgxInputGroupBase {\n public disabled: boolean;\n public isFocused: boolean;\n public isRequired: boolean;\n public hasPlaceholder: boolean;\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, Renderer2, booleanAttribute, inject } from '@angular/core';\nimport {\n AbstractControl,\n NgControl,\n NgModel,\n TouchedChangeEvent\n} from '@angular/forms';\nimport { filter, Subscription } from 'rxjs';\nimport { IgxInputGroupBase } from '../input-group.common';\n\nconst nativeValidationAttributes = [\n 'required',\n 'pattern',\n 'minlength',\n 'maxlength',\n 'min',\n 'max',\n 'step',\n];\n\nexport enum IgxInputState {\n INITIAL,\n VALID,\n INVALID,\n}\n\n/**\n * The `igxInput` directive creates single- or multiline text elements, covering common scenarios when dealing with form inputs.\n *\n * @igxModule IgxInputGroupModule\n *\n * @igxParent Data Entry & Display\n *\n * @igxTheme igx-input-group-theme\n *\n * @igxKeywords input, input group, form, field, validation\n *\n * @igxGroup presentation\n *\n * @example\n * ```html\n * <input-group>\n * <label for=\"address\">Address</label>\n * <input igxInput name=\"address\" type=\"text\" [(ngModel)]=\"customer.address\">\n * </input-group>\n * ```\n */\n@Directive({\n selector: '[igxInput]',\n exportAs: 'igxInput',\n standalone: true\n})\nexport class IgxInputDirective implements AfterViewInit, OnDestroy {\n public inputGroup = inject(IgxInputGroupBase);\n protected ngModel = inject<NgModel>(NgModel, { optional: true, self: true });\n protected formControl = inject<NgControl>(NgControl, { optional: true, self: true });\n protected element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n protected cdr = inject(ChangeDetectorRef);\n protected renderer = inject(Renderer2);\n\n /**\n * Sets/gets whether the `\"igx-input-group__input\"` class is added to the host element.\n * Default value is `false`.\n *\n * @example\n * ```typescript\n * this.igxInput.isInput = true;\n * ```\n *\n * @example\n * ```typescript\n * let isCLassAdded = this.igxInput.isInput;\n * ```\n */\n @HostBinding('class.igx-input-group__input')\n public isInput = false;\n /**\n * Sets/gets whether the `\"class.igx-input-group__textarea\"` class is added to the host element.\n * Default value is `false`.\n *\n * @example\n * ```typescript\n * this.igxInput.isTextArea = true;\n * ```\n *\n * @example\n * ```typescript\n * let isCLassAdded = this.igxInput.isTextArea;\n * ```\n */\n @HostBinding('class.igx-input-group__textarea')\n public isTextArea = false;\n\n private _valid = IgxInputState.INITIAL;\n private _statusChanges$: Subscription;\n private _valueChanges$: Subscription;\n private _touchedChanges$: Subscription;\n private _fileNames: string;\n private _disabled = false;\n\n private get ngControl(): NgControl {\n return this.ngModel ? this.ngModel : this.formControl;\n }\n\n /**\n * Sets the `value` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput [value]=\"'IgxInput Value'\">\n * </input-group>\n * ```\n */\n @Input()\n public set value(value: any) {\n this.nativeElement.value = value ?? '';\n this.updateValidityState();\n }\n /**\n * Gets the `value` property.\n *\n * @example\n * ```typescript\n * @ViewChild('igxInput', {read: IgxInputDirective})\n * public igxInput: IgxInputDirective;\n * let inputValue = this.igxInput.value;\n * ```\n */\n public get value() {\n return this.nativeElement.value;\n }\n /**\n * Sets the `disabled` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput [disabled]=\"true\">\n * </input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('disabled')\n public set disabled(value: boolean) {\n this._disabled = this.inputGroup.disabled = value;\n if (this.focused && this._disabled) {\n // Browser focus may not fire in good time and mess with change detection, adjust here in advance:\n this.inputGroup.isFocused = false;\n }\n }\n /**\n * Gets the `disabled` property\n *\n * @example\n * ```typescript\n * @ViewChild('igxInput', {read: IgxInputDirective})\n * public igxInput: IgxInputDirective;\n * let isDisabled = this.igxInput.disabled;\n * ```\n */\n public get disabled() {\n return this._disabled;\n }\n\n /**\n * Sets the `required` property.\n *\n * @example\n * ```html\n * <input-group>\n * <input igxInput #igxInput required>\n * </input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public set required(value: boolean) {\n this.nativeElement.required = this.inputGroup.isRequired = value;\n }\n\n /**\n * Gets whether the igxInput is required.\n *\n * @example\n * ```typescript\n * let isRequired = this.igxInput.required;\n * ```\n */\n public get required() {\n let validation;\n if (this.ngControl && (this.ngControl.control.validator || this.ngControl.control.asyncValidator)) {\n validation = this.ngControl.control.validator({} as AbstractControl);\n }\n return validation && validation.required || this.nativeElement.hasAttribute('required');\n }\n /**\n * @hidden\n * @internal\n */\n @HostListener('focus')\n public onFocus() {\n this.inputGroup.isFocused = true;\n }\n /**\n * @param event The event to invoke the handler\n *\n * @hidden\n * @internal\n */\n @HostListener('blur')\n public onBlur() {\n this.inputGroup.isFocused = false;\n if (this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this.updateValidityState();\n }\n /** @hidden @internal */\n @HostListener('input')\n public onInput() {\n this.checkNativeValidity();\n }\n /** @hidden @internal */\n @HostListener('change', ['$event'])\n public change(event: Event) {\n if (this.type === 'file') {\n const fileList: FileList | null = (event.target as HTMLInputElement)\n .files;\n const fileArray: File[] = [];\n\n if (fileList) {\n for (const file of Array.from(fileList)) {\n fileArray.push(file);\n }\n }\n\n this._fileNames = (fileArray || []).map((f: File) => f.name).join(', ');\n\n if (this.required && fileList?.length > 0) {\n this._valid = IgxInputState.INITIAL;\n }\n }\n }\n\n /** @hidden @internal */\n public get fileNames() {\n return this._fileNames;\n }\n\n /** @hidden @internal */\n public clear() {\n this.ngControl?.control?.setValue('');\n this.nativeElement.value = null;\n this._fileNames = '';\n }\n\n /** @hidden @internal */\n public ngAfterViewInit() {\n this.inputGroup.hasPlaceholder = this.nativeElement.hasAttribute(\n 'placeholder'\n );\n\n if (this.ngControl && this.ngControl.disabled !== null) {\n this.disabled = this.ngControl.disabled;\n }\n this.inputGroup.disabled =\n this.inputGroup.disabled ||\n this.nativeElement.hasAttribute('disabled');\n this.inputGroup.isRequired = this.nativeElement.hasAttribute(\n 'required'\n );\n\n // Make sure we do not invalidate the input on init\n if (!this.ngControl) {\n this._valid = IgxInputState.INITIAL;\n }\n // Also check the control's validators for required\n if (this.required && !this.inputGroup.isRequired) {\n this.inputGroup.isRequired = this.required;\n }\n\n this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n\n const elTag = this.nativeElement.tagName.toLowerCase();\n if (elTag === 'textarea') {\n this.isTextArea = true;\n\n if (this.nativeElement.getAttribute('rows') === null) {\n this.renderer.setAttribute(this.nativeElement, 'rows', '3');\n }\n } else {\n this.isInput = true;\n }\n\n if (this.ngControl) {\n this._statusChanges$ = this.ngControl.statusChanges.subscribe(\n this.onStatusChanged.bind(this)\n );\n\n this._valueChanges$ = this.ngControl.valueChanges.subscribe(\n this.onValueChanged.bind(this)\n );\n\n if (this.ngControl.control) {\n this._touchedChanges$ = this.ngControl.control.events\n .pipe(filter(e => e instanceof TouchedChangeEvent))\n .subscribe(\n this.updateValidityState.bind(this)\n );\n }\n }\n\n this.cdr.detectChanges();\n }\n /** @hidden @internal */\n public ngOnDestroy() {\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n\n if (this._valueChanges$) {\n this._valueChanges$.unsubscribe();\n }\n\n if (this._touchedChanges$) {\n this._touchedChanges$.unsubscribe();\n }\n }\n /**\n * Sets a focus on the igxInput.\n *\n * @example\n * ```typescript\n * this.igxInput.focus();\n * ```\n */\n public focus() {\n this.nativeElement.focus();\n }\n /**\n * Gets the `nativeElement` of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputNativeElement = this.igxInput.nativeElement;\n * ```\n */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n /** @hidden @internal */\n protected onStatusChanged() {\n // Enable/Disable control based on ngControl #7086\n if (this.disabled !== this.ngControl.disabled) {\n this.disabled = this.ngControl.disabled;\n }\n this.updateValidityState();\n }\n\n /** @hidden @internal */\n protected onValueChanged() {\n if (this._fileNames && !this.value) {\n this._fileNames = '';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n protected updateValidityState() {\n if (this.ngControl) {\n if (!this.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators) {\n // Run the validation with empty object to check if required is enabled.\n const error = this.ngControl.control.validator({} as AbstractControl);\n this.inputGroup.isRequired = error && error.required;\n if (this.focused) {\n this._valid = this.ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n // If validator is dynamically cleared, reset label's required class(asterisk) and IgxInputState #10010\n this.inputGroup.isRequired = false;\n this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this._valid = IgxInputState.INITIAL;\n }\n this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n const ariaInvalid = this.valid === IgxInputState.INVALID;\n this.renderer.setAttribute(this.nativeElement, 'aria-invalid', ariaInvalid.toString());\n } else {\n this.checkNativeValidity();\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this.ngControl.control.touched || this.ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this.ngControl.control.validator || !!this.ngControl.control.asyncValidator);\n }\n\n /**\n * Gets whether the igxInput has a placeholder.\n *\n * @example\n * ```typescript\n * let hasPlaceholder = this.igxInput.hasPlaceholder;\n * ```\n */\n public get hasPlaceholder() {\n return this.nativeElement.hasAttribute('placeholder');\n }\n /**\n * Gets the placeholder element of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputPlaceholder = this.igxInput.placeholder;\n * ```\n */\n public get placeholder() {\n return this.nativeElement.placeholder;\n }\n\n /**\n * @returns An indicator of whether the input has validator attributes or not\n *\n * @hidden\n * @internal\n */\n private _hasValidators(): boolean {\n for (const nativeValidationAttribute of nativeValidationAttributes) {\n if (this.nativeElement.hasAttribute(nativeValidationAttribute)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets whether the igxInput is focused.\n *\n * @example\n * ```typescript\n * let isFocused = this.igxInput.focused;\n * ```\n */\n public get focused() {\n return this.inputGroup.isFocused;\n }\n /**\n * Gets the state of the igxInput.\n *\n * @example\n * ```typescript\n * let igxInputState = this.igxInput.valid;\n * ```\n */\n public get valid(): IgxInputState {\n return this._valid;\n }\n\n /**\n * Sets the state of the igxInput.\n *\n * @example\n * ```typescript\n * this.igxInput.valid = IgxInputState.INVALID;\n * ```\n */\n public set valid(value: IgxInputState) {\n this._valid = value;\n }\n\n /**\n * Gets whether the igxInput is valid.\n *\n * @example\n * ```typescript\n * let valid = this.igxInput.isValid;\n * ```\n */\n public get isValid(): boolean {\n return this.valid !== IgxInputState.INVALID;\n }\n\n /**\n * A function to assign a native validity property of an input.\n * This should be used when there's no ngControl\n *\n * @hidden\n * @internal\n */\n private checkNativeValidity() {\n if (!this.disabled && this._hasValidators()) {\n this._valid = this.nativeElement.checkValidity() ?\n this.focused ? IgxInputState.VALID : IgxInputState.INITIAL :\n IgxInputState.INVALID;\n }\n }\n\n /**\n * Returns the input type.\n *\n * @hidden\n * @internal\n */\n public get type() {\n return this.nativeElement.type;\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nlet NEXT_ID = 0;\n\n@Directive({\n selector: '[igxLabel]',\n standalone: true\n})\nexport class IgxLabelDirective {\n @HostBinding('class.igx-input-group__label')\n public defaultClass = true;\n\n /**\n * @hidden\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-label-${NEXT_ID++}`;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n selector: 'igx-prefix,[igxPrefix],[igxStart]',\n standalone: true\n})\nexport class IgxPrefixDirective { }\n\n/**\n * @hidden\n */\n\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n selector: 'igx-suffix,[igxSuffix],[igxEnd]',\n standalone: true\n})\nexport class IgxSuffixDirective { }\n\n/**\n * @hidden\n */\n\n","import { InjectionToken } from '@angular/core';\n\nexport const IgxInputGroupEnum = {\n Line: 'line',\n Box: 'box',\n Border: 'border',\n Search: 'search'\n} as const;\n\n/**\n * Defines the InputGroupType DI token.\n */\n// Should this go trough Interface https://angular.io/api/core/InjectionToken\nexport const IGX_INPUT_GROUP_TYPE = /*@__PURE__*/new InjectionToken<IgxInputGroupType>('InputGroupType');\n\n/**\n * Determines the InputGroupType.\n */\nexport type IgxInputGroupType = (typeof IgxInputGroupEnum)[keyof typeof IgxInputGroupEnum];\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener, Input,\n QueryList, booleanAttribute,\n inject,\n DOCUMENT,\n AfterContentChecked\n} from '@angular/core';\nimport { IInputResourceStrings, InputResourceStringsEN } from 'igniteui-angular/core';\nimport { PlatformUtil, getComponentTheme } from 'igniteui-angular/core';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { IgxHintDirective } from './directives-hint/hint.directive';\nimport {\n IgxInputDirective,\n IgxInputState\n} from './directives-input/input.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\n\nimport { IgxInputGroupBase } from './input-group.common';\nimport { IgxInputGroupType, IGX_INPUT_GROUP_TYPE } from './inputGroupType';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getCurrentResourceStrings, onResourceChangeHandle } from 'igniteui-angular/core';\nimport { IgxTheme, THEME_TOKEN, ThemeToken } from 'igniteui-angular/core';\n\n@Component({\n selector: 'igx-input-group',\n templateUrl: 'input-group.component.html',\n providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxInputGroupComponent implements IgxInputGroupBase, AfterContentChecked {\n public element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n private document = inject(DOCUMENT);\n private platform = inject(PlatformUtil);\n private cdr = inject(ChangeDetectorRef);\n private themeToken = inject<ThemeToken>(THEME_TOKEN);\n\n /**\n * Sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: IInputResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * Returns the resource strings.\n */\n public get resourceStrings(): IInputResourceStrings {\n return this._resourceStrings || this._defaultResourceStrings;\n }\n\n /**\n * Property that enables/disables the auto-generated class of the `IgxInputGroupComponent`.\n * By default applied the class is applied.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * this.inputGroup.defaultClass = false;\n * ```\n * }\n */\n @HostBinding('class.igx-input-group')\n public defaultClass = true;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--placeholder')\n public hasPlaceholder = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--required')\n public isRequired = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--focused')\n public isFocused = false;\n\n /**\n * @hidden @internal\n * When truthy, disables the `IgxInputGroupComponent`.\n * Controlled by the underlying `IgxInputDirective`.\n * ```html\n * <igx-input-group [disabled]=\"true\"></igx-input-group>\n * ```\n */\n @HostBinding('class.igx-input-group--disabled')\n public disabled = false;\n\n /**\n * Prevents automatically focusing the input when clicking on other elements in the input group (e.g. prefix or suffix).\n *\n * @remarks Automatic focus causes software keyboard to show on mobile devices.\n *\n * @example\n * ```html\n * <igx-input-group [suppressInputAutofocus]=\"true\"></igx-input-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public suppressInputAutofocus = false;\n\n /** @hidden */\n @HostBinding('class.igx-input-group--warning')\n public hasWarning = false;\n\n /** @hidden */\n @ContentChildren(IgxHintDirective, { read: IgxHintDirective })\n protected hints: QueryList<IgxHintDirective>;\n\n @ContentChildren(IgxPrefixDirective, { read: IgxPrefixDirective, descendants: true })\n protected _prefixes: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { read: IgxSuffixDirective, descendants: true })\n protected _suffixes: QueryList<IgxSuffixDirective>;\n\n /** @hidden */\n @ContentChild(IgxInputDirective, { read: IgxInputDirective, static: true })\n protected input: IgxInputDirective;\n\n private _destroyRef = inject(DestroyRef);\n private _type: IgxInputGroupType = null;\n private _filled = false;\n private _theme: IgxTheme;\n private _resourceStrings: IInputResourceStrings = null;\n private _defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN);\n private _readOnly: undefined | boolean;\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--readonly')\n public get readOnly(): boolean {\n return this._readOnly ?? (this.input?.nativeElement.readOnly || false);\n }\n\n /** @hidden @internal */\n public set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--valid')\n public get validClass(): boolean {\n return this.input.valid === IgxInputState.VALID;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--invalid')\n public get invalidClass(): boolean {\n return this.input.valid === IgxInputState.INVALID;\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--filled')\n public get isFilled() {\n return this._filled || (this.input && this.input.value);\n }\n\n /** @hidden */\n @HostBinding('class.igx-input-group--textarea-group')\n public get textAreaClass(): boolean {\n return this.input.isTextArea;\n }\n\n /**\n * Sets how the input will be styled.\n * Allowed values of type IgxInputGroupType.\n * ```html\n * <igx-input-group [type]=\"'search'\">\n * ```\n */\n @Input()\n public set type(value: IgxInputGroupType) {\n this._type = value;\n }\n\n /**\n * Returns the type of the `IgxInputGroupComponent`. How the input is styled.\n * The default is `line`.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputType = this.inputGroup.type;\n * }\n * ```\n */\n public get type() {\n return this._type || this._inputGroupType || 'line';\n }\n\n /**\n * Sets the theme of the input.\n * Allowed values of type IgxInputGroupTheme.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit() {\n * let inputTheme = 'fluent';\n * }\n */\n @Input()\n public set theme(value: IgxTheme) {\n this._theme = value;\n }\n\n /**\n * Returns the theme of the input.\n * The returned value is of type IgxInputGroupType.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit() {\n * let inputTheme = this.inputGroup.theme;\n * }\n */\n public get theme(): IgxTheme {\n return this._theme;\n }\n\n constructor() {\n this._theme = this.themeToken.theme;\n const themeChange = this.themeToken.onChange((theme) => {\n if (this._theme !== theme) {\n this._theme = theme;\n this.cdr.detectChanges();\n }\n });\n this._destroyRef.onDestroy(() => themeChange.unsubscribe());\n onResourceChangeHandle(this._destroyRef, () => {\n this._defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN, false);\n }, this);\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent) {\n if (\n !this.isFocused &&\n event.target !== this.input.nativeElement &&\n !this.suppressInputAutofocus\n ) {\n this.input.focus();\n }\n }\n\n /** @hidden */\n @HostListener('pointerdown', ['$event'])\n public onPointerDown(event: PointerEvent) {\n if (this.isFocused && event.target !== this.input.nativeElement) {\n event.preventDefault();\n }\n }\n\n /** @hidden @internal */\n public hintClickHandler(event: MouseEvent) {\n event.stopPropagation();\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` has hints.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputHints = this.inputGroup.hasHints;\n * }\n * ```\n */\n public get hasHints() {\n return this.hints.length > 0;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--prefixed')\n public get hasPrefixes() {\n return this._prefixes.length > 0;\n }\n\n /** @hidden @internal */\n public set prefixes(items: QueryList<IgxPrefixDirective>) {\n this._prefixes = items;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--suffixed')\n public get hasSuffixes() {\n return this._suffixes.length > 0 || this.isFileType && this.isFilled;\n }\n\n /** @hidden @internal */\n public set suffixes(items: QueryList<IgxSuffixDirective>) {\n this._suffixes = items;\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` has border.\n * ```typescript\n * @ViewChild(\"MyInputGroup\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let inputBorder = this.inputGroup.hasBorder;\n * }\n * ```\n */\n public get hasBorder() {\n return (\n (this.type === 'line' || this.type === 'box') &&\n this._theme === 'material'\n );\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is line.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeLine = this.inputGroup.isTypeLine;\n * }\n * ```\n */\n public get isTypeLine(): boolean {\n return this.type === 'line' && this._theme === 'material';\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is box.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBox = this.inputGroup.isTypeBox;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--box')\n public get isTypeBox() {\n return this.type === 'box' && this._theme === 'material';\n }\n\n /** @hidden @internal */\n public clearValueHandler() {\n this.input.clear();\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-input-group--file')\n public get isFileType() {\n return this.input.type === 'file';\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input')\n public get isFileInput() {\n return this.input.type === 'file';\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--filled')\n public get isFileInputFilled() {\n return this.isFileType && this.isFilled;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--focused')\n public get isFileInputFocused() {\n return this.isFileType && this.isFocused;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-file-input--disabled')\n public get isFileInputDisabled() {\n return this.isFileType && this.disabled;\n }\n\n /** @hidden @internal */\n public get fileNames() {\n return this.input.fileNames || this.resourceStrings.igx_input_file_placeholder;\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is border.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBorder = this.inputGroup.isTypeBorder;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--border')\n public get isTypeBorder() {\n return this.type === 'border' && this._theme === 'material';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Fluent.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeFluent = this.inputGroup.isTypeFluent;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--fluent')\n public get isTypeFluent() {\n return this._theme === 'fluent';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Bootstrap.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeBootstrap = this.inputGroup.isTypeBootstrap;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--bootstrap')\n public get isTypeBootstrap() {\n return this._theme === 'bootstrap';\n }\n\n /**\n * Returns true if the `IgxInputGroupComponent` theme is Indigo.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeIndigo = this.inputGroup.isTypeIndigo;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--indigo')\n public get isTypeIndigo() {\n return this._theme === 'indigo';\n }\n\n /**\n * Returns whether the `IgxInputGroupComponent` type is search.\n * ```typescript\n * @ViewChild(\"MyInputGroup1\")\n * public inputGroup: IgxInputGroupComponent;\n * ngAfterViewInit(){\n * let isTypeSearch = this.inputGroup.isTypeSearch;\n * }\n * ```\n */\n @HostBinding('class.igx-input-group--search')\n public get isTypeSearch() {\n if(!this.isFileType && !this.input.isTextArea) {\n return this.type === 'search';\n }\n }\n\n /** @hidden */\n public get filled() {\n return this._filled;\n }\n\n /** @hidden */\n public set filled(val) {\n this._filled = val;\n }\n\n private setComponentTheme() {\n if (!this.themeToken.preferToken) {\n const theme = getComponentTheme(this.element.nativeElement);\n\n if (theme && theme !== this._theme) {\n this.theme = theme;\n this.cdr.markForCheck();\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked() {\n this.setComponentTheme();\n }\n}\n","@if (isTypeBox) {\n <div class=\"igx-input-group__wrapper\">\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n @if (isFileType) {\n <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"disabled\"\n class=\"igx-file-input__upload-button\"\n >\n {{ resourceStrings.igx_input_upload_button }}\n </button>\n </div>\n }\n</ng-template>\n\n<ng-template #files>\n @if (isFileType) {\n <div\n class=\"igx-input-group__file-input igx-file-input__file-names\"\n [title]=\"fileNames\"\n >\n <span>{{ fileNames }}</span>\n </div>\n }\n</ng-template>\n\n<ng-template #clear>\n @if (isFileType && isFilled) {\n <igx-suffix\n class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n (click)=\"clearValueHandler()\"\n (keydown.Enter)=\"clearValueHandler()\"\n title=\"clear files\"\n tabindex=\"0\"\n >\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n</ng-template>\n\n<ng-template #suffix>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container>\n <div class=\"igx-input-group__notch\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__filler\"></div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #bundle>\n @switch (theme) {\n @case ('bootstrap') {\n <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n }\n @case ('fluent') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @case ('indigo') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n }\n }\n</ng-template>\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { IgxInputGroupComponent } from '../input-group.component';\n\n@Directive({\n selector: '[igxReadOnlyInput]',\n exportAs: 'igxReadOnlyInput',\n standalone: true\n})\nexport class IgxReadOnlyInputDirective {\n public igxReadOnlyInput = input<boolean>(false);\n\n private _inputGroup: IgxInputGroupComponent | null = inject(\n IgxInputGroupComponent,\n {\n optional: true\n }\n );\n\n constructor() {\n effect(() => {\n if (this._inputGroup) {\n this._inputGroup.readOnly = this.igxReadOnlyInput();\n }\n });\n }\n}\n","import { IgxHintDirective } from './directives-hint/hint.directive';\nimport { IgxInputDirective } from './directives-input/input.directive';\nimport { IgxLabelDirective } from './directives-label/label.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\nimport { IgxInputGroupComponent } from './input-group.component';\n\nexport * from './input-group.component';\nexport * from './input-group.common';\nexport * from './directives-hint/hint.directive';\nexport * from './directives-input/input.directive';\nexport * from './directives-input/read-only-input.directive';\nexport * from './directives-label/label.directive';\nexport * from './directives-prefix/prefix.directive';\nexport * from './directives-suffix/suffix.directive';\nexport * from './inputGroupType';\n\n/* NOTE: Input group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_INPUT_GROUP_DIRECTIVES = [\n IgxInputGroupComponent,\n IgxInputDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_INPUT_GROUP_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_INPUT_GROUP_DIRECTIVES\n ],\n exports: [\n ...IGX_INPUT_GROUP_DIRECTIVES\n ]\n})\n\nexport class IgxInputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxInputGroupComponent","i2.IgxInputDirective","i3.IgxLabelDirective","i4.IgxPrefixDirective","i5.IgxSuffixDirective","i6.IgxHintDirective"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Directive, TemplateRef, Renderer2, booleanAttribute, HostListener, HostBinding, Input, ViewChild, ChangeDetectionStrategy, Component, EventEmitter, Output, ContentChild, forwardRef, ContentChildren, NgModule } from '@angular/core';
3
- import { rem, HammerGesturesManager, getCurrentResourceStrings, ListResourceStringsEN } from 'igniteui-angular/core';
2
+ import { inject, ElementRef, Directive, TemplateRef, Renderer2, booleanAttribute, HostListener, HostBinding, Input, ViewChild, ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Output, ContentChild, forwardRef, ContentChildren, NgModule } from '@angular/core';
3
+ import { rem, HammerGesturesManager, getCurrentResourceStrings, ListResourceStringsEN, onResourceChangeHandle } from 'igniteui-angular/core';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
5
 
6
6
  /** @hidden */
@@ -651,9 +651,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImpor
651
651
  * ```
652
652
  */
653
653
  class IgxListComponent extends IgxListBaseDirective {
654
+ /**
655
+ * Sets the resource strings.
656
+ * By default it uses EN resources.
657
+ */
658
+ set resourceStrings(value) {
659
+ this._resourceStrings = Object.assign({}, this._resourceStrings, value);
660
+ }
661
+ /**
662
+ * Returns the resource strings.
663
+ */
664
+ get resourceStrings() {
665
+ return this._resourceStrings || this._defaultResourceStrings;
666
+ }
654
667
  constructor() {
655
- super(...arguments);
668
+ super();
656
669
  this.element = inject(ElementRef);
670
+ this.destroyRef = inject(DestroyRef);
657
671
  /**
658
672
  * Provides a threshold after which the item's panning will be completed automatically.
659
673
  *
@@ -812,21 +826,12 @@ class IgxListComponent extends IgxListBaseDirective {
812
826
  * ```
813
827
  */
814
828
  this.itemClicked = new EventEmitter();
815
- this._resourceStrings = getCurrentResourceStrings(ListResourceStringsEN);
829
+ this._resourceStrings = null;
830
+ this._defaultResourceStrings = getCurrentResourceStrings(ListResourceStringsEN);
816
831
  this._role = 'list';
817
- }
818
- /**
819
- * Sets the resource strings.
820
- * By default it uses EN resources.
821
- */
822
- set resourceStrings(value) {
823
- this._resourceStrings = Object.assign({}, this._resourceStrings, value);
824
- }
825
- /**
826
- * Returns the resource strings.
827
- */
828
- get resourceStrings() {
829
- return this._resourceStrings;
832
+ onResourceChangeHandle(this.destroyRef, () => {
833
+ this._defaultResourceStrings = getCurrentResourceStrings(ListResourceStringsEN, false);
834
+ }, this);
830
835
  }
831
836
  /**
832
837
  * @hidden
@@ -942,13 +947,13 @@ class IgxListComponent extends IgxListBaseDirective {
942
947
  return this.emptyListTemplate ? this.emptyListTemplate.template : this.defaultEmptyListTemplate;
943
948
  }
944
949
  }
945
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: IgxListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
950
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: IgxListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
946
951
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: IgxListComponent, isStandalone: true, selector: "igx-list", inputs: { panEndTriggeringThreshold: "panEndTriggeringThreshold", id: "id", allowLeftPanning: ["allowLeftPanning", "allowLeftPanning", booleanAttribute], allowRightPanning: ["allowRightPanning", "allowRightPanning", booleanAttribute], isLoading: ["isLoading", "isLoading", booleanAttribute], resourceStrings: "resourceStrings", role: "role" }, outputs: { leftPan: "leftPan", rightPan: "rightPan", startPan: "startPan", endPan: "endPan", resetPan: "resetPan", panStateChange: "panStateChange", itemClicked: "itemClicked" }, host: { properties: { "attr.id": "this.id", "attr.role": "this.role", "class.igx-list--empty": "this.isListEmpty", "class.igx-list": "this.cssClass" } }, providers: [{ provide: IgxListBaseDirective, useExisting: IgxListComponent }], queries: [{ propertyName: "emptyListTemplate", first: true, predicate: IgxEmptyListTemplateDirective, descendants: true, read: IgxEmptyListTemplateDirective }, { propertyName: "dataLoadingTemplate", first: true, predicate: IgxDataLoadingTemplateDirective, descendants: true, read: IgxDataLoadingTemplateDirective }, { propertyName: "listItemLeftPanningTemplate", first: true, predicate: IgxListItemLeftPanningTemplateDirective, descendants: true, read: IgxListItemLeftPanningTemplateDirective }, { propertyName: "listItemRightPanningTemplate", first: true, predicate: IgxListItemRightPanningTemplateDirective, descendants: true, read: IgxListItemRightPanningTemplateDirective }, { propertyName: "children", predicate: i0.forwardRef(() => IgxListItemComponent), descendants: true }], viewQueries: [{ propertyName: "defaultEmptyListTemplate", first: true, predicate: ["defaultEmptyList"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultDataLoadingTemplate", first: true, predicate: ["defaultDataLoading"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<ng-template #defaultEmptyList>\n <article class=\"igx-list__message\">\n {{resourceStrings.igx_list_no_items}}\n </article>\n</ng-template>\n\n<ng-template #defaultDataLoading>\n <article class=\"igx-list__message\">\n {{resourceStrings.igx_list_loading}}\n </article>\n</ng-template>\n\n@if (!children || children.length === 0 || isLoading) {\n <ng-container *ngTemplateOutlet=\"template; context: context\">\n </ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
947
952
  }
948
953
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: IgxListComponent, decorators: [{
949
954
  type: Component,
950
955
  args: [{ selector: 'igx-list', providers: [{ provide: IgxListBaseDirective, useExisting: IgxListComponent }], imports: [NgTemplateOutlet], template: "<ng-content></ng-content>\n\n<ng-template #defaultEmptyList>\n <article class=\"igx-list__message\">\n {{resourceStrings.igx_list_no_items}}\n </article>\n</ng-template>\n\n<ng-template #defaultDataLoading>\n <article class=\"igx-list__message\">\n {{resourceStrings.igx_list_loading}}\n </article>\n</ng-template>\n\n@if (!children || children.length === 0 || isLoading) {\n <ng-container *ngTemplateOutlet=\"template; context: context\">\n </ng-container>\n}\n" }]
951
- }], propDecorators: { children: [{
956
+ }], ctorParameters: () => [], propDecorators: { children: [{
952
957
  type: ContentChildren,
953
958
  args: [forwardRef(() => IgxListItemComponent), { descendants: true }]
954
959
  }], emptyListTemplate: [{