This is an automated email from the ASF dual-hosted git repository.

mcgilman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 9320f88ea54 NIFI-16014 - Remove dev-mode only feature guard gating the 
Connectors UI - make it available generally (#11332)
9320f88ea54 is described below

commit 9320f88ea54532a1ea5c8d3b9d8ddd8f9c2118e0
Author: Rob Fellows <[email protected]>
AuthorDate: Thu Jun 11 17:36:00 2026 -0400

    NIFI-16014 - Remove dev-mode only feature guard gating the Connectors UI - 
make it available generally (#11332)
---
 .../apps/nifi/src/app/app-routing.module.ts        |  3 +--
 .../app/service/guard/connectors-feature.guard.ts  | 25 ----------------------
 .../ui/common/navigation/navigation.component.html | 19 ++++++++--------
 .../common/navigation/navigation.component.spec.ts | 19 +++++++++++++++-
 .../ui/common/navigation/navigation.component.ts   |  3 ---
 .../src/environments/environment.development.ts    |  3 +--
 .../apps/nifi/src/environments/environment.ts      |  3 +--
 7 files changed, 30 insertions(+), 45 deletions(-)

diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/app-routing.module.ts 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/app-routing.module.ts
index 230bbf5cd78..293a1213f5f 100644
--- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/app-routing.module.ts
+++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/app-routing.module.ts
@@ -18,7 +18,6 @@
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
 import { authenticationGuard } from './service/guard/authentication.guard';
-import { connectorsFeatureGuard } from 
'./service/guard/connectors-feature.guard';
 import { RouteNotFound } from 
'./pages/route-not-found/feature/route-not-found.component';
 import { checkLoginConfiguration } from 
'./service/guard/login-configuration.guard';
 import { LoginConfiguration } from './state/login-configuration';
@@ -115,7 +114,7 @@ const routes: Routes = [
     },
     {
         path: 'connectors',
-        canMatch: [authenticationGuard, connectorsFeatureGuard],
+        canMatch: [authenticationGuard],
         loadChildren: () => 
import('./pages/connectors/feature/connectors.module').then((m) => 
m.ConnectorsModule)
     },
     {
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/service/guard/connectors-feature.guard.ts
 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/service/guard/connectors-feature.guard.ts
deleted file mode 100644
index a44053daaf5..00000000000
--- 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/service/guard/connectors-feature.guard.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { CanMatchFn } from '@angular/router';
-import { environment } from '../../../environments/environment';
-
-// Uses a build-time environment flag. Feature availability is determined at
-// build time via environment configuration rather than a runtime store check.
-export const connectorsFeatureGuard: CanMatchFn = () => {
-    return environment.enableConnectors;
-};
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.html
 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.html
index e23cbfc864e..67aeac0b71f 100644
--- 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.html
+++ 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.html
@@ -51,16 +51,15 @@
                             <i class="icon icon-drop primary-color mr-2"></i>
                             Canvas
                         </button>
-                        @if (enableConnectors) {
-                            <button
-                                mat-menu-item
-                                class="global-menu-item"
-                                [routerLink]="['/connectors']"
-                                
[disabled]="!user.connectorsPermissions.canRead">
-                                <i class="fa fa-plug primary-color mr-2"></i>
-                                Connectors
-                            </button>
-                        }
+                        <button
+                            mat-menu-item
+                            class="global-menu-item"
+                            data-qa="global-menu-item-connectors"
+                            [routerLink]="['/connectors']"
+                            [disabled]="!user.connectorsPermissions.canRead">
+                            <i class="fa fa-plug primary-color mr-2"></i>
+                            Connectors
+                        </button>
                         <mat-divider></mat-divider>
                         <button mat-menu-item class="global-menu-item" 
[routerLink]="['/summary']">
                             <i class="fa fa-table primary-color mr-2"></i>
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.spec.ts
 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.spec.ts
index 44cca523371..1725906afc3 100644
--- 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.spec.ts
+++ 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.spec.ts
@@ -37,6 +37,10 @@ import { errorFeatureKey } from '../../../state/error';
 import { initialState as initialAboutState } from 
'../../../state/about/about.reducer';
 import { aboutFeatureKey } from '../../../state/about';
 import { popBackNavigation } from 
'../../../state/navigation/navigation.actions';
+import { MatMenuTrigger } from '@angular/material/menu';
+import { OverlayContainer } from '@angular/cdk/overlay';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { By } from '@angular/platform-browser';
 
 describe('Navigation', () => {
     let component: Navigation;
@@ -45,7 +49,7 @@ describe('Navigation', () => {
 
     beforeEach(() => {
         TestBed.configureTestingModule({
-            imports: [Navigation, HttpClientTestingModule, 
RouterTestingModule],
+            imports: [Navigation, HttpClientTestingModule, 
RouterTestingModule, NoopAnimationsModule],
             providers: [
                 provideMockStore({
                     initialState: {
@@ -93,4 +97,17 @@ describe('Navigation', () => {
 
         expect(dispatchSpy).toHaveBeenCalledWith(popBackNavigation());
     });
+
+    it('should always render the Connectors menu item in the global menu', () 
=> {
+        const trigger = 
fixture.debugElement.query(By.directive(MatMenuTrigger)).injector.get(MatMenuTrigger);
+        trigger.openMenu();
+        fixture.detectChanges();
+
+        const overlayElement = 
TestBed.inject(OverlayContainer).getContainerElement();
+        const connectorsButton = 
overlayElement.querySelector('[data-qa="global-menu-item-connectors"]');
+        expect(connectorsButton).toBeTruthy();
+
+        trigger.closeMenu();
+        fixture.detectChanges();
+    });
 });
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.ts
 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.ts
index 5b42c9f9fa3..4e741da038a 100644
--- 
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.ts
+++ 
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/ui/common/navigation/navigation.component.ts
@@ -17,7 +17,6 @@
 
 import { Component, OnDestroy, OnInit, inject } from '@angular/core';
 import { AsyncPipe, NgOptimizedImage } from '@angular/common';
-import { environment } from '../../../../environments/environment';
 import { FormsModule } from '@angular/forms';
 import { MatDividerModule } from '@angular/material/divider';
 import { MatMenuModule } from '@angular/material/menu';
@@ -67,8 +66,6 @@ import { selectAbout } from 
'../../../state/about/about.selectors';
     styleUrls: ['./navigation.component.scss']
 })
 export class Navigation implements OnInit, OnDestroy {
-    enableConnectors = environment.enableConnectors;
-
     private store = inject<Store<NiFiState>>(Store);
     private storage = inject(Storage);
     private themingService = inject(ThemingService);
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.development.ts
 
b/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.development.ts
index 99f600673d9..584182e1d9c 100644
--- 
a/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.development.ts
+++ 
b/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.development.ts
@@ -16,6 +16,5 @@
  */
 
 export const environment = {
-    production: false,
-    enableConnectors: true
+    production: false
 };
diff --git 
a/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.ts 
b/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.ts
index 032b35c619e..29d7aa9df3f 100644
--- a/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.ts
+++ b/nifi-frontend/src/main/frontend/apps/nifi/src/environments/environment.ts
@@ -16,6 +16,5 @@
  */
 
 export const environment = {
-    production: true,
-    enableConnectors: false
+    production: true
 };

Reply via email to