Skip to content

Commit bb5161c

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

4 files changed

Lines changed: 60 additions & 3 deletions

File tree

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
nodejs lts-gallium
1+
nodejs 16.14.2
22
yarn 1.22.19

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: 55 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?: (note: Omit<Note, 'text'>, 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,53 @@ 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+
note,
108+
new Date().setMinutes(
109+
new Date().getMinutes() + 20
110+
)
111+
)}
112+
>
113+
In 20 minutes</DropdownItem>
114+
<DropdownItem
115+
onClick={() => onSetReminder(
116+
note,
117+
new Date().setMinutes(
118+
new Date().getMinutes() + 60
119+
)
120+
)}
121+
>
122+
In 1 hour</DropdownItem>
123+
<DropdownItem
124+
onClick={() => onSetReminder(
125+
note,
126+
new Date().setMinutes(
127+
new Date().getMinutes() + 1440
128+
)
129+
)}
130+
>
131+
Tomorrow
132+
</DropdownItem>
133+
<DropdownItem
134+
onClick={() => onSetReminder(
135+
note,
136+
new Date().setMinutes(
137+
new Date().getMinutes() + 10080
138+
)
139+
)}
140+
>
141+
Next Week
142+
</DropdownItem>
143+
</DropdownMenu>
144+
</ButtonDropdown>
145+
</div>
146+
) : null}
94147
</div>
95148
</CardHeader>
96149
) : (

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?: (note: Omit<NoteType, 'text'>, 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)