Skip to content

[docs] Migrate batch of demos to hooks/typescript #16334

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 45 commits into from
Jun 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
09c6651
customization/themes/CustomStyles
merceyz Jun 22, 2019
7c3aa08
customization/themes/ThemeNesting
merceyz Jun 22, 2019
e174eca
customization/themes/ThemeNestingExtend
merceyz Jun 22, 2019
ddbad2a
customization/themes/WithTheme
merceyz Jun 22, 2019
9fe3c29
customization/typography/FontSizeTheme
merceyz Jun 22, 2019
97bb4b5
guides/composition/Composition
merceyz Jun 22, 2019
7f0f153
guides/right-to-left/Direction
merceyz Jun 22, 2019
7bb7350
styles/advanced/GlobalClassName
merceyz Jun 22, 2019
844c9f6
styles/advanced/GlobalCss
merceyz Jun 22, 2019
a450b9c
styles/advanced/HybridGlobalCss
merceyz Jun 22, 2019
b8b3307
styles/advanced/ThemeNesting
merceyz Jun 22, 2019
23c84df
styles/advanced/Theming
merceyz Jun 22, 2019
6b06d02
styles/advanced/UseTheme
merceyz Jun 22, 2019
5ac8911
styles/basics/HigherOrderComponent
merceyz Jun 22, 2019
2e9867f
styles/basics/Hook
merceyz Jun 22, 2019
5d6e594
styles/basics/StressTest
merceyz Jun 22, 2019
0cc49ea
system/display/Block
merceyz Jun 22, 2019
e6bd917
system/display/Hiding
merceyz Jun 22, 2019
2ec3786
system/display/Inline
merceyz Jun 22, 2019
4baa830
system/display/Print
merceyz Jun 22, 2019
b27b2f4
system/display/Overflow
merceyz Jun 22, 2019
b4ceefb
system/display/TextOverflow
merceyz Jun 22, 2019
b8d845e
system/display/Visibility
merceyz Jun 22, 2019
d206421
system/display/WhiteSpace
merceyz Jun 22, 2019
5be88b0
system/flexbox/AlignContent
merceyz Jun 22, 2019
5f73a5c
system/flexbox/AlignItems
merceyz Jun 22, 2019
4c8e278
system/flexbox/AlignSelf
merceyz Jun 22, 2019
56971f3
system/flexbox/Display
merceyz Jun 22, 2019
d9fd29b
system/flexbox/FlexDirection
merceyz Jun 22, 2019
b1eb5a1
system/flexbox/FlexGrow
merceyz Jun 22, 2019
9e45a3b
system/flexbox/FlexShrink
merceyz Jun 22, 2019
fd068d2
system/flexbox/FlexWrap
merceyz Jun 22, 2019
83221df
system/flexbox/JustifyContent
merceyz Jun 22, 2019
d3801bc
system/flexbox/Order
merceyz Jun 22, 2019
f1eef8a
system/palette/BackgroundColor
merceyz Jun 22, 2019
e4c3624
system/palette/Color
merceyz Jun 22, 2019
20faa0c
system/positions/ZIndex
merceyz Jun 22, 2019
2167dcc
system/shadows/Demo
merceyz Jun 22, 2019
9dd9f28
system/sizing/Height
merceyz Jun 22, 2019
4bfd6e0
system/sizing/Values
merceyz Jun 22, 2019
5cbd38c
system/sizing/Width
merceyz Jun 22, 2019
e3e0423
system/spacing/Demo
merceyz Jun 22, 2019
9493f7c
system/spacing/HorizontalCentering
merceyz Jun 22, 2019
db5c04a
customization/themes/CustomStyles - Alias to AugmentedTheme
merceyz Jun 22, 2019
e0810a6
Prefer ThemeProvider<ThemeType>
eps1lon Jun 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 16 additions & 22 deletions docs/src/pages/customization/themes/CustomStyles.js
Original file line number Diff line number Diff line change
@@ -1,49 +1,43 @@
import React from 'react';
import PropTypes from 'prop-types';
import Checkbox from '@material-ui/core/Checkbox';
import { createMuiTheme, withStyles } from '@material-ui/core/styles';
import { createMuiTheme, makeStyles } from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import { orange } from '@material-ui/core/colors';

const styles = theme => ({
const useStyles = makeStyles(theme => ({
root: {
color: theme.status.danger,
'&$checked': {
color: theme.status.danger,
},
},
checked: {},
});

let CustomCheckbox = props => (
<Checkbox
defaultChecked
classes={{
root: props.classes.root,
checked: props.classes.checked,
}}
/>
);
}));

CustomCheckbox.propTypes = {
classes: PropTypes.object.isRequired,
};
function CustomCheckbox() {
const classes = useStyles();

CustomCheckbox = withStyles(styles)(CustomCheckbox);
return (
<Checkbox
defaultChecked
classes={{
root: classes.root,
checked: classes.checked,
}}
/>
);
}

const theme = createMuiTheme({
status: {
// My business variables
danger: orange[500],
},
});

function CustomStyles() {
export default function CustomStyles() {
return (
<ThemeProvider theme={theme}>
<CustomCheckbox />
</ThemeProvider>
);
}

export default CustomStyles;
64 changes: 64 additions & 0 deletions docs/src/pages/customization/themes/CustomStyles.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import React from 'react';
import Checkbox from '@material-ui/core/Checkbox';
import {
createMuiTheme,
makeStyles,
createStyles,
Theme as AugmentedTheme,
} from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import { orange } from '@material-ui/core/colors';

declare module '@material-ui/core/styles/createMuiTheme' {
interface Theme {
status: {
danger: string;
};
}
// allow configuration using `createMuiTheme`
interface ThemeOptions {
status?: {
danger?: string;
};
}
}

const useStyles = makeStyles((theme: AugmentedTheme) =>
createStyles({
root: {
color: theme.status.danger,
'&$checked': {
color: theme.status.danger,
},
},
checked: {},
}),
);

function CustomCheckbox() {
const classes = useStyles();

return (
<Checkbox
defaultChecked
classes={{
root: classes.root,
checked: classes.checked,
}}
/>
);
}

const theme = createMuiTheme({
status: {
danger: orange[500],
},
});

export default function CustomStyles() {
return (
<ThemeProvider theme={theme}>
<CustomCheckbox />
</ThemeProvider>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/customization/themes/ThemeNesting.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const innerTheme = createMuiTheme({
},
});

function ThemeNesting() {
export default function ThemeNesting() {
return (
<ThemeProvider theme={outerTheme}>
<Checkbox defaultChecked />
Expand All @@ -30,5 +30,3 @@ function ThemeNesting() {
</ThemeProvider>
);
}

export default ThemeNesting;
32 changes: 32 additions & 0 deletions docs/src/pages/customization/themes/ThemeNesting.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from 'react';
import { createMuiTheme } from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import Checkbox from '@material-ui/core/Checkbox';
import { green, orange } from '@material-ui/core/colors';

const outerTheme = createMuiTheme({
palette: {
secondary: {
main: orange[500],
},
},
});

const innerTheme = createMuiTheme({
palette: {
secondary: {
main: green[500],
},
},
});

export default function ThemeNesting() {
return (
<ThemeProvider theme={outerTheme}>
<Checkbox defaultChecked />
<ThemeProvider theme={innerTheme}>
<Checkbox defaultChecked />
</ThemeProvider>
</ThemeProvider>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/customization/themes/ThemeNestingExtend.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const outerTheme = createMuiTheme({
},
});

function ThemeNestingExtend() {
export default function ThemeNestingExtend() {
return (
<ThemeProvider theme={outerTheme}>
<Checkbox defaultChecked />
Expand All @@ -35,5 +35,3 @@ function ThemeNestingExtend() {
</ThemeProvider>
);
}

export default ThemeNestingExtend;
37 changes: 37 additions & 0 deletions docs/src/pages/customization/themes/ThemeNestingExtend.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import React from 'react';
import { createMuiTheme, Theme } from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import Checkbox from '@material-ui/core/Checkbox';
import { green, orange } from '@material-ui/core/colors';

const outerTheme = createMuiTheme({
palette: {
secondary: {
main: orange[500],
},
},
});

export default function ThemeNestingExtend() {
return (
<ThemeProvider theme={outerTheme}>
<Checkbox defaultChecked />
<ThemeProvider
theme={(theme: Theme) =>
createMuiTheme({
...theme,
palette: {
...theme.palette,
primary: {
main: green[500],
},
},
})
}
>
<Checkbox defaultChecked color="primary" />
<Checkbox defaultChecked color="secondary" />
</ThemeProvider>
</ThemeProvider>
);
}
36 changes: 36 additions & 0 deletions docs/src/pages/customization/themes/WithTheme.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import React from 'react';
import PropTypes from 'prop-types';
import Typography from '@material-ui/core/Typography';
import { withTheme, Theme } from '@material-ui/core/styles';

function WithTheme(props: { theme: Theme }) {
const { theme } = props;
const primaryText = theme.palette.text.primary;
const primaryColor = theme.palette.primary.main;

const styles = {
primaryText: {
backgroundColor: theme.palette.background.default,
padding: theme.spacing(1, 2),
color: primaryText,
},
primaryColor: {
backgroundColor: primaryColor,
padding: theme.spacing(1, 2),
color: theme.palette.common.white,
},
};

return (
<div style={{ width: 300 }}>
<Typography style={styles.primaryColor}>{`Primary color ${primaryColor}`}</Typography>
<Typography style={styles.primaryText}>{`Primary text ${primaryText}`}</Typography>
</div>
);
}

(WithTheme as any).propTypes = {
theme: PropTypes.object.isRequired,
};

export default withTheme(WithTheme); // Let's get the theme as a property
4 changes: 1 addition & 3 deletions docs/src/pages/customization/typography/FontSizeTheme.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@ const theme = createMuiTheme({
},
});

function FontSizeTheme() {
export default function FontSizeTheme() {
return (
<ThemeProvider theme={theme}>
<Typography>body1</Typography>
</ThemeProvider>
);
}

export default FontSizeTheme;
19 changes: 19 additions & 0 deletions docs/src/pages/customization/typography/FontSizeTheme.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React from 'react';
import { createMuiTheme } from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import Typography from '@material-ui/core/Typography';

const theme = createMuiTheme({
typography: {
// Tell Material-UI what the font-size on the html element is.
htmlFontSize: 10,
},
});

export default function FontSizeTheme() {
return (
<ThemeProvider theme={theme}>
<Typography>body1</Typography>
</ThemeProvider>
);
}
19 changes: 19 additions & 0 deletions docs/src/pages/guides/composition/Composition.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React from 'react';
import IconButton from '@material-ui/core/IconButton';
import Icon, { IconProps } from '@material-ui/core/Icon';

const WrappedIcon = (props: IconProps) => <Icon {...props} />;
WrappedIcon.muiName = 'Icon';

export default function Composition() {
return (
<div>
<IconButton>
<Icon>alarm</Icon>
</IconButton>
<IconButton>
<WrappedIcon>alarm</WrappedIcon>
</IconButton>
</div>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/guides/right-to-left/Direction.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const theme = createMuiTheme({
direction: 'rtl', // Both here and <body dir="rtl">
});

function Direction() {
export default function Direction() {
return (
<ThemeProvider theme={theme}>
<div dir="rtl">
Expand All @@ -17,5 +17,3 @@ function Direction() {
</ThemeProvider>
);
}

export default Direction;
19 changes: 19 additions & 0 deletions docs/src/pages/guides/right-to-left/Direction.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React from 'react';
import { createMuiTheme } from '@material-ui/core/styles';
import { ThemeProvider } from '@material-ui/styles';
import TextField from '@material-ui/core/TextField';

const theme = createMuiTheme({
direction: 'rtl', // Both here and <body dir="rtl">
});

export default function Direction() {
return (
<ThemeProvider theme={theme}>
<div dir="rtl">
<TextField placeholder="Name" />
<input type="text" placeholder="Name" />
</div>
</ThemeProvider>
);
}
28 changes: 28 additions & 0 deletions docs/src/pages/styles/advanced/GlobalClassName.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import React from 'react';
import styled from 'styled-components';
import { TextField, NoSsr } from '@material-ui/core';

const StyledTextField = styled(TextField)`
label.Mui-focused {
color: green;
}
.MuiOutlinedInput-root {
fieldset {
border-color: red;
}
&:hover fieldset {
border-color: yellow;
}
&.Mui-focused fieldset {
border-color: green;
}
}
`;

export default function GlobalClassName() {
return (
<NoSsr>
<StyledTextField label="Deterministic" variant="outlined" id="deterministic-outlined-input" />
</NoSsr>
);
}
Loading