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 |
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