1- import React , { useState } from "react" ;
1+ import React , { MouseEventHandler , useState } from "react" ;
22import TextIcon from "components/img/Text" ;
33import MultiIcon from "components/img/Multi" ;
44import HashIcon from "components/img/Hash" ;
@@ -31,8 +31,6 @@ import { AddColumnModalProps } from "cdm/ModalsModel";
3131 */
3232export default function DefaultHeader ( headerProps : DatabaseHeaderProps ) {
3333 LOGGER . debug ( `=>Header ${ headerProps . column . columnDef } ` ) ;
34- // TODO : add a tooltip to the header
35- const created : boolean = false ;
3634 /** Properties of header */
3735 const { header, table } = headerProps ;
3836 const { tableState } = table . options . meta ;
@@ -47,7 +45,7 @@ export default function DefaultHeader(headerProps: DatabaseHeaderProps) {
4745 /** Column values */
4846 const { id, input, label, config } = header . column . columnDef as TableColumn ;
4947 /** reducer asociated to database */
50- const [ expanded , setExpanded ] = useState ( created || false ) ;
48+ const [ menuEl , setMenuEl ] = useState < null | HTMLElement > ( null ) ;
5149 const [ referenceElement , setReferenceElement ] = useState ( null ) ;
5250 const [ labelState , setLabelState ] = useState ( label ) ;
5351
@@ -110,12 +108,16 @@ export default function DefaultHeader(headerProps: DatabaseHeaderProps) {
110108 new AddColumnModal ( table . options . meta . view , addColumnProps ) . open ( ) ;
111109 }
112110
111+ const openMenuHandler : MouseEventHandler < HTMLDivElement > = ( event ) => {
112+ setMenuEl ( menuEl ? null : event . currentTarget ) ;
113+ } ;
114+
113115 LOGGER . debug ( `<=Header ${ label } ` ) ;
114116 return id !== MetadataColumns . ADD_COLUMN ? (
115117 < >
116118 < div
117119 className = { `${ c ( "th-content" ) } ` }
118- onClick = { ( ) => setExpanded ( true ) }
120+ onClick = { openMenuHandler }
119121 ref = { setReferenceElement }
120122 >
121123 < span className = "svg-icon svg-gray icon-margin" > { propertyIcon } </ span >
@@ -139,19 +141,15 @@ export default function DefaultHeader(headerProps: DatabaseHeaderProps) {
139141 </ span >
140142 ) }
141143 </ div >
142- { ReactDOM . createPortal (
143- < HeaderMenu
144- headerProps = { headerProps }
145- propertyIcon = { propertyIcon }
146- expanded = { expanded }
147- setExpanded = { setExpanded }
148- created = { created }
149- referenceElement = { referenceElement }
150- labelState = { labelState }
151- setLabelState = { setLabelState }
152- /> ,
153- activeDocument . body
154- ) }
144+ < HeaderMenu
145+ headerProps = { headerProps }
146+ propertyIcon = { propertyIcon }
147+ menuEl = { menuEl }
148+ setMenuEl = { setMenuEl }
149+ referenceElement = { referenceElement }
150+ labelState = { labelState }
151+ setLabelState = { setLabelState }
152+ />
155153 </ >
156154 ) : (
157155 < div
0 commit comments