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.
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
  })