feat: 파일 미리보기 및 동적 컴포넌트 조정 기능 추가
- 파일 미리보기 API에 공개 접근을 허용하여 인증되지 않은 사용자도 이미지 미리보기를 할 수 있도록 수정하였습니다. - ScreenModal 컴포넌트에서 숨겨진 컴포넌트의 동적 y 좌표 조정 로직을 추가하여 사용자 인터페이스의 일관성을 개선하였습니다. - V2Media 및 V2Select 컴포넌트에서 기본값 설정 기능을 추가하여 사용자 경험을 향상시켰습니다. - RepeaterTable 및 SimpleRepeaterTableComponent에서 키 값을 개선하여 렌더링 성능을 최적화하였습니다. - formData의 디버깅 로그를 추가하여 개발 중 상태 확인을 용이하게 하였습니다.
This commit is contained in:
@@ -5,6 +5,7 @@ import { Label } from "@/components/ui/label";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Checkbox } from "@/components/ui/checkbox";
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
||||
import { Plus, X } from "lucide-react";
|
||||
import { SelectTypeConfig } from "@/types/screen";
|
||||
|
||||
@@ -22,6 +23,7 @@ export const SelectTypeConfigPanel: React.FC<SelectTypeConfigPanelProps> = ({ co
|
||||
placeholder: "",
|
||||
allowClear: false,
|
||||
maxSelections: undefined,
|
||||
defaultValue: "",
|
||||
...config,
|
||||
};
|
||||
|
||||
@@ -32,6 +34,7 @@ export const SelectTypeConfigPanel: React.FC<SelectTypeConfigPanelProps> = ({ co
|
||||
placeholder: safeConfig.placeholder,
|
||||
allowClear: safeConfig.allowClear,
|
||||
maxSelections: safeConfig.maxSelections?.toString() || "",
|
||||
defaultValue: safeConfig.defaultValue || "",
|
||||
});
|
||||
|
||||
const [newOption, setNewOption] = useState({ label: "", value: "" });
|
||||
@@ -53,6 +56,7 @@ export const SelectTypeConfigPanel: React.FC<SelectTypeConfigPanelProps> = ({ co
|
||||
placeholder: safeConfig.placeholder,
|
||||
allowClear: safeConfig.allowClear,
|
||||
maxSelections: safeConfig.maxSelections?.toString() || "",
|
||||
defaultValue: safeConfig.defaultValue || "",
|
||||
});
|
||||
|
||||
setLocalOptions(
|
||||
@@ -68,6 +72,7 @@ export const SelectTypeConfigPanel: React.FC<SelectTypeConfigPanelProps> = ({ co
|
||||
safeConfig.placeholder,
|
||||
safeConfig.allowClear,
|
||||
safeConfig.maxSelections,
|
||||
safeConfig.defaultValue,
|
||||
JSON.stringify(safeConfig.options), // 옵션 배열의 전체 내용 변화 감지
|
||||
]);
|
||||
|
||||
@@ -174,6 +179,30 @@ export const SelectTypeConfigPanel: React.FC<SelectTypeConfigPanelProps> = ({ co
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* 기본값 설정 */}
|
||||
<div>
|
||||
<Label htmlFor="defaultValue" className="text-sm font-medium">
|
||||
기본값
|
||||
</Label>
|
||||
<Select
|
||||
value={localValues.defaultValue || "_none_"}
|
||||
onValueChange={(value) => updateConfig("defaultValue", value === "_none_" ? "" : value)}
|
||||
>
|
||||
<SelectTrigger className="mt-1 h-8 w-full text-xs">
|
||||
<SelectValue placeholder="기본값 선택" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="_none_">선택 안함</SelectItem>
|
||||
{localOptions.map((option, index) => (
|
||||
<SelectItem key={`default-${option.value}-${index}`} value={option.value}>
|
||||
{option.label} ({option.value})
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p className="text-muted-foreground mt-1 text-xs">화면 로드 시 자동으로 선택될 값</p>
|
||||
</div>
|
||||
|
||||
{/* 다중 선택 */}
|
||||
<div className="flex items-center justify-between">
|
||||
<Label htmlFor="multiple" className="text-sm font-medium">
|
||||
|
||||
Reference in New Issue
Block a user