debian-image-builder-frontend/src/Components/CreateImageWizard/ImageCreator.js
regexowl ab1a7f4aab ESLint: Use --fix with updated rules to order imports
This applies the updated sorting rules to the files by running `npm run lint:js:fix`
2022-12-02 16:29:58 +01:00

88 lines
2.9 KiB
JavaScript

import React from 'react';
import { componentMapper } from '@data-driven-forms/pf4-component-mapper';
import Pf4FormTemplate from '@data-driven-forms/pf4-component-mapper/form-template';
import Select from '@data-driven-forms/pf4-component-mapper/select';
import FormRenderer from '@data-driven-forms/react-form-renderer/form-renderer';
import { Spinner } from '@patternfly/react-core';
import PropTypes from 'prop-types';
import ActivationKeys from './formComponents/ActivationKeys';
import AzureAuthButton from './formComponents/AzureAuthButton';
import CentOSAcknowledgement from './formComponents/CentOSAcknowledgement';
import FileSystemConfigToggle from './formComponents/FileSystemConfigToggle';
import FileSystemConfiguration from './formComponents/FileSystemConfiguration';
import ImageOutputReleaseSelect from './formComponents/ImageOutputReleaseSelect';
import Packages from './formComponents/Packages';
import RadioWithPopover from './formComponents/RadioWithPopover';
import Review from './formComponents/ReviewStep';
import TargetEnvironment from './formComponents/TargetEnvironment';
const ImageCreator = ({
schema,
onSubmit,
onClose,
customComponentMapper,
customValidatorMapper,
defaultArch,
className,
...props
}) => {
return schema ? (
<FormRenderer
initialValues={props.initialValues}
schema={schema}
className={`image-builder${className ? ` ${className}` : ''}`}
subscription={{ values: true }}
FormTemplate={(props) => (
<Pf4FormTemplate {...props} showFormControls={false} />
)}
onSubmit={(formValues) => onSubmit(formValues)}
validatorMapper={{ ...customValidatorMapper }}
componentMapper={{
...componentMapper,
review: Review,
output: TargetEnvironment,
select: Select,
'package-selector': {
component: Packages,
defaultArch,
},
'radio-popover': RadioWithPopover,
'azure-auth-button': AzureAuthButton,
'activation-keys': ActivationKeys,
'file-system-config-toggle': FileSystemConfigToggle,
'file-system-configuration': FileSystemConfiguration,
'image-output-release-select': ImageOutputReleaseSelect,
'centos-acknowledgement': CentOSAcknowledgement,
...customComponentMapper,
}}
onCancel={onClose}
{...props}
/>
) : (
<Spinner />
);
};
ImageCreator.propTypes = {
schema: PropTypes.object,
onSubmit: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
customComponentMapper: PropTypes.shape({
[PropTypes.string]: PropTypes.oneOfType([
PropTypes.node,
PropTypes.shape({
component: PropTypes.node,
}),
]),
}),
customValidatorMapper: PropTypes.shape({
[PropTypes.string]: PropTypes.func,
}),
defaultArch: PropTypes.string,
className: PropTypes.string,
initialValues: PropTypes.object,
};
export default ImageCreator;