@total_onion/onion-library 2.0.66 → 2.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/block-accordion-v3/accordion-v3.twig +23 -24
- package/components/block-betterreviews-display-v3/betterreviews-display-v3.twig +2 -3
- package/components/block-block-interactions-v3/block-interactions-v3.twig +7 -9
- package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.twig +5 -3
- package/components/block-cover-link-v3/cover-link-v3.twig +1 -1
- package/components/block-divider-v3/divider-v3.twig +1 -1
- package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.twig +2 -2
- package/components/block-featured-image-gallery-v3/group_5f91897095b42.json +162 -7
- package/components/block-gradient-layer-v3/gradient-layer-v3.twig +2 -2
- package/components/block-group-container-v3/group-container-v3.twig +5 -4
- package/components/block-group-container-v3/group_6865578ada499.json +364 -38
- package/components/block-lottie-content-v3/lottie-content-v3.twig +5 -7
- package/components/block-nav-menu-container-v3/group_687e00b45e9a3.json +96 -66
- package/components/block-nav-menu-container-v3/nav-menu-container-v3.twig +9 -8
- package/components/block-post-type-filter-grid-v3/group_64690c62487bc.json +3674 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/better-reviews-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/buy-now-widget.vue +72 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/cocktail-category.vue +40 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/cocktail-tasting-notes.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/divider-widget.vue +11 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/drink-tastes.vue +26 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/featured-post-component.vue +62 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/global-image-widget.vue +23 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/media-widget.vue +23 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-email-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-name-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-questionaire-widget.vue +17 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-rating-widget.vue +25 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-author-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-category-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-component.vue +130 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-headline-widget.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-image-widget.vue +60 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-info-description.vue +14 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-info-subtitle.vue +14 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-link-widget.vue +44 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-publish-widget.vue +44 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-tags-widget.vue +19 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-text-alternative-style.vue +18 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-title-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/pre-render-posts-html.twig +17 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-abv.vue +18 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-age-statement.vue +17 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-bazaarvoice.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-brand.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-cask-type.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-country.vue +14 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-description.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-name.vue +18 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-price.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-finish.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-history.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-link.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-logo-widget.vue +22 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-name.vue +17 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-nose.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-price.vue +15 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-slug.vue +14 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-taste.vue +16 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-whisky-type.vue +25 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/ptfg-posts.twig +474 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/ptfg-utils.vue +38 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/shopify-add-to-cart.vue +31 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/social-media-item.vue +58 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/spacer-widget.vue +13 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/text-search.vue +10 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.js +14 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.php +48 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.scss +1084 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.twig +157 -0
- package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.vue +938 -0
- package/components/block-product-info-v3/product-info-v3.twig +2 -1
- package/components/block-scrolling-banner-v3/group_68e67fca1ec80.json +1 -56
- package/components/block-scrolling-banner-v3/scrolling-banner-v3.twig +7 -4
- package/components/block-section-separator-v3/section-separator-v3.twig +2 -2
- package/components/block-single-column-container-v3/single-column-container-v3.twig +1 -1
- package/components/block-single-responsive-image-v3/group_6867bcf24c2fc.json +5 -11
- package/components/block-single-responsive-image-v3/single-responsive-image-v3.twig +2 -2
- package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.php +1 -1
- package/components/block-site-logo-container-v3/group_687e3b887b508.json +53 -5
- package/components/block-site-logo-container-v3/site-logo-container-v3.twig +4 -2
- package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.twig +2 -2
- package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.twig +2 -2
- package/components/block-standard-content-v3/standard-content-v3.twig +2 -3
- package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.twig +59 -59
- package/components/block-sub-group-container-v3/group_686ceba7d6066.json +197 -56
- package/components/block-sub-group-container-v3/sub-group-container-v3.twig +3 -4
- package/components/block-video-content-v3/group_687190b8d26df.json +175 -167
- package/components/block-video-content-v3/video-content-v3.twig +1 -1
- package/components/component-accent-image-v3/group_686cd5547efd2.json +5 -5
- package/components/component-block-settings-v3/group_689f649af2ac4.json +22 -1
- package/components/component-child-block-video-fields/group_6852a4f384204.json +351 -349
- package/components/component-content-box-settings-v3/group_686e6ec702acc.json +1727 -1937
- package/components/component-content-box-v3/group_686b8a4f1fe5d.json +50 -1
- package/components/component-cta-selection-v3/cta-selection-v3.twig +1 -2
- package/components/component-responsive-image-v3/group_6867bc53f1da8.json +4 -31
- package/components/component-video-component-v3/video-component-v3.twig +1 -1
- package/components/component-video-trigger-button-v3/video-trigger-button-v3.twig +1 -1
- package/components/fields-block-editor-assets-v3/block-editor-assets-v3.php +5 -7
- package/components/{fields-core-athena-block-render-function-v3/core-athena-block-render-function-v3.php → fields-core-block-render-function-v3/core-block-render-function-v3.php} +1 -1
- package/components/fields-drink-responsibly-notice-v3/group_68751257883ad.json +2 -1
- package/components/fields-dynamic-critical-css-v3/group_65abcd463e8d0.json +1 -1
- package/components/fields-modal-popup-content-v3/group_689876f1ee3fc.json +403 -0
- package/components/fields-modal-popup-content-v3/modal-popup-content-v3.twig +18 -0
- package/package.json +3 -2
- package/components/block-smash-balloon-social-media-v3/group_6890a2ab0e0a9.json +0 -143
- package/components/fields-buy-now-button/group_658432636bde2.json +0 -340
- package/components/fields-cta-icons-v3/group_677ed96c3c64f.json +0 -822
- package/components/fields-design-system-v3/group_6870e9e74a347.json +0 -743
- package/components/fields-site-logos-v3/group_6877b1697bf9f.json +0 -149
- package/components/fields-typography-settings-v3/group_6876149264002.json +0 -5636
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-info-subtitle.vue
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__post-info-subtitle ${blockClassname}__info-item`"
|
|
11
|
+
:style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
12
|
+
<p :class="`${element.text_style?.typography_style.slice(2)}`">{{ post.post_data.post_info_subtitle }}</p>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-link-widget.vue
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
4
|
+
const props = defineProps(["post", "element", "mappedIcons", "ctaStyles", "blockClassname", "options"]);
|
|
5
|
+
const postColour = props.post.post_data.post_colour;
|
|
6
|
+
const postTextColourStyle = props.post.post_data?.post_text_colour_style?.slice(2);
|
|
7
|
+
let ctaStyle = '';
|
|
8
|
+
if (typeof props.element.cta_style == 'string') {
|
|
9
|
+
ctaStyle = props.element?.cta_style?.replace("__", '');
|
|
10
|
+
} else {
|
|
11
|
+
ctaStyle = props.element?.cta_style;
|
|
12
|
+
}
|
|
13
|
+
let postCtaStyle = ctaStyle;
|
|
14
|
+
let postCtaStyleValue = '';
|
|
15
|
+
let ctaAnimationStyle = '';
|
|
16
|
+
if (props.element?.cta_style_select) {
|
|
17
|
+
if (props.element?.cta_style_select?.slice(2) == 'post-colour') {
|
|
18
|
+
postCtaStyle = 'post-colour';
|
|
19
|
+
postCtaStyleValue = `color: ${postColour};--post-text-colour-style: ${postColour};`;
|
|
20
|
+
}
|
|
21
|
+
if (props.element?.cta_style_select?.slice(2) == 'post-text-colour-style') {
|
|
22
|
+
postCtaStyle = 'post-text-colour-style';
|
|
23
|
+
postCtaStyleValue = `color: ${postTextColourStyle};--post-text-colour-style: ${postTextColourStyle};`;
|
|
24
|
+
}
|
|
25
|
+
if (props.ctaStyles) {
|
|
26
|
+
ctaAnimationStyle = props.ctaStyles[ctaStyle - 1]?.cta_settings?.cta_animation_style;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const iconImage = props.mappedIcons['cta_link_icon']['type'] == 'image/svg+xml' ? props.mappedIcons['cta_link_icon']['image'] : '<img src="' + props.mappedIcons['cta_link_icon']['image'] + '">';
|
|
30
|
+
const enableCtaIcon = props.ctaStyles[ctaStyle - 1]?.cta_settings?.include_cta_icon;
|
|
31
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
32
|
+
</script>
|
|
33
|
+
<template>
|
|
34
|
+
<div :class="`${blockClassname}__post-link ${blockClassname}__info-item`" :style="`${gridLayoutString}`">
|
|
35
|
+
<a :href="post?.link" :style="`${postCtaStyleValue}`"
|
|
36
|
+
:class="`${blockClassname}__cta ${blockClassname}__cta-style-${postCtaStyle} cmpl-cta-style-${postCtaStyle} cmpl-cta-animation-style-${ctaAnimationStyle}`"
|
|
37
|
+
v-if="element.post_link_text">
|
|
38
|
+
<span :class="`${blockClassname}__cta-span`">{{ element.post_link_text }}</span>
|
|
39
|
+
<span :class="`${blockClassname}__cta-icon cmpl-cta-icon ${blockClassname}__icon-image`"
|
|
40
|
+
v-if="enableCtaIcon" v-html="iconImage">
|
|
41
|
+
</span>
|
|
42
|
+
</a>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-publish-widget.vue
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from 'vue'
|
|
3
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
4
|
+
|
|
5
|
+
const props = defineProps(["post", "element"]);
|
|
6
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
7
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
8
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
9
|
+
|
|
10
|
+
const dateWithoutTime = computed(() => {
|
|
11
|
+
if (props.post.post_date) {
|
|
12
|
+
const dateArray = props.post.post_date.split(' ');
|
|
13
|
+
const dateDMY = dateArray[0].split('-');
|
|
14
|
+
const dateObject = new Date(Date.UTC(
|
|
15
|
+
parseInt(dateDMY[0]), // year
|
|
16
|
+
parseInt(dateDMY[1]) - 1, // month (0-based)
|
|
17
|
+
parseInt(dateDMY[2]) // day
|
|
18
|
+
));
|
|
19
|
+
|
|
20
|
+
const url = window.location.href;
|
|
21
|
+
const parts = url.split("/");
|
|
22
|
+
let formattedDate;
|
|
23
|
+
|
|
24
|
+
parts.forEach((part) => {
|
|
25
|
+
if (part === "en-us") {
|
|
26
|
+
formattedDate = new Intl.DateTimeFormat("en-US").format(
|
|
27
|
+
dateObject
|
|
28
|
+
);
|
|
29
|
+
} else {
|
|
30
|
+
formattedDate = new Intl.DateTimeFormat("en-GB").format(
|
|
31
|
+
dateObject
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return formattedDate;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
</script>
|
|
39
|
+
<template>
|
|
40
|
+
<p :class="`${blockClassname}__post-publish-date ${blockClassname}__info-item ${element.text_style?.typography_style.slice(2)}`"
|
|
41
|
+
:style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
42
|
+
{{ dateWithoutTime }}
|
|
43
|
+
</p>
|
|
44
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-tags-widget.vue
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element", "ctaStyles"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
|
|
7
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
8
|
+
let ctaStyle = props.element?.cta_style?.replace("__", '');
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
<template>
|
|
12
|
+
<div :class="`${blockClassname}__post-tags ${blockClassname}__info-item `" :style="`${gridLayoutString}`">
|
|
13
|
+
<template v-for="(tag, index) in props.post.tags" :key="index">
|
|
14
|
+
<div v-html="tag.name"
|
|
15
|
+
:class="`${blockClassname}__post-tag ${blockClassname}__cta cmpl-cta-style-${ctaStyle}`">
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element", "ctaIcons", "blockClassname"]);
|
|
5
|
+
const blockClassname = props.blockClassname;
|
|
6
|
+
|
|
7
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
<template>
|
|
12
|
+
<div :href="props.post.link" :class="`${blockClassname}__post-text-alternative-style ${blockClassname}__info-item`"
|
|
13
|
+
:style="`${gridLayoutString}`">
|
|
14
|
+
<h3 :class="`${blockClassname}__post-text-alternative-style-text`"
|
|
15
|
+
v-html="post.post_data.post_text_alternative_style">
|
|
16
|
+
</h3>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-title-widget.vue
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element", "ctaIcons", "blockClassname"]);
|
|
5
|
+
const blockClassname = props.blockClassname;
|
|
6
|
+
|
|
7
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
8
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
<template>
|
|
12
|
+
<a :href="props.post.link" :class="`${blockClassname}__post-title ${blockClassname}__info-item`"
|
|
13
|
+
:style="`${gridLayoutString}`">
|
|
14
|
+
<h3 :class="`${element.text_style?.typography_style.slice(2)}`" :style="`${textEditorStylesString}`"
|
|
15
|
+
v-html="post.post_title">
|
|
16
|
+
</h3>
|
|
17
|
+
<img :class="`${blockClassname}__post-title-icon style-svg`" v-if="element.enable_icon"
|
|
18
|
+
:src="ctaIcons.cta_load_more_icon" alt="title icon">
|
|
19
|
+
</a>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="{{blockClassName}}__no-js-content lazy-fade js-enabled-hide" style="width: 100%; padding: var(--global-inline-spacing)">
|
|
2
|
+
<div class="{{blockClassName}}__posts-container" style="width: 100%; display: grid; grid-template-columns: repeat(auto-fill,minmax(250px, 1fr)); gap: 20px;">
|
|
3
|
+
{% for post in updatedPosts.posts %}
|
|
4
|
+
{% set postImage = get_image(post.post_images.post_image) %}
|
|
5
|
+
|
|
6
|
+
<div class="{{blockClassName}}__post-container">
|
|
7
|
+
<a href="{{post.link}}"><img class="js-enabled-hide" src="{{postImage.src}}" srcset="{{postImage.srcset}}" alt="{{post.post_images.post_image_alt_text}}" loading='lazy' class=""></a>
|
|
8
|
+
{% if post.post_title is not empty %}
|
|
9
|
+
<h2 class="">{{post.post_title}}</h2>
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% if post.post_info_description is not empty %}
|
|
12
|
+
<p class="">{{post.post_info_description}}</p>
|
|
13
|
+
{% endif %}
|
|
14
|
+
</div>
|
|
15
|
+
{% endfor %}
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-abv ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
<!-- TODO -->
|
|
15
|
+
<!-- --text-align: ${element.text_align.slice(2)}; -->
|
|
16
|
+
{{ post.post_data.product_abv }}
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-age-statement.vue
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
|
|
7
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
8
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<div :class="`${blockClassname}__product-age-statement ${blockClassname}__info-item`" :style="`${gridLayoutString}`"
|
|
12
|
+
v-if="post.post_data.product_age_statement">
|
|
13
|
+
<h4 :class="`${element.text_style?.typography_style.slice(2)}`" :style="`${textEditorStylesString}`">
|
|
14
|
+
{{ post.post_data.product_age_statement }}
|
|
15
|
+
</h4>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-bazaarvoice.vue
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-bazaarvoice ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
{{ post.post_data.product_bazaarvoice }}
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__brand ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
{{ post.post_data.product_details?.brand }}
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-cask-type.vue
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-cask-type ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
{{ post.post_data.product_cask_type }}
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-country.vue
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
const props = defineProps(["post", "element"]);
|
|
4
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
5
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
6
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
7
|
+
</script>
|
|
8
|
+
<template>
|
|
9
|
+
<div :class="`${blockClassname}__product-country ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
10
|
+
2
|
|
11
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
12
|
+
{{ post.post_data.product_country }}
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-description.vue
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-details-description ${blockClassname}__info-item ${blockClassname}__post-details-description ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
{{ post.post_data.product_details?.description }}
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-name.vue
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
const props = defineProps(["post", "element"]);
|
|
4
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
5
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
6
|
+
// console.log(JSON.parse(props.post.post_data));
|
|
7
|
+
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-link ${blockClassname}__info-item ${props.element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString}`">
|
|
13
|
+
<h4 :class="`${element.text_style?.typography_style.slice(2)}`"
|
|
14
|
+
:style="`--text-align: ${props.element.text_style?.text_align.slice(2)}; --text-transform: ${props.element.text_style?.text_transform.slice(2)}; --font-weight: ${props.element.text_style.text_font_weight.slice(2)}; --text-colour: ${textColour}`">
|
|
15
|
+
{{ props.post.product_details.productName }}
|
|
16
|
+
</h4>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-price.vue
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__price ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<span>{{ post.post_data.product_details?.price }}</span>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
const props = defineProps(["post", "element"]);
|
|
4
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
5
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
6
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
7
|
+
</script>
|
|
8
|
+
<template>
|
|
9
|
+
<div :class="`${blockClassname}__product-finish ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
10
|
+
2
|
|
11
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
12
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
13
|
+
{{ post.post_data.product_finish }}
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-history.vue
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-history ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
{{ post.post_data.product_history }}
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element", "ctaIcons"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-link ${blockClassname}__info-item`" :style="`${gridLayoutString}`">
|
|
11
|
+
<a :href="props.post.link" :class="`${blockClassname}__cta cmpl-cta-style-${element.cta_style.slice(
|
|
12
|
+
2
|
|
13
|
+
)}`" :style="`${gridLayoutString}`" v-if="element.product_link_text">{{ element.product_link_text }}</a>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-logo-widget.vue
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const imageType = 'image';
|
|
7
|
+
let postType = props.post.post_data.post_type;
|
|
8
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<div :class="`${blockClassname}__media-image-container ${blockClassname}__info-item`" :href="props.post.link"
|
|
12
|
+
v-if="element.acf_fc_layout == 'product-logo'" :style="`${gridLayoutString}`">
|
|
13
|
+
<img :class="`${blockClassname}__post-image ${blockClassname}__media-${imageType} style-svg`" loading="lazy"
|
|
14
|
+
:src="props.post.post_images['post_' + imageType + '_src']"
|
|
15
|
+
:width="props.post.post_images['post_' + imageType + '_width']"
|
|
16
|
+
:height="props.post.post_images['post_' + imageType + '_height']"
|
|
17
|
+
:srcset="props.post.post_images['post_' + imageType + '_srcset']"
|
|
18
|
+
sizes="(max-width: 414px) 100px, (max-width: 768px) 150px, (max-width: 1024px) 200px, (max-width: 1440px) 275px, (max-width: 1800px) 300px"
|
|
19
|
+
:alt="props.post.post_images['post_' + imageType + '_alt_text']"
|
|
20
|
+
:style="`--post-image-width: ${element.post_image_width}%;`" />
|
|
21
|
+
</div>
|
|
22
|
+
</template>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-link ${blockClassname}__info-item ${props.element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString}`">
|
|
13
|
+
<h4 :class="`${element.text_style?.typography_style.slice(2)}`"
|
|
14
|
+
:style="`--text-align: ${props.element.text_style?.text_align.slice(2)}; --text-transform: ${props.element.text_style?.text_transform.slice(2)}; --font-weight: ${props.element.text_style.text_font_weight.slice(2)}; --text-colour: ${textColour}`">
|
|
15
|
+
{{ props.post.post_data?.product_name }}</h4>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-nose ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
{{ props.post.post_data.product_nose }}
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__price ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<span>{{ post.post_data.product_price }}</span>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-c7-slug ${blockClassname}__info-item`"
|
|
11
|
+
:style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
12
|
+
<div class="c7-buy-product c7-buy-variant" :data-product-slug="`${props.post.post_data.c7_slug}`"></div>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="`${blockClassname}__product-taste ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
11
|
+
2
|
|
12
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`">
|
|
13
|
+
<h4 v-if="element.headline_text">{{ element.headline_text }}</h4>
|
|
14
|
+
{{ post.post_data.product_taste }}
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-whisky-type.vue
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { gridLayoutElement, textEditorStyles } from "./ptfg-utils.vue";
|
|
3
|
+
|
|
4
|
+
const props = defineProps(["post", "element"]);
|
|
5
|
+
const blockClassname = "post-type-filter-grid-v3";
|
|
6
|
+
const gridLayoutString = gridLayoutElement(props);
|
|
7
|
+
const textEditorStylesString = textEditorStyles(props);
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
<template>
|
|
12
|
+
<div :class="`${blockClassname}__product-whisky-type ${blockClassname}__info-item ${element.text_style?.typography_style.slice(
|
|
13
|
+
2
|
|
14
|
+
)}`" :style="`${gridLayoutString} ${textEditorStylesString}`" v-if="post.post_data.product_whisky_type">
|
|
15
|
+
<p :class="`${element.text_style?.typography_style.slice(2)}`" :style="`--text-align: ${element.text_style?.text_align.slice(
|
|
16
|
+
2
|
|
17
|
+
)}; --text-transform: ${element.text_style?.text_transform.slice(
|
|
18
|
+
2
|
|
19
|
+
)}; --font-weight: ${element.text_style.text_font_weight.slice(
|
|
20
|
+
2
|
|
21
|
+
)}; --text-colour: ${textColour}`">
|
|
22
|
+
{{ post.post_data.product_whisky_type }}
|
|
23
|
+
</p>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|