mirror of https://github.com/OpenVidu/openvidu.git
openvidu-components: Added toolbar additional buttons directive
Allowed added additional buttons in toolbar component without redefine itpull/707/head
parent
e11af2ebd7
commit
115e9131d0
|
@ -18,7 +18,11 @@
|
||||||
max-height: 100% !important;
|
max-height: 100% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#media-buttons-container > *, ::ng-deep #media-buttons-container > * {
|
#media-buttons-container > button,
|
||||||
|
::ng-deep #media-buttons-container > button,
|
||||||
|
#media-buttons-container:not(#media-buttons-container > button) button,
|
||||||
|
/* Applying css for external additional buttons*/
|
||||||
|
::ng-deep #media-buttons-container:not(#media-buttons-container > button) button {
|
||||||
width: 40px;
|
width: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
background-color: var(--ov-secondary-color);
|
background-color: var(--ov-secondary-color);
|
||||||
|
|
|
@ -55,8 +55,10 @@
|
||||||
<mat-icon *ngIf="!isFullscreenActive" matTooltip="Fullscreen">fullscreen</mat-icon>
|
<mat-icon *ngIf="!isFullscreenActive" matTooltip="Fullscreen">fullscreen</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- Custom toolbar buttons -->
|
<!-- External additional buttons -->
|
||||||
<ng-content select="[toolbar-btn]"></ng-content>
|
<ng-container *ngIf="toolbarAdditionalButtonsTemplate">
|
||||||
|
<ng-container *ngTemplateOutlet="toolbarAdditionalButtonsTemplate"></ng-container>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
<!-- Leave session button -->
|
<!-- Leave session button -->
|
||||||
<button mat-icon-button *ngIf="showLeaveButton" (click)="leaveSession()" id="leave-btn">
|
<button mat-icon-button *ngIf="showLeaveButton" (click)="leaveSession()" id="leave-btn">
|
||||||
|
|
|
@ -27,6 +27,7 @@ import { ChatMessage } from '../../models/chat.model';
|
||||||
import { ParticipantService } from '../../services/participant/participant.service';
|
import { ParticipantService } from '../../services/participant/participant.service';
|
||||||
import { MenuType } from '../../models/menu.model';
|
import { MenuType } from '../../models/menu.model';
|
||||||
import { OpenViduAngularConfigService } from '../../services/config/openvidu-angular.config.service';
|
import { OpenViduAngularConfigService } from '../../services/config/openvidu-angular.config.service';
|
||||||
|
import { ToolbarAdditionalButtonsDirective } from '../../directives/template/openvidu-angular.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ov-toolbar',
|
selector: 'ov-toolbar',
|
||||||
|
@ -35,7 +36,17 @@ import { OpenViduAngularConfigService } from '../../services/config/openvidu-ang
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
})
|
})
|
||||||
export class ToolbarComponent implements OnInit, OnDestroy {
|
export class ToolbarComponent implements OnInit, OnDestroy {
|
||||||
@ContentChild('centeredButtons', { read: TemplateRef }) centeredButtonsTemplate: TemplateRef<any>;
|
@ContentChild('toolbarAdditionalButtons', { read: TemplateRef }) toolbarAdditionalButtonsTemplate: TemplateRef<any>;
|
||||||
|
|
||||||
|
@ContentChild(ToolbarAdditionalButtonsDirective)
|
||||||
|
set externalAdditionalButtons(externalAdditionalButtons: ToolbarAdditionalButtonsDirective) {
|
||||||
|
// This directive will has value only when ADDITIONAL BUTTONS component tagget with '*ovToolbarAdditionalButtons' directive
|
||||||
|
// is inside of the TOOLBAR component tagged with '*ovToolbar' directive
|
||||||
|
if (externalAdditionalButtons) {
|
||||||
|
this.toolbarAdditionalButtonsTemplate = externalAdditionalButtons.template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Output() onLeaveButtonClicked = new EventEmitter<any>();
|
@Output() onLeaveButtonClicked = new EventEmitter<any>();
|
||||||
@Output() onCameraButtonClicked = new EventEmitter<any>();
|
@Output() onCameraButtonClicked = new EventEmitter<any>();
|
||||||
@Output() onMicrophoneButtonClicked = new EventEmitter<any>();
|
@Output() onMicrophoneButtonClicked = new EventEmitter<any>();
|
||||||
|
|
|
@ -46,7 +46,13 @@
|
||||||
(onFullscreenButtonClicked)="onFullscreenButtonClicked()"
|
(onFullscreenButtonClicked)="onFullscreenButtonClicked()"
|
||||||
(onParticipantsPanelButtonClicked)="onParticipantsPanelButtonClicked()"
|
(onParticipantsPanelButtonClicked)="onParticipantsPanelButtonClicked()"
|
||||||
(onChatPanelButtonClicked)="onChatPanelButtonClicked()"
|
(onChatPanelButtonClicked)="onChatPanelButtonClicked()"
|
||||||
></ov-toolbar>
|
>
|
||||||
|
|
||||||
|
<ng-template #toolbarAdditionalButtons>
|
||||||
|
<ng-container *ngTemplateOutlet="openviduAngularToolbarAdditionalButtonsTemplate"></ng-container>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
</ov-toolbar>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ng-template #defaultPanel>
|
<ng-template #defaultPanel>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import {
|
||||||
ParticipantPanelItemDirective,
|
ParticipantPanelItemDirective,
|
||||||
ParticipantsPanelDirective,
|
ParticipantsPanelDirective,
|
||||||
StreamDirective,
|
StreamDirective,
|
||||||
|
ToolbarAdditionalButtonsDirective,
|
||||||
ToolbarDirective
|
ToolbarDirective
|
||||||
} from '../../directives/template/openvidu-angular.directive';
|
} from '../../directives/template/openvidu-angular.directive';
|
||||||
import { ILogger } from '../../models/logger.model';
|
import { ILogger } from '../../models/logger.model';
|
||||||
|
@ -19,6 +20,7 @@ import { LoggerService } from '../../services/logger/logger.service';
|
||||||
export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
||||||
// *** Toolbar ***
|
// *** Toolbar ***
|
||||||
@ContentChild(ToolbarDirective) externalToolbar: ToolbarDirective;
|
@ContentChild(ToolbarDirective) externalToolbar: ToolbarDirective;
|
||||||
|
@ContentChild(ToolbarAdditionalButtonsDirective) externalToolbarAdditionalButtons: ToolbarAdditionalButtonsDirective;
|
||||||
|
|
||||||
// *** Panels ***
|
// *** Panels ***
|
||||||
@ContentChild(PanelDirective) externalPanel: PanelDirective;
|
@ContentChild(PanelDirective) externalPanel: PanelDirective;
|
||||||
|
@ -39,6 +41,7 @@ export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
||||||
@ViewChild('defaultStream', { static: false, read: TemplateRef }) defaultStreamTemplate: TemplateRef<any>;
|
@ViewChild('defaultStream', { static: false, read: TemplateRef }) defaultStreamTemplate: TemplateRef<any>;
|
||||||
|
|
||||||
openviduAngularToolbarTemplate: TemplateRef<any>;
|
openviduAngularToolbarTemplate: TemplateRef<any>;
|
||||||
|
openviduAngularToolbarAdditionalButtonsTemplate: TemplateRef<any>;
|
||||||
openviduAngularPanelTemplate: TemplateRef<any>;
|
openviduAngularPanelTemplate: TemplateRef<any>;
|
||||||
openviduAngularChatPanelTemplate: TemplateRef<any>;
|
openviduAngularChatPanelTemplate: TemplateRef<any>;
|
||||||
openviduAngularParticipantsPanelTemplate: TemplateRef<any>;
|
openviduAngularParticipantsPanelTemplate: TemplateRef<any>;
|
||||||
|
@ -106,6 +109,10 @@ export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
||||||
this.openviduAngularToolbarTemplate = this.externalToolbar.template;
|
this.openviduAngularToolbarTemplate = this.externalToolbar.template;
|
||||||
this.log.d('Setting EXTERNAL TOOLBAR');
|
this.log.d('Setting EXTERNAL TOOLBAR');
|
||||||
} else {
|
} else {
|
||||||
|
if (this.externalToolbarAdditionalButtons) {
|
||||||
|
this.log.d('Setting EXTERNAL TOOLBAR ADDITIONAL BUTTONS', this.externalToolbarAdditionalButtons.template);
|
||||||
|
this.openviduAngularToolbarAdditionalButtonsTemplate = this.externalToolbarAdditionalButtons.template;
|
||||||
|
}
|
||||||
this.openviduAngularToolbarTemplate = this.defaultToolbarTemplate;
|
this.openviduAngularToolbarTemplate = this.defaultToolbarTemplate;
|
||||||
this.log.d('Setting DEFAULT TOOLBAR');
|
this.log.d('Setting DEFAULT TOOLBAR');
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import {
|
||||||
ParticipantPanelItemDirective,
|
ParticipantPanelItemDirective,
|
||||||
ParticipantsPanelDirective,
|
ParticipantsPanelDirective,
|
||||||
StreamDirective,
|
StreamDirective,
|
||||||
|
ToolbarAdditionalButtonsDirective,
|
||||||
ToolbarDirective
|
ToolbarDirective
|
||||||
} from './openvidu-angular.directive';
|
} from './openvidu-angular.directive';
|
||||||
|
|
||||||
|
@ -17,7 +18,8 @@ import {
|
||||||
ParticipantPanelItemDirective,
|
ParticipantPanelItemDirective,
|
||||||
ParticipantsPanelDirective,
|
ParticipantsPanelDirective,
|
||||||
StreamDirective,
|
StreamDirective,
|
||||||
ToolbarDirective
|
ToolbarDirective,
|
||||||
|
ToolbarAdditionalButtonsDirective
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
ChatPanelDirective,
|
ChatPanelDirective,
|
||||||
|
@ -26,7 +28,8 @@ import {
|
||||||
ParticipantPanelItemDirective,
|
ParticipantPanelItemDirective,
|
||||||
ParticipantsPanelDirective,
|
ParticipantsPanelDirective,
|
||||||
StreamDirective,
|
StreamDirective,
|
||||||
ToolbarDirective
|
ToolbarDirective,
|
||||||
|
ToolbarAdditionalButtonsDirective
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class OpenViduAngularDirectiveModule {}
|
export class OpenViduAngularDirectiveModule {}
|
||||||
|
|
|
@ -7,6 +7,13 @@ export class ToolbarDirective {
|
||||||
constructor(public template: TemplateRef<any>, public viewContainer: ViewContainerRef) {}
|
constructor(public template: TemplateRef<any>, public viewContainer: ViewContainerRef) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Directive({
|
||||||
|
selector: '[ovToolbarAdditionalButtons]'
|
||||||
|
})
|
||||||
|
export class ToolbarAdditionalButtonsDirective {
|
||||||
|
constructor(public template: TemplateRef<any>, public viewContainer: ViewContainerRef) {}
|
||||||
|
}
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[ovPanel]'
|
selector: '[ovPanel]'
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue