저장팝업 텍스트 색상 수정

This commit is contained in:
Macbook
2026-05-26 23:50:13 +09:00
parent 94e96b9a9b
commit fe812389cc
13 changed files with 728 additions and 62 deletions
+18 -4
View File
@@ -145,6 +145,7 @@ export default function StrategyEditorPage({ theme }: Props) {
const [stratDesc, setStratDesc] = useState('');
const [isSaving, setIsSaving] = useState(false);
const [saveOpen, setSaveOpen] = useState(false);
const [saveNameError, setSaveNameError] = useState(false);
const [deleteOpen, setDeleteOpen] = useState(false);
const [descOpen, setDescOpen] = useState(false);
const [deleteId, setDeleteId] = useState<number | null>(null);
@@ -493,7 +494,12 @@ export default function StrategyEditorPage({ theme }: Props) {
};
const handleSave = async () => {
if (!stratName.trim()) { showSnack('전략 이름을 입력하세요', false); return; }
if (!stratName.trim()) {
setSaveNameError(true);
showSnack('전략 이름을 입력하세요', false);
return;
}
setSaveNameError(false);
const encodedBuy = encodeConditionForSave(buyEditorState);
const encodedSell = encodeConditionForSave(sellEditorState);
if (!encodedBuy && !encodedSell) { showSnack('조건을 최소 1개 추가하세요', false); return; }
@@ -830,7 +836,7 @@ export default function StrategyEditorPage({ theme }: Props) {
>
</button>
<button type="button" className="se-btn se-btn--gold" onClick={() => setSaveOpen(true)}></button>
<button type="button" className="se-btn se-btn--gold" onClick={() => { setSaveNameError(false); setSaveOpen(true); }}></button>
</div>
</header>
@@ -1166,10 +1172,18 @@ export default function StrategyEditorPage({ theme }: Props) {
</div>
{saveOpen && (
<DraggableModalFrame onClose={() => setSaveOpen(false)} title="전략 저장">
<DraggableModalFrame onClose={() => { setSaveNameError(false); setSaveOpen(false); }} title="전략 저장">
<div className="se-modal-body">
<label className="se-field-lbl"> *</label>
<input className="se-field-inp" value={stratName} onChange={e => setStratName(e.target.value)} placeholder="예: Golden_RSI_V1" />
<input
className={`se-field-inp${saveNameError ? ' se-field-inp--error' : ''}`}
value={stratName}
onChange={e => { setStratName(e.target.value); setSaveNameError(false); }}
placeholder="예: Golden_RSI_V1"
/>
{saveNameError && (
<p className="se-field-error" role="alert"> </p>
)}
<label className="se-field-lbl"></label>
<textarea className="se-field-ta" value={stratDesc} onChange={e => setStratDesc(e.target.value)} rows={2} />
<div className="se-modal-actions">