comand-component-library 3.1.74 → 3.1.75
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 +3 -3
- package/src/App.vue +65 -71
- package/src/assets/data/input-group-radiobuttons.json +23 -0
- package/src/assets/data/input-group-replaced-radiobuttons.json +23 -0
- package/src/assets/data/input-group-toggle-switch-radiobuttons.json +23 -0
- package/src/assets/styles/global-styles.scss +10 -19
- package/src/components/CmdAddressData.vue +7 -7
- package/src/components/CmdBankAccountData.vue +7 -7
- package/src/components/CmdBox.vue +24 -30
- package/src/components/CmdBoxSiteSearch.vue +9 -9
- package/src/components/CmdCookieDisclaimer.vue +17 -17
- package/src/components/CmdFakeSelect.vue +32 -29
- package/src/components/CmdFormElement.vue +34 -35
- package/src/components/{CmdCustomHeadline.vue → CmdHeadline.vue} +1 -1
- package/src/components/CmdInputGroup.vue +51 -53
- package/src/components/CmdListOfLinks.vue +8 -8
- package/src/components/CmdListOfRequirements.vue +37 -15
- package/src/components/CmdLoginForm.vue +17 -17
- package/src/components/CmdOpeningHours.vue +5 -5
- package/src/components/CmdSiteFooter.vue +76 -0
- package/src/components/CmdSiteHeader.vue +2 -1
- package/src/components/CmdSystemMessage.vue +28 -11
- package/src/components/CmdTabs.vue +8 -8
- package/src/components/CmdToggleDarkMode.vue +42 -2
- package/src/components/CmdTooltip.vue +13 -13
- package/src/components/CmdTooltipForInputElements.vue +122 -0
- package/src/components/CmdUploadForm.vue +32 -32
- package/src/components/CmdWidthLimitationWrapper.vue +0 -17
- package/src/documentation/generated/CmdAddressDataPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdBankAccountDataPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdBoxPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdBoxSiteSearchPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdCookieDisclaimerPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +6 -1
- package/src/documentation/generated/CmdHeadlinePropertyDescriptions.json +22 -0
- package/src/documentation/generated/CmdInputGroupPropertyDescriptions.json +0 -5
- package/src/documentation/generated/CmdListOfLinksPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdListOfRequirementsPropertyDescriptions.json +14 -4
- package/src/documentation/generated/CmdLoginFormPropertyDescriptions.json +4 -4
- package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdSiteFooterPropertyDescriptions.json +12 -0
- package/src/documentation/generated/CmdSystemMessagePropertyDescriptions.json +5 -0
- package/src/documentation/generated/CmdTabsPropertyDescriptions.json +2 -2
- package/src/documentation/generated/CmdTooltipForInputElementsPropertyDescriptions.json +42 -0
- package/src/documentation/generated/CmdTooltipPropertyDescriptions.json +1 -1
- package/src/documentation/generated/CmdUploadFormPropertyDescriptions.json +14 -14
- package/src/index.js +2 -1
- package/src/mixins/FieldValidation.js +15 -5
- package/src/mixins/Tooltip.js +1 -1
@@ -3,17 +3,12 @@
|
|
3
3
|
<div v-if="boxType === 'content'" :class="['cmd-box box content', {open : open, collapsible: collapsible, 'stretch-vertically': stretchVertically}]">
|
4
4
|
<template v-if="useSlots?.includes('header')">
|
5
5
|
<!-- begin collapsible header with slot -->
|
6
|
-
<
|
6
|
+
<a v-if="collapsible" href="#" class="box-header" @click.prevent="toggleContentVisibility" :title="open ? iconOpen.tooltip : iconClosed.tooltip">
|
7
7
|
<!-- begin slot 'header' -->
|
8
8
|
<slot name="header"></slot>
|
9
9
|
<!-- end slot 'header' -->
|
10
|
-
<
|
11
|
-
|
12
|
-
:title="open ? iconOpen.tooltip : iconClosed.tooltip"
|
13
|
-
@click.prevent="toggleContentVisibility">
|
14
|
-
<span :class="[open ? iconOpen.iconClass : iconClosed.iconClass]"></span>
|
15
|
-
</a>
|
16
|
-
</div>
|
10
|
+
<span class="toggle-icon" :class="[open ? iconOpen.iconClass : iconClosed.iconClass]"></span>
|
11
|
+
</a>
|
17
12
|
<!-- end collapsible header with slot -->
|
18
13
|
|
19
14
|
<!-- begin default header with slot -->
|
@@ -27,20 +22,19 @@
|
|
27
22
|
<template v-else>
|
28
23
|
<!-- begin header for collapsible -->
|
29
24
|
<a v-if="collapsible" class="box-header" href="#" :title="open ? iconOpen.tooltip : iconClosed.tooltip" @click.prevent="toggleContentVisibility">
|
30
|
-
<!-- begin
|
31
|
-
<
|
32
|
-
|
33
|
-
<!-- end CmdCustomHeadline -->
|
25
|
+
<!-- begin CmdHeadline -->
|
26
|
+
<CmdHeadline v-if="CmdHeadline?.headlineText" v-bind="CmdHeadline"/>
|
27
|
+
<!-- end CmdHeadline -->
|
34
28
|
<span class="toggle-icon" :class="[open ? iconOpen.iconClass : iconClosed.iconClass]"></span>
|
35
29
|
</a>
|
36
30
|
<!-- end header for collapsible -->
|
37
31
|
|
38
|
-
<!-- begin
|
39
|
-
<
|
32
|
+
<!-- begin CmdHeadline -->
|
33
|
+
<CmdHeadline v-else-if="!collapsible && CmdHeadline?.headlineText"
|
40
34
|
class="box-header"
|
41
|
-
v-bind="
|
35
|
+
v-bind="CmdHeadline"
|
42
36
|
/>
|
43
|
-
<!-- end
|
37
|
+
<!-- end CmdHeadline -->
|
44
38
|
</template>
|
45
39
|
|
46
40
|
<!-- begin box-body -->
|
@@ -73,11 +67,11 @@
|
|
73
67
|
<div v-if="product.discount" class="ribbon-discount">
|
74
68
|
<span>{{ product.discount }}</span>
|
75
69
|
</div>
|
76
|
-
<!-- begin
|
77
|
-
<
|
78
|
-
v-bind="
|
79
|
-
:headlineText="
|
80
|
-
<!-- end
|
70
|
+
<!-- begin CmdHeadline -->
|
71
|
+
<CmdHeadline v-if="CmdHeadline?.headlineText || product.name"
|
72
|
+
v-bind="CmdHeadline || {}"
|
73
|
+
:headlineText="CmdHeadline?.headlineText ? CmdHeadline?.headlineText : product.name"/>
|
74
|
+
<!-- end CmdHeadline -->
|
81
75
|
</div>
|
82
76
|
<div class="box-body">
|
83
77
|
<p v-if="product.articleNumber">{{ getMessage("cmdbox.productbox.article_no") }} {{ product.articleNumber }}</p>
|
@@ -94,11 +88,11 @@
|
|
94
88
|
<div class="box-header">
|
95
89
|
<img v-if="user.image" :src="user.image.src" :alt="user.image.alt"/>
|
96
90
|
<div v-else :class="defaultProfileIconClass" :title="user.name"></div>
|
97
|
-
<!-- begin
|
98
|
-
<
|
99
|
-
v-bind="
|
100
|
-
:headlineText="
|
101
|
-
<!-- end
|
91
|
+
<!-- begin CmdHeadline -->
|
92
|
+
<CmdHeadline v-if="CmdHeadline?.headlineText || user.name"
|
93
|
+
v-bind="CmdHeadline || {}"
|
94
|
+
:headlineText="CmdHeadline?.headlineText ? CmdHeadline?.headlineText : user.name"/>
|
95
|
+
<!-- end CmdHeadline -->
|
102
96
|
</div>
|
103
97
|
<div class="box-body">
|
104
98
|
<p v-if="user.profession">{{ user.profession }}</p>
|
@@ -119,13 +113,13 @@ import DefaultMessageProperties from "../mixins/CmdBox/DefaultMessageProperties"
|
|
119
113
|
import GlobalCurrency from "../mixins/GlobalCurrency"
|
120
114
|
|
121
115
|
// import components
|
122
|
-
import
|
116
|
+
import CmdHeadline from "./CmdHeadline"
|
123
117
|
import CmdListOfLinks from "./CmdListOfLinks"
|
124
118
|
|
125
119
|
export default {
|
126
120
|
name: "CmdBox",
|
127
121
|
components: {
|
128
|
-
|
122
|
+
CmdHeadline,
|
129
123
|
CmdListOfLinks,
|
130
124
|
},
|
131
125
|
mixins: [
|
@@ -250,9 +244,9 @@ export default {
|
|
250
244
|
default: true
|
251
245
|
},
|
252
246
|
/**
|
253
|
-
* properties for
|
247
|
+
* properties for CmdHeadline-component
|
254
248
|
*/
|
255
|
-
|
249
|
+
CmdHeadline: {
|
256
250
|
type: Object,
|
257
251
|
required: false
|
258
252
|
}
|
@@ -4,12 +4,12 @@
|
|
4
4
|
<legend v-if="showLegend">{{ textLegend }}</legend>
|
5
5
|
<!-- begin legend -->
|
6
6
|
|
7
|
-
<!-- begin
|
8
|
-
<
|
9
|
-
v-if="
|
10
|
-
v-bind="
|
7
|
+
<!-- begin CmdHeadline -->
|
8
|
+
<CmdHeadline
|
9
|
+
v-if="CmdHeadline"
|
10
|
+
v-bind="CmdHeadline"
|
11
11
|
/>
|
12
|
-
<!-- end
|
12
|
+
<!-- end CmdHeadline -->
|
13
13
|
|
14
14
|
<!-- begin form-elements -->
|
15
15
|
<div class="flex-container">
|
@@ -95,7 +95,7 @@ import I18n from "../mixins/I18n"
|
|
95
95
|
import DefaultMessageProperties from "../mixins/CmdSiteSearch/DefaultMessageProperties"
|
96
96
|
|
97
97
|
// import files for components
|
98
|
-
import
|
98
|
+
import CmdHeadline from "./CmdHeadline"
|
99
99
|
import CmdFakeSelect from "./CmdFakeSelect"
|
100
100
|
import CmdFormElement from "./CmdFormElement"
|
101
101
|
import CmdFormFilters from "./CmdFormFilters"
|
@@ -111,7 +111,7 @@ export default {
|
|
111
111
|
name: "CmdBoxSiteSearch",
|
112
112
|
mixins: [I18n, DefaultMessageProperties],
|
113
113
|
components: {
|
114
|
-
|
114
|
+
CmdHeadline,
|
115
115
|
CmdFakeSelect,
|
116
116
|
CmdFormElement,
|
117
117
|
CmdFormFilters
|
@@ -183,9 +183,9 @@ export default {
|
|
183
183
|
required: false
|
184
184
|
},
|
185
185
|
/**
|
186
|
-
* properties for
|
186
|
+
* properties for CmdHeadline-component
|
187
187
|
*/
|
188
|
-
|
188
|
+
CmdHeadline: {
|
189
189
|
type: Object,
|
190
190
|
required: false
|
191
191
|
},
|
@@ -1,22 +1,22 @@
|
|
1
1
|
<template>
|
2
2
|
<transition name="fade">
|
3
3
|
<div class="cmd-cookie-disclaimer flex-container vertical">
|
4
|
-
<!-- begin
|
5
|
-
<
|
6
|
-
v-if="
|
7
|
-
v-bind="
|
8
|
-
:headlineText="
|
9
|
-
:headlineLevel="
|
4
|
+
<!-- begin CmdHeadline -->
|
5
|
+
<CmdHeadline
|
6
|
+
v-if="CmdHeadlineCookieDisclaimer?.show && CmdHeadlineCookieDisclaimer?.headlineText && CmdHeadlineCookieDisclaimer?.headlineLevel"
|
7
|
+
v-bind="CmdHeadlineCookieDisclaimer"
|
8
|
+
:headlineText="CmdHeadlineCookieDisclaimer.headlineText"
|
9
|
+
:headlineLevel="CmdHeadlineCookieDisclaimer.headlineLevel"
|
10
10
|
/>
|
11
|
-
<!-- end
|
11
|
+
<!-- end CmdHeadline -->
|
12
12
|
|
13
13
|
<!-- begin slot for cookie-options -->
|
14
14
|
<slot name="cookie-options">
|
15
15
|
<!-- begin required cookies -->
|
16
|
-
<div v-if="cookieOptions
|
17
|
-
<
|
16
|
+
<div v-if="cookieOptions?.required" class="flex-container vertical">
|
17
|
+
<CmdHeadline v-if="cmdBoxRequiredCookies?.showHeadline" :headline-text="cmdBoxRequiredCookies?.headlineText" :headline-level="cmdBoxRequiredCookies?.headlineLevel "/>
|
18
18
|
<!-- begin CmdBox -->
|
19
|
-
<CmdBox v-for="(cookie, index) in cookieOptions.required.cookies"
|
19
|
+
<CmdBox v-for="(cookie, index) in cookieOptions.required.cookies || []"
|
20
20
|
:useSlots="['header', 'body']"
|
21
21
|
v-bind="cmdBoxRequiredCookies"
|
22
22
|
:key="index"
|
@@ -56,10 +56,10 @@
|
|
56
56
|
<hr/>
|
57
57
|
|
58
58
|
<!-- begin optional cookies -->
|
59
|
-
<div v-if="cookieOptions
|
60
|
-
<
|
59
|
+
<div v-if="cookieOptions?.optional" class="flex-container vertical">
|
60
|
+
<CmdHeadline v-if="cmdBoxOptionalCookies?.showHeadline" :headline-text="cmdBoxOptionalCookies?.headlineText" :headline-level="cmdBoxOptionalCookies?.headlineLevel "/>
|
61
61
|
<!-- begin CmdBox -->
|
62
|
-
<CmdBox v-for="(cookie, index) in cookieOptions.optional.cookies"
|
62
|
+
<CmdBox v-for="(cookie, index) in cookieOptions.optional.cookies || []"
|
63
63
|
:useSlots="['header', 'body']"
|
64
64
|
v-bind="cmdBoxOptionalCookies"
|
65
65
|
:key="index"
|
@@ -123,7 +123,7 @@ import DefaultMessageProperties from "../mixins/CmdCookieDisclaimer/DefaultMessa
|
|
123
123
|
|
124
124
|
// import components
|
125
125
|
import CmdBox from "./CmdBox"
|
126
|
-
import
|
126
|
+
import CmdHeadline from "./CmdHeadline"
|
127
127
|
import CmdFormElement from "./CmdFormElement"
|
128
128
|
|
129
129
|
export default {
|
@@ -131,7 +131,7 @@ export default {
|
|
131
131
|
mixins: [I18n, DefaultMessageProperties],
|
132
132
|
components: {
|
133
133
|
CmdBox,
|
134
|
-
|
134
|
+
CmdHeadline,
|
135
135
|
CmdFormElement
|
136
136
|
},
|
137
137
|
data() {
|
@@ -149,9 +149,9 @@ export default {
|
|
149
149
|
required: false
|
150
150
|
},
|
151
151
|
/**
|
152
|
-
* properties for
|
152
|
+
* properties for CmdHeadline-component at top of cookie disclaimer
|
153
153
|
*/
|
154
|
-
|
154
|
+
CmdHeadlineCookieDisclaimer: {
|
155
155
|
type: Object,
|
156
156
|
default() {
|
157
157
|
return {
|
@@ -9,6 +9,7 @@
|
|
9
9
|
disabled: $attrs.disabled
|
10
10
|
}
|
11
11
|
]"
|
12
|
+
:title="$attrs.title"
|
12
13
|
:aria-labelledby="labelId"
|
13
14
|
:aria-required="$attrs.required !== undefined"
|
14
15
|
ref="fakeselect"
|
@@ -18,28 +19,21 @@
|
|
18
19
|
<span class="label-text" :id="labelId">
|
19
20
|
<span>{{ labelText }}<sup v-if="$attrs.required !== undefined">*</sup></span>
|
20
21
|
|
21
|
-
<!-- begin
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
:inputModelValue="modelValue"
|
37
|
-
:inputAttributes="$attrs"
|
38
|
-
:helplink="helplink"
|
39
|
-
/>
|
40
|
-
<!-- end CmdListOfRequirements -->
|
41
|
-
</CmdTooltip>
|
42
|
-
<!-- end CmdTooltip -->
|
22
|
+
<!-- begin CmdTooltipForInputElements -->
|
23
|
+
<CmdTooltipForInputElements
|
24
|
+
v-if="useCustomTooltip && (validationStatus === '' || validationStatus === 'error')"
|
25
|
+
ref="tooltip"
|
26
|
+
:showRequirements="showRequirements"
|
27
|
+
:inputRequirements="inputRequirements"
|
28
|
+
:validationStatus="validationStatus"
|
29
|
+
:validationMessage="getValidationMessage"
|
30
|
+
:validationTooltip="validationTooltip"
|
31
|
+
:inputAttributes="$attrs"
|
32
|
+
:inputModelValue="modelValue"
|
33
|
+
:helplink="helplink"
|
34
|
+
:relatedId="tooltipId"
|
35
|
+
/>
|
36
|
+
<!-- end CmdTooltipForInputElements -->
|
43
37
|
|
44
38
|
<a v-if="$attrs.required || inputRequirements.length"
|
45
39
|
href="#"
|
@@ -139,9 +133,7 @@ import FieldValidation from "../mixins/FieldValidation.js"
|
|
139
133
|
import Tooltip from "../mixins/Tooltip.js"
|
140
134
|
|
141
135
|
// import components
|
142
|
-
import
|
143
|
-
import CmdSystemMessage from "./CmdSystemMessage"
|
144
|
-
import CmdTooltip from "./CmdTooltip"
|
136
|
+
import CmdTooltipForInputElements from "./CmdTooltipForInputElements"
|
145
137
|
|
146
138
|
export default {
|
147
139
|
name: 'CmdFakeSelect',
|
@@ -153,9 +145,7 @@ export default {
|
|
153
145
|
Tooltip
|
154
146
|
],
|
155
147
|
components: {
|
156
|
-
|
157
|
-
CmdSystemMessage,
|
158
|
-
CmdTooltip
|
148
|
+
CmdTooltipForInputElements
|
159
149
|
},
|
160
150
|
data() {
|
161
151
|
return {
|
@@ -258,6 +248,19 @@ export default {
|
|
258
248
|
}
|
259
249
|
},
|
260
250
|
computed: {
|
251
|
+
validationTooltip() {
|
252
|
+
if (!this.useCustomTooltip) {
|
253
|
+
return this.getValidationMessage
|
254
|
+
}
|
255
|
+
|
256
|
+
// set default-tooltip if customTooltip is not set
|
257
|
+
if (this.validationStatus === 'error') {
|
258
|
+
return this.getMessage("cmdformelement.validationTooltip.an_error_occurred")
|
259
|
+
} else if (this.validationStatus === 'success') {
|
260
|
+
return this.getMessage("cmdformelement.validationTooltip.information_is_filled_correctly")
|
261
|
+
}
|
262
|
+
return this.getMessage("cmdformelement.validationTooltip.open_field_requirements")
|
263
|
+
},
|
261
264
|
// get the displayed option name
|
262
265
|
optionName() {
|
263
266
|
// fake a native selectbox
|
@@ -558,7 +561,7 @@ export default {
|
|
558
561
|
margin: 0;
|
559
562
|
border-bottom-right-radius: var(--border-radius);
|
560
563
|
border-bottom-left-radius: var(--border-radius);
|
561
|
-
background: var(--
|
564
|
+
background: var(--color-scheme-background-color);
|
562
565
|
border: var(--primary-border);
|
563
566
|
|
564
567
|
li {
|
@@ -13,7 +13,8 @@
|
|
13
13
|
on: colored && isChecked,
|
14
14
|
off: colored && !isChecked,
|
15
15
|
'has-state': validationStatus
|
16
|
-
}
|
16
|
+
}
|
17
|
+
]"
|
17
18
|
:for="labelId"
|
18
19
|
:title="$attrs.title"
|
19
20
|
ref="label">
|
@@ -23,29 +24,21 @@
|
|
23
24
|
:class="['label-text', !showLabel ? 'hidden' : undefined]">
|
24
25
|
<span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
|
25
26
|
|
26
|
-
<!-- begin
|
27
|
-
<
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
:helplink="helplink"
|
42
|
-
:inputModelValue="modelValue"
|
43
|
-
:inputAttributes="$attrs"
|
44
|
-
:validationTooltip="validationTooltip"
|
45
|
-
/>
|
46
|
-
<!-- end CmdListOfRequirements -->
|
47
|
-
</CmdTooltip>
|
48
|
-
<!-- end CmdTooltip -->
|
27
|
+
<!-- begin CmdTooltipForInputElements -->
|
28
|
+
<CmdTooltipForInputElements
|
29
|
+
v-if="useCustomTooltip && (validationStatus === '' || validationStatus === 'error')"
|
30
|
+
ref="tooltip"
|
31
|
+
:showRequirements="showRequirements"
|
32
|
+
:inputRequirements="inputRequirements"
|
33
|
+
:validationStatus="validationStatus"
|
34
|
+
:validationMessage="getValidationMessage"
|
35
|
+
:validationTooltip="validationTooltip"
|
36
|
+
:inputAttributes="$attrs"
|
37
|
+
:inputModelValue="modelValue"
|
38
|
+
:helplink="helplink"
|
39
|
+
:relatedId="tooltipId"
|
40
|
+
/>
|
41
|
+
<!-- end CmdTooltipForInputElements -->
|
49
42
|
|
50
43
|
<a v-if="$attrs.required || inputRequirements.length"
|
51
44
|
href="#"
|
@@ -212,17 +205,13 @@ import FieldValidation from "../mixins/FieldValidation.js"
|
|
212
205
|
import Tooltip from "../mixins/Tooltip.js"
|
213
206
|
|
214
207
|
// import components
|
215
|
-
import
|
216
|
-
import CmdSystemMessage from "./CmdSystemMessage"
|
217
|
-
import CmdTooltip from "./CmdTooltip"
|
208
|
+
import CmdTooltipForInputElements from "./CmdTooltipForInputElements"
|
218
209
|
|
219
210
|
export default {
|
220
211
|
inheritAttrs: false,
|
221
212
|
name: "FormElement",
|
222
213
|
components: {
|
223
|
-
|
224
|
-
CmdSystemMessage,
|
225
|
-
CmdTooltip
|
214
|
+
CmdTooltipForInputElements
|
226
215
|
},
|
227
216
|
mixins: [
|
228
217
|
I18n,
|
@@ -269,6 +258,8 @@ export default {
|
|
269
258
|
},
|
270
259
|
/**
|
271
260
|
* text for label
|
261
|
+
*
|
262
|
+
* @requiredForAccessibility: true
|
272
263
|
*/
|
273
264
|
labelText: {
|
274
265
|
type: String,
|
@@ -703,12 +694,11 @@ export default {
|
|
703
694
|
}
|
704
695
|
return null
|
705
696
|
},
|
706
|
-
|
697
|
+
validateInput(event) {
|
707
698
|
// check if surrounding form with data-use-validation exists
|
708
699
|
const useValidation = event.target.closest("form")?.dataset.useValidation === "true"
|
709
700
|
|
710
701
|
if (useValidation) {
|
711
|
-
this.tooltip = false
|
712
702
|
this.validationStatus = ""
|
713
703
|
|
714
704
|
// if input is filled, set status to success (expect for checkboxes and radiobuttons)
|
@@ -733,6 +723,14 @@ export default {
|
|
733
723
|
}
|
734
724
|
}
|
735
725
|
},
|
726
|
+
onBlur(event) {
|
727
|
+
this.validateInput(event)
|
728
|
+
this.closeTooltipOnBlur()
|
729
|
+
},
|
730
|
+
onInput(event) {
|
731
|
+
this.validateInput(event)
|
732
|
+
this.$emit('update:modelValue', event.target.value)
|
733
|
+
},
|
736
734
|
onChange(event) {
|
737
735
|
if (typeof this.modelValue === "boolean") {
|
738
736
|
this.$emit("update:modelValue", event.target.checked)
|
@@ -754,9 +752,6 @@ export default {
|
|
754
752
|
this.$refs.label.focus()
|
755
753
|
}
|
756
754
|
},
|
757
|
-
onInput(event) {
|
758
|
-
this.$emit('update:modelValue', event.target.value)
|
759
|
-
},
|
760
755
|
showPassword() {
|
761
756
|
// get password-field
|
762
757
|
const passwordField = this.$refs.input
|
@@ -777,6 +772,10 @@ export default {
|
|
777
772
|
},
|
778
773
|
executeSearch() {
|
779
774
|
this.$emit("search", this.value)
|
775
|
+
},
|
776
|
+
closeTooltipOnBlur() {
|
777
|
+
// close tooltip by calling function from CmdTooltipForInputElements using $refs
|
778
|
+
this.$refs.tooltip.hideTooltip()
|
780
779
|
}
|
781
780
|
},
|
782
781
|
watch: {
|
@@ -12,28 +12,21 @@
|
|
12
12
|
<span :class="['label-text', { hidden: !showLabel}]" :id="labelId" :aria-labelledby="labelId">
|
13
13
|
<span>{{ labelText }}<sup v-if="required">*</sup></span>
|
14
14
|
|
15
|
-
<!-- begin
|
16
|
-
<
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
:helplink="helplink"
|
31
|
-
:inputModelValue="modelValue"
|
32
|
-
:inputAttributes="$attrs"
|
33
|
-
/>
|
34
|
-
<!-- end CmdListOfRequirements -->
|
35
|
-
</CmdTooltip>
|
36
|
-
<!-- end CmdTooltip -->
|
15
|
+
<!-- begin CmdTooltipForInputElements -->
|
16
|
+
<CmdTooltipForInputElements
|
17
|
+
v-if="useCustomTooltip && (validationStatus === '' || validationStatus === 'error')"
|
18
|
+
ref="tooltip"
|
19
|
+
:showRequirements="showRequirements"
|
20
|
+
:inputRequirements="inputRequirements"
|
21
|
+
:validationStatus="validationStatus"
|
22
|
+
:validationMessage="getValidationMessage"
|
23
|
+
:validationTooltip="validationTooltip"
|
24
|
+
:inputAttributes="$attrs"
|
25
|
+
:inputModelValue="modelValue"
|
26
|
+
:helplink="helplink"
|
27
|
+
:relatedId="tooltipId"
|
28
|
+
/>
|
29
|
+
<!-- end CmdTooltipForInputElements -->
|
37
30
|
|
38
31
|
<a v-if="required || inputRequirements.length"
|
39
32
|
href="#"
|
@@ -80,15 +73,11 @@ import FieldValidation from "../mixins/FieldValidation.js"
|
|
80
73
|
import Tooltip from "../mixins/Tooltip.js"
|
81
74
|
|
82
75
|
// import components
|
83
|
-
import
|
84
|
-
import CmdSystemMessage from "./CmdSystemMessage"
|
85
|
-
import CmdTooltip from "./CmdTooltip"
|
76
|
+
import CmdTooltipForInputElements from "./CmdTooltipForInputElements"
|
86
77
|
|
87
78
|
export default {
|
88
79
|
components: {
|
89
|
-
|
90
|
-
CmdSystemMessage,
|
91
|
-
CmdTooltip
|
80
|
+
CmdTooltipForInputElements
|
92
81
|
},
|
93
82
|
mixins: [
|
94
83
|
FieldValidation,
|
@@ -96,8 +85,7 @@ export default {
|
|
96
85
|
],
|
97
86
|
data() {
|
98
87
|
return {
|
99
|
-
value: ""
|
100
|
-
validationStatus: ""
|
88
|
+
value: ""
|
101
89
|
}
|
102
90
|
},
|
103
91
|
props: {
|
@@ -115,13 +103,6 @@ export default {
|
|
115
103
|
type: Boolean,
|
116
104
|
default: false
|
117
105
|
},
|
118
|
-
/**
|
119
|
-
* tooltip for validation
|
120
|
-
*/
|
121
|
-
validationTooltip: {
|
122
|
-
type: String,
|
123
|
-
default: ""
|
124
|
-
},
|
125
106
|
/**
|
126
107
|
* list of input-elements inside group
|
127
108
|
*
|
@@ -231,7 +212,33 @@ export default {
|
|
231
212
|
default: false
|
232
213
|
}
|
233
214
|
},
|
215
|
+
methods: {
|
216
|
+
updateStatus() {
|
217
|
+
if (this.required) {
|
218
|
+
if(this.inputValue?.length) {
|
219
|
+
this.validationStatus = ""
|
220
|
+
return
|
221
|
+
}
|
222
|
+
this.validationStatus = "error"
|
223
|
+
return
|
224
|
+
}
|
225
|
+
this.validationStatus = this.status
|
226
|
+
}
|
227
|
+
},
|
234
228
|
computed: {
|
229
|
+
validationTooltip() {
|
230
|
+
if (!this.useCustomTooltip) {
|
231
|
+
return this.getValidationMessage
|
232
|
+
}
|
233
|
+
|
234
|
+
// set default-tooltip if customTooltip is not set
|
235
|
+
if (this.validationStatus === 'error') {
|
236
|
+
return this.getMessage("cmdformelement.validationTooltip.an_error_occurred")
|
237
|
+
} else if (this.validationStatus === 'success') {
|
238
|
+
return this.getMessage("cmdformelement.validationTooltip.information_is_filled_correctly")
|
239
|
+
}
|
240
|
+
return this.getMessage("cmdformelement.validationTooltip.open_field_requirements")
|
241
|
+
},
|
235
242
|
// get ID for accessibility
|
236
243
|
labelId() {
|
237
244
|
if (this.$attrs.id !== undefined) {
|
@@ -250,25 +257,16 @@ export default {
|
|
250
257
|
}
|
251
258
|
}
|
252
259
|
},
|
253
|
-
methods: {
|
254
|
-
onChange(e) {
|
255
|
-
if (typeof this.value === "string") {
|
256
|
-
this.$emit("update:value", e.target.value)
|
257
|
-
} else if (this.value !== undefined) {
|
258
|
-
let values = [...this.value]
|
259
|
-
if (e.target.checked) {
|
260
|
-
values.push(e.target.value)
|
261
|
-
} else {
|
262
|
-
values = values.filter(value => value !== e.target.value)
|
263
|
-
}
|
264
|
-
this.$emit("update:modelValue", values)
|
265
|
-
}
|
266
|
-
}
|
267
|
-
},
|
268
260
|
watch: {
|
269
261
|
status: {
|
270
262
|
handler() {
|
271
|
-
this.
|
263
|
+
this.updateStatus()
|
264
|
+
},
|
265
|
+
immediate: true
|
266
|
+
},
|
267
|
+
modelValue: {
|
268
|
+
handler() {
|
269
|
+
this.updateStatus()
|
272
270
|
},
|
273
271
|
immediate: true
|
274
272
|
}
|