coreui-angular-ex-dev
Version:
CoreUI Components Library for Angular
76 lines (64 loc) • 1.75 kB
text/typescript
import {
AfterContentInit,
ContentChild,
Directive,
ElementRef,
HostBinding,
Input,
OnChanges,
Renderer2, SimpleChanges
} from '@angular/core';
import { PageLinkDirective } from '../page-link/page-link.directive';
export class PageItemDirective implements AfterContentInit, OnChanges {
/**
* Toggle the active state for the component.
* @type boolean
*/
active?: boolean;
/**
* Toggle the disabled state for the component.
* @type boolean
*/
disabled?: boolean;
get ariaCurrent(): string | null {
return this.active ? 'page' : null;
}
get hostClasses(): any {
return {
'page-item': true,
disabled: this.disabled,
active: this.active,
};
}
pageLinkElementRef!: ElementRef;
constructor(
private renderer: Renderer2
) { }
ngAfterContentInit(): void {
this.setAttributes();
}
ngOnChanges(changes: SimpleChanges): void {
if (changes['disabled']) {
this.setAttributes();
}
}
setAttributes(): void {
if (!this.pageLinkElementRef) {
return
}
const pageLinkElement = this.pageLinkElementRef.nativeElement;
if (this.disabled) {
this.renderer.setAttribute(pageLinkElement, 'aria-disabled', 'true');
this.renderer.setAttribute(pageLinkElement, 'tabindex', '-1');
} else {
this.renderer.removeAttribute(pageLinkElement, 'aria-disabled');
this.renderer.removeAttribute(pageLinkElement, 'tabindex');
}
}
}