Виджет интернет-магазина
Справочник SDK
Полный API ScalarcutTiling.mount: каждая опция, каждый колбэк и каждый метод объекта, который он возвращает.
У SDK одна точка входа — ScalarcutTiling.mount(target, options). Он возвращает объект-ручку, которым вы управляете виджетом после загрузки.
mount(target, options)
const planner = ScalarcutTiling.mount('#sc-tiling', {
widgetKey: 'YOUR_WIDGET_KEY',
// ... options below
});
target — это строка CSS-селектора или Element. Виджет рендерится в новый iframe внутри него.
Опции
| Опция | Тип | Обязательно | Описание |
|---|---|---|---|
widgetKey |
string |
Да | Ключ виджета вашего аккаунта. |
catalog |
string |
Нет | Слаг каталога, к которому привязывается планировщик. |
sku |
string |
Нет | SKU для предвыбора при загрузке. |
locale |
string |
Нет | Язык интерфейса — en, ru, de, pl, it, es, fr или pt. |
currency |
string |
Нет | Код валюты отображения, например USD, EUR или BYN. |
height |
number |
Нет | Стартовая высота десктопного фрейма в пикселях. По умолчанию 880. |
embedOrigin |
string |
Нет | Origin хоста встраивания. По умолчанию берётся из origin самого скрипта SDK, поэтому задавать его нужно редко. |
onReady |
() => void |
Нет | Вызывается, когда виджет закончил загрузку. |
onBomUpdated |
(payload) => void |
Нет | Вызывается при каждом изменении ведомости материалов. |
onAddToCart |
(payload) => void |
Нет | Вызывается, когда покупатель нажимает «Добавить в корзину». |
onError |
(payload) => void |
Нет | Вызывается, когда виджет сообщает об ошибке. |
onResize |
(height) => void |
Нет | Вызывается, когда виджет просит новую высоту. |
Колбэки
onAddToCart(payload) — тот, которым вы будете пользоваться чаще всего:
onAddToCart(payload) {
// payload = { lines: [{ sku, qty, unit }], layoutFingerprint, layoutToken }
payload.lines.forEach((line) => {
yourStore.addToCart(line.sku, line.qty, line.unit);
});
}
Каждая строка несёт SKU, числовое количество и единицу (box для плитки; kg и l для расходников, когда эта опция включена для вашего магазина). См. Интеграция корзины.
onBomUpdated(payload) даёт живой снимок сметы, чтобы ваша страница могла показать рядом с виджетом что-то вроде «Плитки к заказу: 34»:
onBomUpdated(payload) {
console.log(payload); // areas, piece counts, boxes, consumables
}
onError(payload) несёт машиночитаемую причину, которую вы можете передать своей службе поддержки.
Методы ручки
mount возвращает ручку:
| Метод | Описание |
|---|---|
setSku(sku) |
Переключает активный SKU без повторного рендера всего виджета. |
setLocale(locale) |
Меняет язык интерфейса и перезагружает фрейм. |
setCurrency(currency) |
Меняет валюту отображения и перезагружает фрейм. |
exportBlueprint() |
Просит виджет скачать текущий Blueprint PDF. |
requestAddToCart() |
Программно запускает «Добавить в корзину», как кнопка внутри виджета. |
destroy() |
Удаляет iframe и отписывается от слушателя. Вызывайте, когда виджет больше не нужен, например при навигации в 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();
Локаль и валюта перезагружают, SKU — нет
setLocale и setCurrency меняют язык и валюту самого виджета и перезагружают фрейм. setSku не перезагружает — он меняет материал на месте и сохраняет раскладку покупателя.
Ошибки
mount сразу бросает исключение, если цель отсутствует, widgetKey не задан или origin встраивания невозможно определить. Оборачивайте вызов, если ваша страница рендерит контейнер условно:
try {
ScalarcutTiling.mount('#sc-tiling', { widgetKey: 'YOUR_WIDGET_KEY' });
} catch (error) {
console.warn('Scalarcut not mounted:', error.message);
}