fix(fe): stretch QueryStateBoundary and BatchOperationsPageV2 to display grid seamlessly
This commit is contained in:
@@ -20,7 +20,7 @@ const props = defineProps<{
|
||||
const emit = defineEmits<{ retry: [] }>()
|
||||
</script>
|
||||
<template>
|
||||
<section :aria-busy="props.loading || props.processing">
|
||||
<section class="ks-query-boundary" :aria-busy="props.loading || props.processing">
|
||||
<KsInlineMessage v-if="props.loading" severity="info" message="불러오는 중입니다." />
|
||||
<KsInlineMessage v-else-if="props.unauthorized" severity="warning" title="로그인 필요" message="로그인 후 다시 시도하세요." />
|
||||
<KsInlineMessage v-else-if="props.forbidden" severity="danger" title="권한 없음" message="이 작업을 수행할 권한이 없습니다." />
|
||||
@@ -43,4 +43,7 @@ const emit = defineEmits<{ retry: [] }>()
|
||||
<small v-if="props.staleAt">데이터 기준시각: {{ props.staleAt }}</small>
|
||||
</section>
|
||||
</template>
|
||||
<style scoped>.ks-state-error{display:grid;gap:var(--ks-space-2);justify-items:start}</style>
|
||||
<style scoped>
|
||||
.ks-query-boundary { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }
|
||||
.ks-state-error { display: grid; gap: var(--ks-space-2); justify-items: start; }
|
||||
</style>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<script setup lang="ts">import { computed } from 'vue'; import PageLayout from '../../layouts/PageLayout.vue'; import StandardScreenBoundary from './StandardScreenBoundary.vue'; import type { StandardScreenProps } from '../../contracts/screenContract'; const props=defineProps<StandardScreenProps>(); const contentBlocked = computed(() => ['LOADING','ERROR','UNAUTHORIZED','FORBIDDEN','CONFLICT','EXPIRED','READONLY','PROCESSING'].includes(props.state ?? 'READY')); defineEmits<{retry:[]}>()</script>
|
||||
<template><PageLayout :title="props.title" :subtitle="props.subtitle" :status="props.state" :as-of="props.evidence?.asOf" :version="props.evidence?.version"><template #actions><slot name="actions"/></template><template #summary><slot name="runSummary"/></template><template #filters><slot name="filters"/></template><StandardScreenBoundary :state="props.state" :warning="props.warning" @retry="$emit('retry')"><section v-if="!contentBlocked" class="ks-stack"><div v-if="$slots.timeline" class="ks-card ks-section"><slot name="timeline"/></div><div v-if="$slots.records" class="ks-card ks-section"><slot name="records"/></div><div v-if="$slots.reprocess" class="ks-card ks-section"><slot name="reprocess"/></div><slot /></section></StandardScreenBoundary><template #aside><slot name="runbook"/></template></PageLayout></template>
|
||||
<style scoped>.ks-section{padding:var(--ks-space-4)}</style>
|
||||
<template><PageLayout :title="props.title" :subtitle="props.subtitle" :status="props.state" :as-of="props.evidence?.asOf" :version="props.evidence?.version"><template #actions><slot name="actions"/></template><template #summary><slot name="runSummary"/></template><template #filters><slot name="filters"/></template><StandardScreenBoundary :state="props.state" :warning="props.warning" @retry="$emit('retry')"><section v-if="!contentBlocked" class="ks-stack ks-batch-page-section"><div v-if="$slots.timeline" class="ks-card ks-section"><slot name="timeline"/></div><div v-if="$slots.records" class="ks-card ks-section"><slot name="records"/></div><div v-if="$slots.reprocess" class="ks-card ks-section"><slot name="reprocess"/></div><slot /></section></StandardScreenBoundary><template #aside><slot name="runbook"/></template></PageLayout></template>
|
||||
<style scoped>.ks-section{padding:var(--ks-space-4)}.ks-batch-page-section{display:flex;flex-direction:column;flex:1;min-height:0;height:100%}</style>
|
||||
|
||||
Reference in New Issue
Block a user