import { useQuery } from "@apollo/client"; import { CircularProgress, Grid, IconButton } from "@material-ui/core"; import { Edit as EditIcon } from "@material-ui/icons"; import { storiesOf } from "@storybook/react"; import { Field, FieldContainerLabelAbove, FinalForm, FinalFormInput, Stack, StackPage, StackSwitch, StackSwitchApiContext, Table, TableFilterFinalForm, TableQuery, usePersistedStateId, useTableQuery, useTableQueryFilter, } from "@vivid-planet/comet-admin"; import gql from "graphql-tag"; import * as React from "react"; import StoryRouter from "storybook-react-router"; import { apolloStoryDecorator } from "../apollo-story.decorator"; const gqlRest = gql; const query = gqlRest` query users( $query: String ) { users( query: $query ) @rest(type: "User", path: "users?q={args.query}") { id name username email } } `; interface IQueryData { users: Array<{ id: number; name: string; username: string; email: string; }>; } interface IFilterValues { query: string; } interface IVariables extends IFilterValues {} function ExampleTable(props: { persistedStateId: string }) { const filterApi = useTableQueryFilter({ query: "" }, { persistedStateId: props.persistedStateId }); const { tableData, api, loading, error } = useTableQuery()(query, { variables: { ...filterApi.current, }, resolveTableData: (data) => ({ data: data.users, totalCount: data.users.length, }), }); const stackApi = React.useContext(StackSwitchApiContext); return ( {tableData && ( <> ( { stackApi.activatePage("form", String(row.id)); }} > ), }, ]} /> )} ); } interface IExampleFormProps { id: number; } function ExampleForm(props: IExampleFormProps) { const detailQuery = gqlRest` query user( $id: Int ) { user( id: $id ) @rest(type: "User", path: "users/{args.id}") { id name } } `; const { loading, data, error } = useQuery(detailQuery, { variables: { id: props.id } }); if (loading || !data) { return ; } if (error) return

Error :( {error.toString()}

; return ( { // submit here }} initialValues={data.user} > ); } function Story() { const persistedStateId = usePersistedStateId(); return ( {(selectedId) => } ); } storiesOf("comet-admin", module) .addDecorator(apolloStoryDecorator()) .addDecorator(StoryRouter()) .add("Stack Table Form Query in Table", () => );