{ "$schema": "../../schemas/code-crispies-module-schema.json", "id": "html-datalist", "title": "Datalist", "description": "Proporciona sugerencias para campos de texto sin JavaScript", "mode": "html", "difficulty": "beginner", "lessons": [ { "id": "datalist-basic", "title": "Campo con sugerencias", "description": "El elemento <datalist> proporciona sugerencias de autocompletado para campos. Conéctalo usando el atributo list en el input que coincida con el id del datalist.

Los usuarios pueden escribir libremente - ¡las sugerencias son solo ayudas!", "task": "Crea un selector de navegador:
1. Añade un <label> que diga Navegador:
2. Añade un <input> con list=\"browsers\"
3. Añade un <datalist id=\"browsers\"> con opciones para Chrome, Firefox y Safari", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui; padding: 20px; } label { display: block; margin-bottom: 8px; font-weight: 500; } input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; } input:focus { outline: 2px solid #1976d2; border-color: transparent; }", "sandboxCSS": "", "initialCode": "", "solution": "\n\n\n ", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "datalist", "message": "Añade un elemento <datalist>" }, { "type": "attribute_value", "value": { "selector": "input", "attr": "list", "value": "browsers" }, "message": "Conecta el input al datalist usando list=\"browsers\"" }, { "type": "element_count", "value": { "selector": "option", "min": 3 }, "message": "Añade al menos 3 elementos <option> dentro de <datalist>" }, { "type": "element_exists", "value": "label", "message": "Añade un <label> para el campo" } ] }, { "id": "datalist-countries", "title": "Selector de países", "description": "Los datalist funcionan genial para listas largas como países. Los usuarios pueden escribir para filtrar sugerencias al instante.

El atributo value es lo que se ingresa, y puedes añadir texto de visualización después.", "task": "Crea un campo de país:
1. Añade un <label> que diga País:
2. Añade un <input> con list=\"countries\"
3. Añade un <datalist id=\"countries\"> con al menos 4 opciones de países", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui; padding: 30px; background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%); min-height: 100vh; margin: 0; box-sizing: border-box; } label { display: block; margin-bottom: 10px; font-weight: 600; color: #00695c; } input { width: 100%; padding: 12px 15px; border: 2px solid #26a69a; border-radius: 8px; font-size: 16px; background: white; } input:focus { outline: none; border-color: #00695c; box-shadow: 0 0 0 3px rgba(38,166,154,0.2); }", "sandboxCSS": "", "initialCode": "", "solution": "\n\n\n ", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "datalist", "message": "Añade un elemento <datalist>" }, { "type": "attribute_value", "value": { "selector": "datalist", "attr": "id", "value": "countries" }, "message": "Establece id=\"countries\" en el datalist" }, { "type": "attribute_value", "value": { "selector": "input", "attr": "list", "value": "countries" }, "message": "Conecta el input usando list=\"countries\"" }, { "type": "element_count", "value": { "selector": "option", "min": 4 }, "message": "Añade al menos 4 opciones de países" } ] } ] }