import React from 'react'; import { Button, Tab } from 'semantic-ui-react'; import { Form, withFormik } from 'formik'; import { History } from 'history'; import { TxButton } from '@polkadot/joy-utils/react/components'; import { onImageError } from '../common/images'; import { ReorderableTracks } from './ReorderableTracks'; import { MusicAlbumValidationSchema, MusicAlbumType, MusicAlbumClass as Fields, MusicAlbumFormValues, MusicAlbumToFormValues } from '../schemas/music/MusicAlbum'; import { withMediaForm, MediaFormProps, datePlaceholder } from '../common/MediaForms'; import EntityId from '@joystream/types/versioned-store/EntityId'; import { MediaDropdownOptions } from '../common/MediaDropdownOptions'; import { MusicTrackReaderPreviewProps } from './MusicTrackReaderPreview'; import { FormTabs } from '../common/FormTabs'; export type OuterProps = { history?: History; id?: EntityId; entity?: MusicAlbumType; tracks?: MusicTrackReaderPreviewProps[]; opts?: MediaDropdownOptions; }; type FormValues = MusicAlbumFormValues; const InnerForm = (props: MediaFormProps) => { const { // React components for form fields: MediaText, MediaDropdown, LabelledField, // Callbacks: onSubmit, onTxSuccess, onTxFailed, // history, entity, tracks = [], opts = MediaDropdownOptions.Empty, values, dirty, errors, isValid, isSubmitting, resetForm } = props; const { thumbnail } = values; const isNew = !entity; const buildTxParams = () => { if (!isValid) return []; return []; }; const basicInfoTab = () => ; const additionalTab = () => ; const tracksTab = () => This album has no tracks yet.} /> ; const tabs = ; const renderMainButton = () => ; return
{thumbnail && }
{tabs} {renderMainButton()}
; }; export const EditForm = withFormik({ // Transform outer props into form values mapPropsToValues: (props): FormValues => { const { entity } = props; return MusicAlbumToFormValues(entity); }, validationSchema: MusicAlbumValidationSchema, handleSubmit: () => { // do submitting things } })(withMediaForm(InnerForm) as any); export default EditForm;