import { storiesOf } from "@storybook/react"; import React from "react"; import { countries } from "@saleor/fixtures"; import useMultiAutocomplete from "@saleor/hooks/useMultiAutocomplete"; import CardDecorator from "@saleor/storybook/CardDecorator"; import Decorator from "@saleor/storybook/Decorator"; import { ChoiceProvider } from "@saleor/storybook/mock"; import MultiAutocompleteSelectField, { MultiAutocompleteSelectFieldProps } from "./MultiAutocompleteSelectField"; import MultiAutocompleteSelectFieldContent, { MultiAutocompleteSelectFieldContentProps } from "./MultiAutocompleteSelectFieldContent"; const suggestions = countries.map(c => ({ label: c.name, value: c.code })); const props: MultiAutocompleteSelectFieldProps = { choices: undefined, displayValues: [], label: "Country", loading: false, name: "country", onChange: () => undefined, placeholder: "Select country", value: undefined }; const Story: React.FC> = ({ enableLoadMore, ...rest }) => { const { change, data: countries } = useMultiAutocomplete([suggestions[0]]); return ( {({ choices, fetchChoices, onFetchMore, hasMore, loading }) => ( country.value) .join(", ")}`} onChange={event => change(event, choices)} value={countries.map(country => country.value)} loading={loading} hasMore={enableLoadMore ? hasMore : false} onFetchMore={enableLoadMore ? onFetchMore : undefined} {...rest} /> )} ); }; const contentProps: MultiAutocompleteSelectFieldContentProps = { choices: suggestions.slice(0, 10), displayCustomValue: false, displayValues: [suggestions[0]], getItemProps: () => undefined, hasMore: false, highlightedIndex: 0, inputValue: suggestions[0].label, loading: false, onFetchMore: () => undefined }; storiesOf("Generics / Multiple select with autocomplete", module) .addDecorator(CardDecorator) .addDecorator(Decorator) .add("default", () => ( )) .add("can load more", () => ( )) .add("no data", () => ( )) .add("interactive", () => ) .add("interactive with custom option", () => ( )) .add("interactive with load more", () => ) .add("interactive with error", () => );