comand-component-library 3.1.88 → 3.1.91

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) 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 +88 -17
  5. package/src/assets/data/main-navigation.json +1 -0
  6. package/src/assets/data/opening-hours.json +1 -1
  7. package/src/assets/data/tabs.json +1 -0
  8. package/src/assets/styles/global-styles.scss +6 -0
  9. package/src/components/CmdBankAccountData.vue +3 -2
  10. package/src/components/CmdBox.vue +12 -7
  11. package/src/components/CmdBoxSiteSearch.vue +2 -1
  12. package/src/components/CmdCookieDisclaimer.vue +19 -6
  13. package/src/components/CmdFakeSelect.vue +11 -19
  14. package/src/components/CmdFancyBox.vue +46 -13
  15. package/src/components/CmdFormElement.vue +17 -29
  16. package/src/components/CmdImageGallery.vue +2 -2
  17. package/src/components/CmdInputGroup.vue +9 -16
  18. package/src/components/CmdLoginForm.vue +1 -1
  19. package/src/components/CmdMainNavigation.vue +30 -48
  20. package/src/components/CmdMultipleSwitch.vue +4 -12
  21. package/src/components/CmdNewsletterSubscription.vue +199 -0
  22. package/src/components/CmdOpeningHours.vue +31 -7
  23. package/src/components/CmdShareButtons.vue +100 -27
  24. package/src/components/CmdSiteHeader.vue +2 -1
  25. package/src/components/CmdSystemMessage.vue +6 -0
  26. package/src/components/CmdTabs.vue +9 -6
  27. package/src/components/CmdThumbnailScroller.vue +9 -1
  28. package/src/components/CmdTooltip.vue +1 -1
  29. package/src/components/CmdWidthLimitationWrapper.vue +2 -2
  30. package/src/directives/scrollPadding.js +6 -0
  31. package/src/documentation/generated/CmdFancyBoxPropertyDescriptions.json +10 -0
  32. package/src/documentation/generated/CmdFormElementPropertyDescriptions.json +0 -5
  33. package/src/documentation/generated/CmdNewsletterSubscriptionPropertyDescriptions.json +42 -0
  34. package/src/documentation/generated/CmdOpeningHoursPropertyDescriptions.json +5 -0
  35. package/src/documentation/generated/CmdShareButtonsPropertyDescriptions.json +24 -0
  36. package/src/main.js +3 -1
  37. package/src/mixins/CmdThumbnailScroller/DefaultMessageProperties.js +9 -0
  38. package/src/mixins/FieldValidation.js +10 -3
  39. package/src/mixins/I18n.js +3 -2
  40. package/src/mixins/Identifier.js +28 -0
  41. package/src/utils/common.js +5 -1
@@ -0,0 +1,199 @@
1
+ <template>
2
+ <!-- begin cmd-input-group -->
3
+ <CmdInputGroup
4
+ inputTypes="radio"
5
+ :labelText="cmdInputGroup.labelText"
6
+ :showLabel="cmdInputGroup.showLabel"
7
+ :inputElements="cmdInputGroup.inputElements"
8
+ v-model="subscription"
9
+ />
10
+ <!-- end cmd-input-group -->
11
+
12
+ <!-- begin cmd-form-element -->
13
+ <CmdFormElement
14
+ element="input"
15
+ type="email"
16
+ :placeholder="cmdFormElementEmail.placeholder"
17
+ :labelText="cmdFormElementEmail.labelText"
18
+ id="cmd-email-newsletter-subscription"
19
+ :required="cmdFormElementEmail.required"
20
+ :useCustomTooltip="cmdFormElementEmail.useCustomTooltip"
21
+ v-model="email"
22
+ @validationStatusChange="checkValidationStatus"
23
+ />
24
+ <!-- end cmd-form-element -->
25
+
26
+ <div class="button-wrapper">
27
+ <!-- begin cmd-form-element -->
28
+ <CmdFormElement
29
+ element="button"
30
+ :type="buttonType"
31
+ :disabled="buttonDisabled"
32
+ :nativeButton="cmdFormElementSubmit"
33
+ @click="sendData"
34
+ />
35
+ <!-- end cmd-form-element -->
36
+ </div>
37
+ </template>
38
+
39
+ <script>
40
+ // import components
41
+ import CmdFormElement from "./CmdFormElement"
42
+ import CmdInputGroup from "./CmdInputGroup"
43
+
44
+ export default {
45
+ name: "CmdNewsletterSubscription",
46
+ emits: ["button-click"],
47
+ components: {
48
+ CmdFormElement,
49
+ CmdInputGroup
50
+ },
51
+ data() {
52
+ return {
53
+ buttonDisabled: true
54
+ }
55
+ },
56
+ props: {
57
+ /**
58
+ * set value for v-model (must be named modelValue in vue3 if default v-model should be used)
59
+ */
60
+ modelValue: {
61
+ type: Object,
62
+ default() {
63
+ return {
64
+ subscription: "subscribe",
65
+ email: ""
66
+ }
67
+ }
68
+ },
69
+ buttonType: {
70
+ type: String,
71
+ default: "button",
72
+ validator(value) {
73
+ return value === "submit" || value === "button"
74
+ }
75
+ },
76
+ /**
77
+ * text used as legend for login-fieldset
78
+ *
79
+ * @requiredForAccessibility: true
80
+ */
81
+ textLegend: {
82
+ type: String,
83
+ default: "Stay up-to-date"
84
+ },
85
+ /**
86
+ * toggle legend visibility
87
+ */
88
+ showLegend: {
89
+ type: Boolean,
90
+ default: true
91
+ },
92
+ /**
93
+ * properties for CmdInputGroup-component
94
+ */
95
+ cmdInputGroup: {
96
+ type: Object,
97
+ default: function () {
98
+ return {
99
+ labelText: "Choose option",
100
+ showLabel: false,
101
+ inputElements: [
102
+ {
103
+ labelText: "Subscribe",
104
+ id: "radio-subscribe",
105
+ name: "cmd-subscribe-group",
106
+ value: "subscribe"
107
+ },
108
+ {
109
+ labelText: "Unsubscribe",
110
+ id: "radio-unsubscribe",
111
+ name: "cmd-subscribe-group",
112
+ value: "unsubscribe"
113
+ }
114
+ ]
115
+ }
116
+ }
117
+ },
118
+ /**
119
+ * properties for CmdFormElement-component for email-field
120
+ */
121
+ cmdFormElementEmail: {
122
+ type: Object,
123
+ default: function () {
124
+ return {
125
+ labelText: "Email-Address:",
126
+ placeholder: "Enter your email-address",
127
+ required: true
128
+ }
129
+ }
130
+ },
131
+ /**
132
+ * properties for CmdFormElement-component for submit-button
133
+ */
134
+ cmdFormElementSubmit: {
135
+ type: Object,
136
+ default: function () {
137
+ return {
138
+ text: "Submit",
139
+ icon: {
140
+ show: true,
141
+ iconClass: "icon-message-send",
142
+ position: "before",
143
+ tooltip: ""
144
+ }
145
+ }
146
+ }
147
+ }
148
+ },
149
+ computed: {
150
+ subscription: {
151
+ get() {
152
+ return this.modelValue.subscription || "subscribe"
153
+ },
154
+ set(value) {
155
+ this.$emit("update:modelValue", {subscription: value, email: this.email})
156
+ }
157
+ },
158
+ email: {
159
+ get() {
160
+ return this.modelValue.email
161
+ },
162
+ set(value) {
163
+ this.$emit("update:modelValue", {subscription: this.subscription, email: value})
164
+ }
165
+ }
166
+ },
167
+ methods: {
168
+ sendData(event) {
169
+ this.$emit("button-click", {subscription: this.subscription, email: this.email, originalEvent: event})
170
+ },
171
+ checkValidationStatus(event) {
172
+ this.buttonDisabled = event !== "success"
173
+ }
174
+ }
175
+ }
176
+ </script>
177
+
178
+ <style lang="scss">
179
+ /* begin cmd-back-to-top-button ---------------------------------------------------------------------------------------- */
180
+ .cmd-back-to-top-button {
181
+ padding: var(--default-padding);
182
+ display: inline-block;
183
+ position: fixed;
184
+ right: 1rem;
185
+ bottom: 1rem;
186
+ text-decoration: none;
187
+ z-index: 1000;
188
+ border: var(--default-border);
189
+ background: var(--color-scheme-background-color);
190
+ border-radius: var(--full-circle);
191
+
192
+ &:hover, &:active, &:focus {
193
+ border-color: var(--primary-color);
194
+ transition: var(--default-transition);
195
+ }
196
+ }
197
+
198
+ /* cmd-back-to-top-button ------------------------------------------------------------------------------------------ */
199
+ </style>
@@ -147,12 +147,28 @@ export default {
147
147
  componentHandlesClosedStatus: {
148
148
  type: Boolean,
149
149
  default: true
150
+ },
151
+ /**
152
+ * set the interval (in milliseconds) when the open-/closed-status should be checked (and updated)
153
+ */
154
+ checkInterval: {
155
+ type: Number,
156
+ default: 5000
150
157
  }
151
158
  },
152
- created() {
153
- setInterval(function () {
154
- this.isClosed()
155
- }, 5000)
159
+ mounted() {
160
+ if(this.componentHandlesClosedStatus && this.checkInterval > 0) {
161
+ // create new property on component by 'this.property-name' and assign value (id) from setInterval (so it can be cleared in unmount)
162
+ this.$_CmdOpeningHours_intervalId = setInterval(() => {
163
+ // use arrow-function to assure that 'this' is the component
164
+ this.currentTime = new Date()
165
+ }, this.checkInterval)
166
+ }
167
+ },
168
+ data() {
169
+ return {
170
+ currentTime: new Date()
171
+ }
156
172
  },
157
173
  computed: {
158
174
  textOpenClosed() {
@@ -183,8 +199,7 @@ export default {
183
199
  return this.closed
184
200
  }
185
201
 
186
- const currentDate = new Date()
187
- let currentDay = currentDate.getDay()
202
+ let currentDay = this.currentTime.getDay()
188
203
 
189
204
  // fix order and check if currentDay equals 0 === sunday. Data are expected to start with monday
190
205
  if (currentDay === 0){
@@ -202,7 +217,7 @@ export default {
202
217
  const openingHoursTill = new Date()
203
218
  openingHoursTill.setHours(openingHours.tillTime.hours, openingHours.tillTime.mins)
204
219
 
205
- if (openingHoursFrom <= currentDate && currentDate <= openingHoursTill) {
220
+ if (openingHoursFrom <= this.currentTime && this.currentTime <= openingHoursTill) {
206
221
  return false
207
222
  }
208
223
  }
@@ -216,6 +231,15 @@ export default {
216
231
  }
217
232
  return timeFormatting(":", " hrs", "", false)(time.hours, time.mins)
218
233
  }
234
+ },
235
+ beforeUnmount() {
236
+ if(this.$_CmdOpeningHours_intervalId) {
237
+ // remove interval
238
+ clearInterval(this.$_CmdOpeningHours_intervalId)
239
+
240
+ // clear interval-id
241
+ this.$_CmdOpeningHours_intervalId = null
242
+ }
219
243
  }
220
244
  }
221
245
  </script>
@@ -1,21 +1,51 @@
1
1
  <template>
2
- <div :class="['cmd-share-buttons',{'stretch': stretchButtons, 'align-right': align === 'right'}]">
3
- <a v-for="shareButton in validShareButtons"
4
- :key="shareButton.path" class="button"
5
- :id="shareButton.id"
6
- :href="getUrl(shareButton)"
7
- target="_blank"
8
- :title="shareButton.tooltip">
9
- <span v-if="shareButton.iconClass" :class="shareButton.iconClass"></span>
10
- <span v-if="shareButton.linkText">{{ shareButton.linkText }}</span>
11
- </a>
2
+ <div :class="['cmd-share-buttons', {'stretch': stretchButtons, 'align-right': align === 'right'}]">
3
+ <CmdFormElement
4
+ v-if="userMustAcceptDataPrivacy"
5
+ element="input"
6
+ type="checkbox"
7
+ :toggle-switch="cmdFormElement.toggleSwitch"
8
+ :labelText="cmdFormElement.labelText"
9
+ :required="cmdFormElement.required"
10
+ v-model="dataPrivacyAccepted"
11
+ />
12
+ <div class="share-button-wrapper">
13
+ <a v-for="shareButton in validShareButtons"
14
+ :key="shareButton.path" :class="['button', {disabled: userMustAcceptDataPrivacy && !dataPrivacyAccepted}]"
15
+ :id="shareButton.id"
16
+ :href="getUrl(shareButton)"
17
+ target="_blank"
18
+ :title="tooltip(shareButton.tooltip)">
19
+ <span v-if="shareButton.iconClass && shareButton.iconPosition !== 'right'" :class="shareButton.iconClass"></span>
20
+ <span v-if="shareButton.linkText">{{ shareButton.linkText }}</span>
21
+ <span v-if="shareButton.iconClass && shareButton.iconPosition === 'right'" :class="shareButton.iconClass"></span>
22
+ </a>
23
+ </div>
12
24
  </div>
13
25
  </template>
14
26
 
15
27
  <script>
28
+ // import components
29
+ import CmdFormElement from "./CmdFormElement"
30
+
16
31
  export default {
17
32
  name: "CmdShareButtons",
33
+ components: {
34
+ CmdFormElement
35
+ },
36
+ data() {
37
+ return {
38
+ dataPrivacyAccepted: false
39
+ }
40
+ },
18
41
  props: {
42
+ /**
43
+ * set default v-model (must be named modelValue in Vue3)
44
+ */
45
+ modelValue: {
46
+ type: [String, Number, Array],
47
+ default: ""
48
+ },
19
49
  /**
20
50
  * set horizontal alignment
21
51
  *
@@ -54,6 +84,37 @@ export default {
54
84
  appendPage: {
55
85
  type: Boolean,
56
86
  default: true
87
+ },
88
+ /**
89
+ * toggle if user has to accept that anonymous data will be send while sharing
90
+ */
91
+ userMustAcceptDataPrivacy: {
92
+ type: Boolean,
93
+ default: true
94
+ },
95
+ /**
96
+ * tooltip shown on hovering disabled buttons
97
+ *
98
+ * userMustAcceptDataPrivacy-property must be activated
99
+ */
100
+ tooltipAcceptDataPrivacy: {
101
+ type: String,
102
+ default: "You must accept data privacy conditions!"
103
+ },
104
+ /**
105
+ * properties for cmdFormElement
106
+ *
107
+ * userMustAcceptDataPrivacy-property must be activated
108
+ */
109
+ cmdFormElement: {
110
+ type: Object,
111
+ default() {
112
+ return {
113
+ toggleSwitch: true,
114
+ labelText: "I accept that anonymous data will be send to the platform I share this page on!",
115
+ required: true
116
+ }
117
+ }
57
118
  }
58
119
  },
59
120
  computed: {
@@ -63,19 +124,28 @@ export default {
63
124
  },
64
125
  methods: {
65
126
  getUrl(shareButton) {
66
- // if path is not given completely by json-data
67
- if(this.appendPage) {
68
- // if page to share is given by property
69
- if (this.page) {
70
- return shareButton.path + encodeURIComponent(this.page)
127
+ if(this.userMustAcceptDataPrivacy && this.dataPrivacyAccepted) {
128
+ // if path is not given completely by json-data
129
+ if (this.appendPage) {
130
+ // if page to share is given by property
131
+ if (this.page) {
132
+ return shareButton.path + encodeURIComponent(this.page)
133
+ }
134
+
135
+ // if current page should be append to url
136
+ return shareButton.path + encodeURIComponent(location.href)
71
137
  }
72
138
 
73
- // if current page should be append to url
74
- return shareButton.path + encodeURIComponent(location.href)
139
+ // if path is given completely by json-data
140
+ return shareButton.path
75
141
  }
76
-
77
- // if path is given completely by json-data
78
- return shareButton.path
142
+ return null
143
+ },
144
+ tooltip(tooltip) {
145
+ if(this.userMustAcceptDataPrivacy && this.dataPrivacyAccepted) {
146
+ return tooltip
147
+ }
148
+ return this.tooltipAcceptDataPrivacy
79
149
  }
80
150
  }
81
151
  }
@@ -87,10 +157,19 @@ export default {
87
157
 
88
158
  .cmd-share-buttons {
89
159
  display: flex;
160
+ flex-direction: column;
90
161
  gap: var(--default-gap);
91
162
 
92
163
  &.align-right {
93
- justify-content: flex-end;
164
+ .share-button-wrapper {
165
+ justify-content: flex-end;
166
+ }
167
+ }
168
+
169
+ &.stretch {
170
+ .button {
171
+ flex: 1;
172
+ }
94
173
  }
95
174
 
96
175
  .button {
@@ -101,12 +180,6 @@ export default {
101
180
  }
102
181
  }
103
182
 
104
- &.stretch {
105
- .button {
106
- flex: 1;
107
- }
108
- }
109
-
110
183
  a:last-of-type {
111
184
  margin-right: 0;
112
185
  }
@@ -100,7 +100,8 @@ export default {
100
100
  }
101
101
  }
102
102
 
103
- > .cmd-main-navigation:last-child {
103
+ // use id to ensure high specificity
104
+ > .cmd-main-navigation#main-navigation-wrapper:last-child {
104
105
  border-bottom: 0;
105
106
  }
106
107
 
@@ -4,6 +4,7 @@
4
4
  v-if="showSystemMessage"
5
5
  :class="['cmd-system-message', 'system-message', 'flex-container', 'vertical', { 'full-width': fullWidth }, validationStatus]"
6
6
  :role="validationStatus === 'error' ? 'alert' : 'dialog'"
7
+ :aria-labelledby="htmlId"
7
8
  >
8
9
  <!-- begin close-icon -->
9
10
  <a
@@ -21,6 +22,7 @@
21
22
  :iconClass="iconMessage.iconClass"
22
23
  :headlineText="systemMessage"
23
24
  :headlineLevel="messageHeadlineLevel"
25
+ :id="htmlId"
24
26
  />
25
27
  <!-- end cmd-headline -->
26
28
 
@@ -32,11 +34,15 @@
32
34
  </template>
33
35
 
34
36
  <script>
37
+ // import mixins
38
+ import Identifier from "../mixins/Identifier"
39
+
35
40
  // import components
36
41
  import CmdHeadline from "./CmdHeadline"
37
42
 
38
43
  export default {
39
44
  name: "CmdSystemMessage",
45
+ mixins: [Identifier],
40
46
  components: {
41
47
  CmdHeadline
42
48
  },
@@ -3,11 +3,12 @@
3
3
  <ul :class="{'stretch-tabs' : stretchTabs}" role="tablist">
4
4
  <li :class="{active : showTab === index}" v-for="(tab, index) in tabs" :key="index" role="tab">
5
5
  <a @click.prevent="setActiveTab(index)" :title="!tab.name ? tab.tooltip : false">
6
- <span v-if="tab.iconClass">{{ tab.iconClass }}</span>
6
+ <span v-if="tab.iconClass" :class="tab.iconClass"></span>
7
7
  <span v-if="tab.name">{{ tab.name }}</span>
8
8
  </a>
9
9
  </li>
10
10
  </ul>
11
+ <!-- begin slot -->
11
12
  <template v-if="useSlot">
12
13
  <div v-show="showTab === index - 1" v-for="index in tabs.length" :key="index" aria-live="assertive">
13
14
  <!-- begin slot-content -->
@@ -15,10 +16,12 @@
15
16
  <!-- end slot-content -->
16
17
  </div>
17
18
  </template>
19
+ <!-- end slot -->
18
20
  <div v-else aria-live="assertive">
19
21
  <!-- begin CmdHeadline -->
20
22
  <CmdHeadline
21
- v-bind="CmdHeadline"
23
+ v-if="cmdHeadline"
24
+ v-bind="cmdHeadline"
22
25
  :headlineText="tabs[showTab].headlineText"
23
26
  :headlineLevel="tabs[showTab].headlineLevel"
24
27
  />
@@ -105,21 +108,21 @@ export default {
105
108
  > li {
106
109
  z-index: 10;
107
110
  margin-left: 0;
108
- border-bottom: 0;
109
111
  border-top-left-radius: var(--border-radius);
110
112
  border-top-right-radius: var(--border-radius);
111
113
  list-style-type: none;
112
114
  background: var(--color-scheme-background-color);
113
115
  border: var(--default-border);
116
+ border-bottom: 0;
114
117
 
115
118
  &.active {
116
- border-bottom: 0;
117
119
  border-color: var(--primary-color);
118
- top: .1rem;
119
120
  }
120
121
 
121
122
  a {
122
- display: block;
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: center;
123
126
  padding: var(--default-padding);
124
127
  color: var(--color-scheme-text-color);
125
128
  border-top-left-radius: var(--border-radius);
@@ -10,7 +10,7 @@
10
10
  <!-- begin list of images to slide -->
11
11
  <transition-group name="slide" tag="ul">
12
12
  <li v-for="(image, index) in thumbnails" :key="image.imgId" :class="{'active' : imgIndex === index}">
13
- <a href="#" @click.prevent="showFancyBox(index)">
13
+ <a href="#" @click.prevent="showFancyBox(index)" :title="getMessage('cmdthumbnailscroller.tooltip.open_large_image')">
14
14
  <figure>
15
15
  <figcaption v-if="figcaption.show && figcaption.position === 'above-image' && image.figcaption.length">{{ image.figcaption }}</figcaption>
16
16
  <img :src="image.srcImageSmall" :alt="image.alt"/>
@@ -31,6 +31,10 @@
31
31
  </template>
32
32
 
33
33
  <script>
34
+ // import mixins
35
+ import I18n from "../mixins/I18n"
36
+ import DefaultMessageProperties from "../mixins/CmdThumbnailScroller/DefaultMessageProperties"
37
+
34
38
  // import components
35
39
  import CmdSlideButton from "./CmdSlideButton.vue"
36
40
 
@@ -42,6 +46,10 @@ export default {
42
46
  components: {
43
47
  CmdSlideButton
44
48
  },
49
+ mixins: [
50
+ I18n,
51
+ DefaultMessageProperties
52
+ ],
45
53
  data() {
46
54
  return {
47
55
  thumbnails: []
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div v-if="tooltipVisibility" :class="['cmd-tooltip', status]" ref="tooltip" aria-role="tooltip">
2
+ <div v-if="tooltipVisibility" :class="['cmd-tooltip', status]" ref="tooltip">
3
3
  <div v-if="cmdHeadline || iconClose.show" class="headline-wrapper">
4
4
  <!-- begin CmdHeadline -->
5
5
  <CmdHeadline
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div class="cmd-width-limitation-wrapper" :class="{'sticky': sticky}">
3
- <component v-if="innerWrapper" :is="innerComponent" :class="setInnerClass">
3
+ <section v-if="innerWrapper" :class="setInnerClass">
4
4
  <a v-if="anchorId" :id="anchorId"></a>
5
5
  <!-- begin slot-content -->
6
6
  <slot></slot>
7
7
  <!-- end slot-content -->
8
- </component>
8
+ </section>
9
9
  <template v-else>
10
10
  <!-- begin slot-content -->
11
11
  <a v-if="anchorId" :id="anchorId"></a>
@@ -0,0 +1,6 @@
1
+ export default {
2
+ mounted(el) {
3
+ const heightHeader = el.outerHeight
4
+ document.documentElement.style.scrollPaddingTop = (heightHeader / 10) + "rem"
5
+ }
6
+ }
@@ -58,5 +58,15 @@
58
58
  "true"
59
59
  ]
60
60
  }
61
+ },
62
+ "cmdHeadline": {
63
+ "comments": [
64
+ "properties for CmdHeadline-component"
65
+ ],
66
+ "annotations": {
67
+ "requiredForAccessibility": [
68
+ "true"
69
+ ]
70
+ }
61
71
  }
62
72
  }
@@ -95,11 +95,6 @@
95
95
  "may not be named as 'class' because it is a reserved keyword in JavaScript"
96
96
  ]
97
97
  },
98
- "id": {
99
- "comments": [
100
- "if for native form-element"
101
- ]
102
- },
103
98
  "datalist": {
104
99
  "comments": [
105
100
  "set if a native datalist should be used"
@@ -0,0 +1,42 @@
1
+ {
2
+ "modelValue": {
3
+ "comments": [
4
+ "set value for v-model (must be named modelValue in vue3 if default v-model should be used)"
5
+ ]
6
+ },
7
+ "buttonType": {
8
+ "comments": [
9
+ "set value for v-model (must be named modelValue in vue3 if default v-model should be used)"
10
+ ]
11
+ },
12
+ "textLegend": {
13
+ "comments": [
14
+ "text used as legend for login-fieldset"
15
+ ],
16
+ "annotations": {
17
+ "requiredForAccessibility": [
18
+ "true"
19
+ ]
20
+ }
21
+ },
22
+ "showLegend": {
23
+ "comments": [
24
+ "toggle legend visibility"
25
+ ]
26
+ },
27
+ "cmdInputGroup": {
28
+ "comments": [
29
+ "properties for CmdInputGroup-component"
30
+ ]
31
+ },
32
+ "cmdFormElementEmail": {
33
+ "comments": [
34
+ "properties for CmdFormElement-component for email-field"
35
+ ]
36
+ },
37
+ "cmdFormElementSubmit": {
38
+ "comments": [
39
+ "properties for CmdFormElement-component for submit-button"
40
+ ]
41
+ }
42
+ }
@@ -53,5 +53,10 @@
53
53
  "comments": [
54
54
  "activate if component should update open-/closed-status on its own"
55
55
  ]
56
+ },
57
+ "checkInterval": {
58
+ "comments": [
59
+ "set the interval (in milliseconds) when the open-/closed-status should be checked (and updated)"
60
+ ]
56
61
  }
57
62
  }