Skip to content

Commit dd37af9

Browse files
committed
more keyboard shortcuts
1 parent 43fe36d commit dd37af9

File tree

4 files changed

+72
-12
lines changed

4 files changed

+72
-12
lines changed

src/views/Modals/Inputs/DateModal.tsx

+15-2
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,16 @@ export class DateModal extends React.Component<DateModalProps, DateModalState> {
3535
}
3636

3737
private onSave = () => {
38-
this.setState({ isOpen: false })
38+
this.setState({
39+
isOpen: false,
40+
})
3941
this.props.onClose(this.state.date)
4042
}
4143

4244
private onCancel = () => {
43-
this.setState({ isOpen: false })
45+
this.setState({
46+
isOpen: false,
47+
})
4448
this.props.onClose(null)
4549
}
4650

@@ -50,6 +54,14 @@ export class DateModal extends React.Component<DateModalProps, DateModalState> {
5054
})
5155
}
5256

57+
private onDateKeyDown = (e: React.KeyboardEvent<HTMLInputElement>): void => {
58+
if (e.key === 'Enter') {
59+
this.onSave()
60+
e.preventDefault()
61+
e.stopPropagation()
62+
}
63+
}
64+
5365
public render(): React.ReactNode {
5466
const { title } = this.props
5567
const { isOpen } = this.state
@@ -67,6 +79,7 @@ export class DateModal extends React.Component<DateModalProps, DateModalState> {
6779
type='datetime-local'
6880
value={date}
6981
onChange={this.onDateChange}
82+
onKeyDown={this.onDateKeyDown}
7083
ref={this.inputRef}
7184
/>
7285
<Box

src/views/Modals/Inputs/PasswordChangeModal.tsx

+38-9
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,16 @@ export class PassowrdChangeModal extends React.Component<
4747
}
4848

4949
onSave = () => {
50-
this.setState({ isOpen: false })
50+
this.setState({
51+
isOpen: false,
52+
})
5153
this.props.onClose(this.state.password)
5254
}
5355

5456
onCancel = () => {
55-
this.setState({ isOpen: false })
57+
this.setState({
58+
isOpen: false,
59+
})
5660
this.props.onClose(null)
5761
}
5862

@@ -69,25 +73,48 @@ export class PassowrdChangeModal extends React.Component<
6973
return
7074
}
7175

72-
if (password !== confirmPassword) {
73-
this.setState({ passwordError: 'Passwords do not match' })
76+
if (password === "") {
77+
this.setState({
78+
passwordError: 'New password is required',
79+
})
80+
}
81+
else if (password !== confirmPassword) {
82+
this.setState({
83+
passwordError: 'Passwords do not match',
84+
})
7485
} else if (password.length < 8) {
75-
this.setState({ passwordError: 'Password must be at least 8 characters' })
86+
this.setState({
87+
passwordError: 'Password must be at least 8 characters',
88+
})
7689
} else if (password.length > 50) {
7790
this.setState({
7891
passwordError: 'Password must be less than 50 characters',
7992
})
8093
} else {
81-
this.setState({ passwordError: null })
94+
this.setState({
95+
passwordError: null,
96+
})
8297
}
8398
}
8499

85100
private onPasswordChange = (e: ChangeEvent<HTMLInputElement>) => {
86-
this.setState({ password: e.target.value })
101+
this.setState({
102+
password: e.target.value,
103+
})
87104
}
88105

89106
private onConfirmPasswordChange = (e: ChangeEvent<HTMLInputElement>) => {
90-
this.setState({ confirmPassword: e.target.value })
107+
this.setState({
108+
confirmPassword: e.target.value,
109+
})
110+
}
111+
112+
private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
113+
if (e.key === 'Enter' && !this.state.passwordError) {
114+
this.onSave()
115+
e.preventDefault()
116+
e.stopPropagation()
117+
}
91118
}
92119

93120
public render(): React.ReactNode {
@@ -122,6 +149,7 @@ export class PassowrdChangeModal extends React.Component<
122149
type='password'
123150
value={password}
124151
ref={this.inputRef}
152+
onKeyDown={this.onKeyDown}
125153
onChange={this.onPasswordChange}
126154
/>
127155
</FormControl>
@@ -133,6 +161,7 @@ export class PassowrdChangeModal extends React.Component<
133161
fullWidth
134162
type='password'
135163
value={confirmPassword}
164+
onKeyDown={this.onKeyDown}
136165
onChange={this.onConfirmPasswordChange}
137166
/>
138167

@@ -144,7 +173,7 @@ export class PassowrdChangeModal extends React.Component<
144173
mt={1}
145174
>
146175
<Button
147-
disabled={passwordError != null}
176+
disabled={passwordError != null || password === ''}
148177
onClick={this.onSave}
149178
fullWidth
150179
sx={{ mr: 1 }}

src/views/Tasks/TaskEdit.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,12 @@ export class TaskEdit extends React.Component<TaskEditProps, TaskEditState> {
286286
this.setState({ title: e.target.value })
287287
}
288288

289+
private onTitleKeyDown = (e: React.KeyboardEvent) => {
290+
if (e.key === 'Enter') {
291+
this.HandleSaveTask()
292+
}
293+
}
294+
289295
private onDueDateChange = (e: ChangeEvent<HTMLInputElement>) => {
290296
this.setState({
291297
nextDueDate: e.target.checked ? new Date() : null,
@@ -397,6 +403,7 @@ export class TaskEdit extends React.Component<TaskEditProps, TaskEditState> {
397403
ref={this.titleInputRef}
398404
value={title}
399405
onChange={this.onTitleChange}
406+
onKeyDown={this.onTitleKeyDown}
400407
/>
401408
</FormControl>
402409
</Box>

src/views/Tasks/TasksOverview.tsx

+12-1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ export class TasksOverview extends React.Component<
9494
moveFocusToJoyInput(this.searchInputRef)
9595
event.preventDefault()
9696
}
97+
98+
if (event.key === '+' && document.activeElement?.tagName.toLowerCase() !== 'input') {
99+
this.onAddTask()
100+
event.preventDefault()
101+
event.stopPropagation()
102+
}
97103
}
98104

99105
private handleChangeDueDate = async (date: Date | null) => {
@@ -178,6 +184,11 @@ export class TasksOverview extends React.Component<
178184
navigate(NavigationPaths.TaskHistory(task.id))
179185
}
180186

187+
private onAddTask = () => {
188+
const { navigate } = this.props
189+
navigate(NavigationPaths.TaskCreate)
190+
}
191+
181192
private onDeleteTask = async (task: Task) => {
182193
this.taskBeingDeleted = task
183194
this.confirmationModalRef.current?.open()
@@ -257,7 +268,7 @@ export class TasksOverview extends React.Component<
257268
gap={2}
258269
>
259270
<Button
260-
onClick={() => navigate(NavigationPaths.TaskCreate)}
271+
onClick={this.onAddTask}
261272
>
262273
New Task
263274
</Button>

0 commit comments

Comments
 (0)