String
La proprietà stringa è il tipo di campo più versatile in FireCMS. Usala per tutto, dai semplici input di testo ai caricamenti di file, agli editor di testo ricco e ai menu a discesa. Quando si crea un pannello admin per la propria app Firebase, le proprietà stringa permettono di creare:
- Campi di testo: Nomi, titoli, descrizioni
- Menu a discesa: Campi di stato, categorie, opzioni
- Caricamenti file: Immagini, documenti (archiviati in Firebase Storage)
- Editor Markdown: Contenuto ricco con formattazione
- Campi Email/URL: Tipi di input con validazione
import { buildProperty } from "@firecms/core";
const nameProperty = buildProperty({ name: "Nome", description: "Proprietà stringa di base con validazione", validation: { required: true }, dataType: "string"});storage
Sezione intitolata “storage”Puoi specificare una configurazione StorageMeta. Viene utilizzata per
indicare che questa stringa fa riferimento a un percorso in Google Cloud Storage.
mediaTypeTipo di media di questo riferimento, usato per visualizzare l’anteprima.acceptedFilesTipo MIME dei file che possono essere caricati in questo riferimento. Puoi usare la notazione asterisco, quindiimage/*accetta qualsiasi immagine.metadataMetadati specifici impostati nel file caricato.fileNamePuoi usare questa prop per personalizzare il nome del file caricato. Puoi usare una funzione come callback o una stringa con segnaposto:{file}- Nome completo del file{file.name}- Nome del file senza estensione{file.ext}- Estensione del file{rand}- Valore casuale per evitare collisioni di nomi{entityId}- ID dell’entità{propertyKey}- ID di questa proprietà{path}- Percorso di questa entità
storagePathPercorso assoluto nel tuo bucket. Puoi usare una funzione come callback o una stringa con segnaposto:{file}- Nome completo del file{file.name}- Nome del file senza estensione{file.ext}- Estensione del file{rand}- Valore casuale per evitare collisioni di nomi{entityId}- ID dell’entità{propertyKey}- ID di questa proprietà{path}- Percorso di questa entità
includeBucketUrlQuando impostato sutrue, FireCMS salverà un URL di archiviazione completo invece del solo percorso. Per Firebase Storage è un URLgs://..., es.gs://my-bucket/path/to/file.png. Defaultfalse.storeUrlQuando impostato sutrue, indica che l’URL di download del file verrà salvato in Firestore invece del percorso Cloud Storage. L’URL generato può usare un token che, se disabilitato, potrebbe renderlo inutilizzabile. Non è consigliato. Defaultfalse.maxSizeDimensione massima del file in byte.processFileUsa questo callback per elaborare il file prima del caricamento. Se restituisciundefined, viene caricato il file originale.postProcessElaborazione post-salvataggio del valore (percorso, URL o URL di download) dopo che è stato risolto.previewUrlFornisci un URL di anteprima personalizzato per un dato nome di file.
Immagini: ridimensiona/comprimi prima del caricamento
Sezione intitolata “Immagini: ridimensiona/comprimi prima del caricamento”FireCMS supporta l’ottimizzazione delle immagini lato client prima del caricamento:
-
imageResize(consigliato) Configurazione avanzata di ridimensionamento e ritaglio delle immagini. Si applica solo alle immagini (image/jpeg,image/png,image/webp).maxWidth,maxHeightmode:containocoverformat:original,jpeg,png,webpquality: 0-100
-
imageCompression(deprecato) Ridimensionamento/compressione immagini legacy.
import { buildProperty } from "@firecms/core";
const imageProperty = buildProperty({ dataType: "string", storage: { mediaType: "image", storagePath: (context) => { return "images"; }, acceptedFiles: ["image/*"], fileName: (context) => { return context.file.name; }, includeBucketUrl: true, imageResize: { maxWidth: 1200, maxHeight: 1200, mode: "cover", format: "webp", quality: 85 } }});Se il valore di questa proprietà è un URL, puoi impostare questo flag
su true per aggiungere un link, o uno dei tipi di media supportati per renderizzare un’anteprima.
import { buildProperty } from "@firecms/core";
const amazonLinkProperty = buildProperty({ dataType: "string", name: "Link Amazon", url: true});Puoi anche definire il tipo di anteprima per l’url: image, video o audio:
import { buildProperty } from "@firecms/core";
const imageProperty = buildProperty({ name: "Immagine", dataType: "string", url: "image",});Se impostato su true, questo campo verrà validato come indirizzo email e
renderizzato con un input specifico per email. Utile per moduli di contatto,
profili utente o qualsiasi campo che dovrebbe contenere un’email valida.
import { buildProperty } from "@firecms/core";
const emailProperty = buildProperty({ name: "Email", dataType: "string", email: true});userSelect
Sezione intitolata “userSelect”Questa proprietà indica che la stringa è un ID utente e verrà renderizzata come un selettore utente. L’ID utente deve essere quello usato nel tuo provider di autenticazione, es. Firebase Auth. Puoi anche usare un property builder per specificare il percorso utente dinamicamente.
import { buildProperty } from "@firecms/core";
const assignedUserProperty = buildProperty({ name: "Utente Assegnato", dataType: "string", userSelect: true});enumValues
Sezione intitolata “enumValues”Puoi usare i valori enum fornendo una mappa di possibili valori esclusivi che la
proprietà può assumere, mappati all’etichetta visualizzata nel menu a discesa.
Puoi usare un semplice oggetto con il formato valore => etichetta, o con il formato valore
=> EnumValueConfig per personalizzazione extra
(come disabilitare opzioni specifiche o assegnare colori). Se hai bisogno di garantire
l’ordine degli elementi, puoi passare una Map invece di un oggetto semplice.
import { buildProperty } from "@firecms/core";
const languageProperty = buildProperty({ dataType: "string", name: "Lingua", enumValues: { "es": "Spagnolo", "de": "Tedesco", "en": "Inglese", "it": "Italiano", "fr": { id: "fr", label: "Francese", disabled: true } }});multiline
Sezione intitolata “multiline”Questa proprietà stringa è abbastanza lunga da essere visualizzata
in un campo multiriga. Default false. Se impostato su true, il numero
di righe si adatta al contenuto.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Descrizione", dataType: "string", multiline: true});clearable
Sezione intitolata “clearable”Aggiunge un’icona per cancellare il valore e impostarlo a null. Default false
markdown
Sezione intitolata “markdown”Questa proprietà stringa deve essere visualizzata come campo markdown.
Se true, il campo viene renderizzato come editor di testo che supporta la
sintassi markdown con evidenziazione. Include anche un’anteprima del risultato.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ dataType: "string", name: "Testo", markdown: true});previewAsTag
Sezione intitolata “previewAsTag”Questa stringa deve essere renderizzata come tag invece che come semplice testo.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Tags", description: "Esempio di array generico", dataType: "array", of: { dataType: "string", previewAsTag: true }});validation
Sezione intitolata “validation”requiredQuesto campo deve essere obbligatorio.requiredMessageMessaggio da visualizzare come errore di validazione.uniqueIl valore di questo campo deve essere univoco in questa collezione.uniqueInArraySe impostato sutrue, l’utente potrà avere quel valore di proprietà solo una volta nelArrayPropertypadre.lengthImposta una lunghezza richiesta per il valore stringa.minImposta una lunghezza minima per il valore stringa.maxImposta una lunghezza massima per il valore stringa.matchesFornisci un regex arbitrario con cui confrontare il valore.emailValida il valore come indirizzo email tramite regex.urlValida il valore come URL valido tramite regex.trimTrasforma i valori stringa rimuovendo gli spazi iniziali e finali.lowercaseTrasforma il valore stringa in minuscolo.uppercaseTrasforma il valore stringa in maiuscolo.
In base alla configurazione, i widget del campo form creati sono:
TextFieldBindingcampo di testo genericoSelectFieldBindingseenumValuessono impostati, questo campo renderizza un select dove ogni opzione è un chip colorato.StorageUploadFieldBindingse la proprietà ha una configurazione di archiviazione.MarkdownEditorFieldBindingse la proprietà ha una configurazione markdown.
Link: