From efe0eb54171734ef81318c391c698387771df4a3 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 10 Oct 2026 20:43:52 +0900 Subject: [PATCH] =?UTF-8?q?style(table):=20=EB=B3=91=ED=95=A9=20=EC=B9=B8?= =?UTF-8?q?=20=3D=20=EC=A4=84=20=EA=B0=95=EC=A1=B0=20=EB=B0=96=20=C2=B7=20?= =?UTF-8?q?=ED=98=B8=EB=B2=84=20=C2=B7=20=EA=B3=A0=EB=A5=B8=20=EC=A4=84=20?= =?UTF-8?q?=C2=B7=20=EC=A4=84=EB=AC=B4=EB=8A=AC=20=EC=95=88=20=EC=B9=A0?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20=EA=B7=B8=20=EC=A4=84=20=EB=82=98=EB=A8=B8?= =?UTF-8?q?=EC=A7=80=20=EC=B9=B8=EB=A7=8C=20(245-1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01SE9MxeXTu2uaDZ55BJowAY --- resources/tester/test_245_1_merged_hover.py | 43 +++++++++++++++++++++ ui_template/ui_template_data_table.css | 6 +++ 2 files changed, 49 insertions(+) create mode 100644 resources/tester/test_245_1_merged_hover.py diff --git a/resources/tester/test_245_1_merged_hover.py b/resources/tester/test_245_1_merged_hover.py new file mode 100644 index 000000000..bf19478f8 --- /dev/null +++ b/resources/tester/test_245_1_merged_hover.py @@ -0,0 +1,43 @@ +"""245-1 병합 표 호버 정리 — 병합 칸(is-merged)은 줄 강조(호버 · 이동해 온 줄 · 줄무늬) 밖. + +규칙 (가) = 병합 칸은 칠하지 않고 그 줄 나머지 칸만. 같은 세기 선택자라 병합 칸 규칙이 뒤에 와야 이김. +""" + +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +CSS = (ROOT / "ui_template" / "ui_template_data_table.css").read_text("utf-8") +MERGED = ".ui-data-table__table tbody tr td.is-merged {" + + +def _at(sel: str) -> int: + i = CSS.find(sel) + assert i >= 0, sel + return i + + +def test_병합_칸_줄_강조_밖(): + body = CSS[_at(MERGED) :].split("}", 1)[0] + assert "background: var(--color-canvas);" in body + assert "box-shadow: none;" in body + + +def test_호버_고른줄_줄무늬_뒤에_옴(): + at = _at(MERGED) + for sel in ( + ".ui-data-table__table tbody tr:hover td {", + ".ui-data-table__table tbody tr.is-focus td {", + ".ui-data-table__table tbody tr.is-alt td {", + ): + assert _at(sel) < at, sel + + +def test_병합_칸_글_위_정렬_그대로(): + assert re.search(r"td\.is-merged \{\s*vertical-align: top;", CSS) + + +def test_B09_빨강_범위는_병합_칸에도_남음(): + page = (ROOT / "B09_Estimation" / "B09_Estimation_UI_Page.css").read_text("utf-8") + # 빨강(is-pick)은 .b09-estimation 이 붙어 더 셈 — 병합 칸 box-shadow: none 에 안 덮임 + assert ".b09-estimation .ui-data-table__table tbody tr.is-pick td {" in page diff --git a/ui_template/ui_template_data_table.css b/ui_template/ui_template_data_table.css index 6cc109a0f..794f8ba7c 100644 --- a/ui_template/ui_template_data_table.css +++ b/ui_template/ui_template_data_table.css @@ -276,3 +276,9 @@ vertical-align: top; padding-top: calc((var(--dt-row-h) - 1.3em) / 2); } + +/* 245-1 병합 칸 = 줄 강조 밖 — 올린 줄 · 이동해 온 줄 · 줄무늬가 병합 칸을 칠하지 않음 · 그 줄 나머지 칸만 */ +.ui-data-table__table tbody tr td.is-merged { + background: var(--color-canvas); + box-shadow: none; +}