@smollweide/material-ui-speed-dial
Version:
Components, that implements material design speed dial for material-ui v1
270 lines (251 loc) • 8.89 kB
Flow
// @flow
/* eslint flowtype/type-id-match: 0*/
export type StylesType = {
[key: string]: {
[key: string]: string | number | Object,
},
};
export type ClassesType = { [key: string]: string };
type ThemeValueType = string | number;
export type ThemeType = {
[key: string]: ThemeValueType,
direction: 'rtl' | 'ltr',
spacing: {
[key: string]: ThemeValueType,
unit: number,
},
transitions: {
[key: string]: ThemeValueType,
easing: {
sharp: ThemeValueType,
easeOut: ThemeValueType,
easeOut: ThemeValueType,
},
duration: {
leavingScreen: ThemeValueType,
enteringScreen: ThemeValueType,
shortest: ThemeValueType,
},
create: (Array<string> | string, ?Object) => ThemeValueType,
},
mixins: {
toolbar: {
[key: string]: ThemeValueType,
},
},
zIndex: {
[key: string]: ThemeValueType,
},
palette: {
primary: {
[key: string]: ThemeValueType,
},
common: {
[key: string]: ThemeValueType,
},
text: {
[key: string]: ThemeValueType,
},
background: {
[key: string]: ThemeValueType,
},
grey: {
[key: string]: ThemeValueType,
},
[key: string]: ThemeValueType,
},
breakpoints: {
up: (value: string) => ThemeValueType,
},
typography: {
[key: string]: {
[key: string]: ThemeValueType,
},
pxToRem: (value: number) => ThemeValueType,
},
shadows: {
[key: string | number]: string,
},
};
export type PresetRawType = {|
root: { [key: string]: number | string },
button: { [key: string]: number | string },
buttonOuterRim: { [key: string]: number | string },
list: { [key: string]: number | string },
item: { [key: string]: number | string },
firstItem: { [key: string]: number | string },
avatar: { [key: string]: number | string },
label: { [key: string]: number | string },
backdrop: { [key: string]: number | string },
|};
export type PresetType = {|
root: string,
button: string,
buttonOuterRim: string,
list: string,
item: string,
firstItem: string,
avatar: string,
label: string,
backdrop: string,
|};
export type StylesCreatorType = (...args: Array<*>) => StylesType | PresetRawType;
export type StylesCreatorOrObjectType = StylesCreatorType | StylesType;
export type StateEnumType = 'closed' | 'opening' | 'opened' | 'closing';
export type SpeedDialStateType = {|
state: StateEnumType,
|};
export type RenderPropsType = {|
state: StateEnumType,
className: string,
preset: ClassesType,
handleClose: () => void,
|};
export type RenderButtonPropsType = {|
key?: string,
state: StateEnumType,
className: string,
onClick: () => void,
|};
export type RenderButtonIconPropsType = {|
className: string,
state: StateEnumType,
|};
export type RenderOpenedButtonPropsType = {|
key: string,
className: string,
onClick: () => void,
state: StateEnumType,
|};
export type RenderOpenedButtonIconPropsType = {|
className: string,
state: StateEnumType,
|};
export type RenderOuterRimButtonPropsType = {|
className: string,
state: StateEnumType,
|};
export type RenderOuterRimButtonIconPropsType = {|
className: string,
state: StateEnumType,
|};
export type RenderListPropsType = {|
children: React$Node,
className: string,
state: StateEnumType,
|};
export type RenderBackdropPropsType = {|
className: string,
state: StateEnumType,
onClick: (event: SyntheticMouseEvent<HTMLDivElement>) => void,
|};
export type RenderAvatarPropsType = {|
className: string,
state: StateEnumType,
|};
export type RenderLabelPropsType = {|
className: string,
state: StateEnumType,
|};
export type SpeedDialLabelPropsType = {
className: string,
text: string,
state: StateEnumType,
};
export type SpeedDialBackdropPropsType = {
className: string,
state: StateEnumType,
onClick: (event: SyntheticMouseEvent<HTMLDivElement>) => void,
};
export type SpeedDialItemPropsType = {
className: string,
preset: ClassesType,
state: StateEnumType,
renderAvatar?: (props: RenderAvatarPropsType) => React$Element<*>,
children: (props: RenderLabelPropsType) => React$Element<*>,
onClick?: (event: SyntheticMouseEvent<HTMLDivElement>) => void,
};
export type SpeedDialPropsType = {
children: (props: RenderPropsType) => React$Node,
renderButton: (props: RenderButtonPropsType, propsIcon: RenderButtonIconPropsType) => React$Element<*>,
renderOpenedButton?: (
props: RenderOpenedButtonPropsType,
propsIcon: RenderOpenedButtonIconPropsType
) => React$Element<*>,
renderOuterRimButton?: (
props: RenderOuterRimButtonPropsType,
propsIcon: RenderOuterRimButtonIconPropsType
) => React$Element<*>,
renderList: (props: RenderListPropsType) => React$Element<*>,
renderBackdrop?: (props: RenderBackdropPropsType) => React$Element<*>,
preset: ClassesType,
isOpen?: boolean,
className?: string,
animationDelay?: number,
};
// mjs types
declare module '@smollweide/material-ui-speed-dial/dist/mjs/components/SpeedDial/SpeedDial' {
declare export default class SpeedDial extends React$Component<SpeedDialPropsType, SpeedDialStateType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/mjs/components/SpeedDialItem/SpeedDialItem' {
declare export default class SpeedDialItem extends React$Component<SpeedDialItemPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/mjs/components/SpeedDialBackdrop/SpeedDialBackdrop' {
declare export default class SpeedDialBackdrop extends React$Component<SpeedDialBackdropPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/mjs/components/SpeedDialLabel/SpeedDialLabel' {
declare export default class SpeedDialLabel extends React$Component<SpeedDialLabelPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/mjs/utils/combineStyles' {
declare export default function combineStyles(
...stylesCreators: Array<StylesCreatorOrObjectType>
): (...args: Array<*>) => StylesType;
}
// js types
declare module '@smollweide/material-ui-speed-dial/dist/components/SpeedDial/SpeedDial' {
declare export default class SpeedDial extends React$Component<SpeedDialPropsType, SpeedDialStateType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/components/SpeedDialItem/SpeedDialItem' {
declare export default class SpeedDialItem extends React$Component<SpeedDialItemPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/components/SpeedDialBackdrop/SpeedDialBackdrop' {
declare export default class SpeedDialBackdrop extends React$Component<SpeedDialBackdropPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/components/SpeedDialLabel/SpeedDialLabel' {
declare export default class SpeedDialLabel extends React$Component<SpeedDialLabelPropsType> {}
}
declare module '@smollweide/material-ui-speed-dial/dist/utils/combineStyles' {
declare export default function combineStyles(
...stylesCreators: Array<StylesCreatorOrObjectType>
): (...args: Array<*>) => StylesType;
}
declare module '@smollweide/material-ui-speed-dial' {
declare export type $StylesType = StylesType;
declare export type $StylesCreatorType = StylesCreatorType;
declare export type $StylesCreatorOrObjectType = StylesCreatorOrObjectType;
declare export type $ClassesType = ClassesType;
declare export type $ThemeType = ThemeType;
declare export type $PresetRawType = PresetRawType;
declare export type $PresetType = PresetType;
declare export type $StateEnumType = StateEnumType;
declare export type $SpeedDialStateType = SpeedDialStateType;
declare export type $RenderPropsType = RenderPropsType;
declare export type $RenderButtonPropsType = RenderButtonPropsType;
declare export type $RenderButtonIconPropsType = RenderButtonIconPropsType;
declare export type $RenderOpenedButtonPropsType = RenderOpenedButtonPropsType;
declare export type $RenderOpenedButtonIconPropsType = RenderOpenedButtonIconPropsType;
declare export type $RenderOuterRimButtonPropsType = RenderOuterRimButtonPropsType;
declare export type $RenderOuterRimButtonIconPropsType = RenderOuterRimButtonIconPropsType;
declare export type $RenderListPropsType = RenderListPropsType;
declare export type $RenderBackdropPropsType = RenderBackdropPropsType;
declare export type $RenderAvatarPropsType = RenderAvatarPropsType;
declare export type $RenderLabelPropsType = RenderLabelPropsType;
declare export type $SpeedDialLabelPropsType = SpeedDialLabelPropsType;
declare export type $SpeedDialBackdropPropsType = SpeedDialBackdropPropsType;
declare export type $SpeedDialItemPropsType = SpeedDialItemPropsType;
declare export type $SpeedDialPropsType = SpeedDialPropsType;
declare export default class SpeedDial extends React$Component<$SpeedDialPropsType, $SpeedDialStateType> {}
declare export class SpeedDialItem extends React$Component<$SpeedDialItemPropsType> {}
declare export class SpeedDialBackdrop extends React$Component<$SpeedDialBackdropPropsType> {}
declare export class SpeedDialLabel extends React$Component<$SpeedDialLabelPropsType> {}
}