comand-component-library 3.2.4 → 3.2.6

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comand-component-library",
3
- "version": "3.2.04",
3
+ "version": "3.2.06",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "clickout-event": "^1.1.2",
21
- "comand-frontend-framework": "^3.2.84",
21
+ "comand-frontend-framework": "^3.2.91",
22
22
  "core-js": "^3.20.1",
23
23
  "prismjs": "^1.27.0",
24
24
  "sass": "^1.54.9",
package/src/App.vue CHANGED
@@ -29,7 +29,7 @@
29
29
  <!-- end site-header --------------------------------------------------------------------------------------------------------------------------------------------------->
30
30
  <main>
31
31
  <!-- begin width-limitation-wrapper (with table of contents) --------------------------------------------------------------------------------------------------------------------------------------------------->
32
- <CmdWidthLimitationWrapper>
32
+ <CmdWidthLimitationWrapper :cmdHeadline="{headlineText: 'Table of contents', headlineLevel: 2}">
33
33
  <div class="flex-container">
34
34
  <ul>
35
35
  <li><a href="#section-advanced-form-elements">Advanced Form Elements</a></li>
@@ -66,7 +66,6 @@
66
66
  <li><a href="#section-upload-form">Upload-Form</a></li>
67
67
  </ul>
68
68
  </div>
69
- <hr/>
70
69
  </CmdWidthLimitationWrapper>
71
70
  <!-- end width-limitation-wrapper (with table of contents) --------------------------------------------------------------------------------------------------------------------------------------------------->
72
71
 
@@ -933,9 +932,10 @@
933
932
  <h2 class="headline-demopage">Fancybox</h2>
934
933
  <a href="#" @click.prevent="showFancyBox('text','Some text')">Open FancyBox with text</a>
935
934
  <a href="#"
936
- @click.prevent="showFancyBox('image', 'media/images/content-images/logo-business-edition-landscape.jpg', 'Alternative text')"
937
- title="Open FancyBox with large image">
938
- <img src="media/images/content-images/logo-business-edition-landscape.jpg" alt="Alternative text"/>
935
+ @click.prevent="showFancyBox('image', 'media/images/content-images/landscape-large.jpg', 'Alternative text')"
936
+ title="Open FancyBox with large image"
937
+ >
938
+ <img src="media/images/content-images/landscape-small.jpg" alt="Alternative text"/>
939
939
  </a>
940
940
  </CmdWidthLimitationWrapper>
941
941
  <!-- end fancybox ------------------------------------------------------------------------------------------------------------------------------------------------------->
@@ -1,7 +1 @@
1
- /* template.css - ADD OVERWRITES AND YOUR CUSTOM STYLES IN THIS FILE */
2
-
3
- /* begin example */
4
- html {
5
- --primary-color-hsl-values: 201, 93%, 40%; /* primary-color hsl-values */
6
- }
7
- /* end example */
1
+ /* template.css - ADD OVERWRITES AND YOUR CUSTOM STYLES IN THIS FILE */
@@ -274,7 +274,7 @@ export default {
274
274
  event.preventDefault()
275
275
  fetch(event.target.href).then((response) =>
276
276
  response.text()
277
- ).then((content) => { /* use arrow function to get access to dataPrivacy by 'this' = vue-instance (otherwise 'this' wouldn't be vue-instance in this fethc-method */
277
+ ).then((content) => { /* use arrow function to get access to dataPrivacy by 'this' = vue-instance (otherwise 'this' wouldn't be vue-instance in this fetch-method) */
278
278
  this.dataPrivacyContent = content
279
279
  })
280
280
  }
@@ -295,9 +295,12 @@ export default {
295
295
 
296
296
  .cmd-box {
297
297
  .box-header {
298
+ padding: 0;
298
299
  justify-content: unset; /* overwrite setting for collapsible boxes */
299
300
 
300
301
  label {
302
+ padding: calc(var(--default-padding) / 2) var(--default-padding);
303
+
301
304
  &.disabled {
302
305
  .label-text span {
303
306
  color: var(--pure-white) !important; /* required to set label-text in header to white */
@@ -305,6 +308,7 @@ export default {
305
308
  }
306
309
 
307
310
  & + .toggle-icon {
311
+ padding: calc(var(--default-padding) / 2) var(--default-padding);
308
312
  width: 100%;
309
313
  justify-content: flex-end;
310
314
  text-align: right;
@@ -312,8 +316,10 @@ export default {
312
316
  }
313
317
 
314
318
  &:hover, &:active, &:focus {
319
+ background: var(--hyperlink-color);
320
+
315
321
  label.disabled .label-text span {
316
- color: var(--disabled-color) !important; /* required to set label-text on hover back to disabled-color */
322
+ color: var(--pure-white) !important; /* required to set label-text on hover back to disabled-color */
317
323
  }
318
324
  }
319
325
  }
@@ -5,35 +5,7 @@
5
5
  :class="['cmd-fancybox', {'show-overlay': showOverlay, 'image' : fancyBoxImageUrl || fancyBoxGallery}]"
6
6
  :aria-label="ariaLabelText"
7
7
  >
8
- <!-- begin print buttons -->
9
- <div class="button-wrapper no-flex"
10
- v-if="(fancyboxOptions.printButtons && (fancyboxOptions.printButtons.color || fancyboxOptions.printButtons.grayscale)) || fancyboxOptions.closeIcon">
11
- <a href="#"
12
- v-if="fancyboxOptions.printButtons && fancyboxOptions.printButtons.color && fancyboxOptions.printButtons.color.show"
13
- :class="['button', fancyboxOptions.printButtons.color.iconClass]"
14
- :title="fancyboxOptions.printButtons.color.tooltip"
15
- id="print-color"
16
- @click.prevent="printInGrayscale = false">
17
- </a>
18
- <a href="#"
19
- v-if="fancyboxOptions.printButtons && fancyboxOptions.printButtons.grayscale && fancyboxOptions.printButtons.grayscale.show"
20
- :class="['button', fancyboxOptions.printButtons.grayscale.iconClass]"
21
- :title="fancyboxOptions.printButtons.grayscale.tooltip"
22
- id="print-grayscale"
23
- @click.prevent="printInGrayscale = true">
24
- </a>
25
- <!-- end print buttons -->
26
-
27
- <!-- begin close-icon -->
28
- <a href="#"
29
- v-if="fancyboxOptions.closeIcon"
30
- :class="fancyboxOptions.closeIcon.iconClass"
31
- :title="fancyboxOptions.closeIcon.tooltip"
32
- @click.prevent="close">
33
- </a>
34
- <!-- end close-icon -->
35
- </div>
36
- <div :class="{'grayscale' : printInGrayscale}">
8
+ <header class="flex-container">
37
9
  <!-- begin CmdHeadline -->
38
10
  <CmdHeadline
39
11
  v-if="cmdHeadline?.show"
@@ -43,8 +15,48 @@
43
15
  />
44
16
  <!-- end CmdHeadline -->
45
17
 
18
+ <!-- begin button-wrapper -->
19
+ <div
20
+ v-if="(fancyboxOptions.printButtons && (fancyboxOptions.printButtons.color || fancyboxOptions.printButtons.grayscale)) || fancyboxOptions.closeIcon"
21
+ class="button-wrapper no-flex"
22
+ > <!-- begin print buttons -->
23
+ <a v-if="fancyboxOptions.printButtons && fancyboxOptions.printButtons.color && fancyboxOptions.printButtons.color.show"
24
+ href="#"
25
+ class="button primary"
26
+ :class="fancyboxOptions.printButtons.color.iconClass"
27
+ :title="fancyboxOptions.printButtons.color.tooltip"
28
+ id="print-color"
29
+ @click.prevent="printInGrayscale = false">
30
+ </a>
31
+ <a v-if="fancyboxOptions.printButtons && fancyboxOptions.printButtons.grayscale && fancyboxOptions.printButtons.grayscale.show"
32
+ href="#"
33
+ class="button primary"
34
+ :class="fancyboxOptions.printButtons.grayscale.iconClass"
35
+ :title="fancyboxOptions.printButtons.grayscale.tooltip"
36
+ id="print-grayscale"
37
+ @click.prevent="printInGrayscale = true">
38
+ </a>
39
+ <!-- end print buttons -->
40
+
41
+ <!-- begin close-icon -->
42
+ <a v-if="fancyboxOptions.closeIcon"
43
+ href="#"
44
+ class="button primary"
45
+ id="close-dialog"
46
+ :class="fancyboxOptions.closeIcon.iconClass"
47
+ :title="fancyboxOptions.closeIcon.tooltip"
48
+ @click.prevent="close">
49
+ </a>
50
+ <!-- end close-icon -->
51
+ </div>
52
+ <!-- end button-wrapper -->
53
+ </header>
54
+ <div :class="['outer-content-wrapper', {'grayscale' : printInGrayscale}]">
46
55
  <div v-if="fancyBoxImageUrl" class="content">
47
- <img :src="fancyBoxImageUrl" :alt="altText"/>
56
+ <figure>
57
+ <img :src="fancyBoxImageUrl" :alt="altText" />#
58
+ <figcaption v-if="figcaption">{{ figcaption }}</figcaption>
59
+ </figure>
48
60
  </div>
49
61
  <div v-else-if="fancyBoxContent" class="content" v-html="fancyBoxContent"></div>
50
62
  <div v-else-if="fancyBoxElements" class="content"></div>
@@ -142,6 +154,13 @@ const FancyBox = defineComponent({
142
154
  type: String,
143
155
  required: false
144
156
  },
157
+ /**
158
+ * figcaption if image is given by url
159
+ */
160
+ figcaption: {
161
+ type: String,
162
+ required: false
163
+ },
145
164
  /**
146
165
  * options to show at top (closeIcon, printButtons)
147
166
  */
@@ -239,21 +258,16 @@ const FancyBox = defineComponent({
239
258
  }
240
259
  },
241
260
  created() {
261
+ // enable closing dialog by escape-key
242
262
  if (this.allowEscapeKey) {
243
263
  this.$_FancyBox_escapeKeyHandler = e => (e.key === "Escape" || e.key === "Esc") && this.close()
244
264
  document.querySelector("body").addEventListener("keyup", this.$_FancyBox_escapeKeyHandler)
245
265
  }
246
266
 
247
- /* begin avoid scrolling if fancybox is shown */
248
- /* register new properties for vue-instance */
249
- /* get current vertical scroll position */
250
- // this.$_FancyBox_verticalScrollPosition = window.scrollY
251
- //
252
-
267
+ // scroll content to initial position
253
268
  this.$_FancyBox_scrollHandler = () => {
254
269
  window.scrollTo(0, this.$_FancyBox_verticalScrollPosition)
255
270
  }
256
- /* end avoid scrolling if fancybox is shown */
257
271
 
258
272
  this.$watch(
259
273
  () => [
@@ -266,12 +280,14 @@ const FancyBox = defineComponent({
266
280
  )
267
281
  },
268
282
  mounted() {
283
+ // avoid scrolling if fancybox is shown
269
284
  if (this.showFancyBox) {
270
285
  document.querySelector("body").classList.add("avoid-scrolling")
271
286
  this.$refs.dialog.showModal()
272
287
  }
273
288
  },
274
289
  beforeUnmount() {
290
+ // remove event-listener for escape-key
275
291
  if (this.allowEscapeKey) {
276
292
  document.querySelector("body").removeEventListener("keyup", this.$_FancyBox_escapeKeyHandler)
277
293
  }
@@ -308,7 +324,6 @@ const FancyBox = defineComponent({
308
324
  this.index = this.fancyBoxGallery.length - 1;
309
325
  }
310
326
  },
311
-
312
327
  showItem(imgId) {
313
328
  for (let i = 0; i < this.fancyBoxGallery.length; i++) {
314
329
  if (this.fancyBoxGallery[i].imgId === imgId) {
@@ -317,7 +332,6 @@ const FancyBox = defineComponent({
317
332
  }
318
333
  }
319
334
  },
320
-
321
335
  showNextItem() {
322
336
  if (this.index < this.fancyBoxGallery.length - 1) {
323
337
  this.index++;
@@ -325,7 +339,6 @@ const FancyBox = defineComponent({
325
339
  this.index = 0;
326
340
  }
327
341
  },
328
-
329
342
  close() {
330
343
  if (this.$options.el) {
331
344
  this.$destroy()
@@ -335,6 +348,7 @@ const FancyBox = defineComponent({
335
348
  this.$emit("update:show", false)
336
349
  }
337
350
 
351
+ // remove class to re-enable scrolling
338
352
  document.querySelector("body").classList.remove("avoid-scrolling")
339
353
  }
340
354
  },
@@ -351,7 +365,7 @@ const FancyBox = defineComponent({
351
365
  // window.addEventListener("scroll", this.$_FancyBox_scrollHandler)
352
366
  this.$refs.dialog.showModal()
353
367
  } else {
354
- // remove listener and class to re-enable scroll
368
+ // remove class to re-enable scrolling
355
369
  document.querySelector("body").classList.remove("avoid-scrolling")
356
370
  // window.removeEventListener("scroll", this.$_FancyBox_scrollHandler)
357
371
  // console.log("$_FancyBox_verticalScrollPosition", this.$_FancyBox_verticalScrollPosition)
@@ -365,11 +379,11 @@ const FancyBox = defineComponent({
365
379
  })
366
380
 
367
381
  async function getContentType(url) {
368
- const response = await fetch(url, {method: 'HEAD'})
382
+ const response = await fetch(url, {method: "HEAD"})
369
383
  if (response.ok) {
370
- return (response.headers.get('Content-Type') || '').split(';')[0]
384
+ return (response.headers.get("Content-Type") || "").split(";")[0]
371
385
  }
372
- return 'text/html'
386
+ return "text/html"
373
387
  }
374
388
 
375
389
  export {openFancyBox}
@@ -378,19 +392,18 @@ export default FancyBox
378
392
 
379
393
  <style lang="scss">
380
394
  /* begin cmd-fancybox ---------------------------------------------------------------------------------------- */
381
- @import '../assets/styles/variables';
395
+ @import "../assets/styles/variables";
382
396
 
383
397
  .cmd-fancybox {
384
- overflow-x: hidden;
385
398
  z-index: 500;
386
399
  flex-direction: column;
387
400
  padding: var(--default-padding);
388
- min-width: 30%;
389
- max-width: var(--max-width);
390
- min-height: 30%;
391
- max-height: 80%;
401
+ min-width: 30vw;
402
+ min-height: 30vh;
392
403
  background: var(--pure-white);
393
404
  border-radius: var(--border-radius);
405
+ overflow: hidden;
406
+ gap: calc(var(--default-gap) / 2);
394
407
 
395
408
  // detect open-attribute (will be added to dom automatically)
396
409
  &[open] {
@@ -402,6 +415,10 @@ export default FancyBox
402
415
  background: rgba(0, 0, 0, var(--reduced-opacity));
403
416
  }
404
417
 
418
+ > header {
419
+ display: flex;
420
+ }
421
+
405
422
  .cmd-cookie-disclaimer {
406
423
  padding: 0;
407
424
  }
@@ -411,7 +428,9 @@ export default FancyBox
411
428
  }
412
429
 
413
430
  &.image {
414
- overflow-y: hidden;
431
+ .outer-content-wrapper {
432
+ overflow-y: hidden;
433
+ }
415
434
 
416
435
  img {
417
436
  display: block;
@@ -422,76 +441,111 @@ export default FancyBox
422
441
  }
423
442
  }
424
443
 
425
- > .button-wrapper {
426
- margin-bottom: var(--default-margin);
427
- flex-direction: row;
444
+ > header {
445
+ justify-content: space-between;
428
446
 
429
- a:not(.button) {
430
- margin-left: auto;
447
+ > .cmd-headline {
448
+ max-width: 80%;
449
+ flex-shrink: 1;
450
+ margin-bottom: 0;
431
451
  }
432
452
 
433
- a.icon-print {
434
- background: linear-gradient(135deg, #009fe3 0%, #009fe3 25%, #e6007e 25%, #e6007e 50%, #ffed00 50%, #ffed00 50%, #ffed00 75%, #000000 75%, #000000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
435
- border: var(--default-border);
436
- margin-left: 0;
437
- text-shadow: var(--text-shadow);
453
+ > .button-wrapper {
454
+ flex-shrink: 0;
455
+ flex-direction: row;
456
+ align-items: flex-start;
457
+ gap: calc(var(--default-gap) / 2);
458
+ margin-left: auto;
438
459
 
439
- &:hover, &:active, &:focus {
440
- border: var(--primary-border);
441
- color: var(--pure-white);
442
- }
460
+ > .button {
461
+ display: block;
462
+ border: var(--default-border);
463
+ padding: .2rem;
464
+ min-width: 0;
465
+ min-height: 0;
443
466
 
444
- &#print-grayscale {
445
- background: linear-gradient(135deg, #000000 0%, #000000 50%, #ffffff 50%, #ffffff 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
446
- }
447
- }
467
+ &[class*="icon"] {
468
+ color: var(--text-color);
469
+ background: var(--pure-white);
470
+ }
448
471
 
449
- .content > :only-child {
450
- margin-bottom: 0;
451
- }
452
- }
472
+ &.icon-print {
473
+ background: linear-gradient(135deg, #009fe3 0%, #009fe3 25%, #e6007e 25%, #e6007e 50%, #ffed00 50%, #ffed00 50%, #ffed00 75%, var(--medium-gray) 75%, var(--medium-gray) 100%);
453
474
 
454
- .gallery-scroller {
455
- background: var(--pure-black);
456
- max-width: 80%;
457
- left: 0;
458
- right: 0;
459
- position: fixed;
460
- bottom: 1rem;
461
- margin: auto;
462
- background: var(--pure-black);
463
-
464
- li:not(.active) {
465
- img {
466
- opacity: var(--reduced-opacity);
467
- }
475
+ &#print-grayscale {
476
+ background: linear-gradient(135deg, var(--medium-gray) 0%, var(--medium-gray) 50%, var(--pure-white) 50%, var(--pure-white) 100%);
477
+
478
+ &:hover, &:active, &:focus {
479
+ background: var(--pure-white);
480
+ }
481
+ }
482
+ }
468
483
 
469
- a {
470
484
  &:hover, &:active, &:focus {
471
- img {
472
- opacity: 1;
485
+ border: var(--primary-border);
486
+ background: var(--pure-white);
487
+
488
+ &[class*="icon"] {
489
+ color: var(--primary-color);
473
490
  }
474
491
  }
475
492
  }
493
+ }
494
+ }
495
+
496
+ .outer-content-wrapper {
497
+ max-height: 85vh;
498
+ overflow-x: hidden;
499
+ max-width: var(--max-width);
500
+
501
+ .content {
502
+ > img, > video {
503
+ &:only-child {
504
+ margin: auto;
505
+ max-height: 80vmin;
506
+ max-width: 80vmax;
507
+ }
508
+ }
476
509
 
477
510
  figcaption {
478
- color: var(--pure-white);
479
- text-decoration: none;
511
+ font-size: 2rem;
512
+ padding: calc(var(--default-padding) / 2) 0;
480
513
  }
481
514
  }
482
515
  }
483
516
 
484
517
  @media only screen and (max-width: $medium-max-width) {
485
- .gallery-scroller {
486
- display: block;
518
+ .outer-content-wrapper {
519
+ .content {
520
+ > img, > video {
521
+ &:only-child {
522
+ margin: auto;
523
+ max-height: 60vmin;
524
+ }
525
+ }
526
+ }
487
527
  }
488
528
 
489
- .popup {
490
- max-width: 80%;
529
+ > header {
530
+ flex-direction: row;
531
+
532
+ .button:not(#close-dialog) {
533
+ display: none;
534
+ }
491
535
  }
492
536
  }
493
537
 
494
538
  @media only screen and (max-width: $small-max-width) {
539
+ .outer-content-wrapper {
540
+ .content {
541
+ > img, > video {
542
+ &:only-child {
543
+ max-height: 50vmin;
544
+ }
545
+ }
546
+ }
547
+ }
548
+
495
549
  [class*="switch-button-"] {
496
550
  width: 3rem;
497
551
 
@@ -503,5 +557,10 @@ export default FancyBox
503
557
  }
504
558
  }
505
559
 
560
+ @media only screen and (max-width: $medium-max-width) {
561
+ dialog {
562
+ top: var(--default-margin);
563
+ }
564
+ }
506
565
  /* end cmd-fancybox ------------------------------------------------------------------------------------------ */
507
566
  </style>
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <span v-if="fontSource === 'iconify'" :title="tooltip"></span>
3
+ <span v-if="fontSource === 'local'" :class="iconClass" :title="tooltip"></span>
4
+ </template>
5
+
6
+ <script>
7
+ export default {
8
+ name: "CmdIcon",
9
+ props: {
10
+ /**
11
+ * font-source where to load the icons from
12
+ * 'local' is for using an implemented icon-fonts by using class 'icon-name'
13
+ * 'iconify' is for using icons from iconify-dependency (https://iconify.design/)
14
+ *
15
+ * @allowedValues: 'dependency', 'local'
16
+ */
17
+ fontSource: {
18
+ type: String,
19
+ default: 'local'
20
+ },
21
+ /**
22
+ * icon-class for icon
23
+ */
24
+ iconClass: {
25
+ type: String,
26
+ required: true
27
+ },
28
+ /**
29
+ * tooltip text for icon
30
+ *
31
+ * @requiredForAccessibility: true
32
+ */
33
+ tooltip: {
34
+ type: String,
35
+ required: false
36
+ }
37
+ }
38
+ }
39
+ </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div :class="['cmd-list-of-links', 'align-' + align, {box: styleAsBox, horizontal: orientation === 'horizontal', 'section-anchors': sectionAnchors}]">
2
+ <div :class="['cmd-list-of-links', {box: styleAsBox, horizontal: orientation === 'horizontal', 'section-anchors': sectionAnchors}]">
3
3
  <!-- begin CmdHeadline -->
4
4
  <CmdHeadline
5
5
  v-if="cmdHeadline"
@@ -8,7 +8,7 @@
8
8
  <!-- end CmdHeadline -->
9
9
 
10
10
  <!-- begin list of links -->
11
- <ul :class="['flex-container', {'no-gap': !useGap}]">
11
+ <ul :class="['flex-container', {'no-gap': !useGap},'align-' + align]">
12
12
  <li v-for="(link, index) in links" :key="index" :class="{'active': sectionAnchors && activeSection === index}">
13
13
  <!-- begin use href -->
14
14
  <a v-if="link.type === 'href' || link.type === undefined"
@@ -156,15 +156,16 @@ export default {
156
156
  flex: none;
157
157
  display: flex;
158
158
  }
159
- }
160
159
 
161
- &.align-center {
162
- justify-content: center;
163
- }
160
+ &.align-center {
161
+ justify-content: center;
162
+ }
164
163
 
165
- &.align-right {
166
- justify-content: flex-end;
164
+ &.align-right {
165
+ justify-content: flex-end;
166
+ }
167
167
  }
168
+
168
169
  }
169
170
  }
170
171
  /* end cmd-list-of-links------------------------------------------------------------------------------------------ */
@@ -6,34 +6,33 @@
6
6
  </div>
7
7
  <!-- end for elements above header -->
8
8
 
9
- <!-- begin header-wrapper with slots for logo and other header elements -->
10
- <header
11
- v-if="$slots.logo || $slots.header || $slots.navigation"
12
- :class="[useGrid ? 'grid-container-create-columns': 'flex-container', {'has-navigation': cmdMainNavigation || $slots.navigation, 'one-child-only' : oneChildOnly},]">
13
- <slot name="logo"></slot>
14
- <slot name="header"></slot>
15
- <slot name="navigation"></slot>
16
- </header>
17
- <!-- end header-wrapper with slots for logo and other header elements -->
18
-
19
- <header
20
- v-if="cmdCompanyLogo || cmdMainNavigation?.navigationEntries?.length"
21
- :class="[{'has-navigation': cmdMainNavigation, 'one-child-only' : oneChildOnly}, useGrid ? 'grid-container-create-columns': 'flex-container']">
22
-
23
- <!-- begin CmdCompanyLogo -->
24
- <CmdCompanyLogo
25
- v-if="cmdCompanyLogo"
26
- v-bind="cmdCompanyLogo"
27
- />
28
- <!-- end CmdCompanyLogo -->
29
-
30
- <!-- begin CmdMainNavigation -->
31
- <CmdMainNavigation
32
- v-if="cmdMainNavigation?.navigationEntries?.length"
33
- :navigationEntries="cmdMainNavigation.navigationEntries"
34
- :closeOffcanvas="closeOffcanvas"
35
- />
36
- <!-- end CmdMainNavigation -->
9
+ <header :class="[useGrid ? 'grid-container-create-columns': 'flex-container', {'has-navigation': cmdMainNavigation || $slots.navigation, 'one-child-only' : oneChildOnly}]">
10
+ <!-- begin slots for logo and other header elements -->
11
+ <template v-if="$slots.logo || $slots.header || $slots.navigation">
12
+ <slot name="logo"></slot>
13
+ <slot name="header"></slot>
14
+ <slot name="navigation"></slot>
15
+ </template>
16
+ <!-- end slots for logo and other header elements -->
17
+
18
+ <!-- begin content given by data -->
19
+ <template v-if="cmdCompanyLogo || cmdMainNavigation?.navigationEntries?.length">
20
+ <!-- begin CmdCompanyLogo -->
21
+ <CmdCompanyLogo
22
+ v-if="cmdCompanyLogo"
23
+ v-bind="cmdCompanyLogo"
24
+ />
25
+ <!-- end CmdCompanyLogo -->
26
+
27
+ <!-- begin CmdMainNavigation -->
28
+ <CmdMainNavigation
29
+ v-if="cmdMainNavigation?.navigationEntries?.length"
30
+ :navigationEntries="cmdMainNavigation.navigationEntries"
31
+ :closeOffcanvas="closeOffcanvas"
32
+ />
33
+ <!-- end CmdMainNavigation -->
34
+ </template>
35
+ <!-- end content given by data -->
37
36
  </header>
38
37
  </div>
39
38
  </template>