import * as React from 'react';
import fakeRestDataProvider from 'ra-data-fakerest';
import { useWrappedSource } from '../../core/useWrappedSource';
import { useFieldValue } from '../../util/useFieldValue';
import { TestMemoryRouter } from '../../routing/TestMemoryRouter';
import { Admin, DataTable, SimpleForm, TextInput } from '../../test-ui';
import { Resource } from '../../core/Resource';
import { ListBase } from '../list/ListBase';
import { EditBase } from '../edit/EditBase';
import { ArrayInputBase } from './ArrayInputBase';
import { useArrayInput } from './useArrayInput';
import { SimpleFormIteratorItemBase } from './SimpleFormIteratorItemBase';
import { useSimpleFormIteratorItem } from './useSimpleFormIteratorItem';
import { useSimpleFormIterator } from './useSimpleFormIterator';
import {
SimpleFormIteratorBase,
SimpleFormIteratorBaseProps,
} from './SimpleFormIteratorBase';
import { useGetArrayInputNewItemDefaults } from './useGetArrayInputNewItemDefaults';
import { useEvent } from '../../util';
export default { title: 'ra-core/controller/input/SimpleFormIteratorBase' };
const SimpleFormIterator = ({
children,
...props
}: SimpleFormIteratorBaseProps) => {
const { fields } = useArrayInput(props);
// Get the parent source by passing an empty string as source
const source = useWrappedSource('');
const records = useFieldValue({ source });
const getArrayInputNewItemDefaults =
useGetArrayInputNewItemDefaults(fields);
const getItemDefaults = useEvent((item: any = undefined) => {
if (item != null) return item;
return getArrayInputNewItemDefaults(children);
});
return (
{fields.map((member, index) => (
-
{children}
))}
);
};
const RemoveItemButton = () => {
const { remove } = useSimpleFormIteratorItem();
return (
);
};
const AddItemButton = () => {
const { add } = useSimpleFormIterator();
return (
);
};
export const Basic = (props: Partial) => (
record.tags
? record.tags
.map((tag: any) => tag.name)
.join(', ')
: ''
}
/>
}
edit={
}
/>
);
Basic.args = {
disableAutoFocus: false,
};
Basic.argTypes = {
disableAutoFocus: { control: 'boolean' },
};