fix: 사용자 의견 목록/전체보기에서 텍스트 드래그·선택 가능하도록 수정
관리자 레이아웃 body의 select-none 때문에 의견 본문을 선택·복사할 수 없던 문제를 opt-in 클래스(.fb-selectable)로 해제. 목록형·전체보기 화면에 적용하고, 목록형은 텍스트 선택 중 행 클릭 시 상세로 이동하지 않도록 가드 추가. (의견 상세 화면은 이미 동일 방식으로 적용됨) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,7 @@ $badge = static function (string $s): string {
|
|||||||
return '<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium ' . $c . '">' . esc(FeedbackModel::statusLabel($s)) . '</span>';
|
return '<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium ' . $c . '">' . esc(FeedbackModel::statusLabel($s)) . '</span>';
|
||||||
};
|
};
|
||||||
?>
|
?>
|
||||||
|
<div class="fb-selectable">
|
||||||
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel flex flex-wrap items-center justify-between gap-2">
|
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel flex flex-wrap items-center justify-between gap-2">
|
||||||
<span class="text-sm font-bold text-gray-700">사용자 의견 · 전체보기 (<?= count($list) ?>건)</span>
|
<span class="text-sm font-bold text-gray-700">사용자 의견 · 전체보기 (<?= count($list) ?>건)</span>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
@@ -115,3 +116,4 @@ $badge = static function (string $s): string {
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
</div><!-- /.fb-selectable -->
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ $badge = static function (string $s): string {
|
|||||||
return '<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium ' . $c . '">' . esc(FeedbackModel::statusLabel($s)) . '</span>';
|
return '<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium ' . $c . '">' . esc(FeedbackModel::statusLabel($s)) . '</span>';
|
||||||
};
|
};
|
||||||
?>
|
?>
|
||||||
|
<div class="fb-selectable">
|
||||||
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel flex flex-wrap items-center justify-between gap-2">
|
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel flex flex-wrap items-center justify-between gap-2">
|
||||||
<span class="text-sm font-bold text-gray-700">사용자 의견</span>
|
<span class="text-sm font-bold text-gray-700">사용자 의견</span>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
@@ -53,7 +54,7 @@ $badge = static function (string $s): string {
|
|||||||
<tr><td colspan="7" class="text-center text-gray-400 py-6">접수된 의견이 없습니다.</td></tr>
|
<tr><td colspan="7" class="text-center text-gray-400 py-6">접수된 의견이 없습니다.</td></tr>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php foreach ($list as $row): ?>
|
<?php foreach ($list as $row): ?>
|
||||||
<tr class="cursor-pointer hover:bg-blue-50/60" onclick="window.location.href='<?= site_url('admin/feedback/' . (int) $row->fb_idx) ?>'">
|
<tr class="cursor-pointer hover:bg-blue-50/60" onclick="if(!window.getSelection().toString()){window.location.href='<?= site_url('admin/feedback/' . (int) $row->fb_idx) ?>';}">
|
||||||
<td class="text-left text-gray-500"><?= (int) $row->fb_idx ?></td>
|
<td class="text-left text-gray-500"><?= (int) $row->fb_idx ?></td>
|
||||||
<td class="text-left text-gray-500 text-[12px]"><?= esc((string) ($row->fb_regdate ?? '')) ?></td>
|
<td class="text-left text-gray-500 text-[12px]"><?= esc((string) ($row->fb_regdate ?? '')) ?></td>
|
||||||
<td class="text-left"><?= $badge((string) ($row->fb_status ?? 'new')) ?></td>
|
<td class="text-left"><?= $badge((string) ($row->fb_status ?? 'new')) ?></td>
|
||||||
@@ -68,3 +69,4 @@ $badge = static function (string $s): string {
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<?php if (isset($pager)): ?><div class="mt-3"><?= $pager->links() ?></div><?php endif; ?>
|
<?php if (isset($pager)): ?><div class="mt-3"><?= $pager->links() ?></div><?php endif; ?>
|
||||||
|
</div><!-- /.fb-selectable -->
|
||||||
|
|||||||
@@ -91,6 +91,13 @@ tailwind.config = {
|
|||||||
.data-table tbody td { color: #374151; }
|
.data-table tbody td { color: #374151; }
|
||||||
.data-table tbody tr:last-child td { border-bottom: 0; }
|
.data-table tbody tr:last-child td { border-bottom: 0; }
|
||||||
.data-table tbody tr:hover td { background-color: #f9fafb; }
|
.data-table tbody tr:hover td { background-color: #f9fafb; }
|
||||||
|
/* body의 select-none 상속을 무효화해 본문 텍스트를 드래그·복사할 수 있게 하는 opt-in 클래스 */
|
||||||
|
.fb-selectable, .fb-selectable * {
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
}
|
||||||
@media print {
|
@media print {
|
||||||
.portal-header, .sidebar, .portal-footer, .no-print, nav.portal-top-nav { display: none !important; }
|
.portal-header, .sidebar, .portal-footer, .no-print, nav.portal-top-nav { display: none !important; }
|
||||||
body.gov-portal-shell { background: #fff; display: block; }
|
body.gov-portal-shell { background: #fff; display: block; }
|
||||||
|
|||||||
Reference in New Issue
Block a user