Slider
Quero um carrossel com slides editáveis. Qual é a implementação recomendada?Referência:
seu tema (adaptado do cookbook) + blocks/slider-slide/
Índice: Cookbooks
Contratos utilizados
- Section Contract
- Block Contract
- Fields
image,text,textarea,url @corvex/runtime— PUBLIC_EDITOR_INTEGRATION:SectionBlockCanvas,useSectionBlockCount,BlockChrome
Integração com o Editor (não é API de vitrine genérica)
useBuilderBlockEditLayout() sempre retorna false. Não ramifique carrossel vs. pilha. Use a mesma árvore no inspect, /preview e vitrine: SectionBlockCanvas + {children} direto.
Proibido: Children.toArray(children).map((child) => <div hidden>… — esse wrapper não é o pai dos slides; eles ficam todos visíveis e as setas caem no meio.
Para carrossel com lib npm (Flickity, Embla, Swiper), veja Bibliotecas de terceiros. Este cookbook usa apenas React + CSS.
Objetivo
templates/index.json (blocks + block_order). default no schema do block vale para cada slide novo. Sem imagem no setting, o block pode usar um gradiente. Não pinte banners no section.jsx quando children está vazio — theme-defaults.
Arquivos
Estado local por instância
- Duas sliders na mesma página = dois
indexindependentes (sem querySelector global). - Não desligue o carrossel no inspecionar.
Transform do track (runtime)
BlockChrome + .cx-block), não num wrapper em volta de cada child.
Slide block (settings)
image, text, textarea, url.
Comportamento no Editor
Leia também: Blocks e Slider cookbook.
Cuidados
useSectionBlockCount()— nãoChildren.count(children).useEffectcom cleanup no timer de autoplay.- CSS:
.cookbook-slider__track .cx-block { flex: 0 0 100%; }
Checklist
-
blocks.jsoncomslider-slide— semimport './blocks.json'e sem propriedade estática no componente - Nome no inspector só em
schema.json→name -
{children}direto noSectionBlockCanvas(semmap/hiddenpor child) -
useSectionBlockCount+BlockChromeem cada slide - Estado React local (sem DOM global)
- Empty state só com zero blocks (sem banners hardcoded)
- Slides iniciais no
templates/index.json, não no JSX -
corvex validatepassa
seu tema (adaptado do cookbook).