import { inject, NgModule } from '@angular/core'; import { OVERLAY_DEFAULT_CONFIG } from '@angular/cdk/overlay'; import { MatDateFnsModule, provideDateFnsAdapter } from '@angular/material-date-fns-adapter'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatBadgeModule } from '@angular/material/badge'; import { MatBottomSheetModule } from '@angular/material/bottom-sheet'; import { MatButtonModule } from '@angular/material/button'; import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { MAT_CARD_CONFIG, MatCardModule } from '@angular/material/card'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatChipsModule } from '@angular/material/chips'; import { MAT_DATE_LOCALE, MatRippleModule } from '@angular/material/core'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig, MatDialogModule, } from '@angular/material/dialog'; import { MatDividerModule } from '@angular/material/divider'; import { MatExpansionModule } from '@angular/material/expansion'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatGridListModule } from '@angular/material/grid-list'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatListModule } from '@angular/material/list'; import { MatMenuModule } from '@angular/material/menu'; import { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatRadioModule } from '@angular/material/radio'; import { MatSelectModule } from '@angular/material/select'; import { MatSidenavModule } from '@angular/material/sidenav'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatSliderModule } from '@angular/material/slider'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSortModule } from '@angular/material/sort'; import { MatStepperModule } from '@angular/material/stepper'; import { MatTableModule } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTreeModule } from '@angular/material/tree'; import { SettingsService } from '@core'; import { PaginatorI18nService } from '@shared/services/paginator-i18n.service'; @NgModule({ exports: [ MatAutocompleteModule, MatBadgeModule, MatBottomSheetModule, MatButtonModule, MatButtonToggleModule, MatCardModule, MatCheckboxModule, MatChipsModule, MatStepperModule, MatDatepickerModule, MatDateFnsModule, // <= You can also import the other adapter you need (e.g. moment, luxon) MatDialogModule, MatDividerModule, MatExpansionModule, MatFormFieldModule, MatGridListModule, MatIconModule, MatInputModule, MatListModule, MatMenuModule, MatPaginatorModule, MatProgressBarModule, MatProgressSpinnerModule, MatRadioModule, MatRippleModule, MatSelectModule, MatSidenavModule, MatSliderModule, MatSlideToggleModule, MatSnackBarModule, MatSortModule, MatTableModule, MatTabsModule, MatToolbarModule, MatTooltipModule, MatTreeModule, ], providers: [ { provide: OVERLAY_DEFAULT_CONFIG, useValue: { usePopover: false, }, }, { provide: MatPaginatorIntl, deps: [PaginatorI18nService], useFactory: (paginatorI18nSrv: PaginatorI18nService) => paginatorI18nSrv.getPaginatorIntl(), }, { provide: MAT_CARD_CONFIG, useValue: { appearance: 'outlined', }, }, { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { ...new MatDialogConfig(), }, }, { provide: MAT_DATE_LOCALE, useFactory: () => inject(SettingsService).getLocale(), }, provideDateFnsAdapter({ parse: { dateInput: 'yyyy-MM-dd', }, display: { dateInput: 'yyyy-MM-dd', monthYearLabel: 'yyyy MMM', dateA11yLabel: 'LL', monthYearA11yLabel: 'yyyy MMM', }, }), ], }) export class MaterialModule {}