feat: convert components, directives, and pipes to standalone

- Updated LangSelectorComponent, ParticipantNameInputComponent, ThemeSelectorComponent, VideoDevicesComponent, StreamComponent, ToolbarMediaButtonsComponent, ToolbarPanelButtonsComponent, ToolbarComponent, VideoPosterComponent, VideoconferenceComponent to be standalone components.
- Converted directives (ActivitiesPanelRecordingActivityDirective, AdminDashboardRecordingsListDirective, etc.) to standalone.
- Updated pipes (LinkifyPipe, RemoteParticipantTracksPipe, DurationFromSecondsPipe, etc.) to standalone.
- Adjusted imports in OpenViduComponentsAngularUiModule to include necessary modules for standalone components.
ov-components_modernization
Carlos Santos 2025-12-11 15:00:42 +01:00
parent d9ebae88fa
commit 264db1facc
48 changed files with 334 additions and 123 deletions

View File

@ -1,4 +1,9 @@
import { Component, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core'; import { Component, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { SearchByStringPropertyPipe } from '../../pipes/recording.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { RecordingDeleteRequestedEvent, RecordingInfo, RecordingStatus } from '../../models/recording.model'; import { RecordingDeleteRequestedEvent, RecordingInfo, RecordingStatus } from '../../models/recording.model';
import { ActionService } from '../../services/action/action.service'; import { ActionService } from '../../services/action/action.service';
@ -9,7 +14,14 @@ import { RecordingService } from '../../services/recording/recording.service';
selector: 'ov-admin-dashboard', selector: 'ov-admin-dashboard',
templateUrl: './admin-dashboard.component.html', templateUrl: './admin-dashboard.component.html',
styleUrls: ['./admin-dashboard.component.scss'], styleUrls: ['./admin-dashboard.component.scss'],
standalone: false standalone: true,
imports: [
CommonModule,
FormsModule,
AppMaterialModule,
TranslatePipe,
SearchByStringPropertyPipe
]
}) })
export class AdminDashboardComponent implements OnInit, OnDestroy { export class AdminDashboardComponent implements OnInit, OnDestroy {
/** /**

View File

@ -1,5 +1,8 @@
import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { Validators, FormGroup, FormBuilder } from '@angular/forms'; import { CommonModule } from '@angular/common';
import { ReactiveFormsModule, Validators, FormGroup, FormBuilder } from '@angular/forms';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { ActionService } from '../../services/action/action.service'; import { ActionService } from '../../services/action/action.service';
import { OpenViduComponentsConfigService } from '../../services/config/directive-config.service'; import { OpenViduComponentsConfigService } from '../../services/config/directive-config.service';
@ -8,7 +11,8 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
selector: 'ov-admin-login', selector: 'ov-admin-login',
templateUrl: './admin-login.component.html', templateUrl: './admin-login.component.html',
styleUrls: ['./admin-login.component.scss'], styleUrls: ['./admin-login.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, ReactiveFormsModule, AppMaterialModule, TranslatePipe]
}) })
export class AdminLoginComponent implements OnInit { export class AdminLoginComponent implements OnInit {
/** /**

View File

@ -13,6 +13,6 @@ import { Component } from '@angular/core';
</div> </div>
`, `,
styleUrls: ['./audio-wave.component.scss'], styleUrls: ['./audio-wave.component.scss'],
standalone: false standalone: true
}) })
export class AudioWaveComponent {} export class AudioWaveComponent {}

View File

@ -1,4 +1,7 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { MatDialogRef } from '@angular/material/dialog'; import { MatDialogRef } from '@angular/material/dialog';
/** /**
@ -37,7 +40,8 @@ import { MatDialogRef } from '@angular/material/dialog';
} }
` `
], ],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class DeleteDialogComponent { export class DeleteDialogComponent {
constructor(public dialogRef: MatDialogRef<DeleteDialogComponent>) {} constructor(public dialogRef: MatDialogRef<DeleteDialogComponent>) {}

View File

@ -1,4 +1,7 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { DialogData } from '../../models/dialog.model'; import { DialogData } from '../../models/dialog.model';
@ -34,7 +37,7 @@ import { DialogData } from '../../models/dialog.model';
} }
` `
], ],
standalone: false standalone: true
}) })
export class DialogTemplateComponent { export class DialogTemplateComponent {
constructor( constructor(

View File

@ -1,4 +1,7 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { DialogData } from '../../models/dialog.model'; import { DialogData } from '../../models/dialog.model';
@ -20,7 +23,8 @@ import { DialogData } from '../../models/dialog.model';
<button mat-button (click)="close()">{{'PANEL.CLOSE' | translate}}</button> <button mat-button (click)="close()">{{'PANEL.CLOSE' | translate}}</button>
</div> </div>
`, `,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class ProFeatureDialogTemplateComponent { export class ProFeatureDialogTemplateComponent {
constructor(public dialogRef: MatDialogRef<ProFeatureDialogTemplateComponent>, @Inject(MAT_DIALOG_DATA) public data: DialogData) {} constructor(public dialogRef: MatDialogRef<ProFeatureDialogTemplateComponent>, @Inject(MAT_DIALOG_DATA) public data: DialogData) {}

View File

@ -1,4 +1,7 @@
import { Component, ElementRef, Inject, ViewChild } from '@angular/core'; import { Component, ElementRef, Inject, ViewChild } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { RecordingDialogData } from '../../models/dialog.model'; import { RecordingDialogData } from '../../models/dialog.model';
@ -39,10 +42,11 @@ import { RecordingDialogData } from '../../models/dialog.model';
} }
` `
], ],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class RecordingDialogComponent { export class RecordingDialogComponent {
@ViewChild('videoElement', { static: true }) videoElement: ElementRef<HTMLVideoElement>; @ViewChild('videoElement', { static: true }) videoElement!: ElementRef<HTMLVideoElement>;
src: string; src: string;

View File

@ -1,5 +1,8 @@
import { animate, style, transition, trigger } from '@angular/animations'; import { animate, style, transition, trigger } from '@angular/animations';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
/** /**
* Component to display a landscape orientation warning on mobile devices. * Component to display a landscape orientation warning on mobile devices.
@ -9,7 +12,8 @@ import { Component } from '@angular/core';
selector: 'ov-landscape-warning', selector: 'ov-landscape-warning',
templateUrl: './landscape-warning.component.html', templateUrl: './landscape-warning.component.html',
styleUrl: './landscape-warning.component.scss', styleUrl: './landscape-warning.component.scss',
standalone: false, standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe],
animations: [ animations: [
trigger('inOutAnimation', [ trigger('inOutAnimation', [
transition(':enter', [style({ opacity: 0 }), animate('200ms', style({ opacity: 1 }))]), transition(':enter', [style({ opacity: 0 }), animate('200ms', style({ opacity: 1 }))]),

View File

@ -13,6 +13,9 @@ import {
ViewChild, ViewChild,
ViewContainerRef ViewContainerRef
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { RemoteParticipantTracksPipe } from '../../pipes/participant.pipe';
import { combineLatest, map, Subject, takeUntil } from 'rxjs'; import { combineLatest, map, Subject, takeUntil } from 'rxjs';
import { StreamDirective } from '../../directives/template/openvidu-components-angular.directive'; import { StreamDirective } from '../../directives/template/openvidu-components-angular.directive';
import { ParticipantTrackPublication, ParticipantModel } from '../../models/participant.model'; import { ParticipantTrackPublication, ParticipantModel } from '../../models/participant.model';
@ -34,7 +37,8 @@ import { LayoutTemplateConfiguration, TemplateManagerService } from '../../servi
templateUrl: './layout.component.html', templateUrl: './layout.component.html',
styleUrls: ['./layout.component.scss'], styleUrls: ['./layout.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, DragDropModule, RemoteParticipantTracksPipe]
}) })
export class LayoutComponent implements OnInit, OnDestroy, AfterViewInit { export class LayoutComponent implements OnInit, OnDestroy, AfterViewInit {
/** /**

View File

@ -1,5 +1,7 @@
import { animate, style, transition, trigger } from '@angular/animations'; import { animate, style, transition, trigger } from '@angular/animations';
import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core'; import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';
import { CommonModule } from '@angular/common';
import { VideoPosterComponent } from '../video-poster/video-poster.component';
import { Track } from 'livekit-client'; import { Track } from 'livekit-client';
/** /**
@ -25,7 +27,8 @@ import { Track } from 'livekit-client';
transition(':leave', [style({ opacity: 1 }), animate('200ms', style({ opacity: 0 }))]) transition(':leave', [style({ opacity: 1 }), animate('200ms', style({ opacity: 0 }))])
]) ])
], ],
standalone: false standalone: true,
imports: [CommonModule, VideoPosterComponent]
}) })
export class MediaElementComponent implements AfterViewInit, OnDestroy { export class MediaElementComponent implements AfterViewInit, OnDestroy {
_track: Track; _track: Track;

View File

@ -1,4 +1,9 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { RecordingActivityComponent } from './recording-activity/recording-activity.component';
import { BroadcastingActivityComponent } from './broadcasting-activity/broadcasting-activity.component';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { PanelStatusInfo, PanelType } from '../../../models/panel.model'; import { PanelStatusInfo, PanelType } from '../../../models/panel.model';
import { OpenViduComponentsConfigService } from '../../../services/config/directive-config.service'; import { OpenViduComponentsConfigService } from '../../../services/config/directive-config.service';
@ -21,7 +26,8 @@ import { BroadcastingStartRequestedEvent, BroadcastingStopRequestedEvent } from
templateUrl: './activities-panel.component.html', templateUrl: './activities-panel.component.html',
styleUrls: ['../panel.component.scss', './activities-panel.component.scss'], styleUrls: ['../panel.component.scss', './activities-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe, RecordingActivityComponent, BroadcastingActivityComponent]
}) })
export class ActivitiesPanelComponent implements OnInit { export class ActivitiesPanelComponent implements OnInit {
/** /**

View File

@ -1,4 +1,8 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppMaterialModule } from '../../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../../pipes/translate.pipe';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { import {
BroadcastingStartRequestedEvent, BroadcastingStartRequestedEvent,
@ -19,7 +23,8 @@ import { OpenViduService } from '../../../../services/openvidu/openvidu.service'
templateUrl: './broadcasting-activity.component.html', templateUrl: './broadcasting-activity.component.html',
styleUrls: ['./broadcasting-activity.component.scss', '../activities-panel.component.scss'], styleUrls: ['./broadcasting-activity.component.scss', '../activities-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, FormsModule, AppMaterialModule, TranslatePipe]
}) })
// TODO: Allow to add more than one broadcast url // TODO: Allow to add more than one broadcast url

View File

@ -1,4 +1,8 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, OnDestroy, Output } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, OnDestroy, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppMaterialModule } from '../../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../../pipes/translate.pipe';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { import {
RecordingDeleteRequestedEvent, RecordingDeleteRequestedEvent,
@ -26,7 +30,13 @@ import { OpenViduComponentsConfigService } from '../../../../services/config/dir
templateUrl: './recording-activity.component.html', templateUrl: './recording-activity.component.html',
styleUrls: ['./recording-activity.component.scss', '../activities-panel.component.scss'], styleUrls: ['./recording-activity.component.scss', '../activities-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [
CommonModule,
FormsModule,
AppMaterialModule,
TranslatePipe
]
}) })
// TODO: Allow to add more than one recording type // TODO: Allow to add more than one recording type

View File

@ -1,4 +1,7 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { BackgroundEffect, EffectType } from '../../../models/background-effect.model'; import { BackgroundEffect, EffectType } from '../../../models/background-effect.model';
import { PanelType } from '../../../models/panel.model'; import { PanelType } from '../../../models/panel.model';
@ -13,7 +16,8 @@ import { VirtualBackgroundService } from '../../../services/virtual-background/v
templateUrl: './background-effects-panel.component.html', templateUrl: './background-effects-panel.component.html',
styleUrls: ['../panel.component.scss', './background-effects-panel.component.scss'], styleUrls: ['../panel.component.scss', './background-effects-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class BackgroundEffectsPanelComponent implements OnInit { export class BackgroundEffectsPanelComponent implements OnInit {
@Input() mode: 'prejoin' | 'meeting' = 'meeting'; @Input() mode: 'prejoin' | 'meeting' = 'meeting';

View File

@ -1,4 +1,9 @@
import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { LinkifyPipe } from '../../../pipes/linkify.pipe';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { ChatMessage } from '../../../models/chat.model'; import { ChatMessage } from '../../../models/chat.model';
import { PanelType } from '../../../models/panel.model'; import { PanelType } from '../../../models/panel.model';
@ -14,7 +19,8 @@ import { PanelService } from '../../../services/panel/panel.service';
templateUrl: './chat-panel.component.html', templateUrl: './chat-panel.component.html',
styleUrls: ['../panel.component.scss', './chat-panel.component.scss'], styleUrls: ['../panel.component.scss', './chat-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, FormsModule, AppMaterialModule, TranslatePipe, LinkifyPipe]
}) })
export class ChatPanelComponent implements OnInit, AfterViewInit { export class ChatPanelComponent implements OnInit, AfterViewInit {
/** /**

View File

@ -8,6 +8,7 @@ import {
Output, Output,
TemplateRef TemplateRef
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common';
import { skip, Subject, takeUntil } from 'rxjs'; import { skip, Subject, takeUntil } from 'rxjs';
import { import {
ActivitiesPanelDirective, ActivitiesPanelDirective,
@ -39,7 +40,8 @@ import { TemplateManagerService, PanelTemplateConfiguration } from '../../servic
templateUrl: './panel.component.html', templateUrl: './panel.component.html',
styleUrls: ['./panel.component.scss'], styleUrls: ['./panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule]
}) })
export class PanelComponent implements OnInit { export class PanelComponent implements OnInit {
/** /**

View File

@ -1,4 +1,8 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../../pipes/translate.pipe';
import { TrackPublishedTypesPipe } from '../../../../pipes/participant.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { ParticipantPanelItemElementsDirective } from '../../../../directives/template/openvidu-components-angular.directive'; import { ParticipantPanelItemElementsDirective } from '../../../../directives/template/openvidu-components-angular.directive';
import { ParticipantPanelParticipantBadgeDirective } from '../../../../directives/template/internals.directive'; import { ParticipantPanelParticipantBadgeDirective } from '../../../../directives/template/internals.directive';
@ -17,7 +21,8 @@ import { TemplateManagerService, ParticipantPanelItemTemplateConfiguration } fro
templateUrl: './participant-panel-item.component.html', templateUrl: './participant-panel-item.component.html',
styleUrls: ['./participant-panel-item.component.scss'], styleUrls: ['./participant-panel-item.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe, TrackPublishedTypesPipe]
}) })
export class ParticipantPanelItemComponent implements OnInit, OnDestroy { export class ParticipantPanelItemComponent implements OnInit, OnDestroy {
/** /**

View File

@ -9,6 +9,10 @@ import {
TemplateRef, TemplateRef,
ViewChild ViewChild
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../../pipes/translate.pipe';
import { ParticipantPanelItemComponent } from '../participant-panel-item/participant-panel-item.component';
// import { ParticipantModel } from '../../../../models/participant.model'; // import { ParticipantModel } from '../../../../models/participant.model';
import { ParticipantService } from '../../../../services/participant/participant.service'; import { ParticipantService } from '../../../../services/participant/participant.service';
import { PanelService } from '../../../../services/panel/panel.service'; import { PanelService } from '../../../../services/panel/panel.service';
@ -28,7 +32,8 @@ import { OpenViduComponentsConfigService } from '../../../../services/config/dir
templateUrl: './participants-panel.component.html', templateUrl: './participants-panel.component.html',
styleUrls: ['../../panel.component.scss', './participants-panel.component.scss'], styleUrls: ['../../panel.component.scss', './participants-panel.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe, ParticipantPanelItemComponent]
}) })
export class ParticipantsPanelComponent implements OnInit, OnDestroy, AfterViewInit { export class ParticipantsPanelComponent implements OnInit, OnDestroy, AfterViewInit {
/** /**

View File

@ -1,4 +1,12 @@
import { Component, ContentChild, EventEmitter, OnInit, Output, TemplateRef } from '@angular/core'; import { Component, ContentChild, EventEmitter, OnInit, Output, TemplateRef } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { ParticipantNameInputComponent } from '../../settings/participant-name-input/participant-name-input.component';
import { LangSelectorComponent } from '../../settings/lang-selector/lang-selector.component';
import { ThemeSelectorComponent } from '../../settings/theme-selector/theme-selector.component';
import { VideoDevicesComponent } from '../../settings/video-devices/video-devices.component';
import { AudioDevicesComponent } from '../../settings/audio-devices/audio-devices.component';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { PanelStatusInfo, PanelSettingsOptions, PanelType } from '../../../models/panel.model'; import { PanelStatusInfo, PanelSettingsOptions, PanelType } from '../../../models/panel.model';
import { OpenViduComponentsConfigService } from '../../../services/config/directive-config.service'; import { OpenViduComponentsConfigService } from '../../../services/config/directive-config.service';
@ -16,7 +24,17 @@ import { SettingsPanelGeneralAdditionalElementsDirective } from '../../../direct
selector: 'ov-settings-panel', selector: 'ov-settings-panel',
templateUrl: './settings-panel.component.html', templateUrl: './settings-panel.component.html',
styleUrls: ['../panel.component.scss', './settings-panel.component.scss'], styleUrls: ['../panel.component.scss', './settings-panel.component.scss'],
standalone: false standalone: true,
imports: [
CommonModule,
AppMaterialModule,
TranslatePipe,
ParticipantNameInputComponent,
LangSelectorComponent,
ThemeSelectorComponent,
VideoDevicesComponent,
AudioDevicesComponent
]
}) })
export class SettingsPanelComponent implements OnInit { export class SettingsPanelComponent implements OnInit {
@Output() onVideoEnabledChanged = new EventEmitter<boolean>(); @Output() onVideoEnabledChanged = new EventEmitter<boolean>();

View File

@ -9,6 +9,16 @@ import {
OnInit, OnInit,
Output Output
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { LandscapeWarningComponent } from '../landscape-warning/landscape-warning.component';
import { LangSelectorComponent } from '../settings/lang-selector/lang-selector.component';
import { MediaElementComponent } from '../media-element/media-element.component';
import { VideoDevicesComponent } from '../settings/video-devices/video-devices.component';
import { AudioDevicesComponent } from '../settings/audio-devices/audio-devices.component';
import { ParticipantNameInputComponent } from '../settings/participant-name-input/participant-name-input.component';
import { BackgroundEffectsPanelComponent } from '../panel/background-effects-panel/background-effects-panel.component';
import { animate, state, style, transition, trigger } from '@angular/animations'; import { animate, state, style, transition, trigger } from '@angular/animations';
import { filter, Subject, take, takeUntil } from 'rxjs'; import { filter, Subject, take, takeUntil } from 'rxjs';
import { ILogger } from '../../models/logger.model'; import { ILogger } from '../../models/logger.model';
@ -30,7 +40,19 @@ import { LangOption } from '../../models/lang.model';
templateUrl: './pre-join.component.html', templateUrl: './pre-join.component.html',
styleUrls: ['./pre-join.component.scss'], styleUrls: ['./pre-join.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false, standalone: true,
imports: [
CommonModule,
AppMaterialModule,
TranslatePipe,
LandscapeWarningComponent,
LangSelectorComponent,
MediaElementComponent,
VideoDevicesComponent,
AudioDevicesComponent,
ParticipantNameInputComponent,
BackgroundEffectsPanelComponent
],
animations: [ animations: [
trigger('containerResize', [ trigger('containerResize', [
state( state(

View File

@ -12,6 +12,10 @@ import {
TemplateRef, TemplateRef,
ViewChild ViewChild
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { LandscapeWarningComponent } from '../landscape-warning/landscape-warning.component';
import { ILogger } from '../../models/logger.model'; import { ILogger } from '../../models/logger.model';
import { animate, style, transition, trigger } from '@angular/animations'; import { animate, style, transition, trigger } from '@angular/animations';
@ -68,7 +72,8 @@ import { safeJsonParse } from '../../utils/utils';
]) ])
], ],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe, LandscapeWarningComponent]
}) })
export class SessionComponent implements OnInit, OnDestroy { export class SessionComponent implements OnInit, OnDestroy {
@ContentChild('toolbar', { read: TemplateRef }) toolbarTemplate: TemplateRef<any> | undefined; @ContentChild('toolbar', { read: TemplateRef }) toolbarTemplate: TemplateRef<any> | undefined;

View File

@ -1,4 +1,7 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { CustomDevice } from '../../../models/device.model'; import { CustomDevice } from '../../../models/device.model';
import { DeviceService } from '../../../services/device/device.service'; import { DeviceService } from '../../../services/device/device.service';
@ -15,7 +18,8 @@ import { ILogger } from '../../../models/logger.model';
selector: 'ov-audio-devices-select', selector: 'ov-audio-devices-select',
templateUrl: './audio-devices.component.html', templateUrl: './audio-devices.component.html',
styleUrls: ['./audio-devices.component.scss'], styleUrls: ['./audio-devices.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class AudioDevicesComponent implements OnInit, OnDestroy { export class AudioDevicesComponent implements OnInit, OnDestroy {
@Input() compact: boolean = false; @Input() compact: boolean = false;

View File

@ -1,4 +1,6 @@
import { Component, OnInit, Output, ViewChild, EventEmitter, Input, OnDestroy } from '@angular/core'; import { Component, OnInit, Output, ViewChild, EventEmitter, Input, OnDestroy } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { MatMenuTrigger } from '@angular/material/menu'; import { MatMenuTrigger } from '@angular/material/menu';
import { MatSelect } from '@angular/material/select'; import { MatSelect } from '@angular/material/select';
import { StorageService } from '../../../services/storage/storage.service'; import { StorageService } from '../../../services/storage/storage.service';
@ -13,7 +15,8 @@ import { Subscription } from 'rxjs';
selector: 'ov-lang-selector', selector: 'ov-lang-selector',
templateUrl: './lang-selector.component.html', templateUrl: './lang-selector.component.html',
styleUrls: ['./lang-selector.component.scss'], styleUrls: ['./lang-selector.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule]
}) })
export class LangSelectorComponent implements OnInit, OnDestroy { export class LangSelectorComponent implements OnInit, OnDestroy {
/** /**

View File

@ -1,4 +1,8 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { ParticipantService } from '../../../services/participant/participant.service'; import { ParticipantService } from '../../../services/participant/participant.service';
import { StorageService } from '../../../services/storage/storage.service'; import { StorageService } from '../../../services/storage/storage.service';
@ -10,7 +14,8 @@ import { StorageService } from '../../../services/storage/storage.service';
selector: 'ov-participant-name-input', selector: 'ov-participant-name-input',
templateUrl: './participant-name-input.component.html', templateUrl: './participant-name-input.component.html',
styleUrls: ['./participant-name-input.component.scss'], styleUrls: ['./participant-name-input.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, FormsModule, AppMaterialModule, TranslatePipe]
}) })
export class ParticipantNameInputComponent implements OnInit { export class ParticipantNameInputComponent implements OnInit {
name: string; name: string;

View File

@ -1,10 +1,13 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { OpenViduThemeService } from '../../../services/theme/theme.service'; import { OpenViduThemeService } from '../../../services/theme/theme.service';
import { OpenViduThemeMode } from '../../../models/theme.model'; import { OpenViduThemeMode } from '../../../models/theme.model';
@Component({ @Component({
selector: 'ov-theme-selector', selector: 'ov-theme-selector',
standalone: false, standalone: true,
imports: [CommonModule, AppMaterialModule],
template: ` template: `
<div class="theme-selector-container"> <div class="theme-selector-container">
<button <button

View File

@ -1,4 +1,7 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { CustomDevice } from '../../../models/device.model'; import { CustomDevice } from '../../../models/device.model';
import { DeviceService } from '../../../services/device/device.service'; import { DeviceService } from '../../../services/device/device.service';
@ -15,7 +18,8 @@ import { ILogger } from '../../../models/logger.model';
selector: 'ov-video-devices-select', selector: 'ov-video-devices-select',
templateUrl: './video-devices.component.html', templateUrl: './video-devices.component.html',
styleUrls: ['./video-devices.component.scss'], styleUrls: ['./video-devices.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class VideoDevicesComponent implements OnInit, OnDestroy { export class VideoDevicesComponent implements OnInit, OnDestroy {
@Input() compact: boolean = false; @Input() compact: boolean = false;

View File

@ -1,4 +1,8 @@
import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { AudioWaveComponent } from '../audio-wave/audio-wave.component';
import { MediaElementComponent } from '../media-element/media-element.component';
import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu'; import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';
import { Track } from 'livekit-client'; import { Track } from 'livekit-client';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
@ -16,7 +20,8 @@ import { ParticipantService } from '../../services/participant/participant.servi
selector: 'ov-stream', selector: 'ov-stream',
templateUrl: './stream.component.html', templateUrl: './stream.component.html',
styleUrls: ['./stream.component.scss'], styleUrls: ['./stream.component.scss'],
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, AudioWaveComponent, MediaElementComponent]
}) })
export class StreamComponent implements OnInit, OnDestroy { export class StreamComponent implements OnInit, OnDestroy {
/** /**

View File

@ -1,4 +1,7 @@
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, computed, inject } from '@angular/core'; import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, computed, inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { RecordingStatus } from '../../../models/recording.model'; import { RecordingStatus } from '../../../models/recording.model';
import { BroadcastingStatus } from '../../../models/broadcasting.model'; import { BroadcastingStatus } from '../../../models/broadcasting.model';
import { ToolbarAdditionalButtonsPosition } from '../../../models/toolbar.model'; import { ToolbarAdditionalButtonsPosition } from '../../../models/toolbar.model';
@ -12,7 +15,8 @@ import { ToolbarMoreOptionsAdditionalMenuItemsDirective } from '../../../directi
selector: 'ov-toolbar-media-buttons', selector: 'ov-toolbar-media-buttons',
templateUrl: './toolbar-media-buttons.component.html', templateUrl: './toolbar-media-buttons.component.html',
styleUrl: './toolbar-media-buttons.component.scss', styleUrl: './toolbar-media-buttons.component.scss',
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class ToolbarMediaButtonsComponent { export class ToolbarMediaButtonsComponent {
// Camera related inputs // Camera related inputs

View File

@ -1,11 +1,15 @@
import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core'; import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../../pipes/translate.pipe';
import { ViewportService } from '../../../services/viewport/viewport.service'; import { ViewportService } from '../../../services/viewport/viewport.service';
@Component({ @Component({
selector: 'ov-toolbar-panel-buttons', selector: 'ov-toolbar-panel-buttons',
templateUrl: './toolbar-panel-buttons.component.html', templateUrl: './toolbar-panel-buttons.component.html',
styleUrl: './toolbar-panel-buttons.component.scss', styleUrl: './toolbar-panel-buttons.component.scss',
standalone: false standalone: true,
imports: [CommonModule, AppMaterialModule, TranslatePipe]
}) })
export class ToolbarPanelButtonsComponent { export class ToolbarPanelButtonsComponent {
// Inputs from toolbar // Inputs from toolbar

View File

@ -1,3 +1,8 @@
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { ApiDirectiveModule } from '../../directives/api/api.directive.module';
import { ToolbarMediaButtonsComponent } from './toolbar-media-buttons/toolbar-media-buttons.component';
import { ToolbarPanelButtonsComponent } from './toolbar-panel-buttons/toolbar-panel-buttons.component';
import { import {
AfterViewInit, AfterViewInit,
ChangeDetectionStrategy, ChangeDetectionStrategy,
@ -61,7 +66,14 @@ import { LeaveButtonDirective, ToolbarMoreOptionsAdditionalMenuItemsDirective }
templateUrl: './toolbar.component.html', templateUrl: './toolbar.component.html',
styleUrls: ['./toolbar.component.scss'], styleUrls: ['./toolbar.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false standalone: true,
imports: [
CommonModule,
AppMaterialModule,
ApiDirectiveModule,
ToolbarMediaButtonsComponent,
ToolbarPanelButtonsComponent
]
}) })
export class ToolbarComponent implements OnInit, OnDestroy, AfterViewInit { export class ToolbarComponent implements OnInit, OnDestroy, AfterViewInit {
/** /**

View File

@ -1,10 +1,13 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslatePipe } from '../../pipes/translate.pipe';
@Component({ @Component({
selector: 'ov-video-poster', selector: 'ov-video-poster',
templateUrl: './video-poster.component.html', templateUrl: './video-poster.component.html',
styleUrl: './video-poster.component.scss', styleUrl: './video-poster.component.scss',
standalone: false standalone: true,
imports: [CommonModule, TranslatePipe]
}) })
export class VideoPosterComponent { export class VideoPosterComponent {
letter: string = ''; letter: string = '';

View File

@ -1,4 +1,21 @@
import { animate, style, transition, trigger } from '@angular/animations'; import { animate, style, transition, trigger } from '@angular/animations';
import { CommonModule } from '@angular/common';
import { AppMaterialModule } from '../../openvidu-components-angular.material.module';
import { TranslatePipe } from '../../pipes/translate.pipe';
import { PreJoinComponent } from '../pre-join/pre-join.component';
import { SessionComponent } from '../session/session.component';
import { ToolbarComponent } from '../toolbar/toolbar.component';
import { PanelComponent } from '../panel/panel.component';
import { ChatPanelComponent } from '../panel/chat-panel/chat-panel.component';
import { ParticipantsPanelComponent } from '../panel/participants-panel/participants-panel/participants-panel.component';
import { BackgroundEffectsPanelComponent } from '../panel/background-effects-panel/background-effects-panel.component';
import { SettingsPanelComponent } from '../panel/settings-panel/settings-panel.component';
import { ActivitiesPanelComponent } from '../panel/activities-panel/activities-panel.component';
import { ParticipantPanelItemComponent } from '../panel/participants-panel/participant-panel-item/participant-panel-item.component';
import { LayoutComponent } from '../layout/layout.component';
import { StreamComponent } from '../stream/stream.component';
import { ApiDirectiveModule } from '../../directives/api/api.directive.module';
import { OpenViduComponentsDirectiveModule } from '../../directives/template/openvidu-components-angular.directive.module';
import { import {
AfterViewInit, AfterViewInit,
ChangeDetectionStrategy, ChangeDetectionStrategy,
@ -86,7 +103,26 @@ import { E2eeService } from '../../services/e2ee/e2ee.service';
// transition(':leave', [style({ opacity: 1 }), animate('50ms ease-in', style({ opacity: 0.9 }))]) // transition(':leave', [style({ opacity: 1 }), animate('50ms ease-in', style({ opacity: 0.9 }))])
]) ])
], ],
standalone: false standalone: true,
imports: [
CommonModule,
AppMaterialModule,
TranslatePipe,
PreJoinComponent,
SessionComponent,
ToolbarComponent,
PanelComponent,
ChatPanelComponent,
ParticipantsPanelComponent,
BackgroundEffectsPanelComponent,
SettingsPanelComponent,
ActivitiesPanelComponent,
ParticipantPanelItemComponent,
LayoutComponent,
StreamComponent,
ApiDirectiveModule,
OpenViduComponentsDirectiveModule
]
}) })
export class VideoconferenceComponent implements OnDestroy, AfterViewInit { export class VideoconferenceComponent implements OnDestroy, AfterViewInit {
// Constants // Constants

View File

@ -18,7 +18,7 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[activitiesPanelRecordingActivity], ov-activities-panel[recordingActivity]', selector: 'ov-videoconference[activitiesPanelRecordingActivity], ov-activities-panel[recordingActivity]',
standalone: false standalone: true
}) })
export class ActivitiesPanelRecordingActivityDirective implements AfterViewInit, OnDestroy { export class ActivitiesPanelRecordingActivityDirective implements AfterViewInit, OnDestroy {
@Input() set activitiesPanelRecordingActivity(value: boolean) { @Input() set activitiesPanelRecordingActivity(value: boolean) {
@ -70,7 +70,7 @@ export class ActivitiesPanelRecordingActivityDirective implements AfterViewInit,
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[activitiesPanelBroadcastingActivity], ov-activities-panel[broadcastingActivity]', selector: 'ov-videoconference[activitiesPanelBroadcastingActivity], ov-activities-panel[broadcastingActivity]',
standalone: false standalone: true
}) })
export class ActivitiesPanelBroadcastingActivityDirective implements AfterViewInit, OnDestroy { export class ActivitiesPanelBroadcastingActivityDirective implements AfterViewInit, OnDestroy {
@Input() set activitiesPanelBroadcastingActivity(value: boolean) { @Input() set activitiesPanelBroadcastingActivity(value: boolean) {

View File

@ -13,7 +13,7 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
*/ */
@Directive({ @Directive({
selector: 'ov-admin-dashboard[recordingsList]', selector: 'ov-admin-dashboard[recordingsList]',
standalone: false standalone: true
}) })
export class AdminDashboardRecordingsListDirective implements AfterViewInit, OnDestroy { export class AdminDashboardRecordingsListDirective implements AfterViewInit, OnDestroy {
@Input() set recordingsList(value: RecordingInfo[]) { @Input() set recordingsList(value: RecordingInfo[]) {
@ -55,7 +55,7 @@ export class AdminDashboardRecordingsListDirective implements AfterViewInit, OnD
*/ */
@Directive({ @Directive({
selector: 'ov-admin-dashboard[navbarTitle]', selector: 'ov-admin-dashboard[navbarTitle]',
standalone: false standalone: true
}) })
export class AdminDashboardTitleDirective implements AfterViewInit, OnDestroy { export class AdminDashboardTitleDirective implements AfterViewInit, OnDestroy {
@Input() set navbarTitle(value: string) { @Input() set navbarTitle(value: string) {
@ -97,7 +97,7 @@ export class AdminDashboardTitleDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-admin-login[navbarTitle]', selector: 'ov-admin-login[navbarTitle]',
standalone: false standalone: true
}) })
export class AdminLoginTitleDirective implements AfterViewInit, OnDestroy { export class AdminLoginTitleDirective implements AfterViewInit, OnDestroy {
@Input() set navbarTitle(value: any) { @Input() set navbarTitle(value: any) {
@ -139,7 +139,7 @@ export class AdminLoginTitleDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-admin-login[error]', selector: 'ov-admin-login[error]',
standalone: false standalone: true
}) })
export class AdminLoginErrorDirective implements AfterViewInit, OnDestroy { export class AdminLoginErrorDirective implements AfterViewInit, OnDestroy {
@Input() set error(value: any) { @Input() set error(value: any) {

View File

@ -119,7 +119,7 @@ const directives = [
]; ];
@NgModule({ @NgModule({
declarations: [...directives], imports: [...directives],
exports: [...directives] exports: [...directives]
}) })
export class ApiDirectiveModule {} export class ApiDirectiveModule {}

View File

@ -10,7 +10,7 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
*/ */
@Directive({ @Directive({
selector: 'img[ovLogo]', selector: 'img[ovLogo]',
standalone: false standalone: true
}) })
export class FallbackLogoDirective implements OnInit { export class FallbackLogoDirective implements OnInit {
defaultLogo = defaultLogo =
@ -55,7 +55,7 @@ export class FallbackLogoDirective implements OnInit {
*/ */
@Directive({ @Directive({
selector: 'ov-layout[ovRemoteParticipants]', selector: 'ov-layout[ovRemoteParticipants]',
standalone: false standalone: true
}) })
export class LayoutRemoteParticipantsDirective { export class LayoutRemoteParticipantsDirective {
private _ovRemoteParticipants: ParticipantModel[] | undefined; private _ovRemoteParticipants: ParticipantModel[] | undefined;
@ -91,7 +91,7 @@ export class LayoutRemoteParticipantsDirective {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[brandingLogo], ov-toolbar[brandingLogo]', selector: 'ov-videoconference[brandingLogo], ov-toolbar[brandingLogo]',
standalone: false standalone: true
}) })
export class ToolbarBrandingLogoDirective implements AfterViewInit, OnDestroy { export class ToolbarBrandingLogoDirective implements AfterViewInit, OnDestroy {
/** /**
@ -134,7 +134,7 @@ export class ToolbarBrandingLogoDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[prejoinDisplayParticipantName]', selector: 'ov-videoconference[prejoinDisplayParticipantName]',
standalone: false standalone: true
}) })
export class PrejoinDisplayParticipantName implements OnDestroy { export class PrejoinDisplayParticipantName implements OnDestroy {
/** /**
@ -180,7 +180,7 @@ export class PrejoinDisplayParticipantName implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingActivityReadOnly]', selector: 'ov-videoconference[recordingActivityReadOnly]',
standalone: false standalone: true
}) })
export class RecordingActivityReadOnlyDirective implements OnDestroy { export class RecordingActivityReadOnlyDirective implements OnDestroy {
/** /**
@ -236,7 +236,7 @@ export class RecordingActivityReadOnlyDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingActivityShowControls]', selector: 'ov-videoconference[recordingActivityShowControls]',
standalone: false standalone: true
}) })
export class RecordingActivityShowControlsDirective implements OnDestroy { export class RecordingActivityShowControlsDirective implements OnDestroy {
/** /**
@ -296,7 +296,7 @@ export class RecordingActivityShowControlsDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarViewRecordingsButton], ov-toolbar[viewRecordingsButton]', selector: 'ov-videoconference[toolbarViewRecordingsButton], ov-toolbar[viewRecordingsButton]',
standalone: false standalone: true
}) })
export class ToolbarViewRecordingsButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarViewRecordingsButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -355,7 +355,7 @@ export class ToolbarViewRecordingsButtonDirective implements AfterViewInit, OnDe
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingActivityStartStopRecordingButton]', selector: 'ov-videoconference[recordingActivityStartStopRecordingButton]',
standalone: false standalone: true
}) })
export class StartStopRecordingButtonsDirective implements OnDestroy { export class StartStopRecordingButtonsDirective implements OnDestroy {
/** /**
@ -399,7 +399,7 @@ export class StartStopRecordingButtonsDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingActivityViewRecordingsButton]', selector: 'ov-videoconference[recordingActivityViewRecordingsButton]',
standalone: false standalone: true
}) })
export class RecordingActivityViewRecordingsButtonDirective implements AfterViewInit, OnDestroy { export class RecordingActivityViewRecordingsButtonDirective implements AfterViewInit, OnDestroy {
@Input() set recordingActivityViewRecordingsButton(value: boolean) { @Input() set recordingActivityViewRecordingsButton(value: boolean) {
@ -445,7 +445,7 @@ export class RecordingActivityViewRecordingsButtonDirective implements AfterView
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingActivityShowRecordingsList]', selector: 'ov-videoconference[recordingActivityShowRecordingsList]',
standalone: false standalone: true
}) })
export class RecordingActivityShowRecordingsListDirective implements AfterViewInit, OnDestroy { export class RecordingActivityShowRecordingsListDirective implements AfterViewInit, OnDestroy {
@Input() set recordingActivityShowRecordingsList(value: boolean) { @Input() set recordingActivityShowRecordingsList(value: boolean) {
@ -490,7 +490,7 @@ export class RecordingActivityShowRecordingsListDirective implements AfterViewIn
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarRoomName], ov-toolbar[roomName]', selector: 'ov-videoconference[toolbarRoomName], ov-toolbar[roomName]',
standalone: false standalone: true
}) })
export class ToolbarRoomNameDirective implements AfterViewInit, OnDestroy { export class ToolbarRoomNameDirective implements AfterViewInit, OnDestroy {
@Input() set toolbarRoomName(value: string | undefined) { @Input() set toolbarRoomName(value: string | undefined) {
@ -541,7 +541,7 @@ export class ToolbarRoomNameDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[showThemeSelector]', selector: 'ov-videoconference[showThemeSelector]',
standalone: false standalone: true
}) })
export class ShowThemeSelectorDirective implements AfterViewInit, OnDestroy { export class ShowThemeSelectorDirective implements AfterViewInit, OnDestroy {
@Input() set showThemeSelector(value: boolean) { @Input() set showThemeSelector(value: boolean) {
@ -587,7 +587,7 @@ export class ShowThemeSelectorDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[e2eeKey]', selector: 'ov-videoconference[e2eeKey]',
standalone: false standalone: true
}) })
export class E2EEKeyDirective implements AfterViewInit, OnDestroy { export class E2EEKeyDirective implements AfterViewInit, OnDestroy {
@Input() set e2eeKey(value: string | undefined) { @Input() set e2eeKey(value: string | undefined) {

View File

@ -18,7 +18,7 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[participantPanelItemMuteButton], ov-participant-panel-item[muteButton]', selector: 'ov-videoconference[participantPanelItemMuteButton], ov-participant-panel-item[muteButton]',
standalone: false standalone: true
}) })
export class ParticipantPanelItemMuteButtonDirective implements AfterViewInit, OnDestroy { export class ParticipantPanelItemMuteButtonDirective implements AfterViewInit, OnDestroy {
@Input() set participantPanelItemMuteButton(value: boolean) { @Input() set participantPanelItemMuteButton(value: boolean) {

View File

@ -18,7 +18,7 @@ import { OpenViduComponentsConfigService } from '../../services/config/directive
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[streamDisplayParticipantName], ov-stream[displayParticipantName]', selector: 'ov-videoconference[streamDisplayParticipantName], ov-stream[displayParticipantName]',
standalone: false standalone: true
}) })
export class StreamDisplayParticipantNameDirective implements AfterViewInit, OnDestroy { export class StreamDisplayParticipantNameDirective implements AfterViewInit, OnDestroy {
@Input() set streamDisplayParticipantName(value: boolean) { @Input() set streamDisplayParticipantName(value: boolean) {
@ -71,7 +71,7 @@ export class StreamDisplayParticipantNameDirective implements AfterViewInit, OnD
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[streamDisplayAudioDetection], ov-stream[displayAudioDetection]', selector: 'ov-videoconference[streamDisplayAudioDetection], ov-stream[displayAudioDetection]',
standalone: false standalone: true
}) })
export class StreamDisplayAudioDetectionDirective implements AfterViewInit, OnDestroy { export class StreamDisplayAudioDetectionDirective implements AfterViewInit, OnDestroy {
@Input() set streamDisplayAudioDetection(value: boolean) { @Input() set streamDisplayAudioDetection(value: boolean) {
@ -122,7 +122,7 @@ export class StreamDisplayAudioDetectionDirective implements AfterViewInit, OnDe
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[streamVideoControls], ov-stream[videoControls]', selector: 'ov-videoconference[streamVideoControls], ov-stream[videoControls]',
standalone: false standalone: true
}) })
export class StreamVideoControlsDirective implements AfterViewInit, OnDestroy { export class StreamVideoControlsDirective implements AfterViewInit, OnDestroy {
@Input() set streamVideoControls(value: boolean) { @Input() set streamVideoControls(value: boolean) {

View File

@ -19,7 +19,7 @@ import { ToolbarAdditionalButtonsPosition } from '../../models/toolbar.model';
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarCameraButton], ov-toolbar[cameraButton]', selector: 'ov-videoconference[toolbarCameraButton], ov-toolbar[cameraButton]',
standalone: false standalone: true
}) })
export class ToolbarCameraButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarCameraButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -83,7 +83,7 @@ export class ToolbarCameraButtonDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarMicrophoneButton], ov-toolbar[microphoneButton]', selector: 'ov-videoconference[toolbarMicrophoneButton], ov-toolbar[microphoneButton]',
standalone: false standalone: true
}) })
export class ToolbarMicrophoneButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarMicrophoneButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -147,7 +147,7 @@ export class ToolbarMicrophoneButtonDirective implements AfterViewInit, OnDestro
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarScreenshareButton], ov-toolbar[screenshareButton]', selector: 'ov-videoconference[toolbarScreenshareButton], ov-toolbar[screenshareButton]',
standalone: false standalone: true
}) })
export class ToolbarScreenshareButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarScreenshareButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -211,7 +211,7 @@ export class ToolbarScreenshareButtonDirective implements AfterViewInit, OnDestr
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarRecordingButton], ov-toolbar[recordingButton]', selector: 'ov-videoconference[toolbarRecordingButton], ov-toolbar[recordingButton]',
standalone: false standalone: true
}) })
export class ToolbarRecordingButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarRecordingButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -273,7 +273,7 @@ export class ToolbarRecordingButtonDirective implements AfterViewInit, OnDestroy
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarBroadcastingButton], ov-toolbar[broadcastingButton]', selector: 'ov-videoconference[toolbarBroadcastingButton], ov-toolbar[broadcastingButton]',
standalone: false standalone: true
}) })
export class ToolbarBroadcastingButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarBroadcastingButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -334,7 +334,7 @@ export class ToolbarBroadcastingButtonDirective implements AfterViewInit, OnDest
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarFullscreenButton], ov-toolbar[fullscreenButton]', selector: 'ov-videoconference[toolbarFullscreenButton], ov-toolbar[fullscreenButton]',
standalone: false standalone: true
}) })
export class ToolbarFullscreenButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarFullscreenButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -395,7 +395,7 @@ export class ToolbarFullscreenButtonDirective implements AfterViewInit, OnDestro
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarBackgroundEffectsButton], ov-toolbar[backgroundEffectsButton]', selector: 'ov-videoconference[toolbarBackgroundEffectsButton], ov-toolbar[backgroundEffectsButton]',
standalone: false standalone: true
}) })
export class ToolbarBackgroundEffectsButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarBackgroundEffectsButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -515,7 +515,7 @@ export class ToolbarBackgroundEffectsButtonDirective implements AfterViewInit, O
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarSettingsButton], ov-toolbar[settingsButton]', selector: 'ov-videoconference[toolbarSettingsButton], ov-toolbar[settingsButton]',
standalone: false standalone: true
}) })
export class ToolbarSettingsButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarSettingsButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -576,7 +576,7 @@ export class ToolbarSettingsButtonDirective implements AfterViewInit, OnDestroy
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarLeaveButton], ov-toolbar[leaveButton]', selector: 'ov-videoconference[toolbarLeaveButton], ov-toolbar[leaveButton]',
standalone: false standalone: true
}) })
export class ToolbarLeaveButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarLeaveButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -638,7 +638,7 @@ export class ToolbarLeaveButtonDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarParticipantsPanelButton], ov-toolbar[participantsPanelButton]', selector: 'ov-videoconference[toolbarParticipantsPanelButton], ov-toolbar[participantsPanelButton]',
standalone: false standalone: true
}) })
export class ToolbarParticipantsPanelButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarParticipantsPanelButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -701,7 +701,7 @@ export class ToolbarParticipantsPanelButtonDirective implements AfterViewInit, O
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarChatPanelButton], ov-toolbar[chatPanelButton]', selector: 'ov-videoconference[toolbarChatPanelButton], ov-toolbar[chatPanelButton]',
standalone: false standalone: true
}) })
export class ToolbarChatPanelButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarChatPanelButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -762,7 +762,7 @@ export class ToolbarChatPanelButtonDirective implements AfterViewInit, OnDestroy
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarActivitiesPanelButton], ov-toolbar[activitiesPanelButton]', selector: 'ov-videoconference[toolbarActivitiesPanelButton], ov-toolbar[activitiesPanelButton]',
standalone: false standalone: true
}) })
export class ToolbarActivitiesPanelButtonDirective implements AfterViewInit, OnDestroy { export class ToolbarActivitiesPanelButtonDirective implements AfterViewInit, OnDestroy {
/** /**
@ -823,7 +823,7 @@ export class ToolbarActivitiesPanelButtonDirective implements AfterViewInit, OnD
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarDisplayRoomName], ov-toolbar[displayRoomName]', selector: 'ov-videoconference[toolbarDisplayRoomName], ov-toolbar[displayRoomName]',
standalone: false standalone: true
}) })
export class ToolbarDisplayRoomNameDirective implements AfterViewInit, OnDestroy { export class ToolbarDisplayRoomNameDirective implements AfterViewInit, OnDestroy {
/** /**
@ -885,7 +885,7 @@ export class ToolbarDisplayRoomNameDirective implements AfterViewInit, OnDestroy
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[toolbarDisplayLogo], ov-toolbar[displayLogo]', selector: 'ov-videoconference[toolbarDisplayLogo], ov-toolbar[displayLogo]',
standalone: false standalone: true
}) })
export class ToolbarDisplayLogoDirective implements AfterViewInit, OnDestroy { export class ToolbarDisplayLogoDirective implements AfterViewInit, OnDestroy {
/** /**
@ -944,7 +944,7 @@ export class ToolbarDisplayLogoDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: '[ovToolbarAdditionalButtonsPosition]', selector: '[ovToolbarAdditionalButtonsPosition]',
standalone: false standalone: true
}) })
export class ToolbarAdditionalButtonsPossitionDirective implements AfterViewInit, OnDestroy { export class ToolbarAdditionalButtonsPossitionDirective implements AfterViewInit, OnDestroy {
/** /**

View File

@ -19,7 +19,7 @@ import { StorageService } from '../../services/storage/storage.service';
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[livekitUrl]', selector: 'ov-videoconference[livekitUrl]',
standalone: false standalone: true
}) })
export class LivekitUrlDirective implements OnDestroy { export class LivekitUrlDirective implements OnDestroy {
/** /**
@ -72,7 +72,7 @@ export class LivekitUrlDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[token]', selector: 'ov-videoconference[token]',
standalone: false standalone: true
}) })
export class TokenDirective implements OnDestroy { export class TokenDirective implements OnDestroy {
/** /**
@ -124,7 +124,7 @@ export class TokenDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[tokenError]', selector: 'ov-videoconference[tokenError]',
standalone: false standalone: true
}) })
export class TokenErrorDirective implements OnDestroy { export class TokenErrorDirective implements OnDestroy {
/** /**
@ -176,7 +176,7 @@ export class TokenErrorDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[minimal]', selector: 'ov-videoconference[minimal]',
standalone: false standalone: true
}) })
export class MinimalDirective implements OnDestroy { export class MinimalDirective implements OnDestroy {
/** /**
@ -241,7 +241,7 @@ export class MinimalDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[lang]', selector: 'ov-videoconference[lang]',
standalone: false standalone: true
}) })
export class LangDirective implements OnDestroy { export class LangDirective implements OnDestroy {
/** /**
@ -311,7 +311,7 @@ export class LangDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[langOptions]', selector: 'ov-videoconference[langOptions]',
standalone: false standalone: true
}) })
export class LangOptionsDirective implements OnDestroy { export class LangOptionsDirective implements OnDestroy {
/** /**
@ -493,7 +493,7 @@ export class LangOptionsDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[participantName]', selector: 'ov-videoconference[participantName]',
standalone: false standalone: true
}) })
export class ParticipantNameDirective implements AfterViewInit, OnDestroy { export class ParticipantNameDirective implements AfterViewInit, OnDestroy {
/** /**
@ -554,7 +554,7 @@ export class ParticipantNameDirective implements AfterViewInit, OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[prejoin]', selector: 'ov-videoconference[prejoin]',
standalone: false standalone: true
}) })
export class PrejoinDirective implements OnDestroy { export class PrejoinDirective implements OnDestroy {
/** /**
@ -607,7 +607,7 @@ export class PrejoinDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[videoEnabled]', selector: 'ov-videoconference[videoEnabled]',
standalone: false standalone: true
}) })
export class VideoEnabledDirective implements OnDestroy { export class VideoEnabledDirective implements OnDestroy {
/** /**
@ -679,7 +679,7 @@ export class VideoEnabledDirective implements OnDestroy {
@Directive({ @Directive({
selector: 'ov-videoconference[audioEnabled]', selector: 'ov-videoconference[audioEnabled]',
standalone: false standalone: true
}) })
export class AudioEnabledDirective implements OnDestroy { export class AudioEnabledDirective implements OnDestroy {
/** /**
@ -746,7 +746,7 @@ export class AudioEnabledDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[showDisconnectionDialog]', selector: 'ov-videoconference[showDisconnectionDialog]',
standalone: false standalone: true
}) })
export class ShowDisconnectionDialogDirective implements OnDestroy { export class ShowDisconnectionDialogDirective implements OnDestroy {
/** /**
@ -812,7 +812,7 @@ export class ShowDisconnectionDialogDirective implements OnDestroy {
*/ */
@Directive({ @Directive({
selector: 'ov-videoconference[recordingStreamBaseUrl]', selector: 'ov-videoconference[recordingStreamBaseUrl]',
standalone: false standalone: true
}) })
export class RecordingStreamBaseUrlDirective implements AfterViewInit, OnDestroy { export class RecordingStreamBaseUrlDirective implements AfterViewInit, OnDestroy {
/** /**

View File

@ -185,7 +185,7 @@ import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({ @Directive({
selector: '[ovPreJoin]', selector: '[ovPreJoin]',
standalone: false standalone: true
}) })
export class PreJoinDirective { export class PreJoinDirective {
constructor( constructor(
@ -213,7 +213,7 @@ export class PreJoinDirective {
*/ */
@Directive({ @Directive({
selector: '[ovParticipantPanelAfterLocalParticipant]', selector: '[ovParticipantPanelAfterLocalParticipant]',
standalone: false standalone: true
}) })
export class ParticipantPanelAfterLocalParticipantDirective { export class ParticipantPanelAfterLocalParticipantDirective {
constructor( constructor(
@ -239,7 +239,7 @@ export class ParticipantPanelAfterLocalParticipantDirective {
*/ */
@Directive({ @Directive({
selector: '[ovToolbarLeaveButton]', selector: '[ovToolbarLeaveButton]',
standalone: false standalone: true
}) })
export class LeaveButtonDirective { export class LeaveButtonDirective {
constructor( constructor(
@ -267,7 +267,7 @@ export class LeaveButtonDirective {
*/ */
@Directive({ @Directive({
selector: '[ovLayoutAdditionalElements]', selector: '[ovLayoutAdditionalElements]',
standalone: false standalone: true
}) })
export class LayoutAdditionalElementsDirective { export class LayoutAdditionalElementsDirective {
constructor( constructor(
@ -300,7 +300,7 @@ export class LayoutAdditionalElementsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovParticipantPanelParticipantBadge]', selector: '[ovParticipantPanelParticipantBadge]',
standalone: false standalone: true
}) })
export class ParticipantPanelParticipantBadgeDirective { export class ParticipantPanelParticipantBadgeDirective {
constructor( constructor(
@ -335,7 +335,7 @@ export class ParticipantPanelParticipantBadgeDirective {
*/ */
@Directive({ @Directive({
selector: '[ovSettingsPanelGeneralAdditionalElements]', selector: '[ovSettingsPanelGeneralAdditionalElements]',
standalone: false standalone: true
}) })
export class SettingsPanelGeneralAdditionalElementsDirective { export class SettingsPanelGeneralAdditionalElementsDirective {
constructor( constructor(
@ -370,7 +370,7 @@ export class SettingsPanelGeneralAdditionalElementsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovToolbarMoreOptionsAdditionalMenuItems]', selector: '[ovToolbarMoreOptionsAdditionalMenuItems]',
standalone: false standalone: true
}) })
export class ToolbarMoreOptionsAdditionalMenuItemsDirective { export class ToolbarMoreOptionsAdditionalMenuItemsDirective {
constructor( constructor(

View File

@ -25,7 +25,7 @@ import {
} from './internals.directive'; } from './internals.directive';
@NgModule({ @NgModule({
declarations: [ imports: [
ChatPanelDirective, ChatPanelDirective,
LayoutDirective, LayoutDirective,
PanelDirective, PanelDirective,

View File

@ -120,7 +120,7 @@ import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';
*/ */
@Directive({ @Directive({
selector: '[ovToolbar]', selector: '[ovToolbar]',
standalone: false standalone: true
}) })
export class ToolbarDirective { export class ToolbarDirective {
/** /**
@ -260,7 +260,7 @@ export class ToolbarDirective {
@Directive({ @Directive({
selector: '[ovToolbarAdditionalButtons]', selector: '[ovToolbarAdditionalButtons]',
standalone: false standalone: true
}) })
export class ToolbarAdditionalButtonsDirective { export class ToolbarAdditionalButtonsDirective {
/** /**
@ -383,7 +383,7 @@ export class ToolbarAdditionalButtonsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovToolbarAdditionalPanelButtons]', selector: '[ovToolbarAdditionalPanelButtons]',
standalone: false standalone: true
}) })
export class ToolbarAdditionalPanelButtonsDirective { export class ToolbarAdditionalPanelButtonsDirective {
/** /**
@ -533,7 +533,7 @@ export class ToolbarAdditionalPanelButtonsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovPanel]', selector: '[ovPanel]',
standalone: false standalone: true
}) })
export class PanelDirective { export class PanelDirective {
/** /**
@ -720,7 +720,7 @@ export class PanelDirective {
*/ */
@Directive({ @Directive({
selector: '[ovAdditionalPanels]', selector: '[ovAdditionalPanels]',
standalone: false standalone: true
}) })
export class AdditionalPanelsDirective { export class AdditionalPanelsDirective {
/** /**
@ -898,7 +898,7 @@ export class AdditionalPanelsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovChatPanel]', selector: '[ovChatPanel]',
standalone: false standalone: true
}) })
export class ChatPanelDirective { export class ChatPanelDirective {
constructor( constructor(
@ -913,7 +913,7 @@ export class ChatPanelDirective {
*/ */
@Directive({ @Directive({
selector: '[ovBackgroundEffectsPanel]', selector: '[ovBackgroundEffectsPanel]',
standalone: false standalone: true
}) })
export class BackgroundEffectsPanelDirective { export class BackgroundEffectsPanelDirective {
constructor( constructor(
@ -1026,7 +1026,7 @@ export class BackgroundEffectsPanelDirective {
*/ */
@Directive({ @Directive({
selector: '[ovActivitiesPanel]', selector: '[ovActivitiesPanel]',
standalone: false standalone: true
}) })
export class ActivitiesPanelDirective { export class ActivitiesPanelDirective {
constructor( constructor(
@ -1197,7 +1197,7 @@ export class ActivitiesPanelDirective {
@Directive({ @Directive({
selector: '[ovParticipantsPanel]', selector: '[ovParticipantsPanel]',
standalone: false standalone: true
}) })
export class ParticipantsPanelDirective { export class ParticipantsPanelDirective {
constructor( constructor(
@ -1335,7 +1335,7 @@ export class ParticipantsPanelDirective {
@Directive({ @Directive({
selector: '[ovParticipantPanelItem]', selector: '[ovParticipantPanelItem]',
standalone: false standalone: true
}) })
export class ParticipantPanelItemDirective { export class ParticipantPanelItemDirective {
constructor( constructor(
@ -1478,7 +1478,7 @@ export class ParticipantPanelItemDirective {
@Directive({ @Directive({
selector: '[ovParticipantPanelItemElements]', selector: '[ovParticipantPanelItemElements]',
standalone: false standalone: true
}) })
export class ParticipantPanelItemElementsDirective { export class ParticipantPanelItemElementsDirective {
constructor( constructor(
@ -1674,7 +1674,7 @@ export class ParticipantPanelItemElementsDirective {
*/ */
@Directive({ @Directive({
selector: '[ovLayout]', selector: '[ovLayout]',
standalone: false standalone: true
}) })
export class LayoutDirective { export class LayoutDirective {
constructor( constructor(
@ -1806,7 +1806,7 @@ export class LayoutDirective {
@Directive({ @Directive({
selector: '[ovStream]', selector: '[ovStream]',
standalone: false standalone: true
}) })
export class StreamDirective { export class StreamDirective {
constructor( constructor(

View File

@ -87,7 +87,14 @@ const privateComponents = [
]; ];
@NgModule({ @NgModule({
declarations: [ imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
AppMaterialModule,
OpenViduComponentsDirectiveModule,
ApiDirectiveModule,
DragDropModule,
...publicComponents, ...publicComponents,
...privateComponents, ...privateComponents,
LinkifyPipe, LinkifyPipe,
@ -98,15 +105,6 @@ const privateComponents = [
TrackPublishedTypesPipe, TrackPublishedTypesPipe,
TranslatePipe TranslatePipe
], ],
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
AppMaterialModule,
OpenViduComponentsDirectiveModule,
ApiDirectiveModule,
DragDropModule
],
exports: [ exports: [
...publicComponents, ...publicComponents,
RemoteParticipantTracksPipe, RemoteParticipantTracksPipe,

View File

@ -4,7 +4,7 @@ import { Linkifier } from '../models/linkifier.model';
/** /**
* @internal * @internal
*/ */
@Pipe({ name: 'linkify', standalone: false }) @Pipe({ name: 'linkify', standalone: true })
export class LinkifyPipe implements PipeTransform { export class LinkifyPipe implements PipeTransform {
private linkifer: Linkifier; private linkifer: Linkifier;

View File

@ -8,7 +8,7 @@ import { Track } from 'livekit-client';
* This is used to display the tracks in the videoconference layout. * This is used to display the tracks in the videoconference layout.
* @returns {ParticipantTrackPublication[]} Array of tracks * @returns {ParticipantTrackPublication[]} Array of tracks
*/ */
@Pipe({ name: 'tracks', standalone: false }) @Pipe({ name: 'tracks', standalone: true })
export class RemoteParticipantTracksPipe implements PipeTransform { export class RemoteParticipantTracksPipe implements PipeTransform {
constructor() {} constructor() {}
@ -20,7 +20,7 @@ export class RemoteParticipantTracksPipe implements PipeTransform {
/** /**
* @internal * @internal
*/ */
@Pipe({ name: 'tracksPublishedTypes', standalone: false }) @Pipe({ name: 'tracksPublishedTypes', standalone: true })
export class TrackPublishedTypesPipe implements PipeTransform { export class TrackPublishedTypesPipe implements PipeTransform {
constructor(private translateService: TranslateService) {} constructor(private translateService: TranslateService) {}

View File

@ -5,7 +5,7 @@ import { Pipe, PipeTransform } from '@angular/core';
*/ */
@Pipe({ @Pipe({
name: 'duration', name: 'duration',
standalone: false standalone: true
}) })
export class DurationFromSecondsPipe implements PipeTransform { export class DurationFromSecondsPipe implements PipeTransform {
transform(durationInSeconds: number): string { transform(durationInSeconds: number): string {
@ -28,7 +28,7 @@ export class DurationFromSecondsPipe implements PipeTransform {
*/ */
@Pipe({ @Pipe({
name: 'searchByStringProperty', name: 'searchByStringProperty',
standalone: false standalone: true
}) })
export class SearchByStringPropertyPipe implements PipeTransform { export class SearchByStringPropertyPipe implements PipeTransform {
transform(items: any[], props: { properties: string[]; filter: string }): any { transform(items: any[], props: { properties: string[]; filter: string }): any {
@ -60,7 +60,7 @@ export class SearchByStringPropertyPipe implements PipeTransform {
*/ */
@Pipe({ @Pipe({
name: 'thumbnailUrl', name: 'thumbnailUrl',
standalone: false standalone: true
}) })
export class ThumbnailFromUrlPipe implements PipeTransform { export class ThumbnailFromUrlPipe implements PipeTransform {
transform(url: string): string { transform(url: string): string {

View File

@ -6,7 +6,7 @@ import { TranslateService } from '../services/translate/translate.service';
*/ */
@Pipe({ @Pipe({
name: 'translate', pure: false, name: 'translate', pure: false,
standalone: false standalone: true
}) })
export class TranslatePipe implements PipeTransform { export class TranslatePipe implements PipeTransform {
constructor(private translateService: TranslateService) {} constructor(private translateService: TranslateService) {}