refine-rails 2.9.1 → 2.9.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
  SHA256:
3
- metadata.gz: 4a54fd34a98179098e040456276d0109895a9963b23f45d8a4349341f741ec58
4
- data.tar.gz: daba33b740e07950606b1935a5726d4650386d38aef645d4de0c7d07eabea546
3
+ metadata.gz: 7291e0c87324f5ea5f6d9116e74b4996e873738a1a6f0cb192b5b4f3d6428482
4
+ data.tar.gz: 10d80a905ddc6ce6d3d0f9e3b1f6c0439bda1e93e0092866b36d184247ec4a6c
5
5
  SHA512:
6
- metadata.gz: 7711ae2669c9b3e9b93b77e1217dd98f44fe55d6f91ebd0b5b2d45006b6b88aa0918825af3c2d5dec4d92467ab27152f4d07c5807595280e8b790db75f70e6ed
7
- data.tar.gz: 64b1ae0855a94252aeb1544f9e8ea07571d5a47e5e584c297adc4297c40a88990505072cc68ec76e16900ef65b09a06e3eee894d990d81018ccfa67bc69247cc
6
+ metadata.gz: bd7d4016067808b0d9d32c3d7a564be9c3c35c15b39d1461a7ab01fef04ff44ed9dd65d03162209b339406103620a9b69f591e7d6be7a46d686b69dce74dd283
7
+ data.tar.gz: 660cd1e5bc02473e92d11d8155ea78591d572a288986c09be87ec355719e59476f6e7085eec63e8450817dbc67c680a97b5c9ba1b353c6cd6054404897e460c9
@@ -822,13 +822,11 @@
822
822
  }
823
823
 
824
824
  .refine-criterion-refinement-container {
825
- width: 100%;
826
- padding-top: 0.75rem
825
+ width: 100%
827
826
  }
828
827
 
829
828
  @media (min-width: 640px) {
830
829
  .refine-criterion-refinement-container {
831
- margin-right: 0.75rem;
832
830
  width: auto;
833
831
  flex-shrink: 0
834
832
  }
@@ -1426,6 +1424,10 @@
1426
1424
  padding: 0.5rem 0;
1427
1425
  }
1428
1426
 
1427
+ .refine--refinement-input-container {
1428
+ margin: 0.5rem 0;
1429
+ }
1430
+
1429
1431
  /* _date_condition.html.erb */
1430
1432
 
1431
1433
  .refine--date-condition-days-text {
@@ -224,7 +224,7 @@
224
224
  }
225
225
 
226
226
  .refine-criterion-refinement-container {
227
- @apply w-full pt-3 sm:w-auto sm:flex-shrink-0 sm:mr-3;
227
+ @apply w-full sm:w-auto sm:flex-shrink-0;
228
228
  }
229
229
 
230
230
  /* _delete_criterion.html.erb */
@@ -601,6 +601,10 @@
601
601
  padding: 0.5rem 0;
602
602
  }
603
603
 
604
+ .refine--refinement-input-container {
605
+ margin: 0.5rem 0;
606
+ }
607
+
604
608
 
605
609
  /* _date_condition.html.erb */
606
610
  .refine--date-condition-days-text {
@@ -118,6 +118,12 @@ class Refine::Inline::CriteriaController < ApplicationController
118
118
  :clause,
119
119
  :value1,
120
120
  :value2
121
+ ],
122
+ date_refinement_attributes: [
123
+ :clause,
124
+ :date1,
125
+ :date2,
126
+ :days
121
127
  ]
122
128
  ]
123
129
  )
@@ -50,7 +50,6 @@ module Refine
50
50
  end
51
51
  end
52
52
 
53
- # DEPRECATED use Refine::Filters::Criterion#human_readable instead
54
53
  def human_readable_criterions
55
54
  output = []
56
55
  if blueprint.present?
@@ -58,7 +57,13 @@ module Refine
58
57
  if criterion[:type] == "conjunction"
59
58
  output << criterion[:word]
60
59
  else
61
- output << get_condition_for_criterion(criterion).human_readable(criterion[:input])
60
+ condition = get_condition_for_criterion(criterion)
61
+ text = condition.human_readable(criterion[:input])
62
+ if condition.has_date_refinement?
63
+ date_refinement_condition = condition.has_date_refinement?.call
64
+ text += date_refinement_condition.human_readable(criterion[:input][:date_refinement])
65
+ end
66
+ output << text
62
67
  end
63
68
  end
64
69
  end
@@ -0,0 +1,14 @@
1
+ class Refine::Inline::Criteria::DateRefinement
2
+ include ActiveModel::Model
3
+
4
+ attr_accessor :clause, :date1, :date2, :days
5
+
6
+ def attributes
7
+ {
8
+ clause: clause,
9
+ date1: date1,
10
+ date2: date2,
11
+ days: days
12
+ }.compact
13
+ end
14
+ end
@@ -15,7 +15,8 @@ class Refine::Inline::Criteria::Input
15
15
  :value,
16
16
  :value1,
17
17
  :value2,
18
- :count_refinement
18
+ :count_refinement,
19
+ :date_refinement
19
20
 
20
21
  def attributes
21
22
  {
@@ -28,7 +29,8 @@ class Refine::Inline::Criteria::Input
28
29
  value: value,
29
30
  value1: value1,
30
31
  value2: value2,
31
- count_refinement_attributes: count_refinement_attributes.presence
32
+ count_refinement_attributes: count_refinement_attributes.presence,
33
+ date_refinement_attributes: date_refinement_attributes.presence
32
34
  }.compact
33
35
  end
34
36
 
@@ -44,6 +46,18 @@ class Refine::Inline::Criteria::Input
44
46
  count_refinement.attributes = attrs.to_h
45
47
  end
46
48
 
49
+ def date_refinement
50
+ @date_refinement ||= Refine::Inline::Criteria::DateRefinement.new
51
+ end
52
+
53
+ def date_refinement_attributes
54
+ date_refinement.attributes
55
+ end
56
+
57
+ def date_refinement_attributes=(attrs = {})
58
+ date_refinement.attributes = attrs.to_h
59
+ end
60
+
47
61
  def selected=(value)
48
62
  @selected = Array.wrap(value)
49
63
  end
@@ -21,6 +21,7 @@ class Refine::Inline::Criterion
21
21
  attrs[:input_attributes] = attrs.delete(:input)
22
22
  if input_attrs = attrs[:input_attributes]
23
23
  input_attrs[:count_refinement_attributes] = input_attrs.delete(:count_refinement)
24
+ input_attrs[:date_refinement_attributes] = input_attrs.delete(:date_refinement)
24
25
  end
25
26
  new(attrs)
26
27
  end
@@ -93,6 +94,7 @@ class Refine::Inline::Criterion
93
94
  result[:input] = result.delete(:input_attributes)
94
95
  if input_attrs = result[:input]
95
96
  input_attrs[:count_refinement] = input_attrs.delete(:count_refinement_attributes)
97
+ input_attrs[:date_refinement] = input_attrs.delete(:date_refinement_attributes)
96
98
  end
97
99
  result
98
100
  end
@@ -121,8 +123,6 @@ class Refine::Inline::Criterion
121
123
  end
122
124
 
123
125
  def validate!
124
- # TODO figure out how to validate inputs with count refinements
125
- return if input.count_refinement.attributes.present?
126
126
  errors.clear
127
127
  begin
128
128
  query_for_validate = refine_filter.initial_query || refine_filter.model.all
@@ -27,7 +27,7 @@
27
27
 
28
28
  <div class="refine-criterion-refinement-container">
29
29
  <%= render partial: 'refine/blueprints/clause_select', locals: {
30
- meta: refinement[:meta], input_id: "input, #{refinement[:id]}", selected_clause: criterion.input.dig(:input, refinement[:id].to_sym, :clause) || {} } %>
30
+ meta: refinement[:meta], input_id: "input, #{refinement[:id]}", selected_clause: criterion.input.dig(refinement[:id].to_sym, :clause) || {} } %>
31
31
  </div>
32
32
 
33
33
  <%= render partial: "refine/blueprints/clauses/#{refinement[:component].underscore}", locals: {
@@ -1,3 +1,18 @@
1
+ <%
2
+ condition = @criterion.condition
3
+ date_refinement_condition = condition.has_date_refinement? && condition.get_date_refinement_condition
4
+ count_refinement_condition = condition.has_count_refinement? && condition.get_count_refinement_condition
5
+
6
+ last_clause_select = if count_refinement_condition
7
+ :count
8
+ elsif date_refinement_condition
9
+ :date
10
+ else
11
+ :criterion
12
+ end
13
+ %>
14
+
15
+
1
16
  <%= form.hidden_field :stable_id, form: form_id %>
2
17
  <%= form.hidden_field :client_id, form: form_id %>
3
18
  <%= form.hidden_field :condition_id, form: form_id %>
@@ -10,16 +25,66 @@
10
25
  <%# Input Value %>
11
26
  <% unless ['st', 'nst'].include? @criterion.input.clause %>
12
27
  <%= render @criterion.input_partial, criterion: @criterion, form: form, input_fields: input_fields, form_id: form_id %>
28
+ <% if last_clause_select == :criterion %>
29
+ <div class="refine--separator"></div>
30
+ <% end %>
31
+ <% end %>
32
+
33
+ <%# Clause Select %>
34
+ <div class="refine--criterion-clause-container">
35
+ <%= input_fields.label :clause, t('.rule') %>
36
+ <%= input_fields.collection_select :clause,
37
+ @criterion.condition.approved_clauses,
38
+ :id,
39
+ :display,
40
+ {},
41
+ class: "refine--select refine--clause-select",
42
+ data: {action: "change->refine--criterion-form#refresh"},
43
+ form: form_id
44
+ %>
45
+ <% if last_clause_select == :criterion %>
46
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
47
+ <% end %>
48
+ </div>
49
+
50
+ <%# Date Refinement %>
51
+ <% if @criterion.condition.has_date_refinement? %>
13
52
  <div class="refine--separator"></div>
53
+ <label style="color: black;"><%= date_refinement_condition.display %></label>
54
+ <%= input_fields.fields :date_refinement_attributes, model: @criterion.input.date_refinement do |date_fields| %>
55
+ <div class="refine--refinement-input-container">
56
+ <% unless ['st', 'nst'].include? @criterion.input.date_refinement.clause %>
57
+ <%= render "refine/inline/inputs/date_condition", criterion: @criterion, form: form, input_fields: date_fields, form_id: form_id %>
58
+ <% end %>
59
+
60
+ </div>
61
+
62
+ <div class="refine--criterion-clause-container">
63
+ <%= date_fields.label :clause, t('.rule') %>
64
+ <%= date_fields.collection_select :clause,
65
+ date_refinement_condition.approved_clauses,
66
+ :id,
67
+ :display,
68
+ {},
69
+ class: "refine--select refine--clause-select",
70
+ data: {action: "change->refine--criterion-form#refresh"},
71
+ form: form_id
72
+ %>
73
+ <% if last_clause_select == :date %>
74
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
75
+ <% end %>
76
+ </div>
77
+ <% end %>
78
+
14
79
  <% end %>
15
80
 
16
81
  <%# Count Refinement %>
17
- <% if @criterion.condition.has_count_refinement? %>
82
+ <% if count_refinement_condition %>
18
83
  <label style="color: black;"><%= @criterion.condition.get_count_refinement_condition.display %></label>
19
84
  <%= input_fields.fields :count_refinement_attributes, model: @criterion.input.count_refinement do |count_fields| %>
20
85
  <div class="refine--criterion-clause-container">
21
86
  <%= count_fields.collection_select :clause,
22
- @criterion.condition.get_count_refinement_condition.clauses,
87
+ count_refinement_condition.approved_clauses,
23
88
  :id,
24
89
  :display,
25
90
  {},
@@ -29,28 +94,34 @@
29
94
  </div>
30
95
 
31
96
  <% unless ['st', 'nst'].include? @criterion.input.count_refinement.clause %>
32
- <%= render "refine/inline/inputs/numeric_condition", input_fields: count_fields, form_id: form_id %>
97
+ <%= render "refine/inline/inputs/numeric_condition", criterion: @criterion, form: form, input_fields: count_fields, form_id: form_id %>
33
98
  <% end %>
99
+
100
+ <div class="refine--criterion-clause-container">
101
+ <%= count.label :clause, t('.rule') %>
102
+ <%= count.collection_select :clause,
103
+ @criterion.condition.approved_clauses,
104
+ :id,
105
+ :display,
106
+ {},
107
+ class: "refine--select refine--clause-select",
108
+ data: {action: "change->refine--criterion-form#refresh"},
109
+ form: form_id
110
+ %>
111
+ <% if last_clause_select == :count %>
112
+ <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
113
+ <% end %>
114
+ </div>
115
+
116
+
117
+
34
118
  <% end %>
35
119
 
36
120
  <% end %>
37
121
 
38
122
 
39
123
 
40
- <%# Clause Select %>
41
- <div class="refine--criterion-clause-container">
42
- <%= input_fields.label :clause, t('.rule') %>
43
- <%= input_fields.collection_select :clause,
44
- @criterion.condition.approved_clauses,
45
- :id,
46
- :display,
47
- {},
48
- class: "refine--select refine--clause-select",
49
- data: {action: "change->refine--criterion-form#refresh"},
50
- form: form_id
51
- %>
52
- <%= form.button t('global.buttons.apply'), class: "refine--apply-button", type: "submit", form: form_id %>
53
- </div>
124
+
54
125
 
55
126
 
56
127
  <% end %>
@@ -17,7 +17,6 @@
17
17
  </div>
18
18
  </div>
19
19
  </div>
20
-
21
20
  </div>
22
21
 
23
22
  <% end %>
@@ -1,6 +1,6 @@
1
- <% if criterion.input.clause.in? ["exct", "gt", "lt"] %>
1
+ <% if input_fields.object.clause.in? ["exct", "gt", "lt"] %>
2
2
  <%= render "refine/inline/inputs/date_condition_days", input_fields: input_fields, criterion: criterion, form_id: form_id %>
3
- <% elsif criterion.input.clause == "btwn" %>
3
+ <% elsif input_fields.object.clause == "btwn" %>
4
4
  <%= render "refine/inline/inputs/date_condition_range", input_fields: input_fields, criterion: criterion, form_id: form_id %>
5
5
  <% else %>
6
6
  <%= render "refine/inline/inputs/date_condition_single", input_fields: input_fields, criterion: criterion, form_id: form_id %>
@@ -2,7 +2,7 @@
2
2
  <%= render "refine/inline/inputs/date_picker",
3
3
  input_fields: input_fields,
4
4
  attribute: :date1,
5
- value: criterion.input.date1,
5
+ value: input_fields.object.date1,
6
6
  label: "#{criterion.condition.display.downcase} (#{t('.min')})",
7
7
  form_id: form_id
8
8
  %>
@@ -13,7 +13,7 @@
13
13
  <%= render "refine/inline/inputs/date_picker",
14
14
  input_fields: input_fields,
15
15
  attribute: :date2,
16
- value: criterion.input.date2,
16
+ value: input_fields.object.date2,
17
17
  label: "#{criterion.condition.display.downcase} (#{t('.max')})",
18
18
  form_id: form_id
19
19
  %>
@@ -2,7 +2,7 @@
2
2
  <%= render "refine/inline/inputs/date_picker",
3
3
  input_fields: input_fields,
4
4
  attribute: :date1,
5
- value: criterion.input.date1,
5
+ value: input_fields.object.date1,
6
6
  label: criterion.condition.display.downcase,
7
7
  form_id: form_id
8
8
  %>
@@ -1,5 +1,5 @@
1
1
  module Refine
2
2
  module Rails
3
- VERSION = "2.9.1"
3
+ VERSION = "2.9.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refine-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.1
4
+ version: 2.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colleen Schnettler
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-12-20 00:00:00.000000000 Z
12
+ date: 2024-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -101,6 +101,7 @@ files:
101
101
  - app/models/refine/filters/builder.rb
102
102
  - app/models/refine/filters/criterion.rb
103
103
  - app/models/refine/filters/query.rb
104
+ - app/models/refine/inline/criteria/date_refinement.rb
104
105
  - app/models/refine/inline/criteria/input.rb
105
106
  - app/models/refine/inline/criteria/numeric_refinement.rb
106
107
  - app/models/refine/inline/criteria/option.rb
@@ -197,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
198
  - !ruby/object:Gem::Version
198
199
  version: '0'
199
200
  requirements: []
200
- rubygems_version: 3.1.6
201
+ rubygems_version: 3.3.26
201
202
  signing_key:
202
203
  specification_version: 4
203
204
  summary: Visual query builder for Rails