File

src/accordion/accordion-item.component.ts

Metadata

selector ibm-accordion-item
template
<button
	[attr.aria-expanded]="expanded"
	[attr.aria-controls]="id"
	(click)="toggleExpanded()"
	class="bx--accordion__heading">
	<ibm-icon-chevron-right16 class="bx--accordion__arrow"></ibm-icon-chevron-right16>
	<p *ngIf="!isTemplate(title)"
		class="bx--accordion__title"
		[ngClass]="{
			'bx--skeleton__text': skeleton
		}">
		{{!skeleton ? title : null}}
	</p>
	<ng-template
		*ngIf="isTemplate(title)"
		[ngTemplateOutlet]="title"
		[ngTemplateOutletContext]="context">
	</ng-template>
</button>
<div [id]="id" class="bx--accordion__content">
	<ng-content *ngIf="!skeleton; else skeletonTemplate"></ng-content>
	<ng-template #skeletonTemplate>
		<p class="bx--skeleton__text" style="width: 90%"></p>
		<p class="bx--skeleton__text" style="width: 80%"></p>
		<p class="bx--skeleton__text" style="width: 95%"></p>
	</ng-template>
</div>
	

Index

Properties
Methods
Inputs
Outputs
HostBindings

Constructor

constructor()

Inputs

ariaLevel

Default value : 3

context

Type : Object | null

Default value : null

expanded

Default value : false

id

Default value : `accordion-item-${AccordionItem.accordionItemCount}`

skeleton

Default value : false

title

Type : string | TemplateRef<any>

Outputs

selected $event Type: EventEmitter

HostBindings

attr.role
attr.role:
Default value : "heading"
class.bx--accordion__item
class.bx--accordion__item:
Default value : true
style.display
style.display:
Default value : "list-item"

Methods

Public isTemplate
isTemplate(value)
Parameters :
Name Optional
value No
Returns : boolean
Public toggleExpanded
toggleExpanded()
Returns : void

Properties

Static accordionItemCount
accordionItemCount: number
Type : number
Default value : 0
import {
	Component,
	Input,
	HostBinding,
	Output,
	TemplateRef,
	EventEmitter
} from "@angular/core";

@Component({
	selector: "ibm-accordion-item",
	template: `
		<button
			[attr.aria-expanded]="expanded"
			[attr.aria-controls]="id"
			(click)="toggleExpanded()"
			class="bx--accordion__heading">
			<ibm-icon-chevron-right16 class="bx--accordion__arrow"></ibm-icon-chevron-right16>
			<p *ngIf="!isTemplate(title)"
				class="bx--accordion__title"
				[ngClass]="{
					'bx--skeleton__text': skeleton
				}">
				{{!skeleton ? title : null}}
			</p>
			<ng-template
				*ngIf="isTemplate(title)"
				[ngTemplateOutlet]="title"
				[ngTemplateOutletContext]="context">
			</ng-template>
		</button>
		<div [id]="id" class="bx--accordion__content">
			<ng-content *ngIf="!skeleton; else skeletonTemplate"></ng-content>
			<ng-template #skeletonTemplate>
				<p class="bx--skeleton__text" style="width: 90%"></p>
				<p class="bx--skeleton__text" style="width: 80%"></p>
				<p class="bx--skeleton__text" style="width: 95%"></p>
			</ng-template>
		</div>
	`
})
export class AccordionItem {
	static accordionItemCount = 0;
	@Input() title: string | TemplateRef<any>;
	@Input() context: Object | null = null;
	@Input() id = `accordion-item-${AccordionItem.accordionItemCount}`;
	@Input() skeleton = false;
	@Output() selected = new EventEmitter();

	@HostBinding("class.bx--accordion__item") itemClass = true;
	@HostBinding("class.bx--accordion__item--active") @Input() expanded = false;
	@HostBinding("style.display") itemType = "list-item";
	@HostBinding("attr.role") role = "heading";
	@HostBinding("attr.aria-level") @Input() ariaLevel = 3;

	constructor() {
		AccordionItem.accordionItemCount++;
	}

	public toggleExpanded() {
		if (!this.skeleton) {
			this.expanded = !this.expanded;
			this.selected.emit({id: this.id, expanded: this.expanded});
		}
	}

	public isTemplate(value) {
		return value instanceof TemplateRef;
	}
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""