avo-record_link_field 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []