feat(10.1-02): mount plugin widget elements and run their actions from the form
- pluginAssets loads controller scripts and stylesheets from {base}/assets/ only, once per URL
- WidgetField mounts the custom element with attributes only and posts summer-action through the typed client
- Only declared fill keys returned by the server are patched; the form turns dirty and nothing saves
- widget is a registered valueless type rendered on create and update, labelled as a group
- backend::lang.extension strings in en and pl; embedded dist rebuilt
This commit is contained in:
22
admin/src/components/ui/ExtensionFailure.vue
Normal file
22
admin/src/components/ui/ExtensionFailure.vue
Normal file
@@ -0,0 +1,22 @@
|
||||
<script setup lang="ts">
|
||||
import { CircleAlert } from '@lucide/vue'
|
||||
|
||||
// The extension failure box (UI-SPEC S5): UnsupportedField's geometry with a
|
||||
// danger icon, shown when a widget or partial could not be loaded. One line
|
||||
// sits centred in the 44px box; longer text wraps, the box grows with 10px
|
||||
// vertical padding and the icon stays on the first line.
|
||||
defineProps<{ text: string }>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
role="alert"
|
||||
data-extension-failure
|
||||
class="flex min-h-input items-center rounded-control border-[1.5px] border-dashed border-border-strong bg-subtle px-3.5 py-2.5 text-[13px] text-muted"
|
||||
>
|
||||
<span class="flex min-w-0 items-start gap-2.5">
|
||||
<CircleAlert :size="16" class="mt-0.5 shrink-0 text-danger" aria-hidden="true" />
|
||||
<span class="min-w-0 [overflow-wrap:anywhere]">{{ text }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user