199 lines
4.6 KiB
JavaScript
199 lines
4.6 KiB
JavaScript
|
|
import {
|
||
|
|
setRatioFor,
|
||
|
|
watchOptionsWithPrefix,
|
||
|
|
responsiveClassesFor,
|
||
|
|
getOptionFor,
|
||
|
|
getPrefixFor,
|
||
|
|
} from './helpers'
|
||
|
|
|
||
|
|
import { renderSingleEntryMeta } from './helpers/entry-meta'
|
||
|
|
|
||
|
|
watchOptionsWithPrefix({
|
||
|
|
getOptionsForPrefix: ({ prefix }) => [
|
||
|
|
`${prefix}_share_box_title`,
|
||
|
|
`${prefix}_share_box_visibility`,
|
||
|
|
|
||
|
|
`${prefix}_author_box_visibility`,
|
||
|
|
`${prefix}_post_tags_title`,
|
||
|
|
`${prefix}_post_tags_visibility`,
|
||
|
|
`${prefix}_post_nav_title_visibility`,
|
||
|
|
`${prefix}_post_nav_thumb_visibility`,
|
||
|
|
`${prefix}_post_nav_visibility`,
|
||
|
|
`${prefix}_comments_structure`,
|
||
|
|
|
||
|
|
// `${prefix}_related_posts_columns`,
|
||
|
|
`${prefix}_related_featured_image_ratio`,
|
||
|
|
`${prefix}_related_label`,
|
||
|
|
`${prefix}_related_visibility`,
|
||
|
|
`${prefix}_related_structure`,
|
||
|
|
`${prefix}_related_posts_containment`,
|
||
|
|
`${prefix}_related_single_meta_elements`,
|
||
|
|
],
|
||
|
|
render: ({ prefix, id }) => {
|
||
|
|
const visibilities = [
|
||
|
|
{ selector: '.ct-share-box', id: 'share_box_visibility' },
|
||
|
|
{ selector: '.author-box', id: 'author_box_visibility' },
|
||
|
|
{ selector: '.entry-tags', id: 'post_tags_visibility' },
|
||
|
|
{
|
||
|
|
selector: '.post-navigation .item-title',
|
||
|
|
id: 'post_nav_title_visibility',
|
||
|
|
},
|
||
|
|
{
|
||
|
|
selector: '.post-navigation .ct-media-container',
|
||
|
|
id: 'post_nav_thumb_visibility',
|
||
|
|
},
|
||
|
|
{ selector: '.post-navigation', id: 'post_nav_visibility' },
|
||
|
|
]
|
||
|
|
|
||
|
|
if (id === `${prefix}_share_box_title`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.ct-share-box .ct-module-title')
|
||
|
|
).map((el) => {
|
||
|
|
el.innerHTML = getOptionFor('share_box_title', prefix)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
if (id === `${prefix}_post_tags_title`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.entry-tags .ct-module-title')
|
||
|
|
).map((el) => {
|
||
|
|
el.innerHTML = getOptionFor('post_tags_title', prefix)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
visibilities.map((visibilityDescriptor) => {
|
||
|
|
if (id !== `${prefix}_${visibilityDescriptor.id}`) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll(visibilityDescriptor.selector)
|
||
|
|
).map((el) => {
|
||
|
|
responsiveClassesFor(
|
||
|
|
getOptionFor(visibilityDescriptor.id, prefix),
|
||
|
|
el
|
||
|
|
)
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
if (id === `${prefix}_comments_structure`) {
|
||
|
|
Array.from(document.querySelectorAll('.ct-comments-container')).map(
|
||
|
|
(el) => {
|
||
|
|
let container = getOptionFor('comments_structure', prefix)
|
||
|
|
|
||
|
|
el.firstElementChild.classList.remove(
|
||
|
|
'ct-container',
|
||
|
|
'ct-container-narrow'
|
||
|
|
)
|
||
|
|
|
||
|
|
el.firstElementChild.classList.add(
|
||
|
|
container === 'narrow'
|
||
|
|
? 'ct-container-narrow'
|
||
|
|
: 'ct-container'
|
||
|
|
)
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
if (id === `${prefix}_related_posts_columns`) {
|
||
|
|
Array.from(document.querySelectorAll('.ct-related-posts')).map(
|
||
|
|
(el) => {
|
||
|
|
el.dataset.layout = `grid:columns-${getOptionFor(
|
||
|
|
'related_posts_columns',
|
||
|
|
prefix
|
||
|
|
)}`
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
*/
|
||
|
|
|
||
|
|
if (id === `${prefix}_related_featured_image_ratio`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll(
|
||
|
|
'.ct-related-posts .ct-media-container'
|
||
|
|
)
|
||
|
|
).map((el) => {
|
||
|
|
setRatioFor({
|
||
|
|
ratio: getOptionFor(
|
||
|
|
'related_featured_image_ratio',
|
||
|
|
prefix
|
||
|
|
),
|
||
|
|
el,
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
if (id === `${prefix}_related_label`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.ct-related-posts .ct-module-title')
|
||
|
|
).map((el) => {
|
||
|
|
el.innerHTML = getOptionFor('related_label', prefix)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
if (
|
||
|
|
id === `${prefix}_related_posts_containment` ||
|
||
|
|
id === `${prefix}_related_visibility`
|
||
|
|
) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.ct-related-posts-container')
|
||
|
|
).map((el) => {
|
||
|
|
responsiveClassesFor(
|
||
|
|
getOptionFor('related_visibility', prefix),
|
||
|
|
el
|
||
|
|
)
|
||
|
|
})
|
||
|
|
|
||
|
|
if (
|
||
|
|
getOptionFor('related_posts_containment', prefix) !==
|
||
|
|
'separated'
|
||
|
|
) {
|
||
|
|
Array.from(document.querySelectorAll('.ct-related-posts')).map(
|
||
|
|
(el) => {
|
||
|
|
responsiveClassesFor(
|
||
|
|
getOptionFor('related_visibility', prefix),
|
||
|
|
el
|
||
|
|
)
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (id === `${prefix}_related_structure`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.ct-related-posts-container')
|
||
|
|
).map((el) => {
|
||
|
|
let container = getOptionFor('related_structure', prefix)
|
||
|
|
|
||
|
|
el.firstElementChild.classList.remove(
|
||
|
|
'ct-container',
|
||
|
|
'ct-container-narrow'
|
||
|
|
)
|
||
|
|
|
||
|
|
el.firstElementChild.classList.add(
|
||
|
|
container === 'narrow'
|
||
|
|
? 'ct-container-narrow'
|
||
|
|
: 'ct-container'
|
||
|
|
)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
if (id === `${prefix}_related_single_meta_elements`) {
|
||
|
|
Array.from(
|
||
|
|
document.querySelectorAll('.ct-related-posts .entry-meta')
|
||
|
|
).map((el) => {
|
||
|
|
renderSingleEntryMeta({
|
||
|
|
el,
|
||
|
|
meta_divider: 'slash',
|
||
|
|
meta_type: 'simple',
|
||
|
|
meta_elements: getOptionFor(
|
||
|
|
'related_single_meta_elements',
|
||
|
|
prefix
|
||
|
|
),
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
},
|
||
|
|
})
|