projects/rebirth-ng/src/lib/panel/panel.component.ts
exportAs | panel |
selector | re-panel,re-accordion-item |
templateUrl | ./panel.component.html |
Properties |
Methods |
Inputs |
Outputs |
constructor(panelGroup: PanelGroup, rebirthNGConfig: RebirthNGConfig)
|
|||||||||
Parameters :
|
closable
|
Type: |
collapsable
|
Type: |
cssClass
|
Type: |
id
|
|
isCollapsed
|
Default value: |
type
|
Type:
Default value: |
close
|
$event type: EventEmitter
|
collapse
|
$event type: EventEmitter
|
ngOnDestroy |
ngOnDestroy()
|
Returns :
void
|
ngOnInit |
ngOnInit()
|
Returns :
void
|
onClose | ||||||
onClose($event: Event)
|
||||||
Parameters :
Returns :
void
|
onCollapse |
onCollapse()
|
Returns :
void
|
panelBody |
panelBody:
|
Decorators : ContentChild
|
panelFooter |
panelFooter:
|
Decorators : ContentChild
|
panelHeader |
panelHeader:
|
Decorators : ContentChild
|
import { Component, Input, Output, EventEmitter, Optional, OnInit, Host, OnDestroy, ContentChild } from '@angular/core';
import { PanelGroup } from './panel-group.model';
import { RebirthNGConfig } from '../rebirth-ng.config';
import { stopPropagationIfExist } from '../utils/dom-utils';
import { PanelHeaderComponent } from './panel-header.component';
import { PanelBodyComponent } from './panel-body.component';
import { PanelFooterComponent } from './panel-footer.component';
@Component({
selector: 're-panel,re-accordion-item',
templateUrl: './panel.component.html',
exportAs: 'panel'
})
export class PanelComponent implements OnInit, OnDestroy {
@Input() id;
@Input() type: 'default' | 'primary' | 'success' | 'info' | 'warning' | 'danger' = 'default';
@Input() closable: boolean;
@Input() collapsable: boolean;
@Input() isCollapsed = false;
@Input() cssClass: string;
@Output() close = new EventEmitter<PanelComponent>();
@Output() collapse = new EventEmitter<boolean>();
@ContentChild(PanelHeaderComponent) panelHeader;
@ContentChild(PanelBodyComponent) panelBody;
@ContentChild(PanelFooterComponent) panelFooter;
constructor(@Optional() @Host() private panelGroup: PanelGroup, rebirthNGConfig: RebirthNGConfig) {
this.type = <any>rebirthNGConfig.panel.type;
this.closable = rebirthNGConfig.panel.closable;
this.collapsable = rebirthNGConfig.panel.collapsable;
}
ngOnInit(): void {
if (this.panelGroup) {
this.panelGroup.$addItem(this);
}
}
onClose($event: Event) {
stopPropagationIfExist($event);
this.close.emit(this);
}
onCollapse() {
if (this.collapsable) {
this.isCollapsed = !this.isCollapsed;
this.collapse.emit(this.isCollapsed);
}
}
ngOnDestroy(): void {
if (this.panelGroup) {
this.panelGroup.$removeItem(this);
}
}
}
<div class="panel panel-{{type}} {{cssClass}}" [ngClass]="{'panel-open': !isCollapsed}">
<div class="panel-heading" (click)="onCollapse()" [ngStyle]="{cursor: collapsable ? 'pointer' :'inherit'}"
*ngIf="panelHeader">
<button type="button" class="close" *ngIf="closable" aria-label="Close" (click)="onClose($event)">
<span aria-hidden="true">×</span>
</button>
<ng-content select="re-panel-header,re-accordion-header"></ng-content>
</div>
<div class="panel-body collapse" [ngClass]="{in: !isCollapsed}">
<ng-content select="re-panel-body,re-accordion-body"></ng-content>
</div>
<div class="panel-footer" *ngIf="panelFooter">
<ng-content select="re-panel-footer,re-accordion-footer"></ng-content>
</div>
</div>