@react-fabric/date 1.0.0-beta.47 → 1.0.0-beta.48
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/dist/cjs/display/DateDisplay.js +2 -1
- package/dist/cjs/display/DateDuration.js +127 -0
- package/dist/cjs/i18n/ar.json.js +191 -3
- package/dist/cjs/i18n/en.json.js +63 -1
- package/dist/cjs/index.js +2 -0
- package/dist/esm/display/DateDisplay.js +2 -1
- package/dist/esm/display/DateDuration.js +127 -0
- package/dist/esm/i18n/ar.json.js +191 -3
- package/dist/esm/i18n/en.json.js +63 -2
- package/dist/esm/index.js +1 -0
- package/dist/types/display/DateDisplay.d.ts +2 -2
- package/dist/types/display/DateDuration.d.ts +15 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +5 -5
- package/src/display/DateDisplay.tsx +10 -3
- package/src/display/DateDuration.tsx +164 -0
- package/src/i18n/ar.json +190 -1
- package/src/i18n/en.json +60 -0
- package/src/index.ts +1 -0
package/dist/esm/i18n/ar.json.js
CHANGED
|
@@ -11,11 +11,199 @@ var label = {
|
|
|
11
11
|
hijri: "هجري",
|
|
12
12
|
gregorian: "ميلادي"
|
|
13
13
|
};
|
|
14
|
-
var
|
|
14
|
+
var relative = {
|
|
15
|
+
before: {
|
|
16
|
+
now: "الآن",
|
|
17
|
+
years: "{{count}} منذ عام",
|
|
18
|
+
months: "{{count}} منذ شهر",
|
|
19
|
+
weeks: "{{count}} قبل أسبوع",
|
|
20
|
+
days: "{{count}} منذ يوم",
|
|
21
|
+
hours: "{{count}} منذ ساعة",
|
|
22
|
+
minutes: "{{count}} منذ دقيقة",
|
|
23
|
+
seconds: "{{count}} قبل الثاني",
|
|
24
|
+
yearsX: "بالكاد {{count}} منذ عام",
|
|
25
|
+
monthsX: "بالكاد {{count}} منذ شهر",
|
|
26
|
+
weeksX: "بالكاد {{count}} قبل أسبوع",
|
|
27
|
+
daysX: "بالكاد {{count}} منذ يوم",
|
|
28
|
+
hoursX: "بالكاد {{count}} منذ ساعة",
|
|
29
|
+
minutesX: "بالكاد {{count}} منذ دقيقة",
|
|
30
|
+
years_zero: "{{count}} منذ سنوات",
|
|
31
|
+
years_one: "{{count}} منذ عام",
|
|
32
|
+
years_two: "{{count}} منذ سنوات",
|
|
33
|
+
years_few: "{{count}} منذ سنوات",
|
|
34
|
+
years_many: "{{count}} منذ سنوات",
|
|
35
|
+
years_other: "{{count}} منذ سنوات",
|
|
36
|
+
months_zero: "{{count}} منذ أشهر",
|
|
37
|
+
months_one: "{{count}} منذ شهر",
|
|
38
|
+
months_two: "{{count}} منذ أشهر",
|
|
39
|
+
months_few: "{{count}} منذ أشهر",
|
|
40
|
+
months_many: "{{count}} منذ أشهر",
|
|
41
|
+
months_other: "{{count}} منذ أشهر",
|
|
42
|
+
weeks_zero: "{{count}} منذ أسابيع",
|
|
43
|
+
weeks_one: "{{count}} قبل أسبوع",
|
|
44
|
+
weeks_two: "{{count}} منذ أسابيع",
|
|
45
|
+
weeks_few: "{{count}} منذ أسابيع",
|
|
46
|
+
weeks_many: "{{count}} منذ أسابيع",
|
|
47
|
+
weeks_other: "{{count}} منذ أسابيع",
|
|
48
|
+
days_zero: "{{count}} منذ أيام",
|
|
49
|
+
days_one: "{{count}} منذ يوم",
|
|
50
|
+
days_two: "{{count}} منذ أيام",
|
|
51
|
+
days_few: "{{count}} منذ أيام",
|
|
52
|
+
days_many: "{{count}} منذ أيام",
|
|
53
|
+
days_other: "{{count}} منذ أيام",
|
|
54
|
+
hours_zero: "{{count}} منذ ساعات",
|
|
55
|
+
hours_one: "{{count}} منذ ساعة",
|
|
56
|
+
hours_two: "{{count}} منذ ساعات",
|
|
57
|
+
hours_few: "{{count}} منذ ساعات",
|
|
58
|
+
hours_many: "{{count}} منذ ساعات",
|
|
59
|
+
hours_other: "{{count}} منذ ساعات",
|
|
60
|
+
minutes_zero: "{{count}} منذ دقائق",
|
|
61
|
+
minutes_one: "{{count}} منذ دقيقة",
|
|
62
|
+
minutes_two: "{{count}} منذ دقائق",
|
|
63
|
+
minutes_few: "{{count}} منذ دقائق",
|
|
64
|
+
minutes_many: "{{count}} منذ دقائق",
|
|
65
|
+
minutes_other: "{{count}} منذ دقائق",
|
|
66
|
+
seconds_zero: "{{count}} قبل ثوان",
|
|
67
|
+
seconds_one: "{{count}} قبل الثاني",
|
|
68
|
+
seconds_two: "{{count}} قبل ثوان",
|
|
69
|
+
seconds_few: "{{count}} قبل ثوان",
|
|
70
|
+
seconds_many: "{{count}} قبل ثوان",
|
|
71
|
+
seconds_other: "{{count}} قبل ثوان",
|
|
72
|
+
yearsX_zero: "بالكاد {{count}} منذ سنوات",
|
|
73
|
+
yearsX_one: "بالكاد {{count}} منذ عام",
|
|
74
|
+
yearsX_two: "بالكاد {{count}} منذ سنوات",
|
|
75
|
+
yearsX_few: "بالكاد {{count}} منذ سنوات",
|
|
76
|
+
yearsX_many: "بالكاد {{count}} منذ سنوات",
|
|
77
|
+
yearsX_other: "بالكاد {{count}} منذ سنوات",
|
|
78
|
+
monthsX_zero: "بالكاد {{count}} منذ أشهر",
|
|
79
|
+
monthsX_one: "بالكاد {{count}} منذ شهر",
|
|
80
|
+
monthsX_two: "بالكاد {{count}} منذ أشهر",
|
|
81
|
+
monthsX_few: "بالكاد {{count}} منذ أشهر",
|
|
82
|
+
monthsX_many: "بالكاد {{count}} منذ أشهر",
|
|
83
|
+
monthsX_other: "بالكاد {{count}} منذ أشهر",
|
|
84
|
+
weeksX_zero: "بالكاد {{count}} منذ أسابيع",
|
|
85
|
+
weeksX_one: "بالكاد {{count}} قبل أسبوع",
|
|
86
|
+
weeksX_two: "بالكاد {{count}} منذ أسابيع",
|
|
87
|
+
weeksX_few: "بالكاد {{count}} منذ أسابيع",
|
|
88
|
+
weeksX_many: "بالكاد {{count}} منذ أسابيع",
|
|
89
|
+
weeksX_other: "بالكاد {{count}} منذ أسابيع",
|
|
90
|
+
daysX_zero: "بالكاد {{count}} منذ أيام",
|
|
91
|
+
daysX_one: "بالكاد {{count}} منذ يوم",
|
|
92
|
+
daysX_two: "بالكاد {{count}} منذ أيام",
|
|
93
|
+
daysX_few: "بالكاد {{count}} منذ أيام",
|
|
94
|
+
daysX_many: "بالكاد {{count}} منذ أيام",
|
|
95
|
+
daysX_other: "بالكاد {{count}} منذ أيام",
|
|
96
|
+
hoursX_zero: "بالكاد {{count}} منذ ساعات",
|
|
97
|
+
hoursX_one: "بالكاد {{count}} منذ ساعة",
|
|
98
|
+
hoursX_two: "بالكاد {{count}} منذ ساعات",
|
|
99
|
+
hoursX_few: "بالكاد {{count}} منذ ساعات",
|
|
100
|
+
hoursX_many: "بالكاد {{count}} منذ ساعات",
|
|
101
|
+
hoursX_other: "بالكاد {{count}} منذ ساعات",
|
|
102
|
+
minutesX_zero: "بالكاد {{count}} منذ دقائق",
|
|
103
|
+
minutesX_one: "بالكاد {{count}} منذ دقيقة",
|
|
104
|
+
minutesX_two: "بالكاد {{count}} منذ دقائق",
|
|
105
|
+
minutesX_few: "بالكاد {{count}} منذ دقائق",
|
|
106
|
+
minutesX_many: "بالكاد {{count}} منذ دقائق",
|
|
107
|
+
minutesX_other: "بالكاد {{count}} منذ دقائق"
|
|
108
|
+
},
|
|
109
|
+
after: {
|
|
110
|
+
now: "قريباً",
|
|
111
|
+
years: "{{count}} بعد عام",
|
|
112
|
+
months: "{{count}} بعد شهر",
|
|
113
|
+
weeks: "{{count}} بعد أسبوع",
|
|
114
|
+
days: "{{count}} بعد يوم",
|
|
115
|
+
hours: "{{count}} بعد ساعة",
|
|
116
|
+
minutes: "{{count}} بعد دقيقة",
|
|
117
|
+
seconds: "{{count}} الثاني في وقت لاحق",
|
|
118
|
+
yearsX: "بالكاد {{count}} بعد عام",
|
|
119
|
+
monthsX: "بالكاد {{count}} بعد شهر",
|
|
120
|
+
weeksX: "بالكاد {{count}} بعد أسبوع",
|
|
121
|
+
daysX: "بالكاد {{count}} بعد يوم",
|
|
122
|
+
hoursX: "بالكاد {{count}} بعد ساعة",
|
|
123
|
+
minutesX: "بالكاد {{count}} بعد دقيقة",
|
|
124
|
+
years_zero: "{{count}} بعد سنوات",
|
|
125
|
+
years_one: "{{count}} بعد عام",
|
|
126
|
+
years_two: "{{count}} بعد سنوات",
|
|
127
|
+
years_few: "{{count}} بعد سنوات",
|
|
128
|
+
years_many: "{{count}} بعد سنوات",
|
|
129
|
+
years_other: "{{count}} بعد سنوات",
|
|
130
|
+
months_zero: "{{count}} بعد أشهر",
|
|
131
|
+
months_one: "{{count}} بعد شهر",
|
|
132
|
+
months_two: "{{count}} بعد أشهر",
|
|
133
|
+
months_few: "{{count}} بعد أشهر",
|
|
134
|
+
months_many: "{{count}} بعد أشهر",
|
|
135
|
+
months_other: "{{count}} بعد أشهر",
|
|
136
|
+
weeks_zero: "{{count}} بعد أسابيع",
|
|
137
|
+
weeks_one: "{{count}} بعد أسبوع",
|
|
138
|
+
weeks_two: "{{count}} بعد أسابيع",
|
|
139
|
+
weeks_few: "{{count}} بعد أسابيع",
|
|
140
|
+
weeks_many: "{{count}} بعد أسابيع",
|
|
141
|
+
weeks_other: "{{count}} بعد أسابيع",
|
|
142
|
+
days_zero: "{{count}} بعد أيام",
|
|
143
|
+
days_one: "{{count}} بعد يوم",
|
|
144
|
+
days_two: "{{count}} بعد أيام",
|
|
145
|
+
days_few: "{{count}} بعد أيام",
|
|
146
|
+
days_many: "{{count}} بعد أيام",
|
|
147
|
+
days_other: "{{count}} بعد أيام",
|
|
148
|
+
hours_zero: "{{count}} بعد ساعات",
|
|
149
|
+
hours_one: "{{count}} بعد ساعة",
|
|
150
|
+
hours_two: "{{count}} بعد ساعات",
|
|
151
|
+
hours_few: "{{count}} بعد ساعات",
|
|
152
|
+
hours_many: "{{count}} بعد ساعات",
|
|
153
|
+
hours_other: "{{count}} بعد ساعات",
|
|
154
|
+
minutes_zero: "{{count}} بعد دقائق",
|
|
155
|
+
minutes_one: "{{count}} بعد دقيقة",
|
|
156
|
+
minutes_two: "{{count}} بعد دقائق",
|
|
157
|
+
minutes_few: "{{count}} بعد دقائق",
|
|
158
|
+
minutes_many: "{{count}} بعد دقائق",
|
|
159
|
+
minutes_other: "{{count}} بعد دقائق",
|
|
160
|
+
seconds_zero: "{{count}} بعد ثوان",
|
|
161
|
+
seconds_one: "{{count}} الثاني في وقت لاحق",
|
|
162
|
+
seconds_two: "{{count}} بعد ثوان",
|
|
163
|
+
seconds_few: "{{count}} بعد ثوان",
|
|
164
|
+
seconds_many: "{{count}} بعد ثوان",
|
|
165
|
+
seconds_other: "{{count}} بعد ثوان",
|
|
166
|
+
yearsX_zero: "بالكاد {{count}} بعد سنوات",
|
|
167
|
+
yearsX_one: "بالكاد {{count}} بعد عام",
|
|
168
|
+
yearsX_two: "بالكاد {{count}} بعد سنوات",
|
|
169
|
+
yearsX_few: "بالكاد {{count}} بعد سنوات",
|
|
170
|
+
yearsX_many: "بالكاد {{count}} بعد سنوات",
|
|
171
|
+
yearsX_other: "بالكاد {{count}} بعد سنوات",
|
|
172
|
+
monthsX_zero: "بالكاد {{count}} بعد أشهر",
|
|
173
|
+
monthsX_one: "بالكاد {{count}} بعد شهر",
|
|
174
|
+
monthsX_two: "بالكاد {{count}} بعد أشهر",
|
|
175
|
+
monthsX_few: "بالكاد {{count}} بعد أشهر",
|
|
176
|
+
monthsX_many: "بالكاد {{count}} بعد أشهر",
|
|
177
|
+
monthsX_other: "بالكاد {{count}} بعد أشهر",
|
|
178
|
+
weeksX_zero: "بالكاد {{count}} بعد أسابيع",
|
|
179
|
+
weeksX_one: "بالكاد {{count}} بعد أسبوع",
|
|
180
|
+
weeksX_two: "بالكاد {{count}} بعد أسابيع",
|
|
181
|
+
weeksX_few: "بالكاد {{count}} بعد أسابيع",
|
|
182
|
+
weeksX_many: "بالكاد {{count}} بعد أسابيع",
|
|
183
|
+
weeksX_other: "بالكاد {{count}} بعد أسابيع",
|
|
184
|
+
daysX_zero: "بالكاد {{count}} بعد أيام",
|
|
185
|
+
daysX_one: "بالكاد {{count}} بعد يوم",
|
|
186
|
+
daysX_two: "بالكاد {{count}} بعد أيام",
|
|
187
|
+
daysX_few: "بالكاد {{count}} بعد أيام",
|
|
188
|
+
daysX_many: "بالكاد {{count}} بعد أيام",
|
|
189
|
+
daysX_other: "بالكاد {{count}} بعد أيام",
|
|
190
|
+
hoursX_zero: "بالكاد {{count}} بعد ساعات",
|
|
191
|
+
hoursX_one: "بالكاد {{count}} بعد ساعة",
|
|
192
|
+
hoursX_two: "بالكاد {{count}} بعد ساعات",
|
|
193
|
+
hoursX_few: "بالكاد {{count}} بعد ساعات",
|
|
194
|
+
hoursX_many: "بالكاد {{count}} بعد ساعات",
|
|
195
|
+
hoursX_other: "بالكاد {{count}} بعد ساعات",
|
|
196
|
+
minutesX_zero: "بالكاد {{count}} بعد دقائق",
|
|
197
|
+
minutesX_one: "بالكاد {{count}} بعد دقيقة",
|
|
198
|
+
minutesX_two: "بالكاد {{count}} بعد دقائق",
|
|
199
|
+
minutesX_few: "بالكاد {{count}} بعد دقائق",
|
|
200
|
+
minutesX_many: "بالكاد {{count}} بعد دقائق",
|
|
201
|
+
minutesX_other: "بالكاد {{count}} بعد دقائق"
|
|
202
|
+
}
|
|
15
203
|
};
|
|
16
204
|
var ar = {
|
|
17
205
|
label: label,
|
|
18
|
-
|
|
206
|
+
relative: relative
|
|
19
207
|
};
|
|
20
208
|
|
|
21
|
-
export { ar as default, label,
|
|
209
|
+
export { ar as default, label, relative };
|
package/dist/esm/i18n/en.json.js
CHANGED
|
@@ -11,8 +11,69 @@ var label = {
|
|
|
11
11
|
hijri: "Hijri",
|
|
12
12
|
gregorian: "Gregorian"
|
|
13
13
|
};
|
|
14
|
+
var relative = {
|
|
15
|
+
before: {
|
|
16
|
+
now: "Just now",
|
|
17
|
+
years: "Last year",
|
|
18
|
+
years_other: "{{count}} years ago",
|
|
19
|
+
months: "Last month",
|
|
20
|
+
months_other: "{{count}} months ago",
|
|
21
|
+
weeks: "Last week",
|
|
22
|
+
weeks_other: "{{count}} weeks ago",
|
|
23
|
+
days: "Yesterday",
|
|
24
|
+
days_other: "{{count}} days ago",
|
|
25
|
+
hours: "{{count}} hour ago",
|
|
26
|
+
hours_other: "{{count}} hours ago",
|
|
27
|
+
minutes: "{{count}} minute ago",
|
|
28
|
+
minutes_other: "{{count}} minutes ago",
|
|
29
|
+
seconds: "{{count}} second ago",
|
|
30
|
+
seconds_other: "{{count}} seconds ago",
|
|
31
|
+
yearsX: "Almost {{count}} year ago",
|
|
32
|
+
yearsX_other: "Almost {{count}} years ago",
|
|
33
|
+
monthsX: "Almost {{count}} month ago",
|
|
34
|
+
monthsX_other: "Almost {{count}} months ago",
|
|
35
|
+
weeksX: "Almost {{count}} week ago",
|
|
36
|
+
weeksX_other: "Almost {{count}} weeks ago",
|
|
37
|
+
daysX: "Almost {{count}} day ago",
|
|
38
|
+
daysX_other: "Almost {{count}} days ago",
|
|
39
|
+
hoursX: "Almost {{count}} hour ago",
|
|
40
|
+
hoursX_other: "Almost {{count}} hours ago",
|
|
41
|
+
minutesX: "Almost {{count}} minute ago",
|
|
42
|
+
minutesX_other: "Almost {{count}} minutes ago"
|
|
43
|
+
},
|
|
44
|
+
after: {
|
|
45
|
+
now: "Soon",
|
|
46
|
+
years: "Next year",
|
|
47
|
+
years_other: "{{count}} years later",
|
|
48
|
+
months: "Next month",
|
|
49
|
+
months_other: "{{count}} months later",
|
|
50
|
+
weeks: "Next week",
|
|
51
|
+
weeks_other: "{{count}} weeks later",
|
|
52
|
+
days: "Tomorrow",
|
|
53
|
+
days_other: "{{count}} days later",
|
|
54
|
+
hours: "{{count}} hour later",
|
|
55
|
+
hours_other: "{{count}} hours later",
|
|
56
|
+
minutes: "{{count}} minute later",
|
|
57
|
+
minutes_other: "{{count}} minutes later",
|
|
58
|
+
seconds: "{{count}} second later",
|
|
59
|
+
seconds_other: "{{count}} seconds later",
|
|
60
|
+
yearsX: "Almost {{count}} year later",
|
|
61
|
+
yearsX_other: "Almost {{count}} years later",
|
|
62
|
+
monthsX: "Almost {{count}} month later",
|
|
63
|
+
monthsX_other: "Almost {{count}} months later",
|
|
64
|
+
weeksX: "Almost {{count}} week later",
|
|
65
|
+
weeksX_other: "Almost {{count}} weeks later",
|
|
66
|
+
daysX: "Almost {{count}} day later",
|
|
67
|
+
daysX_other: "Almost {{count}} days later",
|
|
68
|
+
hoursX: "Almost {{count}} hour later",
|
|
69
|
+
hoursX_other: "Almost {{count}} hours later",
|
|
70
|
+
minutesX: "Almost {{count}} minute later",
|
|
71
|
+
minutesX_other: "Almost {{count}} minutes later"
|
|
72
|
+
}
|
|
73
|
+
};
|
|
14
74
|
var en = {
|
|
15
|
-
label: label
|
|
75
|
+
label: label,
|
|
76
|
+
relative: relative
|
|
16
77
|
};
|
|
17
78
|
|
|
18
|
-
export { en as default, label };
|
|
79
|
+
export { en as default, label, relative };
|
package/dist/esm/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { DateHeader } from './components/DateHeader.js';
|
|
|
6
6
|
export { DecadePage } from './components/DecadePage.js';
|
|
7
7
|
export { YearPage } from './components/YearPage.js';
|
|
8
8
|
export { DateDisplay } from './display/DateDisplay.js';
|
|
9
|
+
export { DateDuration } from './display/DateDuration.js';
|
|
9
10
|
export { DatePanel } from './panels/DatePanel.js';
|
|
10
11
|
export { EventPanel } from './panels/EventPanel.js';
|
|
11
12
|
export { RangePanel } from './panels/RangePanel.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MenuProps } from "@react-fabric/core/dist/types/components/menu/types";
|
|
2
2
|
import { type AriaProps, type ChildrenProp, type CssProp, type TestProps } from "@react-fabric/core/dist/types/types";
|
|
3
3
|
import { type ElementType } from "react";
|
|
4
4
|
import { type DateLike } from "../types";
|
|
5
|
-
export interface Props extends CssProp, AriaProps, TestProps, Partial<ChildrenProp<ElementType<
|
|
5
|
+
export interface Props extends CssProp, AriaProps, TestProps, Partial<ChildrenProp<ElementType<MenuProps>>> {
|
|
6
6
|
/**
|
|
7
7
|
* date like value
|
|
8
8
|
*/
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type MenuProps } from "@react-fabric/core/dist/types/components/menu/types";
|
|
2
|
+
import { type AriaProps, type ChildrenProp, type CssProp, type TestProps } from "@react-fabric/core/dist/types/types";
|
|
3
|
+
import { type ElementType } from "react";
|
|
4
|
+
import { type DateLike } from "../types";
|
|
5
|
+
export interface Props extends CssProp, AriaProps, TestProps, Partial<ChildrenProp<ElementType<MenuProps>>> {
|
|
6
|
+
/**
|
|
7
|
+
* date like value
|
|
8
|
+
*/
|
|
9
|
+
date: DateLike;
|
|
10
|
+
/**
|
|
11
|
+
* date format
|
|
12
|
+
*/
|
|
13
|
+
format?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const DateDuration: ({ date, children, className, format, ...props }: Props) => import("react/jsx-runtime").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { DateHeader } from "./components/DateHeader";
|
|
|
4
4
|
export { DecadePage } from "./components/DecadePage";
|
|
5
5
|
export { YearPage } from "./components/YearPage";
|
|
6
6
|
export { DateDisplay } from "./display/DateDisplay";
|
|
7
|
+
export { DateDuration } from "./display/DateDuration";
|
|
7
8
|
export { DatePanel } from "./panels/DatePanel";
|
|
8
9
|
export { EventPanel } from "./panels/EventPanel";
|
|
9
10
|
export { RangePanel } from "./panels/RangePanel";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-fabric/date",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.48",
|
|
4
4
|
"description": "RUF: Date package",
|
|
5
5
|
"author": "Adarsh Pastakia <adarshpastakia@outlook.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"watch": "npm-run-all -p watch:rollup watch:dts"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@react-fabric/core": "^1.0.0-beta.
|
|
39
|
-
"@react-fabric/utilities": "^1.0.0-beta.
|
|
38
|
+
"@react-fabric/core": "^1.0.0-beta.48",
|
|
39
|
+
"@react-fabric/utilities": "^1.0.0-beta.48",
|
|
40
40
|
"classnames": "^2.5.1",
|
|
41
|
-
"date-fns": "^4.
|
|
41
|
+
"date-fns": "^4.1.0",
|
|
42
42
|
"resize-observer-polyfill": "^1.5.1"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"node": ">=18.12.0",
|
|
55
55
|
"npm": ">=8.19.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "0b1001b4ae1ee67f8e1817d6395d1f3945321897"
|
|
58
58
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { Dropdown, Tooltip, useGlobals } from "@react-fabric/core";
|
|
25
|
-
import { type
|
|
25
|
+
import { type MenuProps } from "@react-fabric/core/dist/types/components/menu/types";
|
|
26
26
|
import {
|
|
27
27
|
type AriaProps,
|
|
28
28
|
type ChildrenProp,
|
|
@@ -32,12 +32,13 @@ import {
|
|
|
32
32
|
import { type ElementType } from "react";
|
|
33
33
|
import { type DateLike } from "../types";
|
|
34
34
|
import { DateUtil } from "../utils/dateUtil";
|
|
35
|
+
import classNames from "classnames";
|
|
35
36
|
|
|
36
37
|
export interface Props
|
|
37
38
|
extends CssProp,
|
|
38
39
|
AriaProps,
|
|
39
40
|
TestProps,
|
|
40
|
-
Partial<ChildrenProp<ElementType<
|
|
41
|
+
Partial<ChildrenProp<ElementType<MenuProps>>> {
|
|
41
42
|
/**
|
|
42
43
|
* date like value
|
|
43
44
|
*/
|
|
@@ -70,7 +71,13 @@ export const DateDisplay = ({
|
|
|
70
71
|
currentCalendar !== "hijri",
|
|
71
72
|
)}
|
|
72
73
|
>
|
|
73
|
-
<span
|
|
74
|
+
<span
|
|
75
|
+
className={classNames(
|
|
76
|
+
className,
|
|
77
|
+
children && "underline decoration-dotted cursor-pointer",
|
|
78
|
+
)}
|
|
79
|
+
{...aria}
|
|
80
|
+
>
|
|
74
81
|
{DateUtil.format(
|
|
75
82
|
date,
|
|
76
83
|
format,
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* React Fabric
|
|
3
|
+
* @version: 1.0.0
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* The MIT License (MIT)
|
|
7
|
+
* Copyright (c) 2025 Adarsh Pastakia
|
|
8
|
+
*
|
|
9
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
|
10
|
+
* and associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
11
|
+
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
12
|
+
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
13
|
+
* subject to the following conditions:
|
|
14
|
+
*
|
|
15
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial
|
|
16
|
+
* portions of the Software.
|
|
17
|
+
*
|
|
18
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
19
|
+
* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
20
|
+
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
+
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { Dropdown, Tooltip } from "@react-fabric/core";
|
|
25
|
+
import { type MenuProps } from "@react-fabric/core/dist/types/components/menu/types";
|
|
26
|
+
import {
|
|
27
|
+
type AriaProps,
|
|
28
|
+
type ChildrenProp,
|
|
29
|
+
type CssProp,
|
|
30
|
+
type TestProps,
|
|
31
|
+
} from "@react-fabric/core/dist/types/types";
|
|
32
|
+
import { Format } from "@react-fabric/utilities";
|
|
33
|
+
import classNames from "classnames";
|
|
34
|
+
import { intervalToDuration, isBefore } from "date-fns";
|
|
35
|
+
import { useMemo, type ElementType } from "react";
|
|
36
|
+
import { useTranslation } from "react-i18next";
|
|
37
|
+
import { type DateLike } from "../types";
|
|
38
|
+
import { DateUtil } from "../utils/dateUtil";
|
|
39
|
+
|
|
40
|
+
export interface Props
|
|
41
|
+
extends CssProp,
|
|
42
|
+
AriaProps,
|
|
43
|
+
TestProps,
|
|
44
|
+
Partial<ChildrenProp<ElementType<MenuProps>>> {
|
|
45
|
+
/**
|
|
46
|
+
* date like value
|
|
47
|
+
*/
|
|
48
|
+
date: DateLike;
|
|
49
|
+
/**
|
|
50
|
+
* date format
|
|
51
|
+
*/
|
|
52
|
+
format?: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const DateDuration = ({
|
|
56
|
+
date,
|
|
57
|
+
children,
|
|
58
|
+
className,
|
|
59
|
+
format = "PPpp",
|
|
60
|
+
...props
|
|
61
|
+
}: Props) => {
|
|
62
|
+
const { t } = useTranslation("date");
|
|
63
|
+
|
|
64
|
+
const interval = useMemo(() => {
|
|
65
|
+
return intervalToDuration({ start: new Date(date), end: new Date() });
|
|
66
|
+
}, [date]);
|
|
67
|
+
|
|
68
|
+
const label = useMemo(() => {
|
|
69
|
+
const before = isBefore(DateUtil.parseDate(date), new Date());
|
|
70
|
+
const tkey = before ? "relative.before" : "relative.after";
|
|
71
|
+
let part = "now";
|
|
72
|
+
let count = 0;
|
|
73
|
+
if (interval.years && interval.years > 0) {
|
|
74
|
+
part = "years";
|
|
75
|
+
count = interval.years;
|
|
76
|
+
if ((interval.months ?? 0) > 10) {
|
|
77
|
+
part = "yearsX";
|
|
78
|
+
count += 1;
|
|
79
|
+
}
|
|
80
|
+
} else if (interval.months && interval.months > 0) {
|
|
81
|
+
part = "months";
|
|
82
|
+
count = interval.months;
|
|
83
|
+
if (interval.months > 10) {
|
|
84
|
+
part = "yearsX";
|
|
85
|
+
count = 1;
|
|
86
|
+
} else if ((interval.weeks ?? 0) > 3) {
|
|
87
|
+
part = "monthsX";
|
|
88
|
+
count += 1;
|
|
89
|
+
}
|
|
90
|
+
} else if (interval.weeks && interval.weeks > 0) {
|
|
91
|
+
part = "weeks";
|
|
92
|
+
count = interval.weeks;
|
|
93
|
+
if (interval.weeks > 3) {
|
|
94
|
+
part = "monthsX";
|
|
95
|
+
count = 1;
|
|
96
|
+
} else if ((interval.days ?? 0) > 5) {
|
|
97
|
+
part = "weeksX";
|
|
98
|
+
count += 1;
|
|
99
|
+
}
|
|
100
|
+
} else if (interval.days && interval.days > 0) {
|
|
101
|
+
part = "days";
|
|
102
|
+
count = interval.days;
|
|
103
|
+
if (interval.days > 5) {
|
|
104
|
+
part = "weeksX";
|
|
105
|
+
count = 1;
|
|
106
|
+
} else if ((interval.hours ?? 0) > 20) {
|
|
107
|
+
part = "daysX";
|
|
108
|
+
count += 1;
|
|
109
|
+
}
|
|
110
|
+
} else if (interval.hours && interval.hours > 0) {
|
|
111
|
+
part = "hours";
|
|
112
|
+
count = interval.hours;
|
|
113
|
+
if (interval.hours > 20) {
|
|
114
|
+
part = "daysX";
|
|
115
|
+
count = 1;
|
|
116
|
+
} else if ((interval.minutes ?? 0) > 45) {
|
|
117
|
+
part = "hoursX";
|
|
118
|
+
count += 1;
|
|
119
|
+
}
|
|
120
|
+
} else if (interval.minutes && interval.minutes > 0) {
|
|
121
|
+
part = "minutes";
|
|
122
|
+
count = interval.minutes;
|
|
123
|
+
if (interval.minutes > 45) {
|
|
124
|
+
part = "hoursX";
|
|
125
|
+
count = 1;
|
|
126
|
+
} else if ((interval.seconds ?? 0) > 45) {
|
|
127
|
+
part = "minuteX";
|
|
128
|
+
count += 1;
|
|
129
|
+
}
|
|
130
|
+
} else if (interval.seconds && interval.seconds > 15) {
|
|
131
|
+
part = "seconds";
|
|
132
|
+
count = interval.seconds;
|
|
133
|
+
if (interval.seconds > 45) {
|
|
134
|
+
part = "minutesX";
|
|
135
|
+
count = 1;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return t(`${tkey}.${part}`, { count });
|
|
140
|
+
}, [interval, date]);
|
|
141
|
+
|
|
142
|
+
const dtLabel = (
|
|
143
|
+
<Tooltip content={Format.date(date, format)}>
|
|
144
|
+
<span
|
|
145
|
+
className={classNames(
|
|
146
|
+
className,
|
|
147
|
+
children && "underline decoration-dotted cursor-pointer",
|
|
148
|
+
)}
|
|
149
|
+
{...props}
|
|
150
|
+
>
|
|
151
|
+
{label}
|
|
152
|
+
</span>
|
|
153
|
+
</Tooltip>
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
return children ? (
|
|
157
|
+
<Dropdown showArrow closeOnClick>
|
|
158
|
+
{dtLabel}
|
|
159
|
+
{children}
|
|
160
|
+
</Dropdown>
|
|
161
|
+
) : (
|
|
162
|
+
dtLabel
|
|
163
|
+
);
|
|
164
|
+
};
|