Skip to content

Commit 0adb3c5

Browse files
committed
refactor(material/tooltip): convert to standalone
Converts `material/tooltip` to standalone.
1 parent 8a4625f commit 0adb3c5

File tree

5 files changed

+42
-17
lines changed

5 files changed

+42
-17
lines changed

src/material/tooltip/module.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ import {
1919
} from './tooltip';
2020

2121
@NgModule({
22-
imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule],
22+
imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent],
2323
exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],
24-
declarations: [MatTooltip, TooltipComponent],
2524
providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],
2625
})
2726
export class MatTooltipModule {}

src/material/tooltip/testing/tooltip-harness.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ describe('MatTooltipHarness', () => {
1212

1313
beforeEach(async () => {
1414
await TestBed.configureTestingModule({
15-
imports: [MatTooltipModule, NoopAnimationsModule],
16-
declarations: [TooltipHarnessTest],
15+
imports: [MatTooltipModule, NoopAnimationsModule, TooltipHarnessTest],
1716
}).compileComponents();
1817

1918
fixture = TestBed.createComponent(TooltipHarnessTest);
@@ -68,6 +67,8 @@ describe('MatTooltipHarness', () => {
6867
<button matTooltip='Static message' id='two'>Trigger 2</button>
6968
<button matTooltip='Disabled Tooltip' [matTooltipDisabled]='true' id='three'>Trigger 3</button>
7069
`,
70+
standalone: true,
71+
imports: [MatTooltipModule],
7172
})
7273
class TooltipHarnessTest {
7374
message = 'Tooltip message';

src/material/tooltip/tooltip.spec.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
dispatchKeyboardEvent,
1313
dispatchMouseEvent,
1414
patchElementFocus,
15-
} from '../../cdk/testing/private';
15+
} from '@angular/cdk/testing/private';
1616
import {
1717
ChangeDetectionStrategy,
1818
Component,
@@ -52,8 +52,9 @@ describe('MDC-based MatTooltip', () => {
5252

5353
beforeEach(waitForAsync(() => {
5454
TestBed.configureTestingModule({
55-
imports: [MatTooltipModule, OverlayModule],
56-
declarations: [
55+
imports: [
56+
MatTooltipModule,
57+
OverlayModule,
5758
BasicTooltipDemo,
5859
ScrollableTooltipDemo,
5960
OnPushTooltipDemo,
@@ -171,8 +172,7 @@ describe('MDC-based MatTooltip', () => {
171172
it('should be able to override the default show and hide delays', fakeAsync(() => {
172173
TestBed.resetTestingModule()
173174
.configureTestingModule({
174-
imports: [MatTooltipModule, OverlayModule],
175-
declarations: [BasicTooltipDemo],
175+
imports: [MatTooltipModule, OverlayModule, BasicTooltipDemo],
176176
providers: [
177177
{
178178
provide: MAT_TOOLTIP_DEFAULT_OPTIONS,
@@ -1540,6 +1540,8 @@ describe('MDC-based MatTooltip', () => {
15401540
[matTooltipClass]="{'custom-one': showTooltipClass, 'custom-two': showTooltipClass }"
15411541
[matTooltipTouchGestures]="touchGestures">Button</button>
15421542
}`,
1543+
standalone: true,
1544+
imports: [MatTooltipModule, OverlayModule],
15431545
})
15441546
class BasicTooltipDemo {
15451547
position: string = 'below';
@@ -1562,6 +1564,8 @@ class BasicTooltipDemo {
15621564
[matTooltipPosition]="position">Button</button>
15631565
}
15641566
</div>`,
1567+
standalone: true,
1568+
imports: [MatTooltipModule, OverlayModule],
15651569
})
15661570
class ScrollableTooltipDemo {
15671571
position: string = 'below';
@@ -1589,6 +1593,8 @@ class ScrollableTooltipDemo {
15891593
Button
15901594
</button>`,
15911595
changeDetection: ChangeDetectionStrategy.OnPush,
1596+
standalone: true,
1597+
imports: [MatTooltipModule, OverlayModule],
15921598
})
15931599
class OnPushTooltipDemo {
15941600
position: string = 'below';
@@ -1602,13 +1608,17 @@ class OnPushTooltipDemo {
16021608
<button [matTooltip]="tooltip">Button {{tooltip}}</button>
16031609
}
16041610
`,
1611+
standalone: true,
1612+
imports: [MatTooltipModule, OverlayModule],
16051613
})
16061614
class DynamicTooltipsDemo {
16071615
tooltips: string[] = [];
16081616
}
16091617

16101618
@Component({
16111619
template: `<button [matTooltip]="message" [attr.aria-label]="message">Click me</button>`,
1620+
standalone: true,
1621+
imports: [MatTooltipModule, OverlayModule],
16121622
})
16131623
class DataBoundAriaLabelTooltip {
16141624
message = 'Hello there';
@@ -1626,6 +1636,8 @@ class DataBoundAriaLabelTooltip {
16261636
matTooltip="Another thing"
16271637
[matTooltipTouchGestures]="touchGestures"></textarea>
16281638
`,
1639+
standalone: true,
1640+
imports: [MatTooltipModule, OverlayModule],
16291641
})
16301642
class TooltipOnTextFields {
16311643
@ViewChild('input') input: ElementRef<HTMLInputElement>;
@@ -1641,6 +1653,8 @@ class TooltipOnTextFields {
16411653
matTooltip="Drag me"
16421654
[matTooltipTouchGestures]="touchGestures"></button>
16431655
`,
1656+
standalone: true,
1657+
imports: [MatTooltipModule, OverlayModule],
16441658
})
16451659
class TooltipOnDraggableElement {
16461660
@ViewChild('button') button: ElementRef;

src/material/tooltip/tooltip.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ import {
2929
ViewChild,
3030
ViewContainerRef,
3131
ViewEncapsulation,
32+
inject,
3233
} from '@angular/core';
33-
import {DOCUMENT} from '@angular/common';
34+
import {DOCUMENT, NgClass} from '@angular/common';
3435
import {normalizePassiveListenerOptions, Platform} from '@angular/cdk/platform';
3536
import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';
3637
import {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';
@@ -77,6 +78,13 @@ export function getMatTooltipInvalidPositionError(position: string) {
7778
/** Injection token that determines the scroll handling while a tooltip is visible. */
7879
export const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(
7980
'mat-tooltip-scroll-strategy',
81+
{
82+
providedIn: 'root',
83+
factory: () => {
84+
const overlay = inject(Overlay);
85+
return () => overlay.scrollStrategies.reposition({scrollThrottle: SCROLL_THROTTLE_MS});
86+
},
87+
},
8088
);
8189

8290
/** @docs-private */
@@ -174,6 +182,7 @@ const MAX_WIDTH = 200;
174182
'class': 'mat-mdc-tooltip-trigger',
175183
'[class.mat-mdc-tooltip-disabled]': 'disabled',
176184
},
185+
standalone: true,
177186
})
178187
export class MatTooltip implements OnDestroy, AfterViewInit {
179188
_overlayRef: OverlayRef | null;
@@ -893,6 +902,8 @@ export class MatTooltip implements OnDestroy, AfterViewInit {
893902
'(mouseleave)': '_handleMouseLeave($event)',
894903
'aria-hidden': 'true',
895904
},
905+
standalone: true,
906+
imports: [NgClass],
896907
})
897908
export class TooltipComponent implements OnDestroy {
898909
/* Whether the tooltip text overflows to multiple lines */

tools/public_api_guard/material/tooltip.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ import { Directionality } from '@angular/cdk/bidi';
1414
import { ElementRef } from '@angular/core';
1515
import { FocusMonitor } from '@angular/cdk/a11y';
1616
import * as i0 from '@angular/core';
17-
import * as i2 from '@angular/cdk/a11y';
18-
import * as i3 from '@angular/common';
19-
import * as i4 from '@angular/cdk/overlay';
20-
import * as i5 from '@angular/material/core';
17+
import * as i1 from '@angular/cdk/a11y';
18+
import * as i2 from '@angular/common';
19+
import * as i3 from '@angular/cdk/overlay';
20+
import * as i4 from '@angular/material/core';
2121
import * as i6 from '@angular/cdk/scrolling';
2222
import { InjectionToken } from '@angular/core';
2323
import { NgZone } from '@angular/core';
@@ -106,7 +106,7 @@ export class MatTooltip implements OnDestroy, AfterViewInit {
106106
_tooltipInstance: TooltipComponent | null;
107107
touchGestures: TooltipTouchGestures;
108108
// (undocumented)
109-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatTooltip, "[matTooltip]", ["matTooltip"], { "position": { "alias": "matTooltipPosition"; "required": false; }; "positionAtOrigin": { "alias": "matTooltipPositionAtOrigin"; "required": false; }; "disabled": { "alias": "matTooltipDisabled"; "required": false; }; "showDelay": { "alias": "matTooltipShowDelay"; "required": false; }; "hideDelay": { "alias": "matTooltipHideDelay"; "required": false; }; "touchGestures": { "alias": "matTooltipTouchGestures"; "required": false; }; "message": { "alias": "matTooltip"; "required": false; }; "tooltipClass": { "alias": "matTooltipClass"; "required": false; }; }, {}, never, never, false, never>;
109+
static ɵdir: i0.ɵɵDirectiveDeclaration<MatTooltip, "[matTooltip]", ["matTooltip"], { "position": { "alias": "matTooltipPosition"; "required": false; }; "positionAtOrigin": { "alias": "matTooltipPositionAtOrigin"; "required": false; }; "disabled": { "alias": "matTooltipDisabled"; "required": false; }; "showDelay": { "alias": "matTooltipShowDelay"; "required": false; }; "hideDelay": { "alias": "matTooltipHideDelay"; "required": false; }; "touchGestures": { "alias": "matTooltipTouchGestures"; "required": false; }; "message": { "alias": "matTooltip"; "required": false; }; "tooltipClass": { "alias": "matTooltipClass"; "required": false; }; }, {}, never, never, true, never>;
110110
// (undocumented)
111111
static ɵfac: i0.ɵɵFactoryDeclaration<MatTooltip, [null, null, null, null, null, null, null, null, null, null, { optional: true; }, null]>;
112112
}
@@ -134,7 +134,7 @@ export class MatTooltipModule {
134134
// (undocumented)
135135
static ɵinj: i0.ɵɵInjectorDeclaration<MatTooltipModule>;
136136
// (undocumented)
137-
static ɵmod: i0.ɵɵNgModuleDeclaration<MatTooltipModule, [typeof i1.MatTooltip, typeof i1.TooltipComponent], [typeof i2.A11yModule, typeof i3.CommonModule, typeof i4.OverlayModule, typeof i5.MatCommonModule], [typeof i1.MatTooltip, typeof i1.TooltipComponent, typeof i5.MatCommonModule, typeof i6.CdkScrollableModule]>;
137+
static ɵmod: i0.ɵɵNgModuleDeclaration<MatTooltipModule, never, [typeof i1.A11yModule, typeof i2.CommonModule, typeof i3.OverlayModule, typeof i4.MatCommonModule, typeof i5.MatTooltip, typeof i5.TooltipComponent], [typeof i5.MatTooltip, typeof i5.TooltipComponent, typeof i4.MatCommonModule, typeof i6.CdkScrollableModule]>;
138138
}
139139

140140
// @public
@@ -171,7 +171,7 @@ export class TooltipComponent implements OnDestroy {
171171
};
172172
_triggerElement: HTMLElement;
173173
// (undocumented)
174-
static ɵcmp: i0.ɵɵComponentDeclaration<TooltipComponent, "mat-tooltip-component", never, {}, {}, never, never, false, never>;
174+
static ɵcmp: i0.ɵɵComponentDeclaration<TooltipComponent, "mat-tooltip-component", never, {}, {}, never, never, true, never>;
175175
// (undocumented)
176176
static ɵfac: i0.ɵɵFactoryDeclaration<TooltipComponent, [null, null, { optional: true; }]>;
177177
}

0 commit comments

Comments
 (0)