comand-component-library 3.1.88 → 3.1.91
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.css +1 -1
- package/dist/comand-component-library.umd.min.js +1 -1
- package/package.json +2 -2
- package/src/App.vue +88 -17
- package/src/assets/data/main-navigation.json +1 -0
- package/src/assets/data/opening-hours.json +1 -1
- package/src/assets/data/tabs.json +1 -0
- package/src/assets/styles/global-styles.scss +6 -0
- package/src/components/CmdBankAccountData.vue +3 -2
- package/src/components/CmdBox.vue +12 -7
- package/src/components/CmdBoxSiteSearch.vue +2 -1
- package/src/components/CmdCookieDisclaimer.vue +19 -6
- package/src/components/CmdFakeSelect.vue +11 -19
- package/src/components/CmdFancyBox.vue +46 -13
- package/src/components/CmdFormElement.vue +17 -29
- package/src/components/CmdImageGallery.vue +2 -2
- package/src/components/CmdInputGroup.vue +9 -16
- package/src/components/CmdLoginForm.vue +1 -1
- package/src/components/CmdMainNavigation.vue +30 -48
- package/src/components/CmdMultipleSwitch.vue +4 -12
- package/src/components/CmdNewsletterSubscription.vue +199 -0
- package/src/components/CmdOpeningHours.vue +31 -7
- package/src/components/CmdShareButtons.vue +100 -27
- package/src/components/CmdSiteHeader.vue +2 -1
- package/src/components/CmdSystemMessage.vue +6 -0
- package/src/components/CmdTabs.vue +9 -6
- package/src/components/CmdThumbnailScroller.vue +9 -1
- package/src/components/CmdTooltip.vue +1 -1
- package/src/components/CmdWidthLimitationWrapper.vue +2 -2
- package/src/directives/scrollPadding.js +6 -0
- package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +10 -0
- package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +0 -5
- package/src/documentation/generated/CmdNewsletterSubscriptionPropertyDescriptions.json +42 -0
- package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +5 -0
- package/src/documentation/generated/CmdShareButtonsPropertyDescriptions.json +24 -0
- package/src/main.js +3 -1
- package/src/mixins/CmdThumbnailScroller/DefaultMessageProperties.js +9 -0
- package/src/mixins/FieldValidation.js +10 -3
- package/src/mixins/I18n.js +3 -2
- package/src/mixins/Identifier.js +28 -0
- package/src/utils/common.js +5 -1
@@ -0,0 +1,199 @@
|
|
1
|
+
<template>
|
2
|
+
<!-- begin cmd-input-group -->
|
3
|
+
<CmdInputGroup
|
4
|
+
inputTypes="radio"
|
5
|
+
:labelText="cmdInputGroup.labelText"
|
6
|
+
:showLabel="cmdInputGroup.showLabel"
|
7
|
+
:inputElements="cmdInputGroup.inputElements"
|
8
|
+
v-model="subscription"
|
9
|
+
/>
|
10
|
+
<!-- end cmd-input-group -->
|
11
|
+
|
12
|
+
<!-- begin cmd-form-element -->
|
13
|
+
<CmdFormElement
|
14
|
+
element="input"
|
15
|
+
type="email"
|
16
|
+
:placeholder="cmdFormElementEmail.placeholder"
|
17
|
+
:labelText="cmdFormElementEmail.labelText"
|
18
|
+
id="cmd-email-newsletter-subscription"
|
19
|
+
:required="cmdFormElementEmail.required"
|
20
|
+
:useCustomTooltip="cmdFormElementEmail.useCustomTooltip"
|
21
|
+
v-model="email"
|
22
|
+
@validationStatusChange="checkValidationStatus"
|
23
|
+
/>
|
24
|
+
<!-- end cmd-form-element -->
|
25
|
+
|
26
|
+
<div class="button-wrapper">
|
27
|
+
<!-- begin cmd-form-element -->
|
28
|
+
<CmdFormElement
|
29
|
+
element="button"
|
30
|
+
:type="buttonType"
|
31
|
+
:disabled="buttonDisabled"
|
32
|
+
:nativeButton="cmdFormElementSubmit"
|
33
|
+
@click="sendData"
|
34
|
+
/>
|
35
|
+
<!-- end cmd-form-element -->
|
36
|
+
</div>
|
37
|
+
</template>
|
38
|
+
|
39
|
+
<script>
|
40
|
+
// import components
|
41
|
+
import CmdFormElement from "./CmdFormElement"
|
42
|
+
import CmdInputGroup from "./CmdInputGroup"
|
43
|
+
|
44
|
+
export default {
|
45
|
+
name: "CmdNewsletterSubscription",
|
46
|
+
emits: ["button-click"],
|
47
|
+
components: {
|
48
|
+
CmdFormElement,
|
49
|
+
CmdInputGroup
|
50
|
+
},
|
51
|
+
data() {
|
52
|
+
return {
|
53
|
+
buttonDisabled: true
|
54
|
+
}
|
55
|
+
},
|
56
|
+
props: {
|
57
|
+
/**
|
58
|
+
* set value for v-model (must be named modelValue in vue3 if default v-model should be used)
|
59
|
+
*/
|
60
|
+
modelValue: {
|
61
|
+
type: Object,
|
62
|
+
default() {
|
63
|
+
return {
|
64
|
+
subscription: "subscribe",
|
65
|
+
email: ""
|
66
|
+
}
|
67
|
+
}
|
68
|
+
},
|
69
|
+
buttonType: {
|
70
|
+
type: String,
|
71
|
+
default: "button",
|
72
|
+
validator(value) {
|
73
|
+
return value === "submit" || value === "button"
|
74
|
+
}
|
75
|
+
},
|
76
|
+
/**
|
77
|
+
* text used as legend for login-fieldset
|
78
|
+
*
|
79
|
+
* @requiredForAccessibility: true
|
80
|
+
*/
|
81
|
+
textLegend: {
|
82
|
+
type: String,
|
83
|
+
default: "Stay up-to-date"
|
84
|
+
},
|
85
|
+
/**
|
86
|
+
* toggle legend visibility
|
87
|
+
*/
|
88
|
+
showLegend: {
|
89
|
+
type: Boolean,
|
90
|
+
default: true
|
91
|
+
},
|
92
|
+
/**
|
93
|
+
* properties for CmdInputGroup-component
|
94
|
+
*/
|
95
|
+
cmdInputGroup: {
|
96
|
+
type: Object,
|
97
|
+
default: function () {
|
98
|
+
return {
|
99
|
+
labelText: "Choose option",
|
100
|
+
showLabel: false,
|
101
|
+
inputElements: [
|
102
|
+
{
|
103
|
+
labelText: "Subscribe",
|
104
|
+
id: "radio-subscribe",
|
105
|
+
name: "cmd-subscribe-group",
|
106
|
+
value: "subscribe"
|
107
|
+
},
|
108
|
+
{
|
109
|
+
labelText: "Unsubscribe",
|
110
|
+
id: "radio-unsubscribe",
|
111
|
+
name: "cmd-subscribe-group",
|
112
|
+
value: "unsubscribe"
|
113
|
+
}
|
114
|
+
]
|
115
|
+
}
|
116
|
+
}
|
117
|
+
},
|
118
|
+
/**
|
119
|
+
* properties for CmdFormElement-component for email-field
|
120
|
+
*/
|
121
|
+
cmdFormElementEmail: {
|
122
|
+
type: Object,
|
123
|
+
default: function () {
|
124
|
+
return {
|
125
|
+
labelText: "Email-Address:",
|
126
|
+
placeholder: "Enter your email-address",
|
127
|
+
required: true
|
128
|
+
}
|
129
|
+
}
|
130
|
+
},
|
131
|
+
/**
|
132
|
+
* properties for CmdFormElement-component for submit-button
|
133
|
+
*/
|
134
|
+
cmdFormElementSubmit: {
|
135
|
+
type: Object,
|
136
|
+
default: function () {
|
137
|
+
return {
|
138
|
+
text: "Submit",
|
139
|
+
icon: {
|
140
|
+
show: true,
|
141
|
+
iconClass: "icon-message-send",
|
142
|
+
position: "before",
|
143
|
+
tooltip: ""
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
147
|
+
}
|
148
|
+
},
|
149
|
+
computed: {
|
150
|
+
subscription: {
|
151
|
+
get() {
|
152
|
+
return this.modelValue.subscription || "subscribe"
|
153
|
+
},
|
154
|
+
set(value) {
|
155
|
+
this.$emit("update:modelValue", {subscription: value, email: this.email})
|
156
|
+
}
|
157
|
+
},
|
158
|
+
email: {
|
159
|
+
get() {
|
160
|
+
return this.modelValue.email
|
161
|
+
},
|
162
|
+
set(value) {
|
163
|
+
this.$emit("update:modelValue", {subscription: this.subscription, email: value})
|
164
|
+
}
|
165
|
+
}
|
166
|
+
},
|
167
|
+
methods: {
|
168
|
+
sendData(event) {
|
169
|
+
this.$emit("button-click", {subscription: this.subscription, email: this.email, originalEvent: event})
|
170
|
+
},
|
171
|
+
checkValidationStatus(event) {
|
172
|
+
this.buttonDisabled = event !== "success"
|
173
|
+
}
|
174
|
+
}
|
175
|
+
}
|
176
|
+
</script>
|
177
|
+
|
178
|
+
<style lang="scss">
|
179
|
+
/* begin cmd-back-to-top-button ---------------------------------------------------------------------------------------- */
|
180
|
+
.cmd-back-to-top-button {
|
181
|
+
padding: var(--default-padding);
|
182
|
+
display: inline-block;
|
183
|
+
position: fixed;
|
184
|
+
right: 1rem;
|
185
|
+
bottom: 1rem;
|
186
|
+
text-decoration: none;
|
187
|
+
z-index: 1000;
|
188
|
+
border: var(--default-border);
|
189
|
+
background: var(--color-scheme-background-color);
|
190
|
+
border-radius: var(--full-circle);
|
191
|
+
|
192
|
+
&:hover, &:active, &:focus {
|
193
|
+
border-color: var(--primary-color);
|
194
|
+
transition: var(--default-transition);
|
195
|
+
}
|
196
|
+
}
|
197
|
+
|
198
|
+
/* cmd-back-to-top-button ------------------------------------------------------------------------------------------ */
|
199
|
+
</style>
|
@@ -147,12 +147,28 @@ export default {
|
|
147
147
|
componentHandlesClosedStatus: {
|
148
148
|
type: Boolean,
|
149
149
|
default: true
|
150
|
+
},
|
151
|
+
/**
|
152
|
+
* set the interval (in milliseconds) when the open-/closed-status should be checked (and updated)
|
153
|
+
*/
|
154
|
+
checkInterval: {
|
155
|
+
type: Number,
|
156
|
+
default: 5000
|
150
157
|
}
|
151
158
|
},
|
152
|
-
|
153
|
-
|
154
|
-
this.
|
155
|
-
|
159
|
+
mounted() {
|
160
|
+
if(this.componentHandlesClosedStatus && this.checkInterval > 0) {
|
161
|
+
// create new property on component by 'this.property-name' and assign value (id) from setInterval (so it can be cleared in unmount)
|
162
|
+
this.$_CmdOpeningHours_intervalId = setInterval(() => {
|
163
|
+
// use arrow-function to assure that 'this' is the component
|
164
|
+
this.currentTime = new Date()
|
165
|
+
}, this.checkInterval)
|
166
|
+
}
|
167
|
+
},
|
168
|
+
data() {
|
169
|
+
return {
|
170
|
+
currentTime: new Date()
|
171
|
+
}
|
156
172
|
},
|
157
173
|
computed: {
|
158
174
|
textOpenClosed() {
|
@@ -183,8 +199,7 @@ export default {
|
|
183
199
|
return this.closed
|
184
200
|
}
|
185
201
|
|
186
|
-
|
187
|
-
let currentDay = currentDate.getDay()
|
202
|
+
let currentDay = this.currentTime.getDay()
|
188
203
|
|
189
204
|
// fix order and check if currentDay equals 0 === sunday. Data are expected to start with monday
|
190
205
|
if (currentDay === 0){
|
@@ -202,7 +217,7 @@ export default {
|
|
202
217
|
const openingHoursTill = new Date()
|
203
218
|
openingHoursTill.setHours(openingHours.tillTime.hours, openingHours.tillTime.mins)
|
204
219
|
|
205
|
-
if (openingHoursFrom <=
|
220
|
+
if (openingHoursFrom <= this.currentTime && this.currentTime <= openingHoursTill) {
|
206
221
|
return false
|
207
222
|
}
|
208
223
|
}
|
@@ -216,6 +231,15 @@ export default {
|
|
216
231
|
}
|
217
232
|
return timeFormatting(":", " hrs", "", false)(time.hours, time.mins)
|
218
233
|
}
|
234
|
+
},
|
235
|
+
beforeUnmount() {
|
236
|
+
if(this.$_CmdOpeningHours_intervalId) {
|
237
|
+
// remove interval
|
238
|
+
clearInterval(this.$_CmdOpeningHours_intervalId)
|
239
|
+
|
240
|
+
// clear interval-id
|
241
|
+
this.$_CmdOpeningHours_intervalId = null
|
242
|
+
}
|
219
243
|
}
|
220
244
|
}
|
221
245
|
</script>
|
@@ -1,21 +1,51 @@
|
|
1
1
|
<template>
|
2
|
-
<div :class="['cmd-share-buttons',{'stretch': stretchButtons, 'align-right': align === 'right'}]">
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
<div :class="['cmd-share-buttons', {'stretch': stretchButtons, 'align-right': align === 'right'}]">
|
3
|
+
<CmdFormElement
|
4
|
+
v-if="userMustAcceptDataPrivacy"
|
5
|
+
element="input"
|
6
|
+
type="checkbox"
|
7
|
+
:toggle-switch="cmdFormElement.toggleSwitch"
|
8
|
+
:labelText="cmdFormElement.labelText"
|
9
|
+
:required="cmdFormElement.required"
|
10
|
+
v-model="dataPrivacyAccepted"
|
11
|
+
/>
|
12
|
+
<div class="share-button-wrapper">
|
13
|
+
<a v-for="shareButton in validShareButtons"
|
14
|
+
:key="shareButton.path" :class="['button', {disabled: userMustAcceptDataPrivacy && !dataPrivacyAccepted}]"
|
15
|
+
:id="shareButton.id"
|
16
|
+
:href="getUrl(shareButton)"
|
17
|
+
target="_blank"
|
18
|
+
:title="tooltip(shareButton.tooltip)">
|
19
|
+
<span v-if="shareButton.iconClass && shareButton.iconPosition !== 'right'" :class="shareButton.iconClass"></span>
|
20
|
+
<span v-if="shareButton.linkText">{{ shareButton.linkText }}</span>
|
21
|
+
<span v-if="shareButton.iconClass && shareButton.iconPosition === 'right'" :class="shareButton.iconClass"></span>
|
22
|
+
</a>
|
23
|
+
</div>
|
12
24
|
</div>
|
13
25
|
</template>
|
14
26
|
|
15
27
|
<script>
|
28
|
+
// import components
|
29
|
+
import CmdFormElement from "./CmdFormElement"
|
30
|
+
|
16
31
|
export default {
|
17
32
|
name: "CmdShareButtons",
|
33
|
+
components: {
|
34
|
+
CmdFormElement
|
35
|
+
},
|
36
|
+
data() {
|
37
|
+
return {
|
38
|
+
dataPrivacyAccepted: false
|
39
|
+
}
|
40
|
+
},
|
18
41
|
props: {
|
42
|
+
/**
|
43
|
+
* set default v-model (must be named modelValue in Vue3)
|
44
|
+
*/
|
45
|
+
modelValue: {
|
46
|
+
type: [String, Number, Array],
|
47
|
+
default: ""
|
48
|
+
},
|
19
49
|
/**
|
20
50
|
* set horizontal alignment
|
21
51
|
*
|
@@ -54,6 +84,37 @@ export default {
|
|
54
84
|
appendPage: {
|
55
85
|
type: Boolean,
|
56
86
|
default: true
|
87
|
+
},
|
88
|
+
/**
|
89
|
+
* toggle if user has to accept that anonymous data will be send while sharing
|
90
|
+
*/
|
91
|
+
userMustAcceptDataPrivacy: {
|
92
|
+
type: Boolean,
|
93
|
+
default: true
|
94
|
+
},
|
95
|
+
/**
|
96
|
+
* tooltip shown on hovering disabled buttons
|
97
|
+
*
|
98
|
+
* userMustAcceptDataPrivacy-property must be activated
|
99
|
+
*/
|
100
|
+
tooltipAcceptDataPrivacy: {
|
101
|
+
type: String,
|
102
|
+
default: "You must accept data privacy conditions!"
|
103
|
+
},
|
104
|
+
/**
|
105
|
+
* properties for cmdFormElement
|
106
|
+
*
|
107
|
+
* userMustAcceptDataPrivacy-property must be activated
|
108
|
+
*/
|
109
|
+
cmdFormElement: {
|
110
|
+
type: Object,
|
111
|
+
default() {
|
112
|
+
return {
|
113
|
+
toggleSwitch: true,
|
114
|
+
labelText: "I accept that anonymous data will be send to the platform I share this page on!",
|
115
|
+
required: true
|
116
|
+
}
|
117
|
+
}
|
57
118
|
}
|
58
119
|
},
|
59
120
|
computed: {
|
@@ -63,19 +124,28 @@ export default {
|
|
63
124
|
},
|
64
125
|
methods: {
|
65
126
|
getUrl(shareButton) {
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
127
|
+
if(this.userMustAcceptDataPrivacy && this.dataPrivacyAccepted) {
|
128
|
+
// if path is not given completely by json-data
|
129
|
+
if (this.appendPage) {
|
130
|
+
// if page to share is given by property
|
131
|
+
if (this.page) {
|
132
|
+
return shareButton.path + encodeURIComponent(this.page)
|
133
|
+
}
|
134
|
+
|
135
|
+
// if current page should be append to url
|
136
|
+
return shareButton.path + encodeURIComponent(location.href)
|
71
137
|
}
|
72
138
|
|
73
|
-
// if
|
74
|
-
return shareButton.path
|
139
|
+
// if path is given completely by json-data
|
140
|
+
return shareButton.path
|
75
141
|
}
|
76
|
-
|
77
|
-
|
78
|
-
|
142
|
+
return null
|
143
|
+
},
|
144
|
+
tooltip(tooltip) {
|
145
|
+
if(this.userMustAcceptDataPrivacy && this.dataPrivacyAccepted) {
|
146
|
+
return tooltip
|
147
|
+
}
|
148
|
+
return this.tooltipAcceptDataPrivacy
|
79
149
|
}
|
80
150
|
}
|
81
151
|
}
|
@@ -87,10 +157,19 @@ export default {
|
|
87
157
|
|
88
158
|
.cmd-share-buttons {
|
89
159
|
display: flex;
|
160
|
+
flex-direction: column;
|
90
161
|
gap: var(--default-gap);
|
91
162
|
|
92
163
|
&.align-right {
|
93
|
-
|
164
|
+
.share-button-wrapper {
|
165
|
+
justify-content: flex-end;
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
&.stretch {
|
170
|
+
.button {
|
171
|
+
flex: 1;
|
172
|
+
}
|
94
173
|
}
|
95
174
|
|
96
175
|
.button {
|
@@ -101,12 +180,6 @@ export default {
|
|
101
180
|
}
|
102
181
|
}
|
103
182
|
|
104
|
-
&.stretch {
|
105
|
-
.button {
|
106
|
-
flex: 1;
|
107
|
-
}
|
108
|
-
}
|
109
|
-
|
110
183
|
a:last-of-type {
|
111
184
|
margin-right: 0;
|
112
185
|
}
|
@@ -4,6 +4,7 @@
|
|
4
4
|
v-if="showSystemMessage"
|
5
5
|
:class="['cmd-system-message', 'system-message', 'flex-container', 'vertical', { 'full-width': fullWidth }, validationStatus]"
|
6
6
|
:role="validationStatus === 'error' ? 'alert' : 'dialog'"
|
7
|
+
:aria-labelledby="htmlId"
|
7
8
|
>
|
8
9
|
<!-- begin close-icon -->
|
9
10
|
<a
|
@@ -21,6 +22,7 @@
|
|
21
22
|
:iconClass="iconMessage.iconClass"
|
22
23
|
:headlineText="systemMessage"
|
23
24
|
:headlineLevel="messageHeadlineLevel"
|
25
|
+
:id="htmlId"
|
24
26
|
/>
|
25
27
|
<!-- end cmd-headline -->
|
26
28
|
|
@@ -32,11 +34,15 @@
|
|
32
34
|
</template>
|
33
35
|
|
34
36
|
<script>
|
37
|
+
// import mixins
|
38
|
+
import Identifier from "../mixins/Identifier"
|
39
|
+
|
35
40
|
// import components
|
36
41
|
import CmdHeadline from "./CmdHeadline"
|
37
42
|
|
38
43
|
export default {
|
39
44
|
name: "CmdSystemMessage",
|
45
|
+
mixins: [Identifier],
|
40
46
|
components: {
|
41
47
|
CmdHeadline
|
42
48
|
},
|
@@ -3,11 +3,12 @@
|
|
3
3
|
<ul :class="{'stretch-tabs' : stretchTabs}" role="tablist">
|
4
4
|
<li :class="{active : showTab === index}" v-for="(tab, index) in tabs" :key="index" role="tab">
|
5
5
|
<a @click.prevent="setActiveTab(index)" :title="!tab.name ? tab.tooltip : false">
|
6
|
-
<span v-if="tab.iconClass"
|
6
|
+
<span v-if="tab.iconClass" :class="tab.iconClass"></span>
|
7
7
|
<span v-if="tab.name">{{ tab.name }}</span>
|
8
8
|
</a>
|
9
9
|
</li>
|
10
10
|
</ul>
|
11
|
+
<!-- begin slot -->
|
11
12
|
<template v-if="useSlot">
|
12
13
|
<div v-show="showTab === index - 1" v-for="index in tabs.length" :key="index" aria-live="assertive">
|
13
14
|
<!-- begin slot-content -->
|
@@ -15,10 +16,12 @@
|
|
15
16
|
<!-- end slot-content -->
|
16
17
|
</div>
|
17
18
|
</template>
|
19
|
+
<!-- end slot -->
|
18
20
|
<div v-else aria-live="assertive">
|
19
21
|
<!-- begin CmdHeadline -->
|
20
22
|
<CmdHeadline
|
21
|
-
v-
|
23
|
+
v-if="cmdHeadline"
|
24
|
+
v-bind="cmdHeadline"
|
22
25
|
:headlineText="tabs[showTab].headlineText"
|
23
26
|
:headlineLevel="tabs[showTab].headlineLevel"
|
24
27
|
/>
|
@@ -105,21 +108,21 @@ export default {
|
|
105
108
|
> li {
|
106
109
|
z-index: 10;
|
107
110
|
margin-left: 0;
|
108
|
-
border-bottom: 0;
|
109
111
|
border-top-left-radius: var(--border-radius);
|
110
112
|
border-top-right-radius: var(--border-radius);
|
111
113
|
list-style-type: none;
|
112
114
|
background: var(--color-scheme-background-color);
|
113
115
|
border: var(--default-border);
|
116
|
+
border-bottom: 0;
|
114
117
|
|
115
118
|
&.active {
|
116
|
-
border-bottom: 0;
|
117
119
|
border-color: var(--primary-color);
|
118
|
-
top: .1rem;
|
119
120
|
}
|
120
121
|
|
121
122
|
a {
|
122
|
-
display:
|
123
|
+
display: flex;
|
124
|
+
align-items: center;
|
125
|
+
justify-content: center;
|
123
126
|
padding: var(--default-padding);
|
124
127
|
color: var(--color-scheme-text-color);
|
125
128
|
border-top-left-radius: var(--border-radius);
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<!-- begin list of images to slide -->
|
11
11
|
<transition-group name="slide" tag="ul">
|
12
12
|
<li v-for="(image, index) in thumbnails" :key="image.imgId" :class="{'active' : imgIndex === index}">
|
13
|
-
<a href="#" @click.prevent="showFancyBox(index)">
|
13
|
+
<a href="#" @click.prevent="showFancyBox(index)" :title="getMessage('cmdthumbnailscroller.tooltip.open_large_image')">
|
14
14
|
<figure>
|
15
15
|
<figcaption v-if="figcaption.show && figcaption.position === 'above-image' && image.figcaption.length">{{ image.figcaption }}</figcaption>
|
16
16
|
<img :src="image.srcImageSmall" :alt="image.alt"/>
|
@@ -31,6 +31,10 @@
|
|
31
31
|
</template>
|
32
32
|
|
33
33
|
<script>
|
34
|
+
// import mixins
|
35
|
+
import I18n from "../mixins/I18n"
|
36
|
+
import DefaultMessageProperties from "../mixins/CmdThumbnailScroller/DefaultMessageProperties"
|
37
|
+
|
34
38
|
// import components
|
35
39
|
import CmdSlideButton from "./CmdSlideButton.vue"
|
36
40
|
|
@@ -42,6 +46,10 @@ export default {
|
|
42
46
|
components: {
|
43
47
|
CmdSlideButton
|
44
48
|
},
|
49
|
+
mixins: [
|
50
|
+
I18n,
|
51
|
+
DefaultMessageProperties
|
52
|
+
],
|
45
53
|
data() {
|
46
54
|
return {
|
47
55
|
thumbnails: []
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div v-if="tooltipVisibility" :class="['cmd-tooltip', status]" ref="tooltip"
|
2
|
+
<div v-if="tooltipVisibility" :class="['cmd-tooltip', status]" ref="tooltip">
|
3
3
|
<div v-if="cmdHeadline || iconClose.show" class="headline-wrapper">
|
4
4
|
<!-- begin CmdHeadline -->
|
5
5
|
<CmdHeadline
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="cmd-width-limitation-wrapper" :class="{'sticky': sticky}">
|
3
|
-
<
|
3
|
+
<section v-if="innerWrapper" :class="setInnerClass">
|
4
4
|
<a v-if="anchorId" :id="anchorId"></a>
|
5
5
|
<!-- begin slot-content -->
|
6
6
|
<slot></slot>
|
7
7
|
<!-- end slot-content -->
|
8
|
-
</
|
8
|
+
</section>
|
9
9
|
<template v-else>
|
10
10
|
<!-- begin slot-content -->
|
11
11
|
<a v-if="anchorId" :id="anchorId"></a>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
{
|
2
|
+
"modelValue": {
|
3
|
+
"comments": [
|
4
|
+
"set value for v-model (must be named modelValue in vue3 if default v-model should be used)"
|
5
|
+
]
|
6
|
+
},
|
7
|
+
"buttonType": {
|
8
|
+
"comments": [
|
9
|
+
"set value for v-model (must be named modelValue in vue3 if default v-model should be used)"
|
10
|
+
]
|
11
|
+
},
|
12
|
+
"textLegend": {
|
13
|
+
"comments": [
|
14
|
+
"text used as legend for login-fieldset"
|
15
|
+
],
|
16
|
+
"annotations": {
|
17
|
+
"requiredForAccessibility": [
|
18
|
+
"true"
|
19
|
+
]
|
20
|
+
}
|
21
|
+
},
|
22
|
+
"showLegend": {
|
23
|
+
"comments": [
|
24
|
+
"toggle legend visibility"
|
25
|
+
]
|
26
|
+
},
|
27
|
+
"cmdInputGroup": {
|
28
|
+
"comments": [
|
29
|
+
"properties for CmdInputGroup-component"
|
30
|
+
]
|
31
|
+
},
|
32
|
+
"cmdFormElementEmail": {
|
33
|
+
"comments": [
|
34
|
+
"properties for CmdFormElement-component for email-field"
|
35
|
+
]
|
36
|
+
},
|
37
|
+
"cmdFormElementSubmit": {
|
38
|
+
"comments": [
|
39
|
+
"properties for CmdFormElement-component for submit-button"
|
40
|
+
]
|
41
|
+
}
|
42
|
+
}
|