lato 3.11.4 → 3.11.5
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/README.md +17 -2
- data/app/views/lato/account/_form-user.html.erb +6 -2
- data/app/views/lato/account/_form-web3.html.erb +5 -1
- data/app/views/lato/components/_index.html.erb +6 -2
- data/app/views/layouts/lato/_aside-opener.html.erb +1 -0
- data/app/views/layouts/lato/_confirm.html.erb +12 -2
- data/app/views/layouts/lato/application.html.erb +2 -2
- data/config/locales/en.yml +2 -0
- data/config/locales/it.yml +2 -0
- data/lib/lato/config.rb +2 -0
- data/lib/lato/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5c5a09699df9b3bf38945da760831ea4665b52442f36ac0d05fc1b962e78d7a
|
4
|
+
data.tar.gz: df0526aa1220216bc79c117eccd41b6fa233cd27bf0bef825e01cd66a122235a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36fa0b306360fe4acc52f12c90a1a4cebddab63a220da70788946ebd51ea93358654fbc6427e3375f81f22f58c78de9c24bc3d7277491cb1fea85a702b1af474
|
7
|
+
data.tar.gz: 5bbfa598b9db7576116aa2ac378a13ddf9207f7f7bb598ce53b68ef4cd505cc5900be23031f093f11737aa6f5d654e39ed25fe05e6d6862efb36c0f77a7e4a9a
|
data/README.md
CHANGED
@@ -1,11 +1,26 @@
|
|
1
1
|
# Lato
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/lato)
|
4
|
+
|
3
5
|
Lato is a Rails Engine to deliver a full featured web panel for your Rails application.
|
4
6
|
|
5
7
|
This gem includes:
|
6
|
-
- User management with full authentication (signin, signup, recover password);
|
8
|
+
- User management with full authentication (signin, signup, recover password, email validation, Google Authenticator multi-factor authentication, ETH wallet connection);
|
7
9
|
- Web panel UI (Navbar, Sidebar, Body) with Bootstrap;
|
8
|
-
- Some UI components ready to use integrated with Rails
|
10
|
+
- Some UI components ready to use integrated with Rails (data tables, forms, modals, async job executions);
|
11
|
+
|
12
|
+
The gem is designed to be easily **customizable and extendable**. You can fully customize the UI and the functionalities of the panel. You can also add new functionalities and components to the panel on the main application or develop new engines to extend the panel.
|
13
|
+
|
14
|
+
The gem is ready to be used with the **latest Rails 7+** features like **ESM import maps**, **Turbo** and **Stimulus**.
|
15
|
+
|
16
|
+
The front-end is designed to be responsive, mobile friendly and accessible.
|
17
|
+
|
18
|
+
<img src="./preview.gif" alt="Lato preview" width="100%">
|
19
|
+
|
20
|
+
## Eco-system
|
21
|
+
The idea behind Lato is to create an eco-system of engines that can improve the functionalities of the panel. The following engines are already available:
|
22
|
+
|
23
|
+
- [LatoSpaces](https://github.com/Lato-org/lato_spaces): A simple engine to manage multiple workspaces in the panel with user invitation and workspace roles;
|
9
24
|
|
10
25
|
## Installation
|
11
26
|
Add required dependencies to your application's Gemfile:
|
@@ -25,9 +25,13 @@ user ||= Lato::User.new
|
|
25
25
|
<div class="input-group mb-3">
|
26
26
|
<%= lato_form_item_input_email form, :email, required: true %>
|
27
27
|
<% if user.email_verified_at %>
|
28
|
-
<button
|
28
|
+
<button
|
29
|
+
class="btn btn-outline-success"
|
30
|
+
style="pointer-events: none"
|
31
|
+
aria-label="<%= I18n.t('lato.email_verified') %>"
|
32
|
+
><%= I18n.t('lato.email_verified') %></span>
|
29
33
|
<% else %>
|
30
|
-
<%= link_to I18n.t('lato.verify_email'), account_request_verify_email_action_path, class: 'btn btn-warning', data: { turbo_method: :patch, turbo_frame: '_self' } %>
|
34
|
+
<%= link_to I18n.t('lato.verify_email'), account_request_verify_email_action_path, class: 'btn btn-warning', data: { turbo_method: :patch, turbo_frame: '_self' }, aria: { label: I18n.t('lato.verify_email') } %>
|
31
35
|
<% end %>
|
32
36
|
</div>
|
33
37
|
</div>
|
@@ -15,7 +15,11 @@ user ||= Lato::User.new
|
|
15
15
|
<%= lato_form_item_label form, :web3_address %>
|
16
16
|
<div class="input-group">
|
17
17
|
<input value="<%= user.web3_address %>" class="form-control" readonly>
|
18
|
-
<button
|
18
|
+
<button
|
19
|
+
class="btn btn-outline-success"
|
20
|
+
style="pointer-events: none"
|
21
|
+
aria-label="<%= I18n.t('lato.connected_wallet') %>"
|
22
|
+
><%= I18n.t('lato.connected_wallet') %></button>
|
19
23
|
</div>
|
20
24
|
</div>
|
21
25
|
</div>
|
@@ -18,7 +18,11 @@ collection_total = collection.respond_to?(:total_count) ? collection.total_count
|
|
18
18
|
<% if searchable_columns.any? %>
|
19
19
|
<div class="input-group">
|
20
20
|
<input type="text" name="search" class="form-control" placeholder="<%= I18n.t('lato.search_for') %>: <%= searchable_columns.map { |c| collection.model.human_attribute_name(c) }.to_sentence %>" value="<%= params[:search] %>">
|
21
|
-
<button
|
21
|
+
<button
|
22
|
+
class="btn btn-outline-primary"
|
23
|
+
type="submit"
|
24
|
+
aria-label="<%= I18n.t('lato.search') %>"
|
25
|
+
><i class="bi bi-search"></i></button>
|
22
26
|
</div>
|
23
27
|
<% else %>
|
24
28
|
<div></div>
|
@@ -155,7 +159,7 @@ collection_total = collection.respond_to?(:total_count) ? collection.total_count
|
|
155
159
|
<div class="d-flex justify-content-end align-items-center">
|
156
160
|
<span class="text-muted"><%= collection_total %> <%= I18n.t('lato.total_results').downcase %></span>
|
157
161
|
<% if pagination_options %>
|
158
|
-
<select name="per_page" class="ms-3 form-select form-select-sm w-auto" data-action="change->lato_form#submit">
|
162
|
+
<select name="per_page" class="ms-3 form-select form-select-sm w-auto" data-action="change->lato_form#submit" aria-label="<%= I18n.t('lato.per_page_description') %>">
|
159
163
|
<% pagination_options.each do |option| %>
|
160
164
|
<option value="<%= option %>" <%= option == params[:per_page].to_i ? 'selected' : '' %>>
|
161
165
|
<%= option %> <%= I18n.t('lato.per_page').downcase %>
|
@@ -8,8 +8,18 @@
|
|
8
8
|
<div class="modal-body" data-lato-confirm-target="modalBody">
|
9
9
|
</div>
|
10
10
|
<div class="modal-footer">
|
11
|
-
<button
|
12
|
-
|
11
|
+
<button
|
12
|
+
type="button"
|
13
|
+
class="btn btn-danger"
|
14
|
+
data-action="click->lato-confirm#confirmCancel"
|
15
|
+
aria-label="<%= I18n.t('lato.confirm_no') %>"
|
16
|
+
><%= I18n.t('lato.confirm_no') %></button>
|
17
|
+
<button
|
18
|
+
type="button"
|
19
|
+
class="btn btn-success"
|
20
|
+
data-action="click->lato-confirm#confirmSuccess"
|
21
|
+
aria-label="<%= I18n.t('lato.confirm_yes') %>"
|
22
|
+
><%= I18n.t('lato.confirm_yes') %></button>
|
13
23
|
</div>
|
14
24
|
</div>
|
15
25
|
</div>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<html lang="<%= I18n.locale %>">
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1,
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
6
6
|
<title><%= @layout_page_title %></title>
|
7
7
|
<%= csrf_meta_tags %>
|
8
8
|
<%= csp_meta_tag %>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
|
22
22
|
|
23
23
|
<%= stylesheet_link_tag Lato.config.assets_stylesheet_entry, media: "all" %>
|
24
|
-
<%= javascript_importmap_tags %>
|
24
|
+
<%= javascript_importmap_tags Lato.config.assets_importmap_entry %>
|
25
25
|
</head>
|
26
26
|
<body
|
27
27
|
class="controller-<%= controller_name %> action-<%= action_name %> <%= @layout_body_classes.join(' ') %>"
|
data/config/locales/en.yml
CHANGED
@@ -19,6 +19,7 @@ en:
|
|
19
19
|
there_are_some_errors: There are some errors
|
20
20
|
update_password: Update password
|
21
21
|
confirm: Confirm
|
22
|
+
search: Search
|
22
23
|
search_for: Search for
|
23
24
|
total_results: Total results
|
24
25
|
account_informations: Account informations
|
@@ -59,6 +60,7 @@ en:
|
|
59
60
|
authenticator_code_help: Insert the code generated by the Google Authenticator app for the account <b>%{email}</b>
|
60
61
|
reset_password: Reset your password
|
61
62
|
per_page: Per page
|
63
|
+
per_page_description: Number of elements per page
|
62
64
|
confirm_title: Confirm
|
63
65
|
confirm_yes: Yes, confirm
|
64
66
|
confirm_no: No, cancel
|
data/config/locales/it.yml
CHANGED
@@ -21,6 +21,7 @@ it:
|
|
21
21
|
there_are_some_errors: Si sono verificati i seguenti errori
|
22
22
|
update_password: Aggiornamento password
|
23
23
|
confirm: Conferma
|
24
|
+
search: Cerca
|
24
25
|
search_for: Ricerca per
|
25
26
|
total_results: Risultati totali
|
26
27
|
account_informations: Informazioni account
|
@@ -61,6 +62,7 @@ it:
|
|
61
62
|
authenticator_code_help: Inserisci il codice generato dall'app Google Authenticator per l'account <b>%{email}</b>
|
62
63
|
reset_password: Reimposta la tua password
|
63
64
|
per_page: Per pagina
|
65
|
+
per_page_description: Elementi per pagina
|
64
66
|
confirm_title: Conferma
|
65
67
|
confirm_yes: Sì, procedi
|
66
68
|
confirm_no: No, annulla
|
data/lib/lato/config.rb
CHANGED
@@ -14,6 +14,7 @@ module Lato
|
|
14
14
|
|
15
15
|
# Assets configs
|
16
16
|
attr_accessor :assets_stylesheet_entry
|
17
|
+
attr_accessor :assets_importmap_entry
|
17
18
|
|
18
19
|
# Email configs
|
19
20
|
attr_accessor :email_from
|
@@ -41,6 +42,7 @@ module Lato
|
|
41
42
|
@auth_disable_authenticator = false
|
42
43
|
|
43
44
|
@assets_stylesheet_entry = 'application'
|
45
|
+
@assets_importmap_entry = 'application'
|
44
46
|
|
45
47
|
@session_lifetime = 30.days
|
46
48
|
@session_root_path = nil # :tutorial_path
|
data/lib/lato/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.11.
|
4
|
+
version: 3.11.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregorio Galante
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|