label: string;
}
-interface BreadcrumbsDataProps {
+interface BreadcrumbsProps {
items: Breadcrumb[];
-}
-
-interface BreadcrumbsActionProps {
onClick: (breadcrumb: Breadcrumb) => any;
}
-type BreadcrumbsProps = BreadcrumbsDataProps & BreadcrumbsActionProps & WithStyles<CssRules>;
-
-class Breadcrumbs extends React.Component<BreadcrumbsProps> {
+class Breadcrumbs extends React.Component<BreadcrumbsProps & WithStyles<CssRules>> {
render() {
const { classes, onClick } = this.props;
// SPDX-License-Identifier: AGPL-3.0
import * as React from 'react';
-import { Button, Grid, StyleRulesCallback, WithStyles, Menu, MenuItem, IconButton } from '@material-ui/core';
+import { Menu, IconButton } from '@material-ui/core';
import { PopoverOrigin } from '@material-ui/core/Popover';
-interface DropdownMenuDataProps {
+interface DropdownMenuProps {
id: string;
icon: React.ComponentType;
}
-
-type DropdownMenuProps = DropdownMenuDataProps;
-
class DropdownMenu extends React.Component<DropdownMenuProps> {
state = {
// SPDX-License-Identifier: AGPL-3.0
import * as React from "react";
-import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, Paper, Input, StyleRulesCallback, withStyles, WithStyles, Button, MenuItem } from "@material-ui/core";
+import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, StyleRulesCallback, withStyles, WithStyles, Button, MenuItem } from "@material-ui/core";
import NotificationsIcon from "@material-ui/icons/Notifications";
import PersonIcon from "@material-ui/icons/Person";
import HelpIcon from "@material-ui/icons/Help";
value: ""
};
- timeout: NodeJS.Timer;
+ timeout: number;
render() {
const { classes } = this.props;
handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
clearTimeout(this.timeout);
this.setState({ value: event.target.value });
- this.timeout = setTimeout(
+ this.timeout = window.setTimeout(
() => this.props.onSearch(this.state.value),
this.props.debounce || DEFAULT_SEARCH_DEBOUNCE
);
type CssRules = 'container' | 'input' | 'button';
const styles: StyleRulesCallback<CssRules> = theme => {
- const { unit } = theme.spacing;
return {
container: {
position: 'relative',
},
input: {
border: 'none',
- borderRadius: unit / 4,
+ borderRadius: theme.spacing.unit / 4,
boxSizing: 'border-box',
- padding: unit,
- paddingRight: unit * 4,
+ padding: theme.spacing.unit,
+ paddingRight: theme.spacing.unit * 4,
width: '100%',
},
button: {
position: 'absolute',
- top: unit / 2,
- right: unit / 2,
- width: unit * 3,
- height: unit * 3
+ top: theme.spacing.unit / 2,
+ right: theme.spacing.unit / 2,
+ width: theme.spacing.unit * 3,
+ height: theme.spacing.unit * 3
}
};
};