String
La propriété string est le type de champ le plus polyvalent dans FireCMS. Utilisez-la pour tout, des simples champs de texte aux téléchargements de fichiers, éditeurs de texte riche et menus déroulants. Lors de la construction d’un panneau d’administration pour votre application Firebase, les propriétés string vous permettent de créer :
- Champs de texte : Noms, titres, descriptions
- Menus déroulants de sélection : Champs de statut, catégories, options
- Téléchargement de fichiers : Images, documents (stockés dans Firebase Storage)
- Éditeurs markdown : Contenu riche avec formatage
- Champs email/URL : Types d’entrée validés
import { buildProperty } from "@firecms/core";
const nameProperty = buildProperty({ name: "Name", description: "Basic string property with validation", validation: { required: true }, dataType: "string"});Vous pouvez spécifier une configuration StorageMeta. Elle est utilisée pour
indiquer que cette chaîne fait référence à un chemin dans Google Cloud Storage.
mediaTypeType de média de cette référence, utilisé pour afficher l’aperçu.acceptedFilesType MIME de fichier pouvant être téléchargé vers cette référence. Notez que vous pouvez aussi utiliser la notation astérisque, doncimage/*accepte tout fichier image, et ainsi de suite.metadataMétadonnées spécifiques définies dans votre fichier téléchargé.fileNameVous pouvez utiliser cette prop pour personnaliser le nom de fichier téléchargé. Vous pouvez utiliser une fonction comme callback ou une chaîne où vous spécifiez des espaces réservés qui sont remplacés par les valeurs correspondantes.{file}- Nom complet du fichier{file.name}- Nom du fichier sans extension{file.ext}- Extension du fichier{rand}- Valeur aléatoire utilisée pour éviter les collisions de noms{entityId}- ID de l’entité{propertyKey}- ID de cette propriété{path}- Chemin de cette entité
storagePathChemin absolu dans votre bucket. Vous pouvez utiliser une fonction comme callback ou une chaîne où vous spécifiez des espaces réservés qui sont remplacés par les valeurs correspondantes.{file}- Nom complet du fichier{file.name}- Nom du fichier sans extension{file.ext}- Extension du fichier{rand}- Valeur aléatoire utilisée pour éviter les collisions de noms{entityId}- ID de l’entité{propertyKey}- ID de cette propriété{path}- Chemin de cette entité
includeBucketUrlLorsque défini àtrue, FireCMS stockera une URL de stockage complète au lieu uniquement du chemin de stockage. Pour Firebase Storage, c’est une URLgs://..., par ex.gs://my-bucket/path/to/file.png. Par défautfalse.storeUrlLorsque défini àtrue, ce flag indique que l’URL de téléchargement du fichier sera enregistrée dans Firestore au lieu du chemin Cloud Storage. Notez que l’URL générée peut utiliser un token qui, s’il est désactivé, peut rendre l’URL inutilisable et perdre la référence originale à Cloud Storage, il n’est donc pas recommandé d’utiliser ce flag. Par défautfalse.maxSizeTaille maximale du fichier en octets.processFileUtilisez ce callback pour traiter le fichier avant de le télécharger. Si vous retournezundefined, le fichier original est téléchargé.postProcessPost-traiter la valeur enregistrée (chemin de stockage, URL de stockage ou URL de téléchargement) après sa résolution.previewUrlFournir une URL d’aperçu personnalisée pour un nom de fichier donné.
Images : redimensionner/compresser avant le téléchargement
Section intitulée « Images : redimensionner/compresser avant le téléchargement »FireCMS supporte l’optimisation d’images côté client avant le téléchargement :
-
imageResize(recommandé) Configuration avancée de redimensionnement et recadrage d’images. Appliqué uniquement aux images (image/jpeg,image/png,image/webp).maxWidth,maxHeightmode:containoucoverformat:original,jpeg,png,webpquality: 0-100
-
imageCompression(déprécié) Redimensionnement/compression d’images hérité.
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 } }});Si la valeur de cette propriété est une URL, vous pouvez définir ce flag
à true pour ajouter un lien, ou l’un des types de média supportés pour rendre un
aperçu.
import { buildProperty } from "@firecms/core";
const amazonLinkProperty = buildProperty({ dataType: "string", name: "Amazon link", url: true});Vous pouvez aussi définir le type d’aperçu pour l’url : image, video ou audio :
import { buildProperty } from "@firecms/core";
const imageProperty = buildProperty({ name: "Image", dataType: "string", url: "image",});Si défini à true, ce champ sera validé comme une adresse email et
rendu avec un input spécifique aux emails. Utile pour les formulaires de contact,
profils utilisateurs ou tout champ devant contenir un email valide.
import { buildProperty } from "@firecms/core";
const emailProperty = buildProperty({ name: "Email", dataType: "string", email: true});userSelect
Section intitulée « userSelect »Cette propriété est utilisée pour indiquer que la chaîne est un ID utilisateur, et elle sera rendue comme un sélecteur d’utilisateur. Notez que l’ID utilisateur doit être celui utilisé dans votre fournisseur d’authentification, par ex. Firebase Auth. Vous pouvez aussi utiliser un property builder pour spécifier le chemin utilisateur dynamiquement basé sur d’autres valeurs de l’entité.
import { buildProperty } from "@firecms/core";
const assignedUserProperty = buildProperty({ name: "Assigned User", dataType: "string", userSelect: true});enumValues
Section intitulée « enumValues »Vous pouvez utiliser les valeurs enum en fournissant un map de valeurs exclusives possibles que la
propriété peut prendre, mappées à l’étiquette affichée dans le dropdown. Vous
pouvez utiliser un objet simple au format
value => label, ou au format value
=> EnumValueConfig si vous avez besoin de plus de
personnalisation (comme désactiver des options spécifiques ou assigner des couleurs). Si vous
avez besoin de garantir l’ordre des éléments, vous pouvez passer un Map au lieu d’un
objet simple.
import { buildProperty } from "@firecms/core";
const amazonLinkProperty = buildProperty({ dataType: "string", name: "Amazon link", enumValues: { "es": "Spanish", "de": "German", "en": "English", "it": "Italian", "fr": { id: "fr", label: "French", disabled: true } }});multiline
Section intitulée « multiline »Si cette propriété string est assez longue pour être affichée
dans un champ multi-lignes. Par défaut false. Si défini à true, le nombre
de lignes s’adapte au contenu.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Description", dataType: "string", multiline: true});clearable
Section intitulée « clearable »Ajoute une icône pour effacer la valeur et la définir à null. Par défaut false
markdown
Section intitulée « markdown »Si cette propriété string doit être affichée comme un champ markdown.
Si true, le champ est rendu comme un éditeur de texte qui supporte la
syntaxe de coloration markdown. Il inclut aussi un aperçu du résultat.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ dataType: "string", name: "Text", markdown: true});previewAsTag
Section intitulée « previewAsTag »Si cette chaîne doit être rendue comme un tag au lieu de simple texte.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Tags", description: "Example of generic array", dataType: "array", of: { dataType: "string", previewAsTag: true }});validation
Section intitulée « validation »requiredSi ce champ doit être obligatoire.requiredMessageMessage à afficher comme erreur de validation.uniqueLa valeur de ce champ doit être unique dans cette collection.uniqueInArraySi défini àtrue, l’utilisateur ne pourra avoir la valeur de cette propriété qu’une seule fois dans le parentArrayProperty. Fonctionne sur les propriétés enfants directes ou sur les enfants de premier niveau d’unMapProperty(si défini comme propriété.ofde l’ArrayProperty).lengthDéfinir une longueur requise pour la valeur string.minDéfinir une limite de longueur minimale pour la valeur string.maxDéfinir une limite de longueur maximale pour la valeur string.matchesFournir une regex arbitraire pour vérifier la valeur.emailValide la valeur comme une adresse email via une regex.urlValide la valeur comme une URL valide via une regex.trimTransforme les valeurs string en supprimant les espaces en début et fin.lowercaseTransforme la valeur string en minuscules.uppercaseTransforme la valeur string en majuscules.
En fonction de votre configuration, les widgets de champ de formulaire créés sont :
TextFieldBindingchamp de texte génériqueSelectFieldBindingsi lesenumValuessont définies dans la configuration du string, ce champ rend un select où chaque option est un chip coloré.StorageUploadFieldBindingla propriété a une configuration de stockage.MarkdownEditorFieldBinding.la propriété a une configuration markdown.
Liens :