mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	chore(ui): change github start modal to popup (#13948)
This commit is contained in:
		
							parent
							
								
									294a15d9df
								
							
						
					
					
						commit
						3fdc71a98b
					
				| @ -979,6 +979,10 @@ export const login = (username, password) => { | |||||||
|   cy.visit('/'); |   cy.visit('/'); | ||||||
|   cy.get('[id="email"]').should('be.visible').clear().type(username); |   cy.get('[id="email"]').should('be.visible').clear().type(username); | ||||||
|   cy.get('[id="password"]').should('be.visible').clear().type(password); |   cy.get('[id="password"]').should('be.visible').clear().type(password); | ||||||
|  | 
 | ||||||
|  |   // Don't want to show any popup in the tests
 | ||||||
|  |   cy.setCookie(`STAR_OMD_USER_${username.split('@')[0]}`, 'true'); | ||||||
|  | 
 | ||||||
|   cy.get('.ant-btn').contains('Login').should('be.visible').click(); |   cy.get('.ant-btn').contains('Login').should('be.visible').click(); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -120,6 +120,9 @@ Cypress.Commands.add('storeSession', (username, password) => { | |||||||
|       .click(); |       .click(); | ||||||
|     verifyResponseStatusCode('@login', 200); |     verifyResponseStatusCode('@login', 200); | ||||||
|     cy.url().should('not.eq', `${BASE_URL}/signin`); |     cy.url().should('not.eq', `${BASE_URL}/signin`); | ||||||
|  | 
 | ||||||
|  |     // Don't want to show any popup in the tests
 | ||||||
|  |     cy.setCookie(`STAR_OMD_USER_admin`, 'true'); | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,153 @@ | |||||||
|  | /* | ||||||
|  |  *  Copyright 2023 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 Icon from '@ant-design/icons/lib/components/Icon'; | ||||||
|  | import { Affix, Button, Card, Skeleton, Space, Typography } from 'antd'; | ||||||
|  | import ButtonGroup from 'antd/lib/button/button-group'; | ||||||
|  | import { CookieStorage } from 'cookie-storage'; | ||||||
|  | import React, { useCallback, useEffect, useMemo, useState } from 'react'; | ||||||
|  | import { useTranslation } from 'react-i18next'; | ||||||
|  | import { Link, useLocation } from 'react-router-dom'; | ||||||
|  | import { ReactComponent as StarGithubIcon } from '../../assets/svg/ic-star-github.svg'; | ||||||
|  | import { ReactComponent as StarIcon } from '../../assets/svg/ic-start-filled-github.svg'; | ||||||
|  | import { ROUTES, STAR_OMD_USER } from '../../constants/constants'; | ||||||
|  | import { OMD_REPOSITORY_LINK } from '../../constants/docs.constants'; | ||||||
|  | import { getRepositoryData } from '../../rest/commonAPI'; | ||||||
|  | import { getReleaseVersionExpiry } from '../../utils/WhatsNewModal.util'; | ||||||
|  | import { useAuthContext } from '../Auth/AuthProviders/AuthProvider'; | ||||||
|  | import { COOKIE_VERSION } from '../Modals/WhatsNewModal/whatsNewData'; | ||||||
|  | import './github-star-card.style.less'; | ||||||
|  | 
 | ||||||
|  | const cookieStorage = new CookieStorage(); | ||||||
|  | 
 | ||||||
|  | const GithubStarCard = () => { | ||||||
|  |   const { t } = useTranslation(); | ||||||
|  |   const location = useLocation(); | ||||||
|  |   const { currentUser } = useAuthContext(); | ||||||
|  |   const [showGithubStarPopup, setShowGithubStarPopup] = useState(false); | ||||||
|  |   const [starredCount, setStarredCount] = useState<number>(0); | ||||||
|  |   const [isLoading, setIsLoading] = useState<boolean>(true); | ||||||
|  | 
 | ||||||
|  |   const loggedInUserName = useMemo(() => currentUser?.name, [currentUser]); | ||||||
|  | 
 | ||||||
|  |   const isWhatNewAlertVisible = useMemo( | ||||||
|  |     () => cookieStorage.getItem(COOKIE_VERSION) !== 'true', | ||||||
|  |     [cookieStorage] | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
|  |   const userCookieName = useMemo( | ||||||
|  |     () => `${STAR_OMD_USER}_${loggedInUserName}`, | ||||||
|  |     [loggedInUserName] | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
|  |   const isHomePage = useMemo( | ||||||
|  |     () => location.pathname.includes(ROUTES.MY_DATA), | ||||||
|  |     [location.pathname] | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
|  |   const usernameExistsInCookie = useMemo( | ||||||
|  |     () => Boolean(cookieStorage.getItem(userCookieName)), | ||||||
|  |     [userCookieName] | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
|  |   const fetchOpenMetaData = async () => { | ||||||
|  |     try { | ||||||
|  |       const res = await getRepositoryData(); | ||||||
|  |       setStarredCount(res.stargazers_count); | ||||||
|  |     } catch (err) { | ||||||
|  |       // Error
 | ||||||
|  |     } finally { | ||||||
|  |       setIsLoading(false); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const updateGithubPopup = useCallback( | ||||||
|  |     (show: boolean) => { | ||||||
|  |       if (loggedInUserName && show) { | ||||||
|  |         fetchOpenMetaData(); | ||||||
|  |         cookieStorage.setItem(userCookieName, 'true', { | ||||||
|  |           expires: getReleaseVersionExpiry(), | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |       setShowGithubStarPopup(show); | ||||||
|  |     }, | ||||||
|  |     [ | ||||||
|  |       loggedInUserName, | ||||||
|  |       usernameExistsInCookie, | ||||||
|  |       userCookieName, | ||||||
|  |       getReleaseVersionExpiry, | ||||||
|  |     ] | ||||||
|  |   ); | ||||||
|  | 
 | ||||||
|  |   useEffect(() => { | ||||||
|  |     updateGithubPopup(!usernameExistsInCookie); | ||||||
|  | 
 | ||||||
|  |     return () => setShowGithubStarPopup(false); | ||||||
|  |   }, [usernameExistsInCookie, updateGithubPopup]); | ||||||
|  | 
 | ||||||
|  |   return showGithubStarPopup && isHomePage ? ( | ||||||
|  |     <Affix | ||||||
|  |       className={`github-star-popup-card 
 | ||||||
|  |       ${ | ||||||
|  |         isWhatNewAlertVisible | ||||||
|  |           ? 'github-star-popup-card-with-alert' | ||||||
|  |           : 'github-star-popup-card-without-alert' | ||||||
|  |       } | ||||||
|  |       `}>
 | ||||||
|  |       <Card data-testid="github-star-popup-card"> | ||||||
|  |         <Space> | ||||||
|  |           <StarIcon className="github-star-icon" /> | ||||||
|  | 
 | ||||||
|  |           <Typography.Text className="github-star-popup-header"> | ||||||
|  |             {t('label.star-us-on-github')} | ||||||
|  |           </Typography.Text> | ||||||
|  |         </Space> | ||||||
|  | 
 | ||||||
|  |         <Typography.Paragraph className="github-star-popup-description"> | ||||||
|  |           {t('message.star-on-github-description')} | ||||||
|  |         </Typography.Paragraph> | ||||||
|  | 
 | ||||||
|  |         <ButtonGroup className="github-action-button-group"> | ||||||
|  |           <Link | ||||||
|  |             component={Typography.Link} | ||||||
|  |             target="_blank" | ||||||
|  |             to={{ | ||||||
|  |               pathname: OMD_REPOSITORY_LINK, | ||||||
|  |             }}> | ||||||
|  |             <Button | ||||||
|  |               className="github-star-button github-modal-action-button" | ||||||
|  |               icon={<Icon component={StarGithubIcon} size={12} />}> | ||||||
|  |               {t('label.star')} | ||||||
|  |             </Button> | ||||||
|  |           </Link> | ||||||
|  | 
 | ||||||
|  |           <Link | ||||||
|  |             component={Typography.Link} | ||||||
|  |             target="_blank" | ||||||
|  |             to={{ | ||||||
|  |               pathname: OMD_REPOSITORY_LINK, | ||||||
|  |             }}> | ||||||
|  |             <Button className="github-modal-action-button"> | ||||||
|  |               {isLoading ? ( | ||||||
|  |                 <Skeleton.Button active size="small" /> | ||||||
|  |               ) : ( | ||||||
|  |                 starredCount | ||||||
|  |               )} | ||||||
|  |             </Button> | ||||||
|  |           </Link> | ||||||
|  |         </ButtonGroup> | ||||||
|  |       </Card> | ||||||
|  |     </Affix> | ||||||
|  |   ) : null; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default GithubStarCard; | ||||||
| @ -0,0 +1,101 @@ | |||||||
|  | /* | ||||||
|  |  *  Copyright 2023 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 (reference) url('../../styles/variables.less'); | ||||||
|  | 
 | ||||||
|  | .github-star-popup-card { | ||||||
|  |   border: none; | ||||||
|  |   text-align: center; | ||||||
|  |   position: fixed; | ||||||
|  |   right: 30px; | ||||||
|  |   bottom: -100%; | ||||||
|  |   z-index: 1; | ||||||
|  |   background: #fff; | ||||||
|  | 
 | ||||||
|  |   .ant-card { | ||||||
|  |     position: relative; | ||||||
|  |     width: 342px; | ||||||
|  |     overflow: hidden; | ||||||
|  |     border-radius: 14px; | ||||||
|  |     box-shadow: @box-shadow-base; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   .github-star-icon { | ||||||
|  |     width: 24px; | ||||||
|  |     vertical-align: sub; | ||||||
|  |     color: @yellow-2; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   .github-star-popup-header { | ||||||
|  |     color: @primary-color; | ||||||
|  |     font-size: 20px; | ||||||
|  |     font-weight: 500; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   .github-star-popup-description { | ||||||
|  |     margin-top: 10px; | ||||||
|  |     color: @text-grey-muted; | ||||||
|  |     font-size: 14px; | ||||||
|  |     font-weight: 400; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   .github-action-button-group { | ||||||
|  |     border-radius: 4px; | ||||||
|  |     border: @global-border; | ||||||
|  |     overflow: hidden; | ||||||
|  | 
 | ||||||
|  |     .github-modal-action-button { | ||||||
|  |       border: none; | ||||||
|  | 
 | ||||||
|  |       &:hover { | ||||||
|  |         color: initial; | ||||||
|  |         border: none; | ||||||
|  |       } | ||||||
|  |       &:focus { | ||||||
|  |         color: initial; | ||||||
|  |         border: none; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .github-star-button { | ||||||
|  |       background: linear-gradient(0.5turn, rgba(0, 0, 0, 0.2), transparent); | ||||||
|  |       border-right: @global-border; | ||||||
|  | 
 | ||||||
|  |       &:hover { | ||||||
|  |         border-right: @global-border; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .github-star-popup-card-with-alert { | ||||||
|  |   animation: scrollInWithAlert 2s normal forwards ease-in-out; | ||||||
|  |   animation-delay: 1s; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .github-star-popup-card-without-alert { | ||||||
|  |   animation: scrollInWithoutAlert 2s normal forwards ease-in-out; | ||||||
|  |   animation-delay: 1s; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @keyframes scrollInWithAlert { | ||||||
|  |   to { | ||||||
|  |     bottom: 200px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @keyframes scrollInWithoutAlert { | ||||||
|  |   to { | ||||||
|  |     bottom: 24px; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,168 +0,0 @@ | |||||||
| /* |  | ||||||
|  *  Copyright 2023 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 { Button, Card, Modal, Skeleton, Typography } from 'antd'; |  | ||||||
| import { CookieStorage } from 'cookie-storage'; |  | ||||||
| import React, { useCallback, useEffect, useMemo, useState } from 'react'; |  | ||||||
| import { useTranslation } from 'react-i18next'; |  | ||||||
| import { Link, useLocation } from 'react-router-dom'; |  | ||||||
| import { ReactComponent as CloseIcon } from '../../../assets/svg/close.svg'; |  | ||||||
| import { ReactComponent as StarGithubIcon } from '../../../assets/svg/ic-star-github.svg'; |  | ||||||
| import { ReactComponent as StarIcon } from '../../../assets/svg/ic-start-filled-github.svg'; |  | ||||||
| 
 |  | ||||||
| import Icon from '@ant-design/icons/lib/components/Icon'; |  | ||||||
| import ButtonGroup from 'antd/lib/button/button-group'; |  | ||||||
| import { |  | ||||||
|   ROUTES, |  | ||||||
|   STAR_OMD_USER, |  | ||||||
|   TEXT_GREY_MUTED, |  | ||||||
| } from '../../../constants/constants'; |  | ||||||
| import { getRepositoryData } from '../../../rest/commonAPI'; |  | ||||||
| import { getReleaseVersionExpiry } from '../../../utils/WhatsNewModal.util'; |  | ||||||
| import { useAuthContext } from '../../Auth/AuthProviders/AuthProvider'; |  | ||||||
| import './github-star-modal.style.less'; |  | ||||||
| 
 |  | ||||||
| const cookieStorage = new CookieStorage(); |  | ||||||
| 
 |  | ||||||
| const GithubStarModal = () => { |  | ||||||
|   const { t } = useTranslation(); |  | ||||||
|   const location = useLocation(); |  | ||||||
|   const { currentUser } = useAuthContext(); |  | ||||||
|   const [showGithubStarPopup, setShowGithubStarPopup] = useState(false); |  | ||||||
|   const [starredCount, setStarredCount] = useState<number>(0); |  | ||||||
|   const [isLoading, setIsLoading] = useState<boolean>(true); |  | ||||||
| 
 |  | ||||||
|   const loggedInUserName = useMemo(() => currentUser?.name, [currentUser]); |  | ||||||
| 
 |  | ||||||
|   const userCookieName = useMemo( |  | ||||||
|     () => `${STAR_OMD_USER}_${loggedInUserName}`, |  | ||||||
|     [loggedInUserName] |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   const isHomePage = useMemo( |  | ||||||
|     () => location.pathname.includes(ROUTES.MY_DATA), |  | ||||||
|     [location.pathname] |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   const usernameExistsInCookie = useMemo( |  | ||||||
|     () => Boolean(cookieStorage.getItem(userCookieName)), |  | ||||||
|     [userCookieName] |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   const fetchOpenMetaData = async () => { |  | ||||||
|     try { |  | ||||||
|       const res = await getRepositoryData(); |  | ||||||
|       setStarredCount(res.stargazers_count); |  | ||||||
|     } catch (err) { |  | ||||||
|       // Error
 |  | ||||||
|     } finally { |  | ||||||
|       setIsLoading(false); |  | ||||||
|     } |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   const updateGithubPopup = useCallback( |  | ||||||
|     (show: boolean) => { |  | ||||||
|       if (loggedInUserName && show) { |  | ||||||
|         fetchOpenMetaData(); |  | ||||||
|         cookieStorage.setItem(userCookieName, 'true', { |  | ||||||
|           expires: getReleaseVersionExpiry(), |  | ||||||
|         }); |  | ||||||
|       } |  | ||||||
|       setShowGithubStarPopup(show); |  | ||||||
|     }, |  | ||||||
|     [ |  | ||||||
|       loggedInUserName, |  | ||||||
|       usernameExistsInCookie, |  | ||||||
|       userCookieName, |  | ||||||
|       getReleaseVersionExpiry, |  | ||||||
|     ] |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   useEffect(() => { |  | ||||||
|     updateGithubPopup(!usernameExistsInCookie); |  | ||||||
| 
 |  | ||||||
|     return () => setShowGithubStarPopup(false); |  | ||||||
|   }, [usernameExistsInCookie, updateGithubPopup]); |  | ||||||
| 
 |  | ||||||
|   return ( |  | ||||||
|     <> |  | ||||||
|       {showGithubStarPopup && isHomePage && ( |  | ||||||
|         <Modal |  | ||||||
|           centered |  | ||||||
|           destroyOnClose |  | ||||||
|           keyboard |  | ||||||
|           open |  | ||||||
|           className="github-star-popup-modal" |  | ||||||
|           closeIcon={ |  | ||||||
|             <CloseIcon |  | ||||||
|               color={TEXT_GREY_MUTED} |  | ||||||
|               data-testid="github-star-popup-close-button" |  | ||||||
|               height={12} |  | ||||||
|               width={12} |  | ||||||
|               onClick={() => setShowGithubStarPopup(false)} |  | ||||||
|             /> |  | ||||||
|           } |  | ||||||
|           data-testid="github-star-popup-modal" |  | ||||||
|           footer={null} |  | ||||||
|           maskClosable={false} |  | ||||||
|           width={440} |  | ||||||
|           onCancel={() => setShowGithubStarPopup(false)}> |  | ||||||
|           <Card |  | ||||||
|             className="github-star-popup-card" |  | ||||||
|             data-testid="github-star-popup-card"> |  | ||||||
|             <StarIcon className="github-star-icon" /> |  | ||||||
| 
 |  | ||||||
|             <Typography.Text className="github-star-popup-header"> |  | ||||||
|               {t('label.star-us-on-github')} |  | ||||||
|             </Typography.Text> |  | ||||||
| 
 |  | ||||||
|             <Typography.Paragraph className="github-star-popup-description"> |  | ||||||
|               {t('message.star-on-github-description')} |  | ||||||
|             </Typography.Paragraph> |  | ||||||
| 
 |  | ||||||
|             <ButtonGroup className="github-action-button-group"> |  | ||||||
|               <Link |  | ||||||
|                 component={Typography.Link} |  | ||||||
|                 target="_blank" |  | ||||||
|                 to={{ |  | ||||||
|                   pathname: 'https://github.com/open-metadata/OpenMetadata', |  | ||||||
|                 }}> |  | ||||||
|                 <Button |  | ||||||
|                   className="github-star-button github-modal-action-button" |  | ||||||
|                   icon={<Icon component={StarGithubIcon} size={12} />}> |  | ||||||
|                   {t('label.star')} |  | ||||||
|                 </Button> |  | ||||||
|               </Link> |  | ||||||
| 
 |  | ||||||
|               <Link |  | ||||||
|                 component={Typography.Link} |  | ||||||
|                 target="_blank" |  | ||||||
|                 to={{ |  | ||||||
|                   pathname: 'https://github.com/open-metadata/OpenMetadata', |  | ||||||
|                 }}> |  | ||||||
|                 <Button className="github-modal-action-button"> |  | ||||||
|                   {isLoading ? ( |  | ||||||
|                     <Skeleton.Button active size="small" /> |  | ||||||
|                   ) : ( |  | ||||||
|                     starredCount |  | ||||||
|                   )} |  | ||||||
|                 </Button> |  | ||||||
|               </Link> |  | ||||||
|             </ButtonGroup> |  | ||||||
|           </Card> |  | ||||||
|         </Modal> |  | ||||||
|       )} |  | ||||||
|     </> |  | ||||||
|   ); |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| export default GithubStarModal; |  | ||||||
| @ -1,65 +0,0 @@ | |||||||
| /* |  | ||||||
|  *  Copyright 2023 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 (reference) url('../../../styles/variables.less'); |  | ||||||
| 
 |  | ||||||
| .github-star-popup-modal { |  | ||||||
|   .github-star-popup-card { |  | ||||||
|     border: none; |  | ||||||
|     text-align: center; |  | ||||||
| 
 |  | ||||||
|     .github-star-icon { |  | ||||||
|       display: block; |  | ||||||
|       margin: 24px auto; |  | ||||||
|       width: 50px; |  | ||||||
|       color: @yellow-2; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     .github-star-popup-header { |  | ||||||
|       color: @primary-color; |  | ||||||
|       font-size: 20px; |  | ||||||
|       font-weight: 500; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     .github-star-popup-description { |  | ||||||
|       margin-top: 10px; |  | ||||||
|       color: @text-grey-muted; |  | ||||||
|       font-size: 14px; |  | ||||||
|       font-weight: 400; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     .github-action-button-group { |  | ||||||
|       border-radius: 4px; |  | ||||||
|       border: @global-border; |  | ||||||
|       overflow: hidden; |  | ||||||
| 
 |  | ||||||
|       .github-star-button { |  | ||||||
|         background: linear-gradient(0.5turn, rgba(0, 0, 0, 0.2), transparent); |  | ||||||
|         border-right: @global-border !important; |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       .github-modal-action-button { |  | ||||||
|         border: none; |  | ||||||
| 
 |  | ||||||
|         &:hover { |  | ||||||
|           color: initial; |  | ||||||
|           border: none; |  | ||||||
|         } |  | ||||||
|         &:focus { |  | ||||||
|           color: initial; |  | ||||||
|           border: none; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -21,6 +21,7 @@ import { ReactComponent as RightArrowIcon } from '../../../../assets/svg/ic-arro | |||||||
| import { ReactComponent as PlayIcon } from '../../../../assets/svg/ic-play-button.svg'; | import { ReactComponent as PlayIcon } from '../../../../assets/svg/ic-play-button.svg'; | ||||||
| import { ReactComponent as StarIcon } from '../../../../assets/svg/ic-star.svg'; | import { ReactComponent as StarIcon } from '../../../../assets/svg/ic-star.svg'; | ||||||
| import { BLACK_COLOR, ROUTES } from '../../../../constants/constants'; | import { BLACK_COLOR, ROUTES } from '../../../../constants/constants'; | ||||||
|  | import { OMD_REPOSITORY_LINK } from '../../../../constants/docs.constants'; | ||||||
| import { useAuth } from '../../../../hooks/authHooks'; | import { useAuth } from '../../../../hooks/authHooks'; | ||||||
| import { getReleaseVersionExpiry } from '../../../../utils/WhatsNewModal.util'; | import { getReleaseVersionExpiry } from '../../../../utils/WhatsNewModal.util'; | ||||||
| import { COOKIE_VERSION, LATEST_VERSION_ID, WHATS_NEW } from '../whatsNewData'; | import { COOKIE_VERSION, LATEST_VERSION_ID, WHATS_NEW } from '../whatsNewData'; | ||||||
| @ -123,7 +124,7 @@ const WhatsNewAlert = () => { | |||||||
|                     component={Typography.Link} |                     component={Typography.Link} | ||||||
|                     target="_blank" |                     target="_blank" | ||||||
|                     to={{ |                     to={{ | ||||||
|                       pathname: 'https://github.com/open-metadata/OpenMetadata', |                       pathname: OMD_REPOSITORY_LINK, | ||||||
|                     }}> |                     }}> | ||||||
|                     {t('label.star-open-metadata')} |                     {t('label.star-open-metadata')} | ||||||
|                   </Link> |                   </Link> | ||||||
|  | |||||||
| @ -74,14 +74,13 @@ import BrandImage from '../common/BrandImage/BrandImage'; | |||||||
| import CmdKIcon from '../common/CmdKIcon/CmdKIcon.component'; | import CmdKIcon from '../common/CmdKIcon/CmdKIcon.component'; | ||||||
| import { useDomainProvider } from '../Domain/DomainProvider/DomainProvider'; | import { useDomainProvider } from '../Domain/DomainProvider/DomainProvider'; | ||||||
| import { useGlobalSearchProvider } from '../GlobalSearchProvider/GlobalSearchProvider'; | import { useGlobalSearchProvider } from '../GlobalSearchProvider/GlobalSearchProvider'; | ||||||
| import GithubStarModal from '../Modals/GithubStarModal/GithubStarModal.component'; |  | ||||||
| import WhatsNewAlert from '../Modals/WhatsNewModal/WhatsNewAlert/WhatsNewAlert.component'; |  | ||||||
| import WhatsNewModal from '../Modals/WhatsNewModal/WhatsNewModal'; | import WhatsNewModal from '../Modals/WhatsNewModal/WhatsNewModal'; | ||||||
| import NotificationBox from '../NotificationBox/NotificationBox.component'; | import NotificationBox from '../NotificationBox/NotificationBox.component'; | ||||||
| import { UserProfileIcon } from '../Users/UserProfileIcon/UserProfileIcon.component'; | import { UserProfileIcon } from '../Users/UserProfileIcon/UserProfileIcon.component'; | ||||||
| import { useWebSocketConnector } from '../WebSocketProvider/WebSocketProvider'; | import { useWebSocketConnector } from '../WebSocketProvider/WebSocketProvider'; | ||||||
| import './nav-bar.less'; | import './nav-bar.less'; | ||||||
| import { NavBarProps } from './NavBar.interface'; | import { NavBarProps } from './NavBar.interface'; | ||||||
|  | import popupAlertsCardsClassBase from './PopupAlertClassBase'; | ||||||
| 
 | 
 | ||||||
| const cookieStorage = new CookieStorage(); | const cookieStorage = new CookieStorage(); | ||||||
| 
 | 
 | ||||||
| @ -120,6 +119,16 @@ const NavBar = ({ | |||||||
|     useState<boolean>(false); |     useState<boolean>(false); | ||||||
|   const [activeTab, setActiveTab] = useState<string>('Task'); |   const [activeTab, setActiveTab] = useState<string>('Task'); | ||||||
| 
 | 
 | ||||||
|  |   const renderAlertCards = useMemo(() => { | ||||||
|  |     const cardList = popupAlertsCardsClassBase.alertsCards(); | ||||||
|  | 
 | ||||||
|  |     return cardList.map(({ key, component }) => { | ||||||
|  |       const Component = component; | ||||||
|  | 
 | ||||||
|  |       return <Component key={key} />; | ||||||
|  |     }); | ||||||
|  |   }, []); | ||||||
|  | 
 | ||||||
|   const entitiesSelect = useMemo( |   const entitiesSelect = useMemo( | ||||||
|     () => ( |     () => ( | ||||||
|       <Select |       <Select | ||||||
| @ -519,9 +528,8 @@ const NavBar = ({ | |||||||
|         visible={isFeatureModalOpen} |         visible={isFeatureModalOpen} | ||||||
|         onCancel={handleModalCancel} |         onCancel={handleModalCancel} | ||||||
|       /> |       /> | ||||||
|       <WhatsNewAlert /> |  | ||||||
| 
 | 
 | ||||||
|       <GithubStarModal /> |       {renderAlertCards} | ||||||
|     </> |     </> | ||||||
|   ); |   ); | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -0,0 +1,35 @@ | |||||||
|  | /* | ||||||
|  |  *  Copyright 2023 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 GithubStarCard from '../GithubStarCard/GithubStarCard.component'; | ||||||
|  | import WhatsNewAlert from '../Modals/WhatsNewModal/WhatsNewAlert/WhatsNewAlert.component'; | ||||||
|  | 
 | ||||||
|  | class PopupAlertsCardsClassBase { | ||||||
|  |   public alertsCards() { | ||||||
|  |     return [ | ||||||
|  |       { | ||||||
|  |         key: 'whatNewAlertCard', | ||||||
|  |         component: WhatsNewAlert, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         key: 'githubPopupAlertCard', | ||||||
|  |         component: GithubStarCard, | ||||||
|  |       }, | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const popupAlertsCardsClassBase = new PopupAlertsCardsClassBase(); | ||||||
|  | 
 | ||||||
|  | export default popupAlertsCardsClassBase; | ||||||
|  | export { PopupAlertsCardsClassBase }; | ||||||
| @ -11,6 +11,9 @@ | |||||||
|  *  limitations under the License. |  *  limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | export const OMD_REPOSITORY_LINK = | ||||||
|  |   'https://github.com/open-metadata/OpenMetadata'; | ||||||
|  | 
 | ||||||
| export const WORKFLOWS_PROFILER_DOCS = | export const WORKFLOWS_PROFILER_DOCS = | ||||||
|   'https://docs.open-metadata.org/connectors/ingestion/workflows/profiler'; |   'https://docs.open-metadata.org/connectors/ingestion/workflows/profiler'; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Chirag Madlani
						Chirag Madlani