mirror of
https://github.com/nextcloud/server.git
synced 2026-10-03 16:58:44 +02:00
The app is built by the Vue 3 toolchain from here on: the entry mounts with createApp(), every component uses `<script setup lang="ts">` and CSS modules, and the shipped checks are registered as custom elements through defineCustomElement() instead of the wrapper that faked away the shadow root. Notable consequences of the engine change: - Vue never attaches an `onUpdate:*` listener to a DOM element, taking it for the v-model listener of a component, so the events of a check element are subscribed to directly through useCustomElementEvents(). The protocol itself is unchanged: Vue dispatches both `update:modelValue` and the hyphenated name, and the host keeps listening for the hyphenated one. - `disabled` is only passed to a check element when it applies, because on a dashed tag Vue writes the literal string "false", which reads as truthy. - Styles are no longer injected by the bundle, so the settings page has to load the app stylesheet like every other Vue 3 app does. - moment-timezone is replaced by Intl. Zones of saved rules keep validating even when they are no longer offered, e.g. legacy aliases. Filter rows are keyed by the check they render and derive their filter and comparator from it, so removing a row no longer leaves its neighbour showing the removed filter. The three "predefined value or custom text" checks share one component, and the removed `component`/`options` plugin path now logs an error naming the plugin instead of rendering. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de> Assisted-by: ClaudeCode:claude-opus-5