diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 1bff7f30f6..29f399e3f8 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -117,6 +117,16 @@ export default class BrowserCell extends Component { } }); + if ( this.props.type === 'Pointer' ) { + onEditSelectedRow && contextMenuOptions.push({ + text: 'Open pointer in new tab', + callback: () => { + let { value, onPointerCmdClick } = this.props; + onPointerCmdClick(value); + } + }); + } + return contextMenuOptions; } @@ -214,7 +224,7 @@ export default class BrowserCell extends Component { //#endregion render() { - let { type, value, hidden, width, current, onSelect, onEditChange, setCopyableValue, setRelation, onPointerClick, row, col, field, onEditSelectedRow, readonly, isRequired, markRequiredFieldRow } = this.props; + let { type, value, hidden, width, current, onSelect, onEditChange, setCopyableValue, setRelation, onPointerClick, onPointerCmdClick, row, col, field, onEditSelectedRow, readonly, isRequired, markRequiredFieldRow } = this.props; let content = value; let isNewRow = row < 0; this.copyableValue = content; @@ -343,9 +353,13 @@ export default class BrowserCell extends Component { ref={this.cellRef} className={classes.join(' ')} style={{ width }} - onClick={() => { - onSelect({ row, col }); - setCopyableValue(hidden ? undefined : this.copyableValue); + onClick={(e) => { + if ( e.metaKey === true && type === 'Pointer') { + onPointerCmdClick(value); + } else { + onSelect({ row, col }); + setCopyableValue(hidden ? undefined : this.copyableValue); + } }} onDoubleClick={() => { if (field === 'objectId' && onEditSelectedRow) { @@ -366,9 +380,14 @@ export default class BrowserCell extends Component { ref={this.cellRef} className={classes.join(' ')} style={{ width }} - onClick={() => { - onSelect({ row, col }); - setCopyableValue(hidden ? undefined : this.copyableValue); + onClick={(e) => { + if ( e.metaKey === true && type === 'Pointer' ) { + onPointerCmdClick(value); + } + else { + onSelect({ row, col }); + setCopyableValue(hidden ? undefined : this.copyableValue); + } }} onDoubleClick={() => { // Since objectId can't be edited, double click event opens edit row dialog diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index 367decb2ed..25924d651e 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -19,7 +19,7 @@ export default class BrowserRow extends Component { } render() { - const { className, columns, currentCol, isUnique, obj, onPointerClick, order, readOnlyFields, row, rowWidth, selection, selectRow, setCopyableValue, setCurrent, setEditing, setRelation, onEditSelectedRow, setContextMenu, onFilterChange, markRequiredFieldRow } = this.props; + const { className, columns, currentCol, isUnique, obj, onPointerClick, onPointerCmdClick, order, readOnlyFields, row, rowWidth, selection, selectRow, setCopyableValue, setCurrent, setEditing, setRelation, onEditSelectedRow, setContextMenu, onFilterChange, markRequiredFieldRow } = this.props; let attributes = obj.attributes; let requiredCols = []; Object.entries(columns).reduce((acc, cur) => { @@ -89,6 +89,7 @@ export default class BrowserRow extends Component { onSelect={setCurrent} onEditChange={setEditing} onPointerClick={onPointerClick} + onPointerCmdClick={onPointerCmdClick} onFilterChange={onFilterChange} setRelation={setRelation} objectId={obj.id} @@ -104,4 +105,4 @@ export default class BrowserRow extends Component { ); } -} \ No newline at end of file +} diff --git a/src/components/Pill/Pill.react.js b/src/components/Pill/Pill.react.js index 32b7cb1b43..45c6aa9d5a 100644 --- a/src/components/Pill/Pill.react.js +++ b/src/components/Pill/Pill.react.js @@ -20,7 +20,7 @@ let Pill = ({ value, onClick, fileDownloadLink, followClick = false }) => ( > {value} {followClick && ( - + !e.metaKey && onClick()}> )} diff --git a/src/components/Toolbar/Toolbar.react.js b/src/components/Toolbar/Toolbar.react.js index 12f0275668..b73378ff86 100644 --- a/src/components/Toolbar/Toolbar.react.js +++ b/src/components/Toolbar/Toolbar.react.js @@ -15,7 +15,7 @@ const goBack = () => history.goBack(); let Toolbar = (props) => { let backButton; - if (props.relation || (props.filters && props.filters.size)) { + if ((props.relation || (props.filters && props.filters.size)) && history.action !== 'POP') { backButton = ( = -1 && this.props.editCloneRows) { //for data rows & new row when there are edit clone rows wrapTop += (2 * ROW_HEIGHT) * (this.props.editCloneRows.length); - } + } let wrapLeft = 30; for (let i = 0; i < this.props.current.col; i++) { const column = this.props.order[i];