feat(widget): show name in edit modal (#3970)

This commit is contained in:
Meier Lukas
2025-09-02 21:53:57 +02:00
committed by GitHub
parent 65b9ddd771
commit d317cacbe8
2 changed files with 58 additions and 44 deletions
@@ -10,7 +10,7 @@ import type { IntegrationKind, WidgetKind } from "@homarr/definitions";
import { useModalAction } from "@homarr/modals"; import { useModalAction } from "@homarr/modals";
import { showSuccessNotification } from "@homarr/notifications"; import { showSuccessNotification } from "@homarr/notifications";
import { useSettings } from "@homarr/settings"; import { useSettings } from "@homarr/settings";
import { useScopedI18n } from "@homarr/translation/client"; import { useI18n } from "@homarr/translation/client";
import type { BoardItemAdvancedOptions } from "@homarr/validation/shared"; import type { BoardItemAdvancedOptions } from "@homarr/validation/shared";
import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets"; import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets";
import { WidgetError } from "@homarr/widgets/errors"; import { WidgetError } from "@homarr/widgets/errors";
@@ -31,7 +31,7 @@ interface WidgetPreviewPageContentProps {
export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPreviewPageContentProps) => { export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPreviewPageContentProps) => {
const settings = useSettings(); const settings = useSettings();
const t = useScopedI18n("widgetPreview"); const t = useI18n();
const { openModal: openWidgetEditModal } = useModalAction(WidgetEditModal); const { openModal: openWidgetEditModal } = useModalAction(WidgetEditModal);
const { openModal: openPreviewDimensionsModal } = useModalAction(PreviewDimensionsModal); const { openModal: openPreviewDimensionsModal } = useModalAction(PreviewDimensionsModal);
const currentDefinition = useMemo(() => widgetImports[kind].definition, [kind]); const currentDefinition = useMemo(() => widgetImports[kind].definition, [kind]);
@@ -55,7 +55,8 @@ export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPrevie
}); });
const handleOpenEditWidgetModal = useCallback(() => { const handleOpenEditWidgetModal = useCallback(() => {
openWidgetEditModal({ openWidgetEditModal(
{
kind, kind,
value: state, value: state,
onSuccessfulEdit: (value) => { onSuccessfulEdit: (value) => {
@@ -68,7 +69,13 @@ export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPrevie
), ),
integrationSupport: "supportedIntegrations" in currentDefinition, integrationSupport: "supportedIntegrations" in currentDefinition,
settings, settings,
}); },
{
title(t) {
return `${t("item.edit.title")} - ${t(`widget.${kind}.name`)}`;
},
},
);
}, [currentDefinition, integrationData, kind, openWidgetEditModal, settings, state]); }, [currentDefinition, integrationData, kind, openWidgetEditModal, settings, state]);
const Comp = loadWidgetDynamic(kind); const Comp = loadWidgetDynamic(kind);
@@ -76,7 +83,7 @@ export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPrevie
const toggleEditMode = useCallback(() => { const toggleEditMode = useCallback(() => {
setEditMode((editMode) => !editMode); setEditMode((editMode) => !editMode);
showSuccessNotification({ showSuccessNotification({
message: editMode ? t("toggle.disabled") : t("toggle.enabled"), message: editMode ? t("widgetPreview.toggle.disabled") : t("widgetPreview.toggle.enabled"),
}); });
}, [editMode, t]); }, [editMode, t]);
@@ -49,7 +49,8 @@ export const BoardItemMenu = ({
if (!isEditMode || isPending) return null; if (!isEditMode || isPending) return null;
const openEditModal = () => { const openEditModal = () => {
openModal({ openModal(
{
kind: item.kind, kind: item.kind,
value: { value: {
advancedOptions: item.advancedOptions, advancedOptions: item.advancedOptions,
@@ -78,7 +79,13 @@ export const BoardItemMenu = ({
), ),
integrationSupport: "supportedIntegrations" in currentDefinition, integrationSupport: "supportedIntegrations" in currentDefinition,
settings, settings,
}); },
{
title(t) {
return `${t("item.edit.title")} - ${t(`widget.${item.kind}.name`)}`;
},
},
);
}; };
const openRemoveModal = () => { const openRemoveModal = () => {