avo-record_link_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: f6fbdb1c3f2e5fbc2279dfff61b81a493bd1098e9eb5399cd8585098835529c8
4
+ data.tar.gz: 39c30aa5ca96c059699c67ac5fc843a5b4ac4243ac0d2cc66beebf3e622e038e
5
+ SHA512:
6
+ metadata.gz: 7fa148ad3a375f94a72b666cdc87e026e42ac6c329080017819ed8ae58025bd6339257729163b338d72eccd779c8d19fa8e024093db0a2708f3b9dc20fae3df3
7
+ data.tar.gz: 88d1abadf49606b6dc22bb449e2848fd148140de787ddaf2b6e83beaaf4d5f6e5d097de23142aaf83a18a884c2151412bb4f6374e5eca48c6ac5037c194ca3c2
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # Avo `record_link` Field
2
+
3
+ A simple record link field for [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/record_link.html](https://docs.avohq.io/3.0/fields/record_link.html)
6
+
7
+ ## Usage
8
+
9
+ ```ruby
10
+ field :post, as: :record_link
11
+ ```
12
+
@@ -0,0 +1,17 @@
1
+ $:.push File.expand_path("lib", __dir__)
2
+
3
+ require "avo/record_link_field/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "avo-record_link_field"
7
+ spec.version = Avo::RecordLinkField::VERSION
8
+ spec.summary = "Record link field for Avo."
9
+ spec.description = "Record link 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-record_link_field.gemspec", "Gemfile", "Gemfile.lock"]
14
+
15
+ spec.homepage = "https://avohq.io"
16
+ spec.license = "MIT"
17
+ end
@@ -0,0 +1 @@
1
+ <%= link_to label, resource_view_path, target: @target %>
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ # frozen_string_literal: true
3
+
4
+ class Avo::RecordLinkField::Fields::RecordLinkField::CommonRecordLinkComponent < ViewComponent::Base
5
+ def initialize(record:, add_via_params:, use_resource:)
6
+ @record = record
7
+ @use_resource = use_resource
8
+ @add_via_params = add_via_params
9
+ end
10
+
11
+ def resource_class
12
+ if @use_resource.present?
13
+ Avo.resource_manager.get_resource @use_resource
14
+ else
15
+ Avo.resource_manager.get_resource_by_model_class @record.class
16
+ end
17
+ end
18
+
19
+ def resource
20
+ @resource ||= resource_class.new(record: @record)
21
+ end
22
+
23
+ def label
24
+ @label ||= resource_class.new(record: @record)&.record_title
25
+ end
26
+
27
+ def resource_view_path
28
+ args = {
29
+ record: @record,
30
+ resource: resource,
31
+ }
32
+
33
+ if @add_via_params
34
+ args[:via_resource_class] = resource.class.to_s
35
+ args[:via_record_id] = @record.to_param
36
+ end
37
+
38
+ helpers.resource_view_path(**args)
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ <%= index_field_wrapper **field_wrapper_args do %>
2
+ <%= render Avo::RecordLinkField::Fields::RecordLinkField::CommonRecordLinkComponent.new record: @field.value, use_resource: @field.use_resource, add_via_params: @field.add_via_params %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::RecordLinkField::Fields::RecordLinkField::IndexComponent < Avo::Fields::IndexComponent
4
+ end
@@ -0,0 +1,3 @@
1
+ <%= field_wrapper **field_wrapper_args do %>
2
+ <%= render Avo::RecordLinkField::Fields::RecordLinkField::CommonRecordLinkComponent.new record: @field.value, use_resource: @field.use_resource, add_via_params: @field.add_via_params %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::RecordLinkField::Fields::RecordLinkField::ShowComponent < Avo::Fields::ShowComponent
4
+ end
@@ -0,0 +1,21 @@
1
+ module Avo
2
+ module RecordLinkField
3
+ module Fields
4
+ class RecordLinkField < Avo::Fields::BaseField
5
+ attr_reader :target
6
+ attr_reader :use_resource
7
+ attr_reader :add_via_params
8
+
9
+ def initialize(id, **args, &block)
10
+ super(id, **args, &block)
11
+
12
+ hide_on [:edit, :new]
13
+
14
+ add_string_prop args, :target
15
+ add_string_prop args, :use_resource
16
+ add_boolean_prop args, :add_via_params, true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ require_relative "fields/record_link_field"
2
+
3
+ module Avo
4
+ module RecordLinkField
5
+ class Plugin < Avo::Plugin
6
+ class << self
7
+ def boot
8
+ Avo.plugin_manager.register_field :record_link, Avo::RecordLinkField::Fields::RecordLinkField
9
+ end
10
+
11
+ def init
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ module Avo
2
+ module RecordLinkField
3
+ class Railtie < Rails::Railtie
4
+ initializer "avo-record_link_field.init" do
5
+ Avo.plugin_manager.register Avo::RecordLinkField::Plugin
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Avo
2
+ module RecordLinkField
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/record_link_field/version"
4
+ require "avo/record_link_field/railtie"
5
+
6
+ loader = Zeitwerk::Loader.for_gem_extension(Avo)
7
+ loader.setup
8
+
9
+ module Avo
10
+ module RecordLinkField
11
+ # Your code goes here...
12
+ end
13
+ end
14
+
15
+ # loader.eager_load
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: avo-record_link_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-04-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Record link field for Avo.
14
+ email: adrian@adrianthedev.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - README.md
20
+ - avo-record_link_field.gemspec
21
+ - lib/avo/record_link_field.rb
22
+ - lib/avo/record_link_field/fields/record_link_field.rb
23
+ - lib/avo/record_link_field/fields/record_link_field/common_record_link_component.html.erb
24
+ - lib/avo/record_link_field/fields/record_link_field/common_record_link_component.rb
25
+ - lib/avo/record_link_field/fields/record_link_field/index_component.html.erb
26
+ - lib/avo/record_link_field/fields/record_link_field/index_component.rb
27
+ - lib/avo/record_link_field/fields/record_link_field/show_component.html.erb
28
+ - lib/avo/record_link_field/fields/record_link_field/show_component.rb
29
+ - lib/avo/record_link_field/plugin.rb
30
+ - lib/avo/record_link_field/railtie.rb
31
+ - lib/avo/record_link_field/version.rb
32
+ homepage: https://avohq.io
33
+ licenses:
34
+ - MIT
35
+ metadata: {}
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubygems_version: 3.4.10
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: Record link field for Avo.
55
+ test_files: []