igniteui-angular 19.2.7 → 19.2.8

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 (37) hide show
  1. package/fesm2022/igniteui-angular.mjs +142 -92
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +1 -1
  4. package/lib/core/styles/components/input/_input-group-component.scss +2 -1
  5. package/lib/core/styles/components/input/_input-group-theme.scss +53 -5
  6. package/lib/core/styles/components/label/_label-theme.scss +4 -1
  7. package/lib/core/styles/components/radio/_radio-component.scss +12 -0
  8. package/lib/core/styles/components/radio/_radio-theme.scss +30 -8
  9. package/lib/directives/radio/radio-group.directive.d.ts +33 -15
  10. package/lib/directives/tooltip/tooltip.directive.d.ts +11 -2
  11. package/package.json +1 -1
  12. package/styles/igniteui-angular-dark.css +1 -1
  13. package/styles/igniteui-angular.css +1 -1
  14. package/styles/igniteui-bootstrap-dark.css +1 -1
  15. package/styles/igniteui-bootstrap-light.css +1 -1
  16. package/styles/igniteui-dark-green.css +1 -1
  17. package/styles/igniteui-fluent-dark-excel.css +1 -1
  18. package/styles/igniteui-fluent-dark-word.css +1 -1
  19. package/styles/igniteui-fluent-dark.css +1 -1
  20. package/styles/igniteui-fluent-light-excel.css +1 -1
  21. package/styles/igniteui-fluent-light-word.css +1 -1
  22. package/styles/igniteui-fluent-light.css +1 -1
  23. package/styles/igniteui-indigo-dark.css +1 -1
  24. package/styles/igniteui-indigo-light.css +1 -1
  25. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  26. package/styles/maps/igniteui-angular.css.map +1 -1
  27. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  28. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  29. package/styles/maps/igniteui-dark-green.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  35. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  36. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  37. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, HostListener, Input, Directive, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, HostBinding, Output, Self, Optional, booleanAttribute, SecurityContext, DestroyRef, Component, ContentChild, ContentChildren, RendererStyleFlags2, Pipe, ViewChild, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, ChangeDetectorRef, NgZone, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
2
+ import { Injectable, HostListener, Input, Directive, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, HostBinding, Output, Self, Optional, booleanAttribute, SecurityContext, DestroyRef, Component, ContentChild, ContentChildren, RendererStyleFlags2, Pipe, ViewChild, contentChildren, QueryList, signal, effect, LOCALE_ID, forwardRef, Host, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, ChangeDetectorRef, NgZone, 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
- import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, sampleTime, filter as filter$1, pipe } from 'rxjs';
6
- import { takeUntil, filter, throttle, throttleTime, first as first$2, startWith, take, debounce, tap, switchMap, skipLast, debounceTime, map, shareReplay, takeWhile, timeout, pluck } from 'rxjs/operators';
5
+ import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, takeUntil as takeUntil$1, merge, Subscription, timer, sampleTime, filter as filter$1, pipe } from 'rxjs';
6
+ import { takeUntil, filter, throttle, throttleTime, first as first$2, take, debounce, tap, switchMap, skipLast, debounceTime, map, shareReplay, takeWhile, timeout, pluck } from 'rxjs/operators';
7
7
  import { isPlatformBrowser, formatDate as formatDate$1, CurrencyPipe, FormatWidth, getLocaleDateFormat, formatPercent, formatNumber, getLocaleCurrencyCode, DatePipe, getLocaleDateTimeFormat, DOCUMENT, NgTemplateOutlet, NgClass, 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';
9
9
  import { strToU8, zip } from 'fflate';
@@ -19195,6 +19195,19 @@ let nextId = 0;
19195
19195
  * ```
19196
19196
  */
19197
19197
  class IgxRadioGroupDirective {
19198
+ /**
19199
+ * Returns reference to the child radio buttons.
19200
+ *
19201
+ * @example
19202
+ * ```typescript
19203
+ * let radioButtons = this.radioGroup.radioButtons;
19204
+ * ```
19205
+ */
19206
+ get radioButtons() {
19207
+ const buttons = Array.from(this._radioButtons());
19208
+ this._radioButtonsList.reset(buttons);
19209
+ return this._radioButtonsList;
19210
+ }
19198
19211
  /**
19199
19212
  * Sets/gets the `value` attribute.
19200
19213
  *
@@ -19283,6 +19296,26 @@ class IgxRadioGroupDirective {
19283
19296
  this._invalid = value;
19284
19297
  this._setRadioButtonsInvalid();
19285
19298
  }
19299
+ /**
19300
+ * A css class applied to the component if any of the
19301
+ * child radio buttons labelPosition is set to `before`.
19302
+ *
19303
+ * @hidden
19304
+ * @internal
19305
+ */
19306
+ get labelBefore() {
19307
+ return this._radioButtons().some((radio) => radio.labelPosition === 'before');
19308
+ }
19309
+ /**
19310
+ * A css class applied to the component if all
19311
+ * child radio buttons are disabled.
19312
+ *
19313
+ * @hidden
19314
+ * @internal
19315
+ */
19316
+ get disabled() {
19317
+ return this._radioButtons().every((radio) => radio.disabled);
19318
+ }
19286
19319
  handleClick(event) {
19287
19320
  event.stopPropagation();
19288
19321
  if (this.selected) {
@@ -19291,7 +19324,7 @@ class IgxRadioGroupDirective {
19291
19324
  }
19292
19325
  handleKeyDown(event) {
19293
19326
  const { key } = event;
19294
- const buttons = this.radioButtons.filter(radio => !radio.disabled);
19327
+ const buttons = this._radioButtons().filter(radio => !radio.disabled);
19295
19328
  const checked = buttons.find((radio) => radio.checked);
19296
19329
  if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {
19297
19330
  let index = checked ? buttons.indexOf(checked) : -1;
@@ -19357,60 +19390,12 @@ class IgxRadioGroupDirective {
19357
19390
  set alignment(value) {
19358
19391
  this.vertical = value === RadioGroupAlignment.vertical;
19359
19392
  }
19360
- /**
19361
- * @hidden
19362
- * @internal
19363
- */
19364
- ngAfterContentInit() {
19365
- // The initial value can possibly be set by NgModel and it is possible that
19366
- // the OnInit of the NgModel occurs after the OnInit of this class.
19367
- this._isInitialized = true;
19368
- this.radioButtons.changes.pipe(startWith(0), takeUntil(this.destroy$)).subscribe(() => {
19369
- this.queryChange$.next();
19370
- setTimeout(() => this._initRadioButtons());
19371
- });
19372
- if (this.ngControl) {
19373
- this.radioButtons.forEach((button) => {
19374
- if (this.ngControl.disabled) {
19375
- button.disabled = this.ngControl.disabled;
19376
- }
19377
- });
19378
- }
19379
- }
19380
- /**
19381
- * @hidden
19382
- * @internal
19383
- */
19384
- ngAfterViewInit() {
19385
- if (this.ngControl) {
19386
- this.ngControl.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
19387
- this.invalid = false;
19388
- });
19389
- if (this.ngControl.control.validator || this.ngControl.control.asyncValidator) {
19390
- this._required = this.ngControl?.control?.hasValidator(Validators.required);
19391
- }
19392
- }
19393
- if (this.radioButtons) {
19394
- this.radioButtons.forEach((button) => {
19395
- button.blurRadio
19396
- .pipe(takeUntil(this.destroy$))
19397
- .subscribe(() => {
19398
- this.updateValidityOnBlur();
19399
- });
19400
- fromEvent(button.nativeElement, 'keyup')
19401
- .pipe(takeUntil(this.destroy$))
19402
- .subscribe((event) => {
19403
- this.updateOnKeyUp(event);
19404
- });
19405
- });
19406
- }
19407
- }
19408
19393
  /**
19409
19394
  * @hidden
19410
19395
  * @internal
19411
19396
  */
19412
19397
  updateValidityOnBlur() {
19413
- this.radioButtons.forEach((button) => {
19398
+ this._radioButtons().forEach((button) => {
19414
19399
  button.focused = false;
19415
19400
  if (button.invalid) {
19416
19401
  this.invalid = true;
@@ -19422,9 +19407,9 @@ class IgxRadioGroupDirective {
19422
19407
  * @internal
19423
19408
  */
19424
19409
  updateOnKeyUp(event) {
19425
- const checked = this.radioButtons.find(x => x.checked);
19410
+ const checked = this._radioButtons().find(x => x.checked);
19426
19411
  if (event.key === "Tab") {
19427
- this.radioButtons.forEach((radio) => {
19412
+ this._radioButtons().forEach((radio) => {
19428
19413
  if (radio === checked) {
19429
19414
  checked.focused = true;
19430
19415
  }
@@ -19437,10 +19422,10 @@ class IgxRadioGroupDirective {
19437
19422
  _updateTabIndex() {
19438
19423
  // Needed so that the keyboard navigation of a radio group
19439
19424
  // placed inside a dialog works properly
19440
- if (this.radioButtons) {
19441
- const checked = this.radioButtons.find(x => x.checked);
19425
+ if (this._radioButtons) {
19426
+ const checked = this._radioButtons().find(x => x.checked);
19442
19427
  if (checked) {
19443
- this.radioButtons.forEach((button) => {
19428
+ this._radioButtons().forEach((button) => {
19444
19429
  checked.nativeElement.tabIndex = 0;
19445
19430
  if (button !== checked) {
19446
19431
  button.nativeElement.tabIndex = -1;
@@ -19481,8 +19466,8 @@ class IgxRadioGroupDirective {
19481
19466
  * @internal
19482
19467
  */
19483
19468
  registerOnTouched(fn) {
19484
- if (this.radioButtons) {
19485
- this.radioButtons.forEach((button) => {
19469
+ if (this._radioButtons) {
19470
+ this._radioButtons().forEach((button) => {
19486
19471
  button.registerOnTouched(fn);
19487
19472
  });
19488
19473
  }
@@ -19499,6 +19484,8 @@ class IgxRadioGroupDirective {
19499
19484
  this.ngControl = ngControl;
19500
19485
  this._directionality = _directionality;
19501
19486
  this.cdr = cdr;
19487
+ this._radioButtons = contentChildren(IgxRadioComponent, { descendants: true });
19488
+ this._radioButtonsList = new QueryList();
19502
19489
  /**
19503
19490
  * An event that is emitted after the radio group `value` is changed.
19504
19491
  *
@@ -19553,7 +19540,7 @@ class IgxRadioGroupDirective {
19553
19540
  * @hidden
19554
19541
  * @internal
19555
19542
  */
19556
- this._isInitialized = false;
19543
+ this._isInitialized = signal(false);
19557
19544
  /**
19558
19545
  * @hidden
19559
19546
  * @internal
@@ -19577,31 +19564,72 @@ class IgxRadioGroupDirective {
19577
19564
  if (this.ngControl !== null) {
19578
19565
  this.ngControl.valueAccessor = this;
19579
19566
  }
19567
+ effect(() => {
19568
+ this.initialize();
19569
+ Promise.resolve().then(() => {
19570
+ this.setRadioButtons();
19571
+ });
19572
+ });
19580
19573
  }
19581
19574
  /**
19582
19575
  * @hidden
19583
19576
  * @internal
19584
19577
  */
19585
- _initRadioButtons() {
19586
- if (this.radioButtons) {
19587
- const props = { name: this._name, required: this._required };
19588
- this.radioButtons.forEach((button) => {
19589
- Object.assign(button, props);
19590
- if (button.value === this._value) {
19591
- button.checked = true;
19592
- this._selected = button;
19593
- this.cdr.markForCheck();
19578
+ initialize() {
19579
+ // The initial value can possibly be set by NgModel and it is possible that
19580
+ // the OnInit of the NgModel occurs after the OnInit of this class.
19581
+ this._isInitialized.set(true);
19582
+ if (this.ngControl) {
19583
+ this.ngControl.statusChanges
19584
+ .pipe(takeUntil$1(this.destroy$))
19585
+ .subscribe(() => {
19586
+ this.invalid = false;
19587
+ });
19588
+ if (this.ngControl.control.validator || this.ngControl.control.asyncValidator) {
19589
+ this._required = this.ngControl?.control?.hasValidator(Validators.required);
19590
+ }
19591
+ this._radioButtons().forEach((button) => {
19592
+ if (this.ngControl.disabled) {
19593
+ button.disabled = this.ngControl.disabled;
19594
19594
  }
19595
- button.change.pipe(takeUntil(button.destroy$), takeUntil(this.destroy$), takeUntil(this.queryChange$)).subscribe((ev) => this._selectedRadioButtonChanged(ev));
19596
19595
  });
19597
19596
  }
19598
19597
  }
19598
+ /**
19599
+ * @hidden
19600
+ * @internal
19601
+ */
19602
+ setRadioButtons() {
19603
+ this._radioButtons().forEach((button) => {
19604
+ button.name = this._name;
19605
+ button.required = this._required;
19606
+ if (button.value === this._value) {
19607
+ button.checked = true;
19608
+ this._selected = button;
19609
+ this.cdr.markForCheck();
19610
+ }
19611
+ this._setRadioButtonEvents(button);
19612
+ });
19613
+ }
19614
+ /**
19615
+ * @hidden
19616
+ * @internal
19617
+ */
19618
+ _setRadioButtonEvents(button) {
19619
+ button.change.pipe(takeUntil$1(button.destroy$), takeUntil$1(this.destroy$), takeUntil$1(this.queryChange$)).subscribe((ev) => this._selectedRadioButtonChanged(ev));
19620
+ button.blurRadio
19621
+ .pipe(takeUntil$1(this.destroy$))
19622
+ .subscribe(() => this.updateValidityOnBlur());
19623
+ fromEvent(button.nativeElement, 'keyup')
19624
+ .pipe(takeUntil$1(this.destroy$))
19625
+ .subscribe((event) => this.updateOnKeyUp(event));
19626
+ }
19599
19627
  /**
19600
19628
  * @hidden
19601
19629
  * @internal
19602
19630
  */
19603
19631
  _selectedRadioButtonChanged(args) {
19604
- this.radioButtons.forEach((button) => {
19632
+ this._radioButtons().forEach((button) => {
19605
19633
  button.checked = button.id === args.owner.id;
19606
19634
  if (button.checked && button.ngControl) {
19607
19635
  this.invalid = button.ngControl.invalid;
@@ -19622,8 +19650,8 @@ class IgxRadioGroupDirective {
19622
19650
  * @internal
19623
19651
  */
19624
19652
  _setRadioButtonNames() {
19625
- if (this.radioButtons) {
19626
- this.radioButtons.forEach((button) => {
19653
+ if (this._radioButtons) {
19654
+ this._radioButtons().forEach((button) => {
19627
19655
  button.name = this._name;
19628
19656
  });
19629
19657
  }
@@ -19633,8 +19661,8 @@ class IgxRadioGroupDirective {
19633
19661
  * @internal
19634
19662
  */
19635
19663
  _selectRadioButton() {
19636
- if (this.radioButtons) {
19637
- this.radioButtons.forEach((button) => {
19664
+ if (this._radioButtons) {
19665
+ this._radioButtons().forEach((button) => {
19638
19666
  if (this._value === null) {
19639
19667
  // no value - uncheck all radio buttons
19640
19668
  if (button.checked) {
@@ -19666,8 +19694,8 @@ class IgxRadioGroupDirective {
19666
19694
  * @internal
19667
19695
  */
19668
19696
  _setRadioButtonsRequired() {
19669
- if (this.radioButtons) {
19670
- this.radioButtons.forEach((button) => {
19697
+ if (this._radioButtons) {
19698
+ this._radioButtons().forEach((button) => {
19671
19699
  button.required = this._required;
19672
19700
  });
19673
19701
  }
@@ -19677,14 +19705,14 @@ class IgxRadioGroupDirective {
19677
19705
  * @internal
19678
19706
  */
19679
19707
  _setRadioButtonsInvalid() {
19680
- if (this.radioButtons) {
19681
- this.radioButtons.forEach((button) => {
19708
+ if (this._radioButtons) {
19709
+ this._radioButtons().forEach((button) => {
19682
19710
  button.invalid = this._invalid;
19683
19711
  });
19684
19712
  }
19685
19713
  }
19686
19714
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IgxRadioGroupDirective, deps: [{ token: i4.NgControl, optional: true, self: true }, { token: IgxDirectionality }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
19687
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.5", type: IgxRadioGroupDirective, isStandalone: true, selector: "igx-radio-group, [igxRadioGroup]", inputs: { value: "value", name: "name", required: ["required", "required", booleanAttribute], selected: "selected", invalid: ["invalid", "invalid", booleanAttribute], alignment: "alignment" }, outputs: { change: "change" }, host: { listeners: { "click": "handleClick($event)", "keydown": "handleKeyDown($event)" }, properties: { "class.igx-radio-group": "this.cssClass", "class.igx-radio-group--vertical": "this.vertical" } }, queries: [{ propertyName: "radioButtons", predicate: IgxRadioComponent, descendants: true }], exportAs: ["igxRadioGroup"], ngImport: i0 }); }
19715
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.5", type: IgxRadioGroupDirective, isStandalone: true, selector: "igx-radio-group, [igxRadioGroup]", inputs: { value: "value", name: "name", required: ["required", "required", booleanAttribute], selected: "selected", invalid: ["invalid", "invalid", booleanAttribute], alignment: "alignment" }, outputs: { change: "change" }, host: { listeners: { "click": "handleClick($event)", "keydown": "handleKeyDown($event)" }, properties: { "class.igx-radio-group": "this.cssClass", "class.igx-radio-group--vertical": "this.vertical", "class.igx-radio-group--before": "this.labelBefore", "class.igx-radio-group--disabled": "this.disabled" } }, queries: [{ propertyName: "_radioButtons", predicate: IgxRadioComponent, descendants: true, isSignal: true }], exportAs: ["igxRadioGroup"], ngImport: i0 }); }
19688
19716
  }
19689
19717
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IgxRadioGroupDirective, decorators: [{
19690
19718
  type: Directive,
@@ -19697,10 +19725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
19697
19725
  type: Optional
19698
19726
  }, {
19699
19727
  type: Self
19700
- }] }, { type: IgxDirectionality }, { type: i0.ChangeDetectorRef }], propDecorators: { radioButtons: [{
19701
- type: ContentChildren,
19702
- args: [IgxRadioComponent, { descendants: true }]
19703
- }], value: [{
19728
+ }] }, { type: IgxDirectionality }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
19704
19729
  type: Input
19705
19730
  }], name: [{
19706
19731
  type: Input
@@ -19720,6 +19745,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
19720
19745
  }], vertical: [{
19721
19746
  type: HostBinding,
19722
19747
  args: ['class.igx-radio-group--vertical']
19748
+ }], labelBefore: [{
19749
+ type: HostBinding,
19750
+ args: ['class.igx-radio-group--before']
19751
+ }], disabled: [{
19752
+ type: HostBinding,
19753
+ args: ['class.igx-radio-group--disabled']
19723
19754
  }], handleClick: [{
19724
19755
  type: HostListener,
19725
19756
  args: ['click', ['$event']]
@@ -20908,6 +20939,21 @@ class IgxTooltipDirective extends IgxToggleDirective {
20908
20939
  * Returns whether open time out has started
20909
20940
  */
20910
20941
  this.toBeShown = false;
20942
+ this._destroy$ = new Subject();
20943
+ this.onDocumentTouchStart = this.onDocumentTouchStart.bind(this);
20944
+ this.overlayService.opening.pipe(takeUntil$1(this._destroy$)).subscribe(() => {
20945
+ document.addEventListener('touchstart', this.onDocumentTouchStart, { passive: true });
20946
+ });
20947
+ this.overlayService.closed.pipe(takeUntil$1(this._destroy$)).subscribe(() => {
20948
+ document.removeEventListener('touchstart', this.onDocumentTouchStart);
20949
+ });
20950
+ }
20951
+ /** @hidden */
20952
+ ngOnDestroy() {
20953
+ super.ngOnDestroy();
20954
+ document.removeEventListener('touchstart', this.onDocumentTouchStart);
20955
+ this._destroy$.next(true);
20956
+ this._destroy$.complete();
20911
20957
  }
20912
20958
  /**
20913
20959
  * If there is open animation in progress this method will finish is.
@@ -20951,6 +20997,9 @@ class IgxTooltipDirective extends IgxToggleDirective {
20951
20997
  overlaySettings.positionStrategy.settings.closeAnimation = animation;
20952
20998
  }
20953
20999
  }
21000
+ onDocumentTouchStart(event) {
21001
+ this.tooltipTarget?.onDocumentTouchStart(event);
21002
+ }
20954
21003
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IgxTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: IgxOverlayService }, { token: IgxNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
20955
21004
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.5", type: IgxTooltipDirective, isStandalone: true, selector: "[igxTooltip]", inputs: { context: "context", id: "id" }, host: { properties: { "class.igx-tooltip--hidden": "this.hiddenClass", "class.igx-tooltip": "this.defaultClass", "attr.id": "this.id", "attr.role": "this.role" } }, exportAs: ["tooltip"], usesInheritance: true, ngImport: i0 }); }
20956
21005
  }
@@ -21164,6 +21213,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21164
21213
  if (shouldReturn) {
21165
21214
  return;
21166
21215
  }
21216
+ this.target.tooltipTarget = this;
21167
21217
  const showingArgs = { target: this, tooltip: this.target, cancel: false };
21168
21218
  this.tooltipShow.emit(showingArgs);
21169
21219
  if (showingArgs.cancel) {
@@ -21229,18 +21279,23 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21229
21279
  this._overlayDefaults.closeOnOutsideClick = false;
21230
21280
  this._overlayDefaults.closeOnEscape = true;
21231
21281
  this.target.closing.pipe(takeUntil(this.destroy$)).subscribe((event) => {
21282
+ if (this.target.tooltipTarget !== this) {
21283
+ return;
21284
+ }
21232
21285
  const hidingArgs = { target: this, tooltip: this.target, cancel: false };
21233
21286
  this.tooltipHide.emit(hidingArgs);
21234
21287
  if (hidingArgs.cancel) {
21235
21288
  event.cancel = true;
21236
21289
  }
21237
21290
  });
21291
+ this.nativeElement.addEventListener('touchstart', this.onTouchStart = this.onTouchStart.bind(this), { passive: true });
21238
21292
  }
21239
21293
  /**
21240
21294
  * @hidden
21241
21295
  */
21242
21296
  ngOnDestroy() {
21243
21297
  this.hideTooltip();
21298
+ this.nativeElement.removeEventListener('touchstart', this.onTouchStart);
21244
21299
  this.destroy$.next();
21245
21300
  this.destroy$.complete();
21246
21301
  }
@@ -21258,6 +21313,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21258
21313
  this.target.forceClose(this.mergedOverlaySettings);
21259
21314
  this.target.toBeHidden = false;
21260
21315
  }
21316
+ this.target.tooltipTarget = this;
21261
21317
  const showingArgs = { target: this, tooltip: this.target, cancel: false };
21262
21318
  this.tooltipShow.emit(showingArgs);
21263
21319
  if (showingArgs.cancel) {
@@ -21325,7 +21381,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21325
21381
  return false;
21326
21382
  }
21327
21383
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IgxTooltipTargetDirective, deps: [{ token: i0.ElementRef }, { token: IgxNavigationService, optional: true }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
21328
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.5", type: IgxTooltipTargetDirective, isStandalone: true, selector: "[igxTooltipTarget]", inputs: { showDelay: "showDelay", hideDelay: "hideDelay", tooltipDisabled: ["tooltipDisabled", "tooltipDisabled", booleanAttribute], target: ["igxTooltipTarget", "target"], tooltip: "tooltip" }, outputs: { tooltipShow: "tooltipShow", tooltipHide: "tooltipHide" }, host: { listeners: { "click": "onClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "touchstart": "onTouchStart()", "document:touchstart": "onDocumentTouchStart($event)" } }, exportAs: ["tooltipTarget"], usesInheritance: true, ngImport: i0 }); }
21384
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.5", type: IgxTooltipTargetDirective, isStandalone: true, selector: "[igxTooltipTarget]", inputs: { showDelay: "showDelay", hideDelay: "hideDelay", tooltipDisabled: ["tooltipDisabled", "tooltipDisabled", booleanAttribute], target: ["igxTooltipTarget", "target"], tooltip: "tooltip" }, outputs: { tooltipShow: "tooltipShow", tooltipHide: "tooltipHide" }, host: { listeners: { "click": "onClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, exportAs: ["tooltipTarget"], usesInheritance: true, ngImport: i0 }); }
21329
21385
  }
21330
21386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IgxTooltipTargetDirective, decorators: [{
21331
21387
  type: Directive,
@@ -21361,12 +21417,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
21361
21417
  }], onMouseLeave: [{
21362
21418
  type: HostListener,
21363
21419
  args: ['mouseleave']
21364
- }], onTouchStart: [{
21365
- type: HostListener,
21366
- args: ['touchstart']
21367
- }], onDocumentTouchStart: [{
21368
- type: HostListener,
21369
- args: ['document:touchstart', ['$event']]
21370
21420
  }] } });
21371
21421
 
21372
21422
  /* NOTE: Tooltip directives collection for ease-of-use import in standalone components scenario */