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 +7 -0
- data/README.md +12 -0
- data/avo-record_link_field.gemspec +17 -0
- data/lib/avo/record_link_field/fields/record_link_field/common_record_link_component.html.erb +1 -0
- data/lib/avo/record_link_field/fields/record_link_field/common_record_link_component.rb +40 -0
- data/lib/avo/record_link_field/fields/record_link_field/index_component.html.erb +3 -0
- data/lib/avo/record_link_field/fields/record_link_field/index_component.rb +4 -0
- data/lib/avo/record_link_field/fields/record_link_field/show_component.html.erb +3 -0
- data/lib/avo/record_link_field/fields/record_link_field/show_component.rb +4 -0
- data/lib/avo/record_link_field/fields/record_link_field.rb +21 -0
- data/lib/avo/record_link_field/plugin.rb +16 -0
- data/lib/avo/record_link_field/railtie.rb +9 -0
- data/lib/avo/record_link_field/version.rb +5 -0
- data/lib/avo/record_link_field.rb +15 -0
- metadata +55 -0
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,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,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: []
|