comand-component-library 3.1.82 → 3.1.85
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 +1 -1
- package/src/App.vue +16 -6
- package/src/assets/data/address-data.json +2 -1
- package/src/components/CmdAddressData.vue +46 -39
- package/src/components/CmdCompanyLogo.vue +1 -1
- package/src/components/CmdFakeSelect.vue +5 -1
- package/src/components/CmdFormElement.vue +56 -26
- package/src/components/CmdListOfRequirements.vue +9 -2
- package/src/components/CmdMainNavigation.vue +4 -4
- package/src/components/CmdOpeningHours.vue +10 -8
- package/src/components/CmdShareButtons.vue +1 -1
- package/src/components/CmdSlideButton.vue +1 -1
- package/src/components/CmdSwitchLanguage.vue +18 -5
- package/src/components/CmdTable.vue +0 -7
- package/src/components/CmdThumbnailScroller.vue +24 -15
- package/src/components/CmdToggleDarkMode.vue +31 -6
- package/src/components/CmdTooltip.vue +1 -1
- package/src/components/CmdTooltipForInputElements.vue +20 -54
- package/src/documentation/generated/CmdAddressDataPropertyDescriptions.json +6 -6
- package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +17 -4
- package/src/documentation/generated/CmdListOfRequirementsPropertyDescriptions.json +5 -0
- package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +5 -5
- package/src/documentation/generated/CmdShareButtonsPropertyDescriptions.json +1 -1
- package/src/documentation/generated/CmdThumbnailScrollerPropertyDescriptions.json +10 -0
- package/src/documentation/generated/CmdTooltipForInputElementsPropertyDescriptions.json +2 -27
- package/src/mixins/FieldValidation.js +2 -2
- package/src/mixins/GlobalDefaultMessageProperties.js +2 -1
- package/src/utilities.js +4 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div :class="['cmd-thumbnail-scroller', {'gallery-scroller' : !allowOpenFancyBox}]">
|
2
|
+
<div :class="['cmd-thumbnail-scroller', {'gallery-scroller' : !allowOpenFancyBox, 'full-width' : fullWidth}]">
|
3
3
|
<!-- begin CmdSlideButton -->
|
4
4
|
<CmdSlideButton
|
5
5
|
@click.prevent="showPrevItem"
|
@@ -31,9 +31,12 @@
|
|
31
31
|
</template>
|
32
32
|
|
33
33
|
<script>
|
34
|
-
import
|
34
|
+
// import components
|
35
35
|
import CmdSlideButton from "./CmdSlideButton.vue"
|
36
36
|
|
37
|
+
// import functions
|
38
|
+
import {openFancyBox} from './CmdFancyBox.vue'
|
39
|
+
|
37
40
|
export default {
|
38
41
|
name: "CmdThumbnailScroller",
|
39
42
|
components: {
|
@@ -45,6 +48,15 @@ export default {
|
|
45
48
|
}
|
46
49
|
},
|
47
50
|
props: {
|
51
|
+
/**
|
52
|
+
* activate to stretch component to full width (of parent element)
|
53
|
+
*
|
54
|
+
* @affectsStyling: true
|
55
|
+
*/
|
56
|
+
fullWidth: {
|
57
|
+
type: Boolean,
|
58
|
+
default: false
|
59
|
+
},
|
48
60
|
/**
|
49
61
|
* list of thumbnail-scroller-items
|
50
62
|
*/
|
@@ -87,18 +99,18 @@ export default {
|
|
87
99
|
type: Object,
|
88
100
|
default() {
|
89
101
|
return {
|
90
|
-
|
91
|
-
|
102
|
+
next: {
|
103
|
+
next: {
|
92
104
|
type: "next",
|
93
|
-
|
94
|
-
|
105
|
+
iconClass: "icon-single-arrow-right",
|
106
|
+
tooltip: "Next"
|
95
107
|
}
|
96
108
|
},
|
97
|
-
|
98
|
-
|
109
|
+
prev: {
|
110
|
+
prev: {
|
99
111
|
type: "prev",
|
100
|
-
|
101
|
-
|
112
|
+
iconClass: "icon-single-arrow-left",
|
113
|
+
tooltip: "Previous"
|
102
114
|
}
|
103
115
|
}
|
104
116
|
}
|
@@ -112,7 +124,6 @@ export default {
|
|
112
124
|
this.thumbnails.push(thumbnail);
|
113
125
|
}
|
114
126
|
},
|
115
|
-
|
116
127
|
showPrevItem() {
|
117
128
|
const thumbnail = this.thumbnails.pop(); // remove last element of array
|
118
129
|
if (thumbnail) {
|
@@ -123,10 +134,9 @@ export default {
|
|
123
134
|
if (this.allowOpenFancyBox) {
|
124
135
|
openFancyBox({fancyBoxGallery: this.thumbnails, defaultGalleryIndex: index})
|
125
136
|
}
|
126
|
-
this.$emit(
|
137
|
+
this.$emit("click", this.thumbnails[index].imgId)
|
127
138
|
}
|
128
139
|
},
|
129
|
-
|
130
140
|
watch: {
|
131
141
|
thumbnailScrollerItems: {
|
132
142
|
handler() {
|
@@ -153,9 +163,9 @@ export default {
|
|
153
163
|
> ul {
|
154
164
|
overflow: hidden;
|
155
165
|
margin: 0;
|
156
|
-
display: -webkit-flex; /* Safari 6-8 */
|
157
166
|
display: flex;
|
158
167
|
gap: var(--grid-gap);
|
168
|
+
justify-content: space-between;
|
159
169
|
|
160
170
|
> li {
|
161
171
|
align-self: center;
|
@@ -175,7 +185,6 @@ export default {
|
|
175
185
|
max-height: 10rem;
|
176
186
|
}
|
177
187
|
|
178
|
-
|
179
188
|
&.active {
|
180
189
|
a {
|
181
190
|
figcaption {
|
@@ -8,6 +8,7 @@
|
|
8
8
|
v-model="darkMode"
|
9
9
|
:toggle-switch="true"
|
10
10
|
:title="!showLabel ? labelText: ''"
|
11
|
+
@update:modelValue="setColorScheme"
|
11
12
|
/>
|
12
13
|
</div>
|
13
14
|
</template>
|
@@ -63,31 +64,55 @@ export default {
|
|
63
64
|
}
|
64
65
|
},
|
65
66
|
created() {
|
66
|
-
const mql = window.matchMedia(
|
67
|
+
const mql = window.matchMedia("(prefers-color-scheme: dark)")
|
67
68
|
mql.addEventListener("change", this.onColorSchemeChange)
|
68
69
|
this.onColorSchemeChange(mql)
|
70
|
+
|
71
|
+
// load color-scheme from local-storage
|
72
|
+
const savedColorScheme = window.localStorage.getItem("cmd-color-scheme")
|
73
|
+
|
74
|
+
if(savedColorScheme) {
|
75
|
+
this.darkMode = savedColorScheme === "dark-mode"
|
76
|
+
}
|
77
|
+
|
78
|
+
// add eventListener on html-tag (= documentElement) to react on 'toggle-color-scheme'-event
|
79
|
+
document.documentElement.addEventListener("toggle-color-scheme", this.onToggleColorScheme)
|
69
80
|
},
|
70
81
|
beforeUnmount() {
|
71
|
-
window.matchMedia(
|
82
|
+
window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", this.onColorSchemeChange)
|
83
|
+
|
84
|
+
// remove eventListener on html-tag (= documentElement)
|
85
|
+
document.documentElement.removeEventListener("toggle-color-scheme", this.onToggleColorScheme)
|
72
86
|
},
|
73
87
|
methods: {
|
74
88
|
onColorSchemeChange(event) {
|
89
|
+
// assign browser/os-color-scheme to data-property (and toggle class on html-tag)
|
75
90
|
this.darkMode = event.matches
|
76
|
-
document.
|
91
|
+
document.documentElement.classList.add(this.darkMode ? "dark-mode" : "light-mode")
|
92
|
+
},
|
93
|
+
setColorScheme() {
|
94
|
+
// save color-scheme in local-storage to avoid toggling on page-reload
|
95
|
+
window.localStorage.setItem("cmd-color-scheme", this.darkMode ? "dark-mode": "light-mode")
|
96
|
+
},
|
97
|
+
onToggleColorScheme(event) {
|
98
|
+
// get current color-scheme from event-listener (if color-scheme is toggled by (another) switch or browser-/os-settings)
|
99
|
+
this.darkMode = event.detail === "dark-mode"
|
77
100
|
}
|
78
101
|
},
|
79
102
|
watch: {
|
80
103
|
darkMode: {
|
81
104
|
handler() {
|
82
105
|
// toggle classes to overwrite media-query styles for color-schemes
|
83
|
-
const htmlTag = document.
|
106
|
+
const htmlTag = document.documentElement
|
84
107
|
if (this.darkMode) {
|
85
|
-
htmlTag.classList.replace("light-mode", "dark-mode")
|
108
|
+
htmlTag.classList.replace("light-mode", "dark-mode")
|
86
109
|
this.labelText = this.labelTextDarkMode
|
87
110
|
} else {
|
88
|
-
htmlTag.classList.replace("dark-mode", "light-mode")
|
111
|
+
htmlTag.classList.replace("dark-mode", "light-mode")
|
89
112
|
this.labelText = this.labelTextLightMode
|
90
113
|
}
|
114
|
+
|
115
|
+
// emits custom events from html-tag
|
91
116
|
htmlTag.dispatchEvent(new CustomEvent('toggle-color-scheme', {detail: this.darkMode ? 'dark-mode' : 'light-mode'}))
|
92
117
|
},
|
93
118
|
immediate: true
|
@@ -177,7 +177,7 @@ export default {
|
|
177
177
|
line-height: 100%;
|
178
178
|
font-size: 1.1rem;
|
179
179
|
position: fixed;
|
180
|
-
background: var(--
|
180
|
+
background: var(--color-scheme-background-color);
|
181
181
|
z-index: 100;
|
182
182
|
border: var(--default-border);
|
183
183
|
border-color: hsl(220, 2%, 25%);
|
@@ -18,13 +18,14 @@
|
|
18
18
|
|
19
19
|
<!-- begin CmdListOfRequirements -->
|
20
20
|
<CmdListOfRequirements
|
21
|
-
v-if="showRequirements"
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
21
|
+
v-if="cmdListOfRequirements.showRequirements"
|
22
|
+
:showHeadline="cmdListOfRequirements.showHeadline"
|
23
|
+
:inputRequirements="cmdListOfRequirements.inputRequirements"
|
24
|
+
:helplink="cmdListOfRequirements.helplink"
|
25
|
+
:inputModelValue="cmdListOfRequirements.inputModelValue"
|
26
|
+
:inputAttributes="cmdListOfRequirements.inputAttributes"
|
27
|
+
:validationTooltip="cmdListOfRequirements.validationTooltip"
|
28
|
+
:labelText="cmdListOfRequirements.labelText"
|
28
29
|
/>
|
29
30
|
<!-- end CmdListOfRequirements -->
|
30
31
|
</CmdTooltip>
|
@@ -45,13 +46,6 @@ export default {
|
|
45
46
|
CmdTooltip
|
46
47
|
},
|
47
48
|
props: {
|
48
|
-
/**
|
49
|
-
* text for label (used in headline)
|
50
|
-
*/
|
51
|
-
labelText: {
|
52
|
-
type: String,
|
53
|
-
required: false
|
54
|
-
},
|
55
49
|
/**
|
56
50
|
* related-id for CmdTooltip-component
|
57
51
|
*/
|
@@ -74,50 +68,22 @@ export default {
|
|
74
68
|
default: ""
|
75
69
|
},
|
76
70
|
/**
|
77
|
-
*
|
78
|
-
*/
|
79
|
-
showRequirements: {
|
80
|
-
type: Boolean,
|
81
|
-
default: false
|
82
|
-
},
|
83
|
-
/**
|
84
|
-
* validation-tooltip for CmdListOfRequirements-component
|
85
|
-
*/
|
86
|
-
validationTooltip: {
|
87
|
-
type: String,
|
88
|
-
default: ""
|
89
|
-
},
|
90
|
-
/**
|
91
|
-
* list of input-requirements for CmdListOfRequirements-component
|
92
|
-
*/
|
93
|
-
inputRequirements: {
|
94
|
-
type: Array,
|
95
|
-
default() {
|
96
|
-
return []
|
97
|
-
}
|
98
|
-
},
|
99
|
-
/**
|
100
|
-
* input-attributes for CmdListOfRequirements-component
|
71
|
+
* properties for CmdListOfRequirements-component
|
101
72
|
*/
|
102
|
-
|
73
|
+
cmdListOfRequirements: {
|
103
74
|
type: Object,
|
104
75
|
default() {
|
105
|
-
return {
|
76
|
+
return {
|
77
|
+
showRequirements: true,
|
78
|
+
validationTooltip: "",
|
79
|
+
inputRequirements: [],
|
80
|
+
inputAttributes: {},
|
81
|
+
showHeadline: true,
|
82
|
+
inputModelValue: "",
|
83
|
+
helplink: {},
|
84
|
+
labelText: ""
|
85
|
+
}
|
106
86
|
}
|
107
|
-
},
|
108
|
-
/**
|
109
|
-
* input-model-value for CmdListOfRequirements-component
|
110
|
-
*/
|
111
|
-
inputModelValue: {
|
112
|
-
type: [String, Boolean, Array, Number],
|
113
|
-
default: ""
|
114
|
-
},
|
115
|
-
/**
|
116
|
-
* helplink for CmdListOfRequirements-component
|
117
|
-
*/
|
118
|
-
helplink: {
|
119
|
-
type: String,
|
120
|
-
default: ""
|
121
87
|
}
|
122
88
|
},
|
123
89
|
methods: {
|
@@ -6,12 +6,7 @@
|
|
6
6
|
},
|
7
7
|
"showLabelTexts": {
|
8
8
|
"comments": [
|
9
|
-
"show a label-text"
|
10
|
-
]
|
11
|
-
},
|
12
|
-
"cmdHeadline": {
|
13
|
-
"comments": [
|
14
|
-
"properties for CmdHeadline-component"
|
9
|
+
"show a label-text for each entry"
|
15
10
|
]
|
16
11
|
},
|
17
12
|
"showLabels": {
|
@@ -28,5 +23,10 @@
|
|
28
23
|
"comments": [
|
29
24
|
"link physical address (street, no, zip and city) with Google Maps"
|
30
25
|
]
|
26
|
+
},
|
27
|
+
"cmdHeadline": {
|
28
|
+
"comments": [
|
29
|
+
"properties for CmdHeadline-component"
|
30
|
+
]
|
31
31
|
}
|
32
32
|
}
|
@@ -157,6 +157,14 @@
|
|
157
157
|
"type-property must be set to textarea"
|
158
158
|
]
|
159
159
|
},
|
160
|
+
"textCharacters": {
|
161
|
+
"comments": [
|
162
|
+
"text shown in front of character-count below textarea",
|
163
|
+
"",
|
164
|
+
"type-property must be set to textarea",
|
165
|
+
"showCharactersTextarea-property must be activated"
|
166
|
+
]
|
167
|
+
},
|
160
168
|
"showSearchButton": {
|
161
169
|
"comments": [
|
162
170
|
"toggle visibility of search-button (next to search-field)"
|
@@ -185,7 +193,7 @@
|
|
185
193
|
"icon for error-validated items in list-of-requirements",
|
186
194
|
"",
|
187
195
|
"element-property must me set to 'input'",
|
188
|
-
"showRequirements-
|
196
|
+
"showRequirements-subproperty (of CmdListOfRequirements) must be set to 'true'",
|
189
197
|
""
|
190
198
|
]
|
191
199
|
},
|
@@ -194,7 +202,7 @@
|
|
194
202
|
"icon for warning-validated items in list-of-requirements",
|
195
203
|
"",
|
196
204
|
"element-property must me set to 'input'",
|
197
|
-
"showRequirements-
|
205
|
+
"showRequirements-subproperty (of CmdListOfRequirements) must be set to 'true'",
|
198
206
|
""
|
199
207
|
]
|
200
208
|
},
|
@@ -203,7 +211,7 @@
|
|
203
211
|
"icon for success-validated items in list-of-requirements",
|
204
212
|
"",
|
205
213
|
"element-property must me set to 'input'",
|
206
|
-
"showRequirements-
|
214
|
+
"showRequirements-subproperty (of CmdListOfRequirements) must be set to 'true'",
|
207
215
|
""
|
208
216
|
]
|
209
217
|
},
|
@@ -212,7 +220,7 @@
|
|
212
220
|
"icon for info-validated items in list-of-requirements",
|
213
221
|
"",
|
214
222
|
"element-property must me set to 'input'",
|
215
|
-
"showRequirements-
|
223
|
+
"showRequirements-subproperty (of CmdListOfRequirements) must be set to 'true'",
|
216
224
|
""
|
217
225
|
]
|
218
226
|
},
|
@@ -254,5 +262,10 @@
|
|
254
262
|
"type-property must be set to 'password'",
|
255
263
|
""
|
256
264
|
]
|
265
|
+
},
|
266
|
+
"cmdListOfRequirements": {
|
267
|
+
"comments": [
|
268
|
+
"properties for CmdListOfRequirements-component"
|
269
|
+
]
|
257
270
|
}
|
258
271
|
}
|
@@ -1,9 +1,4 @@
|
|
1
1
|
{
|
2
|
-
"cmdHeadline": {
|
3
|
-
"comments": [
|
4
|
-
"properties for CmdHeadline-component"
|
5
|
-
]
|
6
|
-
},
|
7
2
|
"link": {
|
8
3
|
"comments": [
|
9
4
|
"set a link to a detail page"
|
@@ -38,5 +33,10 @@
|
|
38
33
|
"comments": [
|
39
34
|
"additional/miscellaneous text (shown below holiday-closed-text/opening hours)"
|
40
35
|
]
|
36
|
+
},
|
37
|
+
"cmdHeadline": {
|
38
|
+
"comments": [
|
39
|
+
"properties for CmdHeadline-component"
|
40
|
+
]
|
41
41
|
}
|
42
42
|
}
|
@@ -1,4 +1,14 @@
|
|
1
1
|
{
|
2
|
+
"fullWidth": {
|
3
|
+
"comments": [
|
4
|
+
"activate to stretch component to full width (of parent element)"
|
5
|
+
],
|
6
|
+
"annotations": {
|
7
|
+
"affectsStyling": [
|
8
|
+
"true"
|
9
|
+
]
|
10
|
+
}
|
11
|
+
},
|
2
12
|
"thumbnailScrollerItems": {
|
3
13
|
"comments": [
|
4
14
|
"list of thumbnail-scroller-items"
|
@@ -1,9 +1,4 @@
|
|
1
1
|
{
|
2
|
-
"labelText": {
|
3
|
-
"comments": [
|
4
|
-
"text for label (used in headline)"
|
5
|
-
]
|
6
|
-
},
|
7
2
|
"relatedId": {
|
8
3
|
"comments": [
|
9
4
|
"related-id for CmdTooltip-component"
|
@@ -19,29 +14,9 @@
|
|
19
14
|
"validation-message for CmdSystemMessage-component"
|
20
15
|
]
|
21
16
|
},
|
22
|
-
"
|
23
|
-
"comments": [
|
24
|
-
"toggle visibility for CmdListOfRequirements-component"
|
25
|
-
]
|
26
|
-
},
|
27
|
-
"validationTooltip": {
|
28
|
-
"comments": [
|
29
|
-
"validation-tooltip for CmdListOfRequirements-component"
|
30
|
-
]
|
31
|
-
},
|
32
|
-
"inputRequirements": {
|
33
|
-
"comments": [
|
34
|
-
"list of input-requirements for CmdListOfRequirements-component"
|
35
|
-
]
|
36
|
-
},
|
37
|
-
"inputAttributes": {
|
38
|
-
"comments": [
|
39
|
-
"helplink for CmdListOfRequirements-component"
|
40
|
-
]
|
41
|
-
},
|
42
|
-
"methods": {
|
17
|
+
"cmdListOfRequirements": {
|
43
18
|
"comments": [
|
44
|
-
"
|
19
|
+
"properties for CmdListOfRequirements-component"
|
45
20
|
]
|
46
21
|
}
|
47
22
|
}
|
@@ -200,7 +200,7 @@ export default {
|
|
200
200
|
// check if field has a minimum length
|
201
201
|
if(this.$attrs.minlength) {
|
202
202
|
standardRequirements.push({
|
203
|
-
message: "
|
203
|
+
message: this.getMessage("cmdfieldvalidation.input_has_minimum_length") + "(" + this.modelValue.length + "/" + this.$attrs.minlength + ")",
|
204
204
|
valid(value, attributes) {
|
205
205
|
return value.length >= attributes.minlength
|
206
206
|
}
|
@@ -230,7 +230,7 @@ export default {
|
|
230
230
|
}
|
231
231
|
}
|
232
232
|
|
233
|
-
function validateSpecialCharacters(message = "
|
233
|
+
function validateSpecialCharacters(message = "special character - replace with getMessage") {
|
234
234
|
return {
|
235
235
|
message,
|
236
236
|
valid(value) {
|
@@ -7,7 +7,8 @@ export default {
|
|
7
7
|
"cmdfieldvalidation.information_filled_correctly": "This information is filled correctly!",
|
8
8
|
"cmdfieldvalidation.caps_lock_is_activated": "Attention: Caps lock is activated!",
|
9
9
|
"cmdfieldvalidation.required_field_is_filled": "Required field is filled!",
|
10
|
-
"cmdfieldvalidation.field_contains_special_character": "Field contains
|
10
|
+
"cmdfieldvalidation.field_contains_special_character": "Field contains special character",
|
11
|
+
"cmdfieldvalidation.input_has_minimum_length": "Input has minimum length"
|
11
12
|
}
|
12
13
|
}
|
13
14
|
}
|
package/src/utilities.js
CHANGED
@@ -2,6 +2,10 @@ function getRoute (entry) {
|
|
2
2
|
if(entry.path) {
|
3
3
|
return entry.path
|
4
4
|
}
|
5
|
+
|
6
|
+
if(entry.route == null || typeof entry.route !== "object" || (!entry.route.path && !entry.route.name)) {
|
7
|
+
console.error("Error in router configuration. Expected object with 'path' or 'name', got", entry.route)
|
8
|
+
}
|
5
9
|
return entry.route
|
6
10
|
}
|
7
11
|
|