lesli_admin 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_admin_manifest.js +1 -0
  3. data/app/assets/images/lesli_admin/admin-logo.svg +1 -0
  4. data/app/assets/javascripts/lesli_admin/application.js +2635 -244
  5. data/app/assets/javascripts/lesli_admin/translations.js +2291 -0
  6. data/app/assets/stylesheets/lesli_admin/application.scss +32 -0
  7. data/app/assets/stylesheets/lesli_admin/users.scss +67 -0
  8. data/app/controllers/lesli_admin/profiles_controller.rb +56 -0
  9. data/app/controllers/lesli_admin/users_controller.rb +5 -196
  10. data/app/helpers/lesli_admin/profiles_helper.rb +4 -0
  11. data/app/views/lesli_admin/profiles/edit.html.erb +10 -0
  12. data/app/views/lesli_admin/profiles/index.html.erb +14 -0
  13. data/app/views/lesli_admin/profiles/new.html.erb +9 -0
  14. data/app/views/lesli_admin/profiles/show.html.erb +1 -0
  15. data/app/views/lesli_admin/users/show.html.erb +1 -10
  16. data/config/locales/translations.en.yml +6 -0
  17. data/config/locales/translations.es.yml +6 -0
  18. data/config/routes.rb +4 -7
  19. data/lib/lesli_admin/engine.rb +31 -0
  20. data/lib/lesli_admin/version.rb +2 -1
  21. data/lib/vue/application.js +15 -98
  22. data/lib/vue/apps/account/show.vue +2 -2
  23. data/lib/vue/apps/dashboard/show.vue +6 -8
  24. data/lib/vue/apps/profile/show.vue +22 -15
  25. data/lib/vue/apps/users/components/information-card.vue +4 -7
  26. data/lib/vue/apps/users/components/information-form.vue +4 -7
  27. data/lib/vue/apps/users/index.vue +10 -4
  28. data/lib/vue/apps/users/show.vue +25 -10
  29. data/lib/vue/stores/translations.json +20 -0
  30. data/lib/vue/stores/users.js +1 -1
  31. data/readme.md +61 -18
  32. metadata +16 -14
  33. data/app/assets/stylesheets/lesli_admin/application.css +0 -15
  34. data/app/models/lesli_admin/dashboard.rb +0 -4
  35. data/app/models/lesli_admin/user.rb +0 -4
  36. data/app/services/lesli_admin/user_service.rb +0 -300
  37. data/lib/vue/stores/account.js +0 -113
  38. data/lib/vue/stores/descriptor.js +0 -116
  39. data/lib/vue/stores/descriptors.js +0 -167
  40. data/lib/vue/stores/integration.js +0 -103
  41. data/lib/vue/stores/role.js +0 -243
  42. data/lib/vue/stores/systemController.js +0 -67
  43. data/lib/vue/stores/user.js +0 -319
  44. /data/lib/vue/stores/{accountSettings.js → account_settings.js} +0 -0
@@ -0,0 +1,32 @@
1
+ /*
2
+ Lesli
3
+
4
+ Copyright (c) 2023, Lesli Technologies, S. A.
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see http://www.gnu.org/licenses/.
18
+
19
+ Lesli · Ruby on Rails SaaS Development Framework.
20
+
21
+ Made with ♥ by https://www.lesli.tech
22
+ Building a better future, one line of code at a time.
23
+
24
+ @contact hello@lesli.tech
25
+ @website https://www.lesli.tech
26
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
+
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
+ // ·
30
+ */
31
+
32
+ body.lesli-admin-users { @import "users"; }
@@ -0,0 +1,67 @@
1
+ /*
2
+ Lesli
3
+
4
+ Copyright (c) 2023, Lesli Technologies, S. A.
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see http://www.gnu.org/licenses/.
18
+
19
+ Lesli · Ruby on Rails SaaS Development Framework.
20
+
21
+ Made with ♥ by https://www.lesli.tech
22
+ Building a better future, one line of code at a time.
23
+
24
+ @contact hello@lesli.tech
25
+ @website https://www.lesli.tech
26
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
+
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
+ // ·
30
+ */
31
+
32
+
33
+ // ·
34
+ .user-information-card {
35
+ figure {
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ border-radius: 50%;
40
+ background-color: lesli-css-color(silver, 100);
41
+ border: 2px solid var(--lesli-color-primary, lesli-css-color(blue));
42
+ }
43
+ .alternative-avatar {
44
+ font-weight: 200;
45
+ font-size: 3rem;
46
+ color: var(--lesli-color-primary, lesli-css-color(blue));
47
+ }
48
+ }
49
+
50
+ form.information {
51
+ max-width: 80%;
52
+ }
53
+
54
+ // · roles management cards
55
+ .roles-types {
56
+ display: grid;
57
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
58
+ grid-auto-rows: minmax(198px, auto);
59
+ gap: 20px;
60
+
61
+ &-item {
62
+ width: 100%;
63
+ height: 135px;
64
+ border-radius: 8px;
65
+ margin: 5px;
66
+ }
67
+ }
@@ -0,0 +1,56 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+ module LesliAdmin
33
+ class ProfilesController < ApplicationController
34
+ before_action :set_profile, only: %i[ show ]
35
+
36
+ # GET /profiles/1
37
+ def show
38
+ respond_to do |format|
39
+ format.html { }
40
+ format.json { respond_with_successful(@profile.show) }
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ # Use callbacks to share common setup or constraints between actions.
47
+ def set_profile
48
+ @profile = Lesli::UserService.new(current_user, query).find(current_user.id)
49
+ end
50
+
51
+ # Only allow a list of trusted parameters through.
52
+ def profile_params
53
+ params.fetch(:profile, {})
54
+ end
55
+ end
56
+ end
@@ -32,213 +32,22 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  module LesliAdmin
34
34
  class UsersController < ApplicationController
35
- before_action :set_user, only: [
36
- :show,
37
- :update,
38
- :destroy,
39
- :requestpassword,
40
- :passwordreset,
41
- :revokeaccess,
42
- :logout
43
- ]
44
-
45
- # GET /users/list
46
- def list
47
- respond_to do |format|
48
- format.json { respond_with_successful(UserService.new("current_user").list(query, params)) }
49
- end
50
- end
35
+ #before_action :set_user, only: [:show]
51
36
 
52
37
  # GET /users
53
38
  def index
54
- respond_to do |format|
55
- format.html { }
56
- format.json {
57
- return respond_with_pagination(UserService.new("current_user").index(query, params))
58
- }
59
- end
60
39
  end
61
40
 
62
41
  def show
63
- respond_to do |format|
64
- format.html {}
65
- format.json {
66
- return respond_with_not_found unless @user.found?
67
- return respond_with_successful(@user.show)
68
- }
69
- end
70
42
  end
71
43
 
72
- def new; end
73
-
74
- def create
75
-
76
- user = UserService.new(current_user).create(user_params)
77
- if user.successful?
78
- respond_with_successful(user.result)
79
- else
80
- respond_with_error("Error creating user", user.errors)
81
- end
82
-
83
- end
84
-
85
- def update
86
-
87
- # validate that user exists
88
- return respond_with_not_found unless @user.found?
89
-
90
- @user.update(user_params)
91
-
92
- if @user.successful?
93
- respond_with_successful(@user.result)
94
- else
95
- respond_with_error(@user.errors)
96
- end
97
-
98
- end
99
-
100
- def destroy
101
- return respond_with_not_found unless @user
102
-
103
- # get the user found in the UserServices
104
- user = @user.result
105
-
106
- if user.delete
107
- current_user.logs.create({ title: "deleted_user", description: "by_user_id: #{ current_user.email }" })
108
- respond_with_successful()
109
- else
110
- respond_with_error(user.errors.full_messages.to_sentence)
111
- end
112
- end
113
-
114
- # Force the user to update his password
115
- def requestpassword
116
- if @user.request_password
117
- respond_with_successful
118
- else
119
- respond_with_error
120
- end
121
- end
122
-
123
- # Reset password (generate random)
124
- def passwordreset
125
-
126
- pass = @user.password_reset
127
-
128
- if pass
129
- respond_with_successful(pass)
130
- else
131
- respond_with_error
132
- end
133
- end
134
-
135
- # this method is going to close all the open user sessions
136
- def logout
137
- if @user.logout
138
- respond_with_successful
139
- else
140
- respond_with_error
141
- end
44
+ def new
142
45
  end
143
-
144
- # Remove all user access
145
- def revokeaccess
146
- if @user.revoke_access
147
- respond_with_successful
148
- else
149
- respond_with_error
150
- end
151
- end
152
-
153
- def become
154
-
155
- # always should be disabled
156
- if Rails.configuration.lesli.dig(:security, :enable_becoming) != true
157
- return respond_with_unauthorized
158
- end
159
-
160
- # Allow only sysadmin to become as user
161
- return respond_with_unauthorized if current_user.email != Rails.application.config.lesli.dig(:account, :user, :email) # sysadmin user
162
-
163
- # Search for desire user
164
- becoming_user = User.find(params[:id])
165
-
166
- # Return an error if user does not exist
167
- return respond_with_error I18n.t("core.shared.messages_warning_user_not_found") if becoming_user.blank?
168
-
169
- # Extrictly save a log when becoming
170
- current_user.activities.create!({
171
- users_id: becoming_user.id,
172
- owner_id: current_user.id,
173
- description: "#{current_user.full_name} -> #{becoming_user.full_name}",
174
- category: "action_become"
175
- })
176
-
177
- # Sign in as the becoming user
178
- sign_in(:user, becoming_user)
179
-
180
- # Create a new session for the becoming user
181
- becoming_session = becoming_user.sessions.create({
182
- :user_agent => get_user_agent,
183
- :user_remote => request.remote_ip,
184
- :session_source => "become_session",
185
- :last_used_at => LC::Date.now,
186
- :expiration_at => 60.minutes.from_now
187
- })
188
-
189
- # assign the session of the becomer user to the becoming user
190
- session[:user_session_id] = becoming_session[:id]
191
-
192
- # Response successful
193
- respond_with_successful([current_user, becoming_user])
194
-
195
- end
196
-
197
- def options
198
- respond_with_successful({
199
- #regions: current_user.account.locations.where(level: "region"),
200
- salutations: User::Detail.salutations.map {|k, v| {value: k, text: v}},
201
- locales: Rails.application.config.lesli.dig(:configuration, :locales_available),
202
- mfa_methods: Rails.application.config.lesli.dig(:configuration, :mfa_methods)
203
- })
46
+
47
+ def edit
204
48
  end
205
-
49
+
206
50
  private
207
-
208
- # @return [void]
209
- # @description Sets the requested user based on the current_users's account
210
- # @example
211
- # # Executing this method from a controller action:
212
- # set_user
213
- # puts @user
214
- # # This will either display nil or an instance of Account::User
215
- def set_user
216
- @user = UserService.new(current_user).find(params[:id])
217
- end
218
-
219
- def user_params
220
- params.require(:user).permit(
221
- :active,
222
- :email,
223
- :alias,
224
- :roles_id,
225
- :first_name,
226
- :last_name,
227
- :telephone,
228
- detail_attributes: [
229
- :title,
230
- :salutation,
231
- :address,
232
- :work_city,
233
- :work_region,
234
- :work_address
235
- ]
236
- )
237
- end
238
51
 
239
- # Only allow a list of trusted parameters through.
240
- def user_params
241
- params.fetch(:user, {})
242
- end
243
52
  end
244
53
  end
@@ -0,0 +1,4 @@
1
+ module LesliAdmin
2
+ module ProfilesHelper
3
+ end
4
+ end
@@ -0,0 +1,10 @@
1
+ <h1>Editing profile</h1>
2
+
3
+ <%= render "form", profile: @profile %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Show this profile", @profile %> |
9
+ <%= link_to "Back to profiles", profiles_path %>
10
+ </div>
@@ -0,0 +1,14 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <h1>Profiles</h1>
4
+
5
+ <div id="profiles">
6
+ <% @profiles.each do |profile| %>
7
+ <%= render profile %>
8
+ <p>
9
+ <%= link_to "Show this profile", profile %>
10
+ </p>
11
+ <% end %>
12
+ </div>
13
+
14
+ <%= link_to "New profile", new_profile_path %>
@@ -0,0 +1,9 @@
1
+ <h1>New profile</h1>
2
+
3
+ <%= render "form", profile: @profile %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Back to profiles", profiles_path %>
9
+ </div>
@@ -0,0 +1 @@
1
+ <router-view></router-view>
@@ -1,10 +1 @@
1
- <p style="color: green"><%= notice %></p>
2
-
3
- <%= render @user %>
4
-
5
- <div>
6
- <%= link_to "Edit this user", edit_user_path(@user) %> |
7
- <%= link_to "Back to users", users_path %>
8
-
9
- <%= button_to "Destroy this user", @user, method: :delete %>
10
- </div>
1
+ <router-view></router-view>
@@ -0,0 +1,6 @@
1
+ ---
2
+ :en:
3
+ users:
4
+ title_users: Users
5
+ dashboards:
6
+ button_my: My button in my dashboard
@@ -0,0 +1,6 @@
1
+ ---
2
+ :es:
3
+ users:
4
+ title_users: Usuarios
5
+ dashboards:
6
+ button_my: Mi boton en mi dashboard
data/config/routes.rb CHANGED
@@ -1,13 +1,10 @@
1
1
  LesliAdmin::Engine.routes.draw do
2
+
2
3
  root to: "dashboards#show"
3
4
  resource :dashboard, only: [:show]
4
5
 
5
- resource :account, only: [:show, :update]
6
- resources :users, only: [:index, :show, :new, :update, :create, :destroy] do
6
+ resource :profile
7
7
 
8
- # extensions to the users methods
9
- collection do
10
- get :list
11
- end
12
- end
8
+ resource :account, only: [:show]
9
+ resources :users, only: [:index, :show, :new]
13
10
  end
@@ -1,3 +1,34 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
1
32
  module LesliAdmin
2
33
  class Engine < ::Rails::Engine
3
34
  isolate_namespace LesliAdmin
@@ -1,3 +1,4 @@
1
1
  module LesliAdmin
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
+ BUILD = "1696737766"
3
4
  end
@@ -30,21 +30,28 @@ Building a better future, one line of code at a time.
30
30
  */
31
31
 
32
32
 
33
- // ·
33
+ // · Import Lesli builders
34
34
  import application from "Lesli/application"
35
+ import translation from "Lesli/translation"
35
36
 
36
37
 
37
- // ·
38
+ // · Import engine translations
39
+ import translations from "LesliAdmin/stores/translations.json"
40
+
41
+
42
+ // · Import engine applications
38
43
  import applicationDashboardShow from "LesliAdmin/apps/dashboard/show.vue"
39
44
  import applicationAccountShow from "LesliAdmin/apps/account/show.vue"
40
-
41
- //import applicationUsersProfile from "LesliApp/administration/apps/profile/show.vue"
42
45
  import applicationUsersIndex from "LesliAdmin/apps/users/index.vue"
43
- ///import applicationUsersShow from "LesliApp/administration/apps/users/show.vue"
44
- //import applicationUsersNew from "LesliAdmin/apps/users/new.vue"
46
+ import applicationUsersShow from "LesliAdmin/apps/users/show.vue"
47
+ import applicationProfile from "LesliAdmin/apps/profile/show.vue"
45
48
 
46
49
 
47
- // ·
50
+ // · Buil Lesli translations
51
+ translation(translations)
52
+
53
+
54
+ // · Build a new Lesli application
48
55
  application("LesliAdmin", [{
49
56
  path: "/dashboard",
50
57
  component: applicationDashboardShow
@@ -54,100 +61,10 @@ application("LesliAdmin", [{
54
61
  }, {
55
62
  path: "/users",
56
63
  component: applicationUsersIndex
57
- }/*, {
58
- path: "/users/new",
59
- component: applicationUsersNew
60
- }*/])
61
-
62
- /*
63
- // ·
64
- import applicationAccountDashboard from "CloudAdmin/apps/accounts/dashboard.vue"
65
-
66
-
67
-
68
- import applicationDescriptorsPrivileges from "LesliApp/administration/apps/descriptors/privileges.vue"
69
- import applicationDescriptorsIndex from "LesliApp/administration/apps/descriptors/index.vue"
70
- import applicationDescriptorsEdit from "LesliApp/administration/apps/descriptors/edit.vue"
71
- import applicationDescriptorsShow from "LesliApp/administration/apps/descriptors/show.vue"
72
- import applicationDescriptorsNew from "LesliApp/administration/apps/descriptors/new.vue"
73
-
74
- import applicationRolesIndex from "LesliApp/administration/apps/roles/index.vue"
75
- import applicationRolesShow from "LesliApp/administration/apps/roles/show.vue"
76
- import applicationRolesEdit from "LesliApp/administration/apps/roles/edit.vue"
77
- import applicationRolesNew from "LesliApp/administration/apps/roles/new.vue"
78
-
79
- import applicationIntegrationsIndex from "LesliApp/administration/apps/integrations/index.vue"
80
- import applicationIntegrationsNew from "LesliApp/administration/apps/integrations/new.vue"
81
- import applicationSecurity from "LesliApp/administration/apps/security/index.vue"
82
- import applicationDatetime from "LesliApp/administration/apps/date_time/index.vue"
83
- import applicationBranding from "LesliApp/administration/apps/branding/index.vue"
84
- import applicationTheme from "LesliApp/administration/apps/theme/index.vue"
85
- import applicationAccountShow from "LesliApp/administration/apps/accounts/show.vue"
86
-
87
-
88
- // ·
89
- application("Lesli", [{
90
- path: "/",
91
- component: applicationAccountDashboard
92
- }, {
93
- path: "/account",
94
- component: applicationAccountShow
95
64
  }, {
96
65
  path: "/users/:id",
97
66
  component: applicationUsersShow
98
67
  }, {
99
- path: "/users/new",
100
- component: applicationUsersNew
101
- },{
102
68
  path: "/profile",
103
- component: applicationUsersProfile
104
- }, {
105
- path: "/descriptors",
106
- component: applicationDescriptorsIndex
107
- }, {
108
- path: "/descriptors/:id/edit",
109
- component: applicationDescriptorsEdit
110
- }, {
111
- path: "/descriptors/:id",
112
- component: applicationDescriptorsShow
113
- }, {
114
- path: "/descriptors/:id/privileges",
115
- component: applicationDescriptorsPrivileges
116
- }, {
117
- path: "/descriptors/new",
118
- component: applicationDescriptorsNew
119
- }, {
120
- path: "/roles",
121
- component: applicationRolesIndex
122
- }, {
123
- path: "/roles/new",
124
- component: applicationRolesNew
125
- }, {
126
- path: "/roles/:id",
127
- component: applicationRolesShow
128
- }, {
129
- path: "/roles/:id/edit",
130
- component: applicationRolesEdit
131
- }, {
132
- path: "/account/integrations",
133
- component: applicationIntegrationsIndex
134
- }, {
135
- path: "/account/integrations/new",
136
- component: applicationIntegrationsNew
137
- }, {
138
- path: "/account/settings/security",
139
- component: applicationSecurity
140
- }, {
141
- path: "/account/settings/date_time",
142
- component: applicationDatetime
143
- }, {
144
- path: "/account/settings/branding",
145
- component: applicationBranding
146
- }, {
147
- path: "/account/settings/theme",
148
- component: applicationTheme
149
- }, {
150
- path: "/account/settings/theme",
151
- component: applicationTheme
69
+ component: applicationProfile
152
70
  }])
153
- */
@@ -69,7 +69,7 @@ onMounted(() => {
69
69
 
70
70
  </script>
71
71
  <template>
72
- <lesli-content>
72
+ <lesli-application-container>
73
73
  <lesli-header title="Account information">
74
74
  </lesli-header>
75
75
  <lesli-tabs v-model="tab">
@@ -77,7 +77,7 @@ onMounted(() => {
77
77
  <form-information></form-information>
78
78
  </lesli-tab-item>
79
79
  </lesli-tabs>
80
- </lesli-content>
80
+ </lesli-application-container>
81
81
  <!--
82
82
  <lesli-tab-item title="Address" icon="location_on">
83
83
  <address-form></address-form>