Skip to content

Commit 513b936

Browse files
Merge pull request #165 from iM-GeeKy/feature/start-end-year
Introduce start and end year props.
2 parents 73a645b + 6a61039 commit 513b936

File tree

8 files changed

+33
-4
lines changed

8 files changed

+33
-4
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ export default function ReadMeExampleSingle() {
153153
// uppercase={false} // optional, default is true
154154
// label="Select date" // optional
155155
// animationType="slide" // optional, default is 'slide' on ios/android and 'none' on web
156+
// startYear={2000} // optional, default is 1800
157+
// endYear={2100} // optional, default is 2200
156158
// closeIcon="close" // optional, default is "close"
157159
// editIcon="pencil" // optional, default is "pencil"
158160
// calendarIcon="calendar" // optional, default is "calendar"
@@ -214,6 +216,8 @@ export default function ReadMeExampleRange() {
214216
// startLabel="From" // optional
215217
// endLabel="To" // optional
216218
// animationType="slide" // optional, default is slide on ios/android and none on web
219+
// startYear={2000} // optional, default is 1800
220+
// endYear={2100} // optional, default is 2200
217221
// closeIcon="close" // optional, default is "close"
218222
// editIcon="pencil" // optional, default is "pencil"
219223
// calendarIcon="calendar" // optional, default is "calendar"
@@ -271,6 +275,8 @@ export default function ReadMeExampleMultiple() {
271275
// startLabel="From" // optional
272276
// endLabel="To" // optional
273277
// animationType="slide" // optional, default is slide on ios/android and none on web
278+
// startYear={2000} // optional, default is 1800
279+
// endYear={2100} // optional, default is 2200
274280
// closeIcon="close" // optional, default is "close"
275281
/>
276282
</>

example/src/App.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,8 @@ function App() {
318318
// startLabel="From" // optional
319319
// endLabel="To" // optional
320320
// animationType="slide" // optional, default is slide on ios/android and none on web
321+
// startYear={2000} // optional, default is 1800
322+
// endYear={2100} // optional, default is 2200
321323
/>
322324

323325
<DatePickerModal
@@ -337,6 +339,8 @@ function App() {
337339
// uppercase={false} // optional, default is true
338340
// label="Select date" // optional
339341
// animationType="slide" // optional, default is 'slide' on ios/android and 'none' on web
342+
// startYear={2000} // optional, default is 1800
343+
// endYear={2100} // optional, default is 2200
340344
/>
341345

342346
<DatePickerModal
@@ -355,6 +359,8 @@ function App() {
355359
// uppercase={false} // optional, default is true
356360
// label="Select date" // optional
357361
// animationType="slide" // optional, default is 'slide' on ios/android and 'none' on web
362+
// startYear={2000} // optional, default is 1800
363+
// endYear={2100} // optional, default is 2200
358364
/>
359365

360366
<TimePickerModal

example/src/ReadMeExampleMultiple.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export default function ReadMeExampleMultiple() {
4242
// startLabel="From" // optional
4343
// endLabel="To" // optional
4444
// animationType="slide" // optional, default is slide on ios/android and none on web
45+
// startYear={2000} // optional, default is 1800
46+
// endYear={2100} // optional, default is 2200
4547
/>
4648
</>
4749
)

example/src/ReadMeExampleRange.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ export default function ReadMeExampleRange() {
4949
// startLabel="From" // optional
5050
// endLabel="To" // optional
5151
// animationType="slide" // optional, default is slide on ios/android and none on web
52+
// startYear={2000} // optional, default is 1800
53+
// endYear={2100} // optional, default is 2200
5254
/>
5355
</>
5456
)

example/src/ReadMeExampleSingle.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ export default function ReadMeExampleSingle() {
4040
// uppercase={false} // optional, default is true
4141
// label="Select date" // optional
4242
// animationType="slide" // optional, default is 'slide' on ios/android and 'none' on web
43+
// startYear={2000} // optional, default is 1800
44+
// endYear={2100} // optional, default is 2200
4345
/>
4446
</>
4547
)

src/Date/Calendar.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export type BaseCalendarProps = {
3131
locale: string
3232
disableWeekDays?: DisableWeekDaysType
3333
validRange?: ValidRangeType
34+
startYear?: number
35+
endYear?: number
3436

3537
// here they are optional but in final implemenation they are required
3638
date?: CalendarDate
@@ -88,6 +90,8 @@ function Calendar(
8890
endDate,
8991
date,
9092
disableWeekDays,
93+
startYear,
94+
endYear,
9195
dates,
9296
validRange,
9397
dateMode,
@@ -206,6 +210,8 @@ function Calendar(
206210
selectedYear={selectedYear}
207211
selectingYear={selectingYear}
208212
onPressYear={onPressYear}
213+
startYear={startYear ?? 1800}
214+
endYear={endYear ?? 2200}
209215
/>
210216
) : null}
211217
</View>

src/Date/DatePickerModalContent.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ export function DatePickerModalContent(
8181
locale,
8282
validRange,
8383
dateMode,
84+
startYear,
85+
endYear
8486
} = props
8587

8688
const anyProps = props as any
@@ -178,6 +180,8 @@ export function DatePickerModalContent(
178180
dates={state.dates}
179181
validRange={validRange}
180182
dateMode={dateMode}
183+
startYear={startYear}
184+
endYear={endYear}
181185
/>
182186
}
183187
calendarEdit={

src/Date/YearPicker.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,22 @@ import { range } from '../utils'
55

66
const ITEM_HEIGHT = 62
77

8-
const startYear = 1800
9-
const endYear = 2200
10-
const years = range(startYear, endYear)
11-
128
export default function YearPicker({
139
selectedYear,
1410
selectingYear,
1511
onPressYear,
12+
startYear,
13+
endYear,
1614
}: {
1715
selectedYear: number | undefined
1816
selectingYear: boolean
1917
onPressYear: (year: number) => any
18+
startYear: number
19+
endYear: number
2020
}) {
2121
const theme = useTheme()
2222
const flatList = React.useRef<FlatList<number> | null>(null)
23+
const years = range(isNaN(startYear) ? 1800 : startYear, isNaN(endYear) ? 2200 : endYear)
2324

2425
// scroll to selected year
2526
React.useEffect(() => {

0 commit comments

Comments
 (0)