@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,75 +0,0 @@
1
- import * as React from 'react';
2
- import clsx from 'clsx';
3
- import ToolbarButton from '../_shared/ToolbarButton';
4
- import PickerToolbar from '../_shared/PickerToolbar';
5
- import { useUtils } from '../_shared/hooks/useUtils';
6
- import { makeStyles } from '@material-ui/core/styles';
7
- import { ToolbarComponentProps } from '../Picker/Picker';
8
- import { isYearAndMonthViews, isYearOnlyView } from '../_helpers/date-utils';
9
-
10
- export const useStyles = makeStyles(
11
- {
12
- toolbar: {
13
- flexDirection: 'column',
14
- alignItems: 'flex-start',
15
- },
16
- toolbarLandscape: {
17
- padding: 16,
18
- },
19
- dateLandscape: {
20
- marginRight: 16,
21
- },
22
- },
23
- { name: 'MuiPickersDatePickerRoot' }
24
- );
25
-
26
- export const DatePickerToolbar: React.FC<ToolbarComponentProps> = ({
27
- date,
28
- views,
29
- setOpenView,
30
- isLandscape,
31
- openView,
32
- }) => {
33
- const utils = useUtils();
34
- const classes = useStyles();
35
-
36
- const isYearOnly = React.useMemo(() => isYearOnlyView(views as any), [views]);
37
- const isYearAndMonth = React.useMemo(() => isYearAndMonthViews(views as any), [views]);
38
-
39
- return (
40
- <PickerToolbar
41
- isLandscape={isLandscape}
42
- className={clsx({
43
- [classes.toolbar]: !isYearOnly,
44
- [classes.toolbarLandscape]: isLandscape,
45
- })}
46
- >
47
- <ToolbarButton
48
- variant={isYearOnly ? 'h3' : 'subtitle1'}
49
- onClick={() => setOpenView('year')}
50
- selected={openView === 'year'}
51
- label={utils.getYearText(date)}
52
- />
53
-
54
- {!isYearOnly && !isYearAndMonth && (
55
- <ToolbarButton
56
- variant="h4"
57
- selected={openView === 'date'}
58
- onClick={() => setOpenView('date')}
59
- align={isLandscape ? 'left' : 'center'}
60
- label={utils.getDatePickerHeaderText(date)}
61
- className={clsx({ [classes.dateLandscape]: isLandscape })}
62
- />
63
- )}
64
-
65
- {isYearAndMonth && (
66
- <ToolbarButton
67
- variant="h4"
68
- onClick={() => setOpenView('month')}
69
- selected={openView === 'month'}
70
- label={utils.getMonthText(date)}
71
- />
72
- )}
73
- </PickerToolbar>
74
- );
75
- };
@@ -1,7 +0,0 @@
1
- import { DatePickerProps, KeyboardDatePickerProps } from './DatePicker';
2
-
3
- export type DatePickerProps = DatePickerProps;
4
-
5
- export type KeyboardDatePickerProps = KeyboardDatePickerProps;
6
-
7
- export { KeyboardDatePicker, DatePicker } from './DatePicker';
@@ -1,72 +0,0 @@
1
- import { useUtils } from '../_shared/hooks/useUtils';
2
- import { BaseDatePickerProps } from '../DatePicker/DatePicker';
3
- import { BaseTimePickerProps } from '../TimePicker/TimePicker';
4
- import { DateTimePickerToolbar } from './DateTimePickerToolbar';
5
- import { pick12hOr24hFormat } from '../_helpers/text-field-helper';
6
- import { dateTimePickerDefaultProps } from '../constants/prop-types';
7
- import { WrappedPurePickerProps, makePurePicker } from '../Picker/WrappedPurePicker';
8
- import { makeKeyboardPicker, WrappedKeyboardPickerProps } from '../Picker/WrappedKeyboardPicker';
9
-
10
- export type DateTimePickerView = 'year' | 'date' | 'month' | 'hours' | 'minutes';
11
-
12
- export type BaseDateTimePickerProps = BaseTimePickerProps & BaseDatePickerProps;
13
-
14
- export interface DateTimePickerViewsProps extends BaseDateTimePickerProps {
15
- /** Array of views to show */
16
- views?: ('year' | 'date' | 'month' | 'hours' | 'minutes')[];
17
- /** Open to DatePicker */
18
- openTo?: 'year' | 'date' | 'month' | 'hours' | 'minutes';
19
- /** To show tabs */
20
- hideTabs?: boolean;
21
- /** Date tab icon */
22
- dateRangeIcon?: React.ReactNode;
23
- /** Time tab icon */
24
- timeIcon?: React.ReactNode;
25
- }
26
-
27
- export type DateTimePickerProps = WrappedPurePickerProps & DateTimePickerViewsProps;
28
-
29
- export type KeyboardDateTimePickerProps = WrappedKeyboardPickerProps & DateTimePickerViewsProps;
30
-
31
- const defaultProps = {
32
- ...dateTimePickerDefaultProps,
33
- showActionsBar: false,
34
- todayLabel: 'TODAY',
35
- wider: true,
36
- orientation: 'portrait' as const,
37
- openTo: 'date' as DateTimePickerView,
38
- views: ['year', 'date', 'hours', 'minutes'] as DateTimePickerView[],
39
- };
40
-
41
- function useOptions(props: DateTimePickerProps | KeyboardDateTimePickerProps) {
42
- const utils = useUtils();
43
-
44
- if (props.orientation !== 'portrait') {
45
- throw new Error('We are not supporting custom orientation for DateTimePicker yet :(');
46
- }
47
-
48
- return {
49
- getDefaultFormat: () =>
50
- pick12hOr24hFormat(props.format, props.ampm, {
51
- '12h': utils.dateTime12hFormat,
52
- '24h': utils.dateTime24hFormat,
53
- }),
54
- };
55
- }
56
-
57
- export const DateTimePicker = makePurePicker<DateTimePickerProps>({
58
- useOptions,
59
- DefaultToolbarComponent: DateTimePickerToolbar,
60
- });
61
-
62
- export const KeyboardDateTimePicker = makeKeyboardPicker<KeyboardDateTimePickerProps>({
63
- useOptions,
64
- DefaultToolbarComponent: DateTimePickerToolbar,
65
- getCustomProps: props => ({
66
- refuse: props.ampm ? /[^\dap]+/gi : /[^\d]+/gi,
67
- }),
68
- });
69
-
70
- DateTimePicker.defaultProps = defaultProps;
71
-
72
- KeyboardDateTimePicker.defaultProps = defaultProps;
@@ -1,86 +0,0 @@
1
- import * as React from 'react';
2
- import Tab from '@material-ui/core/Tab';
3
- import Tabs from '@material-ui/core/Tabs';
4
- import Paper from '@material-ui/core/Paper';
5
- import { TimeIcon } from '../_shared/icons/TimeIcon';
6
- import { DateTimePickerView } from './DateTimePicker';
7
- import { DateRangeIcon } from '../_shared/icons/DateRangeIcon';
8
- import { makeStyles, useTheme } from '@material-ui/core/styles';
9
-
10
- const viewToTabIndex = (openView: DateTimePickerView) => {
11
- if (openView === 'date' || openView === 'year') {
12
- return 'date';
13
- }
14
-
15
- return 'time';
16
- };
17
-
18
- const tabIndexToView = (tab: DateTimePickerView) => {
19
- if (tab === 'date') {
20
- return 'date';
21
- }
22
-
23
- return 'hours';
24
- };
25
-
26
- export interface DateTimePickerTabsProps {
27
- view: DateTimePickerView;
28
- onChange: (view: DateTimePickerView) => void;
29
- dateRangeIcon?: React.ReactNode;
30
- timeIcon?: React.ReactNode;
31
- }
32
-
33
- export const useStyles = makeStyles(
34
- theme => {
35
- // prettier-ignore
36
- const tabsBackground = theme.palette.type === 'light'
37
- ? theme.palette.primary.main
38
- : theme.palette.background.default;
39
-
40
- return {
41
- tabs: {
42
- color: theme.palette.getContrastText(tabsBackground),
43
- backgroundColor: tabsBackground,
44
- },
45
- };
46
- },
47
- { name: 'MuiPickerDTTabs' }
48
- );
49
-
50
- export const DateTimePickerTabs: React.SFC<DateTimePickerTabsProps> = ({
51
- view,
52
- onChange,
53
- dateRangeIcon,
54
- timeIcon,
55
- }) => {
56
- const classes = useStyles();
57
- const theme = useTheme();
58
- const indicatorColor = theme.palette.type === 'light' ? 'secondary' : 'primary';
59
- const handleChange = (e: React.ChangeEvent<{}>, value: DateTimePickerView) => {
60
- if (value !== viewToTabIndex(view)) {
61
- onChange(tabIndexToView(value));
62
- }
63
- };
64
-
65
- return (
66
- <Paper>
67
- <Tabs
68
- variant="fullWidth"
69
- value={viewToTabIndex(view)}
70
- onChange={handleChange}
71
- className={classes.tabs}
72
- indicatorColor={indicatorColor}
73
- >
74
- <Tab value="date" icon={<>{dateRangeIcon}</>} />
75
- <Tab value="time" icon={<>{timeIcon}</>} />
76
- </Tabs>
77
- </Paper>
78
- );
79
- };
80
-
81
- DateTimePickerTabs.defaultProps = {
82
- dateRangeIcon: <DateRangeIcon />,
83
- timeIcon: <TimeIcon />,
84
- };
85
-
86
- export default DateTimePickerTabs;
@@ -1,123 +0,0 @@
1
- import * as React from 'react';
2
- import ToolbarText from '../_shared/ToolbarText';
3
- import PickerToolbar from '../_shared/PickerToolbar';
4
- import ToolbarButton from '../_shared/ToolbarButton';
5
- import DateTimePickerTabs from './DateTimePickerTabs';
6
- import { Grid } from '@material-ui/core';
7
- import { useUtils } from '../_shared/hooks/useUtils';
8
- import { DateTimePickerView } from './DateTimePicker';
9
- import { ToolbarComponentProps } from '../Picker/Picker';
10
- import { makeStyles, useTheme } from '@material-ui/core/styles';
11
- import { useMeridiemMode } from '../TimePicker/TimePickerToolbar';
12
-
13
- export const useStyles = makeStyles(
14
- _ => ({
15
- toolbar: {
16
- paddingLeft: 16,
17
- paddingRight: 16,
18
- justifyContent: 'space-around',
19
- },
20
- separator: {
21
- margin: '0 4px 0 2px',
22
- cursor: 'default',
23
- },
24
- }),
25
- { name: 'MuiPickerDTToolbar' }
26
- );
27
-
28
- export const DateTimePickerToolbar: React.FC<ToolbarComponentProps> = ({
29
- date,
30
- openView,
31
- setOpenView,
32
- ampm,
33
- hideTabs,
34
- dateRangeIcon,
35
- timeIcon,
36
- onChange,
37
- }) => {
38
- const utils = useUtils();
39
- const classes = useStyles();
40
- const showTabs = !hideTabs && typeof window !== 'undefined' && window.innerHeight > 667;
41
- const { meridiemMode, handleMeridiemChange } = useMeridiemMode(date, ampm, onChange);
42
- const theme = useTheme();
43
- const rtl = theme.direction === 'rtl';
44
-
45
- return (
46
- <>
47
- <PickerToolbar isLandscape={false} className={classes.toolbar}>
48
- <Grid container justify="center" wrap="nowrap">
49
- <Grid item container xs={5} justify="flex-start" direction="column">
50
- <div>
51
- <ToolbarButton
52
- variant="subtitle1"
53
- onClick={() => setOpenView('year')}
54
- selected={openView === 'year'}
55
- label={utils.getYearText(date)}
56
- />
57
- </div>
58
- <div>
59
- <ToolbarButton
60
- variant="h4"
61
- onClick={() => setOpenView('date')}
62
- selected={openView === 'date'}
63
- label={utils.getDateTimePickerHeaderText(date)}
64
- />
65
- </div>
66
- </Grid>
67
-
68
- <Grid
69
- item
70
- container
71
- xs={6}
72
- justify="center"
73
- alignItems="flex-end"
74
- direction={rtl ? 'row-reverse' : 'row'}
75
- >
76
- <ToolbarButton
77
- variant="h3"
78
- onClick={() => setOpenView('hours')}
79
- selected={openView === 'hours'}
80
- label={utils.getHourText(date, ampm!)}
81
- />
82
-
83
- <ToolbarText variant="h3" label=":" className={classes.separator} />
84
-
85
- <ToolbarButton
86
- variant="h3"
87
- onClick={() => setOpenView('minutes')}
88
- selected={openView === 'minutes'}
89
- label={utils.getMinuteText(date)}
90
- />
91
- </Grid>
92
-
93
- {ampm && (
94
- <Grid item container xs={1} direction="column" justify="flex-end">
95
- <ToolbarButton
96
- variant="subtitle1"
97
- selected={meridiemMode === 'am'}
98
- label={utils.getMeridiemText('am')}
99
- onClick={() => handleMeridiemChange('am')}
100
- />
101
-
102
- <ToolbarButton
103
- variant="subtitle1"
104
- selected={meridiemMode === 'pm'}
105
- label={utils.getMeridiemText('pm')}
106
- onClick={() => handleMeridiemChange('pm')}
107
- />
108
- </Grid>
109
- )}
110
- </Grid>
111
- </PickerToolbar>
112
-
113
- {showTabs && (
114
- <DateTimePickerTabs
115
- dateRangeIcon={dateRangeIcon}
116
- timeIcon={timeIcon}
117
- view={openView as DateTimePickerView}
118
- onChange={setOpenView}
119
- />
120
- )}
121
- </>
122
- );
123
- };
@@ -1,7 +0,0 @@
1
- import { DateTimePickerProps, KeyboardDateTimePickerProps } from './DateTimePicker';
2
-
3
- export type DateTimePickerProps = DateTimePickerProps;
4
-
5
- export type KeyboardDateTimePickerProps = KeyboardDateTimePickerProps;
6
-
7
- export { KeyboardDateTimePicker, DateTimePicker } from './DateTimePicker';
@@ -1,39 +0,0 @@
1
- import * as React from 'react';
2
- import * as PropTypes from 'prop-types';
3
- import { IUtils } from '@date-io/core/IUtils';
4
- import { MaterialUiPickersDate } from './typings/date';
5
-
6
- export const MuiPickersContext = React.createContext<IUtils<MaterialUiPickersDate> | null>(null);
7
-
8
- export interface MuiPickersUtilsProviderProps {
9
- utils: any;
10
- children: React.ReactNode;
11
- locale?: any;
12
- libInstance?: any;
13
- }
14
-
15
- export const MuiPickersUtilsProvider: React.FC<MuiPickersUtilsProviderProps> = ({
16
- utils: Utils,
17
- children,
18
- locale,
19
- libInstance,
20
- }) => {
21
- const utils = React.useMemo(() => new Utils({ locale, moment: libInstance }), [
22
- Utils,
23
- libInstance,
24
- locale,
25
- ]);
26
-
27
- return <MuiPickersContext.Provider value={utils} children={children} />;
28
- };
29
-
30
- MuiPickersUtilsProvider.propTypes = {
31
- utils: PropTypes.func.isRequired,
32
- locale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
33
- children: PropTypes.oneOfType([
34
- PropTypes.element.isRequired,
35
- PropTypes.arrayOf(PropTypes.element.isRequired),
36
- ]).isRequired,
37
- };
38
-
39
- export default MuiPickersUtilsProvider;
@@ -1,275 +0,0 @@
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;