From 25452ff063383397af6b5e41984657f9eb68e801 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 9 Aug 2024 15:55:30 +0200 Subject: [PATCH] feat: change visibility in item options based on selected integration kinds (#949) --- packages/widgets/src/modals/widget-edit-modal.tsx | 13 +++++++++++-- packages/widgets/src/options.ts | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/widgets/src/modals/widget-edit-modal.tsx b/packages/widgets/src/modals/widget-edit-modal.tsx index 7a6f92042..574911492 100644 --- a/packages/widgets/src/modals/widget-edit-modal.tsx +++ b/packages/widgets/src/modals/widget-edit-modal.tsx @@ -92,8 +92,17 @@ export const WidgetEditModal = createModal>(({ actions, i {Object.entries(definition.options).map(([key, value]: [string, OptionsBuilderResult[string]]) => { const Input = getInputForType(value.type); - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!Input || value.shouldHide?.(form.values.options as never)) { + if ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + !Input || + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + value.shouldHide?.( + form.values.options as never, + innerProps.integrationData + .filter(({ id }) => form.values.integrationIds.includes(id)) + .map(({ kind }) => kind), + ) + ) { return null; } diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index d9d71d667..abe108dfb 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -1,5 +1,5 @@ import { objectEntries } from "@homarr/common"; -import type { WidgetKind } from "@homarr/definitions"; +import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; import type { ZodType } from "@homarr/validation"; import { z } from "@homarr/validation"; @@ -123,7 +123,7 @@ export type inferOptionsFromDefinition = { }; interface FieldConfiguration { - shouldHide: (options: inferOptionsFromDefinition) => boolean; + shouldHide: (options: inferOptionsFromDefinition, integrationKinds: IntegrationKind[]) => boolean; } type ConfigurationInput = Partial<