Skip to content

Commit 1efee03

Browse files
committed
add reminders to mentionable notes
1 parent 1de10bf commit 1efee03

File tree

3 files changed

+55
-2
lines changed

3 files changed

+55
-2
lines changed

src/components/Note/Note.stories.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export const NoteWithMentions = () => {
155155
onChange={action('onChange')}
156156
onDelete={action('onDelete')}
157157
onEdit={action('onEdit')}
158+
onSetReminder={action('onSetReminder')}
158159
onSave={action('onSave')}
159160
onUndelete={action('onUndelete')}
160161
rows={number('rows', Note.defaultProps.rows)}

src/components/Note/NoteHeader.tsx

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import classnames from 'classnames';
22
import fecha from 'fecha';
3-
import React, { FC } from 'react';
3+
import React, { FC, useState } from 'react';
44
import Badge from '../Badge/Badge';
55
import Button from '../Button/Button';
6+
import ButtonDropdown from '../Button/ButtonDropdown'
7+
import DropdownItem from '../Dropdown/DropdownItem';
8+
import DropdownMenu from '../Dropdown/DropdownMenu';
9+
import DropdownToggle from '../Dropdown/DropdownToggle';
610
import CardHeader from '../Card/CardHeader';
711
import CardTitle from '../Card/CardTitle';
812
import { Note } from './Note.types';
@@ -20,15 +24,17 @@ type NoteHeaderProps = {
2024
showTimezone?: boolean;
2125
onDelete?: (note: Omit<Note, 'text'>) => void;
2226
onEdit?: (note: Omit<Note, 'text'>) => void;
27+
onSetReminder?: (time: number) => void;
2328
};
2429

2530
const defaultProps = {
2631
dateFormat: 'ddd MMM DD YYYY HH:mm:ss',
2732
};
2833

2934
const NoteHeader: FC<NoteHeaderProps> = ({ dateFormat = defaultProps.dateFormat, ...props }) => {
30-
const { note, onDelete, onEdit, showTimezone } = props;
35+
const { note, onDelete, onEdit, showTimezone, onSetReminder } = props;
3136
const { date, edited, from, title } = note;
37+
const [isOpen, setIsOpen] = useState(false);
3238

3339
const headerClassNames = classnames(
3440
'd-flex',
@@ -91,6 +97,49 @@ const NoteHeader: FC<NoteHeaderProps> = ({ dateFormat = defaultProps.dateFormat,
9197
Delete
9298
</Button>
9399
) : null}
100+
{ onSetReminder ? (
101+
<div className="ms-3">
102+
<ButtonDropdown isOpen={isOpen} toggle={() => setIsOpen(!isOpen)}>
103+
<DropdownToggle caret>Remind Me</DropdownToggle>
104+
<DropdownMenu>
105+
<DropdownItem
106+
onClick={() => onSetReminder(
107+
new Date().setMinutes(
108+
new Date().getMinutes() + 20
109+
)
110+
)}
111+
>
112+
In 20 minutes</DropdownItem>
113+
<DropdownItem
114+
onClick={() => onSetReminder(
115+
new Date().setMinutes(
116+
new Date().getMinutes() + 60
117+
)
118+
)}
119+
>
120+
In 1 hour</DropdownItem>
121+
<DropdownItem
122+
onClick={() => onSetReminder(
123+
new Date().setMinutes(
124+
new Date().getMinutes() + 1440
125+
)
126+
)}
127+
>
128+
Tomorrow
129+
</DropdownItem>
130+
<DropdownItem
131+
onClick={() => onSetReminder(
132+
new Date().setMinutes(
133+
new Date().getMinutes() + 10080
134+
)
135+
)}
136+
>
137+
Next Week
138+
</DropdownItem>
139+
</DropdownMenu>
140+
</ButtonDropdown>
141+
</div>
142+
) : null}
94143
</div>
95144
</CardHeader>
96145
) : (

src/components/Note/NoteMentions.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ type NoteMentionsProps = {
2525
onDelete?: (note: Omit<NoteType, 'text'>) => void;
2626
onEdit?: (note: Omit<NoteType, 'text'>) => void;
2727
onSave?: (note: NoteType) => void;
28+
onSetReminder?: (time: number) => void;
2829
onUndelete?: (note: NoteType) => void;
2930
rows?: number;
3031
saving?: boolean;
@@ -59,6 +60,7 @@ const NoteMentions: FC<NoteMentionsProps> = ({
5960
onDelete,
6061
onEdit,
6162
onSave,
63+
onSetReminder,
6264
onUndelete,
6365
}) => {
6466
const { deleted, editing, text } = note;
@@ -106,6 +108,7 @@ const NoteMentions: FC<NoteMentionsProps> = ({
106108
showTimezone={showTimezone}
107109
onDelete={onDelete}
108110
onEdit={onEdit}
111+
onSetReminder={onSetReminder}
109112
/>
110113
<CardBody>
111114
<CardText style={{ whiteSpace: 'pre-wrap' }}>

0 commit comments

Comments
 (0)