Widget de loja online
Referência do SDK
A API completa de ScalarcutTiling.mount: cada opção, cada callback e cada método do handle que devolve.
O SDK tem um único ponto de entrada, ScalarcutTiling.mount(target, options). Devolve um handle que pode usar para conduzir o widget depois de carregar.
mount(target, options)
const planner = ScalarcutTiling.mount('#sc-tiling', {
widgetKey: 'YOUR_WIDGET_KEY',
// ... options below
});
target é uma string de seletor CSS ou um Element. O widget renderiza num novo iframe dentro dele.
Opções
| Opção | Tipo | Obrigatória | Descrição |
|---|---|---|---|
widgetKey |
string |
Sim | A chave de widget da sua conta. |
catalog |
string |
Não | Slug do catálogo ao qual fixar o planificador. |
sku |
string |
Não | SKU a pré-selecionar ao carregar. |
locale |
string |
Não | Locale da interface — en, ru, de, pl, it, es, fr ou pt. |
currency |
string |
Não | Código da moeda exibida, por exemplo USD, EUR ou BYN. |
height |
number |
Não | Altura inicial do frame de desktop em píxeis. Por omissão 880. |
embedOrigin |
string |
Não | Origem do host de incorporação. Por omissão, a própria origem do script do SDK, pelo que raramente precisa de a definir. |
onReady |
() => void |
Não | Chamado quando o widget termina de arrancar. |
onBomUpdated |
(payload) => void |
Não | Chamado sempre que a lista de materiais muda. |
onAddToCart |
(payload) => void |
Não | Chamado quando o comprador clica em «Adicionar ao carrinho». |
onError |
(payload) => void |
Não | Chamado quando o widget reporta um erro. |
onResize |
(height) => void |
Não | Chamado quando o widget pede uma nova altura. |
Callbacks
onAddToCart(payload) é o que vai usar mais:
onAddToCart(payload) {
// payload = { lines: [{ sku, qty, unit }], layoutFingerprint, layoutToken }
payload.lines.forEach((line) => {
yourStore.addToCart(line.sku, line.qty, line.unit);
});
}
Cada linha leva um SKU, uma quantidade numérica e uma unidade (box para azulejos; kg e l para consumíveis quando essa opção está ativada na sua loja). Veja Integração do carrinho.
onBomUpdated(payload) dá-lhe um retrato em direto do orçamento, para que a sua página possa mostrar algo como «Azulejos a encomendar: 34» ao lado do widget:
onBomUpdated(payload) {
console.log(payload); // areas, piece counts, boxes, consumables
}
onError(payload) leva um motivo legível por máquina que pode passar à sua equipa de suporte.
Métodos do handle
mount devolve um handle:
| Método | Descrição |
|---|---|
setSku(sku) |
Muda o SKU ativo sem renderizar de novo o widget inteiro. |
setLocale(locale) |
Muda o idioma da interface e recarrega o frame. |
setCurrency(currency) |
Muda a moeda exibida e recarrega o frame. |
exportBlueprint() |
Pede ao widget para transferir o Blueprint PDF atual. |
requestAddToCart() |
Dispara «Adicionar ao carrinho» programaticamente, como o botão dentro do widget. |
destroy() |
Remove o iframe e cancela a subscrição do listener. Chame quando o widget já não for necessário, por exemplo na navegação em SPA. |
const planner = ScalarcutTiling.mount('#sc-tiling', { widgetKey: 'YOUR_WIDGET_KEY' });
// Later, in response to a variant switch on your page:
planner.setSku('VARIANT_SKU');
// On navigation away:
planner.destroy();
Locale e moeda recarregam, o SKU não
setLocale e setCurrency mudam o idioma e a moeda do widget e recarregam o frame. setSku não recarrega — troca o material no sítio e mantém a disposição do comprador.
Erros
mount lança imediatamente se o alvo faltar, widgetKey estiver ausente ou a origem de incorporação não puder ser determinada. Embrulhe a chamada se a sua página renderizar o contentor condicionalmente:
try {
ScalarcutTiling.mount('#sc-tiling', { widgetKey: 'YOUR_WIDGET_KEY' });
} catch (error) {
console.warn('Scalarcut not mounted:', error.message);
}