Oculte linhas que o comprador não deveria ver, renomeie linhas que soam mal e controle a ordem em que tudo renderiza, tudo sem tocar no que realmente está no carrinho.
Isso substitui o padrão antigo de ocultar elementos do carrinho com CSS ou style.display = 'none'. Um line transform é aplicado toda vez que o carrinho renderiza, então ele sobrevive a atualizações, re-renderizações e reaberturas do drawer.
Ocultar não é remover. Uma linha oculta permanece no carrinho do comprador, permanece no total e vai até o checkout; ela só não é desenhada no drawer. Ela some de getCart().items e de itemCount, então seu próprio código também deixa de vê-la. Se você quer que ela suma de verdade, use removeItem.
Coisas comuns que valem a pena ocultar:
Os quatro setters disponíveis em uma linha:
Um comparator tem o mesmo formato que Array.prototype.sort espera e executa depois de ocultar e renomear:
Retorne 0 para pares que não interessam. Os comparators se compõem como critérios de desempate, então o primeiro que retornar um valor diferente de zero decide aquele par, e retornar 0 passa a decisão para o próximo em vez de forçar uma ordem.
Ocultar um bloco inteiro, não uma linha
Um line transform atua sobre linhas do carrinho. Para mostrar configurações de bloco diferentes por país, mercado ou moeda (por exemplo, níveis de Rewards diferentes), use as condições no editor do carrinho. Nenhum código necessário, e sobrevive a redesigns do carrinho. Total do carrinho e conteúdo do carrinho não são tipos de condição do editor.
Recorra ao SDK quando sua regra é algo que as condições não conseguem expressar (IDs de produto no carrinho, um total personalizado, e assim por diante). Nesse caso, consulte o shadow root por uma classe pública cart-external-*:
Isso executa após cada renderização, então o bloco pode piscar na tela antes de seu código ocultá-lo. A renderização condicional não tem esse problema, então prefira-a sempre que couber.
- Transforms são chamadas de configuração. Registre-os no topo do seu script de Initialization; sem necessidade de
ready().
- Os transforms de todos executam. O seu se compõe com quaisquer registrados por outros apps. Você não pode substituir os deles, e eles não podem descartar o seu.
- Um transform não pode mudar preço, quantidade ou identidade. Ele só muda o que renderiza. Use as ações para mudanças reais.
- Um transform que lança um erro é ignorado silenciosamente. Os demais ainda executam. Verifique
aftersellCartDebugEvents durante o desenvolvimento.
registerLineTransform retorna uma função de desregistro, caso você precise desfazê-lo depois.
- Hooks: a referência completa de hooks.
- Cart object: todo campo pelo qual você pode ramificar.
- Custom CSS: a convenção de classes
cart-external-*.