active_admin_pro 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53549b29df5e7a49b48e73a627b27fe3ef7d98cc
4
- data.tar.gz: cfd405801d7ff86d43c240a64ddf106f3e0d7f55
3
+ metadata.gz: 39d6a621bc2fa55ca47e8c1b172b0ed468a9300b
4
+ data.tar.gz: 6f497b8a8b7ab7eeb6115013fda4d5b2bcb7c24a
5
5
  SHA512:
6
- metadata.gz: da9d320af7cd840b8799bc133c86defe317be059d3f7ccc779704e4a37bd82e24485e120233a4baff3c7a3724b2b7768d88ed9cac3ff91e796333d7d6e528b41
7
- data.tar.gz: eee0f1ccb0d26b2a7c15e481d4915e9fdf86467ee72afb2b0e26d8aade9c76db7ac43f6dec746247b750141e4135baf02a1c1217e5cc5cb1da6051bc2b316362
6
+ metadata.gz: 82ae43471cfd6eaed7911faa980b333b7a96543b25b3479d952a439d869552ab1ac6cd9ad4095fd46536f4bd83668a528065df7a815707cbac9e95f118ff362e
7
+ data.tar.gz: 030e64520e8f4409f3d50330702f4be213a14cf333b831fafbe029fc4a0097a60a7a5d2e1b1f319a6ee7b079979231468cf933d1165424ad15fd9439946d4c86
@@ -0,0 +1,53 @@
1
+ //= require awesomplete
2
+ //= require jquery.scrollTo
3
+
4
+ /* globals Awesomplete */
5
+ (function() {
6
+ "use strict";
7
+
8
+ // Enable auto-complete input fields.
9
+ // @see http://leaverou.github.io/awesomplete/
10
+ App.register('component').enter(function() {
11
+ $('input.autocomplete').each(function() {
12
+ var autocomplete = new Awesomplete(this, { maxItems: 9999 });
13
+
14
+ var input = $(this);
15
+ var list = $(input.siblings('ul'));
16
+ list.css('width', input.outerWidth());
17
+
18
+ // Open the auto complete list when the input is focused
19
+ input.focus(function() {
20
+ autocomplete.evaluate();
21
+ autocomplete.open();
22
+ });
23
+
24
+ // Scroll list to top when opened
25
+ input.bind('awesomplete-open', function() {
26
+ list.scrollTo(0);
27
+ });
28
+
29
+ // Scroll list up or down to the selected element
30
+ input.bind('awesomplete-highlight', function(e) {
31
+ var item = $(list.find('li[aria-selected="true"]'));
32
+ if (item === undefined || item === null || item.position() === undefined) { return; }
33
+
34
+ // Gather the list and item heights so we can scroll to the item
35
+ var itemHeight = item.height();
36
+ var itemTop = item.position().top;
37
+ var listHeight = list.height();
38
+ var itemCount = listHeight / itemHeight;
39
+
40
+ // Scroll the item to the bottom or top of the list if not visible
41
+ if (itemTop >= listHeight) {
42
+ list.scrollTo(item, {
43
+ offset: {
44
+ top: -itemHeight * (itemCount - 1)
45
+ }
46
+ });
47
+ } else if (itemTop < 0) {
48
+ list.scrollTo(item);
49
+ }
50
+ });
51
+ });
52
+ });
53
+ })();
@@ -0,0 +1,57 @@
1
+ $autocomplete-background-color: #fff;
2
+ $autocomplete-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
3
+ $autocomplete-highlight-color: #000;
4
+ $autocomplete-item-height: 40px;
5
+ $autocomplete-max-items: 5;
6
+ $autocomplete-selected-background-color: $accent-color;
7
+ $autocomplete-selected-color: text-color($autocomplete-selected-background-color);
8
+
9
+ .input.autocomplete {
10
+ z-index: 5;
11
+ }
12
+
13
+ .awesomplete {
14
+ position: relative;
15
+
16
+ ul {
17
+ background-color: $autocomplete-background-color;
18
+ box-shadow: $autocomplete-box-shadow;
19
+ left: 2px;
20
+ list-style-type: none;
21
+ margin: 0;
22
+ max-height: $autocomplete-item-height * $autocomplete-max-items;
23
+ overflow-y: auto;
24
+ padding: 0;
25
+ position: absolute;
26
+ top: 100%;
27
+ z-index: 6;
28
+ }
29
+
30
+ li {
31
+ cursor: pointer;
32
+ height: $autocomplete-item-height;
33
+ line-height: $autocomplete-item-height;
34
+ padding: 0 0.5em;
35
+ }
36
+
37
+ mark {
38
+ background-color: transparent;
39
+ color: $autocomplete-highlight-color;
40
+ font-weight: bold;
41
+ }
42
+
43
+ li:hover,
44
+ li[aria-selected="true"] {
45
+ background-color: $autocomplete-selected-background-color;
46
+ color: $autocomplete-selected-color;
47
+
48
+ mark {
49
+ color: $autocomplete-selected-color;
50
+ }
51
+ }
52
+
53
+ .visually-hidden {
54
+ position: absolute;
55
+ visibility: hidden;
56
+ }
57
+ }
@@ -0,0 +1,5 @@
1
+ class AutocompleteInput < Formtastic::Inputs::StringInput
2
+ def input_html_options
3
+ super.merge(class: "autocomplete")
4
+ end
5
+ end
@@ -25,7 +25,7 @@ ActiveAdmin.register ActiveAdminPro::SummernoteImage do
25
25
  file_ext = File.extname(@file.original_filename)
26
26
  file_base = File.basename(@file.original_filename, file_ext)
27
27
  time = Time.now.to_i
28
- "aap/si/#{file_base}_#{time}#{file_ext}"
28
+ "aap/si/#{file_base.parameterize}-#{time}#{file_ext}"
29
29
  end
30
30
 
31
31
  def google_storage_bucket
@@ -1,3 +1,3 @@
1
1
  module ActiveAdminPro
2
- VERSION = "0.1.5".freeze
2
+ VERSION = "0.1.6".freeze
3
3
  end
@@ -0,0 +1,392 @@
1
+ /**
2
+ * Simple, lightweight, usable local autocomplete library for modern browsers
3
+ * Because there weren’t enough autocomplete scripts in the world? Because I’m completely insane and have NIH syndrome? Probably both. :P
4
+ * @author Lea Verou http://leaverou.github.io/awesomplete
5
+ * MIT license
6
+ */
7
+
8
+ (function () {
9
+
10
+ var _ = function (input, o) {
11
+ var me = this;
12
+
13
+ // Setup
14
+
15
+ this.input = $(input);
16
+ this.input.setAttribute("autocomplete", "off");
17
+ this.input.setAttribute("aria-autocomplete", "list");
18
+
19
+ o = o || {};
20
+
21
+ configure.call(this, {
22
+ minChars: 2,
23
+ maxItems: 10,
24
+ autoFirst: false,
25
+ filter: _.FILTER_CONTAINS,
26
+ sort: _.SORT_BYLENGTH,
27
+ item: function (text, input) {
28
+ var html = input === '' ? text : text.replace(RegExp($.regExpEscape(input.trim()), "gi"), "<mark>$&</mark>");
29
+ return $.create("li", {
30
+ innerHTML: html,
31
+ "aria-selected": "false"
32
+ });
33
+ },
34
+ replace: function (text) {
35
+ this.input.value = text;
36
+ }
37
+ }, o);
38
+
39
+ this.index = -1;
40
+
41
+ // Create necessary elements
42
+
43
+ this.container = $.create("div", {
44
+ className: "awesomplete",
45
+ around: input
46
+ });
47
+
48
+ this.ul = $.create("ul", {
49
+ hidden: "",
50
+ inside: this.container
51
+ });
52
+
53
+ this.status = $.create("span", {
54
+ className: "visually-hidden",
55
+ role: "status",
56
+ "aria-live": "assertive",
57
+ "aria-relevant": "additions",
58
+ inside: this.container
59
+ });
60
+
61
+ // Bind events
62
+
63
+ $.bind(this.input, {
64
+ "input": this.evaluate.bind(this),
65
+ "blur": this.close.bind(this),
66
+ "keydown": function(evt) {
67
+ var c = evt.keyCode;
68
+
69
+ // If the dropdown `ul` is in view, then act on keydown for the following keys:
70
+ // Enter / Esc / Up / Down
71
+ if(me.opened) {
72
+ if (c === 13 && me.selected) { // Enter
73
+ evt.preventDefault();
74
+ me.select();
75
+ }
76
+ else if (c === 27) { // Esc
77
+ me.close();
78
+ }
79
+ else if (c === 38 || c === 40) { // Down/Up arrow
80
+ evt.preventDefault();
81
+ me[c === 38? "previous" : "next"]();
82
+ }
83
+ }
84
+ }
85
+ });
86
+
87
+ $.bind(this.input.form, {"submit": this.close.bind(this)});
88
+
89
+ $.bind(this.ul, {"mousedown": function(evt) {
90
+ var li = evt.target;
91
+
92
+ if (li !== this) {
93
+
94
+ while (li && !/li/i.test(li.nodeName)) {
95
+ li = li.parentNode;
96
+ }
97
+
98
+ if (li && evt.button === 0) { // Only select on left click
99
+ me.select(li);
100
+ }
101
+ }
102
+ }});
103
+
104
+ if (this.input.hasAttribute("list")) {
105
+ this.list = "#" + input.getAttribute("list");
106
+ input.removeAttribute("list");
107
+ }
108
+ else {
109
+ this.list = this.input.getAttribute("data-list") || o.list || [];
110
+ }
111
+
112
+ _.all.push(this);
113
+ };
114
+
115
+ _.prototype = {
116
+ set list(list) {
117
+ if (Array.isArray(list)) {
118
+ this._list = list;
119
+ }
120
+ else if (typeof list === "string" && list.indexOf(",") > -1) {
121
+ this._list = list.split(/\s*,\s*/);
122
+ }
123
+ else { // Element or CSS selector
124
+ list = $(list);
125
+
126
+ if (list && list.children) {
127
+ this._list = slice.apply(list.children).map(function (el) {
128
+ return el.textContent.trim();
129
+ });
130
+ }
131
+ }
132
+
133
+ if (document.activeElement === this.input) {
134
+ this.evaluate();
135
+ }
136
+ },
137
+
138
+ get selected() {
139
+ return this.index > -1;
140
+ },
141
+
142
+ get opened() {
143
+ return this.ul && this.ul.getAttribute("hidden") == null;
144
+ },
145
+
146
+ close: function () {
147
+ this.ul.setAttribute("hidden", "");
148
+ this.index = -1;
149
+
150
+ $.fire(this.input, "awesomplete-close");
151
+ },
152
+
153
+ open: function () {
154
+ this.ul.removeAttribute("hidden");
155
+
156
+ if (this.autoFirst && this.index === -1) {
157
+ this.goto(0);
158
+ }
159
+
160
+ $.fire(this.input, "awesomplete-open");
161
+ },
162
+
163
+ next: function () {
164
+ var count = this.ul.children.length;
165
+
166
+ this.goto(this.index < count - 1? this.index + 1 : -1);
167
+ },
168
+
169
+ previous: function () {
170
+ var count = this.ul.children.length;
171
+
172
+ this.goto(this.selected? this.index - 1 : count - 1);
173
+ },
174
+
175
+ // Should not be used, highlights specific item without any checks!
176
+ goto: function (i) {
177
+ var lis = this.ul.children;
178
+
179
+ if (this.selected) {
180
+ lis[this.index].setAttribute("aria-selected", "false");
181
+ }
182
+
183
+ this.index = i;
184
+
185
+ if (i > -1 && lis.length > 0) {
186
+ lis[i].setAttribute("aria-selected", "true");
187
+ this.status.textContent = lis[i].textContent;
188
+ }
189
+
190
+ $.fire(this.input, "awesomplete-highlight");
191
+ },
192
+
193
+ select: function (selected) {
194
+ selected = selected || this.ul.children[this.index];
195
+
196
+ if (selected) {
197
+ var prevented;
198
+
199
+ $.fire(this.input, "awesomplete-select", {
200
+ text: selected.textContent,
201
+ preventDefault: function () {
202
+ prevented = true;
203
+ }
204
+ });
205
+
206
+ if (!prevented) {
207
+ this.replace(selected.textContent);
208
+ this.close();
209
+ $.fire(this.input, "awesomplete-selectcomplete");
210
+ }
211
+ }
212
+ },
213
+
214
+ evaluate: function() {
215
+ var me = this;
216
+ var value = this.input.value;
217
+
218
+ if (value.length >= this.minChars && this._list.length > 0) {
219
+ this.index = -1;
220
+ // Populate list with options that match
221
+ this.ul.innerHTML = "";
222
+
223
+ this._list
224
+ .filter(function(item) {
225
+ return me.filter(item, value);
226
+ })
227
+ .sort(this.sort)
228
+ .every(function(text, i) {
229
+ me.ul.appendChild(me.item(text, value));
230
+
231
+ return i < me.maxItems - 1;
232
+ });
233
+
234
+ if (this.ul.children.length === 0) {
235
+ this.close();
236
+ } else {
237
+ this.open();
238
+ }
239
+ }
240
+ else {
241
+ this.close();
242
+ }
243
+ }
244
+ };
245
+
246
+ // Static methods/properties
247
+
248
+ _.all = [];
249
+
250
+ _.FILTER_CONTAINS = function (text, input) {
251
+ return RegExp($.regExpEscape(input.trim()), "i").test(text);
252
+ };
253
+
254
+ _.FILTER_STARTSWITH = function (text, input) {
255
+ return RegExp("^" + $.regExpEscape(input.trim()), "i").test(text);
256
+ };
257
+
258
+ _.SORT_BYLENGTH = function (a, b) {
259
+ if (a.length !== b.length) {
260
+ return a.length - b.length;
261
+ }
262
+
263
+ return a < b? -1 : 1;
264
+ };
265
+
266
+ // Private functions
267
+
268
+ function configure(properties, o) {
269
+ for (var i in properties) {
270
+ var initial = properties[i],
271
+ attrValue = this.input.getAttribute("data-" + i.toLowerCase());
272
+
273
+ if (typeof initial === "number") {
274
+ this[i] = parseInt(attrValue);
275
+ }
276
+ else if (initial === false) { // Boolean options must be false by default anyway
277
+ this[i] = attrValue !== null;
278
+ }
279
+ else if (initial instanceof Function) {
280
+ this[i] = null;
281
+ }
282
+ else {
283
+ this[i] = attrValue;
284
+ }
285
+
286
+ if (!this[i] && this[i] !== 0) {
287
+ this[i] = (i in o)? o[i] : initial;
288
+ }
289
+ }
290
+ }
291
+
292
+ // Helpers
293
+
294
+ var slice = Array.prototype.slice;
295
+
296
+ function $(expr, con) {
297
+ return typeof expr === "string"? (con || document).querySelector(expr) : expr || null;
298
+ }
299
+
300
+ function $$(expr, con) {
301
+ return slice.call((con || document).querySelectorAll(expr));
302
+ }
303
+
304
+ $.create = function(tag, o) {
305
+ var element = document.createElement(tag);
306
+
307
+ for (var i in o) {
308
+ var val = o[i];
309
+
310
+ if (i === "inside") {
311
+ $(val).appendChild(element);
312
+ }
313
+ else if (i === "around") {
314
+ var ref = $(val);
315
+ ref.parentNode.insertBefore(element, ref);
316
+ element.appendChild(ref);
317
+ }
318
+ else if (i in element) {
319
+ element[i] = val;
320
+ }
321
+ else {
322
+ element.setAttribute(i, val);
323
+ }
324
+ }
325
+
326
+ return element;
327
+ };
328
+
329
+ $.bind = function(element, o) {
330
+ if (element) {
331
+ for (var event in o) {
332
+ var callback = o[event];
333
+
334
+ event.split(/\s+/).forEach(function (event) {
335
+ element.addEventListener(event, callback);
336
+ });
337
+ }
338
+ }
339
+ };
340
+
341
+ $.fire = function(target, type, properties) {
342
+ var evt = document.createEvent("HTMLEvents");
343
+
344
+ evt.initEvent(type, true, true );
345
+
346
+ for (var j in properties) {
347
+ evt[j] = properties[j];
348
+ }
349
+
350
+ target.dispatchEvent(evt);
351
+ };
352
+
353
+ $.regExpEscape = function (s) {
354
+ return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&");
355
+ }
356
+
357
+ // Initialization
358
+
359
+ function init() {
360
+ $$("input.awesomplete").forEach(function (input) {
361
+ new _(input);
362
+ });
363
+ }
364
+
365
+ // Are we in a browser? Check for Document constructor
366
+ if (typeof Document !== "undefined") {
367
+ // DOM already loaded?
368
+ if (document.readyState !== "loading") {
369
+ init();
370
+ }
371
+ else {
372
+ // Wait for it
373
+ document.addEventListener("DOMContentLoaded", init);
374
+ }
375
+ }
376
+
377
+ _.$ = $;
378
+ _.$$ = $$;
379
+
380
+ // Make sure to export Awesomplete on self when in a browser
381
+ if (typeof self !== "undefined") {
382
+ self.Awesomplete = _;
383
+ }
384
+
385
+ // Expose Awesomplete as a CJS module
386
+ if (typeof exports === "object") {
387
+ module.exports = _;
388
+ }
389
+
390
+ return _;
391
+
392
+ }());
@@ -0,0 +1,210 @@
1
+ /*!
2
+ * jQuery.scrollTo
3
+ * Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
4
+ * Licensed under MIT
5
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
6
+ * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery
7
+ * @author Ariel Flesler
8
+ * @version 2.1.2
9
+ */
10
+ ;(function(factory) {
11
+ 'use strict';
12
+ if (typeof define === 'function' && define.amd) {
13
+ // AMD
14
+ define(['jquery'], factory);
15
+ } else if (typeof module !== 'undefined' && module.exports) {
16
+ // CommonJS
17
+ module.exports = factory(require('jquery'));
18
+ } else {
19
+ // Global
20
+ factory(jQuery);
21
+ }
22
+ })(function($) {
23
+ 'use strict';
24
+
25
+ var $scrollTo = $.scrollTo = function(target, duration, settings) {
26
+ return $(window).scrollTo(target, duration, settings);
27
+ };
28
+
29
+ $scrollTo.defaults = {
30
+ axis:'xy',
31
+ duration: 0,
32
+ limit:true
33
+ };
34
+
35
+ function isWin(elem) {
36
+ return !elem.nodeName ||
37
+ $.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1;
38
+ }
39
+
40
+ $.fn.scrollTo = function(target, duration, settings) {
41
+ if (typeof duration === 'object') {
42
+ settings = duration;
43
+ duration = 0;
44
+ }
45
+ if (typeof settings === 'function') {
46
+ settings = { onAfter:settings };
47
+ }
48
+ if (target === 'max') {
49
+ target = 9e9;
50
+ }
51
+
52
+ settings = $.extend({}, $scrollTo.defaults, settings);
53
+ // Speed is still recognized for backwards compatibility
54
+ duration = duration || settings.duration;
55
+ // Make sure the settings are given right
56
+ var queue = settings.queue && settings.axis.length > 1;
57
+ if (queue) {
58
+ // Let's keep the overall duration
59
+ duration /= 2;
60
+ }
61
+ settings.offset = both(settings.offset);
62
+ settings.over = both(settings.over);
63
+
64
+ return this.each(function() {
65
+ // Null target yields nothing, just like jQuery does
66
+ if (target === null) return;
67
+
68
+ var win = isWin(this),
69
+ elem = win ? this.contentWindow || window : this,
70
+ $elem = $(elem),
71
+ targ = target,
72
+ attr = {},
73
+ toff;
74
+
75
+ switch (typeof targ) {
76
+ // A number will pass the regex
77
+ case 'number':
78
+ case 'string':
79
+ if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
80
+ targ = both(targ);
81
+ // We are done
82
+ break;
83
+ }
84
+ // Relative/Absolute selector
85
+ targ = win ? $(targ) : $(targ, elem);
86
+ /* falls through */
87
+ case 'object':
88
+ if (targ.length === 0) return;
89
+ // DOMElement / jQuery
90
+ if (targ.is || targ.style) {
91
+ // Get the real position of the target
92
+ toff = (targ = $(targ)).offset();
93
+ }
94
+ }
95
+
96
+ var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
97
+
98
+ $.each(settings.axis.split(''), function(i, axis) {
99
+ var Pos = axis === 'x' ? 'Left' : 'Top',
100
+ pos = Pos.toLowerCase(),
101
+ key = 'scroll' + Pos,
102
+ prev = $elem[key](),
103
+ max = $scrollTo.max(elem, axis);
104
+
105
+ if (toff) {// jQuery / DOMElement
106
+ attr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);
107
+
108
+ // If it's a dom element, reduce the margin
109
+ if (settings.margin) {
110
+ attr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0;
111
+ attr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0;
112
+ }
113
+
114
+ attr[key] += offset[pos] || 0;
115
+
116
+ if (settings.over[pos]) {
117
+ // Scroll to a fraction of its width/height
118
+ attr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos];
119
+ }
120
+ } else {
121
+ var val = targ[pos];
122
+ // Handle percentage values
123
+ attr[key] = val.slice && val.slice(-1) === '%' ?
124
+ parseFloat(val) / 100 * max
125
+ : val;
126
+ }
127
+
128
+ // Number or 'number'
129
+ if (settings.limit && /^\d+$/.test(attr[key])) {
130
+ // Check the limits
131
+ attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);
132
+ }
133
+
134
+ // Don't waste time animating, if there's no need.
135
+ if (!i && settings.axis.length > 1) {
136
+ if (prev === attr[key]) {
137
+ // No animation needed
138
+ attr = {};
139
+ } else if (queue) {
140
+ // Intermediate animation
141
+ animate(settings.onAfterFirst);
142
+ // Don't animate this axis again in the next iteration.
143
+ attr = {};
144
+ }
145
+ }
146
+ });
147
+
148
+ animate(settings.onAfter);
149
+
150
+ function animate(callback) {
151
+ var opts = $.extend({}, settings, {
152
+ // The queue setting conflicts with animate()
153
+ // Force it to always be true
154
+ queue: true,
155
+ duration: duration,
156
+ complete: callback && function() {
157
+ callback.call(elem, targ, settings);
158
+ }
159
+ });
160
+ $elem.animate(attr, opts);
161
+ }
162
+ });
163
+ };
164
+
165
+ // Max scrolling position, works on quirks mode
166
+ // It only fails (not too badly) on IE, quirks mode.
167
+ $scrollTo.max = function(elem, axis) {
168
+ var Dim = axis === 'x' ? 'Width' : 'Height',
169
+ scroll = 'scroll'+Dim;
170
+
171
+ if (!isWin(elem))
172
+ return elem[scroll] - $(elem)[Dim.toLowerCase()]();
173
+
174
+ var size = 'client' + Dim,
175
+ doc = elem.ownerDocument || elem.document,
176
+ html = doc.documentElement,
177
+ body = doc.body;
178
+
179
+ return Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);
180
+ };
181
+
182
+ function both(val) {
183
+ return $.isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val };
184
+ }
185
+
186
+ // Add special hooks so that window scroll properties can be animated
187
+ $.Tween.propHooks.scrollLeft =
188
+ $.Tween.propHooks.scrollTop = {
189
+ get: function(t) {
190
+ return $(t.elem)[t.prop]();
191
+ },
192
+ set: function(t) {
193
+ var curr = this.get(t);
194
+ // If interrupt is true and user scrolled, stop animating
195
+ if (t.options.interrupt && t._last && t._last !== curr) {
196
+ return $(t.elem).stop();
197
+ }
198
+ var next = Math.round(t.now);
199
+ // Don't waste CPU
200
+ // Browsers don't render floating point scroll
201
+ if (curr !== next) {
202
+ $(t.elem)[t.prop](next);
203
+ t._last = this.get(t);
204
+ }
205
+ }
206
+ };
207
+
208
+ // AMD requirement
209
+ return $scrollTo;
210
+ });
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_admin_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Pattison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-04 00:00:00.000000000 Z
11
+ date: 2016-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -303,6 +303,7 @@ files:
303
303
  - app/assets/javascripts/active_admin_pro.js
304
304
  - app/assets/javascripts/active_admin_pro/actions/new.js
305
305
  - app/assets/javascripts/active_admin_pro/actions/show.js
306
+ - app/assets/javascripts/active_admin_pro/components/autocomplete_input.js
306
307
  - app/assets/javascripts/active_admin_pro/components/codemirror_input.js
307
308
  - app/assets/javascripts/active_admin_pro/components/link.js
308
309
  - app/assets/javascripts/active_admin_pro/components/phone_input.js
@@ -317,6 +318,7 @@ files:
317
318
  - app/assets/stylesheets/active_admin_pro/breakpoints.scss
318
319
  - app/assets/stylesheets/active_admin_pro/components/_input_variables.scss
319
320
  - app/assets/stylesheets/active_admin_pro/components/actions.scss
321
+ - app/assets/stylesheets/active_admin_pro/components/autocomplete_input.scss
320
322
  - app/assets/stylesheets/active_admin_pro/components/boolean_input.scss
321
323
  - app/assets/stylesheets/active_admin_pro/components/button.scss
322
324
  - app/assets/stylesheets/active_admin_pro/components/check_boxes_input.scss
@@ -468,6 +470,7 @@ files:
468
470
  - app/assets/stylesheets/active_admin_pro/vendor/neat/settings/_visual-grid.scss
469
471
  - app/assets/stylesheets/active_admin_pro/vendor/normalize.css
470
472
  - app/assets/stylesheets/codemirror/themes/active_admin_pro.scss
473
+ - app/inputs/autocomplete_input.rb
471
474
  - app/inputs/codemirror_input.rb
472
475
  - app/inputs/datepicker_input.rb
473
476
  - app/inputs/phone_input.rb
@@ -483,6 +486,7 @@ files:
483
486
  - lib/generators/active_admin_pro/install_generator.rb
484
487
  - lib/tasks/active_admin_pro_tasks.rake
485
488
  - spec/spec_helper.rb
489
+ - vendor/assets/javascripts/awesomplete.js
486
490
  - vendor/assets/javascripts/bootstrap.js
487
491
  - vendor/assets/javascripts/codemirror.js
488
492
  - vendor/assets/javascripts/codemirror/addons/comment/comment.js
@@ -575,6 +579,7 @@ files:
575
579
  - vendor/assets/javascripts/codemirror/modes/yaml.js
576
580
  - vendor/assets/javascripts/intl-tel-input.js
577
581
  - vendor/assets/javascripts/intl-tel-utils.js
582
+ - vendor/assets/javascripts/jquery.scrollTo.js
578
583
  - vendor/assets/javascripts/slug.js
579
584
  - vendor/assets/javascripts/summernote.js
580
585
  - vendor/assets/stylesheets/codemirror.css