lesli 5.0.12 → 5.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/lesli/brand/app-logo.png +0 -0
  3. data/app/assets/javascripts/lesli/templates/application.js +14 -0
  4. data/app/assets/javascripts/lesli/templates/public.js +14 -0
  5. data/app/assets/stylesheets/lesli/templates/application.css +851 -21432
  6. data/app/assets/stylesheets/lesli/templates/public.css +1 -19098
  7. data/app/controllers/lesli/application_controller.rb +1 -0
  8. data/app/controllers/lesli/interfaces/application/authorization.rb +1 -1
  9. data/app/helpers/lesli/assets_helper.rb +24 -6
  10. data/app/helpers/lesli/navigation_helper.rb +15 -11
  11. data/app/lib/date2.rb +8 -0
  12. data/app/lib/lesli/system.rb +13 -1
  13. data/app/models/concerns/user_extensions.rb +6 -0
  14. data/app/models/lesli/user.rb +2 -2
  15. data/app/operators/lesli/controller_operator.rb +4 -1
  16. data/app/services/lesli/user_service.rb +1 -1
  17. data/app/views/lesli/layouts/application-lesli.html.erb +2 -0
  18. data/app/views/lesli/partials/_application-data.html.erb +3 -3
  19. data/app/views/lesli/partials/_application-lesli-header.html.erb +47 -22
  20. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +2 -2
  21. data/app/views/lesli/partials/_application-lesli-navigation.html.erb +8 -1
  22. data/app/views/lesli/partials/_application-lesli-scss.html.erb +2 -2
  23. data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
  24. data/config/initializers/lesli.rb +7 -1
  25. data/config/locales/translations.en.yml +5 -3
  26. data/config/locales/translations.es.yml +5 -3
  27. data/config/locales/translations.fr.yml +5 -3
  28. data/config/locales/translations.it.yml +5 -3
  29. data/config/locales/translations.pt.yml +5 -3
  30. data/lib/generators/application_lesli_generator.rb +164 -0
  31. data/lib/generators/lesli/spec/USAGE +8 -0
  32. data/lib/generators/lesli/spec/spec_generator.rb +25 -0
  33. data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
  34. data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
  35. data/lib/lesli/configuration.rb +1 -1
  36. data/lib/lesli/engine.rb +2 -3
  37. data/lib/lesli/r_spec.rb +40 -0
  38. data/lib/lesli/routing.rb +57 -0
  39. data/lib/lesli/version.rb +2 -2
  40. data/lib/lesli.rb +2 -0
  41. data/lib/scss/layouts/application-component.scss +1 -1
  42. data/lib/scss/layouts/application-content.scss +35 -0
  43. data/lib/scss/layouts/application-header.scss +37 -109
  44. data/lib/scss/layouts/{application-navbar.scss → application-navigation.scss} +21 -4
  45. data/lib/scss/layouts/application-search.scss +1 -1
  46. data/lib/scss/settings/variables.scss +1 -1
  47. data/lib/scss/templates/application.scss +8 -37
  48. data/lib/scss/templates/public.scss +6 -4
  49. data/lib/tasks/lesli_tasks.rake +3 -3
  50. data/lib/vue/application.js +6 -4
  51. data/lib/vue/layouts/application-component.vue +2 -2
  52. data/lib/vue/layouts/application-header.vue +108 -87
  53. data/lib/vue/panels/panel-support-tickets.vue +4 -2
  54. data/lib/vue/shared/dashboards/apps/edit.vue +1 -1
  55. data/lib/vue/shared/dashboards/components/form.vue +2 -2
  56. data/lib/vue/stores/translations.json +10 -0
  57. data/lib/webpack/base.js +11 -6
  58. data/lib/webpack/core.js +8 -6
  59. data/lib/webpack/engines.js +3 -1
  60. data/lib/webpack/root.js +105 -0
  61. data/lib/webpack/version.js +37 -0
  62. metadata +17 -24
  63. data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
  64. data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
  65. data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
  66. data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
  67. 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,.2);
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: lesli-css-color(solid, white);
47
+ background-color: white;
48
48
 
49
49
  .content {
50
50
  padding: 0;
@@ -44,7 +44,7 @@ $lesli-navbar-color: white !default;
44
44
  $lesli-footer-color: white !default;
45
45
  $lesli-sidebar-color: white !default;
46
46
  $lesli-sidebar-hover: white !default;
47
- $lesli-color-background: #f6f8fb !default;
47
+ $lesli-color-background: #f8f4f4 !default;
48
48
 
49
49
 
50
50
 
@@ -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
- @import "Lesli/scss/layouts/application-navbar";
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
- // · Lesli vue components
97
- // @import "lesli/elements/autocomplete";
98
- // @import "Lesli/scss/elements/avatar";
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 "LesliStyle/settings/variables";
39
+ @import "Lesli/scss/settings/variables";
40
40
 
41
41
 
42
42
  // · Include Bulma
43
- @import "LesliStyle/bulma/loader";
43
+ @import "lesli-css/bulma";
44
44
 
45
45
 
46
46
  // · Font families and icons
47
- @import "LesliStyle/fonts/remixicons";
48
- @import "LesliStyle/fonts/families";
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
  // ·
@@ -41,9 +41,9 @@ namespace :lesli do
41
41
  Rake::Task['lesli_babel:scan'].invoke
42
42
  end
43
43
 
44
- desc "Scan and register labels"
45
- task :load => :environment do |task, args|
46
- Rake::Task['lesli_babel:load'].invoke
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"
@@ -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 https://www.lesli.tech
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
- // lesliElementNavbar,
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)
@@ -32,7 +32,7 @@ Building a better future, one line of code at a time.
32
32
  */
33
33
  </script>
34
34
  <template>
35
- <div class="lesli-application-component">
35
+ <article class="box">
36
36
  <slot></slot>
37
- </div>
37
+ </article>
38
38
  </template>
@@ -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: true,
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
- showSupportTickets: {
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
- application: i18n.t("lesli.application"),
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
- <div class="lesli-application-header-container container">
126
- <a :href="safeEngineUrl()">
127
- <figure class="image lesli-brand">
131
+ <lesli-navbar>
132
+ <template v-slot:brand>
133
+ <a :href="safeEngineUrl()">
128
134
  <slot name="brand"></slot>
129
- </figure>
130
- </a>
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>
@@ -61,8 +61,10 @@ const storeTicketsPanel = useTickets()
61
61
 
62
62
  // · defining translations
63
63
  const translations = {
64
- tickets: i18n.t("lesli_support.tickets"),
65
- lesli: i18n.t("lesli")
64
+ tickets: {},
65
+ lesli: {
66
+ shared:{}
67
+ }
66
68
  }
67
69
 
68
70
 
@@ -66,7 +66,7 @@ const props = defineProps({
66
66
 
67
67
  // · translations
68
68
  const translations = {
69
- dashboards: i18n.t("lesli.dashboards"),
69
+ dashboards: {}, //i 18n.t("lesli.dashboards"),
70
70
  main: I18n.t(`${props.engine}.dashboards`),
71
71
  core: I18n.t('core.shared')
72
72
  }
@@ -67,8 +67,8 @@ const props = defineProps({
67
67
 
68
68
  // · translations
69
69
  const translations = {
70
- shared: i18n.t("lesli.shared"),
71
- dashboards: i18n.t("lesli.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
- LesliBuilder: path.resolve("engines", "lesli_builder", "lib", "vue")
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 => tag.startsWith('trix-')
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
  })