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

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 (229) hide show
  1. package/package.json +62 -135
  2. package/.size-snapshot.json +0 -26
  3. package/9db1cba1a61cb58db53f38425bbd1f95.7z +0 -0
  4. package/build/package.json +0 -62
  5. package/copy.js +0 -58
  6. package/remove-prop-types.js +0 -37
  7. package/rollup.config.js +0 -145
  8. package/src/DatePicker/DatePicker.tsx +0 -91
  9. package/src/DatePicker/DatePickerToolbar.tsx +0 -75
  10. package/src/DatePicker/index.ts +0 -7
  11. package/src/DateTimePicker/DateTimePicker.tsx +0 -72
  12. package/src/DateTimePicker/DateTimePickerTabs.tsx +0 -86
  13. package/src/DateTimePicker/DateTimePickerToolbar.tsx +0 -123
  14. package/src/DateTimePicker/index.ts +0 -7
  15. package/src/MuiPickersUtilsProvider.tsx +0 -39
  16. package/src/Picker/Picker.tsx +0 -275
  17. package/src/Picker/WrappedKeyboardPicker.tsx +0 -136
  18. package/src/Picker/WrappedPurePicker.tsx +0 -128
  19. package/src/Rifm/Rifm.ts +0 -213
  20. package/src/TimePicker/TimePicker.tsx +0 -67
  21. package/src/TimePicker/TimePickerToolbar.tsx +0 -180
  22. package/src/TimePicker/index.tsx +0 -7
  23. package/src/__tests__/DatePicker/Calendar.test.tsx +0 -51
  24. package/src/__tests__/DatePicker/Month.test.tsx +0 -36
  25. package/src/__tests__/DatePicker/MonthSelection.test.tsx +0 -37
  26. package/src/__tests__/MuiPickersUtilsProvider.test.tsx +0 -21
  27. package/src/__tests__/TimePicker/Clock.test.tsx +0 -68
  28. package/src/__tests__/_helpers/date-utils.test.tsx +0 -197
  29. package/src/__tests__/_helpers/text-field-helper.test.tsx +0 -34
  30. package/src/__tests__/_shared/ModalDialog.test.tsx +0 -109
  31. package/src/__tests__/e2e/DatePicker.test.tsx +0 -233
  32. package/src/__tests__/e2e/DatePickerProps.test.tsx +0 -18
  33. package/src/__tests__/e2e/DatePickerRoot.test.tsx +0 -154
  34. package/src/__tests__/e2e/DateTimePicker.test.tsx +0 -86
  35. package/src/__tests__/e2e/DateTimePickerRoot.test.tsx +0 -72
  36. package/src/__tests__/e2e/KeyboardDatePicker.test.tsx +0 -140
  37. package/src/__tests__/e2e/KeyboardDateTimePicker.test.tsx +0 -48
  38. package/src/__tests__/e2e/Theme.test.tsx +0 -30
  39. package/src/__tests__/e2e/TimePicker.test.tsx +0 -121
  40. package/src/__tests__/e2e/commands.tsx +0 -8
  41. package/src/__tests__/setup.js +0 -26
  42. package/src/__tests__/test-utils.tsx +0 -45
  43. package/src/__tests__/tsconfig.json +0 -5
  44. package/src/_helpers/date-utils.ts +0 -92
  45. package/src/_helpers/text-field-helper.ts +0 -239
  46. package/src/_helpers/time-utils.ts +0 -83
  47. package/src/_helpers/utils.ts +0 -8
  48. package/src/_shared/KeyboardDateInput.tsx +0 -161
  49. package/src/_shared/ModalDialog.tsx +0 -114
  50. package/src/_shared/PickerToolbar.tsx +0 -52
  51. package/src/_shared/PureDateInput.tsx +0 -45
  52. package/src/_shared/ToolbarButton.tsx +0 -63
  53. package/src/_shared/ToolbarText.tsx +0 -49
  54. package/src/_shared/WithUtils.tsx +0 -19
  55. package/src/_shared/hooks/useIsLandscape.tsx +0 -27
  56. package/src/_shared/hooks/useKeyDown.ts +0 -34
  57. package/src/_shared/hooks/useKeyboardPickerState.ts +0 -72
  58. package/src/_shared/hooks/useOpenState.ts +0 -22
  59. package/src/_shared/hooks/usePickerState.ts +0 -134
  60. package/src/_shared/hooks/useUtils.ts +0 -20
  61. package/src/_shared/hooks/useViews.tsx +0 -31
  62. package/src/_shared/icons/ArrowLeftIcon.tsx +0 -11
  63. package/src/_shared/icons/ArrowRightIcon.tsx +0 -11
  64. package/src/_shared/icons/DateRangeIcon.tsx +0 -11
  65. package/src/_shared/icons/KeyboardIcon.tsx +0 -11
  66. package/src/_shared/icons/TimeIcon.tsx +0 -12
  67. package/src/constants/ClockType.ts +0 -11
  68. package/src/constants/dimensions.ts +0 -5
  69. package/src/constants/prop-types.ts +0 -37
  70. package/src/index.ts +0 -48
  71. package/src/typings/BasePicker.tsx +0 -60
  72. package/src/typings/date.ts +0 -3
  73. package/src/typings/extendMui.ts +0 -10
  74. package/src/typings/overrides.ts +0 -44
  75. package/src/views/Calendar/Calendar.tsx +0 -361
  76. package/src/views/Calendar/CalendarHeader.tsx +0 -141
  77. package/src/views/Calendar/Day.tsx +0 -97
  78. package/src/views/Calendar/DayWrapper.tsx +0 -33
  79. package/src/views/Calendar/SlideTransition.tsx +0 -100
  80. package/src/views/Clock/Clock.tsx +0 -172
  81. package/src/views/Clock/ClockNumber.tsx +0 -91
  82. package/src/views/Clock/ClockNumbers.tsx +0 -76
  83. package/src/views/Clock/ClockPointer.tsx +0 -104
  84. package/src/views/Clock/ClockView.tsx +0 -105
  85. package/src/views/Month/Month.tsx +0 -76
  86. package/src/views/Month/MonthView.tsx +0 -94
  87. package/src/views/Year/Year.tsx +0 -77
  88. package/src/views/Year/YearView.tsx +0 -91
  89. package/src/wrappers/InlineWrapper.tsx +0 -80
  90. package/src/wrappers/ModalWrapper.tsx +0 -113
  91. package/src/wrappers/StaticWrapper.tsx +0 -22
  92. package/src/wrappers/Wrapper.tsx +0 -75
  93. package/tsconfig.json +0 -21
  94. package/typings.d.ts +0 -6
  95. /package/{build/DatePicker → DatePicker}/DatePicker.d.ts +0 -0
  96. /package/{build/DatePicker → DatePicker}/DatePicker.js +0 -0
  97. /package/{build/DatePicker → DatePicker}/DatePickerToolbar.d.ts +0 -0
  98. /package/{build/DatePicker → DatePicker}/DatePickerToolbar.js +0 -0
  99. /package/{build/DatePicker → DatePicker}/index.d.ts +0 -0
  100. /package/{build/DatePicker → DatePicker}/index.js +0 -0
  101. /package/{build/DateTimePicker → DateTimePicker}/DateTimePicker.d.ts +0 -0
  102. /package/{build/DateTimePicker → DateTimePicker}/DateTimePicker.js +0 -0
  103. /package/{build/DateTimePicker → DateTimePicker}/DateTimePickerTabs.d.ts +0 -0
  104. /package/{build/DateTimePicker → DateTimePicker}/DateTimePickerTabs.js +0 -0
  105. /package/{build/DateTimePicker → DateTimePicker}/DateTimePickerToolbar.d.ts +0 -0
  106. /package/{build/DateTimePicker → DateTimePicker}/DateTimePickerToolbar.js +0 -0
  107. /package/{build/DateTimePicker → DateTimePicker}/index.d.ts +0 -0
  108. /package/{build/DateTimePicker → DateTimePicker}/index.js +0 -0
  109. /package/{build/MuiPickersUtilsProvider.d.ts → MuiPickersUtilsProvider.d.ts} +0 -0
  110. /package/{build/MuiPickersUtilsProvider.js → MuiPickersUtilsProvider.js} +0 -0
  111. /package/{build/Picker → Picker}/Picker.d.ts +0 -0
  112. /package/{build/Picker → Picker}/Picker.js +0 -0
  113. /package/{build/Picker → Picker}/WrappedKeyboardPicker.d.ts +0 -0
  114. /package/{build/Picker → Picker}/WrappedKeyboardPicker.js +0 -0
  115. /package/{build/Picker → Picker}/WrappedPurePicker.d.ts +0 -0
  116. /package/{build/Picker → Picker}/WrappedPurePicker.js +0 -0
  117. /package/{build/README.md → README.md} +0 -0
  118. /package/{build/Rifm → Rifm}/Rifm.d.ts +0 -0
  119. /package/{build/Rifm → Rifm}/Rifm.js +0 -0
  120. /package/{build/TimePicker → TimePicker}/TimePicker.d.ts +0 -0
  121. /package/{build/TimePicker → TimePicker}/TimePicker.js +0 -0
  122. /package/{build/TimePicker → TimePicker}/TimePickerToolbar.d.ts +0 -0
  123. /package/{build/TimePicker → TimePicker}/TimePickerToolbar.js +0 -0
  124. /package/{build/TimePicker → TimePicker}/index.d.ts +0 -0
  125. /package/{build/TimePicker → TimePicker}/index.js +0 -0
  126. /package/{build/_helpers → _helpers}/date-utils.d.ts +0 -0
  127. /package/{build/_helpers → _helpers}/date-utils.js +0 -0
  128. /package/{build/_helpers → _helpers}/text-field-helper.d.ts +0 -0
  129. /package/{build/_helpers → _helpers}/text-field-helper.js +0 -0
  130. /package/{build/_helpers → _helpers}/time-utils.d.ts +0 -0
  131. /package/{build/_helpers → _helpers}/time-utils.js +0 -0
  132. /package/{build/_helpers → _helpers}/utils.d.ts +0 -0
  133. /package/{build/_helpers → _helpers}/utils.js +0 -0
  134. /package/{build/_shared → _shared}/KeyboardDateInput.d.ts +0 -0
  135. /package/{build/_shared → _shared}/KeyboardDateInput.js +0 -0
  136. /package/{build/_shared → _shared}/ModalDialog.d.ts +0 -0
  137. /package/{build/_shared → _shared}/ModalDialog.js +0 -0
  138. /package/{build/_shared → _shared}/PickerToolbar.d.ts +0 -0
  139. /package/{build/_shared → _shared}/PickerToolbar.js +0 -0
  140. /package/{build/_shared → _shared}/PureDateInput.d.ts +0 -0
  141. /package/{build/_shared → _shared}/PureDateInput.js +0 -0
  142. /package/{build/_shared → _shared}/ToolbarButton.d.ts +0 -0
  143. /package/{build/_shared → _shared}/ToolbarButton.js +0 -0
  144. /package/{build/_shared → _shared}/ToolbarText.d.ts +0 -0
  145. /package/{build/_shared → _shared}/ToolbarText.js +0 -0
  146. /package/{build/_shared → _shared}/WithUtils.d.ts +0 -0
  147. /package/{build/_shared → _shared}/WithUtils.js +0 -0
  148. /package/{build/_shared → _shared}/hooks/useIsLandscape.d.ts +0 -0
  149. /package/{build/_shared → _shared}/hooks/useIsLandscape.js +0 -0
  150. /package/{build/_shared → _shared}/hooks/useKeyDown.d.ts +0 -0
  151. /package/{build/_shared → _shared}/hooks/useKeyDown.js +0 -0
  152. /package/{build/_shared → _shared}/hooks/useKeyboardPickerState.d.ts +0 -0
  153. /package/{build/_shared → _shared}/hooks/useKeyboardPickerState.js +0 -0
  154. /package/{build/_shared → _shared}/hooks/useOpenState.d.ts +0 -0
  155. /package/{build/_shared → _shared}/hooks/useOpenState.js +0 -0
  156. /package/{build/_shared → _shared}/hooks/usePickerState.d.ts +0 -0
  157. /package/{build/_shared → _shared}/hooks/usePickerState.js +0 -0
  158. /package/{build/_shared → _shared}/hooks/useUtils.d.ts +0 -0
  159. /package/{build/_shared → _shared}/hooks/useUtils.js +0 -0
  160. /package/{build/_shared → _shared}/hooks/useViews.d.ts +0 -0
  161. /package/{build/_shared → _shared}/hooks/useViews.js +0 -0
  162. /package/{build/_shared → _shared}/icons/ArrowLeftIcon.d.ts +0 -0
  163. /package/{build/_shared → _shared}/icons/ArrowLeftIcon.js +0 -0
  164. /package/{build/_shared → _shared}/icons/ArrowRightIcon.d.ts +0 -0
  165. /package/{build/_shared → _shared}/icons/ArrowRightIcon.js +0 -0
  166. /package/{build/_shared → _shared}/icons/DateRangeIcon.d.ts +0 -0
  167. /package/{build/_shared → _shared}/icons/DateRangeIcon.js +0 -0
  168. /package/{build/_shared → _shared}/icons/KeyboardIcon.d.ts +0 -0
  169. /package/{build/_shared → _shared}/icons/KeyboardIcon.js +0 -0
  170. /package/{build/_shared → _shared}/icons/TimeIcon.d.ts +0 -0
  171. /package/{build/_shared → _shared}/icons/TimeIcon.js +0 -0
  172. /package/{build/constants → constants}/ClockType.d.ts +0 -0
  173. /package/{build/constants → constants}/ClockType.js +0 -0
  174. /package/{build/constants → constants}/dimensions.d.ts +0 -0
  175. /package/{build/constants → constants}/dimensions.js +0 -0
  176. /package/{build/constants → constants}/prop-types.d.ts +0 -0
  177. /package/{build/constants → constants}/prop-types.js +0 -0
  178. /package/{build/dist → dist}/material-ui-pickers.esm.js +0 -0
  179. /package/{build/dist → dist}/material-ui-pickers.esm.js.map +0 -0
  180. /package/{build/dist → dist}/material-ui-pickers.js +0 -0
  181. /package/{build/dist → dist}/material-ui-pickers.js.map +0 -0
  182. /package/{build/dist → dist}/material-ui-pickers.umd.js +0 -0
  183. /package/{build/dist → dist}/material-ui-pickers.umd.min.js +0 -0
  184. /package/{build/index.d.ts → index.d.ts} +0 -0
  185. /package/{build/index.js → index.js} +0 -0
  186. /package/{build/typings → typings}/BasePicker.d.ts +0 -0
  187. /package/{build/typings → typings}/BasePicker.js +0 -0
  188. /package/{build/typings → typings}/date.d.ts +0 -0
  189. /package/{build/typings → typings}/date.js +0 -0
  190. /package/{build/typings → typings}/extendMui.d.ts +0 -0
  191. /package/{build/typings → typings}/extendMui.js +0 -0
  192. /package/{build/typings → typings}/overrides.d.ts +0 -0
  193. /package/{build/typings → typings}/overrides.js +0 -0
  194. /package/{build/views → views}/Calendar/Calendar.d.ts +0 -0
  195. /package/{build/views → views}/Calendar/Calendar.js +0 -0
  196. /package/{build/views → views}/Calendar/CalendarHeader.d.ts +0 -0
  197. /package/{build/views → views}/Calendar/CalendarHeader.js +0 -0
  198. /package/{build/views → views}/Calendar/Day.d.ts +0 -0
  199. /package/{build/views → views}/Calendar/Day.js +0 -0
  200. /package/{build/views → views}/Calendar/DayWrapper.d.ts +0 -0
  201. /package/{build/views → views}/Calendar/DayWrapper.js +0 -0
  202. /package/{build/views → views}/Calendar/SlideTransition.d.ts +0 -0
  203. /package/{build/views → views}/Calendar/SlideTransition.js +0 -0
  204. /package/{build/views → views}/Clock/Clock.d.ts +0 -0
  205. /package/{build/views → views}/Clock/Clock.js +0 -0
  206. /package/{build/views → views}/Clock/ClockNumber.d.ts +0 -0
  207. /package/{build/views → views}/Clock/ClockNumber.js +0 -0
  208. /package/{build/views → views}/Clock/ClockNumbers.d.ts +0 -0
  209. /package/{build/views → views}/Clock/ClockNumbers.js +0 -0
  210. /package/{build/views → views}/Clock/ClockPointer.d.ts +0 -0
  211. /package/{build/views → views}/Clock/ClockPointer.js +0 -0
  212. /package/{build/views → views}/Clock/ClockView.d.ts +0 -0
  213. /package/{build/views → views}/Clock/ClockView.js +0 -0
  214. /package/{build/views → views}/Month/Month.d.ts +0 -0
  215. /package/{build/views → views}/Month/Month.js +0 -0
  216. /package/{build/views → views}/Month/MonthView.d.ts +0 -0
  217. /package/{build/views → views}/Month/MonthView.js +0 -0
  218. /package/{build/views → views}/Year/Year.d.ts +0 -0
  219. /package/{build/views → views}/Year/Year.js +0 -0
  220. /package/{build/views → views}/Year/YearView.d.ts +0 -0
  221. /package/{build/views → views}/Year/YearView.js +0 -0
  222. /package/{build/wrappers → wrappers}/InlineWrapper.d.ts +0 -0
  223. /package/{build/wrappers → wrappers}/InlineWrapper.js +0 -0
  224. /package/{build/wrappers → wrappers}/ModalWrapper.d.ts +0 -0
  225. /package/{build/wrappers → wrappers}/ModalWrapper.js +0 -0
  226. /package/{build/wrappers → wrappers}/StaticWrapper.d.ts +0 -0
  227. /package/{build/wrappers → wrappers}/StaticWrapper.js +0 -0
  228. /package/{build/wrappers → wrappers}/Wrapper.d.ts +0 -0
  229. /package/{build/wrappers → wrappers}/Wrapper.js +0 -0
@@ -1,136 +0,0 @@
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
- }
@@ -1,128 +0,0 @@
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
- }
package/src/Rifm/Rifm.ts DELETED
@@ -1,213 +0,0 @@
1
- import * as React from 'react';
2
-
3
- type Props = {
4
- value: string;
5
- maskChar: string;
6
- onChange: (value: string) => void;
7
- format: (str: string, oldValue: string, currentCaretPosition?: number) => string;
8
- mask?: boolean;
9
- replace?: (value: string) => string;
10
- accept?: RegExp;
11
- letterPosition?: number;
12
- children: (value: {
13
- value: string;
14
- onChange: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>;
15
- }) => any;
16
- };
17
-
18
- export const Rifm = (props: Props) => {
19
- const [, refresh] = React.useReducer(c => c + 1, 0);
20
- const valueRef = React.useRef<any>(null);
21
- const { replace, maskChar } = props;
22
- const [previousValue, setPreviousValue] = React.useState({ value: '' });
23
- const userValue = replace
24
- ? replace(props.format(props.value, previousValue.value))
25
- : props.format(props.value, previousValue.value);
26
-
27
- const currentPreviousValue = previousValue.value;
28
-
29
- // state of delete button see comments below about inputType support
30
- const isDeleleteButtonDownRef = React.useRef(false);
31
-
32
- const onChange = (evt: any) => {
33
- const eventValue = evt.target.value;
34
- const selectionStart = evt.target.selectionStart;
35
-
36
- valueRef.current = [
37
- eventValue, // eventValue
38
- evt.target, // input
39
- eventValue.length > userValue.length, // isSizeIncreaseOperation
40
- isDeleleteButtonDownRef.current, // isDeleleteButtonDown
41
- selectionStart, // selectionStart
42
- userValue === props.format(eventValue, currentPreviousValue, selectionStart), // isNoOperation
43
- ];
44
-
45
- // The main trick is to update underlying input with non formatted value (= eventValue)
46
- // that allows us to calculate right cursor position after formatting (see getCursorPosition)
47
- // then we format new value and call props.onChange with masked/formatted value
48
- // and finally we are able to set cursor position into right place
49
- refresh(null);
50
- };
51
-
52
- // React prints warn on server in non production mode about useLayoutEffect usage
53
- // in both cases it's noop
54
- if (typeof window !== 'undefined') {
55
- React.useLayoutEffect(() => {
56
- if (valueRef.current == null) return;
57
-
58
- let [
59
- eventValue,
60
- input,
61
- isSizeIncreaseOperation,
62
- isDeleleteButtonDown,
63
- selectionStart,
64
- // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed
65
- isNoOperation,
66
- ] = valueRef.current;
67
- valueRef.current = null;
68
-
69
- // this usually occurs on deleting special symbols like ' here 123'123.00
70
- // in case of isDeleleteButtonDown cursor should move differently vs backspace
71
- const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;
72
-
73
- // Create string from only accepted symbols
74
- const clean = (str: string) => (str.match(props.accept || /\d|\w/g) || []).join('');
75
-
76
- const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart));
77
-
78
- // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart
79
- // This works because we assume that format doesn't change the order of accepted symbols.
80
- // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols
81
- // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol
82
- // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4
83
- // calling getCursorPosition("1'2'3'4") will give us position after 3, 1'2'3|'4
84
- // so for formatting just this function to determine cursor position after formatting is enough
85
- // with masking we need to do some additional checks see `mask` below
86
- const getCursorPosition = (val: any) => {
87
- let start = 0;
88
- let cleanPos = 0;
89
-
90
- for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {
91
- let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;
92
-
93
- let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1;
94
-
95
- // this skips position change if accepted symbols order was broken
96
- // For example fixes edge case with fixed point numbers:
97
- // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption
98
- // that order of accepted symbols is not changed after format,
99
- // so here we don't update start position if other accepted symbols was inbetween current and new position
100
- if (newCleanPos - cleanPos > 1) {
101
- newPos = start;
102
- newCleanPos = cleanPos;
103
- }
104
-
105
- cleanPos = Math.max(newCleanPos, cleanPos);
106
- start = Math.max(start, newPos);
107
- }
108
- return start;
109
- };
110
-
111
- //let start = getCursorPosition(eventValue);
112
-
113
- // // Masking part, for masks if size of mask is above some value
114
- // // we need to replace symbols instead of do nothing as like in format
115
- // if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {
116
- // const c = clean(eventValue.substr(start))[0];
117
- // start = eventValue.indexOf(c, start);
118
-
119
- // eventValue = `${eventValue.substr(0, start)}${eventValue.substr(
120
- // start + 1
121
- // )}`;
122
- // }
123
-
124
- const formattedValue = props.format(eventValue, currentPreviousValue, selectionStart);
125
- let replacedValue = replace ? replace(formattedValue) : formattedValue;
126
-
127
- let start = getCursorPosition(formattedValue);
128
- let inputCharPosition = start - 1;
129
- if (inputCharPosition > -1) {
130
- if (
131
- props.letterPosition &&
132
- props.letterPosition > -1 &&
133
- replacedValue[inputCharPosition].match(/[a-zA-Z]/) &&
134
- (inputCharPosition < props.letterPosition || inputCharPosition > props.letterPosition + 1)
135
- ) {
136
- replacedValue = currentPreviousValue;
137
- } else if (
138
- props.letterPosition &&
139
- props.letterPosition > -1 &&
140
- replacedValue[inputCharPosition].match(/\d/) &&
141
- (inputCharPosition >= props.letterPosition &&
142
- inputCharPosition <= props.letterPosition + 1)
143
- ) {
144
- replacedValue = currentPreviousValue;
145
- }
146
- }
147
-
148
- if (userValue === replacedValue) {
149
- // if nothing changed for formatted value, just refresh so userValue will be used at render
150
- refresh(null);
151
- } else {
152
- props.onChange(replacedValue);
153
- }
154
-
155
- return () => {
156
- // Visually improves working with masked values,
157
- // like cursor jumping over refused symbols
158
- // as an example date mask: was "5|1-24-3" then user pressed "6"
159
- // it becomes "56-|12-43" with this code, and "56|-12-43" without
160
- if (
161
- props.mask != null &&
162
- (isSizeIncreaseOperation || (isDeleleteButtonDown && !deleteWasNoOp))
163
- ) {
164
- while (
165
- formattedValue[start] &&
166
- clean(formattedValue[start]) === '' &&
167
- formattedValue[start] != maskChar
168
- ) {
169
- start += 1;
170
- }
171
- }
172
-
173
- //input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 : 0);
174
- };
175
- });
176
- }
177
-
178
- React.useEffect(() => {
179
- // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported
180
- // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)
181
- // there is no way I found to distinguish in onChange
182
- // backspace or delete was called in some situations
183
- // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239
184
- const handleKeyDown = (evt: KeyboardEvent) => {
185
- if (evt.code === 'Delete') {
186
- isDeleleteButtonDownRef.current = true;
187
- }
188
- };
189
-
190
- const handleKeyUp = (evt: KeyboardEvent) => {
191
- if (evt.code === 'Delete') {
192
- isDeleleteButtonDownRef.current = false;
193
- }
194
- };
195
-
196
- document.addEventListener('keydown', handleKeyDown);
197
- document.addEventListener('keyup', handleKeyUp);
198
-
199
- return () => {
200
- document.removeEventListener('keydown', handleKeyDown);
201
- document.removeEventListener('keyup', handleKeyUp);
202
- };
203
- }, []);
204
-
205
- let value = valueRef.current != null ? valueRef.current[0] : userValue;
206
- // value = props.format(value, currentPreviousValue);
207
- previousValue.value = value;
208
-
209
- return props.children({
210
- value: value,
211
- onChange,
212
- });
213
- };
@@ -1,67 +0,0 @@
1
- import TimePickerToolbar from './TimePickerToolbar';
2
- import { useUtils } from '../_shared/hooks/useUtils';
3
- import { timePickerDefaultProps } from '../constants/prop-types';
4
- import { pick12hOr24hFormat } from '../_helpers/text-field-helper';
5
- import { WrappedPurePickerProps, makePurePicker } from '../Picker/WrappedPurePicker';
6
- import { makeKeyboardPicker, WrappedKeyboardPickerProps } from '../Picker/WrappedKeyboardPicker';
7
-
8
- type TimePickerView = 'hours' | 'minutes' | 'seconds';
9
-
10
- export interface BaseTimePickerProps {
11
- /**
12
- * 12h/24h view for hour selection clock
13
- * @default true
14
- */
15
- ampm?: boolean;
16
- /**
17
- * Step over minutes
18
- * @default 1
19
- */
20
- minutesStep?: number;
21
- }
22
-
23
- export interface TimePickerViewsProps extends BaseTimePickerProps {
24
- /** Array of views to show */
25
- views?: ('hours' | 'minutes' | 'seconds')[];
26
- /** Open to timepicker */
27
- openTo?: 'hours' | 'minutes' | 'seconds';
28
- }
29
-
30
- export type TimePickerProps = WrappedPurePickerProps & TimePickerViewsProps;
31
-
32
- export type KeyboardTimePickerProps = WrappedKeyboardPickerProps & TimePickerViewsProps;
33
-
34
- const defaultProps = {
35
- ...timePickerDefaultProps,
36
- openTo: 'hours' as TimePickerView,
37
- views: ['hours', 'minutes'] as TimePickerView[],
38
- };
39
-
40
- function useOptions(props: TimePickerProps | KeyboardTimePickerProps) {
41
- const utils = useUtils();
42
-
43
- return {
44
- getDefaultFormat: () =>
45
- pick12hOr24hFormat(props.format, props.ampm, {
46
- '12h': utils.time12hFormat,
47
- '24h': utils.time24hFormat,
48
- }),
49
- };
50
- }
51
-
52
- export const TimePicker = makePurePicker<TimePickerViewsProps>({
53
- useOptions,
54
- DefaultToolbarComponent: TimePickerToolbar,
55
- });
56
-
57
- export const KeyboardTimePicker = makeKeyboardPicker<TimePickerViewsProps>({
58
- useOptions,
59
- DefaultToolbarComponent: TimePickerToolbar,
60
- getCustomProps: props => ({
61
- refuse: props.ampm ? /[^\dap]+/gi : /[^\d]+/gi,
62
- }),
63
- });
64
-
65
- TimePicker.defaultProps = defaultProps;
66
-
67
- KeyboardTimePicker.defaultProps = defaultProps;