ketekny-ui-kit 1.0.123 → 1.0.125
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 +1 -1
- package/src/twoColLayout/assets/logo-dark.png +0 -0
- package/src/twoColLayout/assets/logo-icon-dark.png +0 -0
- package/src/twoColLayout/assets/logo-light.png +0 -0
- package/src/twoColLayout/assets/logo_icon.jpg +0 -0
- package/src/twoColLayout/components/MultilevelSidebar.vue +32 -7
- package/src/twoColLayout/components/TwoColLayout.vue +11 -0
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -14,10 +14,21 @@ import {
|
|
|
14
14
|
import SidebarMenuItem from './SidebarMenuItem.vue'
|
|
15
15
|
import kMenu from '../../ui/kMenu.vue'
|
|
16
16
|
import demoAvatarUrl from '../assets/placeholder-user.jpg'
|
|
17
|
+
import logoLightUrl from '../assets/logo-light.png'
|
|
18
|
+
import logoDarkUrl from '../assets/logo-dark.png'
|
|
19
|
+
import logoIconLightUrl from '../assets/logo_icon.jpg'
|
|
20
|
+
import logoIconDarkUrl from '../assets/logo-icon-dark.png'
|
|
17
21
|
|
|
18
22
|
const FAVORITES_STORAGE_KEY = 'ketekny-ui-sidebar-favorites'
|
|
19
23
|
const MENU_TAB_STORAGE_KEY = 'ketekny-ui-sidebar-menu-tab'
|
|
20
|
-
const LOGO_BASE_URL = 'https://s3.ketekny.gr/public/web-apps/logos'
|
|
24
|
+
// const LOGO_BASE_URL = 'https://s3.ketekny.gr/public/web-apps/logos'
|
|
25
|
+
|
|
26
|
+
const DEFAULT_LOGOS = {
|
|
27
|
+
light: logoLightUrl,
|
|
28
|
+
dark: logoDarkUrl,
|
|
29
|
+
iconLight: logoIconLightUrl,
|
|
30
|
+
iconDark: logoIconDarkUrl,
|
|
31
|
+
}
|
|
21
32
|
const LG_VIEWPORT_QUERY = '(min-width: 1024px)'
|
|
22
33
|
|
|
23
34
|
export default {
|
|
@@ -45,6 +56,11 @@ export default {
|
|
|
45
56
|
type: String,
|
|
46
57
|
default: "",
|
|
47
58
|
},
|
|
59
|
+
// { light, dark, iconLight, iconDark } — any subset overrides the default
|
|
60
|
+
logos: {
|
|
61
|
+
type: Object,
|
|
62
|
+
default: null,
|
|
63
|
+
},
|
|
48
64
|
width: {
|
|
49
65
|
type: String,
|
|
50
66
|
default: "360px",
|
|
@@ -57,6 +73,10 @@ export default {
|
|
|
57
73
|
type: Array,
|
|
58
74
|
default: () => [],
|
|
59
75
|
},
|
|
76
|
+
showMenuSearch: {
|
|
77
|
+
type: Boolean,
|
|
78
|
+
default: true,
|
|
79
|
+
},
|
|
60
80
|
account: {
|
|
61
81
|
type: Object,
|
|
62
82
|
default: null,
|
|
@@ -83,7 +103,6 @@ export default {
|
|
|
83
103
|
data() {
|
|
84
104
|
return {
|
|
85
105
|
demoAvatarUrl,
|
|
86
|
-
logoBaseUrl: LOGO_BASE_URL,
|
|
87
106
|
activeId: '',
|
|
88
107
|
activeMenuTab: 'all',
|
|
89
108
|
query: '',
|
|
@@ -100,6 +119,9 @@ export default {
|
|
|
100
119
|
}
|
|
101
120
|
},
|
|
102
121
|
computed: {
|
|
122
|
+
logoSrc() {
|
|
123
|
+
return { ...DEFAULT_LOGOS, ...this.logos }
|
|
124
|
+
},
|
|
103
125
|
sidebarWidthStyle() {
|
|
104
126
|
return {
|
|
105
127
|
width: this.collapsed ? this.collapsedWidth : this.width,
|
|
@@ -228,6 +250,9 @@ export default {
|
|
|
228
250
|
activeMenuTab(value) {
|
|
229
251
|
this.persistActiveMenuTab(value)
|
|
230
252
|
},
|
|
253
|
+
showMenuSearch(value) {
|
|
254
|
+
if (!value) this.clearQuery()
|
|
255
|
+
},
|
|
231
256
|
mobileOpen(isOpen) {
|
|
232
257
|
if (isOpen) this.syncCollapsedForViewport()
|
|
233
258
|
},
|
|
@@ -483,13 +508,13 @@ export default {
|
|
|
483
508
|
<div class="relative flex items-center px-4 py-4" :class="collapsed ? 'justify-center' : 'gap-2.5'">
|
|
484
509
|
<template v-if="collapsed">
|
|
485
510
|
<img
|
|
486
|
-
:src="
|
|
511
|
+
:src="logoSrc.iconLight"
|
|
487
512
|
alt="Ketekny logo"
|
|
488
513
|
class="sidebar-logo-light size-9 shrink-0 rounded-lg object-contain cursor-pointer"
|
|
489
514
|
@click="handleLogoClick"
|
|
490
515
|
/>
|
|
491
516
|
<img
|
|
492
|
-
:src="
|
|
517
|
+
:src="logoSrc.iconDark"
|
|
493
518
|
alt="Ketekny logo"
|
|
494
519
|
class="sidebar-logo-dark size-9 shrink-0 rounded-lg object-contain cursor-pointer"
|
|
495
520
|
@click="handleLogoClick"
|
|
@@ -497,13 +522,13 @@ export default {
|
|
|
497
522
|
</template>
|
|
498
523
|
<template v-else>
|
|
499
524
|
<img
|
|
500
|
-
:src="
|
|
525
|
+
:src="logoSrc.light"
|
|
501
526
|
alt="Ketekny logo"
|
|
502
527
|
class="sidebar-logo-light min-w-0 flex-1 object-contain cursor-pointer"
|
|
503
528
|
@click="handleLogoClick"
|
|
504
529
|
/>
|
|
505
530
|
<img
|
|
506
|
-
:src="
|
|
531
|
+
:src="logoSrc.dark"
|
|
507
532
|
alt="Ketekny logo"
|
|
508
533
|
class="sidebar-logo-dark min-w-0 flex-1 object-contain cursor-pointer"
|
|
509
534
|
@click="handleLogoClick"
|
|
@@ -568,7 +593,7 @@ export default {
|
|
|
568
593
|
</div>
|
|
569
594
|
</div>
|
|
570
595
|
|
|
571
|
-
<div v-if="!collapsed && (!showMenuTabs || activeMenuTab === 'all')" class="px-1 pb-3">
|
|
596
|
+
<div v-if="showMenuSearch && !collapsed && (!showMenuTabs || activeMenuTab === 'all')" class="px-1 pb-3">
|
|
572
597
|
<div class="relative">
|
|
573
598
|
<Search
|
|
574
599
|
class="pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--sidebar-text-muted)]"
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
:theme="theme"
|
|
7
7
|
:title="title"
|
|
8
8
|
:app-icon="appIcon"
|
|
9
|
+
:logos="logos"
|
|
9
10
|
:width="width"
|
|
10
11
|
:collapsed-width="collapsedWidth"
|
|
11
12
|
:main-menu="mainMenu"
|
|
13
|
+
:show-menu-search="showMenuSearch"
|
|
12
14
|
:mobile-open="mobileMenuOpen"
|
|
13
15
|
:account="account"
|
|
14
16
|
:contact-email="contactEmail"
|
|
@@ -70,6 +72,11 @@ export default {
|
|
|
70
72
|
type: String,
|
|
71
73
|
default: "",
|
|
72
74
|
},
|
|
75
|
+
// { light, dark, iconLight, iconDark } — any subset overrides the default
|
|
76
|
+
logos: {
|
|
77
|
+
type: Object,
|
|
78
|
+
default: null,
|
|
79
|
+
},
|
|
73
80
|
width: {
|
|
74
81
|
type: String,
|
|
75
82
|
default: "360px",
|
|
@@ -82,6 +89,10 @@ export default {
|
|
|
82
89
|
type: Array,
|
|
83
90
|
default: () => [],
|
|
84
91
|
},
|
|
92
|
+
showMenuSearch: {
|
|
93
|
+
type: Boolean,
|
|
94
|
+
default: true,
|
|
95
|
+
},
|
|
85
96
|
account: {
|
|
86
97
|
type: Object,
|
|
87
98
|
default: null,
|