bootstrap_form_extensions 1.2.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/app/assets/javascripts/bootstrap_form_extensions/index.js +0 -1
  3. data/app/assets/javascripts/bootstrap_form_extensions/select_or_new.js +1 -1
  4. data/app/assets/stylesheets/bootstrap_form_extensions/index.css +0 -1
  5. data/app/assets/stylesheets/bootstrap_form_extensions/select_or_new.css +5 -2
  6. data/app/views/bootstrap_form_extensions/_submit_bar.html.erb +18 -13
  7. data/lib/bootstrap_form_extensions.rb +0 -3
  8. data/lib/bootstrap_form_extensions/arrayed_field.rb +8 -8
  9. data/lib/bootstrap_form_extensions/helpers.rb +0 -7
  10. data/lib/bootstrap_form_extensions/select_or_new.rb +3 -2
  11. data/lib/bootstrap_form_extensions/version.rb +1 -1
  12. data/test/arrayed_field_test.rb +9 -9
  13. data/test/dummy/app/models/thing.rb +0 -2
  14. data/test/dummy/config/application.rb +0 -3
  15. data/test/dummy/db/migrate/20150918185031_create_things.rb +1 -1
  16. data/test/dummy/db/migrate/20150924203053_add_timespan.rb +1 -1
  17. data/test/dummy/db/migrate/20150929213249_add_arrayed_field.rb +1 -1
  18. data/test/dummy/db/migrate/20151006171627_add_another_arrayed_field.rb +1 -1
  19. data/test/dummy/db/migrate/20151006181943_add_json_field.rb +1 -1
  20. data/test/dummy/db/migrate/20151007213131_add_scheduler_field.rb +1 -1
  21. data/test/dummy/db/migrate/20151106165522_add_category.rb +1 -1
  22. data/test/dummy/db/migrate/20151119160842_add_duration.rb +1 -1
  23. data/test/dummy/db/schema.rb +9 -10
  24. data/test/dummy/db/test.sqlite3 +0 -0
  25. data/test/dummy/log/test.log +4161 -843
  26. data/test/duration_test.rb +1 -1
  27. data/test/javascripts/arrayed_field_spec.js +15 -15
  28. data/test/javascripts/scheduler_spec.js +2 -2
  29. data/test/javascripts/select_or_new_spec.js +7 -7
  30. data/test/scheduler_test.rb +1 -1
  31. data/test/select_or_new_test.rb +4 -4
  32. data/test/submit_bar_test.rb +19 -14
  33. data/test/test_helper.rb +1 -1
  34. metadata +50 -77
  35. data/app/assets/javascripts/bootstrap_form_extensions/bootstrap-timepicker.min.js +0 -5
  36. data/app/assets/javascripts/bootstrap_form_extensions/time_picker.js +0 -61
  37. data/app/assets/stylesheets/bootstrap_form_extensions/bootstrap-timepicker.min.css +0 -10
  38. data/app/assets/stylesheets/bootstrap_form_extensions/common.css +0 -11
  39. data/app/assets/stylesheets/bootstrap_form_extensions/submit_bar.css +0 -4
  40. data/lib/bootstrap_form_extensions/date_time_pickers.rb +0 -83
  41. data/test/date_time_pickers_test.rb +0 -50
  42. data/test/dummy/db/migrate/20151030194330_add_date_time.rb +0 -7
  43. data/test/javascripts/time_picker_spec.js +0 -42
@@ -1,61 +0,0 @@
1
- +function ($) {
2
- 'use strict';
3
-
4
-
5
- // TIME PICKER CLASS DEFINITION
6
- // ============================
7
-
8
- var TimePicker = function (element, options) {
9
- var defaults = {
10
- minuteStep: 1,
11
- showSeconds: true,
12
- secondStep: 1,
13
- showMeridian: false,
14
- defaultTime: false
15
- }
16
- $(element).timepicker($.extend(defaults, options))
17
- }
18
-
19
- TimePicker.VERSION = '1.2.1'
20
-
21
-
22
- // TIME PICKER PLUGIN DEFINITION
23
- // =============================
24
-
25
- function Plugin(options) {
26
- return $(this).each(function () {
27
- var $this = $(this)
28
- var data = $this.data('bsfe.timepicker')
29
-
30
- if (!data) $this.data('bsfe.timepicker', (data = new TimePicker(this, options)))
31
- })
32
- }
33
-
34
- var old = $.fn.timePicker
35
-
36
- $.fn.timePicker = Plugin
37
- $.fn.timePicker.Constructor = TimePicker
38
-
39
-
40
- // TIME PICKER NO CONFLICT
41
- // =======================
42
-
43
- $.fn.timePicker.noConflict = function () {
44
- $.fn.timePicker = old
45
- return this
46
- }
47
-
48
-
49
- // TIME PICKER DATA-API
50
- // ====================
51
-
52
- $(window).on('load page:load turbolinks:load page:restore', function () {
53
- $('[data-provide="timepicker"]').each(function () {
54
- var $picker = $(this)
55
- var options = $picker.html5data('time')
56
-
57
- Plugin.call($picker, options)
58
- })
59
- })
60
-
61
- }(jQuery);
@@ -1,10 +0,0 @@
1
- /*!
2
- * Timepicker Component for Twitter Bootstrap
3
- *
4
- * Copyright 2013 Joris de Wit
5
- *
6
- * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .input-group-addon{cursor:pointer}.bootstrap-timepicker .input-group-addon i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:4px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,0.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.timepicker-orient-left:before{left:6px}.bootstrap-timepicker-widget.timepicker-orient-left:after{left:7px}.bootstrap-timepicker-widget.timepicker-orient-right:before{right:6px}.bootstrap-timepicker-widget.timepicker-orient-right:after{right:7px}.bootstrap-timepicker-widget.timepicker-orient-top:before{top:-7px}.bootstrap-timepicker-widget.timepicker-orient-top:after{top:-6px}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px;font-size:18px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media(min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media(max-width:767px){.bootstrap-timepicker{width:100%}.bootstrap-timepicker .dropdown-menu{width:100%}}
@@ -1,11 +0,0 @@
1
- // Vertical space
2
- .voffset { margin-top: 2px; }
3
- .voffset1 { margin-top: 5px; }
4
- .voffset2 { margin-top: 10px; }
5
- .voffset3 { margin-top: 15px; }
6
- .voffset4 { margin-top: 30px; }
7
- .voffset5 { margin-top: 40px; }
8
- .voffset6 { margin-top: 60px; }
9
- .voffset7 { margin-top: 80px; }
10
- .voffset8 { margin-top: 100px; }
11
- .voffset9 { margin-top: 150px; }
@@ -1,4 +0,0 @@
1
- .submitbar-next-action-menu > li > button.btn-link {
2
- width: 100%;
3
- text-align: left;
4
- }
@@ -1,83 +0,0 @@
1
- module BootstrapFormExtensions
2
-
3
- module DateTimePickers
4
-
5
- include BootstrapFormExtensions::Helpers
6
-
7
- def date_time_picker attribute, **options
8
- name = attribute.to_s.sub /_at$/, ''
9
- date_method = options.delete(:date_method) { "#{name}_date".to_sym }
10
- time_method = options.delete(:time_method) { "#{name}_time".to_sym }
11
-
12
- date_options = options.delete(:date_options) { {} }
13
- time_options = options.delete(:time_options) { {} }
14
- date_options[:class] = merge_css_classes 'form-control', date_options[:class]
15
- time_options[:class] = merge_css_classes 'form-control', time_options[:class]
16
-
17
- # TODO: Replace for these commented out lines, once this pull request is merged: https://github.com/bootstrap-ruby/rails-bootstrap-forms/pull/238
18
- # options[:wrapper] ||= {}
19
- # options[:wrapper].merge! inline: true
20
- options[:control_col] = control_col_for_date_time_pickers options
21
-
22
- date_picker_html = content_tag :div, date_picker_builder(date_method, date_options), class: 'form-group'
23
- time_picker_html = content_tag :div, time_picker_builder(time_method, time_options), class: 'form-group'
24
- form_group_builder(attribute, options) { date_picker_html + '  '.html_safe + time_picker_html }
25
- end
26
-
27
- def date_picker method, **options
28
- # TODO: Replace for these commented out lines, once this pull request is merged: https://github.com/bootstrap-ruby/rails-bootstrap-forms/pull/238
29
- # options[:wrapper] ||= {}
30
- # options[:wrapper].merge! inline: true
31
- options[:control_col] = control_col_for_date_time_pickers options
32
- form_group_builder(method, options) { date_picker_builder method, options }
33
- end
34
-
35
- def time_picker method, **options
36
- # TODO: Replace for these commented out lines, once this pull request is merged: https://github.com/bootstrap-ruby/rails-bootstrap-forms/pull/238
37
- # options[:wrapper] ||= {}
38
- # options[:wrapper].merge! inline: true
39
- options[:control_col] = control_col_for_date_time_pickers options
40
- form_group_builder(method, options) { time_picker_builder method, options }
41
- end
42
-
43
- private
44
-
45
- def date_picker_builder method, **options
46
- widget_options = {
47
- provide: 'datepicker',
48
- date_today_highlight: true,
49
- date_format: 'yyyy-mm-dd',
50
- date_today_btn: 'linked',
51
- date_autoclose: true,
52
- date_disable_touch_keyboard: true,
53
- date_enable_on_readonly: false,
54
- date_show_on_focus: false
55
- }
56
- widget = options.delete(:widget) { {} }
57
- widget.each { |option, value| widget_options["date_#{option.to_s.underscore}".to_sym] = value }
58
-
59
- text = self.text_field_without_bootstrap method, { size: 10 }.merge(options)
60
- icon = content_tag :span, glyphicon_tag('calendar'), class: 'input-group-addon'
61
- content_tag :div, text + icon, class: 'input-group date', data: widget_options
62
- end
63
-
64
- def time_picker_builder method, **options
65
- widget_options = { provide: 'timepicker' }
66
- widget = options.delete(:widget) { {} }
67
- widget.each { |option, value| widget_options["time_#{option.to_s.underscore}".to_sym] = value }
68
-
69
- options.reverse_merge! size: 8, data: {}
70
- options[:data].merge! widget_options
71
-
72
- text = self.text_field_without_bootstrap method, options
73
- icon = content_tag :span, glyphicon_tag('time'), class: 'input-group-addon'
74
- content_tag :div, text + icon, class: 'input-group bootstrap-timepicker'
75
- end
76
-
77
- def control_col_for_date_time_pickers options
78
- (options[:control_col] || control_col.clone) + ' form-inline'
79
- end
80
-
81
- end
82
-
83
- end
@@ -1,50 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DateTimePickersTest < ActionView::TestCase
4
- include BootstrapFormExtensions::DateTimePickers
5
-
6
- def setup
7
- setup_test_fixture
8
- end
9
-
10
- test "date_picker" do
11
- expected = '<div class="form-group"><label class="control-label col-sm-2" for="thing_start_date">Start date</label><div class="col-sm-10 form-inline"><div class="input-group date" data-provide="datepicker" data-date-today-highlight="true" data-date-format="yyyy-mm-dd" data-date-today-btn="linked" data-date-autoclose="true" data-date-disable-touch-keyboard="true" data-date-enable-on-readonly="false" data-date-show-on-focus="false"><input size="10" class="form-control" type="text" value="1971-10-21" name="thing[start_date]" id="thing_start_date" /><span class="input-group-addon"><i class=" glyphicon glyphicon-calendar"></i></span></div></div></div>'
12
- assert_equal expected, @builder.date_picker(:start_date)
13
- end
14
-
15
- test "add an option to date_picker" do
16
- @output_buffer = @builder.date_picker :start_date, widget: { clear_btn: true }
17
- assert_select 'div.date[data-date-clear-btn=true]'
18
- end
19
-
20
- test "overwrite one of the default options to date_picker" do
21
- @output_buffer = @builder.date_picker :start_date, widget: { format: 'dd-mm-yyyy' }
22
- assert_select 'div.date[data-date-format="dd-mm-yyyy"]'
23
- end
24
-
25
- test "time_picker" do
26
- expected = '<div class="form-group"><label class="control-label col-sm-2" for="thing_start_time">Start time</label><div class="col-sm-10 form-inline"><div class="input-group bootstrap-timepicker"><input class="form-control" size="8" data-provide="timepicker" type="text" value="07:30:00" name="thing[start_time]" id="thing_start_time" /><span class="input-group-addon"><i class=" glyphicon glyphicon-time"></i></span></div></div></div>'
27
- assert_equal expected, @builder.time_picker(:start_time)
28
- end
29
-
30
- test "add an option to time_picker" do
31
- @output_buffer = @builder.time_picker :start_time, widget: { disable_mousewheel: true }
32
- assert_select 'input[data-time-disable-mousewheel=true]'
33
- end
34
-
35
- test "date_time_picker" do
36
- expected = '<div class="form-group"><label class="control-label col-sm-2" for="thing_start_at">Start at</label><div class="col-sm-10 form-inline"><div class="form-group"><div class="input-group date" data-provide="datepicker" data-date-today-highlight="true" data-date-format="yyyy-mm-dd" data-date-today-btn="linked" data-date-autoclose="true" data-date-disable-touch-keyboard="true" data-date-enable-on-readonly="false" data-date-show-on-focus="false"><input size="10" class="form-control" type="text" value="1971-10-21" name="thing[start_date]" id="thing_start_date" /><span class="input-group-addon"><i class=" glyphicon glyphicon-calendar"></i></span></div></div>&nbsp;&nbsp;<div class="form-group"><div class="input-group bootstrap-timepicker"><input class="form-control" size="8" data-provide="timepicker" type="text" value="07:30:00" name="thing[start_time]" id="thing_start_time" /><span class="input-group-addon"><i class=" glyphicon glyphicon-time"></i></span></div></div></div></div>'
37
- assert_equal expected, @builder.date_time_picker(:start_at)
38
- end
39
-
40
- test "add an option to the date control in the date_time_picker" do
41
- @output_buffer = @builder.date_time_picker :start_at, date_options: { widget: { clear_btn: true } }
42
- assert_select 'div.date[data-date-clear-btn=true]'
43
- end
44
-
45
- test "add an option to the time control in the date_time_picker" do
46
- @output_buffer = @builder.date_time_picker :start_at, time_options: { widget: { disable_mousewheel: true } }
47
- assert_select 'input[data-time-disable-mousewheel=true]'
48
- end
49
-
50
- end
@@ -1,7 +0,0 @@
1
- class AddDateTime < ActiveRecord::Migration
2
-
3
- def change
4
- add_column :things, :start_at, :datetime
5
- end
6
-
7
- end
@@ -1,42 +0,0 @@
1
- describe("TimePicker", function() {
2
-
3
- describe("Plugin", function() {
4
-
5
- it("should be defined on jQuery object", function() {
6
- expect($(document.body).timePicker).not.toThrow()
7
- })
8
-
9
- })
10
-
11
- describe("Run tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode", function() {
12
-
13
- beforeEach(function() {
14
- $.fn.bootstrapTimePicker = $.fn.timePicker.noConflict()
15
- })
16
-
17
- afterEach(function() {
18
- $.fn.timePicker = $.fn.bootstrapTimePicker
19
- delete $.fn.bootstrapTimePicker
20
- })
21
-
22
- describe("initialization", function() {
23
-
24
- it("should provide no conflict - timePicker was set back to undefined (orig value)", function() {
25
- expect($.fn.timePicker).toBeUndefined()
26
- })
27
-
28
- it("should return jquery collection containing the element", function() {
29
- var $el = $('<div/>')
30
- var $timePicker = $el.bootstrapTimePicker()
31
- expect($timePicker).toEqual(jasmine.any($))
32
- expect($timePicker[0]).toBe($el[0])
33
- })
34
-
35
- })
36
-
37
- describe("behaviour", function() {
38
- })
39
-
40
- })
41
-
42
- })