diff --git a/src/components/dialog/TransferManualReviewDialog.vue b/src/components/dialog/TransferManualReviewDialog.vue
index 608f3809..9b234169 100644
--- a/src/components/dialog/TransferManualReviewDialog.vue
+++ b/src/components/dialog/TransferManualReviewDialog.vue
@@ -1,5 +1,6 @@
-
+
-
+
@@ -203,10 +210,35 @@ async function resolveManualReview(decision: TransferManualReviewDecision) {
display: flex;
flex-direction: column;
gap: 1rem;
- max-block-size: min(70vh, 42rem);
+ min-block-size: 0;
+ min-inline-size: 0;
+ overflow-y: auto;
padding: 1.5rem !important;
}
+.manual-review-dialog__header :deep(.v-card-item__content) {
+ min-inline-size: 0;
+ overflow: visible;
+ padding-inline-end: 2.5rem;
+}
+
+.manual-review-dialog :deep(.manual-review-dialog__title),
+.manual-review-dialog :deep(.manual-review-dialog__subtitle) {
+ overflow: visible;
+ overflow-wrap: anywhere;
+ text-overflow: clip;
+ white-space: normal;
+ word-break: break-word;
+}
+
+.manual-review-dialog :deep(.manual-review-dialog__title) {
+ line-height: 1.35;
+}
+
+.manual-review-dialog :deep(.manual-review-dialog__subtitle) {
+ line-height: 1.5;
+}
+
.manual-review-dialog__summary {
display: flex;
flex-direction: column;
@@ -250,15 +282,28 @@ async function resolveManualReview(decision: TransferManualReviewDecision) {
font-size: 0.84rem;
gap: 0.5rem;
line-height: 1.5;
+ min-inline-size: 0;
padding-block-start: 0.75rem;
}
+.manual-review-dialog__error > span {
+ min-inline-size: 0;
+ overflow-wrap: anywhere;
+ white-space: normal;
+ word-break: break-word;
+}
+
.manual-review-dialog__notice {
+ inline-size: 100%;
margin: 0;
}
-.manual-review-dialog__evidence {
- border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
+.manual-review-dialog__notice :deep(.v-alert__content) {
+ min-inline-size: 0;
+ overflow: visible;
+ overflow-wrap: anywhere;
+ white-space: normal;
+ word-break: break-word;
}
.manual-review-dialog__evidence pre {
diff --git a/src/components/dialog/__tests__/TransferManualReviewDialog.spec.ts b/src/components/dialog/__tests__/TransferManualReviewDialog.spec.ts
index daabb14b..2ce53c34 100644
--- a/src/components/dialog/__tests__/TransferManualReviewDialog.spec.ts
+++ b/src/components/dialog/__tests__/TransferManualReviewDialog.spec.ts
@@ -5,6 +5,14 @@ import { renderWithProviders } from '@tests/support/render'
import { flushPromises } from '@vue/test-utils'
import userEvent from '@testing-library/user-event'
import { beforeEach, describe, expect, it, vi } from 'vitest'
+import { readFileSync } from 'node:fs'
+import { resolve } from 'node:path'
+import { cwd } from 'node:process'
+
+const transferManualReviewSource = readFileSync(
+ resolve(cwd(), 'src/components/dialog/TransferManualReviewDialog.vue'),
+ 'utf8',
+)
const mocks = vi.hoisted(() => ({
apiPost: vi.fn(),
@@ -64,6 +72,13 @@ describe('TransferManualReviewDialog', () => {
mocks.apiPost.mockResolvedValue({})
})
+ it('uses mobile fullscreen and keeps long review content readable', () => {
+ expect(transferManualReviewSource).toContain(':fullscreen="!display.mdAndUp.value"')
+ expect(transferManualReviewSource).toContain('.manual-review-dialog__error > span')
+ expect(transferManualReviewSource).toContain('.manual-review-dialog__notice :deep(.v-alert__content)')
+ expect(transferManualReviewSource).not.toMatch(/\.manual-review-dialog__evidence\s*\{[^}]*border:/s)
+ })
+
it('requires review notes before submitting a decision', async () => {
const user = userEvent.setup()