• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
noche

noche

selectizeInput

Public
Like
selectizeInput
Home
Code
8
backend
4
examples
shared
2
.vtignore
AGENTS.md
README.md
deno.json
H
selectizeInput.http.ts
Environment variables
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
Code
/
Search
README.md

selectizeInput

Web Val: HTTP real, query params, body JSON, respuesta JSON con schema estable. Pensado para escalar a UI + API.

Flujo:

R / Python  →  Web Val (HTTP real)  →  JSON (schema estable)  →  Widget reutilizable

Web Val

  • HTTP real: GET y POST al val (URL web de Val Town, no api.val.town/v1/run/...).
  • Query params: GET con ?inputId=...&choices=...&selected=...&min_items=...&max_items=... (choices y selected en JSON string).
  • Body JSON: POST con el mismo contrato en el body.
  • Respuesta: siempre JSON (no HTML). El widget se renderiza donde consumas ese JSON (R, Python, UI, etc.).

Rutas

MétodoRutaUso
GET/API con query params
POST/API con body JSON
GET/api/selectizeMismo contrato (escalable)
POST/api/selectizeMismo contrato (escalable)

Contrato de entrada (R / Python)

CampoTipoRequeridoDescripción
inputIdstring | nullNoId del control (default: "selectize")
choicesver abajoSíVector, lista de {value, label?}, o diccionario nombrado
selectedstring | string[] | nullNoValor o valores seleccionados (default: [])
min_itemsnumber | nullNoMínimo de ítems (default: 0)
max_itemsnumber | nullNoMáximo (default: número de opciones)

Formas de choices: vector ["a","b"], objetos [{value:"a",label:"A"}], o dict {"a":"A","b":"B"}. Se tolera NULL/None en opcionales.

Schema estable de respuesta (JSON)

Éxito (200):

{ "ok": true, "data": { "inputId": "string", "options": [ { "value": "string", "label": "string", "selected": true } ], "min_items": 0, "max_items": 3 } }

Error (400):

{ "ok": false, "error": { "code": "INVALID_SELECTION", "message": "Selected value(s) not in choices: ..." } }

Códigos de error: MIN_MAX_INCOHERENT, MAX_EXCEEDS_OPTIONS, INVALID_SELECTION, BELOW_MIN_ITEMS, ABOVE_MAX_ITEMS, PARSE_ERROR, MISSING_CHOICES, INVALID_BODY.

Ejemplo R

base <- "https://TU_USUARIO-selectizeInput.web.val.run" body <- list( inputId = "mi_selector", choices = list(a = "Opción A", b = "Opción B", c = "Opción C"), selected = c("a", "b"), min_items = 1L, max_items = 3L ) res <- httr::POST(paste0(base, "/"), body = body, encode = "json") json <- httr::content(res, "parsed") # json$ok == TRUE → json$data (inputId, options, min_items, max_items) # json$ok == FALSE → json$error (code, message) # Con json$data puedes renderizar el widget donde quieras

Ejemplo Python

import requests base = "https://TU_USUARIO-selectizeInput.web.val.run" payload = { "inputId": "mi_selector", "choices": {"a": "Opción A", "b": "Opción B", "c": "Opción C"}, "selected": ["a", "b"], "min_items": 1, "max_items": 3, } r = requests.post(f"{base}/", json=payload) data = r.json() # data["ok"] → data["data"] (inputId, options, min_items, max_items) # data["ok"] == False → data["error"] (code, message)

Estructura del repo

  • selectizeInput.http.ts: Web Val autocontenido (sin imports relativos; único archivo que sube Val Town).
  • shared/types.ts: Contrato y modelos internos (desarrollo local).
  • shared/api-schema.ts: Schema estable de la respuesta API (desarrollo local).
  • backend/: Normalización, validación, render (desarrollo local; el val inlined todo en un solo archivo).

Escalar a UI + API

El mismo endpoint devuelve JSON. Puedes:

  • Consumir desde R/Python y construir tu propio widget con data.options, data.inputId, etc.
  • Añadir después una ruta (ej. /widget o /ui) que devuelva HTML generado a partir del mismo flujo, o un front que llame a / o /api/selectize y renderice con el JSON.
Code
backendexamplesshared.vtignoreAGENTS.mdREADME.mddeno.json
H
selectizeInput.http.ts
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.