-
Notifications
You must be signed in to change notification settings - Fork 11
/
au-date-picker.js
93 lines (80 loc) · 3.08 KB
/
au-date-picker.js
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import Component from '@glimmer/component';
import { action } from "@ember/object";
import { tracked } from "@glimmer/tracking";
export default class AuDatePickerComponent extends Component {
//Default Localization
@tracked localization = {
buttonLabel: 'Choose date',
placeholder: 'DD-MM-YYYY',
selectedDateMessage: 'Selected date is',
prevMonthLabel: 'Previous month',
nextMonthLabel: 'Next month',
monthSelectLabel: 'Month',
yearSelectLabel: 'Year',
closeLabel: 'Close window',
keyboardInstruction: 'You can use arrow keys to navigate dates',
calendarHeading: 'Choose a date',
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
};
// Default Adapter
@tracked adapter = {
parse: function(value = '', createDate) {
const matches = value.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/);
if (matches) {
return createDate(matches[3], matches[2], matches[1]);
}
},
format: function(date) {
return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`;
},
};
constructor(owner, args) {
super(owner, args);
this._assignLocalization(args);
this._assignAdapter(args);
}
@action _assignLocalization(args){
let localArgs = args.localization;
// Check if localization argument has been defined
if (localArgs) {
// Check if localization argument passed in is of type object
if (typeof localArgs != 'object') {
throw SyntaxError(`The passed in value for the localization argument needs to be of type "object", You passed in a "${typeof localArgs}"` ) ;
}
// Update localization properties where needed
for (const [key, value] of Object.entries(localArgs)) {
if (this.localization[key]) {
this.localization[key] = value;
} else {
throw Error(`"${key}" is not a property of localization, maybe it is just a typo?`);
}
}
}
}
@action _assignAdapter(args){
let adaptArgs = args.adapter;
// Check if adapter argument has been defined
if (adaptArgs) {
// Check if adapter argument passed in is of type object
if (typeof adaptArgs != 'object') {
throw SyntaxError(`The passed in value for the adapter argument needs to be of type "object", You passed in a "${typeof adaptArgs}"`);
}
// Update adapter properties where needed
for (const [key, value] of Object.entries(adaptArgs)) {
if (this.adapter[key]) {
this.adapter[key] = value;
} else {
throw Error(`"${key}" is not a property of adapter, maybe it is just a typo?`);
}
}
}
}
@action callBackParent(context){
const isoDate = new Date(context.detail.value).toISOString().split('T')[0];
if(this.args.onChange != undefined){
this.args.onChange(isoDate);
}
}
}