@designcrowd/library.brand-page 6.2.3-ast-faq → 6.2.3

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 (125) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-BRisMzFY.js → CreatedOnBrandCrowd-de-de-Cn0M-eZ1.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CDDsL9GX.js → CreatedOnBrandCrowd-en-us-DRLMSDZr.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BkZrEo4j.js → CreatedOnBrandCrowd-es-es-BglTu73U.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-sx_ury7R.js → CreatedOnBrandCrowd-fr-ca-Bj6YZ_el.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-sx_ury7R.js → CreatedOnBrandCrowd-fr-fr-Bj6YZ_el.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DCWiAfkU.js → CreatedOnBrandCrowd-pt-br-DEoOmQ1F.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DCWiAfkU.js → CreatedOnBrandCrowd-pt-pt-DEoOmQ1F.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-C1S7f22L.js → CreatedOnDcom-de-de-BZ7gTt4Z.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DgTlWaXE.js → CreatedOnDcom-en-us-CD6Km5sH.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CxSQJe_V.js → CreatedOnDcom-es-es-CNpZHvEl.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-Bbam2tt6.js → CreatedOnDcom-fr-ca-URS-ydJ1.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-Cb0XDRPL.js → CreatedOnDcom-fr-fr-D2AVeA3H.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BjdX3-E3.js → CreatedOnDcom-pt-br-C32frnFs.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-BXpbfopB.js → CreatedOnDcom-pt-pt-TDYGjRXS.js} +1 -1
  15. package/lib/src/brand-page/constants/misc.constants.d.ts +0 -8
  16. package/lib/src/brand-page/constants/misc.constants.js +0 -7
  17. package/lib/src/brand-page/constants/styles.constants.d.ts +0 -2
  18. package/lib/src/brand-page/constants/styles.constants.js +0 -2
  19. package/lib/src/brand-page/models/content.model.d.ts +0 -1
  20. package/lib/src/brand-page/models/content.model.js +0 -1
  21. package/lib/src/brand-page/models/index.d.ts +0 -19
  22. package/lib/src/brand-page/utils/content-callback-util.d.ts +1 -2
  23. package/lib/src/brand-page/utils/content-callback-util.js +0 -3
  24. package/lib/src/brand-page/utils/model.util.d.ts +1 -2
  25. package/lib/src/brand-page/utils/model.util.js +0 -3
  26. package/lib/src/brand-page/utils/view-model.util.d.ts +0 -2
  27. package/lib/src/brand-page/utils/view-model.util.js +0 -24
  28. package/lib/src/brand-page/view-models.d.ts +2 -9
  29. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +0 -10
  30. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +0 -10
  31. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +0 -13
  32. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +30 -64
  33. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +1 -2
  34. package/lib/src/brand-page-maker/constants/config-settings-constant.js +2 -101
  35. package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -22
  36. package/lib/src/brand-page-maker/models/content-settings-configs.js +0 -1
  37. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -4
  38. package/lib/src/brand-page-maker/models/content-settings.js +1 -45
  39. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +0 -1
  40. package/lib/src/brand-page-maker/utils/apply-color-strategy.js +17 -47
  41. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +0 -6
  42. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +1 -24
  43. package/lib/src/brand-page-maker/validators/field.validator.js +0 -2
  44. package/lib/src/bundled-translations-BYUfWBT3.js +179 -0
  45. package/lib/src/bundles/bundled-translations.json +2 -20
  46. package/lib/src/composables/useTranslate.d.ts +1 -1
  47. package/lib/src/composables/useTranslate.js +1 -1
  48. package/lib/src/css/library.brand-page-brandCrowd.min.css +36 -143
  49. package/lib/src/css/library.brand-page-brandPage.min.css +36 -143
  50. package/lib/src/css/library.brand-page-designCom.min.css +36 -143
  51. package/lib/src/css/library.brand-page-preview.min.css +36 -143
  52. package/lib/src/index.mjs +158 -159
  53. package/lib/src/{lib-DwpSAbLZ.js → lib-Dm9AuOJL.js} +26180 -26906
  54. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
  55. package/lib/src/shared/color-strategies/color-strategies.js +0 -4
  56. package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +0 -12
  57. package/lib/src/shared/color-strategies/rte-field-pairs.js +0 -10
  58. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +0 -10
  59. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +1 -11
  60. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +0 -10
  61. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +0 -10
  62. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +0 -10
  63. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +1 -14
  64. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -11
  65. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +0 -12
  66. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.js +0 -5
  67. package/lib/src/shared/content-settings/models.d.ts +0 -6
  68. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +1 -14
  69. package/lib/src/shared/content-settings/store/content-settings-store.js +2 -24
  70. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +0 -10
  71. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +0 -10
  72. package/package.json +2 -2
  73. package/src/brand-page/components/page/PageComponent.vue +0 -2
  74. package/src/brand-page/constants/misc.constants.ts +0 -12
  75. package/src/brand-page/constants/styles.constants.ts +0 -2
  76. package/src/brand-page/models/content.model.ts +0 -1
  77. package/src/brand-page/models/index.ts +0 -21
  78. package/src/brand-page/utils/content-callback-util.ts +0 -5
  79. package/src/brand-page/utils/model.util.ts +0 -7
  80. package/src/brand-page/utils/view-model.util.test.ts +0 -96
  81. package/src/brand-page/utils/view-model.util.ts +0 -49
  82. package/src/brand-page/view-models.ts +1 -12
  83. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +49 -37
  84. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +30 -87
  85. package/src/brand-page-maker/constants/config-settings-constant.ts +0 -108
  86. package/src/brand-page-maker/convertors/i18n/converter.json +1 -4
  87. package/src/brand-page-maker/models/content-settings-configs.ts +0 -24
  88. package/src/brand-page-maker/models/content-settings.ts +0 -57
  89. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +0 -2
  90. package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +389 -3557
  91. package/src/brand-page-maker/utils/apply-color-strategy.test.ts +2 -104
  92. package/src/brand-page-maker/utils/apply-color-strategy.ts +19 -77
  93. package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +0 -110
  94. package/src/brand-page-maker/utils/rich-text-editor.util.ts +0 -66
  95. package/src/brand-page-maker/validators/field.validator.ts +0 -2
  96. package/src/bundles/bundled-translations.json +2 -20
  97. package/src/composables/useTranslate.ts +1 -2
  98. package/src/metadata-builder/builders/item-id-utils.test.ts +0 -24
  99. package/src/metadata-builder/parsers/section-tool-arguments.ts +1 -2
  100. package/src/shared/color-strategies/color-strategies.ts +0 -4
  101. package/src/shared/color-strategies/rte-field-pairs.ts +0 -23
  102. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +1 -17
  103. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +0 -3
  104. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -11
  105. package/src/shared/content-settings/components/items-field/ItemsField.vue +2 -8
  106. package/src/shared/content-settings/components/textarea-field/TextareaField.mixin.ts +0 -6
  107. package/src/shared/content-settings/components/textarea-field/TextareaField.vue +0 -1
  108. package/src/shared/content-settings/models.ts +0 -7
  109. package/src/shared/content-settings/store/content-settings-store.test.ts +0 -70
  110. package/src/shared/content-settings/store/content-settings-store.ts +3 -37
  111. package/src/shared/ecommerce-settings/util/refreshDuplicatedMetadata.test.ts +0 -19
  112. package/src/utils/minify-brand-page-metadata.test.ts +0 -35
  113. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.d.ts +0 -3
  114. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.js +0 -47
  115. package/lib/src/bundled-translations-DY9YvuL-.js +0 -179
  116. package/src/brand-page/components/faq-section/FaqSection.test.ts +0 -292
  117. package/src/brand-page/components/faq-section/FaqSection.vue +0 -299
  118. package/src/brand-page/components/section-heading/SectionHeading.vue +0 -52
  119. package/src/brand-page/components/text-wrapper/TextWrapper.test.ts +0 -33
  120. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.test.ts +0 -165
  121. package/src/brand-page-maker/constants/faq-section-config.test.ts +0 -151
  122. package/src/brand-page-maker/convertors/faq-display-style.convertor.ts +0 -59
  123. package/src/metadata-builder/parsers/section-tool-map.test.ts +0 -12
  124. package/src/shared/content-settings/components/list-items-field/ListItemsField.test.ts +0 -429
  125. package/src/shared/content-settings/components/list-items-field/ListItemsField.vue +0 -262
@@ -1,262 +0,0 @@
1
- <template>
2
- <div data-component="list-items-field" class="tw-flex tw-flex-col tw-gap-2">
3
- <ItemsField
4
- ref="itemsFieldRef"
5
- :items="items"
6
- :can-collapse="true"
7
- :show-preview-image="false"
8
- :collapsed-by-default="true"
9
- :delete-label="contentSettingsTr(`listItemsDeleteLabel`)"
10
- @items-change="onReorder"
11
- @items-delete="onDelete"
12
- @item-toggle="onToggle"
13
- >
14
- <template #preview="{ item }">
15
- <p class="tw-w-full tw-truncate tw-m-0" data-test-list-item-label>
16
- {{ rowLabel(item) }}
17
- </p>
18
- </template>
19
- <template #form="{ index }">
20
- <div v-for="schema in itemFields" :key="schema.key" class="tw-mt-3">
21
- <FieldSubHeader :title="schema.title" />
22
- <template v-if="isRichText(schema)">
23
- <!-- The same editor as a section title; its toolbar writes this item's own style. -->
24
- <TextareaField
25
- :id="id"
26
- :key="`${items[index].id}-${schema.key}`"
27
- :name="schema.key"
28
- :value="items[index][schema.key]"
29
- :styles="items[index][schema.styleKey!]"
30
- :item="items[index]"
31
- :item-style-target="{
32
- itemsField: name,
33
- index,
34
- styleField: schema.styleKey!,
35
- }"
36
- :placeholder="schema.placeholder"
37
- :max-length="schema.maxLength"
38
- :content-type="content.type"
39
- :show-rich-text-editor="true"
40
- :attrs="{ 'data-test-tag': `list-item-${schema.key}` }"
41
- @update:model-value="onFieldInput(index, schema.key, $event)"
42
- />
43
- </template>
44
- <template v-else>
45
- <!-- The section fields' plain inputs: they encode on write, as saved text expects. -->
46
- <component
47
- :is="schema.kind === 'text' ? TextField : TextareaField"
48
- :id="id"
49
- :key="`${items[index].id}-${schema.key}`"
50
- :name="schema.key"
51
- :value="items[index][schema.key]"
52
- v-bind="schema.kind === 'text' ? {} : { item: items[index] }"
53
- :placeholder="schema.placeholder"
54
- :max-length="schema.maxLength"
55
- :attrs="{ 'data-test-tag': `list-item-${schema.key}` }"
56
- @update:model-value="onFieldInput(index, schema.key, $event)"
57
- />
58
- <TextStyleField
59
- v-if="schema.styleKey"
60
- :id="`${id}-${items[index].id}-${schema.styleKey}`"
61
- :name="schema.styleKey"
62
- :value="items[index][schema.styleKey]"
63
- :is-admin-maker="isAdminMaker"
64
- :logo-theme="logoTheme"
65
- :show-font-style-only="true"
66
- :is-text-content="true"
67
- @update:model-value="onStyleInput(index, schema.styleKey, $event)"
68
- />
69
- </template>
70
- </div>
71
- </template>
72
- </ItemsField>
73
- <Button
74
- :label="
75
- isAtMax
76
- ? contentSettingsTr(`listItemsMaxReached`, { max: maxLength })
77
- : contentSettingsTr(`listItemsAddItem`)
78
- "
79
- :disabled="isAtMax"
80
- variant="outline"
81
- size="small-medium"
82
- :full-width="true"
83
- :attrs="{ 'data-test-list-items-add': '' }"
84
- @on-click.stop="onAdd"
85
- />
86
- </div>
87
- </template>
88
- <script setup lang="ts">
89
- import type { PropType } from 'vue';
90
- import { computed, nextTick, ref, watch } from 'vue';
91
- import { Button } from '@designcrowd/fe-shared-lib';
92
- import * as uuid from 'uuid';
93
- import cloneDeep from 'lodash.clonedeep';
94
- import type { Content, LogoTheme, TextStyleDeclaration } from '@brand-page';
95
- import type { ListItemFieldSchema } from '@brand-page-maker/models/content-settings-configs';
96
- import {
97
- getPlainTextFromRTE,
98
- switchRteItemFieldsToRTE,
99
- } from '@brand-page-maker/utils';
100
- import { useExternalRichTextEditor } from '@brand-page-maker/composables/rich-text-editor/useRichTextEditor';
101
- import { useUiStyleSettingsStore } from '@shared/style-settings/store';
102
- import { useUiContentSettingsStore } from '../../store/content-settings-store';
103
- import { contentSettingsTr } from '@src/composables/useTranslate';
104
- import ItemsField from '../items-field/ItemsField.vue';
105
- import TextField from '../text-field/TextField.vue';
106
- import TextareaField from '../textarea-field/TextareaField.vue';
107
- import TextStyleField from '../text-style-field/TextStyleField.vue';
108
- import FieldSubHeader from '../field-sub-header/FieldSubHeader.vue';
109
- import type { UpdateItemValuePayload } from '../../models';
110
-
111
- type ListItem = { id: string } & Record<string, any>;
112
-
113
- defineOptions({ inheritAttrs: false });
114
-
115
- const props = defineProps({
116
- id: { type: String, required: true },
117
- name: { type: String, required: true },
118
- value: { type: Array as PropType<ListItem[]>, required: true },
119
- content: { type: Object as PropType<Content>, required: true },
120
- itemFields: {
121
- type: Array as PropType<ListItemFieldSchema[]>,
122
- required: true,
123
- },
124
- maxLength: { type: Number, required: false, default: undefined },
125
- // From the host field: false when the user lacks rich text, so every input stays plain.
126
- showRichTextEditor: { type: Boolean, required: false, default: false },
127
- isAdminMaker: { type: Boolean, required: false, default: false },
128
- logoTheme: {
129
- type: Object as PropType<LogoTheme>,
130
- required: false,
131
- default: undefined,
132
- },
133
- });
134
-
135
- const emit = defineEmits<{
136
- 'update:modelValue': [payload: UpdateItemValuePayload<ListItem[]>];
137
- }>();
138
-
139
- const contentSettingsStore = useUiContentSettingsStore();
140
- const styleSettingsStore = useUiStyleSettingsStore();
141
- const itemsFieldRef = ref<{ expand: (index: number) => void } | null>(null);
142
- const items = ref<ListItem[]>(cloneDeep(props.value ?? []));
143
-
144
- const isAtMax = computed(
145
- (): boolean =>
146
- props.maxLength !== undefined && items.value.length >= props.maxLength,
147
- );
148
-
149
- const labelKey = computed(
150
- (): string | undefined =>
151
- props.itemFields.find((schema) => schema.kind === 'text')?.key,
152
- );
153
-
154
- const rowLabel = (item: ListItem): string =>
155
- labelKey.value ? getPlainTextFromRTE(item[labelKey.value] ?? '') : '';
156
-
157
- const isRichText = (schema: ListItemFieldSchema): boolean =>
158
- props.showRichTextEditor && !!schema.styleKey;
159
-
160
- // Always a new array: the undo store drops same-reference writes (undo-redo.md).
161
- const emitChange = (isHydrationWrite = false): void => {
162
- emit('update:modelValue', {
163
- id: props.id,
164
- name: props.name,
165
- value: cloneDeep(items.value),
166
- ...(isHydrationWrite ? { isHydrationWrite: true } : {}),
167
- });
168
- };
169
-
170
- // The text fields debounce their own emits; the rich-text editor also marks its
171
- // mount-time rewrite as a hydration write so the store folds it into the current
172
- // undo entry.
173
- const onFieldInput = (
174
- index: number,
175
- key: string,
176
- payload: UpdateItemValuePayload<unknown>,
177
- ): void => {
178
- items.value[index] = { ...items.value[index], [key]: payload.value ?? '' };
179
- emitChange(payload.isHydrationWrite === true);
180
- };
181
-
182
- const onStyleInput = (
183
- index: number,
184
- key: string,
185
- payload: UpdateItemValuePayload<TextStyleDeclaration>,
186
- ): void => {
187
- items.value[index] = { ...items.value[index], [key]: payload.value };
188
- emitChange();
189
- };
190
-
191
- const onReorder = (reordered: ListItem[]): void => {
192
- items.value = [...reordered];
193
- emitChange();
194
- };
195
-
196
- const onDelete = (index: number): void => {
197
- items.value = items.value.filter((_item, i) => i !== index);
198
- emitChange();
199
- };
200
-
201
- const onToggle = (index: number, isCollapsed: boolean): void => {
202
- if (!isCollapsed && items.value[index]) {
203
- contentSettingsStore.setActiveItem(props.content.id, items.value[index].id);
204
- }
205
- };
206
-
207
- // A new item takes the last item's styles, so it looks like its siblings.
208
- const createItem = (): ListItem => {
209
- const lastItem = items.value[items.value.length - 1];
210
- const newItem: ListItem = { id: uuid.v4() };
211
-
212
- props.itemFields.forEach((schema) => {
213
- newItem[schema.key] = schema.defaultValue?.() ?? '';
214
-
215
- if (schema.styleKey) {
216
- newItem[schema.styleKey] = cloneDeep(
217
- lastItem?.[schema.styleKey] ?? schema.defaultStyle?.() ?? {},
218
- );
219
- }
220
- });
221
-
222
- if (props.showRichTextEditor) {
223
- const { externalEditor } = useExternalRichTextEditor();
224
-
225
- try {
226
- switchRteItemFieldsToRTE(
227
- props.content.type,
228
- newItem,
229
- externalEditor,
230
- styleSettingsStore,
231
- );
232
- } finally {
233
- externalEditor.destroy();
234
- }
235
- }
236
-
237
- return newItem;
238
- };
239
-
240
- const onAdd = async (): Promise<void> => {
241
- if (isAtMax.value) {
242
- return;
243
- }
244
-
245
- items.value = [...items.value, createItem()];
246
- emitChange();
247
-
248
- await nextTick();
249
- itemsFieldRef.value?.expand(items.value.length - 1);
250
- };
251
-
252
- // External writes (undo/redo, AI, an editor's toolbar style write) replace the local copy.
253
- watch(
254
- () => props.value,
255
- (value) => {
256
- if (JSON.stringify(value ?? []) !== JSON.stringify(items.value)) {
257
- items.value = cloneDeep(value ?? []);
258
- }
259
- },
260
- { deep: true },
261
- );
262
- </script>