@@ -14,7 +14,12 @@ import { TableDataType, RowDataType, TableColumn } from "cdm/FolderModel";
1414import { DatabaseView } from "DatabaseView" ;
1515import StateManager from "StateManager" ;
1616import { getNormalizedPath } from "helpers/VaultManagement" ;
17- import { ActionTypes , DatabaseCore , MetadataColumns } from "helpers/Constants" ;
17+ import {
18+ ActionTypes ,
19+ DatabaseCore ,
20+ DataTypes ,
21+ MetadataColumns ,
22+ } from "helpers/Constants" ;
1823import PlusIcon from "components/img/Plus" ;
1924import { LOGGER } from "services/Logger" ;
2025import DefaultCell from "components/Cell" ;
@@ -255,107 +260,136 @@ export function Table(initialState: TableDataType) {
255260 />
256261 { /** Headers */ }
257262 { headerGroups . map ( ( headerGroup , i ) => (
258- < DragDropContext
259- key = { `DragDropContext-${ i } ` }
260- onDragStart = { ( ) => {
261- currentColOrder . current = allColumns . map ( ( o : Column ) => o . id ) ;
262- } }
263- onDragUpdate = { ( dragUpdateObj , b ) => {
264- const colOrder = [ ...currentColOrder . current ] ;
265- const sIndex = dragUpdateObj . source . index ;
266- const dIndex =
267- dragUpdateObj . destination && dragUpdateObj . destination . index ;
263+ < div
264+ { ...headerGroup . getHeaderGroupProps ( {
265+ style : {
266+ width :
267+ totalWidth -
268+ columnsWidthState . widthRecord [ MetadataColumns . ADD_COLUMN ] ,
269+ } ,
270+ } ) }
271+ >
272+ < DragDropContext
273+ key = { `DragDropContext-${ i } ` }
274+ onDragStart = { ( ) => {
275+ currentColOrder . current = allColumns . map ( ( o : Column ) => o . id ) ;
276+ } }
277+ onDragUpdate = { ( dragUpdateObj , b ) => {
278+ const colOrder = [ ...currentColOrder . current ] ;
279+ const sIndex = dragUpdateObj . source . index ;
280+ const dIndex =
281+ dragUpdateObj . destination &&
282+ dragUpdateObj . destination . index ;
268283
269- if ( typeof sIndex === "number" && typeof dIndex === "number" ) {
270- colOrder . splice ( sIndex , 1 ) ;
271- colOrder . splice ( dIndex , 0 , dragUpdateObj . draggableId ) ;
272- setColumnOrder ( colOrder ) ;
273- }
274- } }
275- onDragEnd = { ( result ) => {
276- // save on disk in case of changes
277- if ( result . source . index !== result . destination ! . index ) {
278- initialState . view . diskConfig . reorderColumns (
279- ( state as any ) . columnOrder
280- ) ;
281- }
284+ if (
285+ typeof sIndex === "number" &&
286+ typeof dIndex === "number"
287+ ) {
288+ colOrder . splice ( sIndex , 1 ) ;
289+ colOrder . splice ( dIndex , 0 , dragUpdateObj . draggableId ) ;
290+ setColumnOrder ( colOrder ) ;
291+ }
292+ } }
293+ onDragEnd = { ( result ) => {
294+ // save on disk in case of changes
295+ if ( result . source . index !== result . destination ! . index ) {
296+ initialState . view . diskConfig . reorderColumns (
297+ ( state as any ) . columnOrder
298+ ) ;
299+ }
282300
283- // clear the current order
284- currentColOrder . current = null ;
285- } }
286- >
287- < Droppable
288- key = { `Droppable-${ i } ` }
289- droppableId = "droppable"
290- direction = "horizontal"
301+ // clear the current order
302+ currentColOrder . current = null ;
303+ } }
291304 >
292- { ( provided , snapshot ) => (
293- < div
294- key = { `div-Droppable-${ i } ` }
295- { ...provided . droppableProps }
296- { ...headerGroup . getHeaderGroupProps ( {
297- style : {
298- ...getDndListStyle ( snapshot . isDraggingOver ) ,
299- width :
300- totalWidth -
301- columnsWidthState . widthRecord [
302- MetadataColumns . ADD_COLUMN
303- ] ,
304- } ,
305- } ) }
306- ref = { provided . innerRef }
307- className = { `${ c ( "tr header-group" ) } ` }
308- >
309- { headerGroup . headers . map ( ( column , index ) => (
310- < Draggable
311- key = { `Draggable-${ column . id } ` }
312- draggableId = { `${ column . id } ` }
313- index = { index }
314- isDragDisabled = { ( column as any ) . skipPersist }
315- disableInteractiveElementBlocking = {
316- ( column as any ) . skipPersist
317- }
318- >
319- { ( provided , snapshot ) => {
320- const tableCellBaseProps = {
321- ...provided . draggableProps ,
322- ...provided . dragHandleProps ,
323- ...column . getHeaderProps ( {
324- style : {
325- width : `${
326- columnsWidthState . widthRecord [ column . id ]
327- } px`,
328- ...getDndItemStyle (
329- snapshot . isDragging ,
330- provided . draggableProps . style
331- ) ,
332- } ,
333- } ) ,
334- className : `${ c ( "th noselect" ) } header` ,
335- key : `div-Draggable-${ column . id } ` ,
336- // {...extraProps}
337- ref : provided . innerRef ,
338- } ;
339- return (
340- < div { ...tableCellBaseProps } >
341- < HeaderContext . Provider
342- value = { {
343- columnWidthState : columnsWidthState ,
344- setColumnWidthState : setColumnsWidthState ,
345- } }
346- >
347- { column . render ( "Header" ) }
348- </ HeaderContext . Provider >
349- </ div >
350- ) ;
351- } }
352- </ Draggable >
353- ) ) }
354- { provided . placeholder }
305+ < Droppable
306+ key = { `Droppable-${ i } ` }
307+ droppableId = "droppable"
308+ direction = "horizontal"
309+ >
310+ { ( provided , snapshot ) => (
311+ < div
312+ key = { `div-Droppable-${ i } ` }
313+ { ...provided . droppableProps }
314+ { ...headerGroup . getHeaderGroupProps ( {
315+ style : {
316+ ...getDndListStyle ( snapshot . isDraggingOver ) ,
317+ } ,
318+ } ) }
319+ ref = { provided . innerRef }
320+ className = { `${ c ( "tr header-group" ) } ` }
321+ >
322+ { headerGroup . headers
323+ . filter (
324+ ( o : any ) => o . key !== MetadataColumns . ADD_COLUMN
325+ )
326+ . map ( ( column , index ) => (
327+ < Draggable
328+ key = { `Draggable-${ column . id } ` }
329+ draggableId = { `${ column . id } ` }
330+ index = { index }
331+ isDragDisabled = {
332+ ( column as unknown as TableColumn ) . isDragDisabled
333+ }
334+ disableInteractiveElementBlocking = {
335+ ( column as unknown as TableColumn ) . isDragDisabled
336+ }
337+ >
338+ { ( provided , snapshot ) => {
339+ const tableCellBaseProps = {
340+ ...provided . draggableProps ,
341+ ...provided . dragHandleProps ,
342+ ...column . getHeaderProps ( {
343+ style : {
344+ width : `${
345+ columnsWidthState . widthRecord [ column . id ]
346+ } px`,
347+ ...getDndItemStyle (
348+ snapshot . isDragging ,
349+ provided . draggableProps . style
350+ ) ,
351+ } ,
352+ } ) ,
353+ className : `${ c ( "th noselect" ) } header` ,
354+ key : `div-Draggable-${ column . id } ` ,
355+ // {...extraProps}
356+ ref : provided . innerRef ,
357+ } ;
358+ return (
359+ < div { ...tableCellBaseProps } >
360+ < HeaderContext . Provider
361+ value = { {
362+ columnWidthState : columnsWidthState ,
363+ setColumnWidthState : setColumnsWidthState ,
364+ } }
365+ >
366+ { column . render ( "Header" ) }
367+ </ HeaderContext . Provider >
368+ </ div >
369+ ) ;
370+ } }
371+ </ Draggable >
372+ ) ) }
373+ { provided . placeholder }
374+ </ div >
375+ ) }
376+ </ Droppable >
377+ </ DragDropContext >
378+ { headerGroup . headers
379+ . filter ( ( o : any ) => o . key === MetadataColumns . ADD_COLUMN )
380+ . map ( ( column , index ) => (
381+ < div { ...column . getHeaderProps ( ) } >
382+ < HeaderContext . Provider
383+ value = { {
384+ columnWidthState : columnsWidthState ,
385+ setColumnWidthState : setColumnsWidthState ,
386+ } }
387+ >
388+ { column . render ( "Header" ) }
389+ </ HeaderContext . Provider >
355390 </ div >
356- ) }
357- </ Droppable >
358- </ DragDropContext >
391+ ) ) }
392+ </ div >
359393 ) ) }
360394 </ div >
361395 { /** Body */ }
0 commit comments