diff --git a/user/src/api/fireEquipmentApi.ts b/user/src/api/fireEquipmentApi.ts index 8d0ba69c0..0e4eaac4f 100644 --- a/user/src/api/fireEquipmentApi.ts +++ b/user/src/api/fireEquipmentApi.ts @@ -28,7 +28,7 @@ const API_ENDPOINTS = { FIRE_EQUIPMENT_ORDERS: '/fire_equipment_orders', }; -// グループIDで火器使用申請を取得 +// グループIDで火気使用申請を取得 export const useGetFireEquipmentOrderByGroupId = ( groupId: number | undefined ) => { diff --git a/user/src/components/Applications/FireEquipment/FireEquipment.stories.tsx b/user/src/components/Applications/FireEquipment/FireEquipment.stories.tsx new file mode 100644 index 000000000..a9b38304b --- /dev/null +++ b/user/src/components/Applications/FireEquipment/FireEquipment.stories.tsx @@ -0,0 +1,26 @@ +import '@globals'; +import { Meta, StoryObj } from '@storybook/react'; +import FireEquipment from './FireEquipment'; + +export default { + title: 'Components/FireEquipment', + tags: ['autodocs'], + component: FireEquipment, + parameters: { + docs: { + source: { + type: 'auto', + }, + }, + }, +} as Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + groupId: 0, + isDeadline: false, + isRegistered: false, + }, +}; diff --git a/user/src/components/Applications/FireEquipment/FireEquipment.tsx b/user/src/components/Applications/FireEquipment/FireEquipment.tsx new file mode 100644 index 000000000..7329bb1dd --- /dev/null +++ b/user/src/components/Applications/FireEquipment/FireEquipment.tsx @@ -0,0 +1,71 @@ +import { FC } from 'react'; +import AccordionMenu from '@/components/AccordionMenu'; +import FormList from '@/components/FormList'; +import { FireEquipmentFormView } from './components'; +import { useFireEquipmentHooks } from './hooks'; + +type FireEquipmentProps = { + isDeadline?: boolean; + isRegistered?: boolean | undefined; + groupId: number; +}; + +const Content: FC = ({ groupId, isDeadline }) => { + const { + isEditing, + handleEditClick, + formItem, + fireEquipment, + hasUnregistered, + noApplicationItems, + } = useFireEquipmentHooks(groupId); + + // 締め切り後に表示する画面 + if (isDeadline) { + return ; + } + // 未登録がある場合は、フォームリストを表示 + if (hasUnregistered) { + return ( + + ); + } + + // 未登録の場合は、フォームを表示 + if (!fireEquipment && !hasUnregistered) { + return ; + } + + // 編集モードでない場合は、フォームリストを表示 + if (!isEditing) { + return ; // Display existing fire equipment details + } + + // 編集モードの場合は、フォームを表示 + return ( + + ); +}; + +const FireEquipment: FC = ({ + groupId, + isDeadline, + isRegistered, +}) => { + return ( + + + + ); +}; + +export default FireEquipment; diff --git a/user/src/components/Applications/FireEquipment/components/FireEquipmentForm.tsx b/user/src/components/Applications/FireEquipment/components/FireEquipmentForm.tsx new file mode 100644 index 000000000..9513f0cb4 --- /dev/null +++ b/user/src/components/Applications/FireEquipment/components/FireEquipmentForm.tsx @@ -0,0 +1,157 @@ +import { FC } from 'react'; +import { FireEquipmentFuel } from '@/api/fireEquipmentApi'; +import { FieldErrors, UseFormSetValue } from 'react-hook-form'; +import Button from '@/components/Button'; +import Radio from '@/components/Form/Radio/Radio'; +import Selector from '@/components/Form/Selector/Selector'; +import TextArea from '@/components/Form/TextArea/TextArea'; +import TextBox from '@/components/Form/TextBox/TextBox'; +import FormContainer from '@/components/FormContainer'; +import { + FIRE_EQUIPMENT_FUEL_PLACEHOLDER_ID, + FIRE_EQUIPMENT_INSTRUCTIONS, + fireEquipmentFormFields, +} from '../constant'; +import { convertToBoolToString } from './hooks'; +import { FireEquipmentFormValues } from './schema'; + +type FireEquipmentFormProps = { + values: FireEquipmentFormValues; + errors: FieldErrors; + setValue: UseFormSetValue; + isEditing: boolean; + handleEditCancel?: () => void; + validate?: () => boolean; +}; + +const FireEquipmentForm: FC = ({ + values, + errors, + setValue, + isEditing, + handleEditCancel, + validate, +}) => { + return ( + +
+
+ setValue('name', value)} + error={errors.name?.message} + /> + setValue('quantity', Number(value))} + error={errors.quantity?.message} + /> + + setValue('fuel', Number(value) as FireEquipmentFuel) + } + error={errors.fuel?.message} + /> +