Skip to content

Commit 2eaaa50

Browse files
committed
Fix bug where classes prop was not applied to material-io Snackbar component.
1 parent f0611c7 commit 2eaaa50

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

src/SnackbarItem/SnackbarItem.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
capitalise,
1010
defaultAnchorOrigin,
1111
getTransitionDirection,
12+
muiClasses,
1213
TransitionComponent,
1314
variantIcon,
1415
} from './SnackbarItem.util';
@@ -66,13 +67,14 @@ class SnackbarItem extends Component {
6667
{...other}
6768
{...singleSnackProps}
6869
open={snack.open}
70+
classes={muiClasses(classes)}
6971
onClose={this.handleClose(key)}
7072
onExited={() => onExited(key)}
7173
>
7274
<SnackbarContent
7375
variant="subtitle1"
7476
className={classNames(
75-
classes.root,
77+
classes.base,
7678
classes[`variant${capitalise(variant)}`],
7779
className,
7880
)}

src/SnackbarItem/SnackbarItem.styles.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
} from '../utils/constants';
77

88
const styles = theme => ({
9-
root: {
9+
root: {},
10+
base: {
1011
fontSize: '0.875rem',
1112
lineHeight: '1.46429em',
1213
fontWeight: theme.typography.fontWeightRegular,

src/SnackbarItem/SnackbarItem.util.js

+35-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const InfoIcon = props => (
3636
</SvgIcon>
3737
);
3838

39+
const TransitionComponent = props => <Slide {...props} />;
40+
3941
const variantIcon = {
4042
success: <CheckIcon />,
4143
warning: <WarningIcon />,
@@ -55,21 +57,52 @@ const defaultAnchorOrigin = {
5557
horizontal: 'left',
5658
};
5759

60+
const notistackClasses = [
61+
'base',
62+
'variantSuccess',
63+
'variantError',
64+
'variantInfo',
65+
'variantWarning',
66+
'message',
67+
'iconVariant',
68+
];
69+
70+
/**
71+
* returns transition direction according the the given anchor origin
72+
* @param {object} anchorOrigin
73+
*/
5874
const getTransitionDirection = (anchorOrigin = defaultAnchorOrigin) => {
5975
if (anchorOrigin.horizontal !== 'center') {
6076
return DIRECTION[anchorOrigin.horizontal];
6177
}
6278
return DIRECTION[anchorOrigin.vertical];
6379
};
6480

65-
const capitalise = string => string.charAt(0).toUpperCase() + string.slice(1);
81+
/**
82+
* Capitalises a piece of string
83+
* @param {string} text
84+
*/
85+
const capitalise = text => text.charAt(0).toUpperCase() + text.slice(1);
6686

67-
const TransitionComponent = props => <Slide {...props} />;
87+
/**
88+
* Filteres classes object and returns the keys that are allowed
89+
* in material-ui snackbar classes prop
90+
* @param {object} classes
91+
*/
92+
const muiClasses = classes => (
93+
Object.keys(classes)
94+
.filter(key => !notistackClasses.includes(key))
95+
.reduce((obj, key) => ({
96+
...obj,
97+
[key]: classes[key],
98+
}), {})
99+
);
68100

69101
export {
70102
capitalise,
71103
defaultAnchorOrigin,
72104
getTransitionDirection,
105+
muiClasses,
73106
TransitionComponent,
74107
variantIcon,
75108
};

0 commit comments

Comments
 (0)