fix(select): Radix UI Select v2.x value="" 에러 수정

Radix UI Select v2.0부터 빈 문자열 value=""가 금지됨 (placeholder 예약어)

수정 파일:
- FieldDetailSettingsModal.tsx: saveColumn "__default__"
- TableLogViewer.tsx: 전체 필터 "__all__"
- FlowStepPanel.tsx: disabled placeholder "__placeholder__"
- MapConfigPanel.tsx: 선택 안 함 "__none__" (2곳)
- DataMappingSettings.tsx: disabled placeholder "__placeholder__" (2곳)
- ScreenAssignmentTab.tsx: disabled placeholder "__placeholder__"
- multilang/page.tsx: 전체 메뉴/타입 "__all__" (2곳)
This commit is contained in:
SeongHyun Kim
2025-12-24 09:24:56 +09:00
parent 3396834417
commit 9878f1f502
7 changed files with 36 additions and 19 deletions

View File

@@ -317,12 +317,16 @@ export default function MultiLangPage() {
<div>
<Label htmlFor="menu"></Label>
<Select value={selectedMenu} onValueChange={setSelectedMenu}>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__all__" 사용 */}
<Select
value={selectedMenu || "__all__"}
onValueChange={(value) => setSelectedMenu(value === "__all__" ? "" : value)}
>
<SelectTrigger>
<SelectValue placeholder="전체 메뉴" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""> </SelectItem>
<SelectItem value="__all__"> </SelectItem>
{menus.map((menu) => (
<SelectItem key={menu.code} value={menu.code}>
{menu.name}
@@ -334,12 +338,16 @@ export default function MultiLangPage() {
<div>
<Label htmlFor="keyType"> </Label>
<Select value={selectedKeyType} onValueChange={setSelectedKeyType}>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__all__" 사용 */}
<Select
value={selectedKeyType || "__all__"}
onValueChange={(value) => setSelectedKeyType(value === "__all__" ? "" : value)}
>
<SelectTrigger>
<SelectValue placeholder="전체 타입" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""> </SelectItem>
<SelectItem value="__all__"> </SelectItem>
{keyTypes.map((type) => (
<SelectItem key={type.code} value={type.code}>
{type.name}

View File

@@ -172,8 +172,9 @@ export const ScreenAssignmentTab: React.FC<ScreenAssignmentTabProps> = ({ menus
// });
if (!menuList || menuList.length === 0) {
// Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__placeholder__" 사용
return [
<SelectItem key="no-menu" value="" disabled>
<SelectItem key="no-menu" value="__placeholder__" disabled>
</SelectItem>,
];

View File

@@ -151,12 +151,16 @@ export function TableLogViewer({ tableName, open, onOpenChange }: TableLogViewer
<div className="grid grid-cols-2 gap-3 md:grid-cols-3">
<div>
<label className="mb-1 block text-sm text-gray-600"> </label>
<Select value={operationType} onValueChange={setOperationType}>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__all__" 사용 */}
<Select
value={operationType || "__all__"}
onValueChange={(value) => setOperationType(value === "__all__" ? "" : value)}
>
<SelectTrigger>
<SelectValue placeholder="전체" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""></SelectItem>
<SelectItem value="__all__"></SelectItem>
<SelectItem value="INSERT"></SelectItem>
<SelectItem value="UPDATE"></SelectItem>
<SelectItem value="DELETE"></SelectItem>

View File

@@ -236,12 +236,13 @@ export const DataMappingSettings: React.FC<DataMappingSettingsProps> = ({
<SelectValue placeholder={tablesLoading ? "테이블 목록 로딩 중..." : "저장할 테이블을 선택하세요"} />
</SelectTrigger>
<SelectContent>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__placeholder__" 사용 */}
{tablesLoading ? (
<SelectItem value="" disabled>
<SelectItem value="__placeholder__" disabled>
...
</SelectItem>
) : availableTables.length === 0 ? (
<SelectItem value="" disabled>
<SelectItem value="__placeholder__" disabled>
</SelectItem>
) : (

View File

@@ -1173,7 +1173,8 @@ export function FlowStepPanel({
REST API
</SelectItem>
) : (
<SelectItem value="" disabled>
// Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__placeholder__" 사용
<SelectItem value="__placeholder__" disabled>
REST API가
</SelectItem>
)}

View File

@@ -315,16 +315,17 @@ export default function MapConfigPanel({ config, onChange }: MapConfigPanelProps
{/* 라벨 컬럼 (선택) */}
<div className="space-y-2 mb-3">
<Label> ()</Label>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__none__" 사용 */}
<Select
value={config.dataSource?.labelColumn || ""}
onValueChange={(value) => updateConfig("dataSource.labelColumn", value)}
value={config.dataSource?.labelColumn || "__none__"}
onValueChange={(value) => updateConfig("dataSource.labelColumn", value === "__none__" ? "" : value)}
disabled={isLoadingColumns || !config.dataSource?.tableName}
>
<SelectTrigger>
<SelectValue placeholder="라벨 컬럼 선택" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""> </SelectItem>
<SelectItem value="__none__"> </SelectItem>
{columns.map((col) => (
<SelectItem key={col.column_name} value={col.column_name}>
{col.column_name} ({col.data_type})
@@ -337,16 +338,17 @@ export default function MapConfigPanel({ config, onChange }: MapConfigPanelProps
{/* 상태 컬럼 (선택) */}
<div className="space-y-2 mb-3">
<Label> ()</Label>
{/* Radix UI Select v2.x: 빈 문자열 value="" 금지 → "__none__" 사용 */}
<Select
value={config.dataSource?.statusColumn || ""}
onValueChange={(value) => updateConfig("dataSource.statusColumn", value)}
value={config.dataSource?.statusColumn || "__none__"}
onValueChange={(value) => updateConfig("dataSource.statusColumn", value === "__none__" ? "" : value)}
disabled={isLoadingColumns || !config.dataSource?.tableName}
>
<SelectTrigger>
<SelectValue placeholder="상태 컬럼 선택" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""> </SelectItem>
<SelectItem value="__none__"> </SelectItem>
{columns.map((col) => (
<SelectItem key={col.column_name} value={col.column_name}>
{col.column_name} ({col.data_type})

View File

@@ -550,12 +550,12 @@ export function FieldDetailSettingsModal({
<Label className="text-[10px]"> </Label>
{selectTableColumns.length > 0 ? (
<Select
value={localField.selectOptions?.saveColumn || ""}
value={localField.selectOptions?.saveColumn || "__default__"}
onValueChange={(value) =>
updateField({
selectOptions: {
...localField.selectOptions,
saveColumn: value,
saveColumn: value === "__default__" ? "" : value,
},
})
}
@@ -564,7 +564,7 @@ export function FieldDetailSettingsModal({
<SelectValue placeholder="컬럼 선택 (미선택 시 조인 컬럼 저장)" />
</SelectTrigger>
<SelectContent>
<SelectItem value=""> ()</SelectItem>
<SelectItem value="__default__"> ()</SelectItem>
{selectTableColumns.map((col) => (
<SelectItem key={col.name} value={col.name}>
{col.name}