datagrid 1.8.2 → 2.0.0

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/CHANGELOG.md +11 -1
  4. data/{Readme.markdown → README.md} +44 -29
  5. data/app/assets/stylesheets/datagrid.css +145 -0
  6. data/app/views/datagrid/_enum_checkboxes.html.erb +5 -3
  7. data/app/views/datagrid/_form.html.erb +4 -4
  8. data/app/views/datagrid/_head.html.erb +26 -3
  9. data/app/views/datagrid/_range_filter.html.erb +5 -3
  10. data/app/views/datagrid/_row.html.erb +12 -1
  11. data/app/views/datagrid/_table.html.erb +4 -4
  12. data/datagrid.gemspec +8 -7
  13. data/lib/datagrid/active_model.rb +9 -17
  14. data/lib/datagrid/base.rb +39 -0
  15. data/lib/datagrid/column_names_attribute.rb +9 -11
  16. data/lib/datagrid/columns/column.rb +155 -133
  17. data/lib/datagrid/columns.rb +325 -115
  18. data/lib/datagrid/configuration.rb +33 -4
  19. data/lib/datagrid/core.rb +89 -54
  20. data/lib/datagrid/deprecated_object.rb +20 -0
  21. data/lib/datagrid/drivers/abstract_driver.rb +12 -23
  22. data/lib/datagrid/drivers/active_record.rb +24 -26
  23. data/lib/datagrid/drivers/array.rb +22 -14
  24. data/lib/datagrid/drivers/mongo_mapper.rb +15 -14
  25. data/lib/datagrid/drivers/mongoid.rb +15 -17
  26. data/lib/datagrid/drivers/sequel.rb +14 -19
  27. data/lib/datagrid/drivers.rb +2 -1
  28. data/lib/datagrid/engine.rb +11 -3
  29. data/lib/datagrid/filters/base_filter.rb +166 -143
  30. data/lib/datagrid/filters/boolean_filter.rb +19 -5
  31. data/lib/datagrid/filters/date_filter.rb +33 -35
  32. data/lib/datagrid/filters/date_time_filter.rb +24 -16
  33. data/lib/datagrid/filters/default_filter.rb +9 -3
  34. data/lib/datagrid/filters/dynamic_filter.rb +151 -105
  35. data/lib/datagrid/filters/enum_filter.rb +43 -19
  36. data/lib/datagrid/filters/extended_boolean_filter.rb +39 -31
  37. data/lib/datagrid/filters/float_filter.rb +15 -5
  38. data/lib/datagrid/filters/integer_filter.rb +21 -10
  39. data/lib/datagrid/filters/ranged_filter.rb +66 -45
  40. data/lib/datagrid/filters/select_options.rb +58 -49
  41. data/lib/datagrid/filters/string_filter.rb +9 -4
  42. data/lib/datagrid/filters.rb +204 -79
  43. data/lib/datagrid/form_builder.rb +116 -128
  44. data/lib/datagrid/generators/scaffold.rb +184 -0
  45. data/lib/datagrid/generators/views.rb +20 -0
  46. data/lib/datagrid/helper.rb +436 -69
  47. data/lib/datagrid/ordering.rb +26 -29
  48. data/lib/datagrid/rspec.rb +6 -10
  49. data/lib/datagrid/utils.rb +37 -30
  50. data/lib/datagrid/version.rb +3 -1
  51. data/lib/datagrid.rb +8 -28
  52. data/templates/base.rb.erb +6 -4
  53. data/templates/grid.rb.erb +1 -1
  54. metadata +17 -17
  55. data/app/assets/stylesheets/datagrid.sass +0 -134
  56. data/lib/datagrid/filters/composite_filters.rb +0 -49
  57. data/lib/datagrid/renderer.rb +0 -157
  58. data/lib/datagrid/scaffold.rb +0 -129
  59. data/lib/tasks/datagrid_tasks.rake +0 -15
  60. data/templates/controller.rb.erb +0 -6
  61. data/templates/index.html.erb +0 -5
@@ -1,42 +1,38 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "datagrid/columns"
2
4
 
3
5
  module Datagrid
4
6
  # Raised when grid order value is incorrect
5
7
  class OrderUnsupported < StandardError
6
8
  end
7
- module Ordering
8
9
 
10
+ # Module adds support for ordering by defined columns for Datagrid.
11
+ module Ordering
9
12
  # @!visibility private
10
13
  def self.included(base)
11
- base.extend ClassMethods
14
+ base.extend ClassMethods
12
15
  base.class_eval do
13
16
  include Datagrid::Columns
14
17
 
15
18
  datagrid_attribute :order do |value|
16
- if value.present?
17
- value.to_sym
18
- else
19
- nil
20
- end
21
-
19
+ value.to_sym if value.present?
22
20
  end
23
21
 
24
22
  datagrid_attribute :descending do |value|
25
23
  Datagrid::Utils.booleanize(value)
26
24
  end
27
- alias descending? descending
28
-
25
+ alias_method :descending?, :descending
29
26
  end
30
27
  end
31
28
 
32
29
  # @!visibility private
33
30
  module ClassMethods
34
31
  def order_unsupported(name, reason)
35
- raise Datagrid::OrderUnsupported, "Can not sort #{self.inspect} by ##{name}: #{reason}"
32
+ raise Datagrid::OrderUnsupported, "Can not sort #{inspect} by ##{name}: #{reason}"
36
33
  end
37
34
  end
38
35
 
39
-
40
36
  # @!visibility private
41
37
  def assets
42
38
  check_order_valid!
@@ -56,42 +52,42 @@ module Datagrid
56
52
  end
57
53
 
58
54
  # @param column [String, Datagrid::Columns::Column]
55
+ # @param desc [nil, Boolean] confirm order direction as well if specified
59
56
  # @return [Boolean] true if given grid is ordered by given column.
60
- def ordered_by?(column)
61
- order_column == column_by_name(column)
57
+ def ordered_by?(column, desc = nil)
58
+ order_column == column_by_name(column) &&
59
+ (desc.nil? || (desc ? descending? : !descending?))
62
60
  end
63
61
 
64
62
  private
65
63
 
66
64
  def apply_order(assets)
67
65
  return assets unless order
66
+
68
67
  if order_column.order_by_value?
69
68
  assets = assets.sort_by do |asset|
70
69
  order_column.order_by_value(asset, self)
71
70
  end
72
71
  descending? ? assets.reverse : assets
73
- else
74
- if descending?
75
- if order_column.order_desc
76
- apply_asc_order(assets, order_column.order_desc)
77
- else
78
- apply_desc_order(assets, order_column.order)
79
- end
72
+ elsif descending?
73
+ if order_column.order_desc
74
+ apply_asc_order(assets, order_column.order_desc)
80
75
  else
81
- apply_asc_order(assets, order_column.order)
76
+ apply_desc_order(assets, order_column.order)
82
77
  end
78
+ else
79
+ apply_asc_order(assets, order_column.order)
83
80
  end
84
81
  end
85
82
 
86
83
  def check_order_valid!
87
84
  return unless order
85
+
88
86
  column = column_by_name(order)
89
- unless column
90
- self.class.order_unsupported(order, "no column #{order} in #{self.class}")
91
- end
92
- unless column.supports_order?
93
- self.class.order_unsupported(column.name, "column don't support order" )
94
- end
87
+ self.class.order_unsupported(order, "no column #{order} in #{self.class}") unless column
88
+ return if column.supports_order?
89
+
90
+ self.class.order_unsupported(column.name, "column don't support order")
95
91
  end
96
92
 
97
93
  def apply_asc_order(assets, order)
@@ -113,7 +109,8 @@ module Datagrid
113
109
  def reverse_order(assets)
114
110
  driver.reverse_order(assets)
115
111
  rescue NotImplementedError
116
- self.class.order_unsupported(order_column.name, "Your ORM do not support reverse order: please specify :order_desc option manually")
112
+ self.class.order_unsupported(order_column.name,
113
+ "Your ORM do not support reverse order: please specify :order_desc option manually",)
117
114
  end
118
115
 
119
116
  def apply_block_order(assets, order)
@@ -1,16 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "datagrid"
2
4
 
3
- #TODO: refactor this experimental shit
5
+ # TODO: refactor this experimental shit
4
6
  shared_examples_for "Datagrid" do
5
7
  describe "as Datagrid" do
6
-
7
8
  it "should have at least one entry if assets" do
8
9
  subject.assets.should_not be_empty
9
10
  end
10
11
 
11
- described_class.columns(:data => true).each do |column|
12
+ described_class.columns(data: true).each do |column|
12
13
  describe "column ##{column.name}" do
13
-
14
14
  it "should has value in #data_hash" do
15
15
  subject.data_hash.first.should have_key(column.name)
16
16
  end
@@ -25,14 +25,11 @@ shared_examples_for "Datagrid" do
25
25
  subject.assets.first.should_not be_nil
26
26
  end
27
27
  end
28
-
29
28
  end
30
29
 
31
30
  described_class.filters.each do |filter|
32
31
  describe "filter ##{filter.name}" do
33
-
34
32
  let(:filter_value) do
35
-
36
33
  case Datagrid::Filters::FILTER_TYPES.invert[filter.class]
37
34
  when :default, :string
38
35
  "text"
@@ -53,16 +50,15 @@ shared_examples_for "Datagrid" do
53
50
  end
54
51
 
55
52
  before(:each) do
56
- subject.attributes = {filter.name => filter_value}
53
+ subject.attributes = { filter.name => filter_value }
57
54
  subject.public_send(filter.name).should_not be_nil
58
55
  end
59
56
 
60
57
  it "should be supported" do
61
58
  subject.assets.should_not be_nil
62
- #TODO: better matcher.
59
+ # TODO: better matcher.
63
60
  end
64
61
  end
65
62
  end
66
-
67
63
  end
68
64
  end
@@ -1,44 +1,49 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datagrid
2
4
  # @!visibility private
3
- module Utils # :nodoc:
5
+ module Utils
4
6
  class << self
5
-
6
-
7
- TRUTH = [true, 1, "1", "true", "yes", "on"]
7
+ TRUTH = [true, 1, "1", "true", "yes", "on"].freeze
8
8
 
9
9
  def booleanize(value)
10
- if value.respond_to?(:downcase)
11
- value = value.downcase
12
- end
10
+ value = value.downcase if value.respond_to?(:downcase)
13
11
  TRUTH.include?(value)
14
12
  end
15
13
 
16
14
  def translate_from_namespace(namespace, grid_class, key)
17
-
18
15
  lookups = []
19
16
  namespaced_key = "#{namespace}.#{key}"
20
17
 
21
18
  grid_class.ancestors.each do |ancestor|
22
- if ancestor.respond_to?(:model_name)
23
- lookups << :"datagrid.#{ancestor.model_name.i18n_key}.#{namespaced_key}"
24
- end
19
+ lookups << :"datagrid.#{ancestor.model_name.i18n_key}.#{namespaced_key}" if ancestor.respond_to?(:model_name)
25
20
  end
26
21
  lookups << :"datagrid.defaults.#{namespaced_key}"
27
22
  lookups << key.to_s.humanize
28
23
  I18n.t(lookups.shift, default: lookups).presence
29
24
  end
30
25
 
26
+ def deprecator
27
+ if defined?(Rails) && Rails.version >= "7.1.0"
28
+ Rails.deprecator
29
+ else
30
+ ActiveSupport::Deprecation
31
+ end
32
+ end
33
+
31
34
  def warn_once(message, delay = 5)
32
35
  @warnings ||= {}
33
36
  timestamp = @warnings[message]
34
37
  return false if timestamp && timestamp >= Time.now - delay
35
- warn message
38
+
39
+ deprecator.warn(message)
36
40
  @warnings[message] = Time.now
37
41
  true
38
42
  end
39
43
 
40
44
  def add_html_classes(options, *classes)
41
45
  return options if classes.empty?
46
+
42
47
  options = options.clone
43
48
  options[:class] ||= []
44
49
  array = options[:class].is_a?(Array)
@@ -52,41 +57,42 @@ module Datagrid
52
57
  end
53
58
 
54
59
  def extract_position_from_options(array, options)
55
- before, after = options[:before], options[:after]
56
- if before && after
57
- raise Datagrid::ConfigurationError, "Options :before and :after can not be used together"
58
- end
60
+ before = options[:before]
61
+ after = options[:after]
62
+ raise Datagrid::ConfigurationError, "Options :before and :after can not be used together" if before && after
59
63
  # Consider as before all
60
64
  return 0 if before == true
65
+
61
66
  if before
62
67
  before = before.to_sym
63
- array.index {|c| c.name.to_sym == before }
68
+ array.index { |c| c.name.to_sym == before }
64
69
  elsif after
65
70
  after = after.to_sym
66
- array.index {|c| c.name.to_sym == after } + 1
71
+ array.index { |c| c.name.to_sym == after } + 1
67
72
  else
68
73
  -1
69
74
  end
70
75
  end
71
76
 
72
77
  def apply_args(*args, &block)
73
- size = block.arity < 0 ? args.size : block.arity
78
+ size = block.arity.negative? ? args.size : block.arity
74
79
  block.call(*args.slice(0, size))
75
80
  end
76
81
 
77
82
  def parse_date(value)
78
83
  return nil if value.blank?
79
84
  return value if value.is_a?(Range)
85
+
80
86
  if value.is_a?(String)
81
87
  Array(Datagrid.configuration.date_formats).each do |format|
82
- begin
83
- return Date.strptime(value, format)
84
- rescue ::ArgumentError
85
- end
88
+ return Date.strptime(value, format)
89
+ rescue ::ArgumentError
90
+ nil
86
91
  end
87
92
  end
88
93
  return Date.parse(value) if value.is_a?(String)
89
94
  return value.to_date if value.respond_to?(:to_date)
95
+
90
96
  value
91
97
  rescue ::ArgumentError
92
98
  nil
@@ -95,16 +101,18 @@ module Datagrid
95
101
  def parse_datetime(value)
96
102
  return nil if value.blank?
97
103
  return value if value.is_a?(Range)
104
+ return value if defined?(ActiveSupport::TimeWithZone) && value.is_a?(ActiveSupport::TimeWithZone)
105
+
98
106
  if value.is_a?(String)
99
107
  Array(Datagrid.configuration.datetime_formats).each do |format|
100
- begin
101
- return Time.strptime(value, format)
102
- rescue ::ArgumentError
103
- end
108
+ return Time.strptime(value, format)
109
+ rescue ::ArgumentError
110
+ nil
104
111
  end
105
112
  end
106
113
  return Time.parse(value) if value.is_a?(String)
107
114
  return value.to_time if value.respond_to?(:to_time)
115
+
108
116
  value
109
117
  rescue ::ArgumentError
110
118
  nil
@@ -113,10 +121,8 @@ module Datagrid
113
121
  def format_date_as_timestamp(value)
114
122
  if !value
115
123
  value
116
- elsif value.is_a?(Array)
117
- [value.first&.beginning_of_day, value.last&.end_of_day]
118
124
  elsif value.is_a?(Range)
119
- (value.begin&.beginning_of_day..value.end&.end_of_day)
125
+ value.begin&.beginning_of_day..value.end&.end_of_day
120
126
  else
121
127
  value.beginning_of_day..value.end_of_day
122
128
  end
@@ -132,6 +138,7 @@ module Datagrid
132
138
  end
133
139
 
134
140
  protected
141
+
135
142
  def property_availability(grid, option, default)
136
143
  case option
137
144
  when nil
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datagrid
2
- VERSION = "1.8.2"
4
+ VERSION = "2.0.0"
3
5
  end
data/lib/datagrid.rb CHANGED
@@ -1,49 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "action_view"
2
4
  require "datagrid/configuration"
5
+ require "datagrid/engine"
3
6
 
4
7
  module Datagrid
5
-
6
- extend ActiveSupport::Autoload
7
-
8
- autoload :Core
9
- autoload :ActiveModel
10
- autoload :Filters
11
- autoload :Columns
12
- autoload :ColumnNamesAttribute
13
- autoload :Ordering
14
- autoload :Configuration
15
-
16
- autoload :Helper
17
- ActionView::Base.send(:include, Datagrid::Helper)
18
-
19
- autoload :FormBuilder
20
- ActionView::Helpers::FormBuilder.send(:include, Datagrid::FormBuilder)
21
-
22
- autoload :Renderer
23
-
24
- autoload :Engine
25
-
26
8
  # @!visibility private
27
9
  def self.included(base)
10
+ Utils.warn_once("Including Datagrid is deprecated. Inherit Datagrid::Base instead.")
28
11
  base.class_eval do
29
-
30
12
  include ::Datagrid::Core
31
13
  include ::Datagrid::ActiveModel
32
14
  include ::Datagrid::Filters
33
15
  include ::Datagrid::Columns
34
16
  include ::Datagrid::ColumnNamesAttribute
35
17
  include ::Datagrid::Ordering
36
-
37
18
  end
38
19
  end
39
20
 
40
21
  class ConfigurationError < StandardError; end
41
22
  class ArgumentError < ::ArgumentError; end
42
23
  class ColumnUnavailableError < StandardError; end
43
-
44
24
  end
45
25
 
46
- require "datagrid/scaffold"
47
- I18n.load_path << File.expand_path('../datagrid/locale/en.yml', __FILE__)
48
-
49
-
26
+ require "datagrid/base"
27
+ require "datagrid/generators/scaffold"
28
+ require "datagrid/generators/views"
29
+ I18n.load_path << File.expand_path("datagrid/locale/en.yml", __dir__)
@@ -1,7 +1,4 @@
1
- class BaseGrid
2
-
3
- include Datagrid
4
-
1
+ class ApplicationGrid < Datagrid::Base
5
2
  self.default_column_options = {
6
3
  # Uncomment to disable the default order
7
4
  # order: false,
@@ -42,4 +39,9 @@ class BaseGrid
42
39
  end
43
40
  end
44
41
 
42
+ # Uncomment to shorten URL query string for all grids.
43
+ # May cause collisions if multiple grids are used on the same page.
44
+ # def param_name
45
+ # 'grid'
46
+ # end
45
47
  end
@@ -1,4 +1,4 @@
1
- class <%= grid_class_name %> < BaseGrid
1
+ class <%= grid_class_name %> < <%= grid_base_class %>
2
2
 
3
3
  scope do
4
4
  <%= grid_model_name %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datagrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-22 00:00:00.000000000 Z
11
+ date: 2024-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.1'
19
+ version: '7.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '6.1'
26
+ version: '7.0'
27
27
  description: The library allows you to easily build datagrid aka data tables with
28
28
  sortable columns and filters
29
29
  email: agresso@gmail.com
@@ -31,12 +31,13 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files:
33
33
  - LICENSE.txt
34
- - Readme.markdown
34
+ - README.md
35
35
  files:
36
+ - ".yardopts"
36
37
  - CHANGELOG.md
37
38
  - LICENSE.txt
38
- - Readme.markdown
39
- - app/assets/stylesheets/datagrid.sass
39
+ - README.md
40
+ - app/assets/stylesheets/datagrid.css
40
41
  - app/views/datagrid/_enum_checkboxes.html.erb
41
42
  - app/views/datagrid/_form.html.erb
42
43
  - app/views/datagrid/_head.html.erb
@@ -47,11 +48,13 @@ files:
47
48
  - datagrid.gemspec
48
49
  - lib/datagrid.rb
49
50
  - lib/datagrid/active_model.rb
51
+ - lib/datagrid/base.rb
50
52
  - lib/datagrid/column_names_attribute.rb
51
53
  - lib/datagrid/columns.rb
52
54
  - lib/datagrid/columns/column.rb
53
55
  - lib/datagrid/configuration.rb
54
56
  - lib/datagrid/core.rb
57
+ - lib/datagrid/deprecated_object.rb
55
58
  - lib/datagrid/drivers.rb
56
59
  - lib/datagrid/drivers/abstract_driver.rb
57
60
  - lib/datagrid/drivers/active_record.rb
@@ -63,7 +66,6 @@ files:
63
66
  - lib/datagrid/filters.rb
64
67
  - lib/datagrid/filters/base_filter.rb
65
68
  - lib/datagrid/filters/boolean_filter.rb
66
- - lib/datagrid/filters/composite_filters.rb
67
69
  - lib/datagrid/filters/date_filter.rb
68
70
  - lib/datagrid/filters/date_time_filter.rb
69
71
  - lib/datagrid/filters/default_filter.rb
@@ -76,28 +78,26 @@ files:
76
78
  - lib/datagrid/filters/select_options.rb
77
79
  - lib/datagrid/filters/string_filter.rb
78
80
  - lib/datagrid/form_builder.rb
81
+ - lib/datagrid/generators/scaffold.rb
82
+ - lib/datagrid/generators/views.rb
79
83
  - lib/datagrid/helper.rb
80
84
  - lib/datagrid/locale/en.yml
81
85
  - lib/datagrid/ordering.rb
82
- - lib/datagrid/renderer.rb
83
86
  - lib/datagrid/rspec.rb
84
- - lib/datagrid/scaffold.rb
85
87
  - lib/datagrid/utils.rb
86
88
  - lib/datagrid/version.rb
87
- - lib/tasks/datagrid_tasks.rake
88
89
  - templates/base.rb.erb
89
- - templates/controller.rb.erb
90
90
  - templates/grid.rb.erb
91
- - templates/index.html.erb
92
91
  homepage: https://github.com/bogdan/datagrid
93
92
  licenses:
94
93
  - MIT
95
94
  metadata:
96
95
  homepage_uri: https://github.com/bogdan/datagrid
97
96
  bug_tracker_uri: https://github.com/bogdan/datagrid/issues
98
- documentation_uri: https://github.com/bogdan/datagrid/wiki
99
- changelog_uri: https://github.com/bogdan/datagrid/blob/master/CHANGELOG.md
97
+ documentation_uri: https://rubydoc.info/gems/datagrid
98
+ changelog_uri: https://github.com/bogdan/datagrid/blob/main/CHANGELOG.md
100
99
  source_code_uri: https://github.com/bogdan/datagrid
100
+ rubygems_mfa_required: 'true'
101
101
  post_install_message:
102
102
  rdoc_options: []
103
103
  require_paths:
@@ -106,14 +106,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: '2.7'
109
+ version: '3.0'
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  requirements: []
116
- rubygems_version: 3.4.10
116
+ rubygems_version: 3.5.11
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Library that provides DSL to present table like data
@@ -1,134 +0,0 @@
1
- $dg-form-label: 150px
2
-
3
- = clearfix
4
- *zoom: 1
5
-
6
- &:before,
7
- &:after
8
- display: table
9
- content: ''
10
-
11
- &:after
12
- clear: both
13
-
14
- =inline-block
15
- display: inline-block
16
- zoom: 1
17
- *display: inline
18
-
19
- table.datagrid
20
- background-color: transparent
21
- border-collapse: collapse
22
- max-width: 100%
23
-
24
- th
25
- background-color: #eee
26
- text-align: left
27
-
28
- td,
29
- th
30
- border: 1px solid #d6d6d6
31
- padding: 5px 10px
32
-
33
- .order
34
- a.asc, a.desc
35
- text-decoration: none
36
- font-weight: normal
37
-
38
- &.ordered
39
- background-color: #fff7d5
40
-
41
- &.asc
42
- a.asc
43
- font-weight: bold
44
- color: #d00
45
-
46
- &.desc
47
- a.desc
48
- font-weight: bold
49
- color: #d00
50
- .noresults
51
- text-align: center
52
-
53
- .datagrid-form
54
- background-color: #f0f0f0
55
- border-radius: 5px
56
- padding: 20px
57
-
58
- .datagrid-filter
59
- margin: 10px
60
- +clearfix
61
-
62
- label
63
- width: $dg-form-label
64
- float: left
65
- a
66
- float: left
67
-
68
- input[class*='filter']
69
- border: 2px solid #ccc
70
- border-radius: 4px
71
- float: left
72
- padding: 5px 12px
73
- width: 207px
74
-
75
- &.from, &.to
76
- width: 83px
77
-
78
- select
79
- float: left
80
- width: 235px
81
-
82
- &[multiple]
83
- border: 2px solid #ccc
84
- border-radius: 5px
85
- height: 100px
86
- &.dynamic_filter
87
- &.field
88
- width: 178px
89
- &.operation
90
- margin-left: 7px
91
- width: 50px
92
- input.dynamic_filter.value
93
- margin: 10px 0 0 $dg-form-label
94
- clear: both
95
-
96
- .separator
97
- float: left
98
- margin: 6px 4px 0
99
- .enum_filter.checkboxes
100
- float: none
101
- display: block
102
- input
103
- margin: 7px
104
- margin-left: 150px
105
-
106
-
107
- .datagrid-actions
108
- padding-left: $dg-form-label + 10
109
-
110
- input[type='submit']
111
- background-color: #555
112
- border: none
113
- border-radius: 5px
114
- color: white
115
- cursor: pointer
116
- font-size: 14px
117
- font-weight: bold
118
- line-height: normal
119
- padding: 7px 15px
120
- vertical-align: middle
121
- +inline-block
122
-
123
- &:hover,
124
- &:focus
125
- background-color: #333
126
-
127
- &:active
128
- background-color: #000
129
-
130
- > a
131
- font-size: 14px
132
- padding: 7px 15px
133
- vertical-align: middle
134
- +inline-block