@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
@@ -170,6 +170,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes
170
170
 
171
171
  /**
172
172
  * If `true`, the picker and text field are disabled.
173
+ * @default false
173
174
  */
174
175
  disabled: PropTypes.bool,
175
176
 
@@ -401,6 +402,11 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes
401
402
  */
402
403
  orientation: PropTypes.oneOf(['landscape', 'portrait']),
403
404
 
405
+ /**
406
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
407
+ */
408
+ PaperProps: PropTypes.object,
409
+
404
410
  /**
405
411
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
406
412
  */
@@ -408,6 +414,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes
408
414
 
409
415
  /**
410
416
  * Make picker read only.
417
+ * @default false
411
418
  */
412
419
  readOnly: PropTypes.bool,
413
420
 
@@ -41,11 +41,12 @@ var DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker
41
41
 
42
42
  var onChange = props.onChange,
43
43
  PopperProps = props.PopperProps,
44
+ PaperProps = props.PaperProps,
44
45
  _props$ToolbarCompone = props.ToolbarComponent,
45
46
  ToolbarComponent = _props$ToolbarCompone === void 0 ? DatePickerToolbar : _props$ToolbarCompone,
46
47
  TransitionComponent = props.TransitionComponent,
47
48
  value = props.value,
48
- other = _objectWithoutProperties(props, ["onChange", "PopperProps", "ToolbarComponent", "TransitionComponent", "value"]);
49
+ other = _objectWithoutProperties(props, ["onChange", "PopperProps", "PaperProps", "ToolbarComponent", "TransitionComponent", "value"]);
49
50
 
50
51
  var AllDateInputProps = _extends({}, inputProps, other, {
51
52
  ref: ref,
@@ -56,6 +57,7 @@ var DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker
56
57
  DateInputProps: AllDateInputProps,
57
58
  KeyboardDateInputComponent: KeyboardDateInput,
58
59
  PopperProps: PopperProps,
60
+ PaperProps: PaperProps,
59
61
  TransitionComponent: TransitionComponent,
60
62
  children: /*#__PURE__*/_jsx(Picker, _extends({}, pickerProps, {
61
63
  autoFocus: true,
@@ -134,6 +136,7 @@ process.env.NODE_ENV !== "production" ? DesktopDatePicker.propTypes
134
136
 
135
137
  /**
136
138
  * If `true`, the picker and text field are disabled.
139
+ * @default false
137
140
  */
138
141
  disabled: PropTypes.bool,
139
142
 
@@ -307,6 +310,11 @@ process.env.NODE_ENV !== "production" ? DesktopDatePicker.propTypes
307
310
  */
308
311
  orientation: PropTypes.oneOf(['landscape', 'portrait']),
309
312
 
313
+ /**
314
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
315
+ */
316
+ PaperProps: PropTypes.object,
317
+
310
318
  /**
311
319
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
312
320
  */
@@ -314,6 +322,7 @@ process.env.NODE_ENV !== "production" ? DesktopDatePicker.propTypes
314
322
 
315
323
  /**
316
324
  * Make picker read only.
325
+ * @default false
317
326
  */
318
327
  readOnly: PropTypes.bool,
319
328
 
@@ -187,6 +187,7 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes
187
187
 
188
188
  /**
189
189
  * If `true`, the picker and text field are disabled.
190
+ * @default false
190
191
  */
191
192
  disabled: PropTypes.bool,
192
193
 
@@ -359,6 +360,11 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes
359
360
  */
360
361
  orientation: PropTypes.oneOf(['landscape', 'portrait']),
361
362
 
363
+ /**
364
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
365
+ */
366
+ PaperProps: PropTypes.object,
367
+
362
368
  /**
363
369
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
364
370
  */
@@ -366,6 +372,7 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes
366
372
 
367
373
  /**
368
374
  * Make picker read only.
375
+ * @default false
369
376
  */
370
377
  readOnly: PropTypes.bool,
371
378
 
@@ -151,6 +151,7 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePicker.propTypes
151
151
 
152
152
  /**
153
153
  * If `true`, the picker and text field are disabled.
154
+ * @default false
154
155
  */
155
156
  disabled: PropTypes.bool,
156
157
 
@@ -376,6 +377,11 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePicker.propTypes
376
377
  */
377
378
  orientation: PropTypes.oneOf(['landscape', 'portrait']),
378
379
 
380
+ /**
381
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
382
+ */
383
+ PaperProps: PropTypes.object,
384
+
379
385
  /**
380
386
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
381
387
  */
@@ -383,6 +389,7 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePicker.propTypes
383
389
 
384
390
  /**
385
391
  * Make picker read only.
392
+ * @default false
386
393
  */
387
394
  readOnly: PropTypes.bool,
388
395
 
@@ -274,6 +274,11 @@ process.env.NODE_ENV !== "production" ? DesktopTimePicker.propTypes
274
274
  */
275
275
  orientation: PropTypes.oneOf(['landscape', 'portrait']),
276
276
 
277
+ /**
278
+ * Paper props passed down to [Paper](https://mui.com/api/paper/) component.
279
+ */
280
+ PaperProps: PropTypes.object,
281
+
277
282
  /**
278
283
  * Popper props passed down to [Popper](https://mui.com/api/popper/) component.
279
284
  */
@@ -55,6 +55,18 @@ var LoadingButtonRoot = styled(Button, {
55
55
  })
56
56
  }, "&.".concat(loadingButtonClasses.loading), {
57
57
  color: 'transparent'
58
+ }), ownerState.loadingPosition === 'start' && ownerState.fullWidth && _defineProperty({}, "& .".concat(loadingButtonClasses.startIconLoadingStart, ", & .").concat(loadingButtonClasses.endIconLoadingEnd), {
59
+ transition: theme.transitions.create(['opacity'], {
60
+ duration: theme.transitions.duration.short
61
+ }),
62
+ opacity: 0,
63
+ marginRight: -8
64
+ }), ownerState.loadingPosition === 'end' && ownerState.fullWidth && _defineProperty({}, "& .".concat(loadingButtonClasses.startIconLoadingStart, ", & .").concat(loadingButtonClasses.endIconLoadingEnd), {
65
+ transition: theme.transitions.create(['opacity'], {
66
+ duration: theme.transitions.duration.short
67
+ }),
68
+ opacity: 0,
69
+ marginLeft: -8
58
70
  }));
59
71
  });
60
72
  var LoadingButtonLoadingIndicator = styled('div', {
@@ -64,9 +76,9 @@ var LoadingButtonLoadingIndicator = styled('div', {
64
76
  var ownerState = props.ownerState;
65
77
  return [styles.loadingIndicator, styles["loadingIndicator".concat(capitalize(ownerState.loadingPosition))]];
66
78
  }
67
- })(function (_ref5) {
68
- var theme = _ref5.theme,
69
- ownerState = _ref5.ownerState;
79
+ })(function (_ref7) {
80
+ var theme = _ref7.theme,
81
+ ownerState = _ref7.ownerState;
70
82
  return _extends({
71
83
  position: 'absolute',
72
84
  visibility: 'visible',
@@ -79,6 +91,12 @@ var LoadingButtonLoadingIndicator = styled('div', {
79
91
  color: theme.palette.action.disabled
80
92
  }, ownerState.loadingPosition === 'end' && {
81
93
  right: 14
94
+ }, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {
95
+ position: 'relative',
96
+ left: -10
97
+ }, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {
98
+ position: 'relative',
99
+ right: -10
82
100
  });
83
101
  });
84
102
 
@@ -112,17 +130,25 @@ var LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps
112
130
  });
113
131
 
114
132
  var classes = useUtilityClasses(ownerState);
115
- return /*#__PURE__*/_jsxs(LoadingButtonRoot, _extends({
133
+ return /*#__PURE__*/_jsx(LoadingButtonRoot, _extends({
116
134
  disabled: disabled || loading,
117
135
  ref: ref
118
136
  }, other, {
119
137
  classes: classes,
120
138
  ownerState: ownerState,
121
- children: [loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {
122
- className: classes.loadingIndicator,
123
- ownerState: ownerState,
124
- children: loadingIndicator
125
- }), children]
139
+ children: ownerState.loadingPosition === 'end' ? /*#__PURE__*/_jsxs(React.Fragment, {
140
+ children: [children, loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {
141
+ className: classes.loadingIndicator,
142
+ ownerState: ownerState,
143
+ children: loadingIndicator
144
+ })]
145
+ }) : /*#__PURE__*/_jsxs(React.Fragment, {
146
+ children: [loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {
147
+ className: classes.loadingIndicator,
148
+ ownerState: ownerState,
149
+ children: loadingIndicator
150
+ }), children]
151
+ })
126
152
  }));
127
153
  });
128
154
  process.env.NODE_ENV !== "production" ? LoadingButton.propTypes
@@ -180,6 +206,6 @@ process.env.NODE_ENV !== "production" ? LoadingButton.propTypes
180
206
  /**
181
207
  * The system prop that allows defining system overrides as well as additional CSS styles.
182
208
  */
183
- sx: PropTypes.object
209
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object])), PropTypes.func, PropTypes.object])
184
210
  } : void 0;
185
211
  export default LoadingButton;
@@ -1,15 +1,20 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- import * as React from 'react';
4
- import PropTypes from 'prop-types';
5
- import clsx from 'clsx';
6
- import { createUnarySpacing, getValue, handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';
7
- import { deepmerge, unstable_useForkRef as useForkRef } from '@mui/utils';
8
5
  import { unstable_composeClasses as composeClasses } from '@mui/core';
9
6
  import { styled, useThemeProps } from '@mui/material/styles';
7
+ import { createUnarySpacing, getValue, handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';
8
+ import { deepmerge, unstable_useForkRef as useForkRef } from '@mui/utils';
9
+ import clsx from 'clsx';
10
+ import PropTypes from 'prop-types';
11
+ import * as React from 'react';
10
12
  import { getMasonryUtilityClass } from './masonryClasses';
11
- import MasonryContext from './MasonryContext';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { jsxs as _jsxs } from "react/jsx-runtime";
15
+ export var parseToNumber = function parseToNumber(val) {
16
+ return Number(val.replace('px', ''));
17
+ };
13
18
 
14
19
  var useUtilityClasses = function useUtilityClasses(ownerState) {
15
20
  var classes = ownerState.classes;
@@ -19,53 +24,103 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
19
24
  return composeClasses(slots, getMasonryUtilityClass, classes);
20
25
  };
21
26
 
22
- export var style = function style(_ref) {
27
+ export var getStyle = function getStyle(_ref) {
23
28
  var ownerState = _ref.ownerState,
24
29
  theme = _ref.theme;
25
30
  var styles = {
26
- display: 'grid',
27
- gridAutoRows: 0,
28
- padding: 0,
29
- overflow: 'auto',
30
31
  width: '100%',
31
- rowGap: 2,
32
- boxSizing: 'border-box'
32
+ display: 'flex',
33
+ flexFlow: 'column wrap',
34
+ alignContent: 'space-between',
35
+ boxSizing: 'border-box',
36
+ '& > *': {
37
+ boxSizing: 'border-box'
38
+ }
33
39
  };
34
- var base = {};
35
- Object.keys(theme.breakpoints.values).forEach(function (breakpoint) {
36
- if (ownerState.spacing[breakpoint] != null) {
37
- base[breakpoint] = true;
40
+ var stylesSSR = {};
41
+
42
+ if (ownerState.isSSR) {
43
+ var orderStyleSSR = {};
44
+ var defaultSpacing = Number(theme.spacing(ownerState.defaultSpacing).replace('px', ''));
45
+
46
+ for (var i = 1; i <= ownerState.defaultColumns; i += 1) {
47
+ orderStyleSSR["&:nth-of-type(".concat(ownerState.defaultColumns, "n+").concat(i % ownerState.defaultColumns, ")")] = {
48
+ order: i
49
+ };
38
50
  }
39
- });
51
+
52
+ stylesSSR.height = ownerState.defaultHeight;
53
+ stylesSSR.margin = -(defaultSpacing / 2);
54
+ stylesSSR['& > *'] = _extends({}, styles['& > *'], orderStyleSSR, {
55
+ margin: defaultSpacing / 2,
56
+ width: "calc(".concat((100 / ownerState.defaultColumns).toFixed(2), "% - ").concat(defaultSpacing, "px)")
57
+ });
58
+ return _extends({}, styles, stylesSSR);
59
+ }
60
+
40
61
  var spacingValues = resolveBreakpointValues({
41
62
  values: ownerState.spacing,
42
- base: base
63
+ breakpoints: theme.breakpoints.values
43
64
  });
44
65
  var transformer = createUnarySpacing(theme);
45
66
 
46
67
  var spacingStyleFromPropValue = function spacingStyleFromPropValue(propValue) {
47
- return {
48
- columnGap: getValue(transformer, propValue)
49
- };
68
+ var themeSpacingValue = Number(propValue);
69
+ var spacing = Number(getValue(transformer, themeSpacingValue).replace('px', ''));
70
+ return _extends({
71
+ margin: -(spacing / 2),
72
+ '& > *': {
73
+ margin: spacing / 2
74
+ }
75
+ }, ownerState.maxColumnHeight && {
76
+ height: Math.ceil(ownerState.maxColumnHeight + spacing)
77
+ });
50
78
  };
51
79
 
52
- styles = _extends({}, styles, handleBreakpoints({
80
+ styles = deepmerge(styles, handleBreakpoints({
53
81
  theme: theme
54
82
  }, spacingValues, spacingStyleFromPropValue));
55
83
  var columnValues = resolveBreakpointValues({
56
84
  values: ownerState.columns,
57
- base: base
85
+ breakpoints: theme.breakpoints.values
58
86
  });
59
87
 
60
88
  var columnStyleFromPropValue = function columnStyleFromPropValue(propValue) {
89
+ var columnValue = Number(propValue);
90
+ var width = "".concat((100 / columnValue).toFixed(2), "%");
91
+ var spacing = _typeof(spacingValues) !== 'object' ? getValue(transformer, Number(spacingValues)) : '0px';
61
92
  return {
62
- gridTemplateColumns: "repeat(".concat(propValue, ", 1fr)")
93
+ '& > *': {
94
+ width: "calc(".concat(width, " - ").concat(spacing, ")")
95
+ }
63
96
  };
64
97
  };
65
98
 
66
99
  styles = deepmerge(styles, handleBreakpoints({
67
100
  theme: theme
68
- }, columnValues, columnStyleFromPropValue));
101
+ }, columnValues, columnStyleFromPropValue)); // configure width for responsive spacing values
102
+
103
+ if (_typeof(spacingValues) === 'object') {
104
+ styles = deepmerge(styles, handleBreakpoints({
105
+ theme: theme
106
+ }, spacingValues, function (propValue, breakpoint) {
107
+ if (breakpoint) {
108
+ var themeSpacingValue = Number(propValue);
109
+ var lastBreakpoint = Object.keys(columnValues).pop();
110
+ var spacing = getValue(transformer, themeSpacingValue);
111
+ var column = _typeof(columnValues) === 'object' ? columnValues[breakpoint] || columnValues[lastBreakpoint] : columnValues;
112
+ var width = "".concat((100 / column).toFixed(2), "%");
113
+ return {
114
+ '& > *': {
115
+ width: "calc(".concat(width, " - ").concat(spacing, ")")
116
+ }
117
+ };
118
+ }
119
+
120
+ return null;
121
+ }));
122
+ }
123
+
69
124
  return styles;
70
125
  };
71
126
  var MasonryRoot = styled('div', {
@@ -74,13 +129,12 @@ var MasonryRoot = styled('div', {
74
129
  overridesResolver: function overridesResolver(props, styles) {
75
130
  return [styles.root];
76
131
  }
77
- })(style);
132
+ })(getStyle);
78
133
  var Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
79
134
  var props = useThemeProps({
80
135
  props: inProps,
81
136
  name: 'MuiMasonry'
82
137
  });
83
- var masonryRef = React.useRef();
84
138
 
85
139
  var children = props.children,
86
140
  className = props.className,
@@ -90,48 +144,138 @@ var Masonry = /*#__PURE__*/React.forwardRef(function Masonry(inProps, ref) {
90
144
  columns = _props$columns === void 0 ? 4 : _props$columns,
91
145
  _props$spacing = props.spacing,
92
146
  spacing = _props$spacing === void 0 ? 1 : _props$spacing,
93
- other = _objectWithoutProperties(props, ["children", "className", "component", "columns", "spacing"]);
147
+ defaultColumns = props.defaultColumns,
148
+ defaultHeight = props.defaultHeight,
149
+ defaultSpacing = props.defaultSpacing,
150
+ other = _objectWithoutProperties(props, ["children", "className", "component", "columns", "spacing", "defaultColumns", "defaultHeight", "defaultSpacing"]);
151
+
152
+ var masonryRef = React.useRef();
153
+
154
+ var _React$useState = React.useState(),
155
+ maxColumnHeight = _React$useState[0],
156
+ setMaxColumnHeight = _React$useState[1];
157
+
158
+ var isSSR = !maxColumnHeight && defaultHeight && defaultColumns !== undefined && defaultSpacing !== undefined;
159
+
160
+ var _React$useState2 = React.useState(isSSR ? defaultColumns - 1 : 0),
161
+ numberOfLineBreaks = _React$useState2[0],
162
+ setNumberOfLineBreaks = _React$useState2[1];
94
163
 
95
164
  var ownerState = _extends({}, props, {
96
165
  spacing: spacing,
97
- columns: columns
166
+ columns: columns,
167
+ maxColumnHeight: maxColumnHeight,
168
+ defaultColumns: defaultColumns,
169
+ defaultHeight: defaultHeight,
170
+ defaultSpacing: defaultSpacing,
171
+ isSSR: isSSR
98
172
  });
99
173
 
100
174
  var classes = useUtilityClasses(ownerState);
101
- var contextValue = React.useMemo(function () {
102
- return {
103
- spacing: spacing
104
- };
105
- }, [spacing]);
106
- var didWarn = false;
107
175
  React.useEffect(function () {
108
- // scroller always appears when masonry's height goes beyond 2,000px on Chrome
109
- var handleScroll = function handleScroll() {
110
- if (masonryRef.current.clientHeight === 1998 && !didWarn) {
111
- 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
176
+ var handleResize = function handleResize() {
177
+ var parentWidth = masonryRef.current.clientWidth;
178
+ var childWidth = masonryRef.current.firstChild.clientWidth;
179
+ var firstChildComputedStyle = window.getComputedStyle(masonryRef.current.firstChild);
180
+ var firstChildMarginLeft = parseToNumber(firstChildComputedStyle.marginLeft);
181
+ var firstChildMarginRight = parseToNumber(firstChildComputedStyle.marginRight);
112
182
 
113
- didWarn = true;
183
+ if (parentWidth === 0 || childWidth === 0) {
184
+ return;
114
185
  }
115
- };
116
186
 
187
+ var currentNumberOfColumns = Math.round(parentWidth / (childWidth + firstChildMarginLeft + firstChildMarginRight));
188
+ var columnHeights = new Array(currentNumberOfColumns).fill(0);
189
+ var skip = false;
190
+ masonryRef.current.childNodes.forEach(function (child) {
191
+ if (child.nodeType !== Node.ELEMENT_NODE || child.dataset.class === 'line-break' || skip) {
192
+ return;
193
+ }
194
+
195
+ var childComputedStyle = window.getComputedStyle(child);
196
+ var childMarginTop = parseToNumber(childComputedStyle.marginTop);
197
+ var childMarginBottom = parseToNumber(childComputedStyle.marginBottom); // if any one of children isn't rendered yet, masonry's height shouldn't be computed yet
198
+
199
+ var childHeight = parseToNumber(childComputedStyle.height) ? Math.ceil(parseToNumber(childComputedStyle.height)) + childMarginTop + childMarginBottom : 0;
200
+
201
+ if (childHeight === 0) {
202
+ skip = true;
203
+ return;
204
+ } // if there is a nested image that isn't rendered yet, masonry's height shouldn't be computed yet
205
+
206
+
207
+ for (var i = 0; i < child.childNodes.length; i += 1) {
208
+ var nestedChild = child.childNodes[i];
209
+
210
+ if (nestedChild.tagName === 'IMG' && nestedChild.clientHeight === 0) {
211
+ skip = true;
212
+ break;
213
+ }
214
+ }
215
+
216
+ if (!skip) {
217
+ // find the current shortest column (where the current item will be placed)
218
+ var currentMinColumnIndex = columnHeights.indexOf(Math.min.apply(Math, _toConsumableArray(columnHeights)));
219
+ columnHeights[currentMinColumnIndex] += childHeight;
220
+ var order = currentMinColumnIndex + 1;
221
+ child.style.order = order;
222
+ }
223
+ });
224
+
225
+ if (!skip) {
226
+ setMaxColumnHeight(Math.max.apply(Math, _toConsumableArray(columnHeights)));
227
+ var numOfLineBreaks = currentNumberOfColumns > 0 ? currentNumberOfColumns - 1 : 0;
228
+ setNumberOfLineBreaks(numOfLineBreaks);
229
+ }
230
+ }; // IE and old browsers are not supported
231
+
232
+
233
+ if (typeof ResizeObserver === 'undefined') {
234
+ return undefined;
235
+ }
236
+
237
+ var resizeObserver = new ResizeObserver(handleResize);
117
238
  var container = masonryRef.current;
118
- container.addEventListener('scroll', handleScroll);
239
+
240
+ if (container) {
241
+ // only the masonry container and its first child are observed for resizing;
242
+ // this might cause unforeseen problems in some use cases;
243
+ resizeObserver.observe(container);
244
+
245
+ if (container.firstChild) {
246
+ resizeObserver.observe(container.firstChild);
247
+ }
248
+ }
249
+
119
250
  return function () {
120
- container.removeEventListener('scroll', handleScroll);
251
+ resizeObserver.disconnect();
121
252
  };
122
- }, []);
253
+ }, [columns, spacing, children]);
123
254
  var handleRef = useForkRef(ref, masonryRef);
124
- return /*#__PURE__*/_jsx(MasonryContext.Provider, {
125
- value: contextValue,
126
- children: /*#__PURE__*/_jsx(MasonryRoot, _extends({
127
- as: component,
128
- className: clsx(classes.root, className),
129
- ref: handleRef,
130
- ownerState: ownerState
131
- }, other, {
132
- children: children
133
- }))
255
+ var lineBreakStyle = {
256
+ flexBasis: '100%',
257
+ width: 0,
258
+ margin: 0,
259
+ padding: 0
260
+ }; // columns are likely to have different heights and hence can start to merge;
261
+ // a line break at the end of each column prevents columns from merging
262
+
263
+ var lineBreaks = new Array(numberOfLineBreaks).fill('').map(function (_, index) {
264
+ return /*#__PURE__*/_jsx("span", {
265
+ "data-class": "line-break",
266
+ style: _extends({}, lineBreakStyle, {
267
+ order: index + 1
268
+ })
269
+ }, index);
134
270
  });
271
+ return /*#__PURE__*/_jsxs(MasonryRoot, _extends({
272
+ as: component,
273
+ className: clsx(classes.root, className),
274
+ ref: handleRef,
275
+ ownerState: ownerState
276
+ }, other, {
277
+ children: [children, lineBreaks]
278
+ }));
135
279
  });
136
280
  process.env.NODE_ENV !== "production" ? Masonry.propTypes
137
281
  /* remove-proptypes */
@@ -142,7 +286,7 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
142
286
  // ----------------------------------------------------------------------
143
287
 
144
288
  /**
145
- * The content of the component. It's recommended to be `<MasonryItem />`s.
289
+ * The content of the component.
146
290
  */
147
291
  children: PropTypes
148
292
  /* @typescript-to-proptypes-ignore */
@@ -170,6 +314,21 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
170
314
  */
171
315
  component: PropTypes.elementType,
172
316
 
317
+ /**
318
+ * The default number of columns of the component. This is provided for server-side rendering.
319
+ */
320
+ defaultColumns: PropTypes.number,
321
+
322
+ /**
323
+ * The default height of the component in px. This is provided for server-side rendering.
324
+ */
325
+ defaultHeight: PropTypes.number,
326
+
327
+ /**
328
+ * The default spacing of the component. Like `spacing`, it is a factor of the theme's spacing. This is provided for server-side rendering.
329
+ */
330
+ defaultSpacing: PropTypes.number,
331
+
173
332
  /**
174
333
  * Defines the space between children. It is a factor of the theme's spacing.
175
334
  * @default 1
@@ -179,6 +338,6 @@ process.env.NODE_ENV !== "production" ? Masonry.propTypes
179
338
  /**
180
339
  * Allows defining system overrides as well as additional CSS styles.
181
340
  */
182
- sx: PropTypes.object
341
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object])), PropTypes.func, PropTypes.object])
183
342
  } : void 0;
184
343
  export default Masonry;
@@ -155,6 +155,7 @@ process.env.NODE_ENV !== "production" ? MobileDatePicker.propTypes
155
155
 
156
156
  /**
157
157
  * If `true`, the picker and text field are disabled.
158
+ * @default false
158
159
  */
159
160
  disabled: PropTypes.bool,
160
161
 
@@ -336,6 +337,7 @@ process.env.NODE_ENV !== "production" ? MobileDatePicker.propTypes
336
337
 
337
338
  /**
338
339
  * Make picker read only.
340
+ * @default false
339
341
  */
340
342
  readOnly: PropTypes.bool,
341
343
 
@@ -206,6 +206,7 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes
206
206
 
207
207
  /**
208
208
  * If `true`, the picker and text field are disabled.
209
+ * @default false
209
210
  */
210
211
  disabled: PropTypes.bool,
211
212
 
@@ -386,6 +387,7 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes
386
387
 
387
388
  /**
388
389
  * Make picker read only.
390
+ * @default false
389
391
  */
390
392
  readOnly: PropTypes.bool,
391
393
 
@@ -172,6 +172,7 @@ process.env.NODE_ENV !== "production" ? MobileDateTimePicker.propTypes
172
172
 
173
173
  /**
174
174
  * If `true`, the picker and text field are disabled.
175
+ * @default false
175
176
  */
176
177
  disabled: PropTypes.bool,
177
178
 
@@ -405,6 +406,7 @@ process.env.NODE_ENV !== "production" ? MobileDateTimePicker.propTypes
405
406
 
406
407
  /**
407
408
  * Make picker read only.
409
+ * @default false
408
410
  */
409
411
  readOnly: PropTypes.bool,
410
412