'use client' import Image from 'next/image' import { useCallback, useEffect, useState } from 'react' import SuitableDetailPopupButton from './SuitableDetailPopupButton' import { useSuitable } from '@/hooks/useSuitable' import { usePopupController } from '@/store/popupController' import { useSuitableStore } from '@/store/useSuitableStore' import { useSpinnerStore } from '@/store/spinnerStore' import { SUITABLE_HEAD_CODE, type Suitable, type SuitableDetail } from '@/types/Suitable' export default function SuitableDetailPopup() { const popupController = usePopupController() const { toCodeName, toSuitableDetail, suitableCheckIcon, suitableCheckMemo, selectedSuitables, isSelectedSuitablesLoading } = useSuitable() const { setSelectedItemsSearching } = useSuitableStore() const [openItems, setOpenItems] = useState>(new Set()) /* 아이템 열기/닫기 */ const toggleItemOpen = useCallback((itemId: number) => { setOpenItems((prev) => { const newOpenItems = new Set(prev) newOpenItems.has(itemId) ? newOpenItems.delete(itemId) : newOpenItems.add(itemId) return newOpenItems }) }, []) /* 데이터 로딩 상태 처리 */ useEffect(() => { useSpinnerStore.getState().setIsShow(isSelectedSuitablesLoading) }, [isSelectedSuitablesLoading]) useEffect(() => { setSelectedItemsSearching(true) }, []) return (
屋根材適合性詳細
{selectedSuitables?.map((item: Suitable) => (
{item.productName}
屋根技研 支持瓦
{toCodeName(SUITABLE_HEAD_CODE.MANU_FT_CD, item.manuFtCd)}
屋根材
{toCodeName(SUITABLE_HEAD_CODE.ROOF_MT_CD, item.roofMtCd)}
金具タイプ
{toCodeName(SUITABLE_HEAD_CODE.ROOF_SH_CD, item.roofShCd)}
{toSuitableDetail(item.detail).map((subItem: SuitableDetail) => (
{toCodeName(SUITABLE_HEAD_CODE.TRESTLE_MFPC_CD, subItem.trestleMfpcCd)}
{subItem.memo && (
)}
{suitableCheckMemo(subItem.trestleManufacturerProductName)}
{subItem.memo && (
備考
{subItem.memo}
)}
))}
))}
) }