feat(travel): 앨범 지역 편집 UI — 텍스트 입력 + 자동완성
- AlbumDetail 헤더의 지역 라벨 클릭 → 인라인 편집 모드
- 기존 지역 목록 자동완성 제안 + 새 지역명 직접 입력 가능
- Enter/클릭으로 저장, Esc/✕로 취소
- PUT /api/travel/albums/{album}/region 호출 → 앨범 목록 갱신
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,111 @@
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.album-detail__region--editable {
|
||||
border: 1px solid transparent;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
transition: border-color 0.2s, background 0.2s;
|
||||
}
|
||||
.album-detail__region--editable:hover {
|
||||
border-color: var(--tv-line-bright, rgba(232, 221, 208, 0.22));
|
||||
background: var(--tv-surface-2, #221c14);
|
||||
}
|
||||
|
||||
.album-detail__region-edit-icon {
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
.album-detail__region--editable:hover .album-detail__region-edit-icon {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.album-detail__region-ok {
|
||||
color: #c8905e;
|
||||
}
|
||||
.album-detail__region-err {
|
||||
color: #dc5050;
|
||||
}
|
||||
|
||||
/* ── Region editor ── */
|
||||
.album-detail__region-editor {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.album-detail__region-input {
|
||||
font-family: var(--tv-mono, 'SF Mono', 'Fira Code', monospace);
|
||||
font-size: 11px;
|
||||
letter-spacing: 0.04em;
|
||||
color: var(--tv-text, #e8ddd0);
|
||||
background: var(--tv-surface-2, #221c14);
|
||||
border: 1px solid var(--tv-line-bright, rgba(232, 221, 208, 0.22));
|
||||
border-radius: 4px;
|
||||
padding: 4px 8px;
|
||||
width: 160px;
|
||||
outline: none;
|
||||
}
|
||||
.album-detail__region-input:focus {
|
||||
border-color: var(--tv-accent, #c8905e);
|
||||
}
|
||||
|
||||
.album-detail__region-suggestions {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
margin: 4px 0 0;
|
||||
padding: 4px 0;
|
||||
list-style: none;
|
||||
background: var(--tv-surface, #1a1510);
|
||||
border: 1px solid var(--tv-line-bright, rgba(232, 221, 208, 0.22));
|
||||
border-radius: 6px;
|
||||
max-height: 180px;
|
||||
overflow-y: auto;
|
||||
min-width: 160px;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.album-detail__region-suggestion {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 6px 12px;
|
||||
font-family: var(--tv-mono, 'SF Mono', 'Fira Code', monospace);
|
||||
font-size: 11px;
|
||||
color: var(--tv-text, #e8ddd0);
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
transition: background 0.15s;
|
||||
}
|
||||
.album-detail__region-suggestion:hover {
|
||||
background: var(--tv-line, rgba(232, 221, 208, 0.1));
|
||||
}
|
||||
|
||||
.album-detail__region-cancel {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
background: var(--tv-line, rgba(232, 221, 208, 0.1));
|
||||
color: var(--tv-muted, rgba(232, 221, 208, 0.45));
|
||||
font-size: 10px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
transition: background 0.15s;
|
||||
}
|
||||
.album-detail__region-cancel:hover {
|
||||
background: var(--tv-line-bright, rgba(232, 221, 208, 0.22));
|
||||
}
|
||||
|
||||
.album-detail__count {
|
||||
font-family: var(--tv-mono, 'SF Mono', 'Fira Code', monospace);
|
||||
font-size: 11px;
|
||||
|
||||
Reference in New Issue
Block a user