effective_form_inputs 0.8.5 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ef35a47bb20efab42c4e31d4c7c8aec2dc8d6e4
4
- data.tar.gz: dee79c46dab3535c508a0291c3dd507965d25519
3
+ metadata.gz: 9669ce7ecda604b1c0bd0ef1bbaddcf6dcbbb0cb
4
+ data.tar.gz: 16032e2ed35d105bebee6a0cdc4e9395742b9b32
5
5
  SHA512:
6
- metadata.gz: 3384c1d117c4fb09ad3c11be0a56db23f267921483e3a370718ca0fa893439406cd8b8d154d759be0fb9616259da554978f6a2d5505c8c7d19b51f2b7d58bc9e
7
- data.tar.gz: e0f8de9103ac67bb09eb1ef32de4857a51bd5e5cc554715e00dba37a389ca955db40a9ac40f9fff521c5c468c598c47c7ffa538d2793adc67452da312d0e72e4
6
+ metadata.gz: 25abb4767be706f8b4fc5465c626b85be207b8c96501c34a9627c1efcf3ae815b716436aaaad530e3f82cccdf43144af3525494fff0e625d781423ddc2128077
7
+ data.tar.gz: 3549365f9f6a87246958cff727c73e46b5345da77e39ec46ae834849dcf791a2d0beb832952b87073458be89ab07410c07833d3f26fa67e59aaa0bda6f773515
@@ -1,4 +1,4 @@
1
- /*! version : 4.15.35
1
+ /*! version : 4.17.37
2
2
  =========================================================
3
3
  bootstrap-datetimejs
4
4
  https://github.com/Eonasdan/bootstrap-datetimepicker
@@ -58,8 +58,8 @@
58
58
 
59
59
  var dateTimePicker = function (element, options) {
60
60
  var picker = {},
61
- date = moment().startOf('d'),
62
- viewDate = date.clone(),
61
+ date,
62
+ viewDate,
63
63
  unset = true,
64
64
  input,
65
65
  component = false,
@@ -132,6 +132,40 @@
132
132
  * Private functions
133
133
  *
134
134
  ********************************************************************************/
135
+ getMoment = function (d) {
136
+ var tzEnabled = false,
137
+ returnMoment,
138
+ currentZoneOffset,
139
+ incomingZoneOffset,
140
+ timeZoneIndicator,
141
+ dateWithTimeZoneInfo;
142
+
143
+ if (moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '') {
144
+ tzEnabled = true;
145
+ }
146
+ if (d === undefined || d === null) {
147
+ if (tzEnabled) {
148
+ returnMoment = moment().tz(options.timeZone).startOf('d');
149
+ } else {
150
+ returnMoment = moment().startOf('d');
151
+ }
152
+ } else {
153
+ if (tzEnabled) {
154
+ currentZoneOffset = moment().tz(options.timeZone).utcOffset();
155
+ incomingZoneOffset = moment(d, parseFormats, options.useStrict).utcOffset();
156
+ if (incomingZoneOffset !== currentZoneOffset) {
157
+ timeZoneIndicator = moment().tz(options.timeZone).format('Z');
158
+ dateWithTimeZoneInfo = moment(d, parseFormats, options.useStrict).format('YYYY-MM-DD[T]HH:mm:ss') + timeZoneIndicator;
159
+ returnMoment = moment(dateWithTimeZoneInfo, parseFormats, options.useStrict).tz(options.timeZone);
160
+ } else {
161
+ returnMoment = moment(d, parseFormats, options.useStrict).tz(options.timeZone);
162
+ }
163
+ } else {
164
+ returnMoment = moment(d, parseFormats, options.useStrict);
165
+ }
166
+ }
167
+ return returnMoment;
168
+ },
135
169
  isEnabled = function (granularity) {
136
170
  if (typeof granularity !== 'string' || granularity.length > 1) {
137
171
  throw new TypeError('isEnabled expects a single character string parameter');
@@ -209,12 +243,12 @@
209
243
 
210
244
  if (isEnabled('h')) {
211
245
  topRow.append($('<td>')
212
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Increment Hour'}).addClass('btn').attr('data-action', 'incrementHours')
246
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.incrementHour}).addClass('btn').attr('data-action', 'incrementHours')
213
247
  .append($('<span>').addClass(options.icons.up))));
214
248
  middleRow.append($('<td>')
215
- .append($('<span>').addClass('timepicker-hour').attr({'data-time-component':'hours', 'title':'Pick Hour'}).attr('data-action', 'showHours')));
249
+ .append($('<span>').addClass('timepicker-hour').attr({'data-time-component':'hours', 'title': options.tooltips.pickHour}).attr('data-action', 'showHours')));
216
250
  bottomRow.append($('<td>')
217
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Decrement Hour'}).addClass('btn').attr('data-action', 'decrementHours')
251
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.decrementHour}).addClass('btn').attr('data-action', 'decrementHours')
218
252
  .append($('<span>').addClass(options.icons.down))));
219
253
  }
220
254
  if (isEnabled('m')) {
@@ -224,12 +258,12 @@
224
258
  bottomRow.append($('<td>').addClass('separator'));
225
259
  }
226
260
  topRow.append($('<td>')
227
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Increment Minute'}).addClass('btn').attr('data-action', 'incrementMinutes')
261
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.incrementMinute}).addClass('btn').attr('data-action', 'incrementMinutes')
228
262
  .append($('<span>').addClass(options.icons.up))));
229
263
  middleRow.append($('<td>')
230
- .append($('<span>').addClass('timepicker-minute').attr({'data-time-component': 'minutes', 'title':'Pick Minute'}).attr('data-action', 'showMinutes')));
264
+ .append($('<span>').addClass('timepicker-minute').attr({'data-time-component': 'minutes', 'title': options.tooltips.pickMinute}).attr('data-action', 'showMinutes')));
231
265
  bottomRow.append($('<td>')
232
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Decrement Minute'}).addClass('btn').attr('data-action', 'decrementMinutes')
266
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.decrementMinute}).addClass('btn').attr('data-action', 'decrementMinutes')
233
267
  .append($('<span>').addClass(options.icons.down))));
234
268
  }
235
269
  if (isEnabled('s')) {
@@ -239,19 +273,19 @@
239
273
  bottomRow.append($('<td>').addClass('separator'));
240
274
  }
241
275
  topRow.append($('<td>')
242
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Increment Second'}).addClass('btn').attr('data-action', 'incrementSeconds')
276
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.incrementSecond}).addClass('btn').attr('data-action', 'incrementSeconds')
243
277
  .append($('<span>').addClass(options.icons.up))));
244
278
  middleRow.append($('<td>')
245
- .append($('<span>').addClass('timepicker-second').attr({'data-time-component': 'seconds', 'title':'Pick Second'}).attr('data-action', 'showSeconds')));
279
+ .append($('<span>').addClass('timepicker-second').attr({'data-time-component': 'seconds', 'title': options.tooltips.pickSecond}).attr('data-action', 'showSeconds')));
246
280
  bottomRow.append($('<td>')
247
- .append($('<a>').attr({href: '#', tabindex: '-1', 'title':'Decrement Second'}).addClass('btn').attr('data-action', 'decrementSeconds')
281
+ .append($('<a>').attr({href: '#', tabindex: '-1', 'title': options.tooltips.decrementSecond}).addClass('btn').attr('data-action', 'decrementSeconds')
248
282
  .append($('<span>').addClass(options.icons.down))));
249
283
  }
250
284
 
251
285
  if (!use24Hours) {
252
286
  topRow.append($('<td>').addClass('separator'));
253
287
  middleRow.append($('<td>')
254
- .append($('<button>').addClass('btn btn-primary').attr({'data-action': 'togglePeriod', tabindex: '-1', 'title':'Toggle Period'})));
288
+ .append($('<button>').addClass('btn btn-primary').attr({'data-action': 'togglePeriod', tabindex: '-1', 'title': options.tooltips.togglePeriod})));
255
289
  bottomRow.append($('<td>').addClass('separator'));
256
290
  }
257
291
 
@@ -288,7 +322,7 @@
288
322
  row.push($('<td>').append($('<a>').attr({'data-action':'today', 'title': options.tooltips.today}).append($('<span>').addClass(options.icons.today))));
289
323
  }
290
324
  if (!options.sideBySide && hasDate() && hasTime()) {
291
- row.push($('<td>').append($('<a>').attr({'data-action':'togglePicker', 'title':'Select Time'}).append($('<span>').addClass(options.icons.time))));
325
+ row.push($('<td>').append($('<a>').attr({'data-action':'togglePicker', 'title': options.tooltips.selectTime}).append($('<span>').addClass(options.icons.time))));
292
326
  }
293
327
  if (options.showClear) {
294
328
  row.push($('<td>').append($('<a>').attr({'data-action':'clear', 'title': options.tooltips.clear}).append($('<span>').addClass(options.icons.clear))));
@@ -593,9 +627,9 @@
593
627
  endYear = viewDate.clone().add(6, 'y'),
594
628
  html = '';
595
629
 
596
- yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.nextDecade);
630
+ yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);
597
631
  yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);
598
- yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.prevDecade);
632
+ yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);
599
633
 
600
634
  yearsView.find('.disabled').removeClass('disabled');
601
635
 
@@ -620,8 +654,9 @@
620
654
  updateDecades = function () {
621
655
  var decadesView = widget.find('.datepicker-decades'),
622
656
  decadesViewHeader = decadesView.find('th'),
623
- startDecade = viewDate.isBefore(moment({y: 1999})) ? moment({y: 1899}) : moment({y: 1999}),
657
+ startDecade = moment({y: viewDate.year() - (viewDate.year() % 100) - 1}),
624
658
  endDecade = startDecade.clone().add(100, 'y'),
659
+ startedAt = startDecade.clone(),
625
660
  html = '';
626
661
 
627
662
  decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);
@@ -647,6 +682,7 @@
647
682
  html += '<span></span><span></span><span></span>'; //push the dangling block over, at least this way it's even
648
683
 
649
684
  decadesView.find('td').html(html);
685
+ decadesViewHeader.eq(1).text((startedAt.year() + 1) + '-' + (startDecade.year()));
650
686
  },
651
687
 
652
688
  fillDate = function () {
@@ -699,7 +735,7 @@
699
735
  if (!isValid(currentDate, 'd')) {
700
736
  clsName += ' disabled';
701
737
  }
702
- if (currentDate.isSame(moment(), 'd')) {
738
+ if (currentDate.isSame(getMoment(), 'd')) {
703
739
  clsName += ' today';
704
740
  }
705
741
  if (currentDate.day() === 0 || currentDate.day() === 6) {
@@ -1108,8 +1144,9 @@
1108
1144
  clear: clear,
1109
1145
 
1110
1146
  today: function () {
1111
- if (isValid(moment(), 'd')) {
1112
- setValue(moment());
1147
+ var todaysDate = getMoment();
1148
+ if (isValid(todaysDate, 'd')) {
1149
+ setValue(todaysDate);
1113
1150
  }
1114
1151
  },
1115
1152
 
@@ -1151,7 +1188,7 @@
1151
1188
  if (input.val() !== undefined && input.val().trim().length !== 0) {
1152
1189
  setValue(parseInputDate(input.val().trim()));
1153
1190
  } else if (options.useCurrent && unset && ((input.is('input') && input.val().trim().length === 0) || options.inline)) {
1154
- currentMoment = moment();
1191
+ currentMoment = getMoment();
1155
1192
  if (typeof options.useCurrent === 'string') {
1156
1193
  currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);
1157
1194
  }
@@ -1200,7 +1237,7 @@
1200
1237
  if (moment.isMoment(inputDate) || inputDate instanceof Date) {
1201
1238
  inputDate = moment(inputDate);
1202
1239
  } else {
1203
- inputDate = moment(inputDate, parseFormats, options.useStrict);
1240
+ inputDate = getMoment(inputDate);
1204
1241
  }
1205
1242
  } else {
1206
1243
  inputDate = options.parseInputDate(inputDate);
@@ -1486,6 +1523,16 @@
1486
1523
  return picker;
1487
1524
  };
1488
1525
 
1526
+ picker.timeZone = function (newZone) {
1527
+ if (arguments.length === 0) {
1528
+ return options.timeZone;
1529
+ }
1530
+
1531
+ options.timeZone = newZone;
1532
+
1533
+ return picker;
1534
+ };
1535
+
1489
1536
  picker.dayViewHeaderFormat = function (newFormat) {
1490
1537
  if (arguments.length === 0) {
1491
1538
  return options.dayViewHeaderFormat;
@@ -1622,7 +1669,7 @@
1622
1669
 
1623
1670
  if (typeof maxDate === 'string') {
1624
1671
  if (maxDate === 'now' || maxDate === 'moment') {
1625
- maxDate = moment();
1672
+ maxDate = getMoment();
1626
1673
  }
1627
1674
  }
1628
1675
 
@@ -1658,7 +1705,7 @@
1658
1705
 
1659
1706
  if (typeof minDate === 'string') {
1660
1707
  if (minDate === 'now' || minDate === 'moment') {
1661
- minDate = moment();
1708
+ minDate = getMoment();
1662
1709
  }
1663
1710
  }
1664
1711
 
@@ -1700,7 +1747,7 @@
1700
1747
 
1701
1748
  if (typeof defaultDate === 'string') {
1702
1749
  if (defaultDate === 'now' || defaultDate === 'moment') {
1703
- defaultDate = moment();
1750
+ defaultDate = getMoment();
1704
1751
  }
1705
1752
  }
1706
1753
 
@@ -1714,7 +1761,7 @@
1714
1761
 
1715
1762
  options.defaultDate = parsedDate;
1716
1763
 
1717
- if (options.defaultDate && options.inline || (input.val().trim() === '' && input.attr('placeholder') === undefined)) {
1764
+ if ((options.defaultDate && options.inline) || input.val().trim() === '') {
1718
1765
  setValue(options.defaultDate);
1719
1766
  }
1720
1767
  return picker;
@@ -2041,6 +2088,10 @@
2041
2088
  return picker;
2042
2089
  };
2043
2090
 
2091
+ picker.getMoment = function (d) {
2092
+ return getMoment(d);
2093
+ };
2094
+
2044
2095
  picker.debug = function (debug) {
2045
2096
  if (typeof debug !== 'boolean') {
2046
2097
  throw new TypeError('debug() expects a boolean parameter');
@@ -2271,6 +2322,10 @@
2271
2322
  throw new Error('Could not initialize DateTimePicker without an input element');
2272
2323
  }
2273
2324
 
2325
+ // Set defaults for date here now instead of in var declaration
2326
+ date = getMoment();
2327
+ viewDate = date.clone();
2328
+
2274
2329
  $.extend(true, options, dataToOptions());
2275
2330
 
2276
2331
  picker.options(options);
@@ -2312,6 +2367,7 @@
2312
2367
  };
2313
2368
 
2314
2369
  $.fn.datetimepicker.defaults = {
2370
+ timeZone: 'Etc/UTC',
2315
2371
  format: false,
2316
2372
  dayViewHeaderFormat: 'MMMM YYYY',
2317
2373
  extraFormats: false,
@@ -2349,7 +2405,18 @@
2349
2405
  prevDecade: 'Previous Decade',
2350
2406
  nextDecade: 'Next Decade',
2351
2407
  prevCentury: 'Previous Century',
2352
- nextCentury: 'Next Century'
2408
+ nextCentury: 'Next Century',
2409
+ pickHour: 'Pick Hour',
2410
+ incrementHour: 'Increment Hour',
2411
+ decrementHour: 'Decrement Hour',
2412
+ pickMinute: 'Pick Minute',
2413
+ incrementMinute: 'Increment Minute',
2414
+ decrementMinute: 'Decrement Minute',
2415
+ pickSecond: 'Pick Second',
2416
+ incrementSecond: 'Increment Second',
2417
+ decrementSecond: 'Decrement Second',
2418
+ togglePeriod: 'Toggle Period',
2419
+ selectTime: 'Select Time'
2353
2420
  },
2354
2421
  useStrict: false,
2355
2422
  sideBySide: false,
@@ -2376,7 +2443,7 @@
2376
2443
  if (!widget) {
2377
2444
  return;
2378
2445
  }
2379
- var d = this.date() || moment();
2446
+ var d = this.date() || this.getMoment();
2380
2447
  if (widget.find('.datepicker').is(':visible')) {
2381
2448
  this.date(d.clone().subtract(7, 'd'));
2382
2449
  } else {
@@ -2388,7 +2455,7 @@
2388
2455
  this.show();
2389
2456
  return;
2390
2457
  }
2391
- var d = this.date() || moment();
2458
+ var d = this.date() || this.getMoment();
2392
2459
  if (widget.find('.datepicker').is(':visible')) {
2393
2460
  this.date(d.clone().add(7, 'd'));
2394
2461
  } else {
@@ -2399,7 +2466,7 @@
2399
2466
  if (!widget) {
2400
2467
  return;
2401
2468
  }
2402
- var d = this.date() || moment();
2469
+ var d = this.date() || this.getMoment();
2403
2470
  if (widget.find('.datepicker').is(':visible')) {
2404
2471
  this.date(d.clone().subtract(1, 'y'));
2405
2472
  } else {
@@ -2410,7 +2477,7 @@
2410
2477
  if (!widget) {
2411
2478
  return;
2412
2479
  }
2413
- var d = this.date() || moment();
2480
+ var d = this.date() || this.getMoment();
2414
2481
  if (widget.find('.datepicker').is(':visible')) {
2415
2482
  this.date(d.clone().add(1, 'y'));
2416
2483
  } else {
@@ -2421,7 +2488,7 @@
2421
2488
  if (!widget) {
2422
2489
  return;
2423
2490
  }
2424
- var d = this.date() || moment();
2491
+ var d = this.date() || this.getMoment();
2425
2492
  if (widget.find('.datepicker').is(':visible')) {
2426
2493
  this.date(d.clone().subtract(1, 'd'));
2427
2494
  }
@@ -2430,7 +2497,7 @@
2430
2497
  if (!widget) {
2431
2498
  return;
2432
2499
  }
2433
- var d = this.date() || moment();
2500
+ var d = this.date() || this.getMoment();
2434
2501
  if (widget.find('.datepicker').is(':visible')) {
2435
2502
  this.date(d.clone().add(1, 'd'));
2436
2503
  }
@@ -2439,7 +2506,7 @@
2439
2506
  if (!widget) {
2440
2507
  return;
2441
2508
  }
2442
- var d = this.date() || moment();
2509
+ var d = this.date() || this.getMoment();
2443
2510
  if (widget.find('.datepicker').is(':visible')) {
2444
2511
  this.date(d.clone().subtract(1, 'M'));
2445
2512
  }
@@ -2448,7 +2515,7 @@
2448
2515
  if (!widget) {
2449
2516
  return;
2450
2517
  }
2451
- var d = this.date() || moment();
2518
+ var d = this.date() || this.getMoment();
2452
2519
  if (widget.find('.datepicker').is(':visible')) {
2453
2520
  this.date(d.clone().add(1, 'M'));
2454
2521
  }
@@ -2469,7 +2536,7 @@
2469
2536
  }
2470
2537
  },
2471
2538
  t: function () {
2472
- this.date(moment());
2539
+ this.date(this.getMoment());
2473
2540
  },
2474
2541
  'delete': function () {
2475
2542
  this.clear();
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * Datetimepicker for Bootstrap 3
3
- * version : 4.15.35
3
+ * version : 4.17.37
4
4
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
5
5
  */
6
6
  .bootstrap-datetimepicker-widget {
@@ -22,6 +22,9 @@ module Effective
22
22
  end
23
23
  end
24
24
 
25
+ @js_opts = @js_opts.with_indifferent_access
26
+ @html_opts = @html_opts.with_indifferent_access
27
+
25
28
  # Reverse merge in the defaults, so the current values take precedence over defaults
26
29
  @js_opts.reverse_merge!((default_input_js || {}))
27
30
  @html_opts.reverse_merge!((default_input_html || {}).except(:class))
@@ -1,3 +1,3 @@
1
1
  module EffectiveFormInputs
2
- VERSION = '0.8.5'.freeze
2
+ VERSION = '0.8.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_form_inputs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-27 00:00:00.000000000 Z
11
+ date: 2015-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails