Skip to content

Feat/vue3/retire vue2 only deps - #13626

Open
GVodyanov wants to merge 8 commits into
mainfrom
feat/vue3/retire-vue2-only-deps
Open

Feat/vue3/retire vue2 only deps#13626
GVodyanov wants to merge 8 commits into
mainfrom
feat/vue3/retire-vue2-only-deps

Conversation

@GVodyanov

@GVodyanov GVodyanov commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Related to A-2 of #13622

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

The directive was registered globally in the entry point but never used
in a template or stylesheet. @nextcloud/vue 9 removes its own tooltip
directive anyway, so there is nothing to migrate to later.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
The isMobile mixin is deprecated and removed in @nextcloud/vue 9. Both
read the same module-level ref, so this is behaviour-identical on 8.41.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
v9 drops emojiSearch and emojiAddRecent from the root barrel and only
exposes them under functions/emoji, which already resolves in 8.41.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
@nextcloud/dialogs 7 drops the FilePickerVue export so the library can
serve Vue 2 and Vue 3 apps alike; only the builder functions survive.
Five components rendered the component behind a data flag — the plan
lists four, Envelope.vue was missed.

Four of them configure the same directory-only dialog, so that moves to
a shared pickFolder() helper. ComposerAttachments keeps its own builder
because it needs two buttons and has to know which one was pressed.

Spawning the dialog on the body also fixes it outliving the NcActions
popover it used to be rendered inside, which unmounts on click.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
vue-autosize is Vue-2-only with no successor, but v-autosize was
registered globally and applied to nothing, so no replacement is needed.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
@riophae/vue-treeselect is Vue-2-only and unmaintained since 2020. The
mailbox tree becomes a flat list whose options carry their depth, and
the option slot indents by it, so nesting stays visible; the ~25 lines
of CSS reaching into .vue-treeselect__* internals go away with it.

The component keeps its value/input contract — moving it to modelValue
is Vue 3's concern, not this wave's — so only the deep selector in
ActionFileinto has to follow, from .vue-treeselect__control to
.v-select.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
vue-tabs-component is Vue-2-only. NcTabs does not exist in the 8.x line
and 8.41 is its last release, so the tabs become a segmented control —
the same NcRadioGroup pattern the app settings dialog already uses.

Panels stay mounted under v-show, matching what the tabs library did,
and the manual-mode prefill becomes an immediate watcher because the
library used to emit its changed event once on mount.

Most of the diff is one tab level of re-indentation from dropping the
Tabs wrapper; git diff -w shows the actual change.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
@nextcloud-command nextcloud-command added the AI assisted This PR contains AI-assisted commits label Sep 2, 2026
@GVodyanov
GVodyanov marked this pull request as ready for review September 3, 2026 09:26
@GVodyanov GVodyanov mentioned this pull request Sep 3, 2026
43 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI assisted This PR contains AI-assisted commits

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants