@designcrowd/library.brand-page 5.16.54 → 5.16.56
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/lib/src/{CreatedOnBrandCrowd-de-de-MT7ymeOj.js → CreatedOnBrandCrowd-de-de-6sZkE1ef.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-C2GKnuEv.js → CreatedOnBrandCrowd-en-us-CMA430YI.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-2takDYdw.js → CreatedOnBrandCrowd-es-es-Bn7WDLSZ.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-DFjtVwB7.js → CreatedOnBrandCrowd-fr-ca-DfNMldwI.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-DFjtVwB7.js → CreatedOnBrandCrowd-fr-fr-DfNMldwI.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-BgN5BFxF.js → CreatedOnBrandCrowd-pt-br-ClvYm3Tr.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-BgN5BFxF.js → CreatedOnBrandCrowd-pt-pt-ClvYm3Tr.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-BzxanK33.js → CreatedOnDcom-de-de-D09-fI5_.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-Vlybo-_L.js → CreatedOnDcom-en-us-D6fU41FS.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-BRKauY9e.js → CreatedOnDcom-es-es-BKAK0Oah.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-BRSzGg7E.js → CreatedOnDcom-fr-ca-CUN--Pd7.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-CQg_YrB1.js → CreatedOnDcom-fr-fr-DSMtGwtw.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-CXxzg52F.js → CreatedOnDcom-pt-br-B6EStxIv.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-Bv63jvQl.js → CreatedOnDcom-pt-pt-DF6U-44j.js} +1 -1
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +4 -0
- package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +2 -18
- package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +7 -0
- package/lib/src/brand-page-maker/composables/useEventTracker.js +26 -8
- package/lib/src/brand-page-maker/stores/route/localised-route-store.d.ts +2 -18
- package/lib/src/brand-page-maker/stores/route/localised-route-store.js +34 -24
- package/lib/src/css/library.brand-page-brandCrowd.min.css +64 -64
- package/lib/src/css/library.brand-page-brandPage.min.css +64 -64
- package/lib/src/css/library.brand-page-designCom.min.css +64 -64
- package/lib/src/css/library.brand-page-preview.min.css +64 -64
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.mjs +1 -1
- package/lib/src/{lib-Ct6M2UhH.js → lib-CCuNckWh.js} +4578 -4538
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +4 -0
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +4 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +4 -0
- package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +4 -0
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +4 -0
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +4 -0
- package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +4 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +4 -0
- package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +4 -0
- package/package.json +1 -1
- package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +20 -5
- package/src/brand-page/components/save-contact/SaveContactWidget.vue +4 -8
- package/src/brand-page/components/save-contact/popup-card/PopupCard.vue +2 -8
- package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +1 -1
- package/src/brand-page-maker/composables/useEventTracker.ts +48 -7
- package/src/brand-page-maker/stores/route/localised-route-store.ts +59 -45
- package/src/lib.ts +1 -0
package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts
CHANGED
|
@@ -756,11 +756,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
756
756
|
toggleLogoBackground(): Promise<any>;
|
|
757
757
|
}>;
|
|
758
758
|
eventTracker: {
|
|
759
|
+
sendSaveContactEvent: () => void;
|
|
760
|
+
sendStartForFreeEvent: () => void;
|
|
761
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
759
762
|
sendGettyVideoAddEvent: () => void;
|
|
760
763
|
sendGettyVideoReplaceEvent: () => void;
|
|
761
764
|
sendGettyVideoRemoveEvent: () => void;
|
|
762
765
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
763
766
|
setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
767
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
764
768
|
setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
765
769
|
setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
766
770
|
subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -728,11 +728,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
728
728
|
toggleShouldPlayVideo(): void;
|
|
729
729
|
}>;
|
|
730
730
|
bpEventTracker: {
|
|
731
|
+
sendSaveContactEvent: () => void;
|
|
732
|
+
sendStartForFreeEvent: () => void;
|
|
733
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
731
734
|
sendGettyVideoAddEvent: () => void;
|
|
732
735
|
sendGettyVideoReplaceEvent: () => void;
|
|
733
736
|
sendGettyVideoRemoveEvent: () => void;
|
|
734
737
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
735
738
|
setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
739
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
736
740
|
setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
737
741
|
setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
738
742
|
subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -473,11 +473,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
473
473
|
}): void;
|
|
474
474
|
}>;
|
|
475
475
|
eventTracker: {
|
|
476
|
+
sendSaveContactEvent: () => void;
|
|
477
|
+
sendStartForFreeEvent: () => void;
|
|
478
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
476
479
|
sendGettyVideoAddEvent: () => void;
|
|
477
480
|
sendGettyVideoReplaceEvent: () => void;
|
|
478
481
|
sendGettyVideoRemoveEvent: () => void;
|
|
479
482
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
480
483
|
setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
484
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
481
485
|
setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
482
486
|
setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
483
487
|
subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -242,11 +242,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
242
242
|
setupLogoChangeWatcher(): void;
|
|
243
243
|
}>;
|
|
244
244
|
eventTracker: {
|
|
245
|
+
sendSaveContactEvent: () => void;
|
|
246
|
+
sendStartForFreeEvent: () => void;
|
|
247
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
245
248
|
sendGettyVideoAddEvent: () => void;
|
|
246
249
|
sendGettyVideoReplaceEvent: () => void;
|
|
247
250
|
sendGettyVideoRemoveEvent: () => void;
|
|
248
251
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
249
252
|
setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
253
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
250
254
|
setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
251
255
|
setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
252
256
|
subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -4712,11 +4712,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
4712
4712
|
onDraggingStart: () => void;
|
|
4713
4713
|
onDraggingEnd: (ev: any) => void;
|
|
4714
4714
|
eventTracker: {
|
|
4715
|
+
sendSaveContactEvent: () => void;
|
|
4716
|
+
sendStartForFreeEvent: () => void;
|
|
4717
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
4715
4718
|
sendGettyVideoAddEvent: () => void;
|
|
4716
4719
|
sendGettyVideoReplaceEvent: () => void;
|
|
4717
4720
|
sendGettyVideoRemoveEvent: () => void;
|
|
4718
4721
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
4719
4722
|
setGlobalEventProps: (props: Omit<import("../../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
4723
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
4720
4724
|
setUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
4721
4725
|
setDomainUpsellBridgeState: (props: import("../../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
4722
4726
|
subscribe: (callbackFn: (event: import("../../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts
CHANGED
|
@@ -426,11 +426,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
426
426
|
}): Promise<void>;
|
|
427
427
|
}>;
|
|
428
428
|
eventTracker: {
|
|
429
|
+
sendSaveContactEvent: () => void;
|
|
430
|
+
sendStartForFreeEvent: () => void;
|
|
431
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
429
432
|
sendGettyVideoAddEvent: () => void;
|
|
430
433
|
sendGettyVideoReplaceEvent: () => void;
|
|
431
434
|
sendGettyVideoRemoveEvent: () => void;
|
|
432
435
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
433
436
|
setGlobalEventProps: (props: Omit<import("../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
437
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
434
438
|
setUpsellBridgeState: (props: import("../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
435
439
|
setDomainUpsellBridgeState: (props: import("../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
436
440
|
subscribe: (callbackFn: (event: import("../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -16,11 +16,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
16
16
|
}>;
|
|
17
17
|
isDesignCom: import("vue").ComputedRef<boolean>;
|
|
18
18
|
eventTracker: {
|
|
19
|
+
sendSaveContactEvent: () => void;
|
|
20
|
+
sendStartForFreeEvent: () => void;
|
|
21
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
19
22
|
sendGettyVideoAddEvent: () => void;
|
|
20
23
|
sendGettyVideoReplaceEvent: () => void;
|
|
21
24
|
sendGettyVideoRemoveEvent: () => void;
|
|
22
25
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
23
26
|
setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
27
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
24
28
|
setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
25
29
|
setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
26
30
|
subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -871,11 +871,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
871
871
|
removeBackgroundVideo(): void;
|
|
872
872
|
}>;
|
|
873
873
|
eventTracker: {
|
|
874
|
+
sendSaveContactEvent: () => void;
|
|
875
|
+
sendStartForFreeEvent: () => void;
|
|
876
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
874
877
|
sendGettyVideoAddEvent: () => void;
|
|
875
878
|
sendGettyVideoReplaceEvent: () => void;
|
|
876
879
|
sendGettyVideoRemoveEvent: () => void;
|
|
877
880
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
878
881
|
setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
882
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
879
883
|
setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
880
884
|
setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
881
885
|
subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
|
@@ -562,11 +562,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
562
562
|
}>;
|
|
563
563
|
isDesignCom: import("vue").ComputedRef<boolean>;
|
|
564
564
|
eventTracker: {
|
|
565
|
+
sendSaveContactEvent: () => void;
|
|
566
|
+
sendStartForFreeEvent: () => void;
|
|
567
|
+
sendFooterLinkClickEvent: (linkType: "watermark_logo" | "create_your_website") => void;
|
|
565
568
|
sendGettyVideoAddEvent: () => void;
|
|
566
569
|
sendGettyVideoReplaceEvent: () => void;
|
|
567
570
|
sendGettyVideoRemoveEvent: () => void;
|
|
568
571
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => void;
|
|
569
572
|
setGlobalEventProps: (props: Omit<import("../../../brand-page-maker/composables/useEventTracker").BpGlobalEventProps, "template_category">) => void;
|
|
573
|
+
setCustomGlobalEventProps: (props: any) => void;
|
|
570
574
|
setUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
571
575
|
setDomainUpsellBridgeState: (props: import("../../../brand-page-maker/composables/useEventTracker").BpUpsellEventProps) => void;
|
|
572
576
|
subscribe: (callbackFn: (event: import("../../../brand-page-maker/composables/useEventTracker").BpEventTrackerEvent) => void) => void;
|
package/package.json
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<a
|
|
7
7
|
:href="url"
|
|
8
8
|
class="brand-page__footer-link"
|
|
9
|
-
@click="(event) =>
|
|
9
|
+
@click="(event) => onFooterLinkClick(event, 'watermark_logo')"
|
|
10
10
|
>
|
|
11
11
|
<component :is="watermarkComponent" />
|
|
12
12
|
</a>
|
|
13
13
|
<a
|
|
14
14
|
v-if="!context.isPreview || shouldShowPreviewWatermarkAbTest"
|
|
15
|
-
:href="!context.isPreview ?
|
|
15
|
+
:href="!context.isPreview ? urlCreateYourWebsite : undefined"
|
|
16
16
|
>
|
|
17
17
|
<button
|
|
18
18
|
class="tw-cursor-pointer tw-py-2 tw-px-3 tw-flex tw-items-center tw-text-white tw-rounded tw-text-sm"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
'btn-bc tw-uppercase tw-bg-primary-500': !context.isDesignCom,
|
|
21
21
|
'btn-dcom tw-rounded-md tw-font-bold': context.isDesignCom,
|
|
22
22
|
}"
|
|
23
|
-
@click="(event) =>
|
|
23
|
+
@click="(event) => onFooterLinkClick(event, 'create_your_website')"
|
|
24
24
|
>
|
|
25
25
|
{{ buttonText }}
|
|
26
26
|
<div class="icon-container tw-ml-2">
|
|
@@ -131,6 +131,17 @@ const url = computed((): string =>
|
|
|
131
131
|
props.context.brandPageType,
|
|
132
132
|
props.context.isDesignCom,
|
|
133
133
|
getCurrentLocale(),
|
|
134
|
+
'bp-footer-watermark',
|
|
135
|
+
),
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
const urlCreateYourWebsite = computed((): string =>
|
|
139
|
+
localisedRouteStore.getBuilderLandingPageByTypeUrl(
|
|
140
|
+
props.context.isPreview,
|
|
141
|
+
props.context.brandPageType,
|
|
142
|
+
props.context.isDesignCom,
|
|
143
|
+
getCurrentLocale(),
|
|
144
|
+
'bp-footer-watermark-create-your-website',
|
|
134
145
|
),
|
|
135
146
|
);
|
|
136
147
|
|
|
@@ -168,10 +179,12 @@ const buttonText = computed((): string => {
|
|
|
168
179
|
|
|
169
180
|
const emit = defineEmits(['on-logo-click']);
|
|
170
181
|
|
|
171
|
-
const
|
|
182
|
+
const onFooterLinkClick = async (
|
|
172
183
|
event: any,
|
|
173
|
-
|
|
184
|
+
linkType: 'watermark_logo' | 'create_your_website',
|
|
174
185
|
) => {
|
|
186
|
+
const isNewWatermarkDesign = linkType === 'create_your_website';
|
|
187
|
+
|
|
175
188
|
if (props.context.isPreview) {
|
|
176
189
|
event.preventDefault();
|
|
177
190
|
emit('on-logo-click', 'StyleSettings');
|
|
@@ -187,6 +200,8 @@ const onBrandCrowdLogoClick = async (
|
|
|
187
200
|
await containerStore.showUpgradeModalAndSaveAsync(
|
|
188
201
|
WEBSITE_UPGRADE_CONTEXT_TYPES.RemoveWatermark,
|
|
189
202
|
);
|
|
203
|
+
} else {
|
|
204
|
+
eventTracker.sendFooterLinkClickEvent(linkType);
|
|
190
205
|
}
|
|
191
206
|
};
|
|
192
207
|
</script>
|
|
@@ -42,10 +42,7 @@ import { computed, reactive, onMounted, watch, ref } from 'vue';
|
|
|
42
42
|
import { Icon } from '@designcrowd/fe-shared-lib';
|
|
43
43
|
import { type BrandPageContext, type TextStyleDeclaration } from '../../models';
|
|
44
44
|
import { useLocalisedRouteStore } from '../../../brand-page-maker/stores';
|
|
45
|
-
import {
|
|
46
|
-
EVENTS,
|
|
47
|
-
useEventTracker,
|
|
48
|
-
} from '../../../brand-page-maker/composables/useEventTracker';
|
|
45
|
+
import { useEventTracker } from '../../../brand-page-maker/composables/useEventTracker';
|
|
49
46
|
import {
|
|
50
47
|
saveContactWidgetTr,
|
|
51
48
|
getCurrentLocale,
|
|
@@ -125,10 +122,7 @@ const onSaveContactClick = (): void => {
|
|
|
125
122
|
|
|
126
123
|
data.isProcessing = true;
|
|
127
124
|
|
|
128
|
-
eventTracker?.
|
|
129
|
-
eventName: EVENTS.WEBSITE_SAVE_CONTACT,
|
|
130
|
-
eventProps: {},
|
|
131
|
-
});
|
|
125
|
+
eventTracker?.sendSaveContactEvent();
|
|
132
126
|
|
|
133
127
|
const brandPageData = { pages: props.context.pages || [] };
|
|
134
128
|
|
|
@@ -186,11 +180,13 @@ const url = computed((): string => {
|
|
|
186
180
|
if (!localisedRouteStore) {
|
|
187
181
|
return '#';
|
|
188
182
|
}
|
|
183
|
+
|
|
189
184
|
return localisedRouteStore.getBuilderLandingPageByTypeUrl(
|
|
190
185
|
props.context.isPreview,
|
|
191
186
|
props.context.brandPageType,
|
|
192
187
|
props.context.isDesignCom,
|
|
193
188
|
getCurrentLocale(),
|
|
189
|
+
'bp-save-contact',
|
|
194
190
|
);
|
|
195
191
|
});
|
|
196
192
|
|
|
@@ -51,10 +51,7 @@
|
|
|
51
51
|
import { Icon } from '@designcrowd/fe-shared-lib';
|
|
52
52
|
import { computed, ref, onMounted } from 'vue';
|
|
53
53
|
import { type BrandPageContext } from '../../../models';
|
|
54
|
-
import {
|
|
55
|
-
EVENTS,
|
|
56
|
-
useEventTracker,
|
|
57
|
-
} from '../../../../brand-page-maker/composables/useEventTracker';
|
|
54
|
+
import { useEventTracker } from '../../../../brand-page-maker/composables/useEventTracker';
|
|
58
55
|
import {
|
|
59
56
|
saveContactWidgetTr,
|
|
60
57
|
getCurrentLocale,
|
|
@@ -114,10 +111,7 @@ onMounted(() => {
|
|
|
114
111
|
});
|
|
115
112
|
|
|
116
113
|
const onStartFree = (): void => {
|
|
117
|
-
eventTracker.
|
|
118
|
-
eventName: EVENTS.WEBSITE_START_FOR_FREE,
|
|
119
|
-
eventProps: {},
|
|
120
|
-
});
|
|
114
|
+
eventTracker.sendStartForFreeEvent();
|
|
121
115
|
window.location.href = props.url;
|
|
122
116
|
};
|
|
123
117
|
</script>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { shallowRef } from 'vue';
|
|
2
2
|
|
|
3
|
+
type EventScope = 'maker_editor' | 'published_website';
|
|
4
|
+
|
|
3
5
|
type LocationTypes = 'pre_purchase' | 'post_purchase';
|
|
4
6
|
|
|
5
7
|
type TemplateTypes = 'brand-page' | 'brand-site' | 'brand-contact';
|
|
@@ -21,6 +23,7 @@ export interface BpUpsellEventProps {
|
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export interface BpEventTrackerEvent {
|
|
26
|
+
scope?: EventScope;
|
|
24
27
|
eventName: string;
|
|
25
28
|
eventProps: any;
|
|
26
29
|
}
|
|
@@ -60,6 +63,7 @@ export const EVENTS = {
|
|
|
60
63
|
WEBSITE_MAKER_AI_STOP_GENERATION: 'website_maker_ai_stop_generation',
|
|
61
64
|
WEBSITE_SAVE_CONTACT: 'website_save_contact',
|
|
62
65
|
WEBSITE_START_FOR_FREE: 'website_start_for_free',
|
|
66
|
+
WEBSITE_FOOTER_LINK_CLICK: 'website_footer_link_click',
|
|
63
67
|
WEBSITE_MAKER_AI_CLICK_SUGGESTED_PROMPT:
|
|
64
68
|
'website_maker_ai_click_suggested_prompt',
|
|
65
69
|
WEBSITE_MAKER_DOMAIN_UPSELL_MODAL: 'website_domain_upsell_modal',
|
|
@@ -134,12 +138,7 @@ export const PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS = {
|
|
|
134
138
|
FREEMIUM: 'freemium',
|
|
135
139
|
};
|
|
136
140
|
|
|
137
|
-
const GLOBAL_EVENT_PROPS = shallowRef<
|
|
138
|
-
template_category: 'website',
|
|
139
|
-
template_type: 'brand-page',
|
|
140
|
-
location: 'post_purchase',
|
|
141
|
-
domain_type: 'Free',
|
|
142
|
-
});
|
|
141
|
+
const GLOBAL_EVENT_PROPS = shallowRef<any>();
|
|
143
142
|
|
|
144
143
|
const bridgeState = shallowRef({
|
|
145
144
|
upsellOpenEventProps: {},
|
|
@@ -153,9 +152,11 @@ const _publishEvent = (
|
|
|
153
152
|
eventName: string,
|
|
154
153
|
eventProps: any,
|
|
155
154
|
excludeGlobal = false,
|
|
155
|
+
scope: EventScope = 'maker_editor',
|
|
156
156
|
) => {
|
|
157
157
|
LISTENERS.value.forEach((listener) => {
|
|
158
158
|
listener({
|
|
159
|
+
scope,
|
|
159
160
|
eventName: eventName,
|
|
160
161
|
eventProps: {
|
|
161
162
|
...(excludeGlobal ? {} : GLOBAL_EVENT_PROPS.value),
|
|
@@ -184,6 +185,35 @@ const useEventTracker = () => {
|
|
|
184
185
|
},
|
|
185
186
|
};
|
|
186
187
|
|
|
188
|
+
const publishedWebsiteEvents = {
|
|
189
|
+
sendSaveContactEvent: () => {
|
|
190
|
+
_publishEvent(
|
|
191
|
+
EVENTS.WEBSITE_SAVE_CONTACT,
|
|
192
|
+
{},
|
|
193
|
+
false,
|
|
194
|
+
'published_website',
|
|
195
|
+
);
|
|
196
|
+
},
|
|
197
|
+
sendStartForFreeEvent: () => {
|
|
198
|
+
_publishEvent(
|
|
199
|
+
EVENTS.WEBSITE_START_FOR_FREE,
|
|
200
|
+
{},
|
|
201
|
+
false,
|
|
202
|
+
'published_website',
|
|
203
|
+
);
|
|
204
|
+
},
|
|
205
|
+
sendFooterLinkClickEvent: (
|
|
206
|
+
linkType: 'watermark_logo' | 'create_your_website',
|
|
207
|
+
) => {
|
|
208
|
+
_publishEvent(
|
|
209
|
+
EVENTS.WEBSITE_FOOTER_LINK_CLICK,
|
|
210
|
+
{ link_type: linkType },
|
|
211
|
+
false,
|
|
212
|
+
'published_website',
|
|
213
|
+
);
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
|
|
187
217
|
return {
|
|
188
218
|
sendExperimentStartedEvent: (abTestKey: string, abTestValue: string) => {
|
|
189
219
|
_publishEvent(
|
|
@@ -198,7 +228,17 @@ const useEventTracker = () => {
|
|
|
198
228
|
setGlobalEventProps: (
|
|
199
229
|
props: Omit<BpGlobalEventProps, 'template_category'>,
|
|
200
230
|
) => {
|
|
201
|
-
|
|
231
|
+
const defaultValues = {
|
|
232
|
+
template_category: 'website',
|
|
233
|
+
template_type: 'brand-page',
|
|
234
|
+
location: 'post_purchase',
|
|
235
|
+
domain_type: 'Free',
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
GLOBAL_EVENT_PROPS.value = { ...defaultValues, ...props };
|
|
239
|
+
},
|
|
240
|
+
setCustomGlobalEventProps: (props: any) => {
|
|
241
|
+
GLOBAL_EVENT_PROPS.value = props;
|
|
202
242
|
},
|
|
203
243
|
setUpsellBridgeState: (props: BpUpsellEventProps) => {
|
|
204
244
|
bridgeState.value.upsellOpenEventProps = props;
|
|
@@ -349,6 +389,7 @@ const useEventTracker = () => {
|
|
|
349
389
|
});
|
|
350
390
|
},
|
|
351
391
|
...gettyVideoEvents,
|
|
392
|
+
...publishedWebsiteEvents,
|
|
352
393
|
};
|
|
353
394
|
};
|
|
354
395
|
|
|
@@ -3,6 +3,8 @@ import { BRAND_PAGE_TYPES } from '../../../brand-page/models';
|
|
|
3
3
|
import { interpolateUrl } from '../../utils/route.util';
|
|
4
4
|
import { useBrandPageContainerStore } from '../brandpage-container';
|
|
5
5
|
|
|
6
|
+
const UTM_MEDIUM = 'published_website';
|
|
7
|
+
|
|
6
8
|
const getLocalisedSlug = (defaultSlug: string, locale: string): string => {
|
|
7
9
|
const translations: Record<string, Record<string, string>> = {
|
|
8
10
|
'/website-builder': {
|
|
@@ -92,6 +94,63 @@ export const useLocalisedRouteStore = defineStore('localisedRoute', {
|
|
|
92
94
|
this.logoEditUrlPath = payload.logoEditUrlPath;
|
|
93
95
|
this.localisedBaseUrl = payload.localisedBaseUrl;
|
|
94
96
|
},
|
|
97
|
+
|
|
98
|
+
buildUtmQueryStrings(brandPageType: string, utmCampaign?: string) {
|
|
99
|
+
if (!utmCampaign) {
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return `utm_source=${brandPageType || BRAND_PAGE_TYPES.default}&utm_medium=${UTM_MEDIUM}&utm_campaign=${utmCampaign}`;
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
getBuilderLandingPageByTypeUrl(
|
|
107
|
+
isPreview: boolean,
|
|
108
|
+
brandPageType: string,
|
|
109
|
+
isDesignCom: boolean,
|
|
110
|
+
locale: string,
|
|
111
|
+
utmCampaign?: string,
|
|
112
|
+
) {
|
|
113
|
+
if (isPreview) {
|
|
114
|
+
return '#';
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let slug = '';
|
|
118
|
+
|
|
119
|
+
switch (brandPageType) {
|
|
120
|
+
case BRAND_PAGE_TYPES.brandSite:
|
|
121
|
+
slug = getLocalisedSlug(
|
|
122
|
+
this.websiteBuilderUrlPath || '/website-builder',
|
|
123
|
+
locale,
|
|
124
|
+
);
|
|
125
|
+
break;
|
|
126
|
+
case BRAND_PAGE_TYPES.brandContact:
|
|
127
|
+
slug = getLocalisedSlug(
|
|
128
|
+
this.digitalBusinessCardBuilderUrlPath || '/digital-business-card',
|
|
129
|
+
locale,
|
|
130
|
+
);
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
133
|
+
slug = getLocalisedSlug(
|
|
134
|
+
this.linkInBioBuilderUrlPath || '/link-in-bio',
|
|
135
|
+
locale,
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const lowercaseLocale = locale.toLowerCase();
|
|
140
|
+
const isEnglish = lowercaseLocale === 'en-us';
|
|
141
|
+
const domain = isDesignCom
|
|
142
|
+
? 'https://www.design.com'
|
|
143
|
+
: 'https://www.brandcrowd.com';
|
|
144
|
+
const localePath = isEnglish ? '' : `/${lowercaseLocale}`;
|
|
145
|
+
|
|
146
|
+
const url = `${domain}${localePath}${slug}`;
|
|
147
|
+
|
|
148
|
+
const utmParams = utmCampaign
|
|
149
|
+
? `?${this.buildUtmQueryStrings(brandPageType, utmCampaign)}`
|
|
150
|
+
: '';
|
|
151
|
+
|
|
152
|
+
return url + utmParams;
|
|
153
|
+
},
|
|
95
154
|
},
|
|
96
155
|
getters: {
|
|
97
156
|
currentPublishedSlugUrl: (state) => () => {
|
|
@@ -122,51 +181,6 @@ export const useLocalisedRouteStore = defineStore('localisedRoute', {
|
|
|
122
181
|
});
|
|
123
182
|
},
|
|
124
183
|
|
|
125
|
-
getBuilderLandingPageByTypeUrl:
|
|
126
|
-
(state) =>
|
|
127
|
-
(
|
|
128
|
-
isPreview: boolean,
|
|
129
|
-
brandPageType: string,
|
|
130
|
-
isDesignCom: boolean,
|
|
131
|
-
locale: string,
|
|
132
|
-
) => {
|
|
133
|
-
if (isPreview) {
|
|
134
|
-
return '#';
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
let slug = '';
|
|
138
|
-
|
|
139
|
-
switch (brandPageType) {
|
|
140
|
-
case BRAND_PAGE_TYPES.brandSite:
|
|
141
|
-
slug = getLocalisedSlug(
|
|
142
|
-
state.websiteBuilderUrlPath || '/website-builder',
|
|
143
|
-
locale,
|
|
144
|
-
);
|
|
145
|
-
break;
|
|
146
|
-
case BRAND_PAGE_TYPES.brandContact:
|
|
147
|
-
slug = getLocalisedSlug(
|
|
148
|
-
state.digitalBusinessCardBuilderUrlPath ||
|
|
149
|
-
'/digital-business-card',
|
|
150
|
-
locale,
|
|
151
|
-
);
|
|
152
|
-
break;
|
|
153
|
-
default:
|
|
154
|
-
slug = getLocalisedSlug(
|
|
155
|
-
state.linkInBioBuilderUrlPath || '/link-in-bio',
|
|
156
|
-
locale,
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const lowercaseLocale = locale.toLowerCase();
|
|
161
|
-
const isEnglish = lowercaseLocale === 'en-us';
|
|
162
|
-
const domain = isDesignCom
|
|
163
|
-
? 'https://www.design.com'
|
|
164
|
-
: 'https://www.brandcrowd.com';
|
|
165
|
-
const localePath = isEnglish ? '' : `/${lowercaseLocale}`;
|
|
166
|
-
|
|
167
|
-
return `${domain}${localePath}${slug}`;
|
|
168
|
-
},
|
|
169
|
-
|
|
170
184
|
getWebsiteBaseUrl: () => (isDesignCom: boolean) => {
|
|
171
185
|
return isDesignCom
|
|
172
186
|
? `https://www.design.com`
|
package/src/lib.ts
CHANGED
|
@@ -105,6 +105,7 @@ export {
|
|
|
105
105
|
|
|
106
106
|
// Composable
|
|
107
107
|
export { useEventTracker } from './brand-page-maker/composables/useEventTracker';
|
|
108
|
+
export type { BpEventTrackerEvent } from './brand-page-maker/composables/useEventTracker';
|
|
108
109
|
export {
|
|
109
110
|
useConsent,
|
|
110
111
|
type ConsentType,
|