@designcrowd/library.brand-page 6.0.15 → 6.0.16

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 (63) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-NigWLJ0X.js → CreatedOnBrandCrowd-de-de-QP8vMxvh.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-XH20r8-U.js → CreatedOnBrandCrowd-en-us-B527kdQs.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-C3gWj2WK.js → CreatedOnBrandCrowd-es-es-quAczKTS.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-dIQB4uNK.js → CreatedOnBrandCrowd-fr-ca-B0A8wewN.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-dIQB4uNK.js → CreatedOnBrandCrowd-fr-fr-B0A8wewN.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-BT_T8yh8.js → CreatedOnBrandCrowd-pt-br-BsKk1W3M.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-BT_T8yh8.js → CreatedOnBrandCrowd-pt-pt-BsKk1W3M.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-De__zZDv.js → CreatedOnDcom-de-de-DT-1HnEc.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-hdp83p6i.js → CreatedOnDcom-en-us-on3DIzpS.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CqYvZBCH.js → CreatedOnDcom-es-es-DpOh7Vt9.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-Dv7SmQJr.js → CreatedOnDcom-fr-ca-DfGGDCeZ.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-CBpV3x-_.js → CreatedOnDcom-fr-fr-DubzmqD6.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BDBFpQ1l.js → CreatedOnDcom-pt-br-exgrytG3.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-CagUAArG.js → CreatedOnDcom-pt-pt-LrMFAaeB.js} +1 -1
  15. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -0
  16. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +5 -0
  17. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +1 -1
  18. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +4 -6
  19. package/lib/src/brand-page-maker/composables/useQuickLinkBarVisibility.d.ts +17 -0
  20. package/lib/src/brand-page-maker/composables/useQuickLinkBarVisibility.js +23 -0
  21. package/lib/src/{bundled-translations-Cbaxd_x-.js → bundled-translations-2HkRBbBD.js} +1 -1
  22. package/lib/src/{bundled-translations.de-DE-CIxaSVA1.js → bundled-translations.de-DE-DmmZFmGP.js} +1 -1
  23. package/lib/src/{bundled-translations.es-ES-hutUJbuX.js → bundled-translations.es-ES-D7JmTUKc.js} +1 -1
  24. package/lib/src/{bundled-translations.fr-CA-kIF8Q7px.js → bundled-translations.fr-CA-LANZnNuX.js} +1 -1
  25. package/lib/src/{bundled-translations.fr-FR-CE3XDUTn.js → bundled-translations.fr-FR-BQybH6dF.js} +1 -1
  26. package/lib/src/{bundled-translations.pt-BR-BEhfMyNa.js → bundled-translations.pt-BR-DRAIsAdg.js} +1 -1
  27. package/lib/src/{bundled-translations.pt-PT-BBd3nlQc.js → bundled-translations.pt-PT-CEqBjj6N.js} +1 -1
  28. package/lib/src/bundles/bundled-translations.de-DE.json +2 -2
  29. package/lib/src/bundles/bundled-translations.es-ES.json +2 -2
  30. package/lib/src/bundles/bundled-translations.fr-CA.json +2 -2
  31. package/lib/src/bundles/bundled-translations.fr-FR.json +2 -2
  32. package/lib/src/bundles/bundled-translations.json +2 -2
  33. package/lib/src/bundles/bundled-translations.pt-BR.json +2 -2
  34. package/lib/src/bundles/bundled-translations.pt-PT.json +2 -2
  35. package/lib/src/css/library.brand-page-brandCrowd.min.css +16 -19
  36. package/lib/src/css/library.brand-page-brandPage.min.css +16 -19
  37. package/lib/src/css/library.brand-page-designCom.min.css +16 -19
  38. package/lib/src/css/library.brand-page-preview.min.css +16 -19
  39. package/lib/src/index.mjs +1 -1
  40. package/lib/src/{lib-01eP2NjY.js → lib-CC4tgn32.js} +10330 -10321
  41. package/package.json +1 -1
  42. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +5 -0
  43. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -2
  44. package/src/brand-page-maker/components/device/Device.vue +0 -1
  45. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +4 -7
  46. package/src/brand-page-maker/composables/useQuickLinkBarVisibility.test.ts +81 -0
  47. package/src/brand-page-maker/composables/useQuickLinkBarVisibility.ts +25 -0
  48. package/src/bundles/bundled-translations.de-DE.json +2 -2
  49. package/src/bundles/bundled-translations.es-ES.json +2 -2
  50. package/src/bundles/bundled-translations.fr-CA.json +2 -2
  51. package/src/bundles/bundled-translations.fr-FR.json +2 -2
  52. package/src/bundles/bundled-translations.json +2 -2
  53. package/src/bundles/bundled-translations.pt-BR.json +2 -2
  54. package/src/bundles/bundled-translations.pt-PT.json +2 -2
  55. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -2
  56. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -2
  57. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -2
  58. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -2
  59. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -2
  60. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -2
  61. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -2
  62. package/src/shared/page-settings/components/page-settings/PageElement.vue +1 -0
  63. package/src/shared/page-settings/components/page-settings/PageSettingMenu.vue +4 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "6.0.15",
4
+ "version": "6.0.16",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -37,6 +37,7 @@ import {
37
37
  } from '@brand-page-maker/stores';
38
38
  import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
39
39
  import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
40
+ import { useQuickLinkBarVisibility } from '@brand-page-maker/composables/useQuickLinkBarVisibility';
40
41
  import type { AdminPreviewLogoTemplateModel } from '@brand-page-maker/stores/admin-logo-settings';
41
42
  import { useUiContentSettingsStore } from '@shared/content-settings/store';
42
43
  import { useUiTemplateSettingsStore } from '@shared/template-settings/store';
@@ -137,6 +138,10 @@ export default defineComponent({
137
138
  isSaving: computed(() => brandPageMakerStore.isSaving),
138
139
  isPublishing: computed(() => brandPageMakerStore.isPublishing),
139
140
  isPublished: computed(() => brandPageMakerStore.isPublished),
141
+ // Whether the QuickLinkBar renders — used to offset the preview (Device)
142
+ // and SideBar clear of the fixed bar on mobile. Must match the bar's own
143
+ // render condition, so it shares the same predicate.
144
+ shouldShowQuickLinkBar: useQuickLinkBarVisibility(),
140
145
  isBrandPageOrIsBrandContact: computed(
141
146
  () => brandPageMakerStore.isBrandPageOrIsBrandContact,
142
147
  ),
@@ -90,7 +90,7 @@
90
90
  :is-mobile-device="isMobileDevice"
91
91
  :is-design-com="isDesignCom"
92
92
  :container="previewContainer"
93
- :has-quick-links="isPublished"
93
+ :has-quick-links="shouldShowQuickLinkBar"
94
94
  >
95
95
  <div ref="previewContent" class="tw-h-full">
96
96
  <PreviewWithState :device-mode="deviceMode" />
@@ -127,7 +127,7 @@
127
127
  <SideBar
128
128
  :mobile-tab-name="SideBarTabNames.PREVIEW"
129
129
  :is-mobile-screen-size="isMobileScreenSize"
130
- :has-quick-links="isPublished"
130
+ :has-quick-links="shouldShowQuickLinkBar"
131
131
  >
132
132
  <template #tab>
133
133
  <component
@@ -11,7 +11,6 @@
11
11
  'tw-opacity-0': !visible,
12
12
  'tw-pt-8': !hasQuickLinks && isMobileDevice,
13
13
  'tw-pt-20 lg:tw-pt-8': hasQuickLinks && isMobileDevice,
14
- 'tw-pt-10': hasQuickLinks && isMobileDevice,
15
14
  }"
16
15
  tabindex="0"
17
16
  >
@@ -5,6 +5,7 @@ import {
5
5
  useEventManagerStore,
6
6
  } from '@brand-page-maker/stores';
7
7
  import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
8
+ import { useQuickLinkBarVisibility } from '@brand-page-maker/composables/useQuickLinkBarVisibility';
8
9
  import { quickLinkBarTr } from '@src/composables/useTranslate';
9
10
 
10
11
  export default defineComponent({
@@ -23,6 +24,9 @@ export default defineComponent({
23
24
  brandPageContainerStore: useBrandPageContainerStore(),
24
25
  eventManagerStore: useEventManagerStore(),
25
26
  undoRedoEnabled: useUndoRedoFlag(),
27
+ // Single source of truth for whether the bar renders — shared with the
28
+ // layout components (Device, SideBar) that offset content clear of it.
29
+ shouldShowBar: useQuickLinkBarVisibility(),
26
30
  };
27
31
  },
28
32
  data() {
@@ -35,13 +39,6 @@ export default defineComponent({
35
39
  return this.brandPageContainerStore.isPublished;
36
40
  },
37
41
 
38
- // Only render the bar when at least one inner cluster has something to
39
- // show. Otherwise we'd render an empty white strip — e.g. on an
40
- // unpublished page with the undo flag off.
41
- shouldShowBar(): boolean {
42
- return Boolean(this.undoRedoEnabled) || this.isPublished;
43
- },
44
-
45
42
  brandPageUrl(): string {
46
43
  if (
47
44
  this.brandPageContainerStore.isCustomDomainEnabled &&
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { useQuickLinkBarVisibility } from './useQuickLinkBarVisibility';
3
+
4
+ // The QuickLinkBar renders when it has something to show — the undo/redo
5
+ // controls (flag on, non-admin) OR the published-URL cluster. This predicate
6
+ // is the single source of truth shared by the bar and the layout components
7
+ // (Device, SideBar) that offset content clear of the fixed bar on mobile.
8
+ //
9
+ // The regression it guards: an unpublished page with the undo/redo flag on
10
+ // still shows the bar, so the offset must treat it as visible — otherwise the
11
+ // fixed bar overlaps the mobile preview.
12
+ //
13
+ // The real useUndoRedoFlag is exercised (only its underlying stores are
14
+ // mocked) so admin gating is covered end-to-end.
15
+
16
+ const containerStoreMock = { isPublished: false };
17
+
18
+ vi.mock('@brand-page-maker/stores', () => ({
19
+ useBrandPageContainerStore: vi.fn(() => containerStoreMock),
20
+ }));
21
+
22
+ const userStoreMock = {
23
+ features: { canUseUndoRedo: false },
24
+ isAdmin: false,
25
+ };
26
+
27
+ vi.mock('@brand-page-maker/stores/user', () => ({
28
+ useBrandPageMakerUserStore: vi.fn(() => userStoreMock),
29
+ }));
30
+
31
+ beforeEach(() => {
32
+ containerStoreMock.isPublished = false;
33
+ userStoreMock.features.canUseUndoRedo = false;
34
+ userStoreMock.isAdmin = false;
35
+ });
36
+
37
+ describe('useQuickLinkBarVisibility', () => {
38
+ it('is visible when unpublished but the undo/redo flag is on (the overlap regression)', () => {
39
+ containerStoreMock.isPublished = false;
40
+ userStoreMock.features.canUseUndoRedo = true;
41
+
42
+ expect(useQuickLinkBarVisibility().value).toBe(true);
43
+ });
44
+
45
+ it('is hidden when unpublished and the undo/redo flag is off', () => {
46
+ containerStoreMock.isPublished = false;
47
+ userStoreMock.features.canUseUndoRedo = false;
48
+
49
+ expect(useQuickLinkBarVisibility().value).toBe(false);
50
+ });
51
+
52
+ it('is visible when published even with the undo/redo flag off', () => {
53
+ containerStoreMock.isPublished = true;
54
+ userStoreMock.features.canUseUndoRedo = false;
55
+
56
+ expect(useQuickLinkBarVisibility().value).toBe(true);
57
+ });
58
+
59
+ it('is visible when both published and the undo/redo flag is on', () => {
60
+ containerStoreMock.isPublished = true;
61
+ userStoreMock.features.canUseUndoRedo = true;
62
+
63
+ expect(useQuickLinkBarVisibility().value).toBe(true);
64
+ });
65
+
66
+ it('gates the undo/redo reason for admins: unpublished admin stays hidden despite the flag', () => {
67
+ containerStoreMock.isPublished = false;
68
+ userStoreMock.features.canUseUndoRedo = true;
69
+ userStoreMock.isAdmin = true;
70
+
71
+ expect(useQuickLinkBarVisibility().value).toBe(false);
72
+ });
73
+
74
+ it('stays visible for a published admin (published cluster is not admin-gated)', () => {
75
+ containerStoreMock.isPublished = true;
76
+ userStoreMock.features.canUseUndoRedo = true;
77
+ userStoreMock.isAdmin = true;
78
+
79
+ expect(useQuickLinkBarVisibility().value).toBe(true);
80
+ });
81
+ });
@@ -0,0 +1,25 @@
1
+ import { computed, type ComputedRef } from 'vue';
2
+ import { useBrandPageContainerStore } from '@brand-page-maker/stores';
3
+ import { useUndoRedoFlag } from './useUndoRedoFlag';
4
+
5
+ /**
6
+ * Whether the QuickLinkBar is rendered in the maker.
7
+ *
8
+ * The bar shows when at least one of its inner clusters has something to
9
+ * display: the undo/redo controls (flag on, non-admin — see
10
+ * {@link useUndoRedoFlag}) OR the published-URL cluster (page published).
11
+ *
12
+ * This is the single source of truth shared by the bar itself
13
+ * (`QuickLinkBar`) and the layout components that offset their content to sit
14
+ * clear of the fixed bar on mobile (`Device`, `SideBar`). Keeping the offset
15
+ * bound to the same predicate the bar renders on prevents the two from
16
+ * drifting — a drift where the bar showed for the undo/redo reason but the
17
+ * offset only accounted for the published reason caused the bar to overlap
18
+ * the mobile preview.
19
+ */
20
+ export function useQuickLinkBarVisibility(): ComputedRef<boolean> {
21
+ const containerStore = useBrandPageContainerStore();
22
+ const undoRedoEnabled = useUndoRedoFlag();
23
+
24
+ return computed(() => undoRedoEnabled.value || containerStore.isPublished);
25
+ }
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonial",
1458
1458
  "imageDisplayName": "Bild",
1459
1459
  "imageSectionDisplayName": "Bilder",
1460
- "imageGalleryDisplayName": "Bildergalerie",
1460
+ "imageGalleryDisplayName": "Galerie",
1461
1461
  "videoDisplayName": "Video",
1462
1462
  "mapDisplayName": "Karte",
1463
1463
  "mailingListDisplayName": "Mailingliste",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Trinkgeld",
1473
1473
  "requestPaymentDisplayName": "Zahlungen",
1474
- "contactFormDisplayName": "Kontaktformular",
1474
+ "contactFormDisplayName": "Kontakt",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonials",
1477
1477
  "aboutSectionDisplayName": "Über",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonio",
1458
1458
  "imageDisplayName": "Imagen",
1459
1459
  "imageSectionDisplayName": "Imágenes",
1460
- "imageGalleryDisplayName": "Galería de imágenes",
1460
+ "imageGalleryDisplayName": "Galería",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de correo",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Propinas",
1473
1473
  "requestPaymentDisplayName": "Pagos",
1474
- "contactFormDisplayName": "Formulario de contacto",
1474
+ "contactFormDisplayName": "Contacto",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonios",
1477
1477
  "aboutSectionDisplayName": "Acerca de",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Témoignage",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Galerie d’images",
1460
+ "imageGalleryDisplayName": "Galerie",
1461
1461
  "videoDisplayName": "Vidéo",
1462
1462
  "mapDisplayName": "Carte",
1463
1463
  "mailingListDisplayName": "Liste de diffusion",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Don",
1473
1473
  "requestPaymentDisplayName": "Paiements",
1474
- "contactFormDisplayName": "Formulaire de contact",
1474
+ "contactFormDisplayName": "Contact",
1475
1475
  "bannerSectionDisplayName": "Bannière",
1476
1476
  "testimonialSectionDisplayName": "Témoignages",
1477
1477
  "aboutSectionDisplayName": "À propos",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Témoignage",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Galerie d’images",
1460
+ "imageGalleryDisplayName": "Galerie",
1461
1461
  "videoDisplayName": "Vidéo",
1462
1462
  "mapDisplayName": "Carte",
1463
1463
  "mailingListDisplayName": "Liste de diffusion",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Don",
1473
1473
  "requestPaymentDisplayName": "Paiements",
1474
- "contactFormDisplayName": "Formulaire de contact",
1474
+ "contactFormDisplayName": "Contact",
1475
1475
  "bannerSectionDisplayName": "Bannière",
1476
1476
  "testimonialSectionDisplayName": "Témoignages",
1477
1477
  "aboutSectionDisplayName": "À propos",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonial",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Image Gallery",
1460
+ "imageGalleryDisplayName": "Gallery",
1461
1461
  "videoDisplayName": "Video",
1462
1462
  "mapDisplayName": "Map",
1463
1463
  "mailingListDisplayName": "Mailing list",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Tipping",
1473
1473
  "requestPaymentDisplayName": "Payments",
1474
- "contactFormDisplayName": "Contact Form",
1474
+ "contactFormDisplayName": "Contact",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonials",
1477
1477
  "aboutSectionDisplayName": "About",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Depoimento",
1458
1458
  "imageDisplayName": "Imagem",
1459
1459
  "imageSectionDisplayName": "Imagens",
1460
- "imageGalleryDisplayName": "Galeria de imagens",
1460
+ "imageGalleryDisplayName": "Galeria",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de e-mails",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "TikTok",
1472
1472
  "supportMeDisplayName": "Dar gorjeta",
1473
1473
  "requestPaymentDisplayName": "Pagamentos",
1474
- "contactFormDisplayName": "Formulário de contato",
1474
+ "contactFormDisplayName": "Contato",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Depoimentos",
1477
1477
  "aboutSectionDisplayName": "Sobre",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testemunho",
1458
1458
  "imageDisplayName": "Imagem",
1459
1459
  "imageSectionDisplayName": "Imagens",
1460
- "imageGalleryDisplayName": "Galeria de Imagens",
1460
+ "imageGalleryDisplayName": "Galeria",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de correio",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "TikTok",
1472
1472
  "supportMeDisplayName": "Dar gorjeta",
1473
1473
  "requestPaymentDisplayName": "Pagamentos",
1474
- "contactFormDisplayName": "Formulário de Contacto",
1474
+ "contactFormDisplayName": "Contacto",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testemunhos",
1477
1477
  "aboutSectionDisplayName": "Sobre",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonial",
18
18
  "imageDisplayName": "Bild",
19
19
  "imageSectionDisplayName": "Bilder",
20
- "imageGalleryDisplayName": "Bildergalerie",
20
+ "imageGalleryDisplayName": "Galerie",
21
21
  "videoDisplayName": "Video",
22
22
  "mapDisplayName": "Karte",
23
23
  "mailingListDisplayName": "Mailingliste",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Trinkgeld",
33
33
  "requestPaymentDisplayName": "Zahlungen",
34
- "contactFormDisplayName": "Kontaktformular",
34
+ "contactFormDisplayName": "Kontakt",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonials",
37
37
  "aboutSectionDisplayName": "Über",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonio",
18
18
  "imageDisplayName": "Imagen",
19
19
  "imageSectionDisplayName": "Imágenes",
20
- "imageGalleryDisplayName": "Galería de imágenes",
20
+ "imageGalleryDisplayName": "Galería",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de correo",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Propinas",
33
33
  "requestPaymentDisplayName": "Pagos",
34
- "contactFormDisplayName": "Formulario de contacto",
34
+ "contactFormDisplayName": "Contacto",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonios",
37
37
  "aboutSectionDisplayName": "Acerca de",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Témoignage",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Galerie d’images",
20
+ "imageGalleryDisplayName": "Galerie",
21
21
  "videoDisplayName": "Vidéo",
22
22
  "mapDisplayName": "Carte",
23
23
  "mailingListDisplayName": "Liste de diffusion",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Don",
33
33
  "requestPaymentDisplayName": "Paiements",
34
- "contactFormDisplayName": "Formulaire de contact",
34
+ "contactFormDisplayName": "Contact",
35
35
  "bannerSectionDisplayName": "Bannière",
36
36
  "testimonialSectionDisplayName": "Témoignages",
37
37
  "aboutSectionDisplayName": "À propos",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Témoignage",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Galerie d’images",
20
+ "imageGalleryDisplayName": "Galerie",
21
21
  "videoDisplayName": "Vidéo",
22
22
  "mapDisplayName": "Carte",
23
23
  "mailingListDisplayName": "Liste de diffusion",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Don",
33
33
  "requestPaymentDisplayName": "Paiements",
34
- "contactFormDisplayName": "Formulaire de contact",
34
+ "contactFormDisplayName": "Contact",
35
35
  "bannerSectionDisplayName": "Bannière",
36
36
  "testimonialSectionDisplayName": "Témoignages",
37
37
  "aboutSectionDisplayName": "À propos",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonial",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Image Gallery",
20
+ "imageGalleryDisplayName": "Gallery",
21
21
  "videoDisplayName": "Video",
22
22
  "mapDisplayName": "Map",
23
23
  "mailingListDisplayName": "Mailing list",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Tipping",
33
33
  "requestPaymentDisplayName": "Payments",
34
- "contactFormDisplayName": "Contact Form",
34
+ "contactFormDisplayName": "Contact",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonials",
37
37
  "aboutSectionDisplayName": "About",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Depoimento",
18
18
  "imageDisplayName": "Imagem",
19
19
  "imageSectionDisplayName": "Imagens",
20
- "imageGalleryDisplayName": "Galeria de imagens",
20
+ "imageGalleryDisplayName": "Galeria",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de e-mails",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "TikTok",
32
32
  "supportMeDisplayName": "Dar gorjeta",
33
33
  "requestPaymentDisplayName": "Pagamentos",
34
- "contactFormDisplayName": "Formulário de contato",
34
+ "contactFormDisplayName": "Contato",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Depoimentos",
37
37
  "aboutSectionDisplayName": "Sobre",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testemunho",
18
18
  "imageDisplayName": "Imagem",
19
19
  "imageSectionDisplayName": "Imagens",
20
- "imageGalleryDisplayName": "Galeria de Imagens",
20
+ "imageGalleryDisplayName": "Galeria",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de correio",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "TikTok",
32
32
  "supportMeDisplayName": "Dar gorjeta",
33
33
  "requestPaymentDisplayName": "Pagamentos",
34
- "contactFormDisplayName": "Formulário de Contacto",
34
+ "contactFormDisplayName": "Contacto",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testemunhos",
37
37
  "aboutSectionDisplayName": "Sobre",
@@ -2,6 +2,7 @@
2
2
  <div
3
3
  :key="`page-item-${index}`"
4
4
  data-component="page-element"
5
+ :data-test-tag="`page-element-${index}`"
5
6
  :class="['tw-mb-3 tw-text-secondary-500', { 'tw-ml-6': !isRootPage }]"
6
7
  >
7
8
  <div class="tw-flex tw-items-center">
@@ -7,6 +7,7 @@
7
7
  <Icon
8
8
  name="ellipsis"
9
9
  size="sm"
10
+ data-test-tag="page-menu-trigger"
10
11
  :class="'tw-rounded tw-cursor-pointer tw-text-grayscale-600 tw-pt-1'"
11
12
  :should-display-title="false"
12
13
  @click="toggleMenu"
@@ -19,6 +20,7 @@
19
20
  >
20
21
  <li
21
22
  v-if="isRootPage"
23
+ data-test-tag="add-subpage"
22
24
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400"
23
25
  @click="onAddSubPageClick"
24
26
  >
@@ -29,6 +31,7 @@
29
31
  </li>
30
32
  <li
31
33
  v-if="props.index !== 0"
34
+ data-test-tag="toggle-page-visibility"
32
35
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400 tw-mt-3"
33
36
  @click="onChangePageVisibility"
34
37
  >
@@ -43,6 +46,7 @@
43
46
 
44
47
  <li
45
48
  v-if="!props.hasSubPages && totalPages > 1 && props.index !== 0"
49
+ data-test-tag="delete-page"
46
50
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400 tw-mt-3"
47
51
  @click="onDeleteClick"
48
52
  >