@worksafevictoria/wcl7.5 1.13.0-beta.9 → 1.14.0-beta.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/package.json +1 -1
- package/src/components/Containers/Carousel/index.vue +34 -7
- package/src/components/Containers/HomepageHeader/index.vue +2 -11
- package/src/components/Containers/HomepageHeaderNew/index.vue +35 -5
- package/src/components/Global/AppHeaderNew/index.vue +3 -5
- package/src/components/Global/AppHeaderNew/mobile.scss +8 -2
- package/src/components/Global/AppHeaderNew/styles.scss +10 -5
- package/src/components/Paragraphs/BrowseContent/index.vue +226 -231
- package/src/includes/scss/mixins/src/fp.scss +1 -1
- package/src/index.js +5 -15
- package/src/components/Paragraphs/BrowseContent/setup.vue +0 -284
package/package.json
CHANGED
|
@@ -21,7 +21,10 @@
|
|
|
21
21
|
:img-alt="item.imageAlt"
|
|
22
22
|
@click.prevent="handleClick(item.linkURL)"
|
|
23
23
|
>
|
|
24
|
-
<
|
|
24
|
+
<span
|
|
25
|
+
:class="carousel-caption"
|
|
26
|
+
:aria-label="item.title ? item.title : 'No caption available'"
|
|
27
|
+
:style="item.title === null || item.title === '' ? 'height: 32px;' : null">{{ item.title }}</span>
|
|
25
28
|
</BCarouselSlide>
|
|
26
29
|
</BCarousel>
|
|
27
30
|
</div>
|
|
@@ -118,17 +121,28 @@ methods: {
|
|
|
118
121
|
position: relative;
|
|
119
122
|
margin-bottom: 10px;
|
|
120
123
|
}
|
|
124
|
+
|
|
125
|
+
.carousel-inner {
|
|
126
|
+
border-radius: 8px ;
|
|
127
|
+
}
|
|
121
128
|
/* Introduced changes to make image responsive */
|
|
122
129
|
.carousel img {
|
|
123
130
|
object-fit: cover;
|
|
124
|
-
max-height:
|
|
131
|
+
max-height: 392px;
|
|
132
|
+
height: auto;
|
|
125
133
|
width: 100%;
|
|
126
134
|
}
|
|
127
135
|
|
|
136
|
+
.carousel-indicators {
|
|
137
|
+
justify-content: end !important;
|
|
138
|
+
margin-right: 10px !important;
|
|
139
|
+
}
|
|
140
|
+
|
|
128
141
|
.carousel-indicators button {
|
|
129
142
|
width: 10px !important;
|
|
130
143
|
height: 10px !important;
|
|
131
144
|
border-radius: 50% !important;
|
|
145
|
+
background-color: yellow !important;
|
|
132
146
|
}
|
|
133
147
|
|
|
134
148
|
.carousel-indicators button:focus,
|
|
@@ -138,14 +152,24 @@ methods: {
|
|
|
138
152
|
}
|
|
139
153
|
|
|
140
154
|
.carousel-caption {
|
|
155
|
+
display: flex;
|
|
156
|
+
font-size: 24px;
|
|
157
|
+
font-weight: normal;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
align-items: flex-start;
|
|
160
|
+
text-align: left !important;
|
|
161
|
+
width: 100%;
|
|
141
162
|
color: white;
|
|
142
|
-
text-decoration: underline;
|
|
143
163
|
background-color: black;
|
|
164
|
+
left: 0 !important;
|
|
165
|
+
right: 0 !important;
|
|
166
|
+
bottom: 0 !important;
|
|
167
|
+
padding: 1rem !important;
|
|
144
168
|
}
|
|
145
169
|
|
|
146
170
|
.carousel-control-next,
|
|
147
171
|
.carousel-control-prev {
|
|
148
|
-
bottom:
|
|
172
|
+
bottom: 4rem;
|
|
149
173
|
}
|
|
150
174
|
|
|
151
175
|
.carousel-control-prev:focus,
|
|
@@ -158,9 +182,12 @@ methods: {
|
|
|
158
182
|
|
|
159
183
|
.carousel-control-prev-icon,
|
|
160
184
|
.carousel-control-next-icon {
|
|
161
|
-
height:
|
|
162
|
-
width:
|
|
163
|
-
|
|
185
|
+
height: 60px !important;
|
|
186
|
+
width: 60px !important;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.carousel-item {
|
|
190
|
+
position: relative;
|
|
164
191
|
}
|
|
165
192
|
|
|
166
193
|
.carouselPara {
|
|
@@ -38,16 +38,7 @@
|
|
|
38
38
|
:stretch="true"
|
|
39
39
|
>{{ link.text }}</cta-button
|
|
40
40
|
>
|
|
41
|
-
|
|
42
|
-
class="iebtn"
|
|
43
|
-
url="/choose-your-language"
|
|
44
|
-
type="dark"
|
|
45
|
-
:stretch="true"
|
|
46
|
-
:glyph="earthIcon"
|
|
47
|
-
:is-centred="false"
|
|
48
|
-
>Choose your language</cta-button
|
|
49
|
-
>
|
|
50
|
-
</div>
|
|
41
|
+
</div>
|
|
51
42
|
</template>
|
|
52
43
|
</hero-header>
|
|
53
44
|
</template>
|
|
@@ -86,7 +77,7 @@ export default {
|
|
|
86
77
|
|
|
87
78
|
.homepage-header {
|
|
88
79
|
border-bottom: none !important;
|
|
89
|
-
|
|
80
|
+
|
|
90
81
|
:deep(.wysiwyg) {
|
|
91
82
|
h1 {
|
|
92
83
|
@media screen and (max-width: 390px) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
<div class="homepage-header__content-wrapper">
|
|
15
15
|
<container class="homepage-header__content-wrapper__content">
|
|
16
|
-
<row>
|
|
16
|
+
<row id="header-row">
|
|
17
17
|
<!-- changes made to bootstrap grid breakpoints -->
|
|
18
18
|
<column
|
|
19
19
|
class="homepage-header__content-wrapper__content-col col-12 col-md-7 col-lg-8 homepage-header__content-wrapper__content-col--split wcl-rich-text--ltr"
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
/>
|
|
26
26
|
</column>
|
|
27
27
|
<column
|
|
28
|
+
id="header-links"
|
|
28
29
|
class="homepage-header__side col-12 col-md-5 col-lg-4"
|
|
29
30
|
>
|
|
30
31
|
<div>
|
|
@@ -33,8 +34,9 @@
|
|
|
33
34
|
:key="i"
|
|
34
35
|
class="iebtn"
|
|
35
36
|
:url="link.path"
|
|
36
|
-
type="dark"
|
|
37
37
|
:stretch="true"
|
|
38
|
+
type="dark"
|
|
39
|
+
|
|
38
40
|
>{{ link.text }}</cta-button
|
|
39
41
|
>
|
|
40
42
|
</div>
|
|
@@ -83,7 +85,35 @@ export default {
|
|
|
83
85
|
|
|
84
86
|
data: () => ({
|
|
85
87
|
earthIcon,
|
|
86
|
-
})
|
|
88
|
+
}),
|
|
89
|
+
mounted() {
|
|
90
|
+
window.addEventListener('resize', this.setCarouselHeight)
|
|
91
|
+
this.setCarouselHeight()
|
|
92
|
+
},
|
|
93
|
+
beforeDestroy() {
|
|
94
|
+
window.removeEventListener('resize', this.setCarouselHeight)
|
|
95
|
+
},
|
|
96
|
+
methods: {
|
|
97
|
+
setCarouselHeight() {
|
|
98
|
+
this.$nextTick(() => {
|
|
99
|
+
const sideMenu = this.$el.querySelector('.homepage-header__side')
|
|
100
|
+
const carousel = this.$el.querySelector('.carousel')
|
|
101
|
+
const carouselItem = this.$el.querySelector('.carousel-item')
|
|
102
|
+
|
|
103
|
+
if (sideMenu && carousel && window.innerWidth >= 450 ) {
|
|
104
|
+
const menuHeight = sideMenu.offsetHeight
|
|
105
|
+
const newHeight = menuHeight - 16 // 16px padding adjustment
|
|
106
|
+
carousel.style.height = `${newHeight}px`
|
|
107
|
+
if (carouselItem) {
|
|
108
|
+
carouselItem.style.height = `${newHeight}px`
|
|
109
|
+
}
|
|
110
|
+
} else if (carousel) {
|
|
111
|
+
carousel.removeAttribute('style') // Reset to default styles
|
|
112
|
+
carouselItem.removeAttribute('style') // Reset to default styles
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
},
|
|
116
|
+
}
|
|
87
117
|
}
|
|
88
118
|
</script>
|
|
89
119
|
|
|
@@ -99,6 +129,8 @@ export default {
|
|
|
99
129
|
border-bottom: none !important;
|
|
100
130
|
height: auto;
|
|
101
131
|
align-items: normal;
|
|
132
|
+
padding-top: 30px;
|
|
133
|
+
padding-bottom: 30px;
|
|
102
134
|
|
|
103
135
|
:deep(.wysiwyg) {
|
|
104
136
|
h1 {
|
|
@@ -171,7 +203,6 @@ export default {
|
|
|
171
203
|
}
|
|
172
204
|
|
|
173
205
|
&__search {
|
|
174
|
-
margin-top: 10px;
|
|
175
206
|
z-index: 1;
|
|
176
207
|
width: auto;
|
|
177
208
|
position: relative;
|
|
@@ -218,5 +249,4 @@ export default {
|
|
|
218
249
|
}
|
|
219
250
|
}
|
|
220
251
|
|
|
221
|
-
|
|
222
252
|
</style>
|
|
@@ -506,7 +506,6 @@ export default {
|
|
|
506
506
|
this.windowWidth = window.innerWidth;
|
|
507
507
|
},
|
|
508
508
|
firstLevelClick(item, ref) {
|
|
509
|
-
// Reset screen to fix whitespace
|
|
510
509
|
if (window && window.scrollTo && this.screen === "desktop") {
|
|
511
510
|
window.scrollTo(0, 0);
|
|
512
511
|
}
|
|
@@ -536,10 +535,8 @@ export default {
|
|
|
536
535
|
this.isSecondLevelOpen === true &&
|
|
537
536
|
selectedItem === previouslyOpenItem
|
|
538
537
|
) {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
this.isSecondLevelOpen = false;
|
|
542
|
-
this.letBodyOverflow(true);
|
|
538
|
+
this.closeMegaMenu();
|
|
539
|
+
|
|
543
540
|
}
|
|
544
541
|
// If the link has no children then go to that page
|
|
545
542
|
else if (!item.below) {
|
|
@@ -587,6 +584,7 @@ export default {
|
|
|
587
584
|
}
|
|
588
585
|
// If the menu is already open and the same item is clicked,
|
|
589
586
|
// close it
|
|
587
|
+
|
|
590
588
|
else if (
|
|
591
589
|
item.below &&
|
|
592
590
|
this.isThirdLevelOpen === true &&
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
.app-header {
|
|
4
4
|
&.isMobile {
|
|
5
5
|
padding: 0;
|
|
6
|
+
width: 100vw;
|
|
6
7
|
|
|
7
8
|
.app-header {
|
|
8
9
|
&__wrap {
|
|
@@ -300,7 +301,8 @@
|
|
|
300
301
|
border-collapse: separate;
|
|
301
302
|
border-spacing: 5px;
|
|
302
303
|
}
|
|
303
|
-
|
|
304
|
+
|
|
305
|
+
}
|
|
304
306
|
|
|
305
307
|
.imgMobile {
|
|
306
308
|
display: block;
|
|
@@ -323,6 +325,10 @@
|
|
|
323
325
|
background-color: #f2f2f2;
|
|
324
326
|
border: 1px solid #f2f2f2;
|
|
325
327
|
border-radius: 8px;
|
|
328
|
+
|
|
329
|
+
&:focus, &:hover {
|
|
330
|
+
border: 1px solid #BABABA;
|
|
331
|
+
}
|
|
326
332
|
}
|
|
327
333
|
|
|
328
334
|
.app-header__wrap_mobile {
|
|
@@ -331,6 +337,6 @@
|
|
|
331
337
|
}
|
|
332
338
|
|
|
333
339
|
.flex-container_contrast_mobile {
|
|
334
|
-
margin-left: -
|
|
340
|
+
margin-left: -167px;
|
|
335
341
|
}
|
|
336
342
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
color: $app-menu-white;
|
|
5
5
|
z-index: 27;
|
|
6
6
|
position: relative;
|
|
7
|
-
padding: 0px
|
|
8
|
-
width:
|
|
7
|
+
padding: 0px;
|
|
8
|
+
width: 100vw;
|
|
9
9
|
font-size: 14px;
|
|
10
10
|
|
|
11
11
|
&__wrap {
|
|
@@ -45,9 +45,14 @@
|
|
|
45
45
|
}
|
|
46
46
|
.isActiveChild {
|
|
47
47
|
> a {
|
|
48
|
-
background: $app-header-
|
|
49
|
-
color:
|
|
48
|
+
background: $app-header-hover;
|
|
49
|
+
color: black;
|
|
50
50
|
border-bottom: 1px solid transparent;
|
|
51
|
+
|
|
52
|
+
svg.caret-right {
|
|
53
|
+
filter: invert(0%) sepia(12%) saturate(108%) hue-rotate(344deg)
|
|
54
|
+
brightness(94%) contrast(80%);
|
|
55
|
+
}
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
|
|
@@ -430,7 +435,7 @@
|
|
|
430
435
|
.logoImg {
|
|
431
436
|
height: 55px;
|
|
432
437
|
width: auto;
|
|
433
|
-
margin-left:
|
|
438
|
+
margin-left: 20px;
|
|
434
439
|
}
|
|
435
440
|
|
|
436
441
|
.semi-circle {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
/>
|
|
26
26
|
</template>
|
|
27
27
|
|
|
28
|
-
<template v-if="filters
|
|
28
|
+
<template v-if="filters?.taxonomies?.length > 0" v-slot:cardGroupPreContent>
|
|
29
29
|
<directory-filters
|
|
30
30
|
class="wcl-browse-content__filter"
|
|
31
31
|
:filters="filters"
|
|
@@ -38,250 +38,245 @@
|
|
|
38
38
|
</card-group>
|
|
39
39
|
</template>
|
|
40
40
|
|
|
41
|
-
<script>
|
|
42
|
-
import CardGroup from '
|
|
43
|
-
import DirectoryFilters from '../../Global/DirectoryFilters/index.vue'
|
|
44
|
-
import Switcher from './switcher.vue'
|
|
41
|
+
<script setup>
|
|
42
|
+
// import { CardGroup, DirectoryFilters, Switcher } from '@worksafevictoria/wcl7.5'
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
const nuxtApp = useNuxtApp()
|
|
45
|
+
const hasMorePages = ref(false)
|
|
46
|
+
const displayedCards = ref([])
|
|
47
|
+
const loading = ref(false)
|
|
48
|
+
const bundleCache = ref({})
|
|
49
|
+
const displayLimit = ref(0)
|
|
50
|
+
const allCards = ref(undefined)
|
|
51
|
+
const props = defineProps({
|
|
52
|
+
background: {
|
|
53
|
+
type: String,
|
|
54
|
+
default: 'grey',
|
|
52
55
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
default: 'grey',
|
|
57
|
-
},
|
|
58
|
-
title: {
|
|
59
|
-
type: String,
|
|
60
|
-
default: '',
|
|
61
|
-
},
|
|
62
|
-
titleTag: {
|
|
63
|
-
type: String,
|
|
64
|
-
default: 'h2',
|
|
65
|
-
},
|
|
66
|
-
bundle: {
|
|
67
|
-
type: Array,
|
|
68
|
-
default: () => [''],
|
|
69
|
-
},
|
|
70
|
-
columns: {
|
|
71
|
-
type: Number,
|
|
72
|
-
default: 0,
|
|
73
|
-
},
|
|
74
|
-
initialDisplyLimit: {
|
|
75
|
-
type: Number,
|
|
76
|
-
default: 0,
|
|
77
|
-
},
|
|
78
|
-
fetchContent: {
|
|
79
|
-
type: Function,
|
|
80
|
-
required: true,
|
|
81
|
-
},
|
|
82
|
-
fetchFilters: {
|
|
83
|
-
type: Function,
|
|
84
|
-
required: false,
|
|
85
|
-
default: null,
|
|
86
|
-
},
|
|
87
|
-
enableBundleFilter: {
|
|
88
|
-
type: Boolean,
|
|
89
|
-
},
|
|
90
|
-
getBundleAlias: {
|
|
91
|
-
type: Function,
|
|
92
|
-
required: false,
|
|
93
|
-
default: null,
|
|
94
|
-
},
|
|
95
|
-
showMore: {
|
|
96
|
-
type: Boolean,
|
|
97
|
-
},
|
|
98
|
-
type: {
|
|
99
|
-
type: String,
|
|
100
|
-
required: true,
|
|
101
|
-
},
|
|
56
|
+
title: {
|
|
57
|
+
type: String,
|
|
58
|
+
default: '',
|
|
102
59
|
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
await this.loadFiltersAndContent()
|
|
107
|
-
}
|
|
60
|
+
titleTag: {
|
|
61
|
+
type: String,
|
|
62
|
+
default: 'h2',
|
|
108
63
|
},
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// await this.loadFiltersAndContent()
|
|
113
|
-
// }
|
|
114
|
-
// },
|
|
115
|
-
data() {
|
|
116
|
-
return {
|
|
117
|
-
hasMorePages: false,
|
|
118
|
-
displayedCards: [],
|
|
119
|
-
loading: true,
|
|
120
|
-
bundleCache: {},
|
|
121
|
-
displayLimit: 0,
|
|
122
|
-
allCards: undefined,
|
|
123
|
-
filters: {
|
|
124
|
-
taxonomies: [],
|
|
125
|
-
selected: {},
|
|
126
|
-
availableBundles: [],
|
|
127
|
-
},
|
|
128
|
-
}
|
|
64
|
+
bundle: {
|
|
65
|
+
type: Array,
|
|
66
|
+
default: () => [''],
|
|
129
67
|
},
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
68
|
+
columns: {
|
|
69
|
+
type: Number,
|
|
70
|
+
default: 0,
|
|
71
|
+
},
|
|
72
|
+
initialDisplyLimit: {
|
|
73
|
+
type: Number,
|
|
74
|
+
default: 0,
|
|
75
|
+
},
|
|
76
|
+
fetchContent: {
|
|
77
|
+
type: Function,
|
|
78
|
+
required: true,
|
|
79
|
+
},
|
|
80
|
+
fetchFilters: {
|
|
81
|
+
type: Function,
|
|
82
|
+
required: false,
|
|
83
|
+
default: null,
|
|
84
|
+
},
|
|
85
|
+
enableBundleFilter: {
|
|
86
|
+
type: Boolean,
|
|
87
|
+
},
|
|
88
|
+
getBundleAlias: {
|
|
89
|
+
type: Function,
|
|
90
|
+
required: false,
|
|
91
|
+
default: null,
|
|
92
|
+
},
|
|
93
|
+
showMore: {
|
|
94
|
+
type: Boolean,
|
|
95
|
+
},
|
|
96
|
+
type: {
|
|
97
|
+
type: String,
|
|
98
|
+
required: true,
|
|
99
|
+
},
|
|
100
|
+
id: {
|
|
101
|
+
type: String,
|
|
102
|
+
required: true,
|
|
103
|
+
},
|
|
104
|
+
})
|
|
158
105
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
group: this.$pageStore?.content?.title,
|
|
171
|
-
}
|
|
172
|
-
if (this.$gtm && !init) {
|
|
173
|
-
this.$gtm.push({ event: 'custom.interaction.showmore.click', ...attrs })
|
|
174
|
-
}
|
|
175
|
-
if (init) {
|
|
176
|
-
this.init()
|
|
177
|
-
}
|
|
178
|
-
this.loading = true
|
|
179
|
-
const addMoreBy = this.initialDisplyLimit
|
|
180
|
-
this.displayLimit += addMoreBy
|
|
181
|
-
const bundles =
|
|
182
|
-
this.filters.availableBundles.length > 0
|
|
183
|
-
? this.filters.availableBundles
|
|
184
|
-
: this.bundle
|
|
185
|
-
this.allCards = await this.fetchCards(
|
|
186
|
-
this.displayedCards,
|
|
187
|
-
this.allCards,
|
|
188
|
-
addMoreBy,
|
|
189
|
-
bundles,
|
|
190
|
-
)
|
|
191
|
-
this.hasMorePages = this.allCards.total > this.allCards.cards.length
|
|
192
|
-
this.displayedCards = this.allCards.cards.slice(0, this.displayLimit)
|
|
193
|
-
this.loading = false
|
|
194
|
-
},
|
|
195
|
-
getBundle(bundle, addMoreBy, index) {
|
|
196
|
-
let start
|
|
197
|
-
const rows = addMoreBy
|
|
198
|
-
const cache = (this.bundleCache[bundle] = this.bundleCache[bundle] || {
|
|
199
|
-
response: {
|
|
200
|
-
results: [],
|
|
201
|
-
numFound: 0,
|
|
202
|
-
},
|
|
203
|
-
qs: {
|
|
204
|
-
start,
|
|
205
|
-
},
|
|
106
|
+
const filterKey = computed(() => `filters-${props.id}`)
|
|
107
|
+
const { data: filters } = await useAsyncData(filterKey, async () => {
|
|
108
|
+
try {
|
|
109
|
+
const filters = {
|
|
110
|
+
taxonomies: [],
|
|
111
|
+
selected: {},
|
|
112
|
+
availableBundles: [],
|
|
113
|
+
}
|
|
114
|
+
if (props.fetchFilters) {
|
|
115
|
+
await props.fetchFilters().then((taxonomies) => {
|
|
116
|
+
filters.taxonomies = taxonomies
|
|
206
117
|
})
|
|
118
|
+
}
|
|
119
|
+
return filters
|
|
120
|
+
} catch (err) {
|
|
121
|
+
console.log('🚀 ~ err:', err)
|
|
122
|
+
}
|
|
123
|
+
})
|
|
207
124
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const qs = {
|
|
217
|
-
bundle,
|
|
218
|
-
rows,
|
|
219
|
-
start,
|
|
220
|
-
}
|
|
221
|
-
return this.fetchContent(qs, this.filters.selected, index).then(
|
|
222
|
-
(response) => {
|
|
223
|
-
cache.qs.start = qs.start
|
|
224
|
-
cache.response.numFound = response.numFound
|
|
225
|
-
cache.response.results.push(...response.results)
|
|
226
|
-
return cache.response
|
|
227
|
-
},
|
|
228
|
-
)
|
|
229
|
-
},
|
|
230
|
-
getShuffledCards(cardBundles) {
|
|
231
|
-
const shuffled = []
|
|
232
|
-
const bundleWithMostCards = cardBundles.reduce(
|
|
233
|
-
(a, b) => (a.results.length > b.results.length ? a : b),
|
|
234
|
-
{ results: [] },
|
|
235
|
-
).results.length
|
|
125
|
+
const cardsKey = computed(() => `cards-${props.id}`)
|
|
126
|
+
const { data: savedCards } = await useAsyncData(cardsKey, async () => {
|
|
127
|
+
await loadMoreCards(true)
|
|
128
|
+
return {
|
|
129
|
+
cards: JSON.parse(JSON.stringify(allCards.value)),
|
|
130
|
+
bundle: JSON.parse(JSON.stringify(bundleCache.value)),
|
|
131
|
+
}
|
|
132
|
+
})
|
|
236
133
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
134
|
+
watch(
|
|
135
|
+
() => savedCards.value,
|
|
136
|
+
(newVal, oldVal) => {
|
|
137
|
+
if (newVal && allCards.value === undefined) {
|
|
138
|
+
allCards.value = JSON.parse(JSON.stringify(savedCards.value.cards))
|
|
139
|
+
bundleCache.value = JSON.parse(JSON.stringify(savedCards.value.bundle))
|
|
140
|
+
displayLimit.value += props.initialDisplyLimit
|
|
141
|
+
hasMorePages.value = allCards.value.total > allCards.value.cards.length
|
|
142
|
+
displayedCards.value = allCards.value.cards.slice(0, displayLimit.value)
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
{ immediate: true },
|
|
146
|
+
)
|
|
244
147
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
148
|
+
function initial() {
|
|
149
|
+
allCards.value = {
|
|
150
|
+
total: 0,
|
|
151
|
+
cards: [],
|
|
152
|
+
}
|
|
153
|
+
displayLimit.value = 0
|
|
154
|
+
hasMorePages.value = false
|
|
155
|
+
displayedCards.value = []
|
|
156
|
+
bundleCache.value = {}
|
|
157
|
+
}
|
|
158
|
+
async function fetchCards(currentDisplayedCards, allCards, addMoreBy, bundles) {
|
|
159
|
+
const shouldMakeNewFetchCall =
|
|
160
|
+
currentDisplayedCards.length + addMoreBy > allCards.cards.length
|
|
161
|
+
if (shouldMakeNewFetchCall) {
|
|
162
|
+
const cardBundles = await Promise.all(
|
|
163
|
+
bundles.map((bundle, index) => getBundle(bundle, addMoreBy, index)),
|
|
164
|
+
)
|
|
165
|
+
allCards = getShuffledCards(cardBundles)
|
|
248
166
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
167
|
+
if (
|
|
168
|
+
props.type === 'paragraph--cards_group_latest' ||
|
|
169
|
+
props.type === 'paragraph--browse_content'
|
|
170
|
+
) {
|
|
171
|
+
allCards.cards = sortByDate(allCards.cards)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return allCards
|
|
175
|
+
}
|
|
176
|
+
async function loadMoreCards(init) {
|
|
177
|
+
const attrs = {
|
|
178
|
+
group: nuxtApp.$pageStore?.content?.title,
|
|
179
|
+
}
|
|
180
|
+
if (nuxtApp.$gtm && !init) {
|
|
181
|
+
nuxtApp.$gtm.push({ event: 'custom.interaction.showmore.click', ...attrs })
|
|
182
|
+
}
|
|
183
|
+
if (init) {
|
|
184
|
+
initial()
|
|
185
|
+
}
|
|
186
|
+
loading.value = true
|
|
187
|
+
// const addMoreBy = props.initialDisplyLimit
|
|
188
|
+
displayLimit.value += props.initialDisplyLimit
|
|
189
|
+
const bundles =
|
|
190
|
+
filters.value.availableBundles.length > 0
|
|
191
|
+
? filters.value.availableBundles
|
|
192
|
+
: props.bundle
|
|
193
|
+
allCards.value = await fetchCards(
|
|
194
|
+
displayedCards.value,
|
|
195
|
+
allCards.value,
|
|
196
|
+
props.initialDisplyLimit, //addMoreBy,
|
|
197
|
+
bundles,
|
|
198
|
+
)
|
|
199
|
+
hasMorePages.value = allCards.value.total > allCards.value.cards.length
|
|
200
|
+
displayedCards.value = allCards.value.cards.slice(0, displayLimit.value)
|
|
201
|
+
loading.value = false
|
|
202
|
+
}
|
|
203
|
+
async function getBundle(bundle, addMoreBy, index) {
|
|
204
|
+
let start
|
|
205
|
+
const rows = addMoreBy
|
|
206
|
+
const cache = (bundleCache.value[bundle] = bundleCache.value[bundle] || {
|
|
207
|
+
response: {
|
|
208
|
+
results: [],
|
|
209
|
+
numFound: 0,
|
|
256
210
|
},
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
Object.keys(filters).forEach((filter) => {
|
|
260
|
-
this.filters.selected[filter] = filters[filter].map((obj) => obj.tid)
|
|
261
|
-
})
|
|
262
|
-
this.loadMoreCards(true)
|
|
211
|
+
qs: {
|
|
212
|
+
start,
|
|
263
213
|
},
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
214
|
+
})
|
|
215
|
+
if (cache.qs.start === undefined) {
|
|
216
|
+
start = 0
|
|
217
|
+
} else if (cache.response.numFound > cache.response.results.length) {
|
|
218
|
+
start = cache.response.results.length
|
|
219
|
+
} else {
|
|
220
|
+
return Promise.resolve(cache.response)
|
|
221
|
+
}
|
|
222
|
+
const qs = {
|
|
223
|
+
bundle,
|
|
224
|
+
rows,
|
|
225
|
+
start,
|
|
226
|
+
}
|
|
227
|
+
let response = await props.fetchContent(qs, filters.value.selected)
|
|
228
|
+
cache.qs.start = qs.start
|
|
229
|
+
cache.response.numFound = response.numFound
|
|
230
|
+
cache.response.results.push(...response.results)
|
|
231
|
+
return cache.response
|
|
232
|
+
}
|
|
233
|
+
function getShuffledCards(cardBundles) {
|
|
234
|
+
const shuffled = []
|
|
235
|
+
const bundleWithMostCards = cardBundles.reduce(
|
|
236
|
+
(a, b) => (a.results.length > b.results.length ? a : b),
|
|
237
|
+
{ results: [] },
|
|
238
|
+
).results.length
|
|
239
|
+
|
|
240
|
+
for (let i = 0; i < bundleWithMostCards; i++) {
|
|
241
|
+
cardBundles.forEach((bundle) => {
|
|
242
|
+
if (bundle.results[i]) {
|
|
243
|
+
shuffled.push(bundle.results[i])
|
|
269
244
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
245
|
+
})
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const total = cardBundles.reduce((acc, bundle) => {
|
|
249
|
+
return acc + bundle.numFound
|
|
250
|
+
}, 0)
|
|
251
|
+
|
|
252
|
+
return { cards: shuffled, total }
|
|
253
|
+
}
|
|
254
|
+
const onFilter = (fltrs) => {
|
|
255
|
+
bundleCache.value = {}
|
|
256
|
+
Object.keys(fltrs).forEach((filter) => {
|
|
257
|
+
filters.value.selected[filter] = fltrs[filter].map((obj) => obj.tid)
|
|
258
|
+
})
|
|
259
|
+
loadMoreCards(true)
|
|
260
|
+
}
|
|
261
|
+
const onSwitcher = (switchToBundle) => {
|
|
262
|
+
filters.value.selected = {}
|
|
263
|
+
filters.value.availableBundles.length = 0
|
|
264
|
+
if (switchToBundle) {
|
|
265
|
+
filters.value.availableBundles.push(switchToBundle)
|
|
266
|
+
}
|
|
267
|
+
loadMoreCards(true)
|
|
268
|
+
}
|
|
269
|
+
const reset = async () => {
|
|
270
|
+
bundleCache.value = {}
|
|
271
|
+
filters.value.selected = {}
|
|
272
|
+
filters.value.availableBundles.length = 0
|
|
273
|
+
await loadMoreCards(true)
|
|
274
|
+
}
|
|
275
|
+
function sortByDate(cards) {
|
|
276
|
+
const sorted = cards.sort((a, b) => {
|
|
277
|
+
return new Date(b.dateSort) - new Date(a.dateSort)
|
|
278
|
+
})
|
|
279
|
+
return sorted
|
|
285
280
|
}
|
|
286
281
|
</script>
|
|
287
282
|
<style lang="scss" scoped>
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
$multiplier: calc(($max - $min) / ($end - $start) * 100);
|
|
18
18
|
$adder: calc(($min * $end - $max * $start) / ($end - $start));
|
|
19
19
|
$formula: calc(#{$multiplier + 0vw} + #{$adder + 0px});
|
|
20
|
+
#{$property}: $formula;
|
|
20
21
|
@if $clip and $clipAtStart {
|
|
21
22
|
@media (max-width: #{$start + 0px}) {
|
|
22
23
|
#{$property}: $min + 0px;
|
|
@@ -27,5 +28,4 @@
|
|
|
27
28
|
#{$property}: $max + 0px;
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
|
-
#{$property}: $formula;
|
|
31
31
|
}
|
package/src/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
// Global
|
|
1
|
+
// Global Componentsn - replace HomePageheader with HomepageHeaderNew to introduce new header
|
|
2
2
|
import Container from './components/Containers/Container/index.vue'
|
|
3
3
|
import Row from './components/Containers/Row/index.vue'
|
|
4
4
|
import Column from './components/Containers/Column/index.vue'
|
|
5
|
-
import HomepageHeader from './components/Containers/
|
|
5
|
+
import HomepageHeader from './components/Containers/HomepageHeader/index.vue'
|
|
6
6
|
import Subheader from './components/Containers/Subheader/index.vue'
|
|
7
7
|
import SectionGroup from './components/Containers/SectionGroup/index.vue'
|
|
8
8
|
import CarouselComponent from './components/Containers/Carousel/index.vue'
|
|
9
9
|
|
|
10
|
-
import AppHeader from './components/Global/
|
|
10
|
+
import AppHeader from './components/Global/AppHeader/index.vue'
|
|
11
11
|
import AppFooter from './components/Global/AppFooter/index.vue'
|
|
12
12
|
import HeroHeader from './components/Global/HeroHeader/index.vue'
|
|
13
13
|
import SocialShare from './components/Global/SocialShare/index.vue'
|
|
@@ -59,9 +59,6 @@ import Search from './components/SubComponents/Search/index.vue'
|
|
|
59
59
|
import VideoThumbnail from './components/SubComponents/VideoThumbnail/index.vue'
|
|
60
60
|
import ResourceGroup from './components/SubComponents/ResourceGroup/index.vue'
|
|
61
61
|
|
|
62
|
-
// Temp Components for testing
|
|
63
|
-
import BrowseContent2 from './components/Paragraphs/BrowseContent/setup.vue'
|
|
64
|
-
|
|
65
62
|
// Export Global Components
|
|
66
63
|
export {
|
|
67
64
|
Container,
|
|
@@ -128,15 +125,8 @@ export {
|
|
|
128
125
|
ResourceGroup,
|
|
129
126
|
}
|
|
130
127
|
|
|
131
|
-
//
|
|
128
|
+
// DEPRECATED - to be removed in future
|
|
132
129
|
import DirectoryFilters from './components/Global/DirectoryFilters/index.vue'
|
|
133
130
|
import Switcher from './components/Paragraphs/BrowseContent/switcher.vue'
|
|
134
131
|
|
|
135
|
-
export {
|
|
136
|
-
// CardGroup, already imported
|
|
137
|
-
DirectoryFilters,
|
|
138
|
-
Switcher,
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Temp Components for testing
|
|
142
|
-
export { BrowseContent2 }
|
|
132
|
+
export { DirectoryFilters, Switcher }
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<card-group
|
|
3
|
-
:title="title"
|
|
4
|
-
:title-tag="titleTag"
|
|
5
|
-
:background="background"
|
|
6
|
-
:cards="displayedCards"
|
|
7
|
-
:loading="loading"
|
|
8
|
-
:columns="columns"
|
|
9
|
-
:show-load-more="showMore && hasMorePages"
|
|
10
|
-
:class="`wcl-browse-content card_group__card--col-${columns}`"
|
|
11
|
-
:card-browse-content="true"
|
|
12
|
-
@loadMore="() => loadMoreCards(false)"
|
|
13
|
-
>
|
|
14
|
-
<template
|
|
15
|
-
v-if="enableBundleFilter && bundle.length > 1"
|
|
16
|
-
v-slot:cardGroupFilter
|
|
17
|
-
>
|
|
18
|
-
<switcher
|
|
19
|
-
v-if="enableBundleFilter"
|
|
20
|
-
:options="bundle"
|
|
21
|
-
class="wcl-browse-content__switcher"
|
|
22
|
-
:get-option-alias="getBundleAlias"
|
|
23
|
-
@switched="onSwitcher"
|
|
24
|
-
@reset="onSwitcher"
|
|
25
|
-
/>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<template v-if="filters.taxonomies.length > 0" v-slot:cardGroupPreContent>
|
|
29
|
-
<directory-filters
|
|
30
|
-
class="wcl-browse-content__filter"
|
|
31
|
-
:filters="filters"
|
|
32
|
-
:results="allCards.total"
|
|
33
|
-
:is-filtering="loading"
|
|
34
|
-
@onFilter="onFilter"
|
|
35
|
-
@onReset="reset"
|
|
36
|
-
/>
|
|
37
|
-
</template>
|
|
38
|
-
</card-group>
|
|
39
|
-
</template>
|
|
40
|
-
|
|
41
|
-
<script setup>
|
|
42
|
-
import CardGroup from '../../SubComponents/CardGroup/index.vue'
|
|
43
|
-
import DirectoryFilters from '../../Global/DirectoryFilters/index.vue'
|
|
44
|
-
import Switcher from './switcher.vue'
|
|
45
|
-
|
|
46
|
-
const nuxtApp = useNuxtApp()
|
|
47
|
-
|
|
48
|
-
const hasMorePages = ref(false)
|
|
49
|
-
const displayedCards = ref([])
|
|
50
|
-
const loading = ref(true)
|
|
51
|
-
const bundleCache = ref({})
|
|
52
|
-
const displayLimit = ref(0)
|
|
53
|
-
const allCards = ref(undefined)
|
|
54
|
-
const filters = ref({
|
|
55
|
-
taxonomies: [],
|
|
56
|
-
selected: {},
|
|
57
|
-
availableBundles: [],
|
|
58
|
-
})
|
|
59
|
-
const props = defineProps({
|
|
60
|
-
background: {
|
|
61
|
-
type: String,
|
|
62
|
-
default: 'grey',
|
|
63
|
-
},
|
|
64
|
-
title: {
|
|
65
|
-
type: String,
|
|
66
|
-
default: '',
|
|
67
|
-
},
|
|
68
|
-
titleTag: {
|
|
69
|
-
type: String,
|
|
70
|
-
default: 'h2',
|
|
71
|
-
},
|
|
72
|
-
bundle: {
|
|
73
|
-
type: Array,
|
|
74
|
-
default: () => [''],
|
|
75
|
-
},
|
|
76
|
-
columns: {
|
|
77
|
-
type: Number,
|
|
78
|
-
default: 0,
|
|
79
|
-
},
|
|
80
|
-
initialDisplyLimit: {
|
|
81
|
-
type: Number,
|
|
82
|
-
default: 0,
|
|
83
|
-
},
|
|
84
|
-
fetchContent: {
|
|
85
|
-
type: Function,
|
|
86
|
-
required: true,
|
|
87
|
-
},
|
|
88
|
-
fetchFilters: {
|
|
89
|
-
type: Function,
|
|
90
|
-
required: false,
|
|
91
|
-
default: null,
|
|
92
|
-
},
|
|
93
|
-
enableBundleFilter: {
|
|
94
|
-
type: Boolean,
|
|
95
|
-
},
|
|
96
|
-
getBundleAlias: {
|
|
97
|
-
type: Function,
|
|
98
|
-
required: false,
|
|
99
|
-
default: null,
|
|
100
|
-
},
|
|
101
|
-
showMore: {
|
|
102
|
-
type: Boolean,
|
|
103
|
-
},
|
|
104
|
-
type: {
|
|
105
|
-
type: String,
|
|
106
|
-
required: true,
|
|
107
|
-
},
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
await useAsyncData('fetchData', async () => {
|
|
111
|
-
try {
|
|
112
|
-
await Promise.all([
|
|
113
|
-
props.fetchFilters ? loadFilters() : Promise.resolve(),
|
|
114
|
-
loadMoreCards(true),
|
|
115
|
-
])
|
|
116
|
-
} catch (err) {
|
|
117
|
-
console.log('🚀 ~ err:', err)
|
|
118
|
-
}
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
function initial() {
|
|
122
|
-
allCards.value = {
|
|
123
|
-
total: 0,
|
|
124
|
-
cards: [],
|
|
125
|
-
}
|
|
126
|
-
displayLimit.value = 0
|
|
127
|
-
hasMorePages.value = false
|
|
128
|
-
displayedCards.value = []
|
|
129
|
-
bundleCache.value = {}
|
|
130
|
-
}
|
|
131
|
-
async function fetchCards(currentDisplayedCards, allCards, addMoreBy, bundles) {
|
|
132
|
-
const shouldMakeNewFetchCall =
|
|
133
|
-
currentDisplayedCards.length + addMoreBy > allCards.cards.length
|
|
134
|
-
if (shouldMakeNewFetchCall) {
|
|
135
|
-
const cardBundles = await Promise.all(
|
|
136
|
-
bundles.map((bundle, index) => getBundle(bundle, addMoreBy, index)),
|
|
137
|
-
)
|
|
138
|
-
allCards = getShuffledCards(cardBundles)
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
props.type === 'paragraph--cards_group_latest' ||
|
|
142
|
-
props.type === 'paragraph--browse_content'
|
|
143
|
-
) {
|
|
144
|
-
allCards.cards = sortByDate(allCards.cards)
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return allCards
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
async function loadMoreCards(init) {
|
|
151
|
-
const attrs = {
|
|
152
|
-
group: nuxtApp.$pageStore?.content?.title,
|
|
153
|
-
}
|
|
154
|
-
if (nuxtApp.$gtm && !init) {
|
|
155
|
-
nuxtApp.$gtm.push({ event: 'custom.interaction.showmore.click', ...attrs })
|
|
156
|
-
}
|
|
157
|
-
if (init) {
|
|
158
|
-
initial()
|
|
159
|
-
}
|
|
160
|
-
loading.value = true
|
|
161
|
-
const addMoreBy = props.initialDisplyLimit
|
|
162
|
-
displayLimit.value += addMoreBy
|
|
163
|
-
const bundles =
|
|
164
|
-
filters.value.availableBundles.length > 0
|
|
165
|
-
? filters.value.availableBundles
|
|
166
|
-
: props.bundle
|
|
167
|
-
allCards.value = await fetchCards(
|
|
168
|
-
displayedCards.value,
|
|
169
|
-
allCards.value,
|
|
170
|
-
addMoreBy,
|
|
171
|
-
bundles,
|
|
172
|
-
)
|
|
173
|
-
hasMorePages.value = allCards.value.total > allCards.value.cards.length
|
|
174
|
-
displayedCards.value = allCards.value.cards.slice(0, displayLimit.value)
|
|
175
|
-
loading.value = false
|
|
176
|
-
}
|
|
177
|
-
async function getBundle(bundle, addMoreBy, index) {
|
|
178
|
-
let start
|
|
179
|
-
const rows = addMoreBy
|
|
180
|
-
const cache = (bundleCache.value[bundle] = bundleCache.value[bundle] || {
|
|
181
|
-
response: {
|
|
182
|
-
results: [],
|
|
183
|
-
numFound: 0,
|
|
184
|
-
},
|
|
185
|
-
qs: {
|
|
186
|
-
start,
|
|
187
|
-
},
|
|
188
|
-
})
|
|
189
|
-
if (cache.qs.start === undefined) {
|
|
190
|
-
start = 0
|
|
191
|
-
} else if (cache.response.numFound > cache.response.results.length) {
|
|
192
|
-
start = cache.response.results.length
|
|
193
|
-
} else {
|
|
194
|
-
return Promise.resolve(cache.response)
|
|
195
|
-
}
|
|
196
|
-
const qs = {
|
|
197
|
-
bundle,
|
|
198
|
-
rows,
|
|
199
|
-
start,
|
|
200
|
-
}
|
|
201
|
-
let response = await props.fetchContent(qs, filters.value.selected)
|
|
202
|
-
cache.qs.start = qs.start
|
|
203
|
-
cache.response.numFound = response.numFound
|
|
204
|
-
cache.response.results.push(...response.results)
|
|
205
|
-
return cache.response
|
|
206
|
-
}
|
|
207
|
-
function getShuffledCards(cardBundles) {
|
|
208
|
-
const shuffled = []
|
|
209
|
-
const bundleWithMostCards = cardBundles.reduce(
|
|
210
|
-
(a, b) => (a.results.length > b.results.length ? a : b),
|
|
211
|
-
{ results: [] },
|
|
212
|
-
).results.length
|
|
213
|
-
|
|
214
|
-
for (let i = 0; i < bundleWithMostCards; i++) {
|
|
215
|
-
cardBundles.forEach((bundle) => {
|
|
216
|
-
if (bundle.results[i]) {
|
|
217
|
-
shuffled.push(bundle.results[i])
|
|
218
|
-
}
|
|
219
|
-
})
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
const total = cardBundles.reduce((acc, bundle) => {
|
|
223
|
-
return acc + bundle.numFound
|
|
224
|
-
}, 0)
|
|
225
|
-
|
|
226
|
-
return { cards: shuffled, total }
|
|
227
|
-
}
|
|
228
|
-
function loadFilters() {
|
|
229
|
-
return props.fetchFilters().then((taxonomies) => {
|
|
230
|
-
filters.value.taxonomies = taxonomies
|
|
231
|
-
|
|
232
|
-
return Promise.resolve(taxonomies)
|
|
233
|
-
})
|
|
234
|
-
}
|
|
235
|
-
const onFilter = (fltrs) => {
|
|
236
|
-
bundleCache.value = {}
|
|
237
|
-
Object.keys(fltrs).forEach((filter) => {
|
|
238
|
-
filters.values.selected[filter] = fltrs[filter].map((obj) => obj.tid)
|
|
239
|
-
})
|
|
240
|
-
loadMoreCards(true)
|
|
241
|
-
}
|
|
242
|
-
const onSwitcher = (switchToBundle) => {
|
|
243
|
-
filters.value.selected = {}
|
|
244
|
-
filters.value.availableBundles.length = 0
|
|
245
|
-
if (switchToBundle) {
|
|
246
|
-
filters.value.availableBundles.push(switchToBundle)
|
|
247
|
-
}
|
|
248
|
-
loadMoreCards(true)
|
|
249
|
-
}
|
|
250
|
-
const reset = async () => {
|
|
251
|
-
bundleCache.value = {}
|
|
252
|
-
filters.value.selected = {}
|
|
253
|
-
filters.value.availableBundles.length = 0
|
|
254
|
-
await loadMoreCards(true)
|
|
255
|
-
}
|
|
256
|
-
function sortByDate(cards) {
|
|
257
|
-
const sorted = cards.sort((a, b) => {
|
|
258
|
-
return new Date(b.dateSort) - new Date(a.dateSort)
|
|
259
|
-
})
|
|
260
|
-
return sorted
|
|
261
|
-
}
|
|
262
|
-
</script>
|
|
263
|
-
<style lang="scss" scoped>
|
|
264
|
-
.wcl-browse-content {
|
|
265
|
-
&__filter {
|
|
266
|
-
align-items: flex-end;
|
|
267
|
-
place-content: flex-end;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
&.card_group__card--col-4 {
|
|
271
|
-
:deep(.card-grid__column .card-grid-item__description) {
|
|
272
|
-
display: none;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
:deep(.card_group__card--blue .card_item__desc p) {
|
|
277
|
-
margin-top: 12px;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
:deep(.card_group__card--red .card_item__desc p) {
|
|
281
|
-
margin-top: 12px;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
</style>
|