diff --git a/src/extensions/core/widgetGridOverrides.ts b/src/extensions/core/widgetGridOverrides.ts index 4cdd16e70d..d29d17530f 100644 --- a/src/extensions/core/widgetGridOverrides.ts +++ b/src/extensions/core/widgetGridOverrides.ts @@ -1,3 +1,4 @@ +import { t } from '@/i18n' import type { IContextMenuValue } from '@/lib/litegraph/src/interfaces' import type { LGraphNode } from '@/lib/litegraph/src/LGraphNode' import { useVueNodeLifecycle } from '@/composables/graph/useVueNodeLifecycle' @@ -5,8 +6,7 @@ import { app } from '@/scripts/app' import { useExtensionService } from '@/services/extensionService' const PROPERTY_KEY = 'gridOverrides' -const PROMPT_LABEL = - 'Grid row size (e.g. 200px, minmax(150px, 300px), 1fr, auto)' +const DEFAULT_PROMPT_VALUE = '200px' type GridOverrides = Record @@ -17,6 +17,7 @@ function readOverrides(node: LGraphNode): GridOverrides { } function writeOverrides(node: LGraphNode, next: GridOverrides): void { + node.properties ??= {} if (Object.keys(next).length === 0) { delete node.properties[PROPERTY_KEY] } else { @@ -35,7 +36,7 @@ function promptForRowSize( current: string, onSubmit: (value: string) => void ): void { - const input = window.prompt(PROMPT_LABEL, current) + const input = window.prompt(t('widgetGridOverrides.prompt'), current) if (input == null) return const trimmed = input.trim() if (trimmed.length === 0) return @@ -66,28 +67,28 @@ function buildWidgetMenuItem( const current = overrides[widgetName] const label = current ? `${widgetName} → ${current}` - : `${widgetName} → (auto)` + : `${widgetName} → ${t('widgetGridOverrides.auto')}` return { content: label, has_submenu: true, callback: () => { - promptForRowSize(current ?? '200px', (value) => + promptForRowSize(current ?? DEFAULT_PROMPT_VALUE, (value) => setOverride(node, widgetName, value) ) }, submenu: { options: [ { - content: 'Set size…', + content: t('widgetGridOverrides.setSize'), callback: () => { - promptForRowSize(current ?? '200px', (value) => + promptForRowSize(current ?? DEFAULT_PROMPT_VALUE, (value) => setOverride(node, widgetName, value) ) } }, { - content: 'Clear override', + content: t('widgetGridOverrides.clearOverride'), disabled: !current, callback: () => clearOverride(node, widgetName) } @@ -111,7 +112,7 @@ useExtensionService().registerExtension({ if (hasAny) { widgetItems.push(null, { - content: 'Clear all overrides', + content: t('widgetGridOverrides.clearAll'), callback: () => writeOverrides(node, {}) }) } @@ -119,7 +120,7 @@ useExtensionService().registerExtension({ return [ null, { - content: 'Widget Grid Sizes', + content: t('widgetGridOverrides.menuLabel'), has_submenu: true, callback: () => {}, submenu: { diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 6450f09142..44d72e2401 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -3816,5 +3816,13 @@ "training": "Training…", "processingVideo": "Processing video…", "running": "Running…" + }, + "widgetGridOverrides": { + "menuLabel": "Widget Grid Sizes", + "setSize": "Set size…", + "clearOverride": "Clear override", + "clearAll": "Clear all overrides", + "auto": "(auto)", + "prompt": "Grid row size (e.g. 200px, minmax(150px, 300px), 1fr, auto)" } } diff --git a/src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts b/src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts index 3eb52baa62..aa06c1e1cd 100644 --- a/src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts +++ b/src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts @@ -51,6 +51,7 @@ interface ProcessedWidget { hidden: boolean id: string name: string + slotName?: string renderKey: string simplified: SimplifiedWidget tooltipConfig: TooltipOptions @@ -346,6 +347,7 @@ export function computeProcessedWidgets({ hidden: mergedOptions.hidden ?? false, id: String(bareWidgetId), name: widget.name, + slotName: widget.slotName, renderKey, type: widget.type, vueComponent, @@ -416,7 +418,7 @@ export function useProcessedWidgets( const overrides = nodeDataGetter()?.gridOverrides return visibleWidgets.value .map((w) => { - const override = overrides?.[w.name] + const override = overrides?.[w.slotName ?? w.name] if (override) return override return shouldExpand(w.type) || w.hasLayoutSize ? 'auto' : 'min-content' })