diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html index a81444e56c..257221add9 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html @@ -29,8 +29,8 @@ @for (feature of features[group.name]; track feature.id || i; let i = $index) { @let provider = feature.provider.name; - @let isFeatureDisabled = - provider !== providerName && provider !== defaultProviderName; + @let isFeatureDisabled = !feature.parentName ? isParentDisabled(feature.name, group.name, provider) : + (provider !== providerName && provider !== defaultProviderName);
@switch (feature.valueType?.name) { diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts index 85ee18fb78..bfadbf65fb 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts @@ -184,6 +184,22 @@ export class FeatureManagementComponent } } + isParentDisabled(parentName: string, groupName: string, provider: string): boolean { + const children = this.features[groupName]?.filter(f => f.parentName === parentName); + + if (children?.length) { + return children.some(child => { + const childProvider = child.provider?.name; + return ( + (childProvider !== this.providerName && childProvider !== this.defaultProviderName) || + (provider !== this.providerName && provider !== this.defaultProviderName) + ); + }); + } else { + return provider !== this.providerName && provider !== this.defaultProviderName; + } + } + private uncheckToggleDescendants(feature: FeatureDto) { this.findAllDescendantsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, false),