diff --git a/packages/rescript-mui-lab/src/Overrides.res b/packages/rescript-mui-lab/src/Overrides.res
index f2f59d64..7bf95d6d 100644
--- a/packages/rescript-mui-lab/src/Overrides.res
+++ b/packages/rescript-mui-lab/src/Overrides.res
@@ -5,16 +5,6 @@ type component<'classKey, 'props> = {
styleOverrides?: 'classKey,
}
-type loadingButtonClassKey = {
- loading?: ReactDOM.Style.t,
- loadingIndicator?: ReactDOM.Style.t,
- loadingIndicatorCenter?: ReactDOM.Style.t,
- loadingIndicatorStart?: ReactDOM.Style.t,
- loadingIndicatorEnd?: ReactDOM.Style.t,
- endIconLoadingEnd?: ReactDOM.Style.t,
- startIconLoadingStart?: ReactDOM.Style.t,
-}
-
type masonryClassKey = {root?: ReactDOM.Style.t}
type tabListClassKey = {
diff --git a/packages/rescript-mui-material/src/components/Button.res b/packages/rescript-mui-material/src/components/Button.res
index c8f789bf..b9809f65 100644
--- a/packages/rescript-mui-material/src/components/Button.res
+++ b/packages/rescript-mui-material/src/components/Button.res
@@ -93,6 +93,20 @@ type classes = {
iconSizeMedium?: string,
/** Styles applied to the icon element if supplied and `size="large"`. */
iconSizeLarge?: string,
+ /** Styles applied to the root element if `loading={true}`. */
+ loading?: string,
+ /** Styles applied to the loadingWrapper element. */
+ loadingWrapper?: string,
+ /** Styles applied to the loadingIconPlaceholder element. */
+ loadingIconPlaceholder?: string,
+ /** Styles applied to the loadingIndicator element. */
+ loadingIndicator?: string,
+ /** Styles applied to the root element if `loadingPosition="center"`. */
+ loadingPositionCenter?: string,
+ /** Styles applied to the root element if `loadingPosition="start"`. */
+ loadingPositionStart?: string,
+ /** Styles applied to the root element if `loadingPosition="end"`. */
+ loadingPositionEnd?: string,
}
@unboxed
@@ -106,6 +120,19 @@ type color =
| @as("warning") Warning
| String(string)
+@unboxed
+type loading =
+ | @as(true) True
+ | @as(false) False
+ | @as(null) Null
+
+@unboxed
+type loadingPosition =
+ | @as("start") Start
+ | @as("end") End
+ | @as("center") Center
+ | String(string)
+
@unboxed
type size =
| @as("small") Small
@@ -157,6 +184,24 @@ type props = {
* @default false
*/
fullWidth?: bool,
+ /**
+ * If `true`, the loading indicator is shown and the button is disabled.
+ * If `true | false`, the loading wrapper is always rendered before the children to prevent Google Translation Crash.
+ * @default null
+ */
+ loading?: loading,
+ /**
+ * Element placed before the children if the button is in loading state.
+ * The node should contain an element with `role="progressbar"` with an accessible name.
+ * By default we render a `CircularProgress` that is labelled by the button itself.
+ * @default
+ */
+ loadingIndicator?: React.element,
+ /**
+ * The loading indicator can be positioned on the start, end, or the center of the button.
+ * @default 'center'
+ */
+ loadingPosition?: loadingPosition,
/**
* The size of the component.
* `small` is equivalent to the dense button styling.
diff --git a/packages/rescript-mui-material/src/types/Overrides.res b/packages/rescript-mui-material/src/types/Overrides.res
index 2db59112..ec19112d 100644
--- a/packages/rescript-mui-material/src/types/Overrides.res
+++ b/packages/rescript-mui-material/src/types/Overrides.res
@@ -211,6 +211,13 @@ type buttonClassKey = {
iconSizeSmall?: ReactDOM.Style.t,
iconSizeMedium?: ReactDOM.Style.t,
iconSizeLarge?: ReactDOM.Style.t,
+ loading?: ReactDOM.Style.t,
+ loadingWrapper?: ReactDOM.Style.t,
+ loadingIconPlaceholder?: ReactDOM.Style.t,
+ loadingIndicator?: ReactDOM.Style.t,
+ loadingPositionCenter?: ReactDOM.Style.t,
+ loadingPositionStart?: ReactDOM.Style.t,
+ loadingPositionEnd?: ReactDOM.Style.t,
}
type buttonBaseClassKey = {
@@ -514,6 +521,105 @@ type formLabelClassKey = {
}
type gridClassKey = {
+ root?: ReactDOM.Style.t,
+ container?: ReactDOM.Style.t,
+ @as("direction-xs-column")
+ directionXsColumn?: ReactDOM.Style.t,
+ @as("direction-xs-column-reverse")
+ directionXsColumnReverse?: ReactDOM.Style.t,
+ @as("direction-xs-row")
+ directionXsRow?: ReactDOM.Style.t,
+ @as("direction-xs-row-reverse")
+ directionXsRowReverse?: ReactDOM.Style.t,
+ @as("wrap-xs-wrap")
+ wrapXsWrap?: ReactDOM.Style.t,
+ @as("wrap-xs-nowrap")
+ wrapXsNowrap?: ReactDOM.Style.t,
+ @as("wrap-xs-wrap-reverse")
+ wrapXsWrapReverse?: ReactDOM.Style.t,
+ @as("spacing-xs-1") spacingXs_1?: ReactDOM.Style.t,
+ @as("spacing-xs-2") spacingXs_2?: ReactDOM.Style.t,
+ @as("spacing-xs-3") spacingXs_3?: ReactDOM.Style.t,
+ @as("spacing-xs-4") spacingXs_4?: ReactDOM.Style.t,
+ @as("spacing-xs-5") spacingXs_5?: ReactDOM.Style.t,
+ @as("spacing-xs-6") spacingXs_6?: ReactDOM.Style.t,
+ @as("spacing-xs-7") spacingXs_7?: ReactDOM.Style.t,
+ @as("spacing-xs-8") spacingXs_8?: ReactDOM.Style.t,
+ @as("spacing-xs-9") spacingXs_9?: ReactDOM.Style.t,
+ @as("spacing-xs-10") spacingXs_10?: ReactDOM.Style.t,
+ @as("grid-xs-auto") gridXsAuto?: ReactDOM.Style.t,
+ @as("grid-xs-true") gridXsTrue?: ReactDOM.Style.t,
+ @as("grid-xs-1") gridXs_1?: ReactDOM.Style.t,
+ @as("grid-xs-2") gridXs_2?: ReactDOM.Style.t,
+ @as("grid-xs-3") gridXs_3?: ReactDOM.Style.t,
+ @as("grid-xs-4") gridXs_4?: ReactDOM.Style.t,
+ @as("grid-xs-5") gridXs_5?: ReactDOM.Style.t,
+ @as("grid-xs-6") gridXs_6?: ReactDOM.Style.t,
+ @as("grid-xs-7") gridXs_7?: ReactDOM.Style.t,
+ @as("grid-xs-8") gridXs_8?: ReactDOM.Style.t,
+ @as("grid-xs-9") gridXs_9?: ReactDOM.Style.t,
+ @as("grid-xs-10") gridXs_10?: ReactDOM.Style.t,
+ @as("grid-xs-11") gridXs_11?: ReactDOM.Style.t,
+ @as("grid-xs-12") gridXs_12?: ReactDOM.Style.t,
+ @as("grid-sm-auto") gridSmAuto?: ReactDOM.Style.t,
+ @as("grid-sm-true") gridSmTrue?: ReactDOM.Style.t,
+ @as("grid-sm-1") gridSm_1?: ReactDOM.Style.t,
+ @as("grid-sm-2") gridSm_2?: ReactDOM.Style.t,
+ @as("grid-sm-3") gridSm_3?: ReactDOM.Style.t,
+ @as("grid-sm-4") gridSm_4?: ReactDOM.Style.t,
+ @as("grid-sm-5") gridSm_5?: ReactDOM.Style.t,
+ @as("grid-sm-6") gridSm_6?: ReactDOM.Style.t,
+ @as("grid-sm-7") gridSm_7?: ReactDOM.Style.t,
+ @as("grid-sm-8") gridSm_8?: ReactDOM.Style.t,
+ @as("grid-sm-9") gridSm_9?: ReactDOM.Style.t,
+ @as("grid-sm-10") gridSm_10?: ReactDOM.Style.t,
+ @as("grid-sm-11") gridSm_11?: ReactDOM.Style.t,
+ @as("grid-sm-12") gridSm_12?: ReactDOM.Style.t,
+ @as("grid-md-auto") gridMdAuto?: ReactDOM.Style.t,
+ @as("grid-md-true") gridMdTrue?: ReactDOM.Style.t,
+ @as("grid-md-1") gridMd_1?: ReactDOM.Style.t,
+ @as("grid-md-2") gridMd_2?: ReactDOM.Style.t,
+ @as("grid-md-3") gridMd_3?: ReactDOM.Style.t,
+ @as("grid-md-4") gridMd_4?: ReactDOM.Style.t,
+ @as("grid-md-5") gridMd_5?: ReactDOM.Style.t,
+ @as("grid-md-6") gridMd_6?: ReactDOM.Style.t,
+ @as("grid-md-7") gridMd_7?: ReactDOM.Style.t,
+ @as("grid-md-8") gridMd_8?: ReactDOM.Style.t,
+ @as("grid-md-9") gridMd_9?: ReactDOM.Style.t,
+ @as("grid-md-10") gridMd_10?: ReactDOM.Style.t,
+ @as("grid-md-11") gridMd_11?: ReactDOM.Style.t,
+ @as("grid-md-12") gridMd_12?: ReactDOM.Style.t,
+ @as("grid-lg-auto") gridLgAuto?: ReactDOM.Style.t,
+ @as("grid-lg-true") gridLgTrue?: ReactDOM.Style.t,
+ @as("grid-lg-1") gridLg_1?: ReactDOM.Style.t,
+ @as("grid-lg-2") gridLg_2?: ReactDOM.Style.t,
+ @as("grid-lg-3") gridLg_3?: ReactDOM.Style.t,
+ @as("grid-lg-4") gridLg_4?: ReactDOM.Style.t,
+ @as("grid-lg-5") gridLg_5?: ReactDOM.Style.t,
+ @as("grid-lg-6") gridLg_6?: ReactDOM.Style.t,
+ @as("grid-lg-7") gridLg_7?: ReactDOM.Style.t,
+ @as("grid-lg-8") gridLg_8?: ReactDOM.Style.t,
+ @as("grid-lg-9") gridLg_9?: ReactDOM.Style.t,
+ @as("grid-lg-10") gridLg_10?: ReactDOM.Style.t,
+ @as("grid-lg-11") gridLg_11?: ReactDOM.Style.t,
+ @as("grid-lg-12") gridLg_12?: ReactDOM.Style.t,
+ @as("grid-xl-auto") gridXlAuto?: ReactDOM.Style.t,
+ @as("grid-xl-true") gridXlTrue?: ReactDOM.Style.t,
+ @as("grid-xl-1") gridXl_1?: ReactDOM.Style.t,
+ @as("grid-xl-2") gridXl_2?: ReactDOM.Style.t,
+ @as("grid-xl-3") gridXl_3?: ReactDOM.Style.t,
+ @as("grid-xl-4") gridXl_4?: ReactDOM.Style.t,
+ @as("grid-xl-5") gridXl_5?: ReactDOM.Style.t,
+ @as("grid-xl-6") gridXl_6?: ReactDOM.Style.t,
+ @as("grid-xl-7") gridXl_7?: ReactDOM.Style.t,
+ @as("grid-xl-8") gridXl_8?: ReactDOM.Style.t,
+ @as("grid-xl-9") gridXl_9?: ReactDOM.Style.t,
+ @as("grid-xl-10") gridXl_10?: ReactDOM.Style.t,
+ @as("grid-xl-11") gridXl_11?: ReactDOM.Style.t,
+ @as("grid-xl-12") gridXl_12?: ReactDOM.Style.t,
+}
+
+type gridLegacyClassKey = {
root?: ReactDOM.Style.t,
container?: ReactDOM.Style.t,
item?: ReactDOM.Style.t,
@@ -1359,15 +1465,20 @@ type t = {
@as("MuiDivider") muiDivider?: component,
@as("MuiDrawer") muiDrawer?: component,
@as("MuiFab") muiFab?: component,
- @as("MuiFilledInput") muiFilledInput?: component>,
+ @as("MuiFilledInput")
+ muiFilledInput?: component>,
@as("MuiFormControl") muiFormControl?: component,
@as("MuiFormControlLabel")
- muiFormControlLabel?: component>,
+ muiFormControlLabel?: component<
+ formControlLabelClassKey,
+ FormControlLabel.props,
+ >,
@as("MuiFormGroup") muiFormGroup?: component,
@as("MuiFormHelperText")
muiFormHelperText?: component,
@as("MuiFormLabel") muiFormLabel?: component,
@as("MuiGrid") muiGrid?: component,
+ @as("MuiGridLegacy") muiGridLegacy?: component,
@as("MuiIcon") muiIcon?: component,
@as("MuiIconButton") muiIconButton?: component,
@as("MuiImageList") muiImageList?: component,
@@ -1377,7 +1488,8 @@ type t = {
@as("MuiInput") muiInput?: component>,
@as("MuiInputAdornment")
muiInputAdornment?: component,
- @as("MuiInputBase") muiInputBase?: component>,
+ @as("MuiInputBase")
+ muiInputBase?: component>,
@as("MuiInputLabel") muiInputLabel?: component,
@as("MuiLinearProgress")
muiLinearProgress?: component,
@@ -1450,7 +1562,8 @@ type t = {
@as("MuiTableSortLabel")
muiTableSortLabel?: component,
@as("MuiTabs") muiTabs?: component>,
- @as("MuiTextField") muiTextField?: component>,
+ @as("MuiTextField")
+ muiTextField?: component>,
@as("MuiToggleButton")
muiToggleButton?: component>,
@as("MuiToggleButtonGroup")