comand-component-library 3.1.45 → 3.1.46

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) 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 +47 -41
  4. package/src/App.vue +373 -135
  5. package/src/ComponentDocumentation.vue +156 -0
  6. package/src/ComponentLibraryHelp.vue +20 -0
  7. package/src/assets/data/accordion.json +21 -24
  8. package/src/assets/data/address-data.json +34 -0
  9. package/src/assets/data/bank-account-data.json +22 -0
  10. package/src/assets/data/box-product.json +14 -4
  11. package/src/assets/data/box-user.json +48 -22
  12. package/src/assets/data/breadcrumbs.json +11 -3
  13. package/src/assets/data/cookie-disclaimer.json +4 -4
  14. package/src/assets/data/fake-select-colors.json +4 -0
  15. package/src/assets/data/fake-select-filter-options.json +14 -0
  16. package/src/assets/data/fake-select-options-with-icons.json +6 -12
  17. package/src/assets/data/fake-select-options.json +3 -3
  18. package/src/assets/data/list-of-links-section-anchors.json +23 -0
  19. package/src/assets/data/list-of-links-top-header-navigation.json +20 -0
  20. package/src/assets/data/list-of-links.json +42 -0
  21. package/src/assets/data/main-navigation.json +48 -0
  22. package/src/assets/data/multistep-form-progress-bar.json +33 -0
  23. package/src/assets/data/select-options.json +4 -0
  24. package/src/assets/data/{share-buttons.json → share-buttons-page-by-json.json} +8 -8
  25. package/src/assets/data/share-buttons-page-by-property.json +30 -0
  26. package/src/assets/data/switch-language.json +20 -0
  27. package/src/assets/data/table-large.json +1 -1
  28. package/src/assets/data/table-small.json +1 -1
  29. package/src/assets/styles/global-styles.scss +43 -13
  30. package/src/assets/styles/transitions.scss +21 -1
  31. package/src/components/CmdAccordion.vue +43 -42
  32. package/src/components/CmdAddressData.vue +124 -56
  33. package/src/components/CmdBackToTopButton.vue +3 -3
  34. package/src/components/CmdBankAccountData.vue +104 -0
  35. package/src/components/CmdBox.vue +253 -56
  36. package/src/components/CmdBoxSiteSearch.vue +138 -39
  37. package/src/components/CmdBoxWrapper.vue +206 -0
  38. package/src/components/CmdBreadcrumbs.vue +29 -13
  39. package/src/components/CmdCompanyLogo.vue +6 -4
  40. package/src/components/CmdCookieDisclaimer.vue +99 -75
  41. package/src/components/CmdCopyrightInformation.vue +1 -1
  42. package/src/components/CmdCustomHeadline.vue +93 -0
  43. package/src/components/CmdFakeSelect.vue +285 -60
  44. package/src/components/CmdFancyBox.vue +47 -33
  45. package/src/components/CmdForm.vue +107 -0
  46. package/src/components/CmdFormElement.vue +515 -81
  47. package/src/components/CmdFormFilters.vue +25 -11
  48. package/src/components/CmdGoogleMaps.vue +9 -3
  49. package/src/components/CmdImageGallery.vue +28 -5
  50. package/src/components/CmdImageZoom.vue +9 -1
  51. package/src/components/CmdListOfLinks.vue +169 -0
  52. package/src/components/CmdLoginForm.vue +143 -63
  53. package/src/components/CmdMainNavigation.vue +140 -42
  54. package/src/components/CmdMultipleSwitch.vue +33 -2
  55. package/src/components/CmdMultistepFormProgressBar.vue +60 -10
  56. package/src/components/CmdOpeningHours.vue +36 -10
  57. package/src/components/CmdPager.vue +7 -5
  58. package/src/components/CmdProgressBar.vue +20 -3
  59. package/src/components/CmdShareButtons.vue +64 -9
  60. package/src/components/CmdSiteHeader.vue +25 -12
  61. package/src/components/CmdSlideButton.vue +5 -2
  62. package/src/components/CmdSlideshow.vue +23 -7
  63. package/src/components/CmdSwitchButton.vue +10 -3
  64. package/src/components/CmdSwitchLanguage.vue +18 -10
  65. package/src/components/CmdSystemMessage.vue +30 -17
  66. package/src/components/CmdTable.vue +15 -7
  67. package/src/components/CmdTabs.vue +43 -3
  68. package/src/components/CmdThumbnailScroller.vue +22 -6
  69. package/src/components/CmdTooltip.vue +184 -11
  70. package/src/components/CmdUploadForm.vue +198 -92
  71. package/src/components/CmdWidthLimitationWrapper.vue +9 -6
  72. package/src/composables/event.js +8 -0
  73. package/src/composables/scrollspy.js +52 -0
  74. package/src/directives/focus.js +19 -0
  75. package/src/directives/telephone.js +1 -1
  76. package/src/documentation/commonProps.js +6 -0
  77. package/src/documentation/components/ComponentCode.vue +50 -0
  78. package/src/documentation/components/ComponentProperties.vue +237 -0
  79. package/src/documentation/components/ExampleSectionWrapper.vue +46 -0
  80. package/src/documentation/components/ViewCodeData.vue +113 -0
  81. package/src/documentation/data/CmdAccordionHelp.js +22 -0
  82. package/src/documentation/data/CmdAddressDataHelp.js +17 -0
  83. package/src/documentation/data/CmdBackToTopButtonHelp.js +3 -0
  84. package/src/documentation/data/CmdBankAccountDataHelp.js +8 -0
  85. package/src/documentation/data/CmdBoxHelp.js +45 -0
  86. package/src/documentation/data/CmdBoxSiteSearchHelp.js +11 -0
  87. package/src/documentation/data/CmdBreadcrumbsHelp.js +6 -0
  88. package/src/documentation/data/CmdCompanyLogoHelp.js +8 -0
  89. package/src/documentation/data/CmdCookieDisclaimerHelp.js +9 -0
  90. package/src/documentation/data/CmdCopyrightInformation.js +2 -0
  91. package/src/documentation/data/CmdCustomHeadlineHelp.js +8 -0
  92. package/src/documentation/data/CmdFakeSelectHelp.js +60 -0
  93. package/src/documentation/data/CmdFancyBoxHelp.js +7 -0
  94. package/src/documentation/data/CmdFooterNavigationHelp.js +5 -0
  95. package/src/documentation/data/CmdFormElementHelp.js +189 -0
  96. package/src/documentation/data/CmdFormFiltersHelp.js +6 -0
  97. package/src/documentation/data/CmdFormHelp.js +10 -0
  98. package/src/documentation/data/CmdGoogleMapsHelp.js +5 -0
  99. package/src/documentation/data/CmdImageGalleryHelp.js +5 -0
  100. package/src/documentation/data/CmdImageZoomHelp.js +6 -0
  101. package/src/documentation/data/CmdListOfLinksHelp.js +24 -0
  102. package/src/documentation/data/CmdLoginFormHelp.js +6 -0
  103. package/src/documentation/data/CmdMainNavigationHelp.js +7 -0
  104. package/src/documentation/data/CmdMultistepFormProgressBarHelp.js +6 -0
  105. package/src/documentation/data/CmdOpeningHoursHelp.js +10 -0
  106. package/src/documentation/data/CmdPagerHelp.js +7 -0
  107. package/src/documentation/data/CmdProgressBarHelp.js +13 -0
  108. package/src/documentation/data/CmdShareButtonsHelp.js +13 -0
  109. package/src/documentation/data/CmdSiteHeaderHelp.js +21 -0
  110. package/src/documentation/data/CmdSlideButtonHelp.js +10 -0
  111. package/src/documentation/data/CmdSlideshowHelp.js +7 -0
  112. package/src/documentation/data/CmdSwitchLanguageHelp.js +6 -0
  113. package/src/documentation/data/CmdSystemMessageHelp.js +32 -0
  114. package/src/documentation/data/CmdTableHelp.js +14 -0
  115. package/src/documentation/data/CmdTabsHelp.js +10 -0
  116. package/src/documentation/data/CmdThumbnailScrollerHelp.js +5 -0
  117. package/src/documentation/data/CmdTooltipHelp.js +13 -0
  118. package/src/documentation/data/CmdUploadFormHelp.js +17 -0
  119. package/src/documentation/data/CmdWidthLimitationWrapperHelp.js +7 -0
  120. package/src/documentation/data/componentsDescription.json +158 -0
  121. package/src/documentation/generated/CmdAccordionPropertyDescriptions.json +57 -0
  122. package/src/documentation/generated/CmdAddressDataPropertyDescriptions.json +32 -0
  123. package/src/documentation/generated/CmdBackToTopButtonPropertyDescriptions.json +12 -0
  124. package/src/documentation/generated/CmdBankAccountDataPropertyDescriptions.json +34 -0
  125. package/src/documentation/generated/CmdBoxPropertyDescriptions.json +91 -0
  126. package/src/documentation/generated/CmdBoxSiteSearchPropertyDescriptions.json +41 -0
  127. package/src/documentation/generated/CmdBoxWrapperPropertyDescriptions.json +47 -0
  128. package/src/documentation/generated/CmdBreadcrumbsPropertyDescriptions.json +17 -0
  129. package/src/documentation/generated/CmdCompanyLogoPropertyDescriptions.json +27 -0
  130. package/src/documentation/generated/CmdCookieDisclaimerPropertyDescriptions.json +22 -0
  131. package/src/documentation/generated/CmdCustomHeadlinePropertyDescriptions.json +22 -0
  132. package/src/documentation/generated/CmdFakeSelectPropertyDescriptions.json +79 -0
  133. package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +62 -0
  134. package/src/documentation/generated/CmdFooterNavigationPropertyDescriptions.json +17 -0
  135. package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +178 -0
  136. package/src/documentation/generated/CmdFormFiltersPropertyDescriptions.json +32 -0
  137. package/src/documentation/generated/CmdFormPropertyDescriptions.json +40 -0
  138. package/src/documentation/generated/CmdGoogleMapsPropertyDescriptions.json +7 -0
  139. package/src/documentation/generated/CmdImageGalleryPropertyDescriptions.json +22 -0
  140. package/src/documentation/generated/CmdImageZoomPropertyDescriptions.json +12 -0
  141. package/src/documentation/generated/CmdListOfLinksPropertyDescriptions.json +60 -0
  142. package/src/documentation/generated/CmdLoginFormPropertyDescriptions.json +90 -0
  143. package/src/documentation/generated/CmdMainNavigationPropertyDescriptions.json +62 -0
  144. package/src/documentation/generated/CmdMultipleSwitchPropertyDescriptions.json +52 -0
  145. package/src/documentation/generated/CmdMultistepFormProgressBarPropertyDescriptions.json +17 -0
  146. package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +42 -0
  147. package/src/documentation/generated/CmdPagerPropertyDescriptions.json +37 -0
  148. package/src/documentation/generated/CmdProgressBarPropertyDescriptions.json +32 -0
  149. package/src/documentation/generated/CmdShareButtonsPropertyDescriptions.json +34 -0
  150. package/src/documentation/generated/CmdSiteHeaderPropertyDescriptions.json +27 -0
  151. package/src/documentation/generated/CmdSlideButtonPropertyDescriptions.json +25 -0
  152. package/src/documentation/generated/CmdSlideshowPropertyDescriptions.json +42 -0
  153. package/src/documentation/generated/CmdSwitchButtonPropertyDescriptions.json +79 -0
  154. package/src/documentation/generated/CmdSwitchLanguagePropertyDescriptions.json +7 -0
  155. package/src/documentation/generated/CmdSystemMessagePropertyDescriptions.json +40 -0
  156. package/src/documentation/generated/CmdTablePropertyDescriptions.json +62 -0
  157. package/src/documentation/generated/CmdTabsPropertyDescriptions.json +27 -0
  158. package/src/documentation/generated/CmdThumbnailScrollerPropertyDescriptions.json +32 -0
  159. package/src/documentation/generated/CmdTooltipPropertyDescriptions.json +17 -0
  160. package/src/documentation/generated/CmdUploadFormPropertyDescriptions.json +90 -0
  161. package/src/documentation/generated/CmdWidthLimitationWrapperPropertyDescriptions.json +41 -0
  162. package/src/documentation/generated/frameworkIcons.json +730 -0
  163. package/src/documentation/generated/logosIcons.json +110 -0
  164. package/src/documentation/tabs.js +46 -0
  165. package/src/documentation/views/ContainerPage.vue +237 -0
  166. package/src/documentation/views/HelpHome.vue +13 -0
  167. package/src/documentation/views/IconFont.vue +80 -0
  168. package/src/documentation/views/components/CmdAccordionHelp.vue +78 -0
  169. package/src/documentation/views/components/CmdAddressDataHelp.vue +65 -0
  170. package/src/documentation/views/components/CmdBackToTopButtonHelp.vue +62 -0
  171. package/src/documentation/views/components/CmdBankAccountDataHelp.vue +88 -0
  172. package/src/documentation/views/components/CmdBoxHelp.vue +137 -0
  173. package/src/documentation/views/components/CmdBoxSiteSearchHelp.vue +60 -0
  174. package/src/documentation/views/components/CmdBoxWrapperHelp.vue +111 -0
  175. package/src/documentation/views/components/CmdBreadcrumbsHelp.vue +51 -0
  176. package/src/documentation/views/components/CmdCompanyLogoHelp.vue +48 -0
  177. package/src/documentation/views/components/CmdCookieDisclaimerHelp.vue +105 -0
  178. package/src/documentation/views/components/CmdCustomHeadlineHelp.vue +53 -0
  179. package/src/documentation/views/components/CmdFakeSelectHelp.vue +175 -0
  180. package/src/documentation/views/components/CmdFancyBoxHelp.vue +79 -0
  181. package/src/documentation/views/components/CmdFormElementHelp.vue +412 -0
  182. package/src/documentation/views/components/CmdFormFiltersHelp.vue +69 -0
  183. package/src/documentation/views/components/CmdFormHelp.vue +41 -0
  184. package/src/documentation/views/components/CmdGoogleMapsHelp.vue +55 -0
  185. package/src/documentation/views/components/CmdImageGalleryHelp.vue +46 -0
  186. package/src/documentation/views/components/CmdImageZoomHelp.vue +34 -0
  187. package/src/documentation/views/components/CmdListOfLinksHelp.vue +64 -0
  188. package/src/documentation/views/components/CmdLoginFormHelp.vue +117 -0
  189. package/src/documentation/views/components/CmdMainNavigationHelp.vue +94 -0
  190. package/src/documentation/views/components/CmdMultistepFormProgressBarHelp.vue +49 -0
  191. package/src/documentation/views/components/CmdOpeningHoursHelp.vue +49 -0
  192. package/src/documentation/views/components/CmdPagerHelp.vue +57 -0
  193. package/src/documentation/views/components/CmdProgressBarHelp.vue +47 -0
  194. package/src/documentation/views/components/CmdShareButtonsHelp.vue +65 -0
  195. package/src/documentation/views/components/CmdSiteHeaderHelp.vue +72 -0
  196. package/src/documentation/views/components/CmdSlideButtonHelp.vue +90 -0
  197. package/src/documentation/views/components/CmdSlideshowHelp.vue +60 -0
  198. package/src/documentation/views/components/CmdSwitchLanguageHelp.vue +64 -0
  199. package/src/documentation/views/components/CmdSystemMessageHelp.vue +86 -0
  200. package/src/documentation/views/components/CmdTableHelp.vue +84 -0
  201. package/src/documentation/views/components/CmdTabsHelp.vue +52 -0
  202. package/src/documentation/views/components/CmdThumbnailScrollerHelp.vue +50 -0
  203. package/src/documentation/views/components/CmdTooltipHelp.vue +59 -0
  204. package/src/documentation/views/components/CmdUploadFormHelp.vue +59 -0
  205. package/src/documentation/views/components/CmdWidthLimitationWrapperHelp.vue +46 -0
  206. package/src/index.js +6 -3
  207. package/src/main.js +25 -15
  208. package/src/mixins/CmdAddressData/DefaultMessageProperties.js +17 -0
  209. package/src/mixins/CmdBox/DefaultMessageProperties.js +10 -0
  210. package/src/mixins/CmdFakeSelect/DefaultMessageProperties.js +9 -0
  211. package/src/mixins/CmdFormElement/DefaultMessageProperties.js +9 -0
  212. package/src/mixins/CmdImageGallery/DefaultMessageProperties.js +9 -0
  213. package/src/mixins/CmdSiteSearch/DefaultMessageProperties.js +14 -0
  214. package/src/mixins/CmdUploadForm/DefaultMessageProperties.js +5 -1
  215. package/src/mixins/FieldValidation.js +220 -0
  216. package/src/mixins/GlobalDefaultMessageProperties.js +15 -0
  217. package/src/mixins/Tooltip.js +26 -0
  218. package/src/router/index.js +67 -0
  219. package/src/utilities.js +3 -6
  220. package/src/utils/common.js +6 -0
  221. package/src/utils/dom.js +8 -0
  222. package/src/utils/globalSequence.js +13 -0
  223. package/src/utils/string.js +8 -0
  224. package/src/assets/data/address.json +0 -13
  225. package/src/assets/data/footer-navigation.json +0 -38
  226. package/src/assets/data/languages.json +0 -31
  227. package/src/assets/data/multisteps.json +0 -27
  228. package/src/assets/data/navigation.json +0 -47
  229. package/src/assets/data/pager.json +0 -11
  230. package/src/assets/data/top-header-navigation.json +0 -27
  231. package/src/components/CmdFooterNavigation.vue +0 -71
  232. package/src/components/CmdMainHeadline.vue +0 -75
  233. package/src/components/CmdTopHeaderNavigation.vue +0 -88
@@ -1,91 +1,153 @@
1
1
  <template>
2
2
  <div class="cmd-address-data vcard">
3
- <h4 v-if="headline">{{ headline }}</h4>
3
+ <!-- begin CmdCustomHeadline -->
4
+ <CmdCustomHeadline v-if="cmdCustomHeadline" v-bind="cmdCustomHeadline" />
5
+ <!-- end CmdCustomHeadline -->
6
+
7
+ <!-- begin address-data in vCard microformat -->
4
8
  <address class="adr">
9
+ <!-- begin list with labels -->
5
10
  <dl v-if="showLabels">
6
- <dt v-if="addressData.company">Company:</dt>
7
- <dd class="org">{{ addressData.company }}</dd>
8
- <dt v-if="addressData.address">Address:</dt>
11
+ <!-- begin company -->
12
+ <dt v-if="addressData.company?.value">
13
+ <span v-if="addressData.company.iconClass && showLabelIcons" :class="addressData.company.iconClass" :title="getMessage('cmdaddressdata.labeltext.company')"></span>
14
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.company')}}</span>
15
+ </dt>
16
+ <dd v-if="addressData.company?.value" class="org">{{ addressData.company.value }}</dd>
17
+ <!-- end company -->
18
+
19
+ <!-- begin address -->
20
+ <dt v-if="addressData.address && addressData.address.length">
21
+ <span v-if="addressData.address.iconClass && showLabelIcons" :class="addressData.address.iconClass" :title="getMessage('cmdaddressdata.labeltext.address')"></span>
22
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.address')}}</span>
23
+ </dt>
9
24
  <dd v-if="addressData.address">
10
- <a :href="locateAddress" target="_blank" v-if="linkGoogleMaps"
11
- title="Open address on GoogleMaps™ in new tab">
12
- <span class="street-address" v-if="addressData.address.streetNo">{{
13
- addressData.address.streetNo
14
- }}</span><br/>
15
- <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>&nbsp;<span
16
- class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
17
- <span class="country-name" v-if="addressData.country">{{ addressData.country }}</span>
25
+ <a v-if="linkGoogleMaps" :href="locateAddress" target="google-maps"
26
+ :title="getMessage('cmdaddressdata.title.open_address_on_google_maps')">
27
+ <span v-if="addressData.address.streetNo" class="street-address">{{ addressData.address.streetNo }}</span><br/>
28
+ <span v-if="addressData.address.zip" class="postal-code">{{ addressData.address.zip }}&nbsp;</span>
29
+ <span v-if="addressData.address.city" class="locality">{{ addressData.address.city }}</span>
30
+ <span v-if="addressData.country" class="country-name">{{ addressData.country }}</span>
18
31
  </a>
19
32
  <template v-else>
20
- <span class="street-address" v-if="addressData.address.streetNo">{{
21
- addressData.address.streetNo
22
- }}</span><br/>
23
- <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>&nbsp;<span
24
- class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
25
- <span class="country-name" v-if="addressData.country">{{ addressData.country }}</span>
33
+ <span v-if="addressData.address.streetNo" class="street-address">{{addressData.address.streetNo }}</span><br/>
34
+ <span v-if="addressData.address.zip" class="postal-code">{{ addressData.address.zip }}</span>
35
+ <span v-if="addressData.address.city" class="locality">{{ addressData.address.city }}</span>
36
+ <span v-if="addressData.country" class="country-name">{{ addressData.country }}</span>
26
37
  </template>
27
38
  </dd>
28
- <dt v-if="addressData.telephone">Telephone:</dt>
29
- <dd v-if="addressData.telephone">
30
- <a :href="'tel:' + addressData.telephone" title="Call number" class="tel" v-telephone="addressData.telephone">{{ addressData.telephone }}</a>
39
+ <!-- end address -->
40
+
41
+ <!-- begin telephone -->
42
+ <dt v-if="addressData.telephone?.value">
43
+ <span v-if="addressData.telephone.iconClass && showLabelIcons" :class="addressData.telephone.iconClass" :title="getMessage('cmdaddressdata.labeltext.telephone')"></span>
44
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.telephone')}}</span>
45
+ </dt>
46
+ <dd v-if="addressData.telephone?.value">
47
+ <a :href="'tel:' + addressData.telephone" title="Call number" class="tel" v-telephone="addressData.telephone.value">{{ addressData.telephone.value }}</a>
48
+ </dd>
49
+ <!-- end telephone -->
50
+
51
+ <!-- begin mobilephone -->
52
+ <dt v-if="addressData.mobilephone?.value">
53
+ <span v-if="addressData.mobilephone.iconClass && showLabelIcons" :class="addressData.mobilephone.iconClass" :title="getMessage('cmdaddressdata.labeltext.mobile_phone')"></span>
54
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.mobile_phone')}}</span>
55
+ </dt>
56
+ <dd v-if="addressData.mobilephone?.value">
57
+ <a :href="'tel:' + addressData.mobilephone" title="Call number" class="tel" v-telephone="addressData.mobilephone.value">{{ addressData.mobilephone.value }}</a>
31
58
  </dd>
32
- <dt v-if="addressData.mobilephone">Mobile phone:</dt>
33
- <dd v-if="addressData.mobilephone">
34
- <a :href="'tel:' + addressData.mobilephone" title="Call number" class="tel" v-telephone="addressData.mobilephone">{{ addressData.mobilephone }}</a>
59
+ <!-- end mobilephone -->
60
+
61
+ <!-- begin fax -->
62
+ <dt v-if="addressData.fax?.value">
63
+ <span v-if="addressData.fax.iconClass && showLabelIcons" :class="addressData.fax.iconClass" :title="getMessage('cmdaddressdata.labeltext.fax')"></span>
64
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.fax')}}</span>
65
+ </dt>
66
+ <dd v-if="addressData.fax?.value" class="fax">{{ addressData.fax.value }}</dd>
67
+ <!-- end fax -->
68
+
69
+ <!-- begin email -->
70
+ <dt v-if="addressData.email?.value">
71
+ <span v-if="addressData.email.iconClass && showLabelIcons" :class="addressData.email.iconClass" :title="getMessage('cmdaddressdata.labeltext.email')"></span>
72
+ <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.email')}}</span>
73
+ </dt>
74
+ <dd class="email" v-if="addressData.email?.value">
75
+ <a :href="'mailto:' + addressData.email?.value" class="email">{{ addressData.email.value }}</a>
35
76
  </dd>
36
- <dt v-if="addressData.fax">Fax:</dt>
37
- <dd v-if="addressData.fax" class="fax">{{ addressData.fax }}</dd>
38
- <dt v-if="addressData.email">E-Mail:</dt>
39
- <dd class="email" v-if="addressData.email"><a :href="'mailto:' + addressData.email"
40
- class="email">{{ addressData.email }}</a></dd>
77
+ <!-- end email -->
41
78
  </dl>
79
+ <!-- end list with labels -->
80
+
81
+ <!-- begin list without labels -->
42
82
  <ul v-else class="flex-container">
43
83
  <li v-if="addressData.company">
44
- <span> class="org">{{ addressData.company }}</span>
84
+ <span class="org">{{ addressData.company.value }}</span>
45
85
  </li>
46
86
  <li>
47
- <a :href="locateAddress" target="_blank" v-if="linkGoogleMaps"
48
- title="Open address on GoogleMaps™ in new tab">
49
- <span class="street-address" v-if="addressData.address.streetNo">{{
50
- addressData.address.streetNo
51
- }}</span><br/>
52
- <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>&nbsp;<span
53
- class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
87
+ <a :href="locateAddress" target="google-maps" v-if="linkGoogleMaps"
88
+ :title="getMessage('cmdaddressdata.title.open_address_on_google_maps')">
89
+ <span class="street-address" v-if="addressData.address.streetNo">{{ addressData.address.streetNo }}</span><br/>
90
+ <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>
91
+ <span class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
54
92
  <span class="country-name" v-if="addressData.country">{{ addressData.country }}</span>
55
93
  </a>
56
94
  <template v-else>
57
- <span class="street-address" v-if="addressData.address.streetNo">{{
58
- addressData.address.streetNo
59
- }}</span><br/>
60
- <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>&nbsp;<span
61
- class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
95
+ <span class="street-address" v-if="addressData.address.streetNo">{{ addressData.address.streetNo }}</span><br/>
96
+ <span class="postal-code" v-if="addressData.address.zip">{{ addressData.address.zip }}</span>
97
+ <span class="locality" v-if="addressData.address.city">{{ addressData.address.city }}</span>
62
98
  <span class="country-name" v-if="addressData.country">{{ addressData.country }}</span>
63
99
  </template>
64
100
  </li>
65
- <li v-if="addressData.telephone">
66
- <a :href="'tel:' + addressData.telephone" title="Call number" class="tel">{{
67
- addressData.telephone
68
- }}</a>
101
+ <li v-if="addressData.telephone?.value">
102
+ <a :href="'tel:' + addressData.telephone.value" :title="getMessage('cmdaddressdata.title.call_number')" class="tel">{{ addressData.telephone.value }}</a>
103
+ </li>
104
+ <li v-if="addressData.fax?.value">
105
+ <span class="fax">{{ addressData.fax.value }}</span>
69
106
  </li>
70
- <li v-if="addressData.fax"><span class="fax">{{ addressData.fax }}</span></li>
71
- <li v-if="addressData.email"><a :href="'mailto:' + addressData.email" class="email">{{
72
- addressData.email
73
- }}</a>
107
+ <li v-if="addressData.email?.value" :title="getMessage('cmdaddressdata.title.send_email')">
108
+ <a :href="'mailto:' + addressData.email.value" class="email">{{ addressData.email.value }}</a>
74
109
  </li>
75
110
  </ul>
111
+ <!-- end list without labels -->
76
112
  </address>
113
+ <!-- end address-data in vCard microformat -->
77
114
  </div>
78
115
  </template>
79
116
 
80
117
  <script>
118
+ // import mixins
119
+ import I18n from "../mixins/I18n"
120
+ import DefaultMessageProperties from "../mixins/CmdAddressData/DefaultMessageProperties"
121
+
122
+ // import components
123
+ import CmdCustomHeadline from "./CmdCustomHeadline"
124
+
81
125
  export default {
82
126
  name: "CmdAddressData",
127
+ mixins: [I18n, DefaultMessageProperties],
128
+ components: {
129
+ CmdCustomHeadline
130
+ },
83
131
  props: {
84
132
  /**
85
- * headline shown above address-data
133
+ * show a label-icon (if exists)
86
134
  */
87
- headline: {
88
- type: String,
135
+ showLabelIcons: {
136
+ type: Boolean,
137
+ default: true
138
+ },
139
+ /**
140
+ * show a label-text
141
+ */
142
+ showLabelTexts: {
143
+ type: Boolean,
144
+ default: true
145
+ },
146
+ /**
147
+ * properties for CmdCustomHeadline-component
148
+ */
149
+ cmdCustomHeadline: {
150
+ type: Object,
89
151
  required: false
90
152
  },
91
153
  /**
@@ -96,7 +158,7 @@ export default {
96
158
  default: true
97
159
  },
98
160
  /**
99
- * all address-data (incl. lables) that will be shown
161
+ * all address-data (incl. labels) that will be shown
100
162
  */
101
163
  addressData: {
102
164
  type: Object,
@@ -121,10 +183,16 @@ export default {
121
183
  <style lang="scss">
122
184
  /* begin cmd-address-data ---------------------------------------------------------------------------------------- */
123
185
  .cmd-address-data {
124
- dd {
125
- margin-bottom: var(--default-margin);
186
+ dl {
187
+ grid-row-gap: calc(var(--default-gap) / 2);
188
+
189
+ dt, dd {
190
+ display: flex;
191
+ align-items: center;
192
+ }
126
193
  }
127
194
 
195
+
128
196
  ul {
129
197
  flex-direction: column;
130
198
  gap: calc(var(--default-gap) / 2);
@@ -1,9 +1,7 @@
1
1
  <template>
2
2
  <!-- begin cmd-back-to-top-button -->
3
3
  <transition name="fade">
4
- <a :class="iconBackToTop.iconClass" class="cmd-back-to-top-button" href="#" :title="iconBackToTop.tooltip"
5
- @click.prevent="onBackToTop"
6
- v-if="show"></a>
4
+ <a v-if="show" :class="iconBackToTop.iconClass" class="cmd-back-to-top-button" href="#" :title="iconBackToTop.tooltip" @click.prevent="onBackToTop"></a>
7
5
  </transition>
8
6
  <!-- end cmd-back-to-top-button -->
9
7
  </template>
@@ -21,6 +19,8 @@ export default {
21
19
  props: {
22
20
  /**
23
21
  * icon-class (and shown tooltip on hover) for back to top button
22
+ *
23
+ * @requiredForAccessibility: partial
24
24
  */
25
25
  iconBackToTop: {
26
26
  type: Object,
@@ -0,0 +1,104 @@
1
+ <template>
2
+ <div class="cmd-bank-account-data">
3
+ <!-- begin CmdCustomHeadline -->
4
+ <CmdCustomHeadline v-if="cmdCustomHeadline" v-bind="cmdCustomHeadline"/>
5
+ <!-- end CmdCustomHeadline -->
6
+
7
+ <!-- begin account data -->
8
+ <dl>
9
+ <template v-for="(entry, index) in accountData" :key="index">
10
+ <dt>{{ entry.text }}</dt>
11
+ <dd v-if="allowCopyByClick && entry.allowCopy" class="flex-container no-flex">
12
+ <span>{{ entry.value }}</span>
13
+ <a href="#" @click.prevent="copyToClipboard(entry.value)" :title="iconCopy.tooltip">
14
+ <span :class="iconCopy.iconClass"></span>
15
+ </a>
16
+ </dd>
17
+ <dd v-else :key="index">{{ entry.value }}</dd>
18
+ </template>
19
+ </dl>
20
+ <!-- end account data -->
21
+
22
+ <!-- begin additional information -->
23
+ <p v-if="additionalInformation">{{ additionalInformation }}</p>
24
+ <!-- end additional information -->
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ // import components
30
+ import CmdCustomHeadline from "./CmdCustomHeadline"
31
+
32
+ export default {
33
+ name: "CmdBankAccountData",
34
+ components: {CmdCustomHeadline},
35
+ props: {
36
+ /**
37
+ * bank account data
38
+ *
39
+ * must contain: owner, name of bank, IBAN, SWIFT/BIC
40
+ */
41
+ accountData: {
42
+ type: Array,
43
+ required: true
44
+ },
45
+ /**
46
+ * enable if data can be copied by click on icon
47
+ */
48
+ allowCopyByClick: {
49
+ type: Boolean,
50
+ default: true
51
+ },
52
+ /**
53
+ * additional information shown in a paragraph below account data
54
+ */
55
+ additionalInformation: {
56
+ type: String,
57
+ required: false
58
+ },
59
+ /**
60
+ * icon 'copy'
61
+ *
62
+ * @requiredForAccessibility: partial
63
+ */
64
+ iconCopy: {
65
+ type: Object,
66
+ default() {
67
+ return {
68
+ iconClass: "icon-file-copy",
69
+ tooltip: "Copy data to clipboard!"
70
+ }
71
+ }
72
+ },
73
+ /**
74
+ * properties for CmdCustomHeadline-component
75
+ */
76
+ cmdCustomHeadline: {
77
+ type: Object,
78
+ required: false
79
+ }
80
+ },
81
+ methods: {
82
+ copyToClipboard(entry) {
83
+ // get data, remove spaces and copy to clipboard
84
+ const output = entry.replace(/\s/g, "")
85
+ navigator.clipboard.writeText(output)
86
+ alert(output + " was copied to clipboard")
87
+ }
88
+ }
89
+ }
90
+ </script>
91
+
92
+ <style lang="scss">
93
+ .cmd-bank-account-data {
94
+ dd.flex-container {
95
+ gap: calc(var(--default-gap) / 2);
96
+
97
+ > span {
98
+ &:first-child {
99
+ white-space: nowrap;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ </style>