@docsvision/material-ui-pickers 3.2.0-beta.24 → 3.2.0-beta.26

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.
Files changed (150) hide show
  1. package/.size-snapshot.json +11 -11
  2. package/9db1cba1a61cb58db53f38425bbd1f95.7z +0 -0
  3. package/build/DatePicker/DatePicker.d.ts +2 -2
  4. package/build/DatePicker/DatePicker.js +1 -1
  5. package/build/DateTimePicker/DateTimePicker.js +1 -1
  6. package/build/Picker/Picker.js +1 -1
  7. package/build/TimePicker/TimePicker.js +1 -1
  8. package/build/_helpers/text-field-helper.d.ts +1 -1
  9. package/build/_shared/KeyboardDateInput.js +1 -1
  10. package/build/_shared/ModalDialog.d.ts +2 -2
  11. package/build/_shared/PureDateInput.js +1 -1
  12. package/build/_shared/ToolbarButton.d.ts +2 -2
  13. package/build/_shared/hooks/useKeyboardPickerState.js +2 -2
  14. package/build/constants/prop-types.js +2 -2
  15. package/build/dist/material-ui-pickers.esm.js +12 -12
  16. package/build/dist/material-ui-pickers.esm.js.map +1 -1
  17. package/build/dist/material-ui-pickers.js +62 -62
  18. package/build/dist/material-ui-pickers.js.map +1 -1
  19. package/build/dist/material-ui-pickers.umd.js +5790 -4511
  20. package/build/dist/material-ui-pickers.umd.min.js +1 -1
  21. package/build/package.json +1 -1
  22. package/build/views/Calendar/Calendar.js +2 -2
  23. package/build/views/Clock/Clock.d.ts +1 -1
  24. package/build/views/Clock/ClockPointer.d.ts +1 -1
  25. package/package.json +1 -1
  26. package/src/DatePicker/DatePicker.tsx +91 -0
  27. package/src/DatePicker/DatePickerToolbar.tsx +75 -0
  28. package/src/DatePicker/index.ts +7 -0
  29. package/src/DateTimePicker/DateTimePicker.tsx +72 -0
  30. package/src/DateTimePicker/DateTimePickerTabs.tsx +86 -0
  31. package/src/DateTimePicker/DateTimePickerToolbar.tsx +123 -0
  32. package/src/DateTimePicker/index.ts +7 -0
  33. package/src/MuiPickersUtilsProvider.tsx +39 -0
  34. package/src/Picker/Picker.tsx +275 -0
  35. package/src/Picker/WrappedKeyboardPicker.tsx +136 -0
  36. package/src/Picker/WrappedPurePicker.tsx +128 -0
  37. package/src/Rifm/Rifm.ts +213 -0
  38. package/src/TimePicker/TimePicker.tsx +67 -0
  39. package/src/TimePicker/TimePickerToolbar.tsx +180 -0
  40. package/src/TimePicker/index.tsx +7 -0
  41. package/src/__tests__/DatePicker/Calendar.test.tsx +51 -0
  42. package/src/__tests__/DatePicker/Month.test.tsx +36 -0
  43. package/src/__tests__/DatePicker/MonthSelection.test.tsx +37 -0
  44. package/src/__tests__/MuiPickersUtilsProvider.test.tsx +21 -0
  45. package/src/__tests__/TimePicker/Clock.test.tsx +68 -0
  46. package/src/__tests__/_helpers/date-utils.test.tsx +197 -0
  47. package/src/__tests__/_helpers/text-field-helper.test.tsx +34 -0
  48. package/src/__tests__/_shared/ModalDialog.test.tsx +109 -0
  49. package/src/__tests__/e2e/DatePicker.test.tsx +233 -0
  50. package/src/__tests__/e2e/DatePickerProps.test.tsx +18 -0
  51. package/src/__tests__/e2e/DatePickerRoot.test.tsx +154 -0
  52. package/src/__tests__/e2e/DateTimePicker.test.tsx +86 -0
  53. package/src/__tests__/e2e/DateTimePickerRoot.test.tsx +72 -0
  54. package/src/__tests__/e2e/KeyboardDatePicker.test.tsx +140 -0
  55. package/src/__tests__/e2e/KeyboardDateTimePicker.test.tsx +48 -0
  56. package/src/__tests__/e2e/Theme.test.tsx +30 -0
  57. package/src/__tests__/e2e/TimePicker.test.tsx +121 -0
  58. package/src/__tests__/e2e/commands.tsx +8 -0
  59. package/src/__tests__/setup.js +26 -0
  60. package/src/__tests__/test-utils.tsx +45 -0
  61. package/src/__tests__/tsconfig.json +5 -0
  62. package/src/_helpers/date-utils.ts +92 -0
  63. package/src/_helpers/text-field-helper.ts +239 -0
  64. package/src/_helpers/time-utils.ts +83 -0
  65. package/src/_helpers/utils.ts +8 -0
  66. package/src/_shared/KeyboardDateInput.tsx +161 -0
  67. package/src/_shared/ModalDialog.tsx +114 -0
  68. package/src/_shared/PickerToolbar.tsx +52 -0
  69. package/src/_shared/PureDateInput.tsx +45 -0
  70. package/src/_shared/ToolbarButton.tsx +63 -0
  71. package/src/_shared/ToolbarText.tsx +49 -0
  72. package/src/_shared/WithUtils.tsx +19 -0
  73. package/src/_shared/hooks/useIsLandscape.tsx +27 -0
  74. package/src/_shared/hooks/useKeyDown.ts +34 -0
  75. package/src/_shared/hooks/useKeyboardPickerState.ts +72 -0
  76. package/src/_shared/hooks/useOpenState.ts +22 -0
  77. package/src/_shared/hooks/usePickerState.ts +134 -0
  78. package/src/_shared/hooks/useUtils.ts +20 -0
  79. package/src/_shared/hooks/useViews.tsx +31 -0
  80. package/src/_shared/icons/ArrowLeftIcon.tsx +11 -0
  81. package/src/_shared/icons/ArrowRightIcon.tsx +11 -0
  82. package/src/_shared/icons/DateRangeIcon.tsx +11 -0
  83. package/src/_shared/icons/KeyboardIcon.tsx +11 -0
  84. package/src/_shared/icons/TimeIcon.tsx +12 -0
  85. package/src/constants/ClockType.ts +11 -0
  86. package/src/constants/dimensions.ts +5 -0
  87. package/src/constants/prop-types.ts +37 -0
  88. package/src/index.ts +48 -0
  89. package/src/typings/BasePicker.tsx +60 -0
  90. package/src/typings/date.ts +3 -0
  91. package/src/typings/extendMui.ts +10 -0
  92. package/src/typings/overrides.ts +44 -0
  93. package/src/views/Calendar/Calendar.tsx +361 -0
  94. package/src/views/Calendar/CalendarHeader.tsx +141 -0
  95. package/src/views/Calendar/Day.tsx +97 -0
  96. package/src/views/Calendar/DayWrapper.tsx +33 -0
  97. package/src/views/Calendar/SlideTransition.tsx +100 -0
  98. package/src/views/Clock/Clock.tsx +172 -0
  99. package/src/views/Clock/ClockNumber.tsx +91 -0
  100. package/src/views/Clock/ClockNumbers.tsx +76 -0
  101. package/src/views/Clock/ClockPointer.tsx +104 -0
  102. package/src/views/Clock/ClockView.tsx +105 -0
  103. package/src/views/Month/Month.tsx +76 -0
  104. package/src/views/Month/MonthView.tsx +94 -0
  105. package/src/views/Year/Year.tsx +77 -0
  106. package/src/views/Year/YearView.tsx +91 -0
  107. package/src/wrappers/InlineWrapper.tsx +80 -0
  108. package/src/wrappers/ModalWrapper.tsx +113 -0
  109. package/src/wrappers/StaticWrapper.tsx +22 -0
  110. package/src/wrappers/Wrapper.tsx +75 -0
  111. package/coverage/clover.xml +0 -601
  112. package/coverage/coverage-final.json +0 -22
  113. package/coverage/lcov-report/base.css +0 -224
  114. package/coverage/lcov-report/block-navigation.js +0 -79
  115. package/coverage/lcov-report/index.html +0 -201
  116. package/coverage/lcov-report/prettify.css +0 -1
  117. package/coverage/lcov-report/prettify.js +0 -2
  118. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  119. package/coverage/lcov-report/sorter.js +0 -170
  120. package/coverage/lcov-report/src/MuiPickersUtilsProvider.tsx.html +0 -186
  121. package/coverage/lcov-report/src/_helpers/date-utils.ts.html +0 -345
  122. package/coverage/lcov-report/src/_helpers/index.html +0 -123
  123. package/coverage/lcov-report/src/_helpers/time-utils.ts.html +0 -318
  124. package/coverage/lcov-report/src/_helpers/utils.ts.html +0 -93
  125. package/coverage/lcov-report/src/_shared/ModalDialog.tsx.html +0 -411
  126. package/coverage/lcov-report/src/_shared/WithUtils.tsx.html +0 -126
  127. package/coverage/lcov-report/src/_shared/hooks/index.html +0 -110
  128. package/coverage/lcov-report/src/_shared/hooks/useKeyDown.ts.html +0 -171
  129. package/coverage/lcov-report/src/_shared/hooks/useUtils.ts.html +0 -129
  130. package/coverage/lcov-report/src/_shared/icons/ArrowLeftIcon.tsx.html +0 -102
  131. package/coverage/lcov-report/src/_shared/icons/ArrowRightIcon.tsx.html +0 -102
  132. package/coverage/lcov-report/src/_shared/icons/index.html +0 -110
  133. package/coverage/lcov-report/src/_shared/index.html +0 -110
  134. package/coverage/lcov-report/src/constants/ClockType.ts.html +0 -102
  135. package/coverage/lcov-report/src/constants/dimensions.ts.html +0 -84
  136. package/coverage/lcov-report/src/constants/index.html +0 -110
  137. package/coverage/lcov-report/src/index.html +0 -97
  138. package/coverage/lcov-report/src/views/Calendar/Calendar.tsx.html +0 -1152
  139. package/coverage/lcov-report/src/views/Calendar/CalendarHeader.tsx.html +0 -492
  140. package/coverage/lcov-report/src/views/Calendar/Day.tsx.html +0 -360
  141. package/coverage/lcov-report/src/views/Calendar/DayWrapper.tsx.html +0 -168
  142. package/coverage/lcov-report/src/views/Calendar/SlideTransition.tsx.html +0 -369
  143. package/coverage/lcov-report/src/views/Calendar/index.html +0 -149
  144. package/coverage/lcov-report/src/views/Clock/Clock.tsx.html +0 -585
  145. package/coverage/lcov-report/src/views/Clock/ClockPointer.tsx.html +0 -381
  146. package/coverage/lcov-report/src/views/Clock/index.html +0 -110
  147. package/coverage/lcov-report/src/views/Month/Month.tsx.html +0 -297
  148. package/coverage/lcov-report/src/views/Month/MonthView.tsx.html +0 -351
  149. package/coverage/lcov-report/src/views/Month/index.html +0 -110
  150. package/coverage/lcov.info +0 -1094
@@ -0,0 +1,275 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import Calendar from '../views/Calendar/Calendar';
4
+ import { useUtils } from '../_shared/hooks/useUtils';
5
+ import { useViews } from '../_shared/hooks/useViews';
6
+ import { makeStyles } from '@material-ui/core/styles';
7
+ import { YearSelection } from '../views/Year/YearView';
8
+ import { MaterialUiPickersDate } from '../typings/date';
9
+ import { BasePickerProps } from '../typings/BasePicker';
10
+ import { TimePickerView } from '../views/Clock/ClockView';
11
+ import { MonthSelection } from '../views/Month/MonthView';
12
+ import { BaseTimePickerProps } from '../TimePicker/TimePicker';
13
+ import { BaseDatePickerProps } from '../DatePicker/DatePicker';
14
+ import { useIsLandscape } from '../_shared/hooks/useIsLandscape';
15
+ import { datePickerDefaultProps } from '../constants/prop-types';
16
+ import { DIALOG_WIDTH_WIDER, DIALOG_WIDTH, VIEW_HEIGHT } from '../constants/dimensions';
17
+ import { DialogActions, Button } from '@material-ui/core';
18
+
19
+ const viewsMap = {
20
+ year: YearSelection,
21
+ month: MonthSelection,
22
+ date: Calendar,
23
+ hours: TimePickerView,
24
+ minutes: TimePickerView,
25
+ seconds: TimePickerView,
26
+ };
27
+
28
+ export type PickerView = keyof typeof viewsMap;
29
+
30
+ export type ToolbarComponentProps = BaseDatePickerProps &
31
+ BaseTimePickerProps & {
32
+ views: PickerView[];
33
+ openView: PickerView;
34
+ date: MaterialUiPickersDate;
35
+ setOpenView: (view: PickerView) => void;
36
+ onChange: (date: MaterialUiPickersDate, isFinish?: boolean) => void;
37
+ // TODO move out, cause it is DateTimePickerOnly
38
+ hideTabs?: boolean;
39
+ dateRangeIcon?: React.ReactNode;
40
+ timeIcon?: React.ReactNode;
41
+ isLandscape: boolean;
42
+ };
43
+
44
+ export interface PickerViewProps extends BaseDatePickerProps, BaseTimePickerProps {
45
+ views: PickerView[];
46
+ openTo: PickerView;
47
+ disableToolbar?: boolean;
48
+ ToolbarComponent: React.ComponentType<ToolbarComponentProps>;
49
+ // TODO move out, cause it is DateTimePickerOnly
50
+ hideTabs?: boolean;
51
+ dateRangeIcon?: React.ReactNode;
52
+ timeIcon?: React.ReactNode;
53
+ }
54
+
55
+ interface PickerProps extends PickerViewProps {
56
+ date: MaterialUiPickersDate;
57
+ orientation?: BasePickerProps['orientation'];
58
+ onChange: (date: MaterialUiPickersDate, isFinish?: boolean) => void;
59
+ showActionsBar?: boolean;
60
+ showTodayButton?: boolean;
61
+ todayLabel?: string;
62
+ showShiftButtons?: boolean;
63
+ setShiftFunction?: (days: number) => Date;
64
+ shiftButtonValues?: Object;
65
+ onSetToday?: () => void;
66
+ onSetShift?: (shiftDate: Date) => void;
67
+ }
68
+
69
+ const useStyles = makeStyles(
70
+ {
71
+ container: {
72
+ display: 'flex',
73
+ flexDirection: 'column',
74
+ },
75
+ containerLandscape: {
76
+ flexDirection: 'row',
77
+ },
78
+ pickerView: {
79
+ overflowX: 'hidden',
80
+ minHeight: VIEW_HEIGHT,
81
+ minWidth: DIALOG_WIDTH,
82
+ maxWidth: DIALOG_WIDTH_WIDER,
83
+ display: 'flex',
84
+ flexDirection: 'column',
85
+ justifyContent: 'center',
86
+ },
87
+ pickerViewLandscape: {
88
+ padding: '0 8px',
89
+ },
90
+ },
91
+ { name: 'MuiPickersBasePicker' }
92
+ );
93
+
94
+ const useButtonsStyles = makeStyles(
95
+ {
96
+ root: {
97
+ minWidth: 32,
98
+ },
99
+ },
100
+ { name: 'MuiButtonBase' }
101
+ );
102
+
103
+ export const useDialogActionsStyles = makeStyles({
104
+ withAdditionalAction: {},
105
+ });
106
+
107
+ export const Picker: React.FunctionComponent<PickerProps> = props => {
108
+ const {
109
+ date,
110
+ ampm,
111
+ views,
112
+ disableToolbar,
113
+ disablePast,
114
+ disableFuture,
115
+ hideTabs,
116
+ onChange,
117
+ openTo,
118
+ minutesStep,
119
+ dateRangeIcon,
120
+ timeIcon,
121
+ minDate: unparsedMinDate,
122
+ maxDate: unparsedMaxDate,
123
+ animateYearScrolling,
124
+ leftArrowIcon,
125
+ rightArrowIcon,
126
+ renderDay,
127
+ shouldDisableDate,
128
+ allowKeyboardControl,
129
+ onMonthChange,
130
+ onYearChange,
131
+ leftArrowButtonProps,
132
+ rightArrowButtonProps,
133
+ ToolbarComponent,
134
+ loadingIndicator,
135
+ orientation,
136
+ showActionsBar,
137
+ onSetToday,
138
+ showTodayButton,
139
+ todayLabel,
140
+ onSetShift,
141
+ showShiftButtons,
142
+ setShiftFunction,
143
+ shiftButtonValues,
144
+ } = props;
145
+
146
+ const utils = useUtils();
147
+ const classes = useStyles();
148
+ const buttonClasses = useButtonsStyles();
149
+ const dialogActionsClasses = useDialogActionsStyles();
150
+ const isLandscape = useIsLandscape(orientation);
151
+ const { openView, setOpenView, handleChangeAndOpenNext } = useViews(views, openTo, onChange);
152
+
153
+ const minDate = React.useMemo(() => utils.date(unparsedMinDate)!, [unparsedMinDate, utils]);
154
+ const maxDate = React.useMemo(() => utils.date(unparsedMaxDate)!, [unparsedMaxDate, utils]);
155
+
156
+ let shiftButtons = new Array();
157
+ if (showShiftButtons && setShiftFunction && onSetShift && shiftButtonValues) {
158
+ for (let key in shiftButtonValues) {
159
+ shiftButtons.push(
160
+ <Button
161
+ color="primary"
162
+ onClick={() => onSetShift(setShiftFunction(parseInt(key)))}
163
+ key={shiftButtonValues[key]}
164
+ >
165
+ {parseInt(key) > 0 ? '+' : ''}
166
+ {shiftButtonValues[key]}
167
+ </Button>
168
+ );
169
+ }
170
+ }
171
+
172
+ return (
173
+ <div
174
+ className={clsx(classes.container, {
175
+ [classes.containerLandscape]: isLandscape,
176
+ })}
177
+ >
178
+ {!disableToolbar && (
179
+ <ToolbarComponent
180
+ date={date}
181
+ onChange={onChange}
182
+ setOpenView={setOpenView}
183
+ openView={openView}
184
+ hideTabs={hideTabs}
185
+ dateRangeIcon={dateRangeIcon}
186
+ timeIcon={timeIcon}
187
+ isLandscape={isLandscape}
188
+ {...props}
189
+ />
190
+ )}
191
+
192
+ <div className={clsx(classes.pickerView, { [classes.pickerViewLandscape]: isLandscape })}>
193
+ {openView === 'year' && (
194
+ <YearSelection
195
+ date={date}
196
+ onChange={handleChangeAndOpenNext}
197
+ minDate={minDate}
198
+ maxDate={maxDate}
199
+ disablePast={disablePast}
200
+ disableFuture={disableFuture}
201
+ onYearChange={onYearChange}
202
+ animateYearScrolling={animateYearScrolling}
203
+ />
204
+ )}
205
+
206
+ {openView === 'month' && (
207
+ <MonthSelection
208
+ date={date}
209
+ onChange={handleChangeAndOpenNext}
210
+ minDate={minDate}
211
+ maxDate={maxDate}
212
+ disablePast={disablePast}
213
+ disableFuture={disableFuture}
214
+ onMonthChange={onMonthChange}
215
+ />
216
+ )}
217
+
218
+ {openView === 'date' && (
219
+ <Calendar
220
+ date={date}
221
+ onChange={handleChangeAndOpenNext}
222
+ onMonthChange={onMonthChange}
223
+ disablePast={disablePast}
224
+ disableFuture={disableFuture}
225
+ minDate={minDate}
226
+ maxDate={maxDate}
227
+ leftArrowIcon={leftArrowIcon}
228
+ leftArrowButtonProps={leftArrowButtonProps}
229
+ rightArrowIcon={rightArrowIcon}
230
+ rightArrowButtonProps={rightArrowButtonProps}
231
+ renderDay={renderDay}
232
+ shouldDisableDate={shouldDisableDate}
233
+ allowKeyboardControl={allowKeyboardControl}
234
+ loadingIndicator={loadingIndicator}
235
+ />
236
+ )}
237
+
238
+ {(openView === 'hours' || openView === 'minutes' || openView === 'seconds') && (
239
+ <TimePickerView
240
+ date={date}
241
+ ampm={ampm}
242
+ type={openView}
243
+ minutesStep={minutesStep}
244
+ onHourChange={handleChangeAndOpenNext}
245
+ onMinutesChange={handleChangeAndOpenNext}
246
+ onSecondsChange={handleChangeAndOpenNext}
247
+ />
248
+ )}
249
+ </div>
250
+
251
+ {showActionsBar && (
252
+ <DialogActions
253
+ classes={{
254
+ root: clsx({
255
+ [dialogActionsClasses.withAdditionalAction]: showTodayButton,
256
+ }),
257
+ }}
258
+ >
259
+ {showTodayButton && (
260
+ <Button color="primary" onClick={onSetToday} key="today">
261
+ {todayLabel}
262
+ </Button>
263
+ )}
264
+
265
+ {showShiftButtons && setShiftFunction && shiftButtons}
266
+ </DialogActions>
267
+ )}
268
+ </div>
269
+ );
270
+ };
271
+
272
+ Picker.defaultProps = {
273
+ ...datePickerDefaultProps,
274
+ views: Object.keys(viewsMap),
275
+ } as any;
@@ -0,0 +1,136 @@
1
+ import * as React from 'react';
2
+ import KeyboardDateInput, { KeyboardDateInputProps } from '../_shared/KeyboardDateInput';
3
+ import { Picker, ToolbarComponentProps } from './Picker';
4
+ import { ExtendWrapper, Wrapper } from '../wrappers/Wrapper';
5
+ import { StateHookOptions } from '../_shared/hooks/usePickerState';
6
+ import { DateValidationProps } from '../_helpers/text-field-helper';
7
+ import {
8
+ BaseKeyboardPickerProps,
9
+ useKeyboardPickerState,
10
+ } from '../_shared/hooks/useKeyboardPickerState';
11
+
12
+ export type WrappedKeyboardPickerProps = DateValidationProps &
13
+ BaseKeyboardPickerProps &
14
+ ExtendWrapper<KeyboardDateInputProps>;
15
+
16
+ export interface MakePickerOptions<T> {
17
+ useOptions: (props: any) => StateHookOptions;
18
+ getCustomProps?: (props: T) => Partial<T>;
19
+ DefaultToolbarComponent: React.ComponentType<ToolbarComponentProps>;
20
+ }
21
+
22
+ // Mostly duplicate of ./WrappedPurePicker.tsx to enable tree-shaking of keyboard logic
23
+ // TODO investigate how to reduce duplications
24
+ export function makeKeyboardPicker<T extends any>({
25
+ useOptions,
26
+ getCustomProps,
27
+ DefaultToolbarComponent,
28
+ }: MakePickerOptions<WrappedKeyboardPickerProps & T>): React.FC<WrappedKeyboardPickerProps & T> {
29
+ function WrappedKeyboardPicker(props: WrappedKeyboardPickerProps & T) {
30
+ const {
31
+ allowKeyboardControl,
32
+ ampm,
33
+ hideTabs,
34
+ animateYearScrolling,
35
+ autoOk,
36
+ disableFuture,
37
+ disablePast,
38
+ format,
39
+ forwardedRef,
40
+ initialFocusedDate,
41
+ invalidDateMessage,
42
+ labelFunc,
43
+ leftArrowIcon,
44
+ leftArrowButtonProps,
45
+ maxDate,
46
+ maxDateMessage,
47
+ minDate,
48
+ onOpen,
49
+ onClose,
50
+ minDateMessage,
51
+ strictCompareDates,
52
+ minutesStep,
53
+ onAccept,
54
+ onChange,
55
+ onMonthChange,
56
+ onYearChange,
57
+ renderDay,
58
+ views,
59
+ openTo,
60
+ rightArrowIcon,
61
+ rightArrowButtonProps,
62
+ shouldDisableDate,
63
+ value,
64
+ dateRangeIcon,
65
+ emptyLabel,
66
+ invalidLabel,
67
+ timeIcon,
68
+ orientation,
69
+ variant,
70
+ disableToolbar,
71
+ loadingIndicator,
72
+ showActionsBar,
73
+ showTodayButton,
74
+ todayLabel,
75
+ ToolbarComponent = DefaultToolbarComponent,
76
+ showShiftButtons,
77
+ setShiftFunction,
78
+ shiftButtonValues,
79
+ ...other
80
+ } = props;
81
+
82
+ const injectedProps = getCustomProps ? getCustomProps(props) : {};
83
+
84
+ const options = useOptions(props);
85
+ const { pickerProps, inputProps, wrapperProps } = useKeyboardPickerState(props, options);
86
+
87
+ return (
88
+ <Wrapper
89
+ variant={variant}
90
+ InputComponent={KeyboardDateInput}
91
+ DateInputProps={inputProps}
92
+ {...injectedProps}
93
+ {...wrapperProps}
94
+ {...other}
95
+ >
96
+ <Picker
97
+ {...pickerProps}
98
+ ToolbarComponent={ToolbarComponent}
99
+ disableToolbar={disableToolbar}
100
+ hideTabs={hideTabs}
101
+ orientation={orientation}
102
+ showActionsBar={showActionsBar}
103
+ showTodayButton={showTodayButton}
104
+ todayLabel={todayLabel}
105
+ ampm={ampm}
106
+ views={views}
107
+ openTo={openTo}
108
+ allowKeyboardControl={allowKeyboardControl}
109
+ minutesStep={minutesStep}
110
+ animateYearScrolling={animateYearScrolling}
111
+ disableFuture={disableFuture}
112
+ disablePast={disablePast}
113
+ leftArrowIcon={leftArrowIcon}
114
+ leftArrowButtonProps={leftArrowButtonProps}
115
+ maxDate={maxDate}
116
+ minDate={minDate}
117
+ strictCompareDates={strictCompareDates}
118
+ onMonthChange={onMonthChange}
119
+ onYearChange={onYearChange}
120
+ renderDay={renderDay}
121
+ dateRangeIcon={dateRangeIcon}
122
+ timeIcon={timeIcon}
123
+ rightArrowIcon={rightArrowIcon}
124
+ rightArrowButtonProps={rightArrowButtonProps}
125
+ shouldDisableDate={shouldDisableDate}
126
+ loadingIndicator={loadingIndicator}
127
+ showShiftButtons={showShiftButtons}
128
+ setShiftFunction={setShiftFunction}
129
+ shiftButtonValues={shiftButtonValues}
130
+ />
131
+ </Wrapper>
132
+ );
133
+ }
134
+
135
+ return WrappedKeyboardPicker;
136
+ }
@@ -0,0 +1,128 @@
1
+ import * as React from 'react';
2
+ import { Picker } from './Picker';
3
+ import { BasePickerProps } from '../typings/BasePicker';
4
+ import { MakePickerOptions } from './WrappedKeyboardPicker';
5
+ import { ExtendWrapper, Wrapper } from '../wrappers/Wrapper';
6
+ import { usePickerState } from '../_shared/hooks/usePickerState';
7
+ import { DateValidationProps } from '../_helpers/text-field-helper';
8
+ import { PureDateInput, PureDateInputProps } from '../_shared/PureDateInput';
9
+
10
+ export type WrappedPurePickerProps = DateValidationProps &
11
+ BasePickerProps &
12
+ ExtendWrapper<PureDateInputProps>;
13
+
14
+ export function makePurePicker<T extends any>({
15
+ useOptions,
16
+ getCustomProps,
17
+ DefaultToolbarComponent,
18
+ }: MakePickerOptions<WrappedPurePickerProps & T>): React.FC<WrappedPurePickerProps & T> {
19
+ function WrappedPurePicker(props: WrappedPurePickerProps & T) {
20
+ const {
21
+ allowKeyboardControl,
22
+ ampm,
23
+ hideTabs,
24
+ animateYearScrolling,
25
+ autoOk,
26
+ disableFuture,
27
+ disablePast,
28
+ format,
29
+ forwardedRef,
30
+ initialFocusedDate,
31
+ invalidDateMessage,
32
+ labelFunc,
33
+ leftArrowIcon,
34
+ leftArrowButtonProps,
35
+ maxDate,
36
+ maxDateMessage,
37
+ minDate,
38
+ onOpen,
39
+ onClose,
40
+ minDateMessage,
41
+ strictCompareDates,
42
+ minutesStep,
43
+ onAccept,
44
+ onChange,
45
+ onMonthChange,
46
+ onYearChange,
47
+ renderDay,
48
+ views,
49
+ openTo,
50
+ rightArrowIcon,
51
+ rightArrowButtonProps,
52
+ shouldDisableDate,
53
+ dateRangeIcon,
54
+ emptyLabel,
55
+ invalidLabel,
56
+ timeIcon,
57
+ value,
58
+ variant,
59
+ orientation,
60
+ disableToolbar,
61
+ loadingIndicator,
62
+ ToolbarComponent = DefaultToolbarComponent,
63
+ showActionsBar,
64
+ showTodayButton,
65
+ todayLabel,
66
+ showShiftButtons,
67
+ setShiftFunction,
68
+ shiftButtonValues,
69
+ ...other
70
+ } = props;
71
+
72
+ const injectedProps = getCustomProps ? getCustomProps(props) : {};
73
+
74
+ const options = useOptions(props);
75
+ const { pickerProps, inputProps, wrapperProps } = usePickerState(props, options);
76
+
77
+ return (
78
+ <Wrapper
79
+ variant={variant}
80
+ InputComponent={PureDateInput}
81
+ DateInputProps={inputProps}
82
+ showTodayButton={showTodayButton}
83
+ todayLabel={todayLabel}
84
+ {...wrapperProps}
85
+ {...injectedProps}
86
+ {...other}
87
+ >
88
+ <Picker
89
+ {...pickerProps}
90
+ orientation={orientation}
91
+ disableToolbar={disableToolbar}
92
+ ToolbarComponent={ToolbarComponent}
93
+ hideTabs={hideTabs}
94
+ ampm={ampm}
95
+ views={views}
96
+ openTo={openTo}
97
+ allowKeyboardControl={allowKeyboardControl}
98
+ minutesStep={minutesStep}
99
+ animateYearScrolling={animateYearScrolling}
100
+ disableFuture={disableFuture}
101
+ disablePast={disablePast}
102
+ leftArrowIcon={leftArrowIcon}
103
+ leftArrowButtonProps={leftArrowButtonProps}
104
+ maxDate={maxDate}
105
+ minDate={minDate}
106
+ strictCompareDates={strictCompareDates}
107
+ onMonthChange={onMonthChange}
108
+ onYearChange={onYearChange}
109
+ renderDay={renderDay}
110
+ dateRangeIcon={dateRangeIcon}
111
+ timeIcon={timeIcon}
112
+ rightArrowIcon={rightArrowIcon}
113
+ rightArrowButtonProps={rightArrowButtonProps}
114
+ shouldDisableDate={shouldDisableDate}
115
+ loadingIndicator={loadingIndicator}
116
+ showActionsBar={showActionsBar}
117
+ showTodayButton={showTodayButton}
118
+ todayLabel={todayLabel}
119
+ showShiftButtons={showShiftButtons}
120
+ setShiftFunction={setShiftFunction}
121
+ shiftButtonValues={shiftButtonValues}
122
+ />
123
+ </Wrapper>
124
+ );
125
+ }
126
+
127
+ return WrappedPurePicker;
128
+ }