igniteui-angular 17.2.25 → 17.2.27
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/avatar/avatar.component.mjs +17 -2
- package/esm2022/lib/calendar/common/calendar-view.directive.mjs +3 -2
- package/esm2022/lib/calendar/common/model.mjs +3 -2
- package/esm2022/lib/core/utils.mjs +30 -11
- package/esm2022/lib/date-picker/date-picker.component.mjs +7 -3
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +2 -2
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +20 -22
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +5 -3
- package/esm2022/lib/grids/grid-base.directive.mjs +2 -2
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder.component.mjs +9 -19
- package/esm2022/lib/services/animation/angular-animation-player.mjs +4 -2
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +7 -5
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +15 -11
- package/fesm2022/igniteui-angular.mjs +106 -71
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/avatar/avatar.component.d.ts +3 -1
- package/lib/core/styles/components/action-strip/_action-strip-component.scss +1 -1
- package/lib/core/styles/components/grid/_grid-component.scss +1 -0
- package/lib/core/styles/components/paginator/_paginator-component.scss +1 -1
- package/lib/core/styles/components/query-builder/_query-builder-component.scss +9 -1
- package/lib/core/utils.d.ts +5 -0
- package/lib/date-picker/date-picker.component.d.ts +2 -1
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
- package/lib/tabs/tabs/tabs.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, Directive, Input, HostListener, isDevMode, PLATFORM_ID, Inject, EventEmitter, ViewContainerRef, ElementRef, InjectionToken, Optional, Output, HostBinding, Self, booleanAttribute, SecurityContext, TemplateRef, Component, ViewChild, ContentChildren, ContentChild, RendererStyleFlags2, Pipe, inject, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, ChangeDetectionStrategy, SimpleChange, SkipSelf, createComponent, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/forms';
|
|
4
4
|
import { NgModel, NgControl, FormControlName, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS, FormGroup, FormsModule, RequiredValidator, MinValidator, MaxValidator, EmailValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { Observable, Subject, fromEvent, interval, animationFrameScheduler, noop, merge, Subscription, timer, pipe } from 'rxjs';
|
|
5
|
+
import { Observable, NEVER, Subject, fromEvent, interval, animationFrameScheduler, noop, merge, Subscription, timer, takeUntil as takeUntil$1, pipe } from 'rxjs';
|
|
6
6
|
import { takeUntil, filter, first as first$2, throttle, throttleTime, startWith, take, debounce, tap, switchMap, skipLast, debounceTime, map, shareReplay, takeWhile, pluck } from 'rxjs/operators';
|
|
7
7
|
import { isPlatformBrowser, formatDate as formatDate$1, CurrencyPipe, formatPercent, formatNumber, getLocaleCurrencyCode, DatePipe, getLocaleDateFormat, FormatWidth, getLocaleDateTimeFormat, DOCUMENT, NgTemplateOutlet, NgIf, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault, NgFor, TitleCasePipe, getLocaleFirstDayOfWeek, NgStyle, getLocaleCurrencySymbol, formatCurrency as formatCurrency$1, getLocaleNumberFormat, NumberFormatStyle, DecimalPipe, PercentPipe, getCurrencySymbol, AsyncPipe } from '@angular/common';
|
|
8
8
|
import { mergeWith, isEqual as isEqual$1 } from 'lodash-es';
|
|
@@ -359,7 +359,9 @@ const isObject = (value) => !!(value && value.toString() === '[object Object]');
|
|
|
359
359
|
* @returns true if provided variable is Date
|
|
360
360
|
* @hidden
|
|
361
361
|
*/
|
|
362
|
-
const isDate = (value) =>
|
|
362
|
+
const isDate = (value) => {
|
|
363
|
+
return Object.prototype.toString.call(value) === "[object Date]";
|
|
364
|
+
};
|
|
363
365
|
/**
|
|
364
366
|
* Checks if the two passed arguments are equal
|
|
365
367
|
* Currently supports date objects
|
|
@@ -554,14 +556,24 @@ const HEADER_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'escape', 'esc', 'l
|
|
|
554
556
|
* Run the resizeObservable outside angular zone, because it patches the MutationObserver which causes an infinite loop.
|
|
555
557
|
* Related issue: https://github.com/angular/angular/issues/31712
|
|
556
558
|
*/
|
|
557
|
-
const resizeObservable = (target) =>
|
|
558
|
-
const
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
});
|
|
559
|
+
const resizeObservable = (target) => {
|
|
560
|
+
const resizeObserver = getResizeObserver();
|
|
561
|
+
// check whether we are on server env or client env
|
|
562
|
+
if (resizeObserver) {
|
|
563
|
+
return new Observable((observer) => {
|
|
564
|
+
const instance = new resizeObserver((entries) => {
|
|
565
|
+
observer.next(entries);
|
|
566
|
+
});
|
|
567
|
+
instance.observe(target);
|
|
568
|
+
const unsubscribe = () => instance.disconnect();
|
|
569
|
+
return unsubscribe;
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
// if on a server env return a empty observable that does not complete immediately
|
|
574
|
+
return NEVER;
|
|
575
|
+
}
|
|
576
|
+
};
|
|
565
577
|
/**
|
|
566
578
|
* @hidden
|
|
567
579
|
* @internal
|
|
@@ -713,6 +725,13 @@ function* intoChunks(arr, size) {
|
|
|
713
725
|
yield arr.slice(i, i + size);
|
|
714
726
|
}
|
|
715
727
|
}
|
|
728
|
+
/**
|
|
729
|
+
* @param path - The URI path to be normalized.
|
|
730
|
+
* @returns string encoded using the encodeURI function.
|
|
731
|
+
*/
|
|
732
|
+
function normalizeURI(path) {
|
|
733
|
+
return path.split('/').map(encodeURI).join('/');
|
|
734
|
+
}
|
|
716
735
|
|
|
717
736
|
var PagingError;
|
|
718
737
|
(function (PagingError) {
|
|
@@ -4686,7 +4705,9 @@ class IgxAngularAnimationPlayer {
|
|
|
4686
4705
|
// To workaround this we are getting the positions from the inner player.
|
|
4687
4706
|
// This is logged in Angular here - https://github.com/angular/angular/issues/18891
|
|
4688
4707
|
// As soon as this is resolved we can remove this hack
|
|
4689
|
-
|
|
4708
|
+
const rendererEngine = innerRenderer.engine || innerRenderer.delegate.engine;
|
|
4709
|
+
// A workaround because of Angular SSR is using some delegation.
|
|
4710
|
+
this._innerPlayer = rendererEngine.players[rendererEngine.players.length - 1];
|
|
4690
4711
|
}
|
|
4691
4712
|
init() {
|
|
4692
4713
|
this.internalPlayer.init();
|
|
@@ -10612,9 +10633,7 @@ class IgxDragDirective {
|
|
|
10612
10633
|
fromEvent(document.defaultView, 'mouseup').pipe(takeUntil(this._destroy))
|
|
10613
10634
|
.subscribe((res) => this.onPointerUp(res));
|
|
10614
10635
|
}
|
|
10615
|
-
this.element.nativeElement.addEventListener('transitionend', (
|
|
10616
|
-
this.onTransitionEnd(args);
|
|
10617
|
-
});
|
|
10636
|
+
this.element.nativeElement.addEventListener('transitionend', this.onTransitionEnd.bind(this));
|
|
10618
10637
|
});
|
|
10619
10638
|
// Set transition duration to 0s. This also helps with setting `visibility: hidden` to the base to not lag.
|
|
10620
10639
|
this.element.nativeElement.style.transitionDuration = '0.0s';
|
|
@@ -10633,6 +10652,7 @@ class IgxDragDirective {
|
|
|
10633
10652
|
this._dynamicGhostRef = null;
|
|
10634
10653
|
}
|
|
10635
10654
|
}
|
|
10655
|
+
this.element.nativeElement.removeEventListener('transitionend', this.onTransitionEnd);
|
|
10636
10656
|
if (this._containerScrollIntervalId) {
|
|
10637
10657
|
clearInterval(this._containerScrollIntervalId);
|
|
10638
10658
|
this._containerScrollIntervalId = null;
|
|
@@ -11017,12 +11037,7 @@ class IgxDragDirective {
|
|
|
11017
11037
|
if (ghostDestroyArgs.cancel) {
|
|
11018
11038
|
return;
|
|
11019
11039
|
}
|
|
11020
|
-
this.
|
|
11021
|
-
this.ghostElement = null;
|
|
11022
|
-
if (this._dynamicGhostRef) {
|
|
11023
|
-
this._dynamicGhostRef.destroy();
|
|
11024
|
-
this._dynamicGhostRef = null;
|
|
11025
|
-
}
|
|
11040
|
+
this.clearGhost();
|
|
11026
11041
|
}
|
|
11027
11042
|
else if (!this.ghost) {
|
|
11028
11043
|
this.element.nativeElement.style.transitionProperty = '';
|
|
@@ -11044,6 +11059,18 @@ class IgxDragDirective {
|
|
|
11044
11059
|
});
|
|
11045
11060
|
});
|
|
11046
11061
|
}
|
|
11062
|
+
clearGhost() {
|
|
11063
|
+
this.ghostElement.removeEventListener('pointermove', this.onPointerMove);
|
|
11064
|
+
this.ghostElement.removeEventListener('pointerup', this.onPointerUp);
|
|
11065
|
+
this.ghostElement.removeEventListener('lostpointercapture', this.onPointerLost);
|
|
11066
|
+
this.ghostElement.removeEventListener('transitionend', this.onTransitionEnd);
|
|
11067
|
+
this.ghostElement.remove();
|
|
11068
|
+
this.ghostElement = null;
|
|
11069
|
+
if (this._dynamicGhostRef) {
|
|
11070
|
+
this._dynamicGhostRef.destroy();
|
|
11071
|
+
this._dynamicGhostRef = null;
|
|
11072
|
+
}
|
|
11073
|
+
}
|
|
11047
11074
|
/**
|
|
11048
11075
|
* @hidden
|
|
11049
11076
|
* Create ghost element - if a Node object is provided it creates a clone of that node,
|
|
@@ -11113,20 +11140,12 @@ class IgxDragDirective {
|
|
|
11113
11140
|
if (this._pointerDownId !== null) {
|
|
11114
11141
|
this.ghostElement.setPointerCapture(this._pointerDownId);
|
|
11115
11142
|
}
|
|
11116
|
-
this.ghostElement.addEventListener('pointermove', (
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
this.ghostElement.addEventListener('pointerup', (args) => {
|
|
11120
|
-
this.onPointerUp(args);
|
|
11121
|
-
});
|
|
11122
|
-
this.ghostElement.addEventListener('lostpointercapture', (args) => {
|
|
11123
|
-
this.onPointerLost(args);
|
|
11124
|
-
});
|
|
11143
|
+
this.ghostElement.addEventListener('pointermove', this.onPointerMove.bind(this));
|
|
11144
|
+
this.ghostElement.addEventListener('pointerup', this.onPointerUp.bind(this));
|
|
11145
|
+
this.ghostElement.addEventListener('lostpointercapture', this.onPointerLost.bind(this));
|
|
11125
11146
|
}
|
|
11126
11147
|
// Transition animation when the ghostElement is released and it returns to it's original position.
|
|
11127
|
-
this.ghostElement.addEventListener('transitionend', (
|
|
11128
|
-
this.onTransitionEnd(args);
|
|
11129
|
-
});
|
|
11148
|
+
this.ghostElement.addEventListener('transitionend', this.onTransitionEnd.bind(this));
|
|
11130
11149
|
this.cdr.detectChanges();
|
|
11131
11150
|
}
|
|
11132
11151
|
/**
|
|
@@ -13168,8 +13187,10 @@ class IgxForOfDirective extends IgxForOfToken {
|
|
|
13168
13187
|
ngAfterViewInit() {
|
|
13169
13188
|
if (this.igxForScrollOrientation === 'vertical') {
|
|
13170
13189
|
this._zone.runOutsideAngular(() => {
|
|
13171
|
-
|
|
13172
|
-
|
|
13190
|
+
if (this.platformUtil.isBrowser) {
|
|
13191
|
+
this.contentObserver = new (getResizeObserver())(() => this.contentResizeNotify.next());
|
|
13192
|
+
this.contentObserver.observe(this.dc.instance._viewContainer.element.nativeElement);
|
|
13193
|
+
}
|
|
13173
13194
|
});
|
|
13174
13195
|
}
|
|
13175
13196
|
}
|
|
@@ -26823,6 +26844,21 @@ class IgxAvatarComponent {
|
|
|
26823
26844
|
get isCircle() {
|
|
26824
26845
|
return this.shape === 'circle';
|
|
26825
26846
|
}
|
|
26847
|
+
/**
|
|
26848
|
+
* Sets the image source of the avatar.
|
|
26849
|
+
*
|
|
26850
|
+
* @example
|
|
26851
|
+
* ```html
|
|
26852
|
+
* <igx-avatar src="images/picture.jpg"></igx-avatar>
|
|
26853
|
+
* ```
|
|
26854
|
+
* @igxFriendlyName Image URL
|
|
26855
|
+
*/
|
|
26856
|
+
set src(value) {
|
|
26857
|
+
this._src = normalizeURI(value);
|
|
26858
|
+
}
|
|
26859
|
+
get src() {
|
|
26860
|
+
return this._src;
|
|
26861
|
+
}
|
|
26826
26862
|
/**
|
|
26827
26863
|
* Returns the size of the avatar.
|
|
26828
26864
|
*
|
|
@@ -28022,7 +28058,7 @@ const IGX_BUTTON_GROUP_DIRECTIVES = [
|
|
|
28022
28058
|
const daysInWeek = 7;
|
|
28023
28059
|
const millisecondsInDay = 86400000;
|
|
28024
28060
|
function toCalendarDay(date) {
|
|
28025
|
-
return date
|
|
28061
|
+
return isDate(date) ? CalendarDay.from(date) : date;
|
|
28026
28062
|
}
|
|
28027
28063
|
function checkRollover(original, modified) {
|
|
28028
28064
|
return original.date !== modified.date
|
|
@@ -28649,7 +28685,7 @@ class IgxCalendarViewDirective {
|
|
|
28649
28685
|
* @memberof IgxYearsViewComponent
|
|
28650
28686
|
*/
|
|
28651
28687
|
set date(value) {
|
|
28652
|
-
if (!(value
|
|
28688
|
+
if (!isDate(value))
|
|
28653
28689
|
return;
|
|
28654
28690
|
this._date = value;
|
|
28655
28691
|
}
|
|
@@ -39188,6 +39224,7 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
39188
39224
|
this._calendar.locale = this.locale;
|
|
39189
39225
|
this._calendar.weekStart = this.weekStart;
|
|
39190
39226
|
this._calendar.specialDates = this.specialDates;
|
|
39227
|
+
this._calendar.headerTitleTemplate = this.headerTitleTemplate;
|
|
39191
39228
|
this._calendar.headerTemplate = this.headerTemplate;
|
|
39192
39229
|
this._calendar.subheaderTemplate = this.subheaderTemplate;
|
|
39193
39230
|
this._calendar.headerOrientation = this.headerOrientation;
|
|
@@ -39226,7 +39263,7 @@ class IgxDatePickerComponent extends PickerBaseDirective {
|
|
|
39226
39263
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: IgxDatePickerComponent, isStandalone: true, selector: "igx-date-picker", inputs: { hideOutsideDays: ["hideOutsideDays", "hideOutsideDays", booleanAttribute], displayMonthsCount: "displayMonthsCount", showWeekNumbers: ["showWeekNumbers", "showWeekNumbers", booleanAttribute], formatter: "formatter", headerOrientation: "headerOrientation", todayButtonLabel: "todayButtonLabel", cancelButtonLabel: "cancelButtonLabel", spinLoop: ["spinLoop", "spinLoop", booleanAttribute], spinDelta: "spinDelta", outlet: "outlet", id: "id", formatViews: "formatViews", disabledDates: "disabledDates", specialDates: "specialDates", calendarFormat: "calendarFormat", value: "value", minValue: "minValue", maxValue: "maxValue", resourceStrings: "resourceStrings", readOnly: ["readOnly", "readOnly", booleanAttribute] }, outputs: { valueChange: "valueChange", validationFailed: "validationFailed" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.id": "this.id" } }, providers: [
|
|
39227
39264
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxDatePickerComponent, multi: true },
|
|
39228
39265
|
{ provide: NG_VALIDATORS, useExisting: IgxDatePickerComponent, multi: true }
|
|
39229
|
-
], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: IgxCalendarHeaderTemplateDirective, descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: IgxCalendarSubheaderTemplateDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "clearComponents", predicate: IgxPickerClearComponent }], viewQueries: [{ propertyName: "dateTimeEditor", first: true, predicate: IgxDateTimeEditorDirective, descendants: true, static: true }, { propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "labelDirective", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group [displayDensity]=\"displayDensity\" [type]=\"type\">\n <igx-prefix *ngIf=\"!toggleComponents.length\" (click)=\"toggle()\">\n <igx-icon [title]=\"value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\">calendar_today</igx-icon>\n </igx-prefix>\n\n <input class=\"igx-date-picker__input-date\" [displayValuePipe]=\"formatter ? displayValue : null\" igxInput\n [igxDateTimeEditor]=\"inputFormat\" [displayFormat]=\"displayFormat\"\n [minValue]=\"minValue\" [maxValue]=\"maxValue\" [spinDelta]=\"spinDelta\" [spinLoop]=\"spinLoop\"\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [readonly]=\"!isDropdown || readOnly\"\n [igxTextSelection]=\"isDropdown && !readOnly\" [locale]=\"locale\" [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-labelledby]=\"label?.id\" aria-haspopup=\"dialog\" aria-autocomplete=\"none\" role=\"combobox\">\n\n <igx-suffix *ngIf=\"!clearComponents.length && value\" (click)=\"clear()\">\n <igx-icon>clear</igx-icon>\n </igx-suffix>\n\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,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }] }); }
|
|
39266
|
+
], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "headerTitleTemplate", first: true, predicate: IgxCalendarHeaderTitleTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: IgxCalendarHeaderTemplateDirective, descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: IgxCalendarSubheaderTemplateDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "clearComponents", predicate: IgxPickerClearComponent }], viewQueries: [{ propertyName: "dateTimeEditor", first: true, predicate: IgxDateTimeEditorDirective, descendants: true, static: true }, { propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "labelDirective", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group [displayDensity]=\"displayDensity\" [type]=\"type\">\n <igx-prefix *ngIf=\"!toggleComponents.length\" (click)=\"toggle()\">\n <igx-icon [title]=\"value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\">calendar_today</igx-icon>\n </igx-prefix>\n\n <input class=\"igx-date-picker__input-date\" [displayValuePipe]=\"formatter ? displayValue : null\" igxInput\n [igxDateTimeEditor]=\"inputFormat\" [displayFormat]=\"displayFormat\"\n [minValue]=\"minValue\" [maxValue]=\"maxValue\" [spinDelta]=\"spinDelta\" [spinLoop]=\"spinLoop\"\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [readonly]=\"!isDropdown || readOnly\"\n [igxTextSelection]=\"isDropdown && !readOnly\" [locale]=\"locale\" [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-labelledby]=\"label?.id\" aria-haspopup=\"dialog\" aria-autocomplete=\"none\" role=\"combobox\">\n\n <igx-suffix *ngIf=\"!clearComponents.length && value\" (click)=\"clear()\">\n <igx-icon>clear</igx-icon>\n </igx-suffix>\n\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,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }] }); }
|
|
39230
39267
|
}
|
|
39231
39268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxDatePickerComponent, decorators: [{
|
|
39232
39269
|
type: Component,
|
|
@@ -39316,6 +39353,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
39316
39353
|
}], label: [{
|
|
39317
39354
|
type: ContentChild,
|
|
39318
39355
|
args: [IgxLabelDirective]
|
|
39356
|
+
}], headerTitleTemplate: [{
|
|
39357
|
+
type: ContentChild,
|
|
39358
|
+
args: [IgxCalendarHeaderTitleTemplateDirective]
|
|
39319
39359
|
}], headerTemplate: [{
|
|
39320
39360
|
type: ContentChild,
|
|
39321
39361
|
args: [IgxCalendarHeaderTemplateDirective]
|
|
@@ -47228,28 +47268,18 @@ class IgxQueryBuilderComponent extends DisplayDensityBase {
|
|
|
47228
47268
|
* @hidden @internal
|
|
47229
47269
|
*/
|
|
47230
47270
|
deleteGroup() {
|
|
47231
|
-
|
|
47271
|
+
let selectedGroup = this.contextualGroup;
|
|
47232
47272
|
let parent = selectedGroup.parent;
|
|
47233
|
-
if (parent) {
|
|
47273
|
+
if (!parent) {
|
|
47274
|
+
this.rootGroup = null;
|
|
47275
|
+
}
|
|
47276
|
+
while (parent) {
|
|
47234
47277
|
let index = parent.children.indexOf(selectedGroup);
|
|
47235
47278
|
parent.children.splice(index, 1);
|
|
47236
|
-
|
|
47237
|
-
|
|
47238
|
-
parent = parent.parent;
|
|
47239
|
-
while (parent && parent.children.length === 1) {
|
|
47240
|
-
childGroup = parent;
|
|
47241
|
-
parent = parent.parent;
|
|
47242
|
-
}
|
|
47243
|
-
if (parent) {
|
|
47244
|
-
index = parent.children.indexOf(childGroup);
|
|
47245
|
-
parent.children.splice(index, 1);
|
|
47246
|
-
}
|
|
47247
|
-
else {
|
|
47248
|
-
this.rootGroup = null;
|
|
47249
|
-
}
|
|
47250
|
-
}
|
|
47279
|
+
selectedGroup = parent;
|
|
47280
|
+
parent = parent.children.length === 0 ? parent.parent : null;
|
|
47251
47281
|
}
|
|
47252
|
-
|
|
47282
|
+
if (this.rootGroup?.children.length === 0) {
|
|
47253
47283
|
this.rootGroup = null;
|
|
47254
47284
|
}
|
|
47255
47285
|
this.clearSelection();
|
|
@@ -53860,7 +53890,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
|
|
|
53860
53890
|
source: this.column
|
|
53861
53891
|
};
|
|
53862
53892
|
this.column.grid.columnMovingStart.emit(movingStartArgs);
|
|
53863
|
-
this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').subscribe((ev) => {
|
|
53893
|
+
this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').pipe(takeUntil$1(this._destroy)).subscribe((ev) => {
|
|
53864
53894
|
if (ev.key === this.platformUtil.KEYMAP.ESCAPE) {
|
|
53865
53895
|
this.onEscape(ev);
|
|
53866
53896
|
}
|
|
@@ -63269,7 +63299,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
|
|
|
63269
63299
|
.subscribe((change) => {
|
|
63270
63300
|
this.onPinnedRowsChanged(change);
|
|
63271
63301
|
});
|
|
63272
|
-
this.addRowSnackbar?.clicked.subscribe(() => {
|
|
63302
|
+
this.addRowSnackbar?.clicked.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
63273
63303
|
const rec = this.filteredSortedData[this.lastAddedRowIndex];
|
|
63274
63304
|
this.scrollTo(rec, 0);
|
|
63275
63305
|
this.addRowSnackbar.close();
|
|
@@ -86137,9 +86167,10 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
86137
86167
|
this.realignSelectedIndicator();
|
|
86138
86168
|
});
|
|
86139
86169
|
}
|
|
86140
|
-
constructor(animationService, cdr, ngZone, dir) {
|
|
86170
|
+
constructor(animationService, cdr, ngZone, platform, dir) {
|
|
86141
86171
|
super(animationService, cdr, dir);
|
|
86142
86172
|
this.ngZone = ngZone;
|
|
86173
|
+
this.platform = platform;
|
|
86143
86174
|
/** @hidden */
|
|
86144
86175
|
this.defaultClass = true;
|
|
86145
86176
|
/** @hidden */
|
|
@@ -86152,12 +86183,14 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
86152
86183
|
ngAfterViewInit() {
|
|
86153
86184
|
super.ngAfterViewInit();
|
|
86154
86185
|
this.ngZone.runOutsideAngular(() => {
|
|
86155
|
-
this.
|
|
86156
|
-
this.
|
|
86157
|
-
|
|
86158
|
-
|
|
86159
|
-
|
|
86160
|
-
|
|
86186
|
+
if (this.platform.isBrowser) {
|
|
86187
|
+
this._resizeObserver = new (getResizeObserver())(() => {
|
|
86188
|
+
this.updateScrollButtons();
|
|
86189
|
+
this.realignSelectedIndicator();
|
|
86190
|
+
});
|
|
86191
|
+
this._resizeObserver.observe(this.headerContainer.nativeElement);
|
|
86192
|
+
this._resizeObserver.observe(this.viewPort.nativeElement);
|
|
86193
|
+
}
|
|
86161
86194
|
});
|
|
86162
86195
|
}
|
|
86163
86196
|
/** @hidden @internal */
|
|
@@ -86329,7 +86362,7 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
86329
86362
|
getElementOffset(element) {
|
|
86330
86363
|
return this.dir.rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;
|
|
86331
86364
|
}
|
|
86332
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxTabsComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxTabsComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: PlatformUtil }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86333
86366
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxTabsComponent, isStandalone: true, selector: "igx-tabs", inputs: { tabAlignment: "tabAlignment" }, host: { properties: { "class.igx-tabs": "this.defaultClass" } }, providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }], viewQueries: [{ propertyName: "headerContainer", first: true, predicate: ["headerContainer"], descendants: true, static: true }, { propertyName: "viewPort", first: true, predicate: ["viewPort"], descendants: true, static: true }, { propertyName: "itemsWrapper", first: true, predicate: ["itemsWrapper"], descendants: true, static: true }, { propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true, static: true }, { propertyName: "selectedIndicator", first: true, predicate: ["selectedIndicator"], descendants: true }, { propertyName: "scrollPrevButton", first: true, predicate: ["scrollPrevButton"], descendants: true }, { propertyName: "scrollNextButton", first: true, predicate: ["scrollNextButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #headerContainer class=\"igx-tabs__header\">\n <button #scrollPrevButton type=\"button\" igxIconButton=\"flat\" igxRipple class=\"igx-tabs__header-button\" (click)=\"scrollPrev()\">\n <igx-icon>navigate_before</igx-icon>\n </button>\n <div #viewPort class=\"igx-tabs__header-content\">\n <div #itemsWrapper class=\"igx-tabs__header-wrapper\" role=\"tablist\">\n <div #itemsContainer class=\"igx-tabs__header-scroll\" [ngClass]=\"resolveHeaderScrollClasses()\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </div>\n <div #selectedIndicator *ngIf=\"items.length > 0\" class=\"igx-tabs__header-active-indicator\">\n </div>\n </div>\n </div>\n <button #scrollNextButton type=\"button\" igxIconButton=\"flat\" igxRipple class=\"igx-tabs__header-button\" (click)=\"scrollNext()\">\n <igx-icon>navigate_next</igx-icon>\n </button>\n</div>\n<div class=\"igx-tabs__panels\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
86334
86367
|
}
|
|
86335
86368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxTabsComponent, decorators: [{
|
|
@@ -86338,7 +86371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
86338
86371
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
86339
86372
|
type: Inject,
|
|
86340
86373
|
args: [IgxAngularAnimationService]
|
|
86341
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: IgxDirectionality }], propDecorators: { tabAlignment: [{
|
|
86374
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: PlatformUtil }, { type: IgxDirectionality }], propDecorators: { tabAlignment: [{
|
|
86342
86375
|
type: Input
|
|
86343
86376
|
}], headerContainer: [{
|
|
86344
86377
|
type: ViewChild,
|
|
@@ -86439,10 +86472,12 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
86439
86472
|
/** @hidden @internal */
|
|
86440
86473
|
ngAfterViewInit() {
|
|
86441
86474
|
this.ngZone.runOutsideAngular(() => {
|
|
86442
|
-
this.
|
|
86443
|
-
this.
|
|
86444
|
-
|
|
86445
|
-
|
|
86475
|
+
if (this.platform.isBrowser) {
|
|
86476
|
+
this._resizeObserver = new (getResizeObserver())(() => {
|
|
86477
|
+
this.tabs.realignSelectedIndicator();
|
|
86478
|
+
});
|
|
86479
|
+
this._resizeObserver.observe(this.nativeElement);
|
|
86480
|
+
}
|
|
86446
86481
|
});
|
|
86447
86482
|
}
|
|
86448
86483
|
/** @hidden @internal */
|
|
@@ -89670,7 +89705,6 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
89670
89705
|
// input click
|
|
89671
89706
|
if (this.hasProjectedInputs && this._focusedInput) {
|
|
89672
89707
|
this._focusedInput.setFocus();
|
|
89673
|
-
this._focusedInput = null;
|
|
89674
89708
|
}
|
|
89675
89709
|
if (this.inputDirective) {
|
|
89676
89710
|
this.inputDirective.focus();
|
|
@@ -89714,6 +89748,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
89714
89748
|
this.updateCalendar();
|
|
89715
89749
|
}
|
|
89716
89750
|
updateValidityOnBlur() {
|
|
89751
|
+
this._focusedInput = null;
|
|
89717
89752
|
this.onTouchCallback();
|
|
89718
89753
|
if (this._ngControl) {
|
|
89719
89754
|
if (this.hasProjectedInputs) {
|