From 1b1356951e15aabc39e78dfadd374ffbd101c561 Mon Sep 17 00:00:00 2001 From: Rizumu Ayaka Date: Sat, 24 Jan 2026 09:47:51 +0700 Subject: [PATCH] feat: add settings option to always show advanced widgets on all nodes (#8244) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Solved issue: Currently, the display status of advanced widgets can only be set individually for each node, but users would like to have a global switch to always display all advanced widgets. I also adjusted some related code to solve the issue of code duplication. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8244-feat-add-settings-option-to-always-show-advanced-widgets-on-all-nodes-2f06d73d365081358023efa3e1ff3094) by [Unito](https://www.unito.io) --- .../rightSidePanel/parameters/TabNodes.vue | 15 +--- .../parameters/TabNormalInputs.vue | 21 ++---- .../settings/TabGlobalSettings.vue | 8 ++- src/components/rightSidePanel/shared.ts | 31 ++++++++ src/locales/en/main.json | 3 +- .../settings/constants/coreSettings.ts | 10 +++ .../vueNodes/components/LGraphNode.vue | 71 +++++++++++++++---- .../vueNodes/components/NodeWidgets.vue | 11 ++- src/schemas/apiSchema.ts | 3 +- 9 files changed, 125 insertions(+), 48 deletions(-) diff --git a/src/components/rightSidePanel/parameters/TabNodes.vue b/src/components/rightSidePanel/parameters/TabNodes.vue index ab5deb1a9..1d59f5720 100644 --- a/src/components/rightSidePanel/parameters/TabNodes.vue +++ b/src/components/rightSidePanel/parameters/TabNodes.vue @@ -8,7 +8,7 @@ import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import FormSearchInput from '@/renderer/extensions/vueNodes/widgets/components/form/FormSearchInput.vue' import { useRightSidePanelStore } from '@/stores/workspace/rightSidePanelStore' -import { searchWidgetsAndNodes } from '../shared' +import { computedSectionDataList, searchWidgetsAndNodes } from '../shared' import type { NodeWidgetsListList } from '../shared' import SectionWidgets from './SectionWidgets.vue' @@ -24,18 +24,7 @@ const nodes = computed((): LGraphNode[] => { const rightSidePanelStore = useRightSidePanelStore() const { searchQuery } = storeToRefs(rightSidePanelStore) -const widgetsSectionDataList = computed((): NodeWidgetsListList => { - return nodes.value.map((node) => { - const { widgets = [] } = node - const shownWidgets = widgets - .filter((w) => !(w.options?.canvasOnly || w.options?.hidden)) - .map((widget) => ({ node, widget })) - return { - widgets: shownWidgets, - node - } - }) -}) +const { widgetsSectionDataList } = computedSectionDataList(nodes) const searchedWidgetsSectionDataList = shallowRef( widgetsSectionDataList.value diff --git a/src/components/rightSidePanel/parameters/TabNormalInputs.vue b/src/components/rightSidePanel/parameters/TabNormalInputs.vue index add128876..7f63a766a 100644 --- a/src/components/rightSidePanel/parameters/TabNormalInputs.vue +++ b/src/components/rightSidePanel/parameters/TabNormalInputs.vue @@ -7,7 +7,7 @@ import type { LGraphNode } from '@/lib/litegraph/src/litegraph' import FormSearchInput from '@/renderer/extensions/vueNodes/widgets/components/form/FormSearchInput.vue' import { useRightSidePanelStore } from '@/stores/workspace/rightSidePanelStore' -import { searchWidgetsAndNodes } from '../shared' +import { computedSectionDataList, searchWidgetsAndNodes } from '../shared' import type { NodeWidgetsListList } from '../shared' import SectionWidgets from './SectionWidgets.vue' @@ -21,21 +21,14 @@ const { t } = useI18n() const rightSidePanelStore = useRightSidePanelStore() const { searchQuery } = storeToRefs(rightSidePanelStore) -const widgetsSectionDataList = computed((): NodeWidgetsListList => { - return nodes.map((node) => { - const { widgets = [] } = node - const shownWidgets = widgets - .filter( - (w) => - !(w.options?.canvasOnly || w.options?.hidden || w.options?.advanced) - ) - .map((widget) => ({ node, widget })) - - return { widgets: shownWidgets, node } - }) -}) +const { widgetsSectionDataList, includesAdvanced } = computedSectionDataList( + () => nodes +) const advancedWidgetsSectionDataList = computed((): NodeWidgetsListList => { + if (includesAdvanced.value) { + return [] + } return nodes .map((node) => { const { widgets = [] } = node diff --git a/src/components/rightSidePanel/settings/TabGlobalSettings.vue b/src/components/rightSidePanel/settings/TabGlobalSettings.vue index d283c2e41..86dd8c046 100644 --- a/src/components/rightSidePanel/settings/TabGlobalSettings.vue +++ b/src/components/rightSidePanel/settings/TabGlobalSettings.vue @@ -1,7 +1,7 @@