import ctEvents from 'ct-events' import { updateAndSaveEl } from '../../../../static/js/frontend/header/render-loop' import { responsiveClassesFor } from '../../../../static/js/customizer/sync/helpers' const svgs = { 'type-1': '', 'type-2': '', 'type-3': '' } ctEvents.on( 'ct:header:sync:collect-variable-descriptors', variableDescriptors => { variableDescriptors['cart'] = { cartIconSize: { selector: '.ct-header-cart i', variable: 'iconSize', responsive: true, unit: 'px' }, cartHeaderIconColor: [ { selector: '.ct-header-cart > a', variable: 'linkInitialColor', type: 'color:default', responsive: true }, { selector: '.ct-header-cart > a', variable: 'linkHoverColor', type: 'color:hover', responsive: true } ], cartBadgeColor: [ { selector: '.ct-header-cart', variable: 'cartBadgeBackground', type: 'color:background', responsive: true }, { selector: '.ct-header-cart', variable: 'cartBadgeText', type: 'color:text', responsive: true } ], cartDropdownTopOffset: { selector: '.ct-cart-content', variable: 'dropdownTopOffset', unit: 'px' }, cartFontColor: [ { selector: '.ct-cart-content', variable: 'linkInitialColor', type: 'color:default', responsive: true }, { selector: '.ct-cart-content', variable: 'linkHoverColor', type: 'color:hover', responsive: true } ], cartDropDownBackground: { selector: '.ct-cart-content', variable: 'backgroundColor', type: 'color:default', responsive: true }, headerCartMargin: { selector: '.ct-header-cart', type: 'spacing', variable: 'margin', responsive: true, important: true } } } ) ctEvents.on('ct:header:sync:item:cart', ({ optionId, optionValue, values }) => { const selector = '[data-id="cart"]' if (optionId === 'header_cart_visibility') { updateAndSaveEl(selector, el => responsiveClassesFor({ ...optionValue, desktop: true }, el) ) } if (optionId === 'has_cart_subtotal') { updateAndSaveEl(selector, el => { ;[...el.querySelectorAll('.ct-cart-total')].map(el => el.remove()) if (optionValue === 'yes') { const span = document.createElement('span') span.innerHTML = el.dataset.subtotal span.classList.add('ct-cart-total') el.querySelector('a').prepend(span) } }) } if (optionId === 'has_cart_badge') { updateAndSaveEl(selector, el => { el.firstElementChild.removeAttribute('data-skip-badge') if (optionValue === 'yes') return el.firstElementChild.dataset.skipBadge = '' }) } if (optionId === 'mini_cart_type') { updateAndSaveEl(selector, el => { el.querySelector('a > i').innerHTML = svgs[optionValue] }) } })