@designcrowd/library.brand-page 6.2.6 → 6.2.7-ast-faq-1
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-DpeSEnwP.js → CreatedOnBrandCrowd-de-de-7BhvVOyG.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-CxYv3NzT.js → CreatedOnBrandCrowd-en-us-DhKWkmpT.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-CzQ1HRHw.js → CreatedOnBrandCrowd-es-es-B8vcPgJ5.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-J77YZaT1.js → CreatedOnBrandCrowd-fr-ca-DJywro34.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-J77YZaT1.js → CreatedOnBrandCrowd-fr-fr-DJywro34.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-1vh4Smqt.js → CreatedOnBrandCrowd-pt-br-8Fe-EYbW.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-1vh4Smqt.js → CreatedOnBrandCrowd-pt-pt-8Fe-EYbW.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-CXX6W_29.js → CreatedOnDcom-de-de-CgIFS1rD.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-D78BmX6f.js → CreatedOnDcom-en-us-xfxOfOmI.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-FfbPM2vD.js → CreatedOnDcom-es-es-NUDILwyj.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-C6L60rxJ.js → CreatedOnDcom-fr-ca-DIC9p-8J.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-BEDnW9w-.js → CreatedOnDcom-fr-fr-CIAM16GN.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-CZXVvc1n.js → CreatedOnDcom-pt-br-CbVwaB2_.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-IQq744nb.js → CreatedOnDcom-pt-pt-ZrwJAVB-.js} +1 -1
- package/lib/src/brand-page/constants/misc.constants.d.ts +8 -0
- package/lib/src/brand-page/constants/misc.constants.js +7 -0
- package/lib/src/brand-page/constants/styles.constants.d.ts +2 -0
- package/lib/src/brand-page/constants/styles.constants.js +2 -0
- package/lib/src/brand-page/models/content.model.d.ts +1 -0
- package/lib/src/brand-page/models/content.model.js +1 -0
- package/lib/src/brand-page/models/index.d.ts +22 -0
- package/lib/src/brand-page/utils/content-callback-util.d.ts +2 -1
- package/lib/src/brand-page/utils/content-callback-util.js +3 -0
- package/lib/src/brand-page/utils/view-model.util.d.ts +2 -0
- package/lib/src/brand-page/utils/view-model.util.js +23 -0
- package/lib/src/brand-page/view-models.d.ts +9 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +10 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +10 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +13 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +33 -12
- package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +2 -1
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +100 -3
- package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.d.ts +3 -0
- package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.js +47 -0
- package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -0
- package/lib/src/brand-page-maker/models/content-settings-configs.js +1 -0
- package/lib/src/brand-page-maker/models/content-settings.d.ts +4 -1
- package/lib/src/brand-page-maker/models/content-settings.js +47 -1
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +1 -0
- package/lib/src/brand-page-maker/utils/apply-color-strategy.js +45 -17
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +6 -0
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +24 -1
- package/lib/src/brand-page-maker/validators/field.validator.js +2 -0
- package/lib/src/bundled-translations-CRdqhLb8.js +179 -0
- package/lib/src/bundled-translations.de-DE-D2M0pfDi.js +179 -0
- package/lib/src/bundled-translations.es-ES-5kyERvJF.js +179 -0
- package/lib/src/bundled-translations.fr-CA-CC4ymJyN.js +179 -0
- package/lib/src/bundled-translations.fr-FR-yyt0xgH9.js +179 -0
- package/lib/src/bundled-translations.pt-BR-BOSy38EW.js +179 -0
- package/lib/src/bundled-translations.pt-PT-DIdAUI2B.js +179 -0
- package/lib/src/bundles/bundled-translations.de-DE.json +14 -2
- package/lib/src/bundles/bundled-translations.es-ES.json +14 -2
- package/lib/src/bundles/bundled-translations.fr-CA.json +14 -2
- package/lib/src/bundles/bundled-translations.fr-FR.json +14 -2
- package/lib/src/bundles/bundled-translations.json +14 -2
- package/lib/src/bundles/bundled-translations.pt-BR.json +14 -2
- package/lib/src/bundles/bundled-translations.pt-PT.json +14 -2
- package/lib/src/composables/useTranslate.d.ts +1 -1
- package/lib/src/composables/useTranslate.js +1 -1
- package/lib/src/css/library.brand-page-brandCrowd.min.css +343 -231
- package/lib/src/css/library.brand-page-brandPage.min.css +343 -231
- package/lib/src/css/library.brand-page-designCom.min.css +343 -231
- package/lib/src/css/library.brand-page-preview.min.css +343 -231
- package/lib/src/index.mjs +161 -160
- package/lib/src/{lib-CyVd3FMn.js → lib-DOlxnnrv.js} +26202 -25472
- package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
- package/lib/src/shared/color-strategies/color-strategies.js +4 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +12 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.js +10 -0
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +10 -0
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +11 -1
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +10 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +10 -0
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +10 -0
- package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +14 -1
- package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +11 -1
- package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +12 -0
- package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.js +5 -0
- package/lib/src/shared/content-settings/models.d.ts +6 -0
- package/lib/src/shared/content-settings/store/content-settings-store.d.ts +14 -1
- package/lib/src/shared/content-settings/store/content-settings-store.js +19 -0
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +10 -0
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +10 -0
- package/package.json +4 -3
- package/src/brand-page/components/button/ButtonStyleWrapper.vue +4 -2
- package/src/brand-page/components/faq-section/FaqSection.test.ts +367 -0
- package/src/brand-page/components/faq-section/FaqSection.vue +337 -0
- package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +1 -0
- package/src/brand-page/components/page/PageComponent.vue +2 -0
- package/src/brand-page/components/page-header/HeaderLayout.vue +3 -3
- package/src/brand-page/constants/misc.constants.ts +12 -0
- package/src/brand-page/constants/styles.constants.ts +2 -0
- package/src/brand-page/models/content.model.ts +1 -0
- package/src/brand-page/models/index.ts +24 -0
- package/src/brand-page/utils/content-callback-util.ts +5 -0
- package/src/brand-page/utils/view-model.util.test.ts +112 -0
- package/src/brand-page/utils/view-model.util.ts +48 -0
- package/src/brand-page/view-models.ts +12 -1
- package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.test.ts +165 -0
- package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +13 -5
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +48 -12
- package/src/brand-page-maker/constants/config-settings-constant.ts +104 -1
- package/src/brand-page-maker/constants/faq-section-config.test.ts +69 -0
- package/src/brand-page-maker/convertors/faq-display-style.convertor.ts +59 -0
- package/src/brand-page-maker/convertors/i18n/converter.de-DE.json +26 -23
- package/src/brand-page-maker/convertors/i18n/converter.es-ES.json +26 -23
- package/src/brand-page-maker/convertors/i18n/converter.fr-CA.json +26 -23
- package/src/brand-page-maker/convertors/i18n/converter.fr-FR.json +26 -23
- package/src/brand-page-maker/convertors/i18n/converter.json +4 -1
- package/src/brand-page-maker/convertors/i18n/converter.pt-BR.json +26 -23
- package/src/brand-page-maker/convertors/i18n/converter.pt-PT.json +26 -23
- package/src/brand-page-maker/models/content-settings-configs.ts +1 -0
- package/src/brand-page-maker/models/content-settings.ts +59 -0
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +2 -0
- package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +3820 -300
- package/src/brand-page-maker/utils/apply-color-strategy.test.ts +123 -2
- package/src/brand-page-maker/utils/apply-color-strategy.ts +73 -19
- package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +110 -0
- package/src/brand-page-maker/utils/rich-text-editor.util.ts +66 -0
- package/src/brand-page-maker/validators/field.validator.ts +2 -0
- package/src/bundles/bundled-translations.de-DE.json +14 -2
- package/src/bundles/bundled-translations.es-ES.json +14 -2
- package/src/bundles/bundled-translations.fr-CA.json +14 -2
- package/src/bundles/bundled-translations.fr-FR.json +14 -2
- package/src/bundles/bundled-translations.json +14 -2
- package/src/bundles/bundled-translations.pt-BR.json +14 -2
- package/src/bundles/bundled-translations.pt-PT.json +14 -2
- package/src/composables/useTranslate.ts +2 -1
- package/src/metadata-builder/builders/item-id-utils.test.ts +24 -0
- package/src/metadata-builder/parsers/section-tool-arguments.ts +2 -1
- package/src/shared/color-strategies/color-strategies.ts +4 -0
- package/src/shared/color-strategies/rte-field-pairs.test.ts +2 -0
- package/src/shared/color-strategies/rte-field-pairs.ts +23 -0
- package/src/shared/content-settings/components/color-field/ColorField.test.ts +29 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +11 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +11 -1
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +2 -0
- package/src/shared/content-settings/components/faq-items-field/FaqItemsField.test.ts +331 -0
- package/src/shared/content-settings/components/faq-items-field/FaqItemsField.vue +276 -0
- package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +1 -0
- package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +11 -1
- package/src/shared/content-settings/components/items-field/ItemsField.test.ts +106 -0
- package/src/shared/content-settings/components/items-field/ItemsField.vue +8 -2
- package/src/shared/content-settings/components/textarea-field/TextareaField.mixin.ts +6 -0
- package/src/shared/content-settings/components/textarea-field/TextareaField.vue +1 -0
- package/src/shared/content-settings/models.ts +7 -0
- package/src/shared/content-settings/store/content-settings-store.test.ts +49 -0
- package/src/shared/content-settings/store/content-settings-store.ts +37 -0
- package/src/utils/minify-brand-page-metadata.test.ts +35 -0
- package/lib/src/bundled-translations-BNA5h0Dx.js +0 -179
- package/lib/src/bundled-translations.de-DE-fyTHrRxT.js +0 -179
- package/lib/src/bundled-translations.es-ES-BMmvJGGC.js +0 -179
- package/lib/src/bundled-translations.fr-CA-Bo69L_BP.js +0 -179
- package/lib/src/bundled-translations.fr-FR-C4yTVFOW.js +0 -179
- package/lib/src/bundled-translations.pt-BR-CPMPfny0.js +0 -179
- package/lib/src/bundled-translations.pt-PT-C6ZwYs37.js +0 -179
|
@@ -77,6 +77,14 @@ export declare const IMAGE_RESOLUTION_PRESETS: {
|
|
|
77
77
|
readonly ULTRA_HD: "q=80&w=2160";
|
|
78
78
|
};
|
|
79
79
|
export type ImagesSectionContentDisplayStyle = (typeof IMAGES_SECTION_CONTENT_DISPLAY_STYLES)[number];
|
|
80
|
+
/** Centered and split are accordions; grid shows every answer. */
|
|
81
|
+
export declare const FAQ_DISPLAY_STYLES: Readonly<{
|
|
82
|
+
readonly centered: "faq-centered";
|
|
83
|
+
readonly split: "faq-split";
|
|
84
|
+
readonly grid: "faq-grid";
|
|
85
|
+
}>;
|
|
86
|
+
export type FaqDisplayStyle = (typeof FAQ_DISPLAY_STYLES)[keyof typeof FAQ_DISPLAY_STYLES];
|
|
87
|
+
export declare const FAQ_MAX_ITEMS = 6;
|
|
80
88
|
export declare const HEADER_CSRF_TOKEN = "csrf-token";
|
|
81
89
|
export declare const STYLE_THEME_KEYS: Readonly<{
|
|
82
90
|
LogoTextColor: "logo-text-color";
|
|
@@ -103,6 +103,13 @@ export const IMAGE_RESOLUTION_PRESETS = {
|
|
|
103
103
|
FULL_HD: 'q=80&w=1080',
|
|
104
104
|
ULTRA_HD: 'q=80&w=2160',
|
|
105
105
|
};
|
|
106
|
+
/** Centered and split are accordions; grid shows every answer. */
|
|
107
|
+
export const FAQ_DISPLAY_STYLES = Object.freeze({
|
|
108
|
+
centered: 'faq-centered',
|
|
109
|
+
split: 'faq-split',
|
|
110
|
+
grid: 'faq-grid',
|
|
111
|
+
});
|
|
112
|
+
export const FAQ_MAX_ITEMS = 6;
|
|
106
113
|
export const HEADER_CSRF_TOKEN = 'csrf-token';
|
|
107
114
|
export const STYLE_THEME_KEYS = Object.freeze({
|
|
108
115
|
LogoTextColor: 'logo-text-color',
|
|
@@ -33,5 +33,7 @@ export declare const CONTENT_TEXT_STYLE_PROPERTY_KEYS: {
|
|
|
33
33
|
readonly buttonTextStyle: "buttonTextStyle";
|
|
34
34
|
readonly copyrightStyle: "copyrightStyle";
|
|
35
35
|
readonly successMessageStyle: "successMessageStyle";
|
|
36
|
+
readonly questionStyle: "questionStyle";
|
|
37
|
+
readonly answerStyle: "answerStyle";
|
|
36
38
|
};
|
|
37
39
|
export type ContentTextStylePropertyKey = keyof typeof CONTENT_TEXT_STYLE_PROPERTY_KEYS;
|
|
@@ -31,6 +31,7 @@ export declare const CONTENT_TYPES: {
|
|
|
31
31
|
readonly 'shapes-section': "shapes-section";
|
|
32
32
|
readonly 'shop-section': "shop-section";
|
|
33
33
|
readonly 'booking-section': "booking-section";
|
|
34
|
+
readonly 'faq-section': "faq-section";
|
|
34
35
|
};
|
|
35
36
|
export type ContentType = keyof typeof CONTENT_TYPES;
|
|
36
37
|
export declare const PERSONALISATION_ROLES: {
|
|
@@ -478,6 +478,28 @@ export interface BookingSectionContent extends Content {
|
|
|
478
478
|
buttonLinkType: ButtonLinkType;
|
|
479
479
|
buttonTextStyle: TextStyleDeclaration;
|
|
480
480
|
}
|
|
481
|
+
export interface FaqItem {
|
|
482
|
+
/** Stable per-item identifier. See ImageItem.id. */
|
|
483
|
+
id: string;
|
|
484
|
+
question: RichTextValue;
|
|
485
|
+
questionStyle: TextStyleDeclaration;
|
|
486
|
+
answer: RichTextValue;
|
|
487
|
+
answerStyle: TextStyleDeclaration;
|
|
488
|
+
}
|
|
489
|
+
export interface FaqSectionContent extends Content {
|
|
490
|
+
type: 'faq-section';
|
|
491
|
+
title: RichTextValue;
|
|
492
|
+
description: RichTextValue;
|
|
493
|
+
displayStyle: string;
|
|
494
|
+
items: FaqItem[];
|
|
495
|
+
titleStyle: TextStyleDeclaration;
|
|
496
|
+
descriptionStyle: TextStyleDeclaration;
|
|
497
|
+
backgroundStyle: BrandPageCssStyle;
|
|
498
|
+
/** `{ color }` for the +/- toggle. */
|
|
499
|
+
iconColor: BrandPageCssStyle;
|
|
500
|
+
/** `{ backgroundColor }`, the Divider section's shape. `'transparent'` hides the line. */
|
|
501
|
+
dividerColor: BrandPageCssStyle;
|
|
502
|
+
}
|
|
481
503
|
export declare class PageModel {
|
|
482
504
|
title: string;
|
|
483
505
|
contents: Content[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProfileContent, TextContent, ContactFormContent, ImageContent, BannerSectionContent, SocialLinksContent, ImageGalleryContent, TestimonialSectionContent, AboutSectionContent, ImagesSectionContent, MailingListContent, SupportMeContent, RequestPaymentContent, ShapesSectionContent, ShopContent, ButtonContent, PageModel, BookingSectionContent } from '../models';
|
|
1
|
+
import type { ProfileContent, TextContent, ContactFormContent, ImageContent, BannerSectionContent, SocialLinksContent, ImageGalleryContent, TestimonialSectionContent, AboutSectionContent, ImagesSectionContent, MailingListContent, SupportMeContent, RequestPaymentContent, ShapesSectionContent, ShopContent, ButtonContent, PageModel, BookingSectionContent, FaqSectionContent } from '../models';
|
|
2
2
|
export type ContentCallback = {
|
|
3
3
|
profileContentCallback: (content: ProfileContent) => void;
|
|
4
4
|
textContentCallback: (content: TextContent) => void;
|
|
@@ -17,5 +17,6 @@ export type ContentCallback = {
|
|
|
17
17
|
shopSectionContentCallback: (content: ShopContent) => void;
|
|
18
18
|
buttonContentCallback: (content: ButtonContent) => void;
|
|
19
19
|
bookingSectionContentCallback: (content: BookingSectionContent) => void;
|
|
20
|
+
faqSectionContentCallback: (content: FaqSectionContent) => void;
|
|
20
21
|
};
|
|
21
22
|
export declare const forEachPageCallContentCallback: (page: PageModel, callbacks: ContentCallback) => void;
|
|
@@ -49,6 +49,9 @@ export const forEachPageCallContentCallback = (page, callbacks) => {
|
|
|
49
49
|
case 'booking-section':
|
|
50
50
|
callbacks.bookingSectionContentCallback(content);
|
|
51
51
|
break;
|
|
52
|
+
case 'faq-section':
|
|
53
|
+
callbacks.faqSectionContentCallback(content);
|
|
54
|
+
break;
|
|
52
55
|
case 'general-link':
|
|
53
56
|
case 'website':
|
|
54
57
|
case 'email':
|
|
@@ -29,6 +29,8 @@ interface ViewModelMappingOptions {
|
|
|
29
29
|
previewImageUrl: string;
|
|
30
30
|
};
|
|
31
31
|
setVideoUrlsWithToken?: (token: string, videoUrl: string, previewImageUrl: string, assetId: string) => void;
|
|
32
|
+
/** Maker-only UI state: content id → the item its settings panel has open. Never persisted. */
|
|
33
|
+
activeItemIdByContentId?: Record<string, string | undefined>;
|
|
32
34
|
}
|
|
33
35
|
export declare const getBrandPageViewModelFromBrandPageModel: (model: BrandPageModel, brandPageToken: string | undefined, showBrandCrowdLogo: boolean | undefined, options: ViewModelMappingOptions) => BrandPageViewModel;
|
|
34
36
|
export declare const resolvePageIdsInRteJson: (doc: unknown, nav: NavViewModel, options: ViewModelMappingOptions) => unknown;
|
|
@@ -611,6 +611,27 @@ const mapToTestimonialSectionViewModel = (content, styles) => {
|
|
|
611
611
|
isFullWidth: true,
|
|
612
612
|
}, styles);
|
|
613
613
|
};
|
|
614
|
+
// An item's question/answer styles are CONTENT_TEXT_STYLE_PROPERTY_KEYS, so the section
|
|
615
|
+
// resolver handles them when handed the item.
|
|
616
|
+
const mapFaqItem = (item, styles) => applyViewModelTextStyles({
|
|
617
|
+
...item,
|
|
618
|
+
questionStyle: { ...item.questionStyle },
|
|
619
|
+
answerStyle: { ...item.answerStyle },
|
|
620
|
+
}, styles);
|
|
621
|
+
const mapToFaqSectionViewModel = (content, styles, brandPageType, options) => {
|
|
622
|
+
return applyViewModelTextStyles({
|
|
623
|
+
...content,
|
|
624
|
+
role: content.type,
|
|
625
|
+
type: 'faq-section',
|
|
626
|
+
// No `color` pre-seed, as in the testimonial mapper: it would read as an override.
|
|
627
|
+
titleStyle: { ...content.titleStyle },
|
|
628
|
+
descriptionStyle: { ...content.descriptionStyle },
|
|
629
|
+
items: (content.items ?? []).map((item) => mapFaqItem(item, styles)),
|
|
630
|
+
isFullWidth: true,
|
|
631
|
+
isStacked: brandPageType !== BRAND_PAGE_TYPES.brandSite,
|
|
632
|
+
activeItemId: options.activeItemIdByContentId?.[content.id],
|
|
633
|
+
}, styles);
|
|
634
|
+
};
|
|
614
635
|
const mapToSocialLinksViewModel = (content, styles, brandPageType) => {
|
|
615
636
|
return applyViewModelTextStyles({
|
|
616
637
|
...content,
|
|
@@ -872,6 +893,8 @@ export const mapToViewModel = (styles, brandPageType, options) => (content) => {
|
|
|
872
893
|
return mapToBannerSectionViewModel(content, styles, options);
|
|
873
894
|
case 'booking-section':
|
|
874
895
|
return mapToBookingSectionViewModel(content, styles);
|
|
896
|
+
case 'faq-section':
|
|
897
|
+
return mapToFaqSectionViewModel(content, styles, brandPageType, options);
|
|
875
898
|
case 'about-section':
|
|
876
899
|
return mapToAboutSectionViewModel(content, styles);
|
|
877
900
|
case 'images-section':
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ButtonWithModalContent, ProfileContent, TextContent, VideoContent, ImageContent, ContentType, ButtonStyles, LogoStyles, MapContent, ImageGalleryContent, GalleryStyles, MailingListContent, RequestPaymentContent, ShopContent, SupportMeContent, ContactFormContent, BannerSectionContent, BrandPageType, SocialLinksContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ButtonLinkType, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, TextMediaItem, TextShapeItem, TextStyleDeclaration, AspectRatio, LogoImageModel, LogoTemplateImageModel, CookieOptions, BookingSectionContent, MediaTypes, TextStyles, BackgroundStyle, BackgroundShape, PersonalisationRole, SaveContactOptions, ColorItem, RichTextValue } from './models';
|
|
1
|
+
import type { ButtonWithModalContent, ProfileContent, TextContent, VideoContent, ImageContent, ContentType, ButtonStyles, LogoStyles, MapContent, ImageGalleryContent, GalleryStyles, MailingListContent, RequestPaymentContent, ShopContent, SupportMeContent, ContactFormContent, BannerSectionContent, BrandPageType, SocialLinksContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ButtonLinkType, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, TextMediaItem, TextShapeItem, TextStyleDeclaration, AspectRatio, LogoImageModel, LogoTemplateImageModel, CookieOptions, BookingSectionContent, FaqSectionContent, MediaTypes, TextStyles, BackgroundStyle, BackgroundShape, PersonalisationRole, SaveContactOptions, ColorItem, RichTextValue } from './models';
|
|
2
2
|
import type { ImagesSectionContentDisplayStyle } from './constants';
|
|
3
|
-
export type ViewModelType = 'button' | 'image' | 'image-gallery' | 'logo' | 'map' | 'mailing-list' | 'profile' | 'support-me' | 'request-payment' | 'text' | 'video' | 'contact-form' | 'banner-section' | 'images-section' | 'about-section' | 'divider-section' | 'testimonial-section' | 'social-links' | 'shapes-section' | 'shop-section' | 'booking-section';
|
|
3
|
+
export type ViewModelType = 'button' | 'image' | 'image-gallery' | 'logo' | 'map' | 'mailing-list' | 'profile' | 'support-me' | 'request-payment' | 'text' | 'video' | 'contact-form' | 'banner-section' | 'images-section' | 'about-section' | 'divider-section' | 'testimonial-section' | 'social-links' | 'shapes-section' | 'shop-section' | 'booking-section' | 'faq-section';
|
|
4
4
|
export interface ContentViewModel {
|
|
5
5
|
id: string;
|
|
6
6
|
type: ViewModelType;
|
|
@@ -132,6 +132,13 @@ export interface BookingSectionViewModel extends ContentViewModel, Omit<BookingS
|
|
|
132
132
|
buttonViewModel: ButtonViewModel;
|
|
133
133
|
isFullWidth: boolean;
|
|
134
134
|
}
|
|
135
|
+
export interface FaqSectionViewModel extends ContentViewModel, Omit<FaqSectionContent, 'type'> {
|
|
136
|
+
isFullWidth: boolean;
|
|
137
|
+
/** brand.page / brand.contact: split and grid always use their stacked layout. */
|
|
138
|
+
isStacked: boolean;
|
|
139
|
+
/** Maker-only: the item the settings panel has open, so the canvas shows it. */
|
|
140
|
+
activeItemId?: string;
|
|
141
|
+
}
|
|
135
142
|
export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth' | 'headerButton' | 'backgroundStyle'> {
|
|
136
143
|
logo: LogoViewModel;
|
|
137
144
|
pages: PageViewModel[];
|
|
@@ -627,6 +627,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
627
627
|
selectedItemValue: string | null;
|
|
628
628
|
selectedItemIndex: number | null;
|
|
629
629
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
630
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
630
631
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => import("@brand-page").Content | undefined;
|
|
631
632
|
getFieldSettings(state: {
|
|
632
633
|
addContentOptions: {
|
|
@@ -678,6 +679,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
678
679
|
selectedItemValue: string | null;
|
|
679
680
|
selectedItemIndex: number | null;
|
|
680
681
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
682
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
681
683
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => import("../../../shared/content-settings/models").ContentItemFieldSettings | undefined;
|
|
682
684
|
getItem(state: {
|
|
683
685
|
addContentOptions: {
|
|
@@ -729,6 +731,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
729
731
|
selectedItemValue: string | null;
|
|
730
732
|
selectedItemIndex: number | null;
|
|
731
733
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
734
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
732
735
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => import("../../../shared/content-settings/models").ContentItem<any> | undefined;
|
|
733
736
|
getValue(state: {
|
|
734
737
|
addContentOptions: {
|
|
@@ -780,6 +783,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
780
783
|
selectedItemValue: string | null;
|
|
781
784
|
selectedItemIndex: number | null;
|
|
782
785
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
786
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
783
787
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => import("@brand-page").Content | string | undefined;
|
|
784
788
|
getItemState(state: {
|
|
785
789
|
addContentOptions: {
|
|
@@ -831,6 +835,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
831
835
|
selectedItemValue: string | null;
|
|
832
836
|
selectedItemIndex: number | null;
|
|
833
837
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
838
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
834
839
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => import("../../../shared/content-settings/models").ContentSettingsItemState;
|
|
835
840
|
getItemGroupState(state: {
|
|
836
841
|
addContentOptions: {
|
|
@@ -882,11 +887,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
882
887
|
selectedItemValue: string | null;
|
|
883
888
|
selectedItemIndex: number | null;
|
|
884
889
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
890
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
885
891
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, groupId: string) => import("../../../shared/content-settings/models").ContentSettingsItemGroupState;
|
|
886
892
|
mode(): import("@shared/content-settings/store").ContentSettingsMode;
|
|
887
893
|
selectedItem(): import("../../../shared/content-settings/models").ContentItem<any> | undefined;
|
|
888
894
|
selectedItemTemplate(): import("@brand-page-maker/models").ContentSettingsConfig<any> | undefined;
|
|
889
895
|
}, {
|
|
896
|
+
setActiveItem(contentId: string, itemId: string | undefined): void;
|
|
890
897
|
onContentChanged(): void;
|
|
891
898
|
_addItem({ item, index, }: {
|
|
892
899
|
item: import("../../../shared/content-settings/models").ContentItem<any>;
|
|
@@ -950,6 +957,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
950
957
|
}): void;
|
|
951
958
|
updateTextItemTextStyleType({ id, name, value, index, isHydrationWrite, }: import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
|
|
952
959
|
updateTextItemTextStyleTypeWithStyles({ id, name, value, index, isHydrationWrite, }: import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
|
|
960
|
+
updateListItemTextStyles({ id, name, value, target, isHydrationWrite, }: Omit<import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>, "index"> & {
|
|
961
|
+
target: import("../../../shared/content-settings/models").RteItemStyleTarget;
|
|
962
|
+
}): void;
|
|
953
963
|
_setActiveCategoryTab({ activeCategoryTab, }: {
|
|
954
964
|
activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
|
|
955
965
|
}): void;
|
package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts
CHANGED
|
@@ -90,6 +90,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
90
90
|
selectedItemValue: string | null;
|
|
91
91
|
selectedItemIndex: number | null;
|
|
92
92
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
93
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
93
94
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => Content | undefined;
|
|
94
95
|
getFieldSettings(state: {
|
|
95
96
|
addContentOptions: {
|
|
@@ -141,6 +142,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
141
142
|
selectedItemValue: string | null;
|
|
142
143
|
selectedItemIndex: number | null;
|
|
143
144
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
145
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
144
146
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => import("@shared/content-settings/models").ContentItemFieldSettings | undefined;
|
|
145
147
|
getItem(state: {
|
|
146
148
|
addContentOptions: {
|
|
@@ -192,6 +194,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
192
194
|
selectedItemValue: string | null;
|
|
193
195
|
selectedItemIndex: number | null;
|
|
194
196
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
197
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
195
198
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => ContentItem<any> | undefined;
|
|
196
199
|
getValue(state: {
|
|
197
200
|
addContentOptions: {
|
|
@@ -243,6 +246,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
243
246
|
selectedItemValue: string | null;
|
|
244
247
|
selectedItemIndex: number | null;
|
|
245
248
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
249
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
246
250
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => Content | string | undefined;
|
|
247
251
|
getItemState(state: {
|
|
248
252
|
addContentOptions: {
|
|
@@ -294,6 +298,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
294
298
|
selectedItemValue: string | null;
|
|
295
299
|
selectedItemIndex: number | null;
|
|
296
300
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
301
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
297
302
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string) => import("@shared/content-settings/models").ContentSettingsItemState;
|
|
298
303
|
getItemGroupState(state: {
|
|
299
304
|
addContentOptions: {
|
|
@@ -345,11 +350,13 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
345
350
|
selectedItemValue: string | null;
|
|
346
351
|
selectedItemIndex: number | null;
|
|
347
352
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
353
|
+
activeItemIdByContentId: Record<string, string | undefined>;
|
|
348
354
|
} & import("pinia").PiniaCustomStateProperties<import("@shared/content-settings/store").ContentSettingsState>): (id: string, groupId: string) => import("@shared/content-settings/models").ContentSettingsItemGroupState;
|
|
349
355
|
mode(): import("@shared/content-settings/store").ContentSettingsMode;
|
|
350
356
|
selectedItem(): ContentItem<any> | undefined;
|
|
351
357
|
selectedItemTemplate(): import("../../models").ContentSettingsConfig<any> | undefined;
|
|
352
358
|
}, {
|
|
359
|
+
setActiveItem(contentId: string, itemId: string | undefined): void;
|
|
353
360
|
onContentChanged(): void;
|
|
354
361
|
_addItem({ item, index, }: {
|
|
355
362
|
item: ContentItem<any>;
|
|
@@ -413,6 +420,9 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
413
420
|
}): void;
|
|
414
421
|
updateTextItemTextStyleType({ id, name, value, index, isHydrationWrite, }: import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
|
|
415
422
|
updateTextItemTextStyleTypeWithStyles({ id, name, value, index, isHydrationWrite, }: import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
|
|
423
|
+
updateListItemTextStyles({ id, name, value, target, isHydrationWrite, }: Omit<import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>, "index"> & {
|
|
424
|
+
target: import("@shared/content-settings/models").RteItemStyleTarget;
|
|
425
|
+
}): void;
|
|
416
426
|
_setActiveCategoryTab({ activeCategoryTab, }: {
|
|
417
427
|
activeCategoryTab: import("../../models").ItemCategory;
|
|
418
428
|
}): void;
|
|
@@ -4,6 +4,8 @@ import type { StyleTextFontFamilyOption } from '@shared/style-settings/models';
|
|
|
4
4
|
import type { HyperlinkType, TextStyleOption } from '@brand-page';
|
|
5
5
|
import { type TextItem, type TextStyleDeclaration } from '@brand-page';
|
|
6
6
|
import type { ButtonGroupOption } from '@brand-page-maker/models/button-group.model';
|
|
7
|
+
import { useUiContentSettingsStore } from '@shared/content-settings/store';
|
|
8
|
+
import type { RteItemStyleTarget } from '@shared/content-settings/models';
|
|
7
9
|
interface UseRichTextEditorReturn {
|
|
8
10
|
editor: Editor;
|
|
9
11
|
onFocus: () => void;
|
|
@@ -55,6 +57,16 @@ interface EditorOptionType {
|
|
|
55
57
|
export declare const useExternalRichTextEditor: () => {
|
|
56
58
|
externalEditor: Editor;
|
|
57
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Saves a field's style. An editor bound to a list item (`itemStyleTarget`) saves to that
|
|
62
|
+
* item's own style instead of the section's `${name}Style`.
|
|
63
|
+
*/
|
|
64
|
+
export declare const updateFieldTextStyles: (store: ReturnType<typeof useUiContentSettingsStore>, itemStyleTarget: RteItemStyleTarget | undefined, payload: {
|
|
65
|
+
id: string;
|
|
66
|
+
name: string;
|
|
67
|
+
value: TextStyleDeclaration;
|
|
68
|
+
isHydrationWrite?: boolean;
|
|
69
|
+
}) => void;
|
|
58
70
|
export declare const useRichTextEditor: (model: ModelRef<any>, props: {
|
|
59
71
|
id: string;
|
|
60
72
|
name: string;
|
|
@@ -66,6 +78,7 @@ export declare const useRichTextEditor: (model: ModelRef<any>, props: {
|
|
|
66
78
|
textItemIndex: number;
|
|
67
79
|
item: TextItem;
|
|
68
80
|
contentType: string;
|
|
81
|
+
itemStyleTarget?: RteItemStyleTarget;
|
|
69
82
|
}, emit: (event: "focus" | "blur" | "update:modelValue", ...args: any[]) => void, fontSettings: {
|
|
70
83
|
selectedTextStyle: string;
|
|
71
84
|
selectedFont: string;
|
|
@@ -24,6 +24,18 @@ export const useExternalRichTextEditor = () => {
|
|
|
24
24
|
externalEditor,
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Saves a field's style. An editor bound to a list item (`itemStyleTarget`) saves to that
|
|
29
|
+
* item's own style instead of the section's `${name}Style`.
|
|
30
|
+
*/
|
|
31
|
+
export const updateFieldTextStyles = (store, itemStyleTarget, payload) => {
|
|
32
|
+
if (itemStyleTarget) {
|
|
33
|
+
store.updateListItemTextStyles({ ...payload, target: itemStyleTarget });
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
store.updateTextStyles(payload);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
27
39
|
export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDropdownRef,
|
|
28
40
|
// One entry of `textStyleOptions`; `undefined` when the selection is "none".
|
|
29
41
|
selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyleTypeOptions, markedText, isHyperlinkPopupOpen, selectedLinkTypeValue) => {
|
|
@@ -204,6 +216,21 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
204
216
|
});
|
|
205
217
|
}
|
|
206
218
|
});
|
|
219
|
+
// Set while a toolbar command runs. The toolbar has taken focus by then, so
|
|
220
|
+
// `isFocused` alone would tag the command's write as hydration and fold it into
|
|
221
|
+
// the previous undo entry — hidden only when a style write rides along and opens
|
|
222
|
+
// an entry of its own. Synchronous commands only: the spacing sliders dispatch
|
|
223
|
+
// after a debounce and are not covered.
|
|
224
|
+
let isRunningToolbarCommand = false;
|
|
225
|
+
const runAsToolbarCommand = (command) => {
|
|
226
|
+
isRunningToolbarCommand = true;
|
|
227
|
+
try {
|
|
228
|
+
return command();
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
isRunningToolbarCommand = false;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
207
234
|
// Update model when editor content changes. RTE content is stored as Tiptap
|
|
208
235
|
// JSON (BP-5787). getJSON() is already in hand (the editor holds the doc) and
|
|
209
236
|
// is sanitised natively — no getHTML(), no DOMPurify, no extra editor — so
|
|
@@ -217,15 +244,9 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
217
244
|
// field → store chain and arms the history merge at the moment of the
|
|
218
245
|
// store write — arming here at emit time would lapse before the
|
|
219
246
|
// debounce fires. Genuine edits happen while focused and commit
|
|
220
|
-
// normally.
|
|
221
|
-
//
|
|
222
|
-
// Known limitation: a programmatic toolbar command run on an editor the
|
|
223
|
-
// user hasn't focused yet would also merge (losing that undo step). Today
|
|
224
|
-
// the RTE only mounts inside an already-open settings drawer and the user
|
|
225
|
-
// focuses it before formatting, so this doesn't occur — revisit if a
|
|
226
|
-
// consumer ever drives toolbar actions on an unfocused editor.
|
|
247
|
+
// normally, and so do synchronous toolbar commands (isRunningToolbarCommand).
|
|
227
248
|
emit('update:modelValue', sanitizeRteJson(editor.getJSON()), {
|
|
228
|
-
isHydrationWrite: !editor.isFocused,
|
|
249
|
+
isHydrationWrite: !editor.isFocused && !isRunningToolbarCommand,
|
|
229
250
|
});
|
|
230
251
|
});
|
|
231
252
|
editor.on('selectionUpdate', () => {
|
|
@@ -303,7 +324,7 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
303
324
|
// write lands ~100ms BEFORE the editor's canonical text write-back, and
|
|
304
325
|
// an unflagged write here would open a plain capture burst that
|
|
305
326
|
// swallows the flagged text write into a phantom entry (BP-5810).
|
|
306
|
-
contentSettingStore.
|
|
327
|
+
updateFieldTextStyles(contentSettingStore, props.itemStyleTarget, {
|
|
307
328
|
id: props.rawId,
|
|
308
329
|
name: props.name,
|
|
309
330
|
value: {
|
|
@@ -488,7 +509,7 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
488
509
|
});
|
|
489
510
|
}
|
|
490
511
|
else {
|
|
491
|
-
contentSettingStore.
|
|
512
|
+
updateFieldTextStyles(contentSettingStore, props.itemStyleTarget, {
|
|
492
513
|
id: props.rawId,
|
|
493
514
|
name: props.name,
|
|
494
515
|
value: {
|
|
@@ -584,7 +605,7 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
584
605
|
editor,
|
|
585
606
|
onFocus,
|
|
586
607
|
onBlur,
|
|
587
|
-
triggerEditorStyleChange,
|
|
608
|
+
triggerEditorStyleChange: (editorOption) => runAsToolbarCommand(() => triggerEditorStyleChange(editorOption)),
|
|
588
609
|
toggleBold,
|
|
589
610
|
toggleItalic,
|
|
590
611
|
toggleUnderline,
|
|
@@ -601,7 +622,7 @@ selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyle
|
|
|
601
622
|
setInitialStyleSettings,
|
|
602
623
|
copyGlobalStyleSettings,
|
|
603
624
|
unsetAllMarks,
|
|
604
|
-
handleHyperlink,
|
|
625
|
+
handleHyperlink: (...args) => runAsToolbarCommand(() => handleHyperlink(...args)),
|
|
605
626
|
hyperlinkValue,
|
|
606
627
|
setHyperlinkUrlValue,
|
|
607
628
|
shouldShow,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LogoContent, FacebookContent, GeneralLinkContent, PhoneContent, EmailContent, ImageContent, InstagramContent, LinkedInContent, PinterestContent, ProfileContent, TextContent, TiktokContent, TwitchContent, XContent, VideoContent, WebsiteContent, YoutubeContent, ContentType, MapContent, ImageGalleryContent, MailingListContent, RequestPaymentContent, SupportMeContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ShopContent, BookingSectionContent } from '@brand-page';
|
|
1
|
+
import type { LogoContent, FacebookContent, GeneralLinkContent, PhoneContent, EmailContent, ImageContent, InstagramContent, LinkedInContent, PinterestContent, ProfileContent, TextContent, TiktokContent, TwitchContent, XContent, VideoContent, WebsiteContent, YoutubeContent, ContentType, MapContent, ImageGalleryContent, MailingListContent, RequestPaymentContent, SupportMeContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ShopContent, BookingSectionContent, FaqSectionContent } from '@brand-page';
|
|
2
2
|
import type { ContentSettingsConfig, ContentSettingsField, ContentSettingsMultiField } from '../models';
|
|
3
3
|
export declare const LOGO_SETTINGS_CONFIG: () => ContentSettingsConfig<Omit<LogoContent, "version" | "logoVariation" | "logoImageHeight" | "logoImageWidth" | "logoLastUpdate" | "logoImageBase64Url">>;
|
|
4
4
|
export declare const GENERAL_LINK_CONTENT_SETTINGS_CONFIG: () => ContentSettingsConfig<GeneralLinkContent>;
|
|
@@ -51,4 +51,5 @@ export declare const SHOP_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig<S
|
|
|
51
51
|
isShippingEnabled: boolean;
|
|
52
52
|
}>;
|
|
53
53
|
export declare const BOOKING_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig<BookingSectionContent>;
|
|
54
|
+
export declare const FAQ_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig<FaqSectionContent>;
|
|
54
55
|
export declare const CONTENT_SETTINGS_CONFIGS: () => Record<ContentType, ContentSettingsConfig<any>>;
|