import {ContextModalProps} from "@mantine/modals"; import BaseFormModal, {CreateEditFormProps} from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx"; import {DealServiceSchema} from "../../../client"; import {useForm} from "@mantine/form"; import {ComboboxItem, ComboboxItemGroup, NumberInput, OptionsFilter} from "@mantine/core"; import ServiceWithPriceInput from "../../../components/ServiceWithPriceInput/ServiceWithPriceInput.tsx"; import {ServiceType} from "../../../shared/enums/ServiceType.ts"; type RestProps = { serviceIds?: number[]; } type Props = CreateEditFormProps> & RestProps; const AddDealServiceModal = ({ context, id, innerProps }: ContextModalProps) => { const isEditing = 'element' in innerProps; const form = useForm>({ initialValues: isEditing ? innerProps.element : { service: undefined, quantity: 1, }, validate: { service: (service?: DealServiceSchema['service']) => service !== undefined ? null : "Необходимо выбрать услугу", quantity: (quantity?: number) => (quantity && quantity > 0) ? null : "Количество должно быть больше 0" } }); const onClose = () => { context.closeContextModal(id); } const serviceOptionsFilter = ({options}: { options: ComboboxItemGroup[] }) => { if (!innerProps.serviceIds) return options; const productServiceIds = innerProps.serviceIds; return (options as ComboboxItemGroup[]).map(({items, group}) => { return { group, items: items.filter(item => !productServiceIds.includes(parseInt((item as ComboboxItem).value))) } }) }; return ( <> ) } export default AddDealServiceModal;