/* eslint-disable sonarjs/no-duplicate-string */ import React from "react"; import { DataEditorAll as DataEditor } from "../../data-editor-all.js"; import { BeautifulWrapper, Description, MoreInfo, PropName, useMockDataGenerator, defaultProps, } from "../../data-editor/stories/utils.js"; import { GridCellKind } from "../../internal/data-grid/data-grid-types.js"; import type { Rectangle, CellArray, GridCell } 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) => ( By setting the span of a cell you can create spans in your grid. All cells within a span must return consistent data for defined behavior. Spans will always be split if they span frozen and non-frozen columns. By default selections are always expanded to include a span. This can be disabled using the{" "} spanRangeBehavior prop. }> ), ], }; export const SpanCell: React.VFC = () => { const { cols, getCellContent } = useMockDataGenerator(100, true, true); const mangledGetCellContent = React.useCallback( cell => { const [col, row] = cell; if (row === 6 && col >= 3 && col <= 4) { return { kind: GridCellKind.Text, allowOverlay: false, data: "Span Cell that is very long and will go past the cell limits", span: [3, 4], displayData: "Span Cell that is very long and will go past the cell limits", }; } if (row === 5) { return { kind: GridCellKind.Text, allowOverlay: false, data: "Span Cell that is very long and will go past the cell limits", span: [0, 99], displayData: "Span Cell that is very long and will go past the cell limits", }; } return getCellContent(cell); }, [getCellContent] ); const getCellsForSelection = React.useCallback( (selection: Rectangle): CellArray => { const result: GridCell[][] = []; for (let y = selection.y; y < selection.y + selection.height; y++) { const row: GridCell[] = []; for (let x = selection.x; x < selection.x + selection.width; x++) { row.push(mangledGetCellContent([x, y])); } result.push(row); } return result; }, [mangledGetCellContent] ); return ( ); };