comand-component-library 3.1.68 → 3.1.71

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) 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 +271 -173
  5. package/src/assets/data/list-of-links.json +0 -1
  6. package/src/assets/fonts/iconfonts/logos-iconfont/icomoon.woff +0 -0
  7. package/src/assets/fonts/iconfonts/logos-iconfont/selection.json +1 -0
  8. package/src/assets/styles/global-styles.scss +56 -48
  9. package/src/assets/styles/logos-iconfont.css +47 -32
  10. package/src/components/CmdBackToTopButton.vue +1 -1
  11. package/src/components/CmdBox.vue +54 -28
  12. package/src/components/CmdBoxSiteSearch.vue +228 -46
  13. package/src/components/CmdCompanyLogo.vue +37 -12
  14. package/src/components/CmdCookieDisclaimer.vue +16 -17
  15. package/src/components/CmdCustomHeadline.vue +1 -1
  16. package/src/components/CmdFakeSelect.vue +24 -28
  17. package/src/components/CmdFormElement.vue +157 -141
  18. package/src/components/CmdInputGroup.vue +132 -4
  19. package/src/components/CmdLoginForm.vue +4 -2
  20. package/src/components/CmdMultipleSwitch.vue +14 -2
  21. package/src/components/CmdMultistepFormProgressBar.vue +2 -2
  22. package/src/components/CmdProgressBar.vue +2 -2
  23. package/src/components/CmdSiteHeader.vue +12 -3
  24. package/src/components/CmdTable.vue +1 -1
  25. package/src/components/CmdTabs.vue +3 -7
  26. package/src/components/CmdThumbnailScroller.vue +1 -1
  27. package/src/components/CmdToggleDarkMode.vue +66 -0
  28. package/src/components/CmdUploadForm.vue +5 -6
  29. package/src/index.js +1 -2
  30. package/src/mixins/CmdFormElement/DefaultMessageProperties.js +1 -1
  31. package/src/mixins/FieldValidation.js +1 -1
  32. package/src/mixins/GlobalDefaultMessageProperties.js +1 -2
  33. package/src/mixins/I18n.js +12 -2
  34. package/src/utils/{GetFileExtension.js → getFileExtension.js} +0 -0
  35. package/src/assets/fonts/iconfonts/logos-iconfont/logos-iconfont.json +0 -1
  36. package/src/components/CmdSwitchButton.vue +0 -181
@@ -21,16 +21,15 @@
21
21
  :key="index"
22
22
  >
23
23
  <template v-slot:header>
24
- <!-- begin CmdSwitchButton -->
25
- <CmdSwitchButton
24
+ <!-- begin CmdFormElement -->
25
+ <CmdFormElement
26
+ element="input"
26
27
  type="checkbox"
27
- :id="cookie.id"
28
- :labelText="cookie.labelText"
29
- v-model="cookie.checked"
30
- :status="cookie.status"
31
- disabled="disabled"
28
+ labelText="Google Analytics"
29
+ id="google-analytics"
30
+ :toggleSwitch="true"
32
31
  />
33
- <!-- end CmdSwitchButton -->
32
+ <!-- end CmdFormElement -->
34
33
  </template>
35
34
  <template v-slot:body>
36
35
  <p v-if="cookie.description">{{ cookie.description }}</p>
@@ -57,15 +56,15 @@
57
56
  :key="index"
58
57
  >
59
58
  <template v-slot:header>
60
- <!-- begin CmdSwitchButton -->
61
- <CmdSwitchButton
59
+ <!-- begin CmdFormElement -->
60
+ <CmdFormElement
61
+ element="input"
62
62
  type="checkbox"
63
- :id="cookie.id"
64
- :labelText="cookie.labelText"
65
- v-model="cookie.checked"
66
- :status="cookie.status"
63
+ labelText="Google Analytics"
64
+ id="google-analytics"
65
+ :toggleSwitch="true"
67
66
  />
68
- <!-- end CmdSwitchButton -->
67
+ <!-- end CmdFormElement -->
69
68
  </template>
70
69
  <template v-slot:body>
71
70
  <p v-if="cookie.description">{{ cookie.description }}</p>
@@ -107,14 +106,14 @@
107
106
  // import components
108
107
  import CmdBox from "./CmdBox"
109
108
  import CmdCustomHeadline from "./CmdCustomHeadline"
110
- import CmdSwitchButton from "./CmdSwitchButton"
109
+ import CmdFormElement from "./CmdFormElement"
111
110
 
112
111
  export default {
113
112
  name: "CmdCookieDisclaimer",
114
113
  components: {
115
114
  CmdBox,
116
115
  CmdCustomHeadline,
117
- CmdSwitchButton
116
+ CmdFormElement
118
117
  },
119
118
  data() {
120
119
  return {
@@ -74,7 +74,7 @@ export default {
74
74
  margin-bottom: 0;
75
75
  }
76
76
 
77
- h1, h2, h3, h4, h5 ,h6 {
77
+ h1, h2, h3, h4, h5, h6 {
78
78
  margin: 0;
79
79
  display: flex;
80
80
  align-items: center;
@@ -12,24 +12,24 @@
12
12
  :aria-required="$attrs.required !== undefined"
13
13
  ref="fakeselect"
14
14
  >
15
- <span v-if="showLabel">
15
+ <template v-if="showLabel">
16
16
  <!-- begin label -->
17
- <span :id="labelId">
18
- {{ labelText }}<sup v-if="$attrs.required !== undefined">*</sup>
17
+ <span class="label-text" :id="labelId">
18
+ <span>{{ labelText }}<sup v-if="$attrs.required !== undefined">*</sup></span>
19
+ <a v-if="$attrs.required || inputRequirements.length"
20
+ href="#"
21
+ @click.prevent
22
+ :class="getStatusIconClass"
23
+ :title="!useCustomTooltip ? getValidationMessage : ''"
24
+ :aria-errormessage="getValidationMessage"
25
+ aria-live="assertive"
26
+ :id="tooltipId"
27
+ :role="validationStatus === 'error' ? 'alert' : 'dialog'">
28
+ </a>
19
29
  </span>
20
30
  <!-- end label -->
21
- <a v-if="$attrs.required || inputRequirements.length"
22
- href="#"
23
- @click.prevent
24
- :class="getStatusIconClass"
25
- :title="!useCustomTooltip ? getValidationMessage : ''"
26
- :aria-errormessage="getValidationMessage"
27
- aria-live="assertive"
28
- :id="tooltipId"
29
- :role="validationStatus === 'error' ? 'alert' : 'dialog'">
30
- </a>
31
- </span>
32
- <ul :class="{'open': showOptions}" @clickout="closeOptions">
31
+ </template>
32
+ <ul :class="{'open': showOptions}" @clickout="closeOptions" :aria-expanded="showOptions">
33
33
  <li>
34
34
  <!-- begin default/selected-option -->
35
35
  <a href="#" @click.prevent="toggleOptions" @blur="onBlur">
@@ -42,8 +42,8 @@
42
42
  <!-- end default/selected-option-->
43
43
 
44
44
  <!-- begin default dropdown (incl. optional icon) -->
45
- <ul v-if="type === 'default' && showOptions" :aria-expanded="showOptions">
46
- <li v-for="(option, index) in selectData" :key="index" role="option">
45
+ <ul v-if="type === 'default' && showOptions" role="listbox">
46
+ <li v-for="(option, index) in selectData" :key="index" role="option" :aria-selected="option.value === modelValue">
47
47
  <!-- begin type 'href' -->
48
48
  <a v-if="optionLinkType === 'href'" href="#" @click.prevent="selectOption(option.value)" :class="{'active' : option.value === modelValue}">
49
49
  <span v-if="option.iconClass" :class="option.iconClass"></span>
@@ -460,10 +460,6 @@ export default {
460
460
  .cmd-fake-select {
461
461
  align-self: flex-end;
462
462
 
463
- & + .cmd-tooltip {
464
- border-color: var(--status-color);
465
- }
466
-
467
463
  > span:first-child {
468
464
  a {
469
465
  align-self: flex-end;
@@ -475,7 +471,7 @@ export default {
475
471
  margin: 0;
476
472
  display: block;
477
473
  min-width: 0;
478
- background: var(--pure-white);
474
+ background: var(--color-scheme-background-color);
479
475
  box-shadow: none;
480
476
  border-radius: var(--border-radius);
481
477
 
@@ -524,7 +520,7 @@ export default {
524
520
  padding-top: .8rem;
525
521
  outline: none;
526
522
  border-bottom: var(--default-border);
527
- color: var(--text-color);
523
+ color: var(--color-scheme-text-color);
528
524
  text-decoration: none;
529
525
 
530
526
  &:hover, &:active, &:focus {
@@ -604,21 +600,21 @@ export default {
604
600
  }
605
601
  }
606
602
 
607
- &.error {
603
+ &.has-state {
608
604
  > ul {
609
605
  > li {
610
606
  > a {
611
- border-color: var(--error-color);
607
+ border-color: var(--status-color);
612
608
 
613
609
  > span, span[class*="icon-"] {
614
- color: var(--error-color);
610
+ color: var(--status-color);
615
611
  }
616
612
 
617
613
  &:hover, &:active, &:focus {
618
614
  background: var(--pure-white);
619
615
 
620
616
  span {
621
- color: var(--error-color);
617
+ color: var(--status-color);
622
618
  }
623
619
  }
624
620
  }
@@ -668,7 +664,7 @@ export default {
668
664
 
669
665
  > span:first-child {
670
666
  width: 1.5rem;
671
- aspect-ratio: 1;
667
+ aspect-ratio: 1/1;
672
668
  border: var(--default-border);
673
669
 
674
670
  &[style=""] {
@@ -3,65 +3,57 @@
3
3
  :class="[
4
4
  'cmd-form-element',
5
5
  validationStatus,
6
- {
7
- disabled: $attrs.disabled,
8
- inline : displayLabelInline,
9
- checked: isChecked,
10
- 'toggle-switch-label': toggleSwitch,
11
- colored: colored,
12
- on: colored && isChecked,
13
- off: colored && !isChecked,
14
- 'has-state': validationStatus
15
- }]"
6
+ $attrs.class,
7
+ {
8
+ disabled: $attrs.disabled,
9
+ inline : displayLabelInline,
10
+ checked: isChecked,
11
+ 'toggle-switch': toggleSwitch,
12
+ colored: colored,
13
+ on: colored && isChecked,
14
+ off: colored && !isChecked,
15
+ 'has-state': validationStatus
16
+ }]"
16
17
  :for="labelId"
17
18
  ref="label">
18
19
 
19
20
  <!-- begin label-text (+ required asterisk) -->
20
21
  <span v-if="labelText && $attrs.type !== 'checkbox' && $attrs.type !== 'radio'"
21
- :class="!showLabel ? 'hidden' : undefined">
22
- <span>
23
- {{ labelText }}<sup v-if="$attrs.required">*</sup>
24
- </span>
25
- <a v-if="$attrs.required || inputRequirements.length"
26
- href="#"
27
- @click.prevent
28
- :class="getStatusIconClass"
29
- :title="validationTooltip"
30
- :aria-errormessage="getValidationMessage"
31
- aria-live="assertive"
32
- :id="tooltipId"
33
- :role="validationStatus === 'error' ? 'alert' : 'dialog'">
34
- </a>
35
- </span>
22
+ :class="['label-text', !showLabel ? 'hidden' : undefined]">
23
+ <span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
24
+ <a v-if="$attrs.required || inputRequirements.length"
25
+ href="#"
26
+ @click.prevent
27
+ :class="getStatusIconClass"
28
+ :title="validationTooltip"
29
+ :aria-errormessage="getValidationMessage"
30
+ aria-live="assertive"
31
+ :id="tooltipId"
32
+ :role="validationStatus === 'error' ? 'alert' : 'dialog'">
33
+ </a>
34
+ </span>
36
35
  <!-- end label-text (+ required asterisk) -->
37
36
 
38
- <!-- begin icon -->
39
- <span
40
- v-if="
41
- $attrs.type !== 'checkbox' &&
42
- $attrs.type !== 'radio' &&
43
- fieldIconClass
44
- "
45
- :class="['place-inside', fieldIconClass]"
46
- ></span>
47
- <!-- end icon -->
37
+ <!-- begin icon inside field -->
38
+ <span v-if="$attrs.type !== 'checkbox' && $attrs.type !== 'radio' && fieldIconClass" :class="['place-inside', fieldIconClass]"></span>
39
+ <!-- end icon inside field -->
48
40
 
49
41
  <!-- begin inputfield -->
50
- <template
51
- v-if="element === 'input' && $attrs.type !== 'checkbox' && $attrs.type !== 'radio' && $attrs.type !== 'search'">
52
- <input v-bind="$attrs"
53
- :id="labelId"
54
- :class="htmlClass"
55
- @focus="tooltip = true"
56
- @blur="onBlur"
57
- @input="onInput"
58
- @mouseover="datalistFocus"
59
- @keyup="checkForCapsLock"
60
- :autocomplete="autocomplete"
61
- :list="datalist ? datalist.id : null"
62
- :value="modelValue"
63
- :maxlength="getMaxLength()"
64
- ref="input"
42
+ <template v-if="element === 'input' && $attrs.type !== 'checkbox' && $attrs.type !== 'radio' && $attrs.type !== 'search'">
43
+ <input
44
+ v-bind="elementAttributes"
45
+ :id="labelId"
46
+ :class="inputClass"
47
+ @focus="tooltip = true"
48
+ @blur="onBlur"
49
+ @input="onInput"
50
+ @mouseover="datalistFocus"
51
+ @keyup="checkForCapsLock"
52
+ :autocomplete="autocomplete"
53
+ :list="datalist ? datalist.id : null"
54
+ :value="modelValue"
55
+ :maxlength="getMaxLength()"
56
+ ref="input"
65
57
  />
66
58
  </template>
67
59
  <!-- end inputfield -->
@@ -88,37 +80,46 @@
88
80
 
89
81
  <!-- begin checkbox and radiobutton -->
90
82
  <template v-else-if="element === 'input' && ($attrs.type === 'checkbox' || $attrs.type === 'radio')">
91
- <input v-bind="$attrs"
92
- @change="onChange"
93
- @blur="onBlur"
94
- :checked="isChecked"
95
- :value="inputValue"
96
- :class="[htmlClass, validationStatus, { 'replace-input-type': replaceInputType, 'toggle-switch': toggleSwitch }]"
97
- :id="labelId"
98
- :aria-invalid="validationStatus === 'error'"
99
- />
100
- <span v-if="!(onLabel && offLabel)" :class="{ hidden: !showLabel }">
101
- <span v-if="labelText">{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
102
- </span>
103
-
104
- <!-- begin labels for toggle-switch -->
83
+ <template v-if="!(onLabel && offLabel)">
84
+ <input
85
+ v-bind="elementAttributes"
86
+ @change="onChange"
87
+ @blur="onBlur"
88
+ :checked="isChecked"
89
+ :value="inputValue"
90
+ :class="[inputClass, validationStatus, toggleSwitchIconClass, { 'replace-input-type': replaceInputType, 'toggle-switch': toggleSwitch }]"
91
+ :id="labelId"
92
+ :aria-invalid="validationStatus === 'error'"
93
+ />
94
+ <span v-if="labelText" :class="['label-text', { hidden: !showLabel }]"><span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span></span>
95
+ </template>
96
+ <!-- begin labels for toggle-switch with switch-label -->
105
97
  <template v-else-if="onLabel && offLabel">
106
- <span v-if="labelText">
107
- <span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
98
+ <span class="switch-label-wrapper">
99
+ <input v-bind="elementAttributes"
100
+ @change="onChange"
101
+ @blur="onBlur"
102
+ :checked="isChecked"
103
+ :value="inputValue"
104
+ :class="{inputClass, validationStatus}"
105
+ :id="labelId"
106
+ :aria-invalid="validationStatus === 'error'"
107
+ />
108
+ <span class="label-text">{{ onLabel }}</span>
109
+ <span class="label-text">{{ offLabel }}</span>
108
110
  </span>
109
- <span class="toggle-switch switch-label">
110
- <span class="label">{{ onLabel }}</span>
111
- <span class="label">{{ offLabel }}</span>
111
+ <span v-if="labelText" class="label-text">
112
+ <span>{{ labelText }}<sup v-if="$attrs.required">*</sup></span>
112
113
  </span>
113
114
  </template>
114
115
  <slot v-else></slot>
115
- <!-- end labels for toggle-switch -->
116
+ <!-- end labels for toggle-switch with switch-label -->
116
117
  </template>
117
118
  <!-- end checkbox and radiobutton -->
118
119
 
119
120
  <!-- begin selectbox -->
120
121
  <select v-if="element === 'select'"
121
- v-bind="$attrs"
122
+ v-bind="elementAttributes"
122
123
  :id="labelId"
123
124
  @blur="onBlur"
124
125
  @change="$emit('update:modelValue', $event.target.value)">
@@ -130,7 +131,7 @@
130
131
 
131
132
  <!-- begin textarea -->
132
133
  <textarea v-if="element === 'textarea'"
133
- v-bind="$attrs"
134
+ v-bind="elementAttributes"
134
135
  :id="labelId"
135
136
  :value="modelValue"
136
137
  :maxlength="getMaxLength()"
@@ -143,19 +144,19 @@
143
144
 
144
145
  <!-- begin searchfield -->
145
146
  <template v-else-if="element === 'input' && $attrs.type === 'search'">
146
- <div class="search-field-wrapper flex-container no-gap">
147
- <a v-if="iconDelete.show" href="#" @click.prevent="$emit('update:modelValue', '')" :class="iconDelete.iconClass" :title="iconDelete.tooltip"/>
147
+ <span class="search-field-wrapper flex-container no-gap">
148
148
  <input
149
- v-bind="$attrs"
149
+ v-bind="elementAttributes"
150
150
  :id="labelId"
151
151
  @input="onInput"
152
- :maxlength="$attrs.maxlength > 0 ? $attrs.maxlength : 255"
152
+ :maxlength="getMaxLength()"
153
153
  :value="modelValue"
154
154
  />
155
- </div>
156
- <a v-if="showSearchButton" href="#" class="button no-flex" :title="iconSearch.tooltip" @click.prevent="executeSearch">
157
- <span :class="iconSearch.iconClass"></span>
158
- </a>
155
+ <a v-if="showSearchButton" href="#" class="button no-flex" :title="iconSearch.tooltip" @click.prevent="executeSearch">
156
+ <span :class="iconSearch.iconClass"></span>
157
+ </a>
158
+ <a v-if="iconDelete.show" href="#" @click.prevent="$emit('update:modelValue', '')" :class="iconDelete.iconClass" :title="iconDelete.tooltip"></a>
159
+ </span>
159
160
  </template>
160
161
  </label>
161
162
  <!-- end searchfield -->
@@ -217,7 +218,7 @@ import {createUuid} from "../utils/common.js"
217
218
 
218
219
  // import mixins
219
220
  import I18n from "../mixins/I18n"
220
- import DefaultMessageProperties from "../mixins/CmdBox/DefaultMessageProperties"
221
+ import DefaultMessageProperties from "../mixins/CmdFormElement/DefaultMessageProperties"
221
222
  import FieldValidation from "../mixins/FieldValidation.js"
222
223
  import Tooltip from "../mixins/Tooltip.js"
223
224
 
@@ -332,7 +333,7 @@ export default {
332
333
  * allow checkbox/radio-buttons to get value from outside
333
334
  */
334
335
  inputValue: {
335
- type: String,
336
+ type: [String, Number],
336
337
  required: false
337
338
  },
338
339
  /**
@@ -349,7 +350,7 @@ export default {
349
350
  *
350
351
  * may not be named as 'class' because it is a reserved keyword in JavaScript
351
352
  */
352
- htmlClass: {
353
+ inputClass: {
353
354
  type: String,
354
355
  required: false
355
356
  },
@@ -547,6 +548,33 @@ export default {
547
548
  }
548
549
  }
549
550
  },
551
+ /**
552
+ * toggle if toggle-switch shows icons for checked/unchecked-status
553
+ */
554
+ useIconsForToggleSwitch: {
555
+ type: Boolean,
556
+ default: false
557
+ },
558
+ /**
559
+ * icon for toggle-switch checked
560
+ *
561
+ * toggle-switch-property must be activated
562
+ * use-icons-for-toggle-switch-property must be activated
563
+ */
564
+ toggleSwitchCheckedIconClass: {
565
+ type: String,
566
+ default: "icon-check-circle"
567
+ },
568
+ /**
569
+ * icon for toggle-switch unchecked
570
+ *
571
+ * toggle-switch-property must be activated
572
+ * use-icons-for-toggle-switch-property must be activated
573
+ */
574
+ toggleSwitchUncheckedIconClass: {
575
+ type: String,
576
+ default: "icon-cancel-circle"
577
+ },
550
578
  /**
551
579
  * icon to toggle password-visibility
552
580
  *
@@ -582,6 +610,19 @@ export default {
582
610
  },
583
611
  },
584
612
  computed: {
613
+ elementAttributes() {
614
+ const commonAttributes = ["name", "required", "readonly", "disabled", "autofocus"]
615
+ const attributes = {
616
+ input: [...commonAttributes, "type", "minlength", "pattern", "min", "max", "multiple", "step", "autocomplete", "placeholder"],
617
+ select: [...commonAttributes, "multiple"],
618
+ textarea: [...commonAttributes, "placeholder"]
619
+ }
620
+ const attrs = {}
621
+ if (attributes[this.element]) {
622
+ Object.entries(this.$attrs).filter(([name]) => attributes[this.element].includes(name)).forEach(([name, value]) => attrs[name] = value)
623
+ }
624
+ return attrs
625
+ },
585
626
  buttonAttrs() {
586
627
  // copy all native attributes
587
628
  const allAttrs = {...this.$attrs}
@@ -633,32 +674,42 @@ export default {
633
674
  return this.getMessage("cmdformelement.validationTooltip.open_field_requirements")
634
675
  },
635
676
  autocomplete() {
636
- if(this.$attrs.type !== 'file') {
677
+ if (this.$attrs.type !== 'file') {
637
678
  return this.datalist ? 'off' : 'on'
638
679
  }
639
680
  return null
640
681
  },
641
682
  // get ID for accessibility
642
683
  labelId() {
643
- if(this.$attrs.id !== undefined) {
684
+ if (this.$attrs.id !== undefined) {
644
685
  return this.$attrs.id
645
686
  }
646
687
  return "label-" + createUuid()
688
+ },
689
+ // toggle icons for toggle-switch
690
+ toggleSwitchIconClass() {
691
+ if(this.toggleSwitch && this.useIconsForToggleSwitch && this.toggleSwitchUncheckedIconClass && this.toggleSwitchCheckedIconClass) {
692
+ if(this.isChecked) {
693
+ return this.toggleSwitchCheckedIconClass
694
+ }
695
+ return this.toggleSwitchUncheckedIconClass
696
+ }
697
+ return null
647
698
  }
648
699
  },
649
700
  methods: {
650
701
  getDomElement() {
651
702
  return this.$refs.label
652
703
  },
704
+ // define max-length for different input-types
653
705
  getMaxLength() {
654
706
  if (this.$attrs.element === 'textarea') {
655
707
  return this.$attrs.maxlength > 0 ? this.$attrs.maxlength : 5000
656
708
  }
657
709
 
658
- if (this.$attrs.type !== 'file') {
659
- return this.$attrs.maxlength > 0 ? this.$attrs.maxlength : 255
710
+ if (this.$attrs.type !== 'file' && this.$attrs.type !== 'number' && this.$attrs.type !== 'date') {
711
+ return this.$attrs.maxlength > 0 ? this.$attrs.maxlength : 255
660
712
  }
661
-
662
713
  return null
663
714
  },
664
715
  onBlur(event) {
@@ -749,6 +800,7 @@ export default {
749
800
  </script>
750
801
 
751
802
  <style lang="scss">
803
+ /* begin cmd-form-element ------------------------------------------------------------------------------------------ */
752
804
  .cmd-form-element {
753
805
  input + .place-inside[class*="icon"] {
754
806
  left: auto;
@@ -756,22 +808,6 @@ export default {
756
808
  }
757
809
 
758
810
  &.has-state, & + .cmd-tooltip {
759
- &.error {
760
- --status-color: var(--error-color);
761
- }
762
-
763
- &.warning {
764
- --status-color: var(--warning-color);
765
- }
766
-
767
- &.success {
768
- --status-color: var(--success-color);
769
- }
770
-
771
- &.info {
772
- --status-color: var(--info-color);
773
- }
774
-
775
811
  ::placeholder {
776
812
  color: var(--status-color);
777
813
  }
@@ -785,13 +821,9 @@ export default {
785
821
  }
786
822
  }
787
823
 
788
- & + .cmd-tooltip {
789
- border-color: var(--status-color);
790
- }
791
-
792
824
  &.inline {
793
825
  & > span {
794
- & > a {
826
+ & > a:not(.button) {
795
827
  margin-left: calc(var(--default-margin) / 2);
796
828
  }
797
829
  }
@@ -800,23 +832,23 @@ export default {
800
832
  .search-field-wrapper {
801
833
  margin: 0;
802
834
 
803
- a {
835
+ a[class*="icon"] {
804
836
  position: absolute;
805
837
  top: 50%;
806
838
  right: 1rem;
807
839
  transform: translateY(-50%);
808
840
  z-index: 100;
841
+ }
809
842
 
810
- & + input {
811
- padding-right: calc(var(--default-padding) * 3);
843
+ a.button {
844
+ & + a[class*="icon"] {
845
+ right: 5rem;
812
846
  }
813
847
  }
814
848
  }
815
849
 
816
850
  .place-inside {
817
851
  + .search-field-wrapper {
818
-
819
-
820
852
  input {
821
853
  padding-left: calc(var(--default-padding) * 3);
822
854
  }
@@ -824,33 +856,15 @@ export default {
824
856
  }
825
857
 
826
858
  /* begin toggle-switch */
827
- /* no cmd-prefix-styling (class based on frontend-framework */
859
+ /* no cmd-prefix-styling (class based on frontend-framework) */
828
860
  &.toggle-switch {
829
- &.switch-label {
830
- input {
831
- & + .label {
832
- padding-right: calc(var(--default-padding) / 3 * 2);
833
-
834
- &::before {
835
- top: 0.2rem;
836
- }
837
-
838
- & + .label {
839
- padding-left: calc(var(--default-padding) / 3 * 2);
840
-
841
- &::before {
842
- top: 0.2rem;
843
- }
844
- }
845
- }
846
- }
847
-
848
- &.colored {
849
- &.off {
861
+ &.colored {
862
+ &.off {
863
+ .switch-label-wrapper {
850
864
  border-color: var(--error-color);
851
865
 
852
866
  span {
853
- &.label {
867
+ &.label-text {
854
868
  color: var(--error-color);
855
869
 
856
870
  &::before {
@@ -860,12 +874,14 @@ export default {
860
874
  }
861
875
  }
862
876
  }
877
+ }
863
878
 
864
- &.on {
879
+ &.on {
880
+ .switch-label-wrapper {
865
881
  border-color: var(--success-color);
866
882
 
867
883
  span {
868
- &.label {
884
+ &.label-text {
869
885
  color: var(--success-color);
870
886
 
871
887
  &::before {
@@ -878,7 +894,7 @@ export default {
878
894
  }
879
895
  }
880
896
  }
881
-
882
- /* end toggle-switch ------------------------------------------------------------------------------------------ */
897
+ /* end toggle-switch */
883
898
  }
899
+ /* end cmd-form-element------------------------------------------------------------------------------------------ */
884
900
  </style>