comand-component-library 4.0.1 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. package/README.md +32 -32
  2. package/dist/comand-component-library.js +3227 -1413
  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 +14 -10
  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 +2 -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}" :style="setMaxBoxBodyHeight">
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: '${this.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;