@lakea/gravity-date-adapter-date-fns
v3.0.2
Published
An adapter for `GrDate` using [`date-fns`](https://date-fns.org/) as implementation.
Downloads
12
Readme
@lakea/gravity-date-adapter-date-fns
An adapter for GrDate
using date-fns
as implementation.
Installation
Install the library using NPM:
npm install @lakea/gravity-date-adapter-date-fns date-fns --save
Next, create a new file, date-adapter-root.module.ts
which exposes an Angular's module with a default configuration.
import {NgModule} from '@angular/core';
import {GR_DATE_FORMAT, GrDate} from '@lakea/gravity/cdk';
import {GR_DATE_FORMAT_DATE_FNS, GrDateAdapterDateFns} from '@lakea/gravity-date-adapter-date-fns';
@NgModule({
providers: [
{
provide: GrDate,
useClass: GrDateAdapterDateFns,
},
{
provide: GR_DATE_FORMAT,
useValue: GR_DATE_FORMAT_DATE_FNS,
},
],
})
export class DateAdapterRootModule {}
Import DateAdapterRootModule
to application root module like app.module.ts
.
You should import the DateAdapterRootModule once in your root module.
The DateAdapterRootModule
provide the adapter implementation for GrDate
and a default date format.
GR_DATE_FORMAT_DATE_FNS
pattern value is P
.
To change default date format, provide a new pattern value for GR_DATE_FORMAT
injector. Read the date-fns
format docs to see all available patterns.
Creating your own adapter
Create your adapter implementation class extending GrDate
abstraction:
import {Inject, Injectable} from '@angular/core';
import {GrDate} from '@lakea/gravity/cdk';
@Injectable()
export class GrDateAdapter extends GrDate {
constructor(@Inject(GR_DATE_FORMAT) private _dateFormat: string) {
super();
}
public add(date: Date, value: number, type: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'): Date {
// YOUR IMPLEMENTATION
}
public subs(date: Date, value: number, type: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'): Date {
// YOUR IMPLEMENTATION
}
public isBetween(date: Date, start: Date, end: Date): boolean {
// YOUR IMPLEMENTATION
}
public set(
date: Date,
values: {
year?: number;
month?: number;
date?: number;
hours?: number;
minutes?: number;
seconds?: number;
milliseconds?: number;
}
): Date {
// YOUR IMPLEMENTATION
}
public formatDate(date: Date, dateFormat?: string): string {
// YOUR IMPLEMENTATION
}
public toDate(value: string, fromFormat?: string): Date {
// YOUR IMPLEMENTATION
}
public toISO(date: Date): string {
// YOUR IMPLEMENTATION
}
public toUnix(date: Date): number {
// YOUR IMPLEMENTATION
}
public unixToDate(value: number): Date {
// YOUR IMPLEMENTATION
}
}
So, provide it on your application root module (maybe app.module.ts
), like this:
providers: [
{
provide: GrDate,
useClass: GrDateAdapter,
}
]