fix(cropper): make load failures visible; loud config errors

'Load next queued' did nothing because the running server had been started
without its env file (a restart used '-f .env' from tools/, where no .env
exists), so the cropper was unconfigured and every action answered 503 —
and none of that was visible, because notifications never rendered either:

- notifications used cds-toast/cds-toast-item, which the Carbon bundle does
  not define; a cds-toast-notification element renders nothing standalone in
  this build. The cropper now uses cds-inline-notification in the fixed
  toast viewport (renders, themed, close button) like the wizard
- an unconfigured deployment now says so on the page (503 'Cropper
  unavailable') instead of rendering actions that all fail, and logs a
  startup warning naming the missing credentials
- tests: notifications use a registered element; unconfigured page 503
This commit is contained in:
2026-10-01 04:36:31 +01:00
parent cb5b151988
commit 95200b6abf
6 changed files with 44 additions and 11 deletions
+3 -4
View File
@@ -37,10 +37,9 @@
<!-- notifications -->
<div class="toast-viewport" aria-live="polite">
<cds-toast>
<cds-toast-item v-for="t in toasts" v-bind:key="t.id" v-bind:kind="t.kind"
v-bind:title="t.title" v-bind:caption="t.caption" timeout="6000"></cds-toast-item>
</cds-toast>
<cds-inline-notification v-for="t in toasts" v-bind:key="t.id" v-bind:kind="t.kind"
v-bind:title="t.title" v-bind:subtitle="t.caption" low-contrast
v-on:cds-notification-closed="removeToast(t.id)"></cds-inline-notification>
</div>
<!-- 1 · load -->
+3 -2
View File
@@ -20,7 +20,7 @@ body.app {
/* prevent FOUC on web components */
cds-button:not(:defined), cds-tag:not(:defined), cds-tile:not(:defined),
cds-clickable-tile:not(:defined), cds-inline-notification:not(:defined),
cds-toast:not(:defined), cds-toast-item:not(:defined), cds-progress-bar:not(:defined) {
cds-progress-bar:not(:defined) {
visibility: hidden;
}
/* Carbon styles the shadow anchor inside tiles, not the host — give the host
@@ -183,7 +183,8 @@ cds-button::part(button) { font-size: 14px; }
.review-options .form-check { margin-bottom: 0.35rem; }
/* ── notifications viewport (cropper toasts) ────────────────────────────── */
.toast-viewport { position: fixed; top: 3.5rem; right: 1rem; z-index: 1100; width: min(360px, calc(100vw - 2rem)); }
.toast-viewport { position: fixed; top: 3.5rem; right: 1rem; z-index: 1100; width: min(380px, calc(100vw - 2rem)); display: flex; flex-direction: column; gap: 0.5rem; }
.toast-viewport cds-inline-notification:not(:defined) { visibility: hidden; }
/* ── footer ─────────────────────────────────────────────────────────────── */
footer.foot { flex-shrink: 0; padding: 1.1rem 0 1.3rem; color: var(--cds-text-helper, #6f6f6f); font-size: 12px; border-top: 1px solid var(--cds-border-subtle, #c6c6c6); }