comand-component-library 3.3.7 → 3.3.8

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.
Files changed (48) hide show
  1. package/dist/comand-component-library.css +1 -1
  2. package/dist/comand-component-library.umd.min.js +1 -1
  3. package/package.json +2 -2
  4. package/src/App.vue +97 -28
  5. package/src/assets/data/address-data.json +8 -0
  6. package/src/assets/data/image-gallery.json +44 -20
  7. package/src/assets/data/image.json +28 -0
  8. package/src/assets/data/slideshow.json +68 -51
  9. package/src/assets/data/thumbnail-scroller.json +96 -40
  10. package/src/assets/styles/global-styles.scss +1 -1
  11. package/src/components/CmdAddressData.vue +45 -2
  12. package/src/components/CmdBox.vue +112 -62
  13. package/src/components/CmdCompanyLogo.vue +19 -2
  14. package/src/components/CmdFakeSelect.vue +2 -2
  15. package/src/components/CmdFancyBox.vue +41 -43
  16. package/src/components/CmdFormElement.vue +52 -42
  17. package/src/components/CmdFormFilters.vue +1 -1
  18. package/src/components/CmdHeadline.vue +29 -4
  19. package/src/components/CmdIcon.vue +4 -4
  20. package/src/components/CmdImage.vue +55 -0
  21. package/src/components/CmdImageGallery.vue +16 -15
  22. package/src/components/CmdImageZoom.vue +29 -13
  23. package/src/components/CmdInputGroup.vue +1 -2
  24. package/src/components/CmdListOfRequirements.vue +1 -1
  25. package/src/components/CmdLoginForm.vue +1 -1
  26. package/src/components/CmdMainNavigation.vue +3 -3
  27. package/src/components/CmdMultistepFormProgressBar.vue +9 -9
  28. package/src/components/CmdPager.vue +124 -88
  29. package/src/components/CmdShareButtons.vue +1 -1
  30. package/src/components/CmdSlideButton.vue +10 -3
  31. package/src/components/CmdSlideshow.vue +38 -31
  32. package/src/components/CmdSystemMessage.vue +32 -16
  33. package/src/components/CmdTable.vue +1 -1
  34. package/src/components/CmdTabs.vue +11 -11
  35. package/src/components/CmdThumbnailScroller.vue +15 -12
  36. package/src/components/CmdTooltip.vue +3 -3
  37. package/src/components/CmdUploadForm.vue +20 -20
  38. package/src/documentation/generated/CmdBoxPropertyDescriptions.json +7 -0
  39. package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +3 -13
  40. package/src/documentation/generated/CmdHeadlinePropertyDescriptions.json +10 -0
  41. package/src/documentation/generated/CmdIconPropertyDescriptions.json +1 -1
  42. package/src/documentation/generated/CmdImagePropertyDescriptions.json +12 -0
  43. package/src/documentation/generated/CmdImageZoomPropertyDescriptions.json +4 -4
  44. package/src/documentation/generated/CmdPagerPropertyDescriptions.json +14 -9
  45. package/src/index.js +3 -1
  46. package/src/mixins/CmdAddressData/DefaultMessageProperties.js +5 -2
  47. package/src/mixins/CmdBox/DefaultMessageProperties.js +3 -1
  48. package/src/mixins/CmdPager/DefaultMessageProperties.js +10 -0
@@ -1,58 +1,114 @@
1
1
  [
2
2
  {
3
- "imgId": 1,
4
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
5
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
6
- "alt": "Alternativ Text 1",
7
- "figcaption": "Figcaption DE 1"
3
+ "image": {
4
+ "id": 1,
5
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
6
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
7
+ "alt": "Alternative Text 1"
8
+ },
9
+ "figcaption": {
10
+ "show": true,
11
+ "position": "bottom",
12
+ "text": "Figcaption 1",
13
+ "textAlign": "center"
14
+ }
8
15
  },
9
16
  {
10
- "imgId": 2,
11
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-green-landscape.jpg",
12
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-green-landscape.jpg",
13
- "alt": "Alternativ Text 2",
14
- "figcaption": "Figcaption DE 2"
17
+ "image": {
18
+ "id": 2,
19
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
20
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
21
+ "alt": "Alternative Text 2"
22
+ },
23
+ "figcaption": {
24
+ "show": true,
25
+ "position": "bottom",
26
+ "text": "Figcaption 2",
27
+ "textAlign": "center"
28
+ }
15
29
  },
16
30
  {
17
- "imgId": 3,
18
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-red-landscape.jpg",
19
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-red-landscape.jpg",
20
- "alt": "Alternativ Text 3",
21
- "figcaption": "Figcaption DE 3"
31
+ "image": {
32
+ "id": 3,
33
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
34
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
35
+ "alt": "Alternative Text 3"
36
+ },
37
+ "figcaption": {
38
+ "show": true,
39
+ "position": "bottom",
40
+ "text": "Figcaption 3",
41
+ "textAlign": "center"
42
+ }
22
43
  },
23
44
  {
24
- "imgId": 4,
25
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-yellow-landscape.jpg",
26
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-yellow-landscape.jpg",
27
- "alt": "Alternativ Text 4",
28
- "figcaption": "Figcaption DE 4"
45
+ "image": {
46
+ "id": 4,
47
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
48
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
49
+ "alt": "Alternative Text 4"
50
+ },
51
+ "figcaption": {
52
+ "show": true,
53
+ "position": "bottom",
54
+ "text": "Figcaption 4",
55
+ "textAlign": "center"
56
+ }
29
57
  },
30
58
  {
31
- "imgId": 5,
32
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
33
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
34
- "alt": "Alternativ Text 5",
35
- "figcaption": "Figcaption DE 5"
59
+ "image": {
60
+ "id": 5,
61
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
62
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
63
+ "alt": "Alternative Text 5"
64
+ },
65
+ "figcaption": {
66
+ "show": true,
67
+ "position": "bottom",
68
+ "text": "Figcaption 5",
69
+ "textAlign": "center"
70
+ }
36
71
  },
37
72
  {
38
- "imgId": 6,
39
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-green-landscape.jpg",
40
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-green-landscape.jpg",
41
- "alt": "Alternativ Text 6",
42
- "figcaption": "Figcaption DE 6"
73
+ "image": {
74
+ "id": 6,
75
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
76
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
77
+ "alt": "Alternative Text 6"
78
+ },
79
+ "figcaption": {
80
+ "show": true,
81
+ "position": "bottom",
82
+ "text": "Figcaption 6",
83
+ "textAlign": "center"
84
+ }
43
85
  },
44
86
  {
45
- "imgId": 7,
46
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-red-landscape.jpg",
47
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-red-landscape.jpg",
48
- "alt": "Alternativ Text 7",
49
- "figcaption": "Figcaption DE 7"
87
+ "image": {
88
+ "id": 7,
89
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
90
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
91
+ "alt": "Alternative Text 7"
92
+ },
93
+ "figcaption": {
94
+ "show": true,
95
+ "position": "bottom",
96
+ "text": "Figcaption 7",
97
+ "textAlign": "center"
98
+ }
50
99
  },
51
100
  {
52
- "imgId": 8,
53
- "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-yellow-landscape.jpg",
54
- "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-yellow-landscape.jpg",
55
- "alt": "Alternativ Text 8",
56
- "figcaption": "Figcaption DE 8"
101
+ "image": {
102
+ "id": 8,
103
+ "srcImageSmall": "media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg",
104
+ "srcImageLarge": "media/images/thumbnail-scroller/original/logo-cmd-blue-landscape.jpg",
105
+ "alt": "Alternative Text 8"
106
+ },
107
+ "figcaption": {
108
+ "show": true,
109
+ "position": "bottom",
110
+ "text": "Figcaption 8",
111
+ "textAlign": "center"
112
+ }
57
113
  }
58
114
  ]
@@ -293,7 +293,7 @@ html {
293
293
  --color-scheme-background-inverted: var(--light-mode-background-color);
294
294
  --default-background-color-lightness: 20%;
295
295
 
296
- :where(label, .label) .label-text > [class*="icon"] {
296
+ :where(label, .label) .label-text > [class*="icon-"] {
297
297
  background: var(--dark-gray);
298
298
  }
299
299
  }
@@ -122,10 +122,44 @@
122
122
 
123
123
  <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.email')}}</span>
124
124
  </dt>
125
- <dd class="email" v-if="addressData.email?.value">
125
+ <dd v-if="addressData.email?.value" class="email" >
126
126
  <a :href="'mailto:' + addressData.email?.value" class="email">{{ addressData.email.value }}</a>
127
127
  </dd>
128
128
  <!-- end email -->
129
+
130
+ <!-- begin web site -->
131
+ <dt v-if="addressData.website?.value">
132
+ <!-- begin CmdIcon -->
133
+ <CmdIcon
134
+ v-if="addressData.website.iconClass && showLabelIcons"
135
+ :iconClass="addressData.website.iconClass"
136
+ :type="addressData.website.iconType"
137
+ />
138
+ <!-- end CmdIcon -->
139
+
140
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.website')}}</span>
141
+ </dt>
142
+ <dd v-if="addressData.website?.value" >
143
+ <a :href="addressData.website.value" target="_blank" :title="getMessage('cmdaddressdata.title.visit_website')">{{ websiteUrlText }}</a>
144
+ </dd>
145
+ <!-- end web site -->
146
+
147
+ <!-- begin custom data -->
148
+ <dt v-if="addressData.custom?.value">
149
+ <!-- begin CmdIcon -->
150
+ <CmdIcon
151
+ v-if="addressData.custom.iconClass && showLabelIcons"
152
+ :iconClass="addressData.custom.iconClass"
153
+ :type="addressData.custom.iconType"
154
+ />
155
+ <!-- end CmdIcon -->
156
+
157
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.custom')}}</span>
158
+ </dt>
159
+ <dd v-if="addressData.custom?.value" >
160
+ {{ addressData.custom.value }}
161
+ </dd>
162
+ <!-- end custom data -->
129
163
  </dl>
130
164
  <!-- end list with labels -->
131
165
 
@@ -159,6 +193,12 @@
159
193
  <li v-if="addressData.email?.value" :title="getMessage('cmdaddressdata.title.send_email')">
160
194
  <a :href="'mailto:' + addressData.email.value" class="email">{{ addressData.email.value }}</a>
161
195
  </li>
196
+ <li v-if="addressData.website?.value" :title="getMessage('cmdaddressdata.title.visit_website')">
197
+ <a :href="addressData.website.value" target="_blank">{{ websiteUrlText }}</a>
198
+ </li>
199
+ <li v-if="addressData.custom?.value">
200
+ {{ addressData.custom.value }}
201
+ </li>
162
202
  </ul>
163
203
  <!-- end list without labels -->
164
204
  </address>
@@ -229,6 +269,9 @@ export default {
229
269
  computed: {
230
270
  locateAddress() {
231
271
  return "https://www.google.com/maps/place/" + this.addressData.address.streetNo + ", " + this.addressData.address.zip + " " + this.addressData.address.city
272
+ },
273
+ websiteUrlText() {
274
+ return this.addressData.website?.value.replace("https://", "")
232
275
  }
233
276
  }
234
277
  }
@@ -245,7 +288,7 @@ export default {
245
288
  align-items: center;
246
289
 
247
290
  &.address {
248
- align-items: flex-start;
291
+ align-self: flex-start;
249
292
  }
250
293
  }
251
294
  }
@@ -1,66 +1,85 @@
1
1
  <template>
2
2
  <!-- begin boxType 'content' -->
3
3
  <div v-if="boxType === 'content'"
4
- :class="['cmd-box box content', {open : open, collapsible: collapsible, 'stretch-vertically': stretchVertically && !collapsible, 'stretch-horizontally': stretchHorizontally}]">
5
- <template v-if="useSlots?.includes('header')">
6
- <!-- begin collapsible header with slot -->
7
- <div v-if="collapsible" class="box-header">
8
- <!-- begin slot 'header' -->
9
- <slot name="header"></slot>
10
- <!-- end slot 'header' -->
11
-
12
- <a href="#" @click.prevent="toggleContentVisibility" :title="open ? iconOpen.tooltip : iconClosed.tooltip" class="toggle-icon">
13
- <!-- begin CmdIcon -->
14
- <CmdIcon :iconClass="[open ? iconOpen.iconClass : iconClosed.iconClass]" :type="[open ? iconOpen.iconType : iconClosed.iconType]" />
15
- <!-- end CmdIcon -->
16
- </a>
17
- </div>
18
- <!-- end collapsible header with slot -->
4
+ :class="[
5
+ 'cmd-box box content',
6
+ {open : open, collapsible: collapsible,
7
+ 'stretch-vertically': stretchVertically && !collapsible,
8
+ 'stretch-horizontally': stretchHorizontally}]"
9
+ >
10
+ <!-- begin collapsible header with slot -->
11
+ <a v-if="collapsible"
12
+ href="#"
13
+ class="box-header"
14
+ :title="open ? iconOpen.tooltip : iconClosed.tooltip"
15
+ @click.prevent="toggleContentVisibility"
16
+ >
17
+ <!-- begin slot 'header' -->
18
+ <slot v-if="useSlots?.includes('header')" name="header"></slot>
19
+ <!-- end slot 'header' -->
19
20
 
20
- <!-- begin default header with slot -->
21
- <div v-else class="box-header">
22
- <!-- begin slot 'header' -->
23
- <slot name="header"></slot>
24
- <!-- end slot 'header' -->
25
- </div>
26
- <!-- end default header with slot -->
27
- </template>
28
- <template v-else>
29
- <!-- begin header for collapsible -->
30
- <a v-if="collapsible" class="box-header" href="#" :title="open ? iconOpen.tooltip : iconClosed.tooltip" @click.prevent="toggleContentVisibility">
31
- <!-- begin CmdHeadline -->
32
- <CmdHeadline
33
- v-if="cmdHeadline?.headlineText"
34
- v-bind="cmdHeadline"
35
- />
36
- <!-- end CmdHeadline -->
21
+ <!-- begin CmdHeadline -->
22
+ <CmdHeadline
23
+ v-else-if="cmdHeadline?.headlineText"
24
+ v-bind="cmdHeadline"
25
+ />
26
+ <!-- end CmdHeadline -->
27
+
28
+ <!-- begin CmdIcon -->
29
+ <CmdIcon
30
+ :iconClass="open ? iconOpen.iconClass : iconClosed.iconClass"
31
+ :type="open ? iconOpen.iconType : iconClosed.iconType"
32
+ />
33
+ <!-- end CmdIcon -->
34
+ </a>
35
+ <!-- end collapsible header with slot -->
37
36
 
38
- <!-- begin CmdIcon -->
39
- <CmdIcon class="toggle-icon" :iconClass="[open ? iconOpen.iconClass : iconClosed.iconClass]" :type="[open ? iconOpen.iconType : iconClosed.iconType]" />
40
- <!-- end CmdIcon -->
41
- </a>
42
- <!-- end header for collapsible -->
37
+ <!-- begin default header with slot -->
38
+ <div v-else class="box-header">
39
+ <!-- begin slot 'header' -->
40
+ <slot v-if="useSlots?.includes('header')" name="header"></slot>
41
+ <!-- end slot 'header' -->
43
42
 
44
43
  <!-- begin CmdHeadline -->
45
44
  <CmdHeadline
46
- v-else-if="!collapsible && cmdHeadline?.headlineText"
47
- class="box-header"
45
+ v-else-if="cmdHeadline?.headlineText"
48
46
  v-bind="cmdHeadline"
49
47
  />
50
48
  <!-- end CmdHeadline -->
51
- </template>
49
+ </div>
50
+ <!-- end default header with slot -->
52
51
 
53
52
  <!-- begin box-body -->
54
53
  <div v-if="open" class="box-body" aria-expanded="true" role="article">
55
54
  <!-- begin slot 'body' -->
56
- <slot name="body">
57
- <transition :name="toggleTransition">
58
- <div class="padding">
59
- <p :class="{'cutoff-text': cutoffTextLines > 0, 'fade-last-line': fadeLastLine }">{{ textBody }}</p>
60
- </div>
61
- </transition>
55
+ <slot v-if="useSlots?.includes('body')" name="body">
56
+ <transition-group :name="toggleTransition">
57
+ <p :class="{
58
+ 'cutoff-text': cutoffTextLines > 0,
59
+ 'fade-last-line': fadeLastLine && !showCutOffText,
60
+ 'show-text' : showCutOffText
61
+ }">
62
+ {{ textBody }}
63
+ </p>
64
+ <a v-if="cutoffTextLines > 0" href="#" @click.prevent="toggleCutOffText">
65
+ {{ showCutOffText ? getMessage("cmdbox.contentbox.collapse_text") : getMessage("cmdbox.contentbox.expand_text") }}
66
+ </a>
67
+ </transition-group>
62
68
  </slot>
63
69
  <!-- end slot 'body' -->
70
+
71
+ <template v-else>
72
+ <img v-if="image" :src="image.src" :alt="image.altText"/>
73
+
74
+ <!-- begin CmdHeadline -->
75
+ <CmdHeadline
76
+ v-if="cmdHeadline?.headlineText"
77
+ v-bind="cmdHeadline"
78
+ />
79
+ <!-- end CmdHeadline -->
80
+
81
+ <p v-if="textBody">{{ textBody }}</p>
82
+ </template>
64
83
  </div>
65
84
  <!-- end box-body -->
66
85
 
@@ -73,7 +92,10 @@
73
92
  <!-- end boxType 'content' -->
74
93
 
75
94
  <!-- begin boxType 'product' -->
76
- <a v-else-if="boxType === 'product' && product" :class="['cmd-box box product', {'stretch-vertically': stretchVertically, 'stretch-horizontally': stretchHorizontally}]" href="#" @click.prevent="clickOnProduct(product)">
95
+ <a v-else-if="boxType === 'product' && product"
96
+ :class="['cmd-box box product', {'stretch-vertically': stretchVertically, 'stretch-horizontally': stretchHorizontally}]"
97
+ href="#"
98
+ @click.prevent="clickOnProduct(product)">
77
99
  <div class="box-header flex-container vertical">
78
100
  <figure v-if="product.image !== undefined">
79
101
  <img :src="product.image.src" :alt="product.image.alt"/>
@@ -150,7 +172,8 @@ export default {
150
172
  data() {
151
173
  return {
152
174
  open: this.collapsible ? this.collapsingBoxesOpen : true,
153
- active: true
175
+ active: true,
176
+ showCutOffText: false
154
177
  }
155
178
  },
156
179
  emits: ["click", "toggle-collapse"],
@@ -235,6 +258,15 @@ export default {
235
258
  type: Array,
236
259
  required: false
237
260
  },
261
+ /**
262
+ * image-object for box-body of content-box
263
+ *
264
+ * src and altText must be set if image is sed
265
+ */
266
+ image: {
267
+ type: Object,
268
+ required: false
269
+ },
238
270
  /**
239
271
  * String used as content (placed in a paragraph-tag) for box-body
240
272
  *
@@ -282,8 +314,8 @@ export default {
282
314
  default: true
283
315
  },
284
316
  /**
285
- * allow box to be stretched as high as parent-element
286
- */
317
+ * allow box to be stretched as high as parent-element
318
+ */
287
319
  stretchVertically: {
288
320
  type: Boolean,
289
321
  default: true
@@ -312,6 +344,11 @@ export default {
312
344
 
313
345
  this.$emit('toggle-collapse', this.open)
314
346
  },
347
+ // toggle cutofftext (between full and faded text)
348
+ toggleCutOffText() {
349
+ this.showCutOffText = !this.showCutOffText
350
+ this.$emit('toggle-cutofftext', this.showCutOffText)
351
+ },
315
352
  // for boxType === product
316
353
  clickOnProduct(product) {
317
354
  this.$emit('click', product)
@@ -338,6 +375,7 @@ export default {
338
375
 
339
376
  &.stretch-horizontally {
340
377
  display: flex;
378
+ width: 100%;
341
379
  }
342
380
 
343
381
  &.stretch-vertically {
@@ -376,7 +414,7 @@ export default {
376
414
  }
377
415
  }
378
416
 
379
- > .box-header, > a {
417
+ > .box-header {
380
418
  display: flex;
381
419
  align-items: center;
382
420
  border-top-left-radius: var(--border-radius);
@@ -395,7 +433,11 @@ export default {
395
433
  margin-bottom: 0;
396
434
  }
397
435
 
398
- > .toggle-icon, .toggle-icon > [class*="icon"] {
436
+ > .toggle-icon {
437
+ margin-left: auto;
438
+ }
439
+
440
+ > .toggle-icon, .toggle-icon > [class*="icon-"] {
399
441
  font-size: var(--font-size-small);
400
442
  }
401
443
  }
@@ -405,6 +447,8 @@ export default {
405
447
  padding: 0;
406
448
 
407
449
  p.cutoff-text {
450
+ padding: var(--default-padding);
451
+ margin: 0;
408
452
  overflow: hidden;
409
453
  height: calc(var(--line-of-text-height) * v-bind(cutoffTextLines));
410
454
 
@@ -414,14 +458,20 @@ export default {
414
458
  position: absolute;
415
459
  left: 0;
416
460
  bottom: 0;
417
- height: var(--line-of-text-height);
418
- background: linear-gradient(to bottom, transparent 0%, var(--default-background-color) 90%);
461
+ height: calc(var(--line-of-text-height) * 3);
462
+ background: linear-gradient(to bottom, transparent 0%, var(--default-background-color) 100%);
419
463
  }
420
- }
421
464
 
422
- .padding {
423
- padding: var(--default-padding);
424
- margin: 0;
465
+ &.show-text {
466
+ height: auto;
467
+ }
468
+
469
+ & + a {
470
+ border-top: var(--default-border);
471
+ display: block;
472
+ padding: var(--default-padding);
473
+ margin: 0;
474
+ }
425
475
  }
426
476
 
427
477
  img {
@@ -564,14 +614,14 @@ export default {
564
614
 
565
615
  padding: var(--default-padding);
566
616
 
567
- .cmd-headline {
617
+ .cmd-headline {
568
618
  > * {
569
619
  display: block;
570
620
  text-align: center;
571
621
  }
572
622
  }
573
623
 
574
- img, > div:first-child > [class*="icon"] {
624
+ img, > div:first-child > [class*="icon-"] {
575
625
  display: table;
576
626
  margin: 0 auto var(--default-margin) auto;
577
627
  padding: calc(var(--default-padding) * 3);
@@ -593,7 +643,7 @@ export default {
593
643
  aspect-ratio: 1/1;
594
644
  }
595
645
 
596
- > div:first-child > [class*="icon"] {
646
+ > div:first-child > [class*="icon-"] {
597
647
  font-size: var(--icon-size);
598
648
  }
599
649
  }
@@ -640,7 +690,7 @@ export default {
640
690
  background: var(--primary-color);
641
691
  color: var(--pure-white);
642
692
 
643
- span, span[class*="icon"] {
693
+ span, [class*="icon-"] {
644
694
  color: var(--pure-white);
645
695
  }
646
696
  }
@@ -1,19 +1,30 @@
1
1
  <template>
2
2
  <div class="cmd-company-logo">
3
3
  <router-link v-if="link.type === 'router'" :to="link.path" :title="link.tooltip">
4
- <img :src="pathCurrentLogo" :alt="altText"/>
4
+ <!-- begin CmdImage -->
5
+ <CmdImage :image="image" />
6
+ <!-- end CmdImage -->
5
7
  </router-link>
6
8
  <a v-else :href="link.path" :title="link.tooltip">
7
- <img :src="pathCurrentLogo" :alt="altText" />
9
+ <!-- begin CmdImage -->
10
+ <CmdImage :image="image" />
11
+ <!-- end CmdImage -->
8
12
  </a>
9
13
  </div>
10
14
  </template>
11
15
 
12
16
  <script>
17
+ // import functions
13
18
  import {getRoute} from "../utilities.js"
14
19
 
20
+ // import components
21
+ import CmdImage from "./CmdImage"
22
+
15
23
  export default {
16
24
  name: "CmdCompanyLogo",
25
+ components: {
26
+ CmdImage
27
+ },
17
28
  data() {
18
29
  return {
19
30
  prefersColorScheme: ""
@@ -57,6 +68,12 @@ export default {
57
68
  return this.pathDefaultLogo
58
69
  }
59
70
  return this.pathDarkmodeLogo
71
+ },
72
+ image() {
73
+ return {
74
+ src: this.pathCurrentLogo,
75
+ alt: this.altText
76
+ }
60
77
  }
61
78
  },
62
79
  created() {
@@ -60,7 +60,7 @@
60
60
 
61
61
  <!-- begin optional icon -->
62
62
  <!-- begin CmdIcon -->
63
- <CmdIcon v-if="optionIcon?.iconClass" :type="optionIcon?.iconType" :class="optionIcon?.iconClass" />
63
+ <CmdIcon v-if="optionIcon?.iconClass" :type="optionIcon?.iconType" :iconClass="optionIcon?.iconClass" />
64
64
  <!-- end CmdIcon -->
65
65
  <!-- end optional icon -->
66
66
 
@@ -661,7 +661,7 @@ export default {
661
661
  > a {
662
662
  border-color: var(--status-color);
663
663
 
664
- > span, span[class*="icon-"] {
664
+ > span, [class*="icon-"] {
665
665
  color: var(--status-color);
666
666
  }
667
667