comand-component-library 4.2.88 → 4.2.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comand-component-library",
3
- "version": "4.2.88",
3
+ "version": "4.2.90",
4
4
  "license": "GPL-3.0-only",
5
5
  "author": "CoManD-UI",
6
6
  "private": false,
@@ -1281,7 +1281,6 @@
1281
1281
  </CmdWidthLimitationWrapper>
1282
1282
  <!-- end multistep-form-progress-bar --------------------------------------------------------------------------------------------------->
1283
1283
 
1284
-
1285
1284
  <!-- begin multistep-form-wrapper --------------------------------------------------------------------------------------------------->
1286
1285
  <CmdWidthLimitationWrapper>
1287
1286
  <h2 class="headline-demopage" id="section-multistep-form-wrapper">
@@ -1376,31 +1375,35 @@
1376
1375
  </div>
1377
1376
  </CmdForm>
1378
1377
  </template>
1379
- <template v-slot:page-4="props">
1380
- <h3>Page 4</h3>
1381
- <CmdForm
1382
- :cmdHeadline=" { headlineText: 'Confirmation', headlineLevel: 3 }"
1383
- :submitButton="{ disabled : props.atleastOneStepWithError }"
1384
- :cancelButton="{ show: false }"
1385
- >
1386
- <p>Please confirm that all data ou provided is legit.</p>
1387
- <CmdFormElement
1388
- element="input"
1389
- type="checkbox"
1390
- labelText="Confirm data privacy:"
1391
- name="confirm-data-privacy"
1392
- id="confirm-data-privac"
1393
- :required="true"
1394
- :modelValue="props.formDataForPage['confirm-data-privacy']"
1395
- @update:modelValue="setValue($event, 'confirm-data-privacy', props)"
1396
- @validation-status-change="setValidationStatusCheckbox($event, 'confirm-data-privacy', props)"
1397
- />
1398
- </CmdForm>
1399
- props.atleastOneStepWithError: {{ props.atleastOneStepWithError }}
1400
- </template>
1401
- <template>
1402
- <h3>Page 5 - Confirmation</h3>
1403
- <p>Thank you for sending your request!</p>
1378
+ <template v-slot:page-last="props">
1379
+ <template v-if="!confirmDataPrivacy">
1380
+ <h3>Page 4</h3>
1381
+ <CmdForm
1382
+ :cmdHeadline=" { headlineText: 'Confirmation', headlineLevel: 3 }"
1383
+ :submitButton="{ disabled : props.atleastOneStepWithError, type: 'button' }"
1384
+ :cancelButton="{ show: false }"
1385
+ @submit="validateForm"
1386
+ >
1387
+ <p>Please confirm that all data you provided is legit.</p>
1388
+ <CmdFormElement
1389
+ element="input"
1390
+ type="checkbox"
1391
+ labelText="Confirm data privacy:"
1392
+ name="confirm-data-privacy"
1393
+ id="confirm-data-privac"
1394
+ :required="true"
1395
+ v-model="dataPrivacyChecked"
1396
+ @update:modelValue="setValue($event, 'confirm-data-privacy', props)"
1397
+ @validation-status-change="setValidationStatusCheckbox($event, 'confirm-data-privacy', props)"
1398
+ />
1399
+ </CmdForm>
1400
+ </template>
1401
+ <template v-else>
1402
+ <h3>Confirmation</h3>
1403
+ <CmdSystemMessage systemMessage="Your request was send successfully!" validationStatus="success" :iconClose="{ show: false }" />
1404
+ <p>A copy with all submitted data was send to you.</p>
1405
+ props.formDataForPage: {{ props.formDataForPage }}
1406
+ </template>
1404
1407
  </template>
1405
1408
  </CmdMultistepFormWrapper>
1406
1409
  <h3>Data provided by slot</h3>
@@ -2007,6 +2010,7 @@ export default {
2007
2010
  componentControls: {},
2008
2011
  componentView: true,
2009
2012
  colorScheme: "none",
2013
+ confirmDataPrivacy: false,
2010
2014
  showLeftSidebar: true,
2011
2015
  selectedTemplate: "blank",
2012
2016
  acceptedCookies: ["google-maps"],
@@ -2014,6 +2018,7 @@ export default {
2014
2018
  showSettingsSidebar: false,
2015
2019
  disabledStatus: undefined,
2016
2020
  validationStatus: "",
2021
+ dataPrivacyChecked: false,
2017
2022
  loginData: {
2018
2023
  username: "",
2019
2024
  password: ""
@@ -2404,6 +2409,9 @@ export default {
2404
2409
  doSomething() {
2405
2410
  alert("Language changed!")
2406
2411
  },
2412
+ validateForm() {
2413
+ this.confirmDataPrivacy = true
2414
+ },
2407
2415
  executeSearch() {
2408
2416
  return Math.floor(Math.random() * 100)
2409
2417
  },
@@ -6,7 +6,7 @@
6
6
  "htmlClass": "form-element-text-class",
7
7
  "id": "form-element-text-id",
8
8
  "value": "",
9
- "fieldIconClass": "icon-lock",
9
+ "fieldIconClass": "icon-globe",
10
10
  "labelText": "Text input",
11
11
  "placeholder": "Placeholdertext",
12
12
  "required": false,
@@ -15,33 +15,33 @@
15
15
  {
16
16
  "component": "flexContainer",
17
17
  "formElements": [
18
- {
19
- "element": "input",
20
- "type": "text",
21
- "name": "form-element-username",
22
- "htmlClass": "form-element-text-class",
23
- "id": "form-element-username",
24
- "value": "default value",
25
- "fieldIconClass": "icon-cogs",
26
- "labelText": "Username input",
27
- "placeholder": "Placeholdertext",
28
- "required": true,
29
- "disabled": false
30
- },
31
- {
32
- "element": "input",
33
- "type": "password",
34
- "name": "form-element-password-name",
35
- "htmlClass": "form-element-password-class",
36
- "id": "form-element-password-id",
37
- "value": "",
38
- "fieldIconClass": "icon-cogs",
39
- "labelText": "Password input",
40
- "placeholder": "Placeholdertext",
41
- "required": false,
42
- "disabled": false
43
- }
44
- ]
18
+ {
19
+ "element": "input",
20
+ "type": "text",
21
+ "name": "form-element-username",
22
+ "htmlClass": "form-element-text-class",
23
+ "id": "form-element-username",
24
+ "value": "default value",
25
+ "fieldIconClass": "icon-user-profile",
26
+ "labelText": "Username input",
27
+ "placeholder": "Placeholdertext",
28
+ "required": true,
29
+ "disabled": false
30
+ },
31
+ {
32
+ "element": "input",
33
+ "type": "password",
34
+ "name": "form-element-password-name",
35
+ "htmlClass": "form-element-password-class",
36
+ "id": "form-element-password-id",
37
+ "value": "",
38
+ "fieldIconClass": "icon-security-settings",
39
+ "labelText": "Password input",
40
+ "placeholder": "Placeholdertext",
41
+ "required": false,
42
+ "disabled": false
43
+ }
44
+ ]
45
45
  },
46
46
  {
47
47
  "element": "input",
@@ -50,7 +50,7 @@
50
50
  "htmlClass": "form-element-tel-class",
51
51
  "id": "form-element-tel-id",
52
52
  "value": "default value",
53
- "fieldIconClass": "icon-tel",
53
+ "fieldIconClass": "icon-phone",
54
54
  "labelText": "Telephone input (disabled)",
55
55
  "placeholder": "Placeholdertext",
56
56
  "required": false,
@@ -63,7 +63,7 @@
63
63
  "htmlClass": "form-element-email-class",
64
64
  "id": "form-element-email-id",
65
65
  "value": "default value",
66
- "fieldIconClass": "icon-email",
66
+ "fieldIconClass": "icon-mail",
67
67
  "labelText": "Email input (with icon)",
68
68
  "placeholder": "Placeholdertext",
69
69
  "required": false,
@@ -156,31 +156,66 @@
156
156
  "maxlength": 500
157
157
  },
158
158
  {
159
- "component": "CmdInputGroup",
160
- "labelText": "Input Group (Radio):",
161
- "toggleSwitches": true,
162
- "value": "website",
163
- "inputElements": [
164
- {
165
- "labelText": "Website",
166
- "id": "radio-id-1",
167
- "name": "input-group-radio",
168
- "iconClass": "icon-globe",
169
- "value": "website"
170
- },
159
+ "component": "flexContainer",
160
+ "formElements": [
171
161
  {
172
- "labelText": "E-Mail",
173
- "id": "radio-id-2",
174
- "name": "input-group-radio",
175
- "iconClass": "icon-mail",
176
- "value": "email"
162
+ "component": "CmdInputGroup",
163
+ "labelText": "Input Group (Checkbox):",
164
+ "toggleSwitches": true,
165
+ "inputTypes": "checkbox",
166
+ "value": "checkbox-website",
167
+ "inputElements": [
168
+ {
169
+ "labelText": "Website",
170
+ "id": "checkbox-id-1",
171
+ "name": "input-group-checkbox",
172
+ "iconClass": "icon-globe",
173
+ "value": "checkbox-website"
174
+ },
175
+ {
176
+ "labelText": "E-Mail",
177
+ "id": "checkbox-id-2",
178
+ "name": "input-group-checkbox",
179
+ "iconClass": "icon-mail",
180
+ "value": "checkbox-email"
181
+ },
182
+ {
183
+ "labelText": "Phone",
184
+ "id": "checkbox-id-3",
185
+ "name": "input-group-checkbox",
186
+ "iconClass": "icon-phone",
187
+ "value": "checkbox-phone"
188
+ }
189
+ ]
177
190
  },
178
191
  {
179
- "labelText": "Phone",
180
- "id": "radio-id-3",
181
- "name": "input-group-radio",
182
- "iconClass": "icon-phone",
183
- "value": "phone"
192
+ "component": "CmdInputGroup",
193
+ "labelText": "Input Group (Radio):",
194
+ "toggleSwitches": true,
195
+ "value": "radio-website",
196
+ "inputElements": [
197
+ {
198
+ "labelText": "Website",
199
+ "id": "radio-id-1",
200
+ "name": "input-group-radio",
201
+ "iconClass": "icon-globe",
202
+ "value": "radio-website"
203
+ },
204
+ {
205
+ "labelText": "E-Mail",
206
+ "id": "radio-id-2",
207
+ "name": "input-group-radio",
208
+ "iconClass": "icon-mail",
209
+ "value": "radio-email"
210
+ },
211
+ {
212
+ "labelText": "Phone",
213
+ "id": "radio-id-3",
214
+ "name": "input-group-radio",
215
+ "iconClass": "icon-phone",
216
+ "value": "radio-phone"
217
+ }
218
+ ]
184
219
  }
185
220
  ]
186
221
  }
@@ -16,7 +16,6 @@
16
16
  "name": "form-element-text-first-name",
17
17
  "htmlClass": "form-element-text-class",
18
18
  "value": "",
19
- "fieldIconClass": "icon-lock",
20
19
  "labelText": "First Name",
21
20
  "placeholder": "First Name",
22
21
  "required": true,
@@ -432,6 +432,7 @@ export default {
432
432
  methods: {
433
433
  toggleAllOptions() {
434
434
  this.validationStatus = "success"
435
+
435
436
  const checkboxValues = []
436
437
  if (this.modelValue.length === this.selectData.length) {
437
438
  if (this.$attrs.required) {
@@ -444,7 +445,9 @@ export default {
444
445
  }
445
446
 
446
447
  this.$emit("update:modelValue", checkboxValues)
448
+ this.$emit('validation-status-change', this.validationStatus)
447
449
  },
450
+ // toggle options/dropdown
448
451
  toggleOptions() {
449
452
  if (this.$attrs.disabled !== 'disabled') {
450
453
  this.showOptions = !this.showOptions
@@ -465,8 +468,11 @@ export default {
465
468
  }
466
469
  }
467
470
 
471
+ // hide options after selection
468
472
  this.showOptions = false
473
+
469
474
  this.$emit('update:modelValue', optionValue)
475
+ this.$emit('validation-status-change', this.validationStatus)
470
476
  },
471
477
  // check if a checkbox is changed for selectbox with checkboxes
472
478
  optionSelect(event) {
@@ -484,18 +490,23 @@ export default {
484
490
 
485
491
  this.$emit('update:modelValue', value)
486
492
  },
493
+ // hide options (in dropdown)
487
494
  closeOptions() {
488
495
  this.showOptions = false
489
496
  },
497
+ // set path for flag-icons (type-property must be 'country')
490
498
  pathFlag(isoCode) {
491
499
  return this.pathFlags + "/flag-" + isoCode + ".svg"
492
500
  },
501
+ // validate on blur
493
502
  onBlur() {
494
503
  this.validationStatus = "success"
495
504
 
496
505
  if (this.$attrs.required !== undefined && (!this.modelValue || this.modelValue.length === 0)) {
497
506
  this.validationStatus = "error"
498
507
  }
508
+
509
+ this.$emit('validation-status-change', this.validationStatus)
499
510
  },
500
511
  // overwrite requirement-message form fieldValidation.js
501
512
  getRequirementMessage() {
@@ -10,16 +10,18 @@
10
10
  >
11
11
  <template v-if="useFieldset">
12
12
  <fieldset class="flex-container flex-direction-column"><!-- do not remove .flex-direction-column to keep specificity -->
13
+ <!-- begin (mandatory) legend-->
13
14
  <legend :class="{hidden : !legendOptions.show, 'align-left': legendOptions.align === 'left'}">{{
14
15
  legendOptions.text
15
16
  }}
16
17
  </legend>
17
-
18
+ <!-- end (mandatory) legend-->
19
+
18
20
  <CmdHeadline
19
21
  v-if="cmdHeadline?.headlineText"
20
22
  v-bind="cmdHeadline"
21
23
  />
22
-
24
+
23
25
  <CmdSystemMessage
24
26
  v-if="systemMessage.show && systemMessage.message"
25
27
  :validationStatus="systemMessage.validationStatus"
@@ -30,84 +32,57 @@
30
32
  <slot v-if="useSlot"></slot>
31
33
  <!-- end default-slot-content -->
32
34
 
35
+ <!-- begin loop for formElements -->
33
36
  <template v-else v-for="(item, index) in formElements" :key="index">
34
- <!-- begin loop for formElements -->
35
37
  <CmdFormElement
36
38
  v-if="!item.component || item.component === 'CmdFormElement'"
37
39
  :key="index"
38
- :element="item.element || 'input'"
39
- :type="item.type || 'text'"
40
- :name="item.name"
41
40
  :class="item.htmlClass"
42
- :id="item.id || createHtmlId()"
41
+ v-bind="item"
43
42
  v-model="formValues[item.name]"
44
- :inputValue="item.inputValue"
45
- :fieldIconClass="item.innerIconClass"
46
- :selectOptions="item.selectOptions"
47
- :toggleSwitch="item.toggleSwitch"
48
- :labelText="item.labelText"
49
- :placeholder="item.placeholder"
50
- :required="item.required"
51
- :disabled="item.disabled"
52
- :autocomplete="item.autocomplete"
53
- :minlength="item.minlength"
54
- :maxlength="item.maxlength"
55
- :nativeButton="item.nativeButton"
56
- :colored="item.colored"
57
43
  @validation-status-change="formElementHasError($event, item.name)"
58
44
  />
59
- <CmdInputGroup
60
- v-else-if="item.component === 'CmdInputGroup'"
45
+ <CmdFakeSelect
46
+ v-if="item.component === 'CmdFakeSelect'"
47
+ :class="item.htmlClass"
48
+ v-bind="item"
61
49
  v-model="formValues[item.name]"
62
- :labelText="item.labelText"
63
- :inputElements="item.inputElements"
64
- :toggleSwitches="item.toggleSwitches"
65
- :colored="item.colored"
66
50
  />
51
+ <CmdInputGroup
52
+ v-else-if="item.component === 'CmdInputGroup'"
53
+ :class="item.htmlClass"
54
+ v-bind="item"
55
+ v-model="formValues[item.name]"
56
+ />
67
57
  <div
68
- v-else-if="item.component === 'flexContainer'"
69
- class="flex-container"
58
+ v-else-if="item.component === 'flexContainer' || item.component === 'inputWrapper'"
59
+ :class="item.component === 'flexContainer' ? 'flex-container' : 'input-wrapper'"
70
60
  >
61
+ <!-- begin inner loop for formElements inside flex-container/input-wrapper -->
71
62
  <template v-for="(item, index) in item.formElements" :key="index">
72
63
  <CmdFormElement
73
64
  v-if="!item.component || item.component === 'CmdFormElement'"
74
65
  :key="index"
75
- :element="item.element || 'input'"
76
- :type="item.type || 'text'"
77
- :name="item.name"
78
66
  :class="item.htmlClass"
79
- :id="item.id || createHtmlId()"
67
+ v-bind="item"
80
68
  v-model="formValues[item.name]"
81
- :inputValue="item.inputValue"
82
- :toggleSwitch="item.toggleSwitch"
83
- :fieldIconClass="item.innerIconClass"
84
- :selectOptions="item.selectOptions"
85
- :labelText="item.labelText"
86
- :placeholder="item.placeholder"
87
- :required="item.required"
88
- :disabled="item.disabled"
89
- :autocomplete="item.autocomplete"
90
- :minlength="item.minlength"
91
- :maxlength="item.maxlength"
92
- :nativeButton="item.nativeButton"
93
69
  @validation-status-change="formElementHasError($event, item.name)"
94
70
  />
95
71
  <CmdInputGroup
96
72
  v-else-if="item.component === 'CmdInputGroup'"
97
73
  v-model="formValues[item.name]"
98
- :labelText="item.labelText"
99
- :inputElements="item.inputElements"
100
- :toggleSwitches="item.toggleSwitches"
101
- :colored="item.colored"
74
+ v-bind="item"
102
75
  />
103
76
  </template>
77
+ <!-- end inner loop for formElements inside flex-container/input-wrapper -->
104
78
  </div>
105
79
  </template>
106
80
  <!-- end loop for formElements -->
107
81
 
82
+ <!-- begin submit- and cancel-button inside fieldset -->
108
83
  <div v-if="submitButtonOptions.show && (submitButtonOptions.position === 'insideFieldset' || submitButtonOptions.position === null)" class="flex-container no-wrap-on-small-devices">
109
84
  <small v-if="mandatoryText" class="mandatory-text"><sup>*</sup>{{ mandatoryText }}</small>
110
- <!-- begin cancel-button (below fieldset) -->
85
+ <!-- begin cancel-button -->
111
86
  <button
112
87
  v-if="cancelButtonOptions.show"
113
88
  :class="['button', {'stretch-on-small-devices': cancelButtonOptions.stretchOnSmallDevices, disabled: cancelButtonOptions.disabled, cancel: cancelButtonOptions.useDefaultStyling}]"
@@ -117,23 +92,26 @@
117
92
  <span v-if="cancelButtonOptions.iconClass" :class="cancelButtonOptions.iconClass"></span>
118
93
  <span v-if="cancelButtonOptions.text">{{ cancelButtonOptions.text }}</span>
119
94
  </button>
120
- <!-- end cancel-button (below fieldset) -->
95
+ <!-- end cancel-button -->
121
96
 
122
- <!-- begin submit-button (inside fieldset) -->
97
+ <!-- begin submit-button -->
123
98
  <button
124
99
  :class="['button', {'stretch-on-small-devices': submitButtonOptions.stretchOnSmallDevices, primary: submitButtonOptions.primary, disabled: submitButtonOptions.disabled}]"
125
100
  :type="submitButtonOptions.type"
101
+ @click.prevent="onSubmit"
126
102
  >
127
103
  <span v-if="submitButtonOptions.iconClass" :class="submitButtonOptions.iconClass"></span>
128
104
  <span v-if="submitButtonOptions.text">{{ submitButtonOptions.text }}</span>
129
105
  </button>
130
- <!-- end submit-button (inside fieldset) -->
106
+ <!-- end submit-button -->
131
107
  </div>
108
+ <!-- end submit- and cancel-button inside fieldset -->
132
109
  </fieldset>
133
110
 
111
+ <!-- begin submit- and cancel-button outside/below fieldset -->
134
112
  <div v-if="submitButtonOptions.show && submitButtonOptions.position === 'belowFieldset'" class="flex-container no-wrap-on-small-devices">
135
113
  <small v-if="mandatoryText" class="mandatory-text"><sup>*</sup>{{ mandatoryText }}</small>
136
- <!-- begin cancel-button (below fieldset) -->
114
+ <!-- begin cancel-button-->
137
115
  <button
138
116
  v-if="cancelButtonOptions.show"
139
117
  :class="['button', {'stretch-on-small-devices': cancelButtonOptions.stretchOnSmallDevices, disabled: cancelButtonOptions.disabled, cancel: cancelButtonOptions.useDefaultStyling}]"
@@ -143,17 +121,18 @@
143
121
  <span v-if="cancelButtonOptions.iconClass" :class="cancelButtonOptions.iconClass"></span>
144
122
  <span v-if="cancelButtonOptions.text">{{ cancelButtonOptions.text }}</span>
145
123
  </button>
146
- <!-- end cancel-button (below fieldset) -->
124
+ <!-- end cancel-button -->
147
125
 
148
- <!-- begin submit-button (below fieldset) -->
126
+ <!-- begin submit-button -->
149
127
  <button v-if="submitButtonOptions.show"
150
128
  :class="['button', {'stretch-on-small-devices': submitButtonOptions.stretchOnSmallDevices, primary: submitButtonOptions.primary, disabled: submitButtonOptions.disabled}]"
151
129
  :type="submitButtonOptions.type || 'submit'">
152
130
  <span v-if="submitButtonOptions.iconClass" :class="submitButtonOptions.iconClass"></span>
153
131
  <span v-if="submitButtonOptions.text">{{ submitButtonOptions.text }}</span>
154
132
  </button>
155
- <!-- end submit-button (below fieldset) -->
133
+ <!-- end submit-button -->
156
134
  </div>
135
+ <!-- end submit- and cancel-button outside/below fieldset -->
157
136
 
158
137
  <!-- begin button-row-slot-content -->
159
138
  <slot name="button-row"></slot>
@@ -189,6 +168,9 @@ export default {
189
168
  }
190
169
  },
191
170
  props: {
171
+ /**
172
+ * model-value for entire form
173
+ */
192
174
  modelValue: {
193
175
  type: Object
194
176
  },
@@ -299,7 +281,7 @@ export default {
299
281
  computed: {
300
282
  legendOptions() {
301
283
  return {
302
- show: true,
284
+ show: false,
303
285
  align: "left",
304
286
  text: "Legend",
305
287
  ...this.legend
@@ -371,10 +353,10 @@ export default {
371
353
  event.preventDefault()
372
354
  this.errorOccurred = true
373
355
  }
374
- } else {
375
- this.submitFormData(event)
376
- }
356
+ } else {
357
+ this.submitFormData(event)
377
358
  }
359
+ }
378
360
  },
379
361
  watch: {
380
362
  modelValue: {
@@ -59,7 +59,7 @@
59
59
  :value="inputElement.value"
60
60
  v-model="inputValue"
61
61
  :disabled="inputElement.disabled"
62
- :class="{'replace-input-type': replaceInputType}"
62
+ :class="[inputElements.htmlClass, {'replace-input-type': replaceInputType}]"
63
63
  />
64
64
  <!-- begin CmdIcon -->
65
65
  <CmdIcon
@@ -109,7 +109,7 @@ export default {
109
109
  /**
110
110
  * set orientation
111
111
  *
112
- * @allwoedValues = horizontal, vertical
112
+ * @allowedValues = horizontal, vertical
113
113
  */
114
114
  orientation: {
115
115
  type: String,
@@ -277,6 +277,8 @@ export default {
277
277
  return
278
278
  }
279
279
  this.validationStatus = this.status
280
+
281
+ this.$emit('validation-status-change', this.validationStatus)
280
282
  }
281
283
  },
282
284
  computed: {
@@ -300,6 +302,7 @@ export default {
300
302
  },
301
303
  // set/write a value to update v-model for this component
302
304
  set(value) {
305
+ this.$emit('validation-status-change', this.validationStatus)
303
306
  this.$emit("update:modelValue", value)
304
307
  }
305
308
  }
@@ -4,6 +4,7 @@
4
4
  <li v-for="(step, index) in multisteps" :key="index" :class="[errorLinkClass(index), successLinkClass(index)]">
5
5
  <!-- begin CmdLink -->
6
6
  <CmdLink
7
+ v-if="stepsCanBeClicked"
7
8
  :linkType="step.linkType"
8
9
  :class="['stretch-on-small-devices', activeLinkClass(index), errorLinkClass(index), successLinkClass(index)]"
9
10
  :styleAsButton="styleAsButtons"
@@ -21,6 +22,14 @@
21
22
  </CmdLink>
22
23
  <!-- end CmdLink -->
23
24
 
25
+ <template v-else>
26
+ <span v-if="showStepNumber" class="number">{{ index + 1 }}</span>
27
+ <!-- begin CmdIcon -->
28
+ <CmdIcon v-if="step.iconClass" :iconClass="step.iconClass" :type="step.iconType" />
29
+ <!-- end CmdIcon -->
30
+ <span v-if="step.text">{{ step.text }}</span>
31
+ </template>
32
+
24
33
  <!-- begin separator -->
25
34
  <span v-if="index + 1 !== multisteps.length && useGap" :class="['separator', separatorIconClass]"></span>
26
35
  <!-- end separator -->
@@ -42,6 +51,13 @@ export default {
42
51
  }
43
52
  },
44
53
  props: {
54
+ /**
55
+ * active if steps should be clickable
56
+ */
57
+ stepsCanBeClicked: {
58
+ type: Boolean,
59
+ default: true
60
+ },
45
61
  /**
46
62
  * set highlight-level for steps
47
63
  *
@@ -249,12 +265,6 @@ export default {
249
265
 
250
266
  &:has(:not(.button)) {
251
267
  flex: none;
252
-
253
- &:is(:hover, :active, :focus) {
254
- span, span[class*="icon-"] {
255
- color: var(--hyperlink-color);
256
- }
257
- }
258
268
  }
259
269
 
260
270
  a, button {
@@ -293,12 +303,6 @@ export default {
293
303
  }
294
304
  }
295
305
 
296
- &:hover, &:active, &:focus {
297
- .number {
298
- color: var(--hyperlink-color);
299
- }
300
- }
301
-
302
306
  .number {
303
307
  line-height: 100%;
304
308
  width: 2rem;