All files / src/lib/dynamic-form-converter datetime-adapter.ts

100% Statements 7/7
100% Branches 6/6
100% Functions 5/5
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                    1x   14x       14x       14x       6x                       18x    
import { Injectable, Provider } from '@angular/core';
import { DateAdapter, NativeDateAdapter } from '@angular/material/core';
 
export abstract class DatetimeAdapter<TDatetime, TLocale = any> extends DateAdapter<TDatetime, TLocale> {
  abstract override getHours(date: TDatetime): number;
  abstract override getMinutes(date: TDatetime): number;
  abstract override getSeconds(date: TDatetime): number;
}
 
@Injectable()
export class NativeDatetimeAdapter extends NativeDateAdapter implements DatetimeAdapter<Date> {
  override getHours(date: Date): number {
    return date.getHours();
  }
 
  override getMinutes(date: Date): number {
    return date.getMinutes();
  }
 
  override getSeconds(date: Date): number {
    return date.getSeconds();
  }
 
  override compareDate(first: Date, second: Date): number {
    return (
      this.getYear(first) - this.getYear(second) ||
      this.getMonth(first) - this.getMonth(second) ||
      this.getDate(first) - this.getDate(second) ||
      this.getHours(first) - this.getHours(second) ||
      this.getMinutes(first) - this.getMinutes(second) ||
      this.getSeconds(first) - this.getSeconds(second)
    );
  }
}
 
export function provideNativeDatetimeAdapter(): Provider[] {
  return [{ provide: DatetimeAdapter, useClass: NativeDatetimeAdapter }];
}