comand-component-library 3.3.6 → 3.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) 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 +3 -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/CmdSiteHeader.vue +0 -5
  31. package/src/components/CmdSlideButton.vue +10 -3
  32. package/src/components/CmdSlideshow.vue +38 -31
  33. package/src/components/CmdSystemMessage.vue +32 -16
  34. package/src/components/CmdTable.vue +1 -1
  35. package/src/components/CmdTabs.vue +11 -11
  36. package/src/components/CmdThumbnailScroller.vue +15 -12
  37. package/src/components/CmdTooltip.vue +3 -3
  38. package/src/components/CmdUploadForm.vue +20 -20
  39. package/src/documentation/generated/CmdBoxPropertyDescriptions.json +7 -0
  40. package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +3 -13
  41. package/src/documentation/generated/CmdHeadlinePropertyDescriptions.json +10 -0
  42. package/src/documentation/generated/CmdIconPropertyDescriptions.json +1 -1
  43. package/src/documentation/generated/CmdImagePropertyDescriptions.json +12 -0
  44. package/src/documentation/generated/CmdImageZoomPropertyDescriptions.json +4 -4
  45. package/src/documentation/generated/CmdPagerPropertyDescriptions.json +14 -9
  46. package/src/index.js +4 -1
  47. package/src/mixins/CmdAddressData/DefaultMessageProperties.js +5 -2
  48. package/src/mixins/CmdBox/DefaultMessageProperties.js +3 -1
  49. 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