Skip to content

Upgrade Vuetify to 3.12.10, Adjust Directory Structure#39

Open
snacksbro wants to merge 5 commits into
Kitware:masterfrom
snacksbro:master
Open

Upgrade Vuetify to 3.12.10, Adjust Directory Structure#39
snacksbro wants to merge 5 commits into
Kitware:masterfrom
snacksbro:master

Conversation

@snacksbro

@snacksbro snacksbro commented Jul 17, 2026

Copy link
Copy Markdown

This PR updates Vuetify 3 from 3.11.2 -> 3.12.10.

This also makes the generated Python code use the v3 documentation, I noticed the types URL at https://cdn.jsdelivr.net/npm/vuetify@3.12.10/dist/json/web-types.json would have the doc-url field point to https://vuetifyjs.com/api/VAlert#props rather than https://v3.vuetifyjs.com/api/VAlert#props. This is simply a find/replace in the generate_python.py script to prepend v3 to the URL.

Lastly, this also restructures the folder structure in preparation for the arrival of Vuetify 4. This is the part I have the least confidence of me doing correctly, I believe I updated everything but I haven't tested the release workflow. These changes are all in 1f9148e

I verified this worked by installing my fork of Trame Vuetify into an existing Trame Project and using a component introduced in v3.12.x, a minimal example can be seen here:

Minimal Example
from __future__ import annotations

from trame.app import get_server
from trame.decorators import TrameApp
from trame.ui.vuetify3 import SinglePageLayout
from trame.widgets import vuetify3 as v3

v3.enable_lab()


@TrameApp()
class DemoApp:
    def __init__(self) -> None:
        self.server = get_server(None)
        self.state = self.server.state

        self.state.items = [
            {
                "title": "Find File",
                "subtitle": "Open general search",
                "prependIcon": "mdi-file-find",
                "value": "find-file",
            },
            {
                "title": "Open Project",
                "subtitle": "Open an existing project",
                "prependIcon": "mdi-folder-open",
                "value": "open-project",
            },
            {"type": "divider"},
            {"type": "subheader", "title": "Settings"},
            {
                "title": "Help",
                "subtitle": "View documentation",
                "prependIcon": "mdi-help-circle-outline",
                "value": "help",
            },
        ]
        self.state.search = ""

        self.build_ui()

    def build_ui(self) -> None:
        with SinglePageLayout(self.server) as layout:
            with layout.content:
                with v3.VCommandPalette(
                    v_model_search=("search",),
                    items=("items",),
                    placeholder="Search commands...",
                    hotkey="ctrl+shift+k",
                    click_item=(self.on_item_click, "[]", "{item: $event}"),
                ):
                    with v3.Template(
                        v_slot_activator=("{ props: activatorProps }"),
                    ):
                        v3.VBtn(
                            v_bind=("activatorProps",),
                            children="Open Command Palette",
                        )

    def on_item_click(self, item: dict[str, str]) -> None:
        print(item)


if __name__ == "__main__":
    app = DemoApp()
    app.server.start()

Comment thread .github/workflows/test_and_release.yml
Comment thread vue2/package-lock.json Outdated

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

todo: Bring these back

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did notice that uv.lock was never tracked so I ignored both the uv lock and the npm lock in my local environment, hence why this occurred post-migration. Should uv.lock be tracked?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

npm lockfiles restored: a87beb2

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uv.lock does not need to be tracked. At least not here for building that lib.

@snacksbro
snacksbro marked this pull request as ready for review July 17, 2026 12:14
Comment thread js-libs/v2/vue.config.js
@@ -1,5 +1,5 @@
const path = require('path');
const DST_PATH = '../trame_vuetify/module/vue2-serve';
const DST_PATH = '../trame_vuetify/module/v2-serve';

@jourdain jourdain Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we have more ../.. to go up now that we added a js-libs hierarchy?

Comment thread js-libs/v3-lab/README.md
def get_docs(tag):
url = tag.get("doc-url", "https://vuetifyjs.com/en/introduction/why-vuetify/")
url = url.replace("www.", "") # www redirects to start page
url = url.replace("vuetifyjs", "v3.vuetifyjs") # the hosted file points to v4 docs

@jourdain jourdain Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You may want to be more specific like /vuetifyjs to /v3.vuetifyjs

@jourdain jourdain left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems the vue2 vue.config.js needs a fix. Everything else seems fine to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants