Skip to content

Commit 1c676f1

Browse files
committed
chore: Update dependencies, remove unused code, and optimize formatting, fix delee and edit functions
1 parent dce4fe0 commit 1c676f1

File tree

15 files changed

+196
-177
lines changed

15 files changed

+196
-177
lines changed

.prettierrc

Lines changed: 0 additions & 8 deletions
This file was deleted.
File renamed without changes.

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"eslint.enable": false,
33
"eslint.codeActionsOnSave.rules": null,
4-
"editor.defaultFormatter": "esbenp.prettier-vscode"
4+
"editor.defaultFormatter": "esbenp.prettier-vscode",
5+
"prettier.configPath": ".prettierrc.json"
56
}

src/components/Form/Form.tsx

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
import React, { useState } from 'react';
2-
import { connect } from 'react-redux';
32
import { useForm } from '@tanstack/react-form';
43
import dayjs from 'dayjs';
54
import { z } from 'zod';
65
import { zodValidator } from '@tanstack/zod-form-adapter';
76

8-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9-
import { faPlus, faUndo } from '@fortawesome/free-solid-svg-icons';
107
import ReactTooltip from 'react-tooltip';
11-
import { useNotes, usePageTypeContext } from '@notes/hooks';
12-
import { RootState, addNewTask, addNewNote, toggleModalOpen } from '@notes/redux';
13-
import { Button, TextInput, Textarea} from '@mantine/core';
8+
import { useNotes } from '@notes/hooks';
9+
import { Button, TextInput, Textarea } from '@mantine/core';
1410
import { StyledForm } from 'src/components/atoms';
15-
16-
11+
import { modals } from '@mantine/modals';
12+
import { Note } from '@notes/types';
1713

1814
type AddTaskComponentProps = {
1915
addNewNote: any;
@@ -23,22 +19,22 @@ type AddTaskComponentProps = {
2319
onAdd: any;
2420
};
2521

26-
export const AddTask = ({ row }) => {
22+
export const AddTask = ({ data, editNote }: { data: Note; editNote }) => {
2723
const { addNewNote } = useNotes();
2824

2925
const { Field, Subscribe, handleSubmit, state, useStore } = useForm({
30-
defaultValues: row
31-
? row
26+
defaultValues: data
27+
? data
3228
: {
3329
title: '',
3430
content: '',
35-
created: dayjs().format('YYYY-MM-DD-HH:mm'),
31+
created: dayjs().format('YYYY-MM-DD-HH:mm')
3632
},
3733
validatorAdapter: zodValidator,
3834
onSubmit: async ({ value }) => {
39-
addNewNote.mutate(value);
40-
close();
41-
},
35+
data ? editNote(value, data.id) : addNewNote.mutate(value);
36+
modals.closeAll();
37+
}
4238
});
4339
return (
4440
<StyledForm
@@ -52,17 +48,17 @@ export const AddTask = ({ row }) => {
5248
name="title"
5349
validators={{
5450
onBlur: z.string({
55-
required_error: 'Title is required',
51+
required_error: 'Title is required'
5652
}),
5753
onSubmit: z
5854
.string()
5955
.trim()
6056
.min(3, {
61-
message: 'Title must be at least 3 characters',
57+
message: 'Title must be at least 3 characters'
6258
})
6359
.max(50, {
64-
message: 'Title must be at most 50 characters',
65-
}),
60+
message: 'Title must be at most 50 characters'
61+
})
6662
}}
6763
children={({ state, handleChange, handleBlur }) => {
6864
return (
@@ -72,6 +68,8 @@ export const AddTask = ({ row }) => {
7268
defaultValue={state.value}
7369
onChange={e => handleChange(e.target.value)}
7470
onBlur={handleBlur}
71+
withAsterisk
72+
label="Note title"
7573
placeholder="Enter note title"
7674
error={state.meta?.errors[0]}
7775
/>
@@ -83,25 +81,29 @@ export const AddTask = ({ row }) => {
8381
name="content"
8482
validators={{
8583
onBlur: z.string({
86-
required_error: 'Content is required',
84+
required_error: 'Content is required'
8785
}),
8886
onSubmit: z
8987
.string()
9088
.trim()
9189
.min(10, {
92-
message: 'Title must be at least 10 characters',
90+
message: 'Title must be at least 10 characters'
9391
})
9492
.max(255, {
95-
message: 'Title must be at most 255 characters',
96-
}),
93+
message: 'Title must be at most 255 characters'
94+
})
9795
}}
9896
children={({ state, handleChange, handleBlur }) => {
9997
return (
10098
<Textarea
99+
autosize
101100
size="xl"
101+
minRows={4}
102+
label="Note details"
102103
defaultValue={state.value}
103104
onChange={e => handleChange(e.target.value)}
104105
onBlur={handleBlur}
106+
withAsterisk
105107
placeholder="Enter note content"
106108
error={state.meta?.errors[0]}
107109
/>
@@ -172,5 +174,3 @@ export const AddTask = ({ row }) => {
172174
</StyledForm>
173175
);
174176
};
175-
176-

src/components/button-link/add-new-button.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,11 @@ const StyledAddButton = styled(StyledButton)`
1414
border: 3px solid ${({ theme }) => theme.colors.primary};
1515
`;
1616

17-
export const AddNewButton = ({ onClick }) => {
17+
export const AddNewButton = ({ openModal }) => {
18+
const handleClick = () => openModal();
19+
1820
return (
19-
<StyledAddButton
20-
leftSection={<IconPlus />}
21-
variant="contained"
22-
onClick={onClick}
23-
aria-label="Add new "
24-
>
21+
<StyledAddButton leftSection={<IconPlus />} variant="contained" onClick={handleClick} aria-label="Add new ">
2522
Add
2623
</StyledAddButton>
2724
);

src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ export * from './Todo/TodoInput'
1212
export * from './Todo/TodoItem'
1313
export * from './Modal/Modal'
1414
export * from './table/table'
15+
export * from './table/modals'
1516

src/components/table/modals.tsx

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react';
2+
import { Title, Text } from '@mantine/core';
3+
import { modals } from '@mantine/modals';
4+
import { AddTask } from '../Form/Form';
5+
6+
type Note = {
7+
id: string;
8+
title: string;
9+
created: string;
10+
content: string;
11+
};
12+
13+
export const openModal = (data: Note, editNote) => {
14+
console.log('🚀 ~ data:', data);
15+
return modals.open({
16+
title: <Title size={'1.5rem'}>{data ? 'Edit: ' : 'Add:'}</Title>,
17+
centered: true,
18+
children: <AddTask data={data} editNote={editNote} />
19+
});
20+
};
21+
22+
export const openDeleteModal = (id: string, deleteFn) => {
23+
return modals.openConfirmModal({
24+
title: 'Delete note',
25+
centered: true,
26+
children: 'Are you sure you want to delete this note?',
27+
labels: {
28+
confirm: 'Delete',
29+
cancel: 'Cancel'
30+
},
31+
confirmProps: { color: 'red' },
32+
onConfirm: () => deleteFn(id)
33+
});
34+
};
35+
36+
export const openDetailsModal = (content: string) => {
37+
modals.open({
38+
title: (
39+
<Text fw={700} size="lg">
40+
Details:
41+
</Text>
42+
),
43+
centered: true,
44+
children: (
45+
<Text ta="center" size="xl">
46+
{content}
47+
</Text>
48+
)
49+
});
50+
};
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
.tableBody {
22
background-color: aliceblue;
33
}
4-
.tableHeaderCell {
5-
background-color: yellow;
6-
text-align: center ;
7-
}

src/components/table/table.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,32 @@
11
import React from 'react';
22
import { LoadingOverlay, Table as MantineTable, Skeleton } from '@mantine/core';
33
import { flexRender } from '@tanstack/react-table';
4-
import classes from './table.module.css'
4+
import classes from './table.module.css';
55

6-
export function Table({ table,isLoading }) {
6+
export function Table({ table, isLoading }) {
77
return (
8-
9-
<MantineTable stickyHeader striped highlightOnHover >
8+
<MantineTable stickyHeader striped highlightOnHover>
109
<MantineTable.Thead bg={'var(--primary)'} c={'var(--white-text'}>
1110
{table.getHeaderGroups().map(headerGroup => (
1211
<MantineTable.Tr key={headerGroup.id}>
1312
{headerGroup.headers.map(header => {
1413
return (
15-
<MantineTable.Th ta={'center'} key={header.id} >{
16-
flexRender(
17-
header.column.columnDef.header,
18-
header.getContext()
19-
)
20-
}</MantineTable.Th>)
14+
<MantineTable.Th ta={'center'} key={header.id} w="fit-content">
15+
{flexRender(header.column.columnDef.header, header.getContext())}
16+
</MantineTable.Th>
17+
);
2118
})}
22-
</MantineTable.Tr>))}
19+
</MantineTable.Tr>
20+
))}
2321
</MantineTable.Thead>
24-
22+
2523
<MantineTable.Tbody className={classes.tableBody}>
26-
<LoadingOverlay visible={isLoading} zIndex={1000} overlayProps={{ radius: "sm", blur: 1 }} />
24+
<LoadingOverlay visible={isLoading} zIndex={1000} overlayProps={{ radius: 'sm', blur: 1 }} />
2725
{table.getRowModel().rows.map(row => (
2826
<MantineTable.Tr key={row.id}>
2927
{row.getVisibleCells().map(cell => (
3028
<MantineTable.Td key={cell.id}>
31-
{flexRender(cell.column.columnDef.cell, cell.getContext())}
29+
{flexRender(cell.column.columnDef.cell, cell.getContext())}
3230
</MantineTable.Td>
3331
))}
3432
</MantineTable.Tr>

0 commit comments

Comments
 (0)