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:
@@ -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}
|
||||
|
||||
@@ -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>,
|
||||
];
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
) : (
|
||||
|
||||
@@ -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>
|
||||
)}
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user