comand-component-library 4.2.77 → 4.2.79
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.js +2647 -2540
- package/package.json +1 -1
- package/src/ComponentLibrary.vue +3 -2
- package/src/assets/data/form-elements.json +4 -2
- package/src/assets/data/mail-tool.json +4 -4
- package/src/componentSettingsDataAndControls.vue +988 -960
- package/src/components/CmdForm.vue +34 -10
- package/src/components/CmdHeadline.vue +13 -6
- package/src/components/CmdSiteHeader.vue +1 -1
- package/src/components/CmdSystemMessage.vue +44 -5
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
:inputValue="item.inputValue"
|
|
28
28
|
:fieldIconClass="item.innerIconClass"
|
|
29
29
|
:selectOptions="item.selectOptions"
|
|
30
|
+
:toggleSwitch="item.toggleSwitch"
|
|
30
31
|
:labelText="item.labelText"
|
|
31
32
|
:placeholder="item.placeholder"
|
|
32
33
|
:required="item.required"
|
|
@@ -35,13 +36,16 @@
|
|
|
35
36
|
:minlength="item.minlength"
|
|
36
37
|
:maxlength="item.maxlength"
|
|
37
38
|
:nativeButton="item.nativeButton"
|
|
38
|
-
|
|
39
|
+
:colored="item.colored"
|
|
40
|
+
@validation-status-change="formElementsWithStatus($event, item.name)"
|
|
39
41
|
/>
|
|
40
42
|
<CmdInputGroup
|
|
41
43
|
v-else-if="item.component === 'CmdInputGroup'"
|
|
42
44
|
v-model="formValues[item.name]"
|
|
43
45
|
:labelText="item.labelText"
|
|
44
46
|
:inputElements="item.inputElements"
|
|
47
|
+
:toggleSwitches="item.toggleSwitches"
|
|
48
|
+
:colored="item.colored"
|
|
45
49
|
/>
|
|
46
50
|
<div
|
|
47
51
|
v-else-if="item.component === 'flexContainer'"
|
|
@@ -58,6 +62,7 @@
|
|
|
58
62
|
:id="item.id || createHtmlId()"
|
|
59
63
|
v-model="formValues[item.name]"
|
|
60
64
|
:inputValue="item.inputValue"
|
|
65
|
+
:toggleSwitch="item.toggleSwitch"
|
|
61
66
|
:fieldIconClass="item.innerIconClass"
|
|
62
67
|
:selectOptions="item.selectOptions"
|
|
63
68
|
:labelText="item.labelText"
|
|
@@ -68,13 +73,15 @@
|
|
|
68
73
|
:minlength="item.minlength"
|
|
69
74
|
:maxlength="item.maxlength"
|
|
70
75
|
:nativeButton="item.nativeButton"
|
|
71
|
-
@validation-status-change="
|
|
76
|
+
@validation-status-change="formElementsWithStatus($event, item.name)"
|
|
72
77
|
/>
|
|
73
78
|
<CmdInputGroup
|
|
74
79
|
v-else-if="item.component === 'CmdInputGroup'"
|
|
75
80
|
v-model="formValues[item.name]"
|
|
76
81
|
:labelText="item.labelText"
|
|
77
82
|
:inputElements="item.inputElements"
|
|
83
|
+
:toggleSwitches="item.toggleSwitches"
|
|
84
|
+
:colored="item.colored"
|
|
78
85
|
/>
|
|
79
86
|
</template>
|
|
80
87
|
</div>
|
|
@@ -161,7 +168,7 @@ export default {
|
|
|
161
168
|
validationStatus: "",
|
|
162
169
|
message: ""
|
|
163
170
|
},
|
|
164
|
-
|
|
171
|
+
formElementsValidationStatus: []
|
|
165
172
|
}
|
|
166
173
|
},
|
|
167
174
|
props: {
|
|
@@ -259,8 +266,12 @@ export default {
|
|
|
259
266
|
},
|
|
260
267
|
mounted() {
|
|
261
268
|
// get the names of all elements that match the phrase and push to data-property
|
|
262
|
-
const requiredElementNames = this.formElements?.filter(element => element.required === true).map(element => element.name)
|
|
263
|
-
|
|
269
|
+
const requiredElementNames = this.formElements?.filter(element => element.required === true).map(element => element.name)
|
|
270
|
+
console.log("requiredElementNames", requiredElementNames)
|
|
271
|
+
/*
|
|
272
|
+
requiredElementNames.forEach((name) => {
|
|
273
|
+
this.formElementsValidationStatus.push({name: name})
|
|
274
|
+
})*/
|
|
264
275
|
},
|
|
265
276
|
computed: {
|
|
266
277
|
legendOptions() {
|
|
@@ -296,16 +307,29 @@ export default {
|
|
|
296
307
|
}
|
|
297
308
|
},
|
|
298
309
|
methods: {
|
|
310
|
+
formElementsWithStatus(event, itemName) {
|
|
311
|
+
if (!this.formElementsValidationStatus.some(entry => entry.name === itemName)) {
|
|
312
|
+
this.formElementsValidationStatus.push({name: itemName, status: event})
|
|
313
|
+
}
|
|
314
|
+
//const formElement = this.formElementsValidationStatus.find(element => element.name === itemName)
|
|
315
|
+
console.log("this.formElementsValidationStatus", this.formElementsValidationStatus)
|
|
316
|
+
// formElement.status = event
|
|
317
|
+
|
|
318
|
+
// this.$emit("validation-status-change", formElement)
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
/*
|
|
299
322
|
formElementHasError(event, itemName) {
|
|
300
|
-
if (event === "error" && !this.
|
|
301
|
-
this.
|
|
302
|
-
} else if (event === "success" && this.
|
|
303
|
-
this.
|
|
323
|
+
if (event === "error" && !this.formElementsValidationStatus.some(entry => entry.name === itemName)) {
|
|
324
|
+
this.formElementsValidationStatus.push(itemName)
|
|
325
|
+
} else if (event === "success" && this.formElementsValidationStatus.includes(itemName)) {
|
|
326
|
+
this.formElementsValidationStatus = this.formElementsValidationStatus.filter((element) => element !== itemName)
|
|
304
327
|
}
|
|
305
328
|
console.log("event in CmdForm", event)
|
|
306
329
|
console.log("itemName in CmdForm", itemName)
|
|
307
|
-
this.$emit("validation-status-change", this.
|
|
330
|
+
this.$emit("validation-status-change", this.formElementsValidationStatus.length ? "error" : "success")
|
|
308
331
|
},
|
|
332
|
+
*/
|
|
309
333
|
createHtmlId,
|
|
310
334
|
showMessage(validationStatus, message) {
|
|
311
335
|
this.systemMessage.show = true
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
<!-- begin CmdHeadline ---------------------------------------------------------------------------------------- -->
|
|
3
3
|
<!-- begin default-view -->
|
|
4
4
|
<div v-if="!editModeContext || settingsContext || mainSidebarContext || headlineText"
|
|
5
|
-
:class="['cmd-headline', {'has-pre-headline-text': preHeadlineText, 'has-icon': cmdIcon?.iconClass}
|
|
5
|
+
:class="['cmd-headline', {'has-pre-headline-text': preHeadlineText, 'has-icon': cmdIcon?.iconClass}]">
|
|
6
6
|
<!-- begin headline with pre-headline-text -->
|
|
7
7
|
<template v-if="preHeadlineText">
|
|
8
|
-
<component v-if="headlineText" :is="headlineTag" :class="highlightLevel">
|
|
8
|
+
<component v-if="headlineText" :is="headlineTag" :class="[highlightLevel, headlineTextAlign]">
|
|
9
9
|
<!-- begin CmdIcon -->
|
|
10
10
|
<CmdIcon v-if="cmdIcon" v-bind="cmdIcon"/>
|
|
11
11
|
<!-- end CmdIcon -->
|
|
12
12
|
|
|
13
|
-
<span class="pre-headline-text-wrapper">
|
|
13
|
+
<span :class="['pre-headline-text-wrapper', 'text-align-' + textAlign]">
|
|
14
14
|
<!-- begin pre-headline-text -->
|
|
15
15
|
<span class="pre-headline-text" v-html="preHeadlineText"></span>
|
|
16
16
|
<!-- end pre-headline-text -->
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<!-- end headline with pre-headline-text -->
|
|
33
33
|
|
|
34
34
|
<!-- begin headline without pre-headline-text -->
|
|
35
|
-
<component v-else :is="headlineTag">
|
|
35
|
+
<component v-else :is="headlineTag" :class="[highlightLevel, headlineTextAlign]">
|
|
36
36
|
<!-- begin CmdIcon -->
|
|
37
37
|
<CmdIcon v-if="cmdIcon" v-bind="cmdIcon"/>
|
|
38
38
|
<!-- end CmdIcon -->
|
|
@@ -178,7 +178,7 @@ export default {
|
|
|
178
178
|
*/
|
|
179
179
|
textAlign: {
|
|
180
180
|
type: String,
|
|
181
|
-
default:
|
|
181
|
+
default: "left",
|
|
182
182
|
validator(value) {
|
|
183
183
|
return value === "left" ||
|
|
184
184
|
value === "center" ||
|
|
@@ -208,7 +208,14 @@ export default {
|
|
|
208
208
|
},
|
|
209
209
|
headlineTextAlign() {
|
|
210
210
|
if (this.textAlign) {
|
|
211
|
-
|
|
211
|
+
switch (this.textAlign) {
|
|
212
|
+
case "right":
|
|
213
|
+
return "justify-content-flex-end"
|
|
214
|
+
case "center":
|
|
215
|
+
return "justify-content-center"
|
|
216
|
+
default:
|
|
217
|
+
return "justify-content-flex-start"
|
|
218
|
+
}
|
|
212
219
|
}
|
|
213
220
|
return ""
|
|
214
221
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<transition :name="transition">
|
|
4
4
|
<div
|
|
5
5
|
v-if="showSystemMessage"
|
|
6
|
-
:class="['cmd-system-message', 'system-message', 'flex-container', '
|
|
6
|
+
:class="['cmd-system-message', 'system-message', 'flex-container', 'flex-direction-column', { 'full-width': fullWidth }, systemMessageTextAlign, validationStatus]"
|
|
7
7
|
:role="validationStatus === 'error' ? 'alert' : 'dialog'"
|
|
8
8
|
:aria-labelledby="htmlId"
|
|
9
9
|
>
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
:cmdIcon="headlineIcon"
|
|
16
16
|
:headlineText="systemMessage"
|
|
17
17
|
:headlineLevel="messageHeadlineLevel"
|
|
18
|
+
:textAlign="textAlign"
|
|
18
19
|
:id="htmlId"
|
|
19
20
|
/>
|
|
20
21
|
<!-- end CmdHeadline -->
|
|
@@ -48,10 +49,32 @@ export default {
|
|
|
48
49
|
mixins: [Identifier],
|
|
49
50
|
data() {
|
|
50
51
|
return {
|
|
51
|
-
showSystemMessage: true
|
|
52
|
+
showSystemMessage: true,
|
|
53
|
+
id: this.ariaReferenceId || this.buildHtmlId("system-message") // mixin requires id to be defined
|
|
52
54
|
}
|
|
53
55
|
},
|
|
54
|
-
props:
|
|
56
|
+
props: {
|
|
57
|
+
/**
|
|
58
|
+
* define the text-align for the system message (will be inherited to CmdHeadline in slot)
|
|
59
|
+
*
|
|
60
|
+
* @allowedValues: "left", "center", "right"
|
|
61
|
+
*/
|
|
62
|
+
textAlign: {
|
|
63
|
+
type: String,
|
|
64
|
+
default: "center",
|
|
65
|
+
validator(value) {
|
|
66
|
+
return value === "left" ||
|
|
67
|
+
value === "center" ||
|
|
68
|
+
value === "right"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* define the aria-reference-id for the system message (will be used as aria-labelledby)
|
|
73
|
+
*/
|
|
74
|
+
ariaReferenceId: {
|
|
75
|
+
type: String,
|
|
76
|
+
required: false
|
|
77
|
+
},
|
|
55
78
|
/**
|
|
56
79
|
* define the transition when system message disappears
|
|
57
80
|
*
|
|
@@ -78,7 +101,7 @@ export default {
|
|
|
78
101
|
}
|
|
79
102
|
},
|
|
80
103
|
/**
|
|
81
|
-
* activate to stretch message-box as wide as parent container (else message-box is as wide as message (+padding))
|
|
104
|
+
* activate to stretch message-box as wide as parent container (else message-box is as wide as message (+ padding))
|
|
82
105
|
*/
|
|
83
106
|
fullWidth: {
|
|
84
107
|
type: Boolean,
|
|
@@ -138,6 +161,19 @@ export default {
|
|
|
138
161
|
}
|
|
139
162
|
}
|
|
140
163
|
return null
|
|
164
|
+
},
|
|
165
|
+
systemMessageTextAlign() {
|
|
166
|
+
if (this.textAlign) {
|
|
167
|
+
switch (this.textAlign) {
|
|
168
|
+
case "right":
|
|
169
|
+
return "align-items-flex-end"
|
|
170
|
+
case "center":
|
|
171
|
+
return "align-items-center"
|
|
172
|
+
default:
|
|
173
|
+
return "align-items-flex-start"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return ""
|
|
141
177
|
}
|
|
142
178
|
},
|
|
143
179
|
methods: {
|
|
@@ -159,9 +195,12 @@ export default {
|
|
|
159
195
|
.cmd-system-message {
|
|
160
196
|
display: inline-flex;
|
|
161
197
|
margin: var(--default-margin) 0;
|
|
162
|
-
align-items: center;
|
|
163
198
|
align-self: flex-start; /* if used in flex-container component should not be stretched */
|
|
164
199
|
|
|
200
|
+
.message-headline {
|
|
201
|
+
margin: 0; /* overwrite default-settings from frontend-framework */
|
|
202
|
+
}
|
|
203
|
+
|
|
165
204
|
> :last-child {
|
|
166
205
|
margin-bottom: 0;
|
|
167
206
|
}
|