import { Tooltip, Typography } from '@mui/material'; import { isNil, not } from 'ramda'; import { useState } from 'react'; import { buildListingEndpoint } from '../../../..'; import type { Listing } from '../../../../api/models'; import type { SelectEntry } from '../..'; import type { ItemActionProps } from '.'; import MultiDraggableAutocompleteField from './Multi'; import MultiDraggableConnectedAutocompleteField from './MultiConnected'; export default { title: 'InputField/Autocomplete/Draggable' }; const buildEntities = (from): Array => { return Array(10) .fill(0) .map((_, index) => ({ id: from + index, name: `Entity ${from + index}` })); }; const buildResult = (page): Listing => ({ meta: { limit: 10, page, total: 40 }, result: buildEntities((page - 1) * 10) }); const baseEndpoint = 'endpoint'; const getEndpoint = ({ endpoint, parameters }): string => buildListingEndpoint({ baseEndpoint: endpoint, parameters }); const mockSearch = (page: number): object => ({ delay: 1000, method: 'GET', response: (request): Listing => { const { searchParams } = request; return buildResult(Number.parseInt(searchParams.page || '0', 10)); }, status: 200, url: `/endpoint?page=${page}&search=` }); const getMockData = (): Array => [ { delay: 1000, method: 'GET', response: (request): Listing => { const { searchParams } = request; return buildResult(Number.parseInt(searchParams.page || '0', 10)); }, status: 200, url: '/endpoint?page=' }, mockSearch(1), mockSearch(2), mockSearch(3), mockSearch(4) ]; const options = [ { id: '0', name: 'First Entity' }, { id: '1', name: 'Second Entity' }, { id: '2', name: 'Third Entity' } ]; const MultiDraggable = (): JSX.Element => ( ); export const containedDraggable = (): JSX.Element => (
); const MultiDraggableConnected = (): JSX.Element => ( { return getEndpoint({ endpoint: baseEndpoint, parameters }); }} initialPage={1} label="Multi Draggable Connected Autocomplete" placeholder="Type here..." /> ); export const draggableConnected = (): JSX.Element => ( ); draggableConnected.parameters = { mockData: getMockData() }; const MultiDraggableError = (): JSX.Element => ( ); export const draggableWithError = (): JSX.Element => ; const MultiDraggableRequired = (): JSX.Element => ( ); export const draggableWithRequired = (): JSX.Element => ( ); const MultiDraggableInitialValues = (): JSX.Element => ( ); export const draggableWithInitialValues = (): JSX.Element => ( ); const MultiDraggableClickAndHoverItem = (): JSX.Element => { const [clickedItem, setClickedItem] = useState(null); const [hoveredItem, setHoveredItem] = useState(null); return (
{not(isNil(clickedItem)) && ( You clicked on {clickedItem?.item.name} )}
); }; export const draggableWithClickAndHoverListenersOnItem = (): JSX.Element => ( );