coject-hijri 1.0.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter/Adapter.d.ts +34 -0
- package/adapter/Adapter.js +190 -0
- package/adapter/index.d.ts +1 -0
- package/adapter/index.js +1 -0
- package/adapter/node/Adapter.js +199 -0
- package/adapter/node/index.js +12 -0
- package/adapter/package.json +6 -0
- package/coject-hijri.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import defaultHMoment, { Moment } from 'moment-hijri';
|
|
2
|
+
import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
|
|
3
|
+
import { AdapterOptions, DateBuilderReturnType, FieldFormatTokenMap, MuiPickersAdapter } from '@mui/x-date-pickers/models';
|
|
4
|
+
declare module '@mui/x-date-pickers/models' {
|
|
5
|
+
interface PickerValidDateLookup {
|
|
6
|
+
'moment-hijri': Moment;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare class AdapterMomentHijri extends AdapterMoment implements MuiPickersAdapter<Moment, string> {
|
|
10
|
+
lib: string;
|
|
11
|
+
moment: typeof defaultHMoment;
|
|
12
|
+
isTimezoneCompatible: boolean;
|
|
13
|
+
formatTokenMap: FieldFormatTokenMap;
|
|
14
|
+
constructor({ formats, instance }?: AdapterOptions<string, typeof defaultHMoment>);
|
|
15
|
+
date: <T extends string | null | undefined>(value?: T | undefined) => DateBuilderReturnType<T, defaultHMoment.Moment>;
|
|
16
|
+
getTimezone: () => string;
|
|
17
|
+
setTimezone: (value: Moment) => Moment;
|
|
18
|
+
parse: (value: string, format: string) => defaultHMoment.Moment | null;
|
|
19
|
+
formatNumber: (numberToFormat: string) => string;
|
|
20
|
+
startOfYear: (value: Moment) => defaultHMoment.Moment;
|
|
21
|
+
startOfMonth: (value: Moment) => defaultHMoment.Moment;
|
|
22
|
+
endOfYear: (value: Moment) => defaultHMoment.Moment;
|
|
23
|
+
endOfMonth: (value: Moment) => defaultHMoment.Moment;
|
|
24
|
+
addYears: (value: Moment, amount: number) => defaultHMoment.Moment;
|
|
25
|
+
addMonths: (value: Moment, amount: number) => defaultHMoment.Moment;
|
|
26
|
+
getYear: (value: Moment) => number;
|
|
27
|
+
getMonth: (value: Moment) => number;
|
|
28
|
+
getDate: (value: Moment) => number;
|
|
29
|
+
setYear: (value: Moment, year: number) => defaultHMoment.Moment;
|
|
30
|
+
setMonth: (value: Moment, month: number) => defaultHMoment.Moment;
|
|
31
|
+
setDate: (value: Moment, date: number) => defaultHMoment.Moment;
|
|
32
|
+
getWeekNumber: (value: Moment) => number;
|
|
33
|
+
getYearRange: ([start, end]: [Moment, Moment]) => defaultHMoment.Moment[];
|
|
34
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import defaultHMoment from '../coject-hijri';
|
|
3
|
+
import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
|
|
4
|
+
const formatTokenMap = {
|
|
5
|
+
// Year
|
|
6
|
+
iY: {
|
|
7
|
+
sectionType: 'year',
|
|
8
|
+
contentType: 'letter'
|
|
9
|
+
},
|
|
10
|
+
iYY: {
|
|
11
|
+
sectionType: 'year',
|
|
12
|
+
contentType: 'letter'
|
|
13
|
+
},
|
|
14
|
+
iYYYY: {
|
|
15
|
+
sectionType: 'year',
|
|
16
|
+
contentType: 'letter'
|
|
17
|
+
},
|
|
18
|
+
// Month
|
|
19
|
+
iM: 'month',
|
|
20
|
+
iMM: 'month',
|
|
21
|
+
iMMM: {
|
|
22
|
+
sectionType: 'month',
|
|
23
|
+
contentType: 'letter'
|
|
24
|
+
},
|
|
25
|
+
iMMMM: {
|
|
26
|
+
sectionType: 'month',
|
|
27
|
+
contentType: 'letter'
|
|
28
|
+
},
|
|
29
|
+
// Day of the month
|
|
30
|
+
iD: {
|
|
31
|
+
sectionType: 'day',
|
|
32
|
+
contentType: 'digit',
|
|
33
|
+
maxLength: 2
|
|
34
|
+
},
|
|
35
|
+
iDD: 'day',
|
|
36
|
+
// Meridiem
|
|
37
|
+
A: 'meridiem',
|
|
38
|
+
a: 'meridiem',
|
|
39
|
+
// Hours
|
|
40
|
+
H: {
|
|
41
|
+
sectionType: 'hours',
|
|
42
|
+
contentType: 'digit',
|
|
43
|
+
maxLength: 2
|
|
44
|
+
},
|
|
45
|
+
HH: 'hours',
|
|
46
|
+
h: {
|
|
47
|
+
sectionType: 'hours',
|
|
48
|
+
contentType: 'digit',
|
|
49
|
+
maxLength: 2
|
|
50
|
+
},
|
|
51
|
+
hh: 'hours',
|
|
52
|
+
// Minutes
|
|
53
|
+
m: {
|
|
54
|
+
sectionType: 'minutes',
|
|
55
|
+
contentType: 'digit',
|
|
56
|
+
maxLength: 2
|
|
57
|
+
},
|
|
58
|
+
mm: 'minutes',
|
|
59
|
+
// Seconds
|
|
60
|
+
s: {
|
|
61
|
+
sectionType: 'seconds',
|
|
62
|
+
contentType: 'digit',
|
|
63
|
+
maxLength: 2
|
|
64
|
+
},
|
|
65
|
+
ss: 'seconds'
|
|
66
|
+
};
|
|
67
|
+
const defaultFormats = {
|
|
68
|
+
year: 'iYYYY',
|
|
69
|
+
month: 'iMMMM',
|
|
70
|
+
monthShort: 'iMMM',
|
|
71
|
+
dayOfMonth: 'iD',
|
|
72
|
+
dayOfMonthFull: 'iD',
|
|
73
|
+
weekday: 'dddd',
|
|
74
|
+
weekdayShort: 'ddd',
|
|
75
|
+
hours24h: 'HH',
|
|
76
|
+
hours12h: 'hh',
|
|
77
|
+
meridiem: 'A',
|
|
78
|
+
minutes: 'mm',
|
|
79
|
+
seconds: 'ss',
|
|
80
|
+
fullDate: 'iYYYY, iMMMM Do',
|
|
81
|
+
keyboardDateTime: 'iYYYY/iMM/iDD LT',
|
|
82
|
+
shortDate: 'iD iMMM',
|
|
83
|
+
normalDate: 'dddd, iD iMMM',
|
|
84
|
+
normalDateWithWeekday: 'DD iMMMM',
|
|
85
|
+
fullTime: 'LT',
|
|
86
|
+
fullTime12h: 'hh:mm A',
|
|
87
|
+
fullTime24h: 'HH:mm',
|
|
88
|
+
keyboardDate: 'iYYYY/iMM/iDD',
|
|
89
|
+
keyboardDateTime12h: 'iYYYY/iMM/iDD hh:mm A',
|
|
90
|
+
keyboardDateTime24h: 'iYYYY/iMM/iDD HH:mm'
|
|
91
|
+
};
|
|
92
|
+
const NUMBER_SYMBOL_MAP = {
|
|
93
|
+
'1': '١',
|
|
94
|
+
'2': '٢',
|
|
95
|
+
'3': '٣',
|
|
96
|
+
'4': '٤',
|
|
97
|
+
'5': '٥',
|
|
98
|
+
'6': '٦',
|
|
99
|
+
'7': '٧',
|
|
100
|
+
'8': '٨',
|
|
101
|
+
'9': '٩',
|
|
102
|
+
'0': '٠'
|
|
103
|
+
};
|
|
104
|
+
export class Adapter extends AdapterMoment {
|
|
105
|
+
constructor({
|
|
106
|
+
formats,
|
|
107
|
+
instance
|
|
108
|
+
} = {}) {
|
|
109
|
+
super({
|
|
110
|
+
locale: 'ar-SA',
|
|
111
|
+
instance
|
|
112
|
+
});
|
|
113
|
+
this.lib = 'coject-hijri';
|
|
114
|
+
this.moment = void 0;
|
|
115
|
+
this.isTimezoneCompatible = false;
|
|
116
|
+
this.formatTokenMap = formatTokenMap;
|
|
117
|
+
this.date = value => {
|
|
118
|
+
if (value === null) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return this.moment(value).locale('ar-SA');
|
|
122
|
+
};
|
|
123
|
+
this.getTimezone = () => {
|
|
124
|
+
return 'default';
|
|
125
|
+
};
|
|
126
|
+
this.setTimezone = value => {
|
|
127
|
+
return value;
|
|
128
|
+
};
|
|
129
|
+
this.parse = (value, format) => {
|
|
130
|
+
if (value === '') {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
return this.moment(value, format, true).locale('ar-SA');
|
|
134
|
+
};
|
|
135
|
+
this.formatNumber = numberToFormat => {
|
|
136
|
+
return numberToFormat.replace(/\d/g, match => NUMBER_SYMBOL_MAP[match]).replace(/,/g, '،');
|
|
137
|
+
};
|
|
138
|
+
this.startOfYear = value => {
|
|
139
|
+
return value.clone().startOf('iYear');
|
|
140
|
+
};
|
|
141
|
+
this.startOfMonth = value => {
|
|
142
|
+
return value.clone().startOf('iMonth');
|
|
143
|
+
};
|
|
144
|
+
this.endOfYear = value => {
|
|
145
|
+
return value.clone().endOf('iYear');
|
|
146
|
+
};
|
|
147
|
+
this.endOfMonth = value => {
|
|
148
|
+
return value.clone().endOf('iMonth');
|
|
149
|
+
};
|
|
150
|
+
this.addYears = (value, amount) => {
|
|
151
|
+
return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iYear') : value.clone().add(amount, 'iYear');
|
|
152
|
+
};
|
|
153
|
+
this.addMonths = (value, amount) => {
|
|
154
|
+
return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iMonth') : value.clone().add(amount, 'iMonth');
|
|
155
|
+
};
|
|
156
|
+
this.getYear = value => {
|
|
157
|
+
return value.iYear();
|
|
158
|
+
};
|
|
159
|
+
this.getMonth = value => {
|
|
160
|
+
return value.iMonth();
|
|
161
|
+
};
|
|
162
|
+
this.getDate = value => {
|
|
163
|
+
return value.iDate();
|
|
164
|
+
};
|
|
165
|
+
this.setYear = (value, year) => {
|
|
166
|
+
return value.clone().iYear(year);
|
|
167
|
+
};
|
|
168
|
+
this.setMonth = (value, month) => {
|
|
169
|
+
return value.clone().iMonth(month);
|
|
170
|
+
};
|
|
171
|
+
this.setDate = (value, date) => {
|
|
172
|
+
return value.clone().iDate(date);
|
|
173
|
+
};
|
|
174
|
+
this.getWeekNumber = value => {
|
|
175
|
+
return value.iWeek();
|
|
176
|
+
};
|
|
177
|
+
this.getYearRange = ([start, end]) => {
|
|
178
|
+
if (start.isBefore('1937-03-14')) {
|
|
179
|
+
throw new Error('min date must be on or after 1356-01-01 H (1937-03-14)');
|
|
180
|
+
}
|
|
181
|
+
if (end.isAfter('2076-11-26')) {
|
|
182
|
+
throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
|
|
183
|
+
}
|
|
184
|
+
return super.getYearRange([start, end]);
|
|
185
|
+
};
|
|
186
|
+
this.moment = instance || defaultHMoment;
|
|
187
|
+
this.locale = 'ar-SA';
|
|
188
|
+
this.formats = _extends({}, defaultFormats, formats);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AdapterMomentHijri } from './AdapterMomentHijri';
|
package/adapter/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Adapter } from './adapter';
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.Adapter = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _cojectHijri = _interopRequireDefault(require("../../coject-hijri"));
|
|
10
|
+
var _AdapterMoment = require("@mui/x-date-pickers/AdapterMoment");
|
|
11
|
+
|
|
12
|
+
const formatTokenMap = {
|
|
13
|
+
// Year
|
|
14
|
+
iY: {
|
|
15
|
+
sectionType: 'year',
|
|
16
|
+
contentType: 'letter'
|
|
17
|
+
},
|
|
18
|
+
iYY: {
|
|
19
|
+
sectionType: 'year',
|
|
20
|
+
contentType: 'letter'
|
|
21
|
+
},
|
|
22
|
+
iYYYY: {
|
|
23
|
+
sectionType: 'year',
|
|
24
|
+
contentType: 'letter'
|
|
25
|
+
},
|
|
26
|
+
// Month
|
|
27
|
+
iM: 'month',
|
|
28
|
+
iMM: 'month',
|
|
29
|
+
iMMM: {
|
|
30
|
+
sectionType: 'month',
|
|
31
|
+
contentType: 'letter'
|
|
32
|
+
},
|
|
33
|
+
iMMMM: {
|
|
34
|
+
sectionType: 'month',
|
|
35
|
+
contentType: 'letter'
|
|
36
|
+
},
|
|
37
|
+
// Day of the month
|
|
38
|
+
iD: {
|
|
39
|
+
sectionType: 'day',
|
|
40
|
+
contentType: 'digit',
|
|
41
|
+
maxLength: 2
|
|
42
|
+
},
|
|
43
|
+
iDD: 'day',
|
|
44
|
+
// Meridiem
|
|
45
|
+
A: 'meridiem',
|
|
46
|
+
a: 'meridiem',
|
|
47
|
+
// Hours
|
|
48
|
+
H: {
|
|
49
|
+
sectionType: 'hours',
|
|
50
|
+
contentType: 'digit',
|
|
51
|
+
maxLength: 2
|
|
52
|
+
},
|
|
53
|
+
HH: 'hours',
|
|
54
|
+
h: {
|
|
55
|
+
sectionType: 'hours',
|
|
56
|
+
contentType: 'digit',
|
|
57
|
+
maxLength: 2
|
|
58
|
+
},
|
|
59
|
+
hh: 'hours',
|
|
60
|
+
// Minutes
|
|
61
|
+
m: {
|
|
62
|
+
sectionType: 'minutes',
|
|
63
|
+
contentType: 'digit',
|
|
64
|
+
maxLength: 2
|
|
65
|
+
},
|
|
66
|
+
mm: 'minutes',
|
|
67
|
+
// Seconds
|
|
68
|
+
s: {
|
|
69
|
+
sectionType: 'seconds',
|
|
70
|
+
contentType: 'digit',
|
|
71
|
+
maxLength: 2
|
|
72
|
+
},
|
|
73
|
+
ss: 'seconds'
|
|
74
|
+
};
|
|
75
|
+
const defaultFormats = {
|
|
76
|
+
year: 'iYYYY',
|
|
77
|
+
month: 'iMMMM',
|
|
78
|
+
monthShort: 'iMMM',
|
|
79
|
+
dayOfMonth: 'iD',
|
|
80
|
+
dayOfMonthFull: 'iD',
|
|
81
|
+
weekday: 'dddd',
|
|
82
|
+
weekdayShort: 'ddd',
|
|
83
|
+
hours24h: 'HH',
|
|
84
|
+
hours12h: 'hh',
|
|
85
|
+
meridiem: 'A',
|
|
86
|
+
minutes: 'mm',
|
|
87
|
+
seconds: 'ss',
|
|
88
|
+
fullDate: 'iYYYY, iMMMM Do',
|
|
89
|
+
keyboardDateTime: 'iYYYY/iMM/iDD LT',
|
|
90
|
+
shortDate: 'iD iMMM',
|
|
91
|
+
normalDate: 'dddd, iD iMMM',
|
|
92
|
+
normalDateWithWeekday: 'DD iMMMM',
|
|
93
|
+
fullTime: 'LT',
|
|
94
|
+
fullTime12h: 'hh:mm A',
|
|
95
|
+
fullTime24h: 'HH:mm',
|
|
96
|
+
keyboardDate: 'iYYYY/iMM/iDD',
|
|
97
|
+
keyboardDateTime12h: 'iYYYY/iMM/iDD hh:mm A',
|
|
98
|
+
keyboardDateTime24h: 'iYYYY/iMM/iDD HH:mm'
|
|
99
|
+
};
|
|
100
|
+
const NUMBER_SYMBOL_MAP = {
|
|
101
|
+
'1': '١',
|
|
102
|
+
'2': '٢',
|
|
103
|
+
'3': '٣',
|
|
104
|
+
'4': '٤',
|
|
105
|
+
'5': '٥',
|
|
106
|
+
'6': '٦',
|
|
107
|
+
'7': '٧',
|
|
108
|
+
'8': '٨',
|
|
109
|
+
'9': '٩',
|
|
110
|
+
'0': '٠'
|
|
111
|
+
};
|
|
112
|
+
class Adapter extends _AdapterMoment.AdapterMoment {
|
|
113
|
+
constructor({
|
|
114
|
+
formats,
|
|
115
|
+
instance
|
|
116
|
+
} = {}) {
|
|
117
|
+
super({
|
|
118
|
+
locale: 'ar-SA',
|
|
119
|
+
instance
|
|
120
|
+
});
|
|
121
|
+
this.lib = 'coject-hijri';
|
|
122
|
+
this.moment = void 0;
|
|
123
|
+
this.isTimezoneCompatible = false;
|
|
124
|
+
this.formatTokenMap = formatTokenMap;
|
|
125
|
+
this.date = value => {
|
|
126
|
+
if (value === null) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return this.moment(value).locale('ar-SA');
|
|
130
|
+
};
|
|
131
|
+
this.getTimezone = () => {
|
|
132
|
+
return 'default';
|
|
133
|
+
};
|
|
134
|
+
this.setTimezone = value => {
|
|
135
|
+
return value;
|
|
136
|
+
};
|
|
137
|
+
this.parse = (value, format) => {
|
|
138
|
+
if (value === '') {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
return this.moment(value, format, true).locale('ar-SA');
|
|
142
|
+
};
|
|
143
|
+
this.formatNumber = numberToFormat => {
|
|
144
|
+
return numberToFormat.replace(/\d/g, match => NUMBER_SYMBOL_MAP[match]).replace(/,/g, '،');
|
|
145
|
+
};
|
|
146
|
+
this.startOfYear = value => {
|
|
147
|
+
return value.clone().startOf('iYear');
|
|
148
|
+
};
|
|
149
|
+
this.startOfMonth = value => {
|
|
150
|
+
return value.clone().startOf('iMonth');
|
|
151
|
+
};
|
|
152
|
+
this.endOfYear = value => {
|
|
153
|
+
return value.clone().endOf('iYear');
|
|
154
|
+
};
|
|
155
|
+
this.endOfMonth = value => {
|
|
156
|
+
return value.clone().endOf('iMonth');
|
|
157
|
+
};
|
|
158
|
+
this.addYears = (value, amount) => {
|
|
159
|
+
return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iYear') : value.clone().add(amount, 'iYear');
|
|
160
|
+
};
|
|
161
|
+
this.addMonths = (value, amount) => {
|
|
162
|
+
return amount < 0 ? value.clone().subtract(Math.abs(amount), 'iMonth') : value.clone().add(amount, 'iMonth');
|
|
163
|
+
};
|
|
164
|
+
this.getYear = value => {
|
|
165
|
+
return value.iYear();
|
|
166
|
+
};
|
|
167
|
+
this.getMonth = value => {
|
|
168
|
+
return value.iMonth();
|
|
169
|
+
};
|
|
170
|
+
this.getDate = value => {
|
|
171
|
+
return value.iDate();
|
|
172
|
+
};
|
|
173
|
+
this.setYear = (value, year) => {
|
|
174
|
+
return value.clone().iYear(year);
|
|
175
|
+
};
|
|
176
|
+
this.setMonth = (value, month) => {
|
|
177
|
+
return value.clone().iMonth(month);
|
|
178
|
+
};
|
|
179
|
+
this.setDate = (value, date) => {
|
|
180
|
+
return value.clone().iDate(date);
|
|
181
|
+
};
|
|
182
|
+
this.getWeekNumber = value => {
|
|
183
|
+
return value.iWeek();
|
|
184
|
+
};
|
|
185
|
+
this.getYearRange = ([start, end]) => {
|
|
186
|
+
if (start.isBefore('1937-03-14')) {
|
|
187
|
+
throw new Error('min date must be on or after 1356-01-01 H (1937-03-14)');
|
|
188
|
+
}
|
|
189
|
+
if (end.isAfter('2076-11-26')) {
|
|
190
|
+
throw new Error('max date must be on or before 1499-12-29 H (2076-11-26)');
|
|
191
|
+
}
|
|
192
|
+
return super.getYearRange([start, end]);
|
|
193
|
+
};
|
|
194
|
+
this.moment = instance || _cojectHijri.default;
|
|
195
|
+
this.locale = 'ar-SA';
|
|
196
|
+
this.formats = (0, _extends2.default)({}, defaultFormats, formats);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.Adapter = Adapter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module 'coject-hijri';
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coject-hijri",
|
|
3
|
+
"version": "1.3.0",
|
|
3
4
|
"description": "A Hijri calendar (Based on Umm al-Qura calculations) plugin for moment.js.",
|
|
4
5
|
"author": "Akwad",
|
|
5
6
|
"license": "MIT",
|
|
@@ -23,7 +24,6 @@
|
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"moment": "^2.30.0"
|
|
25
26
|
},
|
|
26
|
-
"version": "1.0.0",
|
|
27
27
|
"scripts": {
|
|
28
28
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
29
29
|
},
|