import { MatTooltipModule } from '@angular/material/tooltip'; import { NgModule, ModuleWithProviders } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FlexLayoutModule } from '@angular/flex-layout'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatDialogModule } from '@angular/material/dialog'; import { MatIconModule } from '@angular/material/icon'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatToolbarModule } from '@angular/material/toolbar'; import { DragDropModule } from '@angular/cdk/drag-drop'; import { FileUploadQueueComponent } from './components/file-upload-queue.component'; import { FloatActionButtonComponent } from './components/float-action-button.component'; import { FileViewerComponent } from './components/file-viewer.component'; import { BinaryViewerComponent } from './components/file-viewer/binary-viewer.component'; import { DocumentViewerComponent } from './components/file-viewer/document-viewer.component'; import { ImageViewerComponent } from './components/file-viewer/image-viewer.component'; import { SoundViewerComponent } from './components/file-viewer/sound-viewer.component'; import { VideoViewerComponent } from './components/file-viewer/video-viewer.component'; import { BottomSheetService } from './services/bottom-sheet.service'; import { ClipboardService } from './services/clipboard.service'; import { DialogService } from './services/dialog.service'; import { SnackBarService } from './services/snack-bar.service'; import { ClickOutsideDirective } from './directives/click-outside.directive'; import { FileUploadForDirective } from './directives/file-upload-for.directive'; import { ImageDirective } from './directives/image.directive'; import { AlertDialogComponent } from './dialogs/alert.dialog.component'; import { ConfirmDialogComponent } from './dialogs/confirm.dialog.component'; import { BytesPipe } from './pipes/bytes.pipe'; import { LinefeedToHtmlPipe, HtmlToLinefeedPipe } from './pipes/linefeed.pipe'; import { DateToStringForChatRoomListPipe } from './pipes/dates.pipe'; const COMPONENTS = [ FileUploadQueueComponent, FloatActionButtonComponent, FileViewerComponent, BinaryViewerComponent, DocumentViewerComponent, ImageViewerComponent, SoundViewerComponent, VideoViewerComponent ]; const DIALOGS = [AlertDialogComponent, ConfirmDialogComponent]; const DIRECTIVES = [ ClickOutsideDirective, FileUploadForDirective, ImageDirective ]; const PIPES = [ BytesPipe, LinefeedToHtmlPipe, HtmlToLinefeedPipe, DateToStringForChatRoomListPipe ]; const SERVICES = [ BottomSheetService, ClipboardService, DialogService, SnackBarService ]; @NgModule({ imports: [ CommonModule, FlexLayoutModule, MatButtonModule, MatCardModule, MatDialogModule, MatIconModule, MatProgressBarModule, MatSnackBarModule, MatToolbarModule, MatTooltipModule, DragDropModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES], entryComponents: [...DIALOGS] }) export class UCapUiModule { public static forRoot(): ModuleWithProviders { return { ngModule: UCapUiModule, providers: [...SERVICES] }; } }