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
@@ -0,0 +1,237 @@
1
+ <script>
2
+ function getPropertyTypeName(type) {
3
+ if(Array.isArray(type)) {
4
+ return type.map(t => t.name).join(", ")
5
+ }
6
+ return type.name
7
+ }
8
+
9
+ function getPropertyDefault(defaultValue) {
10
+ if(typeof defaultValue === "function") {
11
+ return defaultValue()
12
+ }
13
+ return defaultValue
14
+ }
15
+
16
+ function getIcon(value) {
17
+ if (value === "partial") {
18
+ return "icon-exclamation-circle partial"
19
+ }
20
+ return value ? "icon-check-circle" : "icon-cancel-circle not-required";
21
+ }
22
+
23
+ function getTooltip(value) {
24
+ if (value === "partial") {
25
+ return "Parts of this property are required"
26
+ }
27
+ return value ? "Property is required for component" : "Property is not required for component"
28
+ }
29
+
30
+ function getPropertyDescription(propertyDescriptions, propertyName) {
31
+ if(propertyDescriptions) {
32
+ if(propertyDescriptions[propertyName]?.comments?.length) {
33
+ return propertyDescriptions[propertyName].comments.join("<br />")
34
+ }
35
+ }
36
+ return ""
37
+ }
38
+
39
+ function hasAnnotation(propertyDescriptions, propertyName, annotationName) {
40
+ return propertyDescriptions?.[propertyName]?.annotations?.[annotationName]?.length
41
+ }
42
+
43
+ // function hasAnnotationValue(propertyDescriptions, propertyName, annotationName, annotationValue) {
44
+ // return getAnnotationValues(propertyDescriptions, propertyName, annotationName).includes(annotationValue)
45
+ // }
46
+
47
+ function getAnnotationValues(propertyDescriptions, propertyName, annotationName) {
48
+ return (propertyDescriptions?.[propertyName]?.annotations?.[annotationName] || []).join("").split(/\s*,\s*/)
49
+ }
50
+
51
+ function getAnnotationValue(propertyDescriptions, propertyName, annotationName) {
52
+ const values = propertyDescriptions?.[propertyName]?.annotations?.[annotationName] || []
53
+ if (values.length) {
54
+ return values[0]
55
+ }
56
+ return null
57
+ }
58
+
59
+ // function getAnnotation(propertyDescriptions, propertyName, annotationName) {
60
+ // if(propertyDescriptions) {
61
+ // if(propertyDescriptions[propertyName]?.annotations?.[annotationName]?.length) {
62
+ // return propertyDescriptions[propertyName].annotations[annotationName].join("").split(/\s*,\s*/)
63
+ // }
64
+ // }
65
+ // return []
66
+ // }
67
+
68
+ function getPropertyStructure(propertyStructures, propertyName) {
69
+ if(propertyStructures?.[propertyName]) {
70
+ return JSON.stringify(propertyStructures?.[propertyName], null, 2)
71
+ }
72
+ return "-"
73
+ }
74
+
75
+ export {
76
+ getPropertyTypeName,
77
+ getPropertyDefault,
78
+ getIcon,
79
+ getTooltip,
80
+ getPropertyDescription,
81
+ getPropertyStructure
82
+ }
83
+ </script>
84
+
85
+ <script setup>
86
+ import { defineProps, computed } from "vue"
87
+ import {capitalize} from "../../utils/string"
88
+ import componentsDescription from "../data/componentsDescription.json"
89
+
90
+ const props = defineProps(
91
+ {
92
+ properties: {
93
+ type: Object,
94
+ required: true
95
+ },
96
+ propertyDescriptions: {
97
+ type: Object,
98
+ required: false
99
+ },
100
+ propertyStructures: {
101
+ type: Object,
102
+ required: false
103
+ }
104
+ }
105
+ )
106
+
107
+ const sortedProperties = computed(
108
+ function() {
109
+ return Object.entries(props.properties).sort((a, b) => a[0].localeCompare(b[0]))
110
+ }
111
+ )
112
+
113
+ function resolveComponentName(name) {
114
+ if (name.slice(0, 3) === "cmd" && name.length > 3) {
115
+ const componentName = capitalize(name)
116
+ if (componentsDescription[componentName]) {
117
+ return componentName
118
+ }
119
+ const componentNameParts = componentName.split(/(?<=[a-z])(?=[A-Z])/)
120
+ for (let i = componentNameParts.length - 2; i > 2; i--) {
121
+ const componentNameCandidate = componentNameParts.slice(0, i).join("")
122
+ if (componentsDescription[componentNameCandidate]) {
123
+ return componentNameCandidate
124
+ }
125
+ }
126
+ }
127
+ return null
128
+ }
129
+
130
+ function createComponentLink(name) {
131
+ // check if property.name starts with cmd-namespace-prefix
132
+ return !!resolveComponentName(name)
133
+ }
134
+
135
+ function createDetailLink(type) {
136
+ // check if property-type is array or object
137
+ if(Array.isArray(type)) {
138
+ return type.some(t => t.name === "Array" || t.name === "Object")
139
+ }
140
+ return type.name === "Array" || type.name === "Object"
141
+ }
142
+ </script>
143
+
144
+ <template>
145
+ <h2>Properties</h2>
146
+ <table class="table-properties">
147
+ <thead>
148
+ <tr>
149
+ <th>Name</th>
150
+ <th>Type</th>
151
+ <th>Required</th>
152
+ <th>Structure</th>
153
+ <th>Default</th>
154
+ <th>Req. for Accessibility</th>
155
+ <th>Allowed Values</th>
156
+ <th>Affects Styling</th>
157
+ <th>Description</th>
158
+ </tr>
159
+ </thead>
160
+ <tbody>
161
+ <tr v-for="([propertyName, property]) in sortedProperties" :key="propertyName">
162
+ <td>
163
+ <template v-if="createComponentLink(propertyName)">
164
+ <router-link :to="{name: resolveComponentName(propertyName), params: { tab: 'properties'}}" title="Open help page for this component">{{ propertyName }}</router-link>
165
+ </template>
166
+ <template v-else-if="createDetailLink(property.type)">
167
+ <a :href="'#' + propertyName">{{ propertyName }}</a>
168
+ </template>
169
+ <template v-else>
170
+ {{ propertyName }}
171
+ </template>
172
+ </td>
173
+ <td>
174
+ {{ getPropertyTypeName(property.type) }}
175
+ </td>
176
+ <td class="contains-status-icons">
177
+ <span :class="getIcon(property.required)" :title="getTooltip(property.required)"></span>
178
+ </td>
179
+ <td>
180
+ <pre v-if="getPropertyStructure(props.propertyStructures, propertyName)">{{ getPropertyStructure(props.propertyStructures, propertyName) }}</pre>
181
+ </td>
182
+ <td>
183
+ <pre v-if="getPropertyDefault(property.default)">{{getPropertyDefault(property.default) }}</pre>
184
+ <template v-else>
185
+ <em>(none)</em>
186
+ </template>
187
+ </td>
188
+ <td class="contains-status-icons">
189
+ <span :class="getIcon(getAnnotationValue(props.propertyDescriptions, propertyName, 'requiredForAccessibility'))" :title="getTooltip(property.required)"></span>
190
+ </td>
191
+ <td class="allowed-values">
192
+ <ul v-if="hasAnnotation(props.propertyDescriptions, propertyName, 'allowedValues')">
193
+ <li v-for="value in getAnnotationValues(props.propertyDescriptions, propertyName, 'allowedValues')" :key="value">{{ value }}</li>
194
+ </ul>
195
+ <em v-else>
196
+ (all)
197
+ </em>
198
+ </td>
199
+ <td class="contains-status-icons">
200
+ <span :class="getIcon(hasAnnotation(props.propertyDescriptions, propertyName, 'affectsStyling'))" :title="getTooltip(property.required)"></span>
201
+ </td>
202
+ <td v-html="getPropertyDescription(props.propertyDescriptions, propertyName)">
203
+ </td>
204
+ </tr>
205
+ </tbody>
206
+ </table>
207
+ </template>
208
+
209
+ <style lang="scss">
210
+ .table-properties {
211
+ td {
212
+ text-align: left;
213
+
214
+ &.contains-status-icons {
215
+ text-align: center;
216
+
217
+ span[class*="icon"] {
218
+ color: var(--success-color);
219
+
220
+ &.not-required {
221
+ color: var(--error-color);
222
+ }
223
+
224
+ &.partial {
225
+ color: var(--warning-color);
226
+ }
227
+ }
228
+ }
229
+
230
+ &.allowed-values {
231
+ ul {
232
+ margin: 0;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ </style>
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <section class="example-section">
3
+ <a :id="getExampleId()"></a>
4
+ <!-- begin cmd-custom-headline -->
5
+ <CmdCustomHeadline
6
+ :preHeadlineText="getPreHeadlineText()"
7
+ :headlineText="headlineText"
8
+ :headlineLevel="3"
9
+ />
10
+ <!-- end cmd-custom-headline -->
11
+ <slot></slot>
12
+ </section>
13
+ </template>
14
+
15
+ <script>
16
+ // import functions
17
+ import {currentSequenceValue, nextSequenceValue} from "../../utils/globalSequence";
18
+
19
+ // import components
20
+ import CmdCustomHeadline from "../../components/CmdCustomHeadline"
21
+
22
+ export default {
23
+ name: "ExampleSectionWrapper",
24
+ components: {
25
+ CmdCustomHeadline
26
+ },
27
+ props: {
28
+ componentName: {
29
+ type: String,
30
+ required: true
31
+ },
32
+ headlineText: {
33
+ type: String,
34
+ required: true
35
+ }
36
+ },
37
+ methods: {
38
+ getExampleId() {
39
+ return "example" + nextSequenceValue(this.componentName)
40
+ },
41
+ getPreHeadlineText() {
42
+ return "Example #" + currentSequenceValue(this.componentName)
43
+ }
44
+ }
45
+ }
46
+ </script>
@@ -0,0 +1,113 @@
1
+ <script setup>
2
+ import {defineProps, ref, computed} from "vue"
3
+ import {isFrameMode} from "../../utils/common"
4
+ import ComponentCode from "./ComponentCode"
5
+ import CmdBox from "../../components/CmdBox"
6
+
7
+ defineProps({
8
+ code: {
9
+ type: String,
10
+ required: true
11
+ },
12
+ data: {
13
+ type: [String, Object, Array],
14
+ required: false
15
+ },
16
+ isFirstComponent: {
17
+ type: Boolean,
18
+ default: false
19
+ }
20
+ })
21
+
22
+ const responsiveWidth = ref("0px")
23
+ const frameUrl = new URL(location)
24
+ const showFrame = computed(() => !isFrameMode() && responsiveWidth.value !== "0px")
25
+
26
+ frameUrl.searchParams.set("frameMode", "true")
27
+
28
+ function changeWidth(width) {
29
+ responsiveWidth.value = width + "px"
30
+ }
31
+ </script>
32
+
33
+ <template>
34
+ <div class="flex-container vertical">
35
+ <div>
36
+ <header class="flex-container" id="switch-device-view">
37
+ <h4>View</h4>
38
+ <ul v-if="isFirstComponent" class="flex-container">
39
+ <li>
40
+ Toggle width:
41
+ </li>
42
+ <li>
43
+ <a :class="['icon-device-smartphone', {'active': responsiveWidth === '600px'}]" href="#" @click.prevent="changeWidth(600)" title="Change view to smartphone (0-600px)"></a>
44
+ </li>
45
+ <li>
46
+ <a :class="['icon-device-tablet', {'active': responsiveWidth === '1023px'}]" href="#" @click.prevent="changeWidth(1023)" title="Change view to tablet (601px-1023px)"></a>
47
+ </li>
48
+ <li>
49
+ <a :class="['icon-device-laptop', {'active': responsiveWidth === '1280px'}]" href="#" @click.prevent="changeWidth(1280)" title="Change view to laptop (1024px-1280px)"></a>
50
+ </li>
51
+ <li>
52
+ <a :class="['icon-device-desktop', {'active': responsiveWidth === '0px'}]" href="#" @click.prevent="changeWidth(0)" title="Change view to desktop (1281px+)"></a>
53
+ </li>
54
+ </ul>
55
+ </header>
56
+ <div v-if="showFrame" id="responsive-view-wrapper" :style="{width: responsiveWidth}">
57
+ <iframe :src="frameUrl.href" id="responsive-view" :style="{width: responsiveWidth}"></iframe>
58
+ </div>
59
+ <slot v-if="!showFrame"></slot>
60
+ </div>
61
+ <div v-if="!isFrameMode()" class="flex-container">
62
+ <div>
63
+ <CmdBox :useSlots="['body']" :collapsible="true" :collapsingBoxesOpen="true" :cmdCustomHeadline="{headlineText: 'Code', headlineLevel: 4}">
64
+ <template v-slot:body>
65
+ <ComponentCode :code="code"/>
66
+ </template>
67
+ </CmdBox>
68
+ </div>
69
+ <div v-if="data">
70
+ <CmdBox :useSlots="['body']" :collapsible="true" :collapsingBoxesOpen="true" :cmdCustomHeadline="{headlineText: 'Data', headlineLevel: 4}">
71
+ <template v-slot:body>
72
+ <ComponentCode :code="data" language="json"/>
73
+ </template>
74
+ </CmdBox>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </template>
79
+
80
+ <style lang="scss">
81
+
82
+ #responsive-view-wrapper {
83
+ resize: vertical;
84
+ overflow: hidden;
85
+ display: flex;
86
+
87
+ #responsive-view {
88
+ flex-grow: 1;
89
+ border: .1rem dotted var(--text-color);
90
+ }
91
+ }
92
+
93
+ #switch-device-view {
94
+ justify-content: space-between;
95
+
96
+ > * {
97
+ flex: none;
98
+ }
99
+
100
+ ul {
101
+ align-items: center;
102
+
103
+ li {
104
+ list-style-type: none;
105
+ margin: 0;
106
+
107
+ &:first-child {
108
+ white-space: nowrap;
109
+ }
110
+ }
111
+ }
112
+ }
113
+ </style>
@@ -0,0 +1,22 @@
1
+ export default [`<CmdAccordion :accordionData="2" toggleMode="multiple">
2
+ <template v-slot:accordionHeadline0>
3
+ <h4>Accordion 1</h4>
4
+ </template>
5
+ <template v-slot:accordionContent0>
6
+ <p>
7
+ Content for accordion 1
8
+ </p>
9
+ </template>
10
+ <template v-slot:accordionHeadline1>
11
+ <h4>Accordion 2</h4>
12
+ </template>
13
+ <template v-slot:accordionContent1>
14
+ <p>
15
+ Content for accordion 2
16
+ </p>
17
+ </template>
18
+ </CmdAccordion>`,
19
+ `<CmdAccordion
20
+ :accordionData="accordion.accordionData1"
21
+ />`
22
+ ]
@@ -0,0 +1,17 @@
1
+ export default [`<CmdAddressData
2
+ :addressData="addressData"
3
+ :linkGoogleMaps="true"
4
+ :cmdCustomHeadline="{
5
+ headlineText: 'Address',
6
+ headlineLevel: 5
7
+ }"
8
+ />`,
9
+ `<CmdAddressData
10
+ :addressData="addressData"
11
+ :linkGoogleMaps="false"
12
+ :cmdCustomHeadline="{
13
+ headlineText: 'Address',
14
+ headlineLevel: 5
15
+ }"
16
+ :showLabels="false"
17
+ />`]
@@ -0,0 +1,3 @@
1
+ export default [
2
+ `<CmdBackToTopButton />`
3
+ ]
@@ -0,0 +1,8 @@
1
+ export default [`<CmdBankAccountData
2
+ :account-data="bankAccountData"
3
+ :allow-copy-by-click="true"
4
+ :cmd-custom-headline="{
5
+ headlineText: 'Bank Account',
6
+ headlineLevel: 5
7
+ }"
8
+ />`]
@@ -0,0 +1,45 @@
1
+ export default [`<CmdBox
2
+ :cmdCustomHeadline="{
3
+ headlineText: 'Headline given by property',
4
+ headlineLevel: 5
5
+ }"
6
+ textBody="Content given by property"
7
+ />`,
8
+ `<CmdBox
9
+ :cmdCustomHeadline="{
10
+ headlineText: 'Headline given by property',
11
+ headlineLevel: 5
12
+ }"
13
+ textBody="Content given by property"
14
+ :collapsible="true"
15
+ />`,
16
+ `<CmdBox :useSlot="true">
17
+ <template v-slot:header>
18
+ <h5>
19
+ Headline given by slot
20
+ </h5>
21
+ </template>
22
+ <template v-slot:body>
23
+ <p class="padding">
24
+ Content given by slot
25
+ </p>
26
+ </template>
27
+ <template v-slot:footer>
28
+ <p>
29
+ Footer given by slot
30
+ </p>
31
+ </template>
32
+ </CmdBox>`,
33
+ `<CmdBox
34
+ boxType="product"
35
+ :product="boxesProduct[0]"
36
+ :cmdCustomHeadline="{ headlineLevel: 4}"
37
+ @click.prevent="clickedOnProduct"
38
+ />`,
39
+ `<CmdBox
40
+ boxType="user"
41
+ :user="boxesUser[2]"
42
+ :cmdCustomHeadline="{
43
+ headlineLevel: 4
44
+ }"/>`
45
+ ]
@@ -0,0 +1,11 @@
1
+ export default [
2
+ `<CmdBoxSiteSearch
3
+ text-legend="Legend"
4
+ :results="420"
5
+ :listOfFilters="listOfFilters"
6
+ :cmdCustomHeadline="{
7
+ headlineText: 'Search site',
8
+ headlineLevel: 5
9
+ }"
10
+ />`
11
+ ]
@@ -0,0 +1,6 @@
1
+ export default [
2
+ `<CmdBreadcrumbs
3
+ :breadcrumbLinks="breadcrumbs"
4
+ breadcrumbLabel="You are here:"
5
+ />`
6
+ ]
@@ -0,0 +1,8 @@
1
+ export default [
2
+ `<CmdCompanyLogo
3
+ :link="companyLogoData.link"
4
+ altText="CoManD Logo"
5
+ :pathDefaultLogo="require('@/assets/images/logo.svg')"
6
+ :pathDarkmodeLogo="require('@/assets/images/logo-darkmode.svg')"
7
+ />`
8
+ ]
@@ -0,0 +1,9 @@
1
+ export default [
2
+ `<CmdCookieDisclaimer
3
+ headline="Usage of cookies on this web site"
4
+ :cookieOptions="cookieDisclaimerData"
5
+ buttonLabelAcceptAllCookies="Accept all cookies"
6
+ buttonLabelAcceptCurrentSettings="Accept current settings"
7
+ @closeCookieDisclaimer="fancyBoxCookieDisclaimer = false"
8
+ />`
9
+ ]
@@ -0,0 +1,2 @@
1
+ export default
2
+ `<CmdCopyrightInformation/>`
@@ -0,0 +1,8 @@
1
+ export default [
2
+ `<CmdCustomHeadline
3
+ headlineText="Headline level 1"
4
+ :headlineLevel="1"
5
+ preHeadlineText="Pre-headline text"
6
+ iconClass="icon-user-profile"
7
+ />`
8
+ ]
@@ -0,0 +1,60 @@
1
+ export default [
2
+ `<CmdFakeSelect
3
+ labelText="Labeltext for default selectbox:"
4
+ :status="formElementStatus"
5
+ :selectData="fakeSelectOptions"
6
+ v-model="fakeSelectDefault"
7
+ required
8
+ defaultOptionName="Select an option:"
9
+ />`,
10
+ `<CmdFakeSelect
11
+ labelText="Selectbox with icons:"
12
+ :status="formElementStatus"
13
+ :selectData="fakeSelectOptionsWithIcons"
14
+ v-model="fakeSelectDefaultWithIcons"
15
+ defaultOptionName="Select an option:"
16
+ />`,
17
+ `<CmdFakeSelect
18
+ labelText="Selectbox with checkboxes:"
19
+ :status="formElementStatus"
20
+ :selectData="fakeSelectOptions"
21
+ v-model="fakeSelectCheckbox"
22
+ defaultOptionName="Options:"
23
+ :required="true"
24
+ id="selectbox-with-checkboxes"
25
+ type="checkboxOptions"
26
+ :useCustomTooltip="true"
27
+ />`,
28
+ `<CmdFakeSelect
29
+ labelText="Selectbox with slot-content:"
30
+ :status="formElementStatus"
31
+ type="content"
32
+ defaultOptionName="HTML-Content:"
33
+ >
34
+ <ul class="custom-fake-select-content">
35
+ <li>
36
+ <div>
37
+ <h3>Headline</h3>
38
+ <p>Some content inside a paragraph</p>
39
+ </div>
40
+ <img src="media/images/thumbnail-scroller/thumbnail/logo-cmd-blue-landscape.jpg" alt="image"/>
41
+ </li>
42
+ </ul>
43
+ </CmdFakeSelect>`,
44
+ `<CmdFakeSelect
45
+ labelText="Selectbox with country flags:"
46
+ :status="formElementStatus"
47
+ :selectData="fakeSelectCountries"
48
+ v-model="fakeSelectCountry"
49
+ defaultOptionName="Select country:"
50
+ type="country"
51
+ />`,
52
+ `<CmdFakeSelect
53
+ labelText="Selectbox with colors:"
54
+ :status="formElementStatus"
55
+ :selectData="fakeSelectColors"
56
+ v-model="fakeSelectColor"
57
+ required="required"
58
+ type="color"
59
+ />`
60
+ ]
@@ -0,0 +1,7 @@
1
+ export default [
2
+ `<CmdFancyBox
3
+ :allowEscapeKey="false"
4
+ >
5
+ Content
6
+ </CmdFancyBox>`
7
+ ]
@@ -0,0 +1,5 @@
1
+ export default
2
+ `<CmdFooterNavigation
3
+ :footerNavigation="footerNavigationData"
4
+ headline="Links"
5
+ />`