igniteui-angular 21.0.4 → 21.0.6
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.
- package/fesm2022/igniteui-angular-accordion.mjs +7 -7
- package/fesm2022/igniteui-angular-action-strip.mjs +11 -10
- package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
- package/fesm2022/igniteui-angular-avatar.mjs +7 -7
- package/fesm2022/igniteui-angular-badge.mjs +7 -7
- package/fesm2022/igniteui-angular-banner.mjs +10 -10
- package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
- package/fesm2022/igniteui-angular-button-group.mjs +7 -7
- package/fesm2022/igniteui-angular-calendar.mjs +61 -61
- package/fesm2022/igniteui-angular-card.mjs +31 -31
- package/fesm2022/igniteui-angular-carousel.mjs +25 -25
- package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
- package/fesm2022/igniteui-angular-chat.mjs +18 -18
- package/fesm2022/igniteui-angular-chat.mjs.map +1 -1
- package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
- package/fesm2022/igniteui-angular-chips.mjs +10 -10
- package/fesm2022/igniteui-angular-combo.mjs +52 -52
- package/fesm2022/igniteui-angular-core.mjs +56 -52
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +38 -38
- package/fesm2022/igniteui-angular-dialog.mjs +13 -13
- package/fesm2022/igniteui-angular-directives.mjs +198 -194
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
- package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
- package/fesm2022/igniteui-angular-grids-core.mjs +554 -474
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +53 -48
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +53 -39
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +82 -79
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +57 -57
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-icon.mjs +10 -10
- package/fesm2022/igniteui-angular-input-group.mjs +26 -26
- package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
- package/fesm2022/igniteui-angular-list.mjs +40 -40
- package/fesm2022/igniteui-angular-navbar.mjs +13 -13
- package/fesm2022/igniteui-angular-navigation-drawer.mjs +16 -16
- package/fesm2022/igniteui-angular-paginator.mjs +19 -19
- package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
- package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
- package/fesm2022/igniteui-angular-radio.mjs +12 -12
- package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
- package/fesm2022/igniteui-angular-select.mjs +25 -25
- package/fesm2022/igniteui-angular-simple-combo.mjs +7 -7
- package/fesm2022/igniteui-angular-slider.mjs +28 -28
- package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
- package/fesm2022/igniteui-angular-splitter.mjs +14 -14
- package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
- package/fesm2022/igniteui-angular-stepper.mjs +34 -34
- package/fesm2022/igniteui-angular-switch.mjs +7 -7
- package/fesm2022/igniteui-angular-tabs.mjs +34 -34
- package/fesm2022/igniteui-angular-time-picker.mjs +19 -19
- package/fesm2022/igniteui-angular-toast.mjs +7 -7
- package/fesm2022/igniteui-angular-tree.mjs +28 -28
- package/lib/core/styles/components/chip/_chip-theme.scss +28 -29
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +14 -11
- package/lib/core/styles/components/navbar/_navbar-theme.scss +7 -1
- package/package.json +3 -3
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-directives.d.ts +0 -3
- package/types/igniteui-angular-grids-core.d.ts +4 -5
- package/types/igniteui-angular-grids-hierarchical-grid.d.ts +4 -0
|
@@ -1282,10 +1282,10 @@ class IgxIconService {
|
|
|
1282
1282
|
}
|
|
1283
1283
|
}
|
|
1284
1284
|
}
|
|
1285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1286
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.
|
|
1285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1286
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconService, providedIn: "root" }); }
|
|
1287
1287
|
}
|
|
1288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconService, decorators: [{
|
|
1289
1289
|
type: Injectable,
|
|
1290
1290
|
args: [{
|
|
1291
1291
|
providedIn: "root",
|
|
@@ -1475,10 +1475,10 @@ class IgxIconComponent {
|
|
|
1475
1475
|
}
|
|
1476
1476
|
this.addIconClass(className);
|
|
1477
1477
|
}
|
|
1478
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1479
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
1478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IgxIconComponent, isStandalone: true, selector: "igx-icon", inputs: { ariaHidden: "ariaHidden", family: "family", name: "name", active: ["active", "active", booleanAttribute] }, host: { properties: { "class": "this.elementClasses", "class.igx-icon--inactive": "this.getInactive", "attr.aria-hidden": "this.ariaHidden" } }, usesOnChanges: true, ngImport: i0, template: "<!-- This is only here for backwards compatibility in case -->\n<!-- ligatures are used and the name is provided as content -->\n@if (!iconRef.name) {\n <ng-content></ng-content>\n}\n\n@switch (iconRef.type) {\n @case (\"liga\") {{{ iconRef.name }}}\n\n @case (\"svg\") {\n <div [innerHTML]=\"getSvg\"></div>\n }\n}\n" }); }
|
|
1480
1480
|
}
|
|
1481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1481
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconComponent, decorators: [{
|
|
1482
1482
|
type: Component,
|
|
1483
1483
|
args: [{ selector: "igx-icon", template: "<!-- This is only here for backwards compatibility in case -->\n<!-- ligatures are used and the name is provided as content -->\n@if (!iconRef.name) {\n <ng-content></ng-content>\n}\n\n@switch (iconRef.type) {\n @case (\"liga\") {{{ iconRef.name }}}\n\n @case (\"svg\") {\n <div [innerHTML]=\"getSvg\"></div>\n }\n}\n" }]
|
|
1484
1484
|
}], ctorParameters: () => [], propDecorators: { elementClasses: [{
|
|
@@ -1507,11 +1507,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImpor
|
|
|
1507
1507
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
1508
1508
|
*/
|
|
1509
1509
|
class IgxIconModule {
|
|
1510
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1511
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
1512
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
1510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1511
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: IgxIconModule, imports: [IgxIconComponent], exports: [IgxIconComponent] }); }
|
|
1512
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconModule }); }
|
|
1513
1513
|
}
|
|
1514
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxIconModule, decorators: [{
|
|
1515
1515
|
type: NgModule,
|
|
1516
1516
|
args: [{
|
|
1517
1517
|
exports: [IgxIconComponent],
|
|
@@ -95,10 +95,10 @@ class IgxHintDirective {
|
|
|
95
95
|
default: break;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
99
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
99
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: IgxHintDirective, isStandalone: true, selector: "igx-hint,[igxHint]", inputs: { position: "position" }, host: { properties: { "class.igx-input-group__hint-item--start": "this.isPositionStart", "class.igx-input-group__hint-item--end": "this.isPositionEnd" } }, ngImport: i0 }); }
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxHintDirective, decorators: [{
|
|
102
102
|
type: Directive,
|
|
103
103
|
args: [{
|
|
104
104
|
selector: 'igx-hint,[igxHint]',
|
|
@@ -566,10 +566,10 @@ class IgxInputDirective {
|
|
|
566
566
|
get type() {
|
|
567
567
|
return this.nativeElement.type;
|
|
568
568
|
}
|
|
569
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
570
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.
|
|
569
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
570
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.8", type: IgxInputDirective, isStandalone: true, selector: "[igxInput]", inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute] }, host: { listeners: { "focus": "onFocus()", "blur": "onBlur()", "input": "onInput()", "change": "change($event)" }, properties: { "class.igx-input-group__input": "this.isInput", "class.igx-input-group__textarea": "this.isTextArea", "disabled": "this.disabled" } }, exportAs: ["igxInput"], ngImport: i0 }); }
|
|
571
571
|
}
|
|
572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
572
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputDirective, decorators: [{
|
|
573
573
|
type: Directive,
|
|
574
574
|
args: [{
|
|
575
575
|
selector: '[igxInput]',
|
|
@@ -616,10 +616,10 @@ class IgxLabelDirective {
|
|
|
616
616
|
*/
|
|
617
617
|
this.id = `igx-label-${NEXT_ID++}`;
|
|
618
618
|
}
|
|
619
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
620
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
619
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
620
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: IgxLabelDirective, isStandalone: true, selector: "[igxLabel]", inputs: { id: "id" }, host: { properties: { "class.igx-input-group__label": "this.defaultClass", "attr.id": "this.id" } }, ngImport: i0 }); }
|
|
621
621
|
}
|
|
622
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
622
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxLabelDirective, decorators: [{
|
|
623
623
|
type: Directive,
|
|
624
624
|
args: [{
|
|
625
625
|
selector: '[igxLabel]',
|
|
@@ -639,10 +639,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImpor
|
|
|
639
639
|
* @hidden
|
|
640
640
|
*/
|
|
641
641
|
class IgxPrefixDirective {
|
|
642
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
643
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
642
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
643
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: IgxPrefixDirective, isStandalone: true, selector: "igx-prefix,[igxPrefix],[igxStart]", ngImport: i0 }); }
|
|
644
644
|
}
|
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxPrefixDirective, decorators: [{
|
|
646
646
|
type: Directive,
|
|
647
647
|
args: [{
|
|
648
648
|
selector: 'igx-prefix,[igxPrefix],[igxStart]',
|
|
@@ -654,10 +654,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImpor
|
|
|
654
654
|
* @hidden
|
|
655
655
|
*/
|
|
656
656
|
class IgxSuffixDirective {
|
|
657
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
658
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
657
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
658
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: IgxSuffixDirective, isStandalone: true, selector: "igx-suffix,[igxSuffix],[igxEnd]", ngImport: i0 }); }
|
|
659
659
|
}
|
|
660
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxSuffixDirective, decorators: [{
|
|
661
661
|
type: Directive,
|
|
662
662
|
args: [{
|
|
663
663
|
selector: 'igx-suffix,[igxSuffix],[igxEnd]',
|
|
@@ -1028,10 +1028,10 @@ class IgxInputGroupComponent {
|
|
|
1028
1028
|
ngAfterContentChecked() {
|
|
1029
1029
|
this.setComponentTheme();
|
|
1030
1030
|
}
|
|
1031
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1032
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
1031
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1032
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IgxInputGroupComponent, isStandalone: true, selector: "igx-input-group", inputs: { resourceStrings: "resourceStrings", suppressInputAutofocus: ["suppressInputAutofocus", "suppressInputAutofocus", booleanAttribute], type: "type", theme: "theme" }, host: { listeners: { "click": "onClick($event)", "pointerdown": "onPointerDown($event)" }, properties: { "class.igx-input-group": "this.defaultClass", "class.igx-input-group--placeholder": "this.hasPlaceholder", "class.igx-input-group--required": "this.isRequired", "class.igx-input-group--focused": "this.isFocused", "class.igx-input-group--disabled": "this.disabled", "class.igx-input-group--warning": "this.hasWarning", "class.igx-input-group--readonly": "this.readOnly", "class.igx-input-group--valid": "this.validClass", "class.igx-input-group--invalid": "this.invalidClass", "class.igx-input-group--filled": "this.isFilled", "class.igx-input-group--textarea-group": "this.textAreaClass", "class.igx-input-group--prefixed": "this.hasPrefixes", "class.igx-input-group--suffixed": "this.hasSuffixes", "class.igx-input-group--box": "this.isTypeBox", "class.igx-input-group--file": "this.isFileType", "class.igx-file-input": "this.isFileInput", "class.igx-file-input--filled": "this.isFileInputFilled", "class.igx-file-input--focused": "this.isFileInputFocused", "class.igx-file-input--disabled": "this.isFileInputDisabled", "class.igx-input-group--border": "this.isTypeBorder", "class.igx-input-group--fluent": "this.isTypeFluent", "class.igx-input-group--bootstrap": "this.isTypeBootstrap", "class.igx-input-group--indigo": "this.isTypeIndigo", "class.igx-input-group--search": "this.isTypeSearch" } }, providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }], queries: [{ propertyName: "input", first: true, predicate: IgxInputDirective, descendants: true, read: IgxInputDirective, static: true }, { propertyName: "hints", predicate: IgxHintDirective, read: IgxHintDirective }, { propertyName: "_prefixes", predicate: IgxPrefixDirective, descendants: true, read: IgxPrefixDirective }, { propertyName: "_suffixes", predicate: IgxSuffixDirective, descendants: true, read: IgxSuffixDirective }], ngImport: i0, template: "@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", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }] }); }
|
|
1033
1033
|
}
|
|
1034
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupComponent, decorators: [{
|
|
1035
1035
|
type: Component,
|
|
1036
1036
|
args: [{ selector: 'igx-input-group', providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }], imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent], template: "@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" }]
|
|
1037
1037
|
}], ctorParameters: () => [], propDecorators: { resourceStrings: [{
|
|
@@ -1137,7 +1137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImpor
|
|
|
1137
1137
|
|
|
1138
1138
|
class IgxReadOnlyInputDirective {
|
|
1139
1139
|
constructor() {
|
|
1140
|
-
this.igxReadOnlyInput = input(false,
|
|
1140
|
+
this.igxReadOnlyInput = input(false, ...(ngDevMode ? [{ debugName: "igxReadOnlyInput" }] : []));
|
|
1141
1141
|
this._inputGroup = inject(IgxInputGroupComponent, {
|
|
1142
1142
|
optional: true
|
|
1143
1143
|
});
|
|
@@ -1147,10 +1147,10 @@ class IgxReadOnlyInputDirective {
|
|
|
1147
1147
|
}
|
|
1148
1148
|
});
|
|
1149
1149
|
}
|
|
1150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1151
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.
|
|
1150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxReadOnlyInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1151
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: IgxReadOnlyInputDirective, isStandalone: true, selector: "[igxReadOnlyInput]", inputs: { igxReadOnlyInput: { classPropertyName: "igxReadOnlyInput", publicName: "igxReadOnlyInput", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["igxReadOnlyInput"], ngImport: i0 }); }
|
|
1152
1152
|
}
|
|
1153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxReadOnlyInputDirective, decorators: [{
|
|
1154
1154
|
type: Directive,
|
|
1155
1155
|
args: [{
|
|
1156
1156
|
selector: '[igxReadOnlyInput]',
|
|
@@ -1175,11 +1175,11 @@ const IGX_INPUT_GROUP_DIRECTIVES = [
|
|
|
1175
1175
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
1176
1176
|
*/
|
|
1177
1177
|
class IgxInputGroupModule {
|
|
1178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1179
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
1180
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
1178
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1179
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupModule, imports: [IgxInputGroupComponent, IgxInputDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective, IgxHintDirective], exports: [IgxInputGroupComponent, IgxInputDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective, IgxHintDirective] }); }
|
|
1180
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupModule, imports: [IgxInputGroupComponent] }); }
|
|
1181
1181
|
}
|
|
1182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IgxInputGroupModule, decorators: [{
|
|
1183
1183
|
type: NgModule,
|
|
1184
1184
|
args: [{
|
|
1185
1185
|
imports: [
|
|
@@ -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 } 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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"}
|