trestle 0.8.3 → 0.8.6

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +10 -1
  4. data/Gemfile +4 -0
  5. data/README.md +1 -0
  6. data/app/assets/javascripts/trestle/admin.js +24 -0
  7. data/app/assets/javascripts/trestle/components/_confirmation.js +23 -0
  8. data/app/assets/javascripts/trestle/components/_datepicker.js +22 -0
  9. data/app/assets/javascripts/trestle/components/_dialog.js +107 -0
  10. data/app/assets/javascripts/trestle/components/_errors.js +11 -0
  11. data/app/assets/javascripts/trestle/components/_form.js +48 -0
  12. data/app/assets/javascripts/trestle/components/_gallery.js +27 -0
  13. data/app/assets/javascripts/trestle/components/_select.js +11 -0
  14. data/app/assets/javascripts/trestle/components/_sidebar.js +75 -0
  15. data/app/assets/javascripts/trestle/components/_table.js +21 -0
  16. data/app/assets/javascripts/trestle/components/_tabs.js +24 -0
  17. data/app/assets/javascripts/trestle/components/_tooltips.js +3 -0
  18. data/app/assets/javascripts/trestle/core/_contexts.js +13 -0
  19. data/app/assets/javascripts/trestle/core/_cookies.js +24 -0
  20. data/app/assets/javascripts/trestle/core/_events.js +39 -0
  21. data/app/assets/javascripts/trestle/core/_visit.js +10 -0
  22. data/app/assets/javascripts/trestle/custom.js +4 -0
  23. data/app/assets/stylesheets/trestle/components/_alerts.scss +28 -0
  24. data/app/assets/stylesheets/trestle/components/_buttons.scss +9 -0
  25. data/app/assets/stylesheets/trestle/components/_modal.scss +92 -0
  26. data/app/assets/stylesheets/trestle/components/_navigation.scss +80 -10
  27. data/app/assets/stylesheets/trestle/components/_sidebar.scss +1 -0
  28. data/app/assets/stylesheets/trestle/components/_table.scss +6 -0
  29. data/app/assets/stylesheets/trestle/core/_defaults.scss +5 -1
  30. data/app/controllers/trestle/application_controller.rb +5 -1
  31. data/app/helpers/trestle/dialog_helper.rb +7 -0
  32. data/app/helpers/trestle/form_helper.rb +8 -1
  33. data/app/helpers/trestle/format_helper.rb +48 -0
  34. data/app/helpers/trestle/hook_helper.rb +8 -3
  35. data/app/helpers/trestle/url_helper.rb +33 -11
  36. data/app/views/layouts/trestle/admin.html.erb +4 -4
  37. data/app/views/trestle/admin/index.html.erb +1 -1
  38. data/app/views/trestle/application/_alert.html.erb +2 -0
  39. data/app/views/trestle/application/_dialog.html.erb +36 -0
  40. data/app/views/trestle/application/_flash.html.erb +18 -4
  41. data/app/views/trestle/application/_tabs.html.erb +7 -1
  42. data/app/views/trestle/dashboard/index.html.erb +2 -2
  43. data/app/views/trestle/resource/_form.html.erb +1 -1
  44. data/app/views/trestle/resource/edit.html.erb +6 -6
  45. data/app/views/trestle/resource/index.html.erb +5 -2
  46. data/app/views/trestle/resource/new.html.erb +4 -4
  47. data/app/views/trestle/resource/show.html.erb +6 -6
  48. data/app/views/trestle/shared/_sidebar.html.erb +7 -4
  49. data/bower.json +2 -2
  50. data/config/locales/en.yml +38 -18
  51. data/config/locales/fr.rb +18 -0
  52. data/config/locales/fr.yml +69 -0
  53. data/config/locales/nl.rb +18 -0
  54. data/config/locales/nl.yml +67 -0
  55. data/config/locales/pl.rb +18 -0
  56. data/config/locales/pl.yml +70 -0
  57. data/config/locales/pt-BR.rb +18 -0
  58. data/config/locales/pt-BR.yml +69 -0
  59. data/gemfiles/rails-4.2.gemfile +14 -0
  60. data/gemfiles/rails-5.0.gemfile +14 -0
  61. data/gemfiles/rails-5.1.gemfile +14 -0
  62. data/gemfiles/rails-edge.gemfile +15 -0
  63. data/lib/generators/trestle/install/install_generator.rb +3 -3
  64. data/lib/generators/trestle/install/templates/custom.js +7 -0
  65. data/lib/generators/trestle/install/templates/trestle.rb.erb +9 -2
  66. data/lib/generators/trestle/resource/templates/admin.rb.erb +1 -1
  67. data/lib/trestle/adapters/active_record_adapter.rb +46 -20
  68. data/lib/trestle/adapters/adapter.rb +176 -0
  69. data/lib/trestle/adapters/sequel_adapter.rb +85 -0
  70. data/lib/trestle/adapters.rb +7 -64
  71. data/lib/trestle/admin/builder.rb +10 -2
  72. data/lib/trestle/admin.rb +14 -1
  73. data/lib/trestle/attribute.rb +14 -37
  74. data/lib/trestle/breadcrumb.rb +19 -0
  75. data/lib/trestle/configuration.rb +14 -3
  76. data/lib/trestle/display.rb +1 -1
  77. data/lib/trestle/form/automatic.rb +29 -21
  78. data/lib/trestle/form/builder.rb +4 -0
  79. data/lib/trestle/form/field.rb +2 -2
  80. data/lib/trestle/form/fields/check_box.rb +1 -1
  81. data/lib/trestle/form/fields/collection_select.rb +1 -1
  82. data/lib/trestle/form/fields/date_select.rb +1 -1
  83. data/lib/trestle/form/fields/datetime_select.rb +1 -1
  84. data/lib/trestle/form/fields/grouped_collection_select.rb +1 -1
  85. data/lib/trestle/form/fields/select.rb +2 -2
  86. data/lib/trestle/form/fields/tag_select.rb +1 -2
  87. data/lib/trestle/form/fields/time_select.rb +1 -1
  88. data/lib/trestle/form/fields/time_zone_select.rb +1 -1
  89. data/lib/trestle/form.rb +7 -3
  90. data/lib/trestle/model_name.rb +64 -0
  91. data/lib/trestle/navigation/group.rb +8 -0
  92. data/lib/trestle/navigation/item.rb +1 -1
  93. data/lib/trestle/options.rb +7 -5
  94. data/lib/trestle/reloader.rb +1 -1
  95. data/lib/trestle/resource/builder.rb +17 -1
  96. data/lib/trestle/resource/controller.rb +80 -18
  97. data/lib/trestle/resource.rb +26 -16
  98. data/lib/trestle/scope.rb +1 -1
  99. data/lib/trestle/table/actions_column.rb +21 -16
  100. data/lib/trestle/table/automatic.rb +5 -12
  101. data/lib/trestle/table/builder.rb +3 -2
  102. data/lib/trestle/table/column.rb +27 -45
  103. data/lib/trestle/table/row.rb +8 -2
  104. data/lib/trestle/table.rb +7 -1
  105. data/lib/trestle/version.rb +1 -1
  106. data/lib/trestle.rb +1 -0
  107. data/trestle.gemspec +5 -5
  108. data/vendor/assets/bower_components/trestle/flatpickr/dist/flatpickr.css +51 -26
  109. data/vendor/assets/bower_components/trestle/flatpickr/dist/flatpickr.js +349 -299
  110. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ar.js +5 -5
  111. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/bg.js +5 -5
  112. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/bn.js +5 -5
  113. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/cat.js +7 -7
  114. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/cs.js +7 -7
  115. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/cy.js +7 -7
  116. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/da.js +6 -6
  117. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/de.js +10 -10
  118. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/eo.js +11 -11
  119. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/es.js +7 -7
  120. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/et.js +11 -11
  121. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/fa.js +6 -6
  122. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/fi.js +7 -7
  123. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/fr.js +11 -11
  124. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/gr.js +13 -13
  125. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/he.js +5 -5
  126. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/hi.js +5 -5
  127. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/hr.js +6 -6
  128. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/hu.js +10 -10
  129. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/id.js +7 -7
  130. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/index.js +97 -0
  131. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/it.js +10 -10
  132. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ja.js +5 -5
  133. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ko.js +6 -6
  134. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/lt.js +10 -10
  135. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/lv.js +6 -6
  136. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/mk.js +8 -8
  137. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ms.js +7 -7
  138. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/my.js +7 -7
  139. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/nl.js +11 -11
  140. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/no.js +11 -11
  141. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/pa.js +5 -5
  142. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/pl.js +6 -6
  143. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/pt.js +6 -8
  144. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ro.js +7 -9
  145. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/ru.js +6 -8
  146. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/si.js +5 -7
  147. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/sk.js +8 -8
  148. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/sl.js +8 -10
  149. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/sq.js +5 -7
  150. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/sr.js +9 -10
  151. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/sv.js +8 -10
  152. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/th.js +10 -11
  153. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/tr.js +6 -8
  154. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/uk.js +6 -7
  155. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/vn.js +6 -8
  156. data/vendor/assets/bower_components/trestle/flatpickr/dist/l10n/zh.js +9 -11
  157. data/vendor/assets/bower_components/trestle/select2/dist/js/select2.full.js +90 -69
  158. metadata +58 -33
  159. data/app/assets/javascripts/trestle/_confirmation.js.coffee +0 -18
  160. data/app/assets/javascripts/trestle/_datepicker.js.coffee +0 -18
  161. data/app/assets/javascripts/trestle/_errors.js.coffee +0 -8
  162. data/app/assets/javascripts/trestle/_form.js.coffee +0 -4
  163. data/app/assets/javascripts/trestle/_gallery.js.coffee +0 -21
  164. data/app/assets/javascripts/trestle/_select.js.coffee +0 -7
  165. data/app/assets/javascripts/trestle/_sidebar.js.coffee +0 -45
  166. data/app/assets/javascripts/trestle/_table.js.coffee +0 -16
  167. data/app/assets/javascripts/trestle/_tabs.js.coffee +0 -9
  168. data/app/assets/javascripts/trestle/_tooltips.js.coffee +0 -2
  169. data/app/assets/javascripts/trestle/admin.js.coffee +0 -22
  170. data/app/assets/javascripts/trestle/custom.js.coffee +0 -4
  171. data/lib/generators/trestle/install/templates/custom.js.coffee +0 -7
@@ -1,10 +1,10 @@
1
1
  module Trestle
2
2
  class Table
3
3
  class ActionsColumn
4
- attr_reader :table, :block
4
+ attr_reader :table, :options, :block
5
5
 
6
- def initialize(table, &block)
7
- @table = table
6
+ def initialize(table, options={}, &block)
7
+ @table, @options = table, options
8
8
  @block = block_given? ? block : default_actions
9
9
  end
10
10
 
@@ -13,8 +13,10 @@ module Trestle
13
13
  end
14
14
 
15
15
  def default_actions
16
+ admin = table.admin
17
+
16
18
  ->(action) do
17
- action.delete
19
+ action.delete if admin && admin.actions.include?(:destroy)
18
20
  end
19
21
  end
20
22
 
@@ -23,37 +25,40 @@ module Trestle
23
25
 
24
26
  delegate :table, to: :@column
25
27
 
28
+ delegate :concat, :icon, :link_to, :admin_url_for, :admin_link_to, to: :@template
29
+
26
30
  def initialize(column, template, instance)
27
31
  @column, @template, @instance = column, template, instance
28
32
  end
29
33
 
34
+ def show
35
+ button(icon("fa fa-info"), instance, action: :show, class: "btn-info")
36
+ end
37
+
38
+ def edit
39
+ button(icon("fa fa-pencil"), instance, action: :edit, class: "btn-warning")
40
+ end
41
+
30
42
  def delete
31
- button(@template.icon("fa fa-trash"), @template.admin_url_for(instance, admin: table.options[:admin], action: :destroy), method: :delete, class: "btn-danger", data: { toggle: "confirm-delete", placement: "left" })
43
+ button(icon("fa fa-trash"), instance, action: :destroy, method: :delete, class: "btn-danger", data: { toggle: "confirm-delete", placement: "left" })
32
44
  end
33
45
 
34
- def button(content, url, options={})
46
+ def button(content, instance_or_url, options={})
35
47
  options[:class] = Array(options[:class])
36
48
  options[:class] << "btn" unless options[:class].include?("btn")
37
49
 
38
- @template.concat @template.link_to(content, url, options)
50
+ concat admin_link_to(content, instance_or_url, options.reverse_merge(admin: table.admin))
39
51
  end
40
52
  alias_method :link, :button
41
53
  end
42
54
 
43
55
  class Renderer < Column::Renderer
44
56
  def header
57
+ options[:header]
45
58
  end
46
59
 
47
60
  def classes
48
- "actions"
49
- end
50
-
51
- def options
52
- {}
53
- end
54
-
55
- def data
56
- {}
61
+ super + ["actions"]
57
62
  end
58
63
 
59
64
  def content(instance)
@@ -3,7 +3,6 @@ module Trestle
3
3
  class Automatic < Table
4
4
  def initialize(admin)
5
5
  super(sortable: true, admin: admin)
6
- @admin = admin
7
6
  end
8
7
 
9
8
  def columns
@@ -11,20 +10,14 @@ module Trestle
11
10
  end
12
11
 
13
12
  def content_columns
14
- @admin.default_attributes.map.with_index do |attribute, index|
15
- next if attribute.inheritance_column?
16
- next if attribute.counter_cache?
17
-
18
- if attribute.association?
13
+ admin.default_table_attributes.map.with_index do |attribute, index|
14
+ case attribute.type
15
+ when :association
19
16
  Column.new(self, attribute.association_name, sort: false)
20
- elsif attribute.text?
21
- Column.new(self, attribute.name, link: index.zero?) do |instance|
22
- truncate(instance.public_send(attribute.name))
23
- end
24
17
  else
25
- Column.new(self, attribute.name, link: index.zero?, align: (:center if attribute.datetime? || attribute.boolean?))
18
+ Column.new(self, attribute.name, link: index.zero?, align: (:center if [:datetime, :boolean].include?(attribute.type)))
26
19
  end
27
- end.compact
20
+ end
28
21
  end
29
22
 
30
23
  def actions_column
@@ -5,6 +5,7 @@ module Trestle
5
5
 
6
6
  def initialize(options={})
7
7
  @table = Table.new(options)
8
+ @output_buffer = ActionView::OutputBuffer.new
8
9
  end
9
10
 
10
11
  def row(options={}, &block)
@@ -24,8 +25,8 @@ module Trestle
24
25
  table.columns << Column.new(table, field, options, &(proc || block))
25
26
  end
26
27
 
27
- def actions(&block)
28
- table.columns << ActionsColumn.new(table, &block)
28
+ def actions(options={}, &block)
29
+ table.columns << ActionsColumn.new(table, options, &block)
29
30
  end
30
31
  end
31
32
  end
@@ -28,8 +28,18 @@ module Trestle
28
28
  options[:sort].is_a?(Hash) ? options[:sort] : {}
29
29
  end
30
30
 
31
+ def header
32
+ if options[:header]
33
+ options[:header]
34
+ elsif table.admin
35
+ table.admin.human_attribute_name(field)
36
+ else
37
+ field.to_s.humanize.titleize
38
+ end
39
+ end
40
+
31
41
  class Renderer
32
- delegate :options, to: :@column
42
+ delegate :options, :table, to: :@column
33
43
 
34
44
  def initialize(column, template)
35
45
  @column, @template = column, template
@@ -38,24 +48,22 @@ module Trestle
38
48
  def header
39
49
  return if options.has_key?(:header) && options[:header].in?([nil, false])
40
50
 
41
- header = I18n.t("admin.table.headers.#{@column.field}", default: options[:header] || @column.field.to_s.humanize.titleize)
51
+ header = I18n.t("admin.table.headers.#{@column.field}", default: @column.header)
42
52
  header = @template.sort_link(header, @column.sort_field, @column.sort_options) if @column.sortable?
43
53
  header
44
54
  end
45
55
 
46
56
  def content(instance)
47
57
  value = column_value(instance)
48
-
49
- return blank_column(instance) if value.nil?
50
-
51
- content = format_column(value)
58
+ content = @template.format_value(value, options)
52
59
 
53
60
  if value.respond_to?(:id) && options[:link] != false
61
+ # Column value was a model instance (e.g. from an association).
54
62
  # Automatically link to instance's admin if available
55
63
  content = @template.admin_link_to(content, value)
56
64
  elsif options[:link]
57
65
  # Explicitly link to the specified admin, or the table's admin
58
- content = @template.admin_link_to(content, instance, admin: options[:admin] || @column.table.options[:admin])
66
+ content = @template.admin_link_to(content, instance, admin: options[:admin] || table.admin)
59
67
  end
60
68
 
61
69
  content
@@ -72,48 +80,22 @@ module Trestle
72
80
  private
73
81
  def column_value(instance)
74
82
  if @column.block
75
- @template.capture { @template.instance_exec(instance, &@column.block).to_s }
83
+ if defined?(Haml) && Haml::Helpers.block_is_haml?(@column.block)
84
+ # In order for table column blocks to work properly within Haml templates,
85
+ # the _hamlout local variable needs to be defined in the scope of the block,
86
+ # so that the Haml version of the capture method is used. Because we
87
+ # evaluate the block using instance_exec, we need to set this up manually.
88
+ -> {
89
+ _hamlout = eval('_hamlout', @column.block.binding)
90
+ @template.capture { @template.instance_exec(instance, &@column.block).to_s }
91
+ }.call
92
+ else
93
+ @template.capture { @template.instance_exec(instance, &@column.block).to_s }
94
+ end
76
95
  else
77
96
  instance.send(@column.field)
78
97
  end
79
98
  end
80
-
81
- def blank_column(value)
82
- text = options.key?(:blank) ? options[:blank] : I18n.t("admin.table.column.blank")
83
- @template.content_tag(:span, text, class: "blank")
84
- end
85
-
86
- def format_column(value)
87
- if options.key?(:format)
88
- format_from_options(value)
89
- else
90
- autoformat_value(value)
91
- end
92
- end
93
-
94
- def format_from_options(value)
95
- case options[:format]
96
- when :currency
97
- @template.number_to_currency(value)
98
- else
99
- value
100
- end
101
- end
102
-
103
- def autoformat_value(value)
104
- case value
105
- when Time, DateTime
106
- @template.timestamp(value)
107
- when Date
108
- @template.datestamp(value)
109
- when TrueClass, FalseClass
110
- @template.status_tag(@template.icon("fa fa-check"), :success) if value
111
- when ->(value) { value.respond_to?(:id) }
112
- @template.display(value)
113
- else
114
- value
115
- end
116
- end
117
99
  end
118
100
  end
119
101
  end
@@ -21,15 +21,21 @@ module Trestle
21
21
 
22
22
  def options(instance)
23
23
  options = Trestle::Options.new
24
- options.merge!(data: { url: admin_url_for(instance) }) if table.options[:admin]
24
+
25
+ if table.admin && table.autolink?
26
+ options.merge!(data: { url: admin_url_for(instance) })
27
+ options.merge!(data: { behavior: "dialog" }) if table.admin.form.dialog?
28
+ end
29
+
25
30
  options.merge!(@row.options)
26
31
  options.merge!(@template.instance_exec(instance, &@row.block)) if @row.block
32
+
27
33
  options
28
34
  end
29
35
 
30
36
  protected
31
37
  def admin_url_for(instance)
32
- @template.admin_url_for(instance, admin: table.options[:admin])
38
+ @template.admin_url_for(instance, admin: table.admin)
33
39
  end
34
40
  end
35
41
  end
data/lib/trestle/table.rb CHANGED
@@ -9,11 +9,13 @@ module Trestle
9
9
  autoload :SelectColumn
10
10
  autoload :Row
11
11
 
12
- attr_reader :columns, :options
12
+ attr_reader :columns, :options, :admin
13
13
  attr_writer :row
14
14
 
15
15
  def initialize(options={})
16
16
  @options = options
17
+ @admin = Trestle.lookup(options[:admin]) if options.key?(:admin)
18
+
17
19
  @columns = []
18
20
  end
19
21
 
@@ -21,6 +23,10 @@ module Trestle
21
23
  options[:sortable] == true
22
24
  end
23
25
 
26
+ def autolink?
27
+ options[:autolink] != false
28
+ end
29
+
24
30
  def renderer(template)
25
31
  Renderer.new(self, template)
26
32
  end
@@ -1,3 +1,3 @@
1
1
  module Trestle
2
- VERSION = "0.8.3"
2
+ VERSION = "0.8.6"
3
3
  end
data/lib/trestle.rb CHANGED
@@ -18,6 +18,7 @@ module Trestle
18
18
  autoload :Configuration
19
19
  autoload :Display
20
20
  autoload :Form
21
+ autoload :ModelName
21
22
  autoload :Navigation
22
23
  autoload :Options
23
24
  autoload :Reloader
data/trestle.gemspec CHANGED
@@ -33,11 +33,11 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.required_ruby_version = ">= 2.2.2"
35
35
 
36
- spec.add_dependency "rails", ">= 4.2.0"
37
- spec.add_dependency "sass-rails", "~> 5.0.6"
38
- spec.add_dependency "coffee-rails", "~> 4.2.1"
39
- spec.add_dependency "autoprefixer-rails", "~> 6.4.0"
40
- spec.add_dependency "kaminari", "~> 0.17.0"
36
+ spec.add_dependency "railties", ">= 4.2.0"
37
+ spec.add_dependency "activemodel", ">= 4.2.0"
38
+ spec.add_dependency "sass-rails", ">= 5.0.6"
39
+ spec.add_dependency "autoprefixer-rails", ">= 7.1.2"
40
+ spec.add_dependency "kaminari", "~> 1.1.0"
41
41
 
42
42
  spec.add_development_dependency "bundler", "~> 1.12"
43
43
  spec.add_development_dependency "rake", "~> 10.0"
@@ -14,12 +14,14 @@
14
14
  line-height: 24px;
15
15
  border-radius: 5px;
16
16
  position: absolute;
17
- width: 315px;
18
- box-sizing: border-box;
17
+ width: 307.875px;
18
+ -webkit-box-sizing: border-box;
19
+ box-sizing: border-box;
19
20
  -ms-touch-action: manipulation;
20
21
  touch-action: manipulation;
21
22
  background: #fff;
22
- box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
23
+ -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
24
+ box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
23
25
  }
24
26
  .flatpickr-calendar.open,
25
27
  .flatpickr-calendar.inline {
@@ -194,6 +196,7 @@
194
196
  }
195
197
  .flatpickr-prev-month svg path,
196
198
  .flatpickr-next-month svg path {
199
+ -webkit-transition: fill 0.1s;
197
200
  transition: fill 0.1s;
198
201
  fill: inherit;
199
202
  }
@@ -218,7 +221,8 @@
218
221
  opacity: 0;
219
222
  cursor: pointer;
220
223
  border: 1px solid rgba(57,57,57,0.05);
221
- box-sizing: border-box;
224
+ -webkit-box-sizing: border-box;
225
+ box-sizing: border-box;
222
226
  }
223
227
  .numInputWrapper span:hover {
224
228
  background: rgba(0,0,0,0.1);
@@ -326,7 +330,8 @@
326
330
  }
327
331
  .flatpickr-current-month input.cur-year {
328
332
  background: transparent;
329
- box-sizing: border-box;
333
+ -webkit-box-sizing: border-box;
334
+ box-sizing: border-box;
330
335
  color: inherit;
331
336
  cursor: default;
332
337
  padding: 0 0 0 0.5ch;
@@ -355,10 +360,12 @@
355
360
  background: transparent;
356
361
  text-align: center;
357
362
  overflow: hidden;
358
- width: 315px;
363
+ width: 100%;
364
+ display: -webkit-box;
359
365
  display: -webkit-flex;
360
366
  display: -ms-flexbox;
361
367
  display: flex;
368
+ -webkit-box-align: center;
362
369
  -webkit-align-items: center;
363
370
  -ms-flex-align: center;
364
371
  align-items: center;
@@ -373,6 +380,7 @@ span.flatpickr-weekday {
373
380
  margin: 0;
374
381
  text-align: center;
375
382
  display: block;
383
+ -webkit-box-flex: 1;
376
384
  -webkit-flex: 1;
377
385
  -ms-flex: 1;
378
386
  flex: 1;
@@ -385,10 +393,11 @@ span.flatpickr-weekday {
385
393
  .flatpickr-days {
386
394
  position: relative;
387
395
  overflow: hidden;
396
+ display: -webkit-box;
388
397
  display: -webkit-flex;
389
398
  display: -ms-flexbox;
390
399
  display: flex;
391
- width: 315px;
400
+ width: 307.875px;
392
401
  }
393
402
  .flatpickr-days:focus {
394
403
  outline: 0;
@@ -397,12 +406,14 @@ span.flatpickr-weekday {
397
406
  padding: 0;
398
407
  outline: 0;
399
408
  text-align: left;
400
- width: 315px;
401
- min-width: 315px;
402
- max-width: 315px;
403
- box-sizing: border-box;
409
+ width: 307.875px;
410
+ min-width: 307.875px;
411
+ max-width: 307.875px;
412
+ -webkit-box-sizing: border-box;
413
+ box-sizing: border-box;
404
414
  display: inline-block;
405
415
  display: -ms-flexbox;
416
+ display: -webkit-box;
406
417
  display: -webkit-flex;
407
418
  display: flex;
408
419
  -webkit-flex-wrap: wrap;
@@ -442,7 +453,8 @@ span.flatpickr-weekday {
442
453
  background: none;
443
454
  border: 1px solid transparent;
444
455
  border-radius: 150px;
445
- box-sizing: border-box;
456
+ -webkit-box-sizing: border-box;
457
+ box-sizing: border-box;
446
458
  color: #393939;
447
459
  cursor: pointer;
448
460
  font-weight: 400;
@@ -450,12 +462,13 @@ span.flatpickr-weekday {
450
462
  -webkit-flex-basis: 14.2857143%;
451
463
  -ms-flex-preferred-size: 14.2857143%;
452
464
  flex-basis: 14.2857143%;
453
- max-width: 40px;
454
- height: 40px;
455
- line-height: 40px;
465
+ max-width: 39px;
466
+ height: 39px;
467
+ line-height: 39px;
456
468
  margin: 0;
457
469
  display: inline-block;
458
470
  position: relative;
471
+ -webkit-box-pack: center;
459
472
  -webkit-justify-content: center;
460
473
  -ms-flex-pack: center;
461
474
  justify-content: center;
@@ -506,7 +519,8 @@ span.flatpickr-weekday {
506
519
  .flatpickr-day.startRange.nextMonthDay,
507
520
  .flatpickr-day.endRange.nextMonthDay {
508
521
  background: #569ff7;
509
- box-shadow: none;
522
+ -webkit-box-shadow: none;
523
+ box-shadow: none;
510
524
  color: #fff;
511
525
  border-color: #569ff7;
512
526
  }
@@ -523,7 +537,8 @@ span.flatpickr-weekday {
523
537
  .flatpickr-day.selected.startRange + .endRange,
524
538
  .flatpickr-day.startRange.startRange + .endRange,
525
539
  .flatpickr-day.endRange.startRange + .endRange {
526
- box-shadow: -10px 0 0 #569ff7;
540
+ -webkit-box-shadow: -10px 0 0 #569ff7;
541
+ box-shadow: -10px 0 0 #569ff7;
527
542
  }
528
543
  .flatpickr-day.selected.startRange.endRange,
529
544
  .flatpickr-day.startRange.startRange.endRange,
@@ -532,7 +547,8 @@ span.flatpickr-weekday {
532
547
  }
533
548
  .flatpickr-day.inRange {
534
549
  border-radius: 0;
535
- box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
550
+ -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
551
+ box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
536
552
  }
537
553
  .flatpickr-day.disabled,
538
554
  .flatpickr-day.disabled:hover {
@@ -552,7 +568,8 @@ span.flatpickr-weekday {
552
568
  }
553
569
  .flatpickr-day.week.selected {
554
570
  border-radius: 0;
555
- box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
571
+ -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
572
+ box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
556
573
  }
557
574
  .rangeMode .flatpickr-day {
558
575
  margin-top: 1px;
@@ -563,7 +580,8 @@ span.flatpickr-weekday {
563
580
  }
564
581
  .flatpickr-weekwrapper .flatpickr-weeks {
565
582
  padding: 0 12px;
566
- box-shadow: 1px 0 0 #e6e6e6;
583
+ -webkit-box-shadow: 1px 0 0 #e6e6e6;
584
+ box-shadow: 1px 0 0 #e6e6e6;
567
585
  }
568
586
  .flatpickr-weekwrapper .flatpickr-weekday {
569
587
  float: none;
@@ -577,16 +595,19 @@ span.flatpickr-weekday {
577
595
  }
578
596
  .flatpickr-innerContainer {
579
597
  display: block;
598
+ display: -webkit-box;
580
599
  display: -webkit-flex;
581
600
  display: -ms-flexbox;
582
601
  display: flex;
583
- box-sizing: border-box;
602
+ -webkit-box-sizing: border-box;
603
+ box-sizing: border-box;
584
604
  overflow: hidden;
585
605
  }
586
606
  .flatpickr-rContainer {
587
607
  display: inline-block;
588
608
  padding: 0;
589
- box-sizing: border-box;
609
+ -webkit-box-sizing: border-box;
610
+ box-sizing: border-box;
590
611
  }
591
612
  .flatpickr-time {
592
613
  text-align: center;
@@ -595,8 +616,10 @@ span.flatpickr-weekday {
595
616
  height: 0;
596
617
  line-height: 40px;
597
618
  max-height: 40px;
598
- box-sizing: border-box;
619
+ -webkit-box-sizing: border-box;
620
+ box-sizing: border-box;
599
621
  overflow: hidden;
622
+ display: -webkit-box;
600
623
  display: -webkit-flex;
601
624
  display: -ms-flexbox;
602
625
  display: flex;
@@ -607,6 +630,7 @@ span.flatpickr-weekday {
607
630
  clear: both;
608
631
  }
609
632
  .flatpickr-time .numInputWrapper {
633
+ -webkit-box-flex: 1;
610
634
  -webkit-flex: 1;
611
635
  -ms-flex: 1;
612
636
  flex: 1;
@@ -628,7 +652,8 @@ span.flatpickr-weekday {
628
652
  }
629
653
  .flatpickr-time input {
630
654
  background: transparent;
631
- box-shadow: none;
655
+ -webkit-box-shadow: none;
656
+ box-shadow: none;
632
657
  border: 0;
633
658
  border-radius: 0;
634
659
  text-align: center;
@@ -640,7 +665,8 @@ span.flatpickr-weekday {
640
665
  color: #393939;
641
666
  font-size: 14px;
642
667
  position: relative;
643
- box-sizing: border-box;
668
+ -webkit-box-sizing: border-box;
669
+ box-sizing: border-box;
644
670
  }
645
671
  .flatpickr-time input.flatpickr-hour {
646
672
  font-weight: bold;
@@ -668,7 +694,6 @@ span.flatpickr-weekday {
668
694
  user-select: none;
669
695
  -webkit-align-self: center;
670
696
  -ms-flex-item-align: center;
671
- -ms-grid-row-align: center;
672
697
  align-self: center;
673
698
  }
674
699
  .flatpickr-time .flatpickr-am-pm {