diff --git a/apps/sn/app/(map-layout)/map/components/sinkhole/SinkholeLayerSettingPanel.tsx b/apps/sn/app/(map-layout)/map/components/sinkhole/SinkholeLayerSettingPanel.tsx index 0c60d535a..b2935032a 100644 --- a/apps/sn/app/(map-layout)/map/components/sinkhole/SinkholeLayerSettingPanel.tsx +++ b/apps/sn/app/(map-layout)/map/components/sinkhole/SinkholeLayerSettingPanel.tsx @@ -1,8 +1,10 @@ "use client"; import { useEffect, useState } from "react"; +import { SelectBox } from "@common/business_components/ui"; import { normalizeSinkholeYearRange, + SINKHOLE_MIN_SEARCH_YEAR, validateSinkholeYearRange, type SinkholeSyncSummary, type SinkholeYearRange, @@ -77,18 +79,33 @@ export default function SinkholeLayerSettingPanel({ const updateYearRangeDraft = (key: keyof SinkholeYearRange, value: string) => { setYearRangeDraft((current) => ({ ...current, - [key]: value.replace(/[^0-9]/g, "").slice(0, 4), + [key]: String(value).replace(/[^0-9]/g, "").slice(0, 4), })); }; + const currentYear = new Date().getFullYear(); + const yearSelectClass = "h-[22px] w-[62px] rounded-none border border-[#ccd6df] bg-white px-[4px] text-center text-[1rem] leading-none text-[#222]"; + const startYearOptions = Array.from( + { length: currentYear - SINKHOLE_MIN_SEARCH_YEAR + 1 }, + (_, index) => String(currentYear - index), + ) + .filter((year) => !yearRangeDraft.endYear || Number(year) <= Number(yearRangeDraft.endYear)) + .map((year) => ({ val: year, text: year })); + const endYearOptions = Array.from( + { length: currentYear - SINKHOLE_MIN_SEARCH_YEAR + 1 }, + (_, index) => String(currentYear - index), + ) + .filter((year) => !yearRangeDraft.startYear || Number(year) >= Number(yearRangeDraft.startYear)) + .map((year) => ({ val: year, text: year })); + const inputClass = "h-[22px] border border-[#ccd6df] px-[2px] text-center text-[1rem] leading-none text-[#222]"; const numberInputClass = inputClass + " w-[40px]"; const applyButtonClass = "grid h-[20px] w-[20px] shrink-0 place-items-center rounded-full bg-[#31a83b] text-[0.95rem] font-bold leading-none text-white"; const indicator = ; const settingRows = ( -
-
+
+
{indicator} @@ -119,44 +136,37 @@ export default function SinkholeLayerSettingPanel({
-
+
{indicator} - - event.currentTarget.select()} - onChange={(event) => updateYearRangeDraft("startYear", event.target.value)} - onKeyDown={(event) => { - if (event.key === "Enter") void commitYearRange(); - }} - /> - ~ +
-
- - event.currentTarget.select()} - onChange={(event) => updateYearRangeDraft("endYear", event.target.value)} - onKeyDown={(event) => { - if (event.key === "Enter") void commitYearRange(); - }} - /> +
+
+ updateYearRangeDraft("startYear", String(value))} + selectContentClass="z-[101]" + labelClass="hidden" + /> +
+ ~ +
+ updateYearRangeDraft("endYear", String(value))} + selectContentClass="z-[101]" + labelClass="hidden" + /> +