@designcrowd/library.brand-page 6.0.8 → 6.0.10
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-B74hbf1M.js → CreatedOnBrandCrowd-de-de-D1ZeyVmP.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-DBB4rdcr.js → CreatedOnBrandCrowd-en-us-CFrIyBis.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-DgsVWLqe.js → CreatedOnBrandCrowd-es-es-B2tdeg71.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-FOLmUD6S.js → CreatedOnBrandCrowd-fr-ca-ao5xtxPH.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-FOLmUD6S.js → CreatedOnBrandCrowd-fr-fr-ao5xtxPH.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-CFN_QkC9.js → CreatedOnBrandCrowd-pt-br-DrcBDAyb.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-CFN_QkC9.js → CreatedOnBrandCrowd-pt-pt-DrcBDAyb.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-DcR_LZOc.js → CreatedOnDcom-de-de-DDPuybYj.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-D4STpZ1l.js → CreatedOnDcom-en-us-DNeu06Gu.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-oJH29i_Z.js → CreatedOnDcom-es-es-DA4PgA4R.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-C9ZqPzpz.js → CreatedOnDcom-fr-ca-Bhr21_56.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-BeI4f0rw.js → CreatedOnDcom-fr-fr-BgYHDrgv.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-Bc1hY8c-.js → CreatedOnDcom-pt-br-DDS93mjy.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-D-I_mgfR.js → CreatedOnDcom-pt-pt-B-XErn3D.js} +1 -1
- package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +7 -2
- package/lib/src/css/library.brand-page-brandCrowd.min.css +19 -15
- package/lib/src/css/library.brand-page-brandPage.min.css +19 -15
- package/lib/src/css/library.brand-page-designCom.min.css +19 -15
- package/lib/src/css/library.brand-page-preview.min.css +19 -15
- package/lib/src/index.mjs +1 -1
- package/lib/src/{lib-n42zt1Rj.js → lib-C0W9xNbH.js} +4154 -4154
- package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
- package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
- package/package.json +1 -1
- package/src/brand-page/components/banner-section/BannerSection.vue +5 -1
- package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +11 -3
- package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BrandPageModel } from '../../brand-page/models';
|
|
2
|
+
import { BaseMetadataBuilder, type BuilderResult, type MetadataBuilderRequest } from '../models';
|
|
3
|
+
import type { Logger } from '../logger';
|
|
4
|
+
export interface ReorderPagesPayload {
|
|
5
|
+
pageOrder: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class ReorderPagesBuilder extends BaseMetadataBuilder<ReorderPagesPayload> {
|
|
8
|
+
constructor(request: MetadataBuilderRequest<ReorderPagesPayload>, logger?: Logger);
|
|
9
|
+
validateAsync(): Promise<{
|
|
10
|
+
errors: string[];
|
|
11
|
+
}>;
|
|
12
|
+
buildAsync(model: BrandPageModel): Promise<BuilderResult>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BaseMetadataBuilder, } from '../models';
|
|
2
|
+
export class ReorderPagesBuilder extends BaseMetadataBuilder {
|
|
3
|
+
constructor(request, logger) {
|
|
4
|
+
super(request, logger);
|
|
5
|
+
}
|
|
6
|
+
async validateAsync() {
|
|
7
|
+
const errors = [];
|
|
8
|
+
const payload = this.request.payload;
|
|
9
|
+
if (!payload?.pageOrder?.length) {
|
|
10
|
+
errors.push('page_order is required for reorder_pages');
|
|
11
|
+
}
|
|
12
|
+
return { errors };
|
|
13
|
+
}
|
|
14
|
+
async buildAsync(model) {
|
|
15
|
+
this.log('Build called');
|
|
16
|
+
const validation = await this.validateAsync();
|
|
17
|
+
if (validation.errors.length) {
|
|
18
|
+
return { request: this.request, model, errors: validation.errors };
|
|
19
|
+
}
|
|
20
|
+
const { pageOrder } = this.request.payload;
|
|
21
|
+
// Build pageId → routeId lookup from nav.routes
|
|
22
|
+
const pageIdToRouteId = new Map();
|
|
23
|
+
for (const route of model.nav.routes) {
|
|
24
|
+
pageIdToRouteId.set(route.pageId, route.id);
|
|
25
|
+
}
|
|
26
|
+
// Build new nav.orders from the flat page_order (array of pageIds)
|
|
27
|
+
const newOrders = [];
|
|
28
|
+
const seenRouteIds = new Set();
|
|
29
|
+
for (const pageId of pageOrder) {
|
|
30
|
+
const routeId = pageIdToRouteId.get(pageId);
|
|
31
|
+
if (!routeId)
|
|
32
|
+
continue;
|
|
33
|
+
newOrders.push({ routeId, subRoutes: [] });
|
|
34
|
+
seenRouteIds.add(routeId);
|
|
35
|
+
}
|
|
36
|
+
// Safety: append any routes not mentioned (don't lose pages)
|
|
37
|
+
for (const route of model.nav.routes) {
|
|
38
|
+
const routeId = pageIdToRouteId.get(route.pageId);
|
|
39
|
+
if (routeId && !seenRouteIds.has(routeId)) {
|
|
40
|
+
newOrders.push({ routeId, subRoutes: [] });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
model.nav.orders = newOrders;
|
|
44
|
+
this.log({
|
|
45
|
+
message: `Reordered pages: ${pageOrder.join(', ')}`,
|
|
46
|
+
});
|
|
47
|
+
return { request: this.request, model };
|
|
48
|
+
}
|
|
49
|
+
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div
|
|
4
4
|
class="tw-relative tw-overflow-hidden"
|
|
5
5
|
:class="{
|
|
6
|
-
'c_banner--with-image-overlay tw-flex tw-flex-col tw-justify-center':
|
|
6
|
+
'c_banner--with-image-overlay c_banner--expand-padding tw-flex tw-flex-col tw-justify-center':
|
|
7
7
|
viewModel.isBigImageType,
|
|
8
8
|
'c_banner--with-image-overlay tw-flex tw-flex-col': isDividedContent,
|
|
9
9
|
'tw-px-6': !isDividedContent,
|
|
@@ -601,6 +601,10 @@ onUnmounted(() => {
|
|
|
601
601
|
min-height: 24rem;
|
|
602
602
|
}
|
|
603
603
|
|
|
604
|
+
.c_banner--expand-padding {
|
|
605
|
+
box-sizing: content-box;
|
|
606
|
+
}
|
|
607
|
+
|
|
604
608
|
.c_banner--divided-container {
|
|
605
609
|
min-height: 30rem;
|
|
606
610
|
@apply tw-flex-row tw-gap-4;
|
package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
NavigationDesktop,
|
|
6
6
|
NavigationMobile,
|
|
7
7
|
} from '../../../models';
|
|
8
|
+
import { isUnsetOrTransparentColor } from '../../../models';
|
|
8
9
|
import type { NavItemViewModel } from '../../../view-models';
|
|
9
10
|
|
|
10
11
|
export default defineComponent({
|
|
@@ -100,12 +101,19 @@ export default defineComponent({
|
|
|
100
101
|
? this.selectedButtonStyle
|
|
101
102
|
: this.defaultButtonStyle;
|
|
102
103
|
|
|
104
|
+
const subNavBackgroundColor =
|
|
105
|
+
this.styles.hamburgerMenuStyle.subNavBackgroundColor ?? '#ffffff';
|
|
106
|
+
|
|
107
|
+
// An active sub-page uses the selected button colour, but when that colour
|
|
108
|
+
// is transparent/unset it must keep the sub-nav background colour rather
|
|
109
|
+
// than rendering transparent (BP-5751).
|
|
103
110
|
return {
|
|
104
111
|
...baseStyle,
|
|
105
112
|
paddingLeft: '32px',
|
|
106
|
-
backgroundColor:
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
backgroundColor:
|
|
114
|
+
isActive && !isUnsetOrTransparentColor(baseStyle.backgroundColor)
|
|
115
|
+
? baseStyle.backgroundColor
|
|
116
|
+
: subNavBackgroundColor,
|
|
109
117
|
};
|
|
110
118
|
},
|
|
111
119
|
closeSideMenu(): void {
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { BrandPageModel, NavOrder } from '../../brand-page/models';
|
|
2
|
+
import {
|
|
3
|
+
BaseMetadataBuilder,
|
|
4
|
+
type BuilderResult,
|
|
5
|
+
type MetadataBuilderRequest,
|
|
6
|
+
} from '../models';
|
|
7
|
+
import type { Logger } from '../logger';
|
|
8
|
+
|
|
9
|
+
export interface ReorderPagesPayload {
|
|
10
|
+
pageOrder: string[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class ReorderPagesBuilder extends BaseMetadataBuilder<ReorderPagesPayload> {
|
|
14
|
+
constructor(
|
|
15
|
+
request: MetadataBuilderRequest<ReorderPagesPayload>,
|
|
16
|
+
logger?: Logger,
|
|
17
|
+
) {
|
|
18
|
+
super(request, logger);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async validateAsync(): Promise<{ errors: string[] }> {
|
|
22
|
+
const errors: string[] = [];
|
|
23
|
+
const payload = this.request.payload;
|
|
24
|
+
|
|
25
|
+
if (!payload?.pageOrder?.length) {
|
|
26
|
+
errors.push('page_order is required for reorder_pages');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return { errors };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async buildAsync(model: BrandPageModel): Promise<BuilderResult> {
|
|
33
|
+
this.log('Build called');
|
|
34
|
+
|
|
35
|
+
const validation = await this.validateAsync();
|
|
36
|
+
|
|
37
|
+
if (validation.errors.length) {
|
|
38
|
+
return { request: this.request, model, errors: validation.errors };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const { pageOrder } = this.request.payload!;
|
|
42
|
+
|
|
43
|
+
// Build pageId → routeId lookup from nav.routes
|
|
44
|
+
const pageIdToRouteId = new Map<string, string>();
|
|
45
|
+
|
|
46
|
+
for (const route of model.nav.routes) {
|
|
47
|
+
pageIdToRouteId.set(route.pageId, route.id);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Build new nav.orders from the flat page_order (array of pageIds)
|
|
51
|
+
const newOrders: NavOrder[] = [];
|
|
52
|
+
const seenRouteIds = new Set<string>();
|
|
53
|
+
|
|
54
|
+
for (const pageId of pageOrder) {
|
|
55
|
+
const routeId = pageIdToRouteId.get(pageId);
|
|
56
|
+
|
|
57
|
+
if (!routeId) continue;
|
|
58
|
+
|
|
59
|
+
newOrders.push({ routeId, subRoutes: [] });
|
|
60
|
+
seenRouteIds.add(routeId);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Safety: append any routes not mentioned (don't lose pages)
|
|
64
|
+
for (const route of model.nav.routes) {
|
|
65
|
+
const routeId = pageIdToRouteId.get(route.pageId);
|
|
66
|
+
|
|
67
|
+
if (routeId && !seenRouteIds.has(routeId)) {
|
|
68
|
+
newOrders.push({ routeId, subRoutes: [] });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
model.nav.orders = newOrders;
|
|
73
|
+
|
|
74
|
+
this.log({
|
|
75
|
+
message: `Reordered pages: ${pageOrder.join(', ')}`,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
return { request: this.request, model };
|
|
79
|
+
}
|
|
80
|
+
}
|