-
Notifications
You must be signed in to change notification settings - Fork 295
/
NotificationActions.tsx
81 lines (76 loc) · 2.04 KB
/
NotificationActions.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// @flow
import React from 'react';
import classnames from 'classnames';
import { map } from 'lodash';
import { Button } from 'react-polymorph/lib/components/Button';
import { Link } from 'react-polymorph/lib/components/Link';
import { observer } from 'mobx-react';
import styles from './NotificationActions.scss';
export type NotificationActionItems = Array<NotificationActionItem>;
export type NotificationActionItem = {
className?: ?string,
label: string | Node,
primary?: boolean,
disabled?: boolean,
onClick?: Function,
onDisabled?: Function,
isLink?: boolean,
hasIconAfter?: boolean,
hasIconBefore?: boolean,
autoFocus?: boolean,
};
type Props = {
actions: NotificationActionItems,
};
const NotificationActions = observer(({ actions }: Props) => {
const componentStyles = classnames([styles.component]);
return (
<div className={componentStyles}>
{map(
actions,
(
{
className,
label,
primary,
disabled,
onClick,
isLink,
hasIconAfter,
hasIconBefore,
autoFocus,
},
key
) => {
const buttonClasses = classnames([
styles.button,
className,
primary ? 'primary' : 'flat',
primary ? styles.primaryButton : styles.secondaryButton,
]);
const isAutoFocus = (primary && autoFocus) !== false || !!autoFocus;
return !isLink ? (
<Button
key={key}
className={buttonClasses}
label={label}
onClick={onClick}
disabled={disabled}
autoFocus={isAutoFocus}
/>
) : (
<Link
key={key}
className={className}
onClick={onClick}
label={label}
hasIconAfter={hasIconAfter}
hasIconBefore={hasIconBefore}
/>
);
}
)}
</div>
);
});
export default NotificationActions;