fullcalendar.io-rails 2.7.1 → 2.7.2
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 +4 -4
- data/lib/fullcalendar.io/rails/version.rb +1 -1
- data/vendor/assets/javascripts/fullcalendar.js +203 -101
- data/vendor/assets/javascripts/fullcalendar/gcal.js +1 -1
- data/vendor/assets/stylesheets/fullcalendar.css +22 -27
- data/vendor/assets/stylesheets/fullcalendar.print.css +1 -1
- metadata +60 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08a75c29d203a527f51cb0be10289fb427a87740
|
4
|
+
data.tar.gz: 37828b19d049c4aeb391cdcc91d464ff16d54ce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c0478819f07d3b5f64801eeae7f8ef8ab6b60be246e36a0d00c5977597a05cf6e6f8210a22340d75b9b926889d4ae80444f4012782bfd58d1e299058436dab0
|
7
|
+
data.tar.gz: bac737e1e3e9aa25872f0b00380cc421bd90e5634db23d381497c878e9837e3f83f28ecca42a72d7199019ce8214fd5c2a8e79b96d8e4251682920586e119545
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* FullCalendar v2.7.
|
2
|
+
* FullCalendar v2.7.2
|
3
3
|
* Docs & License: http://fullcalendar.io/
|
4
4
|
* (c) 2016 Adam Shaw
|
5
5
|
*/
|
@@ -19,15 +19,12 @@
|
|
19
19
|
;;
|
20
20
|
|
21
21
|
var FC = $.fullCalendar = {
|
22
|
-
version: "2.7.
|
22
|
+
version: "2.7.2",
|
23
23
|
internalApiVersion: 3
|
24
24
|
};
|
25
25
|
var fcViews = FC.views = {};
|
26
26
|
|
27
27
|
|
28
|
-
FC.isTouch = 'ontouchstart' in document;
|
29
|
-
|
30
|
-
|
31
28
|
$.fn.fullCalendar = function(options) {
|
32
29
|
var args = Array.prototype.slice.call(arguments, 1); // for a possible method call
|
33
30
|
var res = this; // what this function will return (this jQuery object by default)
|
@@ -471,6 +468,30 @@ function preventDefault(ev) {
|
|
471
468
|
}
|
472
469
|
|
473
470
|
|
471
|
+
// attach a handler to get called when ANY scroll action happens on the page.
|
472
|
+
// this was impossible to do with normal on/off because 'scroll' doesn't bubble.
|
473
|
+
// http://stackoverflow.com/a/32954565/96342
|
474
|
+
// returns `true` on success.
|
475
|
+
function bindAnyScroll(handler) {
|
476
|
+
if (window.addEventListener) {
|
477
|
+
window.addEventListener('scroll', handler, true); // useCapture=true
|
478
|
+
return true;
|
479
|
+
}
|
480
|
+
return false;
|
481
|
+
}
|
482
|
+
|
483
|
+
|
484
|
+
// undoes bindAnyScroll. must pass in the original function.
|
485
|
+
// returns `true` on success.
|
486
|
+
function unbindAnyScroll(handler) {
|
487
|
+
if (window.removeEventListener) {
|
488
|
+
window.removeEventListener('scroll', handler, true); // useCapture=true
|
489
|
+
return true;
|
490
|
+
}
|
491
|
+
return false;
|
492
|
+
}
|
493
|
+
|
494
|
+
|
474
495
|
/* General Geometry Utils
|
475
496
|
----------------------------------------------------------------------------------------------------------------------*/
|
476
497
|
|
@@ -1966,6 +1987,35 @@ var ListenerMixin = FC.ListenerMixin = (function() {
|
|
1966
1987
|
})();
|
1967
1988
|
;;
|
1968
1989
|
|
1990
|
+
// simple class for toggle a `isIgnoringMouse` flag on delay
|
1991
|
+
// initMouseIgnoring must first be called, with a millisecond delay setting.
|
1992
|
+
var MouseIgnorerMixin = {
|
1993
|
+
|
1994
|
+
isIgnoringMouse: false, // bool
|
1995
|
+
delayUnignoreMouse: null, // method
|
1996
|
+
|
1997
|
+
|
1998
|
+
initMouseIgnoring: function(delay) {
|
1999
|
+
this.delayUnignoreMouse = debounce(proxy(this, 'unignoreMouse'), delay || 1000);
|
2000
|
+
},
|
2001
|
+
|
2002
|
+
|
2003
|
+
// temporarily ignore mouse actions on segments
|
2004
|
+
tempIgnoreMouse: function() {
|
2005
|
+
this.isIgnoringMouse = true;
|
2006
|
+
this.delayUnignoreMouse();
|
2007
|
+
},
|
2008
|
+
|
2009
|
+
|
2010
|
+
// delayUnignoreMouse eventually calls this
|
2011
|
+
unignoreMouse: function() {
|
2012
|
+
this.isIgnoringMouse = false;
|
2013
|
+
}
|
2014
|
+
|
2015
|
+
};
|
2016
|
+
|
2017
|
+
;;
|
2018
|
+
|
1969
2019
|
/* A rectangular panel that is absolutely positioned over other content
|
1970
2020
|
------------------------------------------------------------------------------------------------------------------------
|
1971
2021
|
Options:
|
@@ -2374,7 +2424,7 @@ var CoordCache = FC.CoordCache = Class.extend({
|
|
2374
2424
|
----------------------------------------------------------------------------------------------------------------------*/
|
2375
2425
|
// TODO: use Emitter
|
2376
2426
|
|
2377
|
-
var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
2427
|
+
var DragListener = FC.DragListener = Class.extend(ListenerMixin, MouseIgnorerMixin, {
|
2378
2428
|
|
2379
2429
|
options: null,
|
2380
2430
|
|
@@ -2386,6 +2436,8 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2386
2436
|
originX: null,
|
2387
2437
|
originY: null,
|
2388
2438
|
|
2439
|
+
// the wrapping element that scrolls, or MIGHT scroll if there's overflow.
|
2440
|
+
// TODO: do this for wrappers that have overflow:hidden as well.
|
2389
2441
|
scrollEl: null,
|
2390
2442
|
|
2391
2443
|
isInteracting: false,
|
@@ -2398,9 +2450,13 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2398
2450
|
delayTimeoutId: null,
|
2399
2451
|
minDistance: null,
|
2400
2452
|
|
2453
|
+
handleTouchScrollProxy: null, // calls handleTouchScroll, always bound to `this`
|
2454
|
+
|
2401
2455
|
|
2402
2456
|
constructor: function(options) {
|
2403
2457
|
this.options = options || {};
|
2458
|
+
this.handleTouchScrollProxy = proxy(this, 'handleTouchScroll');
|
2459
|
+
this.initMouseIgnoring(500);
|
2404
2460
|
},
|
2405
2461
|
|
2406
2462
|
|
@@ -2412,7 +2468,10 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2412
2468
|
var isTouch = getEvIsTouch(ev);
|
2413
2469
|
|
2414
2470
|
if (ev.type === 'mousedown') {
|
2415
|
-
if (
|
2471
|
+
if (this.isIgnoringMouse) {
|
2472
|
+
return;
|
2473
|
+
}
|
2474
|
+
else if (!isPrimaryMouseButton(ev)) {
|
2416
2475
|
return;
|
2417
2476
|
}
|
2418
2477
|
else {
|
@@ -2454,7 +2513,7 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2454
2513
|
},
|
2455
2514
|
|
2456
2515
|
|
2457
|
-
endInteraction: function(ev) {
|
2516
|
+
endInteraction: function(ev, isCancelled) {
|
2458
2517
|
if (this.isInteracting) {
|
2459
2518
|
this.endDrag(ev);
|
2460
2519
|
|
@@ -2467,13 +2526,20 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2467
2526
|
this.unbindHandlers();
|
2468
2527
|
|
2469
2528
|
this.isInteracting = false;
|
2470
|
-
this.handleInteractionEnd(ev);
|
2529
|
+
this.handleInteractionEnd(ev, isCancelled);
|
2530
|
+
|
2531
|
+
// a touchstart+touchend on the same element will result in the following addition simulated events:
|
2532
|
+
// mouseover + mouseout + click
|
2533
|
+
// let's ignore these bogus events
|
2534
|
+
if (this.isTouch) {
|
2535
|
+
this.tempIgnoreMouse();
|
2536
|
+
}
|
2471
2537
|
}
|
2472
2538
|
},
|
2473
2539
|
|
2474
2540
|
|
2475
|
-
handleInteractionEnd: function(ev) {
|
2476
|
-
this.trigger('interactionEnd', ev);
|
2541
|
+
handleInteractionEnd: function(ev, isCancelled) {
|
2542
|
+
this.trigger('interactionEnd', ev, isCancelled || false);
|
2477
2543
|
},
|
2478
2544
|
|
2479
2545
|
|
@@ -2500,12 +2566,16 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2500
2566
|
touchStartIgnores--; // and we don't want this to fire immediately, so ignore.
|
2501
2567
|
}
|
2502
2568
|
else {
|
2503
|
-
_this.endInteraction(ev);
|
2569
|
+
_this.endInteraction(ev, true); // isCancelled=true
|
2504
2570
|
}
|
2505
2571
|
}
|
2506
2572
|
});
|
2507
2573
|
|
2508
|
-
|
2574
|
+
// listen to ALL scroll actions on the page
|
2575
|
+
if (
|
2576
|
+
!bindAnyScroll(this.handleTouchScrollProxy) && // hopefully this works and short-circuits the rest
|
2577
|
+
this.scrollEl // otherwise, attach a single handler to this
|
2578
|
+
) {
|
2509
2579
|
this.listenTo(this.scrollEl, 'scroll', this.handleTouchScroll);
|
2510
2580
|
}
|
2511
2581
|
}
|
@@ -2526,8 +2596,10 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2526
2596
|
unbindHandlers: function() {
|
2527
2597
|
this.stopListeningTo($(document));
|
2528
2598
|
|
2599
|
+
// unbind scroll listening
|
2600
|
+
unbindAnyScroll(this.handleTouchScrollProxy);
|
2529
2601
|
if (this.scrollEl) {
|
2530
|
-
this.stopListeningTo(this.scrollEl);
|
2602
|
+
this.stopListeningTo(this.scrollEl, 'scroll');
|
2531
2603
|
}
|
2532
2604
|
},
|
2533
2605
|
|
@@ -2660,7 +2732,7 @@ var DragListener = FC.DragListener = Class.extend(ListenerMixin, {
|
|
2660
2732
|
// if the drag is being initiated by touch, but a scroll happens before
|
2661
2733
|
// the drag-initiating delay is over, cancel the drag
|
2662
2734
|
if (!this.isDragging) {
|
2663
|
-
this.endInteraction(ev);
|
2735
|
+
this.endInteraction(ev, true); // isCancelled=true
|
2664
2736
|
}
|
2665
2737
|
},
|
2666
2738
|
|
@@ -3312,7 +3384,7 @@ var MouseFollower = Class.extend(ListenerMixin, {
|
|
3312
3384
|
/* An abstract class comprised of a "grid" of areas that each represent a specific datetime
|
3313
3385
|
----------------------------------------------------------------------------------------------------------------------*/
|
3314
3386
|
|
3315
|
-
var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
3387
|
+
var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, {
|
3316
3388
|
|
3317
3389
|
view: null, // a View object
|
3318
3390
|
isRTL: null, // shortcut to the view's isRTL option
|
@@ -3345,6 +3417,9 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3345
3417
|
this.view = view;
|
3346
3418
|
this.isRTL = view.opt('isRTL');
|
3347
3419
|
this.elsByFill = {};
|
3420
|
+
|
3421
|
+
this.dayDragListener = this.buildDayDragListener();
|
3422
|
+
this.initMouseIgnoring();
|
3348
3423
|
},
|
3349
3424
|
|
3350
3425
|
|
@@ -3480,12 +3555,8 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3480
3555
|
this.el = el;
|
3481
3556
|
preventSelection(el);
|
3482
3557
|
|
3483
|
-
|
3484
|
-
|
3485
|
-
}
|
3486
|
-
else {
|
3487
|
-
this.bindDayHandler('mousedown', this.dayMousedown);
|
3488
|
-
}
|
3558
|
+
this.bindDayHandler('touchstart', this.dayTouchStart);
|
3559
|
+
this.bindDayHandler('mousedown', this.dayMousedown);
|
3489
3560
|
|
3490
3561
|
// attach event-element-related handlers. in Grid.events
|
3491
3562
|
// same garbage collection note as above.
|
@@ -3563,16 +3634,24 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3563
3634
|
|
3564
3635
|
// Process a mousedown on an element that represents a day. For day clicking and selecting.
|
3565
3636
|
dayMousedown: function(ev) {
|
3566
|
-
this.
|
3567
|
-
|
3568
|
-
|
3569
|
-
|
3637
|
+
if (!this.isIgnoringMouse) {
|
3638
|
+
this.dayDragListener.startInteraction(ev, {
|
3639
|
+
//distance: 5, // needs more work if we want dayClick to fire correctly
|
3640
|
+
});
|
3641
|
+
}
|
3570
3642
|
},
|
3571
3643
|
|
3572
3644
|
|
3573
3645
|
dayTouchStart: function(ev) {
|
3574
|
-
this.
|
3575
|
-
|
3646
|
+
var view = this.view;
|
3647
|
+
|
3648
|
+
// HACK to prevent a user's clickaway for unselecting a range or an event
|
3649
|
+
// from causing a dayClick.
|
3650
|
+
if (view.isSelected || view.selectedEvent) {
|
3651
|
+
this.tempIgnoreMouse();
|
3652
|
+
}
|
3653
|
+
|
3654
|
+
this.dayDragListener.startInteraction(ev, {
|
3576
3655
|
delay: this.view.opt('longPressDelay')
|
3577
3656
|
});
|
3578
3657
|
},
|
@@ -3590,10 +3669,10 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3590
3669
|
// this listener tracks a mousedown on a day element, and a subsequent drag.
|
3591
3670
|
// if the drag ends on the same day, it is a 'dayClick'.
|
3592
3671
|
// if 'selectable' is enabled, this listener also detects selections.
|
3593
|
-
var dragListener =
|
3672
|
+
var dragListener = new HitDragListener(this, {
|
3594
3673
|
scroll: view.opt('dragScroll'),
|
3595
3674
|
interactionStart: function() {
|
3596
|
-
dayClickHit = dragListener.origHit;
|
3675
|
+
dayClickHit = dragListener.origHit; // for dayClick, where no dragging happens
|
3597
3676
|
},
|
3598
3677
|
dragStart: function() {
|
3599
3678
|
view.unselect(); // since we could be rendering a new selection, we want to clear any old one
|
@@ -3626,20 +3705,24 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3626
3705
|
_this.unrenderSelection();
|
3627
3706
|
enableCursor();
|
3628
3707
|
},
|
3629
|
-
interactionEnd: function(ev) {
|
3630
|
-
if (
|
3631
|
-
|
3632
|
-
|
3633
|
-
_this.
|
3634
|
-
|
3635
|
-
|
3636
|
-
|
3637
|
-
|
3638
|
-
|
3639
|
-
|
3708
|
+
interactionEnd: function(ev, isCancelled) {
|
3709
|
+
if (!isCancelled) {
|
3710
|
+
if (
|
3711
|
+
dayClickHit &&
|
3712
|
+
!_this.isIgnoringMouse // see hack in dayTouchStart
|
3713
|
+
) {
|
3714
|
+
view.triggerDayClick(
|
3715
|
+
_this.getHitSpan(dayClickHit),
|
3716
|
+
_this.getHitEl(dayClickHit),
|
3717
|
+
ev
|
3718
|
+
);
|
3719
|
+
}
|
3720
|
+
if (selectionSpan) {
|
3721
|
+
// the selection will already have been rendered. just report it
|
3722
|
+
view.reportSelection(selectionSpan, ev);
|
3723
|
+
}
|
3724
|
+
enableCursor();
|
3640
3725
|
}
|
3641
|
-
enableCursor();
|
3642
|
-
_this.dayDragListener = null;
|
3643
3726
|
}
|
3644
3727
|
});
|
3645
3728
|
|
@@ -3651,9 +3734,8 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, {
|
|
3651
3734
|
// Useful for when public API methods that result in re-rendering are invoked during a drag.
|
3652
3735
|
// Also useful for when touch devices misbehave and don't fire their touchend.
|
3653
3736
|
clearDragListeners: function() {
|
3654
|
-
|
3655
|
-
|
3656
|
-
}
|
3737
|
+
this.dayDragListener.endInteraction();
|
3738
|
+
|
3657
3739
|
if (this.segDragListener) {
|
3658
3740
|
this.segDragListener.endInteraction(); // will clear this.segDragListener
|
3659
3741
|
}
|
@@ -4113,15 +4195,11 @@ Grid.mixin({
|
|
4113
4195
|
|
4114
4196
|
// Attaches event-element-related handlers to the container element and leverage bubbling
|
4115
4197
|
bindSegHandlers: function() {
|
4116
|
-
|
4117
|
-
|
4118
|
-
|
4119
|
-
|
4120
|
-
|
4121
|
-
this.bindSegHandler('mouseleave', this.handleSegMouseout);
|
4122
|
-
this.bindSegHandler('mousedown', this.handleSegMousedown);
|
4123
|
-
}
|
4124
|
-
|
4198
|
+
this.bindSegHandler('touchstart', this.handleSegTouchStart);
|
4199
|
+
this.bindSegHandler('touchend', this.handleSegTouchEnd);
|
4200
|
+
this.bindSegHandler('mouseenter', this.handleSegMouseover);
|
4201
|
+
this.bindSegHandler('mouseleave', this.handleSegMouseout);
|
4202
|
+
this.bindSegHandler('mousedown', this.handleSegMousedown);
|
4125
4203
|
this.bindSegHandler('click', this.handleSegClick);
|
4126
4204
|
},
|
4127
4205
|
|
@@ -4149,8 +4227,12 @@ Grid.mixin({
|
|
4149
4227
|
|
4150
4228
|
// Updates internal state and triggers handlers for when an event element is moused over
|
4151
4229
|
handleSegMouseover: function(seg, ev) {
|
4152
|
-
if (
|
4230
|
+
if (
|
4231
|
+
!this.isIgnoringMouse &&
|
4232
|
+
!this.mousedOverSeg
|
4233
|
+
) {
|
4153
4234
|
this.mousedOverSeg = seg;
|
4235
|
+
seg.el.addClass('fc-allow-mouse-resize');
|
4154
4236
|
this.view.trigger('eventMouseover', seg.el[0], seg.event, ev);
|
4155
4237
|
}
|
4156
4238
|
},
|
@@ -4164,11 +4246,24 @@ Grid.mixin({
|
|
4164
4246
|
if (this.mousedOverSeg) {
|
4165
4247
|
seg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment
|
4166
4248
|
this.mousedOverSeg = null;
|
4249
|
+
seg.el.removeClass('fc-allow-mouse-resize');
|
4167
4250
|
this.view.trigger('eventMouseout', seg.el[0], seg.event, ev);
|
4168
4251
|
}
|
4169
4252
|
},
|
4170
4253
|
|
4171
4254
|
|
4255
|
+
handleSegMousedown: function(seg, ev) {
|
4256
|
+
var isResizing = this.startSegResize(seg, ev, { distance: 5 });
|
4257
|
+
|
4258
|
+
if (!isResizing && this.view.isEventDraggable(seg.event)) {
|
4259
|
+
this.buildSegDragListener(seg)
|
4260
|
+
.startInteraction(ev, {
|
4261
|
+
distance: 5
|
4262
|
+
});
|
4263
|
+
}
|
4264
|
+
},
|
4265
|
+
|
4266
|
+
|
4172
4267
|
handleSegTouchStart: function(seg, ev) {
|
4173
4268
|
var view = this.view;
|
4174
4269
|
var event = seg.event;
|
@@ -4184,37 +4279,25 @@ Grid.mixin({
|
|
4184
4279
|
}
|
4185
4280
|
|
4186
4281
|
if (!isResizing && (isDraggable || isResizable)) { // allowed to be selected?
|
4187
|
-
this.clearDragListeners();
|
4188
4282
|
|
4189
4283
|
dragListener = isDraggable ?
|
4190
4284
|
this.buildSegDragListener(seg) :
|
4191
|
-
|
4192
|
-
// simply for the delay, so it can be selected.
|
4285
|
+
this.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected
|
4193
4286
|
|
4194
|
-
dragListener.
|
4195
|
-
// if not previously selected, will fire after a delay. then, select the event
|
4196
|
-
if (!isSelected) {
|
4197
|
-
view.selectEvent(event);
|
4198
|
-
}
|
4199
|
-
};
|
4200
|
-
|
4201
|
-
dragListener.startInteraction(ev, {
|
4287
|
+
dragListener.startInteraction(ev, { // won't start if already started
|
4202
4288
|
delay: isSelected ? 0 : this.view.opt('longPressDelay') // do delay if not already selected
|
4203
4289
|
});
|
4204
4290
|
}
|
4205
|
-
},
|
4206
4291
|
|
4292
|
+
// a long tap simulates a mouseover. ignore this bogus mouseover.
|
4293
|
+
this.tempIgnoreMouse();
|
4294
|
+
},
|
4207
4295
|
|
4208
|
-
handleSegMousedown: function(seg, ev) {
|
4209
|
-
var isResizing = this.startSegResize(seg, ev, { distance: 5 });
|
4210
4296
|
|
4211
|
-
|
4212
|
-
|
4213
|
-
|
4214
|
-
|
4215
|
-
distance: 5
|
4216
|
-
});
|
4217
|
-
}
|
4297
|
+
handleSegTouchEnd: function(seg, ev) {
|
4298
|
+
// touchstart+touchend = click, which simulates a mouseover.
|
4299
|
+
// ignore this bogus mouseover.
|
4300
|
+
this.tempIgnoreMouse();
|
4218
4301
|
},
|
4219
4302
|
|
4220
4303
|
|
@@ -4223,7 +4306,6 @@ Grid.mixin({
|
|
4223
4306
|
// `dragOptions` are optional.
|
4224
4307
|
startSegResize: function(seg, ev, dragOptions) {
|
4225
4308
|
if ($(ev.target).is('.fc-resizer')) {
|
4226
|
-
this.clearDragListeners();
|
4227
4309
|
this.buildSegResizeListener(seg, $(ev.target).is('.fc-start-resizer'))
|
4228
4310
|
.startInteraction(ev, dragOptions);
|
4229
4311
|
return true;
|
@@ -4239,6 +4321,7 @@ Grid.mixin({
|
|
4239
4321
|
|
4240
4322
|
// Builds a listener that will track user-dragging on an event segment.
|
4241
4323
|
// Generic enough to work with any type of Grid.
|
4324
|
+
// Has side effect of setting/unsetting `segDragListener`
|
4242
4325
|
buildSegDragListener: function(seg) {
|
4243
4326
|
var _this = this;
|
4244
4327
|
var view = this.view;
|
@@ -4249,6 +4332,10 @@ Grid.mixin({
|
|
4249
4332
|
var mouseFollower; // A clone of the original element that will move with the mouse
|
4250
4333
|
var dropLocation; // zoned event date properties
|
4251
4334
|
|
4335
|
+
if (this.segDragListener) {
|
4336
|
+
return this.segDragListener;
|
4337
|
+
}
|
4338
|
+
|
4252
4339
|
// Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents
|
4253
4340
|
// of the view.
|
4254
4341
|
var dragListener = this.segDragListener = new HitDragListener(view, {
|
@@ -4268,6 +4355,10 @@ Grid.mixin({
|
|
4268
4355
|
mouseFollower.start(ev);
|
4269
4356
|
},
|
4270
4357
|
dragStart: function(ev) {
|
4358
|
+
if (dragListener.isTouch && !view.isEventSelected(event)) {
|
4359
|
+
// if not previously selected, will fire after a delay. then, select the event
|
4360
|
+
view.selectEvent(event);
|
4361
|
+
}
|
4271
4362
|
isDragging = true;
|
4272
4363
|
_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported
|
4273
4364
|
_this.segDragStart(seg, ev);
|
@@ -4339,6 +4430,34 @@ Grid.mixin({
|
|
4339
4430
|
},
|
4340
4431
|
|
4341
4432
|
|
4433
|
+
// seg isn't draggable, but let's use a generic DragListener
|
4434
|
+
// simply for the delay, so it can be selected.
|
4435
|
+
// Has side effect of setting/unsetting `segDragListener`
|
4436
|
+
buildSegSelectListener: function(seg) {
|
4437
|
+
var _this = this;
|
4438
|
+
var view = this.view;
|
4439
|
+
var event = seg.event;
|
4440
|
+
|
4441
|
+
if (this.segDragListener) {
|
4442
|
+
return this.segDragListener;
|
4443
|
+
}
|
4444
|
+
|
4445
|
+
var dragListener = this.segDragListener = new DragListener({
|
4446
|
+
dragStart: function(ev) {
|
4447
|
+
if (dragListener.isTouch && !view.isEventSelected(event)) {
|
4448
|
+
// if not previously selected, will fire after a delay. then, select the event
|
4449
|
+
view.selectEvent(event);
|
4450
|
+
}
|
4451
|
+
},
|
4452
|
+
interactionEnd: function(ev) {
|
4453
|
+
_this.segDragListener = null;
|
4454
|
+
}
|
4455
|
+
});
|
4456
|
+
|
4457
|
+
return dragListener;
|
4458
|
+
},
|
4459
|
+
|
4460
|
+
|
4342
4461
|
// Called before event segment dragging starts
|
4343
4462
|
segDragStart: function(seg, ev) {
|
4344
4463
|
this.isDraggingSeg = true;
|
@@ -8100,8 +8219,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
|
|
8100
8219
|
// Binds DOM handlers to elements that reside outside the view container, such as the document
|
8101
8220
|
bindGlobalHandlers: function() {
|
8102
8221
|
this.listenTo($(document), 'mousedown', this.handleDocumentMousedown);
|
8103
|
-
this.listenTo($(document), 'touchstart', this.
|
8104
|
-
this.listenTo($(document), 'touchend', this.handleDocumentTouchEnd);
|
8222
|
+
this.listenTo($(document), 'touchstart', this.processUnselect);
|
8105
8223
|
},
|
8106
8224
|
|
8107
8225
|
|
@@ -8662,25 +8780,18 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
|
|
8662
8780
|
/* Mouse / Touch Unselecting (time range & event unselection)
|
8663
8781
|
------------------------------------------------------------------------------------------------------------------*/
|
8664
8782
|
// TODO: move consistently to down/start or up/end?
|
8783
|
+
// TODO: don't kill previous selection if touch scrolling
|
8665
8784
|
|
8666
8785
|
|
8667
8786
|
handleDocumentMousedown: function(ev) {
|
8668
|
-
|
8669
|
-
|
8670
|
-
if (!this.calendar.isTouch && isPrimaryMouseButton(ev)) {
|
8671
|
-
this.processRangeUnselect(ev);
|
8672
|
-
this.processEventUnselect(ev);
|
8787
|
+
if (isPrimaryMouseButton(ev)) {
|
8788
|
+
this.processUnselect(ev);
|
8673
8789
|
}
|
8674
8790
|
},
|
8675
8791
|
|
8676
8792
|
|
8677
|
-
|
8793
|
+
processUnselect: function(ev) {
|
8678
8794
|
this.processRangeUnselect(ev);
|
8679
|
-
},
|
8680
|
-
|
8681
|
-
|
8682
|
-
handleDocumentTouchEnd: function(ev) {
|
8683
|
-
// TODO: don't do this if because of touch-scrolling
|
8684
8795
|
this.processEventUnselect(ev);
|
8685
8796
|
},
|
8686
8797
|
|
@@ -8953,7 +9064,6 @@ var Calendar = FC.Calendar = Class.extend({
|
|
8953
9064
|
view: null, // current View object
|
8954
9065
|
header: null,
|
8955
9066
|
loadingLevel: 0, // number of simultaneous loading tasks
|
8956
|
-
isTouch: false,
|
8957
9067
|
|
8958
9068
|
|
8959
9069
|
// a lot of this class' OOP logic is scoped within this constructor function,
|
@@ -9000,10 +9110,6 @@ var Calendar = FC.Calendar = Class.extend({
|
|
9000
9110
|
]);
|
9001
9111
|
populateInstanceComputableOptions(this.options);
|
9002
9112
|
|
9003
|
-
this.isTouch = this.options.isTouch != null ?
|
9004
|
-
this.options.isTouch :
|
9005
|
-
FC.isTouch;
|
9006
|
-
|
9007
9113
|
this.viewSpecCache = {}; // somewhat unrelated
|
9008
9114
|
},
|
9009
9115
|
|
@@ -9460,10 +9566,6 @@ function Calendar_constructor(element, overrides) {
|
|
9460
9566
|
tm = options.theme ? 'ui' : 'fc';
|
9461
9567
|
element.addClass('fc');
|
9462
9568
|
|
9463
|
-
element.addClass(
|
9464
|
-
t.isTouch ? 'fc-touch' : 'fc-cursor'
|
9465
|
-
);
|
9466
|
-
|
9467
9569
|
if (options.isRTL) {
|
9468
9570
|
element.addClass('fc-rtl');
|
9469
9571
|
}
|
@@ -9506,7 +9608,7 @@ function Calendar_constructor(element, overrides) {
|
|
9506
9608
|
|
9507
9609
|
header.removeElement();
|
9508
9610
|
content.remove();
|
9509
|
-
element.removeClass('fc fc-
|
9611
|
+
element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget');
|
9510
9612
|
|
9511
9613
|
if (windowResizeProxy) {
|
9512
9614
|
$(window).unbind('resize', windowResizeProxy);
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* FullCalendar v2.7.
|
2
|
+
* FullCalendar v2.7.2 Stylesheet
|
3
3
|
* Docs & License: http://fullcalendar.io/
|
4
4
|
* (c) 2016 Adam Shaw
|
5
5
|
*/
|
@@ -551,24 +551,19 @@ temporary rendered events).
|
|
551
551
|
|
552
552
|
/* resizer (touch devices) */
|
553
553
|
|
554
|
-
.fc-
|
555
|
-
display: none;
|
554
|
+
.fc-event .fc-resizer {
|
555
|
+
display: none;
|
556
556
|
}
|
557
557
|
|
558
|
-
.fc-
|
558
|
+
.fc-event.fc-allow-mouse-resize .fc-resizer,
|
559
|
+
.fc-event.fc-selected .fc-resizer {
|
560
|
+
/* only show when hovering or selected (with touch) */
|
559
561
|
display: block;
|
560
562
|
}
|
561
563
|
|
564
|
+
/* hit area */
|
562
565
|
|
563
|
-
|
564
|
-
--------------------------------------------------------------------------------------------------*/
|
565
|
-
|
566
|
-
.fc-expander { /* fc-event is already position:relative */
|
567
|
-
position: relative;
|
568
|
-
}
|
569
|
-
|
570
|
-
.fc-touch .fc-expander:before,
|
571
|
-
.fc-touch .fc-event .fc-resizer:before {
|
566
|
+
.fc-event.fc-selected .fc-resizer:before {
|
572
567
|
/* 40x40 touch area */
|
573
568
|
content: "";
|
574
569
|
position: absolute;
|
@@ -645,9 +640,9 @@ temporary rendered events).
|
|
645
640
|
right: -1px; /* overcome border */
|
646
641
|
}
|
647
642
|
|
648
|
-
/* resizer (
|
643
|
+
/* resizer (mouse devices) */
|
649
644
|
|
650
|
-
.fc-
|
645
|
+
.fc-h-event.fc-allow-mouse-resize .fc-resizer {
|
651
646
|
width: 7px;
|
652
647
|
top: -1px; /* overcome top border */
|
653
648
|
bottom: -1px; /* overcome bottom border */
|
@@ -655,7 +650,7 @@ temporary rendered events).
|
|
655
650
|
|
656
651
|
/* resizer (touch devices) */
|
657
652
|
|
658
|
-
.fc-
|
653
|
+
.fc-h-event.fc-selected .fc-resizer {
|
659
654
|
/* 8x8 little dot */
|
660
655
|
border-radius: 4px;
|
661
656
|
border-width: 1px;
|
@@ -670,14 +665,14 @@ temporary rendered events).
|
|
670
665
|
}
|
671
666
|
|
672
667
|
/* left resizer */
|
673
|
-
.fc-
|
674
|
-
.fc-
|
668
|
+
.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,
|
669
|
+
.fc-rtl .fc-h-event.fc-selected .fc-end-resizer {
|
675
670
|
margin-left: -4px; /* centers the 8x8 dot on the left edge */
|
676
671
|
}
|
677
672
|
|
678
673
|
/* right resizer */
|
679
|
-
.fc-
|
680
|
-
.fc-
|
674
|
+
.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,
|
675
|
+
.fc-rtl .fc-h-event.fc-selected .fc-start-resizer {
|
681
676
|
margin-right: -4px; /* centers the 8x8 dot on the right edge */
|
682
677
|
}
|
683
678
|
|
@@ -720,14 +715,14 @@ be a descendant of the grid when it is being dragged.
|
|
720
715
|
/* resizer (cursor devices) */
|
721
716
|
|
722
717
|
/* left resizer */
|
723
|
-
.fc-
|
724
|
-
.fc-
|
718
|
+
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,
|
719
|
+
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {
|
725
720
|
margin-left: -2px; /* to the day cell's edge */
|
726
721
|
}
|
727
722
|
|
728
723
|
/* right resizer */
|
729
|
-
.fc-
|
730
|
-
.fc-
|
724
|
+
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,
|
725
|
+
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {
|
731
726
|
margin-right: -2px; /* to the day cell's edge */
|
732
727
|
}
|
733
728
|
|
@@ -1197,7 +1192,7 @@ be a descendant of the grid when it is being dragged.
|
|
1197
1192
|
|
1198
1193
|
/* resizer (cursor device) */
|
1199
1194
|
|
1200
|
-
.fc-
|
1195
|
+
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer {
|
1201
1196
|
left: 0;
|
1202
1197
|
right: 0;
|
1203
1198
|
bottom: 0;
|
@@ -1210,13 +1205,13 @@ be a descendant of the grid when it is being dragged.
|
|
1210
1205
|
cursor: s-resize;
|
1211
1206
|
}
|
1212
1207
|
|
1213
|
-
.fc-
|
1208
|
+
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after {
|
1214
1209
|
content: "=";
|
1215
1210
|
}
|
1216
1211
|
|
1217
1212
|
/* resizer (touch device) */
|
1218
1213
|
|
1219
|
-
.fc-
|
1214
|
+
.fc-time-grid-event.fc-selected .fc-resizer {
|
1220
1215
|
/* 10x10 dot */
|
1221
1216
|
border-radius: 5px;
|
1222
1217
|
border-width: 1px;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fullcalendar.io-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dbackowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jquery-rails
|
@@ -199,34 +199,63 @@ files:
|
|
199
199
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/1z/1zrToN9dimlnr4_kkdSJaL1-bVHicMTTNrygrZbiKmE.cache
|
200
200
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/2v/2v_enXedOXrk8P_wrCDrUgQBIv8vNep_8WXDcPpOAPk.cache
|
201
201
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/3F/3FwWB3dso0BiDgmo2rJzOmvMIR9ZsrWRwUOMCoWiczg.cache
|
202
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/3W/3WbiO2opoGMt4smgz4ErMgiOFlZmYHXHZbq32_eXrtI.cache
|
202
203
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/4v/4v74yXsoUNW6CAlmFbD2cqJk2BF_Iik0VWsa0h7Asg4.cache
|
203
204
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/5P/5PYCfeahBKl0iSuwOCidlYsY453rmAPP0ZNNcF67tqQ.cache
|
204
205
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/8M/8M1wIdL8evq90VzC-9RI5WSBnPSBA7qcqm-w3Wc5zQk.cache
|
206
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/8u/8uJrh-_1h6lrtAE5HZXCchMlGi-eOYO0SH_8WVJZoPQ.cache
|
205
207
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Bb/BbaJr2dSDQ-CoLaPJjh5WAi0189AJulGNC4lzLzVqkU.cache
|
208
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzdbPGtKVpZ6nDkCriaiHgtArNZYx1ve40vYH158oRA.cache
|
206
209
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/G_/G_eBie5yKayIsXqQ2t82QYclCtPlk8e0C-Ypy3XrWNE.cache
|
210
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/H_/H_AMg2V0XStjP--4CexdXop4Rl3AiH8h4F3l-5i9CT4.cache
|
211
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Il/Il1-ZHURKrBas9WU2p1_KKDGRvtj8sQNdB7mn1rog0c.cache
|
207
212
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IpbN3-B8GDUhWNahkeuBlIwntRm5Fh8Qi0lR6NKGHsQ.cache
|
208
213
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/LG/LGLCJcDHu0oVE5-mPjAFByMRf17dScWmYXaA1YpjXlk.cache
|
209
214
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/LX/LX4btAhr-I8jRXhkKHzUc8Faqgbn3ys0o-D0oH6RNF4.cache
|
215
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Mn/MnSdFKH9CP9eCumnvcwL9GWVXpSGfgQ7YGfZm5OJXEg.cache
|
216
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Mo/MouVQPQhx90B7DGl-_xgHJifHwIKkM1LeSml6LgtgZ8.cache
|
217
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/O9/O9kviXg4hfnmcC54J0MRPgrAxRWKhnArPSXStaFeI30.cache
|
218
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/OuRZHGf3ALp9XI4jfBOsIKsWVXndtRCtLUtwttuBnn8.cache
|
219
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/PD/PD2ZRbVk4maNW8CBg9qVygVgQNiMgV0GZmF5kFWJSxk.cache
|
210
220
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/PR/PRWglrXMxT3PuZ58zeNxSkFWaHzwxQVjccshc8XgGAk.cache
|
211
221
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Pb/PbAKo6a2uKJlGVrfzUz0IlxW9_OK0UAbTFZ4c-ebTfM.cache
|
212
222
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Py/PyLoN42JfBw2PAJQZv3EM_p0_zrlHUSZndlW8_9Sg-s.cache
|
213
223
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Qs/Qs_rijpiJFWJE4uEHuPBC1xfRqhkIrV0hMo8zDMGqTI.cache
|
214
224
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RRmYgXTQIf1QHewBaH8pACfSf3MJWSvj53F68VKeV1Q.cache
|
225
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RoiPZLDHochxcheNmbSflLdiYxeeeB0udVfH90fZMoY.cache
|
226
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Sz/Sz63PYjJ5GHyNpOgNmSivcjRrZvTOmKgqQUsVPZaoxw.cache
|
227
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/VO/VOwlPpsIlEdmiC7yzKRMfZpuG8kmaIKhqvONJvinJL0.cache
|
215
228
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/W6/W66CRiH8240LjHOrl-iP_PDAWagFYeHve-h7zmvogFY.cache
|
229
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/XI/XIB5kXcDIOqve-1dCw9NIeC2sTraclA8MZNWH-Eg-Gc.cache
|
230
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Yw/YwRQST2FfmjmkqBLEM28FNWkAL6PoXPsHrPFgiEdu2Q.cache
|
231
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Zy/Zy-fKbxo3HN5HVfV-NBmL6_YaD7p2XsAjHVOl80NSQA.cache
|
232
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/_h/_hYQrEbEMuil6MJp_KL2NcquW52dYHbDcwi3nu-w_VQ.cache
|
233
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/_n/_nN6c-BQXZ3AWLGpWMoCfVwF9HxNZP8mie_je7mQFxc.cache
|
216
234
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/ab/abLztZ6RIpy8ik3QuEnFS7pEaWu_8_d2Q_dUNAvZrlY.cache
|
235
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/c6/c6-OeCLASq51m3hakyLc_K0gBEz9shanluuN3Q0o0Pc.cache
|
217
236
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/cw/cwj7NsjtnwbSAyGolIZE4rjV7_MB071J3J9oUWmfJUA.cache
|
218
237
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/dL/dLsumIPJ1BortrKmtkZhkTLRQzKjIt7rvdT7wVKQEw8.cache
|
238
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/dY/dYXBxXudeAWyE96PzziKRH1EojVkAcdud7xSTHCzV18.cache
|
219
239
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ/fQF4Nb2ST_kdJsW1xEb26JjDtN0M2L6MpgaJcwzKKjM.cache
|
240
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/fo/fode1W4tMDtFpZe5FeINHtwaGES8oc1bVkUyVE5hsE0.cache
|
241
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gP/gPqmECuss-A-RLqP9madF_pKFWHZMwZwmiHDV5Ewr-E.cache
|
220
242
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTvrFJh7Q5YvlX82v262_fyF5eenvG41sbxZ7MwqzMo.cache
|
221
243
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gZ/gZSBHrt-mcVTM9d04uNDtPaoYzDMdcDekcn8gs4s1gs.cache
|
222
244
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8vODE9RP0gop3pyz7IptAaJ6IV8k3HJtsEBCavNdzs.cache
|
245
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/iDcTlKrrMYW3VupDw4ZcdL3NoDaCS2JiuR7vyOgtiqI.cache
|
223
246
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/lE/lEcIbUanrpnsXYY0JbuW2Py7GzFX32ZEINj8uT9TTXk.cache
|
224
247
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/lR/lR5vlgxKHWKnxT-F_nmvBQgz4Sjphq8sMQPauO3VkCQ.cache
|
225
248
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6JlAtdEZ7WJ5YUPFDkb2aDjQmuN90hVNI5QRSbQOgU.cache
|
249
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/od/od1V62SeO78vztS37dh-CVvdiGW-MQxCsc117YltWwU.cache
|
250
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1owugK9kIfLP5ZpsUBZ56ihX0DuIgmyeX4I41lApoY.cache
|
251
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/rN/rNXqW6x1bR11OVcs3nPGn0QWihc8p0XmzqRrp4oobTY.cache
|
226
252
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/rP/rPV-6Lrf4GGkK48HiRlW9KH7JDu8OSOvbr5NoId5G_Q.cache
|
253
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/sA/sAwLZYrHoysBb4qQ2gi8BThpDTvtKcxVlcvKz1CgGAw.cache
|
227
254
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/t1/t1LLf5xvHQaFFYEYGv4e0lW5m_B4wfMX8zjc6qJ2kx0.cache
|
228
255
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/tO/tOxC1i0yU7Pv0qeh6_DIEtXGQGqCu8PcR3ncjUnKAU0.cache
|
229
256
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vKmDWNjBPqpBw4W3ypKlJIbZi6I4pYXwRR5bMPrazXI.cache
|
257
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/wk/wkQHj4SqvRDNITiQxLPbntXY-TCW1crkQhN5BRMoGLk.cache
|
258
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/yF/yFmF8pySkf4pcqRNBs3J7MRa_iuiTV8g-GZOxbMcajE.cache
|
230
259
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1ychbk3GbeFb0PifITr8-CRFFt0Hry2CNDPUk-O08g.cache
|
231
260
|
- spec/features/assets_spec.rb
|
232
261
|
- spec/spec_helper.rb
|
@@ -355,35 +384,64 @@ test_files:
|
|
355
384
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/5P/5PYCfeahBKl0iSuwOCidlYsY453rmAPP0ZNNcF67tqQ.cache
|
356
385
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/dL/dLsumIPJ1BortrKmtkZhkTLRQzKjIt7rvdT7wVKQEw8.cache
|
357
386
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/-T/-TF4g7ysiPxZNjb74I1D6AzI5XvgNMbr95XXvfHMHIo.cache
|
387
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/od/od1V62SeO78vztS37dh-CVvdiGW-MQxCsc117YltWwU.cache
|
388
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/sA/sAwLZYrHoysBb4qQ2gi8BThpDTvtKcxVlcvKz1CgGAw.cache
|
358
389
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vKmDWNjBPqpBw4W3ypKlJIbZi6I4pYXwRR5bMPrazXI.cache
|
359
390
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/ab/abLztZ6RIpy8ik3QuEnFS7pEaWu_8_d2Q_dUNAvZrlY.cache
|
360
391
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/LX/LX4btAhr-I8jRXhkKHzUc8Faqgbn3ys0o-D0oH6RNF4.cache
|
392
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Zy/Zy-fKbxo3HN5HVfV-NBmL6_YaD7p2XsAjHVOl80NSQA.cache
|
361
393
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IpbN3-B8GDUhWNahkeuBlIwntRm5Fh8Qi0lR6NKGHsQ.cache
|
362
394
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/lR/lR5vlgxKHWKnxT-F_nmvBQgz4Sjphq8sMQPauO3VkCQ.cache
|
363
395
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/LG/LGLCJcDHu0oVE5-mPjAFByMRf17dScWmYXaA1YpjXlk.cache
|
396
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/PD/PD2ZRbVk4maNW8CBg9qVygVgQNiMgV0GZmF5kFWJSxk.cache
|
397
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1owugK9kIfLP5ZpsUBZ56ihX0DuIgmyeX4I41lApoY.cache
|
364
398
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/0r/0rn-tU1eBUPgW0KozwYPjcPwoscBdQbePooRBwPnl5U.cache
|
399
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Mn/MnSdFKH9CP9eCumnvcwL9GWVXpSGfgQ7YGfZm5OJXEg.cache
|
365
400
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/cw/cwj7NsjtnwbSAyGolIZE4rjV7_MB071J3J9oUWmfJUA.cache
|
401
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/8u/8uJrh-_1h6lrtAE5HZXCchMlGi-eOYO0SH_8WVJZoPQ.cache
|
366
402
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ/fQF4Nb2ST_kdJsW1xEb26JjDtN0M2L6MpgaJcwzKKjM.cache
|
367
403
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/8M/8M1wIdL8evq90VzC-9RI5WSBnPSBA7qcqm-w3Wc5zQk.cache
|
368
404
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTvrFJh7Q5YvlX82v262_fyF5eenvG41sbxZ7MwqzMo.cache
|
405
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/H_/H_AMg2V0XStjP--4CexdXop4Rl3AiH8h4F3l-5i9CT4.cache
|
406
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/XI/XIB5kXcDIOqve-1dCw9NIeC2sTraclA8MZNWH-Eg-Gc.cache
|
407
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/wk/wkQHj4SqvRDNITiQxLPbntXY-TCW1crkQhN5BRMoGLk.cache
|
369
408
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/G_/G_eBie5yKayIsXqQ2t82QYclCtPlk8e0C-Ypy3XrWNE.cache
|
409
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/c6/c6-OeCLASq51m3hakyLc_K0gBEz9shanluuN3Q0o0Pc.cache
|
370
410
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/2v/2v_enXedOXrk8P_wrCDrUgQBIv8vNep_8WXDcPpOAPk.cache
|
371
411
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RRmYgXTQIf1QHewBaH8pACfSf3MJWSvj53F68VKeV1Q.cache
|
372
412
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/rP/rPV-6Lrf4GGkK48HiRlW9KH7JDu8OSOvbr5NoId5G_Q.cache
|
373
413
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6JlAtdEZ7WJ5YUPFDkb2aDjQmuN90hVNI5QRSbQOgU.cache
|
414
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Mo/MouVQPQhx90B7DGl-_xgHJifHwIKkM1LeSml6LgtgZ8.cache
|
415
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/iDcTlKrrMYW3VupDw4ZcdL3NoDaCS2JiuR7vyOgtiqI.cache
|
416
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/rN/rNXqW6x1bR11OVcs3nPGn0QWihc8p0XmzqRrp4oobTY.cache
|
374
417
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8vODE9RP0gop3pyz7IptAaJ6IV8k3HJtsEBCavNdzs.cache
|
418
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/O9/O9kviXg4hfnmcC54J0MRPgrAxRWKhnArPSXStaFeI30.cache
|
375
419
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/4v/4v74yXsoUNW6CAlmFbD2cqJk2BF_Iik0VWsa0h7Asg4.cache
|
376
420
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/t1/t1LLf5xvHQaFFYEYGv4e0lW5m_B4wfMX8zjc6qJ2kx0.cache
|
421
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/3W/3WbiO2opoGMt4smgz4ErMgiOFlZmYHXHZbq32_eXrtI.cache
|
422
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/_n/_nN6c-BQXZ3AWLGpWMoCfVwF9HxNZP8mie_je7mQFxc.cache
|
423
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/VO/VOwlPpsIlEdmiC7yzKRMfZpuG8kmaIKhqvONJvinJL0.cache
|
424
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Il/Il1-ZHURKrBas9WU2p1_KKDGRvtj8sQNdB7mn1rog0c.cache
|
377
425
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Pb/PbAKo6a2uKJlGVrfzUz0IlxW9_OK0UAbTFZ4c-ebTfM.cache
|
426
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Yw/YwRQST2FfmjmkqBLEM28FNWkAL6PoXPsHrPFgiEdu2Q.cache
|
378
427
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/W6/W66CRiH8240LjHOrl-iP_PDAWagFYeHve-h7zmvogFY.cache
|
428
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RoiPZLDHochxcheNmbSflLdiYxeeeB0udVfH90fZMoY.cache
|
429
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gP/gPqmECuss-A-RLqP9madF_pKFWHZMwZwmiHDV5Ewr-E.cache
|
379
430
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1ychbk3GbeFb0PifITr8-CRFFt0Hry2CNDPUk-O08g.cache
|
431
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/fo/fode1W4tMDtFpZe5FeINHtwaGES8oc1bVkUyVE5hsE0.cache
|
432
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Sz/Sz63PYjJ5GHyNpOgNmSivcjRrZvTOmKgqQUsVPZaoxw.cache
|
380
433
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jBm32Lhwj7n0HxpBGOR2Z9eCn883XjM94yW_nhGo7s.cache
|
434
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Ou/OuRZHGf3ALp9XI4jfBOsIKsWVXndtRCtLUtwttuBnn8.cache
|
381
435
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/PR/PRWglrXMxT3PuZ58zeNxSkFWaHzwxQVjccshc8XgGAk.cache
|
436
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/yF/yFmF8pySkf4pcqRNBs3J7MRa_iuiTV8g-GZOxbMcajE.cache
|
382
437
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/gZ/gZSBHrt-mcVTM9d04uNDtPaoYzDMdcDekcn8gs4s1gs.cache
|
383
438
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Py/PyLoN42JfBw2PAJQZv3EM_p0_zrlHUSZndlW8_9Sg-s.cache
|
384
439
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/3F/3FwWB3dso0BiDgmo2rJzOmvMIR9ZsrWRwUOMCoWiczg.cache
|
385
440
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Bb/BbaJr2dSDQ-CoLaPJjh5WAi0189AJulGNC4lzLzVqkU.cache
|
441
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzdbPGtKVpZ6nDkCriaiHgtArNZYx1ve40vYH158oRA.cache
|
442
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/_h/_hYQrEbEMuil6MJp_KL2NcquW52dYHbDcwi3nu-w_VQ.cache
|
386
443
|
- spec/dummy/tmp/cache/assets/sprockets/v3.0/tO/tOxC1i0yU7Pv0qeh6_DIEtXGQGqCu8PcR3ncjUnKAU0.cache
|
444
|
+
- spec/dummy/tmp/cache/assets/sprockets/v3.0/dY/dYXBxXudeAWyE96PzziKRH1EojVkAcdud7xSTHCzV18.cache
|
387
445
|
- spec/dummy/config.ru
|
388
446
|
- spec/dummy/db/test.sqlite3
|
389
447
|
- spec/spec_helper.rb
|