import React from "react";
import { DataEditorAll as DataEditor } from "../../data-editor-all.js";
import {
BeautifulWrapper,
Description,
PropName,
useMockDataGenerator,
defaultProps,
} from "../../data-editor/stories/utils.js";
import type { GridSelection } from "../../internal/data-grid/data-grid-types.js";
import { CompactSelection } from "../../internal/data-grid/data-grid-types.js";
import { SimpleThemeWrapper } from "../../stories/story-utils.js";
export default {
title: "Glide-Data-Grid/DataEditor Demos",
decorators: [
(Story: React.ComponentType) => (
),
],
};
export const ControlledSelection: React.VFC = () => {
const { cols, getCellContent } = useMockDataGenerator(30, true, true);
const [selection, setSelection] = React.useState({
columns: CompactSelection.empty(),
rows: CompactSelection.empty(),
});
return (
The selection of the grid can be controlled via GridSelection and{" "}
onGridSelectionChange.
{
const newCol = e.target.valueAsNumber;
setSelection(cv => ({
...cv,
current: {
cell: [newCol, cv.current?.cell[1] ?? 0],
range: {
x: newCol,
y: cv.current?.cell[1] ?? 0,
width: 1,
height: 1,
},
rangeStack: [],
},
}));
}}
/>
{
const newRow = e.target.valueAsNumber;
setSelection(cv => ({
...cv,
current: {
cell: [cv.current?.cell[0] ?? 0, newRow],
range: {
x: cv.current?.cell[0] ?? 0,
y: newRow,
width: 1,
height: 1,
},
rangeStack: [],
},
}));
}}
/>
}>
);
};