Skip to content

Commit a7b47d8

Browse files
Add header disabled to row markers (#981)
* add header disabled to row markers * disable pointer if row header disabled * remove console .log * Add toggle to story --------- Co-authored-by: lukasmasuch <[email protected]>
1 parent 1e493de commit a7b47d8

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

packages/core/src/data-editor/data-editor.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ export interface RowMarkerOptions {
101101
theme?: Partial<Theme>;
102102
headerTheme?: Partial<Theme>;
103103
headerAlwaysVisible?: boolean;
104+
headerDisabled?: boolean;
104105
}
105106

106107
interface MouseState {
@@ -886,7 +887,7 @@ const DataEditorImpl: React.ForwardRefRenderFunction<DataEditorRef, DataEditorPr
886887
const rowMarkerTheme = rowMarkersObj?.theme ?? p.rowMarkerTheme;
887888
const headerRowMarkerTheme = rowMarkersObj?.headerTheme;
888889
const headerRowMarkerAlwaysVisible = rowMarkersObj?.headerAlwaysVisible;
889-
const headerRowMarkerDisabled = rowSelect !== "multi";
890+
const headerRowMarkerDisabled = rowSelect !== "multi" || rowMarkersObj?.headerDisabled === true;
890891
const rowMarkerCheckboxStyle = rowMarkersObj?.checkboxStyle ?? "square";
891892

892893
const minColumnWidth = Math.max(minColumnWidthIn, 20);
@@ -1908,7 +1909,7 @@ const DataEditorImpl: React.ForwardRefRenderFunction<DataEditorRef, DataEditorPr
19081909
if (hasRowMarkers && col === 0) {
19091910
lastSelectedRowRef.current = undefined;
19101911
lastSelectedColRef.current = undefined;
1911-
if (rowSelect === "multi") {
1912+
if (!headerRowMarkerDisabled && rowSelect === "multi") {
19121913
if (selectedRows.length !== rows) {
19131914
setSelectedRows(CompactSelection.fromSingleSelection([0, rows]), undefined, isMultiKey);
19141915
} else {

packages/core/src/docs/examples/row-markers.stories.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export default {
3434

3535
interface RowMarkersProps {
3636
markers: RowMarkerOptions["kind"];
37+
headerDisabled: boolean;
3738
}
3839

3940
export const RowMarkers: React.VFC<RowMarkersProps> = p => {
@@ -48,6 +49,7 @@ export const RowMarkers: React.VFC<RowMarkersProps> = p => {
4849
kind: p.markers,
4950
checkboxStyle: "square",
5051
headerAlwaysVisible: true,
52+
headerDisabled: p.headerDisabled,
5153
headerTheme: {
5254
textMedium: "rgba(51, 51, 51, 0.50)",
5355
},
@@ -59,10 +61,14 @@ export const RowMarkers: React.VFC<RowMarkersProps> = p => {
5961
};
6062
(RowMarkers as any).args = {
6163
markers: "both",
64+
headerDisabled: false,
6265
};
6366
(RowMarkers as any).argTypes = {
6467
markers: {
6568
control: { type: "select" },
6669
options: ["both", "checkbox", "number", "none", "clickable-number", "checkbox-visible"],
6770
},
71+
headerDisabled: {
72+
control: { type: "boolean" },
73+
},
6874
};

packages/core/src/internal/data-grid/data-grid.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ const DataGrid: React.ForwardRefRenderFunction<DataGridRef, DataGridProps> = (p,
924924
const [overFill, setOverFill] = React.useState(false);
925925

926926
const [hCol, hRow] = hoveredItem ?? [];
927-
const headerHovered = hCol !== undefined && hRow === -1;
927+
const headerHovered = hCol !== undefined && hRow === -1 && columns[hCol].headerRowMarkerDisabled !== true;
928928
const groupHeaderHovered = hCol !== undefined && hRow === -2;
929929
let clickableInnerCellHovered = false;
930930
let editableBoolHovered = false;
@@ -949,6 +949,7 @@ const DataGrid: React.ForwardRefRenderFunction<DataGridRef, DataGridProps> = (p,
949949
: headerHovered || clickableInnerCellHovered || editableBoolHovered || groupHeaderHovered
950950
? "pointer"
951951
: "default";
952+
952953
const style = React.useMemo(
953954
() => ({
954955
// width,

packages/core/src/internal/data-grid/render/data-grid-render.header.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export function drawGridHeaders(
7777
ctx.font = theme.headerFontFull;
7878
}
7979
const selected = selection.columns.hasIndex(c.sourceIndex);
80-
const noHover = dragAndDropState !== undefined || isResizing;
80+
const noHover = dragAndDropState !== undefined || isResizing || c.headerRowMarkerDisabled === true;
8181
const hoveredBoolean = !noHover && hRow === -1 && hCol === c.sourceIndex;
8282
const hover = noHover
8383
? 0

0 commit comments

Comments
 (0)