igniteui-angular 18.2.3 → 18.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/esm2022/lib/avatar/avatar.component.mjs +17 -2
  2. package/esm2022/lib/checkbox/checkbox.component.mjs +73 -9
  3. package/esm2022/lib/core/utils.mjs +8 -1
  4. package/esm2022/lib/date-picker/date-picker.component.mjs +7 -3
  5. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +2 -2
  6. package/esm2022/lib/query-builder/query-builder.component.mjs +11 -6
  7. package/fesm2022/igniteui-angular.mjs +110 -15
  8. package/fesm2022/igniteui-angular.mjs.map +1 -1
  9. package/lib/avatar/avatar.component.d.ts +3 -1
  10. package/lib/checkbox/checkbox.component.d.ts +42 -2
  11. package/lib/core/styles/components/action-strip/_action-strip-component.scss +1 -1
  12. package/lib/core/styles/components/action-strip/_action-strip-theme.scss +1 -0
  13. package/lib/core/styles/components/avatar/_avatar-theme.scss +1 -0
  14. package/lib/core/styles/components/badge/_badge-theme.scss +1 -0
  15. package/lib/core/styles/components/banner/_banner-theme.scss +1 -0
  16. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +1 -0
  17. package/lib/core/styles/components/button/_button-theme.scss +1 -0
  18. package/lib/core/styles/components/button-group/_button-group-theme.scss +1 -0
  19. package/lib/core/styles/components/calendar/_calendar-theme.scss +1 -0
  20. package/lib/core/styles/components/card/_card-theme.scss +1 -0
  21. package/lib/core/styles/components/carousel/_carousel-theme.scss +6 -5
  22. package/lib/core/styles/components/checkbox/_checkbox-component.scss +76 -14
  23. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +98 -109
  24. package/lib/core/styles/components/chip/_chip-theme.scss +1 -0
  25. package/lib/core/styles/components/column-actions/_column-actions-theme.scss +1 -0
  26. package/lib/core/styles/components/combo/_combo-theme.scss +1 -0
  27. package/lib/core/styles/components/dialog/_dialog-theme.scss +1 -0
  28. package/lib/core/styles/components/divider/_divider-theme.scss +1 -0
  29. package/lib/core/styles/components/drop-down/_drop-down-theme.scss +1 -0
  30. package/lib/core/styles/components/expansion-panel/_expansion-panel-theme.scss +1 -0
  31. package/lib/core/styles/components/grid/_grid-component.scss +1 -0
  32. package/lib/core/styles/components/grid/_grid-theme.scss +4 -3
  33. package/lib/core/styles/components/grid/_pivot-data-selector-theme.scss +1 -0
  34. package/lib/core/styles/components/grid-summary/_grid-summary-theme.scss +1 -0
  35. package/lib/core/styles/components/grid-toolbar/_grid-toolbar-theme.scss +1 -0
  36. package/lib/core/styles/components/highlight/highlight-theme.scss +1 -0
  37. package/lib/core/styles/components/icon/_icon-theme.scss +2 -1
  38. package/lib/core/styles/components/icon-button/_icon-button-theme.scss +1 -0
  39. package/lib/core/styles/components/label/_label-theme.scss +1 -0
  40. package/lib/core/styles/components/list/_list-theme.scss +8 -53
  41. package/lib/core/styles/components/navbar/_navbar-theme.scss +1 -0
  42. package/lib/core/styles/components/navdrawer/_navdrawer-theme.scss +1 -0
  43. package/lib/core/styles/components/overlay/_overlay-theme.scss +1 -0
  44. package/lib/core/styles/components/paginator/_paginator-component.scss +1 -1
  45. package/lib/core/styles/components/paginator/_paginator-theme.scss +1 -0
  46. package/lib/core/styles/components/progress/_progress-theme.scss +2 -0
  47. package/lib/core/styles/components/query-builder/_query-builder-component.scss +9 -1
  48. package/lib/core/styles/components/query-builder/_query-builder-theme.scss +1 -0
  49. package/lib/core/styles/components/radio/_radio-theme.scss +1 -0
  50. package/lib/core/styles/components/ripple/_ripple-theme.scss +2 -1
  51. package/lib/core/styles/components/scrollbar/scrollbar-theme.scss +1 -0
  52. package/lib/core/styles/components/select/_select-theme.scss +1 -0
  53. package/lib/core/styles/components/slider/_slider-theme.scss +1 -0
  54. package/lib/core/styles/components/snackbar/_snackbar-theme.scss +1 -0
  55. package/lib/core/styles/components/splitter/_splitter-theme.scss +1 -0
  56. package/lib/core/styles/components/stepper/_stepper-theme.scss +1 -0
  57. package/lib/core/styles/components/switch/_switch-theme.scss +1 -0
  58. package/lib/core/styles/components/tabs/_tabs-theme.scss +21 -15
  59. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +1 -0
  60. package/lib/core/styles/components/toast/_toast-theme.scss +1 -0
  61. package/lib/core/styles/components/tooltip/_tooltip-theme.scss +1 -0
  62. package/lib/core/styles/components/tree/_tree-theme.scss +1 -0
  63. package/lib/core/styles/components/watermark/_watermark-theme.scss +1 -0
  64. package/lib/core/styles/typography/_indigo.scss +3 -1
  65. package/lib/core/utils.d.ts +5 -0
  66. package/lib/date-picker/date-picker.component.d.ts +2 -1
  67. package/package.json +1 -1
  68. package/styles/igniteui-angular-dark.css +1 -1
  69. package/styles/igniteui-angular.css +1 -1
  70. package/styles/igniteui-bootstrap-dark.css +1 -1
  71. package/styles/igniteui-bootstrap-light.css +1 -1
  72. package/styles/igniteui-dark-green.css +1 -1
  73. package/styles/igniteui-fluent-dark-excel.css +1 -1
  74. package/styles/igniteui-fluent-dark-word.css +1 -1
  75. package/styles/igniteui-fluent-dark.css +1 -1
  76. package/styles/igniteui-fluent-light-excel.css +1 -1
  77. package/styles/igniteui-fluent-light-word.css +1 -1
  78. package/styles/igniteui-fluent-light.css +1 -1
  79. package/styles/igniteui-indigo-dark.css +1 -1
  80. package/styles/igniteui-indigo-light.css +1 -1
  81. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  82. package/styles/maps/igniteui-angular.css.map +1 -1
  83. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  84. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  85. package/styles/maps/igniteui-dark-green.css.map +1 -1
  86. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  87. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  88. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  89. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  90. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  91. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  92. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  93. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Directive, Input, HostListener, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, Output, HostBinding, Self, Optional, booleanAttribute, SecurityContext, Component, ContentChildren, ContentChild, RendererStyleFlags2, Pipe, ViewChild, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
2
+ import { Injectable, Directive, Input, HostListener, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, Output, HostBinding, Self, Optional, booleanAttribute, SecurityContext, Component, ContentChildren, ContentChild, RendererStyleFlags2, Pipe, ViewChild, DestroyRef, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, SkipSelf, 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
5
  import { Observable, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, pipe } from 'rxjs';
@@ -773,6 +773,13 @@ function getComponentCssSizeVar(size) {
773
773
  return 'var(--ig-size, var(--ig-size-large))';
774
774
  }
775
775
  }
776
+ /**
777
+ * @param path - The URI path to be normalized.
778
+ * @returns string encoded using the encodeURI function.
779
+ */
780
+ function normalizeURI(path) {
781
+ return path.split('/').map(encodeURI).join('/');
782
+ }
776
783
 
777
784
  var PagingError;
778
785
  (function (PagingError) {
@@ -16666,6 +16673,50 @@ class IgxCheckboxComponent {
16666
16673
  set required(value) {
16667
16674
  this._required = value;
16668
16675
  }
16676
+ /**
16677
+ * Returns if the component is of type `material`.
16678
+ *
16679
+ * @example
16680
+ * ```typescript
16681
+ * let checkbox = this.checkbox.material;
16682
+ * ```
16683
+ */
16684
+ get material() {
16685
+ return this.theme === 'material';
16686
+ }
16687
+ /**
16688
+ * Returns if the component is of type `indigo`.
16689
+ *
16690
+ * @example
16691
+ * ```typescript
16692
+ * let checkbox = this.checkbox.indigo;
16693
+ * ```
16694
+ */
16695
+ get indigo() {
16696
+ return this.theme === 'indigo';
16697
+ }
16698
+ /**
16699
+ * Returns if the component is of type `bootstrap`.
16700
+ *
16701
+ * @example
16702
+ * ```typescript
16703
+ * let checkbox = this.checkbox.bootstrap;
16704
+ * ```
16705
+ */
16706
+ get bootstrap() {
16707
+ return this.theme === 'bootstrap';
16708
+ }
16709
+ /**
16710
+ * Returns if the component is of type `fluent`.
16711
+ *
16712
+ * @example
16713
+ * ```typescript
16714
+ * let checkbox = this.checkbox.fluent;
16715
+ * ```
16716
+ */
16717
+ get fluent() {
16718
+ return this.theme === 'fluent';
16719
+ }
16669
16720
  /**
16670
16721
  * Sets/gets whether the checkbox is checked.
16671
16722
  * Default value is `false`.
@@ -16902,15 +16953,18 @@ class IgxCheckboxComponent {
16902
16953
  * @internal
16903
16954
  */
16904
16955
  this._required = false;
16905
- /**
16906
- * @hidden
16907
- * @internal
16908
- */
16909
- this.theme = 'material';
16910
- this.theme = this.themeService?.globalTheme;
16956
+ this.elRef = inject(ElementRef);
16957
+ this._theme$ = new Subject();
16958
+ this.destroyRef = inject(DestroyRef);
16911
16959
  if (this.ngControl !== null) {
16912
16960
  this.ngControl.valueAccessor = this;
16913
16961
  }
16962
+ this.theme = this.themeService.globalTheme;
16963
+ this._subscription = this._theme$.asObservable().subscribe(value => {
16964
+ this.theme = value;
16965
+ this.cdr.detectChanges();
16966
+ });
16967
+ this.destroyRef.onDestroy(() => this._subscription.unsubscribe());
16914
16968
  }
16915
16969
  /**
16916
16970
  * @hidden
@@ -16924,6 +16978,11 @@ class IgxCheckboxComponent {
16924
16978
  this.cdr.detectChanges();
16925
16979
  }
16926
16980
  }
16981
+ const theme = this.themeService.getComponentTheme(this.elRef);
16982
+ if (theme) {
16983
+ this._theme$.next(theme);
16984
+ this.cdr.markForCheck();
16985
+ }
16927
16986
  }
16928
16987
  /** @hidden @internal */
16929
16988
  onKeyUp(event) {
@@ -17045,7 +17104,7 @@ class IgxCheckboxComponent {
17045
17104
  }
17046
17105
  }
17047
17106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: ThemeService }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
17048
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: IgxCheckboxComponent, isStandalone: true, selector: "igx-checkbox", inputs: { id: "id", labelId: "labelId", value: "value", name: "name", tabindex: "tabindex", labelPosition: "labelPosition", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], required: ["required", "required", booleanAttribute], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLabel: ["aria-label", "ariaLabel"], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], invalid: ["invalid", "invalid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], disableTransitions: ["disableTransitions", "disableTransitions", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "_onCheckboxClick($event)", "blur": "onBlur()" }, properties: { "attr.id": "this.id", "class.igx-checkbox": "this.cssClass", "class.igx-checkbox--focused": "this.focused", "class.igx-checkbox--indeterminate": "this.indeterminate", "class.igx-checkbox--checked": "this.checked", "class.igx-checkbox--disabled": "this.disabled", "class.igx-checkbox--invalid": "this.invalid", "class.igx-checkbox--plain": "this.disableTransitions" } }, providers: [{
17107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: IgxCheckboxComponent, isStandalone: true, selector: "igx-checkbox", inputs: { id: "id", labelId: "labelId", value: "value", name: "name", tabindex: "tabindex", labelPosition: "labelPosition", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], required: ["required", "required", booleanAttribute], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLabel: ["aria-label", "ariaLabel"], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], invalid: ["invalid", "invalid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], disableTransitions: ["disableTransitions", "disableTransitions", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "_onCheckboxClick($event)", "blur": "onBlur()" }, properties: { "attr.id": "this.id", "class.igx-checkbox": "this.cssClass", "class.igx-checkbox--material": "this.material", "class.igx-checkbox--indigo": "this.indigo", "class.igx-checkbox--bootstrap": "this.bootstrap", "class.igx-checkbox--fluent": "this.fluent", "class.igx-checkbox--focused": "this.focused", "class.igx-checkbox--indeterminate": "this.indeterminate", "class.igx-checkbox--checked": "this.checked", "class.igx-checkbox--disabled": "this.disabled", "class.igx-checkbox--invalid": "this.invalid", "class.igx-checkbox--plain": "this.disableTransitions" } }, providers: [{
17049
17108
  provide: EDITOR_PROVIDER,
17050
17109
  useExisting: IgxCheckboxComponent,
17051
17110
  multi: true
@@ -17103,6 +17162,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
17103
17162
  }], cssClass: [{
17104
17163
  type: HostBinding,
17105
17164
  args: ['class.igx-checkbox']
17165
+ }], material: [{
17166
+ type: HostBinding,
17167
+ args: ['class.igx-checkbox--material']
17168
+ }], indigo: [{
17169
+ type: HostBinding,
17170
+ args: ['class.igx-checkbox--indigo']
17171
+ }], bootstrap: [{
17172
+ type: HostBinding,
17173
+ args: ['class.igx-checkbox--bootstrap']
17174
+ }], fluent: [{
17175
+ type: HostBinding,
17176
+ args: ['class.igx-checkbox--fluent']
17106
17177
  }], focused: [{
17107
17178
  type: HostBinding,
17108
17179
  args: ['class.igx-checkbox--focused']
@@ -28293,6 +28364,21 @@ class IgxAvatarComponent {
28293
28364
  get isCircle() {
28294
28365
  return this.shape === 'circle';
28295
28366
  }
28367
+ /**
28368
+ * Sets the image source of the avatar.
28369
+ *
28370
+ * @example
28371
+ * ```html
28372
+ * <igx-avatar src="images/picture.jpg"></igx-avatar>
28373
+ * ```
28374
+ * @igxFriendlyName Image URL
28375
+ */
28376
+ set src(value) {
28377
+ this._src = normalizeURI(value);
28378
+ }
28379
+ get src() {
28380
+ return this._src;
28381
+ }
28296
28382
  /**
28297
28383
  * Returns the size of the avatar.
28298
28384
  *
@@ -40693,6 +40779,7 @@ class IgxDatePickerComponent extends PickerBaseDirective {
40693
40779
  this._calendar.locale = this.locale;
40694
40780
  this._calendar.weekStart = this.weekStart;
40695
40781
  this._calendar.specialDates = this.specialDates;
40782
+ this._calendar.headerTitleTemplate = this.headerTitleTemplate;
40696
40783
  this._calendar.headerTemplate = this.headerTemplate;
40697
40784
  this._calendar.subheaderTemplate = this.subheaderTemplate;
40698
40785
  this._calendar.headerOrientation = this.headerOrientation;
@@ -40731,7 +40818,7 @@ class IgxDatePickerComponent extends PickerBaseDirective {
40731
40818
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.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: [
40732
40819
  { provide: NG_VALUE_ACCESSOR, useExisting: IgxDatePickerComponent, multi: true },
40733
40820
  { provide: NG_VALIDATORS, useExisting: IgxDatePickerComponent, multi: true }
40734
- ], 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 [type]=\"type\">\n <igx-prefix *ngIf=\"!toggleComponents.length\" (click)=\"toggle()\">\n <igx-icon\n [title]=\"\n value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\n \"\n family=\"default\"\n name=\"today\"\n >\n </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 family=\"default\" name=\"input_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", "name", "active"] }, { 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", "defaultFormatType", "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]" }] }); }
40821
+ ], 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 [type]=\"type\">\n <igx-prefix *ngIf=\"!toggleComponents.length\" (click)=\"toggle()\">\n <igx-icon\n [title]=\"\n value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\n \"\n family=\"default\"\n name=\"today\"\n >\n </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 family=\"default\" name=\"input_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", "name", "active"] }, { 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", "defaultFormatType", "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]" }] }); }
40735
40822
  }
40736
40823
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxDatePickerComponent, decorators: [{
40737
40824
  type: Component,
@@ -40816,6 +40903,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
40816
40903
  }], label: [{
40817
40904
  type: ContentChild,
40818
40905
  args: [IgxLabelDirective]
40906
+ }], headerTitleTemplate: [{
40907
+ type: ContentChild,
40908
+ args: [IgxCalendarHeaderTitleTemplateDirective]
40819
40909
  }], headerTemplate: [{
40820
40910
  type: ContentChild,
40821
40911
  args: [IgxCalendarHeaderTemplateDirective]
@@ -48786,13 +48876,18 @@ class IgxQueryBuilderComponent {
48786
48876
  * @hidden @internal
48787
48877
  */
48788
48878
  deleteGroup() {
48789
- const selectedGroup = this.contextualGroup;
48790
- const parent = selectedGroup.parent;
48791
- if (parent) {
48792
- const index = parent.children.indexOf(selectedGroup);
48879
+ let selectedGroup = this.contextualGroup;
48880
+ let parent = selectedGroup.parent;
48881
+ if (!parent) {
48882
+ this.rootGroup = null;
48883
+ }
48884
+ while (parent) {
48885
+ let index = parent.children.indexOf(selectedGroup);
48793
48886
  parent.children.splice(index, 1);
48887
+ selectedGroup = parent;
48888
+ parent = parent.children.length === 0 ? parent.parent : null;
48794
48889
  }
48795
- else {
48890
+ if (this.rootGroup?.children.length === 0) {
48796
48891
  this.rootGroup = null;
48797
48892
  }
48798
48893
  this.clearSelection();
@@ -92589,7 +92684,6 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
92589
92684
  // input click
92590
92685
  if (this.hasProjectedInputs && this._focusedInput) {
92591
92686
  this._focusedInput.setFocus();
92592
- this._focusedInput = null;
92593
92687
  }
92594
92688
  if (this.inputDirective) {
92595
92689
  this.inputDirective.focus();
@@ -92633,6 +92727,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
92633
92727
  this.updateCalendar();
92634
92728
  }
92635
92729
  updateValidityOnBlur() {
92730
+ this._focusedInput = null;
92636
92731
  this.onTouchCallback();
92637
92732
  if (this._ngControl) {
92638
92733
  if (this.hasProjectedInputs) {