@dcodegroup-au/page-builder 0.6.1 → 0.6.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcodegroup-au/page-builder",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/page-builder.es.js"
@@ -16,17 +16,17 @@
16
16
  <input-wrapper
17
17
  is-vertical
18
18
  field="title"
19
- label-text="Title *"
19
+ :label-text="item?.title_label ? item.title_label : 'Title *'"
20
20
  class="w-full"
21
21
  :value="form.title"
22
- :limit="51"
22
+ :limit="100"
23
23
  >
24
24
  <input
25
25
  v-model="form.title"
26
26
  name="title"
27
27
  type="text"
28
28
  placeholder="Title"
29
- :maxlength="51"
29
+ :maxlength="100"
30
30
  class="border-1 border-solid border-gray-300 rounded-lg bg-white w-full"
31
31
  />
32
32
  </input-wrapper>
@@ -34,7 +34,7 @@
34
34
  <input-wrapper
35
35
  is-vertical
36
36
  field="description"
37
- label-text="Supporting Text *"
37
+ :label-text="item?.description_label ? item.description_label : 'Supporting Text *'"
38
38
  class="w-full mb-4"
39
39
  :value="descriptionWordCount"
40
40
  :show-count="true"
@@ -2,6 +2,7 @@
2
2
  <div class="page-render">
3
3
  <div v-for="(section, index) in page.sections">
4
4
  <component
5
+ :id="`section-${index}`"
5
6
  :is="currentComponent(section)"
6
7
  :key="index"
7
8
  :section="section"
@@ -38,13 +38,13 @@
38
38
  <div
39
39
  :class="[
40
40
  'p-8 rounded-[20px] text-left min-h-full',
41
- activeMembership.theme === 'dark' ? 'bg-navy-25' : 'bg-brand-25'
41
+ 'bg-brand-25'
42
42
  ]"
43
43
  >
44
44
  <span
45
45
  :class="[
46
46
  'w-12 h-12 flex items-center justify-center rounded-full mb-4',
47
- activeMembership.theme === 'dark' ? 'bg-navy-100 text-navy-600' : 'bg-brand-100 text-brand-600'
47
+ 'bg-brand-100 text-brand-600'
48
48
  ]"
49
49
  >
50
50
  <StarIcon class="w-5 h-5"></StarIcon>
@@ -52,7 +52,7 @@
52
52
  <h3
53
53
  :class="[
54
54
  'text-4xl leading-10 font-semibold mb-4',
55
- activeMembership.theme === 'dark' ? 'text-navy-700' : 'text-brand-700'
55
+ 'text-brand-700'
56
56
  ]"
57
57
  >
58
58
  {{ activeMembership.name }}
@@ -81,7 +81,7 @@
81
81
  </ul>
82
82
  </div>
83
83
 
84
- <div v-if="activeMembership.excludes" class="flex-1">
84
+ <div v-if="activeMembership.excludes && activeMembership.excludes?.list?.length" class="flex-1">
85
85
  <h4 class="font-bold text-gray-900 leading-6 mb-6">{{ activeMembership.excludes.title }}</h4>
86
86
  <ul>
87
87
  <li
@@ -102,10 +102,7 @@
102
102
  <!-- CTA Button -->
103
103
  <a
104
104
  :href="activeMembership.url"
105
- class="py-3 px-6 rounded-full font-semibold flex items-center justify-center transition-colors"
106
- :class="activeMembership.theme === 'dark'
107
- ? 'bg-brand-800 text-white hover:bg-brand-700'
108
- : 'bg-navy-600 text-white hover:bg-navy-500'"
105
+ class="py-3 px-6 rounded-full font-semibold flex items-center justify-center transition-colors bg-brand-600 text-white hover:bg-brand-700"
109
106
  >
110
107
  {{ activeMembership.button.label }}
111
108
  <span class="ml-2"><ArrowUpRight class="w-5 h-5"></ArrowUpRight></span>
@@ -152,7 +149,7 @@ const activeMembership = computed(() =>
152
149
  <style scoped>
153
150
  .fade-enter-active,
154
151
  .fade-leave-active {
155
- transition: opacity 0.4s ease;
152
+ transition: opacity 0.1s ease;
156
153
  }
157
154
  .fade-enter-from,
158
155
  .fade-leave-to {
@@ -14,7 +14,7 @@
14
14
  :target="headerComponent.secondary_button.open_in_new_tab ? '_blank' : ''">
15
15
  <span>{{ headerComponent.secondary_button.label }}</span>
16
16
  </a>
17
- <a class="hover:bg-brand-600 bg-brand-500 text-white h-[40px] rounded-full px-[14px] py-[10px] inline-flex gap-1.5 items-center shadow-xs text-base"
17
+ <a class="bg-brand-600 hover:bg-brand-800 text-white h-[40px] rounded-full px-[14px] py-[10px] inline-flex gap-1.5 items-center shadow-xs text-base"
18
18
  :href="formatUrl(headerComponent.primary_button.url)"
19
19
  v-if="headerComponent.primary_button.show"
20
20
  :target="headerComponent.primary_button.open_in_new_tab ? '_blank' : ''">
@@ -17,19 +17,19 @@
17
17
  <Star class="w-5 h-5 text-yellow-100"></Star>
18
18
  </template>
19
19
  </span>
20
- <h3 class="font-medium text-3xl leading-9">{{ feature.title }}</h3>
21
- <p class="text-gray-600" v-html="feature.description"></p>
20
+ <h3 class="font-semibold text-3xl leading-9" v-html="feature.description"></h3>
21
+ <p class="text-gray-600">{{ feature.title }}</p>
22
22
  </article>
23
- <div class="w-[30rem]">
23
+ <div class="h-[480px] w-[560px]">
24
24
  <img
25
25
  v-if="feature.featured_image"
26
26
  :src="feature.featured_image"
27
27
  alt="Audience smiling"
28
- class="rounded-tl-3xl rounded-br-3xl"
28
+ class="rounded-tl-3xl rounded-br-3xl w-full h-full object-cover"
29
29
  />
30
30
  <img
31
31
  v-else
32
- class="rounded-tl-3xl rounded-br-3xl"
32
+ class="rounded-tl-3xl rounded-br-3xl object-cover"
33
33
  src="@/assets/img/no_image_available.jpeg"
34
34
  alt="No Image Available">
35
35
  </div>
@@ -38,21 +38,23 @@
38
38
  </div>
39
39
 
40
40
  <!-- Controls -->
41
- <footer class="flex max-w-[1640px] md:px-[120px] mx-auto w-full gap-4 absolute bottom-10 left-20">
42
- <button
43
- type="button"
44
- @click="prevSlide"
45
- class="w-12 h-12 border border-gray-200 rounded-full flex items-center justify-center bg-gray-50"
46
- >
47
- <ArrowLeft class="w-6 h-6 text-gray-500"></ArrowLeft>
48
- </button>
49
- <button
50
- type="button"
51
- @click="nextSlide"
52
- class="w-12 h-12 border border-gray-200 rounded-full flex items-center justify-center bg-gray-50"
53
- >
54
- <ArrowRight class="w-6 h-6 text-gray-500"></ArrowRight>
55
- </button>
41
+ <footer class="flex max-w-[1640px] md:px-[120px] mx-auto w-full gap-4 relative">
42
+ <div class="absolute bottom-[40px] left-[120px] w-full gap-4 flex">
43
+ <button
44
+ type="button"
45
+ @click="prevSlide"
46
+ class="w-12 h-12 border border-gray-200 rounded-full flex items-center justify-center bg-gray-50"
47
+ >
48
+ <ArrowLeft class="w-6 h-6 text-gray-500"></ArrowLeft>
49
+ </button>
50
+ <button
51
+ type="button"
52
+ @click="nextSlide"
53
+ class="w-12 h-12 border border-gray-200 rounded-full flex items-center justify-center bg-gray-50"
54
+ >
55
+ <ArrowRight class="w-6 h-6 text-gray-500"></ArrowRight>
56
+ </button>
57
+ </div>
56
58
  </footer>
57
59
  </div>
58
60
  </section>
@@ -25,7 +25,7 @@
25
25
  <div :class="featureItemsComponent.hasOwnProperty('grid_columns') ? '' : 'flex flex-row gap-8'">
26
26
  <div class="grid gap-8"
27
27
  :class="featureItemsComponent.hasOwnProperty('grid_columns') ? `grid-cols-${featureItemsComponent.grid_columns}` : 'grid-cols-2 w-2/3'">
28
- <div v-for="item in featureItemsComponent.data"
28
+ <div v-for="item in items"
29
29
  class="flex gap-3 w-full"
30
30
  :class="{
31
31
  'bg-gray-50 p-8 rounded-[24px] overflow-hidden flex-col' : featureItemsComponent.hasOwnProperty('grid_columns') && (featureItemsComponent.grid_columns > 2 || featureItemsComponent?.has_background),
@@ -36,11 +36,11 @@
36
36
  class="max-w-[48px] min-w-[48px] w-full h-[48px] bg-brand-100 border-[8px] border-brand-50 rounded-full flex items-center justify-center">
37
37
  <IconComponent :icon="item.icon" icon-classes="w-5 h-5 text-brand-600"></IconComponent>
38
38
  </div>
39
- <div class="max-w-[324px]" :class="{'max-w-full': featureItemsComponent?.has_background}">
39
+ <div class="max-w-[324px] q-editor" :class="{'max-w-full': featureItemsComponent?.has_background}">
40
40
  <h3 class="font-semibold text-[20px] text-gray-900">{{ item.title }}</h3>
41
- <p class="mt-2 text-md font-normal text-gray-600 leading-[24px]">{{ item.supporting_text }}</p>
41
+ <p class="mt-2 text-md font-normal text-gray-600 leading-[24px]" v-html="item.supporting_text ?? item.description"></p>
42
42
  <a
43
- v-if="item?.primary_button?.show && item?.primary_button?.url"
43
+ v-if="item?.primary_button?.show"
44
44
  class="text-brand-700 inline-flex gap-1.5 items-center font-semibold text-base mt-4"
45
45
  :href="formatUrl(item.primary_button.url)"
46
46
  :target="item.primary_button.open_in_new_tab ? '_blank' : ''">
@@ -67,6 +67,7 @@ import IconComponent from "@/components/common/Icon.vue";
67
67
  import {ref, computed, onMounted} from "vue";
68
68
  import {formatUrl} from "@/components/helpers/common";
69
69
  import ArrowUpRight from "@/assets/img/icons/arrow-up-right.svg";
70
+ import "quill/dist/quill.snow.css";
70
71
 
71
72
  const props = defineProps({
72
73
  section: {
@@ -88,6 +89,7 @@ const headerComponent = computed(() => {
88
89
  const imageComponent = computed(() => {
89
90
  return section.value.components.find((component) => component.type === "image_block");
90
91
  });
92
+
91
93
  const featureItemsComponent = computed(() => {
92
94
  let c = section.value.components.find((component) => component.type === "feature_items");
93
95
  if (!c) {
@@ -97,6 +99,16 @@ const featureItemsComponent = computed(() => {
97
99
  return c;
98
100
  });
99
101
 
102
+ const items = computed(() => {
103
+ return (featureItemsComponent.value.data || []).filter(function (o) {
104
+ if (o.hasOwnProperty('public')) {
105
+ return o.public;
106
+ }
107
+
108
+ return true;
109
+ });
110
+ });
111
+
100
112
  onMounted(() => {
101
113
  if (leftColumn.value && rightColumn.value && section.value?.minimum_height) {
102
114
  rightColumn.value.style.height = `${leftColumn.value.offsetHeight}px`;