import { NgModule, isDevMode } from '@angular/core' import { BrowserModule } from '@angular/platform-browser' import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { MatButtonModule } from '@angular/material/button' import { MatCardModule } from '@angular/material/card' import { MatDatepickerModule } from '@angular/material/datepicker' import { MatDialogModule } from '@angular/material/dialog' import { MatIconModule } from '@angular/material/icon' import { MatInputModule } from '@angular/material/input' import { MatListModule } from '@angular/material/list' import { MatTabsModule } from '@angular/material/tabs' import { MatToolbarModule } from '@angular/material/toolbar' import { MatSidenavModule } from '@angular/material/sidenav' import { BrowserAnimationsModule } from '@angular/platform-browser/animations' import { ServiceWorkerModule } from '@angular/service-worker' import { AdminViewComponent } from './admin-view/admin-view.component' import { AppRoutingModule } from './app-routing.module' import { AppViewComponent } from './app-view/app-view.component' import { DateSelectorComponent } from './commonComponents/date-selector/date-selector.component' import { MenuComponent } from './app-view/menu/menu.component' import { NewsComponent } from './app-view/news/news.component' import { ChangePasswordDialogComponent } from './app-view/personal/change-password-dialog/change-password-dialog.component' import { LogoutConfirmationComponent } from './app-view/personal/logout-confirmation/logout-confirmation.component' import { PersonalComponent } from './app-view/personal/personal.component' import { AppComponent } from './app.component' import { LoginComponent } from './login/login.component' import { MenuUploadComponent } from './admin-view/menu-edit/menu-upload/menu-upload.component' import { NewsEditComponent } from './admin-view/news-edit/news-edit.component' import { MatSnackBarModule } from '@angular/material/snack-bar' import { NewPostComponent } from './admin-view/news-edit/new-post/edit-post.component' import { AccountMgmtComponent } from './admin-view/account-mgmt/account-mgmt.component' import { MatTableModule } from '@angular/material/table' import { UserEditComponent } from './admin-view/account-mgmt/user-edit/user-edit.component' import { MatPaginatorModule } from '@angular/material/paginator' import { UserDeleteComponent } from './admin-view/account-mgmt/user-delete/user-delete.component' import { MatSelectModule } from '@angular/material/select' import { MenuEditComponent } from './admin-view/menu-edit/menu-edit.component' import { FDSelection } from './fd.da' import { CeDirective } from './ce.directive' import { AllergensComponent } from './app-view/menu/allergens/allergens.component' import { MatBottomSheetModule } from '@angular/material/bottom-sheet' import { UserResetComponent } from './admin-view/account-mgmt/user-reset/user-reset.component' import { MatSlideToggleModule } from '@angular/material/slide-toggle' import { MatProgressSpinnerModule } from '@angular/material/progress-spinner' import { MatRadioModule } from '@angular/material/radio' import { NotificationsComponent } from './admin-view/notifications/notifications.component' import { GroupsComponent } from './admin-view/groups/groups.component' import { ListEditorComponent } from './commonComponents/list-editor/list-editor.component' import { RemoveConfirmComponent } from './admin-view/groups/remove-confirm/remove-confirm.component' import { StartComponent } from './app-view/start/start.component' import { KeyComponent } from './app-view/personal/key/key.component' import { AdminKeyComponent } from './admin-view/key/key.component' import { MatChipsModule } from '@angular/material/chips' import { NewKeyComponent } from './admin-view/key/new-key/new-key.component' import { GradesComponent } from './admin-view/grades/grades.component' import { RoomChooserComponent } from './commonComponents/room-chooser/room-chooser.component' import { CleanComponent } from './app-view/personal/clean/clean.component' import { MatCheckboxModule } from '@angular/material/checkbox' import { LabelDirective } from './label.directive' import { MatMenuModule } from '@angular/material/menu' import { SummaryComponent } from './admin-view/grades/summary/summary.component' import { MatSortModule } from '@angular/material/sort' import { MatButtonToggleModule } from '@angular/material/button-toggle' import { SettingsComponent } from './admin-view/settings/settings.component' import { MatExpansionModule } from '@angular/material/expansion' import { DragDropModule } from '@angular/cdk/drag-drop' import { MatBadgeModule } from '@angular/material/badge' import { MenuAddComponent } from './admin-view/menu-edit/menu-add/menu-add.component' import { FieldEditorComponent } from './commonComponents/field-editor/field-editor.component' import { A11yModule } from '@angular/cdk/a11y' import { PortalModule } from '@angular/cdk/portal' import { MatAutocompleteModule } from '@angular/material/autocomplete' import { AttendenceComponent } from './admin-view/grades/attendence/attendence.component' import { AttendenceSummaryComponent } from './admin-view/grades/attendence-summary/attendence-summary.component' import { HourDisplayComponent } from './admin-view/grades/attendence-summary/hour-display/hour-display.component' import { AboutComponent } from './app-view/personal/about/about.component' import { environment } from 'src/environments/environment' import { ExtraComponent } from './app-view/personal/extra/extra.component' import { RedirectComponent } from './app-view/personal/extra/redirect/redirect.component' import { OutboxComponent } from './admin-view/notifications/outbox/outbox.component' import { ToolbarComponent } from './admin-view/toolbar/toolbar.component' import { MessageComponent } from './admin-view/notifications/outbox/message/message.component' import { NotifDialogComponent } from './app-view/notif-dialog/notif-dialog.component' import { UserSearchComponent } from './commonComponents/user-search/user-search.component' import { StartAdminComponent } from './admin-view/start/start.component' import { provideLuxonDateAdapter } from '@angular/material-luxon-adapter'; import { LoadShadeComponent } from './commonComponents/load-shade/load-shade.component' import { GradeColorDirective } from './grade-color.directive' @NgModule({ declarations: [ AppComponent, NewsComponent, MenuComponent, LoginComponent, AppViewComponent, PersonalComponent, ChangePasswordDialogComponent, LogoutConfirmationComponent, DateSelectorComponent, AdminViewComponent, MenuUploadComponent, NewsEditComponent, NewPostComponent, AccountMgmtComponent, UserEditComponent, UserDeleteComponent, MenuEditComponent, CeDirective, LabelDirective, AllergensComponent, UserResetComponent, NotificationsComponent, GroupsComponent, ListEditorComponent, RemoveConfirmComponent, StartComponent, KeyComponent, AdminKeyComponent, NewKeyComponent, GradesComponent, RoomChooserComponent, CleanComponent, SummaryComponent, SettingsComponent, MenuAddComponent, FieldEditorComponent, AttendenceComponent, AttendenceSummaryComponent, HourDisplayComponent, AboutComponent, ExtraComponent, RedirectComponent, OutboxComponent, ToolbarComponent, MessageComponent, NotifDialogComponent, UserSearchComponent, StartAdminComponent, LoadShadeComponent, GradeColorDirective, ], bootstrap: [AppComponent], imports: [ BrowserModule, AppRoutingModule, BrowserAnimationsModule, MatTabsModule, MatCardModule, MatButtonModule, MatIconModule, MatDatepickerModule, MatInputModule, ReactiveFormsModule, FormsModule, MatDialogModule, MatListModule, MatToolbarModule, MatSidenavModule, MatSnackBarModule, MatTableModule, MatPaginatorModule, MatSelectModule, MatBottomSheetModule, MatSlideToggleModule, MatProgressSpinnerModule, MatRadioModule, MatChipsModule, MatCheckboxModule, MatMenuModule, MatSortModule, MatButtonToggleModule, MatExpansionModule, DragDropModule, MatBadgeModule, PortalModule, A11yModule, MatAutocompleteModule, ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, // Register the ServiceWorker as soon as the application is stable // or after 30 seconds (whichever comes first). registrationStrategy: 'registerWhenStable:30000', }), ], providers: [ provideLuxonDateAdapter(), FDSelection, provideHttpClient(withInterceptorsFromDi()), ], }) export class AppModule {}