fix: Modals titles nested headers and header nested buttons errors (#2019)

This commit is contained in:
SeDemal
2024-04-20 18:43:46 +02:00
committed by GitHub
parent fdbb8d8b35
commit 7dffe393ab
12 changed files with 77 additions and 111 deletions

View File

@@ -169,11 +169,7 @@ const CitySelectModal = ({ opened, closeModal, query, onCitySelected }: CitySele
if (isError === true)
return (
<Modal
title={
<Title order={4}>
{t('modal.title')} - {query}
</Title>
}
title={t('modal.title') + ' - ' + query}
size="xl"
opened={opened}
onClose={closeModal}
@@ -193,11 +189,7 @@ const CitySelectModal = ({ opened, closeModal, query, onCitySelected }: CitySele
return (
<Modal
title={
<Title order={4}>
{t('modal.title')} - {query}
</Title>
}
title={t('modal.title') + ' - ' + query}
size="xl"
opened={opened}
onClose={closeModal}

View File

@@ -1,4 +1,3 @@
import { Title } from '@mantine/core';
import { useTranslation } from 'next-i18next';
import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions';
import { IWidget } from '~/widgets/widgets';
@@ -38,7 +37,7 @@ export const WidgetsMenu = ({ integration, widget }: WidgetsMenuProps) => {
const handleDeleteClick = () => {
openContextModalGeneric<WidgetsRemoveModalInnerProps>({
modal: 'integrationRemove',
title: <Title order={4}>{t('common:remove')}</Title>,
title: t('common:remove'),
innerProps: {
widgetId: widget.id,
widgetType: integration,

View File

@@ -98,10 +98,10 @@ export const DashboardCategory = ({ category }: DashboardCategoryProps) => {
>
<Accordion.Item value={category.name}>
<Box sx={{ display: 'flex', alignItems: 'center' }}>
<Accordion.Control icon={isEditMode && <CategoryEditMenu category={category} />}>
<Accordion.Control>
<Title order={3}>{category.name}</Title>
</Accordion.Control>
{!isEditMode && (
{!isEditMode ? (
<Menu withArrow withinPortal>
<Menu.Target>
<ActionIcon variant="light" mr="md">
@@ -114,7 +114,7 @@ export const DashboardCategory = ({ category }: DashboardCategoryProps) => {
</Menu.Item>
</Menu.Dropdown>
</Menu>
)}
) : <CategoryEditMenu category={category} />}
</Box>
<Accordion.Panel>
<div

View File

@@ -1,4 +1,4 @@
import { Button, Group, Stack, Text, TextInput, Title } from '@mantine/core';
import { Button, Group, Stack, Text, TextInput } from '@mantine/core';
import { useForm } from '@mantine/form';
import { ContextModalProps, modals } from '@mantine/modals';
import { Trans, useTranslation } from 'next-i18next';
@@ -80,11 +80,7 @@ export const CreateBoardModal = ({ id }: ContextModalProps<{}>) => {
export const openCreateBoardModal = () => {
modals.openContextModal({
modal: 'createBoardModal',
title: (
<Title order={4}>
<Trans i18nKey="manage/boards:modals.create.title" />
</Title>
),
title: <Trans i18nKey="manage/boards:modals.create.title" />,
innerProps: {},
});
};

View File

@@ -1,4 +1,4 @@
import { Button, Group, Stack, Text, Title } from '@mantine/core';
import { Button, Group, Stack, Text } from '@mantine/core';
import { ContextModalProps, modals } from '@mantine/modals';
import { Trans, useTranslation } from 'next-i18next';
import { api } from '~/utils/api';
@@ -51,11 +51,7 @@ export const DeleteBoardModal = ({ id, innerProps }: ContextModalProps<InnerProp
export const openDeleteBoardModal = (innerProps: InnerProps) => {
modals.openContextModal({
modal: 'deleteBoardModal',
title: (
<Title order={4}>
<Trans i18nKey="manage/boards:modals.delete.title" />
</Title>
),
title: <Trans i18nKey="manage/boards:modals.delete.title" />,
innerProps,
});
};

View File

@@ -1,4 +1,4 @@
import { Button, Group, Select, Stack, Text, Title } from '@mantine/core';
import { Button, Group, Select, Stack, Text } from '@mantine/core';
import { useForm } from '@mantine/form';
import { ContextModalProps, modals } from '@mantine/modals';
import { showNotification } from '@mantine/notifications';
@@ -132,11 +132,7 @@ export const DockerSelectBoardModal = ({ id, innerProps }: ContextModalProps<Inn
export const openDockerSelectBoardModal = (innerProps: InnerProps) => {
modals.openContextModal({
modal: 'dockerSelectBoardModal',
title: (
<Title order={4}>
<Trans i18nKey="tools/docker:modals.selectBoard.title" />
</Title>
),
title: <Trans i18nKey="tools/docker:modals.selectBoard.title" />,
innerProps,
});
umami.track('Add to homarr modal');

View File

@@ -1,4 +1,4 @@
import { Button, CopyButton, Mark, Stack, Text, Title } from '@mantine/core';
import { Button, CopyButton, Mark, Stack, Text } from '@mantine/core';
import { ContextModalProps, modals } from '@mantine/modals';
import { Trans, useTranslation } from 'next-i18next';
import Link from 'next/link';
@@ -65,11 +65,7 @@ const useInviteUrl = (id: string, token: string) => {
export const openCopyInviteModal = (data: InnerProps) => {
modals.openContextModal({
modal: 'copyInviteModal',
title: (
<Title order={4}>
<Trans i18nKey="manage/users/invites:modals.copy.title" />
</Title>
),
title: <Trans i18nKey="manage/users/invites:modals.copy.title" />,
innerProps: data,
});
};

View File

@@ -1,4 +1,4 @@
import { Button, Group, Stack, Text, Title } from '@mantine/core';
import { Button, Group, Stack, Text } from '@mantine/core';
import { DateTimePicker } from '@mantine/dates';
import { useForm } from '@mantine/form';
import { ContextModalProps, modals } from '@mantine/modals';
@@ -79,11 +79,7 @@ export const CreateInviteModal = ({ id }: ContextModalProps<{}>) => {
export const openCreateInviteModal = () => {
modals.openContextModal({
modal: 'createInviteModal',
title: (
<Title order={4}>
<Trans i18nKey="manage/users/invites:modals.create.title" />
</Title>
),
title: <Trans i18nKey="manage/users/invites:modals.create.title" />,
innerProps: {},
});
};

View File

@@ -1,4 +1,4 @@
import { Button, Group, Stack, Text, Title } from '@mantine/core';
import { Button, Group, Stack, Text } from '@mantine/core';
import { ContextModalProps, modals } from '@mantine/modals';
import { Trans, useTranslation } from 'next-i18next';
import { api } from '~/utils/api';
@@ -48,12 +48,10 @@ export const openRoleChangeModal = (user: InnerProps) => {
modals.openContextModal({
modal: 'changeUserRoleModal',
title: (
<Title order={4}>
<Trans
i18nKey={`manage/users:modals.change-role.${user.type}.title`}
values={{ name: user.name }}
/>
</Title>
<Trans
i18nKey={`manage/users:modals.change-role.${user.type}.title`}
values={{ name: user.name }}
/>
),
innerProps: user,
});

View File

@@ -1,4 +1,4 @@
import { Button, Group, Stack, Text, Title } from '@mantine/core';
import { Button, Group, Stack, Text } from '@mantine/core';
import { ContextModalProps, modals } from '@mantine/modals';
import { Trans, useTranslation } from 'next-i18next';
import { api } from '~/utils/api';
@@ -46,11 +46,7 @@ export const DeleteUserModal = ({ id, innerProps }: ContextModalProps<InnerProps
export const openDeleteUserModal = (user: InnerProps) => {
modals.openContextModal({
modal: 'deleteUserModal',
title: (
<Title order={4}>
<Trans i18nKey="manage/users:modals.delete.title" values={{ name: user.name }} />
</Title>
),
title: <Trans i18nKey="manage/users:modals.delete.title" values={{ name: user.name }} />,
innerProps: user,
});
};

View File

@@ -27,64 +27,60 @@ export const AvatarMenu = () => {
const defaultBoardHref = useBoardLink('/board');
return (
<UnstyledButton>
<Menu width={256}>
<Menu.Target>
<Menu width={256}>
<Menu.Target>
<UnstyledButton>
<CurrentUserAvatar user={sessionData?.user ?? null} />
</Menu.Target>
<Menu.Dropdown>
<Menu.Item
closeMenuOnClick={false}
icon={<Icon size="1rem" />}
onClick={toggleColorScheme}
>
{t('actions.avatar.switchTheme')}
</Menu.Item>
{sessionData?.user && (
<>
<Menu.Item
component={Link}
passHref
href="/user/preferences"
icon={<IconUserCog size="1rem" />}
>
{t('actions.avatar.preferences')}
</Menu.Item>
<Menu.Item
component={Link}
href={defaultBoardHref}
icon={<IconDashboard size="1rem" />}
>
{t('actions.avatar.defaultBoard')}
</Menu.Item>
<Menu.Item component={Link} href="/manage" icon={<IconHomeShare size="1rem" />}>
{t('actions.avatar.manage')}
</Menu.Item>
<Menu.Divider />
</>
)}
{sessionData?.user ? (
</UnstyledButton>
</Menu.Target>
<Menu.Dropdown>
<Menu.Item closeMenuOnClick={false} icon={<Icon size="1rem" />} onClick={toggleColorScheme}>
{t('actions.avatar.switchTheme')}
</Menu.Item>
{sessionData?.user && (
<>
<Menu.Item
icon={<IconLogout size="1rem" />}
color="red"
onClick={() =>
signOut({
redirect: false,
}).then(() => window.location.reload())
}
component={Link}
passHref
href="/user/preferences"
icon={<IconUserCog size="1rem" />}
>
{t('actions.avatar.logout', {
username: sessionData.user.name,
})}
{t('actions.avatar.preferences')}
</Menu.Item>
) : (
<Menu.Item icon={<IconLogin size="1rem" />} component={Link} href="/auth/login">
{t('actions.avatar.login')}
<Menu.Item
component={Link}
href={defaultBoardHref}
icon={<IconDashboard size="1rem" />}
>
{t('actions.avatar.defaultBoard')}
</Menu.Item>
)}
</Menu.Dropdown>
</Menu>
</UnstyledButton>
<Menu.Item component={Link} href="/manage" icon={<IconHomeShare size="1rem" />}>
{t('actions.avatar.manage')}
</Menu.Item>
<Menu.Divider />
</>
)}
{sessionData?.user ? (
<Menu.Item
icon={<IconLogout size="1rem" />}
color="red"
onClick={() =>
signOut({
redirect: false,
}).then(() => window.location.reload())
}
>
{t('actions.avatar.logout', {
username: sessionData.user.name,
})}
</Menu.Item>
) : (
<Menu.Item icon={<IconLogin size="1rem" />} component={Link} href="/auth/login">
{t('actions.avatar.login')}
</Menu.Item>
)}
</Menu.Dropdown>
</Menu>
);
};

View File

@@ -140,6 +140,11 @@
background-size: 60px 60px;
}
.mantine-Modal-title {
font-size: 1.375rem;
font-weight: 700;
}
.tiptap {
hr {
border-top-style: double;