WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit c4a947a

Browse files
Add loading styles and props to Button and Overrides
1 parent efa3c0f commit c4a947a

File tree

3 files changed

+162
-14
lines changed

3 files changed

+162
-14
lines changed

packages/rescript-mui-lab/src/Overrides.res

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,6 @@ type component<'classKey, 'props> = {
55
styleOverrides?: 'classKey,
66
}
77

8-
type loadingButtonClassKey = {
9-
loading?: ReactDOM.Style.t,
10-
loadingIndicator?: ReactDOM.Style.t,
11-
loadingIndicatorCenter?: ReactDOM.Style.t,
12-
loadingIndicatorStart?: ReactDOM.Style.t,
13-
loadingIndicatorEnd?: ReactDOM.Style.t,
14-
endIconLoadingEnd?: ReactDOM.Style.t,
15-
startIconLoadingStart?: ReactDOM.Style.t,
16-
}
17-
188
type masonryClassKey = {root?: ReactDOM.Style.t}
199

2010
type tabListClassKey = {

packages/rescript-mui-material/src/components/Button.res

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,20 @@ type classes = {
9393
iconSizeMedium?: string,
9494
/** Styles applied to the icon element if supplied and `size="large"`. */
9595
iconSizeLarge?: string,
96+
/** Styles applied to the root element if `loading={true}`. */
97+
loading?: string,
98+
/** Styles applied to the loadingWrapper element. */
99+
loadingWrapper?: string,
100+
/** Styles applied to the loadingIconPlaceholder element. */
101+
loadingIconPlaceholder?: string,
102+
/** Styles applied to the loadingIndicator element. */
103+
loadingIndicator?: string,
104+
/** Styles applied to the root element if `loadingPosition="center"`. */
105+
loadingPositionCenter?: string,
106+
/** Styles applied to the root element if `loadingPosition="start"`. */
107+
loadingPositionStart?: string,
108+
/** Styles applied to the root element if `loadingPosition="end"`. */
109+
loadingPositionEnd?: string,
96110
}
97111

98112
@unboxed
@@ -106,6 +120,19 @@ type color =
106120
| @as("warning") Warning
107121
| String(string)
108122

123+
@unboxed
124+
type loading =
125+
| @as(true) True
126+
| @as(false) False
127+
| @as(null) Null
128+
129+
@unboxed
130+
type loadingPosition =
131+
| @as("start") Start
132+
| @as("end") End
133+
| @as("center") Center
134+
| String(string)
135+
109136
@unboxed
110137
type size =
111138
| @as("small") Small
@@ -157,6 +184,24 @@ type props = {
157184
* @default false
158185
*/
159186
fullWidth?: bool,
187+
/**
188+
* If `true`, the loading indicator is shown and the button is disabled.
189+
* If `true | false`, the loading wrapper is always rendered before the children to prevent Google Translation Crash.
190+
* @default null
191+
*/
192+
loading?: loading,
193+
/**
194+
* Element placed before the children if the button is in loading state.
195+
* The node should contain an element with `role="progressbar"` with an accessible name.
196+
* By default we render a `CircularProgress` that is labelled by the button itself.
197+
* @default <CircularProgress color="inherit" size={16} />
198+
*/
199+
loadingIndicator?: React.element,
200+
/**
201+
* The loading indicator can be positioned on the start, end, or the center of the button.
202+
* @default 'center'
203+
*/
204+
loadingPosition?: loadingPosition,
160205
/**
161206
* The size of the component.
162207
* `small` is equivalent to the dense button styling.

packages/rescript-mui-material/src/types/Overrides.res

Lines changed: 117 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,13 @@ type buttonClassKey = {
211211
iconSizeSmall?: ReactDOM.Style.t,
212212
iconSizeMedium?: ReactDOM.Style.t,
213213
iconSizeLarge?: ReactDOM.Style.t,
214+
loading?: ReactDOM.Style.t,
215+
loadingWrapper?: ReactDOM.Style.t,
216+
loadingIconPlaceholder?: ReactDOM.Style.t,
217+
loadingIndicator?: ReactDOM.Style.t,
218+
loadingPositionCenter?: ReactDOM.Style.t,
219+
loadingPositionStart?: ReactDOM.Style.t,
220+
loadingPositionEnd?: ReactDOM.Style.t,
214221
}
215222

216223
type buttonBaseClassKey = {
@@ -514,6 +521,105 @@ type formLabelClassKey = {
514521
}
515522

516523
type gridClassKey = {
524+
root?: ReactDOM.Style.t,
525+
container?: ReactDOM.Style.t,
526+
@as("direction-xs-column")
527+
directionXsColumn?: ReactDOM.Style.t,
528+
@as("direction-xs-column-reverse")
529+
directionXsColumnReverse?: ReactDOM.Style.t,
530+
@as("direction-xs-row")
531+
directionXsRow?: ReactDOM.Style.t,
532+
@as("direction-xs-row-reverse")
533+
directionXsRowReverse?: ReactDOM.Style.t,
534+
@as("wrap-xs-wrap")
535+
wrapXsWrap?: ReactDOM.Style.t,
536+
@as("wrap-xs-nowrap")
537+
wrapXsNowrap?: ReactDOM.Style.t,
538+
@as("wrap-xs-wrap-reverse")
539+
wrapXsWrapReverse?: ReactDOM.Style.t,
540+
@as("spacing-xs-1") spacingXs_1?: ReactDOM.Style.t,
541+
@as("spacing-xs-2") spacingXs_2?: ReactDOM.Style.t,
542+
@as("spacing-xs-3") spacingXs_3?: ReactDOM.Style.t,
543+
@as("spacing-xs-4") spacingXs_4?: ReactDOM.Style.t,
544+
@as("spacing-xs-5") spacingXs_5?: ReactDOM.Style.t,
545+
@as("spacing-xs-6") spacingXs_6?: ReactDOM.Style.t,
546+
@as("spacing-xs-7") spacingXs_7?: ReactDOM.Style.t,
547+
@as("spacing-xs-8") spacingXs_8?: ReactDOM.Style.t,
548+
@as("spacing-xs-9") spacingXs_9?: ReactDOM.Style.t,
549+
@as("spacing-xs-10") spacingXs_10?: ReactDOM.Style.t,
550+
@as("grid-xs-auto") gridXsAuto?: ReactDOM.Style.t,
551+
@as("grid-xs-true") gridXsTrue?: ReactDOM.Style.t,
552+
@as("grid-xs-1") gridXs_1?: ReactDOM.Style.t,
553+
@as("grid-xs-2") gridXs_2?: ReactDOM.Style.t,
554+
@as("grid-xs-3") gridXs_3?: ReactDOM.Style.t,
555+
@as("grid-xs-4") gridXs_4?: ReactDOM.Style.t,
556+
@as("grid-xs-5") gridXs_5?: ReactDOM.Style.t,
557+
@as("grid-xs-6") gridXs_6?: ReactDOM.Style.t,
558+
@as("grid-xs-7") gridXs_7?: ReactDOM.Style.t,
559+
@as("grid-xs-8") gridXs_8?: ReactDOM.Style.t,
560+
@as("grid-xs-9") gridXs_9?: ReactDOM.Style.t,
561+
@as("grid-xs-10") gridXs_10?: ReactDOM.Style.t,
562+
@as("grid-xs-11") gridXs_11?: ReactDOM.Style.t,
563+
@as("grid-xs-12") gridXs_12?: ReactDOM.Style.t,
564+
@as("grid-sm-auto") gridSmAuto?: ReactDOM.Style.t,
565+
@as("grid-sm-true") gridSmTrue?: ReactDOM.Style.t,
566+
@as("grid-sm-1") gridSm_1?: ReactDOM.Style.t,
567+
@as("grid-sm-2") gridSm_2?: ReactDOM.Style.t,
568+
@as("grid-sm-3") gridSm_3?: ReactDOM.Style.t,
569+
@as("grid-sm-4") gridSm_4?: ReactDOM.Style.t,
570+
@as("grid-sm-5") gridSm_5?: ReactDOM.Style.t,
571+
@as("grid-sm-6") gridSm_6?: ReactDOM.Style.t,
572+
@as("grid-sm-7") gridSm_7?: ReactDOM.Style.t,
573+
@as("grid-sm-8") gridSm_8?: ReactDOM.Style.t,
574+
@as("grid-sm-9") gridSm_9?: ReactDOM.Style.t,
575+
@as("grid-sm-10") gridSm_10?: ReactDOM.Style.t,
576+
@as("grid-sm-11") gridSm_11?: ReactDOM.Style.t,
577+
@as("grid-sm-12") gridSm_12?: ReactDOM.Style.t,
578+
@as("grid-md-auto") gridMdAuto?: ReactDOM.Style.t,
579+
@as("grid-md-true") gridMdTrue?: ReactDOM.Style.t,
580+
@as("grid-md-1") gridMd_1?: ReactDOM.Style.t,
581+
@as("grid-md-2") gridMd_2?: ReactDOM.Style.t,
582+
@as("grid-md-3") gridMd_3?: ReactDOM.Style.t,
583+
@as("grid-md-4") gridMd_4?: ReactDOM.Style.t,
584+
@as("grid-md-5") gridMd_5?: ReactDOM.Style.t,
585+
@as("grid-md-6") gridMd_6?: ReactDOM.Style.t,
586+
@as("grid-md-7") gridMd_7?: ReactDOM.Style.t,
587+
@as("grid-md-8") gridMd_8?: ReactDOM.Style.t,
588+
@as("grid-md-9") gridMd_9?: ReactDOM.Style.t,
589+
@as("grid-md-10") gridMd_10?: ReactDOM.Style.t,
590+
@as("grid-md-11") gridMd_11?: ReactDOM.Style.t,
591+
@as("grid-md-12") gridMd_12?: ReactDOM.Style.t,
592+
@as("grid-lg-auto") gridLgAuto?: ReactDOM.Style.t,
593+
@as("grid-lg-true") gridLgTrue?: ReactDOM.Style.t,
594+
@as("grid-lg-1") gridLg_1?: ReactDOM.Style.t,
595+
@as("grid-lg-2") gridLg_2?: ReactDOM.Style.t,
596+
@as("grid-lg-3") gridLg_3?: ReactDOM.Style.t,
597+
@as("grid-lg-4") gridLg_4?: ReactDOM.Style.t,
598+
@as("grid-lg-5") gridLg_5?: ReactDOM.Style.t,
599+
@as("grid-lg-6") gridLg_6?: ReactDOM.Style.t,
600+
@as("grid-lg-7") gridLg_7?: ReactDOM.Style.t,
601+
@as("grid-lg-8") gridLg_8?: ReactDOM.Style.t,
602+
@as("grid-lg-9") gridLg_9?: ReactDOM.Style.t,
603+
@as("grid-lg-10") gridLg_10?: ReactDOM.Style.t,
604+
@as("grid-lg-11") gridLg_11?: ReactDOM.Style.t,
605+
@as("grid-lg-12") gridLg_12?: ReactDOM.Style.t,
606+
@as("grid-xl-auto") gridXlAuto?: ReactDOM.Style.t,
607+
@as("grid-xl-true") gridXlTrue?: ReactDOM.Style.t,
608+
@as("grid-xl-1") gridXl_1?: ReactDOM.Style.t,
609+
@as("grid-xl-2") gridXl_2?: ReactDOM.Style.t,
610+
@as("grid-xl-3") gridXl_3?: ReactDOM.Style.t,
611+
@as("grid-xl-4") gridXl_4?: ReactDOM.Style.t,
612+
@as("grid-xl-5") gridXl_5?: ReactDOM.Style.t,
613+
@as("grid-xl-6") gridXl_6?: ReactDOM.Style.t,
614+
@as("grid-xl-7") gridXl_7?: ReactDOM.Style.t,
615+
@as("grid-xl-8") gridXl_8?: ReactDOM.Style.t,
616+
@as("grid-xl-9") gridXl_9?: ReactDOM.Style.t,
617+
@as("grid-xl-10") gridXl_10?: ReactDOM.Style.t,
618+
@as("grid-xl-11") gridXl_11?: ReactDOM.Style.t,
619+
@as("grid-xl-12") gridXl_12?: ReactDOM.Style.t,
620+
}
621+
622+
type gridLegacyClassKey = {
517623
root?: ReactDOM.Style.t,
518624
container?: ReactDOM.Style.t,
519625
item?: ReactDOM.Style.t,
@@ -1359,15 +1465,20 @@ type t = {
13591465
@as("MuiDivider") muiDivider?: component<dividerClassKey, Divider.props>,
13601466
@as("MuiDrawer") muiDrawer?: component<drawerClassKey, Drawer.props>,
13611467
@as("MuiFab") muiFab?: component<fabClassKey, Fab.props>,
1362-
@as("MuiFilledInput") muiFilledInput?: component<filledInputClassKey, FilledInput.props<unknown, unknown>>,
1468+
@as("MuiFilledInput")
1469+
muiFilledInput?: component<filledInputClassKey, FilledInput.props<unknown, unknown>>,
13631470
@as("MuiFormControl") muiFormControl?: component<formControlClassKey, FormControl.props>,
13641471
@as("MuiFormControlLabel")
1365-
muiFormControlLabel?: component<formControlLabelClassKey, FormControlLabel.props<unknown, unknown>>,
1472+
muiFormControlLabel?: component<
1473+
formControlLabelClassKey,
1474+
FormControlLabel.props<unknown, unknown>,
1475+
>,
13661476
@as("MuiFormGroup") muiFormGroup?: component<formGroupClassKey, FormGroup.props>,
13671477
@as("MuiFormHelperText")
13681478
muiFormHelperText?: component<formHelperTextClassKey, FormHelperText.props>,
13691479
@as("MuiFormLabel") muiFormLabel?: component<formLabelClassKey, FormLabel.props>,
13701480
@as("MuiGrid") muiGrid?: component<gridClassKey, Grid.props>,
1481+
@as("MuiGridLegacy") muiGridLegacy?: component<gridLegacyClassKey, GridLegacy.props>,
13711482
@as("MuiIcon") muiIcon?: component<iconClassKey, Icon.props>,
13721483
@as("MuiIconButton") muiIconButton?: component<iconButtonClassKey, IconButton.props>,
13731484
@as("MuiImageList") muiImageList?: component<imageListClassKey, ImageList.props>,
@@ -1377,7 +1488,8 @@ type t = {
13771488
@as("MuiInput") muiInput?: component<inputClassKey, Input.props<unknown, unknown>>,
13781489
@as("MuiInputAdornment")
13791490
muiInputAdornment?: component<inputAdornmentClassKey, InputAdornment.props>,
1380-
@as("MuiInputBase") muiInputBase?: component<inputBaseClassKey, InputBase.props<unknown, unknown>>,
1491+
@as("MuiInputBase")
1492+
muiInputBase?: component<inputBaseClassKey, InputBase.props<unknown, unknown>>,
13811493
@as("MuiInputLabel") muiInputLabel?: component<inputLabelClassKey, InputLabel.props>,
13821494
@as("MuiLinearProgress")
13831495
muiLinearProgress?: component<linearProgressClassKey, LinearProgress.props>,
@@ -1450,7 +1562,8 @@ type t = {
14501562
@as("MuiTableSortLabel")
14511563
muiTableSortLabel?: component<tableSortLabelClassKey, TableSortLabel.props>,
14521564
@as("MuiTabs") muiTabs?: component<tabsClassKey, Tabs.props<unknown>>,
1453-
@as("MuiTextField") muiTextField?: component<textFieldClassKey, TextField.props<unknown, unknown>>,
1565+
@as("MuiTextField")
1566+
muiTextField?: component<textFieldClassKey, TextField.props<unknown, unknown>>,
14541567
@as("MuiToggleButton")
14551568
muiToggleButton?: component<toggleButtonClassKey, ToggleButton.props<unknown>>,
14561569
@as("MuiToggleButtonGroup")

0 commit comments

Comments
 (0)