lesli 5.0.12 → 5.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/lesli/brand/app-logo.png +0 -0
- data/app/assets/javascripts/lesli/templates/application.js +14 -0
- data/app/assets/javascripts/lesli/templates/public.js +14 -0
- data/app/assets/stylesheets/lesli/templates/application.css +851 -21432
- data/app/assets/stylesheets/lesli/templates/public.css +1 -19098
- data/app/controllers/lesli/application_controller.rb +1 -0
- data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
- data/app/helpers/lesli/assets_helper.rb +24 -6
- data/app/helpers/lesli/navigation_helper.rb +15 -11
- data/app/lib/date2.rb +8 -0
- data/app/lib/lesli/system.rb +13 -1
- data/app/models/concerns/user_extensions.rb +6 -0
- data/app/models/lesli/user.rb +2 -2
- data/app/operators/lesli/controller_operator.rb +4 -1
- data/app/services/lesli/user_service.rb +1 -1
- data/app/views/lesli/layouts/application-lesli.html.erb +2 -0
- data/app/views/lesli/partials/_application-data.html.erb +3 -3
- data/app/views/lesli/partials/_application-lesli-header.html.erb +47 -22
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +2 -2
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +8 -1
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
- data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
- data/config/initializers/lesli.rb +7 -1
- data/config/locales/translations.en.yml +5 -3
- data/config/locales/translations.es.yml +5 -3
- data/config/locales/translations.fr.yml +5 -3
- data/config/locales/translations.it.yml +5 -3
- data/config/locales/translations.pt.yml +5 -3
- data/lib/generators/application_lesli_generator.rb +164 -0
- data/lib/generators/lesli/spec/USAGE +8 -0
- data/lib/generators/lesli/spec/spec_generator.rb +25 -0
- data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
- data/lib/lesli/configuration.rb +1 -1
- data/lib/lesli/engine.rb +2 -3
- data/lib/lesli/r_spec.rb +40 -0
- data/lib/lesli/routing.rb +57 -0
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +2 -0
- data/lib/scss/layouts/application-component.scss +1 -1
- data/lib/scss/layouts/application-content.scss +35 -0
- data/lib/scss/layouts/application-header.scss +37 -109
- data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +21 -4
- data/lib/scss/layouts/application-search.scss +1 -1
- data/lib/scss/settings/variables.scss +1 -1
- data/lib/scss/templates/application.scss +8 -37
- data/lib/scss/templates/public.scss +6 -4
- data/lib/tasks/lesli_tasks.rake +3 -3
- data/lib/vue/application.js +6 -4
- data/lib/vue/layouts/application-component.vue +2 -2
- data/lib/vue/layouts/application-header.vue +108 -87
- data/lib/vue/panels/panel-support-tickets.vue +4 -2
- data/lib/vue/shared/dashboards/apps/edit.vue +1 -1
- data/lib/vue/shared/dashboards/components/form.vue +2 -2
- data/lib/vue/stores/translations.json +10 -0
- data/lib/webpack/base.js +11 -6
- data/lib/webpack/core.js +8 -6
- data/lib/webpack/engines.js +3 -1
- data/lib/webpack/root.js +105 -0
- data/lib/webpack/version.js +37 -0
- metadata +17 -24
- data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
- data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
- data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
- data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
- data/lib/scss/bulma/loader.scss +0 -92
@@ -32,7 +32,7 @@ Building a better future, one line of code at a time.
|
|
32
32
|
|
33
33
|
nav.lesli-application-navigation {
|
34
34
|
background-color: var(--lesli-navbar-color);
|
35
|
-
border-bottom: 1px solid rgba(172,179,194,.
|
35
|
+
border-bottom: 1px solid rgba(172,179,194,.5);
|
36
36
|
width: 100%;
|
37
37
|
|
38
38
|
ul {
|
@@ -40,18 +40,24 @@ nav.lesli-application-navigation {
|
|
40
40
|
justify-content: center;
|
41
41
|
|
42
42
|
li a {
|
43
|
+
gap: 6px;
|
43
44
|
display: flex;
|
44
45
|
padding: 1rem 1.1rem;
|
45
46
|
align-items: center;
|
47
|
+
border-bottom: 2px solid transparent;
|
46
48
|
color: lesli-css-color(black, 700);
|
47
49
|
|
50
|
+
// highlight active link
|
51
|
+
&.navigation-link-active {
|
52
|
+
border-bottom-color: lesli-css-color(lesli, primary);
|
53
|
+
}
|
54
|
+
|
48
55
|
// link label
|
49
56
|
span.text {
|
50
|
-
margin-left: 6px;
|
51
|
-
font-size: 1rem;
|
52
|
-
display: inline-block;
|
53
57
|
flex-grow: 1;
|
58
|
+
font-size: 1rem;
|
54
59
|
text-align: left;
|
60
|
+
display: inline-block;
|
55
61
|
}
|
56
62
|
|
57
63
|
[class^="ri-"] {
|
@@ -60,3 +66,14 @@ nav.lesli-application-navigation {
|
|
60
66
|
}
|
61
67
|
}
|
62
68
|
}
|
69
|
+
|
70
|
+
|
71
|
+
@include lesli-css-breakpoint-small {
|
72
|
+
|
73
|
+
nav.lesli-application-navigation {
|
74
|
+
ul {
|
75
|
+
display: block;
|
76
|
+
justify-content: center;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
@@ -44,7 +44,7 @@ Building a better future, one line of code at a time.
|
|
44
44
|
padding: 0 28px;
|
45
45
|
max-width: calc(100% - var(--lesli-sidebar-width));
|
46
46
|
margin-left: var(--lesli-sidebar-width);
|
47
|
-
background-color:
|
47
|
+
background-color: white;
|
48
48
|
|
49
49
|
.content {
|
50
50
|
padding: 0;
|
@@ -33,36 +33,31 @@ Building a better future, one line of code at a time.
|
|
33
33
|
|
34
34
|
// ·
|
35
35
|
@import "lesli-css";
|
36
|
+
@import "lesli-css/bulma";
|
36
37
|
@import "lesli-vue/elements.css";
|
37
38
|
@import "lesli-vue/components.css";
|
38
39
|
|
40
|
+
|
39
41
|
// · Configuration & variables
|
40
42
|
@import "Lesli/scss/settings/variables";
|
41
43
|
|
42
44
|
|
43
|
-
// · Include Bulma
|
44
|
-
@import "lesli-css/bulma";
|
45
|
-
|
46
|
-
|
47
45
|
// · Font families and icons
|
48
46
|
@import "Lesli/scss/fonts/mdicons";
|
49
47
|
@import "Lesli/scss/fonts/families";
|
50
48
|
@import "Lesli/scss/fonts/remixicons";
|
51
49
|
|
52
50
|
|
53
|
-
// · Some home made helpers
|
54
|
-
@import "Lesli/scss/helpers/display";
|
55
|
-
@import "Lesli/scss/helpers/tooltip";
|
56
|
-
|
57
|
-
|
58
51
|
// · Lesli application layout
|
59
52
|
@import "Lesli/scss/layouts/application-announcements";
|
53
|
+
@import "Lesli/scss/layouts/application-navigation";
|
60
54
|
@import "Lesli/scss/layouts/application-component";
|
61
55
|
@import "Lesli/scss/layouts/application-container";
|
56
|
+
@import "Lesli/scss/layouts/application-content";
|
62
57
|
@import "Lesli/scss/layouts/application-engines";
|
63
58
|
@import "Lesli/scss/layouts/application-sidebar";
|
64
59
|
@import "Lesli/scss/layouts/application-header";
|
65
|
-
|
60
|
+
|
66
61
|
@import "Lesli/scss/layouts/application-footer";
|
67
62
|
@import "Lesli/scss/layouts/application-search";
|
68
63
|
|
@@ -93,26 +88,9 @@ Building a better future, one line of code at a time.
|
|
93
88
|
@import "Lesli/scss/overrides/notification";
|
94
89
|
|
95
90
|
|
96
|
-
// ·
|
97
|
-
|
98
|
-
|
99
|
-
// @import "lesli/elements/empty";
|
100
|
-
// @import "lesli/elements/file-uploader";
|
101
|
-
// @import "lesli/elements/gallery";
|
102
|
-
//@import "Lesli/scss/elements/header";
|
103
|
-
// @import "lesli/elements/input-tag";
|
104
|
-
// @import "lesli/elements/loading";
|
105
|
-
// @import "lesli/elements/map";
|
106
|
-
// @import "lesli/elements/msg";
|
107
|
-
// @import "lesli/elements/navbar";
|
108
|
-
// @import "lesli/elements/panel";
|
109
|
-
//@import "Lesli/scss/elements/form";
|
110
|
-
//@import "Lesli/scss/elements/tab";
|
111
|
-
// @import "lesli/elements/table";
|
112
|
-
// @import "lesli/elements/toggle";
|
113
|
-
// @import "lesli/elements/toolbar";
|
114
|
-
// @import "lesli/elements/calendar";
|
115
|
-
// @import "lesli/elements/card";
|
91
|
+
// · Some home made helpers
|
92
|
+
@import "Lesli/scss/helpers/display";
|
93
|
+
@import "Lesli/scss/helpers/tooltip";
|
116
94
|
|
117
95
|
|
118
96
|
html,
|
@@ -128,13 +106,6 @@ body {
|
|
128
106
|
}
|
129
107
|
|
130
108
|
|
131
|
-
// ·
|
132
|
-
#lesli-application {
|
133
|
-
display: flex;
|
134
|
-
flex-wrap: wrap;
|
135
|
-
}
|
136
|
-
|
137
|
-
|
138
109
|
// · titles
|
139
110
|
h1, h2, h3, h4, h5, h6 {
|
140
111
|
font-family: "Domine", $family-primary;
|
@@ -36,16 +36,18 @@ Building a better future, one line of code at a time.
|
|
36
36
|
|
37
37
|
|
38
38
|
// · Configuration & variables
|
39
|
-
@import "
|
39
|
+
@import "Lesli/scss/settings/variables";
|
40
40
|
|
41
41
|
|
42
42
|
// · Include Bulma
|
43
|
-
@import "
|
43
|
+
@import "lesli-css/bulma";
|
44
44
|
|
45
45
|
|
46
46
|
// · Font families and icons
|
47
|
-
@import "
|
48
|
-
@import "
|
47
|
+
@import "Lesli/scss/fonts/mdicons";
|
48
|
+
@import "Lesli/scss/fonts/families";
|
49
|
+
@import "Lesli/scss/fonts/remixicons";
|
50
|
+
|
49
51
|
|
50
52
|
|
51
53
|
// ·
|
data/lib/tasks/lesli_tasks.rake
CHANGED
@@ -41,9 +41,9 @@ namespace :lesli do
|
|
41
41
|
Rake::Task['lesli_babel:scan'].invoke
|
42
42
|
end
|
43
43
|
|
44
|
-
desc "
|
45
|
-
task :
|
46
|
-
Rake::Task['lesli_babel:
|
44
|
+
desc "Import local translations into LesliBabel"
|
45
|
+
task :import => :environment do |task, args|
|
46
|
+
Rake::Task['lesli_babel:import'].invoke
|
47
47
|
end
|
48
48
|
|
49
49
|
desc "Export translations to json files"
|
data/lib/vue/application.js
CHANGED
@@ -18,7 +18,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
|
|
18
18
|
|
19
19
|
Lesli · Ruby on Rails SaaS Development Framework.
|
20
20
|
|
21
|
-
Made with ♥ by
|
21
|
+
Made with ♥ by LesliTech
|
22
22
|
Building a better future, one line of code at a time.
|
23
23
|
|
24
24
|
@contact hello@lesli.tech
|
@@ -77,6 +77,7 @@ import {
|
|
77
77
|
LesliColumn,
|
78
78
|
LesliColumns,
|
79
79
|
LesliControl,
|
80
|
+
LesliInput,
|
80
81
|
// lesliElementDropdown,
|
81
82
|
LesliEmpty,
|
82
83
|
LesliForm,
|
@@ -87,7 +88,7 @@ import {
|
|
87
88
|
LesliLink,
|
88
89
|
LesliLoading,
|
89
90
|
// lesliElementMap,
|
90
|
-
|
91
|
+
LesliNavbar,
|
91
92
|
// lesliElementFileUploader,
|
92
93
|
// lesliElementNavigationList,
|
93
94
|
LesliPagination,
|
@@ -152,7 +153,7 @@ export default (engine, routes=[]) => {
|
|
152
153
|
|
153
154
|
// · Loading pinia handmade plugins
|
154
155
|
pinia.use(() => ({ msg: useLesliMsg() }))
|
155
|
-
pinia.use(() => ({ url: useLesliUrl() }))
|
156
|
+
pinia.use(() => ({ url: useLesliUrl(Lesli) }))
|
156
157
|
pinia.use(() => ({ http: useLesliHttp() }))
|
157
158
|
pinia.use(() => ({ date: useLesliDate() }))
|
158
159
|
pinia.use(() => ({ utils: useLesliUtils() }))
|
@@ -237,6 +238,7 @@ export default (engine, routes=[]) => {
|
|
237
238
|
application.component("lesli-columns", LesliColumns)
|
238
239
|
application.component("lesli-card", LesliCard)
|
239
240
|
application.component("lesli-control", LesliControl)
|
241
|
+
application.component("lesli-input", LesliInput)
|
240
242
|
application.component("lesli-tabs", LesliTabs)
|
241
243
|
application.component("lesli-tab-item", LesliTabItem)
|
242
244
|
application.component("lesli-panel", LesliPanel)
|
@@ -246,7 +248,7 @@ export default (engine, routes=[]) => {
|
|
246
248
|
// application.component("lesli-input-tag", lesliElementInputTag)
|
247
249
|
// application.component("lesli-file-uploader", lesliElementFileUploader)
|
248
250
|
// application.component("lesli-navigation-list", lesliElementNavigationList)
|
249
|
-
|
251
|
+
application.component("lesli-navbar", LesliNavbar)
|
250
252
|
application.component("lesli-toggle", LesliToggle)
|
251
253
|
// application.component("lesli-dropdown", lesliElementDropdown)
|
252
254
|
// application.component("lesli-map", lesliElementMap)
|
@@ -53,9 +53,14 @@ const url = inject("url")
|
|
53
53
|
|
54
54
|
// · defining props
|
55
55
|
const props = defineProps({
|
56
|
+
showProfile: {
|
57
|
+
type: Boolean,
|
58
|
+
default: false,
|
59
|
+
required: false
|
60
|
+
},
|
56
61
|
showEngines: {
|
57
62
|
type: Boolean,
|
58
|
-
default:
|
63
|
+
default: false,
|
59
64
|
required: false
|
60
65
|
},
|
61
66
|
showBell: {
|
@@ -68,7 +73,7 @@ const props = defineProps({
|
|
68
73
|
default: false,
|
69
74
|
required: false
|
70
75
|
},
|
71
|
-
|
76
|
+
showSupport: {
|
72
77
|
type: Boolean,
|
73
78
|
default: false,
|
74
79
|
required: false
|
@@ -89,7 +94,8 @@ const props = defineProps({
|
|
89
94
|
// · translations
|
90
95
|
const translations = {
|
91
96
|
lesli: {
|
92
|
-
|
97
|
+
shared: {},
|
98
|
+
application: {},
|
93
99
|
}
|
94
100
|
}
|
95
101
|
|
@@ -122,12 +128,105 @@ function safeEngineUrl() {
|
|
122
128
|
</script>
|
123
129
|
<template>
|
124
130
|
<header ref="lesliApplicationHeader" class="lesli-application-header">
|
125
|
-
<
|
126
|
-
<
|
127
|
-
<
|
131
|
+
<lesli-navbar>
|
132
|
+
<template v-slot:brand>
|
133
|
+
<a :href="safeEngineUrl()">
|
128
134
|
<slot name="brand"></slot>
|
129
|
-
</
|
130
|
-
</
|
135
|
+
</a>
|
136
|
+
</template>
|
137
|
+
<template v-slot:end>
|
138
|
+
|
139
|
+
<slot name="end"></slot>
|
140
|
+
|
141
|
+
<!-- tickets -->
|
142
|
+
<div class="navbar-item" v-if="props.showSupport">
|
143
|
+
<a class="header-indicator"
|
144
|
+
@click="() => { storeLayout.showSupport = true }">
|
145
|
+
<span class="count" v-if="storeLayout.header.support > 0"></span>
|
146
|
+
<span class="ri-ticket-2-line"></span>
|
147
|
+
</a>
|
148
|
+
</div>
|
149
|
+
|
150
|
+
<!-- tasks -->
|
151
|
+
<div class="navbar-item" v-if="props.showFocus">
|
152
|
+
<a class="header-indicator"
|
153
|
+
@click="() => { storeLayout.showSuppor = true }">
|
154
|
+
<span class="ri-list-check-3">
|
155
|
+
</span>
|
156
|
+
<span class="count" v-if="storeLayout.header.support > 0">
|
157
|
+
</span>
|
158
|
+
</a>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<!-- notifications -->
|
162
|
+
<div class="navbar-item" v-if="props.showBell">
|
163
|
+
<a class="header-indicator">
|
164
|
+
<span :class="['ri-notification-3-line', { 'is-active' : storeLayout.header.notifications > 0 }]">
|
165
|
+
</span>
|
166
|
+
<span class="count">
|
167
|
+
</span>
|
168
|
+
</a>
|
169
|
+
</div>
|
170
|
+
|
171
|
+
<!-- engines selector -->
|
172
|
+
<div class="navbar-item" v-if="props.showEngines">
|
173
|
+
<a @click="toggleEngines()">
|
174
|
+
<span class="ri-apps-2-line"></span>
|
175
|
+
</a>
|
176
|
+
</div>
|
177
|
+
|
178
|
+
<!-- profile options -->
|
179
|
+
<div class="navbar-item" v-if="props.showProfile">
|
180
|
+
<div class="dropdown is-hoverable">
|
181
|
+
<div class="dropdown-trigger">
|
182
|
+
<a @click="storeLayout.showProfile = true">
|
183
|
+
<span class="ri-user-smile-line">
|
184
|
+
</span>
|
185
|
+
</a>
|
186
|
+
</div>
|
187
|
+
<div class="dropdown-menu" id="dropdown-menu" role="menu">
|
188
|
+
<div class="dropdown-content">
|
189
|
+
<a :href="url.admin('profile')" class="dropdown-item py-3">
|
190
|
+
<span class="icon-text">
|
191
|
+
<span class="icon has-text-grey-dark">
|
192
|
+
<span class="ri-questionnaire-line"></span>
|
193
|
+
</span>
|
194
|
+
<span>Help</span>
|
195
|
+
</span>
|
196
|
+
</a>
|
197
|
+
<a :href="url.admin('profile')" class="dropdown-item py-3">
|
198
|
+
<span class="icon-text">
|
199
|
+
<span class="icon has-text-grey-dark">
|
200
|
+
<span class="ri-equalizer-line"></span>
|
201
|
+
</span>
|
202
|
+
<span>Settings</span>
|
203
|
+
</span>
|
204
|
+
</a>
|
205
|
+
<a :href="url.admin('profile')" class="dropdown-item py-3">
|
206
|
+
<span class="icon-text">
|
207
|
+
<span class="icon has-text-grey-dark">
|
208
|
+
<span class="ri-user-line"></span>
|
209
|
+
</span>
|
210
|
+
<span>Profile</span>
|
211
|
+
</span>
|
212
|
+
</a>
|
213
|
+
<hr class="dropdown-divider" />
|
214
|
+
<a href="/logout" class="dropdown-item py-3">
|
215
|
+
<span class="icon-text">
|
216
|
+
<span class="icon has-text-grey-dark">
|
217
|
+
<span class="ri-logout-box-r-line"></span>
|
218
|
+
</span>
|
219
|
+
<span>Logout</span>
|
220
|
+
</span>
|
221
|
+
</a>
|
222
|
+
</div>
|
223
|
+
</div>
|
224
|
+
</div>
|
225
|
+
</div>
|
226
|
+
</template>
|
227
|
+
</lesli-navbar>
|
228
|
+
<!--
|
229
|
+
<div class="lesli-application-header-container container">
|
131
230
|
<div class="lesli-application-header-left">
|
132
231
|
<div class="control is-medium has-icons-left has-text-grey">
|
133
232
|
<span class="icon is-left has-text-grey-dark">
|
@@ -147,85 +246,7 @@ function safeEngineUrl() {
|
|
147
246
|
/>
|
148
247
|
</div>
|
149
248
|
</div>
|
150
|
-
<div class="lesli-application-header-right">
|
151
|
-
|
152
|
-
<!-- -->
|
153
|
-
<slot></slot>
|
154
|
-
|
155
|
-
|
156
|
-
<!-- engines selector -->
|
157
|
-
<a v-if="props.showEngines"
|
158
|
-
class="header-indicator"
|
159
|
-
@click="toggleEngines()">
|
160
|
-
<span class="ri-apps-2-line"></span>
|
161
|
-
</a>
|
162
|
-
|
163
|
-
<!-- Tickets -->
|
164
|
-
<a
|
165
|
-
v-if="props.showSupportTickets"
|
166
|
-
class="header-indicator"
|
167
|
-
@click="() => { storeLayout.showSupportTickets = true }">
|
168
|
-
<span :class="['ri-ticket-2-line', { 'is-active' : storeLayout.header.tickets > 0 }]">
|
169
|
-
</span>
|
170
|
-
<span class="count" v-if="storeLayout.header.tickets > 0">
|
171
|
-
{{ storeLayout.header.tickets }}
|
172
|
-
</span>
|
173
|
-
</a>
|
174
|
-
|
175
|
-
<!-- Tasks -->
|
176
|
-
<a v-if="props.showFocus"
|
177
|
-
class="header-indicator"
|
178
|
-
@click="() => { if (storeLayout.header.tasks > 0 ) { storeLayout.showTasks = true }}">
|
179
|
-
<span :class="['ri-list-check-3', { 'is-active' : storeLayout.header.tasks > 0 }]">
|
180
|
-
</span>
|
181
|
-
<span class="count" v-if="storeLayout.header.tasks > 0">
|
182
|
-
{{ storeLayout.header.tasks }}
|
183
|
-
</span>
|
184
|
-
</a>
|
185
|
-
|
186
|
-
<!-- Notifications -->
|
187
|
-
<a
|
188
|
-
v-if="props.showBell"
|
189
|
-
class="header-indicator"
|
190
|
-
@click="() => { if (!storeLayout.header.notifications ) { storeLayout.showNotifications = true; }}">
|
191
|
-
<span :class="['ri-notification-3-line', { 'is-active' : storeLayout.header.notifications > 0 }]">
|
192
|
-
</span>
|
193
|
-
<span class="count" v-if="storeLayout.header.notifications > 0">
|
194
|
-
{{ storeLayout.header.notifications }}
|
195
|
-
</span>
|
196
|
-
</a>
|
197
|
-
|
198
|
-
<!-- Profile options -->
|
199
|
-
<div class="dropdown is-right is-hoverable header-user-options">
|
200
|
-
<div class="dropdown-trigger">
|
201
|
-
<span class="icon has-text-link">
|
202
|
-
<span class="ri-user-smile-line" @click="storeLayout.showProfile = true">
|
203
|
-
</span>
|
204
|
-
</span>
|
205
|
-
</div>
|
206
|
-
<div class="dropdown-menu" id="dropdown-menu" role="menu">
|
207
|
-
<div class="dropdown-content">
|
208
|
-
<a :href="url.admin('profile')" class="dropdown-item py-3">
|
209
|
-
<span class="icon-text">
|
210
|
-
<span class="icon has-text-grey-dark">
|
211
|
-
<span class="ri-user-line"></span>
|
212
|
-
</span>
|
213
|
-
<span>{{ translations.lesli.application.navigation_my_profile }}</span>
|
214
|
-
</span>
|
215
|
-
</a>
|
216
|
-
<hr class="dropdown-divider">
|
217
|
-
<a href="/logout" class="dropdown-item py-3">
|
218
|
-
<span class="icon-text">
|
219
|
-
<span class="icon has-text-grey-dark">
|
220
|
-
<span class="ri-logout-box-r-line"></span>
|
221
|
-
</span>
|
222
|
-
<span>{{ translations.lesli.application.navigation_logout }}</span>
|
223
|
-
</span>
|
224
|
-
</a>
|
225
|
-
</div>
|
226
|
-
</div>
|
227
|
-
</div>
|
228
|
-
</div>
|
229
249
|
</div>
|
250
|
+
-->
|
230
251
|
</header>
|
231
252
|
</template>
|
@@ -67,8 +67,8 @@ const props = defineProps({
|
|
67
67
|
|
68
68
|
// · translations
|
69
69
|
const translations = {
|
70
|
-
shared:
|
71
|
-
dashboards:
|
70
|
+
shared: {}, //i 18n.t("lesli.shared"),
|
71
|
+
dashboards: {}, //i 18n.t("lesli.dashboards"),
|
72
72
|
|
73
73
|
components: I18n.t('core.dashboard/components'),
|
74
74
|
core: I18n.t('core.shared'),
|
@@ -20,6 +20,8 @@
|
|
20
20
|
"button_save": "Save",
|
21
21
|
"button_settings": "Settings",
|
22
22
|
"button_show": "Show",
|
23
|
+
"message_operation_error": "Operation failed. Please try again.",
|
24
|
+
"message_operation_success": "Operation completed successfully",
|
23
25
|
"toolbar_search": "Search...",
|
24
26
|
"view_discussions": "Discussions",
|
25
27
|
"view_files": "Files",
|
@@ -53,6 +55,8 @@
|
|
53
55
|
"button_save": "Guardar",
|
54
56
|
"button_settings": "Configuración",
|
55
57
|
"button_show": "Ver",
|
58
|
+
"message_operation_error": "Operación fallida. Por favor, inténtelo de nuevo.",
|
59
|
+
"message_operation_success": "Operacion realizada satisfactoriamente",
|
56
60
|
"toolbar_search": "Buscar...",
|
57
61
|
"view_discussions": "Discusiones",
|
58
62
|
"view_files": "Archivos",
|
@@ -86,6 +90,8 @@
|
|
86
90
|
"button_save": ":lesli.shared.button_save:",
|
87
91
|
"button_settings": ":lesli.shared.button_settings:",
|
88
92
|
"button_show": ":lesli.shared.button_show:",
|
93
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
94
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
89
95
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
90
96
|
"view_discussions": ":lesli.shared.view_discussions:",
|
91
97
|
"view_files": ":lesli.shared.view_files:",
|
@@ -119,6 +125,8 @@
|
|
119
125
|
"button_save": ":lesli.shared.button_save:",
|
120
126
|
"button_settings": ":lesli.shared.button_settings:",
|
121
127
|
"button_show": ":lesli.shared.button_show:",
|
128
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
129
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
122
130
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
123
131
|
"view_discussions": ":lesli.shared.view_discussions:",
|
124
132
|
"view_files": ":lesli.shared.view_files:",
|
@@ -152,6 +160,8 @@
|
|
152
160
|
"button_save": ":lesli.shared.button_save:",
|
153
161
|
"button_settings": ":lesli.shared.button_settings:",
|
154
162
|
"button_show": ":lesli.shared.button_show:",
|
163
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
164
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
155
165
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
156
166
|
"view_discussions": ":lesli.shared.view_discussions:",
|
157
167
|
"view_files": ":lesli.shared.view_files:",
|
data/lib/webpack/base.js
CHANGED
@@ -107,11 +107,12 @@ module.exports = env => ({
|
|
107
107
|
|
108
108
|
vue: "vue/dist/vue.esm-bundler.js",
|
109
109
|
|
110
|
-
// Set aliases as shortcuts to import modules
|
110
|
+
// Set aliases as shortcuts to import core modules
|
111
111
|
Lesli: path.resolve("lib"),
|
112
112
|
LesliVue: path.resolve("lib", "vue"),
|
113
113
|
LesliStyle: path.resolve("lib", "scss"),
|
114
114
|
|
115
|
+
// Set aliases as shortcuts to import engine modules
|
115
116
|
LesliBell: path.resolve("../", "LesliBell", "lib"),
|
116
117
|
LesliAdmin: path.resolve("../", "LesliAdmin", "lib"),
|
117
118
|
LesliAudit: path.resolve("../", "LesliAudit", "lib"),
|
@@ -123,7 +124,8 @@ module.exports = env => ({
|
|
123
124
|
LesliCalendar: path.resolve("../", "LesliCalendar", "lib"),
|
124
125
|
LesliDashboard: path.resolve("../", "LesliDashboard", "lib"),
|
125
126
|
|
126
|
-
|
127
|
+
// Set aliases as shortcuts to import root modules
|
128
|
+
Root: path.resolve("../", "../", "lib")
|
127
129
|
}
|
128
130
|
},
|
129
131
|
module: {
|
@@ -134,7 +136,9 @@ module.exports = env => ({
|
|
134
136
|
options: {
|
135
137
|
compilerOptions: {
|
136
138
|
// ignore custom html components & elements
|
137
|
-
isCustomElement: tag =>
|
139
|
+
isCustomElement: tag => {
|
140
|
+
return tag.startsWith('trix-')
|
141
|
+
}
|
138
142
|
}
|
139
143
|
}
|
140
144
|
}
|
@@ -153,7 +157,7 @@ module.exports = env => ({
|
|
153
157
|
presets: [["@babel/preset-env", { "targets": "defaults" }]]
|
154
158
|
}
|
155
159
|
}
|
156
|
-
},{
|
160
|
+
}, {
|
157
161
|
test: /\.(scss)$/,
|
158
162
|
use: [
|
159
163
|
MiniCssExtractPlugin.loader,
|
@@ -161,7 +165,7 @@ module.exports = env => ({
|
|
161
165
|
loader:'css-loader',
|
162
166
|
options: { url: false }
|
163
167
|
},
|
164
|
-
'sass-loader'
|
168
|
+
'sass-loader' // required to compile sass files with webpack
|
165
169
|
]
|
166
170
|
}]
|
167
171
|
},
|
@@ -180,7 +184,8 @@ module.exports = env => ({
|
|
180
184
|
lesli_application_development: JSON.stringify(!env.production),
|
181
185
|
lesli_application_version: JSON.stringify(dayjs().format("YYMMDD.HHmm")),
|
182
186
|
__VUE_OPTIONS_API__: true,
|
183
|
-
__VUE_PROD_DEVTOOLS__: false
|
187
|
+
__VUE_PROD_DEVTOOLS__: false,
|
188
|
+
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
|
184
189
|
})
|
185
190
|
]
|
186
191
|
})
|