trestle 0.10.0.pre → 0.10.0.pre2
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/.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
|