import { CommonModule } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { PpButtonComponent } from './components/button/button.component'; import { PpIconComponent } from './components/icon/icon.component'; import { PpFormComponent } from './forms.component'; import { MatSelectModule } from '@angular/material/select'; import { MatRadioModule } from '@angular/material/radio'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatOptionModule } from '@angular/material/core'; import { PpFilterListPipe } from './pipes/filter-list.pipe'; import { MaterialFileInputModule } from 'ngx-material-file-input'; import { MatIconModule } from '@angular/material/icon'; import { MatChipsModule } from '@angular/material/chips'; import { QuillModule } from 'ngx-quill'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatButtonModule } from '@angular/material/button'; import { PpLoaderComponent } from './components/loader/loader.component'; import { PpHttpConfig, PpHttpModule } from '@penpencil/common'; import { PEN_PENCIL_FORMS_API_CONFIG } from './forms.constant'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatDialogModule } from '@angular/material/dialog'; import { PpNotificationService } from './services/notification.service'; import { PpConditionValidationService } from './services/condition-validation.service'; @NgModule({ declarations: [ PpFormComponent, PpButtonComponent, PpIconComponent, PpFilterListPipe, PpLoaderComponent, ], imports: [ CommonModule, FormsModule, ReactiveFormsModule, MaterialFileInputModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatRadioModule, MatCheckboxModule, MatSlideToggleModule, MatAutocompleteModule, MatProgressSpinnerModule, MatIconModule, MatChipsModule, MatTooltipModule, MatButtonModule, MatSnackBarModule, MatDialogModule, MatFormFieldModule, MatInputModule, // Owl Date Time Picker OwlDateTimeModule, OwlNativeDateTimeModule, QuillModule.forRoot(), PpHttpModule.forRoot(), ], exports: [ PpFormComponent, PpButtonComponent, PpIconComponent, PpFilterListPipe, PpLoaderComponent, ], }) export class PpFormsModule { static forRoot(config: PpHttpConfig): ModuleWithProviders { return { ngModule: PpFormsModule, providers: [ { provide: PEN_PENCIL_FORMS_API_CONFIG, useValue: config }, PpNotificationService, PpConditionValidationService, ], }; } }