diff --git a/ui/src/components/header/AutoAlertBanner.vue b/ui/src/components/header/AutoAlertBanner.vue index a4c30bf9695c..0ed6f0f0b959 100644 --- a/ui/src/components/header/AutoAlertBanner.vue +++ b/ui/src/components/header/AutoAlertBanner.vue @@ -50,6 +50,17 @@ {{ tr('label.goto.the.alertRules') }} + + + + @@ -643,7 +654,7 @@ import { nextTick, getCurrentInstance } from 'vue' -import { ExclamationCircleFilled, SoundOutlined, PauseCircleOutlined, LinkOutlined } from '@ant-design/icons-vue' +import { ExclamationCircleFilled, SoundOutlined, PauseCircleOutlined, LinkOutlined, CloseOutlined } from '@ant-design/icons-vue' import { message } from 'ant-design-vue' import { api } from '@/api' import MarkdownIt from 'markdown-it' @@ -656,6 +667,7 @@ export default { SoundOutlined, PauseCircleOutlined, LinkOutlined, + CloseOutlined, RuleSilenceModal: defineAsyncComponent(() => import('@/views/infra/RuleSilenceModal.vue')), RulePauseModal: defineAsyncComponent(() => import('@/views/infra/RulePauseModal.vue')) }, diff --git a/ui/src/components/page/GlobalLayout.vue b/ui/src/components/page/GlobalLayout.vue index 3fbee9757036..04f44733a799 100644 --- a/ui/src/components/page/GlobalLayout.vue +++ b/ui/src/components/page/GlobalLayout.vue @@ -527,6 +527,13 @@ body.dark-mode .banner-spacer::before { /* 배너 높이만큼 밑으로 내려서 겹치지 않게 처리 */ top: calc(24px + var(--autoBannerHeight, 0px)) !important; } + +/* 일반 모달은 최상단 경고 배너보다 항상 위에 렌더링 */ +.ant-modal-root, +.ant-modal-mask, +.ant-modal-wrap { + z-index: 2147483655 !important; +} @media (max-width: 768px) { /* 1. 사이드바를 공중에 띄워서 공간 차지를 못하게 만듦 */ .ant-layout.layout.mobile .sticky-sidebar { @@ -551,7 +558,7 @@ body.dark-mode .banner-spacer::before { font-size: 0; /* 글자 크기 0으로 숨김 */ } - /* 3. ★ 아이콘 심폐소생술 (여기가 중요!) ★ */ + /* 3. ★ 아이콘 조정 */ /* .anticon: 번역 아이콘 등 / .ant-avatar: 사용자 프로필 */ .user-menu .action .anticon, .user-menu .action .ant-avatar { diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index b0818f2605fc..555a2ec3d15d 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -914,7 +914,7 @@ export default { }, handleContextAction (action) { this.closeContextQuickView() - this.$parent.execAction(action) + this.$parent.execAction(action, false) }, generateRowKeyValue (record) { return record.uid || (record.metadata && record.metadata.rule_uid) || record.id || record.name || record.usageType diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index 2e1e5dd6b156..4ef26c9b5ea4 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -141,7 +141,7 @@
- + -
+
@@ -462,7 +462,7 @@
-
+
0 && this.currentAction?.groupAction) { + if (this.selectedRowKeys.length > 0 && this.currentAction?.invokedAsGroupAction) { } else { return { props: { type: 'primary' } } } @@ -1137,7 +1144,7 @@ export default { downloadLink.click() }, getCancelProps () { - if (this.selectedRowKeys.length > 0 && this.currentAction?.groupAction) { + if (this.selectedRowKeys.length > 0 && this.currentAction?.invokedAsGroupAction) { return { props: { type: 'primary' } } } else { return { props: { type: 'default' } } @@ -1589,7 +1596,10 @@ export default { this.$router.push({ name: action.api, query }) return } - this.currentAction = action + this.currentAction = { + ...action, + invokedAsGroupAction: !!isGroupAction + } this.currentAction.params = store.getters.apis[this.currentAction.api].params this.resource = action.resource this.$emit('change-resource', this.resource) @@ -1855,7 +1865,7 @@ export default { handleSubmit (e) { if (this.actionLoading) return this.promises = [] - if (!this.dataView && this.currentAction.groupAction && this.selectedRowKeys.length > 0) { + if (!this.dataView && this.currentAction.invokedAsGroupAction && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys.length > 0) { this.bulkColumns = this.chosenColumns this.selectedItems = this.selectedItems.map(v => ({ ...v, status: 'InProgress' }))