import { Form } from 'formik'; import { pickBy } from 'lodash'; import React from 'react'; import { Modal } from 'react-bootstrap'; import { FormikFormField, HelpField, ModalClose, noop, ReactModal, ReactSelectInput, SelectInput, SpinFormik, SubmitButton, TextInput, } from '@spinnaker/core'; import type { IRedirectActionConfig } from '../../../domain'; import './ConfigureConfigModal.css'; export interface IConfigureRedirectConfigModalProps { config: IRedirectActionConfig; closeModal?(result?: any): void; // provided by ReactModal dismissModal?(rejection?: any): void; // provided by ReactModal } export class ConfigureRedirectConfigModal extends React.Component { private initialValues: IRedirectActionConfig; public static defaultProps: Partial = { closeModal: noop, dismissModal: noop, }; public static show(props: IConfigureRedirectConfigModalProps): Promise { return ReactModal.show(ConfigureRedirectConfigModal, props); } constructor(props: IConfigureRedirectConfigModalProps) { super(props); const config = props.config || ({} as IRedirectActionConfig); this.initialValues = { host: config.host || '', path: config.path || '', port: config.port || '', protocol: config.protocol || undefined, query: config.query || '', statusCode: config.statusCode || 'HTTP_301', }; } private close = (reason?: null): void => { this.props.dismissModal(reason); }; private submit = (data: IRedirectActionConfig): void => { const filteredData: IRedirectActionConfig = pickBy(data, (value: string) => value && value !== ''); this.props.closeModal(filteredData); }; public render() { const submitLabel = 'Save Config'; return (
initialValues={this.initialValues} onSubmit={this.submit} render={({ isValid }) => (
Configure Redirect } help={} /> } help={} /> } help={} /> ( )} help={} /> } help={} /> } help={} /> )} />
); } }