1- import React , { MouseEvent , useCallback , useMemo , useState } from 'react' ;
1+ import React , { MouseEvent , useCallback , useEffect , useMemo , useState } from 'react' ;
2+
3+ import _ from 'lodash' ;
24
35import Control from '../../../components/Control/Control' ;
46import OutsideClick from '../../../components/OutsideClick/OutsideClick' ;
@@ -68,9 +70,10 @@ const isDropdownItem = (item: NavigationItemModel): item is NavigationDropdownIt
6870 item . type === NavigationItemType . Dropdown ;
6971
7072export const Header : React . FC < HeaderProps > = ( { data, logo} ) => {
71- const { leftItems, rightItems, iconSize = 20 } = data ;
73+ const { leftItems, rightItems, iconSize = 20 , withBorder = false } = data ;
7274 const [ isSidebarOpened , setIsSidebarOpened ] = useState ( false ) ;
73- const [ activeItemId , setactiveItemId ] = useState < string | undefined > ( undefined ) ;
75+ const [ activeItemId , setActiveItemId ] = useState < string | undefined > ( undefined ) ;
76+ const [ showBorder , setShowBorder ] = useState ( withBorder ) ;
7477
7578 const getNavigationItemWithIconSize = useCallback (
7679 ( item : NavigationItemModel ) => {
@@ -99,7 +102,7 @@ export const Header: React.FC<HeaderProps> = ({data, logo}) => {
99102 ) ;
100103
101104 const onActiveItemChange = useCallback ( ( id ?: string ) => {
102- setactiveItemId ( id ) ;
105+ setActiveItemId ( id ) ;
103106 } , [ ] ) ;
104107
105108 const hidePopup = useCallback ( ( ) => {
@@ -114,8 +117,19 @@ export const Header: React.FC<HeaderProps> = ({data, logo}) => {
114117 setIsSidebarOpened ( false ) ;
115118 } , [ ] ) ;
116119
120+ useEffect ( ( ) => {
121+ const showBorderOnScroll = ( ) => {
122+ if ( ! showBorder ) {
123+ setShowBorder ( window . scrollY > 0 ) ;
124+ }
125+ } ;
126+
127+ window . addEventListener ( 'scroll' , _ . debounce ( showBorderOnScroll , 20 ) , { passive : true } ) ;
128+ return ( ) => window . removeEventListener ( 'scroll' , _ . debounce ( showBorderOnScroll , 20 ) ) ;
129+ } ) ;
130+
117131 return (
118- < Grid className = { b ( ) } >
132+ < Grid className = { b ( { 'with-border' : showBorder } ) } >
119133 < Row >
120134 < Col >
121135 < header className = { b ( 'wrapper' ) } >
0 commit comments