lesli 5.0.12 → 5.0.13
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.
- 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
|
})
|