@@ -89,7 +89,7 @@
access_time
- @if (!basicInfoForm.hasError('minFutureDateTime')) {
+ @if (!roomDetailsForm.hasError('minFutureDateTime')) {
auto_delete
Room will be deleted at {{ getFormattedDateTime() }}
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.scss b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.scss
similarity index 97%
rename from frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.scss
rename to frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.scss
index cee34fc..cc1f22d 100644
--- a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.scss
+++ b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.scss
@@ -1,6 +1,6 @@
@import '../../../../../../../../../../src/assets/styles/design-tokens';
-.basic-info-step {
+.room-details-step {
@include ov-page-content;
@include ov-container;
@@ -41,7 +41,7 @@
.step-content {
// margin-bottom: var(--ov-meet-spacing-xl);
- .basic-info-form {
+ .room-details-form {
@include ov-grid-responsive(280px);
gap: var(--ov-meet-spacing-lg);
@@ -144,7 +144,7 @@
}
.step-content {
- .basic-info-form {
+ .room-details-form {
display: flex;
flex-direction: column;
gap: var(--ov-meet-spacing-md);
@@ -170,7 +170,7 @@
@include ov-tablet-down {
.step-content {
- .basic-info-form {
+ .room-details-form {
grid-template-columns: 1fr;
}
}
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.spec.ts b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.spec.ts
similarity index 54%
rename from frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.spec.ts
rename to frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.spec.ts
index 8a44951..711b584 100644
--- a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.spec.ts
+++ b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.spec.ts
@@ -1,18 +1,18 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { RoomWizardBasicInfoComponent } from './basic-info.component';
+import { RoomWizardRoomDetailsComponent } from './room-details.component';
describe('BasicInfoComponent', () => {
- let component: RoomWizardBasicInfoComponent;
- let fixture: ComponentFixture;
+ let component: RoomWizardRoomDetailsComponent;
+ let fixture: ComponentFixture;
beforeEach(async () => {
await TestBed.configureTestingModule({
- imports: [RoomWizardBasicInfoComponent]
+ imports: [RoomWizardRoomDetailsComponent]
})
.compileComponents();
- fixture = TestBed.createComponent(RoomWizardBasicInfoComponent);
+ fixture = TestBed.createComponent(RoomWizardRoomDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.ts
similarity index 83%
rename from frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.ts
rename to frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.ts
index 6e6a1e3..c58610e 100644
--- a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/basic-info/basic-info.component.ts
+++ b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-details/room-details.component.ts
@@ -13,7 +13,7 @@ import { MeetRoomOptions } from '@lib/typings/ce';
import { Subject, takeUntil } from 'rxjs';
@Component({
- selector: 'ov-room-wizard-basic-info',
+ selector: 'ov-room-wizard-room-details',
standalone: true,
imports: [
ReactiveFormsModule,
@@ -26,11 +26,11 @@ import { Subject, takeUntil } from 'rxjs';
MatSelectModule,
MatTooltipModule
],
- templateUrl: './basic-info.component.html',
- styleUrl: './basic-info.component.scss'
+ templateUrl: './room-details.component.html',
+ styleUrl: './room-details.component.scss'
})
-export class RoomWizardBasicInfoComponent implements OnDestroy {
- basicInfoForm: FormGroup;
+export class RoomWizardRoomDetailsComponent implements OnDestroy {
+ roomDetailsForm: FormGroup;
// Arrays for time selection
hours = Array.from({ length: 24 }, (_, i) => ({ value: i, display: i.toString().padStart(2, '0') }));
@@ -40,9 +40,9 @@ export class RoomWizardBasicInfoComponent implements OnDestroy {
constructor(private wizardService: RoomWizardStateService) {
const currentStep = this.wizardService.currentStep();
- this.basicInfoForm = currentStep!.formGroup;
+ this.roomDetailsForm = currentStep!.formGroup;
- this.basicInfoForm.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
+ this.roomDetailsForm.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
this.saveFormData(value);
});
}
@@ -71,7 +71,7 @@ export class RoomWizardBasicInfoComponent implements OnDestroy {
};
// Always save to wizard state (including when values are cleared)
- this.wizardService.updateStepData('basic', stepData);
+ this.wizardService.updateStepData('roomDetails', stepData);
}
get minDate(): Date {
@@ -81,11 +81,11 @@ export class RoomWizardBasicInfoComponent implements OnDestroy {
}
get hasDateSelected(): boolean {
- return !!this.basicInfoForm.get('autoDeletionDate')?.value;
+ return !!this.roomDetailsForm.get('autoDeletionDate')?.value;
}
getFormattedDateTime(): string {
- const formValue = this.basicInfoForm.value;
+ const formValue = this.roomDetailsForm.value;
if (!formValue.autoDeletionDate) {
return '';
}
@@ -109,7 +109,7 @@ export class RoomWizardBasicInfoComponent implements OnDestroy {
}
clearDeletionDate() {
- this.basicInfoForm.patchValue({
+ this.roomDetailsForm.patchValue({
autoDeletionDate: null,
autoDeletionHour: 23,
autoDeletionMinute: 59
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/rooms.component.scss b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/rooms.component.scss
index 50be7ec..e69de29 100644
--- a/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/rooms.component.scss
+++ b/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/rooms.component.scss
@@ -1,219 +0,0 @@
-// @import '../../../../../../../src/assets/styles/design-tokens';
-
-// Use page loading utility
-// .loading-container {
-// @extend .ov-page-loading;
-
-// .loading-content .loading-header .loading-title .loading-icon {
-// color: var(--ov-meet-icon-rooms);
-// }
-// }
-
-// Use table page actions utility
-// .rooms-actions {
-// @extend .ov-table-page-actions;
-
-// .create-room-btn {
-// @include ov-button-base;
-
-// mat-icon {
-// @include ov-icon(md);
-// margin-right: var(--ov-meet-spacing-sm);
-// }
-// }
-// }
-
-// Use search field utility
-// .search-bar {
-// .search-field {
-// @extend .ov-search-field;
-// min-width: 400px;
-// max-width: 500px;
-// }
-// }
-
-// Use table page container utility
-// .rooms-table-container {
-// @extend .ov-table-page-container;
-// }
-
-// Responsive table utilities
-// .table-wrapper {
-// &.desktop-view {
-// display: block;
-
-// @include ov-tablet-down {
-// display: none;
-// }
-// }
-
-// &.mobile-view {
-// display: none;
-
-// @include ov-tablet-down {
-// display: block;
-// }
-// }
-// }
-
-// // Use data table utility
-// .rooms-table {
-// @extend .ov-data-table;
-
-// .mat-mdc-header-cell {
-// &.room-header {
-// @extend .primary-header;
-// }
-
-// &.actions-header {
-// @extend .actions-header;
-// }
-// }
-
-// .mat-mdc-cell {
-// &.room-cell {
-// @extend .primary-cell;
-// }
-
-// &.actions-cell {
-// @extend .actions-cell;
-// }
-// }
-// }
-
-// Use mobile card utilities
-// .mobile-rooms-list {
-// display: flex;
-// flex-direction: column;
-// gap: var(--ov-meet-spacing-md);
-
-// .room-mobile-card {
-// @include ov-card;
-// @include ov-theme-transition;
-
-// &:hover {
-// @include ov-hover-lift(-2px);
-// }
-
-// .room-card-header {
-// display: flex;
-// justify-content: space-between;
-// align-items: flex-start;
-// margin-bottom: var(--ov-meet-spacing-sm);
-
-// .room-title {
-// @extend .primary-text;
-// }
-
-// .room-status {
-// @extend .ov-status-badge;
-// }
-// }
-
-// .room-card-content {
-// display: flex;
-// flex-direction: column;
-// gap: var(--ov-meet-spacing-xs);
-
-// .room-detail {
-// display: flex;
-// justify-content: space-between;
-// font-size: var(--ov-meet-font-size-sm);
-
-// .detail-label {
-// color: var(--ov-meet-text-secondary);
-// }
-
-// .detail-value {
-// color: var(--ov-meet-text-primary);
-// }
-// }
-// }
-
-// .room-card-actions {
-// @extend .ov-action-buttons;
-// margin-top: var(--ov-meet-spacing-md);
-// padding-top: var(--ov-meet-spacing-md);
-// border-top: 1px solid var(--ov-meet-border-color-light);
-// }
-// }
-// }
-
-// // Use info display and status utilities
-// .room-info {
-// @extend .ov-info-display;
-// }
-
-// .status-badge {
-// @extend .ov-status-badge;
-// }
-
-// .participant-count {
-// @extend .ov-date-info;
-// }
-
-// .creation-date {
-// @extend .ov-date-info;
-// }
-
-// // Use action buttons utility
-// .action-buttons {
-// @extend .ov-action-buttons;
-
-// .mat-mdc-icon-button {
-// &.primary-action {
-// color: var(--ov-meet-color-primary);
-// }
-
-// &.room-preferences-btn {
-// color: var(--ov-meet-icon-settings);
-// }
-
-// &.copy-link-btn {
-// color: var(--ov-meet-text-secondary);
-// }
-
-// &.view-recordings-btn {
-// color: var(--ov-meet-icon-recordings);
-// }
-
-// &.delete-room-btn {
-// color: var(--ov-meet-color-error);
-// }
-// }
-// }
-
-// // Use empty state utility
-// .no-rooms-state {
-// @extend .ov-empty-state;
-
-// .empty-icon {
-// @include ov-icon(xl);
-// color: var(--ov-meet-text-hint);
-// margin-bottom: var(--ov-meet-spacing-lg);
-// display: block;
-// }
-
-// .getting-started-actions {
-// display: flex;
-// flex-direction: column;
-// gap: var(--ov-meet-spacing-md);
-// align-items: center;
-
-// button {
-// @include ov-button-base;
-
-// mat-icon {
-// @include ov-icon(md);
-// margin-right: var(--ov-meet-spacing-sm);
-// }
-// }
-// }
-// }
-
-// // Use focus utilities
-// .mat-mdc-checkbox,
-// .mat-mdc-icon-button,
-// .mat-mdc-button {
-// @extend .ov-focus-visible;
-// }
diff --git a/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts b/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts
index 6d56623..7161915 100644
--- a/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts
+++ b/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts
@@ -65,10 +65,10 @@ export class RoomWizardStateService {
// Define wizard steps
const baseSteps: WizardStep[] = [
{
- id: 'basic',
+ id: 'roomDetails',
label: 'Room Details',
isCompleted: editMode, // In edit mode, mark as completed but not editable
- isActive: !editMode, // Start with basic step active in create mode
+ isActive: !editMode, // Start with roomDetails step active in create mode
isVisible: true,
formGroup: this.formBuilder.group(
{
@@ -174,7 +174,7 @@ export class RoomWizardStateService {
];
this._steps.set(baseSteps);
- const initialStepIndex = editMode ? 1 : 0; // Skip basic step in edit mode
+ const initialStepIndex = editMode ? 1 : 0; // Skip roomDetails step in edit mode
this._currentStepIndex.set(initialStepIndex);
// Update step visibility after index is set
@@ -192,7 +192,7 @@ export class RoomWizardStateService {
let updatedOptions: MeetRoomOptions;
switch (stepId) {
- case 'basic':
+ case 'roomDetails':
updatedOptions = {
...currentOptions
};
@@ -360,9 +360,10 @@ export class RoomWizardStateService {
return {
showPrevious: !isFirstStep,
showNext: !isLastStep,
- showCancel: true,
+ showCancel: false,
+ showBack: true,
showFinish: isLastStep,
- showSkipAndFinish: !isEditMode && isFirstStep,
+ showSkipAndFinish: false, // Skip and finish is not used in this wizard
disableFinish: isSomeStepInvalid,
nextLabel: 'Next',
previousLabel: 'Previous',
@@ -373,13 +374,13 @@ export class RoomWizardStateService {
/**
* Checks if the wizard is in edit mode.
- * Edit mode is determined by whether the basic step is completed and its form is disabled.
+ * Edit mode is determined by whether the roomDetails step is completed and its form is disabled.
* @returns True if in edit mode, false otherwise
*/
private isEditMode(): boolean {
const visibleSteps = this._visibleSteps();
- const basicStep = visibleSteps.find((step) => step.id === 'basic');
- const isEditMode = !!basicStep && basicStep.isCompleted && basicStep.formGroup.disabled;
+ const roomDetailsStep = visibleSteps.find((step) => step.id === 'roomDetails');
+ const isEditMode = !!roomDetailsStep && roomDetailsStep.isCompleted && roomDetailsStep.formGroup.disabled;
return isEditMode;
}