comand-component-library 3.1.45 → 3.1.48

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 +27 -14
  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 +7 -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,54 +1,142 @@
1
1
  <template>
2
2
  <div
3
- :class="['cmd-main-navigation main-navigation-wrapper', {'hide-sub-navigation' : !showSubNavigations, 'open': showOffcanvas, 'persist-on-mobile': persistOnMobile, 'show-content-overlay': showContentOverlay}]">
3
+ :class="[
4
+ 'cmd-main-navigation main-navigation-wrapper',
5
+ {
6
+ 'hide-sub-navigation' : !showSubNavigations,
7
+ 'open-off-canvas': showOffcanvas,
8
+ 'persist-on-mobile': persistOnMobile,
9
+ 'show-content-overlay': showContentOverlay
10
+ }
11
+ ]">
4
12
  <nav>
13
+ <!-- begin main-level -->
5
14
  <ul :class="{'stretch-items' : stretchMainItems}">
6
15
  <li class="close-nav" v-if="showOffcanvas">
7
16
  <a href="#" @click.prevent="showOffcanvas = false">
8
17
  <span v-if="closeOffcanvas.iconClass" :class="closeOffcanvas.iconClass"></span>
9
- <span :class="{'hidden': closeOffcanvas.hideText}">{{ closeOffcanvas.text }}</span>
18
+ <span :class="{'hidden': !closeOffcanvas.showText}">{{ closeOffcanvas.text }}</span>
10
19
  </a>
11
20
  </li>
12
21
  <li v-for="(navigationEntry, index) in navigationEntries" :key="index"
13
22
  :class="{'open' : navigationEntry.open}">
14
- <a :href="navigationEntry.href" :target="navigationEntry.target"
15
- @click="clickLink($event, navigationEntry)">
16
- <span :class="navigationEntry.iconClass" v-if="navigationEntry.iconClass"></span>
17
- <span>{{ navigationEntry.name }}</span>
23
+ <!-- begin type === href -->
24
+ <a
25
+ v-if="navigationEntry.type === 'href'"
26
+ :href="navigationEntry.path"
27
+ :title="navigationEntry.tooltip"
28
+ :target="navigationEntry.target"
29
+ @click="executeLink($event, navigationEntry)"
30
+ >
31
+ <span v-if="navigationEntry.iconClass" :class="navigationEntry.iconClass"></span>
32
+ <span v-if="navigationEntry.text">{{ navigationEntry.text }}</span>
18
33
  <span v-if="navigationEntry.subentries && navigationEntry.subentries.length > 0"
19
- :class="subentriesIconClass"></span>
34
+ :class="subentriesIconClass"
35
+ ></span>
20
36
  </a>
37
+ <!-- end type === href -->
38
+
39
+ <!-- begin type === router -->
40
+ <router-link
41
+ v-if="navigationEntry.type === 'router'"
42
+ :to="getRoute(navigationEntry)"
43
+ :title="navigationEntry.tooltip"
44
+ :target="navigationEntry.target"
45
+ @click="executeLink($event, navigationEntry)"
46
+ >
47
+ <span v-if="navigationEntry.iconClass" :class="navigationEntry.iconClass"></span>
48
+ <span v-if="navigationEntry.text">{{ navigationEntry.text }}</span>
49
+ <span v-if="navigationEntry.subentries && navigationEntry.subentries.length > 0"
50
+ :class="subentriesIconClass"></span>
51
+ </router-link>
52
+ <!-- end type === router -->
53
+
54
+ <!-- begin sub-level 1 -->
21
55
  <ul v-if="navigationEntry.subentries" aria-expanded="true">
22
56
  <li v-for="(navigationSubEntry, subindex) in navigationEntry.subentries" :key="subindex"
23
57
  :class="{'open' : navigationSubEntry.open}">
24
- <a :href="navigationSubEntry.href" :target="navigationSubEntry.target"
25
- @click="clickLink($event, navigationSubEntry)">
26
- <span>{{ navigationSubEntry.name }}</span>
27
- <span :class="subSubentriesIconClass" v-if="navigationSubEntry.subentries"></span>
58
+ <!-- begin type === href -->
59
+ <a v-if="navigationSubEntry.type === 'href'"
60
+ :href="navigationSubEntry.path"
61
+ :title="navigationSubEntry.tooltip"
62
+ :target="navigationSubEntry.target"
63
+ @click="executeLink($event, navigationSubEntry)">
64
+ <span v-if="navigationSubEntry.iconClass" :class="navigationSubEntry.iconClass"></span>
65
+ <span v-if="navigationSubEntry.text">{{ navigationSubEntry.text }}</span>
66
+ <span v-if="navigationSubEntry.subentries && navigationSubEntry.subentries.length > 0"
67
+ :class="subentriesIconClass"
68
+ ></span>
28
69
  </a>
70
+ <!-- end type === href -->
71
+
72
+ <!-- begin type === router -->
73
+ <router-link v-if="navigationSubEntry.type === 'router'"
74
+ :to="getRoute(navigationSubEntry)"
75
+ :title="navigationSubEntry.tooltip"
76
+ :target="navigationSubEntry.target"
77
+ @click="executeLink($event, navigationSubEntry)">
78
+ <span v-if="navigationSubEntry.iconClass" :class="navigationSubEntry.iconClass"></span>
79
+ <span v-if="navigationSubEntry.text">{{ navigationSubEntry.text }}</span>
80
+ <span v-if="navigationSubEntry.subentries && navigationSubEntry.subentries.length > 0"
81
+ :class="subentriesIconClass"></span>
82
+ </router-link>
83
+ <!-- end type === router -->
84
+
85
+ <!-- begin sub-level 2 -->
29
86
  <ul v-if="navigationSubEntry.subentries">
30
87
  <li v-for="(navigationSubSubEntry, subsubindex) in navigationSubEntry.subentries"
31
88
  :key="subsubindex">
32
- <a :href="navigationSubSubEntry.href" :target="navigationSubSubEntry.target"
33
- @click="clickLink($event, navigationSubSubEntry)">
34
- <span>{{ navigationSubSubEntry.name }}</span>
89
+ <!-- begin type === href -->
90
+ <a v-if="navigationEntry.type === 'href'"
91
+ :href="navigationSubSubEntry.path"
92
+ :title="navigationSubSubEntry.tooltip"
93
+ :target="navigationSubSubEntry.target"
94
+ @click="executeLink($event, navigationSubSubEntry)">
95
+ <span v-if="navigationSubSubEntry.iconClass" :class="navigationSubSubEntry.iconClass"></span>
96
+ <span v-if="navigationSubSubEntry.text">{{ navigationSubSubEntry.text }}</span>
97
+ <span v-if="navigationSubSubEntry.subentries && navigationSubSubEntry.subentries.length > 0"
98
+ :class="subentriesIconClass"
99
+ ></span>
35
100
  </a>
101
+ <!-- end type === href -->
102
+
103
+ <!-- begin type === router -->
104
+ <router-link v-if="navigationEntry.type === 'router'"
105
+ :to="getRoute(navigationSubSubEntry)"
106
+ :target="navigationSubSubEntry.target"
107
+ :title="navigationSubSubEntry.tooltip"
108
+ @click="executeLink($event, navigationSubSubEntry)">
109
+ <span v-if="navigationSubSubEntry.iconClass" :class="navigationSubSubEntry.iconClass"></span>
110
+ <span v-if="navigationSubSubEntry.text">{{ navigationSubSubEntry.text }}</span>
111
+ <span v-if="navigationSubSubEntry.subentries && navigationSubSubEntry.subentries.length > 0"
112
+ :class="subentriesIconClass"></span>
113
+ </router-link>
114
+ <!-- end type === router -->
36
115
  </li>
37
116
  </ul>
117
+ <!-- end sub-level 2 -->
38
118
  </li>
39
119
  </ul>
120
+ <!-- begin sub-level 1 -->
40
121
  </li>
41
122
  </ul>
123
+ <!-- end main-level -->
42
124
  </nav>
125
+
126
+ <!-- begin offCanvasButton -->
43
127
  <a href="#" class="button" id="toggle-offcanvas" @click.prevent="showOffcanvas = !showOffcanvas"
44
128
  v-if="persistOnMobile === false">
45
129
  <span :class="buttonOffcanvas.iconClass"></span>
46
- <span :class="{'hidden' : buttonOffcanvas.hideText}">{{ buttonOffcanvas.text }}</span>
130
+ <span :class="{'hidden' : !buttonOffcanvas.showText}">{{ buttonOffcanvas.text }}</span>
47
131
  </a>
132
+ <!-- end offCanvasButton -->
48
133
  </div>
49
134
  </template>
50
135
 
51
136
  <script>
137
+ // import functions
138
+ import {getRoute} from "../utilities.js"
139
+
52
140
  export default {
53
141
  name: "CmdMainNavigation",
54
142
  data() {
@@ -59,7 +147,7 @@ export default {
59
147
  },
60
148
  props: {
61
149
  /**
62
- * toggle if main-entries (on firt-level) should be (horizontally) stretched equally
150
+ * toggle if main-entries (on first-level) should be (horizontally) stretched equally
63
151
  */
64
152
  stretchMainItems: {
65
153
  type: Boolean,
@@ -67,6 +155,8 @@ export default {
67
155
  },
68
156
  /**
69
157
  * set if navigation should persist on mobile and not be collapsed to off-canvas
158
+ *
159
+ * @affectsStyling: true
70
160
  */
71
161
  persistOnMobile: {
72
162
  type: Boolean,
@@ -81,6 +171,8 @@ export default {
81
171
  },
82
172
  /**
83
173
  * link shown inside off-canvas-navigation to close itself
174
+ *
175
+ * @requiredForAccessibility: partial
84
176
  */
85
177
  closeOffcanvas: {
86
178
  type: Object,
@@ -88,12 +180,14 @@ export default {
88
180
  return {
89
181
  iconClass: "icon-cancel",
90
182
  text: "Close navigation",
91
- hideText: false
183
+ showText: true
92
184
  }
93
185
  }
94
186
  },
95
187
  /**
96
188
  * button to open off-canvas-navigation
189
+ *
190
+ * @requiredForAccessibility: partial
97
191
  */
98
192
  buttonOffcanvas: {
99
193
  type: Object,
@@ -101,7 +195,7 @@ export default {
101
195
  return {
102
196
  iconClass: "icon-bars",
103
197
  text: "Open navigation",
104
- hideText: true
198
+ showText: false
105
199
  }
106
200
  }
107
201
  },
@@ -110,17 +204,19 @@ export default {
110
204
  */
111
205
  subentriesIconClass: {
112
206
  type: String,
113
- default: "icon-single-arrow-down"
207
+ default: "icon-single-arrow-right"
114
208
  },
115
209
  /**
116
210
  * icon to show if a sub-entry has further sub-entries
117
211
  */
118
212
  subSubentriesIconClass: {
119
213
  type: String,
120
- default: "icon-single-arrow-right"
214
+ default: "icon-single-arrow-down"
121
215
  },
122
216
  /**
123
217
  * toggle if overlay over content should be shown if off-canvas is open
218
+ *
219
+ * @affectsStyling: true
124
220
  */
125
221
  showContentOverlay: {
126
222
  type: Boolean,
@@ -128,13 +224,13 @@ export default {
128
224
  }
129
225
  },
130
226
  methods: {
131
- clickLink(event, navigationEntry) {
132
- if (navigationEntry.target || (navigationEntry.href.length > 1)) {
227
+ executeLink(event, navigationEntry) {
228
+ if (navigationEntry.target || (navigationEntry.path.length > 1)) {
133
229
  return true
134
230
  }
135
- if (navigationEntry.href === '#' || navigationEntry.href === '') {
231
+ if (navigationEntry.path === '#' || navigationEntry.path === '') {
136
232
  event.preventDefault()
137
- this.$emit('click', navigationEntry.href)
233
+ this.$emit('click', navigationEntry.path)
138
234
 
139
235
  }
140
236
  if (!(navigationEntry.subentries && navigationEntry.subentries.length > 0)) {
@@ -143,6 +239,9 @@ export default {
143
239
  // add entry "open" to navigationEntry-object (will be watched by vue3 automatically)
144
240
  navigationEntry.open = !navigationEntry.open
145
241
  }
242
+ },
243
+ getRoute(navigationEntry) {
244
+ return getRoute(navigationEntry)
146
245
  }
147
246
  }
148
247
  }
@@ -214,7 +313,7 @@ export default {
214
313
  width: auto;
215
314
  }
216
315
 
217
- &.open {
316
+ &.open-off-canvas {
218
317
  nav {
219
318
  left: 0;
220
319
  opacity: 1;
@@ -223,13 +322,27 @@ export default {
223
322
  background: var(--default-background-color);
224
323
  border-right: var(--default-border);
225
324
  }
325
+
326
+ &.show-content-overlay {
327
+ nav {
328
+ &::after {
329
+ content: "";
330
+ position: fixed;
331
+ width: calc(100% - var(--nav-width));
332
+ top: 0;
333
+ left: var(--nav-width);
334
+ height: 100%;
335
+ display: block;
336
+ background: var(--pure-black-reduced-opacity);
337
+ }
338
+ }
339
+ }
226
340
  }
227
341
 
228
342
  nav {
229
343
  --nav-width: 30%;
230
344
 
231
- position: fixed;
232
- top: 0;
345
+ position: absolute;
233
346
  left: -100%;
234
347
  width: var(--nav-width);
235
348
  height: 100%;
@@ -346,21 +459,6 @@ export default {
346
459
  }
347
460
  }
348
461
  }
349
-
350
- &.show-content-overlay {
351
- nav {
352
- &::after {
353
- content: "";
354
- position: fixed;
355
- width: calc(100% - var(--nav-width));
356
- top: 0;
357
- left: var(--nav-width);
358
- height: 100%;
359
- display: block;
360
- background: var(--pure-black-reduced-opacity);
361
- }
362
- }
363
- }
364
462
  }
365
463
  }
366
464
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div :class="['label', 'multiple-switch', {disabled: status === 'disabled', error: status === 'error'}]">
3
- <span v-if="labelText">{{ labelText }}</span>
3
+ <span :class="{hidden: !showLegend}">{{ labelText }}</span>
4
4
  <span class="flex-container no-gap no-flex">
5
5
  <label :class="{disabled: status === 'disabled'}" :for="multipleswitch.id"
6
6
  v-for="(multipleswitch, index) in multipleSwitches" :key="index">
@@ -23,27 +23,58 @@
23
23
  export default {
24
24
  name: "CmdMultipleSwitch",
25
25
  props: {
26
- value: { /* required for v-model */
26
+ /**
27
+ * value for v-model
28
+ */
29
+ value: {
27
30
  type: [String, Array],
28
31
  required: false,
29
32
  default: ""
30
33
  },
34
+ /**
35
+ * toggle label visibility
36
+ */
37
+ showLabel: {
38
+ type: Boolean,
39
+ default: true
40
+ },
41
+ /**
42
+ * text for label
43
+ *
44
+ * @requiredForAccessibility: true
45
+ */
31
46
  labelText: {
32
47
  type: String,
33
48
  required: false
34
49
  },
50
+ /**
51
+ * list of switches
52
+ */
35
53
  multipleSwitches: {
36
54
  type: Array,
37
55
  required: true
38
56
  },
57
+ /**
58
+ * set type for switches
59
+ *
60
+ * @allowedValues: checkbox, radio
61
+ */
39
62
  switchTypes: {
40
63
  type: String,
41
64
  required: true
42
65
  },
66
+ /**
67
+ * name-attribute for switches
68
+ */
43
69
  switchNames: {
44
70
  type: String,
45
71
  required: true
46
72
  },
73
+ /**
74
+ * status for all switches
75
+ *
76
+ * @allowedValues: error, disabled
77
+ */
47
78
  status: {
48
79
  type: String,
49
80
  required: false
@@ -1,26 +1,70 @@
1
1
  <template>
2
2
  <ol class="cmd-multistep-form-progress-bar">
3
3
  <li v-for="(step, index) in multisteps" :key="index" :class="{active : activeLink === index}">
4
- <a :href="step.path" @click.stop.prevent="clickedStep($event, index)">
5
- <span class="number" v-if="showStepNumber">{{ index + 1 }}</span>
6
- <span v-else :class="step.iconClass"></span>
7
- <span>{{ step.name }}</span>
4
+ <!-- begin type === href -->
5
+ <a v-if="step.type === 'href'"
6
+ :href="step.path" @click.stop.prevent="clickedStep($event, index)"
7
+ :title="step.tooltip"
8
+ >
9
+ <span v-if="showStepNumber" class="number">{{ index + 1 }}</span>
10
+ <span v-if="step.iconClass" :class="step.iconClass"></span>
11
+ <span v-if="step.text">{{ step.text }}</span>
8
12
  <span :class="separatorIconClass"></span>
9
13
  </a>
14
+ <!-- end type === href -->
15
+
16
+ <!-- begin type === router -->
17
+ <router-link
18
+ v-if="step.type === 'router'"
19
+ :to="getRoute(step)"
20
+ :title="step.tooltip"
21
+ >
22
+ <span v-if="showStepNumber" class="number">{{ index + 1 }}</span>
23
+ <span v-if="step.iconClass" :class="step.iconClass"></span>
24
+ <span v-if="step.text">{{ step.text }}</span>
25
+ <span :class="separatorIconClass"></span>
26
+ </router-link>
27
+ <!-- end type === router -->
28
+
29
+ <!-- begin type === button/submit -->
30
+ <button
31
+ v-if="step.type === 'button' || step.type === 'submit'"
32
+ class="button"
33
+ :type="step.type"
34
+ :name="step.name"
35
+ :title="step.tooltip"
36
+ :formaction="step.formaction"
37
+ @click.stop.prevent="clickedStep($event, index)"
38
+ >
39
+ <span v-if="showStepNumber" class="number">{{ index + 1 }}</span>
40
+ <span v-if="step.iconClass" :class="step.iconClass"></span>
41
+ <span v-if="step.text">{{ step.text }}</span>
42
+ <span :class="separatorIconClass"></span>
43
+ </button>
44
+ <!-- end type === button/submit -->
10
45
  </li>
11
46
  </ol>
12
47
  </template>
13
48
 
14
49
  <script>
50
+ // import functions
51
+ import {getRoute} from "../utilities.js"
52
+
15
53
  export default {
16
54
  name: 'CmdMultistepFormProgressBar',
17
55
  data() {
18
56
  return {
19
- activeLink: 0,
20
- showStepNumber: true
57
+ activeLink: 0
21
58
  }
22
59
  },
23
60
  props: {
61
+ /**
62
+ * toggle visibility of step-number in front/left of link-icon and -name
63
+ */
64
+ showStepNumber: {
65
+ type: Boolean,
66
+ default: false
67
+ },
24
68
  /**
25
69
  * list of multisteps
26
70
  */
@@ -29,17 +73,22 @@ export default {
29
73
  required: true
30
74
  },
31
75
  /**
32
- * icon-class for separator shown inbetween multisteps
76
+ * icon-class for separator shown between multisteps
33
77
  */
34
78
  separatorIconClass: {
35
79
  type: String,
36
- required: true
80
+ default() {
81
+ return "icon-single-arrow-right"
82
+ }
37
83
  }
38
84
  },
39
85
  methods: {
40
86
  clickedStep(event, index) {
41
87
  this.activeLink = index;
42
88
  this.$emit('click', {event: event, index: index, stepPath: this.multisteps[index].path})
89
+ },
90
+ getRoute(step) {
91
+ return getRoute(step)
43
92
  }
44
93
  }
45
94
  }
@@ -165,7 +214,9 @@ export default {
165
214
 
166
215
  &:hover, &:active, &:focus {
167
216
  span, span[class*="icon"] {
168
- color: var(--primary-color);
217
+ &:not(:last-child) {
218
+ color: var(--primary-color);
219
+ }
169
220
  }
170
221
  }
171
222
  }
@@ -185,7 +236,6 @@ export default {
185
236
  li {
186
237
  &:not(:last-child) {
187
238
  border-bottom: var(--default-border);
188
- border-bottom-width: .2rem;
189
239
  }
190
240
 
191
241
  a {
@@ -1,41 +1,67 @@
1
1
  <template>
2
2
  <div class="cmd-opening-hours">
3
- <h4 v-if="headline">{{ headline }}</h4>
4
- <a v-if="pathToDetails" :href="pathToDetails" :class="{'closed': closed}">{{ textOpenClosed }}</a>
3
+ <!-- begin cmd-custom-headline -->
4
+ <CmdCustomHeadline v-if="cmdCustomHeadline" :headline="cmdCustomHeadline" />
5
+ <!-- end cmd-custom-headline -->
6
+
7
+ <!-- begin opening-status with link to detail-page -->
8
+ <template v-if="link && link?.path && link?.show">
9
+ <a v-if="link.type === 'href'" :href="link.path" :class="{closed: closed}">{{ textOpenClosed }}</a>
10
+ <router-link v-if="link.type === 'router'" :to="link.path" :class="{closed: closed}">{{ textOpenClosed }}</router-link>
11
+ <button v-if="link.type === 'button'" :class="['button', {closed: closed}]">{{ textOpenClosed }}</button>
12
+ </template>
13
+ <!-- end opening-status with link to detail-page -->
14
+
15
+ <!-- begin opening-status (without link) -->
5
16
  <span v-else :class="{'closed': closed}">{{ textOpenClosed }}</span>
17
+ <!-- end opening-status (without link) -->
18
+
19
+ <!-- begin opening-days and -hours -->
6
20
  <dl>
7
21
  <template v-for="day in openingHours" :key="day.day">
8
22
  <dt>{{ day.day }}:</dt>
9
23
  <dd>{{ day.fromTime }}&ndash;{{ day.tillTime }}</dd>
10
24
  </template>
11
25
  </dl>
12
- <div>
13
- <p v-if="textHolidaysClosed"><strong>{{ textHolidaysClosed }}</strong></p>
26
+ <!-- end opening-days and -hours -->
27
+
28
+ <!-- begin holiday-closes-text and miscellaneous information -->
29
+ <div v-if="textHolidaysClosed || textMiscInfo">
30
+ <p v-if="textHolidaysClosed">
31
+ <strong>{{ textHolidaysClosed }}</strong>
32
+ </p>
14
33
  <p v-if="textMiscInfo">{{ textMiscInfo }}</p>
15
34
  </div>
35
+ <!-- end holiday-closes-text and miscellaneous information -->
16
36
  </div>
17
37
  </template>
18
38
 
19
39
  <script>
40
+ // import components
41
+ import CmdCustomHeadline from "./CmdCustomHeadline"
42
+
20
43
  export default {
21
44
  name: "CmdOpeningHours",
45
+ components: {CmdCustomHeadline},
22
46
  props: {
23
47
  /**
24
- * headline above displayed opening hours
48
+ * properties for CmdCustomHeadline-component
25
49
  */
26
- headline: {
27
- type: String,
50
+ cmdCustomHeadline: {
51
+ type: Object,
28
52
  required: false
29
53
  },
30
54
  /**
31
- * set a path to a detail page
55
+ * set a link to a detail page
32
56
  */
33
- pathToDetails: {
34
- type: String,
57
+ link: {
58
+ type: Object,
35
59
  required: false
36
60
  },
37
61
  /**
38
62
  * toggles if "closed"-text will be shown
63
+ *
64
+ * @affectsStyling: true
39
65
  */
40
66
  closed: {
41
67
  type: Boolean,
@@ -1,8 +1,5 @@
1
1
  <template>
2
2
  <div class="cmd-pager">
3
- <p>
4
- Content: {{ currentPage }} of {{ numberOfPages }}
5
- </p>
6
3
  <div class="pager">
7
4
  <!-- begin button to previous page -->
8
5
  <a class="page-change" :class="{'disabled': currentPage === 1, 'button': showLinksAsButtons}"
@@ -69,7 +66,9 @@ export default {
69
66
  default: true
70
67
  },
71
68
  /**
69
+ * button to switch to previous page
72
70
  *
71
+ * @requiredForAccessibility: partial
73
72
  */
74
73
  prevButton: {
75
74
  type: Object,
@@ -80,6 +79,11 @@ export default {
80
79
  }
81
80
  }
82
81
  },
82
+ /**
83
+ * button to switch to next page
84
+ *
85
+ * @requiredForAccessibility: partial
86
+ */
83
87
  nextButton: {
84
88
  type: Object,
85
89
  default: function() {
@@ -100,14 +104,12 @@ export default {
100
104
  this.currentPage = page
101
105
  this.$emit('click', page)
102
106
  },
103
-
104
107
  nextPage() {
105
108
  if (this.currentPage < this.numberOfPages) {
106
109
  this.showPage(this.currentPage + 1)
107
110
  }
108
111
 
109
112
  },
110
-
111
113
  previousPage() {
112
114
  if (this.currentPage > 1) {
113
115
  this.showPage(this.currentPage - 1)