comand-component-library 3.2.9 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }