|
108 | 108 | const maxDate = new Date(max.getFullYear(), max.getMonth(), max.getDate()) |
109 | 109 | return date >= minDate && date <= maxDate |
110 | 110 | } |
| 111 | + function shiftKeydown(e: KeyboardEvent) { |
| 112 | + if (e.shiftKey && e.key === 'ArrowUp') { |
| 113 | + setYear(year - 1) |
| 114 | + } else if (e.shiftKey && e.key === 'ArrowDown') { |
| 115 | + setYear(year + 1) |
| 116 | + } else if (e.shiftKey && e.key === 'ArrowLeft') { |
| 117 | + setMonth(month - 1) |
| 118 | + } else if (e.shiftKey && e.key === 'ArrowRight') { |
| 119 | + setMonth(month + 1) |
| 120 | + } else { |
| 121 | + return false |
| 122 | + } |
| 123 | + e.preventDefault() |
| 124 | + return true |
| 125 | + } |
111 | 126 | function yearKeydown(e: KeyboardEvent) { |
112 | | - if (e.key === 'ArrowUp') { |
| 127 | + let shift = e.shiftKey || e.altKey |
| 128 | + if (shift) { |
| 129 | + shiftKeydown(e) |
| 130 | + return |
| 131 | + } else if (e.key === 'ArrowUp') { |
113 | 132 | setYear(year - 1) |
114 | 133 | } else if (e.key === 'ArrowDown') { |
115 | 134 | setYear(year + 1) |
|
118 | 137 | } else if (e.key === 'ArrowRight') { |
119 | 138 | setMonth(month + 1) |
120 | 139 | } else { |
| 140 | + shiftKeydown(e) |
121 | 141 | return |
122 | 142 | } |
123 | 143 | e.preventDefault() |
124 | 144 | } |
125 | 145 | function monthKeydown(e: KeyboardEvent) { |
126 | | - if (e.key === 'ArrowUp') { |
| 146 | + let shift = e.shiftKey || e.altKey |
| 147 | + if (shift) { |
| 148 | + shiftKeydown(e) |
| 149 | + return |
| 150 | + } else if (e.key === 'ArrowUp') { |
127 | 151 | setMonth(month - 1) |
128 | 152 | } else if (e.key === 'ArrowDown') { |
129 | 153 | setMonth(month + 1) |
|
132 | 156 | } else if (e.key === 'ArrowRight') { |
133 | 157 | setMonth(month + 1) |
134 | 158 | } else { |
| 159 | + shiftKeydown(e) |
135 | 160 | return |
136 | 161 | } |
137 | 162 | e.preventDefault() |
138 | 163 | } |
139 | 164 | function keydown(e: KeyboardEvent) { |
| 165 | + let shift = e.shiftKey || e.altKey |
140 | 166 | if ((e.target as HTMLElement)?.tagName === 'SELECT') { |
141 | 167 | return |
142 | 168 | } |
143 | | -
|
144 | | - if (e.key === 'ArrowUp') { |
| 169 | + if (shift) { |
| 170 | + shiftKeydown(e) |
| 171 | + return |
| 172 | + } else if (e.key === 'ArrowUp') { |
145 | 173 | updateValue((value) => { |
146 | 174 | value.setDate(value.getDate() - 7) |
147 | 175 | return value |
|
0 commit comments