@@ -6,8 +6,15 @@ import "react-date-range/dist/theme/default.css"
6
6
import Button from "@mui/material/Button"
7
7
import ArrowRightAltOutlined from "@mui/icons-material/ArrowRightAltOutlined"
8
8
import Popover from "@mui/material/Popover"
9
- import { DateRangePicker } from "react-date-range"
10
- import { format } from "date-fns"
9
+ import { DateRangePicker , createStaticRanges } from "react-date-range"
10
+ import { format , subDays } from "date-fns"
11
+
12
+ // The type definition from @types is wrong
13
+ declare module "react-date-range" {
14
+ export function createStaticRanges (
15
+ ranges : Omit < StaticRange , "isSelected" > [ ] ,
16
+ ) : StaticRange [ ]
17
+ }
11
18
12
19
export type DateRangeValue = {
13
20
startDate : Date
@@ -92,6 +99,43 @@ export const DateRange = ({
92
99
ranges = { ranges }
93
100
maxDate = { new Date ( ) }
94
101
direction = "horizontal"
102
+ staticRanges = { createStaticRanges ( [
103
+ {
104
+ label : "Today" ,
105
+ range : ( ) => ( {
106
+ startDate : new Date ( ) ,
107
+ endDate : new Date ( ) ,
108
+ } ) ,
109
+ } ,
110
+ {
111
+ label : "Yesterday" ,
112
+ range : ( ) => ( {
113
+ startDate : subDays ( new Date ( ) , 1 ) ,
114
+ endDate : subDays ( new Date ( ) , 1 ) ,
115
+ } ) ,
116
+ } ,
117
+ {
118
+ label : "Last 7 days" ,
119
+ range : ( ) => ( {
120
+ startDate : subDays ( new Date ( ) , 6 ) ,
121
+ endDate : new Date ( ) ,
122
+ } ) ,
123
+ } ,
124
+ {
125
+ label : "Last 15 days" ,
126
+ range : ( ) => ( {
127
+ startDate : subDays ( new Date ( ) , 14 ) ,
128
+ endDate : new Date ( ) ,
129
+ } ) ,
130
+ } ,
131
+ {
132
+ label : "Last 30 days" ,
133
+ range : ( ) => ( {
134
+ startDate : subDays ( new Date ( ) , 29 ) ,
135
+ endDate : new Date ( ) ,
136
+ } ) ,
137
+ } ,
138
+ ] ) }
95
139
/>
96
140
</ Popover >
97
141
</ >
0 commit comments