Skip to content

Commit 4c248d2

Browse files
committed
Fixed some error
1 parent 5b34397 commit 4c248d2

10 files changed

Lines changed: 51 additions & 31 deletions

File tree

frontend/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
22
import ComplexesPage from './pages/ComplexesPage';
3-
// import ComplexDetailPage from './pages/ComplexDetailPage'; // 将来的に
43
import ComplexFormPage from './pages/ComplexFormPage';
4+
// import ComplexDetailPage from './pages/ComplexDetailPage'; // 将来的に
55
// import ComplexFormPage from './pages/ComplexFormPage'; // 将来的に
66

77
function App() {
88
return (
99
<Router>
1010
<Routes>
1111
<Route path="/" element={<ComplexesPage />} />
12-
{/* 他のルートもここに追加 */}
1312
<Route path="/complexes/new" element={<ComplexFormPage />} />
13+
{/* 他のルートもここに追加 */}
1414
{/* <Route path="/complexes/:id/edit" element={<ComplexFormPage mode="edit" />} /> */}
1515
{/* <Route path="/complexes/:id" element={<ComplexDetailPage />} /> */}
1616
</Routes>

frontend/src/components/common/atoms/Input.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { InputHTMLAttributes, forwardRef } from 'react';
1+
import { type InputHTMLAttributes, forwardRef } from 'react';
22
import styled from 'styled-components';
33

44
const StyledInput = styled.input`
@@ -20,7 +20,10 @@ const StyledInput = styled.input`
2020
`;
2121

2222
const Input = forwardRef<
23+
// TODO: Remove eslint-disable-next-line after refactoring
24+
// eslint-disable-next-line no-undef
2325
HTMLInputElement,
26+
// eslint-disable-next-line no-undef
2427
InputHTMLAttributes<HTMLInputElement>
2528
>((props, ref) => <StyledInput {...props} ref={ref} />);
2629

frontend/src/components/common/atoms/Textarea.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { TextareaHTMLAttributes, forwardRef } from 'react';
1+
import { type TextareaHTMLAttributes, forwardRef } from 'react';
22
import styled from 'styled-components';
33

44
const StyledTextarea = styled.textarea`
@@ -21,7 +21,10 @@ const StyledTextarea = styled.textarea`
2121
`;
2222

2323
const Textarea = forwardRef<
24+
// TODO: Remove eslint-disable-next-line after refactoring
25+
// eslint-disable-next-line no-undef
2426
HTMLTextAreaElement,
27+
// eslint-disable-next-line no-undef
2528
TextareaHTMLAttributes<HTMLTextAreaElement>
2629
>((props, ref) => <StyledTextarea {...props} ref={ref} />);
2730

frontend/src/components/common/molecules/FormGroup.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ReactNode } from 'react';
1+
import React, { type ReactNode } from 'react';
22
import styled from 'styled-components';
33

44
const FormGroupWrapper = styled.div`

frontend/src/components/common/molecules/Header.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import styled from 'styled-components';
33
import { useTranslation } from 'react-i18next';
44
import Button from '../atoms/Button';
5-
import { useNavigate } from 'react-router-dom';
5+
// import { useNavigate } from 'react-router-dom';
66

77
const HeaderWrapper = styled.header`
88
background-color: rgba(255, 255, 255, 0.8);
@@ -41,7 +41,7 @@ interface HeaderProps {
4141
}
4242

4343
const Header: React.FC<HeaderProps> = ({ onAddNewComplex }) => {
44-
const navigate = useNavigate();
44+
// const navigate = useNavigate();
4545
const { t, i18n } = useTranslation();
4646

4747
const changeLanguage = (lng: string) => {
@@ -78,11 +78,10 @@ const Header: React.FC<HeaderProps> = ({ onAddNewComplex }) => {
7878
</Button>
7979
</LanguageSwitcher>
8080
</div>
81-
{/* 新規登録ボタンはComplexesPageでのみ表示するため、Headerからは削除 */}
82-
<Button variant="primary" size="small" onClick={onAddNewComplex}>
83-
+ {t('addNewComplexButton')}
84-
</Button>
85-
</div>
81+
{/* TODO: 新規登録ボタンはComplexesPageでのみ表示するため、Headerからは削除 */}
82+
<Button variant="primary" size="small" onClick={onAddNewComplex}>
83+
+ {t('addNewComplexButton')}
84+
</Button>
8685
</NavContainer>
8786
</HeaderWrapper>
8887
);

frontend/src/components/complexes/organisms/NoComplexesMessage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import styled from 'styled-components';
33
import { useTranslation } from 'react-i18next';
44
import Button from '../../common/atoms/Button';
5-
import { useNavigate } from 'react-router-dom';
5+
// import { useNavigate } from 'react-router-dom';
66

77
const MessageWrapper = styled.div`
88
margin-top: 3rem; /* 48px */
@@ -43,7 +43,7 @@ interface NoComplexesMessageProps {
4343
const NoComplexesMessage: React.FC<NoComplexesMessageProps> = ({
4444
onAddNewComplex,
4545
}) => {
46-
const navigate = useNavigate();
46+
// const navigate = useNavigate();
4747
const { t } = useTranslation();
4848
return (
4949
<MessageWrapper>
@@ -66,7 +66,7 @@ const NoComplexesMessage: React.FC<NoComplexesMessageProps> = ({
6666
<Title>{t('noComplexesTitle')}</Title>
6767
<Subtitle>{t('noComplexesSubtitle')}</Subtitle>
6868
<ButtonWrapper>
69-
<Button variant="primary" onClick={() => navigate('/complexes/new')}>
69+
<Button variant="primary" onClick={onAddNewComplex}>
7070
{t('registerComplexButton')}
7171
</Button>
7272
</ButtonWrapper>

frontend/src/pages/ComplexFormPage.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import styled from 'styled-components';
3-
import { useForm, SubmitHandler } from 'react-hook-form';
3+
import { useForm, type SubmitHandler } from 'react-hook-form';
44
import { useMutation, useQueryClient } from '@tanstack/react-query';
55
import { useTranslation } from 'react-i18next';
66
import { useNavigate } from 'react-router-dom';
@@ -11,7 +11,7 @@ import Input from '../components/common/atoms/Input';
1111
import Textarea from '../components/common/atoms/Textarea';
1212
import FormGroup from '../components/common/molecules/FormGroup';
1313

14-
import type { ComplexInput } from '../types/complex';
14+
import type { Complex, ComplexInput } from '../types/complex';
1515
import { createComplex } from '../services/api';
1616

1717
const PageWrapper = styled.div`
@@ -65,10 +65,12 @@ const ComplexFormPage: React.FC = () => {
6565
mutationFn: createComplex,
6666
onSuccess: () => {
6767
queryClient.invalidateQueries({ queryKey: ['complexes'] }); // コンプレックス一覧キャッシュを無効化
68+
// eslint-disable-next-line no-undef
6869
alert(t('complexForm.successMessage')); // 成功メッセージ
6970
navigate('/'); // 一覧ページへ遷移
7071
},
7172
onError: (error) => {
73+
// eslint-disable-next-line no-undef
7274
alert(`${t('complexForm.errorMessage')}: ${error.message}`); // エラーメッセージ
7375
},
7476
});
@@ -117,16 +119,16 @@ const ComplexFormPage: React.FC = () => {
117119
<Button
118120
variant="secondary"
119121
onClick={handleCancel}
120-
disabled={createComplexMutation.isLoading}
122+
disabled={createComplexMutation.isPending}
121123
>
122124
{t('complexForm.cancelButton')}
123125
</Button>
124126
<Button
125127
variant="primary"
126128
type="submit"
127-
disabled={createComplexMutation.isLoading}
129+
disabled={createComplexMutation.isPending}
128130
>
129-
{createComplexMutation.isLoading
131+
{createComplexMutation.isPending
130132
? t('complexForm.savingButton')
131133
: t('complexForm.submitButton')}
132134
</Button>

frontend/src/pages/ComplexesPage.tsx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useEffect } from 'react';
1+
import React from 'react';
22
import styled from 'styled-components';
33
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
44
import { useTranslation } from 'react-i18next';
@@ -42,7 +42,7 @@ const PageSubtitle = styled.p`
4242
`;
4343

4444
import Button from '../components/common/atoms/Button'; // ボタンコンポーネントをインポート
45-
import { fetchComplexes, deleteComplex } from '../services/api'; // 実際のAPI関数をインポート
45+
import { fetchComplexes, deleteComplex } from '../services/api';
4646

4747
const AddButtonWrapper = styled.div`
4848
text-align: center;
@@ -67,10 +67,12 @@ const ComplexesPage: React.FC = () => {
6767

6868
// 削除ミューテーション
6969
const deleteMutation = useMutation<void, Error, number>({
70-
mutationFn: deleteComplexAPI,
70+
mutationFn: deleteComplex,
7171
onSuccess: () => {
72-
queryClient.invalidateQueries({ queryKey: ['complexes'] }); // キャッシュを無効化して再フェッチ
72+
queryClient.invalidateQueries({ queryKey: ['complexes'] }); // キャッシュを無効化して再フェッチ
73+
// eslint-disable-next-line no-undef
7374
alert(t('deleteConfirmation', { id: '' }).replace('{{id}} ', '')); // 実際には削除されたIDを渡す
75+
},
7476
onError: (err) => {
7577
// eslint-disable-next-line no-undef
7678
alert(`削除に失敗しました: ${err.message}`);
@@ -85,12 +87,14 @@ const ComplexesPage: React.FC = () => {
8587
const handleViewGoals = (id: number) => {
8688
console.log(`目標を見る/設定: Complex ID ${id}`);
8789
// TODO: React Routerを使用して目標設定ページへ遷移
90+
// eslint-disable-next-line no-undef
8891
alert(t('viewSetGoalsButton') + ` (ID: ${id}) 画面へ(未実装)`);
8992
};
9093

9194
const handleEditComplex = (id: number) => {
9295
console.log(`編集: Complex ID ${id}`);
9396
// TODO: React Routerを使用して編集ページへ遷移
97+
// eslint-disable-next-line no-undef
9498
alert(t('editButton') + ` (ID: ${id}) 画面へ(未実装)`);
9599
};
96100

@@ -106,7 +110,10 @@ const ComplexesPage: React.FC = () => {
106110
// const [showDummyData, setShowDummyData] = useState(false);
107111
// useEffect(() => { ... }, [isLoading, error, complexes]);
108112

109-
if (isLoading && !showDummyData)
113+
if (
114+
isLoading
115+
// && !showDummyData
116+
)
110117
return (
111118
<PageWrapper>
112119
<MainContent>
@@ -127,7 +134,7 @@ const ComplexesPage: React.FC = () => {
127134
);
128135

129136
return (
130-
<PageWrapper>
137+
<PageWrapper>
131138
<Header onAddNewComplex={handleAddNewComplex} />
132139
<MainContent>
133140
<PageTitleWrapper>
@@ -136,9 +143,9 @@ const ComplexesPage: React.FC = () => {
136143
</PageTitleWrapper>
137144
{/* 新規登録ボタンをページコンテンツ内に追加 */}
138145
<AddButtonWrapper>
139-
<Button variant="primary" onClick={handleAddNewComplex}>
140-
+ {t('addNewComplexButton')}
141-
</Button>
146+
<Button variant="primary" onClick={handleAddNewComplex}>
147+
+ {t('addNewComplexButton')}
148+
</Button>
142149
</AddButtonWrapper>
143150
<ComplexList
144151
complexes={complexes} // TanStack Queryがデータを管理

frontend/src/services/api.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@ const getAuthHeaders = () => ({
1010
'X-User-ID': DUMMY_USER_ID,
1111
});
1212

13-
// コンプレックス一覧取得
13+
/* コンプレックス一覧取得 */
1414
export const fetchComplexes = async (): Promise<Complex[]> => {
15+
// eslint-disable-next-line no-undef
1516
const response = await fetch(`${API_BASE_URL}/complexes`, {
1617
headers: getAuthHeaders(),
1718
});
1819
if (!response.ok) throw new Error('Failed to fetch complexes');
1920
return response.json();
2021
};
2122

22-
// 新しいコンプレックスを登録
23+
/* 新しいコンプレックスを登録 */
2324
export const createComplex = async (data: ComplexInput): Promise<Complex> => {
25+
// eslint-disable-next-line no-undef
2426
const response = await fetch(`${API_BASE_URL}/complexes`, {
2527
method: 'POST',
2628
headers: getAuthHeaders(),
@@ -32,6 +34,7 @@ export const createComplex = async (data: ComplexInput): Promise<Complex> => {
3234

3335
// コンプレックス削除 (ComplexesPage.tsxで使用していたダミー関数を置き換え)
3436
export const deleteComplex = async (id: number): Promise<void> => {
37+
// eslint-disable-next-line no-undef
3538
const response = await fetch(`${API_BASE_URL}/complexes/${id}`, {
3639
method: 'DELETE',
3740
headers: getAuthHeaders(),

frontend/tsconfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
{
2+
"compilerOptions": {
3+
"lib": ["DOM", "ES2020"]
4+
},
25
"files": [],
36
"references": [
47
{ "path": "./tsconfig.app.json" },

0 commit comments

Comments
 (0)