avo-money_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: cf6df3e68f4d47bcfe34a7ab5edb31c0f96cbf3648229d76e7ea96a0d6e51a58
4
+ data.tar.gz: fa4b46449d39734e5c5244fb9ba73b8e5ae64b777065d775758206bc20413573
5
+ SHA512:
6
+ metadata.gz: 0b0bf1ee72b7496aee9be4eb5afcf6e3486911b38a836d4f29ab4397178dd8a133a9cd58857c0fd03b266a538c534595fac178d87d36425775d019930fc47b14
7
+ data.tar.gz: 3e7a47c3e9294d6d84a943ccedaef051c5dd2b5089ecccd84a2cf11bd92dffb7344086fd9614004bc08367d0880c7fa8ad9c6d6c7f1b5829234420a789de6b39
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Avo Money Field
2
+
3
+ A simple money field for https://github.com/avo-hq/avo.
@@ -0,0 +1,18 @@
1
+ $:.push File.expand_path("lib", __dir__)
2
+
3
+ require "avo/money_field/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "avo-money_field"
7
+ spec.version = Avo::MoneyField::VERSION
8
+ spec.summary = "Money field for Avo."
9
+ spec.description = "Money field for Avo."
10
+ spec.authors = ["Adrian Marin"]
11
+ spec.email = "adrian@adrianthedev.com"
12
+ spec.files = ["lib/avo_money_field.rb"]
13
+
14
+ spec.files = Dir["{lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "avo-money_field.gemspec", "Gemfile", "Gemfile.lock"]
15
+
16
+ spec.homepage = "https://avohq.io"
17
+ spec.license = "MIT"
18
+ end
@@ -0,0 +1,22 @@
1
+ <%= field_wrapper **field_wrapper_args, class: "flex field-wrapper-test" do %>
2
+ <div class="w-full flex flex-1 space-x-2 grow-0">
3
+ <%= form.text_field @field.id,
4
+ value: @field.value,
5
+ class: classes("w-full"),
6
+ data: @field.get_html(:data, view: view, element: :input),
7
+ disabled: disabled?,
8
+ placeholder: @field.placeholder,
9
+ style: @field.get_html(:style, view: view, element: :input),
10
+ multiple: multiple,
11
+ autocomplete: @field.autocomplete
12
+ %>
13
+ <%= @form.select @field.currency_column,
14
+ options_for_select(@field.currencies, selected: @field.currency),
15
+ {},
16
+ class: classes("w-24"),
17
+ disabled: disabled?,
18
+ value: @field.currency,
19
+ autocomplete: @field.autocomplete
20
+ %>
21
+ </div>
22
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::MoneyField::Fields::MoneyField::EditComponent < Avo::Fields::EditComponent
4
+ end
@@ -0,0 +1,3 @@
1
+ <%= index_field_wrapper **field_wrapper_args do %>
2
+ <%= @field.value.format %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::MoneyField::Fields::MoneyField::IndexComponent < Avo::Fields::IndexComponent
4
+ end
@@ -0,0 +1,3 @@
1
+ <%= field_wrapper **field_wrapper_args do %>
2
+ <%= @field.value.format %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::MoneyField::Fields::MoneyField::ShowComponent < Avo::Fields::ShowComponent
4
+ end
@@ -0,0 +1,37 @@
1
+ module Avo
2
+ module MoneyField
3
+ module Fields
4
+ class MoneyField < Avo::Fields::BaseField
5
+ attr_reader :currencies
6
+ attr_reader :currency_suffix
7
+
8
+ def initialize(id, **args, &block)
9
+ super(id, **args, &block)
10
+
11
+ add_array_prop args, :currencies
12
+ currency_suffix = defined?(MoneyRails) ? ::MoneyRails::Configuration.currency_column[:postfix] : :_currency
13
+ add_string_prop args, :currency_suffix, currency_suffix
14
+ end
15
+
16
+ def to_permitted_param
17
+ [id.to_sym, currency_column.to_sym]
18
+ end
19
+
20
+ def fill_field(record, key, value, params)
21
+ record.public_send(:"#{key}=", value)
22
+ record.public_send(:"#{key}#{@currency_suffix}=", params[:"#{key}#{@currency_suffix}"])
23
+
24
+ record
25
+ end
26
+
27
+ def currency
28
+ value.send(:currency)
29
+ end
30
+
31
+ def currency_column
32
+ "#{id}#{currency_suffix}"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "fields/money_field"
2
+
3
+ module Avo
4
+ module MoneyField
5
+ class Plugin < Avo::Plugin
6
+ class << self
7
+ def boot
8
+ Avo.plugin_manager.register_field :money, Avo::MoneyField::Fields::MoneyField
9
+ end
10
+
11
+ def init
12
+ # Avo.plugin_manager.register_field :money, Avo::MoneyField::Fields::MoneyField
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module Avo
2
+ module MoneyField
3
+ class Railtie < Rails::Railtie
4
+ initializer "avo-money_field.init" do
5
+ Avo.plugin_manager.register Avo::MoneyField::Plugin
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Avo
2
+ module MoneyField
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/money_field/version"
4
+ require "avo/money_field/railtie"
5
+
6
+ loader = Zeitwerk::Loader.for_gem_extension(Avo)
7
+ loader.setup
8
+
9
+ module Avo
10
+ module MoneyField
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-money_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-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Money field for Avo.
14
+ email: adrian@adrianthedev.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - README.md
20
+ - avo-money_field.gemspec
21
+ - lib/avo/money_field.rb
22
+ - lib/avo/money_field/fields/money_field.rb
23
+ - lib/avo/money_field/fields/money_field/edit_component.html.erb
24
+ - lib/avo/money_field/fields/money_field/edit_component.rb
25
+ - lib/avo/money_field/fields/money_field/index_component.html.erb
26
+ - lib/avo/money_field/fields/money_field/index_component.rb
27
+ - lib/avo/money_field/fields/money_field/show_component.html.erb
28
+ - lib/avo/money_field/fields/money_field/show_component.rb
29
+ - lib/avo/money_field/plugin.rb
30
+ - lib/avo/money_field/railtie.rb
31
+ - lib/avo/money_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: Money field for Avo.
55
+ test_files: []