151 lines
3.3 KiB
JavaScript
151 lines
3.3 KiB
JavaScript
|
|
import {
|
||
|
|
getPrefixFor,
|
||
|
|
getOptionFor,
|
||
|
|
responsiveClassesFor,
|
||
|
|
watchOptionsWithPrefix,
|
||
|
|
applyPrefixFor,
|
||
|
|
} from './helpers'
|
||
|
|
|
||
|
|
const prefix = getPrefixFor({
|
||
|
|
allowed_prefixes: [
|
||
|
|
'blog',
|
||
|
|
'search',
|
||
|
|
'author',
|
||
|
|
'categories',
|
||
|
|
'woo_categories',
|
||
|
|
],
|
||
|
|
default_prefix: 'blog',
|
||
|
|
})
|
||
|
|
|
||
|
|
const optionPrefix = ['author', 'categories'].includes(prefix) ? 'blog' : prefix
|
||
|
|
|
||
|
|
watchOptionsWithPrefix({
|
||
|
|
getPrefix: () => prefix,
|
||
|
|
getOptionsForPrefix: () => [
|
||
|
|
`${optionPrefix}_load_more_label`,
|
||
|
|
`${optionPrefix}_paginationDivider`,
|
||
|
|
`${optionPrefix}_numbers_visibility`,
|
||
|
|
`${optionPrefix}_arrows_visibility`,
|
||
|
|
],
|
||
|
|
|
||
|
|
render: () => {
|
||
|
|
if (document.querySelector('.ct-load-more')) {
|
||
|
|
document.querySelector('.ct-load-more').innerHTML = getOptionFor(
|
||
|
|
'load_more_label',
|
||
|
|
optionPrefix
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
;[...document.querySelectorAll('.ct-pagination')].map((el) => {
|
||
|
|
el.removeAttribute('data-divider')
|
||
|
|
;[...el.parentNode.querySelectorAll('nav > a')].map((el) => {
|
||
|
|
responsiveClassesFor(
|
||
|
|
getOptionFor('arrows_visibility', optionPrefix),
|
||
|
|
el
|
||
|
|
)
|
||
|
|
})
|
||
|
|
;[...el.parentNode.querySelectorAll('nav > div')].map((el) => {
|
||
|
|
responsiveClassesFor(
|
||
|
|
getOptionFor('numbers_visibility', optionPrefix),
|
||
|
|
el
|
||
|
|
)
|
||
|
|
})
|
||
|
|
|
||
|
|
if (
|
||
|
|
getOptionFor('paginationDivider', optionPrefix).style === 'none'
|
||
|
|
) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if (
|
||
|
|
getOptionFor('pagination_global_type', optionPrefix) ===
|
||
|
|
'infinite_scroll'
|
||
|
|
) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
el.dataset.divider = ''
|
||
|
|
})
|
||
|
|
},
|
||
|
|
})
|
||
|
|
|
||
|
|
export const getPaginationVariables = () => ({
|
||
|
|
[`${optionPrefix}_paginationSpacing`]: {
|
||
|
|
selector: applyPrefixFor('.ct-pagination', prefix),
|
||
|
|
variable: 'spacing',
|
||
|
|
responsive: true,
|
||
|
|
unit: '',
|
||
|
|
},
|
||
|
|
|
||
|
|
[`${optionPrefix}_paginationDivider`]: {
|
||
|
|
selector: applyPrefixFor('.ct-pagination[data-divider]', prefix),
|
||
|
|
variable: 'pagination-divider',
|
||
|
|
type: 'border',
|
||
|
|
skip_none: true,
|
||
|
|
},
|
||
|
|
|
||
|
|
[`${optionPrefix}_pagination_border_radius`]: {
|
||
|
|
selector: applyPrefixFor('.ct-pagination', prefix),
|
||
|
|
type: 'spacing',
|
||
|
|
variable: 'theme-border-radius',
|
||
|
|
emptyValue: 4,
|
||
|
|
},
|
||
|
|
|
||
|
|
[`${optionPrefix}_simplePaginationFontColor`]: [
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor(
|
||
|
|
'[data-pagination="simple"], [data-pagination="next_prev"]',
|
||
|
|
prefix
|
||
|
|
),
|
||
|
|
variable: 'theme-text-color',
|
||
|
|
type: 'color:default',
|
||
|
|
},
|
||
|
|
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor(
|
||
|
|
'.ct-pagination[data-pagination="simple"]',
|
||
|
|
prefix
|
||
|
|
),
|
||
|
|
variable: 'theme-text-active-color',
|
||
|
|
type: 'color:active',
|
||
|
|
},
|
||
|
|
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor(
|
||
|
|
'[data-pagination="simple"], [data-pagination="next_prev"]',
|
||
|
|
prefix
|
||
|
|
),
|
||
|
|
variable: 'theme-link-hover-color',
|
||
|
|
type: 'color:hover',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
|
||
|
|
[`${optionPrefix}_paginationButtonText`]: [
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor('[data-pagination="load_more"]', prefix),
|
||
|
|
variable: 'theme-button-text-initial-color',
|
||
|
|
type: 'color:default',
|
||
|
|
},
|
||
|
|
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor('[data-pagination="load_more"]', prefix),
|
||
|
|
variable: 'theme-button-text-hover-color',
|
||
|
|
type: 'color:hover',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
|
||
|
|
[`${optionPrefix}_paginationButton`]: [
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor('[data-pagination="load_more"]', prefix),
|
||
|
|
variable: 'theme-button-background-initial-color',
|
||
|
|
type: 'color:default',
|
||
|
|
},
|
||
|
|
|
||
|
|
{
|
||
|
|
selector: applyPrefixFor('[data-pagination="load_more"]', prefix),
|
||
|
|
variable: 'theme-button-background-hover-color',
|
||
|
|
type: 'color:hover',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
})
|