/** * π YearRangeSelectBox Component * λ λ λ²μ μ ν μ»΄ν¬λνΈ * * - μμλ λμ μ’ λ£λ λ μ ν κΈ°λ₯ * - λ λ λ²μ μ ν¨μ± κ²μ¦ (μμλ λ <= μ’ λ£λ λ) * - λμ μ΅μ μμ± λ° νν°λ§ * - μ 체 μ ν μ΅μ μ 곡 * - 컀μ€ν λΌλ²¨ λ° μ€νμΌλ§ μ§μ * - μ½λ°± ν¨μλ₯Ό ν΅ν μ ν κ° μ λ¬ */ import React from "react"; import { SelectBox } from '@common/business_components/ui' interface YearRangeSelectBoxProps { start: string; end: string; onChange: (range: { start: string; end: string }) => void; startLabel?: string; endLabel?: string; minYear?: number; maxYear?: number; className?: string; selectClass?: string; } // μμλ λ selectArray μμ± ν¨μ export function getStartYearArray({ minYear = 1900, maxYear = new Date().getFullYear(), placeholder = "λ ", endYear, }: { minYear?: number; maxYear?: number; placeholder?: string; endYear?: string; } = {}) { const years = Array.from({ length: maxYear - minYear + 1 }, (_, i) => (maxYear - i).toString() ).filter(y => !endYear || parseInt(y) <= parseInt(endYear)); return [ { val: "0", text: placeholder }, ...years.map(y => ({ val: y, text: y })), ]; } // μ’ λ£λ λ selectArray μμ± ν¨μ export function getEndYearArray({ minYear = 1900, maxYear = new Date().getFullYear(), placeholder = "λ ", startYear, }: { minYear?: number; maxYear?: number; placeholder?: string; startYear?: string; } = {}) { const years = Array.from({ length: maxYear - minYear + 1 }, (_, i) => (maxYear - i).toString() ).filter(y => !startYear || parseInt(y) >= parseInt(startYear)); return [ { val: "9999", text: placeholder }, ...years.map(y => ({ val: y, text: y })), ]; } export function YearRangeSelectBox({ start, end, onChange, startLabel = "μμλ λ", endLabel = "", minYear = 1900, maxYear = new Date().getFullYear(), className = "", selectClass = "rounded-lg bg-white flex-shrink-0 w-[70px]" }: YearRangeSelectBoxProps) { // μμλ λ λ°°μ΄ const getStartYearArray = () => { const years = Array.from({ length: maxYear - minYear + 1 }, (_, i) => (maxYear - i).toString() ).filter(y => !end || parseInt(y) <= parseInt(end)); return [ { val: "0", text: "μ 체" }, ...years.map(y => ({ val: y, text: y })), ]; }; // μ’ λ£λ λ λ°°μ΄ const getEndYearArray = () => { const years = Array.from({ length: maxYear - minYear + 1 }, (_, i) => (maxYear - i).toString() ).filter(y => !start || parseInt(y) >= parseInt(start)); return [ { val: "9999", text: "μ 체" }, ...years.map(y => ({ val: y, text: y })), ]; }; return (