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: [], }, })); }} /> }> ); };