Search by

macc / common-bundle

saurinlucas-santafegov

Servicios, comandos y clases compartidas para proyectos del Ministerio de Ambiente y Cambio Climático

Package info

github.com/saurinlucas-santafegov/macc-common-bundle

Type:symfony-bundle

pkg:composer/macc/common-bundle

Statistics

Installs: 28

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 1

v1.4.0 2026-09-25 14:32 UTC

This package is auto-updated.

Last update: 2026-09-25 14:35:50 UTC


README

Servicios, comandos y componentes de front compartidos para los proyectos del Ministerio de Ambiente y Cambio Climático.

Instalación

composer require macc/common-bundle

Frontend

Los assets se distribuyen dentro del propio bundle. En el proyecto hay que tener:

// package.json
{
    "dependencies": {
        "@macc/common": "file:vendor/macc/common-bundle/assets"
    }
}

Controller de Stimulus

Se registra a mano para usar el nombre dynamic-form que usa el form theme:

// assets/bootstrap.js
import DynamicFormController from '@macc/common/controllers/dynamic-form-controller';

export const app = startStimulusApp(/* ... */);
app.register('dynamic-form', DynamicFormController);

Cualquier formulario con {{ stimulus_controller('dynamic-form') }} inicializa colecciones, select2 ajax, selector de localidades y dependencias entre campos.

API

import { FormCollection, initFormPlugins, Select2Field, LocalidadSelector,
         DataDependant, findInClosestScope, findAllInClosestScope } from '@macc/common';
  • initFormPlugins(root, events): inicializa todos los plugins dentro de root. Es lo que usa el controller al conectar y FormCollection al insertar un item nuevo.
  • FormCollection: colecciones de Symfony con alta/baja, anidamiento y addFormFromEntity() para precargar un item desde una entidad.
  • Select2Field: select2 con origen ajax (espera respuesta Hydra: { member: [{id, text}] }).
  • LocalidadSelector: encadena provincia → departamento → localidad. Endpoints por defecto api/private/provincias/{id}/departamentos y api/private/departamentos/{id}/lugares, sobreescribibles con data-departamentos-url / data-lugares-url.
  • DataDependant: muestra/oculta o habilita/deshabilita un elemento según el valor de otro campo.