import React = require('react'); import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed, observable } from 'mobx'; import { observer } from 'mobx-react'; import { emptyFunction, setupMoveUpEvents } from '../../../../Utils'; import './CollectionSchemaView.scss'; import { ColumnType } from './CollectionSchemaView'; import { IconButton } from 'browndash-components'; import { Colors } from '../../global/globalEnums'; import { ContextMenu } from '../../ContextMenu'; import { Doc, DocListCast } from '../../../../fields/Doc'; import { Id } from '../../../../fields/FieldSymbols'; import { RichTextField } from '../../../../fields/RichTextField'; import { StrCast } from '../../../../fields/Types'; import { ImageField } from '../../../../fields/URLField'; import { DocUtils, Docs } from '../../../documents/Documents'; import { ContextMenuProps } from '../../ContextMenuItem'; import { FormattedTextBox } from '../../nodes/formattedText/FormattedTextBox'; export interface SchemaColumnHeaderProps { columnKeys: string[]; columnWidths: number[]; columnIndex: number; sortField: string; sortDesc: boolean; setSort: (field: string, desc: boolean) => void; removeColumn: (index: number) => void; resizeColumn: (e: any, index: number, left: boolean) => void; // dragColumn: (e: any, index: number) => boolean; openContextMenu: (x: number, y: number, index: number) => void; } @observer export class SchemaColumnHeader extends React.Component { @computed get fieldKey() { return this.props.columnKeys[this.props.columnIndex]; } @action sortClicked = (e: React.PointerEvent) => { e.stopPropagation(); e.preventDefault(); if (this.props.sortField == this.fieldKey) { this.props.setSort(this.fieldKey, !this.props.sortDesc); } else { this.props.setSort(this.fieldKey, false); } }; // @action // onPointerDown = (e: React.PointerEvent) => { // e.stopPropagation(); // setupMoveUpEvents(this, e, e => this.props.dragColumn(e, this.props.columnIndex), emptyFunction, emptyFunction); // }; render() { return (
this.props.resizeColumn(e, this.props.columnIndex, true)}>
{this.fieldKey}
this.props.openContextMenu(e.clientX, e.clientY, this.props.columnIndex)}>
this.props.resizeColumn(e, this.props.columnIndex, false)}>
); } }