String
La propiedad string es el tipo de campo más versátil en FireCMS. Úsala para todo, desde simples entradas de texto hasta subidas de archivos, editores de texto enriquecido y listas desplegables. Al construir un panel de administración para tu aplicación Firebase, las propiedades string te permiten crear:
- Campos de texto: Nombres, títulos, descripciones
- Listas desplegables: Campos de estado, categorías, opciones
- Subidas de archivos: Imágenes, documentos (almacenados en Firebase Storage)
- Editores Markdown: Contenido enriquecido con formato
- Campos de email/URL: Tipos de entrada validados
import { buildProperty } from "@firecms/core";
const nameProperty = buildProperty({ name: "Nombre", description: "Propiedad string básica con validación", validation: { required: true }, dataType: "string"});storage
Sección titulada «storage»Puedes especificar una configuración StorageMeta. Se usa para
indicar que este string hace referencia a una ruta en Google Cloud Storage.
mediaTypeTipo de medio de esta referencia, usado para mostrar la vista previa.acceptedFilesTipos MIME de archivos que pueden subirse a esta referencia. También puedes usar la notación con asterisco, por ejemploimage/*acepta cualquier archivo de imagen, etc.metadataMetadatos específicos establecidos en tu archivo subido.fileNamePuedes usar este prop para personalizar el nombre del archivo subido. Puedes usar una función callback o una cadena donde especificas algunos marcadores de posición que se reemplazan con los valores correspondientes.{file}- Nombre completo del archivo{file.name}- Nombre del archivo sin extensión{file.ext}- Extensión del archivo{rand}- Valor aleatorio para evitar colisiones de nombres{entityId}- ID de la entidad{propertyKey}- ID de esta propiedad{path}- Ruta de esta entidad
storagePathRuta absoluta en tu bucket. Puedes usar una función callback o una cadena donde especificas algunos marcadores de posición que se reemplazan con los valores correspondientes.{file}- Nombre completo del archivo{file.name}- Nombre del archivo sin extensión{file.ext}- Extensión del archivo{rand}- Valor aleatorio para evitar colisiones de nombres{entityId}- ID de la entidad{propertyKey}- ID de esta propiedad{path}- Ruta de esta entidad
includeBucketUrlCuando se establece entrue, FireCMS almacenará una URL de almacenamiento completamente cualificada en lugar de solo la ruta de almacenamiento. Para Firebase Storage esta es una URLgs://..., por ejemplogs://mi-bucket/ruta/al/archivo.png. El valor predeterminado esfalse.storeUrlCuando se establece entrue, este indicador indica que la URL de descarga del archivo se guardará en Firestore en lugar de la ruta de Cloud Storage. Ten en cuenta que la URL generada puede usar un token que, si se deshabilita, puede inutilizar la URL y perder la referencia original a Cloud Storage, por lo que no se recomienda usar este indicador. El valor predeterminado esfalse.maxSizeTamaño máximo del archivo en bytes.processFileUsa este callback para procesar el archivo antes de subirlo. Si devuelvesundefined, se sube el archivo original.postProcessPost-procesa el valor guardado (ruta de almacenamiento, URL de almacenamiento o URL de descarga) después de que haya sido resuelto.previewUrlProporciona una URL de vista previa personalizada para un nombre de archivo dado.
Imágenes: redimensionar/comprimir antes de subir
Sección titulada «Imágenes: redimensionar/comprimir antes de subir»FireCMS admite la optimización de imágenes en el lado del cliente antes de subirlas:
-
imageResize(recomendado) Configuración avanzada de redimensionamiento y recorte de imágenes. Solo se aplica a imágenes (image/jpeg,image/png,image/webp).maxWidth,maxHeightmode:containocoverformat:original,jpeg,png,webpquality: 0-100
-
imageCompression(obsoleto) Redimensionamiento/compresión de imágenes heredado.
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 el valor de esta propiedad es una URL, puedes establecer este indicador
en true para añadir un enlace, o uno de los tipos de medios admitidos para renderizar una
vista previa.
import { buildProperty } from "@firecms/core";
const amazonLinkProperty = buildProperty({ dataType: "string", name: "Enlace de Amazon", url: true});También puedes definir el tipo de vista previa para la URL: image, video o audio:
import { buildProperty } from "@firecms/core";
const imageProperty = buildProperty({ name: "Imagen", dataType: "string", url: "image",});Si se establece en true, este campo se validará como una dirección de correo electrónico y
se renderizará con una entrada específica para email. Esto es útil para formularios de contacto,
perfiles de usuario o cualquier campo que deba contener un correo electrónico válido.
import { buildProperty } from "@firecms/core";
const emailProperty = buildProperty({ name: "Correo electrónico", dataType: "string", email: true});userSelect
Sección titulada «userSelect»Esta propiedad se usa para indicar que el string es un ID de usuario, y se renderizará como un selector de usuarios. Ten en cuenta que el ID de usuario debe ser el que se usa en tu proveedor de autenticación, por ejemplo Firebase Auth. También puedes usar un constructor de propiedades para especificar la ruta de usuario dinámicamente según otros valores de la entidad.
import { buildProperty } from "@firecms/core";
const assignedUserProperty = buildProperty({ name: "Usuario asignado", dataType: "string", userSelect: true});enumValues
Sección titulada «enumValues»Puedes usar los valores de enumeración proporcionando un mapa de posibles valores exclusivos que la
propiedad puede tomar, mapeados a la etiqueta que se muestra en el desplegable. Puedes
usar un objeto simple con el formato valor => etiqueta, o con el formato valor
=> EnumValueConfig si necesitas
personalización adicional, (como deshabilitar opciones específicas o asignar colores). Si
necesitas garantizar el orden de los elementos, puedes pasar un Map en lugar de un
objeto simple.
import { buildProperty } from "@firecms/core";
const amazonLinkProperty = buildProperty({ dataType: "string", name: "Enlace de Amazon", enumValues: { "es": "Español", "de": "Alemán", "en": "Inglés", "it": "Italiano", "fr": { id: "fr", label: "Francés", disabled: true } }});multiline
Sección titulada «multiline»¿Es esta propiedad string lo suficientemente larga como para mostrarse
en un campo de múltiples líneas? El valor predeterminado es false. Si se establece en true, el número
de líneas se adapta al contenido.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Descripción", dataType: "string", multiline: true});clearable
Sección titulada «clearable»Añade un icono para borrar el valor y establecerlo a null. El valor predeterminado es false.
markdown
Sección titulada «markdown»¿Debe mostrarse esta propiedad string como un campo markdown?
Si es true, el campo se renderiza como un editor de texto que admite el
resaltado de sintaxis markdown. También incluye una vista previa del resultado.
import { buildProperty } from "@firecms/core";
const property = buildProperty({ dataType: "string", name: "Texto", markdown: true});previewAsTag
Sección titulada «previewAsTag»¿Debe renderizarse este string como una etiqueta en lugar de solo texto?
import { buildProperty } from "@firecms/core";
const property = buildProperty({ name: "Etiquetas", description: "Ejemplo de array genérico", dataType: "array", of: { dataType: "string", previewAsTag: true }});validation
Sección titulada «validation»required¿Debe ser obligatorio este campo?requiredMessageMensaje que se mostrará como error de validación.uniqueEl valor de este campo debe ser único en esta colección.uniqueInArraySi se establece entrue, el usuario solo podrá tener el valor de esa propiedad una vez en elArrayPropertypadre. Funciona en propiedades hijas directas o en hijos de primer nivel de unaMapProperty(si se establece como la propiedad.ofdelArrayProperty).lengthEstablece una longitud requerida para el valor string.minEstablece un límite mínimo de longitud para el valor string.maxEstablece un límite máximo de longitud para el valor string.matchesProporciona una expresión regular arbitraria para validar el valor.emailValida el valor como una dirección de correo electrónico mediante una expresión regular.urlValida el valor como una URL válida mediante una expresión regular.trimTransforma los valores string eliminando los espacios en blanco al principio y al final.lowercaseTransforma el valor string a minúsculas.uppercaseTransforma el valor string a mayúsculas.
Según tu configuración, los widgets de campo de formulario que se crean son:
TextFieldBindingcampo de texto genéricoSelectFieldBindingsi se establecenenumValuesen la configuración del string, este campo renderiza un selector donde cada opción es una chip coloreada.StorageUploadFieldBindingla propiedad tiene una configuración de almacenamiento.MarkdownEditorFieldBinding.la propiedad tiene una configuración markdown.
Enlaces: