import { useState, useEffect, useCallback } from "react"; import { Stack, Title, Tabs, Group, Button, TextInput, Textarea, Modal, Text, Select, Loader, Center, Alert, } from "@mantine/core"; import { useForm } from "@mantine/form"; import { useDisclosure } from "@mantine/hooks"; import { IconPlus, IconBriefcase, IconMap, IconCertificate, IconHash, IconInfoCircle, } from "@tabler/icons-react"; import { useTranslation } from "react-i18next"; import { notify, useErrorHandler, AdvancedTable, useServerTable, ModalFooter, PageLoader, } from "@ema-platform/ui"; import { LocationPage } from "../../../location/pages/LocationPage"; import { CertificationPage } from "../../../certification/pages/CertificationPage"; import { NumberFormatTab } from "../../components/NumberFormatTab"; import { useGetOrganizationsQuery, useGetProfessionsQuery, useCreateProfessionMutation, useUpdateProfessionMutation, useDeleteProfessionMutation, } from "../../api/configuration-api"; import type { Profession } from "../../types/configuration"; import { professionColumns } from "./columns"; import { professionActionsColumn } from "./actions"; import { PageHeader } from '@ema-platform/ui'; interface ProfFormValues { nameEn: string; nameAm: string; descEn: string; descAm: string; departmentId: string; } interface ProfFormProps { editingProf: Profession | null; deptOptions: { value: string; label: string }[]; isSubmitting: boolean; onSubmit: (values: ProfFormValues, isEdit: boolean) => void; onCancel: () => void; } function ProfessionForm({ editingProf, deptOptions, isSubmitting, onSubmit, onCancel, }: ProfFormProps) { const { t } = useTranslation(); const form = useForm({ initialValues: { nameEn: "", nameAm: "", descEn: "", descAm: "", departmentId: "", }, validate: { nameEn: (v) => (!v ? t("configuration.validation.nameEnRequired") : null), nameAm: (v) => (!v ? t("configuration.validation.nameAmRequired") : null), departmentId: (v) => !v ? t("configuration.validation.departmentRequired") : null, }, }); useEffect(() => { if (editingProf) { form.setValues({ nameEn: editingProf.name.en, nameAm: editingProf.name.am, descEn: editingProf.description.en ?? "", descAm: editingProf.description.am ?? "", departmentId: editingProf.departmentId, }); } }, [editingProf]); const handleSubmit = form.onSubmit((values) => onSubmit(values, !!editingProf), ); return (