comand-component-library 4.0.2 → 4.0.3

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 (50) hide show
  1. package/README.md +32 -32
  2. package/dist/comand-component-library.js +3264 -1450
  3. package/dist/comand-component-library.umd.cjs +3 -4
  4. package/dist/index.html +16 -16
  5. package/dist/style.css +1 -1
  6. package/dist/styles/demopage-only.css +4 -0
  7. package/dist/styles/templates/casual.css +3 -0
  8. package/package.json +4 -4
  9. package/src/App.vue +2117 -0
  10. package/src/ComponentLibrary.vue +150 -586
  11. package/src/assets/data/fake-select-options.json +3 -2
  12. package/src/assets/data/form-elements.json +1 -1
  13. package/src/assets/styles/global-styles.scss +17 -4
  14. package/src/componentSettingsDataAndControls.vue +705 -0
  15. package/src/components/CmdAddressData.vue +1 -2
  16. package/src/components/CmdBox.vue +60 -42
  17. package/src/components/CmdCopyrightInformation.vue +5 -3
  18. package/src/components/CmdFakeSelect.vue +138 -67
  19. package/src/components/CmdFancyBox.vue +2 -2
  20. package/src/components/CmdFormElement.vue +53 -27
  21. package/src/components/CmdGoogleMaps.vue +5 -0
  22. package/src/components/CmdHeadline.vue +13 -5
  23. package/src/components/CmdIcon.vue +6 -2
  24. package/src/components/CmdImage.vue +6 -1
  25. package/src/components/CmdImageGallery.vue +15 -4
  26. package/src/components/CmdInputGroup.vue +76 -24
  27. package/src/components/CmdListOfLinks.vue +20 -7
  28. package/src/components/CmdListOfRequirements.vue +10 -18
  29. package/src/components/CmdLoginForm.vue +14 -2
  30. package/src/components/CmdMainNavigation.vue +5 -1
  31. package/src/components/CmdMultistepFormProgressBar.vue +12 -7
  32. package/src/components/CmdOpeningHoursItem.vue +1 -3
  33. package/src/components/CmdPagination.vue +5 -1
  34. package/src/components/CmdSiteFooter.vue +11 -1
  35. package/src/components/CmdSiteHeader.vue +1 -0
  36. package/src/components/CmdSlideButton.vue +7 -1
  37. package/src/components/CmdSlideshow.vue +33 -5
  38. package/src/components/CmdSocialNetworks.vue +18 -13
  39. package/src/components/CmdSocialNetworksItem.vue +5 -1
  40. package/src/components/CmdSystemMessage.vue +7 -1
  41. package/src/components/CmdTabs.vue +5 -5
  42. package/src/components/CmdTextImageBlock.vue +11 -2
  43. package/src/components/CmdThumbnailScroller.vue +22 -4
  44. package/src/components/CmdTooltip.vue +49 -14
  45. package/src/components/CmdTooltipForFormElements.vue +96 -0
  46. package/src/components/CmdUploadForm.vue +25 -20
  47. package/src/components/CmdWidthLimitationWrapper.vue +1 -1
  48. package/src/components/ComponentSettings.vue +1 -1
  49. package/src/main.js +1 -1
  50. package/src/assets/data/accordion.json +0 -45
@@ -57,7 +57,11 @@
57
57
 
58
58
  <!-- begin box-body -->
59
59
  <div v-show="open" :class="['box-body', boxBodyClass]" aria-expanded="true" role="article">
60
- <div v-if="useSlots?.includes('body')" :class="{'default-padding': useDefaultPadding, 'allow-scroll': allowContentToScroll}">
60
+ <div v-if="useSlots?.includes('body')"
61
+ :class="{'default-padding': useDefaultPadding, 'allow-scroll': allowContentToScroll}"
62
+ ref="boxBody"
63
+ :style="'max-height: ' + calculatedBodyHeight"
64
+ >
61
65
  <!-- begin slot 'body' -->
62
66
  <slot name="body">
63
67
  <transition-group :name="toggleTransition">
@@ -69,7 +73,9 @@
69
73
  {{ textBody }}
70
74
  </p>
71
75
  <a v-if="cutoffTextLines > 0" href="#" @click.prevent="toggleCutOffText">
72
- {{ showCutOffText ? getMessage("cmdbox.contentbox.collapse_text") : getMessage("cmdbox.contentbox.expand_text") }}
76
+ {{
77
+ showCutOffText ? getMessage("cmdbox.contentbox.collapse_text") : getMessage("cmdbox.contentbox.expand_text")
78
+ }}
73
79
  </a>
74
80
  </transition-group>
75
81
  </slot>
@@ -123,7 +129,9 @@
123
129
  <!-- end ribbons -->
124
130
  </div>
125
131
  <div class="box-body">
126
- <p v-if="product.articleNumber">{{ getMessage("cmdbox.productbox.article_no") }} {{ product.articleNumber }}</p>
132
+ <p v-if="product.articleNumber">{{ getMessage("cmdbox.productbox.article_no") }} {{
133
+ product.articleNumber
134
+ }}</p>
127
135
  <p v-if="product.price" class="price">
128
136
  <span>{{ product.price }}</span><span :title="globalCurrency.name">{{ globalCurrency.symbol }}</span>
129
137
  </p>
@@ -146,7 +154,7 @@
146
154
  <div class="box-header flex-container vertical">
147
155
  <figure v-if="user.image">
148
156
  <img :src="user.image.src" :alt="user.image.alt"/>
149
- <figcaption>{{ user.name }} <span v-if="user.age">, {{user.age}}</span></figcaption>
157
+ <figcaption>{{ user.name }} <span v-if="user.age">, {{ user.age }}</span></figcaption>
150
158
  </figure>
151
159
  <div v-else>
152
160
  <span :class="defaultProfileIconClass" :title="user.name"></span>
@@ -161,7 +169,7 @@
161
169
  </div>
162
170
  <ul class="tags">
163
171
  <li v-for="(tag, index) in user.tags" :key="index">
164
- {{tag}}
172
+ {{ tag }}
165
173
  </li>
166
174
  </ul>
167
175
  <div v-if="user.links" class="box-footer">
@@ -189,7 +197,8 @@ export default {
189
197
  return {
190
198
  open: this.collapsible ? this.openCollapsedBox : true,
191
199
  active: true,
192
- showCutOffText: false
200
+ showCutOffText: false,
201
+ calculatedBodyHeight: this.maxBoxBodyHeight
193
202
  }
194
203
  },
195
204
  props: {
@@ -217,7 +226,12 @@ export default {
217
226
  */
218
227
  boxType: {
219
228
  type: String,
220
- default: "content"
229
+ default: "content",
230
+ validator(value) {
231
+ return value === "content" ||
232
+ value === "product" ||
233
+ value === "user"
234
+ }
221
235
  },
222
236
  /**
223
237
  * set if content (in box-body) should scroll
@@ -232,8 +246,8 @@ export default {
232
246
  * set max-height for body (should only be used it allowContentToScroll-property is active)
233
247
  */
234
248
  maxBoxBodyHeight: {
235
- type: String,
236
- default: "10rem"
249
+ type: String,
250
+ default: "100rem"
237
251
  },
238
252
  /**
239
253
  * activate if box should be collapsible
@@ -324,7 +338,12 @@ export default {
324
338
  */
325
339
  profileType: {
326
340
  type: String,
327
- default: "business"
341
+ default: "business",
342
+ validator(value) {
343
+ return value === "business" ||
344
+ value === "influencer" ||
345
+ value === "dating"
346
+ }
328
347
  },
329
348
  /**
330
349
  * activated if all content (incl. headline) is given by slot
@@ -405,13 +424,13 @@ export default {
405
424
  required: false
406
425
  }
407
426
  },
427
+ mounted() {
428
+ if (this.allowContentToScroll && this.$refs.boxBody) {
429
+ const topPosition = this.$refs.boxBody.getBoundingClientRect().top
430
+ this.calculatedBodyHeight = (document.documentElement.clientHeight - topPosition) + "px"
431
+ }
432
+ },
408
433
  computed: {
409
- setMaxBoxBodyHeight() {
410
- if (this.allowContentToScroll && this.maxBoxBodyHeight) {
411
- return this.maxBoxBodyHeight
412
- }
413
- return null
414
- },
415
434
  toggleTransition() {
416
435
  if (this.useTransition) {
417
436
  return "fade"
@@ -474,6 +493,7 @@ export default {
474
493
  a.box-header {
475
494
  justify-content: space-between;
476
495
  background: var(--hyperlink-color);
496
+ border-radius: var(--default-border-radius);
477
497
 
478
498
  &:hover, &:active, &:focus {
479
499
  background: var(--pure-white);
@@ -488,7 +508,10 @@ export default {
488
508
  .box-body {
489
509
  .allow-scroll {
490
510
  overflow-y: auto;
491
- max-height: v-bind(maxBoxBodyHeight);
511
+
512
+ & * {
513
+ flex-shrink: 0;
514
+ }
492
515
  }
493
516
  }
494
517
 
@@ -508,12 +531,6 @@ export default {
508
531
  }
509
532
 
510
533
  > .box-header {
511
- display: flex;
512
- align-items: center;
513
- border-radius: var(--border-radius);
514
- padding: calc(var(--default-padding) / 2) var(--default-padding);
515
- background: var(--secondary-color);
516
- color: var(--pure-white);
517
534
  text-decoration: none;
518
535
 
519
536
  > .cmd-custom-headline {
@@ -599,13 +616,6 @@ export default {
599
616
  }
600
617
  }
601
618
  }
602
-
603
- .box-footer {
604
- border-bottom-left-radius: var(--border-radius);
605
- border-bottom-right-radius: var(--border-radius);
606
- padding: var(--default-padding);
607
- border-top: var(--default-border);
608
- }
609
619
  }
610
620
 
611
621
  /* boyType === 'product' and boxType === 'user' */
@@ -660,6 +670,8 @@ export default {
660
670
  }
661
671
 
662
672
  > .box-header {
673
+ padding: 0;
674
+
663
675
  > img, > div {
664
676
  display: table;
665
677
  margin: 0 auto;
@@ -674,12 +686,14 @@ export default {
674
686
  figcaption {
675
687
  font-size: 2rem;
676
688
  font-weight: bold;
677
- padding-top: var(--default-padding)
689
+ padding: var(--default-padding);
678
690
  }
679
691
  }
680
692
 
681
693
  .box-body {
682
694
  flex-grow: 1;
695
+ padding: var(--default-padding);
696
+ padding-bottom: 0;
683
697
 
684
698
  > * {
685
699
  text-align: center;
@@ -703,15 +717,13 @@ export default {
703
717
  /* boxType === 'user' */
704
718
  &.user {
705
719
  > .box-header {
706
- --icon-size: 6rem;
720
+ --default-icon-size: 6rem;
721
+ --box-header-text-color: var(--primary-color);
707
722
 
708
- padding: var(--default-padding);
723
+ background: none;
709
724
 
710
- .cmd-headline {
711
- > * {
712
- display: block;
713
- text-align: center;
714
- }
725
+ > div:first-child > [class*="icon-"] {
726
+ aspect-ratio: 1/1;
715
727
  }
716
728
 
717
729
  img, > div:first-child > [class*="icon-"] {
@@ -719,7 +731,7 @@ export default {
719
731
  margin: 0 auto var(--default-margin) auto;
720
732
  padding: calc(var(--default-padding) * 3);
721
733
  border-radius: var(--full-circle);
722
- background: var(--primary-color);
734
+ background: var(--box-header-background-color);
723
735
  color: var(--pure-white);
724
736
 
725
737
  & + p, & + figcaption {
@@ -732,17 +744,20 @@ export default {
732
744
 
733
745
  img {
734
746
  padding: 0;
735
- width: calc(var(--icon-size) * 2);
747
+ width: calc(var(--default-icon-size) * 2);
736
748
  aspect-ratio: 1/1;
737
749
  }
738
750
 
739
751
  > div:first-child > [class*="icon-"] {
740
- font-size: var(--icon-size);
752
+ margin: 0;
753
+ font-size: var(--default-icon-size);
741
754
  }
742
755
  }
743
756
 
744
757
  .box-body {
745
758
  flex-grow: 1;
759
+ padding: var(--default-padding);
760
+ padding-top: 0;
746
761
 
747
762
  p {
748
763
  text-align: center;
@@ -760,6 +775,7 @@ export default {
760
775
 
761
776
  .box-footer {
762
777
  margin-top: auto;
778
+ padding: 0;
763
779
  border-top: var(--default-border);
764
780
 
765
781
  .cmd-list-of-links {
@@ -769,6 +785,7 @@ export default {
769
785
 
770
786
  li {
771
787
  flex: 1;
788
+ border-radius: var(--default-border-radius);
772
789
 
773
790
  a {
774
791
  flex: 1;
@@ -776,6 +793,7 @@ export default {
776
793
  text-align: center;
777
794
  background: var(--color-scheme-background-color);
778
795
  border-left: var(--default-border);
796
+ border-radius: var(--default-border-radius);
779
797
  }
780
798
 
781
799
  &:hover, &:active, &:focus {
@@ -801,7 +819,7 @@ export default {
801
819
 
802
820
  &.row-view {
803
821
  [class*="icon"] {
804
- --icon-size: 3rem;
822
+ --default-icon-size: 3rem;
805
823
  }
806
824
 
807
825
  .box-header > div:first-child > [class*="icon-"] {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="cmd-copyright-information" role="contentinfo">
3
- <a href="http://www.comand-cms.com" target="_blank" lang="en" title="CoManD-Website">&copy; CoManD</a>
3
+ <a href="http://www.comand-cms.com" target="comand-website" lang="en" title="CoManD-Website">&copy; CoManD</a>
4
4
  </div>
5
5
  </template>
6
6
 
@@ -13,10 +13,12 @@ export default {
13
13
  <style>
14
14
  /* begin cmd-copyright-information ---------------------------------------------------------------------------------------- */
15
15
  .cmd-copyright-information {
16
- background: var(--text-color);
17
- border-top: var(--border-width) var(--border-style) var(--pure-white);
16
+ background: var(--default-text-color);
17
+ border-top: var(--default-border-width) var(--default-border-style) var(--pure-white);
18
18
  text-align: center;
19
19
  padding: var(--default-padding);
20
+ margin-top: auto;
21
+ flex: none;
20
22
 
21
23
  a {
22
24
  text-decoration: none;