avo-diff_field 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6dcc424a0354283119606fb4ce6c8fbbe6481b2ce1bdecf61d937a36d52174b0
4
+ data.tar.gz: b7f50112c25b580fe6bc27c5c4c682a2a590d3f76b2925f9b82ff0ec61165ef9
5
+ SHA512:
6
+ metadata.gz: 55f43bcf6d320bab05224741f9a8d71c4f03ab2e33aa8bf3bedd4b8afea328ea05844dae19f941330f8ff75261706d3b1d5f11f314cb14b519100bfc8b44cdd3
7
+ data.tar.gz: b8212ef0cbe0e756ec0edee402f097b690d3eb820decd5b6e3894e81ac62a4a4ecd13fc51c5e5443bf6a2b5bfb53b81e3ef320f9f31a90cb312f4b64123ed2c9
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # Avo Diff Field
2
+
3
+ A simple diff field for the [avo-hq/avo](https://github.com/avo-hq/avo), a Rails Admin Panel and Internal Tool Builder.
4
+
5
+ Docs available at [https://docs.avohq.io/3.0/fields/diff.html](https://docs.avohq.io/3.0/fields/diff.html)
6
+
7
+ ## Usage
8
+
9
+ ```ruby
10
+ field :audited_changes, as: :diff
11
+ ```
12
+
@@ -0,0 +1,19 @@
1
+ $:.push File.expand_path("lib", __dir__)
2
+
3
+ require "avo/diff_field/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "avo-diff_field"
7
+ spec.version = Avo::DiffField::VERSION
8
+ spec.summary = "Diff field for Avo."
9
+ spec.description = "Diff field for Avo."
10
+ spec.authors = ["Adrian Marin"]
11
+ spec.email = "adrian@adrianthedev.com"
12
+
13
+ spec.files = Dir["{lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "avo-diff_field.gemspec", "Gemfile", "Gemfile.lock"]
14
+
15
+ spec.homepage = "https://avohq.io"
16
+ spec.license = "MIT"
17
+
18
+ spec.add_dependency "diffy"
19
+ end
@@ -0,0 +1,3 @@
1
+ <%= index_field_wrapper **field_wrapper_args do %>
2
+ <%= @field.value.keys.join(", ").truncate 20 %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::DiffField::Fields::DiffField::IndexComponent < Avo::Fields::IndexComponent
4
+ end
@@ -0,0 +1,26 @@
1
+ <style>
2
+ .diff{overflow:auto;}
3
+ .diff ul{background:#fff;overflow:auto;list-style:none;margin:0;padding:0;display:table;width:100%;}
4
+ .diff del, .diff ins{display:block;text-decoration:none;}
5
+ .diff li{padding:0; display:table-row;margin: 0;height:1em;}
6
+ .diff li.ins{background:#dfd; color:#080}
7
+ .diff li.del{background:#fee; color:#b00}
8
+ /* try 'whitespace:pre;' if you don't want lines to wrap */
9
+ .diff del, .diff ins, .diff span{white-space:pre-wrap;font-family:courier;}
10
+ .diff del strong{font-weight:normal;background:#fcc;}
11
+ .diff ins strong{font-weight:normal;background:#9f9;}
12
+ .diff li.diff-comment { display: none; }
13
+ .diff li.diff-block-info { background: none repeat scroll 0 0 gray; }
14
+ </style>
15
+
16
+ <%= field_wrapper **field_wrapper_args do %>
17
+ <% resource_keys = @field.value.keys %>
18
+ <div class="space-y-2 bg-slate-50">
19
+ <% @diffy_value.each do |value| %>
20
+ <div class="border rounded p-2">
21
+ <div class="uppercase font-bold text-gray-500 text-xs"><%= value[0] %></div>
22
+ <div class="pt-2 pb-2"><%= value[1].to_s(:html).html_safe %></div>
23
+ </div>
24
+ <% end %>
25
+ </div>
26
+ <% end %>
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::DiffField::Fields::DiffField::ShowComponent < Avo::Fields::ShowComponent
4
+ def initialize **args
5
+ super(**args)
6
+ @diffy_value = @field.value&.map do |k, v|
7
+ case @field.record.action
8
+ when 'update'
9
+ left_value = v[0]
10
+ right_value = v[1]
11
+ when 'destroy'
12
+ left_value = v
13
+ right_value = ''
14
+ when 'create'
15
+ left_value = ''
16
+ right_value = v
17
+ end
18
+ [k, Diffy::Diff.new(left_value.to_s, right_value.to_s, format: :html, include_plus_and_minus_in_html: true)]
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ class Avo::DiffField::Fields::DiffField < Avo::Fields::BaseField
2
+ def initialize(id, **args, &block)
3
+ super(id, **args, &block)
4
+
5
+ hide_on [:forms]
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "fields/diff_field"
2
+ require "diffy"
3
+
4
+ module Avo
5
+ module DiffField
6
+ class Plugin < Avo::Plugin
7
+ class << self
8
+ def boot
9
+ Avo.plugin_manager.register_field :diff, Avo::DiffField::Fields::DiffField
10
+ end
11
+
12
+ def init
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module Avo
2
+ module DiffField
3
+ class Railtie < Rails::Railtie
4
+ initializer "avo-diff_field.init" do
5
+ Avo.plugin_manager.register Avo::DiffField::Plugin
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Avo
2
+ module DiffField
3
+ VERSION = "0.0.1" unless const_defined?(:VERSION)
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ require "zeitwerk"
2
+ require "avo"
3
+ require "avo/diff_field/version"
4
+ require "avo/diff_field/railtie"
5
+
6
+ loader = Zeitwerk::Loader.for_gem_extension(Avo)
7
+ loader.setup
8
+
9
+ module Avo
10
+ module DiffField
11
+ # Your code goes here...
12
+ end
13
+ end
14
+
15
+ # loader.eager_load
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: avo-diff_field
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Adrian Marin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-06-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: diffy
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Diff field for Avo.
28
+ email: adrian@adrianthedev.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - README.md
34
+ - avo-diff_field.gemspec
35
+ - lib/avo/diff_field.rb
36
+ - lib/avo/diff_field/fields/diff_field.rb
37
+ - lib/avo/diff_field/fields/diff_field/index_component.html.erb
38
+ - lib/avo/diff_field/fields/diff_field/index_component.rb
39
+ - lib/avo/diff_field/fields/diff_field/show_component.html.erb
40
+ - lib/avo/diff_field/fields/diff_field/show_component.rb
41
+ - lib/avo/diff_field/plugin.rb
42
+ - lib/avo/diff_field/railtie.rb
43
+ - lib/avo/diff_field/version.rb
44
+ homepage: https://avohq.io
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubygems_version: 3.4.10
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Diff field for Avo.
67
+ test_files: []