@@ -7,88 +7,115 @@ import {
77 addMonths ,
88 startOfWeek ,
99 endOfWeek ,
10+ isSameDay ,
11+ differenceInCalendarDays ,
1012} from 'date-fns' ;
1113
14+ const defineds = {
15+ startOfWeek : startOfWeek ( new Date ( ) ) ,
16+ endOfWeek : endOfWeek ( new Date ( ) ) ,
17+ startOfLastWeek : startOfWeek ( addDays ( new Date ( ) , - 7 ) ) ,
18+ endOfLastWeek : endOfWeek ( addDays ( new Date ( ) , - 7 ) ) ,
19+ startOfToday : startOfDay ( new Date ( ) ) ,
20+ endOfToday : endOfDay ( new Date ( ) ) ,
21+ startOfYesterday : startOfDay ( addDays ( new Date ( ) , - 1 ) ) ,
22+ endOfYesterday : endOfDay ( addDays ( new Date ( ) , - 1 ) ) ,
23+ startOfMonth : startOfMonth ( new Date ( ) ) ,
24+ endOfMonth : endOfMonth ( new Date ( ) ) ,
25+ startOfLastMonth : startOfMonth ( addMonths ( new Date ( ) , - 1 ) ) ,
26+ endOfLastMonth : endOfMonth ( addMonths ( new Date ( ) , - 1 ) ) ,
27+ } ;
28+
1229export const defaultStaticRanges = [
1330 {
1431 label : 'Today' ,
15- range ( ) {
16- return {
17- startDate : startOfDay ( new Date ( ) ) ,
18- endDate : endOfDay ( new Date ( ) ) ,
19- } ;
20- } ,
32+ range : ( ) => ( {
33+ startDate : defineds . startOfToday ,
34+ endDate : defineds . endOfToday ,
35+ } ) ,
36+ isSelected : range =>
37+ isSameDay ( range . startDate , defineds . startOfToday ) &&
38+ isSameDay ( range . endDate , defineds . endOfToday ) ,
2139 } ,
2240 {
2341 label : 'Yesterday' ,
24- range ( ) {
25- const yesterday = addDays ( new Date ( ) , - 1 ) ;
26- return {
27- startDate : startOfDay ( yesterday ) ,
28- endDate : endOfDay ( yesterday ) ,
29- } ;
30- } ,
42+ range : ( ) => ( {
43+ startDate : defineds . startOfYesterday ,
44+ endDate : defineds . endOfYesterday ,
45+ } ) ,
46+ isSelected : range =>
47+ isSameDay ( range . startDate , defineds . startOfYesterday ) &&
48+ isSameDay ( range . endDate , defineds . endOfYesterday ) ,
3149 } ,
3250
3351 {
3452 label : 'This Week' ,
35- range ( ) {
36- return {
37- startDate : startOfWeek ( new Date ( ) ) ,
38- endDate : endOfWeek ( new Date ( ) ) ,
39- } ;
40- } ,
53+ range : ( ) => ( {
54+ startDate : defineds . startOfWeek ,
55+ endDate : defineds . endOfWeek ,
56+ } ) ,
57+ isSelected : range =>
58+ isSameDay ( range . startDate , defineds . startOfWeek ) &&
59+ isSameDay ( range . endDate , defineds . endOfWeek ) ,
4160 } ,
4261 {
4362 label : 'Last Week' ,
44- range ( ) {
45- const lastWeek = addDays ( new Date ( ) , - 7 ) ;
46- return {
47- startDate : startOfWeek ( lastWeek ) ,
48- endDate : endOfWeek ( lastWeek ) ,
49- } ;
50- } ,
63+ range : ( ) => ( {
64+ startDate : defineds . startOfLastWeek ,
65+ endDate : defineds . endOfLastWeek ,
66+ } ) ,
67+ isSelected : range =>
68+ isSameDay ( range . startDate , defineds . startOfLastWeek ) &&
69+ isSameDay ( range . endDate , defineds . endOfLastWeek ) ,
5170 } ,
5271 {
5372 label : 'This Month' ,
54- range ( ) {
55- return {
56- startDate : startOfMonth ( new Date ( ) ) ,
57- endDate : endOfMonth ( new Date ( ) ) ,
58- } ;
59- } ,
73+ range : ( ) => ( {
74+ startDate : defineds . startOfMonth ,
75+ endDate : defineds . endOfMonth ,
76+ } ) ,
77+ isSelected : range =>
78+ isSameDay ( range . startDate , defineds . startOfMonth ) &&
79+ isSameDay ( range . endDate , defineds . endOfMonth ) ,
6080 } ,
6181 {
6282 label : 'Last Month' ,
63- range ( ) {
64- const lastMonth = addMonths ( new Date ( ) , - 1 ) ;
65- return {
66- startDate : startOfMonth ( lastMonth ) ,
67- endDate : endOfMonth ( lastMonth ) ,
68- } ;
69- } ,
83+ range : ( ) => ( {
84+ startDate : defineds . startOfLastMonth ,
85+ endDate : defineds . endOfLastMonth ,
86+ } ) ,
87+ isSelected : range =>
88+ isSameDay ( range . startDate , defineds . startOfLastMonth ) &&
89+ isSameDay ( range . endDate , defineds . endOfLastMonth ) ,
7090 } ,
7191] ;
7292
7393export const defaultInputRanges = [
7494 {
75- label : 'days up today' ,
95+ label : 'days up to today' ,
7696 range ( value ) {
77- const today = new Date ( ) ;
7897 return {
79- startDate : addDays ( today , Number ( value ) * - 1 ) ,
80- endDate : today ,
98+ startDate : addDays ( defineds . startOfToday , Number ( value ) * - 1 ) ,
99+ endDate : defineds . endOfToday ,
81100 } ;
82101 } ,
102+ getCurrentValue ( range ) {
103+ if ( ! isSameDay ( range . endDate , defineds . endOfToday ) ) return '-' ;
104+ return differenceInCalendarDays ( defineds . endOfToday , range . startDate ) ;
105+ } ,
83106 } ,
84107 {
85- label : 'days up yesterday' ,
108+ label : 'days up to yesterday' ,
86109 range ( value ) {
87110 const today = new Date ( ) ;
88111 return {
89112 startDate : today ,
90113 endDate : addDays ( today , Number ( value ) ) ,
91114 } ;
92115 } ,
116+ getCurrentValue ( range ) {
117+ if ( ! isSameDay ( range . startDate , defineds . startOfToday ) ) return '-' ;
118+ return differenceInCalendarDays ( range . endDate , defineds . startOfToday ) ;
119+ } ,
93120 } ,
94121] ;
0 commit comments