@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.
Files changed (111) hide show
  1. package/components/block-accordion-v3/accordion-v3.twig +23 -24
  2. package/components/block-betterreviews-display-v3/betterreviews-display-v3.twig +2 -3
  3. package/components/block-block-interactions-v3/block-interactions-v3.twig +7 -9
  4. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.twig +5 -3
  5. package/components/block-cover-link-v3/cover-link-v3.twig +1 -1
  6. package/components/block-divider-v3/divider-v3.twig +1 -1
  7. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.twig +2 -2
  8. package/components/block-featured-image-gallery-v3/group_5f91897095b42.json +162 -7
  9. package/components/block-gradient-layer-v3/gradient-layer-v3.twig +2 -2
  10. package/components/block-group-container-v3/group-container-v3.twig +5 -4
  11. package/components/block-group-container-v3/group_6865578ada499.json +364 -38
  12. package/components/block-lottie-content-v3/lottie-content-v3.twig +5 -7
  13. package/components/block-nav-menu-container-v3/group_687e00b45e9a3.json +96 -66
  14. package/components/block-nav-menu-container-v3/nav-menu-container-v3.twig +9 -8
  15. package/components/block-post-type-filter-grid-v3/group_64690c62487bc.json +3674 -0
  16. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/better-reviews-widget.vue +15 -0
  17. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/buy-now-widget.vue +72 -0
  18. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/cocktail-category.vue +40 -0
  19. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/cocktail-tasting-notes.vue +15 -0
  20. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/divider-widget.vue +11 -0
  21. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/drink-tastes.vue +26 -0
  22. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/featured-post-component.vue +62 -0
  23. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/global-image-widget.vue +23 -0
  24. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/media-widget.vue +23 -0
  25. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-email-widget.vue +20 -0
  26. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-name-widget.vue +15 -0
  27. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-questionaire-widget.vue +17 -0
  28. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/person-rating-widget.vue +25 -0
  29. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-author-widget.vue +15 -0
  30. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-category-widget.vue +20 -0
  31. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-component.vue +130 -0
  32. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-headline-widget.vue +16 -0
  33. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-image-widget.vue +60 -0
  34. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-info-description.vue +14 -0
  35. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-info-subtitle.vue +14 -0
  36. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-link-widget.vue +44 -0
  37. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-publish-widget.vue +44 -0
  38. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-tags-widget.vue +19 -0
  39. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-text-alternative-style.vue +18 -0
  40. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/post-title-widget.vue +20 -0
  41. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/pre-render-posts-html.twig +17 -0
  42. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-abv.vue +18 -0
  43. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-age-statement.vue +17 -0
  44. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-bazaarvoice.vue +15 -0
  45. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-brand.vue +16 -0
  46. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-cask-type.vue +16 -0
  47. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-country.vue +14 -0
  48. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-description.vue +15 -0
  49. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-name.vue +18 -0
  50. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-details-price.vue +15 -0
  51. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-finish.vue +15 -0
  52. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-history.vue +16 -0
  53. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-link.vue +15 -0
  54. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-logo-widget.vue +22 -0
  55. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-name.vue +17 -0
  56. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-nose.vue +16 -0
  57. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-price.vue +15 -0
  58. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-slug.vue +14 -0
  59. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-taste.vue +16 -0
  60. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/product-whisky-type.vue +25 -0
  61. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/ptfg-posts.twig +474 -0
  62. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/ptfg-utils.vue +38 -0
  63. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/shopify-add-to-cart.vue +31 -0
  64. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/social-media-item.vue +58 -0
  65. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/spacer-widget.vue +13 -0
  66. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3/text-search.vue +10 -0
  67. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.js +14 -0
  68. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.php +48 -0
  69. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.scss +1084 -0
  70. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.twig +157 -0
  71. package/components/block-post-type-filter-grid-v3/post-type-filter-grid-v3.vue +938 -0
  72. package/components/block-product-info-v3/product-info-v3.twig +2 -1
  73. package/components/block-scrolling-banner-v3/group_68e67fca1ec80.json +1 -56
  74. package/components/block-scrolling-banner-v3/scrolling-banner-v3.twig +7 -4
  75. package/components/block-section-separator-v3/section-separator-v3.twig +2 -2
  76. package/components/block-single-column-container-v3/single-column-container-v3.twig +1 -1
  77. package/components/block-single-responsive-image-v3/group_6867bcf24c2fc.json +5 -11
  78. package/components/block-single-responsive-image-v3/single-responsive-image-v3.twig +2 -2
  79. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.php +1 -1
  80. package/components/block-site-logo-container-v3/group_687e3b887b508.json +53 -5
  81. package/components/block-site-logo-container-v3/site-logo-container-v3.twig +4 -2
  82. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.twig +2 -2
  83. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.twig +2 -2
  84. package/components/block-standard-content-v3/standard-content-v3.twig +2 -3
  85. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.twig +59 -59
  86. package/components/block-sub-group-container-v3/group_686ceba7d6066.json +197 -56
  87. package/components/block-sub-group-container-v3/sub-group-container-v3.twig +3 -4
  88. package/components/block-video-content-v3/group_687190b8d26df.json +175 -167
  89. package/components/block-video-content-v3/video-content-v3.twig +1 -1
  90. package/components/component-accent-image-v3/group_686cd5547efd2.json +5 -5
  91. package/components/component-block-settings-v3/group_689f649af2ac4.json +22 -1
  92. package/components/component-child-block-video-fields/group_6852a4f384204.json +351 -349
  93. package/components/component-content-box-settings-v3/group_686e6ec702acc.json +1727 -1937
  94. package/components/component-content-box-v3/group_686b8a4f1fe5d.json +50 -1
  95. package/components/component-cta-selection-v3/cta-selection-v3.twig +1 -2
  96. package/components/component-responsive-image-v3/group_6867bc53f1da8.json +4 -31
  97. package/components/component-video-component-v3/video-component-v3.twig +1 -1
  98. package/components/component-video-trigger-button-v3/video-trigger-button-v3.twig +1 -1
  99. package/components/fields-block-editor-assets-v3/block-editor-assets-v3.php +5 -7
  100. 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
  101. package/components/fields-drink-responsibly-notice-v3/group_68751257883ad.json +2 -1
  102. package/components/fields-dynamic-critical-css-v3/group_65abcd463e8d0.json +1 -1
  103. package/components/fields-modal-popup-content-v3/group_689876f1ee3fc.json +403 -0
  104. package/components/fields-modal-popup-content-v3/modal-popup-content-v3.twig +18 -0
  105. package/package.json +3 -2
  106. package/components/block-smash-balloon-social-media-v3/group_6890a2ab0e0a9.json +0 -143
  107. package/components/fields-buy-now-button/group_658432636bde2.json +0 -340
  108. package/components/fields-cta-icons-v3/group_677ed96c3c64f.json +0 -822
  109. package/components/fields-design-system-v3/group_6870e9e74a347.json +0 -743
  110. package/components/fields-site-logos-v3/group_6877b1697bf9f.json +0 -149
  111. package/components/fields-typography-settings-v3/group_6876149264002.json +0 -5636
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>