comand-component-library 3.2.9 → 3.3.0

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": "3.2.9",
3
+ "version": "3.3.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "clickout-event": "^1.1.2",
21
- "comand-frontend-framework": "^3.2.91",
21
+ "comand-frontend-framework": "^3.2.95",
22
22
  "core-js": "^3.20.1",
23
23
  "prismjs": "^1.27.0",
24
24
  "sass": "^1.54.9",
package/src/App.vue CHANGED
@@ -2,8 +2,6 @@
2
2
  <template>
3
3
  <div id="page-wrapper">
4
4
  <a id="anchor-back-to-top"></a>
5
- <Icon icon="mdi-light:home" class="icon-" />
6
- ICON: <Icon icon="mdi:account-cowboy-hat" />
7
5
  <!-- begin site-header --------------------------------------------------------------------------------------------------------------------------------------------------->
8
6
  <CmdSiteHeader :sticky="true">
9
7
  <template v-slot:top-header>
@@ -41,24 +39,25 @@
41
39
  <li><a href="#section-fancybox">Fancybox</a></li>
42
40
  </ul>
43
41
  <ul>
44
- <li><a href="#section-google-maps-integration">Google-Maps&trade;-Integration</a></li>
42
+ <li><a href="#section-google-mapsn">Google-Maps&trade;</a></li>
43
+ <li><a href="#section-icons">Icons</a></li>
45
44
  <li><a href="#section-image-gallery">Image Gallery</a></li>
46
45
  <li><a href="#section-image-zoom">Image-Zoom</a></li>
47
46
  <li><a href="#section-list-of-links">List Of Links</a></li>
48
47
  <li><a href="#section-login-form">Login Form</a></li>
49
48
  <li><a href="#section-main-navigation">Main-Navigation</a></li>
50
- <li><a href="#section-multistep-form-progress-bar">Multistepform-Progressbar</a></li>
51
49
  </ul>
52
50
  <ul>
51
+ <li><a href="#section-multistep-form-progress-bar">Multistepform-Progressbar</a></li>
53
52
  <li><a href="#section-pager">Pager</a></li>
54
53
  <li><a href="#section-share-buttons">Share Buttons</a></li>
55
54
  <li><a href="#section-site-header">Site Header</a></li>
56
55
  <li><a href="#section-site-search">Site Search</a></li>
57
56
  <li><a href="#section-slideshow">Slideshow</a></li>
58
57
  <li><a href="#section-system-message">System-Message</a></li>
59
- <li><a href="#section-tables">Tables</a></li>
60
58
  </ul>
61
59
  <ul>
60
+ <li><a href="#section-tables">Tables</a></li>
62
61
  <li><a href="#section-tabs">Tabs</a></li>
63
62
  <li><a href="#section-thumbnail-scroller">Thumbnail-Scroller</a></li>
64
63
  <li><a href="#section-toggle-darkmode">ToggleDarkMode</a></li>
@@ -940,25 +939,49 @@
940
939
  </CmdWidthLimitationWrapper>
941
940
  <!-- end fancybox ------------------------------------------------------------------------------------------------------------------------------------------------------->
942
941
 
943
- <a id="section-google-maps-integration"></a>
942
+ <!-- begin google-maps ------------------------------------------------------------------------------------------------------------------------------------------------------->
943
+ <a id="section-google-maps"></a>
944
944
  <CmdWidthLimitationWrapper>
945
- <h2 class="headline-demopage">Google Maps&trade;-Integration</h2>
945
+ <h2 class="headline-demopage">Google Maps&trade;</h2>
946
946
  <CmdGoogleMaps :address="addressData"/>
947
947
  </CmdWidthLimitationWrapper>
948
+ <!-- end google-maps ------------------------------------------------------------------------------------------------------------------------------------------------------->
949
+
950
+ <!-- begin icons ------------------------------------------------------------------------------------------------------------------------------------------------------->
951
+ <a id="section-icons"></a>
952
+ <CmdWidthLimitationWrapper>
953
+ <h2 class="headline-demopage">Icons</h2>
954
+ <ul>
955
+ <li><span>Icon from local iconfont</span><CmdIcon iconClass="icon-home" /></li>
956
+ <li><span>Icon from iconify-api (icomoon-font)</span><CmdIcon iconClass="icomoon-free:home" /></li>
957
+ <li><span>Icon from iconify-api (bootstrap-font)</span><CmdIcon iconClass="bi:house-fill" /></li>
958
+ <li><span>Icon from iconify-api (material-design-font)</span><CmdIcon iconClass="mdi:home" /></li>
959
+ <li><span>Icon from iconify-api (font-awesome-solid-font)</span><CmdIcon iconClass="fa6-solid:house-chimney" /></li>
960
+
961
+ </ul>
962
+ </CmdWidthLimitationWrapper>
963
+ <!-- end icons ------------------------------------------------------------------------------------------------------------------------------------------------------->
948
964
 
965
+ <!-- begin image-gallery------------------------------------------------------------------------------------------------------------------------------------------------------->
949
966
  <a id="section-image-gallery"></a>
950
967
  <CmdWidthLimitationWrapper>
951
968
  <h2 class="headline-demopage">Image-Gallery</h2>
952
- <CmdImageGallery :images="imageGalleryData"/>
969
+ <CmdImageGallery :images="imageGalleryData" />
953
970
  </CmdWidthLimitationWrapper>
971
+ <!-- end image-gallery ------------------------------------------------------------------------------------------------------------------------------------------------------->
954
972
 
973
+ <!-- begin image-zoom ------------------------------------------------------------------------------------------------------------------------------------------------------->
955
974
  <a id="section-image-zoom"></a>
956
975
  <CmdWidthLimitationWrapper>
957
976
  <h2 class="headline-demopage">Image-Zoom</h2>
958
- <CmdImageZoom small-image-url="media/images/content-images/logo-business-edition-landscape.jpg"
959
- large-image-url="media/images/content-images/logo-business-edition-landscape-large.jpg"/>
977
+ <CmdImageZoom
978
+ small-image-url="media/images/content-images/logo-business-edition-landscape.jpg"
979
+ large-image-url="media/images/content-images/logo-business-edition-landscape-large.jpg"
980
+ />
960
981
  </CmdWidthLimitationWrapper>
982
+ <!-- end image-zoom ------------------------------------------------------------------------------------------------------------------------------------------------------->
961
983
 
984
+ <!-- begin login-form ------------------------------------------------------------------------------------------------------------------------------------------------------->
962
985
  <a id="section-login-form"></a>
963
986
  <CmdWidthLimitationWrapper>
964
987
  <h2 class="headline-demopage">Login Form</h2>
@@ -967,13 +990,15 @@
967
990
  </CmdForm>
968
991
  <p>LoginData: {{ loginData }}</p>
969
992
  </CmdWidthLimitationWrapper>
993
+ <!-- end list-of-links ------------------------------------------------------------------------------------------------------------------------------------------------------->
994
+
970
995
 
971
996
  <!-- begin list-of-links ------------------------------------------------------------------------------------------------------------------------------------------------------->
972
997
  <a id="section-list-of-links"></a>
973
998
  <CmdWidthLimitationWrapper>
974
999
  <h2 class="headline-demopage">List Of Links</h2>
975
1000
  <h3>Vertical</h3>
976
- <CmdListOfLinks :links="listOfLinksData"/>
1001
+ <CmdListOfLinks :links="listOfLinksData" />
977
1002
  <h3>Horizontal (aligned left, with headline)</h3>
978
1003
  <CmdListOfLinks
979
1004
  orientation="horizontal"
@@ -1007,6 +1032,7 @@
1007
1032
  <a id="section-multistep-form-progress-bar"></a>
1008
1033
  <CmdWidthLimitationWrapper>
1009
1034
  <h2 class="headline-demopage">Multistepform-Progressbar</h2>
1035
+ <h3>Steps with icons</h3>
1010
1036
  <CmdMultistepFormProgressBar
1011
1037
  :multisteps="multistepsData.withIcon"
1012
1038
  separatorIconClass="icon-single-arrow-right"
@@ -1015,7 +1041,7 @@
1015
1041
  <div>
1016
1042
  <p>Page {{ showPageMultistep }}</p>
1017
1043
  </div>
1018
- <h2 class="headline-demopage">Multistepform-Progressbar</h2>
1044
+ <h3>Steps with number</h3>
1019
1045
  <CmdMultistepFormProgressBar
1020
1046
  :showStepNumber="true"
1021
1047
  :multisteps="multistepsData.withoutIcon"
@@ -1318,9 +1344,6 @@
1318
1344
  </template>
1319
1345
 
1320
1346
  <script>
1321
- import {Icon} from "@iconify/vue"
1322
-
1323
-
1324
1347
  // import used example data
1325
1348
  import accordionData from '@/assets/data/accordion.json'
1326
1349
  import addressData from '@/assets/data/address-data.json'
@@ -1369,6 +1392,7 @@ import CmdForm from "@/components/CmdForm.vue"
1369
1392
  import CmdFormElement from "@/components/CmdFormElement.vue"
1370
1393
  import CmdFormFilters from "@/components/CmdFormFilters.vue"
1371
1394
  import CmdGoogleMaps from "./components/CmdGoogleMaps"
1395
+ import CmdIcon from "./components/CmdIcon"
1372
1396
  import CmdImageGallery from "@/components/CmdImageGallery.vue"
1373
1397
  import CmdImageZoom from "@/components/CmdImageZoom.vue"
1374
1398
  import CmdInputGroup from "./components/CmdInputGroup"
@@ -1404,7 +1428,6 @@ import {localizedTime} from "./components/CmdOpeningHours"
1404
1428
  export default {
1405
1429
  name: "App",
1406
1430
  components: {
1407
- Icon,
1408
1431
  CmdListOfLinks,
1409
1432
  CmdAddressData,
1410
1433
  CmdBackToTopButton,
@@ -1422,6 +1445,7 @@ export default {
1422
1445
  CmdFormFilters,
1423
1446
  CmdFormElement,
1424
1447
  CmdGoogleMaps,
1448
+ CmdIcon,
1425
1449
  CmdImageGallery,
1426
1450
  CmdImageZoom,
1427
1451
  CmdInputGroup,
@@ -0,0 +1,17 @@
1
+ {
2
+ "prefix": "cmd",
3
+ "icons": {
4
+ "3d-cursor": {
5
+ "body": "<path d=\"M13 4H4v9.01h2V6h7V4z\" fill=\"currentColor\"/><path d=\"M29.49 13.12l-9-5a1 1 0 0 0-1 0l-9 5A1 1 0 0 0 10 14v10a1 1 0 0 0 .52.87l9 5A1 1 0 0 0 20 30a1.05 1.05 0 0 0 .49-.13l9-5A1 1 0 0 0 30 24V14a1 1 0 0 0-.51-.88zM19 27.3l-7-3.89v-7.72l7 3.89zm1-9.45L13.06 14L20 10.14L26.94 14zm8 5.56l-7 3.89v-7.72l7-3.89z\" fill=\"currentColor\"/>",
6
+ "hidden": true
7
+ },
8
+ "building": {
9
+ "body": "<path fill=\"currentColor\" d=\"M28 2H16a2.002 2.002 0 0 0-2 2v10H4a2.002 2.002 0 0 0-2 2v14h28V4a2.002 2.002 0 0 0-2-2ZM9 28v-7h4v7Zm19 0H15v-8a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v8H4V16h12V4h12Z\"/><path fill=\"currentColor\" d=\"M18 8h2v2h-2zm6 0h2v2h-2zm-6 6h2v2h-2zm6 0h2v2h-2zm-6 6h2v2h-2zm6 0h2v2h-2z\"/>"
10
+ },
11
+ "linkedin": {
12
+ "body": "<path fill=\"currentColor\" d=\"M12,12h5.535v2.837h0.078C18.384,13.456,20.27,12,23.078,12C28.92,12,30,15.637,30,20.367V30h-5.77v-8.54\n\tc0-2.037-0.041-4.657-3-4.657c-3.006,0-3.463,2.219-3.463,4.51V30H12V12z\"/>\n<path fill=\"currentColor\" d=\"M2,12h6v18H2V12z\"/>\n<path fill=\"currentColor\" d=\"M8,7c0,1.657-1.343,3-3,3S2,8.657,2,7s1.343-3,3-3S8,5.343,8,7z\"/>"
13
+ }
14
+ },
15
+ "width": 32,
16
+ "height": 32
17
+ }
@@ -3,19 +3,21 @@
3
3
  "name": "Tab 1",
4
4
  "headlineText": "Tab 1 Headline",
5
5
  "headlineLevel": 4,
6
- "iconClass": "icon-home",
6
+ "iconClass": "icomoon-free:airplane",
7
7
  "htmlContent": "<p>Inhalt 1</p>"
8
8
  },
9
9
  {
10
10
  "name": "Tab 2",
11
11
  "headlineText": "Tab 2 Headline",
12
12
  "headlineLevel": 4,
13
+ "iconClass": "icomoon-free:blocked",
13
14
  "htmlContent": "<p>Inhalt 2</p>"
14
15
  },
15
16
  {
16
17
  "name": "Tab 3",
17
18
  "headlineText": "Tab 3 Headline",
18
19
  "headlineLevel": 4,
20
+ "iconClass": "cmd:linkedin",
19
21
  "htmlContent": "<p>Inhalt 3</p>"
20
22
  }
21
23
  ]
@@ -51,7 +51,7 @@
51
51
  </dd>
52
52
  <!-- end telephone -->
53
53
 
54
- <!-- begin mobilephone -->
54
+ <!-- begin mobile phone -->
55
55
  <dt v-if="addressData.mobilephone?.value">
56
56
  <span v-if="addressData.mobilephone.iconClass && showLabelIcons" :class="addressData.mobilephone.iconClass" :title="getMessage('cmdaddressdata.labeltext.mobile_phone')"></span>
57
57
  <span v-if="showLabelTexts">{{ getMessage('cmdaddressdata.labeltext.mobile_phone')}}</span>
@@ -59,7 +59,7 @@
59
59
  <dd v-if="addressData.mobilephone?.value">
60
60
  <a :href="'tel:' + addressData.mobilephone" title="Call number" class="tel" v-telephone="addressData.mobilephone.value">{{ addressData.mobilephone.value }}</a>
61
61
  </dd>
62
- <!-- end mobilephone -->
62
+ <!-- end mobile phone -->
63
63
 
64
64
  <!-- begin fax -->
65
65
  <dt v-if="addressData.fax?.value">
@@ -368,7 +368,7 @@ export default {
368
368
  }
369
369
 
370
370
  > .toggle-icon, .toggle-icon > [class*="icon"] {
371
- font-size: 1rem;
371
+ font-size: var(--font-size-small);
372
372
  }
373
373
  }
374
374
 
@@ -265,6 +265,13 @@ export default {
265
265
  pathFlags: {
266
266
  type: String,
267
267
  default: "/media/images/flags"
268
+ },
269
+ /**
270
+ * default text if no option is selected (and first option is not used)
271
+ */
272
+ textPleaseSelect: {
273
+ type: String,
274
+ default: "Please select\u2026"
268
275
  }
269
276
  },
270
277
  computed: {
@@ -301,10 +308,12 @@ export default {
301
308
  return this.modelValue.length + " options selected"
302
309
  }
303
310
  } else if (this.selectData?.length) {
311
+ // return text of first option nothing is selected (and type !== checkboxOptions && type !== content)
304
312
  return this.selectData[0].text
305
313
  }
306
314
 
307
- return "Please select"
315
+ // return default text if nothing is selected (and no modelValue exists) (and type !== checkboxOptions && type !== content)
316
+ return this.textPleaseSelect
308
317
  },
309
318
  // get the displayed icon (only available for default selectbox)
310
319
  optionIcon() {
@@ -323,13 +332,13 @@ export default {
323
332
  },
324
333
  optionCountry() {
325
334
  if (this.type === "country") {
326
- return this.modelValue
335
+ return this.modelValue || this.selectData?.[0]?.value
327
336
  }
328
337
  return null
329
338
  },
330
339
  optionColor() {
331
340
  if (this.type === "color") {
332
- return this.modelValue
341
+ return this.modelValue || this.selectData?.[0]?.value
333
342
  }
334
343
  return null
335
344
  },
@@ -495,7 +504,7 @@ export default {
495
504
 
496
505
  > [class*="icon-"]:last-child {
497
506
  margin-left: auto;
498
- font-size: 1rem;
507
+ font-size: var(--icon-size-small);
499
508
  }
500
509
 
501
510
  &:hover, &:active, &:focus {
@@ -2,7 +2,7 @@
2
2
  <teleport to="body">
3
3
  <dialog
4
4
  ref="dialog"
5
- :class="['cmd-fancybox', {'show-overlay': showOverlay, 'image' : fancyBoxImageUrl || fancyBoxGallery}]"
5
+ :class="['cmd-fancybox', {'show-overlay': showOverlay, 'image' : fancyBoxImageUrl || fancyBoxGallery, 'image-gallery': fancyBoxGallery}]"
6
6
  :aria-label="ariaLabelText"
7
7
  >
8
8
  <header class="flex-container">
@@ -404,6 +404,10 @@ export default FancyBox
404
404
  overflow: hidden;
405
405
  gap: calc(var(--default-gap) / 2);
406
406
 
407
+ &.image-gallery {
408
+ margin-top: calc(var(--default-margin) * 2)
409
+ }
410
+
407
411
  // detect open-attribute (will be added to dom automatically)
408
412
  &[open] {
409
413
  display: flex;
@@ -558,7 +562,7 @@ export default FancyBox
558
562
 
559
563
  @media only screen and (max-width: $medium-max-width) {
560
564
  dialog {
561
- top: var(--default-margin);
565
+ margin-top: var(--default-margin);
562
566
  }
563
567
  }
564
568
  /* end cmd-fancybox ------------------------------------------------------------------------------------------ */
@@ -113,7 +113,7 @@ export default {
113
113
  margin-right: var(--default-margin);
114
114
  border: var(--default-border);
115
115
  background: var(--pure-white);
116
- font-size: 1.1rem;
116
+ font-size: var(--font-size-small);
117
117
 
118
118
  &:hover, &:active, &:focus {
119
119
  border-color: var(--primary-color);
@@ -131,7 +131,7 @@ export default {
131
131
  }
132
132
 
133
133
  [class*="icon-"] {
134
- font-size: 1rem;
134
+ font-size: var(--icon-size-small);
135
135
  }
136
136
  }
137
137
  }
@@ -1,25 +1,39 @@
1
1
  <template>
2
- <span v-if="fontSource === 'iconify'" :title="tooltip"></span>
3
- <span v-if="fontSource === 'local'" :class="iconClass" :title="tooltip"></span>
2
+ <!-- begin iconify-icon -->
3
+ <Icon v-if="isIconify" :icon="iconClass" :title="tooltip"></Icon>
4
+ <!-- end iconify-icon -->
5
+
6
+ <!-- being icon from local iconfont -->
7
+ <span v-else :class="iconClass" :title="tooltip"></span>
8
+ <!-- end icon from local iconfont -->
4
9
  </template>
5
10
 
6
11
  <script>
12
+ // import components
13
+ import {Icon} from "@iconify/vue"
14
+
7
15
  export default {
8
16
  name: "CmdIcon",
17
+ components: {
18
+ Icon
19
+ },
9
20
  props: {
10
21
  /**
11
- * font-source where to load the icons from
12
- * 'local' is for using an implemented icon-fonts by using class 'icon-name'
13
- * 'iconify' is for using icons from iconify-dependency (https://iconify.design/)
22
+ * type that defines where the icon is loaded from
23
+ * 'auto' is for letting the component check (by classname) if the icon should be loaded from the local iconfont (class="icon-'iconname'")
24
+ * or if the icon should be loaded form iconify-api (class='fontprefix':'iconname') (https://iconify.design/)
25
+ * 'iconify' forces the component to load an iconfify icon (without api) from a local source (which must be defined)
14
26
  *
15
- * @allowedValues: 'dependency', 'local'
27
+ * @allowedValues: 'auto', 'iconify'
16
28
  */
17
- fontSource: {
29
+ type: {
18
30
  type: String,
19
- default: 'local'
31
+ default: "auto"
20
32
  },
21
33
  /**
22
- * icon-class for icon
34
+ * icon-class for icon from local iconfont
35
+ *
36
+ * type-property must be set to auto and classname must include icon-'iconname'
23
37
  */
24
38
  iconClass: {
25
39
  type: String,
@@ -34,6 +48,29 @@ export default {
34
48
  type: String,
35
49
  required: false
36
50
  }
51
+ },
52
+ computed: {
53
+ isIconify() {
54
+ if (this.type === "iconify") {
55
+ return true
56
+ }
57
+
58
+ if (this.type === "auto") {
59
+ return this.iconClass.includes(":")
60
+ }
61
+ return false
62
+ }
63
+ }
64
+ }
65
+ </script>
66
+
67
+ <style lang="scss">
68
+ .iconify {
69
+ font-size: var(--icon-size);
70
+ vertical-align: text-bottom;
71
+
72
+ & + span, span + & {
73
+ margin-left: calc(var(--default-margin) / 2);
37
74
  }
38
75
  }
39
- </script>
76
+ </style>
@@ -176,7 +176,6 @@ export default {
176
176
  }
177
177
 
178
178
  span[class*="icon"] {
179
- font-size: 1.2rem;
180
179
  color: var(--status-color);
181
180
  }
182
181
 
@@ -186,10 +185,6 @@ export default {
186
185
  justify-content: center;
187
186
  text-align: center;
188
187
  text-decoration: none;
189
-
190
- span[class*="icon"] {
191
- font-size: 1.2rem;
192
- }
193
188
  }
194
189
  }
195
190
  }
@@ -47,7 +47,7 @@
47
47
  <template v-if="options.forgotPassword || options.createAccount">
48
48
  <!-- begin link for 'forgot password' -->
49
49
  <a v-if="options.forgotPassword" href="#" @click.prevent="sendLogin = true">
50
- <span v-if="options.forgotPassword.icon && options.forgotPassword.icon.show && options.forgotPassword.icon.iconClass"
50
+ <span v-if="options.forgotPassword.icon?.show && options.forgotPassword.icon?.iconClass"
51
51
  :class="options.forgotPassword.icon.iconClass"
52
52
  :title="options.forgotPassword.icon.tooltip">
53
53
  </span>
@@ -57,7 +57,7 @@
57
57
 
58
58
  <!-- begin link-type 'href' for 'create account' -->
59
59
  <a v-if="options.createAccount && options.createAccount.linkType === 'href'" :href="options.createAccount.path">
60
- <span v-if="options.createAccount.icon && options.createAccount.icon.show && options.createAccount.icon.iconClass"
60
+ <span v-if="options.createAccount.icon?.show && options.createAccount.icon?.iconClass"
61
61
  :class="options.createAccount.icon.iconClass"
62
62
  :title="options.forgotPassword.icon.tooltip">
63
63
  </span>
@@ -294,20 +294,20 @@ export default {
294
294
  forgotPassword: {
295
295
  icon: {
296
296
  show: true,
297
- iconClass: "icon-help",
297
+ iconClass: "icon-questionmark-circle",
298
298
  tooltip: ""
299
299
  },
300
- text: "Forgot password?"
300
+ text: "Forgot password"
301
301
  },
302
302
  createAccount: {
303
303
  linkType: "href",
304
304
  path: "#",
305
305
  icon: {
306
- show: true,
307
- iconClass: "icon-register",
308
- tooltip: ""
309
- },
310
- text: "Create new account!"
306
+ show: true,
307
+ iconClass: "icon-register",
308
+ tooltip: ""
309
+ },
310
+ text: "Create new account"
311
311
  },
312
312
  backToLoginForm: {
313
313
  icon: {
@@ -428,7 +428,6 @@ export default {
428
428
  flex: none;
429
429
 
430
430
  span[class*="icon"] {
431
- font-size: 1.3rem;
432
431
  text-decoration: none;
433
432
  }
434
433
  }
@@ -408,7 +408,7 @@ export default {
408
408
  font-weight: bold;
409
409
 
410
410
  &[class*="icon"] {
411
- font-size: 1rem;
411
+ font-size: var(--font-size-small);
412
412
  }
413
413
  }
414
414
  }
@@ -137,7 +137,7 @@ export default {
137
137
  z-index: 1;
138
138
 
139
139
  &::before {
140
- font-size: 1rem;
140
+ font-size: var(--font-size-small);
141
141
  }
142
142
  }
143
143
  }
@@ -179,7 +179,6 @@ export default {
179
179
 
180
180
  &.active {
181
181
  a {
182
- font-weight: bold;
183
182
  background: var(--primary-color);
184
183
 
185
184
  span, span[class*='icon'] {
@@ -207,6 +206,7 @@ export default {
207
206
  & + span[class*="icon"] {
208
207
  &:last-child {
209
208
  border-color: var(--border-color);
209
+ color: var(--pure-white);
210
210
  background: var(--secondary-color);
211
211
  }
212
212
  }
@@ -148,7 +148,7 @@ export default {
148
148
  }
149
149
 
150
150
  > [class*="icon-"] {
151
- font-size: 1rem;
151
+ font-size: var(--icon-size-small);
152
152
  }
153
153
  }
154
154
 
@@ -373,7 +373,7 @@ export default {
373
373
 
374
374
  > a {
375
375
  [class*='icon'] {
376
- font-size: 1rem;
376
+ font-size: var(--icon-size-small);
377
377
  }
378
378
  }
379
379
 
@@ -199,7 +199,7 @@ export default {
199
199
  min-height: 2rem;
200
200
 
201
201
  span[class*="icon"] {
202
- font-size: 1rem;
202
+ font-size: var(--icon-size-small);
203
203
  }
204
204
  }
205
205
  }
@@ -215,7 +215,7 @@ export default {
215
215
  th {
216
216
  a[class*='icon-'] {
217
217
  &, &:hover, &:active, &:focus {
218
- font-size: 1rem;
218
+ font-size: var(--icon-size-small);
219
219
  color: var(--pure-white);
220
220
  }
221
221
  }
@@ -2,8 +2,8 @@
2
2
  <div class="cmd-tabs">
3
3
  <ul :class="{'stretch-tabs' : stretchTabs}" role="tablist">
4
4
  <li v-for="(tab, index) in tabs" :key="index" role="tab">
5
- <a :class="{active : showTab === index}" @click.prevent="setActiveTab(index)" :title="!tab.name ? tab.tooltip : false" href="#">
6
- <span v-if="tab.iconClass" :class="tab.iconClass"></span>
5
+ <a :class="{active : showTab === index}" @click.prevent="setActiveTab(index)" :title="!tab.name ? tab.tooltip : undefined" href="#">
6
+ <CmdIcon v-if="tab.iconClass" :iconClass="tab.iconClass"></CmdIcon>
7
7
  <span v-if="tab.name">{{ tab.name }}</span>
8
8
  </a>
9
9
  </li>
@@ -32,13 +32,17 @@
32
32
  </template>
33
33
 
34
34
  <script>
35
+ import {addCollection} from "@iconify/vue"
36
+ import IconData from '@/assets/data/icon.json'
35
37
  // import components
36
38
  import CmdHeadline from "./CmdHeadline"
37
-
39
+ import CmdIcon from "./CmdIcon"
40
+ addCollection(IconData)
38
41
  export default {
39
42
  name: "CmdTabs",
40
43
  components: {
41
- CmdHeadline
44
+ CmdHeadline,
45
+ CmdIcon
42
46
  },
43
47
  data() {
44
48
  return {
@@ -140,10 +144,10 @@ export default {
140
144
  }
141
145
 
142
146
  &.active {
143
- color: var(--pure-white);
147
+ color: var(--pure-white);
144
148
 
145
149
  &:hover, &:active, &:focus {
146
- color: var(--hyperlink-color);
150
+ background: var(--hyperlink-color);
147
151
  }
148
152
  }
149
153
  }
@@ -194,7 +194,7 @@ export default {
194
194
 
195
195
  span[class*="icon"] {
196
196
  padding-left: 1rem;
197
- font-size: 1.2rem;
197
+ font-size: 1.1rem;
198
198
  }
199
199
  }
200
200
  }
@@ -1046,10 +1046,9 @@ export default {
1046
1046
  left: 50%;
1047
1047
  transform: translateX(-50%);
1048
1048
  z-index: 1;
1049
- font-size: 1.2rem;
1050
1049
  display: table;
1051
- top: 0.2rem;
1052
- padding: 0.1rem 0.2rem;
1050
+ top: .2rem;
1051
+ padding: .1rem .2rem;
1053
1052
  line-height: 100%;
1054
1053
  background: var(--color-scheme-background-color);
1055
1054
  }