-
{description}
- {initialValues && values && isUnsavedChanges(initialValues, values) && (
-
Unsaved changes.
+
+ {!isLoading && values && values.length === 0 && (
+
{noIngressControllerLabel}
)}
+
+
{description}
+ {initialValues &&
+ values &&
+ isUnsavedChanges(initialValues, values) && (
+
Unsaved changes.
+ )}
+
);
}
diff --git a/app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/IngressClassDatatableAngular.tsx b/app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/IngressClassDatatableAngular.tsx
index 921115766..248fdaa4a 100644
--- a/app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/IngressClassDatatableAngular.tsx
+++ b/app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/IngressClassDatatableAngular.tsx
@@ -27,7 +27,6 @@ interface Props {
initialIngressControllers: IngressControllerClassMap[] | undefined;
allowNoneIngressClass: boolean;
isLoading: boolean;
- noIngressControllerLabel: string;
view: string;
}
@@ -40,7 +39,6 @@ export function IngressClassDatatableAngular({
ingressControllers,
allowNoneIngressClass,
isLoading,
- noIngressControllerLabel,
view,
}: Props) {
const tableState = useTableState(settingsStore, storageKey);
@@ -99,7 +97,6 @@ export function IngressClassDatatableAngular({
dataset={ingControllerFormValues || []}
columns={columns}
isLoading={isLoading}
- emptyContentLabel={noIngressControllerLabel}
title="Ingress Controllers"
titleIcon={Route}
getRowId={(row) => `${row.Name}-${row.ClassName}-${row.Type}`}
diff --git a/app/react/kubernetes/components/EventsDatatable/EventsDatatable.tsx b/app/react/kubernetes/components/EventsDatatable/EventsDatatable.tsx
index 66068e319..d2f705c5f 100644
--- a/app/react/kubernetes/components/EventsDatatable/EventsDatatable.tsx
+++ b/app/react/kubernetes/components/EventsDatatable/EventsDatatable.tsx
@@ -31,7 +31,6 @@ export function EventsDatatable({
columns={columns}
settingsManager={tableState}
isLoading={isLoading}
- emptyContentLabel="No event available."
title="Events"
titleIcon={History}
getRowId={(row) => row.metadata?.uid || ''}
diff --git a/app/react/kubernetes/configs/ListView/ConfigMapsDatatable/ConfigMapsDatatable.tsx b/app/react/kubernetes/configs/ListView/ConfigMapsDatatable/ConfigMapsDatatable.tsx
index 8f2942920..600b0bdb4 100644
--- a/app/react/kubernetes/configs/ListView/ConfigMapsDatatable/ConfigMapsDatatable.tsx
+++ b/app/react/kubernetes/configs/ListView/ConfigMapsDatatable/ConfigMapsDatatable.tsx
@@ -104,7 +104,6 @@ export function ConfigMapsDatatable() {
columns={columns}
settingsManager={tableState}
isLoading={configMapsQuery.isLoading || namespacesQuery.isLoading}
- emptyContentLabel="No ConfigMaps found"
title="ConfigMaps"
titleIcon={FileCode}
getRowId={(row) => row.metadata?.uid ?? ''}
diff --git a/app/react/kubernetes/configs/ListView/SecretsDatatable/SecretsDatatable.tsx b/app/react/kubernetes/configs/ListView/SecretsDatatable/SecretsDatatable.tsx
index f0e560696..55192d9d7 100644
--- a/app/react/kubernetes/configs/ListView/SecretsDatatable/SecretsDatatable.tsx
+++ b/app/react/kubernetes/configs/ListView/SecretsDatatable/SecretsDatatable.tsx
@@ -104,7 +104,6 @@ export function SecretsDatatable() {
columns={columns}
settingsManager={tableState}
isLoading={secretsQuery.isLoading || namespacesQuery.isLoading}
- emptyContentLabel="No secrets found"
title="Secrets"
titleIcon={Lock}
getRowId={(row) => row.metadata?.uid ?? ''}
diff --git a/app/react/kubernetes/ingresses/IngressDatatable/IngressDatatable.tsx b/app/react/kubernetes/ingresses/IngressDatatable/IngressDatatable.tsx
index cbd31eb81..e79da16e1 100644
--- a/app/react/kubernetes/ingresses/IngressDatatable/IngressDatatable.tsx
+++ b/app/react/kubernetes/ingresses/IngressDatatable/IngressDatatable.tsx
@@ -89,7 +89,6 @@ export function IngressDatatable() {
dataset={ingressesWithIsSystem}
columns={columns}
isLoading={ingressesQuery.isLoading || namespacesQuery.isLoading}
- emptyContentLabel="No supported ingresses found"
title="Ingresses"
titleIcon={Route}
getRowId={(row) => row.Name + row.Type + row.Namespace}
diff --git a/app/react/kubernetes/namespaces/components/NamespaceInnerForm.tsx b/app/react/kubernetes/namespaces/components/NamespaceInnerForm.tsx
index 878117403..e9b7d3f6c 100644
--- a/app/react/kubernetes/namespaces/components/NamespaceInnerForm.tsx
+++ b/app/react/kubernetes/namespaces/components/NamespaceInnerForm.tsx
@@ -83,10 +83,10 @@ export function NamespaceInnerForm({
onChange={(classes) => setFieldValue('ingressClasses', classes)}
values={values.ingressClasses}
description="Enable the ingress controllers that users can select when publishing applications in this namespace."
- noIngressControllerLabel="No ingress controllers available in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster."
view="namespace"
isLoading={ingressClassesQuery.isLoading}
initialValues={initialValues.ingressClasses}
+ noIngressControllerLabel="No ingress controllers available in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster."
/>
)}
diff --git a/app/react/kubernetes/services/ServicesView/ServicesDatatable/ServicesDatatable.tsx b/app/react/kubernetes/services/ServicesView/ServicesDatatable/ServicesDatatable.tsx
index 193859fc9..3a81f9f75 100644
--- a/app/react/kubernetes/services/ServicesView/ServicesDatatable/ServicesDatatable.tsx
+++ b/app/react/kubernetes/services/ServicesView/ServicesDatatable/ServicesDatatable.tsx
@@ -84,7 +84,6 @@ export function ServicesDatatable() {
columns={columns}
settingsManager={tableState}
isLoading={servicesQuery.isLoading || namespacesQuery.isLoading}
- emptyContentLabel="No services found"
title="Services"
titleIcon={Shuffle}
getRowId={(row) => row.UID}
diff --git a/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx b/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx
index 835c4b635..9fcdbd377 100644
--- a/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx
+++ b/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx
@@ -60,7 +60,6 @@ export function AccessDatatable({
roles: rolesState,
})}
isRowSelectable={({ original: item }) => !inheritFrom || !item.Inherited}
- emptyContentLabel="No authorized users or teams."
renderTableActions={(selectedItems) => (
<>
diff --git a/app/react/portainer/account/AccountView/HelmRepositoryDatatable/HelmRepositoryDatatable.tsx b/app/react/portainer/account/AccountView/HelmRepositoryDatatable/HelmRepositoryDatatable.tsx
index fd9af775a..2402709e4 100644
--- a/app/react/portainer/account/AccountView/HelmRepositoryDatatable/HelmRepositoryDatatable.tsx
+++ b/app/react/portainer/account/AccountView/HelmRepositoryDatatable/HelmRepositoryDatatable.tsx
@@ -70,7 +70,6 @@ export function HelmRepositoryDatatable() {
renderTableActions={(selectedRows) => (
)}
- emptyContentLabel="No Helm repository found"
isLoading={helmReposQuery.isLoading}
isRowSelectable={(row) => !row.original.Global}
data-cy="helm-repositories-datatable"
diff --git a/app/react/portainer/environments/TagsView/TagsDatatable.tsx b/app/react/portainer/environments/TagsView/TagsDatatable.tsx
index c754badf8..95f631a75 100644
--- a/app/react/portainer/environments/TagsView/TagsDatatable.tsx
+++ b/app/react/portainer/environments/TagsView/TagsDatatable.tsx
@@ -36,7 +36,6 @@ export function TagsDatatable({
dataset={dataset || []}
columns={columns}
isLoading={!dataset}
- emptyContentLabel="No tag available."
settingsManager={tableState}
renderTableActions={(selectedItems) => (
void;
} & AutomationTestingProps) {
const tableState = useTableStateWithoutStorage('Name');
@@ -61,7 +59,6 @@ export function GroupAssociationTable({
onClick={onClickRow ? () => onClickRow(row.original) : undefined}
/>
)}
- emptyContentLabel={emptyContentLabel}
data-cy={dataCy}
disableSelect
/>
diff --git a/app/react/portainer/environments/update-schedules/ListView/ListView.tsx b/app/react/portainer/environments/update-schedules/ListView/ListView.tsx
index d7035ef31..36a79cbd5 100644
--- a/app/react/portainer/environments/update-schedules/ListView/ListView.tsx
+++ b/app/react/portainer/environments/update-schedules/ListView/ListView.tsx
@@ -70,7 +70,6 @@ export function ListView() {
settingsManager={tableState}
title="Update & rollback"
titleIcon={Clock}
- emptyContentLabel="No schedules found"
isLoading={listQuery.isLoading}
renderTableActions={(selectedRows) => (
diff --git a/app/react/portainer/notifications/NotificationsView.tsx b/app/react/portainer/notifications/NotificationsView.tsx
index cbd286419..814896431 100644
--- a/app/react/portainer/notifications/NotificationsView.tsx
+++ b/app/react/portainer/notifications/NotificationsView.tsx
@@ -47,7 +47,6 @@ export function NotificationsView() {
titleIcon={Bell}
dataset={userNotifications}
settingsManager={tableState}
- emptyContentLabel="No notifications found"
renderTableActions={(selectedRows) => (
)}
diff --git a/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx b/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx
index 13832cc56..ac51c0127 100644
--- a/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx
+++ b/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx
@@ -38,7 +38,6 @@ export function GitlabProjectTable({
columns={columns}
dataset={dataset}
settingsManager={tableState}
- emptyContentLabel="No projects available."
title="Gitlab projects"
titleIcon={ListIcon}
extendTableOptions={withControlledSelected(
diff --git a/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx b/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx
index 73b3af73f..3b94ae46d 100644
--- a/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx
+++ b/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx
@@ -35,7 +35,6 @@ export function TagsDatatable({
dataset={dataset || []}
isLoading={!dataset}
settingsManager={tableState}
- emptyContentLabel="No tags available."
renderTableActions={(selectedItems) =>
advancedFeaturesAvailable && (
diff --git a/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPGroupsTable.tsx b/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPGroupsTable.tsx
index 808a2e42b..a70d6c79f 100644
--- a/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPGroupsTable.tsx
+++ b/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPGroupsTable.tsx
@@ -22,7 +22,6 @@ export function LDAPGroupsTable({ dataset }: { dataset?: Value[] }) {
title="Groups"
titleIcon={Users}
settingsManager={tableState}
- emptyContentLabel="No groups found."
disableSelect
data-cy="ldap-groups-datatable"
/>
diff --git a/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPUsersTable.tsx b/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPUsersTable.tsx
index f7597b5ac..6c888865b 100644
--- a/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPUsersTable.tsx
+++ b/app/react/portainer/settings/AuthenticationView/LDAPAuth/LDAPUsersTable.tsx
@@ -21,7 +21,6 @@ export function LDAPUsersTable({ dataset }: { dataset?: string[] }) {
title="Users"
titleIcon={Users}
settingsManager={tableState}
- emptyContentLabel="No users found."
disableSelect
data-cy="ldap-users-datatable"
/>
diff --git a/app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatable.tsx b/app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatable.tsx
index ee76542ec..43803a6fc 100644
--- a/app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatable.tsx
+++ b/app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatable.tsx
@@ -31,7 +31,6 @@ export function FDOProfilesDatatable({
title="Device Profiles"
titleIcon={List}
disableSelect={!isFDOEnabled}
- emptyContentLabel="No profiles found"
getRowId={(row) => row.id.toString()}
isLoading={isLoading}
renderTableActions={(selectedItems) => (
diff --git a/app/react/portainer/users/RolesView/AccessViewer/EffectiveAccessViewerDatatable.tsx b/app/react/portainer/users/RolesView/AccessViewer/EffectiveAccessViewerDatatable.tsx
index 969f771a6..f0a91ebbd 100644
--- a/app/react/portainer/users/RolesView/AccessViewer/EffectiveAccessViewerDatatable.tsx
+++ b/app/react/portainer/users/RolesView/AccessViewer/EffectiveAccessViewerDatatable.tsx
@@ -12,6 +12,14 @@ export function EffectiveAccessViewerDatatable({
}) {
const tableState = useTableStateWithStorage('access-viewer', 'Environment');
+ if (dataset?.length === 0) {
+ return (
+
+ The selected user does not have access to any environments.
+
+ );
+ }
+
return (
Effective role for each environment will be displayed for the selected
- user
+ user.
}
- emptyContentLabel={
- dataset
- ? 'The selected user does not have access to any environment(s)'
- : 'Select a user to show associated access and role'
- }
disableSelect
data-cy="effective-access-viewer-datatable"
/>
diff --git a/app/react/portainer/users/RolesView/RbacRolesDatatable.tsx b/app/react/portainer/users/RolesView/RbacRolesDatatable.tsx
index 5c74a96c4..0c377b537 100644
--- a/app/react/portainer/users/RolesView/RbacRolesDatatable.tsx
+++ b/app/react/portainer/users/RolesView/RbacRolesDatatable.tsx
@@ -34,7 +34,6 @@ export function RbacRolesDatatable({
dataset={dataset || []}
columns={columns}
isLoading={!dataset}
- emptyContentLabel="No role available."
settingsManager={tableState}
disableSelect
data-cy="rbac-roles-datatable"
diff --git a/app/react/portainer/users/teams/ListView/TeamsDatatable/TeamsDatatable.tsx b/app/react/portainer/users/teams/ListView/TeamsDatatable/TeamsDatatable.tsx
index 61e62bb39..a02974bf2 100644
--- a/app/react/portainer/users/teams/ListView/TeamsDatatable/TeamsDatatable.tsx
+++ b/app/react/portainer/users/teams/ListView/TeamsDatatable/TeamsDatatable.tsx
@@ -47,7 +47,6 @@ export function TeamsDatatable({ teams, isAdmin }: Props) {
/>
)
}
- emptyContentLabel="No teams found"
data-cy="teams-datatable"
/>
);