Skip to content
Snippets Groups Projects
Unverified Commit 839717c9 authored by Nick Fitzpatrick's avatar Nick Fitzpatrick Committed by GitHub
Browse files

Fix `padding` prop on Mantine Modals (#46900)

* move default modal padding to general modal component

* small adjustments. Using base modal where apropriate

* shame
parent da829723
No related branches found
No related tags found
No related merge requests found
Showing
with 52 additions and 88 deletions
...@@ -10,23 +10,6 @@ import { ScimTextWarning } from "./ScimTextWarning"; ...@@ -10,23 +10,6 @@ import { ScimTextWarning } from "./ScimTextWarning";
type BaseUserProvisiongModalProps = Pick<ModalProps, "opened" | "onClose">; type BaseUserProvisiongModalProps = Pick<ModalProps, "opened" | "onClose">;
interface ScimModalProps extends BaseUserProvisiongModalProps {
title: string;
children: React.ReactNode;
}
const ScimModal = ({ opened, onClose, title, children }: ScimModalProps) => (
<Modal.Root opened={opened} onClose={onClose} size="35rem">
<Modal.Overlay />
<Modal.Content p="md">
<Modal.Header mb="sm">
<Modal.Title>{title}</Modal.Title>
</Modal.Header>
<Modal.Body>{children}</Modal.Body>
</Modal.Content>
</Modal.Root>
);
interface UserProvisioningFirstEnabledModalProps interface UserProvisioningFirstEnabledModalProps
extends BaseUserProvisiongModalProps { extends BaseUserProvisiongModalProps {
scimBaseUrl: string; scimBaseUrl: string;
...@@ -42,7 +25,9 @@ export const UserProvisioningFirstEnabledModal = ({ ...@@ -42,7 +25,9 @@ export const UserProvisioningFirstEnabledModal = ({
scimError, scimError,
}: UserProvisioningFirstEnabledModalProps) => { }: UserProvisioningFirstEnabledModalProps) => {
return ( return (
<ScimModal <Modal
padding="2rem"
size="35rem"
opened={opened} opened={opened}
onClose={onClose} onClose={onClose}
title={t`Here's what you'll need to set SCIM up`} title={t`Here's what you'll need to set SCIM up`}
...@@ -70,7 +55,7 @@ export const UserProvisioningFirstEnabledModal = ({ ...@@ -70,7 +55,7 @@ export const UserProvisioningFirstEnabledModal = ({
</Button> </Button>
</Flex> </Flex>
</Stack> </Stack>
</ScimModal> </Modal>
); );
}; };
...@@ -99,7 +84,13 @@ export const UserProvisioningRegenerateTokenModal = ({ ...@@ -99,7 +84,13 @@ export const UserProvisioningRegenerateTokenModal = ({
if (!confirmed) { if (!confirmed) {
return ( return (
<ScimModal opened={opened} onClose={onClose} title={t`Regenerate token?`}> <Modal
size="35rem"
padding="2rem"
opened={opened}
onClose={onClose}
title={t`Regenerate token?`}
>
<Stack spacing="lg"> <Stack spacing="lg">
<Text> <Text>
{/* eslint-disable-next-line no-literal-metabase-strings -- in admin settings */} {/* eslint-disable-next-line no-literal-metabase-strings -- in admin settings */}
...@@ -112,19 +103,21 @@ export const UserProvisioningRegenerateTokenModal = ({ ...@@ -112,19 +103,21 @@ export const UserProvisioningRegenerateTokenModal = ({
</Button> </Button>
</Flex> </Flex>
</Stack> </Stack>
</ScimModal> </Modal>
); );
} }
const scimTokenInputText = regenerateTokenReq.data?.unmasked_key ?? ""; const scimTokenInputText = regenerateTokenReq.data?.unmasked_key ?? "";
return ( return (
<ScimModal <Modal
size="35rem"
padding="2rem"
opened={opened} opened={opened}
onClose={onClose} onClose={onClose}
title={t`Copy and save the SCIM token`} title={t`Copy and save the SCIM token`}
> >
<Stack spacing="lg"> <Stack spacing="lg" mt="0.5rem">
<LoadingAndErrorWrapper <LoadingAndErrorWrapper
error={regenerateTokenReq.error} error={regenerateTokenReq.error}
loading={regenerateTokenReq.isLoading} loading={regenerateTokenReq.isLoading}
...@@ -148,6 +141,6 @@ export const UserProvisioningRegenerateTokenModal = ({ ...@@ -148,6 +141,6 @@ export const UserProvisioningRegenerateTokenModal = ({
)} )}
</Flex> </Flex>
</Stack> </Stack>
</ScimModal> </Modal>
); );
}; };
...@@ -163,37 +163,29 @@ export default class DatabaseList extends Component { ...@@ -163,37 +163,29 @@ export default class DatabaseList extends Component {
) : null} ) : null}
</section> </section>
{/* Needed to make this a composed modal to get the padding we wanted. <Modal
Not sure why the padding prop didn't work */}
<Modal.Root
opened={isPermissionModalOpened} opened={isPermissionModalOpened}
size={620} size={620}
withCloseButton={false} withCloseButton={false}
title={t`Your database was added! Want to configure permissions?`}
padding="2rem"
> >
<Modal.Overlay /> <Text
<Modal.Content p="1rem"> mb="1.5rem"
<Modal.Header> mt="1rem"
<Modal.Title fz="1.25rem">{t`Your database was added! Want to configure permissions?`}</Modal.Title> >{t`You can change these settings later in the Permissions tab. Do you want to configure it?`}</Text>
</Modal.Header> <Flex justify="end">
<Modal.Body> <Button
<Text mr="0.5rem"
mb="1.5rem" onClick={this.onPermissionModalClose}
mt="1rem" >{t`Maybe later`}</Button>
>{t`You can change these settings later in the Permissions tab. Do you want to configure it?`}</Text> <Button
<Flex justify="end"> component={Link}
<Button variant="filled"
mr="0.5rem" to={`/admin/permissions/data/database/${createdDbId}`}
onClick={this.onPermissionModalClose} >{t`Configure permissions`}</Button>
>{t`Maybe later`}</Button> </Flex>
<Button </Modal>
component={Link}
variant="filled"
to={`/admin/permissions/data/database/${createdDbId}`}
>{t`Configure permissions`}</Button>
</Flex>
</Modal.Body>
</Modal.Content>
</Modal.Root>
</div> </div>
); );
} }
......
...@@ -39,7 +39,6 @@ export const CreateApiKeyModal = ({ onClose }: { onClose: () => void }) => { ...@@ -39,7 +39,6 @@ export const CreateApiKeyModal = ({ onClose }: { onClose: () => void }) => {
return ( return (
<Modal <Modal
size="30rem" size="30rem"
padding="xl"
opened opened
onClose={onClose} onClose={onClose}
title={t`Create a new API Key`} title={t`Create a new API Key`}
......
...@@ -26,13 +26,7 @@ export const DeleteApiKeyModal = ({ ...@@ -26,13 +26,7 @@ export const DeleteApiKeyModal = ({
}, [onClose, apiKey.id, deleteApiKey]); }, [onClose, apiKey.id, deleteApiKey]);
return ( return (
<Modal <Modal size="30rem" opened onClose={onClose} title={t`Delete API Key`}>
size="30rem"
padding="xl"
opened
onClose={onClose}
title={t`Delete API Key`}
>
<FormProvider initialValues={{}} onSubmit={handleDelete}> <FormProvider initialValues={{}} onSubmit={handleDelete}>
<Form> <Form>
<Stack spacing="lg"> <Stack spacing="lg">
......
...@@ -43,7 +43,6 @@ const RegenerateKeyModal = ({ ...@@ -43,7 +43,6 @@ const RegenerateKeyModal = ({
return ( return (
<Modal <Modal
size="30rem" size="30rem"
padding="xl"
opened opened
onClose={() => setModal("edit")} onClose={() => setModal("edit")}
title={t`Regenerate API key`} title={t`Regenerate API key`}
......
...@@ -16,7 +16,6 @@ export const SecretKeyModal = ({ ...@@ -16,7 +16,6 @@ export const SecretKeyModal = ({
}) => ( }) => (
<Modal <Modal
size="30rem" size="30rem"
padding="xl"
zIndex={DEFAULT_Z_INDEX} // prevents CopyWidgetButton's Tippy popover from being obscured zIndex={DEFAULT_Z_INDEX} // prevents CopyWidgetButton's Tippy popover from being obscured
opened opened
onClose={onClose} onClose={onClose}
......
...@@ -45,7 +45,7 @@ export const MigrationStart = ({ ...@@ -45,7 +45,7 @@ export const MigrationStart = ({
<Modal.Root <Modal.Root
opened={isModalOpen} opened={isModalOpen}
onClose={closeModal} onClose={closeModal}
size={"36rem"} size="36rem"
data-testid="new-cloud-migration-confirmation" data-testid="new-cloud-migration-confirmation"
> >
<Modal.Overlay /> <Modal.Overlay />
......
...@@ -46,27 +46,20 @@ function CreateCollectionModal({ ...@@ -46,27 +46,20 @@ function CreateCollectionModal({
); );
return ( return (
<Modal.Root <Modal
opened opened
onClose={onClose} onClose={onClose}
size="lg" size="lg"
data-testid="new-collection-modal" data-testid="new-collection-modal"
padding="40px"
title={t`New collection`}
> >
<Modal.Overlay /> <CreateCollectionForm
<Modal.Content p="md"> {...props}
<Modal.Header> onCreate={handleCreate}
<Modal.Title>{t`New collection`}</Modal.Title> onCancel={onClose}
<Modal.CloseButton /> />
</Modal.Header> </Modal>
<Modal.Body>
<CreateCollectionForm
{...props}
onCreate={handleCreate}
onCancel={onClose}
/>
</Modal.Body>
</Modal.Content>
</Modal.Root>
); );
} }
......
...@@ -72,7 +72,6 @@ export const ErrorDiagnosticModal = ({ ...@@ -72,7 +72,6 @@ export const ErrorDiagnosticModal = ({
opened opened
onClose={onClose} onClose={onClose}
title={t`Download diagnostic information`} title={t`Download diagnostic information`}
padding="xl"
size="lg" size="lg"
> >
<FormProvider <FormProvider
......
...@@ -27,10 +27,9 @@ export const SaveQuestionModal = ({ ...@@ -27,10 +27,9 @@ export const SaveQuestionModal = ({
multiStep={multiStep} multiStep={multiStep}
initialCollectionId={initialCollectionId} initialCollectionId={initialCollectionId}
> >
<Modal.Root onClose={onCancel} opened={true}> <Modal.Root onClose={onCancel} opened={true} padding="40px">
<Modal.Overlay /> <Modal.Overlay />
<Modal.Content data-testid="save-question-modal">
<Modal.Content p="md" data-testid="save-question-modal">
<Modal.Header> <Modal.Header>
<Modal.Title> <Modal.Title>
<SaveQuestionTitle /> <SaveQuestionTitle />
......
...@@ -7,6 +7,9 @@ const DEFAULT_MODAL_SPACING = "lg"; ...@@ -7,6 +7,9 @@ const DEFAULT_MODAL_SPACING = "lg";
export const getModalOverrides = (): MantineThemeOverride["components"] => ({ export const getModalOverrides = (): MantineThemeOverride["components"] => ({
Modal: { Modal: {
defaultProps: {
padding: DEFAULT_MODAL_SPACING,
},
styles: theme => ({ styles: theme => ({
root: { root: {
color: "var(--mb-color-text-dark)", color: "var(--mb-color-text-dark)",
...@@ -34,15 +37,9 @@ export const getModalOverrides = (): MantineThemeOverride["components"] => ({ ...@@ -34,15 +37,9 @@ export const getModalOverrides = (): MantineThemeOverride["components"] => ({
}, },
ModalHeader: { ModalHeader: {
defaultProps: { defaultProps: {
p: DEFAULT_MODAL_SPACING,
pb: "sm", pb: "sm",
}, },
}, },
ModalBody: {
defaultProps: {
p: DEFAULT_MODAL_SPACING,
},
},
ModalCloseButton: { ModalCloseButton: {
defaultProps: { defaultProps: {
"aria-label": t`Close`, "aria-label": t`Close`,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment