Skip to content
Snippets Groups Projects
app-material.module.ts 6.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { NativeDateAdapter, DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
    
    Alex ORLUC's avatar
    Alex ORLUC committed
    export class AppDateAdapter extends NativeDateAdapter {
        parse(value: any): Date | null {
            if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
                const str = value.split('/');
                const year = Number(str[2]);
                const month = Number(str[1]) - 1;
                const date = Number(str[0]);
                return new Date(year, month, date);
            }
            const timestamp = typeof value === 'number' ? value : Date.parse(value);
            return isNaN(timestamp) ? null : new Date(timestamp);
        }
    
        format(date: Date, displayFormat: Object): string {
            if (displayFormat == "input") {
                let day = date.getDate();
                let month = date.getMonth() + 1;
                let year = date.getFullYear();
                return this._to2digit(day) + '/' + this._to2digit(month) + '/' + year;
            } else {
    
    Alex ORLUC's avatar
    Alex ORLUC committed
                const options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };
    
                return date.toLocaleDateString('fr-FR', options);
    
    Alex ORLUC's avatar
    Alex ORLUC committed
            }
        }
    
        private _to2digit(n: number) {
            return ('00' + n).slice(-2);
        }
    
    Alex ORLUC's avatar
    Alex ORLUC committed
    
        getFirstDayOfWeek(): number {
            return 1;
        }
    
    
    Alex ORLUC's avatar
    Alex ORLUC committed
    }
    
    export const APP_DATE_FORMATS =
    
    {
        parse: {
            dateInput: { month: 'short', year: 'numeric', day: 'numeric' }
        },
        display: {
            // dateInput: { month: 'short', year: 'numeric', day: 'numeric' },
            dateInput: 'input',
            monthYearLabel: { month: 'short', year: 'numeric', day: 'numeric' },
            dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },
            monthYearA11yLabel: { year: 'numeric', month: 'long' },
        }
    };
    
    import { NgModule, Injectable } from '@angular/core';
    
    Alex ORLUC's avatar
    Alex ORLUC committed
    import { DndModule } from 'ng2-dnd';
    
    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 { MatCardModule } from '@angular/material/card';
    import { MatCheckboxModule } from '@angular/material/checkbox';
    import { MatChipsModule } from '@angular/material/chips';
    import { MatNativeDateModule } from '@angular/material/core';
    import { MatDatepickerModule } from '@angular/material/datepicker';
    import { MatDialogActions, MatDialogModule } from '@angular/material/dialog';
    import { MatExpansionModule } from '@angular/material/expansion';
    import { MatGridListModule } from '@angular/material/grid-list';
    import { MatIcon, MatIconModule } from '@angular/material/icon';
    import { MatInputModule } from '@angular/material/input';
    import { MatListModule } from '@angular/material/list';
    import { MatMenuModule } from '@angular/material/menu';
    import { MatPaginatorModule, MatPaginatorIntl } 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 { MatSnackBar, 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 { MatRippleModule } from '@angular/material/core';
    import { ScrollingModule } from '@angular/cdk/scrolling';
    
    import { MatTreeModule } from '@angular/material/tree';
    import { getFrenchPaginatorIntl, getTranslatedPaginator } from './french-paginator-intl';
    
    
    @NgModule({
        imports: [
    
            MatCheckboxModule,
            MatSelectModule,
            MatSlideToggleModule,
            MatInputModule,
            MatTooltipModule,
            MatTabsModule,
            MatSidenavModule,
            MatButtonModule,
            MatCardModule,
            MatButtonToggleModule,
            MatProgressSpinnerModule,
    
            MatToolbarModule,
            MatMenuModule,
    
            MatGridListModule,
            MatTableModule,
            MatPaginatorModule,
            MatSortModule,
            MatDatepickerModule,
            MatNativeDateModule,
            MatExpansionModule,
            MatAutocompleteModule,
            MatSnackBarModule,
            MatIconModule,
    
            MatDialogModule,
    
            MatListModule,
            MatChipsModule,
            MatStepperModule,
    
            MatRadioModule,
    
            MatSliderModule,
    
    Florian Azizian's avatar
    Florian Azizian committed
            MatBadgeModule,
    
            MatBottomSheetModule,
    
            MatRippleModule,
    
            DndModule.forRoot()
    
        ],
        exports: [
    
            MatCheckboxModule,
            MatSelectModule,
            MatSlideToggleModule,
            MatInputModule,
            MatTooltipModule,
            MatTabsModule,
            MatSidenavModule,
            MatButtonModule,
            MatCardModule,
            MatButtonToggleModule,
            MatProgressSpinnerModule,
    
            MatToolbarModule,
            MatMenuModule,
    
            MatGridListModule,
            MatTableModule,
            MatPaginatorModule,
            MatSortModule,
            MatDatepickerModule,
            MatNativeDateModule,
            MatExpansionModule,
            MatAutocompleteModule,
            MatSnackBarModule,
            MatIconModule,
    
            MatDialogModule,
    
            MatListModule,
            MatChipsModule,
            MatStepperModule,
    
            MatRadioModule,
    
            MatSliderModule,
    
    Florian Azizian's avatar
    Florian Azizian committed
            MatBadgeModule,
    
            MatBottomSheetModule,
    
            MatRippleModule,
    
            { provide: MatPaginatorIntl, useValue: getTranslatedPaginator('FR-fr') },
            { provide: MAT_DATE_LOCALE, useValue: 'FR-fr' },
    
    Alex ORLUC's avatar
    Alex ORLUC committed
            { provide: DateAdapter, useClass: AppDateAdapter },
            { provide: MAT_DATE_FORMATS, useValue: APP_DATE_FORMATS },
    
    export class AppMaterialModule { }