import React from 'react'; import { EllipsisVerticalIcon } from '@heroicons/react/24/outline'; import { Draggable, DroppableProvided } from '@kanaries/react-beautiful-dnd'; import { observer } from 'mobx-react-lite'; import { useVizStore } from '../../store'; import DataTypeIcon from '../../components/dataTypeIcon'; import ActionMenu from '../../components/actionMenu'; import { FieldPill } from './fieldPill'; import { useMenuActions } from './utils'; import { refMapper } from '../fieldsContext'; import { getFieldIdentifier } from '@/utils'; const DimFields: React.FC = (props) => { const vizStore = useVizStore(); // read in the observer render scope: the render prop below runs outside mobx tracking const { dimensions, selectedFieldIds } = vizStore; const menuActions = useMenuActions('dimensions'); return (
{dimensions.map((f, index) => ( {(provided, snapshot) => { const selected = selectedFieldIds.includes(f.fid); return ( { if (e.metaKey || e.ctrlKey) { vizStore.toggleFieldSelection(f.fid); } else { vizStore.selectField(f.fid); } }} className={`touch-none flex pt-0.5 pb-0.5 pl-2 pr-2 mx-0 m-1 text-xs hover:bg-dimension/20 transition-colors rounded-md truncate border ${ selected ? 'border-primary/50 bg-primary/10' : 'border-transparent' } ${snapshot.isDragging ? 'bg-dimension/20' : ''}`} ref={refMapper(provided.innerRef)} $isDragging={snapshot.isDragging} {...provided.draggableProps} {...provided.dragHandleProps} > {f.name} { {f.name} } ); }} ))}
); }; export default observer(DimFields);