comand-component-library 3.3.87 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/comand-component-library.js +1728 -1655
- package/dist/comand-component-library.umd.cjs +4 -4
- package/dist/media/images/slideshow-images/large/slide1.jpg +0 -0
- package/dist/media/images/slideshow-images/large/slide2.jpg +0 -0
- package/dist/media/images/slideshow-images/large/slide3.jpg +0 -0
- package/dist/media/images/slideshow-images/large/slide4.jpg +0 -0
- package/dist/media/images/slideshow-images/medium/slide1.jpg +0 -0
- package/dist/media/images/slideshow-images/medium/slide2.jpg +0 -0
- package/dist/media/images/slideshow-images/medium/slide3.jpg +0 -0
- package/dist/media/images/slideshow-images/medium/slide4.jpg +0 -0
- package/dist/media/images/slideshow-images/small/slide1.jpg +0 -0
- package/dist/media/images/slideshow-images/small/slide2.jpg +0 -0
- package/dist/media/images/slideshow-images/small/slide3.jpg +0 -0
- package/dist/media/images/slideshow-images/small/slide4.jpg +0 -0
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/ComponentLibrary.vue +2629 -0
- package/src/assets/data/address-data.json +3 -3
- package/src/assets/data/main-navigation.json +2 -0
- package/src/components/CmdAddressData.vue +91 -97
- package/src/components/CmdAddressDataItem.vue +60 -52
- package/src/components/CmdBankAccountData.vue +1 -1
- package/src/components/CmdBox.vue +50 -14
- package/src/components/CmdBoxWrapper.vue +23 -9
- package/src/components/CmdBreadcrumbs.vue +1 -1
- package/src/components/CmdCompanyLogo.vue +14 -11
- package/src/components/CmdContainer.vue +1 -1
- package/src/components/CmdCookieDisclaimer.vue +1 -1
- package/src/components/CmdCopyrightInformation.vue +1 -1
- package/src/components/CmdFancyBox.vue +8 -5
- package/src/components/CmdForm.vue +7 -1
- package/src/components/CmdFormElement.vue +58 -108
- package/src/components/CmdFormFilters.vue +2 -1
- package/src/components/CmdGoogleMaps.vue +1 -1
- package/src/components/CmdHeadline.vue +116 -52
- package/src/components/CmdIcon.vue +1 -1
- package/src/components/CmdImage.vue +1 -1
- package/src/components/CmdImageGallery.vue +1 -1
- package/src/components/CmdImageZoom.vue +1 -1
- package/src/components/CmdInputGroup.vue +8 -7
- package/src/components/CmdListOfLinks.vue +25 -25
- package/src/components/CmdListOfLinksItem.vue +0 -4
- package/src/components/CmdListOfRequirements.vue +10 -2
- package/src/components/CmdLoginForm.vue +2 -1
- package/src/components/CmdMainNavigation.vue +38 -26
- package/src/components/CmdMultistepFormProgressBar.vue +50 -4
- package/src/components/CmdNewsletterSubscription.vue +8 -15
- package/src/components/CmdOpeningHours.vue +34 -19
- package/src/components/CmdOpeningHoursItem.vue +22 -14
- package/src/components/CmdPagination.vue +22 -16
- package/src/components/CmdProgressBar.vue +1 -1
- package/src/components/CmdSidebar.vue +13 -2
- package/src/components/CmdSiteFooter.vue +14 -14
- package/src/components/CmdSiteHeader.vue +14 -29
- package/src/components/CmdSiteSearch.vue +12 -11
- package/src/components/CmdSlideButton.vue +9 -7
- package/src/components/CmdSlideshow.vue +14 -12
- package/src/components/CmdSocialNetworks.vue +11 -4
- package/src/components/CmdSocialNetworksItem.vue +2 -7
- package/src/components/CmdSwitchLanguage.vue +1 -1
- package/src/components/CmdSystemMessage.vue +11 -6
- package/src/components/CmdTable.vue +64 -16
- package/src/components/CmdTabs.vue +2 -2
- package/src/components/CmdTextImageBlock.vue +3 -1
- package/src/components/CmdThumbnailScroller.vue +180 -155
- package/src/components/CmdToggleDarkMode.vue +1 -1
- package/src/components/CmdTooltip.vue +6 -1
- package/src/components/CmdUploadForm.vue +69 -43
- package/src/components/CmdWidthLimitationWrapper.vue +7 -3
- package/src/components/ComponentSettings.vue +171 -0
- package/src/main.js +3 -3
- package/src/mixins/FieldValidation.js +0 -17
- package/src/App.vue +0 -2119
@@ -19,7 +19,7 @@
|
|
19
19
|
"location": ""
|
20
20
|
},
|
21
21
|
{
|
22
|
-
"name": "
|
22
|
+
"name": "phone",
|
23
23
|
"iconClass": "icon-phone",
|
24
24
|
"data": "Your phone number",
|
25
25
|
"labelText": "Telephone",
|
@@ -27,7 +27,7 @@
|
|
27
27
|
"href": "0123456789"
|
28
28
|
},
|
29
29
|
{
|
30
|
-
"name": "
|
30
|
+
"name": "phone",
|
31
31
|
"iconClass": "icon-device-smartphone",
|
32
32
|
"data": "Your mobile phone number",
|
33
33
|
"labelText": "Mobile phone",
|
@@ -49,7 +49,7 @@
|
|
49
49
|
"href": "mail@provider.de"
|
50
50
|
},
|
51
51
|
{
|
52
|
-
"name": "
|
52
|
+
"name": "url",
|
53
53
|
"iconClass": "icon-globe",
|
54
54
|
"data": "Your web site",
|
55
55
|
"labelText": "Web site",
|
@@ -9,119 +9,85 @@
|
|
9
9
|
<template v-else>
|
10
10
|
<!-- begin cmd-headline -->
|
11
11
|
<CmdHeadline
|
12
|
-
v-if="cmdHeadline?.headlineText || editModeContext"
|
13
|
-
v-bind="cmdHeadline"
|
12
|
+
v-if="cmdHeadline?.headlineText || editModeContext" v-bind="cmdHeadline"
|
14
13
|
/>
|
15
14
|
<!-- end cmd-headline -->
|
16
15
|
|
17
16
|
<!-- begin address-data in vCard microformat -->
|
18
17
|
<address class="adr">
|
19
18
|
<!-- begin list with labels -->
|
20
|
-
<template v-if="showLabels && !showIconsOnly">
|
19
|
+
<template v-if="showLabels && (showLabelTexts|| showLabelIcons) && !showIconsOnly">
|
21
20
|
<!-- begin default view -->
|
22
21
|
<dl v-if="!editModeContext">
|
22
|
+
<!-- begin cmd-address-data-item -->
|
23
23
|
<CmdAddressDataItem
|
24
24
|
v-for="(entry, index) in addressData"
|
25
|
-
:key="index"
|
26
|
-
:
|
25
|
+
:key="index" :addressEntry="entry"
|
26
|
+
:showLabelIcons="showLabelIcons"
|
27
|
+
:showLabelTexts="showLabelTexts"
|
27
28
|
/>
|
29
|
+
<!-- end cmd-address-data-item -->
|
28
30
|
</dl>
|
29
31
|
<!-- end default view -->
|
30
32
|
|
31
33
|
<!-- begin edit-mode -->
|
32
|
-
<
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
34
|
+
<template v-else>
|
35
|
+
<button v-if="addressData.length === 0" type="button" class="button confirm small" @click="onAddItem">
|
36
|
+
<span class="icon-plus"></span>
|
37
|
+
<span>Add new entry</span>
|
38
|
+
</button>
|
39
|
+
<EditComponentWrapper
|
40
|
+
v-for="(entry, index) in addressData"
|
41
|
+
:key="'x' + index"
|
42
|
+
class="edit-items"
|
43
|
+
:showComponentName="false"
|
44
|
+
:allowedComponentTypes="[]"
|
45
|
+
componentName="CmdAddressDataItem"
|
46
|
+
:componentProps="entry"
|
47
|
+
:componentPath="['props', 'addressData', index]"
|
48
|
+
>
|
49
|
+
<dl>
|
50
|
+
<!-- begin cmd-address-data-item -->
|
51
|
+
<CmdAddressDataItem
|
52
|
+
:addressEntry="entry"
|
53
|
+
:showLabelIcons="showLabelIcons"
|
54
|
+
:showLabelTexts="showLabelTexts"
|
55
|
+
/>
|
56
|
+
<!-- end cmd-address-data-item -->
|
57
|
+
</dl>
|
58
|
+
</EditComponentWrapper>
|
59
|
+
</template>
|
56
60
|
</template>
|
57
61
|
<!-- end list with labels -->
|
58
62
|
|
59
63
|
<!-- begin list without labels -->
|
60
64
|
<ul v-else :class="['flex-container', {'vertical': !showIconsOnly}]">
|
61
65
|
<template v-for="(entry, index) in addressData" :key="index">
|
62
|
-
<
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
<li v-if="entry.href || (entry.name === 'address' && entry.linkGoogleMaps) || !showIconsOnly"
|
67
|
+
:class="{'no-flex' : showIconsOnly}">
|
68
|
+
<!-- begin all entries except address (which has no href) -->
|
69
|
+
<a v-if="entry.href" :href="getHref(entry)" :target="entry.name === 'url' ? '_blank' : null" :title="entry.tooltip">
|
70
|
+
<template v-if="showIconsOnly">
|
71
|
+
<!-- begin CmdIcon -->
|
72
|
+
<CmdIcon v-if="entry.iconClass" :iconClass="entry.iconClass" :type="entry.iconType"/>
|
73
|
+
<!-- end CmdIcon -->
|
74
|
+
</template>
|
75
|
+
<template v-else>{{ entry.href }}</template>
|
76
|
+
</a>
|
77
|
+
<span v-else-if="!showIconsOnly" v-html="entry.data"></span>
|
78
|
+
<!-- end all entries except address -->
|
79
|
+
|
80
|
+
<!-- begin address -->
|
81
|
+
<template v-if="entry.name === 'address'">
|
82
|
+
<!-- begin linked address -->
|
83
|
+
<a v-if="entry.linkGoogleMaps" :href="locateAddress(entry)" target="google-maps" :title="entry.tooltip">
|
68
84
|
<template v-if="showIconsOnly">
|
69
85
|
<!-- begin CmdIcon -->
|
70
|
-
<CmdIcon
|
71
|
-
|
72
|
-
:iconClass="entry.iconClass"
|
73
|
-
:type="entry.iconType"
|
74
|
-
/>
|
86
|
+
<CmdIcon v-if="entry.iconClass" :iconClass="entry.iconClass"
|
87
|
+
:type="entry.iconType"/>
|
75
88
|
<!-- end CmdIcon -->
|
76
89
|
</template>
|
77
|
-
<template v-else>
|
78
|
-
</a>
|
79
|
-
<span v-else-if="!showIconsOnly" v-html="entry.data"></span>
|
80
|
-
<!-- end all entries except address -->
|
81
|
-
|
82
|
-
<!-- begin address -->
|
83
|
-
<template v-if="entry.type === 'address'">
|
84
|
-
<!-- begin linked address -->
|
85
|
-
<a v-if="entry.linkGoogleMaps" :href="locateAddress(entry)" target="google-maps"
|
86
|
-
:title="entry.tooltip">
|
87
|
-
<template v-if="showIconsOnly">
|
88
|
-
<!-- begin CmdIcon -->
|
89
|
-
<CmdIcon
|
90
|
-
v-if="entry.iconClass"
|
91
|
-
:iconClass="entry.iconClass"
|
92
|
-
:type="entry.iconType"
|
93
|
-
/>
|
94
|
-
<!-- end CmdIcon -->
|
95
|
-
</template>
|
96
|
-
<template v-else>
|
97
|
-
<!-- begin street/number -->
|
98
|
-
<template v-if="entry.streetNo">
|
99
|
-
<span class="street-address">{{ entry.streetNo }}</span><br/>
|
100
|
-
</template>
|
101
|
-
<!-- end street/number -->
|
102
|
-
|
103
|
-
<!-- begin zip/city -->
|
104
|
-
<template v-if="entry.zip || entry.city">
|
105
|
-
<span class="postal-code">{{ entry.zip }} </span>
|
106
|
-
<span class="locality">{{ entry.city }}</span><br/>
|
107
|
-
</template>
|
108
|
-
<!-- end zip/city -->
|
109
|
-
|
110
|
-
<!-- begin miscInfo -->
|
111
|
-
<template v-if="entry.miscInfo">
|
112
|
-
<span>{{ entry.miscInfo }}</span><br/>
|
113
|
-
</template>
|
114
|
-
<!-- end miscInfo -->
|
115
|
-
|
116
|
-
<!-- begin country -->
|
117
|
-
<span v-if="entry.country" class="country-name">{{ entry.country }}</span>
|
118
|
-
<!-- end country -->
|
119
|
-
</template>
|
120
|
-
</a>
|
121
|
-
<!-- end linked address -->
|
122
|
-
|
123
|
-
<!-- begin unlinked address -->
|
124
|
-
<template v-if="!entry.linkGoogleMaps && !showIconsOnly">
|
90
|
+
<template v-else>
|
125
91
|
<!-- begin street/number -->
|
126
92
|
<template v-if="entry.streetNo">
|
127
93
|
<span class="street-address">{{ entry.streetNo }}</span><br/>
|
@@ -145,11 +111,38 @@
|
|
145
111
|
<span v-if="entry.country" class="country-name">{{ entry.country }}</span>
|
146
112
|
<!-- end country -->
|
147
113
|
</template>
|
148
|
-
|
114
|
+
</a>
|
115
|
+
<!-- end linked address -->
|
116
|
+
|
117
|
+
<!-- begin unlinked address -->
|
118
|
+
<template v-if="!entry.linkGoogleMaps && !showIconsOnly">
|
119
|
+
<!-- begin street/number -->
|
120
|
+
<template v-if="entry.streetNo">
|
121
|
+
<span class="street-address">{{ entry.streetNo }}</span><br/>
|
122
|
+
</template>
|
123
|
+
<!-- end street/number -->
|
124
|
+
|
125
|
+
<!-- begin zip/city -->
|
126
|
+
<template v-if="entry.zip || entry.city">
|
127
|
+
<span class="postal-code">{{ entry.zip }} </span>
|
128
|
+
<span class="locality">{{ entry.city }}</span><br/>
|
129
|
+
</template>
|
130
|
+
<!-- end zip/city -->
|
131
|
+
|
132
|
+
<!-- begin miscInfo -->
|
133
|
+
<template v-if="entry.miscInfo">
|
134
|
+
<span>{{ entry.miscInfo }}</span><br/>
|
135
|
+
</template>
|
136
|
+
<!-- end miscInfo -->
|
137
|
+
|
138
|
+
<!-- begin country -->
|
139
|
+
<span v-if="entry.country" class="country-name">{{ entry.country }}</span>
|
140
|
+
<!-- end country -->
|
149
141
|
</template>
|
150
|
-
<!-- end address -->
|
151
|
-
</
|
152
|
-
|
142
|
+
<!-- end unlinked address -->
|
143
|
+
</template>
|
144
|
+
<!-- end address -->
|
145
|
+
</li>
|
153
146
|
<!-- end all entries except address -->
|
154
147
|
</template>
|
155
148
|
<!-- end v-for -->
|
@@ -251,13 +244,13 @@ export default {
|
|
251
244
|
return "https://www.google.com/maps/place/" + entry.streetNo + ", " + entry.zip + " " + entry.city
|
252
245
|
},
|
253
246
|
getHref(entry) {
|
254
|
-
if (entry.
|
247
|
+
if (entry.name === "phone") {
|
255
248
|
return "tel:" + entry.href
|
256
249
|
}
|
257
|
-
if (entry.
|
250
|
+
if (entry.name === "email") {
|
258
251
|
return "mailto:" + entry.href
|
259
252
|
}
|
260
|
-
if (entry.
|
253
|
+
if (entry.name === "url") {
|
261
254
|
return entry.href
|
262
255
|
}
|
263
256
|
return null
|
@@ -279,7 +272,7 @@ export default {
|
|
279
272
|
}
|
280
273
|
</script>
|
281
274
|
|
282
|
-
<style
|
275
|
+
<style>
|
283
276
|
/* begin cmd-address-data ---------------------------------------------------------------------------------------- */
|
284
277
|
.cmd-address-data {
|
285
278
|
dl {
|
@@ -287,7 +280,7 @@ export default {
|
|
287
280
|
|
288
281
|
dt {
|
289
282
|
display: flex;
|
290
|
-
|
283
|
+
top: 0.2rem;
|
291
284
|
|
292
285
|
&.address {
|
293
286
|
align-self: flex-start;
|
@@ -301,6 +294,7 @@ export default {
|
|
301
294
|
|
302
295
|
ul {
|
303
296
|
gap: calc(var(--default-gap) / 2);
|
297
|
+
margin-left: 0;
|
304
298
|
|
305
299
|
li {
|
306
300
|
margin-left: 0;
|
@@ -2,18 +2,22 @@
|
|
2
2
|
<dt :class="['cmd-address-data-item', {'address': addressEntry.type === 'address'}]">
|
3
3
|
<!-- begin CmdIcon -->
|
4
4
|
<CmdIcon
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
v-if="addressEntry.iconClass && showLabelIcons"
|
6
|
+
:iconClass="addressEntry.iconClass"
|
7
|
+
:type="addressEntry.iconType"
|
8
|
+
:tooltip="addressEntry.labelText"
|
9
9
|
/>
|
10
10
|
<!-- end CmdIcon -->
|
11
|
+
|
12
|
+
<!-- begin show label-texts -->
|
11
13
|
<span v-if="showLabelTexts">{{ addressEntry.labelText }}</span>
|
14
|
+
<!-- end show label-texts -->
|
12
15
|
</dt>
|
13
16
|
<!-- end labels -->
|
14
17
|
|
15
18
|
<!-- begin data (except for address) -->
|
16
19
|
<dd v-if="addressEntry.type !== 'address' && (addressEntry.data || addressEntry.href)" :class="vCardClass(addressEntry)">
|
20
|
+
<!-- begin default-view -->
|
17
21
|
<template v-if="!editing">
|
18
22
|
<a v-if="addressEntry.href"
|
19
23
|
:href="getHref(addressEntry)"
|
@@ -25,28 +29,26 @@
|
|
25
29
|
</a>
|
26
30
|
<span v-else v-html="addressEntry.data"></span>
|
27
31
|
</template>
|
32
|
+
<!-- end default-view -->
|
28
33
|
|
29
34
|
<!-- begin edit-mode -->
|
30
35
|
<CmdFormElement
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
v-else
|
37
|
+
element="input"
|
38
|
+
:type="inputType(addressEntry)"
|
39
|
+
class="edit-mode"
|
40
|
+
:show-label="false"
|
41
|
+
:labelText="addressEntry.labelText"
|
42
|
+
:placeholder="addressEntry.labelText"
|
43
|
+
v-model="editableAddressEntry"
|
39
44
|
/>
|
40
45
|
<!-- end edit-mode -->
|
41
46
|
</dd>
|
42
47
|
|
43
48
|
<!-- begin data for address -->
|
44
|
-
<dd v-else-if="addressEntry.
|
49
|
+
<dd v-else-if="addressEntry.name === 'address'">
|
45
50
|
<!-- begin linked address -->
|
46
|
-
<a v-if="linkGoogleMaps && !editing"
|
47
|
-
:href="locateAddress(addressEntry)"
|
48
|
-
target="google-maps"
|
49
|
-
:title="addressEntry.tooltip">
|
51
|
+
<a v-if="linkGoogleMaps && !editing" :href="locateAddress(addressEntry)" target="google-maps" :title="addressEntry.tooltip">
|
50
52
|
<!-- begin street/number -->
|
51
53
|
<template v-if="addressEntry.streetNo">
|
52
54
|
<span class="street-address">{{ addressEntry.streetNo }}</span><br/>
|
@@ -103,59 +105,59 @@
|
|
103
105
|
<template v-else>
|
104
106
|
<!-- begin street/number -->
|
105
107
|
<CmdFormElement
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
element="input"
|
109
|
+
type="text"
|
110
|
+
class="edit-mode"
|
111
|
+
:show-label="false"
|
112
|
+
:labelText="addressEntry.labelText"
|
113
|
+
:placeholder="addressEntry.labelText"
|
114
|
+
v-model="editableAddressEntry.streetNo"
|
113
115
|
/>
|
114
116
|
<!-- end street/number -->
|
115
117
|
|
116
118
|
<!-- begin zip/city -->
|
117
119
|
<div class="input-wrapper">
|
118
120
|
<CmdFormElement
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
121
|
+
element="input"
|
122
|
+
type="text"
|
123
|
+
class="edit-mode"
|
124
|
+
:show-label="false"
|
125
|
+
:labelText="addressEntry.labelText"
|
126
|
+
:placeholder="addressEntry.labelText"
|
127
|
+
v-model="editableAddressEntry.zip"
|
126
128
|
/>
|
127
129
|
<CmdFormElement
|
128
|
-
element="input"
|
129
|
-
type="text"
|
130
|
-
class="edit-mode"
|
131
|
-
:show-label="false"
|
132
|
-
:labelText="addressEntry.labelText"
|
133
|
-
:placeholder="addressEntry.labelText"
|
134
|
-
v-model="editableAddressEntry.city"
|
135
|
-
/>
|
136
|
-
</div>
|
137
|
-
<!-- end zip/city -->
|
138
|
-
|
139
|
-
<!-- begin miscInfo -->
|
140
|
-
<CmdFormElement
|
141
130
|
element="input"
|
142
131
|
type="text"
|
143
132
|
class="edit-mode"
|
144
133
|
:show-label="false"
|
145
134
|
:labelText="addressEntry.labelText"
|
146
135
|
:placeholder="addressEntry.labelText"
|
147
|
-
v-model="editableAddressEntry.
|
136
|
+
v-model="editableAddressEntry.city"
|
137
|
+
/>
|
138
|
+
</div>
|
139
|
+
<!-- end zip/city -->
|
140
|
+
|
141
|
+
<!-- begin miscInfo -->
|
142
|
+
<CmdFormElement
|
143
|
+
element="input"
|
144
|
+
type="text"
|
145
|
+
class="edit-mode"
|
146
|
+
:show-label="false"
|
147
|
+
:labelText="addressEntry.labelText"
|
148
|
+
:placeholder="addressEntry.labelText"
|
149
|
+
v-model="editableAddressEntry.miscInfo"
|
148
150
|
/>
|
149
151
|
<!-- end miscInfo -->
|
150
152
|
|
151
153
|
<!-- begin country -->
|
152
154
|
<CmdFormElement
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
element="select"
|
156
|
+
class="edit-mode"
|
157
|
+
:show-label="false"
|
158
|
+
:labelText="addressEntry.labelText"
|
159
|
+
:selectOptions="[{text: 'Germany', value: 'de'}, {text: 'United Kingdom', value: 'uk'}]"
|
160
|
+
v-model="editableAddressEntry.country"
|
159
161
|
/>
|
160
162
|
<!-- end country -->
|
161
163
|
</template>
|
@@ -169,7 +171,7 @@
|
|
169
171
|
<!-- end data (except for address) -->
|
170
172
|
<script>
|
171
173
|
import EditMode from "../mixins/EditMode.vue"
|
172
|
-
import {updateHandlerProvider} from "../utils/editmode.js"
|
174
|
+
import {updateHandlerProvider} from "../utils/editmode.js"
|
173
175
|
|
174
176
|
export default {
|
175
177
|
name: "CmdAddressDataItem",
|
@@ -180,6 +182,9 @@ export default {
|
|
180
182
|
}
|
181
183
|
},
|
182
184
|
props: {
|
185
|
+
/**
|
186
|
+
* one single address-entry
|
187
|
+
*/
|
183
188
|
addressEntry: {
|
184
189
|
type: Object,
|
185
190
|
default: {}
|
@@ -198,6 +203,9 @@ export default {
|
|
198
203
|
type: Boolean,
|
199
204
|
default: false
|
200
205
|
},
|
206
|
+
/**
|
207
|
+
* activate if physical address should be linked with GoogleMaps
|
208
|
+
*/
|
201
209
|
linkGoogleMaps: {
|
202
210
|
type: Boolean,
|
203
211
|
default: false
|
@@ -56,8 +56,8 @@
|
|
56
56
|
<!-- end default header with slot -->
|
57
57
|
|
58
58
|
<!-- begin box-body -->
|
59
|
-
<div v-show="open" class="box-body" aria-expanded="true" role="article">
|
60
|
-
<div v-if="useSlots?.includes('body')" :class="{'default-padding': useDefaultPadding}">
|
59
|
+
<div v-show="open" :class="['box-body', boxBodyClass]" aria-expanded="true" role="article">
|
60
|
+
<div v-if="useSlots?.includes('body')" :class="{'default-padding': useDefaultPadding, 'allow-scroll': allowContentToScroll}" :style="setMaxBoxBodyHeight">
|
61
61
|
<!-- begin slot 'body' -->
|
62
62
|
<slot name="body">
|
63
63
|
<transition-group :name="toggleTransition">
|
@@ -79,7 +79,7 @@
|
|
79
79
|
<template v-else>
|
80
80
|
<img v-if="image" :src="image.src" :alt="image.altText"/>
|
81
81
|
|
82
|
-
<div :class="{'default-padding': useDefaultPadding}">
|
82
|
+
<div :class="{'default-padding': useDefaultPadding, 'allow-scroll': allowContentToScroll}">
|
83
83
|
<!-- begin CmdHeadline -->
|
84
84
|
<CmdHeadline
|
85
85
|
v-if="cmdHeadline?.headlineText && repeatHeadlineInBoxBody"
|
@@ -219,6 +219,22 @@ export default {
|
|
219
219
|
type: String,
|
220
220
|
default: "content"
|
221
221
|
},
|
222
|
+
/**
|
223
|
+
* set if content (in box-body) should scroll
|
224
|
+
*
|
225
|
+
* (maxBoxBodyHeight must be set)
|
226
|
+
*/
|
227
|
+
allowContentToScroll: {
|
228
|
+
type: Boolean,
|
229
|
+
default: false
|
230
|
+
},
|
231
|
+
/**
|
232
|
+
* set max-height for body (should only be used it allowContentToScroll-property is active)
|
233
|
+
*/
|
234
|
+
maxBoxBodyHeight: {
|
235
|
+
type: String,
|
236
|
+
default: "10rem"
|
237
|
+
},
|
222
238
|
/**
|
223
239
|
* activate if box should be collapsible
|
224
240
|
*/
|
@@ -261,12 +277,19 @@ export default {
|
|
261
277
|
/**
|
262
278
|
* use transition to expand and collapse box-body
|
263
279
|
*
|
264
|
-
* boyType must be 'content' and 'collapsible' must be activated
|
280
|
+
* 'boyType-property' must be set to 'content' and 'collapsible-property' must be activated
|
265
281
|
*/
|
266
282
|
useTransition: {
|
267
283
|
type: Boolean,
|
268
284
|
default: true
|
269
285
|
},
|
286
|
+
/**
|
287
|
+
* custom class placed on box-body-container
|
288
|
+
*/
|
289
|
+
boxBodyClass: {
|
290
|
+
type: String,
|
291
|
+
required: false
|
292
|
+
},
|
270
293
|
/**
|
271
294
|
* set default profile-icon (will eb shown if no user-image exists)
|
272
295
|
*/
|
@@ -383,6 +406,12 @@ export default {
|
|
383
406
|
}
|
384
407
|
},
|
385
408
|
computed: {
|
409
|
+
setMaxBoxBodyHeight() {
|
410
|
+
if (this.allowContentToScroll && this.maxBoxBodyHeight) {
|
411
|
+
return this.maxBoxBodyHeight
|
412
|
+
}
|
413
|
+
return null
|
414
|
+
},
|
386
415
|
toggleTransition() {
|
387
416
|
if (this.useTransition) {
|
388
417
|
return "fade"
|
@@ -419,7 +448,7 @@ export default {
|
|
419
448
|
}
|
420
449
|
</script>
|
421
450
|
|
422
|
-
<style
|
451
|
+
<style>
|
423
452
|
/* begin cmd-box ---------------------------------------------------------------------------------------- */
|
424
453
|
.cmd-box {
|
425
454
|
display: inline-flex;
|
@@ -436,28 +465,34 @@ export default {
|
|
436
465
|
height: 100%;
|
437
466
|
}
|
438
467
|
|
439
|
-
|
468
|
+
.box-header .cmd-headline {
|
440
469
|
margin-bottom: 0;
|
441
470
|
}
|
442
471
|
|
443
|
-
|
472
|
+
/* collapsible box only */
|
444
473
|
&.collapsible {
|
445
474
|
a.box-header {
|
446
475
|
justify-content: space-between;
|
447
|
-
background: var(--
|
448
|
-
border: var(--primary-border);
|
476
|
+
background: var(--hyperlink-color);
|
449
477
|
|
450
478
|
&:hover, &:active, &:focus {
|
451
479
|
background: var(--pure-white);
|
452
480
|
|
453
481
|
* {
|
454
|
-
color: var(--
|
482
|
+
color: var(--hyperlink-color);
|
455
483
|
}
|
456
484
|
}
|
457
485
|
}
|
458
486
|
}
|
459
487
|
|
460
|
-
|
488
|
+
.box-body {
|
489
|
+
.allow-scroll {
|
490
|
+
overflow-y: auto;
|
491
|
+
/*max-height: '${this.maxBoxBodyHeight}'*/
|
492
|
+
}
|
493
|
+
}
|
494
|
+
|
495
|
+
/* boyType === 'content' */
|
461
496
|
&.content {
|
462
497
|
> * {
|
463
498
|
*:last-child {
|
@@ -501,6 +536,7 @@ export default {
|
|
501
536
|
|
502
537
|
.box-body {
|
503
538
|
flex-grow: 1;
|
539
|
+
border-top: var(--default-border);
|
504
540
|
|
505
541
|
p.cutoff-text {
|
506
542
|
padding: var(--default-padding);
|
@@ -572,7 +608,7 @@ export default {
|
|
572
608
|
}
|
573
609
|
}
|
574
610
|
|
575
|
-
|
611
|
+
/* boyType === 'product' and boxType === 'user' */
|
576
612
|
&.product, &.user {
|
577
613
|
> div {
|
578
614
|
> .cmd-custom-headline {
|
@@ -582,7 +618,7 @@ export default {
|
|
582
618
|
}
|
583
619
|
}
|
584
620
|
|
585
|
-
|
621
|
+
/* boyType === 'product' */
|
586
622
|
&.product {
|
587
623
|
text-decoration: none;
|
588
624
|
overflow: hidden;
|
@@ -664,7 +700,7 @@ export default {
|
|
664
700
|
}
|
665
701
|
}
|
666
702
|
|
667
|
-
|
703
|
+
/* boxType === 'user' */
|
668
704
|
&.user {
|
669
705
|
> .box-header {
|
670
706
|
--icon-size: 6rem;
|