import { computed, defineComponent, ref } from 'vue'; import type { BCMSModalInputDefaults, BCMSTemplateOrganizerCreateModalInputData, BCMSTemplateOrganizerCreateModalOutputData, } from '../../../types'; import Modal from '../_modal'; import { BCMSTextInput } from '../../input'; import { useTranslation } from '../../../translations'; interface Data extends BCMSModalInputDefaults { name: { value: string; error: string; }; } const component = defineComponent({ setup() { const translations = computed(() => { return useTranslation(); }); const show = ref(false); const modalData = ref(getData()); window.bcms.modal.templateOrganizer.create = { hide() { show.value = false; }, show(data) { modalData.value = getData(data); show.value = true; }, }; function getData( inputData?: BCMSTemplateOrganizerCreateModalInputData ): Data { const d: Data = { title: translations.value.modal.templateOrganizer.title, name: { value: '', error: '', }, }; if (inputData) { if (inputData.title) { d.title = inputData.title; } if (inputData.onDone) { d.onDone = inputData.onDone; } if (inputData.onCancel) { d.onCancel = inputData.onCancel; } if (inputData.name) { d.name.value = inputData.name; } } return d; } function cancel() { if (modalData.value.onCancel) { const result = modalData.value.onCancel(); if (result instanceof Promise) { result.catch((error) => { console.error(error); }); } } window.bcms.modal.templateOrganizer.create.hide(); } function done() { if (modalData.value.name.value.replace(/ /g, '') === '') { modalData.value.name.error = translations.value.modal.templateOrganizer.error.emptyLabel; return; } modalData.value.name.error = ''; if (modalData.value.onDone) { const result = modalData.value.onDone({ name: modalData.value.name.value, }); if (result instanceof Promise) { result.catch((error) => { console.error(error); }); } } window.bcms.modal.templateOrganizer.create.hide(); } return () => { return ( { modalData.value.name.value = value; }} onEnter={done} /> ); }; }, }); export default component;