comand-component-library 3.1.25 → 3.1.29
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/comand-component-library.umd.min.js +1 -1
- package/package.json +1 -1
- package/src/App.vue +5 -4
- package/src/assets/data/accordion.json +12 -3
- package/src/assets/data/top-header-navigation.json +15 -9
- package/src/components/CmdAccordion.vue +37 -22
- package/src/components/CmdFormElement.vue +72 -17
- package/src/components/CmdSlideButton.vue +16 -5
- package/src/components/CmdSlideshow.vue +13 -10
- package/src/components/CmdSwitchButton.vue +44 -1
- package/src/components/CmdSystemMessage.vue +32 -11
- package/src/components/CmdTable.vue +38 -20
- package/src/components/CmdTabs.vue +12 -3
- package/src/components/CmdThumbnailScroller.vue +39 -17
- package/src/components/CmdTooltip.vue +3 -0
- package/src/components/CmdTopHeaderNavigation.vue +10 -3
- package/src/components/CmdUploadForm.vue +26 -1
- package/src/components/CmdWidthLimitationWrapper.vue +26 -3
package/package.json
CHANGED
package/src/App.vue
CHANGED
@@ -41,7 +41,6 @@
|
|
41
41
|
<li><a href="#section-upload-form">Upload-Form</a></li>
|
42
42
|
</ul>
|
43
43
|
</div>
|
44
|
-
|
45
44
|
<hr/>
|
46
45
|
</CmdWidthLimitationWrapper>
|
47
46
|
|
@@ -65,13 +64,14 @@
|
|
65
64
|
closeIconClass="icon-single-arrow-down"
|
66
65
|
ref="accordionGroup2"
|
67
66
|
/>
|
68
|
-
<h3>Customized headline-level</h3>
|
67
|
+
<h3>Customized headline-level (without transition of content)</h3>
|
69
68
|
<CmdAccordion :accordionData="accordionData.accordionData2"
|
70
69
|
toggleMode="multiple"
|
71
70
|
tooltip="Click to toggle content"
|
72
71
|
openIconClass="icon-single-arrow-up"
|
73
72
|
closeIconClass="icon-single-arrow-down"
|
74
73
|
accordion-headline-level="h4"
|
74
|
+
:use-transition="false"
|
75
75
|
/>
|
76
76
|
<h3>Data given by slots</h3>
|
77
77
|
<CmdAccordion :accordionData="1">
|
@@ -137,6 +137,7 @@
|
|
137
137
|
<CmdFormElement labelText="Input for selectbox:"
|
138
138
|
element="select"
|
139
139
|
:status="formElementStatus"
|
140
|
+
v-model:value="selectedOption"
|
140
141
|
:selectOptions="selectOptions"
|
141
142
|
/>
|
142
143
|
<CmdFormElement labelText="Input for datalist:"
|
@@ -904,6 +905,7 @@ export default {
|
|
904
905
|
multipleSwitchCheckbox: ['b'],
|
905
906
|
multipleSwitchRadio: 'c',
|
906
907
|
fancyBoxCookieDisclaimer: false,
|
908
|
+
selectedOption: "2",
|
907
909
|
selectOptions: [
|
908
910
|
{
|
909
911
|
text: "Option 1",
|
@@ -911,8 +913,7 @@ export default {
|
|
911
913
|
},
|
912
914
|
{
|
913
915
|
text: "Option 2",
|
914
|
-
value: "2"
|
915
|
-
selected: true
|
916
|
+
value: "2"
|
916
917
|
},
|
917
918
|
{
|
918
919
|
text: "Option 3",
|
@@ -2,19 +2,28 @@
|
|
2
2
|
"accordionData1": [
|
3
3
|
{
|
4
4
|
"headline": "First",
|
5
|
-
"
|
5
|
+
"icon": {
|
6
|
+
"iconClass": "icon-globe",
|
7
|
+
"tooltip": "Globe"
|
8
|
+
},
|
6
9
|
"content": "Text 1",
|
7
10
|
"status": false
|
8
11
|
},
|
9
12
|
{
|
10
13
|
"headline": "Second",
|
11
|
-
"
|
14
|
+
"icon": {
|
15
|
+
"iconClass": "icon-user-profile",
|
16
|
+
"tooltip": "User profile"
|
17
|
+
},
|
12
18
|
"content": "Text 2",
|
13
19
|
"status": true
|
14
20
|
},
|
15
21
|
{
|
16
22
|
"headline": "Third",
|
17
|
-
"
|
23
|
+
"icon": {
|
24
|
+
"iconClass": "icon-home",
|
25
|
+
"tooltip": "Home"
|
26
|
+
},
|
18
27
|
"content": "Text 3",
|
19
28
|
"status": false
|
20
29
|
}
|
@@ -1,21 +1,27 @@
|
|
1
1
|
[
|
2
2
|
{
|
3
|
-
"
|
3
|
+
"linkType": "href",
|
4
4
|
"path": "http://www.comand-cms.com",
|
5
5
|
"target": "_blank",
|
6
|
-
"
|
7
|
-
|
6
|
+
"icon": {
|
7
|
+
"iconClass": "icon-globe",
|
8
|
+
"tooltip": "CoManD-CMS"
|
9
|
+
}
|
8
10
|
},
|
9
11
|
{
|
10
|
-
"
|
12
|
+
"linkType": "href",
|
11
13
|
"path": "#anchor-section4",
|
12
|
-
"
|
13
|
-
|
14
|
+
"icon": {
|
15
|
+
"iconClass": "icon-mail",
|
16
|
+
"tooltip": "Contact"
|
17
|
+
}
|
14
18
|
},
|
15
19
|
{
|
16
|
-
"
|
20
|
+
"linkType": "href",
|
17
21
|
"path": "#anchor-section3",
|
18
|
-
"
|
19
|
-
|
22
|
+
"icon": {
|
23
|
+
"iconClass": "icon-user-profile",
|
24
|
+
"tooltip": "Login"
|
25
|
+
}
|
20
26
|
}
|
21
27
|
]
|
@@ -1,20 +1,20 @@
|
|
1
1
|
<template>
|
2
2
|
<div :class="['cmd-accordion flex-container vertical', {'no-gap' : !gapBetween, 'active' : active}]">
|
3
3
|
<div v-for="(accordionContent, index) in accordion" :key="index">
|
4
|
-
<a v-if="!useCustomHeader" href="#" :title="tooltip" @click.prevent="toggleContentVisibility(accordionContent)">
|
4
|
+
<a v-if="!useCustomHeader" href="#" :title="accordionContent.status ? iconOpen.icon.tooltip : iconClosed.icon.tooltip" @click.prevent="toggleContentVisibility(accordionContent)">
|
5
5
|
<slot :name="'accordionHeadline' + index">
|
6
6
|
<component :is="accordionHeadlineLevel">
|
7
|
-
<span v-if="accordionContent.iconClass" :class="accordionContent.iconClass"></span>
|
7
|
+
<span v-if="accordionContent.icon && accordionContent.icon.iconClass" :class="accordionContent.icon.iconClass" :title="accordionContent.icon.tooltip"></span>
|
8
8
|
<span v-if="accordionContent.headline">{{ accordionContent.headline }}</span>
|
9
9
|
</component>
|
10
10
|
</slot>
|
11
|
-
<span class="toggle-icon" :class="[accordionContent.status ?
|
11
|
+
<span class="toggle-icon" :class="[accordionContent.status ? iconOpen.icon.iconClass : iconClosed.icon.iconClass]"></span>
|
12
12
|
</a>
|
13
13
|
<a v-else href="#" :title="tooltip" @click.prevent="toggleContentVisibility(accordionContent)">
|
14
14
|
<slot :name="'customHeadline' + index"><p>{{ accordionContent.headline }}</p></slot>
|
15
|
-
<span class="toggle-icon" :class="[accordionContent.status ?
|
15
|
+
<span class="toggle-icon" :class="[accordionContent.status ? iconOpen.icon.iconClass : iconClosed.icon.iconClass]"></span>
|
16
16
|
</a>
|
17
|
-
<transition name="
|
17
|
+
<transition :name="toggleTransition">
|
18
18
|
<div class="accordion-content" v-if="accordionContent.status" aria-expanded="true">
|
19
19
|
<slot :name="'accordionContent' + index">
|
20
20
|
<p>{{ accordionContent.content }}</p>
|
@@ -36,9 +36,12 @@ export default {
|
|
36
36
|
},
|
37
37
|
props: {
|
38
38
|
/**
|
39
|
-
*
|
39
|
+
* use transition to expand accordion-content
|
40
40
|
*/
|
41
|
-
|
41
|
+
useTransition: {
|
42
|
+
type: Boolean,
|
43
|
+
default: true
|
44
|
+
},
|
42
45
|
/**
|
43
46
|
* toggle if mode if only one accordion can be opened (or multiple ones)
|
44
47
|
*
|
@@ -87,25 +90,37 @@ export default {
|
|
87
90
|
required: true
|
88
91
|
},
|
89
92
|
/**
|
90
|
-
*
|
93
|
+
* icon to expand an accordion
|
91
94
|
*/
|
92
|
-
|
93
|
-
type:
|
94
|
-
default:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
95
|
+
iconOpen: {
|
96
|
+
type: Object,
|
97
|
+
default: function() {
|
98
|
+
return {
|
99
|
+
icon: {
|
100
|
+
iconClass: "icon-single-arrow-up",
|
101
|
+
tooltip: "Close content"
|
102
|
+
}
|
103
|
+
}
|
104
|
+
},
|
102
105
|
},
|
103
106
|
/**
|
104
|
-
*
|
107
|
+
* icon to collapse an accordion
|
105
108
|
*/
|
106
|
-
|
107
|
-
type:
|
108
|
-
|
109
|
+
iconClosed: {
|
110
|
+
type: Object,
|
111
|
+
default: function() {
|
112
|
+
return {
|
113
|
+
icon: {
|
114
|
+
iconClass: "icon-single-arrow-down",
|
115
|
+
tooltip: "Show content"
|
116
|
+
}
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
},
|
121
|
+
computed: {
|
122
|
+
toggleTransition() {
|
123
|
+
return this.useTransition && 'fade'
|
109
124
|
}
|
110
125
|
},
|
111
126
|
methods: {
|
@@ -1,18 +1,19 @@
|
|
1
1
|
<template>
|
2
2
|
<label v-if="(element === 'input' || element === 'select' || element === 'textarea')"
|
3
3
|
:for="id"
|
4
|
-
:class="['cmd-form-element', status, {'inline' :
|
4
|
+
:class="['cmd-form-element', status, {'inline' : displayLabelInline, 'checked': isChecked}]"
|
5
5
|
ref="label">
|
6
6
|
<!-- begin label (+ required) -->
|
7
7
|
<span v-if="labelText && $attrs.type !== 'checkbox' && $attrs.type !== 'radio'"
|
8
|
-
:class="{'hidden':
|
9
|
-
|
10
|
-
|
8
|
+
:class="{'hidden': hideLabel}">
|
9
|
+
<span>{{ labelText }}</span>
|
10
|
+
<sup v-if="$attrs.required">*</sup>
|
11
|
+
</span>
|
11
12
|
<!-- end label (+ required) -->
|
12
13
|
|
13
14
|
<!-- begin icon -->
|
14
|
-
<span v-if="$attrs.type !== 'checkbox' && $attrs.type !== 'radio' &&
|
15
|
-
:class="[status,
|
15
|
+
<span v-if="$attrs.type !== 'checkbox' && $attrs.type !== 'radio' && innerIconClass" class="place-inside"
|
16
|
+
:class="[status, innerIconClass]"></span>
|
16
17
|
<!-- end icon -->
|
17
18
|
|
18
19
|
<!-- begin inputfield -->
|
@@ -69,7 +70,7 @@
|
|
69
70
|
@change="$emit('input', $event.target.value)"
|
70
71
|
>
|
71
72
|
<option v-for="(option, index) in selectOptions" :key="index" :value="option.value"
|
72
|
-
:selected="option.
|
73
|
+
:selected="option.value === value">{{ option.text }}
|
73
74
|
</option>
|
74
75
|
</select>
|
75
76
|
<!-- end selectbox -->
|
@@ -127,11 +128,18 @@ export default {
|
|
127
128
|
}
|
128
129
|
},
|
129
130
|
props: {
|
131
|
+
/**
|
132
|
+
* set value for v-model
|
133
|
+
*/
|
130
134
|
value: {
|
131
135
|
type: [String, Boolean, Array, Number],
|
132
|
-
required: false,
|
133
136
|
default: ""
|
134
137
|
},
|
138
|
+
/**
|
139
|
+
* set type of native form-element
|
140
|
+
*
|
141
|
+
* values: input, select, textarea, button
|
142
|
+
*/
|
135
143
|
element: {
|
136
144
|
type: String,
|
137
145
|
validator(value) {
|
@@ -142,67 +150,114 @@ export default {
|
|
142
150
|
},
|
143
151
|
required: true
|
144
152
|
},
|
153
|
+
/**
|
154
|
+
* hide label (and asterisk if mandatory)
|
155
|
+
*
|
156
|
+
* label may not be removed, because it is required for accessibility
|
157
|
+
*/
|
145
158
|
hideLabel: {
|
146
159
|
type: Boolean,
|
147
160
|
default: false
|
148
161
|
},
|
162
|
+
/**
|
163
|
+
* text for label
|
164
|
+
*/
|
149
165
|
labelText: {
|
150
166
|
type: String,
|
151
167
|
required: false
|
152
168
|
},
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
},
|
169
|
+
/**
|
170
|
+
* allow checkbox/radio-buttons to get value from outside
|
171
|
+
*/
|
157
172
|
inputValue: {
|
158
|
-
/* allow checkbox/radiobuttons to get value from outside */
|
159
173
|
type: String,
|
160
174
|
required: false
|
161
175
|
},
|
162
|
-
|
176
|
+
/**
|
177
|
+
* for replacing native checkboxes/radio-buttons by custom ones (based on frontend-framework)
|
178
|
+
*/
|
163
179
|
replaceInputType: {
|
164
180
|
type: Boolean,
|
165
181
|
default: false
|
166
182
|
},
|
183
|
+
/**
|
184
|
+
* set an optional class on native form-element (use native class="" on component ot set class on outer-component-element)
|
185
|
+
*
|
186
|
+
* may not be named as 'class' because it is a reserved keyword in JavaScript
|
187
|
+
*/
|
167
188
|
htmlClass: {
|
168
|
-
/* may not be named as 'class' because it is a reserved keyword in JavaScript */
|
169
189
|
type: String,
|
170
190
|
required: false
|
171
191
|
},
|
192
|
+
/**
|
193
|
+
* if for native form-element
|
194
|
+
*/
|
172
195
|
id: {
|
173
196
|
type: String,
|
174
197
|
required: false
|
175
198
|
},
|
199
|
+
/**
|
200
|
+
* set if a native datalist should be used
|
201
|
+
*/
|
176
202
|
datalist: {
|
177
203
|
type: Object,
|
178
204
|
required: false
|
179
205
|
},
|
206
|
+
/**
|
207
|
+
* list of options for selectbox
|
208
|
+
*
|
209
|
+
* element-property must be 'select'
|
210
|
+
*/
|
180
211
|
selectOptions: {
|
181
212
|
type: Array,
|
182
213
|
required: false
|
183
214
|
},
|
215
|
+
/**
|
216
|
+
* text for native button
|
217
|
+
*/
|
184
218
|
buttonText: {
|
185
219
|
type: String,
|
186
220
|
required: false
|
187
221
|
},
|
222
|
+
/**
|
223
|
+
* set icon for native button
|
224
|
+
*/
|
188
225
|
buttonIcon: {
|
189
226
|
type: Object,
|
190
227
|
default() {
|
191
228
|
return {}
|
192
229
|
}
|
193
230
|
},
|
231
|
+
/**
|
232
|
+
* set text for tooltip
|
233
|
+
*/
|
194
234
|
tooltipText: {
|
195
235
|
type: String,
|
196
236
|
required: false
|
197
237
|
},
|
198
|
-
|
238
|
+
/**
|
239
|
+
* set class for inner icon (icon placed 'inside' input/ left of input-text)
|
240
|
+
*
|
241
|
+
* element-property must be 'input' and type-property may not be checkbox or radio
|
242
|
+
*/
|
243
|
+
innerIconClass: {
|
199
244
|
type: String,
|
200
245
|
required: false
|
201
246
|
},
|
202
|
-
|
247
|
+
/**
|
248
|
+
* activate if label-text should be place inline/left of form-element (and not above)
|
249
|
+
*
|
250
|
+
* type-property may not be checkbox or radio
|
251
|
+
*/
|
252
|
+
displayLabelInline: {
|
203
253
|
type: Boolean,
|
204
254
|
required: false
|
205
255
|
},
|
256
|
+
/**
|
257
|
+
* set status for label and form-element
|
258
|
+
*
|
259
|
+
* values: error (red-styling), success (green-styling)
|
260
|
+
*/
|
206
261
|
status: {
|
207
262
|
type: String,
|
208
263
|
required: false
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<template>
|
2
2
|
<a href="#"
|
3
3
|
@click.prevent
|
4
|
-
:class="['cmd-slide-button', 'button',
|
5
|
-
:title="
|
4
|
+
:class="['cmd-slide-button', 'button', slideButtons.next ? 'next' : 'previous']"
|
5
|
+
:title="slideButtons.next ? slideButtons.next.tooltip : slideButtons.prev.tooltip">
|
6
6
|
<span
|
7
|
-
:class="
|
7
|
+
:class="slideButtons.next ? slideButtons.next.iconClass : slideButtons.prev.iconClass"></span>
|
8
8
|
</a>
|
9
9
|
</template>
|
10
10
|
|
@@ -15,9 +15,20 @@ export default {
|
|
15
15
|
/**
|
16
16
|
* set slide-button to "next" (= right), else it will be displayed as previous (=left) button
|
17
17
|
*/
|
18
|
-
|
18
|
+
slideButtons: {
|
19
19
|
type: Object,
|
20
|
-
|
20
|
+
default: function() {
|
21
|
+
return {
|
22
|
+
prev: {
|
23
|
+
iconClass: "icon-single-arrow-left",
|
24
|
+
tooltip: "Previous"
|
25
|
+
},
|
26
|
+
next: {
|
27
|
+
iconClass: "icon-single-arrow-right",
|
28
|
+
tooltip: "Next"
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
21
32
|
}
|
22
33
|
}
|
23
34
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="cmd-slideshow" :class="{'full-width': fullWidth}">
|
3
3
|
<div class="inner-slideshow-wrapper" @mouseenter="pause = true" @mouseleave="pause = false">
|
4
|
-
<CmdSlideButton @click.prevent="showPrevItem" :
|
4
|
+
<CmdSlideButton @click.prevent="showPrevItem" :slideButtons="slideButtons.prev"/>
|
5
5
|
<transition name="fade">
|
6
6
|
<a v-if="currentItem.href" :href="currentItem.href" :key="index" :title="currentItem.title">
|
7
7
|
<figure v-if="currentItem && !useSlot" class="slideshow-item">
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<slot :name="'item' + currentSlotItem"></slot>
|
23
23
|
</div>
|
24
24
|
</transition>
|
25
|
-
<CmdSlideButton @click.prevent="showNextItem" :
|
25
|
+
<CmdSlideButton @click.prevent="showNextItem" :slideButtons="slideButtons.next"/>
|
26
26
|
<ol v-if="showQuickLinkIcons">
|
27
27
|
<li v-for="(item, i) in slideshowItems" :key="i" :class="{active: i === index }">
|
28
28
|
<a href="#" @click.prevent="index = i" :aria-label="index"></a>
|
@@ -104,15 +104,18 @@ export default {
|
|
104
104
|
type: Object,
|
105
105
|
default() {
|
106
106
|
return {
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
107
|
+
next: {
|
108
|
+
next: {
|
109
|
+
"iconClass": "icon-single-arrow-right",
|
110
|
+
"tooltip": "Next"
|
111
|
+
}
|
111
112
|
},
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
prev: {
|
114
|
+
prev: {
|
115
|
+
"type": "prev",
|
116
|
+
"iconClass": "icon-single-arrow-left",
|
117
|
+
"tooltip": "Previous"
|
118
|
+
}
|
116
119
|
}
|
117
120
|
}
|
118
121
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<label :class="['toggle-switch',
|
2
|
+
<label :class="['cmd-switch-button', 'toggle-switch',
|
3
3
|
{'switch-label': onLabel && offLabel && !labelText,
|
4
4
|
'colored' : colored, 'on' : colored && isChecked,
|
5
5
|
'off' : colored && !isChecked, 'disabled': $attrs.disabled
|
@@ -19,38 +19,78 @@ export default {
|
|
19
19
|
name: "SwitchButton",
|
20
20
|
emits: ["update:value"],
|
21
21
|
props: {
|
22
|
+
/**
|
23
|
+
* set type for input
|
24
|
+
*
|
25
|
+
* values: checkbox, radio
|
26
|
+
*/
|
22
27
|
type: {
|
23
28
|
type: String,
|
24
29
|
required: true
|
25
30
|
},
|
31
|
+
/**
|
32
|
+
* set id for input
|
33
|
+
*
|
34
|
+
* required for accessibility
|
35
|
+
*
|
36
|
+
*/
|
26
37
|
id: {
|
27
38
|
type: String,
|
28
39
|
required: true
|
29
40
|
},
|
41
|
+
/**
|
42
|
+
* set name for input
|
43
|
+
*
|
44
|
+
* require for radio-buttons (and form-submit by browser)
|
45
|
+
*/
|
30
46
|
name: {
|
31
47
|
type: String,
|
32
48
|
required: false
|
33
49
|
},
|
50
|
+
/**
|
51
|
+
* value for v-model
|
52
|
+
*/
|
34
53
|
value: {
|
35
54
|
type: [String, Array, Boolean],
|
36
55
|
required: false
|
37
56
|
},
|
57
|
+
/**
|
58
|
+
* set value to pre-check toggle-switch
|
59
|
+
*/
|
38
60
|
inputValue: {
|
39
61
|
type: String,
|
40
62
|
required: false
|
41
63
|
},
|
64
|
+
/**
|
65
|
+
* text for label
|
66
|
+
*
|
67
|
+
* required if onLabel/offLabel are not set
|
68
|
+
*/
|
42
69
|
labelText: {
|
43
70
|
type: String,
|
44
71
|
required: false
|
45
72
|
},
|
73
|
+
/**
|
74
|
+
* text for on-label
|
75
|
+
*
|
76
|
+
* set to activate switch-label (=label is placed on toggle-switch (not behind))
|
77
|
+
*/
|
46
78
|
onLabel: {
|
47
79
|
type: String,
|
48
80
|
required: false
|
49
81
|
},
|
82
|
+
/**
|
83
|
+
* text for off-label
|
84
|
+
*
|
85
|
+
* set to activate switch-label (=label is placed on toggle-switch (not behind))
|
86
|
+
*/
|
50
87
|
offLabel: {
|
51
88
|
type: String,
|
52
89
|
required: false
|
53
90
|
},
|
91
|
+
/**
|
92
|
+
* set to true, if checkbox/radio-buttons should have green/checked and red/unchecked color-coding
|
93
|
+
*/
|
54
94
|
colored: {
|
55
95
|
type: Boolean,
|
56
96
|
required: false
|
@@ -88,6 +128,8 @@ export default {
|
|
88
128
|
</script>
|
89
129
|
|
90
130
|
<style lang="scss">
|
131
|
+
/* begin cmd-switch-button ------------------------------------------------------------------------------------------ */
|
132
|
+
/* no cmd-prefix-styling (class based on frontend-framework */
|
91
133
|
.toggle-switch {
|
92
134
|
&.switch-label {
|
93
135
|
&.colored {
|
@@ -123,4 +165,5 @@ export default {
|
|
123
165
|
}
|
124
166
|
}
|
125
167
|
}
|
168
|
+
/* end cmd-switch-button ------------------------------------------------------------------------------------------ */
|
126
169
|
</style>
|
@@ -1,20 +1,19 @@
|
|
1
1
|
<template>
|
2
2
|
<transition name="fade">
|
3
3
|
<div
|
4
|
-
class="cmd-system-message system-message"
|
5
|
-
:class="[{ 'full-width': fullWidth }, status]"
|
6
|
-
role="alert"
|
7
4
|
v-if="showSystemMessage"
|
5
|
+
:class="['cmd-system-message', 'system-message', { 'full-width': fullWidth }, status]"
|
6
|
+
role="alert"
|
8
7
|
>
|
9
8
|
<a
|
10
|
-
|
9
|
+
v-if="iconClose.iconClass"
|
10
|
+
:class="iconClose.iconClass"
|
11
11
|
href="#"
|
12
12
|
@click.prevent="showSystemMessage = false"
|
13
|
-
:title="
|
14
|
-
v-if="closeIcon.iconClass"
|
13
|
+
:title="iconClose.tooltip"
|
15
14
|
></a>
|
16
15
|
<h6>
|
17
|
-
<span
|
16
|
+
<span v-if="iconMessage && iconMessage.iconClass && iconMessage.show" :class="iconMessage.iconClass"></span>
|
18
17
|
<strong v-if="message">{{ message }}</strong>
|
19
18
|
</h6>
|
20
19
|
<slot></slot>
|
@@ -31,23 +30,45 @@ export default {
|
|
31
30
|
}
|
32
31
|
},
|
33
32
|
props: {
|
33
|
+
/**
|
34
|
+
* status of message
|
35
|
+
*
|
36
|
+
* values: error (red), warning (yellow), success (grenn), info (blue)
|
37
|
+
*/
|
34
38
|
status: {
|
35
39
|
type: String,
|
36
40
|
required: true
|
37
41
|
},
|
42
|
+
/**
|
43
|
+
* activate to stretch message-box as wide as parent container (else message-box is as wide as message)
|
44
|
+
*/
|
38
45
|
fullWidth: {
|
39
46
|
type: Boolean,
|
40
47
|
default: true
|
41
48
|
},
|
42
|
-
|
43
|
-
|
44
|
-
|
49
|
+
/**
|
50
|
+
* set icon-class for message (will be displayed left from
|
51
|
+
*/
|
52
|
+
iconMessage: {
|
53
|
+
type: Object,
|
54
|
+
default: function() {
|
55
|
+
return {
|
56
|
+
iconClass: "icon-warning",
|
57
|
+
show: true
|
58
|
+
}
|
59
|
+
}
|
45
60
|
},
|
61
|
+
/**
|
62
|
+
* the system-message-text
|
63
|
+
*/
|
46
64
|
message: {
|
47
65
|
type: String,
|
48
66
|
required: false
|
49
67
|
},
|
50
|
-
|
68
|
+
/**
|
69
|
+
* icon to close system-message
|
70
|
+
*/
|
71
|
+
iconClose: {
|
51
72
|
type: Object,
|
52
73
|
default: function () {
|
53
74
|
return {
|