There are no ACF fields assigned to this component.
@import "../../resources/scss/util/variables";
@import "../../resources/scss/util/mixins";
.block-post-feed {
border-top: 1px solid $border-grey;
border-bottom: none !important;
.post-feed {
&__posts {
display: grid;
gap: var(--bs-gutter-x);
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
@include bp($lg){
grid-template-columns: repeat(auto-fill, minmax(333px, 1fr));
}
}
&__results{
.results-meta{
display: block;
text-align: right;
font-size: .875rem;
margin-bottom: 1rem;
color: var(--text-color);
&[data-found="1"]{
.plural{
display: none;
}
}
}
// .post-card{
// @for $i from 1 through 20 {
// &:nth-child(#{$i}) {
// transition-delay: calc((0.1s * #{$i}));
// }
// }
// }
.pagination{
transition-delay: .3s;
margin-top: rem-calc(50);
padding-bottom: 0;
@include bp($md){
margin-top: 2rem;
}
@include bp($xl){
margin-top: 4rem;
}
.pagination-pages {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
svg {
path {
stroke: var(--text-color);
}
}
.page-numbers,
.pagination-nav {
padding: 8px 13px;
color: var(--text-color);
text-decoration: none;
transition: background-color 0.3s ease;
margin: 0 5px;
&.current, &:hover {
background-color: $secondary-light-green;
color: $primary;
}
}
}
}
}
&.has-primary-background-color, .intelligence-feed {
border-top: 0;
@include bp($md) {
border-top: 1px solid rgba(255, 255, 255, 0.3);
}
div[data-post-feed] .filters__options, div[data-post-feed] .filters__search, div[data-post-feed] .filters__mobile-toggle {
background-color: #083246;
color: $white;
}
div[data-post-feed] .filters__options select, div[data-post-feed] .filters__search select {
border-bottom: 1px solid $white;
background-image: url('/wp-content/themes/moore-global/assets/icons/select-dropdown-white.svg');
option {
color: $white;
background-color: #083246;
&:hover {
background-color: darken(#083246, 5%);
}
}
}
div[data-post-feed] .filters__search input {
background-color: $primary;
// background-image: url('/wp-content/themes/moore-global/assets/icons/search.svg');
border-color: $primary;
color: $white;
// Remove autofill styling for all browsers
&:-webkit-autofill,
&:-webkit-autofill:hover,
&:-webkit-autofill:focus,
&:-webkit-autofill:active {
-webkit-box-shadow: 0 0 0 30px $primary inset !important;
-webkit-text-fill-color: $white !important;
transition: background-color 5000s ease-in-out 0s;
}
}
.post-card__image {
border: 1px solid rgba(255, 255, 255, 0.1);
padding: 5px;
background-color: rgba(2, 33, 46, 0.4);
&:after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 50%;
background: linear-gradient(180deg, rgba(2, 33, 46, 0) 0%, #02212E 100%);
}
}
.post-card__row, .results-meta, .post-feed__posts {
color: $white;
}
div[data-post-feed] .filters__search-button svg line, div[data-post-feed] .filters__search-button svg circle,div[data-post-feed] .filters__filter-button svg line {
stroke: $white;
}
div[data-post-feed] .filters__search-button {
border-right: 1px solid rgba(255, 255, 255, 0.1);
}
.post-card {
&:hover {
.post-card__title {
color: $white;
}
}
}
.pagination-nav {
&:hover {
svg {
path {
stroke: $primary;
}
}
}
}
.pagination {
svg {
path {
stroke: $white;
}
}
.page-numbers,
.pagination-nav {
color: $white;
background-color: #033042;
display: flex;
justify-content: center;
align-items: center;
&.current, &:hover {
color: $primary;
}
}
}
}
}
class PostFeed {
constructor(block) {
this.block = block;
this.init();
}
init() {
const feed = this.block.querySelector('[data-post-feed]');
const resultsElem = feed.querySelector('.results');
const resultsMeta = feed.querySelector('.results-meta');
const scrollHint = feed.querySelector('.filters__scroll-hint');
const filters = feed.querySelector('.filters__inner');
// on scroll hint, scroll the filters horizontally by 100px
if (scrollHint) {
scrollHint.addEventListener('click', () => {
filters.scrollBy({
left: 200,
behavior: 'smooth',
});
});
}
if (feed) {
feed.addEventListener('post-feed-pre-update', (data) => {
// scroll to top of block, but add offset of 100
const blockTop = this.block.getBoundingClientRect().top + window.scrollY;
window.scrollTo({
top: blockTop - 100,
behavior: 'smooth',
});
});
feed.addEventListener('post-feed-update', (data) => {
if (!data) {
return;
}
if (!data.detail && !data.detail.results) {
if(data.detail.data){
resultsElem.innerHTML = data.detail.data;
}
return;
}
const results = data.detail.results;
resultsElem.innerHTML = '';
results.forEach(result => {
resultsElem.innerHTML += result;
});
if (resultsMeta) {
resultsMeta.dataset.found = data.detail.found_posts;
const currentPage = resultsMeta.querySelector('.current-page');
if (currentPage) {
currentPage.innerHTML = data.detail.page;
}
const totalPages = resultsMeta.querySelector('.total-pages');
if (totalPages) {
totalPages.innerHTML = data.detail.pages;
}
const total = resultsMeta.querySelector('.total');
if (total) {
total.innerHTML = data.detail.found_posts;
}
}
});
feed.addEventListener('post-feed-error', (data) => {
if(data.detail && data.detail.reason){
resultsElem.innerHTML = data.detail.reason;
}
const total = resultsMeta.querySelector('.total');
if (total) {
total.innerHTML = '0';
}
});
this.toggleFilters();
this.toggleSearch();
}
}
toggleFilters() {
const filterButton = this.block.querySelector('.filters__filter-button');
const filtersOptions = this.block.querySelector('.filters__options');
const filterClose = this.block.querySelector('.filters__title--filter span');
if(filterButton){
filterButton.addEventListener('click', (e) => {
e.preventDefault();
filtersOptions.classList.add('filters__options--open');
});
filterClose.addEventListener('click', (e) => {
e.preventDefault();
filtersOptions.classList.remove('filters__options--open');
});
}
}
toggleSearch() {
const searchButton = this.block.querySelector('.filters__search-button');
const filtersSearch = this.block.querySelector('.filters__search');
const searchClose = this.block.querySelector('.filters__title--search span');
searchButton.addEventListener('click', (e) => {
e.preventDefault();
filtersSearch.classList.add('filters__search--open');
});
searchClose.addEventListener('click', (e) => {
e.preventDefault();
filtersSearch.classList.remove('filters__search--open');
});
}
}
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.block-post-feed').forEach((block) => {
new PostFeed(block);
});
});
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "strategiq/post-feed",
"title": "Post Feed",
"description": "Example block to be used as a template",
"category": "strategiq",
"icon": "strategiq",
"acf": {
"mode": "preview",
"renderTemplate": "block-post-feed.php"
},
"supports": {
"anchor": true,
"align": false,
"color": {
"background": true,
"text": false,
"gradients": true
},
"spacing": {
"padding": [
"top",
"bottom"
],
"margin": [
"top",
"bottom"
]
}
},
"example": {
"attributes": {
"mode": "preview",
"data": {
"heading_type": "h2",
"heading_text": "Example - Post Feed",
"content": "This is some example content to represent what the content will look like"
}
}
},
"style": ["file:../../assets/css/post-feed/block-post-feed.css", "base-blog"],
"viewScript": ["post-feed"]
}
Page Title
Page Type
Page URL
Category Template
template
There are is no readme file with this component.