Skip to main content

modalForm

Utilizando en un Componente

Ejemplo de File

Componente ModalForm

El componente ModalForm es una solución reutilizable para mostrar un formulario en un modal. Este componente está diseñado para manejar tanto la creación como la actualización de datos. Proporciona opciones de configuración para personalizar el comportamiento y la apariencia del modal y el formulario.




<template>
<div>
<!-- Otros componentes y contenido aquí -->

<!-- Usar ModalForm para crear o editar elementos -->
<ModalForm
:inputs="formInputs"
:urlStore="urlStore"
:urlUpdate="urlUpdate"
:urlShow="urlShow"
:isEditMode="isEditMode"
:visible="visible"
:resetAfterClose="true"
:showRequestConfiguration="showRequestConfiguration"
:storeRequestConfiguration="storeRequestConfiguration"
:updateRequestConfiguration="updateRequestConfiguration"
:updateDefaultParams="updateDefaultParams"
@beforeUpdate="handleBeforeUpdate"
@afterUpdate="handleAfterUpdate"
@beforeStore="handleBeforeStore"
@afterStore="handleAfterStore"
@close="handleCloseModal"
/>

<!-- Otros componentes y contenido aquí -->
</div>
</template>


<script lang="ts" setup>
import { ref, reactive } from 'vue';

// Refs o reactives para las props
const formInputs = ref([
{
key: "nombre",
type: "text",
placeholder: "Nombre",
title: "Nombre",
value: null,
cols: 6,
validations: {
rules: {
required: true,
},
},
},
{
key: "contacto_id",
type: "select",
placeholder: "Contacto",
title: "Contacto",
label: 'nombre_completo',
value: null,
cols: 6,
options: contactos,
formatValue: (data:any) => {
return data?.id
},
validations: {
rules: {
required: true,
},
},
},
{
key: "domicilio_id",
type: "select",
placeholder: "Domicilio",
title: "Domicilio",
label: 'calleNumero',
value: null,
state: null,
cols: 6,
options: domicilios,
formatValue: (data:any) => {
return data?.id
},
validations: {
rules: {
required: true,
},
},
},
]);

const urlStore = 'www.api.com/store';
const urlUpdate = 'www.api.com/update';
const urlShow = 'www.api.com/show';
const isEditMode = false;
const visible = false;
const resetAfterClose = true;
const showRequestConfiguration = {
method: "GET",
headers: {
Authorization: 'Bearer SDKFK234KKAFDSKAN2332040afasdfimSDFN203MK',
},
};
const storeRequestConfiguration = {
method: "POST",
headers: {
Authorization: 'Bearer SDKFK234KKAFDSKAN2332040afasdfimSDFN203MK',
Accept: "application/json",
"Content-type": "application/json; charset=UTF-8",
},
};
const updateRequestConfiguration = {
method: "PATCH",
headers: {
Authorization: 'Bearer SDKFK234KKAFDSKAN2332040afasdfimSDFN203MK',
Accept: "application/json",
"Content-type": "application/json; charset=UTF-8",
},
};
const updateDefaultParams = { _method: "PATCH" };

</script>



Propiedades

El componente ModalForm acepta las siguientes propiedades:

PropiedadTipoValor por defectoDescripción
inputsArray de InputsRequeridoConfiguraciones de los campos de entrada para generar los elementos del formulario.
urlStoreStringRequeridoURL para almacenar (crear) nuevos elementos.
urlUpdateStringRequeridoURL para actualizar elementos existentes.
urlShowStringOpcionalURL para recuperar datos de un elemento existente antes de actualizarlo (modo edición).
isEditModeBooleanRequeridoIndica si el modal está en modo de edición (actualización) o creación.
visibleBooleanRequeridoControla la visibilidad del modal.
resetAfterCloseBooleanRequeridoIndica si se deben restablecer los valores y errores del formulario después de cerrar el modal.
showRequestConfigurationObjectOpcionalConfiguración adicional para solicitudes de visualización (GET) en urlShow.
storeRequestConfigurationObjectOpcionalConfiguración adicional para solicitudes de almacenamiento (POST) en urlStore.
updateRequestConfigurationObjectOpcionalConfiguración adicional para solicitudes de actualización (PATCH) en urlUpdate.
updateDefaultParamsObjectOpcionalParámetros adicionales que se envían junto con los datos de actualización.
modelStoreString'data'Nombre de la propiedad en la respuesta del servidor para el nuevo elemento creado.
modelUpdateString'data'Nombre de la propiedad en la respuesta del servidor para el elemento actualizado.
acceptButtonConfigObjectOpcionalConfiguración personalizada para el botón de aceptar en el formulario.
cancelButtonConfigObjectOpcionalConfiguración personalizada para el botón de cancelar en el formulario.

Eventos Emitidos

El componente ModalForm emite los siguientes eventos:

EventoParámetrosDescripción
afterStorevalue: anyEmitido después de almacenar (crear) un elemento.
beforeStorevalue: anyEmitido antes de almacenar (crear) un elemento.
beforeUpdatevalue: anyEmitido antes de actualizar un elemento.
afterUpdatevalue: anyEmitido después de actualizar un elemento.
closevalue: booleanEmitido al cerrar el modal.

Métodos

El componente ModalForm expone los siguientes métodos:

MétodoDescripción
hideModal()Oculta el modal y realiza acciones de reinicio si es necesario.
handleOnSubmit(data)Maneja el envío del formulario y llama a las funciones save o update.
save(data)Envia una solicitud para almacenar un nuevo elemento.
update(data)Envia una solicitud para actualizar un elemento existente.
getEntity()Obtiene los datos de un elemento existente para el modo de edición.
completeEntity(data)Completa los valores del formulario con los datos obtenidos de getEntity.
resetForm()Restablece los valores del formulario y los errores a sus estados iniciales.