diff --git a/src/components/Layout/GridTableLayout/GridTableLayout.stories.tsx b/src/components/Layout/GridTableLayout/GridTableLayout.stories.tsx index e03ba09d7..2b60f3379 100644 --- a/src/components/Layout/GridTableLayout/GridTableLayout.stories.tsx +++ b/src/components/Layout/GridTableLayout/GridTableLayout.stories.tsx @@ -1,6 +1,9 @@ import { Meta } from "@storybook/react"; import { useEffect, useMemo, useState } from "react"; +import { ScrollableContent, ScrollableParent } from "src/components"; +import { Button } from "src/components/Button"; import { checkboxFilter, multiFilter } from "src/components/Filters"; +import { IconButton } from "src/components/IconButton"; import { GridDataRow } from "src/components/Table"; import { collapseColumn, column, numericColumn, selectColumn } from "src/components/Table/utils/columns"; import { simpleHeader } from "src/components/Table/utils/simpleHelpers"; @@ -8,6 +11,7 @@ import { Css } from "src/Css"; import { noop } from "src/utils"; import { withBeamDecorator, withRouter, zeroTo } from "src/utils/sb"; import { TestProjectLayout } from "../Layout.stories"; +import { OpenRightPaneOpts, useRightPane } from "../RightPaneLayout"; import { GridTableLayout as GridTableLayoutComponent, useGridTableLayoutState } from "./GridTableLayout"; export default { @@ -23,8 +27,9 @@ type DataRow = { kind: "data"; id: string; data: Data }; type Row = HeaderRow | ParentRow | DataRow; export function GridTableLayout() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getFilterDefs(), []); - const columns = useMemo(() => getColumns(false), []); + const columns = useMemo(() => getColumns(false, openRightPane), [openRightPane]); const layoutState = useGridTableLayoutState({ persistedFilter: { @@ -69,8 +74,9 @@ export function GridTableLayout() { } export function ManyFilters() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getManyFilterDefs(), []); - const columns = useMemo(() => getColumns(), []); + const columns = useMemo(() => getColumns(false, openRightPane), [openRightPane]); const layoutState = useGridTableLayoutState({ persistedFilter: { @@ -101,8 +107,9 @@ export function ManyFilters() { } export function WithCheckboxFilter() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getCheckboxFilterDefs(), []); - const columns = useMemo(() => getColumns(), []); + const columns = useMemo(() => getColumns(false, openRightPane), [openRightPane]); const layoutState = useGridTableLayoutState({ persistedFilter: { @@ -133,8 +140,9 @@ export function WithCheckboxFilter() { } export function QueryTableLayout() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getFilterDefs(), []); - const columns = useMemo(() => getColumns(false), []); + const columns = useMemo(() => getColumns(false, openRightPane), [openRightPane]); const layoutState = useGridTableLayoutState({ persistedFilter: { @@ -184,8 +192,9 @@ export function QueryTableLayout() { } export function WithPagination() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getFilterDefs(), []); - const columns = useMemo(() => getColumns(), []); + const columns = useMemo(() => getColumns(false, openRightPane), [openRightPane]); const layoutState = useGridTableLayoutState({ persistedFilter: { @@ -221,8 +230,9 @@ export function WithPagination() { } export function GridTableLayoutWithColor() { + const { openRightPane } = useRightPane(); const filterDefs = useMemo(() => getFilterDefs(), []); - const columns = useMemo(() => getColumns(true), []); + const columns = useMemo(() => getColumns(true, openRightPane), [openRightPane]); const storageKey = "with-session-storage-test"; const layoutState = useGridTableLayoutState({ @@ -463,7 +473,34 @@ function getManyFilterDefs() { }; } -function getColumns(showColor: boolean = false) { +function DetailPane() { + const { closeRightPane } = useRightPane(); + + return ( +
+
+

Detail Pane

+
+ closeRightPane()} /> +
+
+ + + + + +
+ ); +} + +function getColumns(showColor: boolean, openRightPane: (opts: OpenRightPaneOpts) => void) { const nameColumn = column({ id: "name-col", name: "Name", @@ -501,8 +538,15 @@ function getColumns(showColor: boolean = false) { id: "action-col", name: "Action", header: () => ({ content: "Action", css: Css.if(showColor).bgPurple500.$ }), - parent: () => ({ content:
Actions
, value: "", css: Css.if(showColor).bgPurple500.$ }), - data: () => ({ content:
Actions
, css: Css.if(showColor).bgPurple500.$ }), + parent: () => ({ + content: