trestle 0.10.0.pre → 0.10.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +26 -0
- data/.github/workflows/rspec.yml +6 -2
- data/Gemfile +14 -5
- data/app/assets/bundle/trestle/admin.css +4 -4
- data/app/assets/bundle/trestle/admin.js +2 -2
- data/app/controllers/concerns/trestle/controller/turbo_stream.rb +12 -0
- data/app/controllers/concerns/trestle/resource/controller/actions.rb +3 -3
- data/app/controllers/trestle/application_controller.rb +1 -1
- data/app/helpers/trestle/modal_helper.rb +0 -5
- data/app/helpers/trestle/turbo/frame_helper.rb +29 -0
- data/app/helpers/trestle/turbo/stream_helper.rb +9 -0
- data/app/helpers/trestle/turbo/tag_builder.rb +21 -0
- data/app/helpers/trestle/url_helper.rb +1 -1
- data/app/views/layouts/trestle/admin.html.erb +1 -1
- data/app/views/layouts/trestle/admin.turbo_stream.erb +2 -9
- data/app/views/trestle/application/_header.html.erb +12 -10
- data/app/views/trestle/resource/create.turbo_stream.erb +1 -5
- data/app/views/trestle/resource/destroy.turbo_stream.erb +1 -1
- data/app/views/trestle/resource/edit.html.erb +2 -0
- data/app/views/trestle/resource/index.html.erb +5 -0
- data/app/views/trestle/resource/new.html.erb +5 -0
- data/app/views/trestle/resource/show.html.erb +2 -0
- data/app/views/trestle/resource/update.turbo_stream.erb +1 -5
- data/app/views/trestle/shared/_sidebar.html.erb +2 -2
- data/frontend/css/components/_alerts.scss +22 -20
- data/frontend/css/components/_avatar.scss +12 -12
- data/frontend/css/components/_background.scss +1 -1
- data/frontend/css/components/_breadcrumbs.scss +8 -29
- data/frontend/css/components/_buttons.scss +3 -3
- data/frontend/css/components/_datepicker.scss +3 -3
- data/frontend/css/components/_dropdown.scss +18 -26
- data/frontend/css/components/_forms.scss +4 -4
- data/frontend/css/components/_grid.scss +29 -0
- data/frontend/css/components/_media-grid.scss +1 -1
- data/frontend/css/components/_modal.scss +4 -4
- data/frontend/css/components/_pagination.scss +4 -8
- data/frontend/css/components/_popover.scss +1 -1
- data/frontend/css/components/_scopes.scss +4 -10
- data/frontend/css/components/_select.scss +8 -9
- data/frontend/css/components/_sort.scss +1 -1
- data/frontend/css/components/_table.scss +5 -5
- data/frontend/css/components/_tabs.scss +11 -18
- data/frontend/css/components/_tags.scss +16 -6
- data/frontend/css/components/_toolbars.scss +9 -9
- data/frontend/css/core/_functions.scss +0 -8
- data/frontend/css/core/_theme.scss +3 -0
- data/frontend/css/core/_typography.scss +12 -19
- data/frontend/css/index.scss +3 -1
- data/frontend/css/layout/_base.scss +4 -2
- data/frontend/css/layout/_content-header.scss +71 -0
- data/frontend/css/layout/_footer.scss +5 -7
- data/frontend/css/layout/_main-content.scss +107 -0
- data/frontend/css/layout/_navigation.scss +111 -49
- data/frontend/css/layout/_sidebar.scss +58 -34
- data/frontend/css/variables/_bootstrap.scss +30 -21
- data/frontend/css/variables/_trestle.scss +17 -17
- data/frontend/js/controllers/batch_action_controller.js +59 -0
- data/frontend/js/controllers/checkbox_select_controller.js +3 -0
- data/lib/trestle/engine.rb +18 -16
- data/lib/trestle/resource/toolbar.rb +18 -8
- data/lib/trestle/sprockets_compressor.rb +16 -0
- data/lib/trestle/toolbar/context.rb +7 -4
- data/lib/trestle/toolbar/menu.rb +8 -5
- data/lib/trestle/version.rb +1 -1
- data/package.json +1 -1
- data/trestle.gemspec +5 -9
- data/yarn.lock +17 -32
- metadata +34 -69
- data/app/controllers/concerns/trestle/controller/turbo.rb +0 -21
- data/app/helpers/trestle/turbo_frame_helper.rb +0 -34
- data/frontend/css/layout/_content.scss +0 -173
@@ -0,0 +1,59 @@
|
|
1
|
+
import ApplicationController from './application_controller'
|
2
|
+
|
3
|
+
export default class extends ApplicationController {
|
4
|
+
static outlets = ['checkbox-select']
|
5
|
+
|
6
|
+
connect () {
|
7
|
+
if (!this.hasCheckboxSelectOutlet) {
|
8
|
+
// Set default outlet if none specified
|
9
|
+
this.element.setAttribute(`data-${this.identifier}-checkbox-select-outlet`, '.trestle-table')
|
10
|
+
}
|
11
|
+
|
12
|
+
this.baseHref = this.element.href
|
13
|
+
|
14
|
+
this.update()
|
15
|
+
}
|
16
|
+
|
17
|
+
update () {
|
18
|
+
this.toggleEnabled()
|
19
|
+
this.updateHref()
|
20
|
+
}
|
21
|
+
|
22
|
+
toggleEnabled () {
|
23
|
+
this.element.classList.toggle('disabled', this.checkboxes.length === 0)
|
24
|
+
}
|
25
|
+
|
26
|
+
updateHref () {
|
27
|
+
this.element.href = this.hrefWithSelectedIds
|
28
|
+
}
|
29
|
+
|
30
|
+
get checkboxes () {
|
31
|
+
if (this.hasCheckboxSelectOutlet) {
|
32
|
+
return this.checkboxSelectOutlet.checked
|
33
|
+
} else {
|
34
|
+
return []
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
get selectedIds () {
|
39
|
+
return this.checkboxes.map(c => c.value)
|
40
|
+
}
|
41
|
+
|
42
|
+
get hrefWithSelectedIds () {
|
43
|
+
const ids = this.selectedIds
|
44
|
+
|
45
|
+
if (ids.length) {
|
46
|
+
return `${this.baseHref}?ids=${ids.join(',')}`
|
47
|
+
} else {
|
48
|
+
return this.baseHref
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
checkboxSelectOutletConnected (outlet, element) {
|
53
|
+
element.addEventListener('checkbox-select:change', this.update.bind(this))
|
54
|
+
}
|
55
|
+
|
56
|
+
checkboxSelectOutletDisconnected (outlet, element) {
|
57
|
+
element.removeEventListener('checkbox-select:change', this.update.bind(this))
|
58
|
+
}
|
59
|
+
}
|
@@ -5,6 +5,7 @@ export default class extends ApplicationController {
|
|
5
5
|
|
6
6
|
toggle () {
|
7
7
|
this.updateSelectAllState()
|
8
|
+
this.dispatch('change')
|
8
9
|
}
|
9
10
|
|
10
11
|
toggleAll () {
|
@@ -13,6 +14,8 @@ export default class extends ApplicationController {
|
|
13
14
|
this.checkboxTargets.forEach((checkbox) => {
|
14
15
|
checkbox.checked = isChecked
|
15
16
|
})
|
17
|
+
|
18
|
+
this.dispatch('change')
|
16
19
|
}
|
17
20
|
|
18
21
|
updateSelectAllState () {
|
data/lib/trestle/engine.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "turbo-rails"
|
2
|
+
|
1
3
|
module Trestle
|
2
4
|
class Engine < ::Rails::Engine
|
3
5
|
isolate_namespace Trestle
|
@@ -30,22 +32,6 @@ module Trestle
|
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
33
|
-
initializer "turbo.mimetype" do
|
34
|
-
Mime::Type.register "text/vnd.turbo-stream.html", :turbo_stream unless Mime[:turbo_stream]
|
35
|
-
end
|
36
|
-
|
37
|
-
initializer "turbo.renderer" do
|
38
|
-
ActiveSupport.on_load(:action_controller) do
|
39
|
-
# Compatibility fix for Rails 5.2
|
40
|
-
delegate :media_type, to: "@_response" unless instance_methods.include?(:media_type)
|
41
|
-
|
42
|
-
ActionController::Renderers.add :turbo_stream do |turbo_streams_html, options|
|
43
|
-
self.content_type = Mime[:turbo_stream] if media_type.nil?
|
44
|
-
turbo_streams_html
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
35
|
config.to_prepare do
|
50
36
|
Engine.reset_helpers!
|
51
37
|
end
|
@@ -55,6 +41,22 @@ module Trestle
|
|
55
41
|
reloader.install(app) unless app.config.eager_load
|
56
42
|
end
|
57
43
|
|
44
|
+
# For compatibility with the `sassc-rails`` gem, register a custom compressor that excludes the
|
45
|
+
# Trestle admin stylesheets as a) they are already minimized and b) libsass is not compatible with
|
46
|
+
# some of the newer CSS syntax that is used.
|
47
|
+
#
|
48
|
+
# To avoid this being necessary, it is recommended that either
|
49
|
+
# 1) `sassc-rails` is removed from the Gemfile (if not required),
|
50
|
+
# 2) the `sassc-embedded` gem is added to the Gemfile, or
|
51
|
+
# 3) `sassc-rails` is replaced with `dartsass-sprockets`
|
52
|
+
config.assets.configure do |env|
|
53
|
+
if original_compressor = config.assets.css_compressor
|
54
|
+
require "trestle/sprockets_compressor"
|
55
|
+
original_compressor = Sprockets.compressors['text/css'][original_compressor] if original_compressor.is_a?(Symbol)
|
56
|
+
config.assets.css_compressor = Trestle::SprocketsCompressor.new(original_compressor)
|
57
|
+
end
|
58
|
+
end if defined?(SassC::Rails)
|
59
|
+
|
58
60
|
def reset_helpers!
|
59
61
|
@helpers = nil
|
60
62
|
end
|
@@ -5,20 +5,30 @@ module Trestle
|
|
5
5
|
delegate :admin, :instance, to: :@template
|
6
6
|
delegate :translate, :t, to: :admin
|
7
7
|
|
8
|
-
def new
|
9
|
-
|
8
|
+
def new(label: t("buttons.new", default: "New %{model_name}"), **attrs)
|
9
|
+
return unless action?(:new)
|
10
|
+
|
11
|
+
defaults = { action: :new, style: :light, icon: "fa fa-plus", class: "btn-new-resource" }
|
12
|
+
link(label, defaults.merge(attrs))
|
10
13
|
end
|
11
14
|
|
12
|
-
def save
|
13
|
-
|
15
|
+
def save(label: t("buttons.save", default: "Save %{model_name}"), **attrs)
|
16
|
+
defaults = { style: :success }
|
17
|
+
button(label, defaults.merge(attrs))
|
14
18
|
end
|
15
19
|
|
16
|
-
def delete
|
17
|
-
|
20
|
+
def delete(label: t("buttons.delete", default: "Delete %{model_name}"), **attrs)
|
21
|
+
return unless action?(:destroy)
|
22
|
+
|
23
|
+
defaults = Trestle::Options.new(action: :destroy, style: :danger, icon: "fa fa-trash", data: { turbo_method: "delete", controller: "confirm-delete", confirm_delete_placement_value: "bottom" })
|
24
|
+
link(label, instance, defaults.merge(attrs))
|
18
25
|
end
|
19
26
|
|
20
|
-
def dismiss
|
21
|
-
|
27
|
+
def dismiss(label: t("buttons.ok", default: "OK"), **attrs)
|
28
|
+
return unless @template.modal_request?
|
29
|
+
|
30
|
+
defaults = Trestle::Options.new(type: :button, style: :light, data: { bs_dismiss: "modal" })
|
31
|
+
button(label, defaults.merge(attrs))
|
22
32
|
end
|
23
33
|
alias ok dismiss
|
24
34
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Trestle
|
2
|
+
class SprocketsCompressor
|
3
|
+
def initialize(original_compressor, excluded_files: ["trestle/admin"])
|
4
|
+
@original_compressor = original_compressor
|
5
|
+
@excluded_files = excluded_files
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(input)
|
9
|
+
if @excluded_files.include?(input[:name])
|
10
|
+
input[:data]
|
11
|
+
else
|
12
|
+
@original_compressor.call(input)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -21,11 +21,10 @@ module Trestle
|
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
24
|
-
def
|
25
|
-
|
26
|
-
end
|
24
|
+
def self.ruby2_keywords(*)
|
25
|
+
end unless respond_to?(:ruby2_keywords, true)
|
27
26
|
|
28
|
-
def method_missing(name, *args, &block)
|
27
|
+
ruby2_keywords def method_missing(name, *args, &block)
|
29
28
|
result = builder.send(name, *args, &block)
|
30
29
|
|
31
30
|
if builder.builder_methods.include?(name)
|
@@ -34,6 +33,10 @@ module Trestle
|
|
34
33
|
result
|
35
34
|
end
|
36
35
|
end
|
36
|
+
|
37
|
+
def respond_to_missing?(name, include_all=false)
|
38
|
+
builder.respond_to?(name) || super
|
39
|
+
end
|
37
40
|
end
|
38
41
|
end
|
39
42
|
end
|
data/lib/trestle/toolbar/menu.rb
CHANGED
@@ -28,13 +28,17 @@ module Trestle
|
|
28
28
|
end
|
29
29
|
|
30
30
|
class Builder
|
31
|
-
delegate :admin_link_to, :content_tag, to: :@template
|
31
|
+
delegate :admin_link_to, :content_tag, :tag, to: :@template
|
32
32
|
|
33
33
|
def initialize(menu, template)
|
34
34
|
@menu, @template = menu, template
|
35
35
|
end
|
36
36
|
|
37
37
|
def link(content, instance_or_url=nil, options={}, &block)
|
38
|
+
if instance_or_url.is_a?(Hash)
|
39
|
+
instance_or_url, options = nil, instance_or_url
|
40
|
+
end
|
41
|
+
|
38
42
|
options[:class] = Array(options[:class])
|
39
43
|
options[:class] << "dropdown-item"
|
40
44
|
|
@@ -42,16 +46,15 @@ module Trestle
|
|
42
46
|
end
|
43
47
|
|
44
48
|
def header(text)
|
45
|
-
item(class: "dropdown-header")
|
49
|
+
item { content_tag(:h6, text, class: "dropdown-header") }
|
46
50
|
end
|
47
51
|
|
48
52
|
def divider
|
49
|
-
item(class: "divider")
|
53
|
+
item { tag(:hr, class: "dropdown-divider") }
|
50
54
|
end
|
51
55
|
|
52
56
|
def item(options={}, &block)
|
53
|
-
|
54
|
-
item = block_given? ? content_tag(:li, opts, &block) : content_tag(:li, "", opts)
|
57
|
+
item = block_given? ? content_tag(:li, options, &block) : content_tag(:li, "", options)
|
55
58
|
|
56
59
|
@menu.items << item
|
57
60
|
|
data/lib/trestle/version.rb
CHANGED
data/package.json
CHANGED
data/trestle.gemspec
CHANGED
@@ -18,19 +18,15 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = ">= 2.
|
21
|
+
spec.required_ruby_version = ">= 2.6.0"
|
22
22
|
|
23
|
-
spec.add_dependency "railties",
|
24
|
-
spec.add_dependency "activemodel",
|
25
|
-
spec.add_dependency "
|
23
|
+
spec.add_dependency "railties", ">= 6.0.0"
|
24
|
+
spec.add_dependency "activemodel", ">= 6.0.0"
|
25
|
+
spec.add_dependency "turbo-rails", ">= 2.0.0"
|
26
|
+
spec.add_dependency "kaminari", ">= 1.1.0"
|
26
27
|
|
27
28
|
spec.add_development_dependency "rspec-rails", ">= 5.1.2"
|
28
29
|
spec.add_development_dependency "rspec-html-matchers", "~> 0.10.0"
|
29
30
|
spec.add_development_dependency "database_cleaner", "~> 2.0.2"
|
30
31
|
spec.add_development_dependency "ammeter", "~> 1.1.5"
|
31
|
-
spec.add_development_dependency "i18n-js", "~> 4.2.3"
|
32
|
-
|
33
|
-
spec.add_development_dependency "bundler"
|
34
|
-
spec.add_development_dependency "rake"
|
35
|
-
spec.add_development_dependency "sqlite3"
|
36
32
|
end
|
data/yarn.lock
CHANGED
@@ -232,16 +232,16 @@
|
|
232
232
|
dependencies:
|
233
233
|
"@babel/types" "^7.24.7"
|
234
234
|
|
235
|
-
"@babel/helper-string-parser@^7.24.1":
|
236
|
-
version "7.24.1"
|
237
|
-
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
|
238
|
-
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
|
239
|
-
|
240
235
|
"@babel/helper-string-parser@^7.24.7":
|
241
236
|
version "7.24.7"
|
242
237
|
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2"
|
243
238
|
integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==
|
244
239
|
|
240
|
+
"@babel/helper-string-parser@^7.24.8":
|
241
|
+
version "7.24.8"
|
242
|
+
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
|
243
|
+
integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
|
244
|
+
|
245
245
|
"@babel/helper-validator-identifier@^7.24.5", "@babel/helper-validator-identifier@^7.24.7":
|
246
246
|
version "7.24.7"
|
247
247
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
|
@@ -979,13 +979,13 @@
|
|
979
979
|
debug "^4.3.1"
|
980
980
|
globals "^11.1.0"
|
981
981
|
|
982
|
-
"@babel/types@^7.
|
983
|
-
version "7.24.
|
984
|
-
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.
|
985
|
-
integrity sha512-
|
982
|
+
"@babel/types@^7.18.6":
|
983
|
+
version "7.24.9"
|
984
|
+
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73"
|
985
|
+
integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==
|
986
986
|
dependencies:
|
987
|
-
"@babel/helper-string-parser" "^7.24.
|
988
|
-
"@babel/helper-validator-identifier" "^7.24.
|
987
|
+
"@babel/helper-string-parser" "^7.24.8"
|
988
|
+
"@babel/helper-validator-identifier" "^7.24.7"
|
989
989
|
to-fast-properties "^2.0.0"
|
990
990
|
|
991
991
|
"@babel/types@^7.24.7", "@babel/types@^7.4.4":
|
@@ -1549,25 +1549,10 @@ caniuse-api@^3.0.0:
|
|
1549
1549
|
lodash.memoize "^4.1.2"
|
1550
1550
|
lodash.uniq "^4.5.0"
|
1551
1551
|
|
1552
|
-
caniuse-lite@^1.0.0:
|
1553
|
-
version "1.0.
|
1554
|
-
resolved "https://registry.
|
1555
|
-
integrity sha512-
|
1556
|
-
|
1557
|
-
caniuse-lite@^1.0.30001517:
|
1558
|
-
version "1.0.30001585"
|
1559
|
-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401"
|
1560
|
-
integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==
|
1561
|
-
|
1562
|
-
caniuse-lite@^1.0.30001599:
|
1563
|
-
version "1.0.30001621"
|
1564
|
-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e"
|
1565
|
-
integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==
|
1566
|
-
|
1567
|
-
caniuse-lite@^1.0.30001629:
|
1568
|
-
version "1.0.30001638"
|
1569
|
-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001638.tgz#598e1f0c2ac36f37ebc3f5b8887a32ca558e5d56"
|
1570
|
-
integrity sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==
|
1552
|
+
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001629:
|
1553
|
+
version "1.0.30001643"
|
1554
|
+
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz"
|
1555
|
+
integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==
|
1571
1556
|
|
1572
1557
|
chalk@^2.4.2:
|
1573
1558
|
version "2.4.2"
|
@@ -2459,7 +2444,7 @@ ms@2.1.2:
|
|
2459
2444
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
2460
2445
|
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
2461
2446
|
|
2462
|
-
nanoid@^3.3.7:
|
2447
|
+
nanoid@^3.3.6, nanoid@^3.3.7:
|
2463
2448
|
version "3.3.7"
|
2464
2449
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
|
2465
2450
|
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
|
@@ -3107,7 +3092,7 @@ slash@^4.0.0:
|
|
3107
3092
|
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
|
3108
3093
|
integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
|
3109
3094
|
|
3110
|
-
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
|
3095
|
+
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0:
|
3111
3096
|
version "1.2.0"
|
3112
3097
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
3113
3098
|
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trestle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.0.
|
4
|
+
version: 0.10.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Pohlenz
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07
|
11
|
+
date: 2024-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -16,28 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 6.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 6.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 6.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: turbo-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: kaminari
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,62 +122,6 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: 1.1.5
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: i18n-js
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 4.2.3
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 4.2.3
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: bundler
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rake
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: sqlite3
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
125
|
description: Trestle is a modern, responsive admin framework for Ruby on Rails.
|
168
126
|
email:
|
169
127
|
- sam@sampohlenz.com
|
@@ -174,6 +132,7 @@ files:
|
|
174
132
|
- ".babelrc"
|
175
133
|
- ".browserslistrc"
|
176
134
|
- ".gitattributes"
|
135
|
+
- ".github/workflows/release.yml"
|
177
136
|
- ".github/workflows/rspec.yml"
|
178
137
|
- ".gitignore"
|
179
138
|
- ".rspec"
|
@@ -285,7 +244,7 @@ files:
|
|
285
244
|
- app/controllers/concerns/trestle/controller/modal.rb
|
286
245
|
- app/controllers/concerns/trestle/controller/title.rb
|
287
246
|
- app/controllers/concerns/trestle/controller/toolbars.rb
|
288
|
-
- app/controllers/concerns/trestle/controller/
|
247
|
+
- app/controllers/concerns/trestle/controller/turbo_stream.rb
|
289
248
|
- app/controllers/concerns/trestle/resource/controller/actions.rb
|
290
249
|
- app/controllers/concerns/trestle/resource/controller/data_methods.rb
|
291
250
|
- app/controllers/concerns/trestle/resource/controller/redirection.rb
|
@@ -318,7 +277,9 @@ files:
|
|
318
277
|
- app/helpers/trestle/timestamp_helper.rb
|
319
278
|
- app/helpers/trestle/title_helper.rb
|
320
279
|
- app/helpers/trestle/toolbars_helper.rb
|
321
|
-
- app/helpers/trestle/
|
280
|
+
- app/helpers/trestle/turbo/frame_helper.rb
|
281
|
+
- app/helpers/trestle/turbo/stream_helper.rb
|
282
|
+
- app/helpers/trestle/turbo/tag_builder.rb
|
322
283
|
- app/helpers/trestle/url_helper.rb
|
323
284
|
- app/views/kaminari/trestle/_first_page.html.erb
|
324
285
|
- app/views/kaminari/trestle/_gap.html.erb
|
@@ -391,6 +352,7 @@ files:
|
|
391
352
|
- frontend/css/components/_datepicker.scss
|
392
353
|
- frontend/css/components/_dropdown.scss
|
393
354
|
- frontend/css/components/_forms.scss
|
355
|
+
- frontend/css/components/_grid.scss
|
394
356
|
- frontend/css/components/_media-grid.scss
|
395
357
|
- frontend/css/components/_modal.scss
|
396
358
|
- frontend/css/components/_pagination.scss
|
@@ -414,9 +376,10 @@ files:
|
|
414
376
|
- frontend/css/icons/_fontawesome.scss
|
415
377
|
- frontend/css/index.scss
|
416
378
|
- frontend/css/layout/_base.scss
|
417
|
-
- frontend/css/layout/_content.scss
|
379
|
+
- frontend/css/layout/_content-header.scss
|
418
380
|
- frontend/css/layout/_footer.scss
|
419
381
|
- frontend/css/layout/_header.scss
|
382
|
+
- frontend/css/layout/_main-content.scss
|
420
383
|
- frontend/css/layout/_navigation.scss
|
421
384
|
- frontend/css/layout/_sidebar.scss
|
422
385
|
- frontend/css/support/_sprockets.scss
|
@@ -427,6 +390,7 @@ files:
|
|
427
390
|
- frontend/images/bright-squares.png
|
428
391
|
- frontend/index.js
|
429
392
|
- frontend/js/controllers/application_controller.js
|
393
|
+
- frontend/js/controllers/batch_action_controller.js
|
430
394
|
- frontend/js/controllers/checkbox_select_controller.js
|
431
395
|
- frontend/js/controllers/confirm_controller.js
|
432
396
|
- frontend/js/controllers/confirm_delete_controller.js
|
@@ -565,6 +529,7 @@ files:
|
|
565
529
|
- lib/trestle/scopes/block.rb
|
566
530
|
- lib/trestle/scopes/definition.rb
|
567
531
|
- lib/trestle/scopes/scope.rb
|
532
|
+
- lib/trestle/sprockets_compressor.rb
|
568
533
|
- lib/trestle/tab.rb
|
569
534
|
- lib/trestle/table.rb
|
570
535
|
- lib/trestle/table/actions_column.rb
|
@@ -587,7 +552,7 @@ homepage: https://www.trestle.io
|
|
587
552
|
licenses:
|
588
553
|
- LGPL-3.0-only
|
589
554
|
metadata: {}
|
590
|
-
post_install_message:
|
555
|
+
post_install_message:
|
591
556
|
rdoc_options: []
|
592
557
|
require_paths:
|
593
558
|
- lib
|
@@ -595,7 +560,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
595
560
|
requirements:
|
596
561
|
- - ">="
|
597
562
|
- !ruby/object:Gem::Version
|
598
|
-
version: 2.
|
563
|
+
version: 2.6.0
|
599
564
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
600
565
|
requirements:
|
601
566
|
- - ">="
|
@@ -603,7 +568,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
603
568
|
version: '0'
|
604
569
|
requirements: []
|
605
570
|
rubygems_version: 3.5.11
|
606
|
-
signing_key:
|
571
|
+
signing_key:
|
607
572
|
specification_version: 4
|
608
573
|
summary: A modern, responsive admin framework for Ruby on Rails
|
609
574
|
test_files: []
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Trestle
|
2
|
-
module Controller
|
3
|
-
module Turbo
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
etag { :frame if turbo_frame_request? }
|
8
|
-
helper_method :turbo_frame_request?, :turbo_frame_request_id
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
def turbo_frame_request?
|
13
|
-
turbo_frame_request_id.present?
|
14
|
-
end
|
15
|
-
|
16
|
-
def turbo_frame_request_id
|
17
|
-
request.headers["Turbo-Frame"]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Trestle
|
2
|
-
module TurboFrameHelper
|
3
|
-
def index_turbo_frame(options={}, &block)
|
4
|
-
defaults = {
|
5
|
-
id: "index",
|
6
|
-
data: {
|
7
|
-
controller: "reloadable",
|
8
|
-
turbo_action: "advance"
|
9
|
-
}
|
10
|
-
}
|
11
|
-
|
12
|
-
content_tag("turbo-frame", defaults.merge(options), &block)
|
13
|
-
end
|
14
|
-
|
15
|
-
def resource_turbo_frame(instance, options={}, &block)
|
16
|
-
defaults = {
|
17
|
-
id: dom_id(instance),
|
18
|
-
target: ("_top" unless modal_request?),
|
19
|
-
data: {
|
20
|
-
controller: resource_turbo_frame_controllers.join(" ").presence
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
content_tag("turbo-frame", defaults.merge(options), &block)
|
25
|
-
end
|
26
|
-
|
27
|
-
def resource_turbo_frame_controllers
|
28
|
-
controllers = []
|
29
|
-
controllers << "modal-frame" if modal_request?
|
30
|
-
controllers << "deprecated--init" if modal_request? || request.post? || turbo_frame_request?
|
31
|
-
controllers
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|