import React, { useState, useCallback } from "react" import { RenderCellProps, RenderColHeaderProps, RenderRowHeaderProps, GridComponent, RenderCellEditorProps, SaveEditFunc } from "./GridComponent" import ReactSelect from "react-select" export const GridComponentDemo = () => { const [colWidths, setColWidths] = useState([100, 200, 300]) const renderCell = (props: RenderCellProps) => { return
{`x${props.row}:${props.col}`}
} const renderColHeader = (props: RenderColHeaderProps) => { return
{`x${props.col}`}
} const renderRowHeader = (props: RenderRowHeaderProps) => { return (
) } const renderCellEditor = (props: RenderCellEditorProps) => { return } return (
"X"} rowHeaderExtraHeight={20} renderRowHeaderExtra={() => "X"} canEdit={() => true} />
) } const Editor = (props: { width: number; setSaveEdit: (saveEditFunc: SaveEditFunc) => void }) => { const [value, setValue] = useState(null) props.setSaveEdit(() => { //alert(value) return new Promise((resolve, reject) => { setTimeout(() => { resolve(true) }, 10000) }) }) /** Focus on select */ const selectRef = useCallback((node: ReactSelect | null) => { if (node) { setTimeout(() => { node.focus() }, 0) } }, []) return (
{ console.log("onChange") setValue(v) }} onBlur={() => { console.log("onBlur") }} isMulti={true} ref={selectRef} />
) }