필터 추가

This commit is contained in:
focp212@naver.com
2025-09-12 17:35:57 +09:00
parent 65bbfc12b9
commit 7c8873714d
3 changed files with 128 additions and 39 deletions

View File

@@ -0,0 +1,56 @@
import { ChangeEvent } from 'react';
export interface FilterSelectInputProps {
title: string;
selectValue: string;
selectSetter: (value: any) => void;
selectOptions: Array<Record<string, string>>;
inputValue: string;
inputSetter: (value: any) => void;
};
export const FilterSelectInput = ({
title,
selectValue,
selectSetter,
selectOptions,
inputValue,
inputSetter
}: FilterSelectInputProps) => {
const getSelectOptions = () => {
let rs = [];
for(let i=0;i<selectOptions.length;i++){
rs.push(
<option
key={ `key-filter-select-input-${i}` }
value={ selectOptions[i]?.value }
>{ selectOptions[i]?.name }</option>
);
}
return rs;
};
return (
<>
<div className="opt-field">
<div className="opt-label">{ title }</div>
<div className="opt-controls">
<select
className="w-110"
value={ selectValue }
onChange={ (e: any) => selectSetter(e.target.value)}
>
{ getSelectOptions() }
</select>
<input
className="flex-1"
type="text"
placeholder=""
value={ inputValue }
onChange={ (e: ChangeEvent<HTMLInputElement>) => inputSetter(e.target.value)}
/>
</div>
</div>
</>
);
};

View File

@@ -0,0 +1,43 @@
export interface FilterSelectProps {
title: string;
selectValue: string;
selectSetter: (value: any) => void;
selectOptions: Array<Record<string, string>>;
};
export const FilterSelect = ({
title,
selectValue,
selectSetter,
selectOptions,
}: FilterSelectProps) => {
const getSelectOptions = () => {
let rs = [];
for(let i=0;i<selectOptions.length;i++){
rs.push(
<option
key={ `key-filter-select-input-${i}` }
value={ selectOptions[i]?.value }
>{ selectOptions[i]?.name }</option>
);
}
return rs;
};
return (
<>
<div className="opt-field">
<div className="opt-label">{ title }</div>
<div className="opt-controls">
<select
className="flex-1"
value={ selectValue }
onChange={ (e: any) => selectSetter(e.target.value)}
>
{ getSelectOptions() }
</select>
</div>
</div>
</>
);
};