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 @@
-
+
-
+
-
+
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' }))