igniteui-angular 18.2.0-rc.1 → 18.2.1
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/esm2022/lib/calendar/calendar.component.mjs +3 -10
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +3 -3
- package/esm2022/lib/combo/combo.common.mjs +17 -7
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/date-common/picker-base.directive.mjs +12 -1
- package/esm2022/lib/date-picker/date-picker.component.mjs +10 -7
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +9 -2
- package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +7 -7
- package/esm2022/lib/time-picker/time-picker.component.mjs +4 -1
- package/fesm2022/igniteui-angular.mjs +59 -32
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/combo/combo.common.d.ts +3 -0
- package/lib/core/styles/components/input/_input-group-theme.scss +1 -0
- package/lib/core/styles/typography/_bootstrap.scss +2 -2
- package/lib/date-common/picker-base.directive.d.ts +6 -0
- package/lib/date-picker/date-picker.component.d.ts +2 -0
- package/lib/date-range-picker/date-range-picker.component.d.ts +2 -0
- package/lib/directives/autocomplete/autocomplete.directive.d.ts +1 -1
- package/lib/grids/filtering/base/grid-filtering-row.component.d.ts +2 -2
- package/lib/grids/filtering/excel-style/excel-style-default-expression.component.d.ts +1 -1
- package/lib/grids/grid-base.directive.d.ts +1 -1
- package/lib/time-picker/time-picker.component.d.ts +1 -0
- package/package.json +2 -2
- 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
|
@@ -32178,7 +32178,7 @@ class IgxDaysViewComponent extends IgxCalendarBaseDirective {
|
|
|
32178
32178
|
provide: NG_VALUE_ACCESSOR,
|
|
32179
32179
|
useExisting: IgxDaysViewComponent
|
|
32180
32180
|
},
|
|
32181
|
-
], viewQueries: [{ propertyName: "dates", predicate: IgxDayItemComponent, descendants: true, read: IgxDayItemComponent }], usesInheritance: true, ngImport: i0, template: "<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n <div\n role=\"columnheader\"\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n *ngFor=\"let dayName of weekHeaderLabels\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n</div>\n\n<div\n *ngFor=\"\n let week of monthWeeks;\n last as isLast;\n index as i;\n trackBy: rowTracker\n \"\n class=\"igx-days-view__row\"\n role=\"row\"\n>\n <div\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__date igx-days-view__date--week-number\"\n >\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n\n <igx-day-item\n #item\n *ngFor=\"let day of week; trackBy: dateTracker\"\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (
|
|
32181
|
+
], viewQueries: [{ propertyName: "dates", predicate: IgxDayItemComponent, descendants: true, read: IgxDayItemComponent }], usesInheritance: true, ngImport: i0, template: "<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n <div\n role=\"columnheader\"\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n *ngFor=\"let dayName of weekHeaderLabels\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n</div>\n\n<div\n *ngFor=\"\n let week of monthWeeks;\n last as isLast;\n index as i;\n trackBy: rowTracker\n \"\n class=\"igx-days-view__row\"\n role=\"row\"\n>\n <div\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__date igx-days-view__date--week-number\"\n >\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n\n <igx-day-item\n #item\n *ngFor=\"let day of week; trackBy: dateTracker\"\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (click)=\"handleDateClick(item)\"\n (mouseEnter)=\"changePreviewRange(day.native)\"\n (mouseLeave)=\"clearPreviewRange()\"\n >\n {{ formattedDate(day.native) }}\n </igx-day-item>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxDayItemComponent, selector: "igx-day-item", inputs: ["date", "viewDate", "selection", "selected", "disabledDates", "specialDates", "hideOutsideDays", "isLastInRange", "isFirstInRange", "isWithinRange", "isWithinPreviewRange", "hideLeadingDays", "hideTrailingDays", "isActive"], outputs: ["dateSelection", "mouseEnter", "mouseLeave", "mouseDown"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32182
32182
|
}
|
|
32183
32183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxDaysViewComponent, decorators: [{
|
|
32184
32184
|
type: Component,
|
|
@@ -32188,7 +32188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
32188
32188
|
provide: NG_VALUE_ACCESSOR,
|
|
32189
32189
|
useExisting: IgxDaysViewComponent
|
|
32190
32190
|
},
|
|
32191
|
-
], selector: 'igx-days-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgFor, IgxDayItemComponent, TitleCasePipe], template: "<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n <div\n role=\"columnheader\"\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n *ngFor=\"let dayName of weekHeaderLabels\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n</div>\n\n<div\n *ngFor=\"\n let week of monthWeeks;\n last as isLast;\n index as i;\n trackBy: rowTracker\n \"\n class=\"igx-days-view__row\"\n role=\"row\"\n>\n <div\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__date igx-days-view__date--week-number\"\n >\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n\n <igx-day-item\n #item\n *ngFor=\"let day of week; trackBy: dateTracker\"\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (
|
|
32191
|
+
], selector: 'igx-days-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgFor, IgxDayItemComponent, TitleCasePipe], template: "<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n <div\n role=\"columnheader\"\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n *ngFor=\"let dayName of weekHeaderLabels\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n</div>\n\n<div\n *ngFor=\"\n let week of monthWeeks;\n last as isLast;\n index as i;\n trackBy: rowTracker\n \"\n class=\"igx-days-view__row\"\n role=\"row\"\n>\n <div\n *ngIf=\"showWeekNumbers\"\n class=\"igx-days-view__date igx-days-view__date--week-number\"\n >\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n\n <igx-day-item\n #item\n *ngFor=\"let day of week; trackBy: dateTracker\"\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (click)=\"handleDateClick(item)\"\n (mouseEnter)=\"changePreviewRange(day.native)\"\n (mouseLeave)=\"clearPreviewRange()\"\n >\n {{ formattedDate(day.native) }}\n </igx-day-item>\n</div>\n" }]
|
|
32192
32192
|
}], ctorParameters: () => [{ type: PlatformUtil }, { type: undefined, decorators: [{
|
|
32193
32193
|
type: Inject,
|
|
32194
32194
|
args: [LOCALE_ID]
|
|
@@ -32655,20 +32655,17 @@ class IgxCalendarComponent extends IgxCalendarBaseDirective {
|
|
|
32655
32655
|
});
|
|
32656
32656
|
});
|
|
32657
32657
|
}
|
|
32658
|
-
onWrapperFocus(
|
|
32659
|
-
event.stopPropagation();
|
|
32658
|
+
onWrapperFocus(_event) {
|
|
32660
32659
|
this.showActiveDay = true;
|
|
32661
32660
|
this.monthViews.forEach(view => view.changePreviewRange(this.activeDate));
|
|
32662
32661
|
}
|
|
32663
|
-
onWrapperBlur(
|
|
32664
|
-
event.stopPropagation();
|
|
32662
|
+
onWrapperBlur(_event) {
|
|
32665
32663
|
this.showActiveDay = false;
|
|
32666
32664
|
this.monthViews.forEach(view => view.clearPreviewRange());
|
|
32667
32665
|
this._onTouchedCallback();
|
|
32668
32666
|
}
|
|
32669
32667
|
handleArrowKeydown(event, delta) {
|
|
32670
32668
|
event.preventDefault();
|
|
32671
|
-
event.stopPropagation();
|
|
32672
32669
|
const date = getClosestActiveDate(CalendarDay.from(this.activeDate), delta, this.disabledDates);
|
|
32673
32670
|
this.activeDate = date.native;
|
|
32674
32671
|
const dates = this.viewDates;
|
|
@@ -32680,7 +32677,6 @@ class IgxCalendarComponent extends IgxCalendarBaseDirective {
|
|
|
32680
32677
|
}
|
|
32681
32678
|
handlePageUpDown(event, delta) {
|
|
32682
32679
|
event.preventDefault();
|
|
32683
|
-
event.stopPropagation();
|
|
32684
32680
|
const dir = delta > 0 ? "next" /* ScrollDirection.NEXT */ : "prev" /* ScrollDirection.PREV */;
|
|
32685
32681
|
if (this.activeView === IgxCalendarView.Month && event.shiftKey) {
|
|
32686
32682
|
this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;
|
|
@@ -32746,7 +32742,6 @@ class IgxCalendarComponent extends IgxCalendarBaseDirective {
|
|
|
32746
32742
|
}
|
|
32747
32743
|
}
|
|
32748
32744
|
onEnter(event) {
|
|
32749
|
-
event.stopPropagation();
|
|
32750
32745
|
if (this.activeView === IgxCalendarView.Month) {
|
|
32751
32746
|
this.handleDateSelection(this.activeDate);
|
|
32752
32747
|
this.cdr.detectChanges();
|
|
@@ -32760,7 +32755,6 @@ class IgxCalendarComponent extends IgxCalendarBaseDirective {
|
|
|
32760
32755
|
this.monthViews.forEach(view => view.clearPreviewRange());
|
|
32761
32756
|
}
|
|
32762
32757
|
onHome(event) {
|
|
32763
|
-
event.stopPropagation();
|
|
32764
32758
|
if (this.activeView === IgxCalendarView.Month) {
|
|
32765
32759
|
const dates = this.monthViews.toArray()
|
|
32766
32760
|
.flatMap((view) => view.dates.toArray())
|
|
@@ -32776,7 +32770,6 @@ class IgxCalendarComponent extends IgxCalendarBaseDirective {
|
|
|
32776
32770
|
}
|
|
32777
32771
|
}
|
|
32778
32772
|
onEnd(event) {
|
|
32779
|
-
event.stopPropagation();
|
|
32780
32773
|
if (this.activeView === IgxCalendarView.Month) {
|
|
32781
32774
|
const dates = this.monthViews.toArray()
|
|
32782
32775
|
.flatMap((view) => view.dates.toArray())
|
|
@@ -38087,6 +38080,9 @@ class IgxComboBaseDirective {
|
|
|
38087
38080
|
/** @hidden @internal */
|
|
38088
38081
|
handleClosed() {
|
|
38089
38082
|
this.closed.emit({ owner: this });
|
|
38083
|
+
if (this.comboInput.nativeElement !== this.document.activeElement) {
|
|
38084
|
+
this.validateComboState();
|
|
38085
|
+
}
|
|
38090
38086
|
}
|
|
38091
38087
|
/** @hidden @internal */
|
|
38092
38088
|
handleKeyDown(event) {
|
|
@@ -38120,15 +38116,14 @@ class IgxComboBaseDirective {
|
|
|
38120
38116
|
onBlur() {
|
|
38121
38117
|
if (this.collapsed) {
|
|
38122
38118
|
this._onTouchedCallback();
|
|
38123
|
-
|
|
38124
|
-
this.valid = IgxInputState.INVALID;
|
|
38125
|
-
}
|
|
38126
|
-
else {
|
|
38127
|
-
this.valid = IgxInputState.INITIAL;
|
|
38128
|
-
}
|
|
38119
|
+
this.validateComboState();
|
|
38129
38120
|
}
|
|
38130
38121
|
}
|
|
38131
38122
|
/** @hidden @internal */
|
|
38123
|
+
onFocus() {
|
|
38124
|
+
this._onTouchedCallback();
|
|
38125
|
+
}
|
|
38126
|
+
/** @hidden @internal */
|
|
38132
38127
|
setActiveDescendant() {
|
|
38133
38128
|
this.activeDescendant = this.dropdown.focusedItem?.id || '';
|
|
38134
38129
|
}
|
|
@@ -38136,6 +38131,14 @@ class IgxComboBaseDirective {
|
|
|
38136
38131
|
toggleCaseSensitive() {
|
|
38137
38132
|
this.filteringOptions = Object.assign({}, this.filteringOptions, { caseSensitive: !this.filteringOptions.caseSensitive });
|
|
38138
38133
|
}
|
|
38134
|
+
validateComboState() {
|
|
38135
|
+
if (this.ngControl && this.ngControl.invalid) {
|
|
38136
|
+
this.valid = IgxInputState.INVALID;
|
|
38137
|
+
}
|
|
38138
|
+
else {
|
|
38139
|
+
this.valid = IgxInputState.INITIAL;
|
|
38140
|
+
}
|
|
38141
|
+
}
|
|
38139
38142
|
get isTouchedOrDirty() {
|
|
38140
38143
|
return (this.ngControl.control.touched || this.ngControl.control.dirty);
|
|
38141
38144
|
}
|
|
@@ -39012,7 +39015,7 @@ class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
39012
39015
|
IgxComboAPIService,
|
|
39013
39016
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
39014
39017
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxComboComponent, multi: true }
|
|
39015
|
-
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
|
|
39018
|
+
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
|
|
39016
39019
|
}
|
|
39017
39020
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxComboComponent, decorators: [{
|
|
39018
39021
|
type: Component,
|
|
@@ -39038,7 +39041,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
39038
39041
|
IgxRippleDirective,
|
|
39039
39042
|
IgxComboFilteringPipe,
|
|
39040
39043
|
IgxComboGroupingPipe
|
|
39041
|
-
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
|
|
39044
|
+
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
|
|
39042
39045
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: IgxSelectionAPIService }, { type: IgxComboAPIService }, { type: undefined, decorators: [{
|
|
39043
39046
|
type: Inject,
|
|
39044
39047
|
args: [DOCUMENT]
|
|
@@ -39894,6 +39897,17 @@ class PickerBaseDirective {
|
|
|
39894
39897
|
get isDropdown() {
|
|
39895
39898
|
return this.mode === PickerInteractionMode.DropDown;
|
|
39896
39899
|
}
|
|
39900
|
+
/**
|
|
39901
|
+
* Returns if there's focus within the picker's element OR popup container
|
|
39902
|
+
* @hidden @internal
|
|
39903
|
+
*/
|
|
39904
|
+
get isFocused() {
|
|
39905
|
+
const document = this.element.nativeElement?.getRootNode();
|
|
39906
|
+
if (!document?.activeElement)
|
|
39907
|
+
return false;
|
|
39908
|
+
return this.element.nativeElement.contains(document.activeElement)
|
|
39909
|
+
|| !this.collapsed && this.toggleContainer.contains(document.activeElement);
|
|
39910
|
+
}
|
|
39897
39911
|
constructor(element, _localeId, _inputGroupType) {
|
|
39898
39912
|
this.element = element;
|
|
39899
39913
|
this._localeId = _localeId;
|
|
@@ -40298,6 +40312,9 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
40298
40312
|
get pickerResourceStrings() {
|
|
40299
40313
|
return Object.assign({}, this._resourceStrings, this.resourceStrings);
|
|
40300
40314
|
}
|
|
40315
|
+
get toggleContainer() {
|
|
40316
|
+
return this._calendarContainer;
|
|
40317
|
+
}
|
|
40301
40318
|
/** @hidden @internal */
|
|
40302
40319
|
onKeyDown(event) {
|
|
40303
40320
|
switch (event.key) {
|
|
@@ -40617,15 +40634,12 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
40617
40634
|
return;
|
|
40618
40635
|
}
|
|
40619
40636
|
this._initializeCalendarContainer(e.componentRef.instance);
|
|
40637
|
+
this._calendarContainer = e.componentRef.location.nativeElement;
|
|
40620
40638
|
this._collapsed = false;
|
|
40621
40639
|
});
|
|
40622
40640
|
this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {
|
|
40623
40641
|
this.opened.emit({ owner: this });
|
|
40624
|
-
|
|
40625
|
-
// determine why this is needed.
|
|
40626
|
-
// if (this._calendar?.daysView?.selectedDates) {
|
|
40627
|
-
// return;
|
|
40628
|
-
// }
|
|
40642
|
+
this._calendar.wrapper?.nativeElement?.focus();
|
|
40629
40643
|
if (this._targetViewDate) {
|
|
40630
40644
|
this._targetViewDate.setHours(0, 0, 0, 0);
|
|
40631
40645
|
// INFO: We need to set the active date to the target view date so there's something to
|
|
@@ -40641,7 +40655,8 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
40641
40655
|
return;
|
|
40642
40656
|
}
|
|
40643
40657
|
// do not focus the input if clicking outside in dropdown mode
|
|
40644
|
-
|
|
40658
|
+
const outsideEvent = args.event && args.event.key !== this.platform.KEYMAP.ESCAPE;
|
|
40659
|
+
if (this.getEditElement() && !(outsideEvent && this.isDropdown)) {
|
|
40645
40660
|
this.inputDirective.focus();
|
|
40646
40661
|
}
|
|
40647
40662
|
else {
|
|
@@ -40654,6 +40669,8 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
40654
40669
|
this._overlayService.detach(this._overlayId);
|
|
40655
40670
|
this._collapsed = true;
|
|
40656
40671
|
this._overlayId = null;
|
|
40672
|
+
this._calendar = null;
|
|
40673
|
+
this._calendarContainer = undefined;
|
|
40657
40674
|
});
|
|
40658
40675
|
}
|
|
40659
40676
|
getMinMaxDates() {
|
|
@@ -47232,6 +47249,9 @@ class IgxTimePickerComponent extends PickerBaseDirective {
|
|
|
47232
47249
|
get appliedFormat() {
|
|
47233
47250
|
return this.inputFormat || this.dateTimeEditor?.inputFormat;
|
|
47234
47251
|
}
|
|
47252
|
+
get toggleContainer() {
|
|
47253
|
+
return this.toggleRef?.element;
|
|
47254
|
+
}
|
|
47235
47255
|
get required() {
|
|
47236
47256
|
if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {
|
|
47237
47257
|
// Run the validation with empty object to check if required is enabled.
|
|
@@ -57879,10 +57899,10 @@ class IgxGridFilteringRowComponent {
|
|
|
57879
57899
|
}
|
|
57880
57900
|
requestAnimationFrame(() => {
|
|
57881
57901
|
const focusedElement = document.activeElement;
|
|
57882
|
-
if (focusedElement.classList.contains('igx-chip__remove')
|
|
57902
|
+
if (focusedElement.classList.contains('igx-chip__remove')) {
|
|
57883
57903
|
return;
|
|
57884
57904
|
}
|
|
57885
|
-
if (!(focusedElement && this.
|
|
57905
|
+
if (!(focusedElement && this.editorFocused(focusedElement))
|
|
57886
57906
|
&& this.dropDownConditions.collapsed) {
|
|
57887
57907
|
this.commitInput();
|
|
57888
57908
|
}
|
|
@@ -57962,7 +57982,7 @@ class IgxGridFilteringRowComponent {
|
|
|
57962
57982
|
onChipPointerdown(args, chip) {
|
|
57963
57983
|
const activeElement = document.activeElement;
|
|
57964
57984
|
this._cancelChipClick = chip.selected
|
|
57965
|
-
&& activeElement && this.
|
|
57985
|
+
&& activeElement && this.editorFocused(activeElement);
|
|
57966
57986
|
}
|
|
57967
57987
|
onChipClick(args, item) {
|
|
57968
57988
|
if (this._cancelChipClick) {
|
|
@@ -58179,11 +58199,11 @@ class IgxGridFilteringRowComponent {
|
|
|
58179
58199
|
filter() {
|
|
58180
58200
|
this.filteringService.filterInternal(this.column.field);
|
|
58181
58201
|
}
|
|
58182
|
-
|
|
58202
|
+
editorFocused(activeElement) {
|
|
58183
58203
|
// if the first check is false and the second is undefined this will return undefined
|
|
58184
58204
|
// make sure it always returns boolean
|
|
58185
|
-
return !!(this.inputGroup && this.inputGroup.nativeElement.contains(
|
|
58186
|
-
|| this.picker && this.picker.
|
|
58205
|
+
return !!(this.inputGroup && this.inputGroup.nativeElement.contains(activeElement)
|
|
58206
|
+
|| this.picker && this.picker.isFocused);
|
|
58187
58207
|
}
|
|
58188
58208
|
get isColumnFiltered() {
|
|
58189
58209
|
return this.column.filteringExpressionsTree && this.column.filteringExpressionsTree.filteringOperands.length > 0;
|
|
@@ -92216,6 +92236,9 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
92216
92236
|
get separatorClass() {
|
|
92217
92237
|
return 'igx-date-range-picker__label';
|
|
92218
92238
|
}
|
|
92239
|
+
get toggleContainer() {
|
|
92240
|
+
return this._calendarContainer;
|
|
92241
|
+
}
|
|
92219
92242
|
get required() {
|
|
92220
92243
|
if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {
|
|
92221
92244
|
const error = this._ngControl.control.validator({});
|
|
@@ -92549,7 +92572,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
92549
92572
|
if (args.cancel) {
|
|
92550
92573
|
return;
|
|
92551
92574
|
}
|
|
92552
|
-
if (this.isDropdown && e?.event && !this.
|
|
92575
|
+
if (this.isDropdown && e?.event && !this.isFocused) {
|
|
92553
92576
|
// outside click
|
|
92554
92577
|
this.updateValidityOnBlur();
|
|
92555
92578
|
}
|
|
@@ -92576,10 +92599,12 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
92576
92599
|
return;
|
|
92577
92600
|
}
|
|
92578
92601
|
this._initializeCalendarContainer(e.componentRef.instance);
|
|
92602
|
+
this._calendarContainer = e.componentRef.location.nativeElement;
|
|
92579
92603
|
this._collapsed = false;
|
|
92580
92604
|
this.updateCalendar();
|
|
92581
92605
|
});
|
|
92582
92606
|
this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {
|
|
92607
|
+
this.calendar.wrapper.nativeElement.focus();
|
|
92583
92608
|
this.opened.emit({ owner: this });
|
|
92584
92609
|
});
|
|
92585
92610
|
this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e) => {
|
|
@@ -92589,6 +92614,8 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
92589
92614
|
this._overlayService.detach(this._overlayId);
|
|
92590
92615
|
this._collapsed = true;
|
|
92591
92616
|
this._overlayId = null;
|
|
92617
|
+
this._calendar = null;
|
|
92618
|
+
this._calendarContainer = undefined;
|
|
92592
92619
|
this.closed.emit({ owner: this });
|
|
92593
92620
|
});
|
|
92594
92621
|
}
|