@myissue/vue-website-page-builder 3.0.18 → 3.0.20

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 (54) hide show
  1. package/README.md +63 -76
  2. package/dist/page-builder/2-images-text.png +0 -0
  3. package/dist/page-builder/3-images-text.png +0 -0
  4. package/dist/page-builder/3-vertical-images.png +0 -0
  5. package/dist/page-builder/4-images-text.png +0 -0
  6. package/dist/vue-website-page-builder.css +1 -1
  7. package/dist/vue-website-page-builder.js +7203 -7296
  8. package/dist/vue-website-page-builder.umd.cjs +146 -81
  9. package/package.json +4 -3
  10. package/src/App.vue +4 -115
  11. package/src/Components/Homepage/HomeSection.vue +70 -162
  12. package/src/Components/MediaLibrary/SidebarUnsplash.vue +9 -16
  13. package/src/Components/MediaLibrary/Unsplash.vue +51 -91
  14. package/src/Components/Modals/MediaLibraryModal.vue +56 -318
  15. package/src/Components/Modals/PageBuilderPreviewModal.vue +22 -40
  16. package/src/Components/PageBuilder/AdvancedPageBuilderSettings.vue +7 -0
  17. package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +165 -110
  18. package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +9 -16
  19. package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +18 -18
  20. package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +16 -21
  21. package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +12 -12
  22. package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +10 -9
  23. package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +9 -9
  24. package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +144 -136
  25. package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +9 -10
  26. package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +31 -27
  27. package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +20 -14
  28. package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +9 -10
  29. package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +9 -10
  30. package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +16 -16
  31. package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +9 -16
  32. package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +22 -20
  33. package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +25 -27
  34. package/src/Components/PageBuilder/NoneCustomMediaLibraryComponent.vue +3 -0
  35. package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +91 -0
  36. package/src/Components/PageBuilder/PageBuilderSettings.vue +8 -0
  37. package/src/Components/PageBuilder/Settings/AdvancedPageBuilderSettings.vue +31 -72
  38. package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +32 -36
  39. package/src/Components/Search/SearchComponents.vue +11 -199
  40. package/src/Components/TipTap/TipTap.vue +8 -7
  41. package/src/Components/TipTap/TipTapInput.vue +136 -134
  42. package/src/PageBuilder/PageBuilder.vue +220 -32
  43. package/src/composables/{PageBuilder.ts → PageBuilderClass.ts} +223 -142
  44. package/src/composables/usePageBuilderModal.ts +25 -0
  45. package/src/index.ts +8 -2
  46. package/src/stores/media-library.ts +1 -5
  47. package/src/stores/page-builder-state.ts +52 -36
  48. package/src/stores/user.ts +8 -6
  49. package/src/types/global.d.ts +6 -44
  50. package/src/types/index.ts +169 -0
  51. package/src/utils/html-elements/component.ts +88 -0
  52. package/src/utils/html-elements/componentHelpers.ts +101 -0
  53. package/src/Components/Modals/PageBuilderModal.vue +0 -233
  54. package/src/utils/builder/html-elements/componentHelpers.ts +0 -101
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
- import Modal from '@/Components/Modals/Modal.vue';
3
- import { delay } from '@/composables/delay';
2
+ import { computed, inject } from 'vue'
3
+ import { delay } from '@/composables/delay'
4
4
 
5
5
  import {
6
6
  Dialog,
@@ -8,11 +8,11 @@ import {
8
8
  DialogTitle,
9
9
  TransitionChild,
10
10
  TransitionRoot,
11
- } from '@headlessui/vue';
12
- import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue';
13
- import { useUserStore } from '@/stores/user';
11
+ } from '@headlessui/vue'
12
+ import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'
14
13
 
15
- const userStore = useUserStore();
14
+ // Get stores from parent PageBuilder component
15
+ const userStore = inject('userStore')
16
16
 
17
17
  defineProps({
18
18
  show: {
@@ -20,30 +20,27 @@ defineProps({
20
20
  default: false,
21
21
  required: true,
22
22
  },
23
- });
23
+ })
24
24
 
25
- const emit = defineEmits(['firstPageBuilderPreviewModalButton']);
25
+ const emit = defineEmits(['firstPageBuilderPreviewModalButton'])
26
26
 
27
27
  // first button function
28
28
  const firstButton = async function () {
29
- emit('firstPageBuilderPreviewModalButton');
29
+ emit('firstPageBuilderPreviewModalButton')
30
30
 
31
- userStore.setIsLoading(true);
32
- await delay();
33
- userStore.setIsLoading(false);
34
- };
31
+ userStore.setIsLoading(true)
32
+ await delay()
33
+ userStore.setIsLoading(false)
34
+ }
35
35
 
36
36
  const handleEscapeKey = function () {
37
- firstButton();
38
- };
37
+ firstButton()
38
+ }
39
39
  </script>
40
40
 
41
41
  <template>
42
42
  <teleport to="body">
43
- <TransitionRoot
44
- :show="show"
45
- as="template"
46
- >
43
+ <TransitionRoot :show="show" as="template">
47
44
  <Dialog
48
45
  @close="firstButton"
49
46
  @keydown.escape.prevent="handleEscapeKey"
@@ -51,9 +48,7 @@ const handleEscapeKey = function () {
51
48
  class="fixed z-30 inset-0 overflow-y-auto focus:outline-none"
52
49
  tabindex="0"
53
50
  >
54
- <div
55
- class="flex items-end justify-center pb-20 text-center sm:block sm:p-0 bg-white"
56
- >
51
+ <div class="flex items-end justify-center pb-20 text-center sm:block sm:p-0 bg-white">
57
52
  <TransitionChild
58
53
  as="template"
59
54
  enter="ease-out duration-100"
@@ -63,15 +58,11 @@ const handleEscapeKey = function () {
63
58
  leave-from="opacity-100"
64
59
  leave-to="opacity-100"
65
60
  >
66
- <DialogOverlay
67
- class="fixed inset-0 bg-opacity-75 transition-opacity"
68
- />
61
+ <DialogOverlay class="fixed inset-0 bg-opacity-75 transition-opacity" />
69
62
  </TransitionChild>
70
63
 
71
64
  <!-- This element is to trick the browser into centering the modal contents. -->
72
- <span
73
- aria-hidden="true"
74
- class="hidden sm:inline-block sm:align-middle sm:h-screen"
65
+ <span aria-hidden="true" class="hidden sm:inline-block sm:align-middle sm:h-screen"
75
66
  >&#8203;</span
76
67
  >
77
68
  <TransitionChild
@@ -89,23 +80,14 @@ const handleEscapeKey = function () {
89
80
  <div
90
81
  class="px-4 px-4 lg:h-[10vh] h-[16vh] flex items-center justify-between border-b border-gray-200 bg-white"
91
82
  >
92
- <button
93
- type="button"
94
- @click="firstButton"
95
- >
96
- <img
97
- class="h-6"
98
- src="/logo/logo.svg"
99
- alt="Logo"
100
- />
83
+ <button type="button" @click="firstButton">
84
+ <img class="h-6" src="/logo/logo.svg" alt="Logo" />
101
85
  </button>
102
86
  <div
103
87
  @click="firstButton"
104
88
  class="flex items-center justify-center gap-1 cursor-pointer"
105
89
  >
106
- <span class="myPrimaryParagraph font-medium">
107
- Close Preview
108
- </span>
90
+ <span class="myPrimaryParagraph font-medium"> Close Preview </span>
109
91
  <div
110
92
  class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
111
93
  >
@@ -0,0 +1,7 @@
1
+ <script setup>
2
+ import { ref, computed, inject } from 'vue'
3
+ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
4
+
5
+ // Get stores from parent PageBuilder component
6
+ const pageBuilderStateStore = inject('pageBuilderStateStore')
7
+ </script>
@@ -1,18 +1,27 @@
1
1
  <script setup>
2
2
  import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'
3
- import PageBuilder from '@/composables/PageBuilder.ts'
4
- import { ref, computed } from 'vue'
3
+ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
4
+ import { ref, computed, inject } from 'vue'
5
5
  import PageBuilderPreviewModal from '@/Components/Modals/PageBuilderPreviewModal.vue'
6
6
  import Preview from '@/PageBuilder/Preview.vue'
7
7
  import SlideOverRight from '@/Components/PageBuilder/Slidebars/SlideOverRight.vue'
8
8
  import PageBuilderSettings from '@/Components/PageBuilder/Settings/PageBuilderSettings.vue'
9
9
  import DynamicModal from '@/Components/Modals/DynamicModal.vue'
10
- import { usePageBuilderStateStore } from '@/stores/page-builder-state'
11
- import { useMediaLibraryStore } from '@/stores/media-library'
12
10
 
13
- const mediaLibraryStore = useMediaLibraryStore()
14
- const pageBuilderStateStore = usePageBuilderStateStore()
15
- const pageBuilder = new PageBuilder(pageBuilderStateStore, mediaLibraryStore)
11
+ // Get stores from parent PageBuilder component
12
+ const pageBuilderStateStore = inject('pageBuilderStateStore')
13
+ const mediaLibraryStore = inject('mediaLibraryStore')
14
+ const userStore = inject('userStore')
15
+
16
+ const getCurrentUser = computed(() => {
17
+ return userStore.getCurrentUser
18
+ })
19
+
20
+ const getCurrentResourceData = computed(() => {
21
+ return pageBuilderStateStore.getCurrentResourceData
22
+ })
23
+
24
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
16
25
  const emit = defineEmits(['previewCurrentDesign'])
17
26
 
18
27
  const showModalDeleteAllComponents = ref(false)
@@ -63,7 +72,7 @@ const deleteAllComponents = function () {
63
72
  //
64
73
  // handle click
65
74
  thirdModalButtonFunction.value = function () {
66
- pageBuilder.deleteAllComponents()
75
+ pageBuilderClass.deleteAllComponents()
67
76
  pageBuilderStateStore.setComponents(null)
68
77
  showModalDeleteAllComponents.value = false
69
78
  }
@@ -86,117 +95,163 @@ const settingsSlideOverButton = function () {
86
95
  </script>
87
96
 
88
97
  <template>
89
- <SlideOverRight
90
- :open="showSettingsSlideOverRight"
91
- :title="titleSettingsSlideOverRight"
92
- @slideOverButton="settingsSlideOverButton"
93
- >
94
- <PageBuilderSettings> </PageBuilderSettings>
95
- </SlideOverRight>
96
- <DynamicModal
97
- :show="showModalDeleteAllComponents"
98
- :type="typeModal"
99
- :gridColumnAmount="gridColumnModal"
100
- :title="titleModal"
101
- :description="descriptionModal"
102
- :firstButtonText="firstButtonModal"
103
- :secondButtonText="secondButtonModal"
104
- :thirdButtonText="thirdButtonModal"
105
- @firstModalButtonFunction="firstModalButtonFunction"
106
- @secondModalButtonFunction="secondModalButtonFunction"
107
- @thirdModalButtonFunction="thirdModalButtonFunction"
108
- >
109
- <header></header>
110
- <main></main>
111
- </DynamicModal>
112
- <Menu as="div" class="myPrimaryParagraph relative lg:inline-block hidden text-left">
113
- <div>
114
- <MenuButton
115
- class="inline-flex items-center gap-2 justify-center w-full rounded-md border border-gray-300 shadow-sm pl-4 pr-6 py-2 bg-white text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-emerald-600"
116
- >
117
- <span class="material-symbols-outlined text-[16px]"> keyboard_command_key </span>
118
- <span class="text-sm"> Options </span>
119
- </MenuButton>
120
- </div>
121
-
122
- <transition
123
- enter-active-class="transition ease-out duration-100"
124
- enter-from-class="transform opacity-0 scale-95"
125
- enter-to-class="transform opacity-100 scale-100"
126
- leave-active-class="transition ease-in duration-75"
127
- leave-from-class="transform opacity-100 scale-100"
128
- leave-to-class="transform opacity-0 scale-95"
98
+ <div>
99
+ <SlideOverRight
100
+ :open="showSettingsSlideOverRight"
101
+ :title="titleSettingsSlideOverRight"
102
+ @slideOverButton="settingsSlideOverButton"
129
103
  >
130
- <MenuItems
131
- class="z-50 origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 divide-y divide-gray-100 focus:outline-none"
104
+ <PageBuilderSettings> </PageBuilderSettings>
105
+ </SlideOverRight>
106
+ <DynamicModal
107
+ :show="showModalDeleteAllComponents"
108
+ :type="typeModal"
109
+ :gridColumnAmount="gridColumnModal"
110
+ :title="titleModal"
111
+ :description="descriptionModal"
112
+ :firstButtonText="firstButtonModal"
113
+ :secondButtonText="secondButtonModal"
114
+ :thirdButtonText="thirdButtonModal"
115
+ @firstModalButtonFunction="firstModalButtonFunction"
116
+ @secondModalButtonFunction="secondModalButtonFunction"
117
+ @thirdModalButtonFunction="thirdModalButtonFunction"
118
+ >
119
+ <header></header>
120
+ <main></main>
121
+ </DynamicModal>
122
+ <Menu as="div" class="myPrimaryParagraph relative lg:inline-block hidden text-left">
123
+ <div>
124
+ <MenuButton
125
+ class="inline-flex items-center gap-2 justify-center w-full rounded-md border border-gray-300 shadow-sm pl-4 pr-6 py-2 bg-white text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-emerald-600"
126
+ >
127
+ <span class="material-symbols-outlined text-[16px]"> keyboard_command_key </span>
128
+ <span class="text-sm"> Options </span>
129
+ </MenuButton>
130
+ </div>
131
+
132
+ <transition
133
+ enter-active-class="transition ease-out duration-100"
134
+ enter-from-class="transform opacity-0 scale-95"
135
+ enter-to-class="transform opacity-100 scale-100"
136
+ leave-active-class="transition ease-in duration-75"
137
+ leave-from-class="transform opacity-100 scale-100"
138
+ leave-to-class="transform opacity-0 scale-95"
132
139
  >
133
- <div class="py-1">
134
- <MenuItem v-slot="{ active }">
135
- <div
136
- @click="handlePageBuilderPreview"
137
- class="cursor-pointer"
138
- :class="[
139
- active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
140
- 'block px-4 py-2',
141
- ]"
142
- >
143
- <div class="flex items-center justify-left gap-2 text-sm">
140
+ <MenuItems
141
+ class="z-50 origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 divide-y divide-gray-100 focus:outline-none"
142
+ >
143
+ <div class="py-1">
144
+ <template v-if="getCurrentUser && getCurrentUser.name">
145
+ <MenuItem v-slot="{ active }">
144
146
  <div
145
- class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
147
+ class="cursor-defualt"
148
+ :class="[
149
+ active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
150
+ 'block px-4 py-2',
151
+ ]"
146
152
  >
147
- <span class="material-symbols-outlined text-[16px]"> visibility </span>
153
+ <div class="flex items-center justify-left gap-2 text-sm">
154
+ <div
155
+ class="h-8 w-8 cursor-defualt rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
156
+ >
157
+ <span class="material-symbols-outlined text-[16px]"> person </span>
158
+ </div>
159
+ <div>
160
+ {{ getCurrentUser.name }}
161
+ </div>
162
+ </div>
148
163
  </div>
149
- Preview
150
- </div>
151
- </div>
152
- </MenuItem>
153
-
154
- <MenuItem v-slot="{ active }">
155
- <div
156
- @click="handleSettingsSlideOver"
157
- class="cursor-pointer"
158
- :class="[
159
- active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
160
- 'block px-4 py-2',
161
- ]"
162
- >
163
- <div class="flex items-center justify-left gap-2 text-sm">
164
+ </MenuItem>
165
+ </template>
166
+ <template v-if="getCurrentResourceData && getCurrentResourceData.title">
167
+ <MenuItem v-slot="{ active }">
164
168
  <div
165
- class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
169
+ class="cursor-default"
170
+ :class="[
171
+ active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
172
+ 'block px-4 py-2',
173
+ ]"
166
174
  >
167
- <span class="material-symbols-outlined text-[16px]"> settings </span>
175
+ <div class="flex items-center justify-left gap-2 text-sm">
176
+ <div
177
+ class="h-8 w-8 cursor-default rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
178
+ >
179
+ <span class="material-symbols-outlined text-[16px]"> post </span>
180
+ </div>
181
+ <div>
182
+ {{ getCurrentResourceData.title }}
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </MenuItem>
187
+ </template>
188
+ <MenuItem v-slot="{ active }">
189
+ <div
190
+ @click="handlePageBuilderPreview"
191
+ class="cursor-pointer"
192
+ :class="[
193
+ active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
194
+ 'block px-4 py-2',
195
+ ]"
196
+ >
197
+ <div class="flex items-center justify-left gap-2 text-sm">
198
+ <div
199
+ class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
200
+ >
201
+ <span class="material-symbols-outlined text-[16px]"> visibility </span>
202
+ </div>
203
+ Preview
168
204
  </div>
169
- Settings
170
205
  </div>
171
- </div>
172
- </MenuItem>
173
- <MenuItem v-slot="{ active }">
174
- <div
175
- @click="deleteAllComponents"
176
- class="cursor-pointer"
177
- :class="[
178
- active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
179
- 'block px-4 py-2',
180
- ]"
181
- >
182
- <div class="flex items-center justify-left gap-2 text-sm">
183
- <div
184
- class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryErrorColor hover:text-white text-myPrimaryErrorColor"
185
- >
186
- <span class="myMediumIcon material-symbols-outlined text-[16px]"> delete </span>
206
+ </MenuItem>
207
+
208
+ <MenuItem v-slot="{ active }">
209
+ <div
210
+ @click="handleSettingsSlideOver"
211
+ class="cursor-pointer"
212
+ :class="[
213
+ active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
214
+ 'block px-4 py-2',
215
+ ]"
216
+ >
217
+ <div class="flex items-center justify-left gap-2 text-sm">
218
+ <div
219
+ class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
220
+ >
221
+ <span class="material-symbols-outlined text-[16px]"> settings </span>
222
+ </div>
223
+ Settings
187
224
  </div>
188
- <span class="group-hover:text-white"> Clear page </span>
189
225
  </div>
190
- </div>
191
- </MenuItem>
192
- </div>
193
- </MenuItems>
194
- </transition>
195
- </Menu>
196
- <PageBuilderPreviewModal
197
- :show="openPageBuilderPreviewModal"
198
- @firstPageBuilderPreviewModalButton="firstPageBuilderPreviewModalButton"
199
- >
200
- <Preview></Preview>
201
- </PageBuilderPreviewModal>
226
+ </MenuItem>
227
+ <MenuItem v-slot="{ active }">
228
+ <div
229
+ @click="deleteAllComponents"
230
+ class="cursor-pointer"
231
+ :class="[
232
+ active ? 'bg-myPrimaryLightGrayColor text-gray-900' : 'text-gray-700',
233
+ 'block px-4 py-2',
234
+ ]"
235
+ >
236
+ <div class="flex items-center justify-left gap-2 text-sm">
237
+ <div
238
+ class="h-8 w-8 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryErrorColor hover:text-white text-myPrimaryErrorColor"
239
+ >
240
+ <span class="myMediumIcon material-symbols-outlined text-[16px]"> delete </span>
241
+ </div>
242
+ <span class="group-hover:text-white"> Clear page </span>
243
+ </div>
244
+ </div>
245
+ </MenuItem>
246
+ </div>
247
+ </MenuItems>
248
+ </transition>
249
+ </Menu>
250
+ <PageBuilderPreviewModal
251
+ :show="openPageBuilderPreviewModal"
252
+ @firstPageBuilderPreviewModalButton="firstPageBuilderPreviewModalButton"
253
+ >
254
+ <Preview></Preview>
255
+ </PageBuilderPreviewModal>
256
+ </div>
202
257
  </template>
@@ -1,20 +1,13 @@
1
1
  <script setup>
2
+ import { ref, computed, inject, watch } from 'vue'
3
+ import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headlessui/vue'
4
+ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
2
5
  import tailwindColors from '@/utils/builder/tailwaind-colors'
3
- import PageBuilder from '@/composables/PageBuilder.ts'
4
- import { computed, ref, watch } from 'vue'
5
- import {
6
- Listbox,
7
- ListboxButton,
8
- ListboxLabel,
9
- ListboxOption,
10
- ListboxOptions,
11
- } from '@headlessui/vue'
12
- import { usePageBuilderStateStore } from '@/stores/page-builder-state'
13
- import { useMediaLibraryStore } from '@/stores/media-library'
14
6
 
15
- const mediaLibraryStore = useMediaLibraryStore()
16
- const pageBuilderStateStore = usePageBuilderStateStore()
17
- const pageBuilder = new PageBuilder(pageBuilderStateStore, mediaLibraryStore)
7
+ // Get stores from parent PageBuilder component
8
+ const pageBuilderStateStore = inject('pageBuilderStateStore')
9
+ const mediaLibraryStore = inject('mediaLibraryStore')
10
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
18
11
  const backgroundColor = ref(null)
19
12
  const getBackgroundColor = computed(() => {
20
13
  return pageBuilderStateStore.getBackgroundColor
@@ -24,7 +17,7 @@ watch(
24
17
  getBackgroundColor,
25
18
  (newValue) => {
26
19
  backgroundColor.value = newValue
27
- pageBuilder.handlePageBuilderMethods()
20
+ pageBuilderClass.handlePageBuilderMethods()
28
21
  },
29
22
  { immediate: true },
30
23
  )
@@ -60,7 +53,7 @@ watch(
60
53
  <ListboxOption
61
54
  as="template"
62
55
  v-for="color in tailwindColors.backgroundColorVariables"
63
- @click="pageBuilder.handleBackgroundColor(backgroundColor)"
56
+ @click="pageBuilderClass.handleBackgroundColor(backgroundColor)"
64
57
  :key="color"
65
58
  :value="color"
66
59
  v-slot="{ active, backgroundColor }"
@@ -1,14 +1,14 @@
1
1
  <script setup>
2
+ import { ref, computed, inject, watch } from 'vue'
3
+ import EditorAccordion from '../EditorAccordion.vue'
4
+ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
2
5
  import tailwindBorderRadius from '@/utils/builder/tailwind-border-radius'
3
- import PageBuilder from '@/composables/PageBuilder.ts'
4
- import EditorAccordion from '@/Components/PageBuilder/EditorMenu/EditorAccordion.vue'
5
- import { computed, ref, watch } from 'vue'
6
- import { usePageBuilderStateStore } from '@/stores/page-builder-state'
7
- import { useMediaLibraryStore } from '@/stores/media-library'
8
6
 
9
- const mediaLibraryStore = useMediaLibraryStore()
10
- const pageBuilderStateStore = usePageBuilderStateStore()
11
- const pageBuilder = new PageBuilder(pageBuilderStateStore, mediaLibraryStore)
7
+ // Get stores from parent PageBuilder component
8
+ const pageBuilderStateStore = inject('pageBuilderStateStore')
9
+ const mediaLibraryStore = inject('mediaLibraryStore')
10
+
11
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
12
12
  const borderRadiusGlobal = ref(null)
13
13
  const borderRadiusTopLeft = ref(null)
14
14
  const borderRadiusTopRight = ref(null)
@@ -34,7 +34,7 @@ watch(
34
34
  getBorderRadiusGlobal,
35
35
  (newValue) => {
36
36
  borderRadiusGlobal.value = newValue
37
- pageBuilder.handlePageBuilderMethods()
37
+ pageBuilderClass.handlePageBuilderMethods()
38
38
  },
39
39
  { immediate: true },
40
40
  )
@@ -42,7 +42,7 @@ watch(
42
42
  getBorderRadiusTopLeft,
43
43
  (newValue) => {
44
44
  borderRadiusTopLeft.value = newValue
45
- pageBuilder.handlePageBuilderMethods()
45
+ pageBuilderClass.handlePageBuilderMethods()
46
46
  },
47
47
  { immediate: true },
48
48
  )
@@ -50,7 +50,7 @@ watch(
50
50
  getBorderRadiusTopRight,
51
51
  (newValue) => {
52
52
  borderRadiusTopRight.value = newValue
53
- pageBuilder.handlePageBuilderMethods()
53
+ pageBuilderClass.handlePageBuilderMethods()
54
54
  },
55
55
  { immediate: true },
56
56
  )
@@ -58,7 +58,7 @@ watch(
58
58
  getBorderRadiusBottomleft,
59
59
  (newValue) => {
60
60
  borderRadiusBottomleft.value = newValue
61
- pageBuilder.handlePageBuilderMethods()
61
+ pageBuilderClass.handlePageBuilderMethods()
62
62
  },
63
63
  { immediate: true },
64
64
  )
@@ -66,7 +66,7 @@ watch(
66
66
  getBorderRadiusBottomRight,
67
67
  (newValue) => {
68
68
  borderRadiusBottomRight.value = newValue
69
- pageBuilder.handlePageBuilderMethods()
69
+ pageBuilderClass.handlePageBuilderMethods()
70
70
  },
71
71
  { immediate: true },
72
72
  )
@@ -82,7 +82,7 @@ watch(
82
82
  <select
83
83
  v-model="borderRadiusGlobal"
84
84
  class="myPrimarySelect"
85
- @change="pageBuilder.handleBorderRadiusGlobal(borderRadiusGlobal)"
85
+ @change="pageBuilderClass.handleBorderRadiusGlobal(borderRadiusGlobal)"
86
86
  >
87
87
  <option disabled value="">Select</option>
88
88
  <option
@@ -99,7 +99,7 @@ watch(
99
99
  <select
100
100
  v-model="borderRadiusTopLeft"
101
101
  class="myPrimarySelect"
102
- @change="pageBuilder.handleBorderRadiusTopLeft(borderRadiusTopLeft)"
102
+ @change="pageBuilderClass.handleBorderRadiusTopLeft(borderRadiusTopLeft)"
103
103
  >
104
104
  <option disabled value="">Select</option>
105
105
  <option
@@ -115,7 +115,7 @@ watch(
115
115
  <select
116
116
  v-model="borderRadiusTopRight"
117
117
  class="myPrimarySelect"
118
- @change="pageBuilder.handleBorderRadiusTopRight(borderRadiusTopRight)"
118
+ @change="pageBuilderClass.handleBorderRadiusTopRight(borderRadiusTopRight)"
119
119
  >
120
120
  <option disabled value="">Select</option>
121
121
  <option
@@ -131,7 +131,7 @@ watch(
131
131
  <select
132
132
  v-model="borderRadiusBottomleft"
133
133
  class="myPrimarySelect"
134
- @change="pageBuilder.handleBorderRadiusBottomleft(borderRadiusBottomleft)"
134
+ @change="pageBuilderClass.handleBorderRadiusBottomleft(borderRadiusBottomleft)"
135
135
  >
136
136
  <option disabled value="">Select</option>
137
137
  <option
@@ -147,7 +147,7 @@ watch(
147
147
  <select
148
148
  v-model="borderRadiusBottomRight"
149
149
  class="myPrimarySelect"
150
- @change="pageBuilder.handleBorderRadiusBottomRight(borderRadiusBottomRight)"
150
+ @change="pageBuilderClass.handleBorderRadiusBottomRight(borderRadiusBottomRight)"
151
151
  >
152
152
  <option disabled value="">Select</option>
153
153
  <option