src/toggletip/toggletip.component.ts
Get started with importing the module:
Example :import { ToggletipModule } from 'carbon-components-angular';
AfterViewInit
OnDestroy
| changeDetection | ChangeDetectionStrategy.OnPush |
| selector | cds-toggletip, ibm-toggletip |
| template | |
Properties |
|
Methods |
Inputs |
Outputs |
HostBindings |
HostListeners |
constructor(hostElement: ElementRef, ngZone: NgZone, renderer: Renderer2, changeDetectorRef: ChangeDetectorRef)
|
|||||||||||||||
|
Defined in src/toggletip/toggletip.component.ts:49
|
|||||||||||||||
|
Parameters :
|
| id | |
Type : string
|
|
Default value : `tooltip-${Toggletip.toggletipCounter++}`
|
|
|
Defined in src/toggletip/toggletip.component.ts:41
|
|
| isOpen | |
Type : boolean
|
|
Default value : false
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:44
|
|
| align | |
Type : oldPlacement | Placement
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:45
|
|
|
Set alignment of popover
As of v5, When |
|
| autoAlign | |
Type : boolean
|
|
Default value : false
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:115
|
|
|
Experimental: Use floating-ui to position the tooltip This is not toggleable - should be assigned once |
|
| caret | |
Type : boolean
|
|
Default value : true
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:102
|
|
|
Show caret at the alignment position |
|
| dropShadow | |
Type : boolean
|
|
Default value : true
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:106
|
|
|
Enable drop shadow around the popover container |
|
| highContrast | |
Type : boolean
|
|
Default value : false
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:110
|
|
|
Enable high contrast for popover container |
|
| isOpenChange | |
Type : EventEmitter
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:98
|
|
|
Emits an event when the state of |
|
| onClose | |
Type : EventEmitter<Event>
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:90
|
|
|
Emits an event when the dialog is closed |
|
| onOpen | |
Type : EventEmitter<Event>
|
|
|
Inherited from
PopoverContainer
|
|
|
Defined in
PopoverContainer:94
|
|
|
Emits an event when the dialog is opened |
|
| class.cds--toggletip |
Type : boolean
|
Default value : true
|
|
Defined in src/toggletip/toggletip.component.ts:43
|
| class.cds--popover-container |
Type : boolean
|
Default value : true
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:116
|
| keyup |
Arguments : '$event'
|
keyup(event: KeyboardEvent)
|
|
Defined in src/toggletip/toggletip.component.ts:90
|
| Private handleExpansion | ||||||||||||
handleExpansion(state, event: Event)
|
||||||||||||
|
Defined in src/toggletip/toggletip.component.ts:107
|
||||||||||||
|
Parameters :
Returns :
void
|
| handleFocusOut | ||||
handleFocusOut(event)
|
||||
|
Defined in src/toggletip/toggletip.component.ts:97
|
||||
|
Parameters :
Returns :
void
|
| hostkeys | ||||||
hostkeys(event: KeyboardEvent)
|
||||||
Decorators :
@HostListener('keyup', ['$event'])
|
||||||
|
Defined in src/toggletip/toggletip.component.ts:90
|
||||||
|
Parameters :
Returns :
void
|
| ngAfterViewInit |
ngAfterViewInit()
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:62
|
|
Returns :
void
|
| ngOnDestroy |
ngOnDestroy()
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:103
|
|
Returns :
void
|
| cleanUp |
cleanUp()
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:285
|
|
Clean up
Returns :
void
|
| handleChange | ||||||||||||
handleChange(open: boolean, event?: Event)
|
||||||||||||
|
Inherited from
PopoverContainer
|
||||||||||||
|
Defined in
PopoverContainer:137
|
||||||||||||
|
Handles emitting open/close event
Parameters :
Returns :
void
|
| initializeReferences |
initializeReferences()
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:264
|
|
Returns :
void
|
| ngOnChanges | ||||||
ngOnChanges(changes: SimpleChanges)
|
||||||
|
Inherited from
PopoverContainer
|
||||||
|
Defined in
PopoverContainer:241
|
||||||
|
Close the popover and reopen it with updated values without emitting an event
Parameters :
Returns :
void
|
| recomputePosition |
recomputePosition()
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:185
|
|
Compute position of tooltip when autoAlign is enabled
Returns :
void
|
| roundByDPR | ||||
roundByDPR(value)
|
||||
|
Inherited from
PopoverContainer
|
||||
|
Defined in
PopoverContainer:177
|
||||
|
Parameters :
Returns :
number
|
| updateAlignmentClass |
updateAlignmentClass(newAlignment: string, previousAlignment?: string)
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:296
|
|
Replace existing previous alignment class with new
Returns :
void
|
| btn |
Type : ElementRef
|
Decorators :
@ContentChild(ToggletipButton, {read: ElementRef})
|
|
Defined in src/toggletip/toggletip.component.ts:46
|
| documentClick |
Default value : this.handleFocusOut.bind(this)
|
|
Defined in src/toggletip/toggletip.component.ts:48
|
| Private subscription |
Type : Subscription
|
|
Defined in src/toggletip/toggletip.component.ts:49
|
| toggletipClass |
Default value : true
|
Decorators :
@HostBinding('class.cds--toggletip')
|
|
Defined in src/toggletip/toggletip.component.ts:43
|
| Static toggletipCounter |
Type : number
|
Default value : 0
|
|
Defined in src/toggletip/toggletip.component.ts:39
|
| _align |
Type : Placement
|
Default value : "bottom"
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:84
|
| Readonly alignmentClassPrefix |
Type : string
|
Default value : "cds--popover--"
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:85
|
| Protected caretHeight |
Type : number
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:122
|
| Protected caretOffset |
Type : number
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:121
|
| Protected caretRef |
Type : HTMLElement
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:120
|
| containerClass |
Default value : true
|
Decorators :
@HostBinding('class.cds--popover-container')
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:116
|
| Protected popoverContentRef |
Type : HTMLElement
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:119
|
| Protected unmountFloatingElement |
Type : Function
|
|
Inherited from
PopoverContainer
|
|
Defined in
PopoverContainer:123
|
import {
AfterViewInit,
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
ContentChild,
ElementRef,
HostBinding,
HostListener,
Input,
NgZone,
OnDestroy,
Renderer2
} from "@angular/core";
import { fromEvent, Subscription } from "rxjs";
import { PopoverContainer } from "carbon-components-angular/popover";
import { ToggletipButton } from "./toggletip-button.directive";
/**
* Get started with importing the module:
*
* ```typescript
* import { ToggletipModule } from 'carbon-components-angular';
* ```
*
* [See demo](../../?path=/story/components-toggletip--basic)
*/
@Component({
selector: "cds-toggletip, ibm-toggletip",
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<ng-content select="[cdsToggletipButton]"></ng-content>
<cds-popover-content [attr.id]="id" aria-live="polite">
<ng-content select="[cdsToggletipContent]"></ng-content>
</cds-popover-content>
`
})
export class Toggletip extends PopoverContainer implements AfterViewInit, OnDestroy {
static toggletipCounter = 0;
@Input() id = `tooltip-${Toggletip.toggletipCounter++}`;
@HostBinding("class.cds--toggletip") toggletipClass = true;
@HostBinding("class.cds--toggletip--open") @Input() isOpen = false;
@ContentChild(ToggletipButton, { read: ElementRef }) btn!: ElementRef;
documentClick = this.handleFocusOut.bind(this);
private subscription: Subscription;
constructor(
protected hostElement: ElementRef,
protected ngZone: NgZone,
protected renderer: Renderer2,
protected changeDetectorRef: ChangeDetectorRef
) {
super(hostElement, ngZone, renderer, changeDetectorRef);
this.highContrast = true;
this.dropShadow = false;
}
ngAfterViewInit(): void {
this.initializeReferences();
// Listen for click events on trigger
this.subscription = fromEvent(this.btn.nativeElement, "click")
.subscribe((event: Event) => {
// Add/Remove event listener based on isOpen to improve performance when there
// are a lot of toggletips
if (this.isOpen) {
document.removeEventListener("click", this.documentClick);
} else {
document.addEventListener("click", this.documentClick);
}
this.handleExpansion(!this.isOpen, event);
});
// Toggletip is open on initial render, add 'click' event listener to document so users can close
if (this.isOpen) {
document.addEventListener("click", this.documentClick);
}
if (this.btn) {
this.renderer.setAttribute(this.btn.nativeElement, "aria-controls", this.id);
}
}
@HostListener("keyup", ["$event"])
hostkeys(event: KeyboardEvent) {
if (open && event.key === "Escape") {
event.stopPropagation();
this.handleExpansion(false, event);
}
}
handleFocusOut(event) {
if (!this.hostElement.nativeElement.contains(event.target)) {
this.handleExpansion(false, event);
}
}
ngOnDestroy(): void {
this.subscription.unsubscribe();
}
private handleExpansion(state = false, event: Event) {
this.handleChange(state, event);
if (this.btn) {
this.renderer.setAttribute(this.btn.nativeElement, "aria-expanded", this.isOpen.toString());
}
}
}