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]
})
}
})