lato 3.20.0 → 3.22.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 075c975b6664915db69f259de96df142661e1fdc15e105de7abbb7ccd0cb2e42
4
- data.tar.gz: d43336a66ac83b70fb2eb07c18486c3be17faae34c5f86d6cc2754b419e25960
3
+ metadata.gz: 925e5dd4e3c5460a38172e5f67acaf5130c15e080777a91330becf009888dd52
4
+ data.tar.gz: 672b343b2de9def169bc3a97314b4ccee9db6f3254f89fb42f3e5c3ae17de863
5
5
  SHA512:
6
- metadata.gz: 3b811fca6c275c24eac441c330d4a73c101e5d12625ef66b6d8211bc15d9f2435693e0a51c777cdd83a4750e4b0fad48b2584e018ed99d7ff881d7745144aa00
7
- data.tar.gz: b137ac3b8cfa26e7b28d3cd37a3cef8ee72927903892ed3eca307913fced39cdbf12951c7f97bf8ed5cd72edff05778c44b4ac917b8c6a3125e909a05193f83e
6
+ metadata.gz: 3b558bf2e8b153d3c173d1219b0689147611f341e80a9454634247bcf830cf378fb6780045ece64ecd54d42b34efb57e246e66d89e292aa67cd7ad4c7ba13536
7
+ data.tar.gz: dfd3b28e1322227882c6b8b1432b6119cb3678cedb28b6cadde4fce09358b31d451b1297af664f0f6c03a26df10cdb7c0e1cf8d2b10ef4ecabea24c69e36cd67
@@ -1,22 +1,39 @@
1
1
  // Import turbo rails
2
- import "@hotwired/turbo-rails"
2
+ import '@hotwired/turbo-rails'
3
3
  // Import bootstrap js
4
- import "bootstrap"
4
+ import 'bootstrap'
5
5
  // Import controllers (stimulus rails)
6
- import "controllers"
6
+ import 'controllers'
7
+ // Import local time js
8
+ import LocalTime from 'local-time'
9
+
10
+ /**
11
+ * Setup local time to update time elements on page load and after turbo morph or frame render
12
+ */
13
+
14
+ LocalTime.start()
15
+
16
+ document.addEventListener('turbo:morph', () => {
17
+ LocalTime.run()
18
+ })
19
+
20
+ document.addEventListener('turbo:frame-render', () => {
21
+ LocalTime.run()
22
+ })
7
23
 
8
24
  /**
9
25
  * Include service worker
10
26
  */
11
27
 
12
28
  if (navigator.serviceWorker) {
13
- navigator.serviceWorker.register("/service-worker.js", { scope: "/" })
14
- .then(() => navigator.serviceWorker.ready)
15
- .then((registration) => {
16
- const event = new CustomEvent("service-worker:ready", { detail: registration })
17
- document.dispatchEvent(event)
18
- })
19
- .then(() => console.log("[App]", "Service worker registered! -> listen to 'service-worker:ready' document event to get the registration object"))
29
+ navigator.serviceWorker
30
+ .register('/service-worker.js', { scope: '/' })
31
+ .then(() => navigator.serviceWorker.ready)
32
+ .then((registration) => {
33
+ const event = new window.CustomEvent('service-worker:ready', { detail: registration })
34
+ document.dispatchEvent(event)
35
+ })
36
+ .then(() => window.console.log('[App]', 'Service worker registered! -> listen to \'service-worker:ready\' document event to get registration object'))
20
37
  }
21
38
 
22
39
  /**
@@ -24,7 +41,7 @@ if (navigator.serviceWorker) {
24
41
  * https://github.com/hotwired/turbo-rails/issues/440
25
42
  */
26
43
 
27
- document.addEventListener("turbo:frame-missing", event => {
44
+ document.addEventListener('turbo:frame-missing', event => {
28
45
  event.preventDefault()
29
46
  event.detail.visit(event.detail.response)
30
47
  })
@@ -7,7 +7,7 @@ export default class extends Controller {
7
7
 
8
8
  connect() {
9
9
  this.modal = new bootstrap.Modal(this.element)
10
- Turbo.setConfirmMethod(this.customConfirm.bind(this))
10
+ Turbo.config.forms.confirm = this.customConfirm.bind(this)
11
11
 
12
12
  this.element.addEventListener('show.bs.modal', () => {
13
13
  this.element.style.zIndex = 2001
@@ -21,7 +21,7 @@ export default class extends Controller {
21
21
  }
22
22
 
23
23
  disconnect() {
24
- Turbo.setConfirmMethod(window.confirm)
24
+ Turbo.config.forms.confirm = window.confirm
25
25
  }
26
26
 
27
27
  async customConfirm(message) {
@@ -20,14 +20,12 @@ module Lato
20
20
 
21
21
  # manage sort by parameter
22
22
  unless params["#{key}_sort_by"].blank?
23
- sort_by_splitted = params["#{key}_sort_by"].split('|')
24
- sort_by_column = sort_by_splitted.first
25
- sort_by_order = sort_by_splitted.last
23
+ sort_by = parse_lato_index_sort_by(params["#{key}_sort_by"], @_lato_index[key][:sortable_columns])
26
24
 
27
- if collection.respond_to?(:lato_index_order)
28
- collection = collection.lato_index_order(sort_by_column.to_sym, sort_by_order.to_sym)
29
- else
30
- collection = collection.order("#{sort_by_column} #{sort_by_order}")
25
+ if sort_by && collection.respond_to?(:lato_index_order)
26
+ collection = collection.lato_index_order(sort_by[:column].to_sym, sort_by[:order].to_sym)
27
+ elsif sort_by
28
+ collection = collection.order(sort_by[:column] => sort_by[:order])
31
29
  end
32
30
  end
33
31
 
@@ -63,5 +61,18 @@ module Lato
63
61
 
64
62
  collection
65
63
  end
64
+
65
+ private
66
+
67
+ def parse_lato_index_sort_by(sort_by, sortable_columns)
68
+ sort_by_column, sort_by_order = sort_by.to_s.split("|", 2)
69
+ sort_by_column = sort_by_column.to_s
70
+ sort_by_order = sort_by_order.to_s.downcase
71
+
72
+ return unless sortable_columns.map(&:to_s).include?(sort_by_column)
73
+ return unless %w[asc desc].include?(sort_by_order)
74
+
75
+ { column: sort_by_column, order: sort_by_order }
76
+ end
66
77
  end
67
78
  end
@@ -6,6 +6,8 @@ module Lato
6
6
  include Lato::Layoutable
7
7
  include Lato::Componentable
8
8
 
9
+ helper LocalTimeHelper
10
+
9
11
  around_action :catch_exceptions
10
12
 
11
13
  before_action :override_request_remote_ip
@@ -74,7 +74,7 @@
74
74
  <% operation.logs.reverse.each do |log| %>
75
75
  <div class="mb-2 pb-2 border-bottom d-flex justify-content-between align-items-center">
76
76
  <p class="mb-0"><%= log[1] %></p>
77
- <small class="text-muted ms-4"><%= I18n.l(Time.parse(log[0]), format: '%H:%M:%S') %></small>
77
+ <small class="ms-4"><%= local_time(Time.parse(log[0]), format: "%H:%M:%S", class: "text-muted") %></small>
78
78
  </div>
79
79
  <% end %>
80
80
  </div>
@@ -85,4 +85,4 @@
85
85
  <%= link_to '', lato.operation_path(operation), class: 'd-none', data: { lato_operation_target: 'update', turbo_frame: '_self' } %>
86
86
  <% end %>
87
87
  </div>
88
- <% end %>
88
+ <% end %>
data/config/importmap.rb CHANGED
@@ -5,4 +5,5 @@ pin "@rails/activestorage", to: "activestorage.esm.js", preload: true
5
5
 
6
6
  pin "bootstrap", to: "bootstrap.js", preload: true
7
7
  # pin "@popperjs/core", to: "popper.js", preload: true
8
+ pin "local-time", to: "https://ga.jspm.io/npm:local-time@3.0.3/app/assets/javascripts/local-time.es2017-esm.js"
8
9
  pin "lodash", to: "https://ga.jspm.io/npm:lodash@4.17.21/lodash.js"
data/lib/lato/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lato
2
- VERSION = "3.20.0"
2
+ VERSION = "3.22.0"
3
3
  end
data/lib/lato.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "kaminari"
2
+ require "local_time"
2
3
  require "bootstrap"
3
4
  require "browser"
4
5
  require "rotp"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lato
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.20.0
4
+ version: 3.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregorio Galante
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: local_time
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: browser
84
98
  requirement: !ruby/object:Gem::Requirement