feat: 네이티브 alert/confirm/prompt → 공용 인앱 다이얼로그 (PC 'sb_pt' 제거)
CI / build (push) Failing after 15m30s

- composables/dialog + components/ui/AppDialog(App 루트 마운트)
- window.alert 전역 오버라이드로 모든 alert 인앱화
- confirm/prompt(동기)는 각 호출부를 await dialog.confirm/prompt 로 교체
  (가계부·예산·고정지출·계좌·태그·관리자·게시판·설정 — 삭제/열람제한 등)
- 웹/PC/APK 일관 UI, 의미있는 제목 부여

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-24 21:57:50 +09:00
parent 643bb8011b
commit f533df0024
13 changed files with 222 additions and 14 deletions
+4 -2
View File
@@ -1,8 +1,10 @@
<script setup>
import { onMounted, reactive, ref } from 'vue'
import { adminApi } from '@/api/adminApi'
import { useDialog } from '@/composables/dialog'
import IconBtn from '@/components/ui/IconBtn.vue'
const dialog = useDialog()
const categories = ref([])
const loading = ref(false)
const error = ref(null)
@@ -62,7 +64,7 @@ async function saveCategory(cat) {
}
async function removeCategory(cat) {
if (!confirm(`'${cat.name}' 카테고리와 소속 태그를 모두 삭제할까요?`)) return
if (!(await dialog.confirm(`'${cat.name}' 카테고리와 소속 태그를 모두 삭제할까요?`, { title: '카테고리 삭제', danger: true }))) return
try {
await adminApi.removeCategory(cat.id)
await load()
@@ -84,7 +86,7 @@ async function addTag(cat) {
}
async function removeTag(tag) {
if (!confirm(`'${tag.name}' 태그를 삭제할까요?`)) return
if (!(await dialog.confirm(`'${tag.name}' 태그를 삭제할까요?`, { title: '태그 삭제', danger: true }))) return
try {
await adminApi.removeTag(tag.id)
await load()