Skip to content

Commit 5dd6588

Browse files
martinmckennaiamhosseindhv
authored andcommitted
Improve type def file (#37)
1 parent 9ab3ed4 commit 5dd6588

File tree

2 files changed

+3948
-3
lines changed

2 files changed

+3948
-3
lines changed

index.d.ts

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
import * as React from 'react';
22
import { TransitionActions } from 'react-transition-group/Transition';
33
import { SvgIconProps } from '@material-ui/core/SvgIcon';
4-
import { SnackbarProps } from '@material-ui/core/Snackbar';
4+
import { SnackbarProps, SnackbarClassKey } from '@material-ui/core/Snackbar';
55

66
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
77

88
export type VariantType = 'default' | 'error' | 'success' | 'warning' | 'info';
99

10-
export interface OptionsObject extends Omit<SnackbarProps, 'open'|'message'> {
10+
export interface OptionsObject extends Omit<SnackbarProps, 'open' | 'message'> {
1111
variant?: VariantType;
1212
onClickAction?: Function;
1313
}
1414

15+
type NotistackClassKey = 'variantSuccess'
16+
| 'variantError'
17+
| 'variantInfo'
18+
| 'variantWarning';
19+
20+
// class keys for both MUI and notistack
21+
export type CombinedClassKey = NotistackClassKey | SnackbarClassKey;
22+
1523
export interface InjectedNotistackProps {
1624
onPresentSnackbar: (variant: VariantType, message: string) => void;
1725
enqueueSnackbar: (message: string, options?: OptionsObject) => void;
@@ -20,8 +28,12 @@ export interface InjectedNotistackProps {
2028
export function withSnackbar<P extends InjectedNotistackProps>(component: React.ComponentType<P>):
2129
React.ComponentClass<Omit<P, keyof InjectedNotistackProps>> & { WrappedComponent: React.ComponentType<P> };
2230

31+
export type ClassNameMap<ClassKey extends string = string> = Record<ClassKey, string>;
2332

24-
export interface SnackbarProviderProps extends Omit<SnackbarProps, 'open'|'message'> {
33+
/** all MUI props, including class keys for notistack and MUI with additional notistack props */
34+
export interface SnackbarProviderProps
35+
extends Omit<SnackbarProps, 'open' | 'message' | 'classes'> {
36+
classes?: Partial<ClassNameMap<CombinedClassKey>>;
2537
maxSnack: number;
2638
iconVariant?: React.ComponentType<SvgIconProps>;
2739
hideIconVariant?: boolean;

0 commit comments

Comments
 (0)