import { Button, createStyles, Group, Stack, Tabs, Text } from '@mantine/core'; import { useForm } from '@mantine/form'; import { ContextModalProps } from '@mantine/modals'; import { hideNotification, showNotification } from '@mantine/notifications'; import { IconAccessPoint, IconAdjustments, IconBrush, IconClick, IconDeviceFloppy, IconDoorExit, IconPlug, } from '@tabler/icons'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; import { ServiceType } from '../../../../types/service'; import { AppearanceTab } from './Tabs/AppereanceTab/AppereanceTab'; import { BehaviourTab } from './Tabs/BehaviourTab/BehaviourTab'; import { GeneralTab } from './Tabs/GeneralTab/GeneralTab'; import { IntegrationTab } from './Tabs/IntegrationTab/IntegrationTab'; import { NetworkTab } from './Tabs/NetworkTab/NetworkTab'; export const EditServiceModal = ({ context, id, innerProps, }: ContextModalProps<{ service: ServiceType }>) => { const { t } = useTranslation(); const { classes } = useStyles(); const form = useForm({ initialValues: innerProps.service, }); const onSubmit = (values: ServiceType) => { console.log('form submitted'); console.log(values); }; const tryCloseModal = () => { if (form.isDirty()) { showNotification({ id: 'unsaved-edit-service-modal-changes', title: 'You have unsaved changes', message: ( If you close, your changes will be discarded and not saved. ), }); return; } context.closeModal(id); }; return ( <> {form.values.appearance.iconUrl ? ( // disabled because image target is too dynamic for next image cache // eslint-disable-next-line @next/next/no-img-element service icon ) : ( )} {form.values.name ?? 'New Service'}
}> General }> Behaviour }> Network }> Appearance }> Integration
); }; const useStyles = createStyles(() => ({ serviceImage: { objectFit: 'contain', }, }));