void;
onSearch: (text: string) => void;
afterDeleteAction: () => void;
+ isAdminPage: boolean | undefined;
}
const UserListV1: FC
= ({
@@ -61,6 +64,7 @@ const UserListV1: FC = ({
onShowDeletedUserChange,
onPagingChange,
afterDeleteAction,
+ isAdminPage,
}) => {
const { isAdminUser } = useAuth();
const { t } = useTranslation();
@@ -217,16 +221,12 @@ const UserListV1: FC = ({
return (
-
-
+
-
+
= ({
+
+
+
{
+ return (
+
+ {header}
+
+ {subHeader}
+
+
+ );
+};
+
+export default PageHeader;
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/header/PageHeader.style.less b/openmetadata-ui/src/main/resources/ui/src/components/header/PageHeader.style.less
new file mode 100644
index 00000000000..f60e9e13826
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/components/header/PageHeader.style.less
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2022 Collate
+ * Licensed 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 url('../../styles/variables.less');
+
+.page-header-container {
+ .heading {
+ margin-bottom: 4px;
+ color: @text-color-secondary;
+ font-size: 18px;
+ }
+
+ .sub-heading {
+ font-weight: 400;
+ color: @text-grey-muted;
+ line-height: 17px;
+ font-size: 14px;
+ margin-bottom: 4px;
+ }
+}
diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/PageHeaders.constant.ts b/openmetadata-ui/src/main/resources/ui/src/constants/PageHeaders.constant.ts
new file mode 100644
index 00000000000..72bc21551a7
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/constants/PageHeaders.constant.ts
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2021 Collate
+ * Licensed 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.
+ */
+
+export const PAGE_HEADERS = {
+ ADVANCE_SEARCH: {
+ header: 'Advanced Search',
+ subHeader:
+ 'Discover the right data assets quickly using the syntax editor with and/or conditions.',
+ },
+ TABLE_PROFILE: {
+ header: 'Table Profile',
+ subHeader:
+ 'Monitor and understand your tables structure with the profiler.',
+ },
+ DATA_QUALITY: {
+ header: 'Data Quality',
+ subHeader:
+ 'Build trust in your data with quality tests and build reliable data products.',
+ },
+ COLUMN_PROFILE: {
+ header: 'Column Profile',
+ subHeader:
+ 'Monitor and understand your columns structure with the profiler',
+ },
+ ADMIN: {
+ header: 'Admins',
+ subHeader:
+ 'Know the other Admins in your organization, along with their Teams and Roles.',
+ },
+ USERS: {
+ header: 'Users',
+ subHeader:
+ 'Represent your entire organizational structure with hierarchical teams.',
+ },
+ TEAMS: {
+ header: 'Teams',
+ subHeader:
+ 'Represent your entire organizational structure with hierarchical teams.',
+ },
+ ROLES: {
+ header: 'Roles',
+ subHeader: 'Assign comprehensive role based access to Users or Teams.',
+ },
+ POLICIES: {
+ header: 'Policies',
+ subHeader:
+ 'Define policies with a set of rules for fine-grained access control.',
+ },
+ DATABASES_SERVICES: {
+ header: 'Databases',
+ subHeader: 'Ingest metadata from the most popular database services.',
+ },
+ MESSAGING_SERVICES: {
+ header: 'Messaging',
+ subHeader: 'Ingest metadata from the most used messaging services.',
+ },
+ DASHBOARD_SERVICES: {
+ header: 'Dashboards',
+ subHeader: 'Ingest metadata from the most popular dashboard services.',
+ },
+ PIPELINES_SERVICES: {
+ header: 'Pipelines',
+ subHeader: 'Ingest metadata from the most used pipeline services.',
+ },
+ ML_MODELS_SERVICES: {
+ header: 'ML Models',
+ subHeader: 'Ingest metadata from ML Model services through the UI',
+ },
+ METADATA_SERVICES: {
+ header: 'Metadata',
+ subHeader: 'Ingest metadata from metadata services, right from the UI.',
+ },
+ ACTIVITY_FEED: {
+ header: 'Activity Feed',
+ subHeader:
+ 'Monitor and understand your tables structure with the profiler.',
+ },
+ TABLES_CUSTOM_ATTRIBUTES: {
+ header: 'Tables',
+ subHeader:
+ 'Define additional properties for tables to serve your organizational needs.',
+ },
+ TOPICS_CUSTOM_ATTRIBUTES: {
+ header: 'Topics',
+ subHeader:
+ 'Define custom properties for topics to serve your organizational needs.',
+ },
+ DASHBOARD_CUSTOM_ATTRIBUTES: {
+ header: 'Dashboards',
+ subHeader:
+ 'Define custom attributes for dashboards to serve your organizational needs.',
+ },
+ PIPELINES_CUSTOM_ATTRIBUTES: {
+ header: 'Pipelines',
+ subHeader:
+ 'Define additional attributes for pipelines to serve your organizational needs.',
+ },
+ ML_MODELS_CUSTOM_ATTRIBUTES: {
+ header: 'ML Models',
+ subHeader:
+ 'Define custom properties for ML models to serve your organizational needs.',
+ },
+ BOTS: {
+ header: 'Bots',
+ subHeader: 'Create well-defined bots with scoped access permissions.',
+ },
+};
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/CustomPropertiesPageV1/CustomPropertiesPageV1.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/CustomPropertiesPageV1/CustomPropertiesPageV1.tsx
index 11a97d61e26..832bd2a7d16 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/CustomPropertiesPageV1/CustomPropertiesPageV1.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/CustomPropertiesPageV1/CustomPropertiesPageV1.tsx
@@ -15,13 +15,14 @@ import { Button as ButtonAntd, Col, Row, Tooltip } from 'antd';
import { AxiosError } from 'axios';
import { compare } from 'fast-json-patch';
import { isEmpty, isUndefined } from 'lodash';
-import React, { useEffect, useMemo, useState } from 'react';
+import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { useHistory, useParams } from 'react-router-dom';
import { getTypeByFQN, updateType } from '../../axiosAPIs/metadataTypeAPI';
import { Button } from '../../components/buttons/Button/Button';
import ErrorPlaceHolder from '../../components/common/error-with-placeholder/ErrorPlaceHolder';
import TabsPane from '../../components/common/TabsPane/TabsPane';
import { CustomPropertyTable } from '../../components/CustomEntityDetail/CustomPropertyTable';
+import PageHeader from '../../components/header/PageHeader.component';
import Loader from '../../components/Loader/Loader';
import { usePermissionProvider } from '../../components/PermissionProvider/PermissionProvider';
import {
@@ -38,6 +39,7 @@ import {
NO_PERMISSION_FOR_ACTION,
NO_PERMISSION_TO_VIEW,
} from '../../constants/HelperTextUtil';
+import { PAGE_HEADERS } from '../../constants/PageHeaders.constant';
import { Type } from '../../generated/entity/type';
import jsonData from '../../jsons/en';
import { DEFAULT_ENTITY_PERMISSION } from '../../utils/PermissionsUtils';
@@ -139,6 +141,24 @@ const CustomEntityDetailV1 = () => {
}
};
+ const getCustomPageHeader = useCallback(() => {
+ switch (tabAttributePath) {
+ case ENTITY_PATH.tables:
+ return PAGE_HEADERS.TABLES_CUSTOM_ATTRIBUTES;
+ case ENTITY_PATH.topics:
+ return PAGE_HEADERS.TOPICS_CUSTOM_ATTRIBUTES;
+ case ENTITY_PATH.dashboards:
+ return PAGE_HEADERS.DASHBOARD_CUSTOM_ATTRIBUTES;
+ case ENTITY_PATH.pipelines:
+ return PAGE_HEADERS.PIPELINES_CUSTOM_ATTRIBUTES;
+ case ENTITY_PATH.mlmodels:
+ return PAGE_HEADERS.ML_MODELS_CUSTOM_ATTRIBUTES;
+
+ default:
+ return PAGE_HEADERS.TABLES_CUSTOM_ATTRIBUTES;
+ }
+ }, [tabAttributePath]);
+
useEffect(() => {
if (!isUndefined(tab)) {
setActiveTab(1);
@@ -170,6 +190,9 @@ const CustomEntityDetailV1 = () => {
className="m-y-xs"
data-testid="custom-entity-container"
gutter={[16, 16]}>
+
+
+
{
data-testid="policies-list-container"
gutter={[16, 16]}>
-
+
+
{
data-testid="roles-list-container"
gutter={[16, 16]}>
-
+
+
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/UserListPage/UserListPageV1.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/UserListPage/UserListPageV1.tsx
index 5f26758a434..2bfe9f38ff0 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/UserListPage/UserListPageV1.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/UserListPage/UserListPageV1.tsx
@@ -222,6 +222,7 @@ const UserListPageV1 = () => {
afterDeleteAction={handleFetch}
currentPage={currentPage}
data={userList}
+ isAdminPage={isAdminPage}
isDataLoading={isDataLoading}
paging={paging}
searchTerm={searchValue}
diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/app.less b/openmetadata-ui/src/main/resources/ui/src/styles/app.less
index 8b597fab05b..52f8d2f5158 100644
--- a/openmetadata-ui/src/main/resources/ui/src/styles/app.less
+++ b/openmetadata-ui/src/main/resources/ui/src/styles/app.less
@@ -307,11 +307,6 @@
}
/* Group CSS End*/
-.heading {
- font-weight: 500 !important;
- margin-bottom: 16px !important;
- color: @grey-body !important;
-}
.quick-filter-dropdown-trigger-btn {
padding: 4px;