comand-component-library 3.3.87 → 4.0.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/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;
|