mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import styled from '@emotion/styled';
|
|
|
|
import Button from 'sentry/components/actions/button';
|
|
import type {ButtonProps} from 'sentry/components/button';
|
|
import {space} from 'sentry/styles/space';
|
|
|
|
interface FooterWithButtonsProps
|
|
extends Partial<Pick<ButtonProps, 'disabled' | 'onClick' | 'href'>> {
|
|
buttonText: string;
|
|
formFields?: Array<{name: string; value: any}>;
|
|
formProps?: React.FormHTMLAttributes<HTMLFormElement>;
|
|
}
|
|
|
|
export default function FooterWithButtons({
|
|
buttonText,
|
|
formFields,
|
|
formProps,
|
|
...rest
|
|
}: FooterWithButtonsProps) {
|
|
/**
|
|
* We use a form post here to replicate what we do with standard HTML views for the integration pipeline.
|
|
* Since this is a form post, we need to pass a hidden replica of the form inputs
|
|
* so we can submit this form instead of the one collecting the user inputs.
|
|
*/
|
|
return (
|
|
<Footer data-test-id="aws-lambda-footer-form" {...formProps}>
|
|
{formFields?.map(field => {
|
|
return <input type="hidden" key={field.name} {...field} />;
|
|
})}
|
|
<Button priority="primary" type="submit" size="xs" {...rest}>
|
|
{buttonText}
|
|
</Button>
|
|
</Footer>
|
|
);
|
|
}
|
|
|
|
// wrap in form so we can keep form submission behavior
|
|
const Footer = styled('form')`
|
|
width: 100%;
|
|
position: fixed;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
bottom: 0;
|
|
z-index: 100;
|
|
background-color: ${p => p.theme.bodyBackground};
|
|
border-top: 1px solid ${p => p.theme.innerBorder};
|
|
padding: ${space(2)};
|
|
`;
|