feat(B05,B06): 구조물 배치를 실시간 반영으로 바꾸고 이식 행·강조를 정리한다

2026-08-29 사용자 지시 3건:
1. 유입구·유출구로 옮겨 온 단 수·옵션 행을 폼 양식(라벨+한 덩어리 컨트롤)으로
   맞추고 2열 격자로 세운다.
2. 이미 고른 항목은 값이 바뀔 때마다 곧바로 반영한다([수정] 버튼 불필요).
   버튼은 visibility만 꺼 자리를 남겨 삭제·리셋의 위치·크기가 흔들리지 않게 했다.
   정본 주입이 되먹임으로 돌아와도 편집 중인 폼은 닫지 않는다.
3. 도면에서 구조물을 고르면 그쪽 그룹(유입구/유출구)을 붉은 계열로 강조한다.
   카드만 고른 경우는 강조하지 않는다 — 대표 벽은 조용히 딸려 오고, 그 벽을
   다시 눌러 선택을 풀면 강조만 꺼지고 행은 남는다.

검증: 슬롯 grid 2열, 카드 선택 시 강조 없음·행 2개, 다른 벽 클릭 시 유입구 그룹
붉은 테두리(rgb(192,57,43)), 재클릭 시 강조 해제·행 복귀. 길이 + 즉시 캐시
반영(11) 후 - 원복(10), 폼 유지. typecheck 통과.
This commit is contained in:
2026-08-29 16:00:04 +09:00
parent 889f746a61
commit 5d0d2f0918
5 changed files with 178 additions and 14 deletions
@@ -303,3 +303,87 @@
flex-direction: column;
gap: 6px;
}
/* 유입구·유출구 그룹으로 옮겨 온 행(단 수·옵션) — 폼의 다른 항목과 같은 표기로
* 맞추고 2열로 세운다(2026-08-29 사용자 지시 1). 조정창 안에서 쓰던 어두운 행
* 양식은 여기서 벗는다. */
.b05-structure__adjust-slot {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
}
.b05-structure__adjust-slot .b06-structure-panel__struct {
display: flex;
min-width: 0;
flex-direction: column;
gap: 2px;
}
.b05-structure__adjust-slot .b06-structure-panel__label {
color: var(--color-text-body);
font-size: var(--text-caption);
opacity: 1;
}
/* 단 수 [-][값][+]도 폼의 숫자 조정칸과 같은 한 덩어리로 보이게 한다. */
.b05-structure__adjust-slot .b06-structure-panel__controls {
display: flex;
overflow: hidden;
min-width: 0;
align-items: stretch;
border: 1px solid var(--color-border);
border-radius: var(--radius-inputs);
background: var(--color-surface);
gap: 0;
}
.b05-structure__adjust-slot .b06-structure-panel__controls .b06-structure-panel__btn {
width: 28px;
height: auto;
min-height: 24px;
border: 0;
border-radius: 0;
background: transparent;
color: var(--color-text-body);
}
.b05-structure__adjust-slot .b06-structure-panel__hval {
display: flex;
min-width: 0;
flex: 1 1 auto;
align-items: center;
justify-content: center;
border-right: 1px solid var(--color-border);
border-left: 1px solid var(--color-border);
color: var(--color-text);
font-size: var(--text-caption);
}
/* 옵션 토글 둘은 한 덩어리 안에서 반씩 나눠 쓴다. */
.b05-structure__adjust-slot
.b06-structure-panel__controls.b06-structure-panel__toggles
.b06-structure-panel__toggle {
width: auto;
flex: 1 1 0;
padding: 0;
}
.b05-structure__adjust-slot
.b06-structure-panel__controls.b06-structure-panel__toggles
.b06-structure-panel__toggle
+ .b06-structure-panel__toggle {
border-left: 1px solid var(--color-border);
}
/* 도면에서 고른 구조물 쪽 그룹 강조(2026-08-29 사용자 지시) — 조정창 테두리와 같은
붉은 계열로 맞춰 "지금 만지는 구조물"이 한 색으로 읽히게 한다. */
.b05-structure__group.is-active {
border-color: var(--color-danger);
background: color-mix(in srgb, var(--color-danger) 8%, transparent);
}
.b05-structure__group.is-active > legend {
color: var(--color-danger);
opacity: 1;
}