comand-component-library 3.1.71 → 3.1.74

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) 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 +2 -2
  4. package/src/App.vue +314 -189
  5. package/src/assets/data/cookie-disclaimer.json +7 -6
  6. package/src/assets/styles/global-styles.scss +10 -40
  7. package/src/components/CmdBox.vue +7 -5
  8. package/src/components/CmdCookieDisclaimer.vue +76 -8
  9. package/src/components/CmdFakeSelect.vue +40 -50
  10. package/src/components/CmdFormElement.vue +32 -41
  11. package/src/components/CmdInputGroup.vue +158 -12
  12. package/src/components/CmdListOfRequirements.vue +128 -0
  13. package/src/components/CmdMainNavigation.vue +2 -2
  14. package/src/components/CmdToggleDarkMode.vue +27 -10
  15. package/src/components/CmdTooltip.vue +1 -1
  16. package/src/documentation/generated/CmdAddressDataPropertyDescriptions.json +32 -0
  17. package/src/documentation/generated/CmdBackToTopButtonPropertyDescriptions.json +12 -0
  18. package/src/documentation/generated/CmdBankAccountDataPropertyDescriptions.json +34 -0
  19. package/src/documentation/generated/CmdBoxPropertyDescriptions.json +96 -0
  20. package/src/documentation/generated/CmdBoxSiteSearchPropertyDescriptions.json +79 -0
  21. package/src/documentation/generated/CmdBoxWrapperPropertyDescriptions.json +47 -0
  22. package/src/documentation/generated/CmdBreadcrumbsPropertyDescriptions.json +17 -0
  23. package/src/documentation/generated/CmdCompanyLogoPropertyDescriptions.json +27 -0
  24. package/src/documentation/generated/CmdCookieDisclaimerPropertyDescriptions.json +37 -0
  25. package/src/documentation/generated/CmdCustomHeadlinePropertyDescriptions.json +22 -0
  26. package/src/documentation/generated/CmdFakeSelectPropertyDescriptions.json +84 -0
  27. package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +62 -0
  28. package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +253 -0
  29. package/src/documentation/generated/CmdFormFiltersPropertyDescriptions.json +32 -0
  30. package/src/documentation/generated/CmdFormPropertyDescriptions.json +40 -0
  31. package/src/documentation/generated/CmdGoogleMapsPropertyDescriptions.json +7 -0
  32. package/src/documentation/generated/CmdImageGalleryPropertyDescriptions.json +22 -0
  33. package/src/documentation/generated/CmdImageZoomPropertyDescriptions.json +12 -0
  34. package/src/documentation/generated/CmdInputGroupPropertyDescriptions.json +122 -0
  35. package/src/documentation/generated/CmdListOfLinksPropertyDescriptions.json +60 -0
  36. package/src/documentation/generated/CmdListOfRequirementsPropertyDescriptions.json +22 -0
  37. package/src/documentation/generated/CmdLoginFormPropertyDescriptions.json +90 -0
  38. package/src/documentation/generated/CmdMainNavigationPropertyDescriptions.json +62 -0
  39. package/src/documentation/generated/CmdMultistepFormProgressBarPropertyDescriptions.json +17 -0
  40. package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +42 -0
  41. package/src/documentation/generated/CmdPagerPropertyDescriptions.json +37 -0
  42. package/src/documentation/generated/CmdProgressBarPropertyDescriptions.json +32 -0
  43. package/src/documentation/generated/CmdShareButtonsPropertyDescriptions.json +34 -0
  44. package/src/documentation/generated/CmdSiteHeaderPropertyDescriptions.json +27 -0
  45. package/src/documentation/generated/CmdSlideButtonPropertyDescriptions.json +25 -0
  46. package/src/documentation/generated/CmdSlideshowPropertyDescriptions.json +42 -0
  47. package/src/documentation/generated/CmdSwitchLanguagePropertyDescriptions.json +7 -0
  48. package/src/documentation/generated/CmdSystemMessagePropertyDescriptions.json +40 -0
  49. package/src/documentation/generated/CmdTablePropertyDescriptions.json +72 -0
  50. package/src/documentation/generated/CmdTabsPropertyDescriptions.json +27 -0
  51. package/src/documentation/generated/CmdThumbnailScrollerPropertyDescriptions.json +32 -0
  52. package/src/documentation/generated/CmdTooltipPropertyDescriptions.json +17 -0
  53. package/src/documentation/generated/CmdUploadFormPropertyDescriptions.json +175 -0
  54. package/src/documentation/generated/CmdWidthLimitationWrapperPropertyDescriptions.json +41 -0
  55. package/src/mixins/CmdCookieDisclaimer/DefaultMessageProperties.js +10 -0
  56. package/src/mixins/FieldValidation.js +1 -1
@@ -1,21 +1,67 @@
1
1
  <template>
2
- <div :class="['cmd-input-group label', {inline: labelInline, 'multiple-switch': multipleSwitch}]">
2
+ <div :class="[
3
+ 'cmd-input-group label',
4
+ validationStatus,
5
+ {inline: labelInline,
6
+ 'multiple-switch': multipleSwitch,
7
+ disabled: disabled,
8
+ 'toggle-switch': toggleSwitch,
9
+ 'has-state': validationStatus
10
+ }
11
+ ]">
3
12
  <span :class="['label-text', { hidden: !showLabel}]" :id="labelId" :aria-labelledby="labelId">
4
- <span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
13
+ <span>{{ labelText }}<sup v-if="required">*</sup></span>
14
+
15
+ <!-- begin CmdTooltip -->
16
+ <CmdTooltip v-if="useCustomTooltip" class="box" :class="validationStatus" :relatedId="tooltipId" :toggle-visibility-by-click="true">
17
+ <!-- begin CmdSystemMessage -->
18
+ <CmdSystemMessage
19
+ v-if="getValidationMessage"
20
+ :message="getValidationMessage"
21
+ :validation-status="validationStatus"
22
+ :iconClose="{show: false}"
23
+ />
24
+ <!-- end CmdSystemMessage -->
25
+
26
+ <!-- begin CmdListOfRequirements -->
27
+ <CmdListOfRequirements
28
+ v-if="showRequirements && (validationStatus === '' || validationStatus === 'error')"
29
+ :inputRequirements="inputRequirements"
30
+ :helplink="helplink"
31
+ :inputModelValue="modelValue"
32
+ :inputAttributes="$attrs"
33
+ />
34
+ <!-- end CmdListOfRequirements -->
35
+ </CmdTooltip>
36
+ <!-- end CmdTooltip -->
37
+
38
+ <a v-if="required || inputRequirements.length"
39
+ href="#"
40
+ @click.prevent
41
+ :class="getStatusIconClass"
42
+ :title="validationTooltip"
43
+ :aria-errormessage="getValidationMessage"
44
+ aria-live="assertive"
45
+ :id="tooltipId"
46
+ :role="validationStatus === 'error' ? 'alert' : 'dialog'">
47
+ </a>
5
48
  </span>
6
49
  <span v-if="!useSlot" :class="['flex-container', {'no-flex': !stretchHorizontally, 'no-gap': multipleSwitch}]">
7
50
  <label v-for="(inputElement, index) in inputElements" :key="index" :for="inputElement.id">
8
- <input :type="inputTypes"
9
- :id="inputElement.id"
10
- :name="inputElement.name"
11
- :value="inputElement.value"
12
- v-model="inputValue"
13
- :class="{'replace-input-type': replaceInputType}"
51
+ <input
52
+ :type="inputTypes"
53
+ :id="inputElement.id"
54
+ :name="inputElement.name"
55
+ :value="inputElement.value"
56
+ v-model="inputValue"
57
+ :disabled="disabled"
58
+ :class="{'replace-input-type': replaceInputType, 'toggle-switch': toggleSwitch}"
14
59
  />
15
60
  <span v-if="multipleSwitch && inputElement.iconClass" :class="inputElement.iconClass"></span>
16
61
  <span v-if="inputElement.labelText">{{ inputElement.labelText }}</span>
17
62
  </label>
18
63
  </span>
64
+
19
65
  <!-- begin useSlot -->
20
66
  <div v-else class="flex-container no-flex">
21
67
  <!-- begin slot -->
@@ -29,10 +75,29 @@
29
75
  <script>
30
76
  import {createUuid} from "../utils/common"
31
77
 
78
+ // import mixins
79
+ import FieldValidation from "../mixins/FieldValidation.js"
80
+ import Tooltip from "../mixins/Tooltip.js"
81
+
82
+ // import components
83
+ import CmdListOfRequirements from "./CmdListOfRequirements"
84
+ import CmdSystemMessage from "./CmdSystemMessage"
85
+ import CmdTooltip from "./CmdTooltip"
86
+
32
87
  export default {
88
+ components: {
89
+ CmdListOfRequirements,
90
+ CmdSystemMessage,
91
+ CmdTooltip
92
+ },
93
+ mixins: [
94
+ FieldValidation,
95
+ Tooltip
96
+ ],
33
97
  data() {
34
98
  return {
35
- value: ""
99
+ value: "",
100
+ validationStatus: ""
36
101
  }
37
102
  },
38
103
  props: {
@@ -43,14 +108,28 @@ export default {
43
108
  type: [Array, String],
44
109
  required: false
45
110
  },
111
+ /**
112
+ * set if input-group should be required
113
+ */
114
+ required: {
115
+ type: Boolean,
116
+ default: false
117
+ },
118
+ /**
119
+ * tooltip for validation
120
+ */
121
+ validationTooltip: {
122
+ type: String,
123
+ default: ""
124
+ },
46
125
  /**
47
126
  * list of input-elements inside group
48
127
  *
49
128
  * useSlot-property must be set to 'false'
50
129
  */
51
130
  inputElements: {
52
- type: Array,
53
- required: false
131
+ type: Array,
132
+ required: false
54
133
  },
55
134
  /**
56
135
  * set type for inputs in group
@@ -61,15 +140,39 @@ export default {
61
140
  type: String,
62
141
  default: "radio"
63
142
  },
143
+ /**
144
+ * set status for label and inner form-elements
145
+ *
146
+ * @allowedValues: error, warning, success, info
147
+ *
148
+ * @affectsStyling: true
149
+ */
150
+ status: {
151
+ type: String,
152
+ required: false
153
+ },
64
154
  /**
65
155
  * for replacing native checkboxes/radio-buttons by custom ones (based on frontend-framework)
66
156
  *
157
+ * toggleSwitch-property must be set to 'false'
158
+ *
67
159
  * @affectsStyling: true
68
160
  */
69
161
  replaceInputType: {
70
162
  type: Boolean,
71
163
  default: false
72
164
  },
165
+ /**
166
+ * for replacing native checkboxes/radio-buttons by toggle-switches (based on frontend-framework)
167
+ *
168
+ * replaceInputType-property must be set to 'false'
169
+ *
170
+ * @affectsStyling: true
171
+ */
172
+ toggleSwitch: {
173
+ type: Boolean,
174
+ default: false
175
+ },
73
176
  /**
74
177
  * activate if input-elements should be given by slot
75
178
  */
@@ -117,12 +220,21 @@ export default {
117
220
  stretchHorizontally: {
118
221
  type: Boolean,
119
222
  default: false
223
+ },
224
+ /**
225
+ * define disabled-property to set disabled-style
226
+ *
227
+ * component cannot handle native disabled-attribute, because it is no native form-element
228
+ */
229
+ disabled: {
230
+ type: Boolean,
231
+ default: false
120
232
  }
121
233
  },
122
234
  computed: {
123
235
  // get ID for accessibility
124
236
  labelId() {
125
- if(this.$attrs.id !== undefined) {
237
+ if (this.$attrs.id !== undefined) {
126
238
  return this.$attrs.id
127
239
  }
128
240
  return "label-" + createUuid()
@@ -152,6 +264,14 @@ export default {
152
264
  this.$emit("update:modelValue", values)
153
265
  }
154
266
  }
267
+ },
268
+ watch: {
269
+ status: {
270
+ handler() {
271
+ this.validationStatus = this.status
272
+ },
273
+ immediate: true
274
+ }
155
275
  }
156
276
  }
157
277
  </script>
@@ -162,5 +282,31 @@ export default {
162
282
  display: flex;
163
283
  gap: var(--default-gap);
164
284
  }
285
+
286
+ /* overwrite default behavior from frontend-framework */
287
+ &.toggle-switch {
288
+ display: block;
289
+ }
290
+
291
+ /* overwrite default behavior from frontend-framework */
292
+ .label-text {
293
+ display: inline-flex;
294
+
295
+ > a[class*="icon"] {
296
+ margin-left: calc(var(--default-margin) / 2);
297
+ }
298
+ }
299
+
300
+ &.has-state {
301
+ label {
302
+ color: var(--status-color);
303
+ }
304
+
305
+ &.multiple-switch {
306
+ label {
307
+ border-color: var(--status-color);
308
+ }
309
+ }
310
+ }
165
311
  }
166
312
  </style>
@@ -0,0 +1,128 @@
1
+ <template>
2
+ <div class="cmd-list-of-requirements">
3
+ <!-- begin cmd-custom-headline -->
4
+ <CmdCustomHeadline :headline-level="cmdCustomHeadline.headlineLevel">
5
+ <!-- {{ getMessage("cmdfakeselect.headline.requirements_for_input") }}<br/>"{{ labelText }}"-->
6
+ </CmdCustomHeadline>
7
+ <!-- end cmd-custom-headline -->
8
+
9
+ <!-- begin list of requirements -->
10
+ <dl>
11
+ <template v-for="(requirement, index) in inputRequirements" :key="index">
12
+ <dt aria-live="assertive" :class="requirement.valid(inputModelValue, inputAttributes) ? 'success' : 'error'">{{ requirement.message }}:</dt>
13
+ <dd :class="requirement.valid(inputModelValue, inputAttributes) ? 'success' : 'error'">
14
+ <span
15
+ aria-live="assertive"
16
+ :class="requirement.valid(inputModelValue, inputAttributes) ? 'icon-check-circle' : 'icon-error-circle'"
17
+ :title="requirement.valid(inputModelValue, inputAttributes) ? 'success' : 'error'"
18
+ >
19
+ </span>
20
+ </dd>
21
+ </template>
22
+ </dl>
23
+ <!-- end list of requirements -->
24
+
25
+ <!-- begin helplink -->
26
+ <template v-if="helplink">
27
+ <hr v-if="helplink.show"/>
28
+ <a
29
+ v-if="helplink.show && helplink.url"
30
+ :href="helplink.url"
31
+ :target="helplink.target"
32
+ @click.prevent
33
+ >
34
+ <span v-if="helplink.icon?.iconClass"
35
+ :class="helplink.icon?.iconClass"
36
+ :title="helplink.icon?.tooltip">
37
+ </span>
38
+ <span v-if="helplink.text">
39
+ {{ helplink.text }}
40
+ </span>
41
+ </a>
42
+ </template>
43
+ <!-- end helplink -->
44
+ </div>
45
+ </template>
46
+
47
+ <script>
48
+ import CmdCustomHeadline from "./CmdCustomHeadline"
49
+
50
+ export default {
51
+ name: "CmdListOfRequirements.vue",
52
+ components: {CmdCustomHeadline},
53
+ props: {
54
+ inputModelValue: {
55
+ type: [String, Boolean, Array, Number],
56
+ default: ""
57
+ },
58
+ inputAttributes: {
59
+ type: Object,
60
+ required: true
61
+ },
62
+ /**
63
+ * text for label
64
+ */
65
+ labelText: {
66
+ type: String,
67
+ required: false
68
+ },
69
+ inputRequirements: {
70
+ type: Array,
71
+ required: true
72
+ },
73
+ helplink: {
74
+ type: String,
75
+ required: false
76
+ },
77
+ cmdCustomHeadline: {
78
+ type: Object,
79
+ default() {
80
+ return {
81
+ headlineLevel: 4
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ </script>
88
+
89
+ <style lang="scss">
90
+ /* begin cmd-list-of-requiremnets ------------------------------------------------------------------------------------------ */
91
+ .cmd-list-of-requirements {
92
+ dl {
93
+ .error {
94
+ color: var(--error-color);
95
+ }
96
+
97
+ .warning {
98
+ color: var(--warning-color);
99
+ }
100
+
101
+ .success {
102
+ color: var(--success-color);
103
+ }
104
+
105
+ .info {
106
+ color: var(--info-color);
107
+ }
108
+
109
+ span[class*="icon"] {
110
+ font-size: 1.2rem;
111
+ color: var(--status-color);
112
+ }
113
+
114
+ & ~ a {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ text-align: center;
119
+ text-decoration: none;
120
+
121
+ span[class*="icon"] {
122
+ font-size: 1.2rem;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ /* end cmd-list-of-requirements ------------------------------------------------------------------------------------------ */
128
+ </style>
@@ -305,7 +305,7 @@ export default {
305
305
 
306
306
  /* begin offcanvas-navigation */
307
307
  &:not(.persist-on-mobile) {
308
- transition: (--nav-transition);
308
+ transition: var(--nav-transition);
309
309
 
310
310
  #toggle-offcanvas {
311
311
  display: flex;
@@ -433,7 +433,7 @@ export default {
433
433
  height: auto;
434
434
  display: block;
435
435
  opacity: 1;
436
- transition: (--nav-transition);
436
+ transition: var(--nav-transition);
437
437
 
438
438
  > li {
439
439
  > a {
@@ -6,6 +6,7 @@
6
6
  :labelText="labelText"
7
7
  :showLabel="showLabel"
8
8
  v-model="darkMode"
9
+ :toggle-switch="true"
9
10
  />
10
11
  </div>
11
12
  </template>
@@ -14,19 +15,17 @@
14
15
  import CmdFormElement from "./CmdFormElement"
15
16
 
16
17
  export default {
17
- data() {
18
- return {
19
- darkMode: false
20
- }
21
- },
18
+ name: "ToggleDarkMode",
22
19
  components: {
23
20
  CmdFormElement
24
21
  },
22
+ data() {
23
+ return {
24
+ darkMode: false,
25
+ labelText: "Light mode activated"
26
+ }
27
+ },
25
28
  props: {
26
- labelText: {
27
- type: String,
28
- default: "Toggle Darkmode"
29
- },
30
29
  showLabel: {
31
30
  type: Boolean,
32
31
  default: false
@@ -56,11 +55,29 @@ export default {
56
55
  const htmlTag = document.querySelector('html')
57
56
  if(this.darkMode) {
58
57
  htmlTag.classList.replace("light-mode", "dark-mode");
58
+ this.labelText = "Dark-Mode enabled"
59
59
  } else {
60
60
  htmlTag.classList.replace("dark-mode", "light-mode");
61
+ this.labelText = "Light-Mode enabled"
61
62
  }
62
63
  htmlTag.dispatchEvent(new CustomEvent('toggle-color-scheme', { detail: this.darkMode ? 'dark-mode' : 'light-mode' }))
63
64
  }
64
65
  }
65
66
  }
66
- </script>
67
+ </script>
68
+
69
+ <style lang="scss">
70
+ .cmd-toggle-dark-mode {
71
+ .cmd-form-element {
72
+ input {
73
+ background: blue;
74
+ }
75
+ }
76
+
77
+ &.dark-mode {
78
+ input {
79
+ background: black;
80
+ }
81
+ }
82
+ }
83
+ </style>
@@ -138,7 +138,7 @@ export default {
138
138
  },
139
139
  unmounted() {
140
140
  if(this.relatedId) {
141
- const relatedElement = document.getElementById(this.relatedId)
141
+ const relatedElement = document.getElementById(this.npm )
142
142
 
143
143
  if(relatedElement) {
144
144
  relatedElement.removeEventListener("mouseenter", this.showTooltip)
@@ -0,0 +1,32 @@
1
+ {
2
+ "showLabelIcons": {
3
+ "comments": [
4
+ "show a label-icon (if exists)"
5
+ ]
6
+ },
7
+ "showLabelTexts": {
8
+ "comments": [
9
+ "show a label-text"
10
+ ]
11
+ },
12
+ "cmdCustomHeadline": {
13
+ "comments": [
14
+ "properties for CmdCustomHeadline-component"
15
+ ]
16
+ },
17
+ "showLabels": {
18
+ "comments": [
19
+ "option to toggle labels (i.e. telephone, email etc.) in front/left of data"
20
+ ]
21
+ },
22
+ "addressData": {
23
+ "comments": [
24
+ "all address-data (incl. labels) that will be shown"
25
+ ]
26
+ },
27
+ "linkGoogleMaps": {
28
+ "comments": [
29
+ "link physical address (street, no, zip and city) with Google Maps"
30
+ ]
31
+ }
32
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "iconBackToTop": {
3
+ "comments": [
4
+ "icon-class (and shown tooltip on hover) for back to top button"
5
+ ],
6
+ "annotations": {
7
+ "requiredForAccessibility": [
8
+ "partial"
9
+ ]
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "accountData": {
3
+ "comments": [
4
+ "bank account data",
5
+ "",
6
+ "must contain: owner, name of bank, IBAN, SWIFT/BIC"
7
+ ]
8
+ },
9
+ "allowCopyByClick": {
10
+ "comments": [
11
+ "enable if data can be copied by click on icon"
12
+ ]
13
+ },
14
+ "additionalInformation": {
15
+ "comments": [
16
+ "additional information shown in a paragraph below account data"
17
+ ]
18
+ },
19
+ "iconCopy": {
20
+ "comments": [
21
+ "icon 'copy'"
22
+ ],
23
+ "annotations": {
24
+ "requiredForAccessibility": [
25
+ "partial"
26
+ ]
27
+ }
28
+ },
29
+ "cmdCustomHeadline": {
30
+ "comments": [
31
+ "properties for CmdCustomHeadline-component"
32
+ ]
33
+ }
34
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "boxType": {
3
+ "comments": [
4
+ "set boyType to show different types of boxes/contents"
5
+ ],
6
+ "annotations": {
7
+ "allowedValues": [
8
+ "content, product, user"
9
+ ],
10
+ "affectsStyling": [
11
+ "true"
12
+ ]
13
+ }
14
+ },
15
+ "collapsible": {
16
+ "comments": [
17
+ "activate if box should be collapsible"
18
+ ]
19
+ },
20
+ "useTransition": {
21
+ "comments": [
22
+ "use transition to expand and collapse box-body",
23
+ "",
24
+ "boyType must be 'content' and 'collapsible' must be activated"
25
+ ]
26
+ },
27
+ "defaultProfileIconClass": {
28
+ "comments": [
29
+ "set default profile-icon (will eb shown if no user-image exists)"
30
+ ]
31
+ },
32
+ "product": {
33
+ "comments": [
34
+ "the shown product (incl. name, price, image, description)"
35
+ ],
36
+ "annotations": {
37
+ "required": [
38
+ "only available for boxtype===product"
39
+ ]
40
+ }
41
+ },
42
+ "user": {
43
+ "comments": [
44
+ "the shown user-profile (incl. name, image, contact-data)"
45
+ ],
46
+ "annotations": {
47
+ "required": [
48
+ "only available for boxtype===user"
49
+ ]
50
+ }
51
+ },
52
+ "useSlots": {
53
+ "comments": [
54
+ "activated if all content (incl. headline) is given by slot",
55
+ "",
56
+ "if false textBody-property must be set"
57
+ ]
58
+ },
59
+ "textBody": {
60
+ "comments": [
61
+ "String used as content (placed in a paragraph-tag) for box-body",
62
+ "",
63
+ "should only be used, if no further html-structure is required for box-body"
64
+ ]
65
+ },
66
+ "iconOpen": {
67
+ "comments": [
68
+ "icon to expand an accordion"
69
+ ],
70
+ "annotations": {
71
+ "requiredForAccessibility": [
72
+ "partial"
73
+ ]
74
+ }
75
+ },
76
+ "iconClosed": {
77
+ "comments": [
78
+ "icon to collapse an accordion"
79
+ ],
80
+ "annotations": {
81
+ "requiredForAccessibility": [
82
+ "partial"
83
+ ]
84
+ }
85
+ },
86
+ "stretchVertically": {
87
+ "comments": [
88
+ "allow box to be stretched as high as parent-element"
89
+ ]
90
+ },
91
+ "cmdCustomHeadline": {
92
+ "comments": [
93
+ "properties for CmdCustomHeadline-component"
94
+ ]
95
+ }
96
+ }