feat(804-7): 줄 쌓기 「수식」 탭 수정 2차(요구 687 · 688)
- 로직 삭제 = 서버 정본에서 바로(로직 줄 + 수식 문서 · `/logic/remove`) → 로직 목록 · 부르는 곳(다른 수식 문서 · 일위대가 조합 · M02 단가산출 바탕)이 있으면 확인 창 전에 막고 까닭(`/logic/users`) - 머리 단추 다섯 — [신규 로직] · [로직 복사/생성] · [로직 삭제] · [되돌림] · [저장] · [저장] 한 번 = 기본정보 + 수식 · [되돌림] = 둘 다 저장 뒤 상태 · 줄 쌓기 [고침 버림] · [수식 저장]은 M01 에서 걷음(M02 사본은 그대로) - 합계 상자 화면 아래 고정 · 원문 손잡이 브라우저 오른쪽 끝 - 왼쪽: 그룹 머리 한 줄(접어도 [+] · X 자리 그대로) · 「비우면 번호 없음」 · 가나다 체크 걷음 · 금액 줄 한 줄 배치 · 이름 단추 = 그 이름 찾은 찾기 창 · 수량 기호 = 값 + 출처 꼬리표 · [+] 메뉴(단가산출 · 율 · 식 · 근거 글 · 틀 찾기 걷음) · 식 글 눌러 그 자리 고침([식 고치기] 걷음) · 단위 = 공용 단위 고르기(친 글도 씀) · 만약 안 탄 갈래 숨김 - 오른쪽 기계 줄: 비목 수 링크 걷음 · 제목 줄 누름 = 시간당 경비 펼침 · 펼친 제목 보통 글 - 요소 키가 기호 이름으로 샌 것(`k_EQ0006`) — 변환기가 자원 이름으로(`k_하베스터`) · 수식 문서 다시 빌드(10 파일 · 78 기호 · 금액 같음) - 시험 페이지 `tools/line-stack-test` · main.py 마운트 · vite 프록시 · M01 왼쪽 「시험: 줄 쌓기」 걷음 - 단위 표준 표 읽기 = 로그인만(M02 일반 사용자 단위 목록) - 시험: test_804_7 새로 · 804_2 · 804_4 이음 글 고침(createStackScreen 줄 나뉨) · 552_3 여는 단추 기본 ⋯ 꼴로 고침(부르는 쪽이 [+] 로 바꿀 수 있음) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+103
-20
@@ -38,7 +38,21 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 산출근거(요구 683) — 왼쪽을 내려도 화면에 고정 · 길면 자기 스크롤(높이 = 스크롤 영역 · fit()) */
|
||||
/* 합계 상자(요구 687-3) — 스크롤해도 화면 아래 고정 */
|
||||
.lstk__foot {
|
||||
position: sticky;
|
||||
inset-block-end: 0;
|
||||
z-index: 2;
|
||||
padding-block: var(--spacing-8);
|
||||
background: var(--color-surface);
|
||||
border-block-start: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.lstk__foot:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 산출근거(요구 683) — 왼쪽을 내려도 화면에 고정 · 길면 자기 스크롤(높이 = 스크롤 영역 − 합계 상자 · fit()) */
|
||||
.lstk[data-edit="1"] .lstk__right {
|
||||
position: sticky;
|
||||
inset-block-start: 0;
|
||||
@@ -81,7 +95,9 @@
|
||||
margin-block-start: calc(-1 * var(--spacing-8));
|
||||
}
|
||||
|
||||
/* 그룹 머리 한 줄(요구 687-6 · 688) — 이름 칸이 늘고 줄어 [+] · X 는 늘 오른쪽 끝(접어도 그대로) */
|
||||
.lstk-ihead {
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
padding: var(--spacing-4) var(--spacing-8);
|
||||
border-inline-start: 4px solid var(--color-accent);
|
||||
@@ -93,7 +109,18 @@
|
||||
border-inline-start-color: var(--color-border-strong);
|
||||
}
|
||||
|
||||
.lstk-ihead > .lstk-f-l {
|
||||
flex: 1 1 auto;
|
||||
min-width: 4em;
|
||||
}
|
||||
|
||||
.lstk-count {
|
||||
flex: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.lstk-no {
|
||||
flex: none;
|
||||
min-width: 1.5em;
|
||||
font-weight: var(--font-weight-bold);
|
||||
color: var(--color-text);
|
||||
@@ -109,14 +136,12 @@
|
||||
}
|
||||
|
||||
.lstk-ihead,
|
||||
.lstk-row,
|
||||
.lstk-fhead,
|
||||
.lstk-frow,
|
||||
.lstk-find,
|
||||
.lstk-ltools {
|
||||
.lstk-find {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-end;
|
||||
align-items: center;
|
||||
gap: var(--spacing-4) var(--spacing-8);
|
||||
min-width: 0;
|
||||
}
|
||||
@@ -125,28 +150,74 @@
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 줄 카드 — 금액 · 글 = 한 줄(요구 687-7 · [손잡이][종류][이름][수량][단위][비목][X] · 좁으면 접힘) · 공식 = 머리 줄 + 식 줄 */
|
||||
.lstk-line {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--spacing-4);
|
||||
padding: var(--spacing-8);
|
||||
padding-inline: var(--spacing-24) var(--spacing-32);
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: var(--spacing-4) var(--spacing-8);
|
||||
padding: var(--spacing-4) var(--spacing-8);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius-sm);
|
||||
background: var(--color-surface-raised);
|
||||
}
|
||||
|
||||
/* 글 · 근거 칸 = 한 줄 높이(세로 묶음에서 늘지 않게) */
|
||||
.lstk-line > .lstk-f-l {
|
||||
.lstk-line.k-공식 {
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
align-items: stretch;
|
||||
position: relative;
|
||||
padding-inline-start: var(--spacing-24);
|
||||
}
|
||||
|
||||
.lstk-line > .lstk-x,
|
||||
.lstk-fhead > .lstk-x {
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
|
||||
.lstk-line > .lstk-f-l,
|
||||
.lstk-line > .lstk-qty {
|
||||
flex: 1 1 8em;
|
||||
min-width: 6em;
|
||||
}
|
||||
|
||||
.lstk-line > .lstk-f-m {
|
||||
flex: 1 1 7em;
|
||||
min-width: 6em;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.lstk-line .lstk-kind {
|
||||
flex: none;
|
||||
min-width: 2.5em;
|
||||
}
|
||||
|
||||
.lstk-wide {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
.lstk-qty.ui-btn {
|
||||
justify-content: flex-start;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.lstk-upick {
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.lstk-ltools {
|
||||
position: absolute;
|
||||
inset-block-start: var(--spacing-4);
|
||||
inset-inline-end: var(--spacing-4);
|
||||
gap: 0;
|
||||
/* 보이는 글을 눌러 고침(요구 687-14) */
|
||||
.lstk-tap {
|
||||
cursor: text;
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
|
||||
.lstk-tap:hover,
|
||||
.lstk-tap:focus-visible {
|
||||
background: var(--color-surface-sunken);
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
/* 끌기(804-5) — 손잡이 · 끄는 것 반투명 · 놓을 자리 = 위 · 아래 선 · 빈 항목 = 점선 */
|
||||
@@ -155,9 +226,13 @@
|
||||
}
|
||||
|
||||
.lstk-line > .lstk-grip {
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.lstk-line.k-공식 > .lstk-grip {
|
||||
position: absolute;
|
||||
inset-block-start: var(--spacing-12);
|
||||
inset-inline-start: var(--spacing-8);
|
||||
inset-block-start: var(--spacing-8);
|
||||
inset-inline-start: var(--spacing-4);
|
||||
}
|
||||
|
||||
.lstk-edit[data-dragging] {
|
||||
@@ -185,6 +260,8 @@
|
||||
}
|
||||
|
||||
.lstk-res {
|
||||
flex: 0 1 auto;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@@ -264,8 +341,14 @@
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
/* 펼친 문서 제목 = 보통 글(링크 꼴 없음 · 요구 687-11) */
|
||||
.lstk-out tr.subhead .lstk-h {
|
||||
color: var(--color-accent);
|
||||
font-weight: var(--font-weight-medium);
|
||||
color: var(--color-text);
|
||||
}
|
||||
|
||||
.lstk-ftitle {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.lstk-gap {
|
||||
|
||||
Reference in New Issue
Block a user