ng-jalali-date-time
Jalali date / month / range picker for Angular with Material Design support
This library uses Angular 10
Table of contents
Installation
# Create new Angular Application
ng new my-application
# Go to application directory
cd my-application
# Add Material support to your application
# Choose YES when you asked for setting up "browser animations for Angular Material"
ng add @angular/material
# Install ng-jalali-date-time and it dependencies, using NPM
npm install --save jalali-date-time ng-jalali-date-time
Usage
import NgJalaliDateTimeModule
import { NgJalaliDateTimeModule } from 'ng-jalali-date-time';
@NgModule({
...
imports: [
...
NgJalaliDateTimeModule
],
...
})
jalali-date-time Directive
<span jalali-date-time></span>
Properties
Name | Type | Description |
---|
form | FormGroup | Components FormGroup (Reactive Forms) |
name | string | Form object name (Reactive Forms) |
appearance | string | Form object appearance (legacy, standard, fill, outline) |
config | NgJalaliDateTimeConfigInterface | Object configurations |
css | NgJalaliDateTimeCssInterface | Object css styles |
date | string | Default date value |
time | string | Default time value |
label | string | mat-form-field label |
Events
Sample
# component.ts
import {
NgJalaliDateTimeConfigInterface,
NgJalaliDateTimeCssInterface,
NgJalaliDateTimeValueInterface
} from 'ng-jalali-date-time';
export class MyComponent implements OnInit {
public form: FormGroup
public name: string = 'date';
public config: NgJalaliDateTimeConfigInterface = {
required: true,
min: '1300-01-01',
max: '1400-01-01',
reset: true,
error: 'مشخص کردن مقدار الزامی است',
time: true,
second: false
};
public css: NgJalaliDateTimeCssInterface = {
font: 'yekan'
};
public date: string = '';
public time: string = '';
public label: string = 'انتخاب تاریخ';
ngOnInit() {
this.form = new FormGroup({})
}
dateChanged(value: NgJalaliDateTimeValueInterface) {
console.log(value);
}
}
# component.html
<span
jalali-date-time
[form]="form"
[name]="name"
[config]="config"
[css]="css"
[date]="date"
[time]="time"
[label]="label"
(changed)="dateChanged($event)"
>
</span>
jalali-month Directive
<span jalali-month></span>
Properties
Name | Type | Description |
---|
form | FormGroup | Components FormGroup (Reactive Forms) |
name | string | Form object name (Reactive Forms) |
appearance | string | Form object appearance (legacy, standard, fill, outline) |
config | NgJalaliDateTimeConfigInterface | Object configurations |
css | NgJalaliDateTimeCssInterface | Object css styles |
month | string | Default month value |
label | string | mat-form-field label |
Events
Sample
# component.ts
import {
NgJalaliDateTimeConfigInterface,
NgJalaliDateTimeCssInterface,
NgJalaliMonthValueInterface
} from 'ng-jalali-date-time';
export class MyComponent implements OnInit {
public form: FormGroup
public name: string = 'date';
public config: NgJalaliDateTimeConfigInterface = {
required: true,
min: '1300-01',
max: '1400-01',
reset: true,
error: 'مشخص کردن مقدار الزامی است'
};
public css: NgJalaliDateTimeCssInterface = {
font: 'yekan'
};
public month: string = '';
public label: string = 'انتخاب ماه';
ngOnInit() {
this.form = new FormGroup({})
}
dateChanged(value: NgJalaliMonthValueInterface) {
console.log(value);
}
}
# component.html
<span
jalali-month
[form]="form"
[name]="name"
[config]="config"
[css]="css"
[month]="month"
[label]="label"
(changed)="dateChanged($event)"
>
</span>
jalali-range Directive
<span jalali-range></span>
Properties
Name | Type | Description |
---|
form | FormGroup | Components FormGroup (Reactive Forms) |
name | string | Form object name (Reactive Forms) |
appearance | string | Form object appearance (legacy, standard, fill, outline) |
config | NgJalaliDateTimeConfigInterface | Object configurations |
css | NgJalaliDateTimeCssInterface | Object css styles |
from | string | Default range's first date (from) value |
to | string | Default range's last date (to) value |
label | string | mat-form-field label |
Events
Sample
# component.ts
import {
NgJalaliDateTimeConfigInterface,
NgJalaliDateTimeCssInterface,
NgJalaliRangeValueInterface
} from 'ng-jalali-date-time';
export class MyComponent implements OnInit {
public form: FormGroup
public name: string = 'date';
public config: NgJalaliDateTimeConfigInterface = {
required: true,
min: '1300-01-01',
max: '1400-01-01',
reset: true,
error: 'مشخص کردن مقدار الزامی است'
};
public css: NgJalaliDateTimeCssInterface = {
font: 'yekan'
};
public from: string = '';
public to: string = '';
public label: string = 'انتخاب دوره زمانی';
ngOnInit() {
this.form = new FormGroup({})
}
dateChanged(value: NgJalaliRangeValueInterface) {
console.log(value);
}
}
# component.html
<span
jalali-date-time
[form]="form"
[name]="name"
[config]="config"
[css]="css"
[from]="from"
[to]="to"
[label]="label"
(changed)="dateChanged($event)"
>
</span>
Interfaces
NgJalaliDateTimeConfigInterface
Name | Type | Description |
---|
required | boolean | Set object as required on Reactive Forms |
min | string | Minimum acceptable date value |
max | string | Maximum acceptable date value |
reset | boolean | Show reset button if date is selected |
error | string | Error message (Required object) |
time | boolean | Show time selector |
second | boolean | Active second selector (if time value is true) |
NgJalaliDateTimeCssInterface
jalali-date-time Directive CSS styles
Name | Type | Description |
---|
name | NgStyle object | Day names CSS style |
time | NgStyle object | Time selectors (inputs) CSS style |
jalali-range Directive CSS styles
Name | Type | Description |
---|
tool | NgStyle object | Selector tools CSS style |
custom | NgStyle object | Custom range selector CSS style |
confirm | NgStyle object | Confirm selector CSS style |
name | NgStyle object | Day names CSS style |
date | NgStyle object | Custom date title CSS style |
NgJalaliDateTimeValueInterface
Name | Type |
---|
jalali | string |
gregorian | string |
date | Date |
time | string |
timestamp | number |
Sample
{
"jalali": "1398-07-27",
"gregorian": "2019-10-19",
"date": "2019-10-19T09:04:00.000Z",
"time": "12:34:00",
"timestamp": 1571475840
}
NgJalaliMonthValueInterface
Name | Type |
---|
month | string |
days | number |
gregorian | Object |
gregorian .first | string |
gregorian .last | string |
Sample
{
"month": "1398-07",
"days": 30,
"gregorian": {
"first": "2019-09-23",
"last": "2019-10-22"
}
}
NgJalaliRangeValueInterface
Name | Type |
---|
range | string |
from | string |
to | string |
days | number |
hours | number |
minutes | number |
seconds | number |
gregorian | Object |
gregorian .from | string |
gregorian .to | string |
Sample
{
"range": "1398-07-01|1398-07-30",
"from": "1398-07-01",
"to": "1398-07-30",
"days": 30,
"hours": 720,
"minutes": 43200,
"seconds": 2592000,
"gregorian": {
"from": "2019-09-23",
"to": "2019-10-22"
}
}
Pipes
Pipe | Sample | Result |
---|
jalaliDate (date) | '1398-07-27' | jalaliDate | Sat Oct 19 2019 00:00:00 GMT+0330 (Iran Standard Time) |
jalaliDate (date/time) | '1398-07-27 16:52:23' | jalaliDate | Sat Oct 19 2019 16:52:23 GMT+0330 (Iran Standard Time) |
jalaliMonth | '1398-07' | jalaliMonth | مهر ۱۳۹۸ |
jalaliRange | '1398-07-01|1398-07-30' | jalaliRange | ۱ تا ۳۰ مهر ۱۳۹۸ |
jalaliFull (string) | '1398-07-27 16:52:23' | jalaliFull | شنبه، ۲۷ مهر ۱۳۹۸ ۱۶:۵۲:۲۳ |
jalaliFull (timestamp) | 1571491343 | jalaliFull | شنبه، ۲۷ مهر ۱۳۹۸ ۱۶:۵۲:۲۳ |
jalaliTitle (string) | '1398-07-27' | jalaliTitle | شنبه، ۲۷ مهر ۱۳۹۸ |
jalaliTitle (timestamp) | 1571491343 | jalaliTitle | شنبه، ۲۷ مهر ۱۳۹۸ |
jalaliTimestamp (date) | '1398-07-27' | jalaliTimestamp | 1571430600 |
jalaliTimestamp (date/time) | '1398-07-27 16:52:23' | jalaliTimestamp | 1571491343 |
jalaliDays (range) | '1398-07-01|1398-07-30' | jalaliDays | 30 |
jalaliDays (date) | '1398-07-27' | jalaliDays | 1 |