feat(cupang): 센터 알림을 가운데 팝업으로, 그룹 헤더/목록 구분 강화
브라우저 기본 alert/confirm 은 상단에 붙고 URL 이 그대로 보여 어수선했다. 기존 .cpg-modal 스타일을 재사용해 화면 가운데 팝업으로 바꾸고, 삭제 확인도 같은 팝업(빨간 확인 버튼)으로 통일했다. ESC·배경 클릭으로 닫힘. 목록은 헤더와 항목이 같은 평면에 있어 구분이 약했다. 그룹을 테두리 있는 패널로 만들고 헤더에 회색 바 + 카운트 배지 + 접기 캐럿을 뒀다. 센터명은 고정폭 글꼴로 정렬감을 주고, 비활성은 취소선으로 표시.
This commit is contained in:
+69
-30
@@ -169,7 +169,7 @@
|
||||
.cpg-inline-form { display: inline-flex; gap: 6px; align-items: center; margin: 0; }
|
||||
.cpg-row-actions { display: flex; gap: 6px; flex-wrap: wrap; }
|
||||
|
||||
/* ── 입고센터 관리 (상단: 추가·검색 / 아래: 지역 그룹 목록) ── */
|
||||
/* ── 입고센터 관리 (상단: 추가·검색 / 아래: 지역 그룹 패널) ── */
|
||||
.cpg-center-card { padding: 16px; }
|
||||
|
||||
.cpg-center-bar {
|
||||
@@ -184,46 +184,80 @@
|
||||
|
||||
/* 멀티컬럼: 한 열을 위→아래로 읽고, 다 차면 다음 열로 */
|
||||
.cpg-center-cols {
|
||||
columns: 4 220px;
|
||||
column-gap: 20px;
|
||||
}
|
||||
.cpg-center-group {
|
||||
break-inside: avoid; page-break-inside: avoid;
|
||||
margin: 0 0 16px;
|
||||
}
|
||||
.cpg-center-gtitle {
|
||||
display: flex; align-items: center; gap: 6px;
|
||||
padding: 0 4px 4px;
|
||||
border-bottom: 2px solid var(--color-rich-black);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.cpg-center-gname { font-size: 13px; font-weight: 700; letter-spacing: .02em; }
|
||||
.cpg-center-gcount {
|
||||
font-size: 11px; font-weight: 600; line-height: 1;
|
||||
padding: 2px 6px; border-radius: 999px;
|
||||
background: var(--color-subtle-ash); color: var(--color-midtone-gray);
|
||||
columns: 4 230px;
|
||||
column-gap: 16px;
|
||||
}
|
||||
|
||||
/* 그룹 = 헤더 바 + 목록 패널 */
|
||||
.cpg-center-group {
|
||||
break-inside: avoid; page-break-inside: avoid;
|
||||
margin: 0 0 12px;
|
||||
border: 1px solid var(--color-subtle-ash);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
background: var(--color-canvas-white);
|
||||
}
|
||||
|
||||
.cpg-center-gtitle {
|
||||
display: flex; align-items: center; gap: 6px; width: 100%;
|
||||
padding: 7px 10px;
|
||||
border: 0; border-bottom: 1px solid var(--color-subtle-ash);
|
||||
background: var(--color-ghost-gray);
|
||||
cursor: pointer; text-align: left;
|
||||
font-family: inherit;
|
||||
}
|
||||
.cpg-center-gtitle:hover { background: var(--color-subtle-ash); }
|
||||
.cpg-center-gname {
|
||||
flex: 1 1 auto; min-width: 0;
|
||||
font-size: 12px; font-weight: 700; letter-spacing: .04em;
|
||||
color: var(--color-rich-black);
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
.cpg-center-gcount {
|
||||
flex: 0 0 auto;
|
||||
font-family: var(--font-geist-mono);
|
||||
font-size: 11px; font-weight: 600; line-height: 1;
|
||||
padding: 3px 6px; border-radius: 4px;
|
||||
background: var(--color-canvas-white);
|
||||
border: 1px solid var(--color-subtle-ash);
|
||||
color: var(--color-midtone-gray);
|
||||
}
|
||||
/* 접기 캐럿 */
|
||||
.cpg-center-caret {
|
||||
flex: 0 0 auto; width: 0; height: 0;
|
||||
border-left: 4px solid var(--color-midtone-gray);
|
||||
border-top: 4px solid transparent;
|
||||
border-bottom: 4px solid transparent;
|
||||
transform: rotate(90deg);
|
||||
transition: transform .12s ease;
|
||||
}
|
||||
.cpg-center-group.is-collapsed .cpg-center-caret { transform: rotate(0deg); }
|
||||
.cpg-center-group.is-collapsed .cpg-center-glist { display: none; }
|
||||
.cpg-center-group.is-collapsed .cpg-center-gtitle { border-bottom: 0; }
|
||||
|
||||
.cpg-center-glist { padding: 2px 0; }
|
||||
|
||||
.cpg-center-row {
|
||||
display: flex; align-items: center; gap: 7px;
|
||||
padding: 5px 4px;
|
||||
border-bottom: 1px solid var(--color-subtle-ash);
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
padding: 5px 10px;
|
||||
min-width: 0;
|
||||
}
|
||||
.cpg-center-row:last-child { border-bottom: none; }
|
||||
.cpg-center-row + .cpg-center-row { border-top: 1px solid var(--color-ghost-gray); }
|
||||
.cpg-center-row:hover { background: var(--color-ghost-gray); }
|
||||
.cpg-center-dot {
|
||||
flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%;
|
||||
background: var(--color-success-green, #10c22b);
|
||||
flex: 0 0 auto; width: 6px; height: 6px; border-radius: 50%;
|
||||
background: var(--color-success-green);
|
||||
}
|
||||
.cpg-center-row.is-inactive { opacity: .5; }
|
||||
.cpg-center-row.is-inactive .cpg-center-name { color: var(--color-midtone-gray); text-decoration: line-through; }
|
||||
.cpg-center-row.is-inactive .cpg-center-dot { background: var(--color-subtle-ash); }
|
||||
.cpg-center-name {
|
||||
flex: 1 1 auto; min-width: 0;
|
||||
font-size: 14px; font-weight: 500;
|
||||
font-family: var(--font-geist-mono);
|
||||
font-size: 13px;
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
|
||||
/* 행 액션: 평소엔 흐리게, hover/focus 시 또렷하게 */
|
||||
/* 행 액션: hover/focus 시에만 노출 */
|
||||
.cpg-center-acts {
|
||||
display: inline-flex; gap: 2px; flex: 0 0 auto;
|
||||
opacity: 0; transition: opacity .12s ease;
|
||||
@@ -235,14 +269,19 @@
|
||||
}
|
||||
.cpg-icon-btn {
|
||||
border: 0; background: none; cursor: pointer;
|
||||
font-size: 11px; line-height: 1; padding: 3px 5px; border-radius: 6px;
|
||||
font-family: inherit;
|
||||
font-size: 11px; line-height: 1; padding: 3px 5px; border-radius: 4px;
|
||||
color: var(--color-midtone-gray);
|
||||
}
|
||||
.cpg-icon-btn:hover { background: var(--color-subtle-ash); color: var(--color-rich-black); }
|
||||
.cpg-icon-btn.is-danger:hover { background: var(--color-ghost-gray); color: var(--color-callout-red); }
|
||||
.cpg-icon-btn.is-danger:hover { background: var(--color-subtle-ash); color: var(--color-callout-red); }
|
||||
|
||||
.cpg-center-empty { margin: 8px 0 0; }
|
||||
|
||||
/* 센터 관리 팝업 */
|
||||
.cpg-center-dlgmsg { margin: 0; font-size: 14px; line-height: 1.5; word-break: keep-all; }
|
||||
.cpg-center-dlgact { display: flex; gap: 6px; justify-content: flex-end; margin-top: 4px; }
|
||||
|
||||
.cpg-btn-sm { padding: 3px 8px; font-size: 12px; flex: 0 0 auto; }
|
||||
|
||||
/* ── 라인 테이블 ── */
|
||||
|
||||
Reference in New Issue
Block a user