para 0.8.1 → 0.8.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1faf348515d9fd8b67b0d7f5622a0c20939dd67
4
- data.tar.gz: 64ba7fd8be6fd5f0afc1a1f71c5f7bc7ef753ffa
3
+ metadata.gz: 70788bd2854ce638f71aa879f8d511eda524bd13
4
+ data.tar.gz: fbd1da0da3c7e6f20cfd2972fb4c65e5a66b057c
5
5
  SHA512:
6
- metadata.gz: da890d70c6a6f205954003a65971aafd1dcc365c96658a18658b5b0422a6af83e69b10c6f9f79f8502d0a9104eff2e6eeb64299fedd0e906c1eacdff6e9c4afc
7
- data.tar.gz: 8f8e638e0a9744381b5dafc6f7228b0fc31d4a094efd8e0d34432698b8a7df26dbd7a48a815fa98bc8986eb1d8217807abd0ba785a120df1719b2c8f584e0af5
6
+ metadata.gz: fa5d051fe408fabd83d66d3e28aa5d22820f5227f047ac2a7097f721dd66ef928ee4bbc88b996211dfb9e682ef755bce6ead4aac74f513a56e107251411b06fe
7
+ data.tar.gz: 2d71c0e5bab1e298f6a25b99192b828f866898e4e6b5a3e84c02e5c39e2ae9393995937baf775a8a7602f05b69821a5f1beb9a46f0ed10adc63417d12fe14ab4
@@ -1,14 +1,12 @@
1
1
  .nested-one-field
2
2
  = form.simple_fields_for attribute_name, resource, nested_attribute_name: attribute_name do |nested_form|
3
3
  - if defined?(collapsible) && collapsible
4
- .panel.panel-default.form-fields
5
- .panel-heading
6
- %h3.panel-title
7
- = link_to "##{ nested_form.nested_resource_dom_id }", class: "nested-input-title collapsed#{ (' has-error' if nested_form.object.errors.any?) }", data: { toggle: 'collapse', :'open-on-insert' => true } do
8
- = nested_form.nested_resource_name
9
- %i.fa.fa-angle-up
4
+ - if resource
5
+ .nested-one-container{ id: dom_identifier }
6
+ = render partial: find_partial_for(model, 'nested_one/container', partial_dir: 'inputs'), locals: { nested_form: nested_form, form: form, model: nested_form.object.class, subclass: subclass, nested_locals: nested_locals }
10
7
 
11
- .panel-body.panel-collapse.form-inputs.collapse{ id: nested_form.nested_resource_dom_id }
12
- = render partial: find_partial_for(model, :fields), locals: { form: nested_form, parent: form.object }.merge(nested_locals)
13
8
  - else
14
9
  = render partial: find_partial_for(model, :fields), locals: { form: nested_form, parent: form.object }.merge(nested_locals)
10
+
11
+ - if defined?(subclass) && subclass
12
+ = render partial: 'para/inputs/nested_one/add_with_subclasses', locals: { form: form, model: model, dom_identifier: dom_identifier, nested_locals: nested_locals, attribute_name: attribute_name, subclasses: subclasses, add_button_label: add_button_label, add_button_class: add_button_class, subclass: subclass }
@@ -0,0 +1,10 @@
1
+ .add-button.nested-one-inset-add-button.dropdown
2
+ %button.btn.btn-shadow.dropdown-toggle{ class: add_button_class, type: 'button', data: { toggle: 'dropdown' } }
3
+ = add_button_label
4
+ %i.fa.fa-angle-down
5
+
6
+ %ul.dropdown-menu
7
+ - subclasses.each do |submodel|
8
+ %li
9
+ = link_to_add_association form, attribute_name, wrap_object: proc { submodel.new }, partial: find_partial_for(submodel, 'nested_one/container', partial_dir: 'inputs'), form_name: 'form', class: 'dropdown-link', data: { :'association-insertion-node' => "##{ dom_identifier }", :'association-insertion-method' => 'append' }, render_options: { nested_attribute_name: attribute_name, locals: { form: form, model: submodel, subclass: subclass, nested_locals: nested_locals } } do
10
+ = submodel.model_name.human
@@ -0,0 +1,9 @@
1
+ .panel.panel-default.form-fields
2
+ .panel-heading
3
+ %h3.panel-title
4
+ = link_to "##{ form.nested_resource_dom_id }", class: "nested-input-title collapsed#{ (' has-error' if form.object.errors.any?) }", data: { toggle: 'collapse', :'open-on-insert' => true } do
5
+ = form.nested_resource_name
6
+ %i.fa.fa-angle-up
7
+
8
+ .panel-body.panel-collapse.form-inputs.collapse{ id: form.nested_resource_dom_id }
9
+ = render partial: find_partial_for(model, :fields), locals: { form: form, parent: form.object }.merge(nested_locals)
@@ -5,6 +5,35 @@ module Para
5
5
 
6
6
  private
7
7
 
8
+ def dom_identifier
9
+ @dom_identifier ||= begin
10
+ name = attribute_name
11
+ id = @builder.object.id || "_new_#{ parent_nested_field&.attribute_name }_"
12
+ time = (Time.now.to_f * 1000).to_i
13
+ random = (rand * 1000).to_i
14
+ [name, id, time, random].join('-')
15
+ end
16
+ end
17
+
18
+ def subclass
19
+ @subclass ||= options.fetch(:subclass, subclasses.presence)
20
+ end
21
+
22
+ def subclasses
23
+ options.fetch(
24
+ :subclasses,
25
+ (model.try(:descendants) || []).sort_by { |m| m.model_name.human }
26
+ )
27
+ end
28
+
29
+ def add_button_label
30
+ options.fetch(:add_button_label) { I18n.t('para.form.nested.add') }
31
+ end
32
+
33
+ def add_button_class
34
+ options.fetch(:add_button_class) { 'btn-primary' }
35
+ end
36
+
8
37
  # This allows to access the parent nested field from a child nested field
9
38
  # and fetch some of its data. This is useful for deeply nested cocoon
10
39
  # fields.
@@ -29,9 +29,9 @@ module Para
29
29
  nested_locals: locals,
30
30
  subclass: subclass,
31
31
  subclasses: subclasses,
32
- inset: inset?,
33
32
  add_button_label: add_button_label,
34
33
  add_button_class: add_button_class,
34
+ inset: inset?,
35
35
  render_partial: render_partial?,
36
36
  remote_partial_params: remote_partial_params
37
37
  }
@@ -47,39 +47,10 @@ module Para
47
47
  @model ||= parent_model.reflect_on_association(attribute_name).klass
48
48
  end
49
49
 
50
- def dom_identifier
51
- @dom_identifier ||= begin
52
- name = attribute_name
53
- id = @builder.object.id || "_new_#{ parent_nested_field&.attribute_name }_"
54
- time = (Time.now.to_f * 1000).to_i
55
- random = (rand * 1000).to_i
56
- [name, id, time, random].join('-')
57
- end
58
- end
59
-
60
- def subclass
61
- @subclass ||= options.fetch(:subclass, subclasses.presence)
62
- end
63
-
64
- def subclasses
65
- options.fetch(
66
- :subclasses,
67
- (model.try(:descendants) || []).sort_by { |m| m.model_name.human }
68
- )
69
- end
70
-
71
50
  def inset?
72
51
  options.fetch(:inset, false)
73
52
  end
74
-
75
- def add_button_label
76
- options.fetch(:add_button_label) { I18n.t('para.form.nested.add') }
77
- end
78
-
79
- def add_button_class
80
- options.fetch(:add_button_class) { 'btn-primary' }
81
- end
82
-
53
+
83
54
  def render_partial?
84
55
  options[:render_partial] || object.errors.any? || (object.persisted? && inset?)
85
56
  end
@@ -1,6 +1,8 @@
1
1
  module Para
2
2
  module Inputs
3
3
  class NestedOneInput < NestedBaseInput
4
+ attr_reader :model
5
+
4
6
  def input(wrapper_options = nil)
5
7
  input_html_options[:class] << "nested-one"
6
8
 
@@ -9,7 +11,7 @@ module Para
9
11
  relation = parent_model.reflect_on_association(attribute_name)
10
12
 
11
13
  resource = object.send(attribute_name)
12
- model = (resource && resource.class) || relation.klass
14
+ @model = (resource && resource.class) || relation.klass
13
15
 
14
16
  unless resource
15
17
  # Build association without trying to save the new record
@@ -33,7 +35,12 @@ module Para
33
35
  resource: resource,
34
36
  attribute_name: attribute_name,
35
37
  nested_locals: locals,
36
- collapsible: collapsible
38
+ collapsible: collapsible || subclass,
39
+ dom_identifier: dom_identifier,
40
+ subclass: subclass,
41
+ subclasses: subclasses,
42
+ add_button_label: add_button_label,
43
+ add_button_class: add_button_class
37
44
  }
38
45
  )
39
46
  end
data/lib/para/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Para
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: para
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentin Ballestrino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-16 00:00:00.000000000 Z
11
+ date: 2019-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -651,6 +651,8 @@ files:
651
651
  - app/views/para/inputs/nested_many/_add.html.haml
652
652
  - app/views/para/inputs/nested_many/_add_with_subclasses.html.haml
653
653
  - app/views/para/inputs/nested_many/_container.html.haml
654
+ - app/views/para/inputs/nested_one/_add_with_subclasses.html.haml
655
+ - app/views/para/inputs/nested_one/_container.html.haml
654
656
  - app/views/shared/_breadcrumbs.html.haml
655
657
  - config/locales/en.yml
656
658
  - config/locales/fr.yml