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;
|
||||
}
|
||||
|
||||
#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;
|
||||
height: 40px;
|
||||
background-color: var(--ov-secondary-color);
|
||||
|
|
|
@ -55,8 +55,10 @@
|
|||
<mat-icon *ngIf="!isFullscreenActive" matTooltip="Fullscreen">fullscreen</mat-icon>
|
||||
</button>
|
||||
|
||||
<!-- Custom toolbar buttons -->
|
||||
<ng-content select="[toolbar-btn]"></ng-content>
|
||||
<!-- External additional buttons -->
|
||||
<ng-container *ngIf="toolbarAdditionalButtonsTemplate">
|
||||
<ng-container *ngTemplateOutlet="toolbarAdditionalButtonsTemplate"></ng-container>
|
||||
</ng-container>
|
||||
|
||||
<!-- Leave session button -->
|
||||
<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 { MenuType } from '../../models/menu.model';
|
||||
import { OpenViduAngularConfigService } from '../../services/config/openvidu-angular.config.service';
|
||||
import { ToolbarAdditionalButtonsDirective } from '../../directives/template/openvidu-angular.directive';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-toolbar',
|
||||
|
@ -35,7 +36,17 @@ import { OpenViduAngularConfigService } from '../../services/config/openvidu-ang
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
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() onCameraButtonClicked = new EventEmitter<any>();
|
||||
@Output() onMicrophoneButtonClicked = new EventEmitter<any>();
|
||||
|
|
|
@ -46,7 +46,13 @@
|
|||
(onFullscreenButtonClicked)="onFullscreenButtonClicked()"
|
||||
(onParticipantsPanelButtonClicked)="onParticipantsPanelButtonClicked()"
|
||||
(onChatPanelButtonClicked)="onChatPanelButtonClicked()"
|
||||
></ov-toolbar>
|
||||
>
|
||||
|
||||
<ng-template #toolbarAdditionalButtons>
|
||||
<ng-container *ngTemplateOutlet="openviduAngularToolbarAdditionalButtonsTemplate"></ng-container>
|
||||
</ng-template>
|
||||
|
||||
</ov-toolbar>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #defaultPanel>
|
||||
|
|
|
@ -6,6 +6,7 @@ import {
|
|||
ParticipantPanelItemDirective,
|
||||
ParticipantsPanelDirective,
|
||||
StreamDirective,
|
||||
ToolbarAdditionalButtonsDirective,
|
||||
ToolbarDirective
|
||||
} from '../../directives/template/openvidu-angular.directive';
|
||||
import { ILogger } from '../../models/logger.model';
|
||||
|
@ -19,6 +20,7 @@ import { LoggerService } from '../../services/logger/logger.service';
|
|||
export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
||||
// *** Toolbar ***
|
||||
@ContentChild(ToolbarDirective) externalToolbar: ToolbarDirective;
|
||||
@ContentChild(ToolbarAdditionalButtonsDirective) externalToolbarAdditionalButtons: ToolbarAdditionalButtonsDirective;
|
||||
|
||||
// *** Panels ***
|
||||
@ContentChild(PanelDirective) externalPanel: PanelDirective;
|
||||
|
@ -39,6 +41,7 @@ export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
|||
@ViewChild('defaultStream', { static: false, read: TemplateRef }) defaultStreamTemplate: TemplateRef<any>;
|
||||
|
||||
openviduAngularToolbarTemplate: TemplateRef<any>;
|
||||
openviduAngularToolbarAdditionalButtonsTemplate: TemplateRef<any>;
|
||||
openviduAngularPanelTemplate: TemplateRef<any>;
|
||||
openviduAngularChatPanelTemplate: TemplateRef<any>;
|
||||
openviduAngularParticipantsPanelTemplate: TemplateRef<any>;
|
||||
|
@ -106,6 +109,10 @@ export class VideoconferenceComponent implements OnInit, AfterViewInit {
|
|||
this.openviduAngularToolbarTemplate = this.externalToolbar.template;
|
||||
this.log.d('Setting EXTERNAL TOOLBAR');
|
||||
} 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.log.d('Setting DEFAULT TOOLBAR');
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import {
|
|||
ParticipantPanelItemDirective,
|
||||
ParticipantsPanelDirective,
|
||||
StreamDirective,
|
||||
ToolbarAdditionalButtonsDirective,
|
||||
ToolbarDirective
|
||||
} from './openvidu-angular.directive';
|
||||
|
||||
|
@ -17,7 +18,8 @@ import {
|
|||
ParticipantPanelItemDirective,
|
||||
ParticipantsPanelDirective,
|
||||
StreamDirective,
|
||||
ToolbarDirective
|
||||
ToolbarDirective,
|
||||
ToolbarAdditionalButtonsDirective
|
||||
],
|
||||
exports: [
|
||||
ChatPanelDirective,
|
||||
|
@ -26,7 +28,8 @@ import {
|
|||
ParticipantPanelItemDirective,
|
||||
ParticipantsPanelDirective,
|
||||
StreamDirective,
|
||||
ToolbarDirective
|
||||
ToolbarDirective,
|
||||
ToolbarAdditionalButtonsDirective
|
||||
]
|
||||
})
|
||||
export class OpenViduAngularDirectiveModule {}
|
||||
|
|
|
@ -7,6 +7,13 @@ export class ToolbarDirective {
|
|||
constructor(public template: TemplateRef<any>, public viewContainer: ViewContainerRef) {}
|
||||
}
|
||||
|
||||
@Directive({
|
||||
selector: '[ovToolbarAdditionalButtons]'
|
||||
})
|
||||
export class ToolbarAdditionalButtonsDirective {
|
||||
constructor(public template: TemplateRef<any>, public viewContainer: ViewContainerRef) {}
|
||||
}
|
||||
|
||||
@Directive({
|
||||
selector: '[ovPanel]'
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue