import { ArvadosTheme } from 'common/custom-theme';
import { RootState } from 'store/store';
import { CopyToClipboardSnackbar } from 'components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar';
+import { TCheckedList } from 'components/data-table/data-table';
type CssRules = 'root' | 'button';
});
type MultiselectToolbarAction = {
- fn: (classes, i) => ReactElement;
+ fn: (checkedList) => ReactElement;
};
-export type MultiselectToolbarActions = {
+export type MultiselectToolbarProps = {
buttons: Array<MultiselectToolbarAction>;
+ checkedList: TCheckedList;
};
export const defaultActions: Array<MultiselectToolbarAction> = [
{
- fn: (classes, i) => MSToolbarCopyButton(classes, i),
+ fn: (checkedList) => MSToolbarCopyButton(checkedList),
},
];
-const MSToolbarCopyButton = (classes, i) => {
- return (
- <Button key={i} className={classes.button}>
- <CopyToClipboardSnackbar value='foo' children={<div>Copy</div>} />
- </Button>
- );
+const MSToolbarCopyButton = (checkedList) => {
+ let stringifiedSelectedList: string = '';
+ for (const [key, value] of Object.entries(checkedList)) {
+ if (value === true) {
+ stringifiedSelectedList += key + '\n';
+ }
+ }
+ return <CopyToClipboardSnackbar value={stringifiedSelectedList} children={<div>Copy</div>} />;
};
-type MultiselectToolbarProps = MultiselectToolbarActions & WithStyles<CssRules>;
-
export const MultiselectToolbar = connect(mapStateToProps)(
- withStyles(styles)((props: MultiselectToolbarProps) => {
- const { classes, buttons } = props;
- return <Toolbar className={classes.root}>{buttons.map((btn, i) => btn.fn(classes, i))}</Toolbar>;
+ withStyles(styles)((props: MultiselectToolbarProps & WithStyles<CssRules>) => {
+ const { classes, buttons, checkedList } = props;
+ return (
+ <Toolbar className={classes.root}>
+ {buttons.map((btn, i) => (
+ <Button key={i} className={classes.button}>
+ {btn.fn(checkedList)}
+ </Button>
+ ))}
+ </Toolbar>
+ );
})
);
function mapStateToProps(state: RootState) {
return {
- // state: state,
+ checkedList: state.multiselect.checkedList,
};
}