import * as React from "react";
import { type GridCell, GridCellKind, GridColumnIcon, type Item } from "../internal/data-grid/data-grid-types.js";
import { DataEditorAll as DataEditor } from "../data-editor-all.js";
import { SimpleThemeWrapper } from "../stories/story-utils.js";
import { DocWrapper, Highlight, Marked, Wrapper } from "./doc-wrapper.js";
export default {
title: "Glide-Data-Grid/Docs",
decorators: [
(Story: React.ComponentType) => (
),
],
};
export const GridColumns: React.VFC = () => {
const basicGetCellContent = React.useCallback((cell: Item): GridCell => {
return {
kind: GridCellKind.Text,
allowOverlay: false,
displayData: cell.toString(),
data: cell.toString(),
};
}, []);
const cols = React.useMemo(() => {
return [
{
title: "First",
width: 150,
},
{
title: "Second",
width: 150,
},
];
}, []);
return (
{`
# Basic usage
> The \`GridColumn[]\` passed to the \`DataEditor\` in the \`columns\` property should be memoized to avoid excessive re-rendering. These samples may not do this for the sake of brevity.
There are only two mandatory properties for each \`GridColumn\`: \`title\` and \`id\`. The id should be a stable id and not the index of the column. Additionally a \`width\` property can be provided which represents the width of the column in pixels. If a width is provided the id may be omited. This may change in a future version.`}
{`
const columns: GridColumn[] = [
{ title: "First", id: "first", width: 150 },
{ title: "Second", id: "second", width: 150 }
];
`}
{`
# Header icons
Default header icons are available. They can also be reaplced by passing a new map to the \`headerIcons\` property.`}
{`
const columns: GridColumn[] = [
{ title: "Name", id: "name", width: 250, icon: GridColumnIcon.HeaderString,
overlayIcon: GridColumnIcon.RowOwnerOverlay
},
{ title: "Age", id: "age", width: 100, icon: GridColumnIcon.HeaderNumber },
{ title: "Avatar", id: "avatar", width: 80, icon: GridColumnIcon.HeaderImage },
];
`}
{`
# Header theming
Headers can be provided with individual theme overrides which themes both the header and its column cells.`}
{`
const columns: GridColumn[] = [
{ title: "Name", id="name", width: 250, icon: GridColumnIcon.HeaderString },
{ title: "Age", id="age", width: 100, icon: GridColumnIcon.HeaderNumber, themeOverride: {
bgIconHeader: "#00967d",
textDark: "#00c5a4",
textHeader: "#00c5a4",
} },
{ title: "Avatar", id="avatar", width: 80, icon: GridColumnIcon.HeaderImage },
];
`}
);
};
(GridColumns as any).storyName = "03. Grid Columns";