From 9d0a8b05aa2c024f73079b4d2c615419a794896e Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 12:58:11 +0200 Subject: [PATCH 01/11] feat(data-browser): add column freeze option --- .../BrowserCell/BrowserCell.react.js | 10 ++- src/components/BrowserRow/BrowserRow.react.js | 13 +++- .../DataBrowserHeaderBar.react.js | 49 +++++++++++++- .../Data/Browser/BrowserTable.react.js | 67 +++++++++++++------ .../Data/Browser/DataBrowser.react.js | 17 ++++- 5 files changed, 129 insertions(+), 27 deletions(-) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 212a58a8a4..64ff9a11cf 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -632,11 +632,19 @@ export default class BrowserCell extends Component { classes.push(styles.selected); } + const style = { width }; + if (this.props.stickyLeft !== undefined) { + style.position = 'sticky'; + style.left = this.props.stickyLeft; + style.zIndex = 1; + style.background = this.props.rowBackground; + } + return ( { if (e.metaKey === true && type === 'Pointer') { onPointerCmdClick(value); diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index 35e2752647..f7d2f77359 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -51,6 +51,8 @@ export default class BrowserRow extends Component { onMouseUpRowCheckBox, onMouseOverRowCheckBox, onMouseOverRow, + stickyLefts, + freezeIndex, } = this.props; const attributes = obj.attributes; let requiredCols = []; @@ -69,12 +71,19 @@ export default class BrowserRow extends Component { } else if (obj.className === '_User' && obj.get('authData') !== undefined) { requiredCols = ['authData']; } + const rowBackground = row % 2 ? '#F4F5F7' : '#FFFFFF'; + const rowStyle = { minWidth: rowWidth }; return ( -
onMouseOverRow(obj.id)}> +
onMouseOverRow(obj.id)}> onMouseOverRowCheckBox(obj.id)} + style={ + freezeIndex >= 0 + ? { position: 'sticky', left: 0, zIndex: 1, background: rowBackground } + : {} + } > -1} width={width} + stickyLeft={freezeIndex >= j ? stickyLefts[j] : undefined} + rowBackground={rowBackground} current={currentCol === j} onSelect={setCurrent} onEditChange={setEditing} diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index 1c6f8587e1..d8e75f9b57 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -13,6 +13,16 @@ import styles from 'components/DataBrowserHeaderBar/DataBrowserHeaderBar.scss'; import { DndProvider } from 'react-dnd'; export default class DataBrowserHeaderBar extends React.Component { + handleContextMenu = (index, event) => { + event.preventDefault(); + const { freezeIndex, freezeColumns, unfreezeColumns, setContextMenu } = this.props; + const items = + freezeIndex >= 0 && index <= freezeIndex + ? [{ text: 'Unfreeze column', callback: () => unfreezeColumns() }] + : [{ text: 'Freeze column', callback: () => freezeColumns(index) }]; + setContextMenu(event.pageX, event.pageY, items); + }; + render() { const { headers, @@ -26,9 +36,19 @@ export default class DataBrowserHeaderBar extends React.Component { isDataLoaded, setSelectedObjectId, setCurrent, + stickyLefts, + handleLefts, + freezeIndex, + freezeColumns, + unfreezeColumns, + setContextMenu, } = this.props; const elements = [ -
+
= 0 ? { position: 'sticky', left: 0, zIndex: 11 } : {}} + > {readonly ? null : ( selectAll(e.target.checked)} /> )} @@ -40,6 +60,11 @@ export default class DataBrowserHeaderBar extends React.Component { return; } const wrapStyle = { width }; + if (freezeIndex >= 0 && typeof stickyLefts[i] !== 'undefined' && i <= freezeIndex) { + wrapStyle.position = 'sticky'; + wrapStyle.left = stickyLefts[i]; + wrapStyle.zIndex = 11; + } if (i % 2) { wrapStyle.background = '#726F85'; } else { @@ -63,7 +88,13 @@ export default class DataBrowserHeaderBar extends React.Component { } elements.push( -
+
this.handleContextMenu(i, e)} + key={'header' + i} + className={className} + style={wrapStyle} + >
); + const handleStyle = {}; + if (freezeIndex >= 0 && typeof handleLefts[i] !== 'undefined' && i <= freezeIndex) { + handleStyle.position = 'sticky'; + handleStyle.left = handleLefts[i]; + handleStyle.zIndex = 11; + handleStyle.background = wrapStyle.background; + } elements.push( - + ); }); diff --git a/src/dashboard/Data/Browser/BrowserTable.react.js b/src/dashboard/Data/Browser/BrowserTable.react.js index 125b299cc6..ae736f2f47 100644 --- a/src/dashboard/Data/Browser/BrowserTable.react.js +++ b/src/dashboard/Data/Browser/BrowserTable.react.js @@ -118,6 +118,19 @@ export default class BrowserTable extends React.Component { preventSort, required, })); + + let stickyLefts = []; + let handleLefts = []; + if (typeof this.props.freezeIndex === 'number' && this.props.freezeIndex >= 0) { + let left = 30; + headers.forEach((h, i) => { + stickyLefts[i] = left; + handleLefts[i] = left + h.width; + if (h.visible) { + left += h.width + 8; + } + }); + } let editor = null; let table =
; if (this.props.data) { @@ -170,6 +183,8 @@ export default class BrowserTable extends React.Component { callCloudFunction={this.props.callCloudFunction} isPanelVisible={this.props.isPanelVisible} setContextMenu={this.props.setContextMenu} + stickyLefts={stickyLefts} + freezeIndex={this.props.freezeIndex} onEditSelectedRow={this.props.onEditSelectedRow} markRequiredFieldRow={this.props.markRequiredFieldRow} showNote={this.props.showNote} @@ -251,6 +266,8 @@ export default class BrowserTable extends React.Component { callCloudFunction={this.props.callCloudFunction} isPanelVisible={this.props.isPanelVisible} setContextMenu={this.props.setContextMenu} + stickyLefts={stickyLefts} + freezeIndex={this.props.freezeIndex} onEditSelectedRow={this.props.onEditSelectedRow} markRequiredFieldRow={this.props.markRequiredFieldRow} showNote={this.props.showNote} @@ -342,6 +359,8 @@ export default class BrowserTable extends React.Component { setSelectedObjectId={this.props.setSelectedObjectId} isPanelVisible={this.props.isPanelVisible} setContextMenu={this.props.setContextMenu} + stickyLefts={stickyLefts} + freezeIndex={this.props.freezeIndex} onEditSelectedRow={this.props.onEditSelectedRow} showNote={this.props.showNote} onRefresh={this.props.onRefresh} @@ -543,27 +562,33 @@ export default class BrowserTable extends React.Component { 'overflow-x': this.props.isResizing ? 'hidden' : 'auto', }} > - checked).length === - this.props.data.length - } - selectAll={checked => - this.props.data.forEach(({ id }) => this.props.selectRow(id, checked)) - } - headers={headers} - updateOrdering={this.props.updateOrdering} - readonly={!!this.props.relation || !!this.props.isUnique} - handleDragDrop={this.props.handleHeaderDragDrop} - onResize={this.props.handleResize} - onAddColumn={this.props.onAddColumn} - preventSchemaEdits={this.context.preventSchemaEdits} - isDataLoaded={!!this.props.data} - setSelectedObjectId={this.props.setSelectedObjectId} - setCurrent={this.props.setCurrent} - /> + checked).length === + this.props.data.length + } + selectAll={checked => + this.props.data.forEach(({ id }) => this.props.selectRow(id, checked)) + } + headers={headers} + stickyLefts={stickyLefts} + handleLefts={handleLefts} + freezeIndex={this.props.freezeIndex} + freezeColumns={this.props.freezeColumns} + unfreezeColumns={this.props.unfreezeColumns} + updateOrdering={this.props.updateOrdering} + readonly={!!this.props.relation || !!this.props.isUnique} + handleDragDrop={this.props.handleHeaderDragDrop} + onResize={this.props.handleResize} + onAddColumn={this.props.onAddColumn} + preventSchemaEdits={this.context.preventSchemaEdits} + isDataLoaded={!!this.props.data} + setSelectedObjectId={this.props.setSelectedObjectId} + setCurrent={this.props.setCurrent} + setContextMenu={this.props.setContextMenu} + /> {table}
); diff --git a/src/dashboard/Data/Browser/DataBrowser.react.js b/src/dashboard/Data/Browser/DataBrowser.react.js index 50aeef95af..1ab16c48e9 100644 --- a/src/dashboard/Data/Browser/DataBrowser.react.js +++ b/src/dashboard/Data/Browser/DataBrowser.react.js @@ -49,6 +49,7 @@ export default class DataBrowser extends React.Component { isResizing: false, maxWidth: window.innerWidth - 300, showAggregatedData: true, + frozenColumnIndex: -1, }; this.handleResizeDiv = this.handleResizeDiv.bind(this); @@ -66,6 +67,8 @@ export default class DataBrowser extends React.Component { this.setCopyableValue = this.setCopyableValue.bind(this); this.setSelectedObjectId = this.setSelectedObjectId.bind(this); this.setContextMenu = this.setContextMenu.bind(this); + this.freezeColumns = this.freezeColumns.bind(this); + this.unfreezeColumns = this.unfreezeColumns.bind(this); this.handleCellClick = this.handleCellClick.bind(this); this.saveOrderTimeout = null; } @@ -88,6 +91,7 @@ export default class DataBrowser extends React.Component { selectedCells: { list: new Set(), rowStart: -1, rowEnd: -1, colStart: -1, colEnd: -1 }, firstSelectedCell: null, selectedData: [], + frozenColumnIndex: -1, }); } else if ( Object.keys(props.columns).length !== Object.keys(this.props.columns).length || @@ -100,7 +104,7 @@ export default class DataBrowser extends React.Component { props.className, columnPreferences[props.className] ); - this.setState({ order }); + this.setState({ order, frozenColumnIndex: -1 }); } if (props && props.className) { if ( @@ -539,6 +543,14 @@ export default class DataBrowser extends React.Component { this.setState({ contextMenuX, contextMenuY, contextMenuItems }); } + freezeColumns(index) { + this.setState({ frozenColumnIndex: index }); + } + + unfreezeColumns() { + this.setState({ frozenColumnIndex: -1 }); + } + handleColumnsOrder(order, shouldReload) { this.setState({ order: [...order] }, () => { this.updatePreferences(order, shouldReload); @@ -643,6 +655,9 @@ export default class DataBrowser extends React.Component { setSelectedObjectId={this.setSelectedObjectId} callCloudFunction={this.props.callCloudFunction} setContextMenu={this.setContextMenu} + freezeIndex={this.state.frozenColumnIndex} + freezeColumns={this.freezeColumns} + unfreezeColumns={this.unfreezeColumns} onFilterChange={this.props.onFilterChange} onFilterSave={this.props.onFilterSave} selectedCells={this.state.selectedCells} From 4291dff052df08498bcf4f9448f0181880e200b4 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:11:46 +0200 Subject: [PATCH 02/11] Fix sticky offset calculation for frozen columns --- src/dashboard/Data/Browser/BrowserTable.react.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dashboard/Data/Browser/BrowserTable.react.js b/src/dashboard/Data/Browser/BrowserTable.react.js index ae736f2f47..db57cc51a1 100644 --- a/src/dashboard/Data/Browser/BrowserTable.react.js +++ b/src/dashboard/Data/Browser/BrowserTable.react.js @@ -121,13 +121,16 @@ export default class BrowserTable extends React.Component { let stickyLefts = []; let handleLefts = []; - if (typeof this.props.freezeIndex === 'number' && this.props.freezeIndex >= 0) { + if ( + typeof this.props.freezeIndex === 'number' && + this.props.freezeIndex >= 0 + ) { let left = 30; headers.forEach((h, i) => { stickyLefts[i] = left; handleLefts[i] = left + h.width; if (h.visible) { - left += h.width + 8; + left += h.width; } }); } From 6c5fa1ff32df53979020f4e0b5de5c937a19a6cf Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:20:14 +0200 Subject: [PATCH 03/11] fix frozen column gap --- .../DataBrowserHeaderBar/DataBrowserHeaderBar.react.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index d8e75f9b57..9c6a7f3a10 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -111,6 +111,10 @@ export default class DataBrowserHeaderBar extends React.Component { handleStyle.left = handleLefts[i]; handleStyle.zIndex = 11; handleStyle.background = wrapStyle.background; + if (i === freezeIndex) { + handleStyle.marginRight = 0; + handleStyle.width = 4; + } } elements.push( Date: Wed, 9 Jul 2025 13:55:16 +0200 Subject: [PATCH 04/11] Remove background color from last frozen drag handle --- .../DataBrowserHeaderBar/DataBrowserHeaderBar.react.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index 9c6a7f3a10..b013541c32 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -110,10 +110,11 @@ export default class DataBrowserHeaderBar extends React.Component { handleStyle.position = 'sticky'; handleStyle.left = handleLefts[i]; handleStyle.zIndex = 11; - handleStyle.background = wrapStyle.background; if (i === freezeIndex) { handleStyle.marginRight = 0; handleStyle.width = 4; + } else { + handleStyle.background = wrapStyle.background; } } elements.push( From 2b19ed7444122d089146e5d5090a50ece7a72c82 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:15:58 +0200 Subject: [PATCH 05/11] fix bottom border for frozen columns --- src/components/BrowserCell/BrowserCell.react.js | 1 + src/components/BrowserRow/BrowserRow.react.js | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 64ff9a11cf..8621e703f2 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -638,6 +638,7 @@ export default class BrowserCell extends Component { style.left = this.props.stickyLeft; style.zIndex = 1; style.background = this.props.rowBackground; + style.borderBottom = '1px solid #e3e3ea'; } return ( diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index f7d2f77359..1e8e056b6b 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -81,7 +81,13 @@ export default class BrowserRow extends Component { onMouseOver={() => onMouseOverRowCheckBox(obj.id)} style={ freezeIndex >= 0 - ? { position: 'sticky', left: 0, zIndex: 1, background: rowBackground } + ? { + position: 'sticky', + left: 0, + zIndex: 1, + background: rowBackground, + borderBottom: '1px solid #e3e3ea', + } : {} } > From 723a017730b021a4965a941ce7f34403d56580ea Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:25:36 +0200 Subject: [PATCH 06/11] docs: add freeze columns feature --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index faf84cd2be..28cfe6f6c8 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https - [Audio Item](#audio-item) - [Button Item](#button-item) - [Panel Item](#panel-item) + - [Freeze Columns](#freeze-columns) - [Browse as User](#browse-as-user) - [Change Pointer Key](#change-pointer-key) - [Limitations](#limitations) @@ -1154,6 +1155,12 @@ Example: } ``` +### Freeze Columns + +▶️ *Core > Browser > Freeze column* + +This feature allows freezing columns from the left up to a selected column in the data browser. When scrolling horizontally, the frozen columns remain visible while the other columns scroll underneath. + ## Browse as User ▶️ *Core > Browser > Browse* From 79040d7e4475fa1d391a742aaf722759e291a2bb Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:25:43 +0200 Subject: [PATCH 07/11] fix frozen row background --- src/components/BrowserCell/BrowserCell.react.js | 1 - src/components/BrowserRow/BrowserRow.react.js | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 8621e703f2..efbc1682fb 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -637,7 +637,6 @@ export default class BrowserCell extends Component { style.position = 'sticky'; style.left = this.props.stickyLeft; style.zIndex = 1; - style.background = this.props.rowBackground; style.borderBottom = '1px solid #e3e3ea'; } diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index 1e8e056b6b..ffb8f90f15 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -71,7 +71,6 @@ export default class BrowserRow extends Component { } else if (obj.className === '_User' && obj.get('authData') !== undefined) { requiredCols = ['authData']; } - const rowBackground = row % 2 ? '#F4F5F7' : '#FFFFFF'; const rowStyle = { minWidth: rowWidth }; return (
onMouseOverRow(obj.id)}> @@ -85,7 +84,6 @@ export default class BrowserRow extends Component { position: 'sticky', left: 0, zIndex: 1, - background: rowBackground, borderBottom: '1px solid #e3e3ea', } : {} @@ -149,7 +147,6 @@ export default class BrowserRow extends Component { readonly={isUnique || readOnlyFields.indexOf(name) > -1} width={width} stickyLeft={freezeIndex >= j ? stickyLefts[j] : undefined} - rowBackground={rowBackground} current={currentCol === j} onSelect={setCurrent} onEditChange={setEditing} From 8744a5aa656a25290342aea707500f65fd66ed68 Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:27:40 +0200 Subject: [PATCH 08/11] Revert "fix frozen row background" This reverts commit 79040d7e4475fa1d391a742aaf722759e291a2bb. --- src/components/BrowserCell/BrowserCell.react.js | 1 + src/components/BrowserRow/BrowserRow.react.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index efbc1682fb..8621e703f2 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -637,6 +637,7 @@ export default class BrowserCell extends Component { style.position = 'sticky'; style.left = this.props.stickyLeft; style.zIndex = 1; + style.background = this.props.rowBackground; style.borderBottom = '1px solid #e3e3ea'; } diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index ffb8f90f15..1e8e056b6b 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -71,6 +71,7 @@ export default class BrowserRow extends Component { } else if (obj.className === '_User' && obj.get('authData') !== undefined) { requiredCols = ['authData']; } + const rowBackground = row % 2 ? '#F4F5F7' : '#FFFFFF'; const rowStyle = { minWidth: rowWidth }; return (
onMouseOverRow(obj.id)}> @@ -84,6 +85,7 @@ export default class BrowserRow extends Component { position: 'sticky', left: 0, zIndex: 1, + background: rowBackground, borderBottom: '1px solid #e3e3ea', } : {} @@ -147,6 +149,7 @@ export default class BrowserRow extends Component { readonly={isUnique || readOnlyFields.indexOf(name) > -1} width={width} stickyLeft={freezeIndex >= j ? stickyLefts[j] : undefined} + rowBackground={rowBackground} current={currentCol === j} onSelect={setCurrent} onEditChange={setEditing} From 398893b93774edbec4c19b5b7d5c757f26a5b619 Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:30:20 +0200 Subject: [PATCH 09/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28cfe6f6c8..37667813be 100644 --- a/README.md +++ b/README.md @@ -1159,7 +1159,7 @@ Example: ▶️ *Core > Browser > Freeze column* -This feature allows freezing columns from the left up to a selected column in the data browser. When scrolling horizontally, the frozen columns remain visible while the other columns scroll underneath. +Right-click on a table column header to freeze columns from the left up to the clicked column in the data browser. When scrolling horizontally, the frozen columns remain visible while the other columns scroll underneath. ## Browse as User From 4d199caba0e9d96164b5333c971342f8df4765fa Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:30:24 +0200 Subject: [PATCH 10/11] Update BrowserRow.react.js --- src/components/BrowserRow/BrowserRow.react.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index 1e8e056b6b..12f577de63 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -71,7 +71,7 @@ export default class BrowserRow extends Component { } else if (obj.className === '_User' && obj.get('authData') !== undefined) { requiredCols = ['authData']; } - const rowBackground = row % 2 ? '#F4F5F7' : '#FFFFFF'; + const rowBackground = row % 2 ? '#F4F5F7' : '#fdfafb'; const rowStyle = { minWidth: rowWidth }; return (
onMouseOverRow(obj.id)}> @@ -82,12 +82,12 @@ export default class BrowserRow extends Component { style={ freezeIndex >= 0 ? { - position: 'sticky', - left: 0, - zIndex: 1, - background: rowBackground, - borderBottom: '1px solid #e3e3ea', - } + position: 'sticky', + left: 0, + zIndex: 1, + background: rowBackground, + borderBottom: '1px solid #e3e3ea', + } : {} } > From 49b85778e07a26c9201cb4d66f3ecaef99c8179e Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:32:27 +0200 Subject: [PATCH 11/11] lint --- .../DataBrowserHeaderBar.react.js | 3 - .../Data/Browser/BrowserTable.react.js | 58 +++++++++---------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js index b013541c32..b5955df6dd 100644 --- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js +++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js @@ -39,9 +39,6 @@ export default class DataBrowserHeaderBar extends React.Component { stickyLefts, handleLefts, freezeIndex, - freezeColumns, - unfreezeColumns, - setContextMenu, } = this.props; const elements = [
= 0 @@ -565,33 +565,33 @@ export default class BrowserTable extends React.Component { 'overflow-x': this.props.isResizing ? 'hidden' : 'auto', }} > - checked).length === - this.props.data.length - } - selectAll={checked => - this.props.data.forEach(({ id }) => this.props.selectRow(id, checked)) - } - headers={headers} - stickyLefts={stickyLefts} - handleLefts={handleLefts} - freezeIndex={this.props.freezeIndex} - freezeColumns={this.props.freezeColumns} - unfreezeColumns={this.props.unfreezeColumns} - updateOrdering={this.props.updateOrdering} - readonly={!!this.props.relation || !!this.props.isUnique} - handleDragDrop={this.props.handleHeaderDragDrop} - onResize={this.props.handleResize} - onAddColumn={this.props.onAddColumn} - preventSchemaEdits={this.context.preventSchemaEdits} - isDataLoaded={!!this.props.data} - setSelectedObjectId={this.props.setSelectedObjectId} - setCurrent={this.props.setCurrent} - setContextMenu={this.props.setContextMenu} - /> + checked).length === + this.props.data.length + } + selectAll={checked => + this.props.data.forEach(({ id }) => this.props.selectRow(id, checked)) + } + headers={headers} + stickyLefts={stickyLefts} + handleLefts={handleLefts} + freezeIndex={this.props.freezeIndex} + freezeColumns={this.props.freezeColumns} + unfreezeColumns={this.props.unfreezeColumns} + updateOrdering={this.props.updateOrdering} + readonly={!!this.props.relation || !!this.props.isUnique} + handleDragDrop={this.props.handleHeaderDragDrop} + onResize={this.props.handleResize} + onAddColumn={this.props.onAddColumn} + preventSchemaEdits={this.context.preventSchemaEdits} + isDataLoaded={!!this.props.data} + setSelectedObjectId={this.props.setSelectedObjectId} + setCurrent={this.props.setCurrent} + setContextMenu={this.props.setContextMenu} + /> {table}
);