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
};