@enso-ui/ui 6.2.7 → 7.0.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/LICENSE +1 -1
- package/bulma/index.js +2 -2
- package/package.json +34 -31
- package/renderless/index.js +2 -2
- package/src/bulma/components/AppFooter.vue +11 -11
- package/src/bulma/components/Breadcrumbs.vue +32 -5
- package/src/bulma/components/VueAside.vue +7 -11
- package/src/bulma/components/menu/Sidebar.vue +26 -10
- package/src/bulma/components/navbar/AppUpdate.vue +38 -14
- package/src/bulma/components/navbar/Navbar.vue +17 -15
- package/src/bulma/components/navbar/NavbarItem.vue +2 -4
- package/src/bulma/components/navbar/Search.vue +6 -5
- package/src/bulma/components/navbar/SettingsControl.vue +6 -5
- package/src/bulma/components/settings/Settings.vue +17 -3
- package/src/bulma/components/settings/SidebarState.vue +1 -2
- package/src/bulma/layouts/Default.vue +8 -22
- package/src/bulma/pages/MaintenanceMode.vue +5 -7
- package/src/bulma/pages/NotFound.vue +6 -5
- package/src/bulma/pages/Unauthorized.vue +5 -4
- package/src/bulma/styles/components/form.scss +151 -0
- package/src/bulma/styles/components/tables.scss +695 -0
- package/src/bulma/styles/components/vue-filter.scss +173 -0
- package/src/bulma/styles/components.sass +3 -0
- package/src/core/Root.vue +26 -7
- package/src/core/app.js +1 -1
- package/src/core/components/AppFooter.vue +2 -6
- package/src/core/components/DocumentTitle.vue +8 -3
- package/src/core/components/PageHeader.vue +7 -3
- package/src/core/components/menu/Sidebar.vue +2 -6
- package/src/core/components/navbar/Navbar.vue +17 -19
- package/src/core/components/navbar/Search.vue +10 -3
- package/src/core/components/navbar/SettingsControl.vue +4 -2
- package/src/core/components/settings/Settings.vue +6 -20
- package/src/core/components/settings/SidebarState.vue +5 -7
- package/src/core/layouts/Default.vue +96 -65
- package/src/core/layouts/Home.vue +27 -28
- package/src/core/services/contexts.js +51 -11
- package/src/core/services/errorHandler.js +4 -4
- package/src/core/services/pinia.js +7 -0
- package/src/core/services/resources.js +22 -17
- package/src/core/services/router.js +2 -3
- package/src/icons.js +8 -2
- package/src/middleware/before/auth.js +9 -5
- package/src/middleware/before/guest.js +6 -2
- package/src/middleware/before.js +5 -4
- package/src/modules/importers/routeImporter.js +23 -0
- package/src/modules/plugins/bootEnums.js +10 -1
- package/src/modules/plugins/date-fns/format.js +11 -6
- package/src/modules/plugins/date-fns/formatDistance.js +2 -2
- package/src/modules/plugins/i18n.js +7 -5
- package/src/modules/plugins/route.js +3 -3
- package/src/pinia/app.js +75 -0
- package/src/pinia/layout.js +115 -0
- package/src/pinia/loadState.js +78 -0
- package/src/pinia/preferences.js +90 -0
- package/src/pinia/websockets.js +48 -0
- package/src/core/services/store.js +0 -26
- package/src/modules/importers/storeImporter.js +0 -8
- package/src/modules/importers/themeImporter.js +0 -5
- package/src/modules/store/layout/navbar.js +0 -8
- package/src/modules/store/layout/settings.js +0 -7
- package/src/modules/store/layout/sidebar.js +0 -22
- package/src/modules/store/layout.js +0 -72
- package/src/modules/store/preferences.js +0 -80
- package/src/modules/store/websockets.js +0 -39
- package/src/modules/store.js +0 -115
package/LICENSE
CHANGED
package/bulma/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Root from '../src/bulma/Root.vue';
|
|
2
2
|
|
|
3
|
-
export default
|
|
3
|
+
export default Root;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enso-ui/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Laravel Enso UI",
|
|
5
|
-
"main": "index.js",
|
|
5
|
+
"main": "bulma/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
8
|
},
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"template"
|
|
18
18
|
],
|
|
19
19
|
"author": "Adrian Ocneanu <aocneanu@gmail.com>",
|
|
20
|
-
"license": "
|
|
20
|
+
"license": "MIT",
|
|
21
21
|
"bugs": {
|
|
22
22
|
"url": "https://github.com/enso-ui/ui/issues"
|
|
23
23
|
},
|
|
@@ -57,44 +57,47 @@
|
|
|
57
57
|
"@enso-ui/switch": "^2.0",
|
|
58
58
|
"@enso-ui/tables": "^3.0",
|
|
59
59
|
"@enso-ui/tabs": "^2.0",
|
|
60
|
-
"@enso-ui/themes": "^3.0",
|
|
61
60
|
"@enso-ui/toastr": "^3.0",
|
|
62
61
|
"@enso-ui/transitions": "^2.0",
|
|
63
62
|
"@enso-ui/typeahead": "^3.0",
|
|
64
63
|
"@enso-ui/uploader": "^2.0",
|
|
65
64
|
"@enso-ui/user-groups": "^3.0",
|
|
66
65
|
"@enso-ui/users": "^3.0",
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"@fortawesome/
|
|
71
|
-
"@fortawesome/free-
|
|
72
|
-
"@fortawesome/
|
|
66
|
+
"tiny-emitter": "^2.1.0"
|
|
67
|
+
},
|
|
68
|
+
"peerDependencies": {
|
|
69
|
+
"@fortawesome/fontawesome-svg-core": "^7.2.0",
|
|
70
|
+
"@fortawesome/free-brands-svg-icons": "^7.2.0",
|
|
71
|
+
"@fortawesome/free-solid-svg-icons": "^7.2.0",
|
|
72
|
+
"@fortawesome/vue-fontawesome": "3.1.3",
|
|
73
|
+
"@sentry/browser": "^6.16.1",
|
|
73
74
|
"@sentry/tracing": "^6.16.1",
|
|
74
75
|
"@sentry/vue": "^6.16.1",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"pusher-js": "^7.0.0",
|
|
82
|
-
"tiny-emitter": "^2.1.0",
|
|
76
|
+
"axios": "^1.0.0",
|
|
77
|
+
"bulma": "^1.0.0",
|
|
78
|
+
"date-fns": "^2.0.0 || ^4.0.0",
|
|
79
|
+
"laravel-echo": "^1.0.0 || ^2.0.0",
|
|
80
|
+
"pinia": "^3.0.3",
|
|
81
|
+
"pusher-js": "^7.0.0 || ^8.0.0",
|
|
83
82
|
"v-tooltip": "^4.0.0-beta.2",
|
|
84
83
|
"vue": "^3.0",
|
|
85
|
-
"vue-router": "^4.0.0"
|
|
86
|
-
"vuedraggable": "^4.1.0",
|
|
87
|
-
"vuex": "^4.0.0"
|
|
84
|
+
"vue-router": "^4.0.0"
|
|
88
85
|
},
|
|
89
|
-
"
|
|
90
|
-
"@
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
"
|
|
97
|
-
|
|
98
|
-
|
|
86
|
+
"peerDependenciesMeta": {
|
|
87
|
+
"@sentry/browser": {
|
|
88
|
+
"optional": true
|
|
89
|
+
},
|
|
90
|
+
"@sentry/tracing": {
|
|
91
|
+
"optional": true
|
|
92
|
+
},
|
|
93
|
+
"@sentry/vue": {
|
|
94
|
+
"optional": true
|
|
95
|
+
},
|
|
96
|
+
"laravel-echo": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"pusher-js": {
|
|
100
|
+
"optional": true
|
|
101
|
+
}
|
|
99
102
|
}
|
|
100
103
|
}
|
package/renderless/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Root from '../src/core/Root.vue';
|
|
2
2
|
|
|
3
|
-
export default
|
|
3
|
+
export default Root;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</strong>
|
|
11
11
|
{{ i18n('built with') }}
|
|
12
12
|
<span class="icon has-text-danger">
|
|
13
|
-
<fa icon="
|
|
13
|
+
<fa :icon="faHeart"/>
|
|
14
14
|
</span>
|
|
15
15
|
<span class="ml-1">
|
|
16
16
|
+
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
<a href="https://github.com/laravel-enso/enso"
|
|
61
61
|
target="_blank">
|
|
62
62
|
<span class="icon">
|
|
63
|
-
<fa :icon="
|
|
63
|
+
<fa :icon="faGithub"/>
|
|
64
64
|
</span>
|
|
65
65
|
</a>
|
|
66
66
|
</div>
|
|
@@ -70,42 +70,42 @@
|
|
|
70
70
|
|
|
71
71
|
<script>
|
|
72
72
|
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
|
|
73
|
-
import { library } from '@fortawesome/fontawesome-svg-core';
|
|
74
73
|
import { faHeart } from '@fortawesome/free-solid-svg-icons';
|
|
75
74
|
import { faGithub } from '@fortawesome/free-brands-svg-icons';
|
|
76
75
|
import BaseAppFooter from '../../core/components/AppFooter.vue';
|
|
77
76
|
|
|
78
|
-
library.add(faHeart, faGithub);
|
|
79
|
-
|
|
80
77
|
export default {
|
|
81
78
|
name: 'AppFooter',
|
|
82
79
|
|
|
83
80
|
components: { BaseAppFooter, Fa },
|
|
84
81
|
|
|
85
82
|
inject: ['i18n'],
|
|
83
|
+
|
|
84
|
+
data: () => ({
|
|
85
|
+
faGithub,
|
|
86
|
+
faHeart,
|
|
87
|
+
}),
|
|
86
88
|
};
|
|
87
89
|
</script>
|
|
88
90
|
|
|
89
91
|
<style lang="scss">
|
|
90
|
-
@import '@enso-ui/themes/bulma/variables';
|
|
91
|
-
|
|
92
92
|
.footer {
|
|
93
93
|
background: inherit;
|
|
94
94
|
[dir='ltr'] & {
|
|
95
|
-
margin-left:
|
|
95
|
+
margin-left: var(--enso-sidebar-width);
|
|
96
96
|
transition: margin-left .5s, width .5s;
|
|
97
97
|
}
|
|
98
98
|
[dir='rtl'] & {
|
|
99
|
-
margin-right:
|
|
99
|
+
margin-right: var(--enso-sidebar-width);
|
|
100
100
|
transition: margin-right .5s, width .5s;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
&.sidebar-collapsed {
|
|
104
104
|
[dir='ltr'] & {
|
|
105
|
-
margin-left:
|
|
105
|
+
margin-left: var(--enso-sidebar-collapsed-width);
|
|
106
106
|
}
|
|
107
107
|
[dir='rtl'] & {
|
|
108
|
-
margin-right:
|
|
108
|
+
margin-right: var(--enso-sidebar-collapsed-width);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
<ul>
|
|
4
4
|
<core-breadcrumbs>
|
|
5
5
|
<template #default="{ breadcrumbs, hasNavigation }">
|
|
6
|
-
<li v-for="breadcrumb in breadcrumbs"
|
|
6
|
+
<li v-for="(breadcrumb, index) in breadcrumbs"
|
|
7
7
|
:key="breadcrumb.name"
|
|
8
|
-
:class="{'is-active':
|
|
9
|
-
<router-link v-if="breadcrumb
|
|
8
|
+
:class="{ 'is-active': index === breadcrumbs.length - 1 }">
|
|
9
|
+
<router-link v-if="hasNavigation(breadcrumb)"
|
|
10
|
+
class="breadcrumb-link"
|
|
10
11
|
:to="{ name: breadcrumb.route }">
|
|
11
12
|
{{ i18n(breadcrumb.name) }}
|
|
12
13
|
</router-link>
|
|
13
|
-
<
|
|
14
|
+
<span class="breadcrumb-link breadcrumb-current"
|
|
15
|
+
v-else>
|
|
14
16
|
{{ i18n(breadcrumb.name) }}
|
|
15
|
-
</
|
|
17
|
+
</span>
|
|
16
18
|
</li>
|
|
17
19
|
</template>
|
|
18
20
|
</core-breadcrumbs>
|
|
@@ -31,3 +33,28 @@ export default {
|
|
|
31
33
|
inject: ['i18n'],
|
|
32
34
|
};
|
|
33
35
|
</script>
|
|
36
|
+
|
|
37
|
+
<style lang="scss">
|
|
38
|
+
.breadcrumb {
|
|
39
|
+
color: var(--bulma-text-light);
|
|
40
|
+
|
|
41
|
+
&.has-dot-separator li + li::before {
|
|
42
|
+
color: var(--bulma-grey-light);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.breadcrumb-link {
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
color: inherit;
|
|
49
|
+
padding: var(--bulma-breadcrumb-item-padding-vertical) var(--bulma-breadcrumb-item-padding-horizontal);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
li:first-child .breadcrumb-link {
|
|
53
|
+
padding-inline-start: 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
li.is-active {
|
|
57
|
+
color: var(--bulma-text-strong);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
@@ -11,20 +11,16 @@ export default {
|
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<style lang="scss">
|
|
14
|
-
@import '@enso-ui/themes/bulma/variables';
|
|
15
|
-
|
|
16
14
|
.aside {
|
|
17
15
|
position: fixed;
|
|
18
16
|
bottom: 0;
|
|
19
|
-
top:
|
|
20
|
-
padding-top:
|
|
21
|
-
padding-bottom:
|
|
22
|
-
width:
|
|
23
|
-
font-size: 0.95em;
|
|
24
|
-
font-family: $family-secondary;
|
|
17
|
+
top: var(--bulma-navbar-height);
|
|
18
|
+
padding-top: 1.25rem;
|
|
19
|
+
padding-bottom: 1.25rem;
|
|
20
|
+
width: var(--enso-sidebar-width);
|
|
25
21
|
max-height: 100vh;
|
|
26
|
-
z-index:
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
z-index: 4;
|
|
23
|
+
background: var(--enso-shell-surface);
|
|
24
|
+
border-right: 1px solid var(--bulma-border);
|
|
29
25
|
}
|
|
30
26
|
</style>
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
<p class="menu-label is-bold has-text-centered">
|
|
5
5
|
{{ i18n("Menu") }}
|
|
6
6
|
</p>
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
<div class="sidebar-scroll no-scrollbars">
|
|
8
|
+
<core-sidebar>
|
|
9
|
+
<template #default="{ menus }">
|
|
10
|
+
<menus v-bind="$attrs"
|
|
11
|
+
:menus="menus"/>
|
|
12
|
+
</template>
|
|
13
|
+
</core-sidebar>
|
|
14
|
+
</div>
|
|
13
15
|
</vue-aside>
|
|
14
16
|
</template>
|
|
15
17
|
|
|
@@ -30,14 +32,28 @@ export default {
|
|
|
30
32
|
</script>
|
|
31
33
|
|
|
32
34
|
<style lang="scss">
|
|
33
|
-
@import '@enso-ui/themes/bulma/variables';
|
|
34
|
-
|
|
35
35
|
.aside.sidebar {
|
|
36
|
-
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
overflow: visible;
|
|
37
39
|
transition: width .5s;
|
|
38
40
|
|
|
41
|
+
.menu-label {
|
|
42
|
+
margin-bottom: 0.8rem;
|
|
43
|
+
flex: 0 0 auto;
|
|
44
|
+
font-size: 0.8rem;
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sidebar-scroll {
|
|
49
|
+
flex: 1 1 auto;
|
|
50
|
+
min-height: 0;
|
|
51
|
+
overflow-y: auto;
|
|
52
|
+
overflow-x: visible;
|
|
53
|
+
}
|
|
54
|
+
|
|
39
55
|
&.is-collapsed {
|
|
40
|
-
width:
|
|
56
|
+
width: var(--enso-sidebar-collapsed-width);
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
59
|
</style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<navbar-item manual
|
|
3
|
-
icon="
|
|
3
|
+
:icon="faTriangleExclamation"
|
|
4
4
|
v-if="appUpdate"
|
|
5
5
|
ref="navbarItem">
|
|
6
6
|
<template #default>
|
|
@@ -16,15 +16,11 @@
|
|
|
16
16
|
</template>
|
|
17
17
|
|
|
18
18
|
<script>
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
} from '
|
|
22
|
-
import { library } from '@fortawesome/fontawesome-svg-core';
|
|
23
|
-
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
|
|
19
|
+
import { app } from '../../../pinia/app';
|
|
20
|
+
import { websockets } from '../../../pinia/websockets';
|
|
21
|
+
import { faTriangleExclamation } from '@fortawesome/free-solid-svg-icons';
|
|
24
22
|
import NavbarItem from './NavbarItem.vue';
|
|
25
23
|
|
|
26
|
-
library.add(faExclamationTriangle);
|
|
27
|
-
|
|
28
24
|
export default {
|
|
29
25
|
name: 'AppUpdate',
|
|
30
26
|
|
|
@@ -33,22 +29,50 @@ export default {
|
|
|
33
29
|
inject: ['i18n'],
|
|
34
30
|
|
|
35
31
|
data: () => ({
|
|
32
|
+
faTriangleExclamation,
|
|
33
|
+
listenTimer: null,
|
|
34
|
+
listening: false,
|
|
36
35
|
message: 'The application was updated, please refresh your page to load the latest application version',
|
|
37
36
|
}),
|
|
38
37
|
|
|
39
38
|
computed: {
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
appUpdate() {
|
|
40
|
+
return app().appUpdate;
|
|
41
|
+
},
|
|
42
|
+
channels() {
|
|
43
|
+
return websockets().channels;
|
|
44
|
+
},
|
|
42
45
|
},
|
|
43
46
|
|
|
44
47
|
created() {
|
|
45
|
-
this.
|
|
46
|
-
|
|
48
|
+
this.ensureListener();
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
beforeUnmount() {
|
|
52
|
+
clearTimeout(this.listenTimer);
|
|
47
53
|
},
|
|
48
54
|
|
|
49
55
|
methods: {
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
connect() {
|
|
57
|
+
return websockets().connect(app().meta.csrfToken);
|
|
58
|
+
},
|
|
59
|
+
newRelease() {
|
|
60
|
+
return app().newRelease();
|
|
61
|
+
},
|
|
62
|
+
ensureListener() {
|
|
63
|
+
if (this.listening) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!window.Echo || !this.channels?.appUpdates) {
|
|
68
|
+
this.listenTimer = setTimeout(() => this.ensureListener(), 250);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
this.listening = true;
|
|
73
|
+
this.connect()
|
|
74
|
+
.then(() => this.listen());
|
|
75
|
+
},
|
|
52
76
|
listen() {
|
|
53
77
|
window.Echo.private(this.channels.appUpdates)
|
|
54
78
|
.listen('.app-update', this.handle);
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
<nav class="navbar app-navbar is-fixed-top">
|
|
3
3
|
<core-navbar>
|
|
4
4
|
<template #default="{
|
|
5
|
-
isMobile,
|
|
5
|
+
isMobile, sidebar, meta, impersonating,
|
|
6
6
|
stopImpersonating, toggleSidebar, items,
|
|
7
7
|
}">
|
|
8
8
|
<div class="navbar-brand">
|
|
9
9
|
<a class="navbar-item"
|
|
10
|
-
@click="toggleSidebar(
|
|
10
|
+
@click="toggleSidebar()">
|
|
11
11
|
<span class="icon">
|
|
12
|
-
<fa icon="
|
|
12
|
+
<fa :icon="faBars"
|
|
13
13
|
:class="{ 'rotate': !sidebar.isExpanded || !sidebar.isVisible }"/>
|
|
14
14
|
</span>
|
|
15
15
|
</a>
|
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
<figure class="image is-32x32 is-flex">
|
|
19
19
|
<img src="/images/logo.svg">
|
|
20
20
|
</figure>
|
|
21
|
-
<
|
|
21
|
+
<span class="navbar-brand-title ml-1"
|
|
22
22
|
v-if="!isMobile">
|
|
23
23
|
{{ meta.appName }}
|
|
24
|
-
</
|
|
24
|
+
</span>
|
|
25
25
|
</a>
|
|
26
26
|
<div class="navbar-item"
|
|
27
27
|
v-if="meta.env !== 'production'">
|
|
28
28
|
<span class="tag is-warning is-clickable"
|
|
29
29
|
v-tooltip="meta.env">
|
|
30
30
|
<span class="icon is-small">
|
|
31
|
-
<fa icon="
|
|
31
|
+
<fa :icon="faCode"/>
|
|
32
32
|
</span>
|
|
33
33
|
</span>
|
|
34
34
|
</div>
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
class="button is-small is-warning"
|
|
39
39
|
@click="stopImpersonating">
|
|
40
40
|
<span class="icon is-small">
|
|
41
|
-
<fa icon="
|
|
41
|
+
<fa :icon="faUser"/>
|
|
42
42
|
</span>
|
|
43
43
|
<span class="icon is-small">
|
|
44
|
-
<fa icon="
|
|
44
|
+
<fa :icon="faXmark"/>
|
|
45
45
|
</span>
|
|
46
46
|
</a>
|
|
47
47
|
</div>
|
|
@@ -63,17 +63,14 @@
|
|
|
63
63
|
|
|
64
64
|
<script>
|
|
65
65
|
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
|
|
66
|
-
import { library } from '@fortawesome/fontawesome-svg-core';
|
|
67
66
|
import {
|
|
68
|
-
faBars, faCode, faUser,
|
|
67
|
+
faBars, faCode, faUser, faXmark,
|
|
69
68
|
} from '@fortawesome/free-solid-svg-icons';
|
|
70
69
|
import CoreNavbar from '../../../core/components/navbar/Navbar.vue';
|
|
71
70
|
import AppUpdate from './AppUpdate.vue';
|
|
72
71
|
import SettingsControl from './SettingsControl.vue';
|
|
73
72
|
import Search from './Search.vue';
|
|
74
73
|
|
|
75
|
-
library.add(faBars, faCode, faUser, faTimes);
|
|
76
|
-
|
|
77
74
|
export default {
|
|
78
75
|
name: 'Navbar',
|
|
79
76
|
|
|
@@ -86,14 +83,19 @@ export default {
|
|
|
86
83
|
},
|
|
87
84
|
|
|
88
85
|
inject: ['i18n'],
|
|
86
|
+
|
|
87
|
+
data: () => ({
|
|
88
|
+
faBars,
|
|
89
|
+
faCode,
|
|
90
|
+
faXmark,
|
|
91
|
+
faUser,
|
|
92
|
+
}),
|
|
89
93
|
};
|
|
90
94
|
</script>
|
|
91
95
|
|
|
92
96
|
<style lang="scss">
|
|
93
|
-
@import '@enso-ui/themes/bulma/variables';
|
|
94
|
-
|
|
95
97
|
.navbar {
|
|
96
|
-
height:
|
|
98
|
+
height: var(--bulma-navbar-height);
|
|
97
99
|
z-index: 3;
|
|
98
100
|
-webkit-box-shadow: 0 1px 1px hsla(0, 0%, 4%, .35);
|
|
99
101
|
box-shadow: 0 1px 1px hsla(0, 0%, 4%, .35);
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
</template>
|
|
27
27
|
|
|
28
28
|
<script>
|
|
29
|
-
import { mapState } from 'vuex';
|
|
30
29
|
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
|
|
31
30
|
import { clickOutside } from '@enso-ui/directives';
|
|
32
31
|
import Loader from '@enso-ui/loader/bulma';
|
|
32
|
+
import { layout } from '../../../pinia/layout';
|
|
33
33
|
|
|
34
34
|
export default {
|
|
35
35
|
name: 'NavbarItem',
|
|
@@ -61,8 +61,6 @@ export default {
|
|
|
61
61
|
dropdown: false,
|
|
62
62
|
}),
|
|
63
63
|
|
|
64
|
-
computed: mapState('layout', ['isTouch']),
|
|
65
|
-
|
|
66
64
|
methods: {
|
|
67
65
|
attemptHide() {
|
|
68
66
|
if (!this.manual) {
|
|
@@ -78,7 +76,7 @@ export default {
|
|
|
78
76
|
this.dropdown = true;
|
|
79
77
|
},
|
|
80
78
|
toggle() {
|
|
81
|
-
if (
|
|
79
|
+
if (layout().isTouch) {
|
|
82
80
|
this.$emit('touch');
|
|
83
81
|
} else if (!this.manual) {
|
|
84
82
|
if (this.dropdown) {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
v-else>
|
|
50
50
|
<fade>
|
|
51
51
|
<span class="icon is-small">
|
|
52
|
-
<fa icon="
|
|
52
|
+
<fa :icon="faMagnifyingGlass"/>
|
|
53
53
|
</span>
|
|
54
54
|
</fade>
|
|
55
55
|
</a>
|
|
@@ -60,14 +60,11 @@
|
|
|
60
60
|
<script>
|
|
61
61
|
import { Fade } from '@enso-ui/transitions';
|
|
62
62
|
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
|
|
63
|
-
import {
|
|
64
|
-
import { faEye, faPencilAlt, faListUl } from '@fortawesome/free-solid-svg-icons';
|
|
63
|
+
import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons';
|
|
65
64
|
import { EnsoTypeahead } from '@enso-ui/typeahead/bulma';
|
|
66
65
|
import { clickOutside } from '@enso-ui/directives';
|
|
67
66
|
import CoreSearch from '../../../core/components/navbar/Search.vue';
|
|
68
67
|
|
|
69
|
-
library.add(faEye, faPencilAlt, faListUl);
|
|
70
|
-
|
|
71
68
|
export default {
|
|
72
69
|
name: 'Search',
|
|
73
70
|
|
|
@@ -79,6 +76,10 @@ export default {
|
|
|
79
76
|
|
|
80
77
|
inject: ['i18n'],
|
|
81
78
|
|
|
79
|
+
data: () => ({
|
|
80
|
+
faMagnifyingGlass,
|
|
81
|
+
}),
|
|
82
|
+
|
|
82
83
|
methods: {
|
|
83
84
|
clear() {
|
|
84
85
|
this.$refs.typeahead.clear();
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<a class="navbar-item settings"
|
|
5
5
|
@click="toggle">
|
|
6
6
|
<span class="icon">
|
|
7
|
-
<fa icon="
|
|
7
|
+
<fa :icon="faGears"/>
|
|
8
8
|
</span>
|
|
9
9
|
</a>
|
|
10
10
|
</template>
|
|
@@ -13,15 +13,16 @@
|
|
|
13
13
|
|
|
14
14
|
<script>
|
|
15
15
|
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
|
|
16
|
-
import {
|
|
17
|
-
import { faCogs } from '@fortawesome/free-solid-svg-icons';
|
|
16
|
+
import { faGears } from '@fortawesome/free-solid-svg-icons';
|
|
18
17
|
import CoreSettingsControl from '../../../core/components/navbar/SettingsControl.vue';
|
|
19
18
|
|
|
20
|
-
library.add(faCogs);
|
|
21
|
-
|
|
22
19
|
export default {
|
|
23
20
|
name: 'SettingsControl',
|
|
24
21
|
|
|
25
22
|
components: { CoreSettingsControl, Fa },
|
|
23
|
+
|
|
24
|
+
data: () => ({
|
|
25
|
+
faGears,
|
|
26
|
+
}),
|
|
26
27
|
};
|
|
27
28
|
</script>
|
|
@@ -40,9 +40,23 @@ export default {
|
|
|
40
40
|
</script>
|
|
41
41
|
|
|
42
42
|
<style lang="scss">
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
.aside.settings {
|
|
44
|
+
position: fixed;
|
|
45
|
+
top: var(--bulma-navbar-height);
|
|
46
|
+
bottom: 0;
|
|
47
|
+
height: calc(100dvh - var(--bulma-navbar-height));
|
|
48
|
+
max-height: calc(100dvh - var(--bulma-navbar-height));
|
|
49
|
+
z-index: 40;
|
|
45
50
|
overflow-y: auto;
|
|
51
|
+
border-top: 1px solid var(--bulma-border);
|
|
52
|
+
|
|
53
|
+
.menu-label {
|
|
54
|
+
margin-bottom: 0.4rem;
|
|
55
|
+
flex: 0 0 auto;
|
|
56
|
+
font-size: 0.8rem;
|
|
57
|
+
font-weight: 600;
|
|
58
|
+
}
|
|
59
|
+
|
|
46
60
|
[dir='ltr'] & {
|
|
47
61
|
right: 0;
|
|
48
62
|
}
|
|
@@ -52,7 +66,7 @@ export default {
|
|
|
52
66
|
|
|
53
67
|
.settings-item {
|
|
54
68
|
&:not(:empty) {
|
|
55
|
-
padding: 6px;
|
|
69
|
+
padding: 6px 12px;
|
|
56
70
|
}
|
|
57
71
|
|
|
58
72
|
.level-item {
|