@mui/lab 5.0.0-alpha.50 → 5.0.0-alpha.54

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 (234) hide show
  1. package/CHANGELOG.md +274 -0
  2. package/CalendarPicker/CalendarPicker.d.ts +10 -0
  3. package/CalendarPicker/CalendarPicker.js +12 -0
  4. package/CalendarPicker/PickersCalendar.d.ts +2 -0
  5. package/CalendarPicker/PickersCalendar.js +9 -3
  6. package/CalendarPicker/PickersCalendarHeader.d.ts +1 -0
  7. package/CalendarPicker/PickersCalendarHeader.js +5 -4
  8. package/CalendarPicker/PickersFadeTransitionGroup.js +2 -2
  9. package/CalendarPickerSkeleton/CalendarPickerSkeleton.d.ts +2 -1
  10. package/CalendarPickerSkeleton/CalendarPickerSkeleton.js +1 -1
  11. package/DatePicker/DatePicker.js +7 -0
  12. package/DateRangePicker/DateRangePicker.js +7 -0
  13. package/DateRangePickerDay/DateRangePickerDay.js +1 -1
  14. package/DateTimePicker/DateTimePicker.js +7 -0
  15. package/DesktopDatePicker/DesktopDatePicker.js +10 -1
  16. package/DesktopDateRangePicker/DesktopDateRangePicker.js +7 -0
  17. package/DesktopDateTimePicker/DesktopDateTimePicker.js +7 -0
  18. package/DesktopTimePicker/DesktopTimePicker.js +5 -0
  19. package/LoadingButton/LoadingButton.js +37 -7
  20. package/Masonry/Masonry.d.ts +13 -1
  21. package/Masonry/Masonry.js +207 -57
  22. package/MobileDatePicker/MobileDatePicker.js +2 -0
  23. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -0
  24. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  25. package/MonthPicker/MonthPicker.d.ts +4 -0
  26. package/MonthPicker/MonthPicker.js +20 -4
  27. package/PickersDay/PickersDay.js +1 -1
  28. package/StaticDatePicker/StaticDatePicker.js +2 -0
  29. package/StaticDateRangePicker/StaticDateRangePicker.js +2 -0
  30. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  31. package/TabPanel/TabPanel.js +1 -1
  32. package/TimePicker/TimePicker.js +5 -0
  33. package/Timeline/Timeline.js +1 -1
  34. package/TimelineConnector/TimelineConnector.js +1 -1
  35. package/TimelineContent/TimelineContent.js +1 -1
  36. package/TimelineDot/TimelineDot.js +1 -1
  37. package/TimelineItem/TimelineItem.js +1 -1
  38. package/TimelineOppositeContent/TimelineOppositeContent.js +1 -1
  39. package/TimelineSeparator/TimelineSeparator.js +1 -1
  40. package/TreeItem/TreeItem.js +1 -1
  41. package/TreeView/TreeView.js +1 -1
  42. package/YearPicker/YearPicker.d.ts +2 -0
  43. package/YearPicker/YearPicker.js +17 -1
  44. package/index.js +1 -1
  45. package/internal/pickers/Picker/Picker.d.ts +1 -1
  46. package/internal/pickers/Picker/PickerView.d.ts +1 -1
  47. package/internal/pickers/PickersArrowSwitcher.d.ts +2 -2
  48. package/internal/pickers/PickersArrowSwitcher.js +1 -3
  49. package/internal/pickers/PickersPopper.d.ts +9 -1
  50. package/internal/pickers/PickersPopper.js +31 -7
  51. package/internal/pickers/test-utils.js +4 -2
  52. package/internal/pickers/wrappers/DesktopWrapper.d.ts +2 -2
  53. package/internal/pickers/wrappers/DesktopWrapper.js +2 -0
  54. package/legacy/CalendarPicker/CalendarPicker.js +12 -0
  55. package/legacy/CalendarPicker/PickersCalendar.js +10 -3
  56. package/legacy/CalendarPicker/PickersCalendarHeader.js +5 -4
  57. package/legacy/CalendarPicker/PickersFadeTransitionGroup.js +3 -5
  58. package/legacy/CalendarPickerSkeleton/CalendarPickerSkeleton.js +1 -1
  59. package/legacy/DatePicker/DatePicker.js +7 -0
  60. package/legacy/DateRangePicker/DateRangePicker.js +7 -0
  61. package/legacy/DateRangePickerDay/DateRangePickerDay.js +1 -1
  62. package/legacy/DateTimePicker/DateTimePicker.js +7 -0
  63. package/legacy/DesktopDatePicker/DesktopDatePicker.js +10 -1
  64. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +7 -0
  65. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +7 -0
  66. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -0
  67. package/legacy/LoadingButton/LoadingButton.js +36 -10
  68. package/legacy/Masonry/Masonry.js +216 -57
  69. package/legacy/MobileDatePicker/MobileDatePicker.js +2 -0
  70. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +2 -0
  71. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  72. package/legacy/MonthPicker/MonthPicker.js +19 -3
  73. package/legacy/PickersDay/PickersDay.js +1 -1
  74. package/legacy/StaticDatePicker/StaticDatePicker.js +2 -0
  75. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +2 -0
  76. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  77. package/legacy/TabPanel/TabPanel.js +1 -1
  78. package/legacy/TimePicker/TimePicker.js +5 -0
  79. package/legacy/Timeline/Timeline.js +1 -1
  80. package/legacy/TimelineConnector/TimelineConnector.js +1 -1
  81. package/legacy/TimelineContent/TimelineContent.js +1 -1
  82. package/legacy/TimelineDot/TimelineDot.js +1 -1
  83. package/legacy/TimelineItem/TimelineItem.js +1 -1
  84. package/legacy/TimelineOppositeContent/TimelineOppositeContent.js +1 -1
  85. package/legacy/TimelineSeparator/TimelineSeparator.js +1 -1
  86. package/legacy/TreeItem/TreeItem.js +1 -1
  87. package/legacy/TreeView/TreeView.js +1 -1
  88. package/legacy/YearPicker/YearPicker.js +17 -1
  89. package/legacy/index.js +1 -1
  90. package/legacy/internal/pickers/PickersArrowSwitcher.js +1 -3
  91. package/legacy/internal/pickers/PickersPopper.js +29 -7
  92. package/legacy/internal/pickers/test-utils.js +3 -2
  93. package/legacy/internal/pickers/wrappers/DesktopWrapper.js +2 -0
  94. package/modern/CalendarPicker/CalendarPicker.js +12 -0
  95. package/modern/CalendarPicker/PickersCalendar.js +9 -3
  96. package/modern/CalendarPicker/PickersCalendarHeader.js +5 -4
  97. package/modern/CalendarPicker/PickersFadeTransitionGroup.js +2 -2
  98. package/modern/CalendarPickerSkeleton/CalendarPickerSkeleton.js +1 -1
  99. package/modern/DatePicker/DatePicker.js +7 -0
  100. package/modern/DateRangePicker/DateRangePicker.js +7 -0
  101. package/modern/DateRangePickerDay/DateRangePickerDay.js +1 -1
  102. package/modern/DateTimePicker/DateTimePicker.js +7 -0
  103. package/modern/DesktopDatePicker/DesktopDatePicker.js +10 -1
  104. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +7 -0
  105. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +7 -0
  106. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -0
  107. package/modern/LoadingButton/LoadingButton.js +37 -7
  108. package/modern/Masonry/Masonry.js +207 -57
  109. package/modern/MobileDatePicker/MobileDatePicker.js +2 -0
  110. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -0
  111. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  112. package/modern/MonthPicker/MonthPicker.js +20 -4
  113. package/modern/PickersDay/PickersDay.js +1 -1
  114. package/modern/StaticDatePicker/StaticDatePicker.js +2 -0
  115. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +2 -0
  116. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  117. package/modern/TabPanel/TabPanel.js +1 -1
  118. package/modern/TimePicker/TimePicker.js +5 -0
  119. package/modern/Timeline/Timeline.js +1 -1
  120. package/modern/TimelineConnector/TimelineConnector.js +1 -1
  121. package/modern/TimelineContent/TimelineContent.js +1 -1
  122. package/modern/TimelineDot/TimelineDot.js +1 -1
  123. package/modern/TimelineItem/TimelineItem.js +1 -1
  124. package/modern/TimelineOppositeContent/TimelineOppositeContent.js +1 -1
  125. package/modern/TimelineSeparator/TimelineSeparator.js +1 -1
  126. package/modern/TreeItem/TreeItem.js +1 -1
  127. package/modern/TreeView/TreeView.js +1 -1
  128. package/modern/YearPicker/YearPicker.js +17 -1
  129. package/modern/index.js +1 -1
  130. package/modern/internal/pickers/PickersArrowSwitcher.js +1 -3
  131. package/modern/internal/pickers/PickersPopper.js +31 -7
  132. package/modern/internal/pickers/test-utils.js +4 -2
  133. package/modern/internal/pickers/wrappers/DesktopWrapper.js +2 -0
  134. package/node/CalendarPicker/CalendarPicker.js +13 -1
  135. package/node/CalendarPicker/PickersCalendar.js +9 -3
  136. package/node/CalendarPicker/PickersCalendarHeader.js +5 -4
  137. package/node/CalendarPicker/PickersFadeTransitionGroup.js +2 -2
  138. package/node/CalendarPicker/PickersSlideTransition.js +1 -1
  139. package/node/CalendarPicker/index.js +4 -4
  140. package/node/CalendarPicker/useCalendarState.js +1 -1
  141. package/node/CalendarPickerSkeleton/CalendarPickerSkeleton.js +2 -2
  142. package/node/CalendarPickerSkeleton/index.js +4 -4
  143. package/node/ClockPicker/ClockPicker.js +1 -1
  144. package/node/ClockPicker/index.js +4 -4
  145. package/node/ClockPicker/shared.js +1 -1
  146. package/node/DatePicker/DatePicker.js +7 -0
  147. package/node/DatePicker/shared.js +1 -1
  148. package/node/DateRangePicker/DateRangePicker.js +7 -0
  149. package/node/DateRangePickerDay/DateRangePickerDay.js +2 -2
  150. package/node/DateTimePicker/DateTimePicker.js +7 -0
  151. package/node/DesktopDatePicker/DesktopDatePicker.js +10 -1
  152. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +7 -0
  153. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +7 -0
  154. package/node/DesktopTimePicker/DesktopTimePicker.js +5 -0
  155. package/node/LoadingButton/LoadingButton.js +37 -7
  156. package/node/LoadingButton/loadingButtonClasses.js +1 -1
  157. package/node/Masonry/Masonry.js +211 -61
  158. package/node/Masonry/masonryClasses.js +1 -1
  159. package/node/MobileDatePicker/MobileDatePicker.js +2 -0
  160. package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -0
  161. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  162. package/node/MonthPicker/MonthPicker.js +22 -5
  163. package/node/PickersDay/PickersDay.js +3 -2
  164. package/node/PickersDay/index.js +4 -4
  165. package/node/StaticDatePicker/StaticDatePicker.js +2 -0
  166. package/node/StaticDateRangePicker/StaticDateRangePicker.js +2 -0
  167. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  168. package/node/TabContext/TabContext.js +1 -1
  169. package/node/TabPanel/TabPanel.js +1 -1
  170. package/node/TabPanel/tabPanelClasses.js +1 -1
  171. package/node/TimePicker/TimePicker.js +5 -0
  172. package/node/TimePicker/TimePickerToolbar.js +2 -1
  173. package/node/Timeline/Timeline.js +1 -1
  174. package/node/Timeline/timelineClasses.js +1 -1
  175. package/node/TimelineConnector/TimelineConnector.js +1 -1
  176. package/node/TimelineConnector/timelineConnectorClasses.js +1 -1
  177. package/node/TimelineContent/TimelineContent.js +1 -1
  178. package/node/TimelineContent/timelineContentClasses.js +1 -1
  179. package/node/TimelineDot/TimelineDot.js +1 -1
  180. package/node/TimelineDot/timelineDotClasses.js +1 -1
  181. package/node/TimelineItem/TimelineItem.js +1 -1
  182. package/node/TimelineItem/timelineItemClasses.js +1 -1
  183. package/node/TimelineOppositeContent/TimelineOppositeContent.js +1 -1
  184. package/node/TimelineOppositeContent/timelineOppositeContentClasses.js +1 -1
  185. package/node/TimelineSeparator/TimelineSeparator.js +1 -1
  186. package/node/TimelineSeparator/timelineSeparatorClasses.js +1 -1
  187. package/node/TreeItem/TreeItem.js +1 -1
  188. package/node/TreeItem/index.js +4 -4
  189. package/node/TreeItem/treeItemClasses.js +1 -1
  190. package/node/TreeView/TreeView.js +1 -1
  191. package/node/TreeView/descendants.js +1 -1
  192. package/node/TreeView/treeViewClasses.js +1 -1
  193. package/node/YearPicker/PickersYear.js +2 -1
  194. package/node/YearPicker/YearPicker.js +17 -1
  195. package/node/YearPicker/yearPickerClasses.js +1 -1
  196. package/node/index.js +7 -7
  197. package/node/internal/pickers/PickersArrowSwitcher.js +1 -3
  198. package/node/internal/pickers/PickersPopper.js +31 -7
  199. package/node/internal/pickers/constants/dimensions.js +1 -1
  200. package/node/internal/pickers/date-utils.js +2 -1
  201. package/node/internal/pickers/hooks/date-helpers-hooks.js +1 -1
  202. package/node/internal/pickers/hooks/useIsLandscape.js +1 -1
  203. package/node/internal/pickers/hooks/useMaskedInput.js +1 -1
  204. package/node/internal/pickers/hooks/useOpenState.js +1 -1
  205. package/node/internal/pickers/hooks/useUtils.js +1 -1
  206. package/node/internal/pickers/hooks/useValidation.js +3 -3
  207. package/node/internal/pickers/test-utils.js +5 -3
  208. package/node/internal/pickers/text-field-helper.js +3 -2
  209. package/node/internal/pickers/time-utils.js +2 -1
  210. package/node/internal/pickers/utils.js +1 -1
  211. package/node/internal/pickers/wrappers/DesktopWrapper.js +2 -0
  212. package/node/internal/pickers/wrappers/WrapperVariantContext.js +1 -1
  213. package/node/useAutocomplete/index.js +4 -4
  214. package/package.json +8 -7
  215. package/Masonry/MasonryContext.js +0 -12
  216. package/MasonryItem/MasonryItem.d.ts +0 -49
  217. package/MasonryItem/MasonryItem.js +0 -196
  218. package/MasonryItem/index.d.ts +0 -5
  219. package/MasonryItem/index.js +0 -3
  220. package/MasonryItem/masonryItemClasses.d.ts +0 -8
  221. package/MasonryItem/masonryItemClasses.js +0 -6
  222. package/MasonryItem/package.json +0 -6
  223. package/legacy/Masonry/MasonryContext.js +0 -12
  224. package/legacy/MasonryItem/MasonryItem.js +0 -201
  225. package/legacy/MasonryItem/index.js +0 -3
  226. package/legacy/MasonryItem/masonryItemClasses.js +0 -6
  227. package/modern/Masonry/MasonryContext.js +0 -12
  228. package/modern/MasonryItem/MasonryItem.js +0 -196
  229. package/modern/MasonryItem/index.js +0 -3
  230. package/modern/MasonryItem/masonryItemClasses.js +0 -6
  231. package/node/Masonry/MasonryContext.js +0 -24
  232. package/node/MasonryItem/MasonryItem.js +0 -220
  233. package/node/MasonryItem/index.js +0 -42
  234. package/node/MasonryItem/masonryItemClasses.js +0 -17
@@ -5,38 +5,42 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.style = void 0;
8
+ exports.parseToNumber = exports.getStyle = exports.default = void 0;
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var React = _interopRequireWildcard(require("react"));
15
-
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _core = require("@mui/core");
17
15
 
18
- var _clsx = _interopRequireDefault(require("clsx"));
16
+ var _styles = require("@mui/material/styles");
19
17
 
20
18
  var _system = require("@mui/system");
21
19
 
22
20
  var _utils = require("@mui/utils");
23
21
 
24
- var _core = require("@mui/core");
22
+ var _clsx = _interopRequireDefault(require("clsx"));
25
23
 
26
- var _styles = require("@mui/material/styles");
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
25
 
28
- var _masonryClasses = require("./masonryClasses");
26
+ var React = _interopRequireWildcard(require("react"));
29
27
 
30
- var _MasonryContext = _interopRequireDefault(require("./MasonryContext"));
28
+ var _masonryClasses = require("./masonryClasses");
31
29
 
32
30
  var _jsxRuntime = require("react/jsx-runtime");
33
31
 
34
- const _excluded = ["children", "className", "component", "columns", "spacing"];
32
+ const _excluded = ["children", "className", "component", "columns", "spacing", "defaultColumns", "defaultHeight", "defaultSpacing"];
35
33
 
36
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
35
 
38
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
37
 
38
+ const parseToNumber = val => {
39
+ return Number(val.replace('px', ''));
40
+ };
41
+
42
+ exports.parseToNumber = parseToNumber;
43
+
40
44
  const useUtilityClasses = ownerState => {
41
45
  const {
42
46
  classes
@@ -47,116 +51,247 @@ const useUtilityClasses = ownerState => {
47
51
  return (0, _core.unstable_composeClasses)(slots, _masonryClasses.getMasonryUtilityClass, classes);
48
52
  };
49
53
 
50
- const style = ({
54
+ const getStyle = ({
51
55
  ownerState,
52
56
  theme
53
57
  }) => {
54
58
  let styles = {
55
- display: 'grid',
56
- gridAutoRows: 0,
57
- padding: 0,
58
- overflow: 'auto',
59
59
  width: '100%',
60
- rowGap: 2,
61
- boxSizing: 'border-box'
60
+ display: 'flex',
61
+ flexFlow: 'column wrap',
62
+ alignContent: 'space-between',
63
+ boxSizing: 'border-box',
64
+ '& > *': {
65
+ boxSizing: 'border-box'
66
+ }
62
67
  };
63
- const base = {};
64
- Object.keys(theme.breakpoints.values).forEach(breakpoint => {
65
- if (ownerState.spacing[breakpoint] != null) {
66
- base[breakpoint] = true;
68
+ const stylesSSR = {};
69
+
70
+ if (ownerState.isSSR) {
71
+ const orderStyleSSR = {};
72
+ const defaultSpacing = Number(theme.spacing(ownerState.defaultSpacing).replace('px', ''));
73
+
74
+ for (let i = 1; i <= ownerState.defaultColumns; i += 1) {
75
+ orderStyleSSR[`&:nth-of-type(${ownerState.defaultColumns}n+${i % ownerState.defaultColumns})`] = {
76
+ order: i
77
+ };
67
78
  }
68
- });
79
+
80
+ stylesSSR.height = ownerState.defaultHeight;
81
+ stylesSSR.margin = -(defaultSpacing / 2);
82
+ stylesSSR['& > *'] = (0, _extends2.default)({}, styles['& > *'], orderStyleSSR, {
83
+ margin: defaultSpacing / 2,
84
+ width: `calc(${(100 / ownerState.defaultColumns).toFixed(2)}% - ${defaultSpacing}px)`
85
+ });
86
+ return (0, _extends2.default)({}, styles, stylesSSR);
87
+ }
88
+
69
89
  const spacingValues = (0, _system.unstable_resolveBreakpointValues)({
70
90
  values: ownerState.spacing,
71
- base
91
+ breakpoints: theme.breakpoints.values
72
92
  });
73
93
  const transformer = (0, _system.createUnarySpacing)(theme);
74
94
 
75
95
  const spacingStyleFromPropValue = propValue => {
76
- return {
77
- columnGap: (0, _system.getValue)(transformer, propValue)
78
- };
96
+ const themeSpacingValue = Number(propValue);
97
+ const spacing = Number((0, _system.getValue)(transformer, themeSpacingValue).replace('px', ''));
98
+ return (0, _extends2.default)({
99
+ margin: -(spacing / 2),
100
+ '& > *': {
101
+ margin: spacing / 2
102
+ }
103
+ }, ownerState.maxColumnHeight && {
104
+ height: Math.ceil(ownerState.maxColumnHeight + spacing)
105
+ });
79
106
  };
80
107
 
81
- styles = (0, _extends2.default)({}, styles, (0, _system.handleBreakpoints)({
108
+ styles = (0, _utils.deepmerge)(styles, (0, _system.handleBreakpoints)({
82
109
  theme
83
110
  }, spacingValues, spacingStyleFromPropValue));
84
111
  const columnValues = (0, _system.unstable_resolveBreakpointValues)({
85
112
  values: ownerState.columns,
86
- base
113
+ breakpoints: theme.breakpoints.values
87
114
  });
88
115
 
89
116
  const columnStyleFromPropValue = propValue => {
117
+ const columnValue = Number(propValue);
118
+ const width = `${(100 / columnValue).toFixed(2)}%`;
119
+ const spacing = typeof spacingValues !== 'object' ? (0, _system.getValue)(transformer, Number(spacingValues)) : '0px';
90
120
  return {
91
- gridTemplateColumns: `repeat(${propValue}, 1fr)`
121
+ '& > *': {
122
+ width: `calc(${width} - ${spacing})`
123
+ }
92
124
  };
93
125
  };
94
126
 
95
127
  styles = (0, _utils.deepmerge)(styles, (0, _system.handleBreakpoints)({
96
128
  theme
97
- }, columnValues, columnStyleFromPropValue));
129
+ }, columnValues, columnStyleFromPropValue)); // configure width for responsive spacing values
130
+
131
+ if (typeof spacingValues === 'object') {
132
+ styles = (0, _utils.deepmerge)(styles, (0, _system.handleBreakpoints)({
133
+ theme
134
+ }, spacingValues, (propValue, breakpoint) => {
135
+ if (breakpoint) {
136
+ const themeSpacingValue = Number(propValue);
137
+ const lastBreakpoint = Object.keys(columnValues).pop();
138
+ const spacing = (0, _system.getValue)(transformer, themeSpacingValue);
139
+ const column = typeof columnValues === 'object' ? columnValues[breakpoint] || columnValues[lastBreakpoint] : columnValues;
140
+ const width = `${(100 / column).toFixed(2)}%`;
141
+ return {
142
+ '& > *': {
143
+ width: `calc(${width} - ${spacing})`
144
+ }
145
+ };
146
+ }
147
+
148
+ return null;
149
+ }));
150
+ }
151
+
98
152
  return styles;
99
153
  };
100
154
 
101
- exports.style = style;
155
+ exports.getStyle = getStyle;
102
156
  const MasonryRoot = (0, _styles.styled)('div', {
103
157
  name: 'MuiMasonry',
104
158
  slot: 'Root',
105
159
  overridesResolver: (props, styles) => {
106
160
  return [styles.root];
107
161
  }
108
- })(style);
162
+ })(getStyle);
109
163
  const Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
110
164
  const props = (0, _styles.useThemeProps)({
111
165
  props: inProps,
112
166
  name: 'MuiMasonry'
113
167
  });
114
- const masonryRef = React.useRef();
115
168
  const {
116
169
  children,
117
170
  className,
118
171
  component = 'div',
119
172
  columns = 4,
120
- spacing = 1
173
+ spacing = 1,
174
+ defaultColumns,
175
+ defaultHeight,
176
+ defaultSpacing
121
177
  } = props,
122
178
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
179
+ const masonryRef = React.useRef();
180
+ const [maxColumnHeight, setMaxColumnHeight] = React.useState();
181
+ const isSSR = !maxColumnHeight && defaultHeight && defaultColumns !== undefined && defaultSpacing !== undefined;
182
+ const [numberOfLineBreaks, setNumberOfLineBreaks] = React.useState(isSSR ? defaultColumns - 1 : 0);
123
183
  const ownerState = (0, _extends2.default)({}, props, {
124
184
  spacing,
125
- columns
185
+ columns,
186
+ maxColumnHeight,
187
+ defaultColumns,
188
+ defaultHeight,
189
+ defaultSpacing,
190
+ isSSR
126
191
  });
127
192
  const classes = useUtilityClasses(ownerState);
128
- const contextValue = React.useMemo(() => ({
129
- spacing
130
- }), [spacing]);
131
- let didWarn = false;
132
193
  React.useEffect(() => {
133
- // scroller always appears when masonry's height goes beyond 2,000px on Chrome
134
- const handleScroll = () => {
135
- if (masonryRef.current.clientHeight === 1998 && !didWarn) {
136
- console.warn(['MUI: The Masonry can have the maximum height of 2,000px on Chrome browser.', 'Items that go beyond this height fail to be rendered on Chrome browser.', 'You can find more in this open issue: https://github.com/mui-org/material-ui/issues/27934'].join('\n')); // eslint-disable-next-line react-hooks/exhaustive-deps
194
+ const handleResize = () => {
195
+ const parentWidth = masonryRef.current.clientWidth;
196
+ const childWidth = masonryRef.current.firstChild.clientWidth;
197
+ const firstChildComputedStyle = window.getComputedStyle(masonryRef.current.firstChild);
198
+ const firstChildMarginLeft = parseToNumber(firstChildComputedStyle.marginLeft);
199
+ const firstChildMarginRight = parseToNumber(firstChildComputedStyle.marginRight);
200
+
201
+ if (parentWidth === 0 || childWidth === 0) {
202
+ return;
203
+ }
137
204
 
138
- didWarn = true;
205
+ const currentNumberOfColumns = Math.round(parentWidth / (childWidth + firstChildMarginLeft + firstChildMarginRight));
206
+ const columnHeights = new Array(currentNumberOfColumns).fill(0);
207
+ let skip = false;
208
+ masonryRef.current.childNodes.forEach(child => {
209
+ if (child.nodeType !== Node.ELEMENT_NODE || child.dataset.class === 'line-break' || skip) {
210
+ return;
211
+ }
212
+
213
+ const childComputedStyle = window.getComputedStyle(child);
214
+ const childMarginTop = parseToNumber(childComputedStyle.marginTop);
215
+ const childMarginBottom = parseToNumber(childComputedStyle.marginBottom); // if any one of children isn't rendered yet, masonry's height shouldn't be computed yet
216
+
217
+ const childHeight = parseToNumber(childComputedStyle.height) ? Math.ceil(parseToNumber(childComputedStyle.height)) + childMarginTop + childMarginBottom : 0;
218
+
219
+ if (childHeight === 0) {
220
+ skip = true;
221
+ return;
222
+ } // if there is a nested image that isn't rendered yet, masonry's height shouldn't be computed yet
223
+
224
+
225
+ for (let i = 0; i < child.childNodes.length; i += 1) {
226
+ const nestedChild = child.childNodes[i];
227
+
228
+ if (nestedChild.tagName === 'IMG' && nestedChild.clientHeight === 0) {
229
+ skip = true;
230
+ break;
231
+ }
232
+ }
233
+
234
+ if (!skip) {
235
+ // find the current shortest column (where the current item will be placed)
236
+ const currentMinColumnIndex = columnHeights.indexOf(Math.min(...columnHeights));
237
+ columnHeights[currentMinColumnIndex] += childHeight;
238
+ const order = currentMinColumnIndex + 1;
239
+ child.style.order = order;
240
+ }
241
+ });
242
+
243
+ if (!skip) {
244
+ setMaxColumnHeight(Math.max(...columnHeights));
245
+ const numOfLineBreaks = currentNumberOfColumns > 0 ? currentNumberOfColumns - 1 : 0;
246
+ setNumberOfLineBreaks(numOfLineBreaks);
139
247
  }
140
- };
248
+ }; // IE and old browsers are not supported
141
249
 
250
+
251
+ if (typeof ResizeObserver === 'undefined') {
252
+ return undefined;
253
+ }
254
+
255
+ const resizeObserver = new ResizeObserver(handleResize);
142
256
  const container = masonryRef.current;
143
- container.addEventListener('scroll', handleScroll);
257
+
258
+ if (container) {
259
+ // only the masonry container and its first child are observed for resizing;
260
+ // this might cause unforeseen problems in some use cases;
261
+ resizeObserver.observe(container);
262
+
263
+ if (container.firstChild) {
264
+ resizeObserver.observe(container.firstChild);
265
+ }
266
+ }
267
+
144
268
  return () => {
145
- container.removeEventListener('scroll', handleScroll);
269
+ resizeObserver.disconnect();
146
270
  };
147
- }, []);
271
+ }, [columns, spacing, children]);
148
272
  const handleRef = (0, _utils.unstable_useForkRef)(ref, masonryRef);
149
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MasonryContext.default.Provider, {
150
- value: contextValue,
151
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(MasonryRoot, (0, _extends2.default)({
152
- as: component,
153
- className: (0, _clsx.default)(classes.root, className),
154
- ref: handleRef,
155
- ownerState: ownerState
156
- }, other, {
157
- children: children
158
- }))
159
- });
273
+ const lineBreakStyle = {
274
+ flexBasis: '100%',
275
+ width: 0,
276
+ margin: 0,
277
+ padding: 0
278
+ }; // columns are likely to have different heights and hence can start to merge;
279
+ // a line break at the end of each column prevents columns from merging
280
+
281
+ const lineBreaks = new Array(numberOfLineBreaks).fill('').map((_, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
282
+ "data-class": "line-break",
283
+ style: (0, _extends2.default)({}, lineBreakStyle, {
284
+ order: index + 1
285
+ })
286
+ }, index));
287
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(MasonryRoot, (0, _extends2.default)({
288
+ as: component,
289
+ className: (0, _clsx.default)(classes.root, className),
290
+ ref: handleRef,
291
+ ownerState: ownerState
292
+ }, other, {
293
+ children: [children, lineBreaks]
294
+ }));
160
295
  });
161
296
  process.env.NODE_ENV !== "production" ? Masonry.propTypes
162
297
  /* remove-proptypes */
@@ -167,7 +302,7 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
167
302
  // ----------------------------------------------------------------------
168
303
 
169
304
  /**
170
- * The content of the component. It's recommended to be `<MasonryItem />`s.
305
+ * The content of the component.
171
306
  */
172
307
  children: _propTypes.default
173
308
  /* @typescript-to-proptypes-ignore */
@@ -195,6 +330,21 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
195
330
  */
196
331
  component: _propTypes.default.elementType,
197
332
 
333
+ /**
334
+ * The default number of columns of the component. This is provided for server-side rendering.
335
+ */
336
+ defaultColumns: _propTypes.default.number,
337
+
338
+ /**
339
+ * The default height of the component in px. This is provided for server-side rendering.
340
+ */
341
+ defaultHeight: _propTypes.default.number,
342
+
343
+ /**
344
+ * The default spacing of the component. Like `spacing`, it is a factor of the theme's spacing. This is provided for server-side rendering.
345
+ */
346
+ defaultSpacing: _propTypes.default.number,
347
+
198
348
  /**
199
349
  * Defines the space between children. It is a factor of the theme's spacing.
200
350
  * @default 1
@@ -204,7 +354,7 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
204
354
  /**
205
355
  * Allows defining system overrides as well as additional CSS styles.
206
356
  */
207
- sx: _propTypes.default.object
357
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])), _propTypes.default.func, _propTypes.default.object])
208
358
  } : void 0;
209
359
  var _default = Masonry;
210
360
  exports.default = _default;
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getMasonryUtilityClass = getMasonryUtilityClass;
7
6
  exports.default = void 0;
7
+ exports.getMasonryUtilityClass = getMasonryUtilityClass;
8
8
 
9
9
  var _core = require("@mui/core");
10
10
 
@@ -177,6 +177,7 @@ process.env.NODE_ENV !== "production" ? MobileDatePicker.propTypes
177
177
 
178
178
  /**
179
179
  * If `true`, the picker and text field are disabled.
180
+ * @default false
180
181
  */
181
182
  disabled: _propTypes.default.bool,
182
183
 
@@ -358,6 +359,7 @@ process.env.NODE_ENV !== "production" ? MobileDatePicker.propTypes
358
359
 
359
360
  /**
360
361
  * Make picker read only.
362
+ * @default false
361
363
  */
362
364
  readOnly: _propTypes.default.bool,
363
365
 
@@ -220,6 +220,7 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes
220
220
 
221
221
  /**
222
222
  * If `true`, the picker and text field are disabled.
223
+ * @default false
223
224
  */
224
225
  disabled: _propTypes.default.bool,
225
226
 
@@ -400,6 +401,7 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes
400
401
 
401
402
  /**
402
403
  * Make picker read only.
404
+ * @default false
403
405
  */
404
406
  readOnly: _propTypes.default.bool,
405
407
 
@@ -194,6 +194,7 @@ process.env.NODE_ENV !== "production" ? MobileDateTimePicker.propTypes
194
194
 
195
195
  /**
196
196
  * If `true`, the picker and text field are disabled.
197
+ * @default false
197
198
  */
198
199
  disabled: _propTypes.default.bool,
199
200
 
@@ -427,6 +428,7 @@ process.env.NODE_ENV !== "production" ? MobileDateTimePicker.propTypes
427
428
 
428
429
  /**
429
430
  * Make picker read only.
431
+ * @default false
430
432
  */
431
433
  readOnly: _propTypes.default.bool,
432
434
 
@@ -5,8 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.default = void 0;
8
9
  exports.getMonthPickerUtilityClass = getMonthPickerUtilityClass;
9
- exports.default = exports.monthPickerClasses = void 0;
10
+ exports.monthPickerClasses = void 0;
10
11
 
11
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
13
 
@@ -28,7 +29,7 @@ var _useUtils = require("../internal/pickers/hooks/useUtils");
28
29
 
29
30
  var _jsxRuntime = require("react/jsx-runtime");
30
31
 
31
- const _excluded = ["className", "date", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "onMonthChange"];
32
+ const _excluded = ["className", "date", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "onMonthChange", "readOnly"];
32
33
 
33
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
34
35
 
@@ -69,12 +70,14 @@ const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps,
69
70
  const {
70
71
  className,
71
72
  date,
73
+ disabled,
72
74
  disableFuture,
73
75
  disablePast,
74
76
  maxDate,
75
77
  minDate,
76
78
  onChange,
77
- onMonthChange
79
+ onMonthChange,
80
+ readOnly
78
81
  } = props,
79
82
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
80
83
  const ownerState = props;
@@ -92,6 +95,10 @@ const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps,
92
95
  };
93
96
 
94
97
  const onMonthSelect = month => {
98
+ if (readOnly) {
99
+ return;
100
+ }
101
+
95
102
  const newDate = utils.setMonth(date || now, month);
96
103
  onChange(newDate, 'finish');
97
104
 
@@ -112,7 +119,7 @@ const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps,
112
119
  value: monthNumber,
113
120
  selected: monthNumber === currentMonth,
114
121
  onSelect: onMonthSelect,
115
- disabled: shouldDisableMonth(month),
122
+ disabled: disabled || shouldDisableMonth(month),
116
123
  children: monthText
117
124
  }, monthText);
118
125
  })
@@ -141,6 +148,11 @@ process.env.NODE_ENV !== "production" ? MonthPicker.propTypes
141
148
  */
142
149
  date: _propTypes.default.any,
143
150
 
151
+ /**
152
+ * If `true` picker is disabled
153
+ */
154
+ disabled: _propTypes.default.bool,
155
+
144
156
  /**
145
157
  * If `true` future days are disabled.
146
158
  */
@@ -171,10 +183,15 @@ process.env.NODE_ENV !== "production" ? MonthPicker.propTypes
171
183
  */
172
184
  onMonthChange: _propTypes.default.func,
173
185
 
186
+ /**
187
+ * If `true` picker is readonly
188
+ */
189
+ readOnly: _propTypes.default.bool,
190
+
174
191
  /**
175
192
  * The system prop that allows defining system overrides as well as additional CSS styles.
176
193
  */
177
- sx: _propTypes.default.object
194
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])), _propTypes.default.func, _propTypes.default.object])
178
195
  } : void 0;
179
196
  /**
180
197
  *
@@ -5,8 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.default = exports.areDayPropsEqual = void 0;
8
9
  exports.getPickersDayUtilityClass = getPickersDayUtilityClass;
9
- exports.default = exports.areDayPropsEqual = exports.pickersDayClasses = void 0;
10
+ exports.pickersDayClasses = void 0;
10
11
 
11
12
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
13
 
@@ -404,7 +405,7 @@ process.env.NODE_ENV !== "production" ? PickersDay.propTypes
404
405
  /**
405
406
  * The system prop that allows defining system overrides as well as additional CSS styles.
406
407
  */
407
- sx: _propTypes.default.object,
408
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])), _propTypes.default.func, _propTypes.default.object]),
408
409
 
409
410
  /**
410
411
  * If `true`, renders as today date.
@@ -9,16 +9,16 @@ Object.defineProperty(exports, "default", {
9
9
  return _PickersDay.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "pickersDayClasses", {
12
+ Object.defineProperty(exports, "getPickersDayUtilityClass", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _PickersDay.pickersDayClasses;
15
+ return _PickersDay.getPickersDayUtilityClass;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "getPickersDayUtilityClass", {
18
+ Object.defineProperty(exports, "pickersDayClasses", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _PickersDay.getPickersDayUtilityClass;
21
+ return _PickersDay.pickersDayClasses;
22
22
  }
23
23
  });
24
24
 
@@ -145,6 +145,7 @@ process.env.NODE_ENV !== "production" ? StaticDatePicker.propTypes
145
145
 
146
146
  /**
147
147
  * If `true`, the picker and text field are disabled.
148
+ * @default false
148
149
  */
149
150
  disabled: _propTypes.default.bool,
150
151
 
@@ -326,6 +327,7 @@ process.env.NODE_ENV !== "production" ? StaticDatePicker.propTypes
326
327
 
327
328
  /**
328
329
  * Make picker read only.
330
+ * @default false
329
331
  */
330
332
  readOnly: _propTypes.default.bool,
331
333
 
@@ -189,6 +189,7 @@ process.env.NODE_ENV !== "production" ? StaticDateRangePicker.propTypes
189
189
 
190
190
  /**
191
191
  * If `true`, the picker and text field are disabled.
192
+ * @default false
192
193
  */
193
194
  disabled: _propTypes.default.bool,
194
195
 
@@ -367,6 +368,7 @@ process.env.NODE_ENV !== "production" ? StaticDateRangePicker.propTypes
367
368
 
368
369
  /**
369
370
  * Make picker read only.
371
+ * @default false
370
372
  */
371
373
  readOnly: _propTypes.default.bool,
372
374
 
@@ -162,6 +162,7 @@ process.env.NODE_ENV !== "production" ? StaticDateTimePicker.propTypes
162
162
 
163
163
  /**
164
164
  * If `true`, the picker and text field are disabled.
165
+ * @default false
165
166
  */
166
167
  disabled: _propTypes.default.bool,
167
168
 
@@ -395,6 +396,7 @@ process.env.NODE_ENV !== "production" ? StaticDateTimePicker.propTypes
395
396
 
396
397
  /**
397
398
  * Make picker read only.
399
+ * @default false
398
400
  */
399
401
  readOnly: _propTypes.default.bool,
400
402
 
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = TabContext;
9
- exports.useTabContext = useTabContext;
10
9
  exports.getPanelId = getPanelId;
11
10
  exports.getTabId = getTabId;
11
+ exports.useTabContext = useTabContext;
12
12
 
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
 
@@ -111,7 +111,7 @@ process.env.NODE_ENV !== "production" ? TabPanel.propTypes
111
111
  /**
112
112
  * The system prop that allows defining system overrides as well as additional CSS styles.
113
113
  */
114
- sx: _propTypes.default.object,
114
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])), _propTypes.default.func, _propTypes.default.object]),
115
115
 
116
116
  /**
117
117
  * The `value` of the corresponding `Tab`. Must use the index of the `Tab` when
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getTabPanelUtilityClass = getTabPanelUtilityClass;
7
6
  exports.default = void 0;
7
+ exports.getTabPanelUtilityClass = getTabPanelUtilityClass;
8
8
 
9
9
  var _core = require("@mui/core");
10
10
 
@@ -321,6 +321,11 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes
321
321
  */
322
322
  orientation: _propTypes.default.oneOf(['landscape', 'portrait']),
323
323
 
324
+ /**
325
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
326
+ */
327
+ PaperProps: _propTypes.default.object,
328
+
324
329
  /**
325
330
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
326
331
  */