feat: add custom navigation links with drag-to-reorder and expandable sidebar#1786
feat: add custom navigation links with drag-to-reorder and expandable sidebar#1786mrmees wants to merge 1 commit intofluidd-core:developfrom
Conversation
|
Hi @mrmees thank you for your work on this feature - this looks very interesting indeed! 🙂 I haven't tested this yet but I will do it ASAP. I do have a few questions though:
|
Yup, you were right, it was something that worked when I was having issues getting the ordering to save after refresh, but looks like that was a DOM element issue that was able to be worked around. Got it working without any changes to AppDraggable.vue. Will amend later this weekend when I'm in front of my real machine.
Ahhh, I never explained the changes to the built-in-theme configuration in the commit, my mistake, I kinda backed into those changes for a few reasons :
So, the configuration schema was modified to allow a theme to have a couple of additional sections:
This is a little janky, and if you wanted to strip it out I wouldn't be opposed. There are two major things to be aware of:
|
… separation Add user-configurable custom navigation links to the sidebar with add/edit/delete, icon selection (Material Design, Klipper, URL favicon, emoji), drag-to-reorder for system and custom links, collapsible links with popup menus, context menus, import/export, and expandable sidebar with hover-to-expand. Extract inline theme SVG icon data from config.json into individual icon_*.svg files using CSS variables for dynamic theming via vue-inline-svg. Add multi-link support per theme preset with icon fallback chain. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6254682 to
3bf1cbd
Compare
|
Removed changes to AppDraggable |
|
Hello :) I understand the appeal of collapsible sidebar (have been thinking about writing a snippet for it). I dont understand the reason behind a custom links/bookmarking feature though. What is the value proposition for a user in that one? |
|
@pavelloz I'll give my input to your question. For me as a user, it will be a nice enhancement to the Fluidd UI to allow bookmarking of links that are relevant to my printer maintenance flow. For example, I locally host Spoolman on a server and having a link within Fluidd to go directly to Spoolman would be convenient. Same for the plugin KlipperFleet (used for quick flashing of MCUs), being able to access their local webpage would also be convenient. Basically, it will be a way to integrate and organize all of all the important services I use as part of my printer workflow within the Fluidd interface. |
|
Hmm, got it, didn't think of that. 👍 |
@DrFate09 got it exactly. I'm working on a piece of camera management software that handles advanced configuration and hot swapping better than Crowsnest. Getting a link to that software within Fluidd and not in my toolbar was the impetus for everything. Mainsail could do it easy enough via API, but Fluidd was lacking. Just to be transparent, this is 100% AI with a bunch of me manually troubleshooting. I only bothered submitting it as a PR because it's 100% front end, aside from the Moonraker DB integration. |
Summary
.svgfiles using CSS variables for dynamic themingurltolinks[]array for multi-link supportDetails
Custom Navigation Links
Users can add external links to the sidebar via Settings > Navigation. Each link supports:
https://Theme Icon Extraction
Each theme preset now has a dedicated
icon_*.svgfile (23 total) that uses CSS custom properties (--v-primary-base,--v-primary-offset-base) for dynamic color theming viavue-inline-svgDOM injection. This replaces the previous inline SVG path arrays inconfig.json.Sidebar Enhancements
Import/Export
Custom links can be exported as JSON and imported with merge or replace modes, enabling backup and sharing across instances.
Storage
All navigation config is stored in Moonraker's database via the existing
uiSettings.navigationpath — no new storage mechanisms or API endpoints.New Dependencies
vue-inline-svg— DOM-injected SVG rendering for theme icons with CSS variable supportScreenshots
Sidebar with custom links
Navigation Links settings
Add/Edit link dialog
Context menus
Backwards Compatibility
links[]-> legacyurlfieldTest Plan