oxymoron 1.2.7 → 1.2.8

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: 7516416ecbec32dd521e4ea183e028b55544cb18
4
- data.tar.gz: f5fc33876301d61801a17c5466651dbe2e26751d
3
+ metadata.gz: 62a6b77289f2f0d7c32ff182428d0311520a0e34
4
+ data.tar.gz: 0e3754d7993ceb1e3f3995eef4e06bce151b4cce
5
5
  SHA512:
6
- metadata.gz: 52cc93d4d787b71a54af4f3f8294845e2b6baf50410b7bfa308c9f2da254649df7132da229218a109dd6cae8d8bba5a9e6d19b69888c3e2e051a664d78fc6180
7
- data.tar.gz: 7e5b37ef7896751a00478b12e2b3b21ba20088bc9cc8c202be0285d3b89450fde351086f7171fb09e17a1eb2b82002eac28ed4102ef8c6b18cdefa5715f12ac2
6
+ metadata.gz: 24d7cd163a28db571bd2f83ccb11e3197d6ffe693d4c3b033c3731ef0bff04681cb7ae0a997ee80907f35f19178761b593dba6373749e4fa62546d6162cb555e
7
+ data.tar.gz: 913e8c771cdf6c5e3566159065176d3f551529218fcb7bd5ae23f97453b460cb1ea80349d4e38dc4bc62c552766c80d0bc4f49527dd67ad3d4a0684e975100ec
@@ -1,3 +1,3 @@
1
1
  module Oxymoron
2
- VERSION = "1.2.7"
2
+ VERSION = "1.2.8"
3
3
  end
@@ -0,0 +1,953 @@
1
+ /*
2
+ * ngDialog - easy modals and popup windows
3
+ * http://github.com/likeastore/ngDialog
4
+ * (c) 2013-2015 MIT License, https://likeastore.com
5
+ */
6
+
7
+ (function (root, factory) {
8
+ if (typeof module !== 'undefined' && module.exports) {
9
+ // CommonJS
10
+ if (typeof angular === 'undefined') {
11
+ factory(require('angular'));
12
+ } else {
13
+ factory(angular);
14
+ }
15
+ module.exports = 'ngDialog';
16
+ } else if (typeof define === 'function' && define.amd) {
17
+ // AMD
18
+ define(['angular'], factory);
19
+ } else {
20
+ // Global Variables
21
+ factory(root.angular);
22
+ }
23
+ }(this, function (angular) {
24
+ 'use strict';
25
+
26
+ var m = angular.module('ngDialog', []);
27
+
28
+ var $el = angular.element;
29
+ var isDef = angular.isDefined;
30
+ var style = (document.body || document.documentElement).style;
31
+ var animationEndSupport = isDef(style.animation) || isDef(style.WebkitAnimation) || isDef(style.MozAnimation) || isDef(style.MsAnimation) || isDef(style.OAnimation);
32
+ var animationEndEvent = 'animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend';
33
+ var focusableElementSelector = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';
34
+ var disabledAnimationClass = 'ngdialog-disabled-animation';
35
+ var forceElementsReload = { html: false, body: false };
36
+ var scopes = {};
37
+ var openIdStack = [];
38
+ var activeBodyClasses = [];
39
+ var keydownIsBound = false;
40
+ var openOnePerName = false;
41
+ var closeByNavigationDialogStack = [];
42
+
43
+ var UI_ROUTER_VERSION_LEGACY = 'legacy';
44
+ var UI_ROUTER_VERSION_ONE_PLUS = '1.0.0+';
45
+
46
+ m.provider('ngDialog', function () {
47
+ var defaults = this.defaults = {
48
+ className: 'ngdialog-theme-default',
49
+ appendClassName: '',
50
+ disableAnimation: false,
51
+ plain: false,
52
+ showClose: true,
53
+ closeByDocument: true,
54
+ closeByEscape: true,
55
+ closeByNavigation: false,
56
+ appendTo: false,
57
+ preCloseCallback: false,
58
+ onOpenCallback: false,
59
+ overlay: true,
60
+ cache: true,
61
+ trapFocus: true,
62
+ preserveFocus: true,
63
+ ariaAuto: true,
64
+ ariaRole: null,
65
+ ariaLabelledById: null,
66
+ ariaLabelledBySelector: null,
67
+ ariaDescribedById: null,
68
+ ariaDescribedBySelector: null,
69
+ bodyClassName: 'ngdialog-open',
70
+ width: null,
71
+ height: null
72
+ };
73
+
74
+ this.setForceHtmlReload = function (_useIt) {
75
+ forceElementsReload.html = _useIt || false;
76
+ };
77
+
78
+ this.setForceBodyReload = function (_useIt) {
79
+ forceElementsReload.body = _useIt || false;
80
+ };
81
+
82
+ this.setDefaults = function (newDefaults) {
83
+ angular.extend(defaults, newDefaults);
84
+ };
85
+
86
+ this.setOpenOnePerName = function (isOpenOne) {
87
+ openOnePerName = isOpenOne || false;
88
+ };
89
+
90
+ var globalID = 0, dialogsCount = 0, closeByDocumentHandler, defers = {};
91
+
92
+ this.$get = ['$document', '$templateCache', '$compile', '$q', '$http', '$rootScope', '$timeout', '$window', '$controller', '$injector',
93
+ function ($document, $templateCache, $compile, $q, $http, $rootScope, $timeout, $window, $controller, $injector) {
94
+ var $elements = [];
95
+
96
+ var privateMethods = {
97
+ onDocumentKeydown: function (event) {
98
+ if (event.keyCode === 27) {
99
+ publicMethods.close('$escape');
100
+ }
101
+ },
102
+
103
+ activate: function($dialog) {
104
+ var options = $dialog.data('$ngDialogOptions');
105
+
106
+ if (options.trapFocus) {
107
+ $dialog.on('keydown', privateMethods.onTrapFocusKeydown);
108
+
109
+ // Catch rogue changes (eg. after unfocusing everything by clicking a non-focusable element)
110
+ $elements.body.on('keydown', privateMethods.onTrapFocusKeydown);
111
+ }
112
+ },
113
+
114
+ deactivate: function ($dialog) {
115
+ $dialog.off('keydown', privateMethods.onTrapFocusKeydown);
116
+ $elements.body.off('keydown', privateMethods.onTrapFocusKeydown);
117
+ },
118
+
119
+ deactivateAll: function (els) {
120
+ angular.forEach(els,function(el) {
121
+ var $dialog = angular.element(el);
122
+ privateMethods.deactivate($dialog);
123
+ });
124
+ },
125
+
126
+ setBodyPadding: function (width) {
127
+ var originalBodyPadding = parseInt(($elements.body.css('padding-right') || 0), 10);
128
+ $elements.body.css('padding-right', (originalBodyPadding + width) + 'px');
129
+ $elements.body.data('ng-dialog-original-padding', originalBodyPadding);
130
+ $rootScope.$broadcast('ngDialog.setPadding', width);
131
+ },
132
+
133
+ resetBodyPadding: function () {
134
+ var originalBodyPadding = $elements.body.data('ng-dialog-original-padding');
135
+ if (originalBodyPadding) {
136
+ $elements.body.css('padding-right', originalBodyPadding + 'px');
137
+ } else {
138
+ $elements.body.css('padding-right', '');
139
+ }
140
+ $rootScope.$broadcast('ngDialog.setPadding', 0);
141
+ },
142
+
143
+ performCloseDialog: function ($dialog, value) {
144
+ var options = $dialog.data('$ngDialogOptions');
145
+ var id = $dialog.attr('id');
146
+ var scope = scopes[id];
147
+ privateMethods.deactivate($dialog);
148
+
149
+ if (!scope) {
150
+ // Already closed
151
+ return;
152
+ }
153
+
154
+ if (typeof $window.Hammer !== 'undefined') {
155
+ var hammerTime = scope.hammerTime;
156
+ hammerTime.off('tap', closeByDocumentHandler);
157
+ hammerTime.destroy && hammerTime.destroy();
158
+ delete scope.hammerTime;
159
+ } else {
160
+ $dialog.unbind('click');
161
+ }
162
+
163
+ if (dialogsCount === 1) {
164
+ $elements.body.unbind('keydown', privateMethods.onDocumentKeydown);
165
+ }
166
+
167
+ if (!$dialog.hasClass('ngdialog-closing')){
168
+ dialogsCount -= 1;
169
+ }
170
+
171
+ var previousFocus = $dialog.data('$ngDialogPreviousFocus');
172
+ if (previousFocus && previousFocus.focus) {
173
+ previousFocus.focus();
174
+ }
175
+
176
+ $rootScope.$broadcast('ngDialog.closing', $dialog, value);
177
+ dialogsCount = dialogsCount < 0 ? 0 : dialogsCount;
178
+ if (animationEndSupport && !options.disableAnimation) {
179
+ scope.$destroy();
180
+ $dialog.unbind(animationEndEvent).bind(animationEndEvent, function () {
181
+ privateMethods.closeDialogElement($dialog, value);
182
+ }).addClass('ngdialog-closing');
183
+ } else {
184
+ scope.$destroy();
185
+ privateMethods.closeDialogElement($dialog, value);
186
+ }
187
+ if (defers[id]) {
188
+ defers[id].resolve({
189
+ id: id,
190
+ value: value,
191
+ $dialog: $dialog,
192
+ remainingDialogs: dialogsCount
193
+ });
194
+ delete defers[id];
195
+ }
196
+ if (scopes[id]) {
197
+ delete scopes[id];
198
+ }
199
+ openIdStack.splice(openIdStack.indexOf(id), 1);
200
+ if (!openIdStack.length) {
201
+ $elements.body.unbind('keydown', privateMethods.onDocumentKeydown);
202
+ keydownIsBound = false;
203
+ }
204
+
205
+ if (dialogsCount == 0)
206
+ {
207
+ closeByDocumentHandler = undefined;
208
+ }
209
+ },
210
+
211
+ closeDialogElement: function($dialog, value) {
212
+ var options = $dialog.data('$ngDialogOptions');
213
+ $dialog.remove();
214
+
215
+ activeBodyClasses.splice(activeBodyClasses.indexOf(options.bodyClassName), 1);
216
+ if (activeBodyClasses.indexOf(options.bodyClassName) === -1) {
217
+ $elements.html.removeClass(options.bodyClassName);
218
+ $elements.body.removeClass(options.bodyClassName);
219
+ }
220
+
221
+ if (dialogsCount === 0) {
222
+ privateMethods.resetBodyPadding();
223
+ }
224
+
225
+ $rootScope.$broadcast('ngDialog.closed', $dialog, value);
226
+ },
227
+
228
+ closeDialog: function ($dialog, value) {
229
+ var preCloseCallback = $dialog.data('$ngDialogPreCloseCallback');
230
+
231
+ if (preCloseCallback && angular.isFunction(preCloseCallback)) {
232
+
233
+ var preCloseCallbackResult = preCloseCallback.call($dialog, value);
234
+
235
+ if (angular.isObject(preCloseCallbackResult)) {
236
+ if (preCloseCallbackResult.closePromise) {
237
+ preCloseCallbackResult.closePromise.then(function () {
238
+ privateMethods.performCloseDialog($dialog, value);
239
+ }, function () {
240
+ return false;
241
+ });
242
+ } else {
243
+ preCloseCallbackResult.then(function () {
244
+ privateMethods.performCloseDialog($dialog, value);
245
+ }, function () {
246
+ return false;
247
+ });
248
+ }
249
+ } else if (preCloseCallbackResult !== false) {
250
+ privateMethods.performCloseDialog($dialog, value);
251
+ } else {
252
+ return false;
253
+ }
254
+ } else {
255
+ privateMethods.performCloseDialog($dialog, value);
256
+ }
257
+ },
258
+
259
+ onTrapFocusKeydown: function(ev) {
260
+ var el = angular.element(ev.currentTarget);
261
+ var $dialog;
262
+
263
+ if (el.hasClass('ngdialog')) {
264
+ $dialog = el;
265
+ } else {
266
+ $dialog = privateMethods.getActiveDialog();
267
+
268
+ if ($dialog === null) {
269
+ return;
270
+ }
271
+ }
272
+
273
+ var isTab = (ev.keyCode === 9);
274
+ var backward = (ev.shiftKey === true);
275
+
276
+ if (isTab) {
277
+ privateMethods.handleTab($dialog, ev, backward);
278
+ }
279
+ },
280
+
281
+ handleTab: function($dialog, ev, backward) {
282
+ var focusableElements = privateMethods.getFocusableElements($dialog);
283
+
284
+ if (focusableElements.length === 0) {
285
+ if (document.activeElement && document.activeElement.blur) {
286
+ document.activeElement.blur();
287
+ }
288
+ return;
289
+ }
290
+
291
+ var currentFocus = document.activeElement;
292
+ var focusIndex = Array.prototype.indexOf.call(focusableElements, currentFocus);
293
+
294
+ var isFocusIndexUnknown = (focusIndex === -1);
295
+ var isFirstElementFocused = (focusIndex === 0);
296
+ var isLastElementFocused = (focusIndex === focusableElements.length - 1);
297
+
298
+ var cancelEvent = false;
299
+
300
+ if (backward) {
301
+ if (isFocusIndexUnknown || isFirstElementFocused) {
302
+ focusableElements[focusableElements.length - 1].focus();
303
+ cancelEvent = true;
304
+ }
305
+ } else {
306
+ if (isFocusIndexUnknown || isLastElementFocused) {
307
+ focusableElements[0].focus();
308
+ cancelEvent = true;
309
+ }
310
+ }
311
+
312
+ if (cancelEvent) {
313
+ ev.preventDefault();
314
+ ev.stopPropagation();
315
+ }
316
+ },
317
+
318
+ autoFocus: function($dialog) {
319
+ var dialogEl = $dialog[0];
320
+
321
+ // Browser's (Chrome 40, Forefix 37, IE 11) don't appear to honor autofocus on the dialog, but we should
322
+ var autoFocusEl = dialogEl.querySelector('*[autofocus]');
323
+ if (autoFocusEl !== null) {
324
+ autoFocusEl.focus();
325
+
326
+ if (document.activeElement === autoFocusEl) {
327
+ return;
328
+ }
329
+
330
+ // Autofocus element might was display: none, so let's continue
331
+ }
332
+
333
+ var focusableElements = privateMethods.getFocusableElements($dialog);
334
+
335
+ if (focusableElements.length > 0) {
336
+ focusableElements[0].focus();
337
+ return;
338
+ }
339
+
340
+ // We need to focus something for the screen readers to notice the dialog
341
+ var contentElements = privateMethods.filterVisibleElements(dialogEl.querySelectorAll('h1,h2,h3,h4,h5,h6,p,span'));
342
+
343
+ if (contentElements.length > 0) {
344
+ var contentElement = contentElements[0];
345
+ $el(contentElement).attr('tabindex', '-1').css('outline', '0');
346
+ contentElement.focus();
347
+ }
348
+ },
349
+
350
+ getFocusableElements: function ($dialog) {
351
+ var dialogEl = $dialog[0];
352
+
353
+ var rawElements = dialogEl.querySelectorAll(focusableElementSelector);
354
+
355
+ // Ignore untabbable elements, ie. those with tabindex = -1
356
+ var tabbableElements = privateMethods.filterTabbableElements(rawElements);
357
+
358
+ return privateMethods.filterVisibleElements(tabbableElements);
359
+ },
360
+
361
+ filterTabbableElements: function (els) {
362
+ var tabbableFocusableElements = [];
363
+
364
+ for (var i = 0; i < els.length; i++) {
365
+ var el = els[i];
366
+
367
+ if ($el(el).attr('tabindex') !== '-1') {
368
+ tabbableFocusableElements.push(el);
369
+ }
370
+ }
371
+
372
+ return tabbableFocusableElements;
373
+ },
374
+
375
+ filterVisibleElements: function (els) {
376
+ var visibleFocusableElements = [];
377
+
378
+ for (var i = 0; i < els.length; i++) {
379
+ var el = els[i];
380
+
381
+ if (el.offsetWidth > 0 || el.offsetHeight > 0) {
382
+ visibleFocusableElements.push(el);
383
+ }
384
+ }
385
+
386
+ return visibleFocusableElements;
387
+ },
388
+
389
+ getActiveDialog: function () {
390
+ var dialogs = document.querySelectorAll('.ngdialog');
391
+
392
+ if (dialogs.length === 0) {
393
+ return null;
394
+ }
395
+
396
+ // TODO: This might be incorrect if there are a mix of open dialogs with different 'appendTo' values
397
+ return $el(dialogs[dialogs.length - 1]);
398
+ },
399
+
400
+ applyAriaAttributes: function ($dialog, options) {
401
+ if (options.ariaAuto) {
402
+ if (!options.ariaRole) {
403
+ var detectedRole = (privateMethods.getFocusableElements($dialog).length > 0) ?
404
+ 'dialog' :
405
+ 'alertdialog';
406
+
407
+ options.ariaRole = detectedRole;
408
+ }
409
+
410
+ if (!options.ariaLabelledBySelector) {
411
+ options.ariaLabelledBySelector = 'h1,h2,h3,h4,h5,h6';
412
+ }
413
+
414
+ if (!options.ariaDescribedBySelector) {
415
+ options.ariaDescribedBySelector = 'article,section,p';
416
+ }
417
+ }
418
+
419
+ if (options.ariaRole) {
420
+ $dialog.attr('role', options.ariaRole);
421
+ }
422
+
423
+ privateMethods.applyAriaAttribute(
424
+ $dialog, 'aria-labelledby', options.ariaLabelledById, options.ariaLabelledBySelector);
425
+
426
+ privateMethods.applyAriaAttribute(
427
+ $dialog, 'aria-describedby', options.ariaDescribedById, options.ariaDescribedBySelector);
428
+ },
429
+
430
+ applyAriaAttribute: function($dialog, attr, id, selector) {
431
+ if (id) {
432
+ $dialog.attr(attr, id);
433
+ return;
434
+ }
435
+
436
+ if (selector) {
437
+ var dialogId = $dialog.attr('id');
438
+
439
+ var firstMatch = $dialog[0].querySelector(selector);
440
+
441
+ if (!firstMatch) {
442
+ return;
443
+ }
444
+
445
+ var generatedId = dialogId + '-' + attr;
446
+
447
+ $el(firstMatch).attr('id', generatedId);
448
+
449
+ $dialog.attr(attr, generatedId);
450
+
451
+ return generatedId;
452
+ }
453
+ },
454
+
455
+ detectUIRouter: function() {
456
+ // Detect if ui-router module is installed
457
+ // Returns ui-router version string if installed
458
+ // Otherwise false
459
+
460
+ if ($injector.has('$transitions')) {
461
+ // Only 1.0.0+ ui.router allows us to inject $transitions
462
+ return UI_ROUTER_VERSION_ONE_PLUS;
463
+ }
464
+ else if ($injector.has('$state')) {
465
+ // The legacy ui.router allows us to inject $state
466
+ return UI_ROUTER_VERSION_LEGACY;
467
+ }
468
+ return false;
469
+ },
470
+
471
+ getRouterLocationEventName: function() {
472
+ if (privateMethods.detectUIRouter()) {
473
+ return '$stateChangeStart';
474
+ }
475
+ return '$locationChangeStart';
476
+ }
477
+ };
478
+
479
+ var publicMethods = {
480
+ __PRIVATE__: privateMethods,
481
+
482
+ /*
483
+ * @param {Object} options:
484
+ * - template {String} - id of ng-template, url for partial, plain string (if enabled)
485
+ * - plain {Boolean} - enable plain string templates, default false
486
+ * - scope {Object}
487
+ * - controller {String}
488
+ * - controllerAs {String}
489
+ * - className {String} - dialog theme class
490
+ * - appendClassName {String} - dialog theme class to be appended to defaults
491
+ * - disableAnimation {Boolean} - set to true to disable animation
492
+ * - showClose {Boolean} - show close button, default true
493
+ * - closeByEscape {Boolean} - default true
494
+ * - closeByDocument {Boolean} - default true
495
+ * - preCloseCallback {String|Function} - user supplied function name/function called before closing dialog (if set)
496
+ * - onOpenCallback {String|Function} - user supplied function name/function called after opening dialog (if set)
497
+ * - bodyClassName {String} - class added to body at open dialog
498
+ * @return {Object} dialog
499
+ */
500
+ open: function (opts) {
501
+ var dialogID = null;
502
+ opts = opts || {};
503
+ if (openOnePerName && opts.name) {
504
+ dialogID = opts.name.toLowerCase().replace(/\s/g, '-') + '-dialog';
505
+ if (this.isOpen(dialogID)) {
506
+ return;
507
+ }
508
+ }
509
+ var options = angular.copy(defaults);
510
+ var localID = ++globalID;
511
+ dialogID = dialogID || 'ngdialog' + localID;
512
+ openIdStack.push(dialogID);
513
+
514
+ // Merge opts.data with predefined via setDefaults
515
+ if (typeof options.data !== 'undefined') {
516
+ if (typeof opts.data === 'undefined') {
517
+ opts.data = {};
518
+ }
519
+ opts.data = angular.merge(angular.copy(options.data), opts.data);
520
+ }
521
+
522
+ angular.extend(options, opts);
523
+
524
+ var defer;
525
+ defers[dialogID] = defer = $q.defer();
526
+
527
+ var scope;
528
+ scopes[dialogID] = scope = angular.isObject(options.scope) ? options.scope.$new() : $rootScope.$new();
529
+
530
+ var $dialog, $dialogParent, $dialogContent;
531
+
532
+ var resolve = angular.extend({}, options.resolve);
533
+
534
+ angular.forEach(resolve, function (value, key) {
535
+ resolve[key] = angular.isString(value) ? $injector.get(value) : $injector.invoke(value, null, null, key);
536
+ });
537
+
538
+ $q.all({
539
+ template: loadTemplate(options.template || options.templateUrl),
540
+ locals: $q.all(resolve)
541
+ }).then(function (setup) {
542
+ var template = setup.template,
543
+ locals = setup.locals;
544
+
545
+ if (options.showClose) {
546
+ template += '<button aria-label="Dismiss" class="ngdialog-close"></button>';
547
+ }
548
+
549
+ var hasOverlayClass = options.overlay ? '' : ' ngdialog-no-overlay';
550
+ $dialog = $el('<div id="' + dialogID + '" class="ngdialog' + hasOverlayClass + '"></div>');
551
+ $dialog.html((options.overlay ?
552
+ '<div class="ngdialog-overlay"></div><div class="ngdialog-content" role="document">' + template + '</div>' :
553
+ '<div class="ngdialog-content" role="document">' + template + '</div>'));
554
+
555
+ $dialog.data('$ngDialogOptions', options);
556
+
557
+ scope.ngDialogId = dialogID;
558
+
559
+ if (options.data && angular.isString(options.data)) {
560
+ var firstLetter = options.data.replace(/^\s*/, '')[0];
561
+ scope.ngDialogData = (firstLetter === '{' || firstLetter === '[') ? angular.fromJson(options.data) : new String(options.data);
562
+ scope.ngDialogData.ngDialogId = dialogID;
563
+ } else if (options.data && angular.isObject(options.data)) {
564
+ scope.ngDialogData = options.data;
565
+ scope.ngDialogData.ngDialogId = dialogID;
566
+ }
567
+
568
+ if (options.className) {
569
+ $dialog.addClass(options.className);
570
+ }
571
+
572
+ if (options.appendClassName) {
573
+ $dialog.addClass(options.appendClassName);
574
+ }
575
+
576
+ if (options.width) {
577
+ $dialogContent = $dialog[0].querySelector('.ngdialog-content');
578
+ if (angular.isString(options.width)) {
579
+ $dialogContent.style.width = options.width;
580
+ } else {
581
+ $dialogContent.style.width = options.width + 'px';
582
+ }
583
+ }
584
+
585
+ if (options.height) {
586
+ $dialogContent = $dialog[0].querySelector('.ngdialog-content');
587
+ if (angular.isString(options.height)) {
588
+ $dialogContent.style.height = options.height;
589
+ } else {
590
+ $dialogContent.style.height = options.height + 'px';
591
+ }
592
+ }
593
+
594
+ if (options.disableAnimation) {
595
+ $dialog.addClass(disabledAnimationClass);
596
+ }
597
+
598
+ if (options.appendTo && angular.isString(options.appendTo)) {
599
+ $dialogParent = angular.element(document.querySelector(options.appendTo));
600
+ } else {
601
+ $dialogParent = $elements.body;
602
+ }
603
+
604
+ privateMethods.applyAriaAttributes($dialog, options);
605
+
606
+ [
607
+ { name: '$ngDialogPreCloseCallback', value: options.preCloseCallback },
608
+ { name: '$ngDialogOnOpenCallback', value: options.onOpenCallback }
609
+ ].forEach(function (option) {
610
+ if (option.value) {
611
+ var callback;
612
+
613
+ if (angular.isFunction(option.value)) {
614
+ callback = option.value;
615
+ } else if (angular.isString(option.value)) {
616
+ if (scope) {
617
+ if (angular.isFunction(scope[option.value])) {
618
+ callback = scope[option.value];
619
+ } else if (scope.$parent && angular.isFunction(scope.$parent[option.value])) {
620
+ callback = scope.$parent[option.value];
621
+ } else if ($rootScope && angular.isFunction($rootScope[option.value])) {
622
+ callback = $rootScope[option.value];
623
+ }
624
+ }
625
+ }
626
+
627
+ if (callback) {
628
+ $dialog.data(option.name, callback);
629
+ }
630
+ }
631
+ });
632
+
633
+ scope.closeThisDialog = function (value) {
634
+ privateMethods.closeDialog($dialog, value);
635
+ };
636
+
637
+ if (options.controller && (angular.isString(options.controller) || angular.isArray(options.controller) || angular.isFunction(options.controller))) {
638
+
639
+ var label;
640
+
641
+ if (options.controllerAs && angular.isString(options.controllerAs)) {
642
+ label = options.controllerAs;
643
+ }
644
+
645
+ var controllerInstance = $controller(options.controller, angular.extend(
646
+ locals,
647
+ {
648
+ $scope: scope,
649
+ $element: $dialog
650
+ }),
651
+ true,
652
+ label
653
+ );
654
+
655
+ if(options.bindToController) {
656
+ angular.extend(controllerInstance.instance, {ngDialogId: scope.ngDialogId, ngDialogData: scope.ngDialogData, closeThisDialog: scope.closeThisDialog, confirm: scope.confirm});
657
+ }
658
+
659
+ if(typeof controllerInstance === 'function'){
660
+ $dialog.data('$ngDialogControllerController', controllerInstance());
661
+ } else {
662
+ $dialog.data('$ngDialogControllerController', controllerInstance);
663
+ }
664
+ }
665
+
666
+ $timeout(function () {
667
+ var $activeDialogs = document.querySelectorAll('.ngdialog');
668
+ privateMethods.deactivateAll($activeDialogs);
669
+
670
+ $compile($dialog)(scope);
671
+ var widthDiffs = $window.innerWidth - $elements.body.prop('clientWidth');
672
+ $elements.html.addClass(options.bodyClassName);
673
+ $elements.body.addClass(options.bodyClassName);
674
+ activeBodyClasses.push(options.bodyClassName);
675
+ var scrollBarWidth = widthDiffs - ($window.innerWidth - $elements.body.prop('clientWidth'));
676
+ if (scrollBarWidth > 0) {
677
+ privateMethods.setBodyPadding(scrollBarWidth);
678
+ }
679
+ $dialogParent.append($dialog);
680
+
681
+ privateMethods.activate($dialog);
682
+
683
+ if (options.trapFocus) {
684
+ privateMethods.autoFocus($dialog);
685
+ }
686
+
687
+ if (options.name) {
688
+ $rootScope.$broadcast('ngDialog.opened', {dialog: $dialog, name: options.name});
689
+ } else {
690
+ $rootScope.$broadcast('ngDialog.opened', $dialog);
691
+ }
692
+ var onOpenCallback = $dialog.data('$ngDialogOnOpenCallback');
693
+ if (onOpenCallback && angular.isFunction(onOpenCallback)) {
694
+ onOpenCallback.call($dialog);
695
+ }
696
+
697
+ });
698
+
699
+ if (!keydownIsBound) {
700
+ $elements.body.bind('keydown', privateMethods.onDocumentKeydown);
701
+ keydownIsBound = true;
702
+ }
703
+
704
+ if (options.closeByNavigation) {
705
+ closeByNavigationDialogStack.push($dialog);
706
+ }
707
+
708
+ if (options.preserveFocus) {
709
+ $dialog.data('$ngDialogPreviousFocus', document.activeElement);
710
+ }
711
+
712
+ closeByDocumentHandler = function (event) {
713
+ var isOverlay = options.closeByDocument ? $el(event.target).hasClass('ngdialog-overlay') : false;
714
+ var isCloseBtn = $el(event.target).hasClass('ngdialog-close');
715
+
716
+ if (isOverlay || isCloseBtn) {
717
+ publicMethods.close($dialog.attr('id'), isCloseBtn ? '$closeButton' : '$document');
718
+ }
719
+ };
720
+
721
+ if (typeof $window.Hammer !== 'undefined') {
722
+ var hammerTime = scope.hammerTime = $window.Hammer($dialog[0]);
723
+ hammerTime.on('tap', closeByDocumentHandler);
724
+ } else {
725
+ $dialog.bind('click', closeByDocumentHandler);
726
+ }
727
+
728
+ dialogsCount += 1;
729
+
730
+ return publicMethods;
731
+ });
732
+
733
+ return {
734
+ id: dialogID,
735
+ closePromise: defer.promise,
736
+ close: function (value) {
737
+ privateMethods.closeDialog($dialog, value);
738
+ }
739
+ };
740
+
741
+ function loadTemplateUrl (tmpl, config) {
742
+ var config = config || {};
743
+ config.headers = config.headers || {};
744
+
745
+ angular.extend(config.headers, {'Accept': 'text/html'});
746
+
747
+ $rootScope.$broadcast('ngDialog.templateLoading', tmpl);
748
+ return $http.get(tmpl, config).then(function(res) {
749
+ $rootScope.$broadcast('ngDialog.templateLoaded', tmpl);
750
+ return res.data || '';
751
+ });
752
+ }
753
+
754
+ function loadTemplate (tmpl) {
755
+ if (!tmpl) {
756
+ return 'Empty template';
757
+ }
758
+
759
+ if (angular.isString(tmpl) && options.plain) {
760
+ return tmpl;
761
+ }
762
+
763
+ if (typeof options.cache === 'boolean' && !options.cache) {
764
+ return loadTemplateUrl(tmpl, {cache: false});
765
+ }
766
+
767
+ return loadTemplateUrl(tmpl, {cache: $templateCache});
768
+ }
769
+ },
770
+
771
+ /*
772
+ * @param {Object} options:
773
+ * - template {String} - id of ng-template, url for partial, plain string (if enabled)
774
+ * - plain {Boolean} - enable plain string templates, default false
775
+ * - name {String}
776
+ * - scope {Object}
777
+ * - controller {String}
778
+ * - controllerAs {String}
779
+ * - className {String} - dialog theme class
780
+ * - appendClassName {String} - dialog theme class to be appended to defaults
781
+ * - showClose {Boolean} - show close button, default true
782
+ * - closeByEscape {Boolean} - default false
783
+ * - closeByDocument {Boolean} - default false
784
+ * - preCloseCallback {String|Function} - user supplied function name/function called before closing dialog (if set); not called on confirm
785
+ * - bodyClassName {String} - class added to body at open dialog
786
+ *
787
+ * @return {Object} dialog
788
+ */
789
+ openConfirm: function (opts) {
790
+ var defer = $q.defer();
791
+ var options = angular.copy(defaults);
792
+
793
+ opts = opts || {};
794
+
795
+ // Merge opts.data with predefined via setDefaults
796
+ if (typeof options.data !== 'undefined') {
797
+ if (typeof opts.data === 'undefined') {
798
+ opts.data = {};
799
+ }
800
+ opts.data = angular.merge(angular.copy(options.data), opts.data);
801
+ }
802
+
803
+ angular.extend(options, opts);
804
+
805
+ options.scope = angular.isObject(options.scope) ? options.scope.$new() : $rootScope.$new();
806
+ options.scope.confirm = function (value) {
807
+ defer.resolve(value);
808
+ var $dialog = $el(document.getElementById(openResult.id));
809
+ privateMethods.performCloseDialog($dialog, value);
810
+ };
811
+
812
+ var openResult = publicMethods.open(options);
813
+ if (openResult) {
814
+ openResult.closePromise.then(function (data) {
815
+ if (data) {
816
+ return defer.reject(data.value);
817
+ }
818
+ return defer.reject();
819
+ });
820
+ return defer.promise;
821
+ }
822
+ },
823
+
824
+ isOpen: function(id) {
825
+ var $dialog = $el(document.getElementById(id));
826
+ return $dialog.length > 0;
827
+ },
828
+
829
+ /*
830
+ * @param {String} id
831
+ * @return {Object} dialog
832
+ */
833
+ close: function (id, value) {
834
+ var $dialog = $el(document.getElementById(id));
835
+
836
+ if ($dialog.length) {
837
+ privateMethods.closeDialog($dialog, value);
838
+ } else {
839
+ if (id === '$escape') {
840
+ var topDialogId = openIdStack[openIdStack.length - 1];
841
+ $dialog = $el(document.getElementById(topDialogId));
842
+ if ($dialog.data('$ngDialogOptions').closeByEscape) {
843
+ privateMethods.closeDialog($dialog, '$escape');
844
+ }
845
+ } else {
846
+ publicMethods.closeAll(value);
847
+ }
848
+ }
849
+
850
+ return publicMethods;
851
+ },
852
+
853
+ closeAll: function (value) {
854
+ var $all = document.querySelectorAll('.ngdialog');
855
+
856
+ // Reverse order to ensure focus restoration works as expected
857
+ for (var i = $all.length - 1; i >= 0; i--) {
858
+ var dialog = $all[i];
859
+ privateMethods.closeDialog($el(dialog), value);
860
+ }
861
+ },
862
+
863
+ getOpenDialogs: function() {
864
+ return openIdStack;
865
+ },
866
+
867
+ getDefaults: function () {
868
+ return defaults;
869
+ }
870
+ };
871
+
872
+ angular.forEach(
873
+ ['html', 'body'],
874
+ function(elementName) {
875
+ $elements[elementName] = $document.find(elementName);
876
+ if (forceElementsReload[elementName]) {
877
+ var eventName = privateMethods.getRouterLocationEventName();
878
+ $rootScope.$on(eventName, function () {
879
+ $elements[elementName] = $document.find(elementName);
880
+ });
881
+ }
882
+ }
883
+ );
884
+
885
+ // Listen to navigation events to close dialog
886
+ var uiRouterVersion = privateMethods.detectUIRouter();
887
+ if (uiRouterVersion === UI_ROUTER_VERSION_ONE_PLUS) {
888
+ var $transitions = $injector.get('$transitions');
889
+ $transitions.onStart({}, function (trans) {
890
+ while (closeByNavigationDialogStack.length > 0) {
891
+ var toCloseDialog = closeByNavigationDialogStack.pop();
892
+ if (privateMethods.closeDialog(toCloseDialog) === false) {
893
+ return false;
894
+ }
895
+ }
896
+ });
897
+ }
898
+ else {
899
+ var eventName = uiRouterVersion === UI_ROUTER_VERSION_LEGACY ? '$stateChangeStart' : '$locationChangeStart';
900
+ $rootScope.$on(eventName, function ($event) {
901
+ while (closeByNavigationDialogStack.length > 0) {
902
+ var toCloseDialog = closeByNavigationDialogStack.pop();
903
+ if (privateMethods.closeDialog(toCloseDialog) === false) {
904
+ $event.preventDefault();
905
+ }
906
+ }
907
+ });
908
+ }
909
+
910
+ return publicMethods;
911
+ }];
912
+ });
913
+
914
+ m.directive('ngDialog', ['ngDialog', function (ngDialog) {
915
+ return {
916
+ restrict: 'A',
917
+ scope: {
918
+ ngDialogScope: '='
919
+ },
920
+ link: function (scope, elem, attrs) {
921
+ elem.on('click', function (e) {
922
+ e.preventDefault();
923
+
924
+ var ngDialogScope = angular.isDefined(scope.ngDialogScope) ? scope.ngDialogScope : 'noScope';
925
+ angular.isDefined(attrs.ngDialogClosePrevious) && ngDialog.close(attrs.ngDialogClosePrevious);
926
+
927
+ var defaults = ngDialog.getDefaults();
928
+
929
+ ngDialog.open({
930
+ template: attrs.ngDialog,
931
+ className: attrs.ngDialogClass || defaults.className,
932
+ appendClassName: attrs.ngDialogAppendClass,
933
+ controller: attrs.ngDialogController,
934
+ controllerAs: attrs.ngDialogControllerAs,
935
+ bindToController: attrs.ngDialogBindToController,
936
+ disableAnimation: attrs.ngDialogDisableAnimation,
937
+ scope: ngDialogScope,
938
+ data: attrs.ngDialogData,
939
+ showClose: attrs.ngDialogShowClose === 'false' ? false : (attrs.ngDialogShowClose === 'true' ? true : defaults.showClose),
940
+ closeByDocument: attrs.ngDialogCloseByDocument === 'false' ? false : (attrs.ngDialogCloseByDocument === 'true' ? true : defaults.closeByDocument),
941
+ closeByEscape: attrs.ngDialogCloseByEscape === 'false' ? false : (attrs.ngDialogCloseByEscape === 'true' ? true : defaults.closeByEscape),
942
+ overlay: attrs.ngDialogOverlay === 'false' ? false : (attrs.ngDialogOverlay === 'true' ? true : defaults.overlay),
943
+ preCloseCallback: attrs.ngDialogPreCloseCallback || defaults.preCloseCallback,
944
+ onOpenCallback: attrs.ngDialogOnOpenCallback || defaults.onOpenCallback,
945
+ bodyClassName: attrs.ngDialogBodyClass || defaults.bodyClassName
946
+ });
947
+ });
948
+ }
949
+ };
950
+ }]);
951
+
952
+ return m;
953
+ }));
@@ -0,0 +1,188 @@
1
+ @-webkit-keyframes ngdialog-flyin {
2
+ 0% {
3
+ opacity: 0;
4
+ -webkit-transform: translateY(-40px);
5
+ transform: translateY(-40px);
6
+ }
7
+
8
+ 100% {
9
+ opacity: 1;
10
+ -webkit-transform: translateY(0);
11
+ transform: translateY(0);
12
+ }
13
+ }
14
+
15
+ @keyframes ngdialog-flyin {
16
+ 0% {
17
+ opacity: 0;
18
+ -webkit-transform: translateY(-40px);
19
+ transform: translateY(-40px);
20
+ }
21
+
22
+ 100% {
23
+ opacity: 1;
24
+ -webkit-transform: translateY(0);
25
+ transform: translateY(0);
26
+ }
27
+ }
28
+
29
+ @-webkit-keyframes ngdialog-flyout {
30
+ 0% {
31
+ opacity: 1;
32
+ -webkit-transform: translateY(0);
33
+ transform: translateY(0);
34
+ }
35
+
36
+ 100% {
37
+ opacity: 0;
38
+ -webkit-transform: translateY(-40px);
39
+ transform: translateY(-40px);
40
+ }
41
+ }
42
+
43
+ @keyframes ngdialog-flyout {
44
+ 0% {
45
+ opacity: 1;
46
+ -webkit-transform: translateY(0);
47
+ transform: translateY(0);
48
+ }
49
+
50
+ 100% {
51
+ opacity: 0;
52
+ -webkit-transform: translateY(-40px);
53
+ transform: translateY(-40px);
54
+ }
55
+ }
56
+
57
+ .ngdialog.ngdialog-theme-default {
58
+ padding-bottom: 160px;
59
+ padding-top: 160px;
60
+ }
61
+
62
+ .ngdialog.ngdialog-theme-default.ngdialog-closing .ngdialog-content {
63
+ -webkit-animation: ngdialog-flyout .5s;
64
+ animation: ngdialog-flyout .5s;
65
+ }
66
+
67
+ .ngdialog.ngdialog-theme-default .ngdialog-content {
68
+ -webkit-animation: ngdialog-flyin .5s;
69
+ animation: ngdialog-flyin .5s;
70
+ background: #f0f0f0;
71
+ border-radius: 5px;
72
+ color: #444;
73
+ font-family: 'Helvetica',sans-serif;
74
+ font-size: 1.1em;
75
+ line-height: 1.5em;
76
+ margin: 0 auto;
77
+ max-width: 100%;
78
+ padding: 1em;
79
+ position: relative;
80
+ width: 450px;
81
+ }
82
+
83
+ .ngdialog.ngdialog-theme-default .ngdialog-close {
84
+ border: none;
85
+ background: transparent;
86
+ cursor: pointer;
87
+ position: absolute;
88
+ right: 0;
89
+ top: 0;
90
+ }
91
+
92
+ .ngdialog.ngdialog-theme-default .ngdialog-close:before {
93
+ display: block;
94
+ padding: 3px;
95
+ background: transparent;
96
+ color: #bbb;
97
+ content: '\00D7';
98
+ font-size: 26px;
99
+ font-weight: 400;
100
+ line-height: 26px;
101
+ text-align: center;
102
+ }
103
+
104
+ .ngdialog.ngdialog-theme-default .ngdialog-close:hover:before,
105
+ .ngdialog.ngdialog-theme-default .ngdialog-close:active:before {
106
+ color: #777;
107
+ }
108
+
109
+ .ngdialog.ngdialog-theme-default .ngdialog-message {
110
+ margin-bottom: .5em;
111
+ }
112
+
113
+ .ngdialog.ngdialog-theme-default .ngdialog-input {
114
+ margin-bottom: 1em;
115
+ }
116
+
117
+ .ngdialog.ngdialog-theme-default .ngdialog-input textarea,
118
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"],
119
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"],
120
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"],
121
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"] {
122
+ background: #fff;
123
+ border: 0;
124
+ border-radius: 3px;
125
+ font-family: inherit;
126
+ font-size: inherit;
127
+ font-weight: inherit;
128
+ margin: 0 0 .25em;
129
+ min-height: 2.5em;
130
+ padding: .25em .67em;
131
+ width: 100%;
132
+ }
133
+
134
+ .ngdialog.ngdialog-theme-default .ngdialog-input textarea:focus,
135
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"]:focus,
136
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"]:focus,
137
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"]:focus,
138
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"]:focus {
139
+ box-shadow: inset 0 0 0 2px #8dbdf1;
140
+ outline: none;
141
+ }
142
+
143
+ .ngdialog.ngdialog-theme-default .ngdialog-buttons {
144
+ *zoom: 1;
145
+ }
146
+
147
+ .ngdialog.ngdialog-theme-default .ngdialog-buttons:after {
148
+ content: '';
149
+ display: table;
150
+ clear: both;
151
+ }
152
+
153
+ .ngdialog.ngdialog-theme-default .ngdialog-button {
154
+ border: 0;
155
+ border-radius: 3px;
156
+ cursor: pointer;
157
+ float: right;
158
+ font-family: inherit;
159
+ font-size: .8em;
160
+ letter-spacing: .1em;
161
+ line-height: 1em;
162
+ margin: 0 0 0 .5em;
163
+ padding: .75em 2em;
164
+ text-transform: uppercase;
165
+ }
166
+
167
+ .ngdialog.ngdialog-theme-default .ngdialog-button:focus {
168
+ -webkit-animation: ngdialog-pulse 1.1s infinite;
169
+ animation: ngdialog-pulse 1.1s infinite;
170
+ outline: none;
171
+ }
172
+
173
+ @media (max-width: 568px) {
174
+ .ngdialog.ngdialog-theme-default .ngdialog-button:focus {
175
+ -webkit-animation: none;
176
+ animation: none;
177
+ }
178
+ }
179
+
180
+ .ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-primary {
181
+ background: #3288e6;
182
+ color: #fff;
183
+ }
184
+
185
+ .ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-secondary {
186
+ background: #e0e0e0;
187
+ color: #777;
188
+ }
@@ -0,0 +1,121 @@
1
+ @-webkit-keyframes ngdialog-fadeout {
2
+ 0% {
3
+ opacity: 1;
4
+ }
5
+
6
+ 100% {
7
+ opacity: 0;
8
+ }
9
+ }
10
+
11
+ @keyframes ngdialog-fadeout {
12
+ 0% {
13
+ opacity: 1;
14
+ }
15
+
16
+ 100% {
17
+ opacity: 0;
18
+ }
19
+ }
20
+
21
+ @-webkit-keyframes ngdialog-fadein {
22
+ 0% {
23
+ opacity: 0;
24
+ }
25
+
26
+ 100% {
27
+ opacity: 1;
28
+ }
29
+ }
30
+
31
+ @keyframes ngdialog-fadein {
32
+ 0% {
33
+ opacity: 0;
34
+ }
35
+
36
+ 100% {
37
+ opacity: 1;
38
+ }
39
+ }
40
+
41
+ .ngdialog {
42
+ box-sizing: border-box;
43
+ }
44
+
45
+ .ngdialog *,
46
+ .ngdialog *:before,
47
+ .ngdialog *:after {
48
+ box-sizing: inherit;
49
+ }
50
+
51
+ .ngdialog {
52
+ position: fixed;
53
+ overflow: auto;
54
+ -webkit-overflow-scrolling: touch;
55
+ z-index: 10000;
56
+ top: 0;
57
+ right: 0;
58
+ bottom: 0;
59
+ left: 0;
60
+ /* fix for Scrollbars not clickable on overflow #552 */
61
+ background: rgba(0, 0, 0, 0.4);
62
+ animation: ngdialog-fadein 0.5s;
63
+ /* end fix for Scrollbars not clickable on overflow #552 */
64
+ }
65
+
66
+ .ngdialog.ngdialog-disabled-animation,
67
+ .ngdialog.ngdialog-disabled-animation .ngdialog-overlay,
68
+ .ngdialog.ngdialog-disabled-animation .ngdialog-content {
69
+ -webkit-animation: none!important;
70
+ animation: none!important;
71
+ }
72
+
73
+ .ngdialog-overlay {
74
+ position: fixed;
75
+ top: 0;
76
+ right: 0;
77
+ bottom: 0;
78
+ left: 0;
79
+ -webkit-backface-visibility: hidden;
80
+ -webkit-animation: ngdialog-fadein 0.5s;
81
+ animation: ngdialog-fadein 0.5s;
82
+ /* fix for Scrollbars not clickable on overflow #552 */
83
+ margin-right: 15px;
84
+ background: transparent;
85
+ /* end fix for Scrollbars not clickable on overflow #552 */
86
+ }
87
+
88
+ .ngdialog-no-overlay {
89
+ pointer-events: none;
90
+ }
91
+
92
+ .ngdialog.ngdialog-closing .ngdialog-overlay {
93
+ -webkit-backface-visibility: hidden;
94
+ -webkit-animation: ngdialog-fadeout 0.5s;
95
+ animation: ngdialog-fadeout 0.5s;
96
+ }
97
+
98
+ .ngdialog-content {
99
+ background: white;
100
+ -webkit-backface-visibility: hidden;
101
+ -webkit-animation: ngdialog-fadein 0.5s;
102
+ animation: ngdialog-fadein 0.5s;
103
+ pointer-events: all;
104
+ }
105
+
106
+ .ngdialog.ngdialog-closing .ngdialog-content {
107
+ -webkit-backface-visibility: hidden;
108
+ -webkit-animation: ngdialog-fadeout 0.5s;
109
+ animation: ngdialog-fadeout 0.5s;
110
+ }
111
+
112
+ .ngdialog-close:before {
113
+ font-family: 'Helvetica', Arial, sans-serif;
114
+ content: '\00D7';
115
+ cursor: pointer;
116
+ }
117
+
118
+ html.ngdialog-open,
119
+ body.ngdialog-open {
120
+ overflow: hidden;
121
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxymoron
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kononenko Paul
@@ -930,6 +930,7 @@ files:
930
930
  - vendor/assets/javascripts/oxymoron/i18n/angular-locale_zu-za.js
931
931
  - vendor/assets/javascripts/oxymoron/i18n/angular-locale_zu.js
932
932
  - vendor/assets/javascripts/oxymoron/jquery.min.js
933
+ - vendor/assets/javascripts/oxymoron/ng-dialog.js
933
934
  - vendor/assets/javascripts/oxymoron/ng-notify.js
934
935
  - vendor/assets/javascripts/oxymoron/pace.js
935
936
  - vendor/assets/javascripts/oxymoron/perfect-scrollbar.js
@@ -937,6 +938,8 @@ files:
937
938
  - vendor/assets/javascripts/oxymoron/underscore.js
938
939
  - vendor/assets/stylesheets/.DS_Store
939
940
  - vendor/assets/stylesheets/oxymoron/md-data-table.css
941
+ - vendor/assets/stylesheets/oxymoron/ng-dialog-theme-default.css
942
+ - vendor/assets/stylesheets/oxymoron/ng-dialog.css
940
943
  - vendor/assets/stylesheets/oxymoron/ng-notify.css
941
944
  - vendor/assets/stylesheets/oxymoron/normalize.css
942
945
  - vendor/assets/stylesheets/oxymoron/pace.css