npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

gooseform

v0.1.1

Published

![Homepage](https://raw.githubusercontent.com/RiccardoRiggi/gooseform/main/screenshots/goose-form.png)

Downloads

2

Readme

Goose Form

"Alla Goose più coraggiosa che io conosca"

Homepage

Goose Form è un generatore dinamico di form realizzato in React. Mediante un oggetto JSON in ingresso opportunamente valorizzato, restituirà in uscita un form con tutti i campi richiesti, controlli di validazione e regole di visibilità. Oltre a questo, è possibile specificare anche la sorgente dati per generare form precompilati e l'endpoint di destinazione al quale inviare tutte le informazioni. Di seguito è presente la documentazione che illustra tutte le funzionalità del progetto. Sono disponibili i componenti Goose Form BE e Goose Form Manager per agevolare e velocizzare la creazione dei form.


Funzionamento

Il concetto fondamentale di Goose Form è quello di "identificativo". Ogni dato che vogliamo rappresentare deve avere un identificativo univoco scritto in camelCase ("nomeUtente", "dataDiNascita", "colorePreferito"). Le informazioni viaggeranno mediante la logica "Chiave/Valore". Esiste un oggetto di riferimento chiamato GooseKeyValue. Tuttavia l'applicazione non è in grado di gestire un nested JSON.


Componenti

GooseForm

GooseForm è l'oggetto contenitore di tutti i componenti, prende in input il JSON di configurazione e restituisce un form completo come descritto nel paragrafo introduttivo.

| Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |formId|String|Identificativo univoco del form| |title|String|Titolo del form| |icon|String|Nome basato su Font Awesome dell'icona presente in alto a sinistra del form| |sendButton|GooseButton|Pulsante di submit del form| |resetButton|GooseButton|Pulsante di reset del form| |description|String|Descrizione del form| |popup|GoosePopup|Icona con popup per poter inserire informazioni utili alla compilazione del form| |destinationUrl|GooseHttpRequest|Contiene le informazioni per invocare l'endpoint di destinazione al quale inviare i dati del form| |originUrl|GooseHttpRequest|Contiene le informazioni per accedere alla sorgente dati per generare form precompilati| |components|List< GooseComponent >|Lista dei campi presenti all'interno del form| |controls|List< GooseControl >|Lista dei controlli di validazione| |renders|List< GooseRender >|Lista delle regole di render condizionale dei componenti del form|

Oggetto JSON di esempio:
{
  "formId": "formId",
  "title": "Titolo del form",
  "icon": "fas fa-feather-alt",
  "sendButton": {...},
  "resetButton": {...},
  "description": "Descrizione del form",
  "popup": {...},
  "autocomplete": true,
  "destinationUrl": {...},
  "originUrl": {...},
  "components": [{...}],
  "controls": [{...}],
  "renders": [{...}]
}

Form precompilato

Goose Form, tramite l'oggetto originUrl di tipo GooseHttpRequest consente di leggere i dati in formato JSON (no nested JSON) da un endpoint e mostrarli all'interno del form. Il nome dell'attributo del JSON deve corrispondere a quello dell'identificativo del campo.

Oggetto JSON di esempio:
{
  "cognome": "Riggi",
  "colorePreferito": "blu",
  "nome": "Riccardo",
  "dataDiNascita": "2000-06-12"
}

Form submit

L'oggetto destinationUrl di tipo GooseHttpRequest consente di inviare sottoforma di JSON i dati del form ad uno specifico endpoint. I campi nascosti o disabilitati non verranno inviati. Verrà mostrato un messaggio di success se l'enpoint restituirà un codice HTTP di tipo 2xx, altrimenti apparirà un messaggio di error.

Oggetto JSON di esempio:
{
  "cognome": "Riggi",
  "colorePreferito": "blu",
  "nome": "Riccardo",
  "dataDiNascita": "2000-06-12"
}

Esempio Dati Ricevuti Lato Server


GooseTooltip

GooseTooltip è una semplice icona che, al passaggio del mouse, mostra una descrizione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |icon|String|Nome basato su Font Awesome dell'icona| |description|String|Testo del tooltip|

Oggetto JSON di esempio:
{
    "icon": "fas fa-feather-alt",
    "description": "Esempio di descrizione"
}

GoosePopup

GoosePopup è un'icona che, se premuta, mostra un popup con un titolo e una descrizione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |icon|String|Nome basato su Font Awesome dell'icona| |textTooltip|String|Testo del tooltip| |title|String|Titolo del popup| |description|String|Testo del popup|

Oggetto JSON di esempio:
{
    "icon": "fas fa-feather-alt",
    "textTooltip": "Esempio di testo tooltip",
    "title": "Titolo popup",
    "description": "Esempio di descrizione"
}

GooseButton

GooseButton è semplicemente un pulsante con titolo ed icona | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |icon|String|Nome basato su Font Awesome dell'icona| |title|String|Titolo del pulsante|

Oggetto JSON di esempio:
{
    "title": "Invia",
    "icon": "fas fa-feather-alt"
}

GooseHttpRequest

GooseHttpRequest è l'oggetto che permette di far eseguire chiamate HTTP a GooseForm e ai componenti che necessitano di recuperare i valori dinamicamente

| Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |url|String|Indirizzo dell'endpoint| |method|String|Metodo HTTP| |headers|List < GooseKeyValue>|Lista chiave/valore degli header necessari per chiamare l'endpoint| |body|String|Body della chiamata|

Oggetto JSON di esempio:
{
    "url": "http://localhost:8080/gooseform/documentazione/destinazione/esempioUno",
    "method": "POST",
    "headers": [
      {
        "key": "HEADER_1",
        "value": "VALORE_1"
      },
      {
        "key": "HEADER_2",
        "value": "VALORE_2"
      }
    ],
    "body": null
}

GooseComponent

GooseComponent è l'oggetto che rappresenta ciascun componente del form, contiene degli attributi comuni a tutti i componenti e altri specifici che variano in base al type.

Elenco dei type:
[
  "GOOSE_TEXT_AREA",
  "GOOSE_SELECT",
  "GOOSE_LINKED_SELECT",
  "GOOSE_DATA_LIST",
  "GOOSE_TEXT_FIELD",
  "GOOSE_PASSWORD_FIELD",
  "GOOSE_NUMBER_FIELD",
  "GOOSE_RADIO",
  "GOOSE_CHECKBOX",
  "GOOSE_EMAIL_FIELD",
  "GOOSE_DATE_FIELD",
  "GOOSE_DATE_TIME_FIELD",
  "GOOSE_MONTH_FIELD",
  "GOOSE_WEEK_FIELD",
  "GOOSE_TIME_FIELD",
  "GOOSE_TEL_FIELD",
  "GOOSE_URL_FIELD",
  "GOOSE_COLOR_FIELD",
  "GOOSE_RANGE_FIELD"
]

| Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |formId|String|Identificativo univoco del form| |id|String|Identificativo univoco del componente del form| |type|String|Indica il tipo specifico del componente| |label|String|Etichetta del componente| |widthXl|String|Larghezza del componente (vedi sistema di col di Bootstrap)| |widthLg|String|Larghezza del componente (vedi sistema di col di Bootstrap)| |widthMd|String|Larghezza del componente (vedi sistema di col di Bootstrap)| |widthSm|String|Larghezza del componente (vedi sistema di col di Bootstrap)| |width|String|Larghezza del componente (vedi sistema di col di Bootstrap)| |settings|Object|Varia in base al type, contiene gli attributi specifici del determinato componente| |tooltip|GooseTooltip|Tooltip relativo al componente| |popup|GoosePopup|Popup relativo al componente| |requiredMark|Boolean|Mostra l'asterisco rosso sul componente (solo graficamente)|

Oggetto JSON di esempio:
{
    "formId": "idForm",
    "id": "cognome",
    "type": "GOOSE_TEXT_FIELD",
    "label": "Cognome",
    "widthXl": "12",
    "widthLg": "12",
    "widthMd": "12",
    "widthSm": "12",
    "width": "12",
    "setting": {...},
    "tooltip": {...},
    "popup": {...},
    "requiredMark": true
}

Di seguito l'elenco di tutti i componenti implementati in Goose Form con i relativi attributi specifici


GooseTextArea

GooseTextArea | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |rows|Number|Indica il numero di righe di altezza della Text Area|

Oggetto JSON di esempio:
{
    "rows": 3
}

GooseSelect (Statica)

GooseSelectStatica In questa variante la lista delle opzioni viene inclusa all'interno del JSON di configurazione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |size|Number|Numero di opzioni mostrate| |values|List < GooseKeyValue >|Lista statica di opzioni con forma chiave/valore|

{
    "size": 1,
    "values": [
        {
            "key": "",
            "value": "Scegli..."
        },
        {
            "key": "GOOSE",
            "value": "GOOSE"
        },
        {
            "key": "PAPERA",
            "value": "PAPERA"
        },
        {
            "key": "ANATRA",
            "value": "ANATRA"
        },
        {
            "key": "OCA",
            "value": "OCA"
        },
        {
            "key": "PAPERELLA",
            "value": "PAPERELLA"
        }
    ],
}

GooseSelect (Dinamica)

GooseSelectStatica In questa variante la lista delle opzioni viene recuperata mediante chiamata HTTP ad un endpoint esterno | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |size|Number|Numero di opzioni mostrate| |dynamicValues|GooseHttpRequest|Oggetto che consente di chiamare un endpoint per recuperare le opzioni da mostrare| |keyName|String|Nome del campo definito chiave presente nella risposta dell'endpoint| |valueName|String|Nome del campo definito valore presente nella risposta dell'endpoint|

Oggetto JSON di esempio:
{
    "size": 1,
    "values": null,
    "dynamicValues": {
        "url": "http://localhost:8080/gooseform/documentazione/opzioni",
        "method": "POST",
        "headers": [
            {
                "key": "HEADER_1",
                "value": "VALORE CUSTOM HEADER"
            }
        ],
        "body": "CORPO DELLA CHIAMATA"
    },
    "keyName": "key",
    "valueName": "value"
}

GooseLinkedSelect

GooseLinkedSelect In questa variante di GooseSelect sono presenti due componenti: padre e figlio. Al variare del padre vengono aggiornate le opzioni del figlio. Le opzioni vengono recuperate via endpoint. Un esempio pratico è la classica coppia di select "Provincia" e "Comune": al variare della provincia viene mostrata la lista dei comuni corrispondenti. | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |size|Number|Numero di opzioni mostrate| |dynamicValues|GooseHttpRequest|Oggetto che consente di chiamare un endpoint per recuperare le opzioni da mostrare| |keyName|String|Nome del campo definito chiave presente nella risposta dell'endpoint| |valueName|String|Nome del campo definito valore presente nella risposta dell'endpoint| |idLinkedSelectPadre|String|Contiene l'identificativo del padre a cui fa riferimento| |idLinkedSelectFiglia|String|Contiene l'identificativo del figlio a cui fa riferimento|

Oggetto JSON di esempio:
{
    "size": 1,
    "values": null,
    "dynamicValues": {
        "url": "http://localhost:8080/gooseform/documentazione/opzioni",
        "method": "POST",
        "headers": [
            {
                "key": "HEADER_1",
                "value": "VALORE CUSTOM HEADER"
            }
        ],
        "body": "CORPO DELLA CHIAMATA"
    },
    "keyName": "key",
    "valueName": "value",
    "idLinkedSelectPadre": null,
    "idLinkedSelectFiglia": "gooseLinkedSelectFiglia"
}

GooseDataList (Statica)

GooseDataListStatica In questa variante la lista dei suggerimenti viene inclusa all'interno del JSON di configurazione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo| |values|List < GooseKeyValue >|Lista statica di suggerimenti con forma chiave/valore|

Oggetto JSON di esempio:
{
    "name": "gooseDataListStatica",
    "placeholder": "Scegli valore",
    "disabled": false,
    "readonly": false,
    "autofocus": true,
    "values": [
        {
            "key": "unoStatico",
            "value": "Uno Statico"
        },
        {
            "key": "dueStatico",
            "value": "Due Statico"
        },
        {
            "key": "treStatico",
            "value": "Tre Statico"
        },
        {
            "key": "quattroStatico",
            "value": "Quattro Statico"
        },
        {
            "key": "cinqueStatico",
            "value": "Cinque Statico"
        }
    ],
    "dynamicValues": null,
    "keyName": null,
    "valueName": null
}

GooseDataList (Dinamica)

GooseDataListDinamica In questa variante la lista dei suggerimenti viene recuperata mediante chiamata HTTP ad un endpoint esterno | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo| |dynamicValues|GooseHttpRequest|Oggetto che consente di chiamare un endpoint per recuperare i suggerimenti da mostrare| |keyName|String|Nome del campo definito chiave presente nella risposta dell'endpoint| |valueName|String|Nome del campo definito valore presente nella risposta dell'endpoint|

Oggetto JSON di esempio:
{
    "name": "gooseDataListDinamica",
    "placeholder": "Scegli valore",
    "disabled": false,
    "readonly": false,
    "autofocus": true,
    "values": null,
    "dynamicValues": {
        "url": "http://localhost:8080/gooseform/documentazione/opzioniDue",
        "method": "POST",
        "headers": [
            {
                "key": "HEADER_2",
                "value": "VALORE NUOVO HEADER"
            }
        ],
        "body": "CORPO DELLA CHIAMATA DUE"
    },
    "keyName": "chiave",
    "valueName": "valore"
}

GooseTextField

GooseTextField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo|

Oggetto JSON di esempio:
{
    "name": "gooseTextField",
    "placeholder": "Inserisci un testo...",
    "disabled": false,
    "readonly": false,
    "autofocus": false
}

GoosePasswordField

GoosePasswordField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo|

Oggetto JSON di esempio:
{
    "name": "goosePasswordField",
    "placeholder": "Inserisci la password...",
    "disabled": false,
    "readonly": false,
    "autofocus": false
}

GooseNumberField

GooseNumberField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo| |steps|Number|Numero di salti tra un numero e l'altro|

Oggetto JSON di esempio:
{
    "name": "gooseNumberField",
    "placeholder": "Inserisci un numero...",
    "disabled": false,
    "readonly": false,
    "autofocus": false,
    "steps":2
}

GooseRadio (Statici)

GooseRadio In questa variante l'elenco dei radio viene incluso all'interno del JSON di configurazione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |size|Number|Numero di opzioni mostrate| |values|List < GooseKeyValue >|Lista statica di opzioni con forma chiave/valore| |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

{
    "name": null,
    "disabled": false,
    "readonly": false,
    "values": [
        {
            "key": "unoStatico",
            "value": "Uno Statico"
        },
        {
            "key": "dueStatico",
            "value": "Due Statico"
        },
        {
            "key": "treStatico",
            "value": "Tre Statico"
        },
        {
            "key": "quattroStatico",
            "value": "Quattro Statico"
        },
        {
            "key": "cinqueStatico",
            "value": "Cinque Statico"
        }
    ],
    "dynamicValues": null,
    "keyName": null,
    "valueName": null
}

GooseRadio (Dinamici)

GooseRadio In questa variante l'elenco dei radio viene incluso all'interno del JSON di configurazione | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |size|Number|Numero di opzioni mostrate| |dynamicValues|GooseHttpRequest|Oggetto che consente di chiamare un endpoint per recuperare le opzioni da mostrare| |keyName|String|Nome del campo definito chiave presente nella risposta dell'endpoint| |valueName|String|Nome del campo definito valore presente nella risposta dell'endpoint| |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

{
    "name": null,
    "disabled": false,
    "readonly": false,
    "values": null,
    "dynamicValues": {
        "url": "http://localhost:8080/gooseform/documentazione/opzioni",
        "method": "POST",
        "headers": [
            {
                "key": "HEADER_1",
                "value": "VALORE CUSTOM HEADER"
            }
        ],
        "body": "CORPO DELLA CHIAMATA"
    },
    "keyName": "key",
    "valueName": "value"
}

GooseCheckbox

GooseCheckbox | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseCheckbox",
    "disabled": false,
    "readonly": false,
}

GooseEmailField

GooseEmailField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo|

Oggetto JSON di esempio:
{
    "name": "gooseEmailField",
    "placeholder": "Inserisci il tuo indirizzo email...",
    "disabled": false,
    "readonly": false,
    "autofocus": false
}

GooseColorField

GooseColorField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseColorField",
    "disabled": false,
    "readonly": false,
}

GooseDateField

GooseDateField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseDateField",
    "disabled": false,
    "readonly": false,
}

GooseDateTimeField

GooseDateTimeField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseDateTimeField",
    "disabled": false,
    "readonly": false,
}

GooseMonthField

GooseMonthField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseMonthField",
    "disabled": false,
    "readonly": false,
}

GooseRangeField

GooseRangeField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo| |steps|Number|Numero di salti tra un numero e l'altro| |min|Number|Valore minimo| |max|Number|Valore massimo|

Oggetto JSON di esempio:
{
    "name": "gooseRangeField",
    "disabled": false,
    "readonly": false,
    "min": "-20",
    "max": "20",
    "step": "2"
}

GooseTelField

GooseTelField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo|

Oggetto JSON di esempio:
{
    "name": "gooseTelField",
    "placeholder": "Inserisci un numero di telefono...",
    "disabled": false,
    "readonly": false,
    "autofocus": false
}

GooseTimeField

GooseTimeField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseTimeField",
    "disabled": false,
    "readonly": false,
}

GooseUrlField

GooseUrlField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |placeholder|String|Segnaposto della casella di testo| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura| |autofocus|Boolean|Sposta il focus del cursore su questo determinato campo|

Oggetto JSON di esempio:
{
    "name": "gooseUrlField",
    "placeholder": "Inserisci un indirizzo web...",
    "disabled": false,
    "readonly": false,
    "autofocus": false
}

GooseWeekField

GooseWeekField | Nome | Tipo | Descrizione | | ----------- | ----------- | ----------- | |name|String|Nome (uguale all'id)| |disabled|Boolean|Disabilita il campo| |readonly|Boolean|Imposta il campo in modalità sola lettura|

Oggetto JSON di esempio:
{
    "name": "gooseWeekField",
    "disabled": false,
    "readonly": false,
}

Controlli

Sono disponibili diversi controlli di validazione lato client che possono essere raggrupati in "STANDARD" e "COMPLEX". I primi confrontano il valore dell'oggetto al quale fanno riferimento con un valore statico impostato nella configurazione, i secondi lo confrontano con il valore di un altro elemento del form. Per ogni controllo è possibile impostare un messaggio di errore personalizzato.

GooseStandardControl

Oggetto JSON di esempio:
{
    "type": "STANDARD",
    "detail": {
        "idComponentA": "nome",
        "type": "REQUIRED",
        "referenceValue": null,
        "referenceValues": null,
        "errorMessage": "Il campo Nome è richiesto"
    }
}

Questo controllo ha come riferimento un componente "A", un valore di rifermento, oppure una lista di valori di riferimento, da confrontare, un messaggio di errore personalizzato e un tipo. Di seguito i tipi di controlli "STANDARD" disponibili:

| Identificativo | Descrizione | | ----------- | ----------- | | REQUIRED | Rende il campo obbligatorio | | EQUAL | Verifica che il campo sia uguale ad un determinato valore | | NOT_EQUAL | Verifica che il campo sia diverso da un determinato valore | | PATTERN | Verifica che il campo rispetti una determinata Regex | | IN | Verifica che il campo sia compreso in un insieme di determinati valori | | NOT_IN | Verifica che il campo sia diverso da un insieme di determinati valori | | MIN_TEXT | Verifica che la lunghezza del testo inserito sia superiore ad un determinato valore | | MAX_TEXT | Verifica che la lunghezza del testo inserito sia inferiore ad un determinato valore | | MIN_NUM | Verifica che il numero inserito sia superiore ad un determinato numero | | MAX_NUM | Verifica che il numero inserito sia inferiore ad un determinato numero |

GooseComplexControl

Oggetto JSON di esempio:
{
    "type": "COMPLEX",
    "detail": {
        "idComponentA": "password",
        "idComponentB": "confermaPassword",
        "type": "EQUAL",
        "errorMessage": "Le due password non corrispondono"
    }
}

Questo controllo ha come riferimento un componente "A", un componente "B", un messaggio di errore personalizzato e un tipo. Di seguito i tipi di controlli "COMPLEX" disponibili:

| Identificativo | Descrizione | | ----------- | ----------- | | EQUAL | Verifica che il campo "A" sia uguale al campo "B" | | NOT_EQUAL | Verifica che il campo "A" sia diverso dal campo "B" | | MIN | Verifica che il campo "A" sia maggiore del campo "B" | | MAX | Verifica che il campo "A" sia minore del campo "B" |


Render condizionale

Sono disponibili dei "Render condizionali" che consentono, al verificarsi di opportune condizioni, di nascondere o disabilitare un determinato campo. Esistono due tipi di render: "SIMPLE_RENDER" e "COMPLEX_RENDER". Il primo confronta il valore con un valore statico, il secondo con un valore di un altro determinato elemento del form.

GooseSimpleRenderConditional

Oggetto JSON di esempio:
{
    "type": "SIMPLE_RENDER",
    "detail": {
        "idComponentA": "a",
        "idComponentB": "b",
        "type": "HIDE_B_IF_A_EQUAL_X",
        "value": "GOOSE"
    }
}

Il "SIMPLE_RENDER" ha un componente "B" che verrà nascosto o disabilitato se il componente "A", confrontato con il valore di riferimento, darà esito positivo. Di seguito i tipi di "SIMPLE_RENDER":

| Identificativo | Descrizione |
| ----------- | ----------- | | HIDE_B_IF_A_EQUAL_X | Nascondi "B" se "A" è uguale ad un determinato valore | | DISABLED_B_IF_A_EQUAL_X | Disabilita "B" se "A" è uguale ad un determinato valore | | HIDE_B_IF_A_NOT_EQUAL_X | Nascondi "B" se "A" è diverso da un determinato valore | | DISABLE_B_IF_A_NOT_EQUAL_X | Disabilita "B" se "A" è diverso da un determinato valore | | HIDE_B_IF_A_MIN_X | Nascondi "B" se "A" è minore di un determinato valore | | DISABLE_B_IF_A_MIN_X | Disabilita "B" se "A" è minore di un determinato valore | | HIDE_B_IF_A_MAX_X | Nascondi "B" se "A" è maggiore di un determinato valore | | DISABLE_B_IF_A_MAX_X | Disabilita "B" se "A" è maggiore di un determinato valore |

GooseComplexRenderConditional

Oggetto JSON di esempio:
{
    "type": "COMPLEX_RENDER",
    "detail": {
        "idComponentA": "a",
        "idComponentB": "b",
        "type": "HIDE_C_IF_A_EQUAL_B",
        "idComponentC": "c"
    }
}

Il "COMPLEX_RENDER" ha un componente "C" che verrà nascosto o disabilitato se il componente "A", confrontato con il componente "B", darà esito positivo. Di seguito i tipi di "COMPLEX_RENDER":

| Identificativo | Descrizione |
| ----------- | ----------- | | HIDE_C_IF_A_EQUAL_B | Nascondi "B" se "A" è uguale a "B" | | DISABLED_C_IF_A_EQUAL_B | Disabilita "B" se "A" è uguale a "B" | | HIDE_C_IF_A__NOT_EQUAL_B | Nascondi "B" se "A" è diverso da "B" | | DISABLE_C_IF_A_NOT_EQUAL_B | Disabilita "B" se "A" è diverso da "B" | | HIDE_C_IF_A_MIN_B | Nascondi "B" se "A" è minore di "B" | | DISABLE_C_IF_A_MIN_B | Disabilita "B" se "A" è minore di "B" | | HIDE_C_IF_A_MAX_B | Nascondi "B" se "A" è maggiore di "B" | | DISABLE_C_IF_A_MAX_B | Disabilita "B" se "A" è maggiore di "B" |


Bom / Diba

SB Admin 2 (Tema basato su Bootstrap 4)

Font Awesome

React 18

Redux 7

React Router 6

Axios

react-markdown

remark-gfm

Favicon e logo


Licenza

Il codice sorgente da me scritto viene rilasciato con licenza MIT, framework, temi e librerie di terze parti mantengono le loro relative licenze.