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/dist/comand-component-library.css +1 -1
- package/dist/comand-component-library.umd.min.js +1 -1
- package/package.json +2 -2
- package/src/App.vue +40 -16
- package/src/assets/data/icon.json +17 -0
- package/src/assets/data/tabs.json +3 -1
- package/src/components/CmdAddressData.vue +2 -2
- package/src/components/CmdBox.vue +1 -1
- package/src/components/CmdFakeSelect.vue +13 -4
- package/src/components/CmdFancyBox.vue +6 -2
- package/src/components/CmdFormFilters.vue +2 -2
- package/src/components/CmdIcon.vue +47 -10
- package/src/components/CmdListOfRequirements.vue +0 -5
- package/src/components/CmdLoginForm.vue +9 -10
- package/src/components/CmdMainNavigation.vue +1 -1
- package/src/components/CmdMultistepFormProgressBar.vue +2 -2
- package/src/components/CmdPager.vue +1 -1
- package/src/components/CmdSiteSearch.vue +1 -1
- package/src/components/CmdTable.vue +2 -2
- package/src/components/CmdTabs.vue +10 -6
- package/src/components/CmdTooltip.vue +1 -1
- package/src/components/CmdUploadForm.vue +2 -3
- package/src/documentation/generated/CmdFakeSelectPropertyDescriptions.json +5 -0
- package/src/documentation/generated/CmdIconPropertyDescriptions.json +32 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comand-component-library",
|
|
3
|
-
"version": "3.
|
|
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.
|
|
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-
|
|
42
|
+
<li><a href="#section-google-mapsn">Google-Maps™</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
|
-
|
|
942
|
+
<!-- begin google-maps ------------------------------------------------------------------------------------------------------------------------------------------------------->
|
|
943
|
+
<a id="section-google-maps"></a>
|
|
944
944
|
<CmdWidthLimitationWrapper>
|
|
945
|
-
<h2 class="headline-demopage">Google Maps&trade
|
|
945
|
+
<h2 class="headline-demopage">Google Maps™</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
|
|
959
|
-
|
|
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
|
-
<
|
|
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": "
|
|
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
|
|
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
|
|
62
|
+
<!-- end mobile phone -->
|
|
63
63
|
|
|
64
64
|
<!-- begin fax -->
|
|
65
65
|
<dt v-if="addressData.fax?.value">
|
|
@@ -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
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
134
|
+
font-size: var(--icon-size-small);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
}
|
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
<
|
|
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
|
-
*
|
|
12
|
-
* '
|
|
13
|
-
*
|
|
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: '
|
|
27
|
+
* @allowedValues: 'auto', 'iconify'
|
|
16
28
|
*/
|
|
17
|
-
|
|
29
|
+
type: {
|
|
18
30
|
type: String,
|
|
19
|
-
default:
|
|
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
|
-
</
|
|
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
|
|
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
|
|
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-
|
|
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
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|
}
|
|
@@ -137,7 +137,7 @@ export default {
|
|
|
137
137
|
z-index: 1;
|
|
138
138
|
|
|
139
139
|
&::before {
|
|
140
|
-
font-size:
|
|
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
|
}
|
|
@@ -199,7 +199,7 @@ export default {
|
|
|
199
199
|
min-height: 2rem;
|
|
200
200
|
|
|
201
201
|
span[class*="icon"] {
|
|
202
|
-
font-size:
|
|
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:
|
|
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 :
|
|
6
|
-
<
|
|
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
|
-
|
|
147
|
+
color: var(--pure-white);
|
|
144
148
|
|
|
145
149
|
&:hover, &:active, &:focus {
|
|
146
|
-
|
|
150
|
+
background: var(--hyperlink-color);
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
153
|
}
|
|
@@ -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:
|
|
1052
|
-
padding:
|
|
1050
|
+
top: .2rem;
|
|
1051
|
+
padding: .1rem .2rem;
|
|
1053
1052
|
line-height: 100%;
|
|
1054
1053
|
background: var(--color-scheme-background-color);
|
|
1055
1054
|
}
|