egov_utils 0.3.12 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a95d6fe7f9000bfac0bb24de5acade1576a49025702c5cf88d59e31544cbb7f
4
- data.tar.gz: c896bf16364563056d2287637a341acd87e464968d7d7596ab253be25fd1bd18
3
+ metadata.gz: 2290ad2369d8330daa5b454e76bc5f042931f191e10697178b86bc08c5412fb5
4
+ data.tar.gz: cd4db6767c26c648c93bb6f70038ce294b0f8f215fb684cb7177a14af3ccbe50
5
5
  SHA512:
6
- metadata.gz: 9fe9ea839119567599ee76678e0db5561215676c0738d57f6dc8c0f10f7f7a4c230399daa0433c011913ce6bd399d40f67d4b669c4dd3bd39ae1bb09a85b031d
7
- data.tar.gz: 10a37f44366e72459915ded44329b3e3982c4b9c8ce6913dbad5eff5a54a1b9fed2ddbd3f655b2cb453f50e170356369c0556f233cd3fc8200251d67fca01433
6
+ metadata.gz: 65b89e4897982f5c62154dfacf26addab9ddffa031ff19c9425998a42c36d39f440ec1dbac5d2de30cd199b707983df3ed2f68bb3ca5770e738ca76de4934fa5
7
+ data.tar.gz: 55905eab4a285b84c1f1dc47f2d31cc4fa5ea2a92d612018695314227c949364295cc7895038d2dd76cdb5976d4554d8aa5453ec80e26f583d90829c8595f1a3
@@ -14,7 +14,7 @@
14
14
  //= require moment/cs
15
15
  //= require popper
16
16
  //= require bootstrap-sprockets
17
- //= require bootstrap-datetimepicker
17
+ //= require tempusdominus-bootstrap-4
18
18
  //= require shieldui-all.min
19
19
  //= require select2/select2
20
20
  //= require select2/i18n/cs
@@ -13,17 +13,17 @@ window.eGovUtilities =
13
13
  $.fn.select2.defaults.set( "theme", "bootstrap" )
14
14
 
15
15
  # datepicker defaults
16
- $.extend $.fn.datetimepicker.defaults.icons, {
17
- time: 'fa fa-clock-o',
18
- date: 'fa fa-calendar',
19
- up: 'fa fa-chevron-up',
20
- down: 'fa fa-chevron-down',
21
- previous: 'fa fa-chevron-left',
22
- next: 'fa fa-chevron-right',
23
- today: 'fa fa-calendar-check-o',
24
- clear: 'fa fa-trash-o',
25
- close: 'fa fa-close'
26
- }
16
+ # $.extend $.fn.datetimepicker.Constructor.Default.icons, {
17
+ # time: 'fa fa-clock-o',
18
+ # date: 'fa fa-calendar',
19
+ # up: 'fa fa-chevron-up',
20
+ # down: 'fa fa-chevron-down',
21
+ # previous: 'fa fa-chevron-left',
22
+ # next: 'fa fa-chevron-right',
23
+ # today: 'fa fa-calendar-check-o',
24
+ # clear: 'fa fa-trash-o',
25
+ # close: 'fa fa-close'
26
+ # }
27
27
 
28
28
  $(document).on 'change', '.custom-file-input:file', ()->
29
29
  $input = $(this)
@@ -54,13 +54,13 @@ window.eGovUtilities =
54
54
  $container ||= $(document)
55
55
  if !Modernizr.inputtypes.date
56
56
  pickers = $('[type="date"][data-provide="datepicker"]', $container)
57
- pickers.parent().datetimepicker()
57
+ pickers.addClass('datetimepicker-input').parents().datetimepicker({allowInputToggle: true})
58
58
  if !Modernizr.inputtypes.datetime
59
59
  pickers = $('[type="datetime"][data-provide="datepicker"]', $container)
60
- pickers.parent().datetimepicker()
60
+ pickers.addClass('datetimepicker-input').parents().datetimepicker({allowInputToggle: true})
61
61
  if !Modernizr.inputtypes['datetime-local']
62
62
  pickers = $('[type="datetime-local"][data-provide="datepicker"]', $container)
63
- pickers.parent().datetimepicker()
63
+ pickers.addClass('datetimepicker-input').parents().datetimepicker({allowInputToggle: true})
64
64
 
65
65
  initPeople: ($container)->
66
66
  $container ||= $(document)
@@ -1,5 +1,7 @@
1
1
  /* all css to be included in main app */
2
2
 
3
+ @import "tempusdominus-bootstrap-4";
4
+
3
5
  @import 'select2/select2';
4
6
  @import 'egov_utils/select2-bootstrap';
5
7
 
@@ -109,7 +109,7 @@ $ ->
109
109
  <% schema.columns.each do |col| %>
110
110
  <%= raw column_for_grid(grid, col) %>
111
111
  <% end %>
112
- <% if can?(:update, schema.model) || can?(:destroy, schema.model) %>
112
+ <% if can?(:update, schema.model) || (local_assigns.fetch(:allow_delete, false) && can?(:destroy, schema.model)) %>
113
113
  {
114
114
  width: 150
115
115
  title: "<%= t('label_actions') %>"
@@ -1,7 +1,7 @@
1
1
  %table.table#users
2
2
  %thead
3
3
  %tr
4
- %th= t('model_attributes.user.fullname')
4
+ %th= EgovUtils::User.human_attribute_name('fullname')
5
5
  %th= EgovUtils::User.human_attribute_name('provider')
6
6
  %th= EgovUtils::User.human_attribute_name('roles')
7
7
  %th= EgovUtils::User.human_attribute_name('groups')
@@ -12,37 +12,7 @@ module BootstrapForm
12
12
  end
13
13
  options[:label_class] = label_classes.compact.join(' ')
14
14
 
15
-
16
- check_box_options[:class] = ['form-check-input', check_box_options[:class]].compact.join(' ')
17
-
18
-
19
- html = check_box_without_bootstrap(name, check_box_options, checked_value, unchecked_value)
20
- label_content = block_given? ? capture(&block) : options[:label]
21
- html.concat(' ').concat(label_content || (object && object.class.human_attribute_name(name)) || name.to_s.humanize)
22
-
23
- label_name = name
24
- # label's `for` attribute needs to match checkbox tag's id,
25
- # IE sanitized value, IE
26
- # https://github.com/rails/rails/blob/c57e7239a8b82957bcb07534cb7c1a3dcef71864/actionview/lib/action_view/helpers/tags/base.rb#L116-L118
27
- if options[:multiple]
28
- label_name =
29
- "#{name}_#{checked_value.to_s.gsub(/\s/, "_").gsub(/[^-\w]/, "").downcase}"
30
- end
31
-
32
- disabled_class = " disabled" if options[:disabled]
33
- label_class = options[:label_class]
34
-
35
- if options[:inline]
36
- label_class = " #{label_class}" if label_class
37
- label(label_name, html, class: "checkbox-inline#{disabled_class}#{label_class}")
38
- else
39
- wrapper_class = ['form-check', options[:wrapper_class]]
40
- wrapper_class << error_class if has_error?(name)
41
- wrapper_class = wrapper_class.compact.join(' ')
42
- content_tag(:div, class: "#{wrapper_class}#{disabled_class}") do
43
- label(label_name, html, class: label_class).concat(generate_help(name, options[:help]))
44
- end
45
- end
15
+ super
46
16
  end
47
17
 
48
18
  end
@@ -2,9 +2,9 @@ module BootstrapForm
2
2
  module Datetimepicker
3
3
  def date_field(name, *args)
4
4
  options = args.extract_options!.symbolize_keys!
5
- options[:datetimepicker] = true
6
- options[:data] = {'date-format' => 'L', 'date-extra-formats' => [BootstrapForm::DATE_FORMAT_JS]}.merge(options[:data] || {})
7
- options[:append] = calendar_addon
5
+ prepare_options(name, options)
6
+ options[:input_group][:data].merge!({'date-format' => 'L', 'date-extra-formats' => [BootstrapForm::DATE_FORMAT_JS]}.merge(options[:data] || {}))
7
+ append_min_max(BootstrapForm::DATE_FORMAT_RUBY, options)
8
8
  args << options
9
9
  super
10
10
  end
@@ -19,9 +19,9 @@ module BootstrapForm
19
19
 
20
20
  def datetime_local_field(name, *args)
21
21
  options = args.extract_options!.symbolize_keys!
22
- options[:datetimepicker] = true
23
- options[:data] = {'date-extra-formats' => [BootstrapForm::DATE_FORMAT_JS+"THH:mm"+(options[:include_seconds] ? ':ss' : '')]}.merge(options[:data] || {})
24
- options[:append] = calendar_addon
22
+ prepare_options(name, options)
23
+ options[:input_group][:data].merge!({'date-extra-formats' => [BootstrapForm::DATE_FORMAT_JS+"THH:mm"+(options[:include_seconds] ? ':ss' : '')]}.merge(options[:data] || {}))
24
+ append_min_max(BootstrapForm::DATE_FORMAT_RUBY+"T%T", options)
25
25
  args << options
26
26
  super
27
27
  end
@@ -30,8 +30,37 @@ module BootstrapForm
30
30
 
31
31
  private
32
32
 
33
+ def prepare_options(name, options)
34
+ input_group_id = default_group_id(name)
35
+ options[:datetimepicker] = true
36
+ options[:append] = calendar_addon
37
+ options[:input_group_class] = 'date'
38
+ options[:input_group] ||= {}
39
+ options[:input_group][:id] = input_group_id
40
+ options[:input_group][:data] = {'target-input' => 'nearest'}
41
+ options[:append_tag] = {data: {toggle: 'datetimepicker', target: '#' + input_group_id}}
42
+ options[:data] ||= {}
43
+ options[:data][:target] = '#' + input_group_id
44
+ end
45
+
46
+ def append_min_max(format, options)
47
+ options[:input_group][:data].merge!('date-min-date' => options[:min].try(:strftime, format), 'date-max-date' => options[:max].try(:strftime, format))
48
+ end
49
+
33
50
  def calendar_addon
34
- content_tag('i', '', class: 'input-group-text fa fa-calendar')
51
+ content_tag('i', '', class: 'fa fa-calendar')
52
+ end
53
+
54
+ def default_group_id(method_name)
55
+ "#{sanitized_object_name}_#{sanitized_method_name(method_name)}_group"
56
+ end
57
+
58
+ def sanitized_object_name
59
+ @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
60
+ end
61
+
62
+ def sanitized_method_name(method_name)
63
+ method_name.to_s.sub(/\?$/, "")
35
64
  end
36
65
  end
37
66
  end
@@ -5,7 +5,7 @@ module BootstrapForm
5
5
 
6
6
  def fileuid_field(method, options={})
7
7
  form_group_builder(method, options) do
8
- prepend_and_append_input(options) do
8
+ prepend_and_append_input(method, options) do
9
9
  @template.fileuid_field(@object_name, method, objectify_options(options))
10
10
  end
11
11
  end
@@ -7,6 +7,21 @@ module BootstrapForm
7
7
  super(name, options)
8
8
  end
9
9
 
10
+
11
+ # TODO check upstream - append tag options
12
+ def prepend_and_append_input(name, options, &block)
13
+ options = options.extract!(:prepend, :append, :input_group_class, :append_tag, :input_group)
14
+ input_group_class = ["input-group", options[:input_group_class]].compact.join(' ')
15
+
16
+ input = capture(&block) || "".html_safe
17
+
18
+ input = content_tag(:div, input_group_content(options[:prepend]), class: 'input-group-prepend') + input if options[:prepend]
19
+ input << content_tag(:div, input_group_content(options[:append]), (options[:append_tag] || {}).merge(class: 'input-group-append')) if options[:append]
20
+ input << generate_error(name)
21
+ input = content_tag(:div, input, (options[:input_group] || {}).merge(class: input_group_class)) unless options.empty?
22
+ input
23
+ end
24
+
10
25
  end
11
26
  end
12
27
  end
@@ -1,20 +1,10 @@
1
1
  module BootstrapForm
2
2
  module Select2
3
3
 
4
- if Gem::Version.new(::Rails::VERSION::STRING) >= Gem::Version.new("4.1.0")
5
- def select2(method, choices = nil, options = {}, html_options = {}, &block)
6
- form_group_builder(method, options, html_options) do
7
- prepend_and_append_input(options) do
8
- @template.select2(@object_name, method, choices, objectify_options(options), @default_options.merge(html_options), &block)
9
- end
10
- end
11
- end
12
- else
13
- def select2(method, choices, options = {}, html_options = {}, &block)
14
- form_group_builder(method, options, html_options) do
15
- prepend_and_append_input(options) do
16
- @template.select2(@object_name, method, choices, objectify_options(options), @default_options.merge(html_options))
17
- end
4
+ def select2(method, choices = nil, options = {}, html_options = {}, &block)
5
+ form_group_builder(method, options, html_options) do
6
+ prepend_and_append_input(method, options) do
7
+ @template.select2(@object_name, method, choices, objectify_options(options), @default_options.merge(html_options), &block)
18
8
  end
19
9
  end
20
10
  end
@@ -1,8 +1,10 @@
1
1
  require 'jquery-rails'
2
2
  require 'jquery-ui-rails'
3
+ require 'font-awesome-sass'
3
4
  require 'bootstrap'
4
5
  require 'bootstrap_form'
5
6
  require 'momentjs-rails'
7
+ require 'bootstrap4-datetime-picker-rails'
6
8
 
7
9
  require 'egov_utils/fileuid'
8
10
  require 'egov_utils/model_permissions'
@@ -108,8 +108,8 @@ module EgovUtils
108
108
  require 'bootstrap_form/check_box_patch'
109
109
  BootstrapForm::FormBuilder.__send__(:prepend, BootstrapForm::CheckBoxPatch)
110
110
 
111
+ #TODO: same as redefine method down?
111
112
  require 'egov_utils/helpers/tags/datetime_field_patch'
112
- ActionView::Helpers::Tags::DatetimeField.prepend(EgovUtils::Helpers::Tags::DatetimeFieldPatch)
113
113
  ActionView::Helpers::Tags::DatetimeLocalField.prepend(EgovUtils::Helpers::Tags::DatetimeLocalFieldPatch)
114
114
 
115
115
  ActionView::Helpers::Tags::DateField.redefine_method(:format_date) do |value|
@@ -1,22 +1,6 @@
1
1
  module EgovUtils
2
2
  module Helpers
3
3
  module Tags
4
- module DatetimeFieldPatch
5
-
6
- def render
7
- pickerize_options! if @options.stringify_keys['datetimepicker']
8
- super
9
- end
10
-
11
- protected
12
-
13
- def pickerize_options!
14
- options = @options.stringify_keys
15
- picker_data = {'provide' => 'datepicker', 'date-min-date' => format_date(datetime_value(options["min"])), 'date-max-date' => format_date(datetime_value(options["max"])) }
16
- @options[:data] = picker_data.merge(options['data'] || {})
17
- end
18
-
19
- end
20
4
 
21
5
  module DatetimeLocalFieldPatch
22
6
  private
@@ -1,3 +1,3 @@
1
1
  module EgovUtils
2
- VERSION = '0.3.12'
2
+ VERSION = '0.4.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: egov_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Ezr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-30 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -226,14 +226,14 @@ dependencies:
226
226
  requirements:
227
227
  - - "~>"
228
228
  - !ruby/object:Gem::Version
229
- version: 4.0.0
229
+ version: '4.0'
230
230
  type: :runtime
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: 4.0.0
236
+ version: '4.0'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: sass-rails
239
239
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +268,28 @@ dependencies:
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: '2.7'
271
+ version: 4.0.0.dev
272
272
  type: :runtime
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: '2.7'
278
+ version: 4.0.0.dev
279
+ - !ruby/object:Gem::Dependency
280
+ name: bootstrap4-datetime-picker-rails
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - "~>"
284
+ - !ruby/object:Gem::Version
285
+ version: '0.1'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: '0.1'
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: momentjs-rails
281
295
  requirement: !ruby/object:Gem::Requirement