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"
+ />
+