Files
Aislo/ui_template/ui_template_item_picker.css
eomsangdonandClaude Sonnet 5.5 26eac086a8 feat(ui_template): 고르기 모달 — 구조물 복사본 기준 · [재적용] · [개인에 저장] · 나무 오른쪽 클릭 새 항목 · 경로 이름 (PLAN 26-3b)
- 카드 · 편집이 그 구조물의 복사본(폴더 = 구조물 id · 관 = pipe@측점)을 읽고 고침 · 같은 항목을 고른 구조물끼리 값이 따로
- [재적용](덮이는 것을 확인 창으로 알리고 덮임 부분을 알림) · [개인에 저장](경로 · 이름 물음) · 상태 줄에 고침 · 마스터가 바뀜 · 원본 없음 표시
- 나무 개인 그룹 · 폴더 오른쪽 클릭 「새 항목」 → 돌려받은 summary_item 을 폼에 지정 · [적용] 뒤 [저장] 안내 한 줄
- B05 구조물 폼이 구조물 id 를 모달에 넘김

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EauA2ATmqNRbeV48s9CcBr
2026-09-30 08:15:55 +09:00

272 lines
5.6 KiB
CSS

/* 항목 고르기 모달 — 왼쪽 나무 · 오른쪽 폴더 모양 · 아래 단추 */
/* 공용 모달(.ui-modal)의 폭 · 높이보다 앞서게 — 불러오는 차례에 따라 뒤집히지 않도록 두 클래스 */
.ui-modal.ui-item-picker {
width: min(1320px, 96vw);
max-height: 94vh;
}
.ui-item-picker .ui-modal__body {
height: min(80vh, 800px);
}
.ui-item-picker__cols {
display: grid;
grid-template-columns: minmax(220px, 3fr) minmax(320px, 9fr);
gap: var(--spacing-12);
flex: 1;
min-height: 0;
}
.ui-item-picker__left {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
min-height: 0;
min-width: 0;
}
.ui-item-picker__tree {
display: flex;
flex-direction: column;
gap: 2px;
flex: 1;
min-height: 0;
padding: var(--spacing-4);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
overflow: auto;
}
.ui-item-picker__detail {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
min-width: 0;
min-height: 0;
padding: var(--spacing-12);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
overflow: auto;
}
.ui-item-picker__cols[hidden],
.ui-item-picker__actions[hidden],
.ui-item-picker__edit-host[hidden] {
display: none;
}
.ui-item-picker__head {
display: flex;
flex-direction: column;
gap: var(--spacing-4);
}
/* 프로젝트 복사본 상태 줄 — 가져온 날 · 마스터가 바뀜 · [새로 가져오기] */
.ui-item-picker__status {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-8);
align-items: center;
color: var(--color-text-secondary);
font-size: var(--text-caption);
}
.ui-item-picker__changed {
color: var(--color-warning);
}
.ui-item-picker__fake {
padding: 0 var(--spacing-8);
border: 1px dashed var(--color-border);
border-radius: var(--radius-md);
}
/* 카드 넷 — M02 와 같은 카드 · 칸이 좁으면 한 줄씩(카드 하나가 300px 안 되면) */
.ui-item-picker__cards {
display: flex;
min-width: 0;
}
.ui-item-picker__cards .m02-struct {
flex: 1 1 0;
padding-top: 0;
border-top: 0;
min-width: 0;
}
/* 편집 화면 — 뒤로 · 제목 · 저장 한 줄 + 편집 부품이 남는 높이를 채움 */
.ui-item-picker__edit-host {
display: flex;
flex: 1;
min-height: 0;
}
.ui-item-picker__edit {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
flex: 1;
min-width: 0;
min-height: 0;
}
.ui-item-picker__edit-top {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-8);
align-items: center;
}
.ui-item-picker__edit-title {
flex: 1 1 12rem;
margin: 0;
color: var(--color-text-heading);
font-size: var(--text-body);
overflow-wrap: anywhere;
}
.ui-item-picker__edit-note {
color: var(--color-text-secondary);
font-size: var(--text-caption);
}
.ui-item-picker__edit-body {
display: flex;
flex: 1;
min-height: 0;
min-width: 0;
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
overflow: hidden;
}
.ui-item-picker__edit-sheet,
.ui-item-picker__edit-cad {
display: flex;
flex: 1;
min-width: 0;
min-height: 0;
}
/* 도면 부품(.m02-drawing)이 남는 높이를 채움 — M02 메인 칸과 같은 자리 규칙 */
.ui-item-picker__edit-cad > .m02-drawing {
flex: 1 1 0;
}
.ui-item-picker__edit-sheet > .ss {
flex: 1 1 0;
min-width: 0;
}
.ui-item-picker__edit-inputs {
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
min-height: 0;
padding: var(--spacing-8);
}
.ui-item-picker__edit-inputs > .m02-struct__card {
flex: 1 1 0;
border: 0;
}
.ui-item-picker__edit-inputs .m02-inputs__wrap {
min-height: 0;
}
.ui-item-picker__name {
margin: 0;
font-size: var(--text-body);
color: var(--color-text-heading);
overflow-wrap: anywhere;
}
.ui-item-picker__where,
.ui-item-picker__hint {
margin: 0;
color: var(--color-text-secondary);
font-size: var(--text-caption);
}
.ui-item-picker__hint {
padding: var(--spacing-8);
}
.ui-item-picker__folder {
display: flex;
flex-direction: column;
gap: var(--spacing-4);
margin: 0;
padding: 0 0 0 var(--spacing-12);
border-left: 2px solid var(--color-border);
list-style: none;
}
.ui-item-picker__folder li {
display: flex;
gap: var(--spacing-8);
align-items: baseline;
min-width: 0;
color: var(--color-text-body);
font-size: var(--text-caption);
overflow-wrap: anywhere;
}
.ui-item-picker__folder-label {
flex: 0 0 5.5em;
color: var(--color-text-secondary);
}
.ui-item-picker__key {
color: var(--color-text-secondary);
font-size: 11px;
}
.ui-item-picker__none {
color: var(--color-text-secondary);
}
.ui-item-picker__actions {
display: flex;
justify-content: flex-end;
gap: var(--spacing-8);
}
/* 좁은 폭 — 나무는 위(낮게) · 상세는 아래로 쌓고 카드는 한 줄씩 */
@media (max-width: 760px) {
.ui-item-picker__cols {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: minmax(0, 2fr) minmax(0, 3fr);
overflow: auto;
}
}
/* 구조물 복사본 상태 줄 — 고침 · 마스터가 바뀜 · 원본 없음 표시 */
.ui-item-picker__badge {
padding: 0 var(--spacing-8);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text);
}
.ui-item-picker__badge.is-warn {
border-color: var(--color-warning);
color: var(--color-text);
font-weight: 600;
}
/* [적용] 뒤 구조물 [저장] 안내 한 줄 — 단추 왼쪽 */
.ui-item-picker__saveline {
margin-right: auto;
align-self: center;
color: var(--color-text-secondary);
font-size: var(--text-caption);
}
/* 글 묻는 작은 창(개인에 저장 · 새 항목) */
.ui-modal.ui-item-ask {
width: min(28rem, 92vw);
}